cuyo-2.1.0/0000755000175000017500000000000012422656731007502 500000000000000cuyo-2.1.0/install-sh0000755000175000017500000003325612422656610011433 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cuyo-2.1.0/po/0000755000175000017500000000000012422656731010120 500000000000000cuyo-2.1.0/po/cuyo.pot0000644000175000017500000006367312422656701011557 00000000000000# Message catalog for the game Cuyo. # This is a partly generated file. The copyright of the original messages is identical to the one of the source files they are generated from. The copyright of the translations is by the translators. # This file is distributed under the same license as the Cuyo package. # FIRST AUTHOR , YEAR. # # General notes for translators # # 1) The German translation was done by the developers themselves, all of whom # are native German speakers. So in case of any doubt, the German version is at # least as authorative as a base for further translations as the original # English version is. Maybe even more so. If in your team there is someone who # can translate from German to her language, you might consider to let her do # so. # # 2) The level names and descriptions contain some puns and other obscure # references. We consider it fine to translate them rather liberally, and even # to replace them by completely different puns. (And we have done so for the # German version.) # # 3) We use a custom pixel font. It only supports ISO-8859-1 characters. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Cuyo VERSION\n" "Report-Msgid-Bugs-To: cuyo-devel@nongnu.org\n" "POT-Creation-Date: 2014-10-25\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/blatt.cpp:215 msgid "Computer" msgstr "" #: src/blatt.cpp:215 #, c-format msgid "Player %d" msgstr "" #. TRANSLATORS: During game: short version of "%d blops explode" #: src/blatt.cpp:258 #, c-format msgid "%d" msgstr "" #. TRANSLATORS: During game: short version of #. "between %d and %d blops explode" #: src/blatt.cpp:263 #, c-format msgid "%d-%d" msgstr "" #. TRANSLATORS: During game: short version of #. "%d or %d blops explode" #: src/blatt.cpp:268 #, c-format msgid "%d/%d" msgstr "" #: src/blatt.cpp:1109 #, c-format msgid "%s - Debug mode; Press alt-h for help." msgstr "" #. TRANSLATORS: Now follows the main menu. The characters preceded by a tilde #. are hotkeys. Please choose them disjoint within the menu. If this #. cannot be achieved in a sensible manner, feel free to leave some out. #: src/blatt.cpp:1120 msgid "~New Game" msgstr "" #: src/blatt.cpp:1123 msgid "~Restart last level" msgstr "" #: src/blatt.cpp:1128 msgid "Start ~at level..." msgstr "" #: src/blatt.cpp:1131 msgid "~1 Player" msgstr "" #: src/blatt.cpp:1133 msgid "~2 Players" msgstr "" #: src/blatt.cpp:1135 msgid "Player vs. ~Computer" msgstr "" #: src/blatt.cpp:1140 msgid "~Level track" msgstr "" #: src/blatt.cpp:1146 msgid "~Difficulty" msgstr "" #: src/blatt.cpp:1151 msgid "" "Setting the difficulty affects some, but not all levels.\n" "On difficulty \"Easy\", the \"Standard\" level track\n" "consists of levels which are affected by that difficulty,\n" "and of levels which are easy in themselves.\n" "The same holds for \"Hard\"." msgstr "" #: src/blatt.cpp:1157 msgid "~Preferences..." msgstr "" #. TRANSLATORS: This is the last entry of the main menu. #: src/blatt.cpp:1166 msgid "~Quit" msgstr "" #: src/blatt.cpp:1176 #, c-format msgid "Keys Player %d:" msgstr "" #: src/blatt.cpp:1178 msgid "Left" msgstr "" #: src/blatt.cpp:1179 msgid "Right" msgstr "" #: src/blatt.cpp:1180 msgid "Turn" msgstr "" #: src/blatt.cpp:1181 msgid "Down" msgstr "" #: src/blatt.cpp:1185 msgid "AI Speed" msgstr "" #: src/blatt.cpp:1187 msgid "Sound" msgstr "" #: src/cuyo.cpp:274 #, c-format msgid "" "Score: %d\n" "\n" "Loading Level %d...\n" "\n" msgstr "" #: src/cuyo.cpp:315 #, c-format msgid "1 blop explodes" msgid_plural "%d blops explode" msgstr[0] "" msgstr[1] "" #: src/cuyo.cpp:321 #, c-format msgid "between %d and %d blops explode" msgstr "" #: src/cuyo.cpp:324 #, c-format msgid "%d or %d blops explode" msgstr "" #. TRANSLATORS: The second %s (after "by ") is the level's author's name #: src/cuyo.cpp:327 #, c-format msgid "" "Score: %d\n" "\n" "Level %d\n" "%s\n" "by %s\n" "\n" "%s\n" "%s\n" "%s\n" "\n" "Space = Start" msgstr "" #: src/cuyo.cpp:335 msgid "Chain reaction necessary\n" msgstr "" #: src/cuyo.cpp:535 #, c-format msgid "" "Game over\n" "\n" "Score: %d\n" "\n" msgstr "" #: src/cuyo.cpp:554 #, c-format msgid "" "Level %s complete!\n" "\n" "Time Bonus: %d\n" "Score: %d\n" "\n" "%s" msgstr "" #: src/cuyo.cpp:576 msgid "Space = Continue" msgstr "" #: src/cuyo.cpp:647 #, c-format msgid "" "***\n" "You won even a bit more!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" #: src/cuyo.cpp:648 #, c-format msgid "" "***\n" "You won!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" #. TRANSLATORS: This indicates an unknown value #: src/leveldaten.cpp:682 msgid "???" msgstr "" #. TRANSLATORS: "cuyo" is a program's name, #. "-f", "-g", and "-h" are options' names, #. "ld" is a file suffix. None of these should be translated. #: src/main.cpp:51 msgid "" "usage: cuyo [-g x] [-h] [-f] [ld-file]\n" " -g x set window size\n" " -f fullscreen mode\n" " -h print this help message\n" "(More options are documented in the man page.)\n" msgstr "" #: src/main.cpp:90 #, c-format msgid "Argument to -%c missing\n" msgstr "" #: src/main.cpp:100 #, c-format msgid "Unknown option '%c'\n" msgstr "" #: src/main.cpp:197 msgid "Could not parse option -g\n" msgstr "" #: src/main.cpp:223 #, c-format msgid "%s: Too many arguments\n" msgstr "" #. TRANSLATORS: "Done" is a menu entry for quitting a submenu. #: src/menueintrag.cpp:449 msgid "Done" msgstr "" #: src/menueintrag.cpp:572 msgid "Press `return' or click for a full list" msgstr "" #: src/menueintrag.cpp:820 msgid "Type a new key" msgstr "" #: src/menueintrag.cpp:821 msgid "To enter a new key, click or press `return' first" msgstr "" #: src/menueintrag.cpp:914 msgid "On" msgstr "" #: src/menueintrag.cpp:914 msgid "Off" msgstr "" #. TRANSLATORS: "cuyo" is the program's name #: src/sdltools.cpp:310 msgid "Cuyo - debug mode" msgstr "" #. TRANSLATORS: This is a window title #: src/sdltools.cpp:315 #, c-format msgid "Cuyo - level %s" msgstr "" #: src/spielfeld.cpp:211 msgid "" "Game paused\n" "\n" "Space = Resume\n" "Esc = Abort Game\n" "\n" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:33 msgid "Standard" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:35 msgid "All levels" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:37 msgid "Games" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:39 msgid "Extremes" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:41 msgid "No FX" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:43 msgid "Weird" msgstr "" #. TRANSLATORS: Name of a level track #: src/version.cpp:45 msgid "Contributions" msgstr "" #: src/version.cpp:47 msgid "A selection of levels for the common taste" msgstr "" #: src/version.cpp:48 msgid "All official levels" msgstr "" #: src/version.cpp:49 msgid "Levels simulating board games or other computer games" msgstr "" #: src/version.cpp:50 msgid "Levels setting records such as `fastest dropping ceiling'" msgstr "" #: src/version.cpp:51 msgid "Plain levels without any disturbing tweaks to the rules" msgstr "" #: src/version.cpp:52 msgid "Levels interpreting the general theme of cuyo more broadly" msgstr "" #: src/version.cpp:53 msgid "Levels donated and maintained by the community" msgstr "" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:63 msgid "Easy" msgstr "" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:65 msgid "Normal" msgstr "" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:67 msgid "Hard" msgstr "" #. TRANSLATORS: level name #: data/3d.ld:28 msgid "3D" msgstr "" #. TRANSLATORS: level author #: data/3d.ld:29 data/ascii.ld:27 data/baelle.ld:28 data/doors.ld:29 #: data/ebene.ld:28 data/hecken.ld:25 data/hexkugeln.ld:29 data/hormone.ld:28 #: data/nasenkugeln.ld:33 data/pfeile.ld:31 data/schach.ld:33 #: data/theater.ld:40 data/tiere.ld:29 data/viecher.ld:33 data/wachsen.ld:26 #: data/walls.ld:29 data/wuerfel.ld:28 msgid "Immi" msgstr "" #. TRANSLATORS: level description #: data/3d.ld:30 msgid "Well, just a little bit 3D." msgstr "" #. TRANSLATORS: level name #: data/aehnlich.ld:21 msgid "Similar balls" msgstr "" #. TRANSLATORS: level description #: data/aehnlich.ld:22 msgid "Numerically equal colours connect" msgstr "" #. TRANSLATORS: level author #: data/aehnlich.ld:23 data/angst.ld:27 data/augen.ld:24 data/baender.ld:23 #: data/bonimali.ld:23 data/bunt.ld:23 data/dungeon.ld:36 data/farming.ld:25 #: data/fische.ld:22 data/flechtwerk.ld:21 data/go2.ld:29 data/gold.ld:23 #: data/jump.ld:26 data/kacheln4.ld:24 data/kacheln5.ld:26 data/kacheln6.ld:24 #: data/kachelnR.ld:30 data/kolben.ld:24 data/maennchen.ld:22 data/maze.ld:24 #: data/novips.ld:23 data/octopi.ld:24 data/puzzle.ld:24 data/rechnen.ld:22 #: data/rollenspiel.ld:22 data/schemen.ld:23 data/secret.ld:21 #: data/silbergold.ld:22 data/slime.ld:25 data/tennis.ld:22 data/trees.ld:25 #: data/unmoeglich.ld:22 data/zahn.ld:23 data/ziehlen.ld:22 msgid "Mark Weyer" msgstr "" #. TRANSLATORS: level name #: data/aliens.ld:36 msgid "Aliens" msgstr "" #. TRANSLATORS: level author #: data/aliens.ld:37 data/antarctic.ld:55 data/bonus.ld:29 #: data/colorshape.ld:35 data/disco.ld:35 data/letters.ld:36 data/memory.ld:50 #: data/tetris.ld:42 msgid "Berni" msgstr "" #: data/aliens.ld:203 msgid "Hurry up!!!" msgstr "" #. TRANSLATORS: level name #: data/angst.ld:24 msgid "Balls at ease" msgstr "" #. TRANSLATORS: level name #: data/angst.ld:25 msgid "Frightened balls" msgstr "" #. TRANSLATORS: level name #: data/angst.ld:26 msgid "Angry balls" msgstr "" #. TRANSLATORS: level description #: data/angst.ld:28 msgid "These balls are oblivious to the rules of cuyo" msgstr "" #. TRANSLATORS: level description #: data/angst.ld:29 msgid "These balls are learning the rules of cuyo" msgstr "" #. TRANSLATORS: level description #: data/angst.ld:30 msgid "These balls have learned the rules of cuyo" msgstr "" #: data/angst.ld:43 msgid "Also try this level in normal and hard difficulty" msgstr "" #: data/angst.ld:44 msgid "Also try this level in easy and hard difficulty" msgstr "" #: data/angst.ld:45 msgid "Also try this level in easy and normal difficulty" msgstr "" #: data/angst.ld:51 msgid "Commercial break" msgstr "" #. TRANSLATORS: level name #: data/antarctic.ld:53 msgid "Antarctic" msgstr "" #. TRANSLATORS: level description #: data/antarctic.ld:54 msgid "Beware of freezing!" msgstr "" #. TRANSLATORS: level name #: data/ascii.ld:26 msgid "ASCII" msgstr "" #. TRANSLATORS: "basic" is a pun on the programming language BASIC. #. TRANSLATORS: level description #: data/ascii.ld:40 msgid "A very basic level" msgstr "" #. TRANSLATORS: level name #: data/augen.ld:23 msgid "Eyes" msgstr "" #. TRANSLATORS: level description #: data/augen.ld:25 msgid "" "They are watching you.\n" "Get rid of them." msgstr "" #. TRANSLATORS: level name #: data/baelle.ld:27 msgid "Rotating Balls" msgstr "" #. TRANSLATORS: level description #: data/baelle.ld:42 msgid "Well, all balls look the same, don't they?" msgstr "" #. TRANSLATORS: level name #: data/baender.ld:22 msgid "Ribbons" msgstr "" #. TRANSLATORS: level description #: data/baender.ld:24 msgid "Ribbons connect diagonally." msgstr "" #. TRANSLATORS: level name #: data/baggis.ld:32 msgid "Baggis" msgstr "" #. TRANSLATORS: level author #: data/baggis.ld:33 data/pacman.ld:31 msgid "Simon" msgstr "" #. TRANSLATORS: level description #: data/baggis.ld:47 msgid "Protect yourself from the flash!" msgstr "" #. TRANSLATORS: level name #: data/bonimali.ld:22 msgid "PowerUps and -Downs" msgstr "" #. TRANSLATORS: level description #: data/bonimali.ld:24 msgid "Collect PowerUps but avoid the bad ones" msgstr "" #. TRANSLATORS: level description #: data/bonimali.ld:25 msgid "Collect PowerUps and hand the bad ones to the other player" msgstr "" #. TRANSLATORS: level description #: data/bonimali.ld:26 msgid "" "Collect PowerUps and hand the bad ones to your " "opponent^H^H^H^H^H^H^H^Hpartner" msgstr "" #: data/bonimali.ld:122 data/bonimali.ld:232 msgid "3 blops explode" msgstr "" #: data/bonimali.ld:230 msgid "4 blops explode" msgstr "" #: data/bonimali.ld:231 msgid "2 blops explode" msgstr "" #: data/bonimali.ld:269 msgid "Chain reaction necessary" msgstr "" #: data/bonimali.ld:271 msgid "Chain reaction not necessary" msgstr "" #: data/bonimali.ld:831 msgid "Extra points" msgstr "" #: data/bonimali.ld:834 msgid "Power missiles" msgstr "" #: data/bonimali.ld:835 msgid "Extra ships" msgstr "" #. TRANSLATORS: level name #: data/bonus.ld:28 msgid "Bonus" msgstr "" #. TRANSLATORS: level description #: data/bonus.ld:40 msgid "Hurry up, get bonus points!" msgstr "" #. TRANSLATORS: level name #: data/bunt.ld:22 msgid "Gaudy balls" msgstr "" #. TRANSLATORS: level name #: data/colorshape.ld:34 msgid "Shape and Color" msgstr "" #. TRANSLATORS: level description #: data/colorshape.ld:36 msgid "An explosion changes the way, they connect..." msgstr "" #. TRANSLATORS: level name #: data/darken.ld:26 msgid "Darken" msgstr "" #. TRANSLATORS: level author #: data/darken.ld:27 data/elemente.ld:26 data/explosive.ld:24 #: data/paratroopers.ld:29 data/pressure.ld:27 data/reversi_brl.ld:23 #: data/rohre.ld:29 data/wohnungen.ld:27 msgid "brl" msgstr "" #. TRANSLATORS: level description #: data/darken.ld:28 msgid "The less you know..." msgstr "" #. TRANSLATORS: level name #: data/disco.ld:34 msgid "Disco" msgstr "" #. TRANSLATORS: level description #: data/disco.ld:36 msgid "Get rid of the strobos!" msgstr "" #. TRANSLATORS: level name #: data/doors.ld:28 msgid "Doors" msgstr "" #. TRANSLATORS: level description #: data/doors.ld:30 msgid "It was late and I was tired" msgstr "" #. TRANSLATORS: level name #: data/dungeon.ld:35 msgid "Treasure hunt" msgstr "" #. TRANSLATORS: level description #: data/dungeon.ld:37 msgid "Collect gold for extra points" msgstr "" #. TRANSLATORS: level name #: data/ebene.ld:27 msgid "Plane" msgstr "" #. TRANSLATORS: level name #: data/elemente.ld:25 msgid "Elements" msgstr "" #. TRANSLATORS: level name #: data/embroidery.ld:27 msgid "Embroidery" msgstr "" #. TRANSLATORS: level author #: data/embroidery.ld:28 data/himmel.ld:32 data/jahreszeiten.ld:35 msgid "Jela" msgstr "" #. TRANSLATORS: level description #: data/embroidery.ld:43 msgid "Do you like doing some Needlework?" msgstr "" #. TRANSLATORS: level name #: data/explosive.ld:23 msgid "Explosive" msgstr "" #. TRANSLATORS: level name #: data/farming.ld:24 msgid "Farming" msgstr "" #. TRANSLATORS: level description #: data/farming.ld:26 msgid "" "Almost each level has its very own graphics.\n" "At least this level has exactly the same rules as the previous one." msgstr "" #. TRANSLATORS: level name #: data/fische.ld:21 msgid "Fish" msgstr "" #. TRANSLATORS: level name #: data/flechtwerk.ld:20 msgid "Wickerwork" msgstr "" #. TRANSLATORS: level name #: data/fractals.ld:26 msgid "Fractals" msgstr "" #. TRANSLATORS: level author #: data/fractals.ld:27 msgid "Austin W." msgstr "" #. TRANSLATORS: level description #: data/fractals.ld:28 msgid "Three explode if in each aspect they are all the same or all different." msgstr "" #. TRANSLATORS: level name #: data/go2.ld:28 msgid "Go" msgstr "" #. TRANSLATORS: level description #: data/go2.ld:30 msgid "Why to place your goban horizontally" msgstr "" #. TRANSLATORS: level name #: data/gold.ld:22 msgid "Gold" msgstr "" #. TRANSLATORS: level description #: data/gold.ld:24 msgid "Yes, it CAN be completed" msgstr "" #. TRANSLATORS: level description #: data/gold.ld:25 msgid "" "Yes, it CAN be completed\n" "...cooperatively" msgstr "" #. TRANSLATORS: level name #: data/hecken.ld:24 msgid "Gardens" msgstr "" #. TRANSLATORS: level description #: data/hecken.ld:37 msgid "" "Gardens need hedges for separation. The hedges do not count for the size of " "a garden, though." msgstr "" #. TRANSLATORS: level name #: data/hexkugeln.ld:28 msgid "Balls & Rods" msgstr "" #. TRANSLATORS: level description #: data/hexkugeln.ld:48 msgid "Most dense packing of spheres" msgstr "" #. TRANSLATORS: level name #: data/himmel.ld:31 msgid "Sky" msgstr "" #. TRANSLATORS: level description #: data/himmel.ld:50 msgid "In which direction do balloons fall?" msgstr "" #. TRANSLATORS: level name #: data/hormone.ld:27 msgid "Hormones" msgstr "" #. TRANSLATORS: level description #: data/hormone.ld:42 msgid "When do the \"hormones\" connect?" msgstr "" #. TRANSLATORS: level name #: data/jahreszeiten.ld:34 msgid "The four Seasons" msgstr "" #. TRANSLATORS: level description #: data/jahreszeiten.ld:47 msgid "Everything changes..." msgstr "" #. TRANSLATORS: "Jump" is as in the computer game genre jump-and-run, only #. without the run #. TRANSLATORS: level name #: data/jump.ld:25 msgid "Jump" msgstr "" #. TRANSLATORS: "8 bit" refers to an era of computer games #. TRANSLATORS: level description #: data/jump.ld:28 msgid "8 bit nostalgia" msgstr "" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln4.ld:23 msgid "Tiling II" msgstr "" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln5.ld:25 msgid "Tiling III" msgstr "" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln6.ld:23 msgid "Tiling I" msgstr "" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kachelnR.ld:27 msgid "Tiling IV" msgstr "" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level description #: data/kachelnR.ld:29 msgid "Random aperiodic tiling" msgstr "" #. TRANSLATORS: level name #: data/kolben.ld:22 msgid "Flasks" msgstr "" #. TRANSLATORS: level description #: data/kolben.ld:23 msgid "It depends on the gas they are filled with..." msgstr "" #. TRANSLATORS: level name #: data/kunst.ld:34 msgid "Modern Art" msgstr "" #. TRANSLATORS: level author #: data/kunst.ld:35 data/unterwasser.ld:33 msgid "Berni & Immi" msgstr "" #. TRANSLATORS: level description #: data/kunst.ld:47 msgid "Beware of ink!" msgstr "" #. TRANSLATORS: level name #: data/labskaus.ld:66 msgid "Potpourri" msgstr "" #. TRANSLATORS: level author #: data/labskaus.ld:67 msgid "Mark Weyer (editor)" msgstr "" #. TRANSLATORS: level description #: data/labskaus.ld:68 msgid "Made of 100% recycled graphics" msgstr "" #. TRANSLATORS: level name #: data/letters.ld:35 msgid "Letters" msgstr "" #. TRANSLATORS: level description #: data/letters.ld:37 msgid "Try to find out, which letters do connect!" msgstr "" #: data/letters.ld:84 data/letters.ld:103 msgid "" "You have found\n" "the name of the game:\n" "*** CUYO ***\n" "100 Bonus Points" msgstr "" #: data/letters.ld:132 data/letters.ld:151 msgid "" "You have found\n" "the name of the\n" "programmer of Cuyo:\n" "*** IMMI ***\n" "200 Bonus Points" msgstr "" #: data/letters.ld:183 data/letters.ld:205 msgid "" "You have found\n" "the name of the\n" "programmer of this Level:\n" "*** BERNI ***\n" "2000 Bonus Points" msgstr "" #. TRANSLATORS: level name #: data/maennchen.ld:21 msgid "Characters" msgstr "" #. TRANSLATORS: level name #: data/maze.ld:22 msgid "Maze" msgstr "" #. TRANSLATORS: level description #: data/maze.ld:23 msgid "Collect all treasures. Finding the exit is optional." msgstr "" #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level name #: data/memory.ld:49 msgid "Memory" msgstr "" #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level description #: data/memory.ld:64 msgid "Well, memory." msgstr "" #. TRANSLATORS: level name #: data/mfs.ld:27 msgid "mfs" msgstr "" #. TRANSLATORS: level author #: data/mfs.ld:28 msgid "Konrad" msgstr "" #. TRANSLATORS: level description #: data/mfs.ld:44 msgid "Who cleans the room?" msgstr "" #. TRANSLATORS: level name #: data/nasenkugeln.ld:32 msgid "Noseballs" msgstr "" #. TRANSLATORS: level description #: data/nasenkugeln.ld:44 msgid "" "Put four balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" #. TRANSLATORS: level description #: data/nasenkugeln.ld:45 msgid "" "Put six balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" #. TRANSLATORS: "equal" here is in the egalitarian sense #. TRANSLATORS: level name #: data/novips.ld:21 msgid "All colours are equal" msgstr "" #. TRANSLATORS: level description #: data/novips.ld:22 msgid "Get rid of everything" msgstr "" #. TRANSLATORS: level name #: data/octopi.ld:23 msgid "Octopi" msgstr "" #. TRANSLATORS: level description #: data/octopi.ld:25 msgid "" "Octopi connect in eight directions. They also remove the anemones that way." msgstr "" #. TRANSLATORS: level name #: data/pacman.ld:30 msgid "Pacman" msgstr "" #. TRANSLATORS: level description #: data/pacman.ld:45 msgid "Wanna play Pacman?" msgstr "" #. TRANSLATORS: Apparently, "Paratroopers" is the name of a computer game. #. TRANSLATORS: level name #: data/paratroopers.ld:27 msgid "Paratroopers" msgstr "" #. TRANSLATORS: level description #: data/paratroopers.ld:28 msgid "the other way around" msgstr "" #. TRANSLATORS: level name #: data/pfeile.ld:30 msgid "Arrows" msgstr "" #. TRANSLATORS: level description #: data/pfeile.ld:46 msgid "Arrows can be turned" msgstr "" #. TRANSLATORS: level name #: data/pressure.ld:26 msgid "Excess Pressure" msgstr "" #. TRANSLATORS: level name #: data/puzzle.ld:23 msgid "Jigsaw" msgstr "" #. TRANSLATORS: level description #: data/puzzle.ld:25 msgid "Get rid of the border" msgstr "" #. TRANSLATORS: level name #: data/rechnen.ld:21 msgid "Calculations" msgstr "" #. TRANSLATORS: level name #: data/reversi_brl.ld:22 msgid "Reversi" msgstr "" #. TRANSLATORS: level name #: data/rohre.ld:28 msgid "Heating" msgstr "" #. TRANSLATORS: level name #: data/rollenspiel.ld:21 msgid "Fantasy role playing" msgstr "" #. TRANSLATORS: level name #: data/schach.ld:32 msgid "Chess" msgstr "" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:226 msgid "" "King confused.\n" "Castling both sides\n" "300 Bonus Points" msgstr "" #. TRANSLATORS: "Queen" and "Castling" are chess terms. #: data/schach.ld:232 msgid "" "Castling queen's side\n" "150 Bonus Points" msgstr "" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:238 msgid "" "Castling king's side\n" "100 Bonus Points" msgstr "" #. TRANSLATORS: level name #: data/schemen.ld:22 msgid "Silhouettes" msgstr "" #. TRANSLATORS: level name #: data/secret.ld:20 msgid " " msgstr "" #. TRANSLATORS: level description #: data/secret.ld:22 msgid "Congratulations, you found the secret level" msgstr "" #. TRANSLATORS: level name #: data/silbergold.ld:21 msgid "Silver and Gold" msgstr "" #. TRANSLATORS: level name #: data/slime.ld:24 msgid "Slime" msgstr "" #. TRANSLATORS: level name #: data/springer.ld:31 msgid "Knights" msgstr "" #. TRANSLATORS: level author #: data/springer.ld:32 msgid "brl & Immi" msgstr "" #. TRANSLATORS: "Knight" and "Pawn" refer to the chess pieces #. TRANSLATORS: level description #: data/springer.ld:34 msgid "Knights connect via knight moves. Pawns don't connect at all." msgstr "" #. TRANSLATORS: level name #: data/tennis.ld:21 msgid "Tennis" msgstr "" #. TRANSLATORS: level description #: data/tennis.ld:23 msgid "Don't be confused by extra balls." msgstr "" #. TRANSLATORS: level name #: data/tetris.ld:41 msgid "Tetris" msgstr "" #. TRANSLATORS: level description #: data/tetris.ld:43 msgid "Complete lines will disappear." msgstr "" #. TRANSLATORS: level name #: data/theater.ld:39 msgid "Theater" msgstr "" #. TRANSLATORS: level description #: data/theater.ld:71 msgid "Please keep quiet. Otherwise you will be blasted." msgstr "" #. TRANSLATORS: level name #: data/tiere.ld:28 msgid "Tiling Animals" msgstr "" #. TRANSLATORS: level name #: data/trees.ld:21 msgid "Holes" msgstr "" #. TRANSLATORS: "singly connected", or simply connected is a term from #. mathematics, more specifically topology #. TRANSLATORS: level name #: data/trees.ld:24 msgid "Singly connected" msgstr "" #. TRANSLATORS: level description #: data/trees.ld:26 msgid "Groups with holes explode." msgstr "" #. TRANSLATORS: "complex", "nonpositive" and "Euler characteristic" are terms #. from mathematics. "Complex" is here used in the sense of simplicial #. complexes or CW complexes. #. TRANSLATORS: level description #: data/trees.ld:30 msgid "Complexes with nonpositive Euler characteristic explode." msgstr "" #: data/trees.ld:51 msgid "Multiple holes" msgstr "" #. TRANSLATORS: level name #: data/unmoeglich.ld:21 msgid "impossible" msgstr "" #. TRANSLATORS: level name #: data/unterwasser.ld:32 msgid "Under Water" msgstr "" #. TRANSLATORS: level description #: data/unterwasser.ld:48 msgid "Bubbles (Level still under construction.)" msgstr "" #. TRANSLATORS: level name #: data/viecher.ld:32 msgid "Beasts" msgstr "" #. TRANSLATORS: level description #: data/viecher.ld:46 msgid "Warning! Fire hazard!" msgstr "" #. TRANSLATORS: level name #: data/wachsen.ld:25 msgid "Growing" msgstr "" #. TRANSLATORS: level name #: data/walls.ld:28 msgid "Walls" msgstr "" #. TRANSLATORS: level description #: data/walls.ld:30 msgid "Floors don't connect through walls." msgstr "" #. TRANSLATORS: level description #: data/wohnungen.ld:25 msgid "Build a nicer neighborhood" msgstr "" #. TRANSLATORS: level name #: data/wohnungen.ld:26 msgid "Housing" msgstr "" #. TRANSLATORS: level name #: data/wuerfel.ld:27 msgid "Cubes" msgstr "" #. TRANSLATORS: level description #: data/wuerfel.ld:42 msgid "Will they land in front of or behind the others?" msgstr "" #. TRANSLATORS: level name #: data/xtradick.ld:59 msgid "Extra fat toys" msgstr "" #. TRANSLATORS: level author #: data/xtradick.ld:60 msgid "Berni/Jela" msgstr "" #. TRANSLATORS: level description #: data/xtradick.ld:61 msgid "What do they do?" msgstr "" #. TRANSLATORS: level name #: data/zahn.ld:22 msgid "Teeth" msgstr "" #. TRANSLATORS: level name #: data/ziehlen.ld:21 msgid "Target practice" msgstr "" cuyo-2.1.0/po/pt.gmo0000644000175000017500000004253512422656701011175 00000000000000KLxy{~(/ 2Scsv* p#/11-( V bl     )E `%m& :NV'4 18P+ "!?aflqv     #=FW.n] +AY\a| $-(DIPU3e=0.$:S95  ( < A H S q   !  K  !!! !7'!_! e!o!1! !!!'! "U,"T"""""#!#50# f##r$ $$ $$$$$$$$$%%%%$%5%J%*R%.}%*%'%G%G&V& _& i& t&1~& &*&&& & ''$'7'M'*S'~' ''''$' (0(O()h(P(X(B<))) ) )))) * * * * *****,,,,,9,,5-'O- w-------,-.&.7.=.D._.p..: /8F/:/+// /00&0 C0M0 T0b0t0{0 0 0000&0$0 1)1,I1v1 1$1 1161M%2%s2:222&3;*3 f3'q33!3333 34%4+44`4f4m4t4 {44 44 44 4 4444 55$5',5T5]5n53555j5:6J6[6m6666 66 666 66 67#7'<7d77777<7 7A758<8E8<L8)8<8D8D59"z9 99 99 999:: : ':H:JN: ::: :=:: ; ;2#; V;`;s;3;;V;T%<z<<<<<<B<*=J= S> _> i>v>>>>>>>>> >>>>??3?/:?/j?(?*?I?8@ K@ U@ `@ l@Aw@@+@@@A&AAAIAaA }A/AAAA"AB(1BZB2_BB+BMBT%C=zCCC C CC CD D D D E E'E 9ECE g-4T7AD K[s'q!nu(#O2$ +Py3o=]a`QN_hdWRcUE&z?|5S \H@~Vl8x9X<FY1"t%iZm:Gvj>0;b{^,BCw.JMf*p/re)}L6k I  %d%d or %d blops explode%d-%d%d/%d%s - Debug mode; Press alt-h for help.%s: Too many arguments *** You won even a bit more!!! Score: %d *** *** You won!!! Score: %d *** 1 blop explodes%d blops explode2 blops explode3 blops explode3D4 blops explode8 bit nostalgia???A selection of levels for the common tasteA very basic levelAI SpeedASCIIAliensAll colours are equalAll levelsAll official levelsAlmost each level has its very own graphics. At least this level has exactly the same rules as the previous one.Also try this level in easy and hard difficultyAlso try this level in easy and normal difficultyAlso try this level in normal and hard difficultyAn explosion changes the way, they connect...Angry ballsAntarcticArgument to -%c missing ArrowsArrows can be turnedAustin W.BaggisBalls & RodsBalls at easeBeastsBerniBerni & ImmiBerni/JelaBeware of freezing!Beware of ink!BonusBubbles (Level still under construction.)Build a nicer neighborhoodCalculationsCastling king's side 100 Bonus PointsCastling queen's side 150 Bonus PointsChain reaction necessaryChain reaction necessary Chain reaction not necessaryCharactersChessCollect PowerUps and hand the bad ones to the other playerCollect PowerUps and hand the bad ones to your opponent^H^H^H^H^H^H^H^HpartnerCollect PowerUps but avoid the bad onesCollect all treasures. Finding the exit is optional.Collect gold for extra pointsCommercial breakComplete lines will disappear.Complexes with nonpositive Euler characteristic explode.ComputerCongratulations, you found the secret levelContributionsCould not parse option -g CubesCuyo - debug modeCuyo - level %sDarkenDiscoDo you like doing some Needlework?Don't be confused by extra balls.DoneDoorsDownEasyElementsEmbroideryEverything changes...Excess PressureExplosiveExtra fat toysExtra pointsExtra shipsExtremesEyesFantasy role playingFarmingFishFlasksFloors don't connect through walls.FractalsFrightened ballsGame over Score: %d Game paused Space = Resume Esc = Abort Game GamesGardensGardens need hedges for separation. The hedges do not count for the size of a garden, though.Gaudy ballsGet rid of everythingGet rid of the borderGet rid of the strobos!GoGoldGroups with holes explode.GrowingHardHeatingHolesHormonesHousingHurry up!!!Hurry up, get bonus points!ImmiIn which direction do balloons fall?It depends on the gas they are filled with...It was late and I was tiredJelaJigsawJumpKeys Player %d:King confused. Castling both sides 300 Bonus PointsKnightsKnights connect via knight moves. Pawns don't connect at all.KonradLeftLettersLevel %s complete! Time Bonus: %d Score: %d %sLevels donated and maintained by the communityLevels interpreting the general theme of cuyo more broadlyLevels setting records such as `fastest dropping ceiling'Levels simulating board games or other computer gamesMade of 100% recycled graphicsMark WeyerMark Weyer (editor)MazeMemoryModern ArtMost dense packing of spheresMultiple holesNo FXNormalNoseballsNumerically equal colours connectOctopiOctopi connect in eight directions. They also remove the anemones that way.OffOnPacmanParatroopersPlain levels without any disturbing tweaks to the rulesPlanePlayer %dPlayer vs. ~ComputerPlease keep quiet. Otherwise you will be blasted.PotpourriPower missilesPowerUps and -DownsPress `return' or click for a full listProtect yourself from the flash!Put four balls together; then, they will explode. Try to make the grass explode, too.Put six balls together; then, they will explode. Try to make the grass explode, too.Random aperiodic tilingReversiRibbonsRibbons connect diagonally.RightRotating BallsScore: %d Level %d %s by %s %s %s %s Space = StartScore: %d Loading Level %d... Setting the difficulty affects some, but not all levels. On difficulty "Easy", the "Standard" level track consists of levels which are affected by that difficulty, and of levels which are easy in themselves. The same holds for "Hard".Shape and ColorSilhouettesSilver and GoldSimilar ballsSimonSingly connectedSkySlimeSoundSpace = ContinueStandardStart ~at level...Target practiceTeethTennisTetrisThe four SeasonsThe less you know...TheaterThese balls are learning the rules of cuyoThese balls are oblivious to the rules of cuyoThese balls have learned the rules of cuyoThey are watching you. Get rid of them.Three explode if in each aspect they are all the same or all different.Tiling AnimalsTiling ITiling IITiling IIITiling IVTo enter a new key, click or press `return' firstTreasure huntTry to find out, which letters do connect!TurnType a new keyUnder WaterUnknown option '%c' WallsWanna play Pacman?Warning! Fire hazard!WeirdWell, all balls look the same, don't they?Well, just a little bit 3D.Well, memory.What do they do?When do the "hormones" connect?Who cleans the room?Why to place your goban horizontallyWickerworkWill they land in front of or behind the others?Yes, it CAN be completedYes, it CAN be completed ...cooperativelyYou have found the name of the programmer of Cuyo: *** IMMI *** 200 Bonus PointsYou have found the name of the programmer of this Level: *** BERNI *** 2000 Bonus PointsYou have found the name of the game: *** CUYO *** 100 Bonus Pointsbetween %d and %d blops explodebrlbrl & Immiimpossiblemfsthe other way aroundusage: cuyo [-g x] [-h] [-f] [ld-file] -g x set window size -f fullscreen mode -h print this help message (More options are documented in the man page.) ~1 Player~2 Players~Difficulty~Level track~New Game~Preferences...~Quit~Restart last levelProject-Id-Version: cuyo 2.1.0 Report-Msgid-Bugs-To: cuyo-devel@nongnu.org POT-Creation-Date: 2014-10-25 PO-Revision-Date: 2014-09-22 19:12+0100 Last-Translator: Américo Monteiro Language-Team: Portuguese Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n!=1); X-Generator: Lokalize 1.4 %d%d ou %d blops explodem%d-%d%d/%d%s - Modo de depuração; Carregue em alt-h para ajuda.%s: Demasiados argumentos *** Ganhas-te um pouco mais!!! Pontuação: %d *** *** Ganhas-te!!! Pontuação: %d *** 1 blop explode%d blops explodem2 blops explode3 blops explode3D4 blops explodeNostalgia de 8 bits???Uma selecção de níveis para o gosto comumUm nível muito basicVelocidade da IAASCIIAliensTodas as cores são iguaisTodos os níveisTodos os níveis oficiaisQuase todos os níveis têm os seus próprios gráficos. Pelo menos este nível tem exactamente as mesmas regras que o anterior.Tenta também este nível em dificuldade fácil e difícilTenta também este nível em dificuldade fácil e normalTenta também este nível em dificuldade normal e difíciluma explosão muda o caminho, eles ligam...Bolas zangadasAntárcticaArgumento para -%c em falta FlechasAs flechas podem ser giradasAustin W.BaggisBolas & VarasBolas à vontade BestasBerniBerni & ImmiBerni/JelaCuidado com o frio!Cuidado com a tinta!BónusBolhas (Nível ainda em construção.)Constrói uma vizinhança agradávelCálculosRoque do lado do rei 100 Pontos de BónusRoque do lado da rainha 150 Pontos de BónusReacção em cadeia necessáriaReacção em cadeia necessária Reacção em cadeia não necessáriaCaracteresXadrezRecolhe os PowerUps e oferece os maus ou outro jogadorRecolhe os PowerUps e oferece os maus ao teu oponente^H^H^H^H^H^H^H^HparceiroRecolhe os PowerUps mas evita os mausRecolhe todos os tesouros. Encontrar a saída é opcional.Recolhe ouro para pontos extraPausa comercialAs linhas completas irão desaparecer.Complexos com característica Euler não-positiva explodem.ComputadorParabéns, descobriste o nível secretoContribuiçõesincapaz de analisar a opção -g CubosCuyo - modo de depuraçãoCuyo - nível %sEscurecidoDiscoGostas de fazer trabalhos de costura?Não te deixes confundir pelas bolas extra.FeitoPortasDescerFácilElementosBordadoTudo muda...Pressão ExcessivaExplosivoBrinquedos extra gordosPontos extraNavios extraExtremosOlhosJogando papel de fantasiaAgriculturaPeixeFrascosO chão não liga através das paredes.FractalsBolas assustadasFim do jogo Pontuação: %d Jogo em pausa Espaço = Resume Esc = Aborta Jogo JogosJardinsOs jardins precisam de cercas para os separar. No entanto, as cercas não contam para o tamanho do jardim.Bolas berrantesLivra-te de tudoLivra-te do bordoLivra-te dos strobos!GoOuroGrupos com buracos explodem.CrescendoDifícilAquecimentoBuracosHormonasAlojamentoDespacha-te!!!Despacha-te, tira pontos bónus!ImmiEm que direcção os balões caiem?Depende do gás com que foram cheios...Era tarde e Eu estava cansadoJelaPuzzleSaltarTeclas do Jogador %d:Rei confundido. Roque de ambos os lados 300 Pontos de BónusCavaleirosCavaleiros ligam por movimentos de cavalo. Os peões nunca ligam.KonradEsquerdaLetrasNível %s completo! Bónus de Tempo: %d Pontuação: %d %sNíveis doados e mantidos pela comunidadeNíveis que interpretam mais amplamente o tema geral do cuyoNíveis que definem recordes do tipo 'o tecto mais rápido a descer'Níveis que simulam jogos de tabuleiro ou outros jogos de computadorFeito 100% de gráficos recicladosMark WeyerMark Weyer (editor)LabirintoMemóriaArte ModernaO pacote de esferas mais densoMúltiplos buracosSem FXNormalBolasNarizCores numericamente iguais ligamPolvoPolvos ligam em oito direcções. Também removem as anémonas desse modo.DesligadoLigadoPacmanParatroopersNíveis simples sem nenhumas artimanhas a perturbar as regrasLisoJogador %dJogado vs. ~ComputadorPor favor faça silêncio. Senão será rebentado.PotpourriMisseis de energiaPowerUps e -DownsPressione 'Enter' ou clique para uma lista completaProtege-te do flash!Põe quatro bolas juntas; depois, elas explodem. Tenta fazer a relva explodir também.Põe seis bolas juntas; depois, elas explodem. Tenta fazer a relva explodir também.Mosaico aperiódico aleatórioReversoFaixasAs faixas ligam na diagonalDireitaBolas RotativasPontuação: %d Nível %d %s por %s %s %s %s Espaço = ComeçarPontuação: %d A Carregar Nível %d... Definir a dificuldade afecta alguns, mas não todos os níveis. Na dificuldade "Fácil", a pista de níveis "Standard" consiste de níveis que são afectados por essa dificuldade, e de níveis que são eles próprios fáceis. O mesmo é verdadeiro para "Difícil".Forma e CorSilhuetasPrata e OuroBolas semelhantesSimãoMeramente ligadosCéuViscoSomEspaço = ContinuarStandardInici~ar no nível...Tiro ao alvoDentesTénisTetrisAs quatro EstaçõesQuanto menos souberes...TeatroEstas bolas estão a aprender as regras do cuyoEstas bolas são abstraídas das regras do cuyoEstas bolas aprenderam as regras do cuyoEles estão a observar-te. Livra-te deles.Três explodem se em cada aspecto forem todos iguais ou todos diferentes.Animais em MosaicoMosaico IMosaico IIMosaico IIIMosaico IVPara inserir uma nova tecla, clique ou pressione 'Enter' primeiroCaça ao tesouroTenta descobrir, quais as letras que ligam!VirarPressione uma nova teclaDebaixo de ÁguaOpção desconhecida '%c' ParedesQueres jogar ao Pacman?Aviso! Perigo de Incêndio!EsquisitoBem, as bolas parecem todas iguais, não achas?Bem, apenas um pouco de 3D.Bem, Memória.Que é que eles fazem?Quando é que as "hormonas" ligam?Quem limpa o quarto?Porque colocar o seu goban na horizontalVimeIrão eles aterrar na frente ou atrás dos outros?Sim, PODE ser completadoSim, PODE ser completado ...em cooperaçãoDescobriste o nome do: programador do Cuyo: *** IMMI *** 200 Pontos de BónusDescobriste o nome do: programador deste Nível: *** BERNI *** 2000 Pontos de BónusDescobriste o nome do jogo: *** CUYO *** 100 Pontos de Bónusentre %d e %d blops explodembrlbrl & Immiimpossívelmfsao contrárioutilização: cuyo [-g x] [-h] [-f] [ld-file] -g x define tamanho da janela -f modo de ecrã total -h escreve esta mensagem de ajuda (Mais opções estão documentadas no manual.) ~1 Jogador~2 Jogadores~DificuldadeP~ista de níveis~Novo Jogo~Preferências...~Terminar~Reiniciar último nívelcuyo-2.1.0/po/de.gmo0000644000175000017500000004212112422656701011131 00000000000000KLxy{~(/ 2Scsv* p#/11-( V bl     )E `%m& :NV'4 18P+ "!?aflqv     #=FW.n] +AY\a| $-(DIPU3e=0.$:S95  ( < A H S q   !  K  !!! !7'!_! e!o!1! !!!'! "U,"T"""""#!#50# f##r$ $$ $$$$$$$$$%%%%$%5%J%*R%.}%*%'%G%G&V& _& i& t&1~& &*&&& & ''$'7'M'*S'~' ''''$' (0(O()h(P(X(B<))) ) )))) * * * * ****Y*Q,S,V,s,y,.,,0,),&!-H-\-p-s---0-/--... 3.>.tU.?.? /?J/.// //// 000.0@0H0 N0 [0f0~00400001,1H1!e11101=12-$2R2 k2!v2<22-2 3!363=3T3 d3q3 w3%333333 33 4 44 ,4 84E4M4S4g4v4}47444424!5(5c/5 5 55555 56666"6 *6 46?6^6&c646666667787RA777 71737+8>>80}88 88 88 899-9B9 I9'U9}9L9999 9.9: !:,:2D:w:: :8::X:YD;;;;;;;=<C<b<E=T=\=l=|======== =====>+>+3>4_>$>">T> 1?=?M?^?p?;? ?/??@ @#@;@A@^@u@.}@@ @@"@ A,'A TA._AA/ALASBCrB$BB B BBCC C CC D DD-D6D g-4T7AD K[s'q!nu(#O2$ +Py3o=]a`QN_hdWRcUE&z?|5S \H@~Vl8x9X<FY1"t%iZm:Gvj>0;b{^,BCw.JMf*p/re)}L6k I  %d%d or %d blops explode%d-%d%d/%d%s - Debug mode; Press alt-h for help.%s: Too many arguments *** You won even a bit more!!! Score: %d *** *** You won!!! Score: %d *** 1 blop explodes%d blops explode2 blops explode3 blops explode3D4 blops explode8 bit nostalgia???A selection of levels for the common tasteA very basic levelAI SpeedASCIIAliensAll colours are equalAll levelsAll official levelsAlmost each level has its very own graphics. At least this level has exactly the same rules as the previous one.Also try this level in easy and hard difficultyAlso try this level in easy and normal difficultyAlso try this level in normal and hard difficultyAn explosion changes the way, they connect...Angry ballsAntarcticArgument to -%c missing ArrowsArrows can be turnedAustin W.BaggisBalls & RodsBalls at easeBeastsBerniBerni & ImmiBerni/JelaBeware of freezing!Beware of ink!BonusBubbles (Level still under construction.)Build a nicer neighborhoodCalculationsCastling king's side 100 Bonus PointsCastling queen's side 150 Bonus PointsChain reaction necessaryChain reaction necessary Chain reaction not necessaryCharactersChessCollect PowerUps and hand the bad ones to the other playerCollect PowerUps and hand the bad ones to your opponent^H^H^H^H^H^H^H^HpartnerCollect PowerUps but avoid the bad onesCollect all treasures. Finding the exit is optional.Collect gold for extra pointsCommercial breakComplete lines will disappear.Complexes with nonpositive Euler characteristic explode.ComputerCongratulations, you found the secret levelContributionsCould not parse option -g CubesCuyo - debug modeCuyo - level %sDarkenDiscoDo you like doing some Needlework?Don't be confused by extra balls.DoneDoorsDownEasyElementsEmbroideryEverything changes...Excess PressureExplosiveExtra fat toysExtra pointsExtra shipsExtremesEyesFantasy role playingFarmingFishFlasksFloors don't connect through walls.FractalsFrightened ballsGame over Score: %d Game paused Space = Resume Esc = Abort Game GamesGardensGardens need hedges for separation. The hedges do not count for the size of a garden, though.Gaudy ballsGet rid of everythingGet rid of the borderGet rid of the strobos!GoGoldGroups with holes explode.GrowingHardHeatingHolesHormonesHousingHurry up!!!Hurry up, get bonus points!ImmiIn which direction do balloons fall?It depends on the gas they are filled with...It was late and I was tiredJelaJigsawJumpKeys Player %d:King confused. Castling both sides 300 Bonus PointsKnightsKnights connect via knight moves. Pawns don't connect at all.KonradLeftLettersLevel %s complete! Time Bonus: %d Score: %d %sLevels donated and maintained by the communityLevels interpreting the general theme of cuyo more broadlyLevels setting records such as `fastest dropping ceiling'Levels simulating board games or other computer gamesMade of 100% recycled graphicsMark WeyerMark Weyer (editor)MazeMemoryModern ArtMost dense packing of spheresMultiple holesNo FXNormalNoseballsNumerically equal colours connectOctopiOctopi connect in eight directions. They also remove the anemones that way.OffOnPacmanParatroopersPlain levels without any disturbing tweaks to the rulesPlanePlayer %dPlayer vs. ~ComputerPlease keep quiet. Otherwise you will be blasted.PotpourriPower missilesPowerUps and -DownsPress `return' or click for a full listProtect yourself from the flash!Put four balls together; then, they will explode. Try to make the grass explode, too.Put six balls together; then, they will explode. Try to make the grass explode, too.Random aperiodic tilingReversiRibbonsRibbons connect diagonally.RightRotating BallsScore: %d Level %d %s by %s %s %s %s Space = StartScore: %d Loading Level %d... Setting the difficulty affects some, but not all levels. On difficulty "Easy", the "Standard" level track consists of levels which are affected by that difficulty, and of levels which are easy in themselves. The same holds for "Hard".Shape and ColorSilhouettesSilver and GoldSimilar ballsSimonSingly connectedSkySlimeSoundSpace = ContinueStandardStart ~at level...Target practiceTeethTennisTetrisThe four SeasonsThe less you know...TheaterThese balls are learning the rules of cuyoThese balls are oblivious to the rules of cuyoThese balls have learned the rules of cuyoThey are watching you. Get rid of them.Three explode if in each aspect they are all the same or all different.Tiling AnimalsTiling ITiling IITiling IIITiling IVTo enter a new key, click or press `return' firstTreasure huntTry to find out, which letters do connect!TurnType a new keyUnder WaterUnknown option '%c' WallsWanna play Pacman?Warning! Fire hazard!WeirdWell, all balls look the same, don't they?Well, just a little bit 3D.Well, memory.What do they do?When do the "hormones" connect?Who cleans the room?Why to place your goban horizontallyWickerworkWill they land in front of or behind the others?Yes, it CAN be completedYes, it CAN be completed ...cooperativelyYou have found the name of the programmer of Cuyo: *** IMMI *** 200 Bonus PointsYou have found the name of the programmer of this Level: *** BERNI *** 2000 Bonus PointsYou have found the name of the game: *** CUYO *** 100 Bonus Pointsbetween %d and %d blops explodebrlbrl & Immiimpossiblemfsthe other way aroundusage: cuyo [-g x] [-h] [-f] [ld-file] -g x set window size -f fullscreen mode -h print this help message (More options are documented in the man page.) ~1 Player~2 Players~Difficulty~Level track~New Game~Preferences...~Quit~Restart last levelProject-Id-Version: Cuyo VERSION Report-Msgid-Bugs-To: cuyo-devel@nongnu.org POT-Creation-Date: 2012-2-16 PO-Revision-Date: 2012-1-23 Last-Translator: Mark Weyer Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n!=1); %d%d oder %d Blops explodieren%d-%d%d/%d%s - Fehlersuchemodus; Drcke Alt-h fr Hilfe.%s: Zu viele Argumente *** Du hast strker gewonnen!!! Score: %d *** *** Du hast gewonnen!!! Punkte: %d *** 1 Blop explodiert%d Blops explodieren2 Blops explodieren3 Blops explodieren3D4 Blops explodieren8Bit-Nostalgie???Eine Levelauswahl fr den gewhnlichen GeschmackDamals, als noch in Basic programmiert wurde...KI GeschwindigkeitASCIIAliensAlle Farben sind gleichAlle LevelAlle offiziellen LevelFast jeder Level hat seine ganz eigene Graphik. Wenigstens hat dieser genau die gleichen Spielregeln wie der vorige.Spiel diesen Level auch im Schwierigkeitsgrad Leicht und SchwerSpiel diesen Level auch im Schwierigkeitsgrad Leicht und NormalSpiel diesen Level auch im Schwierigkeitsgrad Normal und SchwerExplosionen wechseln die Art des Verbindens...Wtende KugelnAntarktisArgument zu -%c fehlt PfeilePfeile kann man drehen...Austin W.BaggisKugeln und StangenGlckliche KugelnViecherBerniBerni & ImmiBerni/JelaAchtung, Gefriergefahr!Vorsicht Tinte!BonusBlub blub blub (Level befindet sich noch im Aufbau.)Verschnert Eure NachbarschaftRechnenKurze Rochade 150 BonuspunkteLange Rochade 150 BonuspunkteKettenreaktion erforderlichKettenreaktion erforderlich Kettenreaktion nicht erforderlichMnnchenSchachSammle Boni und bescher dem anderen Spieler MaliSammle Boni und bescher Deinem Gegner^H^H^H^H^H^HPartner MaliSammle Boni und vermeide MaliSammle alle Schtze. Ausgang finden optional.Gold sammeln gibt PunkteWerbepauseVollstndige Linien verschwinden.Komplexe mit nichtpositiver Eulercharakteristik explodieren.ComputerGlckwunsch, Du hast den Geheimlevel gefundenZutrgeKonnte Option -g nicht verstehen WrfelCuyo - FehlersuchmodusCuyo - Level %sVerdunkelungDiskoLust auf einen Handarbeitsabend?Manche Blle sind nur zur Verwirrung.FertigTrenRunterLeichtElementeStickereiAlles wandelt sich...berdruckExplosivExtra dickes SpielzeugExtrapunkteNeue SchiffeExtremeAugenFantasy-RollenspielLandwirtschaftFischeKolbenDer Fuboden verbindet sich nicht durch Wnde hindurch.Fraktalengstliche KugelnVerloren Punkte: %d Spiel pausiert Leertaste = Weiter Esc = Abbruch SpieleGrtenGrten brauchen Hecken zum Abgrenzen. Fr die Gre eines Gartens zhlen die Hecken aber nicht mit.Bunte KugelnAlles mu wegWerde die Randteile losWerde die Strobos los!GoGoldGruppen mit Lchern explodieren.WachsenSchwerRohreLcherHormoneWohnungenSchnell!!!Schnell, Bonuspunkte bekommen!ImmiIn welche Richtung fallen Luftballons?Es kommt auf das Gas an, mit dem sie gefllt sind...Es war spt und ich war mdeJelaPuzzleJumpTasten Spieler %d:Knig ist verwirrt. Beidseitige Rochade 300 BonuspunkteSpringerDie Springer verbinden sich per Rsselsprung. Die Bauern verbinden sich gar nicht.KonradLinksBuchstabenLevel %s geschafft! Zeitbonus: %d Punkte: %d %sLevel, die Benutzern beigesteuert haben und pflegenLevel, die cuyo etwas freier interpretierenLevel, die Rekorde wie ,,schnellst fallende Decke'' aufstellenLevel, die Brett- oder Computerspiele simulierenDas ist alles nur gek(l)autMark WeyerMark Weyer (Hrsg.)IrrgartenMemoryModerne KunstDichteste KugelpackungMehrere LcherKeine SpezialeffekteNormalNasenkugelnNumerisch gleiche Farben verbinden sichOctopiOctopi verbinden sich in acht Richtungen. So sprengen sie auch die Anemonen.AusAnPacmanParatroopersSchlichte Level ohne irritierende SonderregelnEbeneSpieler %dSpieler gegen ~ComputerBitte seien Sie leise. Sonst werden Sie gesprengt.LabskausRaketenBoni und MaliFr eine vollstndige Liste drcke `Eingabe' oder klickeSchtze Dich vor dem Blitz!Bringe vier Kugeln zusammen; dann explodieren sie. Versuche, das Gras mit wegzusprengen.Bringe sechs Kugeln zusammen; dann explodieren sie. Versuche, das Gras mit wegzusprengen.Eine aperiodische ParkettierungReversiBnderBnder verbinden sich diagonal.RechtsRotierende BllePunkte: %d Level %d %s von %s %s %s %s Leertaste = StartenPunkte: %d Lade Level %d... Schwierigkeitsgrade verndern einige, aber nicht alle Level. Im Schwierigkeitsgrad "Leicht" besteht die Levelabfolge "Standard" aus den vernderten Leveln und aus Leveln, die ohnehin leicht sind. Das gleiche gilt fr "Schwer".Form und FarbeSchemenSilber und Goldhnliche KugelnSimonEinfach zusammenhngendHimmelSchleimTonLeertaste = WeiterStandardBei ~Level ... startenZielbungZhneTennisTetrisDie vier JahreszeitenJe weniger Du weit...TheaterDiese Kugeln lernen gerade die Spielregeln.Diese Kugeln haben keine Ahnung von den Spielregeln.Diese Kugeln kennen die Spielregeln.Sie beobachten Dich. Werd sie los.Drei explodieren, wenn sie in jeder Hinsicht alle gleich oder alle verschieden sind.TierkachelnParkettierung IParkettierung IIParkettierung IIIParkettierung IVUm eine neue Taste einzugeben, klicke oder drcke `Eingabe'SchatzsucheFinde heraus, welche Buchstaben sich verbinden!DrehenTippe eine neue TasteUnter WasserUnbekannte Option '%c' WndeEine Partie Pacman gefllig?Vorsicht! Brandgefahr!SeltsamEigentlich sind ja alle Blle gleich, aaber...Naja, nur ein klein wenig 3D.Memory haltWas machen die da?Wann verbinden sich die "Hormone"?Wer soll das alles putzen?Warum man den Goban nicht hochkant verwendetFlechtwerkWerden sie vor oder hinter den anderen landen?Ja, es ist mglichJa, es ist mglich ...wenn man zusammenarbeitetDu hast den Namen des Autors von Cuyo gefunden: *** IMMI *** 200 BonuspunkteDu hast den Namen des Autors dieses Levels gefunden: *** BERNI *** 2000 BonuspunkteDu hast den Namen des Spiels gefunden: *** CUYO *** 100 Bonuspunktezwischen %d und %d Blops explodierenbrlbrl & ImmiunmglichMathefachschafteinmal andersherumVerwendung: cuyo [-g x] [-h] [-f] [ld-Datei] -g x Fenstergre bestimmen -f Vollbildmodus -h Diese Hilfe ausgeben (Mehr Optionen stehen in der man-Seite) ~1 Spieler~2 SpielerSchwierigkeits~gradLevel~abfolge~Neues SpielEin~stellungenBe~endenLetzten Level ~wiederholencuyo-2.1.0/po/pot.sed0000644000175000017500000000217712422640766011347 000000000000001 s/SOME DESCRIPTIVE TITLE/Message catalog for the game Cuyo/ 2 s/Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER/This is a partly generated file. The copyright of the original messages is identical to the one of the source files they are generated from. The copyright of the translations is by the translators./ 3,9 s/PACKAGE/Cuyo/ 6 i\# General notes for translators\ #\ # 1) The German translation was done by the developers themselves, all of whom\ # are native German speakers. So in case of any doubt, the German version is at\ # least as authorative as a base for further translations as the original\ # English version is. Maybe even more so. If in your team there is someone who\ # can translate from German to her language, you might consider to let her do\ # so.\ #\ # 2) The level names and descriptions contain some puns and other obscure\ # references. We consider it fine to translate them rather liberally, and even\ # to replace them by completely different puns. (And we have done so for the\ # German version.)\ #\ # 3) We use a custom pixel font. It only supports ISO-8859-1 characters.\ # 11 c"POT-Creation-Date: 2014-10-25\\n" cuyo-2.1.0/po/Makefile.in0000644000175000017500000003264412422656610012112 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # po/Makefile.am for cuyo by Mark Weyer in 2009 # Modified 2011 by the cuyo developers # Maintenance modifications 2010,2011,2014 by the cuyo developers # This file is based on the following: # # po/Makefile.am for LPRng by Bernhard R. Link in 2007 # # this file is based on gettext-0.14.4' Makefile.in.in which states: # # # Makefile for PO directory in any package using GNU gettext. # # # Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = po DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LINGUAS = de pt DOMAIN = $(PACKAGE) POFILES = $(patsubst %,$(srcdir)/%.po,$(LINGUAS)) GMOFILES = $(patsubst %,$(srcdir)/%.gmo,$(LINGUAS)) MSGMERGE_UPDATE = @MSGMERGE@ --update MAINTAINERCLEANFILES = Makefile.in $(GMOFILES) *.mo $(DOMAIN).pot EXTRA_DIST = pot.sed cual2fakec $(DOMAIN).pot $(POFILES) $(GMOFILES) # We would rather use ../data/used_levels instead of ../data/*.ld # However, that would require that the definition of pot_sources # has a dependency on ../data/used_levels, which is something make # does not support. pot_sources = $(shell ls ../src/*.cpp ../src/*.cc ../src/*.h) $(shell ls ../data/*.ld) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign po/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-local all: all-@USE_NLS@ all-yes: $(DOMAIN).pot $(POFILES) $(GMOFILES) all-no: install-data-local: install-data-local-@USE_NLS@ install-data-local-no: all install-data-local-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) for lang in $(LINGUAS) ; do \ cat=$$lang.gmo \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ done uninstall-local: uninstall-local-@USE_NLS@ uninstall-local-no: uninstall-local-yes: for lang in $(LINGUAS) ; do \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done # By virtue of this rule, this Makefile probably only works with srcdir=. $(DOMAIN).pot: $(pot_sources) pot.sed rm -rf data mkdir data cd ../data && make used_levels for ldfile in $$(cat ../data/used_levels) ; do \ ./cual2fakec ../data/$$ldfile > data/$$ldfile ; \ done rm -rf src mkdir src cp ../src/*.cpp ../src/*.cc ../src/*.h src xgettext \ --from-code=ISO-8859-1 \ --language=C++ \ --keyword=_ \ --keyword=N_ \ --add-comments=TRANSLATORS \ --msgid-bugs-address=cuyo-devel@nongnu.org \ -o - \ src/* data/* \ | sed -f pot.sed > cuyo.pot %.mo: %.po $(MSGFMT) -c -o t-$*.mo $*.po && mv t-$*.mo $*.mo %.gmo: %.po lang=`echo $* | sed -e 's,.*/,,'`; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Contrary to how others handle this, the PO file is always touched. %.po: $(srcdir)/$(DOMAIN).pot lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ touch $${lang}.po; \ else \ $(MAKE) $${lang}.po-create; \ fi # General rule for creating PO files. %.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 update-po: Makefile $(MAKE) $(DOMAIN).pot-update $(MAKE) $(POFILES) $(MAKE) $(GMOFILES) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/po/de.po0000644000175000017500000014316312422656701010775 00000000000000# Message catalog for the game Cuyo. # This is a partly generated file. The copyright of the original messages is identical to the one of the source files they are generated from. The copyright of the translations is by the translators. # This file is distributed under the same license as the Cuyo package. # Translations 2008-2014 by Mark Weyer # Most (maybe all) translations of level data are by the level author. # msgid "" msgstr "" "Project-Id-Version: Cuyo VERSION\n" "Report-Msgid-Bugs-To: cuyo-devel@nongnu.org\n" "POT-Creation-Date: 2012-2-16\n" "PO-Revision-Date: 2012-1-23\n" "Last-Translator: Mark Weyer\n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: src/blatt.cpp:215 msgid "Computer" msgstr "Computer" #: src/blatt.cpp:215 #, c-format msgid "Player %d" msgstr "Spieler %d" #. TRANSLATORS: During game: short version of "%d blops explode" #: src/blatt.cpp:258 #, c-format msgid "%d" msgstr "%d" #. TRANSLATORS: During game: short version of #. "between %d and %d blops explode" #: src/blatt.cpp:263 #, c-format msgid "%d-%d" msgstr "%d-%d" #. TRANSLATORS: During game: short version of #. "%d or %d blops explode" #: src/blatt.cpp:268 #, c-format msgid "%d/%d" msgstr "%d/%d" #: src/blatt.cpp:1109 #, c-format msgid "%s - Debug mode; Press alt-h for help." msgstr "%s - Fehlersuchemodus; Drcke Alt-h fr Hilfe." #. TRANSLATORS: Now follows the main menu. The characters preceded by a tilde #. are hotkeys. Please choose them disjoint within the menu. If this #. cannot be achieved in a sensible manner, feel free to leave some out. #: src/blatt.cpp:1120 msgid "~New Game" msgstr "~Neues Spiel" #: src/blatt.cpp:1123 msgid "~Restart last level" msgstr "Letzten Level ~wiederholen" #: src/blatt.cpp:1128 msgid "Start ~at level..." msgstr "Bei ~Level ... starten" #: src/blatt.cpp:1131 msgid "~1 Player" msgstr "~1 Spieler" #: src/blatt.cpp:1133 msgid "~2 Players" msgstr "~2 Spieler" #: src/blatt.cpp:1135 msgid "Player vs. ~Computer" msgstr "Spieler gegen ~Computer" #: src/blatt.cpp:1140 msgid "~Level track" msgstr "Level~abfolge" #: src/blatt.cpp:1146 msgid "~Difficulty" msgstr "Schwierigkeits~grad" #: src/blatt.cpp:1151 msgid "" "Setting the difficulty affects some, but not all levels.\n" "On difficulty \"Easy\", the \"Standard\" level track\n" "consists of levels which are affected by that difficulty,\n" "and of levels which are easy in themselves.\n" "The same holds for \"Hard\"." msgstr "" "Schwierigkeitsgrade verndern einige, aber nicht alle Level.\n" "Im Schwierigkeitsgrad \"Leicht\" besteht die Levelabfolge\n" "\"Standard\" aus den vernderten Leveln und aus Leveln,\n" "die ohnehin leicht sind.\n" "Das gleiche gilt fr \"Schwer\"." #: src/blatt.cpp:1157 msgid "~Preferences..." msgstr "Ein~stellungen" #. TRANSLATORS: This is the last entry of the main menu. #: src/blatt.cpp:1166 msgid "~Quit" msgstr "Be~enden" #: src/blatt.cpp:1176 #, c-format msgid "Keys Player %d:" msgstr "Tasten Spieler %d:" #: src/blatt.cpp:1178 msgid "Left" msgstr "Links" #: src/blatt.cpp:1179 msgid "Right" msgstr "Rechts" #: src/blatt.cpp:1180 msgid "Turn" msgstr "Drehen" #: src/blatt.cpp:1181 msgid "Down" msgstr "Runter" #: src/blatt.cpp:1185 msgid "AI Speed" msgstr "KI Geschwindigkeit" #: src/blatt.cpp:1187 msgid "Sound" msgstr "Ton" #: src/cuyo.cpp:274 #, c-format msgid "" "Score: %d\n" "\n" "Loading Level %d...\n" "\n" msgstr "" "Punkte: %d\n" "\n" "Lade Level %d...\n" "\n" #: src/cuyo.cpp:315 #, c-format msgid "1 blop explodes" msgid_plural "%d blops explode" msgstr[0] "1 Blop explodiert" msgstr[1] "%d Blops explodieren" #: src/cuyo.cpp:321 #, c-format msgid "between %d and %d blops explode" msgstr "zwischen %d und %d Blops explodieren" #: src/cuyo.cpp:324 #, c-format msgid "%d or %d blops explode" msgstr "%d oder %d Blops explodieren" #. TRANSLATORS: The second %s (after "by ") is the level's author's name #: src/cuyo.cpp:327 #, c-format msgid "" "Score: %d\n" "\n" "Level %d\n" "%s\n" "by %s\n" "\n" "%s\n" "%s\n" "%s\n" "\n" "Space = Start" msgstr "" "Punkte: %d\n" "\n" "Level %d\n" "%s\n" "von %s\n" "\n" "%s\n" "%s\n" "%s\n" "\n" "Leertaste = Starten" #: src/cuyo.cpp:335 msgid "Chain reaction necessary\n" msgstr "Kettenreaktion erforderlich\n" #: src/cuyo.cpp:535 #, c-format msgid "" "Game over\n" "\n" "Score: %d\n" "\n" msgstr "" "Verloren\n" "\n" "Punkte: %d\n" "\n" #: src/cuyo.cpp:554 #, c-format msgid "" "Level %s complete!\n" "\n" "Time Bonus: %d\n" "Score: %d\n" "\n" "%s" msgstr "" "Level %s geschafft!\n" "\n" "Zeitbonus: %d\n" "Punkte: %d\n" "\n" "%s" #: src/cuyo.cpp:576 msgid "Space = Continue" msgstr "Leertaste = Weiter" #: src/cuyo.cpp:647 #, c-format msgid "" "***\n" "You won even a bit more!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" "***\n" "Du hast strker gewonnen!!!\n" "\n" "Score: %d\n" "***\n" "\n" #: src/cuyo.cpp:648 #, c-format msgid "" "***\n" "You won!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" "***\n" "Du hast gewonnen!!!\n" "\n" "Punkte: %d\n" "***\n" "\n" #. TRANSLATORS: This indicates an unknown value #: src/leveldaten.cpp:682 msgid "???" msgstr "???" #. TRANSLATORS: "cuyo" is a program's name, #. "-f", "-g", and "-h" are options' names, #. "ld" is a file suffix. None of these should be translated. #: src/main.cpp:51 msgid "" "usage: cuyo [-g x] [-h] [-f] [ld-file]\n" " -g x set window size\n" " -f fullscreen mode\n" " -h print this help message\n" "(More options are documented in the man page.)\n" msgstr "" "Verwendung: cuyo [-g x] [-h] [-f] [ld-Datei]\n" " -g x Fenstergre bestimmen\n" " -f Vollbildmodus\n" " -h Diese Hilfe ausgeben\n" "(Mehr Optionen stehen in der man-Seite)\n" #: src/main.cpp:90 #, c-format msgid "Argument to -%c missing\n" msgstr "Argument zu -%c fehlt\n" #: src/main.cpp:100 #, c-format msgid "Unknown option '%c'\n" msgstr "Unbekannte Option '%c'\n" #: src/main.cpp:197 msgid "Could not parse option -g\n" msgstr "Konnte Option -g nicht verstehen\n" #: src/main.cpp:223 #, c-format msgid "%s: Too many arguments\n" msgstr "%s: Zu viele Argumente\n" #. TRANSLATORS: "Done" is a menu entry for quitting a submenu. #: src/menueintrag.cpp:449 msgid "Done" msgstr "Fertig" #: src/menueintrag.cpp:572 msgid "Press `return' or click for a full list" msgstr "Fr eine vollstndige Liste drcke `Eingabe' oder klicke" #: src/menueintrag.cpp:820 msgid "Type a new key" msgstr "Tippe eine neue Taste" #: src/menueintrag.cpp:821 msgid "To enter a new key, click or press `return' first" msgstr "Um eine neue Taste einzugeben, klicke oder drcke `Eingabe'" #: src/menueintrag.cpp:914 msgid "On" msgstr "An" #: src/menueintrag.cpp:914 msgid "Off" msgstr "Aus" #. TRANSLATORS: "cuyo" is the program's name #: src/sdltools.cpp:310 msgid "Cuyo - debug mode" msgstr "Cuyo - Fehlersuchmodus" #. TRANSLATORS: This is a window title #: src/sdltools.cpp:315 #, c-format msgid "Cuyo - level %s" msgstr "Cuyo - Level %s" #: src/spielfeld.cpp:211 msgid "" "Game paused\n" "\n" "Space = Resume\n" "Esc = Abort Game\n" "\n" msgstr "" "Spiel pausiert\n" "\n" "Leertaste = Weiter\n" "Esc = Abbruch\n" "\n" #. TRANSLATORS: Name of a level track #: src/version.cpp:33 msgid "Standard" msgstr "Standard" #. TRANSLATORS: Name of a level track #: src/version.cpp:35 msgid "All levels" msgstr "Alle Level" #. TRANSLATORS: Name of a level track #: src/version.cpp:37 msgid "Games" msgstr "Spiele" #. TRANSLATORS: Name of a level track #: src/version.cpp:39 msgid "Extremes" msgstr "Extreme" #. TRANSLATORS: Name of a level track #: src/version.cpp:41 msgid "No FX" msgstr "Keine Spezialeffekte" #. TRANSLATORS: Name of a level track #: src/version.cpp:43 msgid "Weird" msgstr "Seltsam" #. TRANSLATORS: Name of a level track #: src/version.cpp:45 msgid "Contributions" msgstr "Zutrge" #: src/version.cpp:47 msgid "A selection of levels for the common taste" msgstr "Eine Levelauswahl fr den gewhnlichen Geschmack" #: src/version.cpp:48 msgid "All official levels" msgstr "Alle offiziellen Level" #: src/version.cpp:49 msgid "Levels simulating board games or other computer games" msgstr "Level, die Brett- oder Computerspiele simulieren" #: src/version.cpp:50 msgid "Levels setting records such as `fastest dropping ceiling'" msgstr "Level, die Rekorde wie ,,schnellst fallende Decke'' aufstellen" #: src/version.cpp:51 msgid "Plain levels without any disturbing tweaks to the rules" msgstr "Schlichte Level ohne irritierende Sonderregeln" #: src/version.cpp:52 msgid "Levels interpreting the general theme of cuyo more broadly" msgstr "Level, die cuyo etwas freier interpretieren" #: src/version.cpp:53 msgid "Levels donated and maintained by the community" msgstr "Level, die Benutzern beigesteuert haben und pflegen" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:63 msgid "Easy" msgstr "Leicht" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:65 msgid "Normal" msgstr "Normal" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:67 msgid "Hard" msgstr "Schwer" #. TRANSLATORS: level name #: data/3d.ld:28 msgid "3D" msgstr "3D" #. TRANSLATORS: level author #: data/3d.ld:29 data/ascii.ld:27 data/baelle.ld:28 data/doors.ld:29 #: data/ebene.ld:28 data/hecken.ld:25 data/hexkugeln.ld:29 data/hormone.ld:28 #: data/nasenkugeln.ld:33 data/pfeile.ld:31 data/schach.ld:33 #: data/theater.ld:40 data/tiere.ld:29 data/viecher.ld:33 data/wachsen.ld:26 #: data/walls.ld:29 data/wuerfel.ld:28 msgid "Immi" msgstr "Immi" #. TRANSLATORS: level description #: data/3d.ld:30 msgid "Well, just a little bit 3D." msgstr "Naja, nur ein klein wenig 3D." #. TRANSLATORS: level name #: data/aehnlich.ld:21 msgid "Similar balls" msgstr "hnliche Kugeln" #. TRANSLATORS: level description #: data/aehnlich.ld:22 msgid "Numerically equal colours connect" msgstr "Numerisch gleiche Farben verbinden sich" #. TRANSLATORS: level author #: data/aehnlich.ld:23 data/angst.ld:27 data/augen.ld:24 data/baender.ld:23 #: data/bonimali.ld:23 data/bunt.ld:23 data/dungeon.ld:36 data/farming.ld:25 #: data/fische.ld:22 data/flechtwerk.ld:21 data/go2.ld:29 data/gold.ld:23 #: data/jump.ld:26 data/kacheln4.ld:24 data/kacheln5.ld:26 data/kacheln6.ld:24 #: data/kachelnR.ld:30 data/kolben.ld:24 data/maennchen.ld:22 data/maze.ld:24 #: data/novips.ld:23 data/octopi.ld:24 data/puzzle.ld:24 data/rechnen.ld:22 #: data/rollenspiel.ld:22 data/schemen.ld:23 data/secret.ld:21 #: data/silbergold.ld:22 data/slime.ld:25 data/tennis.ld:22 data/trees.ld:25 #: data/unmoeglich.ld:22 data/zahn.ld:23 data/ziehlen.ld:22 msgid "Mark Weyer" msgstr "Mark Weyer" #. TRANSLATORS: level name #: data/aliens.ld:36 msgid "Aliens" msgstr "Aliens" #. TRANSLATORS: level author #: data/aliens.ld:37 data/antarctic.ld:55 data/bonus.ld:29 #: data/colorshape.ld:35 data/disco.ld:35 data/letters.ld:36 data/memory.ld:50 #: data/tetris.ld:42 msgid "Berni" msgstr "Berni" #: data/aliens.ld:203 msgid "Hurry up!!!" msgstr "Schnell!!!" #. TRANSLATORS: level name #: data/angst.ld:24 msgid "Balls at ease" msgstr "Glckliche Kugeln" #. TRANSLATORS: level name #: data/angst.ld:25 msgid "Frightened balls" msgstr "ngstliche Kugeln" #. TRANSLATORS: level name #: data/angst.ld:26 msgid "Angry balls" msgstr "Wtende Kugeln" #. TRANSLATORS: level description #: data/angst.ld:28 msgid "These balls are oblivious to the rules of cuyo" msgstr "Diese Kugeln haben keine Ahnung von den Spielregeln." #. TRANSLATORS: level description #: data/angst.ld:29 msgid "These balls are learning the rules of cuyo" msgstr "Diese Kugeln lernen gerade die Spielregeln." #. TRANSLATORS: level description #: data/angst.ld:30 msgid "These balls have learned the rules of cuyo" msgstr "Diese Kugeln kennen die Spielregeln." #: data/angst.ld:43 msgid "Also try this level in normal and hard difficulty" msgstr "Spiel diesen Level auch im Schwierigkeitsgrad Normal und Schwer" #: data/angst.ld:44 msgid "Also try this level in easy and hard difficulty" msgstr "Spiel diesen Level auch im Schwierigkeitsgrad Leicht und Schwer" #: data/angst.ld:45 msgid "Also try this level in easy and normal difficulty" msgstr "Spiel diesen Level auch im Schwierigkeitsgrad Leicht und Normal" #: data/angst.ld:51 msgid "Commercial break" msgstr "Werbepause" #. TRANSLATORS: level name #: data/antarctic.ld:53 msgid "Antarctic" msgstr "Antarktis" #. TRANSLATORS: level description #: data/antarctic.ld:54 msgid "Beware of freezing!" msgstr "Achtung, Gefriergefahr!" #. TRANSLATORS: level name #: data/ascii.ld:26 msgid "ASCII" msgstr "ASCII" #. TRANSLATORS: "basic" is a pun on the programming language BASIC. #. TRANSLATORS: level description #: data/ascii.ld:40 msgid "A very basic level" msgstr "Damals, als noch in Basic programmiert wurde..." #. TRANSLATORS: level name #: data/augen.ld:23 msgid "Eyes" msgstr "Augen" #. TRANSLATORS: level description #: data/augen.ld:25 msgid "" "They are watching you.\n" "Get rid of them." msgstr "" "Sie beobachten Dich.\n" "Werd sie los." #. TRANSLATORS: level name #: data/baelle.ld:27 msgid "Rotating Balls" msgstr "Rotierende Blle" #. TRANSLATORS: level description #: data/baelle.ld:42 msgid "Well, all balls look the same, don't they?" msgstr "Eigentlich sind ja alle Blle gleich, aaber..." #. TRANSLATORS: level name #: data/baender.ld:22 msgid "Ribbons" msgstr "Bnder" #. TRANSLATORS: level description #: data/baender.ld:24 msgid "Ribbons connect diagonally." msgstr "Bnder verbinden sich diagonal." #. TRANSLATORS: level name #: data/baggis.ld:32 msgid "Baggis" msgstr "Baggis" #. TRANSLATORS: level author #: data/baggis.ld:33 data/pacman.ld:31 msgid "Simon" msgstr "Simon" #. TRANSLATORS: level description #: data/baggis.ld:47 msgid "Protect yourself from the flash!" msgstr "Schtze Dich vor dem Blitz!" #. TRANSLATORS: level name #: data/bonimali.ld:22 msgid "PowerUps and -Downs" msgstr "Boni und Mali" #. TRANSLATORS: level description #: data/bonimali.ld:24 msgid "Collect PowerUps but avoid the bad ones" msgstr "Sammle Boni und vermeide Mali" #. TRANSLATORS: level description #: data/bonimali.ld:25 msgid "Collect PowerUps and hand the bad ones to the other player" msgstr "Sammle Boni und bescher dem anderen Spieler Mali" #. TRANSLATORS: level description #: data/bonimali.ld:26 msgid "" "Collect PowerUps and hand the bad ones to your " "opponent^H^H^H^H^H^H^H^Hpartner" msgstr "Sammle Boni und bescher Deinem Gegner^H^H^H^H^H^HPartner Mali" #: data/bonimali.ld:122 data/bonimali.ld:232 msgid "3 blops explode" msgstr "3 Blops explodieren" #: data/bonimali.ld:230 msgid "4 blops explode" msgstr "4 Blops explodieren" #: data/bonimali.ld:231 msgid "2 blops explode" msgstr "2 Blops explodieren" #: data/bonimali.ld:269 msgid "Chain reaction necessary" msgstr "Kettenreaktion erforderlich" #: data/bonimali.ld:271 msgid "Chain reaction not necessary" msgstr "Kettenreaktion nicht erforderlich" #: data/bonimali.ld:831 msgid "Extra points" msgstr "Extrapunkte" #: data/bonimali.ld:834 msgid "Power missiles" msgstr "Raketen" #: data/bonimali.ld:835 msgid "Extra ships" msgstr "Neue Schiffe" #. TRANSLATORS: level name #: data/bonus.ld:28 msgid "Bonus" msgstr "Bonus" #. TRANSLATORS: level description #: data/bonus.ld:40 msgid "Hurry up, get bonus points!" msgstr "Schnell, Bonuspunkte bekommen!" #. TRANSLATORS: level name #: data/bunt.ld:22 msgid "Gaudy balls" msgstr "Bunte Kugeln" #. TRANSLATORS: level name #: data/colorshape.ld:34 msgid "Shape and Color" msgstr "Form und Farbe" #. TRANSLATORS: level description #: data/colorshape.ld:36 msgid "An explosion changes the way, they connect..." msgstr "Explosionen wechseln die Art des Verbindens..." #. TRANSLATORS: level name #: data/darken.ld:26 msgid "Darken" msgstr "Verdunkelung" #. TRANSLATORS: level author #: data/darken.ld:27 data/elemente.ld:26 data/explosive.ld:24 #: data/paratroopers.ld:29 data/pressure.ld:27 data/reversi_brl.ld:23 #: data/rohre.ld:29 data/wohnungen.ld:27 msgid "brl" msgstr "brl" #. TRANSLATORS: level description #: data/darken.ld:28 msgid "The less you know..." msgstr "Je weniger Du weit..." #. TRANSLATORS: level name #: data/disco.ld:34 msgid "Disco" msgstr "Disko" #. TRANSLATORS: level description #: data/disco.ld:36 msgid "Get rid of the strobos!" msgstr "Werde die Strobos los!" #. TRANSLATORS: level name #: data/doors.ld:28 msgid "Doors" msgstr "Tren" #. TRANSLATORS: level description #: data/doors.ld:30 msgid "It was late and I was tired" msgstr "Es war spt und ich war mde" #. TRANSLATORS: level name #: data/dungeon.ld:35 msgid "Treasure hunt" msgstr "Schatzsuche" #. TRANSLATORS: level description #: data/dungeon.ld:37 msgid "Collect gold for extra points" msgstr "Gold sammeln gibt Punkte" #. TRANSLATORS: level name #: data/ebene.ld:27 msgid "Plane" msgstr "Ebene" #. TRANSLATORS: level name #: data/elemente.ld:25 msgid "Elements" msgstr "Elemente" #. TRANSLATORS: level name #: data/embroidery.ld:27 msgid "Embroidery" msgstr "Stickerei" #. TRANSLATORS: level author #: data/embroidery.ld:28 data/himmel.ld:32 data/jahreszeiten.ld:35 msgid "Jela" msgstr "Jela" #. TRANSLATORS: level description #: data/embroidery.ld:43 msgid "Do you like doing some Needlework?" msgstr "Lust auf einen Handarbeitsabend?" #. TRANSLATORS: level name #: data/explosive.ld:23 msgid "Explosive" msgstr "Explosiv" #. TRANSLATORS: level name #: data/farming.ld:24 msgid "Farming" msgstr "Landwirtschaft" #. TRANSLATORS: level description #: data/farming.ld:26 msgid "" "Almost each level has its very own graphics.\n" "At least this level has exactly the same rules as the previous one." msgstr "" "Fast jeder Level hat seine ganz eigene Graphik.\n" "Wenigstens hat dieser genau die gleichen Spielregeln wie der vorige." #. TRANSLATORS: level name #: data/fische.ld:21 msgid "Fish" msgstr "Fische" #. TRANSLATORS: level name #: data/flechtwerk.ld:20 msgid "Wickerwork" msgstr "Flechtwerk" #. TRANSLATORS: level name #: data/fractals.ld:26 msgid "Fractals" msgstr "Fraktale" #. TRANSLATORS: level author #: data/fractals.ld:27 msgid "Austin W." msgstr "Austin W." #. TRANSLATORS: level description #: data/fractals.ld:28 msgid "Three explode if in each aspect they are all the same or all different." msgstr "" "Drei explodieren, wenn sie in jeder Hinsicht alle gleich oder alle " "verschieden sind." #. TRANSLATORS: level name #: data/go2.ld:28 msgid "Go" msgstr "Go" #. TRANSLATORS: level description #: data/go2.ld:30 msgid "Why to place your goban horizontally" msgstr "Warum man den Goban nicht hochkant verwendet" #. TRANSLATORS: level name #: data/gold.ld:22 msgid "Gold" msgstr "Gold" #. TRANSLATORS: level description #: data/gold.ld:24 msgid "Yes, it CAN be completed" msgstr "Ja, es ist mglich" #. TRANSLATORS: level description #: data/gold.ld:25 msgid "" "Yes, it CAN be completed\n" "...cooperatively" msgstr "" "Ja, es ist mglich\n" "...wenn man zusammenarbeitet" #. TRANSLATORS: level name #: data/hecken.ld:24 msgid "Gardens" msgstr "Grten" #. TRANSLATORS: level description #: data/hecken.ld:37 msgid "" "Gardens need hedges for separation. The hedges do not count for the size of " "a garden, though." msgstr "" "Grten brauchen Hecken zum Abgrenzen. Fr die Gre eines Gartens zhlen die " "Hecken aber nicht mit." #. TRANSLATORS: level name #: data/hexkugeln.ld:28 msgid "Balls & Rods" msgstr "Kugeln und Stangen" #. TRANSLATORS: level description #: data/hexkugeln.ld:48 msgid "Most dense packing of spheres" msgstr "Dichteste Kugelpackung" #. TRANSLATORS: level name #: data/himmel.ld:31 msgid "Sky" msgstr "Himmel" #. TRANSLATORS: level description #: data/himmel.ld:50 msgid "In which direction do balloons fall?" msgstr "In welche Richtung fallen Luftballons?" #. TRANSLATORS: level name #: data/hormone.ld:27 msgid "Hormones" msgstr "Hormone" #. TRANSLATORS: level description #: data/hormone.ld:42 msgid "When do the \"hormones\" connect?" msgstr "Wann verbinden sich die \"Hormone\"?" #. TRANSLATORS: level name #: data/jahreszeiten.ld:34 msgid "The four Seasons" msgstr "Die vier Jahreszeiten" #. TRANSLATORS: level description #: data/jahreszeiten.ld:47 msgid "Everything changes..." msgstr "Alles wandelt sich..." #. TRANSLATORS: "Jump" is as in the computer game genre jump-and-run, only #. without the run #. TRANSLATORS: level name #: data/jump.ld:25 msgid "Jump" msgstr "Jump" #. TRANSLATORS: "8 bit" refers to an era of computer games #. TRANSLATORS: level description #: data/jump.ld:28 msgid "8 bit nostalgia" msgstr "8Bit-Nostalgie" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln4.ld:23 msgid "Tiling II" msgstr "Parkettierung II" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln5.ld:25 msgid "Tiling III" msgstr "Parkettierung III" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln6.ld:23 msgid "Tiling I" msgstr "Parkettierung I" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kachelnR.ld:27 msgid "Tiling IV" msgstr "Parkettierung IV" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level description #: data/kachelnR.ld:29 msgid "Random aperiodic tiling" msgstr "Eine aperiodische Parkettierung" #. TRANSLATORS: level name #: data/kolben.ld:22 msgid "Flasks" msgstr "Kolben" #. TRANSLATORS: level description #: data/kolben.ld:23 msgid "It depends on the gas they are filled with..." msgstr "Es kommt auf das Gas an, mit dem sie gefllt sind..." #. TRANSLATORS: level name #: data/kunst.ld:34 msgid "Modern Art" msgstr "Moderne Kunst" #. TRANSLATORS: level author #: data/kunst.ld:35 data/unterwasser.ld:33 msgid "Berni & Immi" msgstr "Berni & Immi" #. TRANSLATORS: level description #: data/kunst.ld:47 msgid "Beware of ink!" msgstr "Vorsicht Tinte!" #. TRANSLATORS: level name #: data/labskaus.ld:66 msgid "Potpourri" msgstr "Labskaus" #. TRANSLATORS: level author #: data/labskaus.ld:67 msgid "Mark Weyer (editor)" msgstr "Mark Weyer (Hrsg.)" #. TRANSLATORS: level description #: data/labskaus.ld:68 msgid "Made of 100% recycled graphics" msgstr "Das ist alles nur gek(l)aut" #. TRANSLATORS: level name #: data/letters.ld:35 msgid "Letters" msgstr "Buchstaben" #. TRANSLATORS: level description #: data/letters.ld:37 msgid "Try to find out, which letters do connect!" msgstr "Finde heraus, welche Buchstaben sich verbinden!" #: data/letters.ld:84 data/letters.ld:103 msgid "" "You have found\n" "the name of the game:\n" "*** CUYO ***\n" "100 Bonus Points" msgstr "" "Du hast den Namen\n" "des Spiels gefunden:\n" "*** CUYO ***\n" "100 Bonuspunkte" #: data/letters.ld:132 data/letters.ld:151 msgid "" "You have found\n" "the name of the\n" "programmer of Cuyo:\n" "*** IMMI ***\n" "200 Bonus Points" msgstr "" "Du hast den Namen des\n" "Autors von Cuyo gefunden:\n" "*** IMMI ***\n" "200 Bonuspunkte" #: data/letters.ld:183 data/letters.ld:205 msgid "" "You have found\n" "the name of the\n" "programmer of this Level:\n" "*** BERNI ***\n" "2000 Bonus Points" msgstr "" "Du hast den Namen des\n" "Autors dieses Levels gefunden:\n" "*** BERNI ***\n" "2000 Bonuspunkte" #. TRANSLATORS: level name #: data/maennchen.ld:21 msgid "Characters" msgstr "Mnnchen" #. TRANSLATORS: level name #: data/maze.ld:22 msgid "Maze" msgstr "Irrgarten" #. TRANSLATORS: level description #: data/maze.ld:23 msgid "Collect all treasures. Finding the exit is optional." msgstr "Sammle alle Schtze. Ausgang finden optional." #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level name #: data/memory.ld:49 msgid "Memory" msgstr "Memory" #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level description #: data/memory.ld:64 msgid "Well, memory." msgstr "Memory halt" #. TRANSLATORS: level name #: data/mfs.ld:27 msgid "mfs" msgstr "Mathefachschaft" #. TRANSLATORS: level author #: data/mfs.ld:28 msgid "Konrad" msgstr "Konrad" #. TRANSLATORS: level description #: data/mfs.ld:44 msgid "Who cleans the room?" msgstr "Wer soll das alles putzen?" #. TRANSLATORS: level name #: data/nasenkugeln.ld:32 msgid "Noseballs" msgstr "Nasenkugeln" #. TRANSLATORS: level description #: data/nasenkugeln.ld:44 msgid "" "Put four balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" "Bringe vier Kugeln zusammen; dann explodieren sie. Versuche, das Gras mit " "wegzusprengen." #. TRANSLATORS: level description #: data/nasenkugeln.ld:45 msgid "" "Put six balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" "Bringe sechs Kugeln zusammen; dann explodieren sie. Versuche, das Gras mit " "wegzusprengen." #. TRANSLATORS: "equal" here is in the egalitarian sense #. TRANSLATORS: level name #: data/novips.ld:21 msgid "All colours are equal" msgstr "Alle Farben sind gleich" #. TRANSLATORS: level description #: data/novips.ld:22 msgid "Get rid of everything" msgstr "Alles mu weg" #. TRANSLATORS: level name #: data/octopi.ld:23 msgid "Octopi" msgstr "Octopi" #. TRANSLATORS: level description #: data/octopi.ld:25 msgid "" "Octopi connect in eight directions. They also remove the anemones that way." msgstr "" "Octopi verbinden sich in acht Richtungen. So sprengen sie auch die Anemonen." #. TRANSLATORS: level name #: data/pacman.ld:30 msgid "Pacman" msgstr "Pacman" #. TRANSLATORS: level description #: data/pacman.ld:45 msgid "Wanna play Pacman?" msgstr "Eine Partie Pacman gefllig?" #. TRANSLATORS: Apparently, "Paratroopers" is the name of a computer game. #. TRANSLATORS: level name #: data/paratroopers.ld:27 msgid "Paratroopers" msgstr "Paratroopers" #. TRANSLATORS: level description #: data/paratroopers.ld:28 msgid "the other way around" msgstr "einmal andersherum" #. TRANSLATORS: level name #: data/pfeile.ld:30 msgid "Arrows" msgstr "Pfeile" #. TRANSLATORS: level description #: data/pfeile.ld:46 msgid "Arrows can be turned" msgstr "Pfeile kann man drehen..." #. TRANSLATORS: level name #: data/pressure.ld:26 msgid "Excess Pressure" msgstr "berdruck" #. TRANSLATORS: level name #: data/puzzle.ld:23 msgid "Jigsaw" msgstr "Puzzle" #. TRANSLATORS: level description #: data/puzzle.ld:25 msgid "Get rid of the border" msgstr "Werde die Randteile los" #. TRANSLATORS: level name #: data/rechnen.ld:21 msgid "Calculations" msgstr "Rechnen" #. TRANSLATORS: level name #: data/reversi_brl.ld:22 msgid "Reversi" msgstr "Reversi" #. TRANSLATORS: level name #: data/rohre.ld:28 msgid "Heating" msgstr "Rohre" #. TRANSLATORS: level name #: data/rollenspiel.ld:21 msgid "Fantasy role playing" msgstr "Fantasy-Rollenspiel" #. TRANSLATORS: level name #: data/schach.ld:32 msgid "Chess" msgstr "Schach" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:226 msgid "" "King confused.\n" "Castling both sides\n" "300 Bonus Points" msgstr "" "Knig ist verwirrt.\n" "Beidseitige Rochade\n" "300 Bonuspunkte" #. TRANSLATORS: "Queen" and "Castling" are chess terms. #: data/schach.ld:232 msgid "" "Castling queen's side\n" "150 Bonus Points" msgstr "" "Lange Rochade\n" "150 Bonuspunkte" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:238 msgid "" "Castling king's side\n" "100 Bonus Points" msgstr "" "Kurze Rochade\n" "150 Bonuspunkte" #. TRANSLATORS: level name #: data/schemen.ld:22 msgid "Silhouettes" msgstr "Schemen" #. TRANSLATORS: level name #: data/secret.ld:20 msgid " " msgstr " " #. TRANSLATORS: level description #: data/secret.ld:22 msgid "Congratulations, you found the secret level" msgstr "Glckwunsch, Du hast den Geheimlevel gefunden" #. TRANSLATORS: level name #: data/silbergold.ld:21 msgid "Silver and Gold" msgstr "Silber und Gold" #. TRANSLATORS: level name #: data/slime.ld:24 msgid "Slime" msgstr "Schleim" #. TRANSLATORS: level name #: data/springer.ld:31 msgid "Knights" msgstr "Springer" #. TRANSLATORS: level author #: data/springer.ld:32 msgid "brl & Immi" msgstr "brl & Immi" #. TRANSLATORS: "Knight" and "Pawn" refer to the chess pieces #. TRANSLATORS: level description #: data/springer.ld:34 msgid "Knights connect via knight moves. Pawns don't connect at all." msgstr "" "Die Springer verbinden sich per Rsselsprung. Die Bauern verbinden sich gar " "nicht." #. TRANSLATORS: level name #: data/tennis.ld:21 msgid "Tennis" msgstr "Tennis" #. TRANSLATORS: level description #: data/tennis.ld:23 msgid "Don't be confused by extra balls." msgstr "Manche Blle sind nur zur Verwirrung." #. TRANSLATORS: level name #: data/tetris.ld:41 msgid "Tetris" msgstr "Tetris" #. TRANSLATORS: level description #: data/tetris.ld:43 msgid "Complete lines will disappear." msgstr "Vollstndige Linien verschwinden." #. TRANSLATORS: level name #: data/theater.ld:39 msgid "Theater" msgstr "Theater" #. TRANSLATORS: level description #: data/theater.ld:71 msgid "Please keep quiet. Otherwise you will be blasted." msgstr "Bitte seien Sie leise. Sonst werden Sie gesprengt." #. TRANSLATORS: level name #: data/tiere.ld:28 msgid "Tiling Animals" msgstr "Tierkacheln" #. TRANSLATORS: level name #: data/trees.ld:21 msgid "Holes" msgstr "Lcher" #. TRANSLATORS: "singly connected", or simply connected is a term from #. mathematics, more specifically topology #. TRANSLATORS: level name #: data/trees.ld:24 msgid "Singly connected" msgstr "Einfach zusammenhngend" #. TRANSLATORS: level description #: data/trees.ld:26 msgid "Groups with holes explode." msgstr "Gruppen mit Lchern explodieren." #. TRANSLATORS: "complex", "nonpositive" and "Euler characteristic" are terms #. from mathematics. "Complex" is here used in the sense of simplicial #. complexes or CW complexes. #. TRANSLATORS: level description #: data/trees.ld:30 msgid "Complexes with nonpositive Euler characteristic explode." msgstr "Komplexe mit nichtpositiver Eulercharakteristik explodieren." #: data/trees.ld:51 msgid "Multiple holes" msgstr "Mehrere Lcher" #. TRANSLATORS: level name #: data/unmoeglich.ld:21 msgid "impossible" msgstr "unmglich" #. TRANSLATORS: level name #: data/unterwasser.ld:32 msgid "Under Water" msgstr "Unter Wasser" #. TRANSLATORS: level description #: data/unterwasser.ld:48 msgid "Bubbles (Level still under construction.)" msgstr "Blub blub blub (Level befindet sich noch im Aufbau.)" #. TRANSLATORS: level name #: data/viecher.ld:32 msgid "Beasts" msgstr "Viecher" #. TRANSLATORS: level description #: data/viecher.ld:46 msgid "Warning! Fire hazard!" msgstr "Vorsicht! Brandgefahr!" #. TRANSLATORS: level name #: data/wachsen.ld:25 msgid "Growing" msgstr "Wachsen" #. TRANSLATORS: level name #: data/walls.ld:28 msgid "Walls" msgstr "Wnde" #. TRANSLATORS: level description #: data/walls.ld:30 msgid "Floors don't connect through walls." msgstr "Der Fuboden verbindet sich nicht durch Wnde hindurch." #. TRANSLATORS: level description #: data/wohnungen.ld:25 msgid "Build a nicer neighborhood" msgstr "Verschnert Eure Nachbarschaft" #. TRANSLATORS: level name #: data/wohnungen.ld:26 msgid "Housing" msgstr "Wohnungen" #. TRANSLATORS: level name #: data/wuerfel.ld:27 msgid "Cubes" msgstr "Wrfel" #. TRANSLATORS: level description #: data/wuerfel.ld:42 msgid "Will they land in front of or behind the others?" msgstr "Werden sie vor oder hinter den anderen landen?" #. TRANSLATORS: level name #: data/xtradick.ld:59 msgid "Extra fat toys" msgstr "Extra dickes Spielzeug" #. TRANSLATORS: level author #: data/xtradick.ld:60 msgid "Berni/Jela" msgstr "Berni/Jela" #. TRANSLATORS: level description #: data/xtradick.ld:61 msgid "What do they do?" msgstr "Was machen die da?" #. TRANSLATORS: level name #: data/zahn.ld:22 msgid "Teeth" msgstr "Zhne" #. TRANSLATORS: level name #: data/ziehlen.ld:21 msgid "Target practice" msgstr "Zielbung" #~ msgid "Internal error during parsing of options" #~ msgstr "Interner Fehler beim Bearbeiten der Optionen" #~ msgid "Error: %s\n" #~ msgstr "Fehler: %s\n" #~ msgid "Unknown error during file inclusion!\n" #~ msgstr "Unbekannter Fehler beim Einbinden einer Datei!\n" #~ msgid "%s not a number" #~ msgstr "%s ist keine Zahl" #~ msgid "Procedure names can't be single letters." #~ msgstr "Prozedurnamen drfen keine einzelnen Buchstaben sein." #~ msgid "Variable names can't be single letters." #~ msgstr "Variablennamen drfen keine einzelnen Buchstaben sein." #~ msgid "Please specify \"else ->\" or \"else =>\"" #~ msgstr "Bitte geben Sie \"else ->\" oder \"else =>\" an" #~ msgid "%s is a constant. (Variable expected.)" #~ msgstr "%s ist eine Konstante. (Variable erwartet.)" #~ msgid "There have been errors parsing the level description files." #~ msgstr "Es gab Fehler beim Lesen der Levelbeschreibungsdateien." #~ msgid "Unknown escape sequence" #~ msgstr "Unbekannte Escape-Sequenz" #~ msgid "Wrong character '%s'" #~ msgstr "Falsches Zeich '%s'" #~ msgid "Stopped replay, because it requires level %s.\n" #~ msgstr "Wiederholung angehalten. da Level %s Voraussetzung ist.\n" #~ msgid "Stopped replay, because it requires %d players.\n" #~ msgstr "Wiederholung angehalten, da %d Spieler Voraussetzung sind.\n" #~ msgid "Stopped replay, because it seems to be broken.\n" #~ msgstr "Wiederholung angehalten, da sie kaputt zu sein scheint.\n" #~ msgid "Stopped replay, because a key was pressed.\n" #~ msgstr "Wiederholung angehalten, da eine Taste gedrckt wurde.\n" #~ msgid "End of replay.\n" #~ msgstr "Ende der Wiederholung.\n" #~ msgid "Could not open log file \"%s\" for reading." #~ msgstr "Konnte Log-Datei \"%s\" nicht zum Lesen ffnen." #~ msgid "Parse Error at the beginning of the log file \"%s\"." #~ msgstr "Grammatikfehler am Anfang der Log-Datei \"%s\"." #~ msgid "Warning: log file version is %s while cuyo version is %s\n" #~ msgstr "" #~ "Warnung: Version der Log Datei ist %s aber Version von cuyo ist %s\n" #~ msgid "Could not open log file \"%s\" for writing." #~ msgstr "Konnte Log-Datei \"%s\" nicht zum Schreiben ffnen." #~ msgid "Image '%s' too small for Icon %d" #~ msgstr "Bild '%s' ist zu klein fr Teilbild %d" #~ msgid "" #~ "* Warning: Some part of '%s' is drawn with coordinates which are\n" #~ "* not divisible by 4. This may cause graphic glitches in downscaled " #~ "mode.\n" #~ msgstr "" #~ "* Warnung: Manche Teile von '%s' werden mit Koordinaten gemalt,\n" #~ "* die nicht durch 4 teilbar sind. Im herunterskalierten Modus knnte das\n" #~ "* Graphikprobleme verursachen.\n" #~ msgid "Internal error: Too many pictures drawn for one single blob" #~ msgstr "Interner Fehler: Zu viele Bilder fr einen einzelnen Blob gemalt" #~ msgid "Position pos=%d out of range (allowed for file=%d: 0 - %d)" #~ msgstr "Position pos=%d unzulssig (fr file=%d erlaubt: 0 - %d)" #~ msgid "Quarter qu=%d out of range (allowed: %d - %d)" #~ msgstr "Viertel qu=%d unzulssig (erlaubt: %d - %d)" #~ msgid "" #~ "In kind %s, file %d:\n" #~ "%s" #~ msgstr "" #~ "In Sorte %s, Datei %d:\n" #~ "%s" #~ msgid "Internal error in const BlopBesitzer::getFeld()" #~ msgstr "Interner Fehler in const BlopBesitzer::getFeld()" #~ msgid "Internal error in BlopBesitzer::getFeld()" #~ msgstr "Interner Fehler in BlopBesitzer::getFeld()" #~ msgid "" #~ "%s, during drawing:\n" #~ "%s" #~ msgstr "" #~ "%s, beim Malen:\n" #~ "%s" #~ msgid "" #~ "%s, during animation:\n" #~ "%s" #~ msgstr "" #~ "%s, beim Animieren:\n" #~ "%s" #~ msgid "" #~ "%s, during %s event:\n" #~ "%s" #~ msgstr "" #~ "%s, beim Ereignis %s:\n" #~ "%s" #~ msgid "Empty Blops are not allowed to explode." #~ msgstr "Leere Blops drfen nicht explodieren." #~ msgid "Blop %s at %s" #~ msgstr "Blop %s bei %s" #~ msgid "bonus() does not work in the global blob." #~ msgstr "bonus() funktioniert nicht im globalen Blob." #~ msgid "message() does not work in the global blob." #~ msgstr "message() funktioniert nicht im globalen Blob." #~ msgid "Internal error in Blop::getSpezConst(): Wrong AbsOrtArt %d" #~ msgstr "Interner Fehler in Blop::getSpezConst(): Falsche AbsOrtArt %d" #~ msgid "The variable \"%s\" is read-only." #~ msgstr "Die Variable \"%s\" ist nur zum Lesen da." #~ msgid "Internal error in Blop::setVariable() (op = %d)" #~ msgstr "Interner Fehler in Blop::setVariable() (op = %d)" #~ msgid "Value %d for kind out of range (allowed: %d - %d)" #~ msgstr "Wert %d fr kind unzulssig (erlaubt: %d - %d)" #~ msgid "Drawing is not allowed at the moment." #~ msgstr "Malen ist momentan nicht erlaubt." #~ msgid "" #~ "%s: Internal error in Code::getStapelHoehe(): Call illegal for CodeArt %d" #~ msgstr "" #~ "%s: Interner Fehler in Code::getStapelHoehe(): Aufruf fr CodeArt %d " #~ "nicht erlaubt" #~ msgid "%s: Internal error in Code::getStapelHoehe(): Unknown CodeArt %d" #~ msgstr "" #~ "%s: Interner Fehler in Code::getStapelHoehe(): Unbekannte CodeArt %d" #~ msgid "Division by zero" #~ msgstr "Division durch null" #~ msgid "Modulo zero" #~ msgstr "Modulo null" #~ msgid "Warning: Can't use 'explode' in falling blob.\n" #~ msgstr "Warnung: 'explode' kann im fallenden Blob nicht verwendet werden.\n" #~ msgid "Probability x:0 in the animation program" #~ msgstr "Wahrscheinlichkeit x:0 im Animationsprogramm" #~ msgid "rnd(<=0) in the animation program" #~ msgstr "rnd(<=0) im Animationsprogramm" #~ msgid "Internal error in Code::eval(): CodeArt undefined_code" #~ msgstr "Interner Fehler in Code::eval(): CodeArt undefined_code" #~ msgid "Internal error in Code::eval(): Unknown CodeArt %d" #~ msgstr "Interner Fehler in Code::eval(): Unbekannte CodeArt %d" #~ msgid "%s: %s" #~ msgstr "%s: %s" #~ msgid "Parse error in file %s: %s\n" #~ msgstr "Grammatikfehler in Datei %s: %s\n" #~ msgid "There are no (more?) (working?) levels." #~ msgstr "Es gibt keine (weiteren?) (funktionierenden?) Level." #~ msgid "Could not start level:\n" #~ msgstr "Konnte Level nicht starten:\n" #~ msgid "Error during the game:\n" #~ msgstr "Fehler im Spiel:\n" #~ msgid "" #~ "Warning: Env-Variable $HOME not found. Using the current directory for " #~ "cuyo.log" #~ msgstr "" #~ "Warnung: Umgebungsvariable $HOME nicht gefunden. Verwende aktuelles " #~ "Verzeichnis fr cuyo.log" #~ msgid "Debug: Receive greys\n" #~ msgstr "Fehlersuche: Bekomme Graue\n" #~ msgid "Debug: Single step mode = %d\n" #~ msgstr "Fehlersuche: Einzelschrittmodus = %d\n" #~ msgid "Debug: Replace fall\n" #~ msgstr "Fehlersuche: Fall ersetzen\n" #~ msgid "Debug: Load log file\n" #~ msgstr "Fehlersuche: Lade Log-Datei\n" #~ msgid "" #~ "Level %s (%d)\n" #~ "For replay start level.\n" #~ msgstr "" #~ "Level %s (%d)\n" #~ "Fr eine Wiedergabe starte den Level.\n" #~ msgid "Debug: Do *not* load log file during the game.\n" #~ msgstr "Fehlersuche: Die Log-Datei *nicht* whrend des Spiels laden.\n" #~ msgid "Debug: Replay log file = %d\n" #~ msgstr "Fehlersuche: Log-Datei wiedergeben = %d\n" #~ msgid "Debug: Win instantly\n" #~ msgstr "Fehlersuche: Sofort gewinnen\n" #~ msgid "" #~ "Debug: Help (all keys to be combined with Alt)\n" #~ " b: Receive greys\n" #~ " e: Single step mode on/off\n" #~ " f: Replace fall\n" #~ " g: Win instantly\n" #~ " h: Help (this one)\n" #~ " L: Load log file\n" #~ " l: Replay log file on/off\n" #~ " r: Reload level\n" #~ " S: Save log file\n" #~ " t: Test of row-exchange on/off\n" #~ " v: Fast forward on/off\n" #~ " z: Slow motion on/off\n" #~ msgstr "" #~ "Fehlersuche: Hilfe (alle Tasten sind mit Alt zu kombinieren)\n" #~ " b: Graue bekommen\n" #~ " e: Einzelschrittmodus an/aus\n" #~ " f: Fall ersetzen\n" #~ " g: Sofort gewinnen\n" #~ " h: Hilfe (diese)\n" #~ " L: Log-Datei laden\n" #~ " l: Log-Datei wiedergeben an/aus\n" #~ " r: Level neu laden\n" #~ " S: Log-Datei speichern\n" #~ " t: Reihenaustauschtest an/aus\n" #~ " v: Schnellvorlauf an/aus\n" #~ " z: Zeitlupe an/aus\n" #~ msgid "Debug: Reload levelconf\n" #~ msgstr "Fehlersuche: Level neu laden\n" #~ msgid "" #~ "Could not reload the level description file because of the following " #~ "error:\n" #~ msgstr "" #~ "Konnte die Levelbeschreibung nicht neu laden, da folgender Fehler " #~ "auftrat:\n" #~ msgid "Debug: Save log file\n" #~ msgstr "Fehlersuche: Log-Datei speichern\n" #~ msgid "Debug: Test of row-exchange = %d\n" #~ msgstr "Fehlersuche: Reihenaustauschtest = %d\n" #~ msgid "Debug: Fast forward = %d\n" #~ msgstr "Fehlersuche: Schnellvorlauf = %d\n" #~ msgid "Debug: Slow motion = %d\n" #~ msgstr "Fehlersuche: Zeitlupe = %d\n" #~ msgid "Conflicting versions: %s" #~ msgstr "Konfligierende Versionen: %s" #~ msgid "%s required but not defined" #~ msgstr "%s wird bentigt, wurde aber nicht definiert" #~ msgid "Wrong type on the righthand side of %s%s=" #~ msgstr "Falscher Typ auf der rechten Seite von %s%s=" #~ msgid "0 or 1 expected, got %d." #~ msgstr "0 oder 1 erwartet, %d erhalten." #~ msgid "Color (r,g,b) expected" #~ msgstr "Farbe (r,g,b) erwartet" #~ msgid "List of atomic data expected" #~ msgstr "Liste atomarer Daten erwartet" #~ msgid "Section %s does not exist." #~ msgstr "Bereich %s existiert nicht." #~ msgid "Please send the log-file \"cuyo.log\" to cuyo@karimmi.de" #~ msgstr "Bitte schicke die Log-Datei \"cuyo-log\" an cuyo@karimmi.de" #~ msgid "%s:%d: %s\n" #~ msgstr "%s:%d: %s\n" #~ msgid "Internal error: \"%s\" in %s:%d" #~ msgstr "Interner Fehler: \"%s\" in %s:%d" #~ msgid "SDL error: \"%s\" in %s:%d: %s" #~ msgstr "SDL Fehler: \"%s\" in %s:%d: %s" #~ msgid "\"%s\" already defined." #~ msgstr "\"%s\" bereits definiert." #~ msgid "" #~ "Warning: There's global Cual code _after_ some level definitions. Be " #~ "sure\n" #~ "not to use that Cual code in the levels before it. (Due to a bug, this " #~ "will\n" #~ "sometimes not result in an error message but in strange behaviour.)\n" #~ msgstr "" #~ "Warnung: Es gibt globale Cual Programmierung _nachdem_ Level definiert\n" #~ "wurden. Achte darauf, diese Programmierung nicht in den vorherigen\n" #~ "Leveln zu verwenden. (Aufgrund eines Fehlers fhrt das manchmal nicht zu\n" #~ "einer Fehlermeldung, sondern zu seltsamem Verhalten.)\n" #~ msgid "\"%s\" not defined inside << >>." #~ msgstr "\"%s\" nicht innerhalb << >> definiert." #~ msgid "\"%s\" not defined." #~ msgstr "\"%s\" nicht definiert." #~ msgid "Value is a list and should not." #~ msgstr "Wert ist eine Liste, sollte es aber nicht sein." #~ msgid "" #~ msgstr "" #~ msgid "%s is of wrong type. %s expected" #~ msgstr "%s hat falschen Typ. %s erwartet" #~ msgid "Number of pics exceeds limit %d" #~ msgstr "Anzahl an pics bersteigt die Schranke %d" #~ msgid "Sorry, no working level description file available." #~ msgstr "Verzeihung, es gibt keine funktionierende Levelbeschreibungsdatei." #~ msgid "At position %s (or somewhere below): " #~ msgstr "An Position %s (oder irgendwo tiefer):" #~ msgid "toptime must be positive" #~ msgstr "toptime mu positiv sein" #~ msgid "neighbours out of range" #~ msgstr "neighbours unzulssig" #~ msgid "nogreyprob must not be negative" #~ msgstr "nogreyprob darf nicht negativ sein" #~ msgid "At least one %s must be positive." #~ msgstr "Zumindest ein %s mu positiv sein." #~ msgid "nogreyprob or at least one %s must be positive." #~ msgstr "nogreyprob oder zumindest ein %s mu positiv sein." #~ msgid " (Level \"%s\")\n" #~ msgstr " (Level \"%s\")\n" #~ msgid "distkey \"%s\" does not have length %d as others do." #~ msgstr "distkey \"%s\" hat im Gegensatz zu anderen nicht die Lnge %d." #~ msgid "Illegal character \"%c\" in startdist or distkey %s" #~ msgstr "Unerlaubtes Zeichen \"%c\" in startdist oder distkey %s" #~ msgid "All-spaces startdist entry or distkey is not allowed." #~ msgstr "startdist-Eintrag oder distkey nur aus Leerzeichen ist verboten." #~ msgid "Invalid alignment" #~ msgstr "Unzulssige Ausrichtung" #~ msgid "Non-existent neighbours value." #~ msgstr "Nicht-existenter Wert fr neighbours." #~ msgid "Data corruption." #~ msgstr "Datenfehler." #~ msgid "Internal error in ort_absolut::finde(): No ort_absolut::korrekt()" #~ msgstr "" #~ "Interner Fehler in ort_absolut::finde(): Kein ort_absolut::korrekt()" #~ msgid "illegal ort for ort_absolut::playSample" #~ msgstr "unerlaubter ort fr ort_absolut::playSample" #~ msgid "Internal error in Ort::berechne(): Unknown AbsOrtArt %d" #~ msgstr "Interner Fehler in Ort::berechne(): Unbekannte AbsOrtArt %d" #~ msgid "Internal error in Ort::toString(): Unknown AbsOrtArt %d" #~ msgstr "Interner Fehler in Ort::toString(): Unbekannte AbsOrtArt %d" #~ msgid "" #~ "Internal error: got confused with all those paths I have to deal with." #~ msgstr "" #~ "Interner Fehler: bin verwirrt durch all die Pfade, die ich behandeln soll." #~ msgid "" #~ "Could not find \"%s\".\n" #~ "Tried the following places:%s" #~ msgstr "" #~ "Konnte \"%s\" nicht finden.\n" #~ "Habe an folgenden Stellen gesucht:%s" #~ msgid "Error reading preferences file '.cuyo':\n" #~ msgstr "Fehler beim Lesen der Datei '.cuyo' fr Einstellungen:\n" #~ msgid "" #~ "Warning: Env-Variable $HOME not found. Using the current directory for ." #~ "cuyo" #~ msgstr "" #~ "Warnung: Ungebungsvariable $HOME nicht gefunden. Verwende aktuelles " #~ "Verzeichnis fr .cuyo" #~ msgid "Warning: Could not write preferences file \"%s\"." #~ msgstr "Warnung: Konnte Datei \"%s\" fr Einstellungen nicht schreiben." #~ msgid "" #~ "Probably trying to fill rectangle of negative size; this causes an " #~ "overflow.\n" #~ msgstr "" #~ "Vermutlich wird versucht, ein Rechteck negativer Gre auszufllen.Das " #~ "verursacht einen berlauf.\n" #~ msgid "Using %s for %s\n" #~ msgstr "Verwende %s fr %s\n" #~ msgid "" #~ "Warning: %s.%s contains drawing commands.\n" #~ "Drawing is not allowed during events.\n" #~ msgstr "" #~ "Warnung: %s.%s enthlt Malkommandos.\n" #~ "Malen ist whrend Ereignissen nicht erlaubt.\n" #~ msgid "Internal Error in Sorte::Sorte(): mBlopart = %d" #~ msgstr "Interner Fehler in Sorte::Sorte(): mBlopart = %d" #~ msgid "illegal distkey %s for %s" #~ msgstr "unerlaubter distkey %s fr %s" #~ msgid "illegal versions=%d for %s" #~ msgstr "unerlaubtes versions=%d fr %s" #~ msgid "numexplode undefined for %s" #~ msgstr "numexplode fr %s nicht definiert" #~ msgid "%s must not be negative" #~ msgstr "%s darf nicht negativ sein" #~ msgid "%s>0 not allowed for global or semiglobal" #~ msgstr "%s>0 fr global und semiglobal verboten" #~ msgid "%s>0 not allowed for nothing, global or semiglobal" #~ msgstr "%s>0 fr nothing, global und semiglobal verboten" #~ msgid "File number file=%d out of range (allowed: 0 - %ld)" #~ msgstr "Dateinummer file=%d unzulssig (erlaubt: 0 - %ld)" #~ msgid "Sound does not work: %s\n" #~ msgstr "Ton geht nicht: %s\n" #~ msgid "\"%s\" used in startdist, although all %s are 0." #~ msgstr "\"%s\" in startdist verwenden, obwohl alle %s 0 sind." #~ msgid "\"%s\" used as a distkey but no such distkey specified." #~ msgstr "" #~ "\"%s\" als distkey verwendet, obwohl so einer nicht spezifiziert wurde." #~ msgid "" #~ "All values for distkey have length %d, so lines in startdist must have " #~ "length %d or %d" #~ msgstr "" #~ "Alle Werte fr distkey haben die Lnge %d, also mssen Zeilen in " #~ "startdist die Lnge %d oder %d haben" #~ msgid "" #~ msgstr "" #~ msgid "%s lacks version %s%s" #~ msgstr "%s fehlt Version %s%s" #~ msgid "Uninitialized dimension" #~ msgstr "Nicht initialisierte Dimension" #~ msgid "%s was already accessed, new version %s%s is not allowed" #~ msgstr "Auf %s wurde bereits zugegriffen, neue Version %s%s ist verboten" #~ msgid "Previous problem with %s still persists" #~ msgstr "Frheres Problem mit %s besteht noch" #~ msgid "Illegal version %s%s" #~ msgstr "Verbotene Version %s%s" #~ msgid "%s%s not uniquely defined" #~ msgstr "%s%s nicht eindeutig definiert" #~ msgid "%s%s eclipsed by more specialized versions" #~ msgstr "%s%s wird von strker spezialisierten Versionen verdeckt" #~ msgid "Read error" #~ msgstr "Lesefehler" #~ msgid "Endless comment." #~ msgstr "Endloskommentar." #~ msgid "\"%s\" expected" #~ msgstr "\"%s\" erwartet" #~ msgid "'%c' expected; found: '%c' (filepos: %d)" #~ msgstr "'%c' erwartet; gefunden: '%c' (Dateipos: %d)" #~ msgid "'%c' expected" #~ msgstr "'%c' erwartet" #~ msgid "Number expected" #~ msgstr "Zahl erwartet" #~ msgid "Hex number expected" #~ msgstr "Hex-Zahl erwartet" #~ msgid "Undefined pixel name" #~ msgstr "Undefinierter Pixelname" #~ msgid "" #~ "Fast xpm loading did not work for \"%s\":\n" #~ "%s\n" #~ msgstr "" #~ "Schnelles xpm-Laden hat fr \"%s\" nicht funktioniert:\n" #~ "%s\n" #~ msgid "File \"%s.gz\": %s\n" #~ msgstr "Datei \"%s.gz\": %s\n" #~ msgid "Trees" #~ msgstr "Bume" #~ msgid "" #~ "A few levels support difficulty settings\n" #~ "In the standard level track, a selection will be made" #~ msgstr "" #~ "Manche Level untersttzen mehrere Schwierigkeitsgrade\n" #~ "In der Standardlevelabfolge findet eine Auswahl statt" #~ msgid "Unfinished" #~ msgstr "Unfertig" #~ msgid "All levels except the unfinished ones" #~ msgstr "Alle Level auer den unfertigen" #~ msgid "Works in progress" #~ msgstr "Unvollendete Werke" #~ msgid "" #~ "A group with three territory points explodes. (Territory points appear, " #~ "when a stone is completely surrounded by other stones of the same color.)" #~ msgstr "" #~ "Eine Gruppe mit drei Gebietspunkten explodiert. (Gebietspunkte entstehen, " #~ "wenn ein Stein komplett von Steinen der gleichen Farbe umzingelt wird.)" #~ msgid "Breakout" #~ msgstr "Breakout" #~ msgid "Used spin!" #~ msgstr "Angeschnitten!" #~ msgid "Return pass!" #~ msgstr "Rckpass!" #~ msgid "You are being watched" #~ msgstr "Du wirst beobachtet" #~ msgid "Dungeon" #~ msgstr "Dungeon" #~ msgid "" #~ "The pixels consist of 0 chars. That's not yet supported in .xpm.gz files." #~ msgstr "" #~ "Die Pixel bestehen aus 0 Zeichen. Das wird fr .xpm.gz-Dateien noch nicht " #~ "untersttzt." #~ msgid "" #~ "Internal error in _vsprintf: We cannot do \"%cl%c\" in format strings " #~ "(yet)." #~ msgstr "" #~ "Interner Fehler in _vsprintf: Wir knnen \"%cl%c\" in Formatstrings " #~ "(noch) nicht." #~ msgid "" #~ "Internal error in _vsprintf: We cannot do \"%c%c\" in format strings " #~ "(yet)." #~ msgstr "" #~ "Interner Fehler in _vsprintf: Wir knnen \"%c%c\" in Formatstrings (noch) " #~ "nicht." #~ msgid "__cuyo_translation_availability_test" #~ msgstr "vorhanden" #~ msgid "explosionpic too small" #~ msgstr "explosionpic ist zu klein" #~ msgid "Letter Shoot" #~ msgstr "Rohrpost" cuyo-2.1.0/po/cual2fakec0000755000175000017500000001130211674171056011763 00000000000000#!/usr/bin/perl # # Copyright 2008,2011 by Immanuel Halupczok # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # use strict; my $copy_everything = 1; # change to 0 if the output # should only be the relevant stuff # However, stuff inside <<>> is still written to output, # because otherwise we would have problems with message... my $state = "start"; my $key; my $processed; my $depth = 0; my $extra_comment; sub doError($) { my $e = shift; print STDERR "Line $.: $e\n"; exit(1); } # Adds $1 or the first argument to $processed sub copy(;$) { if ($copy_everything) { my $new = shift; if (!defined($new)) { $new = $1; } $processed .= $new; } } sub checkTranslate() { $depth == 1 or return 0; if ($key eq "name") { $extra_comment = "/* TRANSLATORS: level name */"; return 1; } if ($key eq "description") { $extra_comment = "/* TRANSLATORS: level description */"; return 1; } if ($key eq "author") { $extra_comment = "/* TRANSLATORS: level author */"; return 1; } return 0; } sub maybeTranslate($) { my $value = shift; if (checkTranslate()) { $processed .= "_($value)"; } else { copy($value); } } my %finiteStateMachine = ( "start" => sub { if (s/^(<<)//) { copy(); $state = "in <<>>"; } elsif (s/^([A-Za-z0-9_]+)//) { $key = $1; $processed .= $extra_comment if checkTranslate(); copy(); $state = "[version]"; } elsif (s/^(\})//) { copy(); $depth--; $state = "start"; } else { doError("syntax error"); } }, "[version]" => sub { if (s/^(\[[A-Za-z0-9,_]*\])//) { copy(); } $state = "="; }, "=" => sub { if (s/^(=)//) { copy(); $state = "value"; } else { doError("'=' expected"); } }, "value" => sub { if (s/^([A-Za-z0-9_.-]+)//) { maybeTranslate('"'.$1.'"'); $state = "after-value"; } elsif (s/^("([^\\"]|\\.)*")//) { maybeTranslate($1); $state = "after-value"; } elsif (s/^(\{)//) { copy(); $depth++; $state = "after-value"; } elsif (s/^(<)//) { copy(); $state = "<>-value"; } else { doError("syntax error"); } }, "<>-value" => sub { if (s/^([^>]+)//) { copy(); } elsif (s/^(>)//) { copy(); $state = "after-value"; } else { doError("syntax error"); } }, "after-value" => sub { if (s/^(,|\*)//) { copy(); $state = "value"; } else { $state = "start"; } }, "in <<>>" => sub { if (s/^([^>"]+)//) { # no string, no > # s/(message\s*\(\s*)(".*")(\s*\))/$1_($2)$3/g; my $new = $1; $new =~ s/\bmessage\b/_/g; $processed .= $new; } elsif (s/^(>>)//) { copy(); $state = "start"; } elsif (s/^(>)//) { $processed .= $1; } elsif (s/^("([^\\"]|\\.)*")//) { $processed .= $1; } else { doError("syntax error (probably concerning string)"); } }, ); my $prev_line; my $comment_open = 0; while (<>) { # $_ contains one line of the input file chomp; s/^\s*//; #remove spaces at beginning of line s/\s*$//; #remove spaces at end of line my $comm = ""; if ($comment_open && s/^#//) { # continue comment $comm = $_; $_ = ""; } elsif ($comment_open) { $prev_line .= "*/"; $comment_open = 0; } if (s/(^[^#]*)#(.*)$/$1/) { # Beginning of comment $comm = "/*$2"; $comment_open = 1; s/\s*$//; } # $_ does not contain comments anymore; if there is a comment, # it is temporarily stored in $comm $processed = ""; while ($_ ne "") { &{$finiteStateMachine{$state}}(); s/^(\s*)//; copy(); } if (defined($prev_line)) { print $prev_line, "\n"; } $prev_line = $processed.$comm; } if ($comment_open) { $prev_line .= "*/";} print $prev_line, "\n"; $state == "start" or doError("Syntax error"); $depth == 0 or doError("Number of '{' != number of '}'"); exit; cuyo-2.1.0/po/Makefile.am0000644000175000017500000000725512422647662012110 00000000000000# po/Makefile.am for cuyo by Mark Weyer in 2009 # Modified 2011 by the cuyo developers # Maintenance modifications 2010,2011,2014 by the cuyo developers # This file is based on the following: # # po/Makefile.am for LPRng by Bernhard R. Link in 2007 # # this file is based on gettext-0.14.4' Makefile.in.in which states: # # # Makefile for PO directory in any package using GNU gettext. # # # Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. LINGUAS = de pt DOMAIN = $(PACKAGE) POFILES = $(patsubst %,$(srcdir)/%.po,$(LINGUAS)) GMOFILES = $(patsubst %,$(srcdir)/%.gmo,$(LINGUAS)) MSGMERGE_UPDATE = @MSGMERGE@ --update MAINTAINERCLEANFILES = Makefile.in $(GMOFILES) *.mo $(DOMAIN).pot EXTRA_DIST = pot.sed cual2fakec $(DOMAIN).pot $(POFILES) $(GMOFILES) # We would rather use ../data/used_levels instead of ../data/*.ld # However, that would require that the definition of pot_sources # has a dependency on ../data/used_levels, which is something make # does not support. pot_sources = $(shell ls ../src/*.cpp ../src/*.cc ../src/*.h) $(shell ls ../data/*.ld) all: all-@USE_NLS@ all-yes: $(DOMAIN).pot $(POFILES) $(GMOFILES) all-no: install-data-local: install-data-local-@USE_NLS@ install-data-local-no: all install-data-local-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) for lang in $(LINGUAS) ; do \ cat=$$lang.gmo \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ done uninstall-local: uninstall-local-@USE_NLS@ uninstall-local-no: uninstall-local-yes: for lang in $(LINGUAS) ; do \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done # By virtue of this rule, this Makefile probably only works with srcdir=. $(DOMAIN).pot: $(pot_sources) pot.sed rm -rf data mkdir data cd ../data && make used_levels for ldfile in $$(cat ../data/used_levels) ; do \ ./cual2fakec ../data/$$ldfile > data/$$ldfile ; \ done rm -rf src mkdir src cp ../src/*.cpp ../src/*.cc ../src/*.h src xgettext \ --from-code=ISO-8859-1 \ --language=C++ \ --keyword=_ \ --keyword=N_ \ --add-comments=TRANSLATORS \ --msgid-bugs-address=cuyo-devel@nongnu.org \ -o - \ src/* data/* \ | sed -f pot.sed > cuyo.pot %.mo: %.po $(MSGFMT) -c -o t-$*.mo $*.po && mv t-$*.mo $*.mo %.gmo: %.po lang=`echo $* | sed -e 's,.*/,,'`; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Contrary to how others handle this, the PO file is always touched. %.po: $(srcdir)/$(DOMAIN).pot lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ touch $${lang}.po; \ else \ $(MAKE) $${lang}.po-create; \ fi # General rule for creating PO files. %.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 update-po: Makefile $(MAKE) $(DOMAIN).pot-update $(MAKE) $(POFILES) $(MAKE) $(GMOFILES) cuyo-2.1.0/po/pt.po0000644000175000017500000013742612422656701011035 00000000000000# Translation of cuyo's messages to European Portuguese # Message catalog for the game Cuyo. # This is a partly generated file. The copyright of the original messages is identical to the one of the source files they are generated from. The copyright of the translations is by the translators. # This file is distributed under the same license as the Cuyo package. # # Américo Monteiro , 2014. msgid "" msgstr "" "Project-Id-Version: cuyo 2.1.0\n" "Report-Msgid-Bugs-To: cuyo-devel@nongnu.org\n" "POT-Creation-Date: 2014-10-25\n" "PO-Revision-Date: 2014-09-22 19:12+0100\n" "Last-Translator: Américo Monteiro \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: Lokalize 1.4\n" #: src/blatt.cpp:215 msgid "Computer" msgstr "Computador" #: src/blatt.cpp:215 #, c-format msgid "Player %d" msgstr "Jogador %d" #. TRANSLATORS: During game: short version of "%d blops explode" #: src/blatt.cpp:258 #, c-format msgid "%d" msgstr "%d" #. TRANSLATORS: During game: short version of #. "between %d and %d blops explode" #: src/blatt.cpp:263 #, c-format msgid "%d-%d" msgstr "%d-%d" #. TRANSLATORS: During game: short version of #. "%d or %d blops explode" #: src/blatt.cpp:268 #, c-format msgid "%d/%d" msgstr "%d/%d" #: src/blatt.cpp:1109 #, c-format msgid "%s - Debug mode; Press alt-h for help." msgstr "%s - Modo de depuração; Carregue em alt-h para ajuda." #. TRANSLATORS: Now follows the main menu. The characters preceded by a tilde #. are hotkeys. Please choose them disjoint within the menu. If this #. cannot be achieved in a sensible manner, feel free to leave some out. #: src/blatt.cpp:1120 msgid "~New Game" msgstr "~Novo Jogo" #: src/blatt.cpp:1123 msgid "~Restart last level" msgstr "~Reiniciar último nível" #: src/blatt.cpp:1128 msgid "Start ~at level..." msgstr "Inici~ar no nível..." #: src/blatt.cpp:1131 msgid "~1 Player" msgstr "~1 Jogador" #: src/blatt.cpp:1133 msgid "~2 Players" msgstr "~2 Jogadores" #: src/blatt.cpp:1135 msgid "Player vs. ~Computer" msgstr "Jogado vs. ~Computador" #: src/blatt.cpp:1140 msgid "~Level track" msgstr "P~ista de níveis" #: src/blatt.cpp:1146 msgid "~Difficulty" msgstr "~Dificuldade" #: src/blatt.cpp:1151 msgid "" "Setting the difficulty affects some, but not all levels.\n" "On difficulty \"Easy\", the \"Standard\" level track\n" "consists of levels which are affected by that difficulty,\n" "and of levels which are easy in themselves.\n" "The same holds for \"Hard\"." msgstr "" "Definir a dificuldade afecta alguns, mas não todos os níveis.\n" "Na dificuldade \"Fácil\", a pista de níveis \"Standard\"\n" "consiste de níveis que são afectados por essa dificuldade,\n" "e de níveis que são eles próprios fáceis.\n" "O mesmo é verdadeiro para \"Difícil\"." #: src/blatt.cpp:1157 msgid "~Preferences..." msgstr "~Preferências..." #. TRANSLATORS: This is the last entry of the main menu. #: src/blatt.cpp:1166 msgid "~Quit" msgstr "~Terminar" #: src/blatt.cpp:1176 #, c-format msgid "Keys Player %d:" msgstr "Teclas do Jogador %d:" #: src/blatt.cpp:1178 msgid "Left" msgstr "Esquerda" #: src/blatt.cpp:1179 msgid "Right" msgstr "Direita" #: src/blatt.cpp:1180 msgid "Turn" msgstr "Virar" #: src/blatt.cpp:1181 msgid "Down" msgstr "Descer" #: src/blatt.cpp:1185 msgid "AI Speed" msgstr "Velocidade da IA" #: src/blatt.cpp:1187 msgid "Sound" msgstr "Som" #: src/cuyo.cpp:274 #, c-format msgid "" "Score: %d\n" "\n" "Loading Level %d...\n" "\n" msgstr "" "Pontuação: %d\n" "\n" "A Carregar Nível %d...\n" "\n" #: src/cuyo.cpp:315 #, c-format msgid "1 blop explodes" msgid_plural "%d blops explode" msgstr[0] "1 blop explode" msgstr[1] "%d blops explodem" #: src/cuyo.cpp:321 #, c-format msgid "between %d and %d blops explode" msgstr "entre %d e %d blops explodem" #: src/cuyo.cpp:324 #, c-format msgid "%d or %d blops explode" msgstr "%d ou %d blops explodem" #. TRANSLATORS: The second %s (after "by ") is the level's author's name #: src/cuyo.cpp:327 #, c-format msgid "" "Score: %d\n" "\n" "Level %d\n" "%s\n" "by %s\n" "\n" "%s\n" "%s\n" "%s\n" "\n" "Space = Start" msgstr "" "Pontuação: %d\n" "\n" "Nível %d\n" "%s\n" "por %s\n" "\n" "%s\n" "%s\n" "%s\n" "\n" "Espaço = Começar" #: src/cuyo.cpp:335 msgid "Chain reaction necessary\n" msgstr "Reacção em cadeia necessária\n" #: src/cuyo.cpp:535 #, c-format msgid "" "Game over\n" "\n" "Score: %d\n" "\n" msgstr "" "Fim do jogo\n" "\n" "Pontuação: %d\n" "\n" #: src/cuyo.cpp:554 #, c-format msgid "" "Level %s complete!\n" "\n" "Time Bonus: %d\n" "Score: %d\n" "\n" "%s" msgstr "" "Nível %s completo!\n" "\n" "Bónus de Tempo: %d\n" "Pontuação: %d\n" "\n" "%s" #: src/cuyo.cpp:576 msgid "Space = Continue" msgstr "Espaço = Continuar" #: src/cuyo.cpp:647 #, c-format msgid "" "***\n" "You won even a bit more!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" "***\n" "Ganhas-te um pouco mais!!!\n" "\n" "Pontuação: %d\n" "***\n" "\n" #: src/cuyo.cpp:648 #, c-format msgid "" "***\n" "You won!!!\n" "\n" "Score: %d\n" "***\n" "\n" msgstr "" "***\n" "Ganhas-te!!!\n" "\n" "Pontuação: %d\n" "***\n" "\n" #. TRANSLATORS: This indicates an unknown value #: src/leveldaten.cpp:682 msgid "???" msgstr "???" #. TRANSLATORS: "cuyo" is a program's name, #. "-f", "-g", and "-h" are options' names, #. "ld" is a file suffix. None of these should be translated. #: src/main.cpp:51 msgid "" "usage: cuyo [-g x] [-h] [-f] [ld-file]\n" " -g x set window size\n" " -f fullscreen mode\n" " -h print this help message\n" "(More options are documented in the man page.)\n" msgstr "" "utilização: cuyo [-g x] [-h] [-f] [ld-file]\n" " -g x define tamanho da janela\n" " -f modo de ecrã total\n" " -h escreve esta mensagem de ajuda\n" "(Mais opções estão documentadas no manual.)\n" #: src/main.cpp:90 #, c-format msgid "Argument to -%c missing\n" msgstr "Argumento para -%c em falta\n" #: src/main.cpp:100 #, c-format msgid "Unknown option '%c'\n" msgstr "Opção desconhecida '%c'\n" #: src/main.cpp:197 msgid "Could not parse option -g\n" msgstr "incapaz de analisar a opção -g\n" #: src/main.cpp:223 #, c-format msgid "%s: Too many arguments\n" msgstr "%s: Demasiados argumentos\n" #. TRANSLATORS: "Done" is a menu entry for quitting a submenu. #: src/menueintrag.cpp:449 msgid "Done" msgstr "Feito" #: src/menueintrag.cpp:572 msgid "Press `return' or click for a full list" msgstr "Pressione 'Enter' ou clique para uma lista completa" #: src/menueintrag.cpp:820 msgid "Type a new key" msgstr "Pressione uma nova tecla" #: src/menueintrag.cpp:821 msgid "To enter a new key, click or press `return' first" msgstr "Para inserir uma nova tecla, clique ou pressione 'Enter' primeiro" #: src/menueintrag.cpp:914 msgid "On" msgstr "Ligado" #: src/menueintrag.cpp:914 msgid "Off" msgstr "Desligado" #. TRANSLATORS: "cuyo" is the program's name #: src/sdltools.cpp:310 msgid "Cuyo - debug mode" msgstr "Cuyo - modo de depuração" #. TRANSLATORS: This is a window title #: src/sdltools.cpp:315 #, c-format msgid "Cuyo - level %s" msgstr "Cuyo - nível %s" #: src/spielfeld.cpp:211 msgid "" "Game paused\n" "\n" "Space = Resume\n" "Esc = Abort Game\n" "\n" msgstr "" "Jogo em pausa\n" "\n" "Espaço = Resume\n" "Esc = Aborta Jogo\n" "\n" #. TRANSLATORS: Name of a level track #: src/version.cpp:33 msgid "Standard" msgstr "Standard" #. TRANSLATORS: Name of a level track #: src/version.cpp:35 msgid "All levels" msgstr "Todos os níveis" #. TRANSLATORS: Name of a level track #: src/version.cpp:37 msgid "Games" msgstr "Jogos" #. TRANSLATORS: Name of a level track #: src/version.cpp:39 msgid "Extremes" msgstr "Extremos" #. TRANSLATORS: Name of a level track #: src/version.cpp:41 msgid "No FX" msgstr "Sem FX" #. TRANSLATORS: Name of a level track #: src/version.cpp:43 msgid "Weird" msgstr "Esquisito" #. TRANSLATORS: Name of a level track #: src/version.cpp:45 msgid "Contributions" msgstr "Contribuições" #: src/version.cpp:47 msgid "A selection of levels for the common taste" msgstr "Uma selecção de níveis para o gosto comum" #: src/version.cpp:48 msgid "All official levels" msgstr "Todos os níveis oficiais" #: src/version.cpp:49 msgid "Levels simulating board games or other computer games" msgstr "Níveis que simulam jogos de tabuleiro ou outros jogos de computador" #: src/version.cpp:50 msgid "Levels setting records such as `fastest dropping ceiling'" msgstr "Níveis que definem recordes do tipo 'o tecto mais rápido a descer'" #: src/version.cpp:51 msgid "Plain levels without any disturbing tweaks to the rules" msgstr "Níveis simples sem nenhumas artimanhas a perturbar as regras" #: src/version.cpp:52 msgid "Levels interpreting the general theme of cuyo more broadly" msgstr "Níveis que interpretam mais amplamente o tema geral do cuyo" #: src/version.cpp:53 msgid "Levels donated and maintained by the community" msgstr "Níveis doados e mantidos pela comunidade" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:63 msgid "Easy" msgstr "Fácil" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:65 msgid "Normal" msgstr "Normal" #. TRANSLATORS: Name of a difficulty setting #: src/version.cpp:67 msgid "Hard" msgstr "Difícil" #. TRANSLATORS: level name #: data/3d.ld:28 msgid "3D" msgstr "3D" #. TRANSLATORS: level author #: data/3d.ld:29 data/ascii.ld:27 data/baelle.ld:28 data/doors.ld:29 #: data/ebene.ld:28 data/hecken.ld:25 data/hexkugeln.ld:29 data/hormone.ld:28 #: data/nasenkugeln.ld:33 data/pfeile.ld:31 data/schach.ld:33 #: data/theater.ld:40 data/tiere.ld:29 data/viecher.ld:33 data/wachsen.ld:26 #: data/walls.ld:29 data/wuerfel.ld:28 msgid "Immi" msgstr "Immi" #. TRANSLATORS: level description #: data/3d.ld:30 msgid "Well, just a little bit 3D." msgstr "Bem, apenas um pouco de 3D." #. TRANSLATORS: level name #: data/aehnlich.ld:21 msgid "Similar balls" msgstr "Bolas semelhantes" #. TRANSLATORS: level description #: data/aehnlich.ld:22 msgid "Numerically equal colours connect" msgstr "Cores numericamente iguais ligam" #. TRANSLATORS: level author #: data/aehnlich.ld:23 data/angst.ld:27 data/augen.ld:24 data/baender.ld:23 #: data/bonimali.ld:23 data/bunt.ld:23 data/dungeon.ld:36 data/farming.ld:25 #: data/fische.ld:22 data/flechtwerk.ld:21 data/go2.ld:29 data/gold.ld:23 #: data/jump.ld:26 data/kacheln4.ld:24 data/kacheln5.ld:26 data/kacheln6.ld:24 #: data/kachelnR.ld:30 data/kolben.ld:24 data/maennchen.ld:22 data/maze.ld:24 #: data/novips.ld:23 data/octopi.ld:24 data/puzzle.ld:24 data/rechnen.ld:22 #: data/rollenspiel.ld:22 data/schemen.ld:23 data/secret.ld:21 #: data/silbergold.ld:22 data/slime.ld:25 data/tennis.ld:22 data/trees.ld:25 #: data/unmoeglich.ld:22 data/zahn.ld:23 data/ziehlen.ld:22 msgid "Mark Weyer" msgstr "Mark Weyer" #. TRANSLATORS: level name #: data/aliens.ld:36 msgid "Aliens" msgstr "Aliens" #. TRANSLATORS: level author #: data/aliens.ld:37 data/antarctic.ld:55 data/bonus.ld:29 #: data/colorshape.ld:35 data/disco.ld:35 data/letters.ld:36 data/memory.ld:50 #: data/tetris.ld:42 msgid "Berni" msgstr "Berni" #: data/aliens.ld:203 msgid "Hurry up!!!" msgstr "Despacha-te!!!" #. TRANSLATORS: level name #: data/angst.ld:24 msgid "Balls at ease" msgstr "Bolas à vontade " #. TRANSLATORS: level name #: data/angst.ld:25 msgid "Frightened balls" msgstr "Bolas assustadas" #. TRANSLATORS: level name #: data/angst.ld:26 msgid "Angry balls" msgstr "Bolas zangadas" #. TRANSLATORS: level description #: data/angst.ld:28 msgid "These balls are oblivious to the rules of cuyo" msgstr "Estas bolas são abstraídas das regras do cuyo" #. TRANSLATORS: level description #: data/angst.ld:29 msgid "These balls are learning the rules of cuyo" msgstr "Estas bolas estão a aprender as regras do cuyo" #. TRANSLATORS: level description #: data/angst.ld:30 msgid "These balls have learned the rules of cuyo" msgstr "Estas bolas aprenderam as regras do cuyo" #: data/angst.ld:43 msgid "Also try this level in normal and hard difficulty" msgstr "Tenta também este nível em dificuldade normal e difícil" #: data/angst.ld:44 msgid "Also try this level in easy and hard difficulty" msgstr "Tenta também este nível em dificuldade fácil e difícil" #: data/angst.ld:45 msgid "Also try this level in easy and normal difficulty" msgstr "Tenta também este nível em dificuldade fácil e normal" #: data/angst.ld:51 msgid "Commercial break" msgstr "Pausa comercial" #. TRANSLATORS: level name #: data/antarctic.ld:53 msgid "Antarctic" msgstr "Antárctica" #. TRANSLATORS: level description #: data/antarctic.ld:54 msgid "Beware of freezing!" msgstr "Cuidado com o frio!" #. TRANSLATORS: level name #: data/ascii.ld:26 msgid "ASCII" msgstr "ASCII" #. TRANSLATORS: "basic" is a pun on the programming language BASIC. #. TRANSLATORS: level description #: data/ascii.ld:40 msgid "A very basic level" msgstr "Um nível muito basic" #. TRANSLATORS: level name #: data/augen.ld:23 msgid "Eyes" msgstr "Olhos" #. TRANSLATORS: level description #: data/augen.ld:25 msgid "" "They are watching you.\n" "Get rid of them." msgstr "" "Eles estão a observar-te.\n" "Livra-te deles." #. TRANSLATORS: level name #: data/baelle.ld:27 msgid "Rotating Balls" msgstr "Bolas Rotativas" #. TRANSLATORS: level description #: data/baelle.ld:42 msgid "Well, all balls look the same, don't they?" msgstr "Bem, as bolas parecem todas iguais, não achas?" #. TRANSLATORS: level name #: data/baender.ld:22 msgid "Ribbons" msgstr "Faixas" #. TRANSLATORS: level description #: data/baender.ld:24 msgid "Ribbons connect diagonally." msgstr "As faixas ligam na diagonal" #. TRANSLATORS: level name #: data/baggis.ld:32 msgid "Baggis" msgstr "Baggis" #. TRANSLATORS: level author #: data/baggis.ld:33 data/pacman.ld:31 msgid "Simon" msgstr "Simão" #. TRANSLATORS: level description #: data/baggis.ld:47 msgid "Protect yourself from the flash!" msgstr "Protege-te do flash!" #. TRANSLATORS: level name #: data/bonimali.ld:22 msgid "PowerUps and -Downs" msgstr "PowerUps e -Downs" #. TRANSLATORS: level description #: data/bonimali.ld:24 msgid "Collect PowerUps but avoid the bad ones" msgstr "Recolhe os PowerUps mas evita os maus" #. TRANSLATORS: level description #: data/bonimali.ld:25 msgid "Collect PowerUps and hand the bad ones to the other player" msgstr "Recolhe os PowerUps e oferece os maus ou outro jogador" #. TRANSLATORS: level description #: data/bonimali.ld:26 msgid "" "Collect PowerUps and hand the bad ones to your " "opponent^H^H^H^H^H^H^H^Hpartner" msgstr "" "Recolhe os PowerUps e oferece os maus ao teu oponente^H^H^H^H^H^H^H^Hparceiro" #: data/bonimali.ld:122 data/bonimali.ld:232 msgid "3 blops explode" msgstr "3 blops explode" #: data/bonimali.ld:230 msgid "4 blops explode" msgstr "4 blops explode" #: data/bonimali.ld:231 msgid "2 blops explode" msgstr "2 blops explode" #: data/bonimali.ld:269 msgid "Chain reaction necessary" msgstr "Reacção em cadeia necessária" #: data/bonimali.ld:271 msgid "Chain reaction not necessary" msgstr "Reacção em cadeia não necessária" #: data/bonimali.ld:831 msgid "Extra points" msgstr "Pontos extra" #: data/bonimali.ld:834 msgid "Power missiles" msgstr "Misseis de energia" #: data/bonimali.ld:835 msgid "Extra ships" msgstr "Navios extra" #. TRANSLATORS: level name #: data/bonus.ld:28 msgid "Bonus" msgstr "Bónus" #. TRANSLATORS: level description #: data/bonus.ld:40 msgid "Hurry up, get bonus points!" msgstr "Despacha-te, tira pontos bónus!" #. TRANSLATORS: level name #: data/bunt.ld:22 msgid "Gaudy balls" msgstr "Bolas berrantes" #. TRANSLATORS: level name #: data/colorshape.ld:34 msgid "Shape and Color" msgstr "Forma e Cor" #. TRANSLATORS: level description #: data/colorshape.ld:36 msgid "An explosion changes the way, they connect..." msgstr "uma explosão muda o caminho, eles ligam..." #. TRANSLATORS: level name #: data/darken.ld:26 msgid "Darken" msgstr "Escurecido" #. TRANSLATORS: level author #: data/darken.ld:27 data/elemente.ld:26 data/explosive.ld:24 #: data/paratroopers.ld:29 data/pressure.ld:27 data/reversi_brl.ld:23 #: data/rohre.ld:29 data/wohnungen.ld:27 msgid "brl" msgstr "brl" #. TRANSLATORS: level description #: data/darken.ld:28 msgid "The less you know..." msgstr "Quanto menos souberes..." #. TRANSLATORS: level name #: data/disco.ld:34 msgid "Disco" msgstr "Disco" #. TRANSLATORS: level description #: data/disco.ld:36 msgid "Get rid of the strobos!" msgstr "Livra-te dos strobos!" #. TRANSLATORS: level name #: data/doors.ld:28 msgid "Doors" msgstr "Portas" #. TRANSLATORS: level description #: data/doors.ld:30 msgid "It was late and I was tired" msgstr "Era tarde e Eu estava cansado" #. TRANSLATORS: level name #: data/dungeon.ld:35 msgid "Treasure hunt" msgstr "Caça ao tesouro" #. TRANSLATORS: level description #: data/dungeon.ld:37 msgid "Collect gold for extra points" msgstr "Recolhe ouro para pontos extra" #. TRANSLATORS: level name #: data/ebene.ld:27 msgid "Plane" msgstr "Liso" #. TRANSLATORS: level name #: data/elemente.ld:25 msgid "Elements" msgstr "Elementos" #. TRANSLATORS: level name #: data/embroidery.ld:27 msgid "Embroidery" msgstr "Bordado" #. TRANSLATORS: level author #: data/embroidery.ld:28 data/himmel.ld:32 data/jahreszeiten.ld:35 msgid "Jela" msgstr "Jela" #. TRANSLATORS: level description #: data/embroidery.ld:43 msgid "Do you like doing some Needlework?" msgstr "Gostas de fazer trabalhos de costura?" #. TRANSLATORS: level name #: data/explosive.ld:23 msgid "Explosive" msgstr "Explosivo" #. TRANSLATORS: level name #: data/farming.ld:24 msgid "Farming" msgstr "Agricultura" #. TRANSLATORS: level description #: data/farming.ld:26 msgid "" "Almost each level has its very own graphics.\n" "At least this level has exactly the same rules as the previous one." msgstr "" "Quase todos os níveis têm os seus próprios gráficos.\n" "Pelo menos este nível tem exactamente as mesmas regras que o anterior." #. TRANSLATORS: level name #: data/fische.ld:21 msgid "Fish" msgstr "Peixe" #. TRANSLATORS: level name #: data/flechtwerk.ld:20 msgid "Wickerwork" msgstr "Vime" #. TRANSLATORS: level name #: data/fractals.ld:26 msgid "Fractals" msgstr "Fractals" #. TRANSLATORS: level author #: data/fractals.ld:27 msgid "Austin W." msgstr "Austin W." #. TRANSLATORS: level description #: data/fractals.ld:28 msgid "Three explode if in each aspect they are all the same or all different." msgstr "" "Três explodem se em cada aspecto forem todos iguais ou todos diferentes." #. TRANSLATORS: level name #: data/go2.ld:28 msgid "Go" msgstr "Go" #. TRANSLATORS: level description #: data/go2.ld:30 msgid "Why to place your goban horizontally" msgstr "Porque colocar o seu goban na horizontal" #. TRANSLATORS: level name #: data/gold.ld:22 msgid "Gold" msgstr "Ouro" #. TRANSLATORS: level description #: data/gold.ld:24 msgid "Yes, it CAN be completed" msgstr "Sim, PODE ser completado" #. TRANSLATORS: level description #: data/gold.ld:25 msgid "" "Yes, it CAN be completed\n" "...cooperatively" msgstr "" "Sim, PODE ser completado\n" "...em cooperação" #. TRANSLATORS: level name #: data/hecken.ld:24 msgid "Gardens" msgstr "Jardins" #. TRANSLATORS: level description #: data/hecken.ld:37 msgid "" "Gardens need hedges for separation. The hedges do not count for the size of " "a garden, though." msgstr "" "Os jardins precisam de cercas para os separar. No entanto, as cercas não " "contam para o tamanho do jardim." #. TRANSLATORS: level name #: data/hexkugeln.ld:28 msgid "Balls & Rods" msgstr "Bolas & Varas" #. TRANSLATORS: level description #: data/hexkugeln.ld:48 msgid "Most dense packing of spheres" msgstr "O pacote de esferas mais denso" #. TRANSLATORS: level name #: data/himmel.ld:31 msgid "Sky" msgstr "Céu" #. TRANSLATORS: level description #: data/himmel.ld:50 msgid "In which direction do balloons fall?" msgstr "Em que direcção os balões caiem?" #. TRANSLATORS: level name #: data/hormone.ld:27 msgid "Hormones" msgstr "Hormonas" #. TRANSLATORS: level description #: data/hormone.ld:42 msgid "When do the \"hormones\" connect?" msgstr "Quando é que as \"hormonas\" ligam?" #. TRANSLATORS: level name #: data/jahreszeiten.ld:34 msgid "The four Seasons" msgstr "As quatro Estações" #. TRANSLATORS: level description #: data/jahreszeiten.ld:47 msgid "Everything changes..." msgstr "Tudo muda..." #. TRANSLATORS: "Jump" is as in the computer game genre jump-and-run, only #. without the run #. TRANSLATORS: level name #: data/jump.ld:25 msgid "Jump" msgstr "Saltar" #. TRANSLATORS: "8 bit" refers to an era of computer games #. TRANSLATORS: level description #: data/jump.ld:28 msgid "8 bit nostalgia" msgstr "Nostalgia de 8 bits" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln4.ld:23 msgid "Tiling II" msgstr "Mosaico II" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln5.ld:25 msgid "Tiling III" msgstr "Mosaico III" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kacheln6.ld:23 msgid "Tiling I" msgstr "Mosaico I" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level name #: data/kachelnR.ld:27 msgid "Tiling IV" msgstr "Mosaico IV" #. TRANSLATORS: "tiling" is used synonymous to tesselation #. TRANSLATORS: level description #: data/kachelnR.ld:29 msgid "Random aperiodic tiling" msgstr "Mosaico aperiódico aleatório" #. TRANSLATORS: level name #: data/kolben.ld:22 msgid "Flasks" msgstr "Frascos" #. TRANSLATORS: level description #: data/kolben.ld:23 msgid "It depends on the gas they are filled with..." msgstr "Depende do gás com que foram cheios..." #. TRANSLATORS: level name #: data/kunst.ld:34 msgid "Modern Art" msgstr "Arte Moderna" #. TRANSLATORS: level author #: data/kunst.ld:35 data/unterwasser.ld:33 msgid "Berni & Immi" msgstr "Berni & Immi" #. TRANSLATORS: level description #: data/kunst.ld:47 msgid "Beware of ink!" msgstr "Cuidado com a tinta!" #. TRANSLATORS: level name #: data/labskaus.ld:66 msgid "Potpourri" msgstr "Potpourri" #. TRANSLATORS: level author #: data/labskaus.ld:67 msgid "Mark Weyer (editor)" msgstr "Mark Weyer (editor)" #. TRANSLATORS: level description #: data/labskaus.ld:68 msgid "Made of 100% recycled graphics" msgstr "Feito 100% de gráficos reciclados" #. TRANSLATORS: level name #: data/letters.ld:35 msgid "Letters" msgstr "Letras" #. TRANSLATORS: level description #: data/letters.ld:37 msgid "Try to find out, which letters do connect!" msgstr "Tenta descobrir, quais as letras que ligam!" #: data/letters.ld:84 data/letters.ld:103 msgid "" "You have found\n" "the name of the game:\n" "*** CUYO ***\n" "100 Bonus Points" msgstr "" "Descobriste\n" "o nome do jogo:\n" "*** CUYO ***\n" "100 Pontos de Bónus" #: data/letters.ld:132 data/letters.ld:151 msgid "" "You have found\n" "the name of the\n" "programmer of Cuyo:\n" "*** IMMI ***\n" "200 Bonus Points" msgstr "" "Descobriste\n" "o nome do:\n" "programador do Cuyo:\n" "*** IMMI ***\n" "200 Pontos de Bónus" #: data/letters.ld:183 data/letters.ld:205 msgid "" "You have found\n" "the name of the\n" "programmer of this Level:\n" "*** BERNI ***\n" "2000 Bonus Points" msgstr "" "Descobriste\n" "o nome do:\n" "programador deste Nível:\n" "*** BERNI ***\n" "2000 Pontos de Bónus" #. TRANSLATORS: level name #: data/maennchen.ld:21 msgid "Characters" msgstr "Caracteres" #. TRANSLATORS: level name #: data/maze.ld:22 msgid "Maze" msgstr "Labirinto" #. TRANSLATORS: level description #: data/maze.ld:23 msgid "Collect all treasures. Finding the exit is optional." msgstr "Recolhe todos os tesouros. Encontrar a saída é opcional." #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level name #: data/memory.ld:49 msgid "Memory" msgstr "Memória" #. TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, #. at least in the German market. #. TRANSLATORS: level description #: data/memory.ld:64 msgid "Well, memory." msgstr "Bem, Memória." #. TRANSLATORS: level name #: data/mfs.ld:27 msgid "mfs" msgstr "mfs" #. TRANSLATORS: level author #: data/mfs.ld:28 msgid "Konrad" msgstr "Konrad" #. TRANSLATORS: level description #: data/mfs.ld:44 msgid "Who cleans the room?" msgstr "Quem limpa o quarto?" #. TRANSLATORS: level name #: data/nasenkugeln.ld:32 msgid "Noseballs" msgstr "BolasNariz" #. TRANSLATORS: level description #: data/nasenkugeln.ld:44 msgid "" "Put four balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" "Põe quatro bolas juntas; depois, elas explodem. Tenta fazer a relva explodir " "também." #. TRANSLATORS: level description #: data/nasenkugeln.ld:45 msgid "" "Put six balls together; then, they will explode. Try to make the grass " "explode, too." msgstr "" "Põe seis bolas juntas; depois, elas explodem. Tenta fazer a relva explodir " "também." #. TRANSLATORS: "equal" here is in the egalitarian sense #. TRANSLATORS: level name #: data/novips.ld:21 msgid "All colours are equal" msgstr "Todas as cores são iguais" #. TRANSLATORS: level description #: data/novips.ld:22 msgid "Get rid of everything" msgstr "Livra-te de tudo" #. TRANSLATORS: level name #: data/octopi.ld:23 msgid "Octopi" msgstr "Polvo" #. TRANSLATORS: level description #: data/octopi.ld:25 msgid "" "Octopi connect in eight directions. They also remove the anemones that way." msgstr "Polvos ligam em oito direcções. Também removem as anémonas desse modo." #. TRANSLATORS: level name #: data/pacman.ld:30 msgid "Pacman" msgstr "Pacman" #. TRANSLATORS: level description #: data/pacman.ld:45 msgid "Wanna play Pacman?" msgstr "Queres jogar ao Pacman?" #. TRANSLATORS: Apparently, "Paratroopers" is the name of a computer game. #. TRANSLATORS: level name #: data/paratroopers.ld:27 msgid "Paratroopers" msgstr "Paratroopers" #. TRANSLATORS: level description #: data/paratroopers.ld:28 msgid "the other way around" msgstr "ao contrário" #. TRANSLATORS: level name #: data/pfeile.ld:30 msgid "Arrows" msgstr "Flechas" #. TRANSLATORS: level description #: data/pfeile.ld:46 msgid "Arrows can be turned" msgstr "As flechas podem ser giradas" #. TRANSLATORS: level name #: data/pressure.ld:26 msgid "Excess Pressure" msgstr "Pressão Excessiva" #. TRANSLATORS: level name #: data/puzzle.ld:23 msgid "Jigsaw" msgstr "Puzzle" #. TRANSLATORS: level description #: data/puzzle.ld:25 msgid "Get rid of the border" msgstr "Livra-te do bordo" #. TRANSLATORS: level name #: data/rechnen.ld:21 msgid "Calculations" msgstr "Cálculos" #. TRANSLATORS: level name #: data/reversi_brl.ld:22 msgid "Reversi" msgstr "Reverso" #. TRANSLATORS: level name #: data/rohre.ld:28 msgid "Heating" msgstr "Aquecimento" #. TRANSLATORS: level name #: data/rollenspiel.ld:21 msgid "Fantasy role playing" msgstr "Jogando papel de fantasia" #. TRANSLATORS: level name #: data/schach.ld:32 msgid "Chess" msgstr "Xadrez" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:226 msgid "" "King confused.\n" "Castling both sides\n" "300 Bonus Points" msgstr "" "Rei confundido.\n" "Roque de ambos os lados\n" "300 Pontos de Bónus" #. TRANSLATORS: "Queen" and "Castling" are chess terms. #: data/schach.ld:232 msgid "" "Castling queen's side\n" "150 Bonus Points" msgstr "" "Roque do lado da rainha\n" "150 Pontos de Bónus" #. TRANSLATORS: "King" and "Castling" are chess terms. #: data/schach.ld:238 msgid "" "Castling king's side\n" "100 Bonus Points" msgstr "" "Roque do lado do rei\n" "100 Pontos de Bónus" #. TRANSLATORS: level name #: data/schemen.ld:22 msgid "Silhouettes" msgstr "Silhuetas" #. TRANSLATORS: level name #: data/secret.ld:20 msgid " " msgstr " " #. TRANSLATORS: level description #: data/secret.ld:22 msgid "Congratulations, you found the secret level" msgstr "Parabéns, descobriste o nível secreto" #. TRANSLATORS: level name #: data/silbergold.ld:21 msgid "Silver and Gold" msgstr "Prata e Ouro" #. TRANSLATORS: level name #: data/slime.ld:24 msgid "Slime" msgstr "Visco" #. TRANSLATORS: level name #: data/springer.ld:31 msgid "Knights" msgstr "Cavaleiros" #. TRANSLATORS: level author #: data/springer.ld:32 msgid "brl & Immi" msgstr "brl & Immi" #. TRANSLATORS: "Knight" and "Pawn" refer to the chess pieces #. TRANSLATORS: level description #: data/springer.ld:34 msgid "Knights connect via knight moves. Pawns don't connect at all." msgstr "Cavaleiros ligam por movimentos de cavalo. Os peões nunca ligam." #. TRANSLATORS: level name #: data/tennis.ld:21 msgid "Tennis" msgstr "Ténis" #. TRANSLATORS: level description #: data/tennis.ld:23 msgid "Don't be confused by extra balls." msgstr "Não te deixes confundir pelas bolas extra." #. TRANSLATORS: level name #: data/tetris.ld:41 msgid "Tetris" msgstr "Tetris" #. TRANSLATORS: level description #: data/tetris.ld:43 msgid "Complete lines will disappear." msgstr "As linhas completas irão desaparecer." #. TRANSLATORS: level name #: data/theater.ld:39 msgid "Theater" msgstr "Teatro" #. TRANSLATORS: level description #: data/theater.ld:71 msgid "Please keep quiet. Otherwise you will be blasted." msgstr "Por favor faça silêncio. Senão será rebentado." #. TRANSLATORS: level name #: data/tiere.ld:28 msgid "Tiling Animals" msgstr "Animais em Mosaico" #. TRANSLATORS: level name #: data/trees.ld:21 msgid "Holes" msgstr "Buracos" #. TRANSLATORS: "singly connected", or simply connected is a term from #. mathematics, more specifically topology #. TRANSLATORS: level name #: data/trees.ld:24 msgid "Singly connected" msgstr "Meramente ligados" #. TRANSLATORS: level description #: data/trees.ld:26 msgid "Groups with holes explode." msgstr "Grupos com buracos explodem." #. TRANSLATORS: "complex", "nonpositive" and "Euler characteristic" are terms #. from mathematics. "Complex" is here used in the sense of simplicial #. complexes or CW complexes. #. TRANSLATORS: level description #: data/trees.ld:30 msgid "Complexes with nonpositive Euler characteristic explode." msgstr "Complexos com característica Euler não-positiva explodem." #: data/trees.ld:51 msgid "Multiple holes" msgstr "Múltiplos buracos" #. TRANSLATORS: level name #: data/unmoeglich.ld:21 msgid "impossible" msgstr "impossível" #. TRANSLATORS: level name #: data/unterwasser.ld:32 msgid "Under Water" msgstr "Debaixo de Água" #. TRANSLATORS: level description #: data/unterwasser.ld:48 msgid "Bubbles (Level still under construction.)" msgstr "Bolhas (Nível ainda em construção.)" #. TRANSLATORS: level name #: data/viecher.ld:32 msgid "Beasts" msgstr "Bestas" #. TRANSLATORS: level description #: data/viecher.ld:46 msgid "Warning! Fire hazard!" msgstr "Aviso! Perigo de Incêndio!" #. TRANSLATORS: level name #: data/wachsen.ld:25 msgid "Growing" msgstr "Crescendo" #. TRANSLATORS: level name #: data/walls.ld:28 msgid "Walls" msgstr "Paredes" #. TRANSLATORS: level description #: data/walls.ld:30 msgid "Floors don't connect through walls." msgstr "O chão não liga através das paredes." #. TRANSLATORS: level description #: data/wohnungen.ld:25 msgid "Build a nicer neighborhood" msgstr "Constrói uma vizinhança agradável" #. TRANSLATORS: level name #: data/wohnungen.ld:26 msgid "Housing" msgstr "Alojamento" #. TRANSLATORS: level name #: data/wuerfel.ld:27 msgid "Cubes" msgstr "Cubos" #. TRANSLATORS: level description #: data/wuerfel.ld:42 msgid "Will they land in front of or behind the others?" msgstr "Irão eles aterrar na frente ou atrás dos outros?" #. TRANSLATORS: level name #: data/xtradick.ld:59 msgid "Extra fat toys" msgstr "Brinquedos extra gordos" #. TRANSLATORS: level author #: data/xtradick.ld:60 msgid "Berni/Jela" msgstr "Berni/Jela" #. TRANSLATORS: level description #: data/xtradick.ld:61 msgid "What do they do?" msgstr "Que é que eles fazem?" #. TRANSLATORS: level name #: data/zahn.ld:22 msgid "Teeth" msgstr "Dentes" #. TRANSLATORS: level name #: data/ziehlen.ld:21 msgid "Target practice" msgstr "Tiro ao alvo" #~ msgid "Internal error during parsing of options" #~ msgstr "Erro interno durante a análise das opções" #~ msgid "Error: %s\n" #~ msgstr "Erro: %s\n" #~ msgid "Unknown error during file inclusion!\n" #~ msgstr "Erro desconhecido durante inclusão de ficheiro!\n" #~ msgid "%s not a number" #~ msgstr "%s não é um número" #~ msgid "Procedure names can't be single letters." #~ msgstr "Procedure names can't be single letters." #~ msgid "Variable names can't be single letters." #~ msgstr "Variable names can't be single letters." #~ msgid "Please specify \"else ->\" or \"else =>\"" #~ msgstr "Please specify \"else ->\" or \"else =>\"" #~ msgid "%s is a constant. (Variable expected.)" #~ msgstr "%s is a constant. (Variable expected.)" #~ msgid "There have been errors parsing the level description files." #~ msgstr "Existiram erros ao analisar os ficheiros de descrição do nível." #~ msgid "Unknown escape sequence" #~ msgstr "Sequência de escape desconhecida" #~ msgid "Wrong character '%s'" #~ msgstr "Caractere errado '%s'" #~ msgid "Stopped replay, because it requires level %s.\n" #~ msgstr "Repetição parada, porque requer nível %s.\n" #~ msgid "Stopped replay, because it requires %d players.\n" #~ msgstr "Repetição parada, porque requer %d jogadores.\n" #~ msgid "Stopped replay, because it seems to be broken.\n" #~ msgstr "Repetição parada, porque parece estar danificada.\n" #~ msgid "Stopped replay, because a key was pressed.\n" #~ msgstr "Repetição parada, porque foi pressionada uma tecla.\n" #~ msgid "End of replay.\n" #~ msgstr "Fim da repetição.\n" #~ msgid "Could not open log file \"%s\" for reading." #~ msgstr "Incapaz de abrir ficheiro de relatório \"%s\" para leitura." #~ msgid "Parse Error at the beginning of the log file \"%s\"." #~ msgstr "Erro de análise no início do ficheiro de relatório \"%s\"." #~ msgid "Warning: log file version is %s while cuyo version is %s\n" #~ msgstr "" #~ "Aviso: a versão do ficheiro de relatório é %s enquanto a versão do cuyo é " #~ "%s\n" #~ msgid "Could not open log file \"%s\" for writing." #~ msgstr "Incapaz de abrir ficheiro de relatório \"%s\" para escrita." #~ msgid "Image '%s' too small for Icon %d" #~ msgstr "Imagem '%s' é muito pequena para ícone %d" #~ msgid "" #~ "* Warning: Some part of '%s' is drawn with coordinates which are\n" #~ "* not divisible by 4. This may cause graphic glitches in downscaled " #~ "mode.\n" #~ msgstr "" #~ "* Warning: Some part of '%s' is drawn with coordinates which are\n" #~ "* not divisible by 4. This may cause graphic glitches in downscaled " #~ "mode.\n" #~ msgid "Internal error: Too many pictures drawn for one single blob" #~ msgstr "Erro interno: Demasiadas imagens desenhadas para um único borrão" #~ msgid "Position pos=%d out of range (allowed for file=%d: 0 - %d)" #~ msgstr "Posição pos=%d fora dos limites (permitido para file=%d: 0 - %d)" #~ msgid "Quarter qu=%d out of range (allowed: %d - %d)" #~ msgstr "Quarter qu=%d out of range (allowed: %d - %d)" #~ msgid "" #~ "In kind %s, file %d:\n" #~ "%s" #~ msgstr "" #~ "In kind %s, file %d:\n" #~ "%s" #~ msgid "Internal error in const BlopBesitzer::getFeld()" #~ msgstr "Erro interno na constante BlopBesitzer::getFeld()" #~ msgid "Internal error in BlopBesitzer::getFeld()" #~ msgstr "Erro interno em BlopBesitzer::getFeld()" #~ msgid "" #~ "%s, during drawing:\n" #~ "%s" #~ msgstr "" #~ "%s, durante o desenhar:\n" #~ "%s" #~ msgid "" #~ "%s, during animation:\n" #~ "%s" #~ msgstr "" #~ "%s, durante animação:\n" #~ "%s" #~ msgid "" #~ "%s, during %s event:\n" #~ "%s" #~ msgstr "" #~ "%s, durante %s evento:\n" #~ "%s" #~ msgid "Empty Blops are not allowed to explode." #~ msgstr "Aos Blops vazios não é permitido explodirem." #~ msgid "Blop %s at %s" #~ msgstr "Blop %s em %s" #~ msgid "bonus() does not work in the global blob." #~ msgstr "bonus() does not work in the global blob." #~ msgid "message() does not work in the global blob." #~ msgstr "message() does not work in the global blob." #~ msgid "Internal error in Blop::getSpezConst(): Wrong AbsOrtArt %d" #~ msgstr "Internal error in Blop::getSpezConst(): Wrong AbsOrtArt %d" #~ msgid "The variable \"%s\" is read-only." #~ msgstr "A variável \"%s\" é read-only." #~ msgid "Internal error in Blop::setVariable() (op = %d)" #~ msgstr "Erro interno em Blop::setVariable() (op = %d)" #~ msgid "Value %d for kind out of range (allowed: %d - %d)" #~ msgstr "Value %d for kind out of range (allowed: %d - %d)" #~ msgid "Drawing is not allowed at the moment." #~ msgstr "Desenhar não é permitido neste momento." #~ msgid "" #~ "%s: Internal error in Code::getStapelHoehe(): Call illegal for CodeArt %d" #~ msgstr "" #~ "%s: Internal error in Code::getStapelHoehe(): Call illegal for CodeArt %d" #~ msgid "%s: Internal error in Code::getStapelHoehe(): Unknown CodeArt %d" #~ msgstr "%s: Internal error in Code::getStapelHoehe(): Unknown CodeArt %d" #~ msgid "Division by zero" #~ msgstr "Divisão por zero" #~ msgid "Modulo zero" #~ msgstr "Módulo zero" #~ msgid "Warning: Can't use 'explode' in falling blob.\n" #~ msgstr "Warning: Can't use 'explode' in falling blob.\n" #~ msgid "Probability x:0 in the animation program" #~ msgstr "Probability x:0 in the animation program" #~ msgid "rnd(<=0) in the animation program" #~ msgstr "rnd(<=0) in the animation program" #~ msgid "Internal error in Code::eval(): CodeArt undefined_code" #~ msgstr "Internal error in Code::eval(): CodeArt undefined_code" #~ msgid "Internal error in Code::eval(): Unknown CodeArt %d" #~ msgstr "Internal error in Code::eval(): Unknown CodeArt %d" #~ msgid "%s: %s" #~ msgstr "%s: %s" #~ msgid "Parse error in file %s: %s\n" #~ msgstr "Erro de analise no ficheiro %s: %s\n" #~ msgid "There are no (more?) (working?) levels." #~ msgstr "Não há (mais?) níveis a (funcionar?)." #~ msgid "Could not start level:\n" #~ msgstr "Incapaz de iniciar o nível:\n" #~ msgid "Error during the game:\n" #~ msgstr "Erro durante o jogo:\n" #~ msgid "" #~ "Warning: Env-Variable $HOME not found. Using the current directory for " #~ "cuyo.log" #~ msgstr "" #~ "Warning: Env-Variable $HOME not found. Using the current directory for " #~ "cuyo.log" #~ msgid "Debug: Receive greys\n" #~ msgstr "Debug: Receive greys\n" #~ msgid "Debug: Single step mode = %d\n" #~ msgstr "Debug: Single step mode = %d\n" #~ msgid "Debug: Replace fall\n" #~ msgstr "Debug: Replace fall\n" #~ msgid "Debug: Load log file\n" #~ msgstr "Debug: Load log file\n" #~ msgid "" #~ "Level %s (%d)\n" #~ "For replay start level.\n" #~ msgstr "" #~ "Level %s (%d)\n" #~ "For replay start level.\n" #~ msgid "Debug: Do *not* load log file during the game.\n" #~ msgstr "Debug: Do *not* load log file during the game.\n" #~ msgid "Debug: Replay log file = %d\n" #~ msgstr "Debug: Replay log file = %d\n" #~ msgid "Debug: Win instantly\n" #~ msgstr "Debug: Win instantly\n" #~ msgid "" #~ "Debug: Help (all keys to be combined with Alt)\n" #~ " b: Receive greys\n" #~ " e: Single step mode on/off\n" #~ " f: Replace fall\n" #~ " g: Win instantly\n" #~ " h: Help (this one)\n" #~ " L: Load log file\n" #~ " l: Replay log file on/off\n" #~ " r: Reload level\n" #~ " S: Save log file\n" #~ " t: Test of row-exchange on/off\n" #~ " v: Fast forward on/off\n" #~ " z: Slow motion on/off\n" #~ msgstr "" #~ "Debug: Help (all keys to be combined with Alt)\n" #~ " b: Receive greys\n" #~ " e: Single step mode on/off\n" #~ " f: Replace fall\n" #~ " g: Win instantly\n" #~ " h: Help (this one)\n" #~ " L: Load log file\n" #~ " l: Replay log file on/off\n" #~ " r: Reload level\n" #~ " S: Save log file\n" #~ " t: Test of row-exchange on/off\n" #~ " v: Fast forward on/off\n" #~ " z: Slow motion on/off\n" #~ msgid "Debug: Reload levelconf\n" #~ msgstr "Debug: Reload levelconf\n" #~ msgid "" #~ "Could not reload the level description file because of the following " #~ "error:\n" #~ msgstr "" #~ "Could not reload the level description file because of the following " #~ "error:\n" #~ msgid "Debug: Save log file\n" #~ msgstr "Debug: Save log file\n" #~ msgid "Debug: Test of row-exchange = %d\n" #~ msgstr "Debug: Test of row-exchange = %d\n" #~ msgid "Debug: Fast forward = %d\n" #~ msgstr "Debug: Fast forward = %d\n" #~ msgid "Debug: Slow motion = %d\n" #~ msgstr "Debug: Slow motion = %d\n" #~ msgid "Conflicting versions: %s" #~ msgstr "Conflicting versions: %s" #~ msgid "%s required but not defined" #~ msgstr "%s requerido mas não definido" #~ msgid "Wrong type on the righthand side of %s%s=" #~ msgstr "Wrong type on the righthand side of %s%s=" #~ msgid "0 or 1 expected, got %d." #~ msgstr "0 ou 1 esperado, obtido %d." #~ msgid "Color (r,g,b) expected" #~ msgstr "Cor (r,g,b) esperada" #~ msgid "List of atomic data expected" #~ msgstr "Lista de dados atómicos esperada" #~ msgid "Section %s does not exist." #~ msgstr "Secção %s não existe." #~ msgid "Please send the log-file \"cuyo.log\" to cuyo@karimmi.de" #~ msgstr "" #~ "Por favor envie o ficheiro relatório \"cuyo.log\" para cuyo@karimmi.de" #~ msgid "%s:%d: %s\n" #~ msgstr "%s:%d: %s\n" #~ msgid "Internal error: \"%s\" in %s:%d" #~ msgstr "Erro interno : \"%s\" em %s:%d" #~ msgid "SDL error: \"%s\" in %s:%d: %s" #~ msgstr "Erro de SDL: \"%s\" em %s:%d: %s" #~ msgid "\"%s\" already defined." #~ msgstr "\"%s\" já definido." #~ msgid "" #~ "Warning: There's global Cual code _after_ some level definitions. Be " #~ "sure\n" #~ "not to use that Cual code in the levels before it. (Due to a bug, this " #~ "will\n" #~ "sometimes not result in an error message but in strange behaviour.)\n" #~ msgstr "" #~ "Aviso: Existe código Cual global _após_ algumas descrições de níveis.\n" #~ "Certifique-se que não usar esse código Cual no níveis antes das " #~ "descrições.\n" #~ "(Devido a um bug, isto irá por vezes não resultar numa mensagem de erro\n" #~ "mas em comportamentos estranhos.)\n" #~ msgid "\"%s\" not defined inside << >>." #~ msgstr "\"%s\" não definido dentro de << >>." #~ msgid "\"%s\" not defined." #~ msgstr "\"%s\" não definido." #~ msgid "Value is a list and should not." #~ msgstr "Valor é uma lista e não deveria ser." #~ msgid "" #~ msgstr "" #~ msgid "%s is of wrong type. %s expected" #~ msgstr "%s é do tipo errado. %s esperado" #~ msgid "Number of pics exceeds limit %d" #~ msgstr "Número de 'pics' excede o limite %d" #~ msgid "Sorry, no working level description file available." #~ msgstr "" #~ "Desculpe, nenhum ficheiro de descrição de nível funcional disponível." #~ msgid "At position %s (or somewhere below): " #~ msgstr "Na posição %s (ou por vezes abaixo) " #~ msgid "toptime must be positive" #~ msgstr "toptime tem de ser positivo" #~ msgid "neighbours out of range" #~ msgstr "neighbours fora do limite" #~ msgid "nogreyprob must not be negative" #~ msgstr "nogreyprob não pode ser negativo" #~ msgid "At least one %s must be positive." #~ msgstr "Pelo menos um %s tem de ser positivo." #~ msgid "nogreyprob or at least one %s must be positive." #~ msgstr "nogreyprob ou pelo menos um %s tem de ser positivo." #~ msgid " (Level \"%s\")\n" #~ msgstr " (Nível \"%s\")\n" #~ msgid "distkey \"%s\" does not have length %d as others do." #~ msgstr "distkey \"%s\" não tem comprimento %d como as outras têm." #~ msgid "Illegal character \"%c\" in startdist or distkey %s" #~ msgstr "Caractere ilegal \"%c\" em startdist ou distkey %s" #~ msgid "All-spaces startdist entry or distkey is not allowed." #~ msgstr "All-spaces startdist entry or distkey is not allowed." #~ msgid "Invalid alignment" #~ msgstr "Alinhamento inválido" #~ msgid "Non-existent neighbours value." #~ msgstr "Valor neighbours não existente" #~ msgid "Data corruption." #~ msgstr "Corrupção de dados." #~ msgid "Internal error in ort_absolut::finde(): No ort_absolut::korrekt()" #~ msgstr "Internal error in ort_absolut::finde(): No ort_absolut::korrekt()" #~ msgid "illegal ort for ort_absolut::playSample" #~ msgstr "illegal ort for ort_absolut::playSample" #~ msgid "Internal error in Ort::berechne(): Unknown AbsOrtArt %d" #~ msgstr "Internal error in Ort::berechne(): Unknown AbsOrtArt %d" #~ msgid "Internal error in Ort::toString(): Unknown AbsOrtArt %d" #~ msgstr "Internal error in Ort::toString(): Unknown AbsOrtArt %d" #~ msgid "" #~ "Internal error: got confused with all those paths I have to deal with." #~ msgstr "" #~ "Internal error: got confused with all those paths I have to deal with." #~ msgid "" #~ "Could not find \"%s\".\n" #~ "Tried the following places:%s" #~ msgstr "" #~ "Incapaz de encontrar \"%s\".\n" #~ "Tentei nas seguintes localizações:%s" #~ msgid "Error reading preferences file '.cuyo':\n" #~ msgstr "Erro ao ler ficheiro de preferências '.cuyo':\n" #~ msgid "" #~ "Warning: Env-Variable $HOME not found. Using the current directory for ." #~ "cuyo" #~ msgstr "" #~ "Aviso: Variável Ambiente $HOME não encontrada. A usar o directório actual " #~ "para .cuyo" #~ msgid "Warning: Could not write preferences file \"%s\"." #~ msgstr "Aviso. Incapaz de escrever o ficheiro de preferências \"%s\"." #~ msgid "" #~ "Probably trying to fill rectangle of negative size; this causes an " #~ "overflow.\n" #~ msgstr "" #~ "Provavelmente a tentar encher rectângulo de tamanho negativo; isto causa " #~ "um overflow.\n" #~ msgid "Using %s for %s\n" #~ msgstr "A usar %s para %s\n" #~ msgid "" #~ "Warning: %s.%s contains drawing commands.\n" #~ "Drawing is not allowed during events.\n" #~ msgstr "" #~ "Aviso: %s.%s contém comandos de desenho.\n" #~ "Não é permitido desenhar durante eventos.\n" #~ msgid "Internal Error in Sorte::Sorte(): mBlopart = %d" #~ msgstr "Erro Interno em Sorte::Sorte(): mBlopart = %d" #~ msgid "illegal distkey %s for %s" #~ msgstr "distkey ilegal %s para %s" #~ msgid "illegal versions=%d for %s" #~ msgstr "illegal versions=%d for %s" #~ msgid "numexplode undefined for %s" #~ msgstr "numexplode undefined for %s" #~ msgid "%s must not be negative" #~ msgstr "%s must not be negative" #~ msgid "%s>0 not allowed for global or semiglobal" #~ msgstr "%s>0 not allowed for global or semiglobal" #~ msgid "%s>0 not allowed for nothing, global or semiglobal" #~ msgstr "%s>0 not allowed for nothing, global or semiglobal" #~ msgid "File number file=%d out of range (allowed: 0 - %ld)" #~ msgstr "File number file=%d out of range (allowed: 0 - %ld)" #~ msgid "Sound does not work: %s\n" #~ msgstr "Som não funciona: %s\n" #~ msgid "\"%s\" used in startdist, although all %s are 0." #~ msgstr "\"%s\" used in startdist, although all %s are 0." #~ msgid "\"%s\" used as a distkey but no such distkey specified." #~ msgstr "\"%s\" used as a distkey but no such distkey specified." #~ msgid "" #~ "All values for distkey have length %d, so lines in startdist must have " #~ "length %d or %d" #~ msgstr "" #~ "All values for distkey have length %d, so lines in startdist must have " #~ "length %d or %d" #~ msgid "" #~ msgstr "" #~ msgid "%s lacks version %s%s" #~ msgstr "%s falta a versão %s%s" #~ msgid "Uninitialized dimension" #~ msgstr "Dimensão não inicializada" #~ msgid "%s was already accessed, new version %s%s is not allowed" #~ msgstr "%s já foi acedido, nova versão %s%s não é permitida" #~ msgid "Previous problem with %s still persists" #~ msgstr "O problema anterior com %s ainda persiste" #~ msgid "Illegal version %s%s" #~ msgstr "Versão ilegal %s%s" #~ msgid "%s%s not uniquely defined" #~ msgstr "%s%s não definido singularmente" #~ msgid "%s%s eclipsed by more specialized versions" #~ msgstr "%s%s eclipsado por versões mais especializadas" #~ msgid "Read error" #~ msgstr "Erro de leitura" #~ msgid "Endless comment." #~ msgstr "Comentário sem final." #~ msgid "\"%s\" expected" #~ msgstr "\"%s\" esperado" #~ msgid "'%c' expected; found: '%c' (filepos: %d)" #~ msgstr "'%c' esperado; encontrado: '%c' (posição no ficheiro: %d)" #~ msgid "'%c' expected" #~ msgstr "'%c' esperado" #~ msgid "Number expected" #~ msgstr "Número esperado" #~ msgid "Hex number expected" #~ msgstr "Número hexadecimal esperado" #~ msgid "Undefined pixel name" #~ msgstr "Nome de pixel não definido" #~ msgid "" #~ "Fast xpm loading did not work for \"%s\":\n" #~ "%s\n" #~ msgstr "" #~ "Carregamento rápido de xpm não funcionou para \"%s\":\n" #~ "%s\n" #~ msgid "File \"%s.gz\": %s\n" #~ msgstr "Ficheiro \"%s.gz\": %s\n" cuyo-2.1.0/data/0000755000175000017500000000000012422656731010413 500000000000000cuyo-2.1.0/data/gold.ld0000644000175000017500000000455112417277703011610 00000000000000# # Copyright 2005,2011 by Mark Weyer # Modified 2006,2010 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Gold={ name="Gold" author="Mark Weyer" description[1]="Yes, it CAN be completed" description[2]="Yes, it CAN be completed\n...cooperatively" numexplode=10 chaingrass=0 bgcolor=0,0,0 topcolor=255,255,255 textcolor=255,0,0 toptime=200 startpic=gold startdist="**..**..**","**..**..**","**..**..**" neighbours= randomgreys=200 gold = { pics = mgsGoldVerbind.xpm, mgsGold.xpm colourprob = 1 greyprob = 1 << default inhibit = DIR_UUL+DIR_DDL+DIR_DDR+DIR_UUR; default behaviour = goalblob+calculate_size+explodes_on_size; llo = { qu=Q_TL; if kind==kind@(-2,-1) -> {B*; [file=0]{ C;@(-1,0)*; D;*@(-1,0); qu=Q_TR; C;@(-1,0)*; D;*@(-1,0); }} else A*; }; rro = { qu=Q_TR; if kind==kind@(2,-1) -> {B*; [file=0]{ A;@(1,0)*; B;*@(1,0); qu=Q_TL; A;@(1,0)*; B;*@(1,0); }} else A*; }; rru = { qu=Q_BR; if kind==kind@(2,1) -> {B*; [file=0]{ C;@(1,0)*; D;*@(1,0); qu=Q_BL; C;@(1,0)*; D;*@(1,0); }} else A*; }; llu = { qu=Q_BL; if kind==kind@(-2,1) -> {B*; [file=0]{ A;@(-1,0)*; B;*@(-1,0); qu=Q_BR; A;@(-1,0)*; B;*@(-1,0); }} else A*; }; gold = {1; llo; rro; rru; llu;}; >> } << info = if version==0 -> A* else H*; >> } cuyo-2.1.0/data/disco.ld0000644000175000017500000000461111672457342011762 00000000000000# # Copyright 2006 by Bernhard Seckinger # Modified 2011 by Immanuel Halupczok # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bddisco.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. Disco = { #------------------------------------# # Allgemeine Beschreibung des Levels # #------------------------------------# name = "Disco" author = "Berni" description = "Get rid of the strobos!" pics = All*4 greypic = Grey startpic = Start startdist = "..**.**...", ".***.****.", "****.*****", "**********" numexplode = 6 bgcolor = 128,128,128 topcolor = 0,0,0 topoverlap = 0 toptime = 5 textcolor = 60,60,255 randomgreys[1] = 25 randomgreys = 50 << var flash=-1,mode=0; global = { {mode=1},{mode=0},{},{}; switch { 1:2 => {D,A,A,A,B,A,A,A,B,A,A,A,B,A,C,A}; 1:2 => {D,A,A,A,B,A,A,A,B,A,A,A,B,A,A,A}; => {D,A,A,A,B,A,A,A,B,A,C,A,B,A,C,A}; }; flash=pos; }; >> Grey = { pics = bddisco.xpm << Grey = { G*; }; >> } Start = { pics = bddisco.xpm << Start = { if mode@() -> mode=rnd(3); if mode & flash@() -> E* else -> F*; }; >> } All = { pics = bddisco.xpm << All = { if !falling -> { if rnd(4) & flash@() || 1:8 -> kind = rnd(4); pos=kind-All+8; if kind@(-1,1) != nothing -> [qu = Q_TR] *@(-1,1); if kind@(-1,0) != nothing -> [qu = Q_BR] *@(-1,0); }; pos=kind-All;*; }; >> } } cuyo-2.1.0/data/nasenkugeln.ld0000644000175000017500000001042412407360132013155 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2005,2006 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # inGelb1.xpm[.gz], inGelb2.xpm[.gz], inGelb.xpm[.gz], inGras.xpm[.gz], # inGrau.xpm[.gz], inGruen1.xpm[.gz], inGruen2.xpm[.gz], inGruen.xpm[.gz], # inOrangeNasen1.xpm[.gz], inOrangeNasen2.xpm[.gz], inOrangeNasen.xpm[.gz], # inRosaNasen1.xpm[.gz], inRosaNasen2.xpm[.gz], inRosaNasen.xpm[.gz], # inSchwarz2.xpm[.gz], inSchwarz.xpm[.gz] # # referenced from farming.ld, dungeon.ld, labskaus.ld, memory.ld, pause.xpm, # desktop icons Nasenkugeln={ name="Noseballs" author="Immi" numexplode=4 numexplode[1]=6 chaingrass=0 pics=inRosaNasen,inGruen,inGelb,inSchwarz,inOrangeNasen bgcolor=255,255,255 topcolor=200,200,200 toptime=50 startpic=inGras startdist="**********" greypic=inGrau description="Put four balls together; then, they will explode. Try to make the grass explode, too." description[1]="Put six balls together; then, they will explode. Try to make the grass explode, too." << # Zum testen, ob das Animations-Timing genau stimmt, wenn Blops von # einem Spieler zum anderen wandern: Einkommentieren, 2-Spieler-Modus # starten, Reihe rberwechseln lassen. Das Gras sollte komplett Synchron # blinken. # var xxx; # inGras={ # xxx = (xxx + 1) % 10; # switch { # xxx != 0 -> {pos = version; *}; # }; # }; var schlaf; gruengelb={ switch { schlaf==0 -> switch { 1:600 => {1,1,1,1,{1;schlaf=1}}; 1:150 => {1,2,2,1}; => 0; }; schlaf==1 -> switch { 1:80 => {1,0,1,2,{1;schlaf=0}}; => 2; }; }; schema16; # Um Rberreihen zu rgern: #switch { # kind@(0,1) == nothing && kind@(0,2) == outside -> kind@(0,1) = kind; #}; }; rosaorange={switch { 1:200 => {1; #sound("inSchnuff.wav") },1,2,2,1,0,{1; #sound("inSchnuff.wav") },2,2,1,1; => 0; };schema16}; >> inGruen={ pics=inGruen.xpm,inGruen1.xpm,inGruen2.xpm << inGruen=gruengelb; >> } inGelb={ pics="inGelb.xpm",inGelb1.xpm,inGelb2.xpm << inGelb=gruengelb; >> } inSchwarz={ pics=inSchwarz.xpm,inSchwarz2.xpm << var glaenz; inSchwarz={ schema16; # Glanz: if 1:200 => { A,B,C,D,E,F,G,H,G,F,E,D,C,B,A; 1* }; }; >> } inRosaNasen={ pics=inRosaNasen.xpm,inRosaNasen1.xpm,inRosaNasen2.xpm << inRosaNasen=rosaorange; >> } inOrangeNasen={ pics=inOrangeNasen.xpm,inOrangeNasen1.xpm,inOrangeNasen2.xpm << inOrangeNasen=rosaorange; >> } inGras={ pics="inGras.xpm" versions=4 << var li, re; inGras={ li = ??????1? || loc_x == 0; re = ??1????? || loc_x == 9; switch { li && re -> {pos=version + 1; *; pos=version+7; @(0,1)*}; re -> {A*; G@(0,1)*;}; li -> {F*; L@(0,1)*;}; -> { [qu=Q_TL] A*; [qu=Q_BL] A*; [qu=Q_TL] G@(0,1)*; [qu=Q_TR] F*; [qu=Q_BR] F*; [qu=Q_TR] L@(0,1)*; }; } }; >> } inGrau={ pics="inGrau.xpm" << var dreh,gu; inGrau={ switch { dreh==0 => switch { 1:100 -> dreh=1; 1:99 -> dreh=2; }; dreh==1 => { switch { 1:3 -> dreh=0; }; gu+=1; gu%=8 }; dreh==2 => { switch { 1:3 -> dreh=0; }; gu+=7; gu%=8 }; }; pos=gu; 0*; }; >> } } cuyo-2.1.0/data/augen.ld0000644000175000017500000000727712411716446011766 00000000000000# # Copyright 2010-2012,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # referenced from dungeon.ld Augen = { name = "Eyes" author = "Mark Weyer" description = "They are watching you.\nGet rid of them." anzahl = 5 pics = Auge * emptypic = Leer greypic = Zu startpic = Starr * startdist = "*.........","***.....**","*****.****" bgcolor = 255,204,153 numexplode = 5 neighbours = zeilen = 2 Auge = { pics = maLidA.xpm, maLidB.xpm, maLidC.xpm, maLidD.xpm, ma1.xpm, ma2.xpm, ma3.xpm, ma4.xpm, ma5.xpm } Leer = { pics = maLeer.xpm } Zu = { pics = maLidA.xpm, maLidB.xpm, maLidC.xpm, maLidD.xpm } Starr = { } << var ziel,dx,dy,max,blitz,explo; semiglobal = { explo=0; if players>1 -> blitz = explo@@(;!)>0 else -> blitz = 1:100; if blitz => {{B,A,A,A,A,A,A,A,A,A,A,A,A,A,A}; blitz=pos;}; }; augenwinkel = { # Die bisherigen Wert von file und pos werden noch gebraucht file+=2; qu=Q_TL_BL; *@(1,-0.5); qu=Q_BL_TL; *@(1,0.5); qu=Q_TR_BR; *@(-1,-0.5); qu=Q_BR_TR; *@(-1,0.5); }; zielverfolg = { if ziel>2 && players>1 -> { dx = loc_xx@@(ziel-2;!)-loc_xx+320*(3-2*loc_p); dy = loc_yy@@(ziel-2;!)-loc_yy; } else { dx = loc_xx@@(ziel%2)-loc_xx; dy = loc_yy@@(ziel%2)-loc_yy; }; pos = 6 + (6*zeilen)/2; switch { dy>0 && dx==-dy..dy -> pos -= (dx*3*zeilen+dx/2)/dy; dx<0 && dy==dx..-dx -> pos += 6*zeilen+(dy*3*zeilen-dy/2)/dx; dy<0 && dx==dy..-dy -> pos += 12*zeilen-(dx*3*zeilen-dx/2)/dy; dx>0 && dy==-dx..dx -> pos += 18*zeilen+(dy*3*zeilen+dy/2)/dx; -> E; }; if pos==6*(1+4*zeilen) -> G; }; auge = { # Erstmal Explosionen zaehlen (damit der Gegner geblitzt wird) if exploding -> explo@@+=1; # Augapfel (inklusive Standard-Lid) if ziel == 4 -> E else -> zielverfolg; # Aber nach dem Blitz stattdessen erstmal kleine Pupillen if blitz@@ => { ,A,A,A,A,A,A,A,A,A,A,B,C,D,E }; *; # Blinzeln if 1:300 => A else -> D; file = blitz@@; if file => { D,A,A,A,A,A,A,A,B,C,D,,,, }; qu=Q_TL; if kind==kind@(-1,-0.5) -> {pos+=4; *; pos-=4;} else *; qu=Q_TR; if kind==kind@(1,-0.5) -> {pos+=4; *; pos-=4;} else *; qu=Q_BL; if kind==kind@(-1,0.5) -> {pos+=4; *; pos-=4;} else *; qu=Q_BR; if kind==kind@(1,0.5) -> {pos+=4; *; pos-=4;} else *; qu=Q_ALL; augenwinkel; if ziel==4 && informational && 1:5 => {,,,,,kind=Auge+rnd(anzahl)}; }; Auge.init = { ziel = rnd(4); }; Auge = { file = kind-Auge+4; if falling -> F* else -> auge; }; Starr.init = { kind = kind-Starr+Auge; ziel = 4; behaviour = calculate_size + explodes_on_size + goalblob; weight = 0; }; Starr = {}; Leer = { if blitz@@ -> A*; }; Zu = { file = blitz@@; A*; augenwinkel; }; >> } cuyo-2.1.0/data/bonimali.ld0000644000175000017500000010134012402160022012422 00000000000000# # Copyright 2010,2011,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # BoniMali2 = { name = "PowerUps and -Downs" author = "Mark Weyer" description = "Collect PowerUps but avoid the bad ones" description[2] = "Collect PowerUps and hand the bad ones to the other player" description[2,geek] = "Collect PowerUps and hand the bad ones to your opponent^H^H^H^H^H^H^H^Hpartner" anzahl = 14 pics = Kurz*, Normal*, Lang* emptypic = Nichts greypic = Grau startpic = Gras startdist = "....**....","...*++*...",".**+**+**.","*++*++*++*","*++*++*++*" randomgreys = 100 neighbours = bgcolor = 0,0,0 toptime = 100 toppic = "mbmBoss.xpm" topoverlap = 8 topstop = 8 topcolor = 0,0,0 randomfallpos = 1 uhranz = 8 ssanz = 5 stern1w = 3 stern2w = <8*stern1w> stern4w = <4*stern2w> basisdauer = 250 bonusdauer = bonusdauer[easy] = bonusdauer[hard] = malusdauer = malusdauer[easy] = malusdauer[hard] = uhrschritte = 20 # Liste der Boni und Mali nach Sorte # 0 - schnellerer Fall # 1 - langsamerer Fall # 2 - hoeheres numexplode # 3 - niedrigeres numexplode # 4 - alles ununterscheidbar (ausser dem Fall) # 5 - eine Sorte verschwindet # 6 - Bonuspunkte # 7 - die naechsten Grauen sind Gras # 8 - die naechsten Grauen sind Joker # 9 - Kettenreaktionspflicht # 10 - Verbindbarkeit in acht Richtungen # 11 - zwei Raketen # 12 - Zusatzleben # 13 - Verbindbarkeit in zwei Richtungen << var sorte,basis,joker; var schnell,langsam,lang,kurz,ununterscheidbar,verschwind, grauwirdgras,grauwirdjoker,ketten,kettenalt,achtverbind,zweiverbind; var nachN=-1, nachNNO=-1, nachNO=-1, nachONO=-1, nachO=-1, nachOSO=-1, nachSSO=-1, nachSO=-1, nachS=-1, nachSSW=-1, nachSW=-1, nachWSW=-1, nachW=-1, nachWNW=-1, nachNW=-1, nachNNW=-1; var anwesend; var topy; var xx,wert,wert_,maxwert; var stern1a,stern1b, stern2a,stern2b,stern2c,stern2d, stern4a,stern4b,stern4c,stern4d; var sx,sy,sdx,sdy,st,scx,scy,scr,raketen; var fx,fy,fdx,fdy,fs,fe,fls,fle; # (fdx,fdy) ist die Bewegungsrichtung. # Die Richtung der Reihe ist (fdy,-fdx). var explodier,fexplodier; var leben,energie; zwei_hoch = { wert_ = 1; if wert%2 -> wert_ *= 2; if wert%4>=2 -> wert_ *= 4; if wert%8>=4 -> wert_ *= 16; if wert%16>=8 -> wert_ *= 256; }; neue_feinde = { if 1:2 -> {fx=0; fdx=1;} else {fx=19; fdx=-1;}; if 1:2 -> {fy=0; fdy=1;} else {fy=39; fdy=-1;}; fs = ((sx-fx)*fdy-(sy-fy)*fdx-leben+1+rnd(2))/2; fe = fs+leben-1; fls = fe+1; fle = fs-1; }; semiglobal.init = { basis=Normal; verschwind=-1; sx=loc_p*20-21; sy=32; sdx=6-loc_p*4; sdy=-1; st=4; scx=-2; leben=2; energie=50; message("3 blops explode"); neue_feinde; }; kollisionstest_einzel = { wert = (wert-fx)/fdy; if wert_==fy-wert*fdx && wert==fs..fe && !(wert==fls..fle) -> { energie -= 10; if energie<=0 -> { energie=50; leben-=1; }; if wert fls=wert; if wert>fle -> fle=wert; wert=fx+wert*fdy; fexplodier@@(wert/2,wert_/2) .-= 7*(1+7*(wert%2))*(1+63*(wert_%2)); fexplodier@@(wert/2,wert_/2) .+= 4*(1+7*(wert%2))*(1+63*(wert_%2)); }; }; kollisionstest = { wert=sx; wert_=sy; kollisionstest_einzel; wert=sx+1; wert_=sy; kollisionstest_einzel; wert=sx; wert_=sy+1; kollisionstest_einzel; wert=sx+1; wert_=sy+1; kollisionstest_einzel; }; semiglobal = { topy = ((time/toptime)+8)/16; if energie<50 && !(time%75) -> energie+=1; kollisionstest; sx+=sdx; if sx<0 -> sx=0; if sx>18 -> sx=18; sy+=sdy; if sy sy=topy; if sy>38 -> sy=38; if kind@@(sx/2,sy/2)==Gras || kind@@((sx+1)/2,sy/2)==Gras || kind@@(sx/2,(sy+1)/2)==Gras || kind@@((sx+1)/2,(sy+1)/2)==Gras -> { sx=sx@@; sy=sy@@; st=0; }; st-=1; if st<0 -> { sdx = rnd(3)-1; sdy = rnd(3)-1; st = rnd(9); }; kollisionstest; if scx!=-2 -> { scy-=1; if scy scx=-2 else { sorte = (kind@@(scx/2,scy/2)==Grau) + 2*(kind@@(scx/2,scy/2)==Gras) + 4*(kind@@((scx+1)/2,scy/2)==Grau) + 8*(kind@@((scx+1)/2,scy/2)==Gras); if sorte -> { bonus(1); if !scr -> sorte.-=10; if scr && sorte.10 -> {sorte.-=5; bonus(9);}; switch { sorte.3 && sorte.12 -> explodier@@((scx+rnd(1))/2,scy/2)=1; sorte.3 -> explodier@@(scx/2,scy/2)=1; sorte.12 -> explodier@@((scx+1)/2,scy/2)=1; }; scx=-2; }; }; } else if 1:4 -> { scx=sx; scy=sy-1; if raketen -> { scr=1; raketen-=1; } else scr=0; }; fx+=fdx; fy+=fdy; if fy<0 || fy>39 -> neue_feinde; if schnell && langsam -> {schnell=0; langsam=0;}; switch { schnell -> { falling_speed = 12; schnell -= 1; }; langsam -> { falling_speed = 3; langsam -= 1; }; -> falling_speed = 6; }; if lang && kurz -> {lang=0; kurz=0;}; switch { lang -> { basis = Lang; lang -= 1; }; kurz -> { basis = Kurz; kurz -= 1; }; -> basis = Normal; }; if basis!=basis@@ -> switch { basis==Lang -> message("4 blops explode"); basis==Kurz -> message("2 blops explode"); -> message("3 blops explode"); }; if ununterscheidbar -> ununterscheidbar -= 1; if verschwind==-2 && anwesend -> { wert = anwesend.1 + anwesend.2 + anwesend.4 + anwesend.8 + anwesend.16 + anwesend.32 + anwesend.64 + anwesend.128 + anwesend.256 + anwesend. 512 + anwesend.1024 + anwesend.2048 + anwesend.4096 + anwesend.8192 + anwesend.16384 + anwesend.32768; verschwind = rnd(wert); if verschwind>=0 && !anwesend.1 -> verschwind+=1; if verschwind>=1 && !anwesend.2 -> verschwind+=1; if verschwind>=2 && !anwesend.4 -> verschwind+=1; if verschwind>=3 && !anwesend.8 -> verschwind+=1; if verschwind>=4 && !anwesend.16 -> verschwind+=1; if verschwind>=5 && !anwesend.32 -> verschwind+=1; if verschwind>=6 && !anwesend.64 -> verschwind+=1; if verschwind>=7 && !anwesend.128 -> verschwind+=1; if verschwind>=8 && !anwesend.256 -> verschwind+=1; if verschwind>=9 && !anwesend. 512 -> verschwind+=1; if verschwind>=10 && !anwesend.1024 -> verschwind+=1; if verschwind>=11 && !anwesend.2048 -> verschwind+=1; if verschwind>=12 && !anwesend.4096 -> verschwind+=1; if verschwind>=13 && !anwesend.8192 -> verschwind+=1; if verschwind>=14 && !anwesend.16384 -> verschwind+=1; if verschwind>=15 && !anwesend.32768 -> verschwind+=1; } else verschwind = -1; anwesend = 0; if grauwirdgras && grauwirdjoker -> { grauwirdgras=0; grauwirdjoker=0; }; joker=rnd(anzahl); if ketten -> { if !kettenalt -> message("Chain reaction necessary"); ketten -= 1; if !ketten -> message("Chain reaction not necessary"); }; kettenalt=ketten; if achtverbind && zweiverbind -> {achtverbind=0; zweiverbind=0;}; if achtverbind -> achtverbind -= 1; if zweiverbind -> zweiverbind -= 1; }; init = { if 1:stern1w -> {stern1a=rnd(32); stern1a@(0,1)=-1;} else -> stern1a=-1; if 1:stern1w -> {stern1b=rnd(32); stern1b@(0,1)=-1;} else -> stern1b=-1; if 1:stern2w -> {stern2a=rnd(16); stern2a@(0,1)=-1;} else -> stern2a=-1; if 1:stern2w -> {stern2b=rnd(16); stern2b@(0,1)=-1;} else -> stern2b=-1; if 1:stern2w -> {stern2c=rnd(16); stern2c@(0,1)=-1;} else -> stern2c=-1; if 1:stern2w -> {stern2d=rnd(16); stern2d@(0,1)=-1;} else -> stern2d=-1; if 1:stern4w -> {stern4a=rnd(8); stern4a@(0,1)=-1;} else -> stern4a=-1; if 1:stern4w -> {stern4b=rnd(8); stern4b@(0,1)=-1;} else -> stern4b=-1; if 1:stern4w -> {stern4c=rnd(8); stern4c@(0,1)=-1;} else -> stern4c=-1; if 1:stern4w -> {stern4d=rnd(8); stern4d@(0,1)=-1;} else -> stern4d=-1; }; uhr = { if wert -> { if loc_x==xx..xx+1 && loc_y==topy@@/2..topy@@/2+1 -> { pos = (uhrschritte * (maxwert-wert)) / maxwert; switch { loc_x==xx && loc_y==topy@@/2 -> qu=Q_TL_BR; loc_y==topy@@/2 -> qu=Q_TR_BL; loc_x==xx -> qu=Q_BL_TR; -> qu=Q_BR_TL; }; *; }; xx+=2; }; file+=1; }; doppeluhr = { if !(wert && wert_) -> { maxwert=malusdauer; uhr; wert=wert_; maxwert=bonusdauer; uhr; }; }; grasverbindungen = { file = anzahl+uhranz+ssanz; E; if kind@(-1,0)==Gras && kind@(0,-1)==Gras -> {qu=Q_TL;*;}; if kind@(1,0)==Gras && kind@(0,-1)==Gras -> {qu=Q_TR;*;}; if kind@(-1,0)==Gras && kind@(0,1)==Gras -> {qu=Q_BL;*;}; if kind@(1,0)==Gras && kind@(0,1)==Gras -> {qu=Q_BR;*;}; qu=Q_ALL; }; hintergrund[eco] = grasverbindungen; hintergrund = { # Sterne file = anzahl+uhranz; if stern1a!=-1 -> { pos = stern1a%16; if stern1a<16 -> qu=Q_TL else -> qu=Q_TL_BL; *; stern1a+=1; if stern1a==32 -> {stern1a=-1; stern1a@(0,1)=0;}; } else if loc_y==0 && 1:(32*stern1w) -> stern1a=0; if stern1b!=-1 -> { pos = stern1b%16; if stern1b<16 -> qu=Q_TR else -> qu=Q_TR_BR; *; stern1b+=1; if stern1b==32 -> {stern1b=-1; stern1b@(0,1)=0;}; } else if loc_y==0 && 1:(32*stern1w) -> stern1b=0; if stern2a!=-1 -> { pos = stern2a%8; if stern2a<8 -> qu=Q_BL_TL else -> qu=Q_BL; *; stern2a+=1; if stern2a==16 -> {stern2a=-1; stern2a@(0,1)=0;}; } else if loc_y==0 && 1:(16*stern2w) -> stern2a=0; if stern2b!=-1 -> { pos = stern2b%8; if stern2b<8 -> qu=Q_BR_TR else -> qu=Q_BR; *; stern2b+=1; if stern2b==16 -> {stern2b=-1; stern2b@(0,1)=0;}; } else if loc_y==0 && 1:(16*stern2w) -> stern2b=0; if stern2c!=-1 -> { pos = stern2c%8+8; if stern2c<8 -> qu=Q_BL_TL else -> qu=Q_BL; *; stern2c+=1; if stern2c==16 -> {stern2c=-1; stern2c@(0,1)=0;}; } else if loc_y==0 && 1:(16*stern2w) -> stern2c=0; if stern2d!=-1 -> { pos = stern2d%8+8; if stern2d<8 -> qu=Q_BR_TR else -> qu=Q_BR; *; stern2d+=1; if stern2d==16 -> {stern2d=-1; stern2d@(0,1)=0;}; } else if loc_y==0 && 1:(16*stern2w) -> stern2d=0; file+=1; if stern4a!=-1 -> { pos = stern4a%4; if stern4a<4 -> qu=Q_TL else -> qu=Q_TL_BL; *; stern4a+=1; if stern4a==8 -> {stern4a=-1; stern4a@(0,1)=0;}; } else if loc_y==0 && 1:(8*stern4w) -> stern4a=0; if stern4b!=-1 -> { pos = stern4b%4; if stern4b<4 -> qu=Q_TR else -> qu=Q_TR_BR; *; stern4b+=1; if stern4b==8 -> {stern4b=-1; stern4b@(0,1)=0;}; } else if loc_y==0 && 1:(8*stern4w) -> stern4b=0; if stern4c!=-1 -> { pos = stern4c%4; if stern4c<4 -> qu=Q_BL_TL else -> qu=Q_BL; *; stern4c+=1; if stern4c==8 -> {stern4c=-1; stern4c@(0,1)=0;}; } else if loc_y==0 && 1:(8*stern4w) -> stern4c=0; if stern4d!=-1 -> { pos = stern4d%4; if stern4d<4 -> qu=Q_BR_TR else -> qu=Q_BR; *; stern4d+=1; if stern4d==8 -> {stern4d=-1; stern4d@(0,1)=0;}; } else if loc_y==0 && 1:(8*stern4w) -> stern4d=0; # Sprites # Feindexplosion if fexplodier -> { file = anzahl+uhranz+3; B; if fexplodier . 7 -> { switch { fexplodier&7 == 4 -> qu=Q_TL_TL; fexplodier&7 == 3 -> qu=Q_TR_TL; fexplodier&7 == 2 -> qu=Q_BL_TL; fexplodier&7 == 1 -> qu=Q_BR_TL; }; *; fexplodier=fexplodier.-7.+(fexplodier&7-1); }; if fexplodier . 56 -> { switch { fexplodier&56 == 32 -> qu=Q_TL_TR; fexplodier&56 == 24 -> qu=Q_TR_TR; fexplodier&56 == 16 -> qu=Q_BL_TR; fexplodier&56 == 8 -> qu=Q_BR_TR; }; *; fexplodier=fexplodier.-56.+(fexplodier&56-8); }; if fexplodier . 448 -> { switch { fexplodier&448 == 256 -> qu=Q_TL_BL; fexplodier&448 == 192 -> qu=Q_TR_BL; fexplodier&448 == 128 -> qu=Q_BL_BL; fexplodier&448 == 64 -> qu=Q_BR_BL; }; *; fexplodier=fexplodier.-448.+(fexplodier&448-64); }; if fexplodier . 3584 -> { switch { fexplodier&3584 == 2048 -> qu=Q_TL_BR; fexplodier&3584 == 1536 -> qu=Q_TR_BR; fexplodier&3584 == 1024 -> qu=Q_BL_BR; fexplodier&3584 == 512 -> qu=Q_BR_BR; }; *; fexplodier=fexplodier.-3584.+(fexplodier&3584-512); }; }; # Schiff if loc_x == sx@@/2..(sx@@+1)/2 && loc_y == sy@@/2..(sy@@+1)/2 -> { file = anzahl+uhranz+2; A; switch { sx@@%2 && sy@@%2 -> { switch { loc_x==sx@@/2 && loc_y==sy@@/2 -> qu=Q_TL_BR; loc_x==sx@@/2 -> qu=Q_BL_TR; loc_y==sy@@/2 -> qu=Q_TR_BL; -> qu=Q_BR_TL; }; *; }; sx@@%2 -> if loc_x==sx@@/2 -> {qu=Q_TL_TR; *; qu=Q_BL_BR; *} else -> {qu=Q_TR_TL; *; qu=Q_BR_BL; *}; sy@@%2 -> if loc_y==sy@@/2 -> {qu=Q_TL_BL; *; qu=Q_TR_BR; *} else -> {qu=Q_BL_TL; *; qu=Q_BR_TR; *}; -> {qu=Q_ALL; *;}; }; }; # Schuss if loc_x == scx@@/2..(scx@@+1)/2 && loc_y == scy@@/2 -> { file = anzahl+uhranz+2; pos = 1+scr@@; if scy@@==topy@@ || (kind==Gras && !scr@@) -> { if scx@@%2 -> { switch { loc_x==scx@@/2 && scy@@%2 -> qu=Q_BL_BR; loc_x==scx@@/2 -> qu=Q_BL_TR; scy@@%2 -> qu=Q_BR_BL; -> qu=Q_BR_TL; }; *; } else -> if loc_x==scx@@/2 -> { if scy@@%2 -> {qu=Q_BL_BL; *; qu=Q_BR_BR; *;} else -> {qu=Q_BL_TL; *; qu=Q_BR_TR; *;}; } } else -> { if scx@@%2 -> { switch { loc_x==scx@@/2 && scy@@%2 -> qu=Q_TL_BR; loc_x==scx@@/2 -> qu=Q_TL_TR; scy@@%2 -> qu=Q_TR_BL; -> qu=Q_TR_TL; }; *; } else -> if loc_x==scx@@/2 -> { if scy@@%2 -> {qu=Q_TL_BL; *; qu=Q_TR_BR; *;} else -> {qu=Q_TL_TL; *; qu=Q_TR_TR; *;}; } }; }; # Feinde file = anzahl+uhranz+3; A; wert = (loc_x*2-fx@@)/fdy@@; if wert==fs@@..fe@@ && !(wert==fls@@..fle@@) -> { wert=fy@@-wert*fdx@@; if wert==loc_y*2 -> switch { fdx@@>0 && fdy@@>0 -> {qu=Q_TL_TL; *;}; fdx@@>0 -> {qu=Q_BL_TL; *;}; fdy@@>0 -> {qu=Q_TR_TL; *;}; -> {qu=Q_BR_TL; *;}; }; if wert==loc_y*2+1 -> switch { fdx@@>0 && fdy@@>0 -> {qu=Q_TL_BL; *;}; fdx@@>0 -> {qu=Q_BL_BL; *;}; fdy@@>0 -> {qu=Q_TR_BL; *;}; -> {qu=Q_BR_BL; *;}; }; }; wert = (loc_x*2+1-fx@@)/fdy@@; if wert==fs@@..fe@@ && !(wert==fls@@..fle@@) -> { wert=fy@@-wert*fdx@@; if wert==loc_y*2 -> switch { fdx@@>0 && fdy@@>0 -> {qu=Q_TL_TR; *;}; fdx@@>0 -> {qu=Q_BL_TR; *;}; fdy@@>0 -> {qu=Q_TR_TR; *;}; -> {qu=Q_BR_TR; *;}; }; if wert==loc_y*2+1 -> switch { fdx@@>0 && fdy@@>0 -> {qu=Q_TL_BR; *;}; fdx@@>0 -> {qu=Q_BL_BR; *;}; fdy@@>0 -> {qu=Q_TR_BR; *;}; -> {qu=Q_BR_BR; *;}; }; }; # Uhren xx = 5-((schnell@@>0)+(langsam@@>0))%2-((lang@@>0)+(kurz@@>0))%2 -(ununterscheidbar@@>0)-((achtverbind@@>0)+(zweiverbind@@>0)) -(ketten@@>0); file=anzahl; wert=schnell@@; wert_=langsam@@; doppeluhr; wert=ununterscheidbar@@; maxwert=malusdauer; uhr; wert=zweiverbind@@; wert_=achtverbind@@; doppeluhr; wert=ketten@@; maxwert=malusdauer; uhr; wert=lang@@; wert_=kurz@@; doppeluhr; grasverbindungen; }; vordergrund[eco] = {}; vordergrund = { # Feuerwerk if nachN!=-1 -> { file=nachN%anzahl; G; qu=Q_TL; *; qu=Q_TR; *; nachN@(0,-1)=nachN; nachN=-1; }; if nachNNO!=-1 -> { file=nachNNO%anzahl; I; if nachNNO>=anzahl -> qu=Q_TR else qu=Q_TR_TL; *; nachNNO@(nachNNO>=anzahl,-1)=(nachNNO+anzahl)%(2*anzahl); nachNNO=-1; }; if nachNO!=-1 -> { file=nachNO%anzahl; F; qu=Q_TR; *; nachNO@(1,-1)=nachNO; nachNO=-1; }; if nachONO!=-1 -> { file=nachONO%anzahl; J; if nachONO>=anzahl -> qu=Q_TR else qu=Q_TR_BR; *; nachONO@(1,-(nachONO>=anzahl))=(nachONO+anzahl)%(2*anzahl); nachONO=-1; }; if nachO!=-1 -> { file=nachO%anzahl; H; qu=Q_TR; *; qu=Q_BR; *; nachO@(1,0)=nachO; nachO=-1; }; if nachOSO!=-1 -> { file=nachOSO%anzahl; I; if nachOSO>=anzahl -> qu=Q_BR else qu=Q_BR_TR; *; nachOSO@(1,nachOSO>=anzahl)=(nachOSO+anzahl)%(2*anzahl); nachOSO=-1; }; if nachSO!=-1 -> { file=nachSO%anzahl; F; qu=Q_BR; *; nachSO@(1,1)=nachSO; nachSO=-1; }; if nachSSO!=-1 -> { file=nachSSO%anzahl; J; if nachSSO>=anzahl -> qu=Q_BR else qu=Q_BR_BL; *; nachSSO@(nachSSO>=anzahl,1)=(nachSSO+anzahl)%(2*anzahl); nachSSO=-1; }; if nachS!=-1 -> { file=nachS%anzahl; G; qu=Q_BL; *; qu=Q_BR; *; nachS@(0,1)=nachS; nachS=-1; }; if nachSSW!=-1 -> { file=nachSSW%anzahl; I; if nachSSW>=anzahl -> qu=Q_BL else qu=Q_BL_BR; *; nachSSW@(-(nachSSW>=anzahl),1)=(nachSSW+anzahl)%(2*anzahl); nachSSW=-1; }; if nachSW!=-1 -> { file=nachSW%anzahl; F; qu=Q_BL; *; nachSW@(-1,1)=nachSW; nachSW=-1; }; if nachWSW!=-1 -> { file=nachWSW%anzahl; J; if nachWSW>=anzahl -> qu=Q_BL else qu=Q_BL_TL; *; nachWSW@(-1,nachWSW>=anzahl)=(nachWSW+anzahl)%(2*anzahl); nachWSW=-1; }; if nachW!=-1 -> { file=nachW%anzahl; H; qu=Q_TL; *; qu=Q_BL; *; nachW@(-1,0)=nachW; nachW=-1; }; if nachWNW!=-1 -> { file=nachWNW%anzahl; I; if nachWNW>=anzahl -> qu=Q_TL else qu=Q_TL_BL; *; nachWNW@(-1,-(nachWNW>=anzahl))=(nachWNW+anzahl)%(2*anzahl); nachWNW=-1; }; if nachNW!=-1 -> { file=nachNW%anzahl; F; qu=Q_TL; *; nachNW@(-1,-1)=nachNW; nachNW=-1; }; if nachNNW!=-1 -> { file=nachNNW%anzahl; J; if nachNNW>=anzahl -> qu=Q_TL else qu=Q_TL_TR; *; nachNNW@(-(nachNNW>=anzahl),-1)=(nachNNW+anzahl)%(2*anzahl); nachNNW=-1; }; # Raketen, Leben und Energie if loc_y==19 -> { file = anzahl+uhranz+2; # Raketen if loc_x==8 -> { D; qu=Q_TR_BR; *; }; if loc_x==9 -> { wert = (raketen@@/10)%10; pos = 3+(wert+2)/4; switch { wert%4==0 -> qu=Q_BL; wert%4==1 -> qu=Q_BR_BL; wert%4==2 -> qu=Q_TL_BL; -> qu=Q_TR_BL; }; *; wert = raketen@@%10; pos = 3+(wert+2)/4; switch { wert%4==0 -> qu=Q_BL_BR; wert%4==1 -> qu=Q_BR; wert%4==2 -> qu=Q_TL_BR; -> qu=Q_TR_BR; }; *; }; # Leben if loc_x==6 -> { D; qu=Q_TL_BR; *; }; if loc_x==7 -> { wert = (leben@@/10)%10; pos = 3+(wert+2)/4; switch { wert%4==0 -> qu=Q_BL; wert%4==1 -> qu=Q_BR_BL; wert%4==2 -> qu=Q_TL_BL; -> qu=Q_TR_BL; }; *; wert = leben@@%10; pos = 3+(wert+2)/4; switch { wert%4==0 -> qu=Q_BL_BR; wert%4==1 -> qu=Q_BR; wert%4==2 -> qu=Q_TL_BR; -> qu=Q_TR_BR; }; *; }; # Energie if energie@@>loc_x*8 -> { file = anzahl+uhranz+4; if loc_x>=4 -> C else if loc_x>=2 -> B else A; energie=energie@@-loc_x*8; if energie>4 -> energie=4; if energie>2 -> pos+=3; if energie%2 -> qu=Q_TL_BL else qu=Q_BL_BL; *; pos%=3; energie=energie@@-loc_x*8-4; if energie>4 -> energie=4; if energie>2 -> pos+=3; if energie%2 -> qu=Q_TL_BR else qu=Q_BL_BR; if energie>0 -> *; }; }; }; schummel = {}; schummel[easy] = { if sorte==4 -> { sorte = rnd(anzahl-1); if sorte>=4 -> sorte+=1; }; }; Sorte_init = { init; sorte=kind-basis; schummel; kind=sorte+Normal; wert = sorte; zwei_hoch; anwesend=wert_; }; Sorte_connect = { switch { achtverbind@@ -> inhibit = 0; zweiverbind@@ -> inhibit = DIR_U+DIR_D+DIR_UL+DIR_UR+DIR_DL+DIR_DR; -> inhibit = DIR_UL+DIR_UR+DIR_DL+DIR_DR; }; }; Sorte = { if !falling -> hintergrund; if sorte==verschwind@@ && !joker => { file = sorte; { {F*;H*;I*;J*;qu=Q_BL;G*;qu=Q_BR;*}, {F*;H*;J*;qu=Q_TL;I*;qu=Q_BL;*;G*;qu=Q_BR;*;I*}, {H*;J*;qu=Q_TL;F*;I*;qu=Q_BL;*;F*;G*;qu=Q_BR;*;F*;I*}, {H*;qu=Q_TL;F*;I*;J*;qu=Q_BL;*;F*;G*;I*;qu=Q_BR;*;F*;G*;J*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;G*;H*;I*;qu=Q_BR;*;F*;G*;J*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;H*;I*;G*;qu=Q_BR;*;F*;J*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;H*;I*;G*;qu=Q_BR;*;J*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;H*;I*;G*;qu=Q_BR;*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;H*;I*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;F*;H*}, {qu=Q_TL;F*;H*;I*;J*;qu=Q_BL;*;H*}, {qu=Q_TL;F*;I*;J*;H*;qu=Q_BL;*}, {qu=Q_TL;F*;I*;J*}, {qu=Q_TL;F*;J*}, {qu=Q_TL;J*;kind=nothing} } } else -> { if !falling && !exploding && !joker -> anwesend@@.+=anwesend; kind=basis@@+sorte; if falling || (!ununterscheidbar@@ && !exploding) -> { file = sorte; schema4; if achtverbind@@ -> { E; if ?1?????? -> {qu=Q_TR;*;}; if ???1???? -> {qu=Q_BR;*;}; if ?????1?? -> {qu=Q_BL;*;}; if ???????1 -> {qu=Q_TL;*;}; }; }; if ununterscheidbar@@ && !falling -> { ununterscheidbar += 1; if ununterscheidbar > 4 -> { 4; qu=Q_TL; A*; qu=Q_TR; B*; qu=Q_BL; C*; qu=Q_BR; D*; } else -> { file=sorte; qu=Q_ALL; H*; if ununterscheidbar > 3 -> 4; qu=Q_TL; I*; qu=Q_BR; *; qu=Q_TR; J*; qu=Q_BL; *; if ununterscheidbar > 2 -> 4; qu=Q_ALL; F*; if ununterscheidbar > 1 -> 4; qu=Q_TL; J*; qu=Q_BR; *; qu=Q_TR; I*; qu=Q_BL; *; qu=Q_ALL; 4G*; }; } else -> ununterscheidbar = 0; if exploding && sorte==6 && !joker -> bonus(25); if exploding==1 && !falling -> { nachN=sorte; nachNNO=sorte+anzahl; nachNO=sorte; nachONO=sorte+anzahl; nachO=sorte; nachOSO=sorte+anzahl; nachSO=sorte; nachSSO=sorte+anzahl; nachS=sorte; nachSSW=sorte+anzahl; nachSW=sorte; nachWSW=sorte+anzahl; nachW=sorte; nachWNW=sorte+anzahl; nachNW=sorte; nachNNW=sorte+anzahl; if !joker -> { switch { # Boni sorte==1 -> langsam@@=bonusdauer; sorte==3 -> kurz@@=bonusdauer; sorte==5 -> verschwind@@=-2; sorte==6 -> message("Extra points"); sorte==8 -> grauwirdjoker@@=1; sorte==10 -> achtverbind@@=bonusdauer; sorte==11 -> {message("Power missiles"); raketen@@+=2;}; sorte==12 -> {message("Extra ships"); leben@@+=1;}; }; if players>1 -> switch { # Mali fuer 2 Spieler sorte==0 -> schnell@@(;!)=malusdauer; sorte==2 -> lang@@(;!)=malusdauer; sorte==4 -> ununterscheidbar@@(;!)=malusdauer; sorte==7 -> grauwirdgras@@(;!)=1; sorte==9 -> ketten@@(;!)=malusdauer; sorte==13 -> zweiverbind@@(;!)=malusdauer; } else -> switch { # Mali fuer 1 Spieler sorte==0 -> schnell@@=malusdauer; sorte==2 -> lang@@=malusdauer; sorte==4 -> ununterscheidbar@@=malusdauer; sorte==7 -> grauwirdgras@@=1; sorte==9 -> ketten@@=malusdauer; sorte==13 -> zweiverbind@@=malusdauer; }; }; }; }; if joker && !exploding -> {sorte=joker@@; kind=basis@@+sorte;}; if !falling -> vordergrund; }; gras_schema = { file = anzahl+uhranz+ssanz; qu = Q_TL; switch { 0?????00 -> C; 0?????01 -> H; 0?????10 -> I; 0?????11 -> D; 1?????00 -> A; 1?????01 -> F; 1?????10 -> G; 1?????11 -> B; }; *; qu = Q_TR; switch { 000????? -> I; 001????? -> C; 010????? -> D; 011????? -> H; 100????? -> G; 101????? -> A; 110????? -> B; 111????? -> F; }; *; if loc_y==19 -> { qu = Q_BL; switch { ?????00? -> C; ?????01? -> I; ?????10? -> H; ?????11? -> D; }; *; qu = Q_BR; switch { ??00???? -> I; ??01???? -> D; ??10???? -> C; ??11???? -> H; }; *; } else { qu = Q_BL; switch { ????000? -> A; ????001? -> G; ????010? -> F; ????011? -> B; ????100? -> C; ????101? -> I; ????110? -> H; ????111? -> D; }; *; qu = Q_BR; switch { ??000??? -> G; ??001??? -> I; ??010??? -> B; ??011??? -> D; ??100??? -> A; ??101??? -> C; ??110??? -> F; ??111??? -> H; }; *; } }; >> Lang = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm numexplode=4 colourprob=0 << Lang.init = { basis=Lang; Sorte_init; }; Lang.connect = Sorte_connect; Lang = Sorte; >> } Normal = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm numexplode=3 << Normal.init = { basis=Normal; Sorte_init; }; Normal.connect = Sorte_connect; Normal = Sorte; >> } Kurz = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm numexplode=2 colourprob=0 << Kurz.init = { basis=Kurz; Sorte_init; }; Kurz.connect = Sorte_connect; Kurz = Sorte; >> } Grau = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm, mbmGrau.xpm << Grau.init = { init; switch { grauwirdgras@@ && !grauwirdjoker@@ -> { kind=Gras; grauwirdgras@@=0; }; grauwirdjoker@@ && !grauwirdgras@@ -> { kind=basis@@+joker@@; joker=1; grauwirdjoker@@=0; }; }; }; Grau = if informational -> switch { grauwirdgras@@ -> gras_schema; grauwirdjoker@@ -> {file=joker@@; schema4}; -> {file=anzahl+uhranz+ssanz+1;A*}; } else { if explodier -> explode; hintergrund; file=anzahl+uhranz+ssanz+1;A*; vordergrund; }; >> } Gras = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm << Gras.init = init; Gras = if informational -> gras_schema else { if explodier -> explode; hintergrund; if ketten@@ -> behaviour .-= explodes_on_explosion else -> behaviour .+= explodes_on_explosion; gras_schema; vordergrund; }; >> } Nichts = { pics = mbmSchnell.xpm, mbmLangsam.xpm, mbmLang.xpm, mbmKurz.xpm, mbmUnunterscheidbar.xpm, mbmVerschwind.xpm, mbmPunkte.xpm, mbmGrauGras.xpm, mbmGrauJoker.xpm, mbmKetten.xpm, mbmOcti.xpm, mbmRaketen.xpm, mbmLeben.xpm, mbmMinus.xpm, mbmSchnellUhr.xpm, mbmLangsamUhr.xpm, mbmUnunterscheidbarUhr.xpm, mbmMinusUhr.xpm, mbmOctiUhr.xpm, mbmKettenUhr.xpm, mbmLangUhr.xpm, mbmKurzUhr.xpm, mbmSterne12.xpm, mbmSterne4.xpm, mbmSprites.xpm, mbmFeind.xpm, mbmEnergie.xpm, mbmGras.xpm << Nichts.init = init; Nichts = { hintergrund; vordergrund; }; >> } info = { pics = infoicons.xpm << info = if version==0 -> if ketten@@ -> B* else A* else switch { achtverbind@@ -> J*; zweiverbind@@ -> M*; -> E*; }; >> } } cuyo-2.1.0/data/baggis.ld0000644000175000017500000001404411672457342012116 00000000000000# # Copyright <=2002 by Simon Huggenberger # Modified 2006 by Immanuel Halupczok # Maintenance modifications 2003,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # sbBlitzer.xpm[.gz], sbBlitz.xpm[.gz], sbBrezelB.xpm[.gz], # sbBrezelSB.xpm[.gz], sbBrezelS.xpm[.gz], sbBrezel.xpm[.gz], # sbBroetchenB.xpm[.gz], sbBroetchenSB.xpm[.gz], sbBroetchenS.xpm[.gz], # sbBroetchen.xpm[.gz], sbBurgerB.xpm[.gz], sbBurgerSB.xpm[.gz], # sbBurgerS.xpm[.gz], sbBurger.xpm[.gz], sbKaeseB.xpm[.gz], # sbKaeseSB.xpm[.gz], sbKaeseS.xpm[.gz], sbKaese.xpm[.gz], sbOfen.xpm[.gz], # sbSunglas.xpm[.gz] # Baggis={ name="Baggis" author="Simon" # Some cleanup and bugfixes (and maybe new bugs) by Immi numexplode=4 numexplode[1]=6 chaingrass=1 pics=sbKaese,sbBrezel,sbBurger,sbBroetchen,sbSunglas bgcolor=0,0,127 topcolor=200,200,200 toptime=50 startpic=sbOfen startdist="...AAAA...","...AAAA...","...AAAA...","...AAAA..." greypic=sbBlitzer textcolor=159,31,95 randomgreys[1]=200 description="Protect yourself from the flash!" emptypic=sbNix << var blitz,blitzt; var sunglas; # values for sunglas: # 0: none at all # 1: i'm wearing one # 2: one is coming # 3: i'm wearing one and one is passing by # 4: i'm wearing one and one is just leaving an another one is coming geblitzt = { switch { blitz==0 -> switch { sunglas==0 || sunglas==2 -> 2; -> 4;}; -> { blitz=0; 1*; switch { sunglas==0 || sunglas==2 -> {3;kind=rnd(4)}; -> 5;}}; } }; sunglasx = { switch{ sunglas@(0,1)==0 -> sunglas@(0,1)=2; sunglas@(0,1)==1 || sunglas@(0,1)==2 -> sunglas@(0,1)=3; -> sunglas@(0,1)=4;}; }; sungl = { 0; switch { sunglas==2 -> {B*,{sunglas=1;A*}}; sunglas==3 -> {B*,{sunglasx;A*},{sunglas=1;C*}}; sunglas==4 -> {{B*;C*},{sunglasx;A*},{sunglas=1;C*}}; }; }; sbSunglas = {file = version; A; switch { falling==0 -> { { sunglasx; if sunglas==1 -> sunglas=0; 0 },{ if sunglas==0 || sunglas==1 -> kind=sbNix; C } }; }; *;sungl}; >> sbKaese = { pics = sbSunglas.xpm,sbBlitz.xpm, sbKaese.xpm,sbKaeseB.xpm,sbKaeseS.xpm,sbKaeseSB.xpm << sbKaese = {geblitzt;schema16;sungl}; >> } sbBrezel={ pics=sbSunglas.xpm,sbBlitz.xpm, sbBrezel.xpm,sbBrezelB.xpm,sbBrezelS.xpm,sbBrezelSB.xpm << sbBrezel = {geblitzt;schema16;sungl}; >> } sbBurger={ pics=sbSunglas.xpm,sbBlitz.xpm, sbBurger.xpm,sbBurgerB.xpm,sbBurgerS.xpm,sbBurgerSB.xpm << sbBurger = {geblitzt;schema16;sungl}; >> } sbBroetchen={ pics=sbSunglas.xpm,sbBlitz.xpm, sbBroetchen.xpm,sbBroetchenB.xpm,sbBroetchenS.xpm,sbBroetchenSB.xpm << sbBroetchen = {geblitzt;schema16;sungl}; >> } sbBlitzer={ pics=sbSunglas.xpm,sbBlitz.xpm,sbBlitzer.xpm,explosion.xpm << sbBlitzer = { switch { blitzt==1 || blitzt==2 -> {1B*};}; switch { 1:20 && 0??????? => 1,1,1; -> 0;}; blitzt = file; geblitzt;kind=sbBlitzer; switch { 0???0??? -> A; 0???1??? -> D; 1???1??? -> B; 1???0??? -> E; }; 2*; switch { sunglas==1 || sunglas==3 || sunglas==4 -> { F*; switch {blitzt==1 => {3;blitzt=2;A,B,C,D,E,F,G,{H;kind@(0,0)=nothing};*};}}; }; sungl; switch { blitzt==1 -> { 2C*; ### Gibt es einen Grund, warum du zu blitz eins addierst und es nicht einfach auf ### 1 setzt? ### Auerdem: Wenn du wirklich eins addieren willst, tut das, so wie du's machst, ### nicht richtig, wenn ein Brt gleichzeitig von zwei Seiten beblitzt wird. ### Funktionieren wrde "blitz@(1,0)+=1". Siehe "man cual" fr Erklrungen. blitz@(1,0)=blitz@(1,0)+1;blitz@(-1,0)=blitz@(-1,0)+1; switch { kind@(0,1)==sbBlitzer -> {blitz@(2,0)=blitz@(2,0)+1;blitz@(-2,0)=blitz@(-2,0)+1};}; }; }; }; >> } ### Noch ein Vorschlag: Vielleicht ist dir schon aufgefallen, dass wenn ein ### Blitzdings runterfllt, der Blitz nicht ganz nachkommt, links und rechts. ### Mein Vorschlag, um dem Abzuhelfen ist: Es gibt keine Variable blitz mehr; ### statt dessen schaut die geblitzt-Routine, ob ein Nachbarblob ein Blitzdings ### ist und ob das grad am blitzen ist. (Der Einfachheit halber knnte das ### Blitzdings selbst ausrechnen, wie weit es blitzen mchte, damit die ### geblitzt-Routine einfacher wird. sbSunglas = {pics = sbSunglas.xpm,sbSunglas.xpm,sbSunglas.xpm, sbSunglas.xpm,sbSunglas.xpm} sbOfen={ pics = sbSunglas.xpm,sbOfen.xpm << sbOfen = { switch {sunglas==0 -> sunglas=1;}; switch { 11111111 -> F; # 1 10111111 -> D; # 1 11111110 -> H; # 1 11101111 -> L; # 1 11111011 -> P; # 1 10111011 -> Q; # 1 11101110 -> R; # 1 111???11 -> J; # 5 ??11111? -> B; # 5 1???1111 -> G; # 5 11111??? -> E; # 5 ??111??? -> A; #17 ????111? -> C; #17 111????? -> I; #17 1?????11 -> K; #17 0?0?1?0? -> O; 100?1?00 -> O; 0??????? -> M; -> N; }; 1;*;sungl}; >> } sbNix={ pics = sbSunglas.xpm,sbBlitz.xpm << sbNix = {geblitzt;kind=sbNix}; >> } } cuyo-2.1.0/data/kacheln6.ld0000644000175000017500000000776412415051252012352 00000000000000# # Copyright 2006,2011,2014 by Mark Weyer # Modified 2010 by Mark Weyer # Maintenance modifications 2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Kacheln_Sechseck = { # TRANSLATORS: "tiling" is used synonymous to tesselation name = "Tiling I" author = "Mark Weyer" sorten = 5 pics = Kachel* greypic = Kachel startpic = Kachel startdist = "....***...","....***...","...*+*+*..", "..**+++**.","..*+++++*.",".***+++***",".*********" startdist[2] = "....*.*...","...*+*+*..", "..**+++**.","..*+++++*.","..-*+++*-.","..-*****-." numexplode = 8 numexplode[2] = 7 numexplode[easy] = 6 numexplode[2,easy] = 5 neighbours = << var quadrat_links, quadrat_unten, quadrat_rechts, dreieck_links, dreieck_rechts; >> Kachel = { pics = mkaSechseckKacheln.xpm, mkaSechseckRahmen.xpm << var links, unten, rechts; Kachel.init = { quadrat_links = rnd(sorten); quadrat_unten = rnd(sorten); quadrat_rechts = rnd(sorten); dreieck_links = rnd(sorten); dreieck_rechts = rnd(sorten); }; Kachel = { links = kind@(-1,0.5)!=nothing && kind@(-1,0.5)!=outside; unten = kind@(0,1)!=nothing && kind@(0,1)!=outside; rechts = kind@(1,0.5)!=nothing && kind@(1,0.5)!=outside; file=1; pos=2*(kind@(0,-1)!=nothing && kind@(0,-1)!=outside); if kind@(-1,-0.5)!=nothing && kind@(-1,-0.5)!=outside -> {qu=Q_BL_TL; pos+=1;} else qu=Q_TL_TL; *; pos=2*(kind@(0,-1)!=nothing && kind@(0,-1)!=outside); if kind@(1,-0.5)!=nothing && kind@(1,-0.5)!=outside -> qu=Q_TR_TR else {qu=Q_BR_TR; pos+=1;}; *; pos=2-2*unten; if links -> {qu=Q_TL_BL; pos=(pos-1)%4;} else qu=Q_BL_BL; *; pos=2-2*unten; if rechts -> qu=Q_BR_BR else {qu=Q_TR_BR; pos=(pos-1)%4;}; *; qu=Q_ALL; file=0; pos=6*(kind-Kachel); *; if links -> { if ????1? -> pos=6*(kind-Kachel)+3 else pos=6*quadrat_links+3; qu=Q_BL; *; pos-=1; qu=Q_BR_TR; *@(-1,0.5); if unten -> { if ???11? -> pos=6*(kind-Kachel)+5 else pos=6*dreieck_links+5; qu=Q_TL_BL; *; qu=Q_BL_TL; *@(0,1); pos-=1; qu=Q_TR; *@(-1,0.5); qu=Q_BR; *@(-1,0.5); }; }; if unten -> { if ???1?? -> pos=6*(kind-Kachel)+1 else pos=6*quadrat_unten+1; qu=Q_TL_BL; *; qu=Q_TR_BR; *; qu=Q_BL_TL; *@(0,1); qu=Q_BR_TR; *@(0,1); }; if rechts -> { if ??1??? -> pos=6*(kind-Kachel)+2 else pos=6*quadrat_rechts+2; qu=Q_TR_BR; *; qu=Q_TL; pos+=1; *@(1,0.5); if unten -> { if ??11?? -> pos=6*(kind-Kachel)+3 else pos=6*dreieck_rechts+3; qu=Q_TR_BR; *; qu=Q_BR_TR; *@(0,1); pos+=1; qu=Q_TL; *@(1,0.5); qu=Q_BL; *@(1,0.5); }; }; }; >> } } cuyo-2.1.0/data/summary.ld0000644000175000017500000002532212422656677012366 00000000000000# This file was automatically generated by genSummary.pl. Don't modify # it directly. Modify summary.in instead. Nasenkugeln = { filename = "nasenkugeln.ld" name = "Noseballs" author = "Immi" } Pfeile = { filename = "pfeile.ld" name = "Arrows" author = "Immi" } HexKugeln = { filename = "hexkugeln.ld" name = "Balls & Rods" author = "Immi" } Viecher = { filename = "viecher.ld" name = "Beasts" author = "Immi" } UnterWasser = { filename = "unterwasser.ld" name = "Under Water" author = "Berni & Immi" } Kunst = { filename = "kunst.ld" name = "Modern Art" author = "Berni & Immi" } Baelle = { filename = "baelle.ld" name = "Rotating Balls" author = "Immi" } Hormone = { filename = "hormone.ld" name = "Hormones" author = "Immi" } Go = { filename = "hecken.ld" name = "Gardens" author = "Immi" } Ebene = { filename = "ebene.ld" name = "Plane" author = "Immi" } Schach = { filename = "schach.ld" name = "Chess" author = "Immi" } Wachsen = { filename = "wachsen.ld" name = "Growing" author = "Immi" } ASCII = { filename = "ascii.ld" name = "ASCII" author = "Immi" } Tiere = { filename = "tiere.ld" name = "Tiling Animals" author = "Immi" } DreiD = { filename = "3d.ld" name = "3D" author = "Immi" } Doors = { filename = "doors.ld" name = "Doors" author = "Immi" } Walls = { filename = "walls.ld" name = "Walls" author = "Immi" } Wuerfel = { filename = "wuerfel.ld" name = "Cubes" author = "Immi" } Theater = { filename = "theater.ld" name = "Theater" author = "Immi" } Antarctic = { filename = "antarctic.ld" name = "Antarctic" author = "Berni" } Bonus = { filename = "bonus.ld" name = "Bonus" author = "Berni" } Letters = { filename = "letters.ld" name = "Letters" author = "Berni" } Tetris = { filename = "tetris.ld" name = "Tetris" author = "Berni" } Memory = { filename = "memory.ld" name = "Memory" author = "Berni" } ColorShape = { filename = "colorshape.ld" name = "Shape and Color" author = "Berni" } Disco = { filename = "disco.ld" name = "Disco" author = "Berni" } Aliens = { filename = "aliens.ld" name = "Aliens" author = "Berni" } Xtradick = { filename = "xtradick.ld" name = "Extra fat toys" author = "Berni/Jela" } Kolben = { filename = "kolben.ld" name = "Flasks" author = "Mark Weyer" } Unmoeglich = { filename = "unmoeglich.ld" name = "impossible" author = "Mark Weyer" } Labyrinth = { filename = "maze.ld" name = "Maze" author = "Mark Weyer" } Tennis = { filename = "tennis.ld" name = "Tennis" author = "Mark Weyer" } Slime = { filename = "slime.ld" name = "Slime" author = "Mark Weyer" } SilberGold = { filename = "silbergold.ld" name = "Silver and Gold" author = "Mark Weyer" } Gold = { filename = "gold.ld" name = "Gold" author = "Mark Weyer" } Zahn = { filename = "zahn.ld" name = "Teeth" author = "Mark Weyer" } Bunt = { filename = "bunt.ld" name = "Gaudy balls" author = "Mark Weyer" } Labskaus2 = { filename = "labskaus.ld" name = "Potpourri" author = "Mark Weyer (editor)" } Baender = { filename = "baender.ld" name = "Ribbons" author = "Mark Weyer" } Ziehlen = { filename = "ziehlen.ld" name = "Target practice" author = "Mark Weyer" } Maennchen = { filename = "maennchen.ld" name = "Characters" author = "Mark Weyer" } Rechnen = { filename = "rechnen.ld" name = "Calculations" author = "Mark Weyer" } GoII = { filename = "go2.ld" name = "Go" author = "Mark Weyer" } Kacheln_Sechseck = { filename = "kacheln6.ld" name = "Tiling I" author = "Mark Weyer" } Kacheln_Viereck = { filename = "kacheln4.ld" name = "Tiling II" author = "Mark Weyer" } Kacheln_Fuenfeck = { filename = "kacheln5.ld" name = "Tiling III" author = "Mark Weyer" } Kacheln_azyklisch = { filename = "kachelnR.ld" name = "Tiling IV" author = "Mark Weyer" } Puzzle = { filename = "puzzle.ld" name = "Jigsaw" author = "Mark Weyer" } Dungeon = { filename = "dungeon.ld" name = "Treasure hunt" author = "Mark Weyer" } Secret = { filename = "secret.ld" name = " " author = "Mark Weyer" } Rollenspiel = { filename = "rollenspiel.ld" name = "Fantasy role playing" author = "Mark Weyer" } Jump = { filename = "jump.ld" name = "Jump" author = "Mark Weyer" } Octopi = { filename = "octopi.ld" name = "Octopi" author = "Mark Weyer" } Aehnlich = { filename = "aehnlich.ld" name = "Similar balls" author = "Mark Weyer" } Augen = { filename = "augen.ld" name = "Eyes" author = "Mark Weyer" } Trees2 = { filename = "trees.ld" name = "Holes" name[geek] = "Singly connected" author = "Mark Weyer" } Schemen = { filename = "schemen.ld" name = "Silhouettes" author = "Mark Weyer" } BoniMali2 = { filename = "bonimali.ld" name = "PowerUps and -Downs" author = "Mark Weyer" } Fische = { filename = "fische.ld" name = "Fish" author = "Mark Weyer" } NoVIPs = { filename = "novips.ld" name = "All colours are equal" author = "Mark Weyer" } Angst = { filename = "angst.ld" name[easy] = "Balls at ease" name = "Frightened balls" name[hard] = "Angry balls" author = "Mark Weyer" } Flechtwerk = { filename = "flechtwerk.ld" name = "Wickerwork" author = "Mark Weyer" } Farming = { filename = "farming.ld" name = "Farming" author = "Mark Weyer" } Himmel = { filename = "himmel.ld" name = "Sky" author = "Jela" } Jahreszeiten = { filename = "jahreszeiten.ld" name = "The four Seasons" author = "Jela" } Embroidery = { filename = "embroidery.ld" name = "Embroidery" author = "Jela" } Elemente = { filename = "elemente.ld" name = "Elements" author = "brl" } Wohnungen = { filename = "wohnungen.ld" name = "Housing" author = "brl" } Darken = { filename = "darken.ld" name = "Darken" author = "brl" } Rohre = { filename = "rohre.ld" name = "Heating" author = "brl" } Pressure = { filename = "pressure.ld" name = "Excess Pressure" author = "brl" } Explosive = { filename = "explosive.ld" name = "Explosive" author = "brl" } ReversiBRL = { filename = "reversi_brl.ld" name = "Reversi" author = "brl" } ParatroopersInvers = { filename = "paratroopers.ld" name = "Paratroopers" author = "brl" } Springer = { filename = "springer.ld" name = "Knights" author = "brl & Immi" } Baggis = { filename = "baggis.ld" name = "Baggis" author = "Simon" } Pacman = { filename = "pacman.ld" name = "Pacman" author = "Simon" } mfs = { filename = "mfs.ld" name = "mfs" author = "Konrad" } Fractals = { filename = "fractals.ld" name = "Fractals" author = "Austin W." } level[all]= # easy Nasenkugeln, # First level at all Farming, # Introduces that levels are rather different Embroidery, Maennchen, # First level with weight<>1 Octopi, # Introduces neighbours_eight Springer, # Introduces neighbours_knight and (somehow) single player greys Kacheln_Sechseck, # First level with hex mode and neighbours_hex6 # medium Tiere, # Introduces chaingrass=1 Baender, # Introduces neighbours_diagonal HexKugeln, # First level with randomgreys Schemen, Bonus,Pfeile,Fische,Theater,Rechnen, Jahreszeiten,Disco,Wohnungen,Baggis,Tetris, Kacheln_Viereck, Rollenspiel, # First level with different numexplodes Himmel, # Introduces mirror=1 Kolben,Baelle,Aliens, Labyrinth,Unmoeglich,Elemente,Slime,Hormone,Flechtwerk, # hard Explosive,Puzzle,Letters,SilberGold,Gold,DreiD,Zahn,Kunst,Augen,Doors,Bunt, Antarctic,Rohre,BoniMali2,Darken,Kacheln_Fuenfeck,Ebene,Dungeon, ColorShape,Jump,Viecher,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, # very hard Angst,Labskaus2,Walls,Kacheln_azyklisch,Trees2,Wuerfel,NoVIPs,Wachsen,GoII level[main]= Nasenkugeln,Farming,Embroidery,Maennchen,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus,Pfeile,Fische,Theater, Jahreszeiten,Disco,Wohnungen,Baggis, Kacheln_Viereck,Rollenspiel,Himmel,Baelle, Labyrinth,Elemente,Hormone, Explosive,Puzzle,Letters,SilberGold,Zahn,Doors,Bunt, BoniMali2,Darken,Kacheln_Fuenfeck,Ebene,Dungeon, ColorShape,Viecher,Memory,Schach,Aehnlich, Tennis, Angst,Labskaus2,Walls,Wuerfel,Wachsen level[main,easy]= Nasenkugeln,Farming,Embroidery,Maennchen,Kacheln_Sechseck, Bonus,Pfeile,Fische,Theater, Kacheln_Viereck,Kolben, Labyrinth,Unmoeglich, Puzzle,SilberGold,DreiD,Bunt, BoniMali2,Kacheln_Fuenfeck,Dungeon, Aehnlich, Tennis, Angst,Kacheln_azyklisch,Trees2,Wuerfel level[main,hard]= Maennchen,Springer, Fische,Theater,Rechnen, Aliens, Slime, Explosive,Puzzle,Gold, BoniMali2,Darken,Dungeon, Memory,Fractals,Aehnlich, Tennis, Angst,Labskaus2,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[game]= Springer, Tetris, Rollenspiel,Aliens, Puzzle,Letters, BoniMali2,Dungeon, Jump,Memory,Schach,ReversiBRL, Tennis, GoII level[extreme]= Bonus, # 1+2 Sorten, numexplode=1, toptime=4 Theater, # 84 Stueck Gras Slime, # 1+1 Sorten Explosive, # 1+2 Sorten Puzzle, # 1+0 Sorten Gold, # 1+0 Sorten Zahn, # 1+0/1 Sorten (1+0 oder 1+1, wie man's nimmt) Bunt, # 136 Sorten, numexplode=2 Rohre, # 2+2 Sorten, numexplode=20/18 BoniMali2, # 14 Sorten Memory, # 13 Sorten, numexplode=2 Aehnlich, # 2^omega Sorten Trees2, # numexplode=0 GoII # numexplode=0 level[nofx]= Nasenkugeln,Farming,Embroidery,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus, Jahreszeiten,Wohnungen, Kacheln_Viereck,Himmel, Labyrinth,Unmoeglich,Elemente,Hormone, Ebene level[nofx,easy]= Nasenkugeln,Farming,Embroidery,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus, Jahreszeiten,Wohnungen, Kacheln_Viereck,Himmel, Labyrinth,Unmoeglich,Elemente,Hormone, Ebene,Angst level[weird]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Angst,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[weird,hard]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Angst,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII,Secret level[weird,easy]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[contrib]=ASCII,Xtradick,Pressure,mfs,ParatroopersInvers,Ziehlen,Pacman ordered[contrib]=0 globals=globals.ld cuyo-2.1.0/data/tiere.ld0000644000175000017500000000547712420035230011760 00000000000000# # Copyright <=2004,2014 by Immanuel Halupczok # Modified 2006,2011 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # itBlau.xpm[.gz], itGelb.xpm[.gz], itGras.xpm[.gz], itGrau.xpm[.gz], # itGruen.xpm[.gz], itHintergrund.xpm[.gz], itLeer.xpm[.gz] # Tiere = { name="Tiling Animals" author="Immi" numexplode=6 chaingrass=1 neighbours= pics=tier * 3 greypic=grau startpic=gras startdist="................A..A", "..........A..A......", "....A..A..........A.", ".A..........A..A....", "......A..A..........", "A..A..........A..A..", "........A..A........", "..A..A..........A..A", "..........A..A......", "....A..A..........A.", ".A..........A..A....", "......A..A..........", "A..A..........A..A..", "........A..A........", "..A..A..............", "...................." randomgreys[1]=100 bgcolor=0,0,0 topcolor=68,68,68 toppic=itTop.xpm topoverlap=23 << var po; var dy = 0; semiglobal.row_up = { dy+=1; }; semiglobal.row_down = { dy-=1; }; nicht_tier = { po = dy@@ + loc_y + (loc_x % 2); po = (po % 3) * 10; if loc_x % 2 == 0 -> po += 2; pos = po + 1; *@(0,-1); pos = po + 6; *@(0,0); pos = po + 5; [qu=Q_TR_BR] *@(-1,-0.5); pos = po + 5; [qu=Q_BR_TR] *@(-1,0.5); pos = po + 7; [qu=Q_TL_BL] *@(1,-0.5); pos = po + 7; [qu=Q_BL_TL] *@(1,0.5); }; tier = { file=kind-tier; if falling -> { if loc_x % 2 == 0 -> E* else C*; } else nicht_tier; }; >> tier = { pics=itBlau.xpm,itGelb.xpm,itGruen.xpm } grau = { pics=itGrau.xpm << grau={ if informational -> if loc_p == 2 -> E* else C* else nicht_tier; }; >> } gras = { pics=itGras.xpm << gras={ if informational -> if loc_p == 2 -> E* else C* else nicht_tier; }; >> } } cuyo-2.1.0/data/labskaus.ld0000644000175000017500000002220411705634613012457 00000000000000# # Copyright 2005,2006,2012 by Mark Weyer # Modified 2011 by Mark Weyer # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # Partly based on the following levels: # viecher.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # memory.ld which, at that time, was # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2002,2003 by the cuyo developers # Partly based on the following levels: # hexkugeln.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # kunst.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # pinguine.ld which, at that time, was # Created <=2002 by Bernhard Seckinger # hormone.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # viecher.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # nasenkugeln.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # pfeile.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # jahreszeiten.ld which, at that time, was # Copyright <=2002 by Daniela Lipps # Modified 2011 by Immanuel Halupczok # Maintenance modifications 2002,2006,2008,2011 by the cuyo developers # baelle.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # puzzle.ld which, at that time, was # Copyright 2006 by Mark Weyer # Maintenance modifications 2006 by the cuyo developers # angst.ld which, at that time, was # nasenkugeln.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # Modified 2005,2006 by Immanuel Halupczok # Maintenance modifications 2005,2006 by the cuyo developers # theater.ld which, at that time, was # Copyright 2008 by Immanuel Halupczok # Copyright 2011 by Mark Weyer # Maintenance modifications 2008,2011,2012 by the cuyo developers # himmel.ld which, at that time, was # Copyright <=2002 by Daniela Lipps # Maintenance modifications 2006 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # referenced from memory.ld Labskaus2 = { name = "Potpourri" author = "Mark Weyer (editor)" description = "Made of 100% recycled graphics" pics = ivElephant, bmG, jjJahr, Baelle, mpAlle, man4 startpic = inGras startdist = "**********" chaingrass = 1 greypic = ithDreck nogreyprob = 1 emptypic = Leer extrapics = 1 << var dy,vog_r,vog_l,neuer_vogel; vordergrund = { file=0; if vog_r -> { A*,B*,C*,D*, {[qu=Q_TL_TR] A*}, {[qu=Q_TL_TR] B*; [qu=Q_TR_TL] B*@(1,0)}, {[qu=Q_TL_TR] C*; [qu=Q_TR_TL] C*@(1,0)}, {[qu=Q_TL_TR] D*; [qu=Q_TR_TL] D*@(1,0); vog_r@(1,0) = 1; vog_r=0; if players == 2 && loc_x == 9 && loc_p == 1 -> neuer_vogel@@(0, loc_y; >) = 1 } }; if vog_l -> { H*,G*,F*,E*, {[qu=Q_BR_BL] H*}, {[qu=Q_BR_BL] G*; [qu=Q_BL_BR] G*@(-1,0)}, {[qu=Q_BR_BL] F*; [qu=Q_BL_BR] F*@(-1,0)}, {[qu=Q_BR_BL] E*; [qu=Q_BL_BR] E*@(-1,0); vog_l@(-1,0) = 1; vog_l=0; if players == 2 && loc_x == 0 && loc_p == 2 -> neuer_vogel@@(9, loc_y; <) = 1 } }; if vog_l || vog_r -> neuer_vogel = 0; if neuer_vogel && loc_x == 0 => { {[qu=Q_TR_TL] B*}, {[qu=Q_TR_TL] C*}, {[qu=Q_TR_TL] D*; vog_r=1; neuer_vogel = 0} }; if neuer_vogel && loc_x == 9 => { {[qu=Q_BL_BR] G*}, {[qu=Q_BL_BR] F*}, {[qu=Q_BL_BR] E*; vog_l=1; neuer_vogel = 0} }; }; >> semiglobal = { pics=jhBallons.xpm << var ballon, ballon_x, ballon_y; semiglobal = { if ballon -> { @@(ballon_x,ballon_y)*; ballon_y-=1; ballon = ballon_y>=0; } else -> if 1:30 -> {ballon=1; ballon_x=rnd(10); ballon_y=20}; }; semiglobal.row_up = dy+=1; semiglobal.row_down = dy-=1; >> } ivElephant = { numexplode[1] = 9 numexplode[2] = 6 colourprob = 2 pics=jjExtra.xpm, ivElefant.xpm << ivElephant={ file=extrapics; switch { 0?0?0?0? -> {{A,Y,a};*;}; 0?1?0?0? -> {{B,U,W};*;}; 1?1?1?0? -> {{J,R,T};*;}; 1?0?0?0? -> {{M,Q,S};*;}; 1?1?0?1? -> {{O,V,X};*;}; -> schema16; }; vordergrund; }; >> } bmG = { numexplode = 2 colourprob = 2 pics=jjExtra.xpm, bmKarten.xpm,bmStrich.xpm << var zuklappen=1; bmG={ file=extrapics; switch { falling -> G*; zuklappen => { # Grade aufgekommen oder so was. # Aber erst noch ein Bildchen lang normal, weil sonst die # Start-Karten schon beim ersten Bild leicht umklappen. {zuklappen=0;G*}, V*, {file+=1;A*}, P* }; 1:70 => { # Kurz aufklappen P*, {file+=1;A*}, V*, G*,G*,G*,G*,G*,G*,G*,G*,G*,G*,G*,G*,G*,G*, V*, {file+=1;A*}, P* }; -> A*; # zugeklappt }; vordergrund; }; >> } jjJahr = { numexplode[1] = 7 numexplode[2] = 4 colourprob = 2 pics=jjExtra.xpm, jjWinter1.xpm,jjWinter2.xpm,jjWinter3.xpm,jjWinter4.xpm, jjFruehling1.xpm,jjFruehling2.xpm,jjFruehling3.xpm,jjFruehling4.xpm, jjSommer1.xpm,jjSommer2.xpm,jjSommer3.xpm,jjSommer4.xpm, jjHerbst1.xpm,jjHerbst2.xpm,jjHerbst3.xpm,jjHerbst4.xpm << var dt; jjJahr.init={dt=rnd(16)+rnd(16)}; jjJahr={ file=((time+dt)%512)/32 + extrapics; schema16; if 1?1?1?1? && (time+dt) % 512 == 13*32 -> {vog_r=1; vog_l=1}; vordergrund; }; >> } Baelle = { numexplode = 4 colourprob = 2 pics=jjExtra.xpm, ibBaelle.xpm,ibBaelle2.xpm << Baelle={ file=extrapics; schema16; pos=time%12; file+=1; *; vordergrund; }; >> } mpAlle = { pics = jjExtra.xpm, mpAlle.xpm numexplode = 9 colourprob = 2 << mpAlle = {file=extrapics; schema5; vordergrund;}; >> } man4 = { numexplode = 4 colourprob = 2 pics = jjExtra.xpm, manKoepfe4.xpm, manGesichter4.xpm << var alt_y,faellt,gemalt; var bedroht,abstand; fallbilder = { faellt = alt_y O; faellt@(0,0) => {P,P,P}; -> gemalt=0; }; alt_y = loc_y; }; gesicht[easy] = { switch { gemalt -> ; exploding -> J; -> if 1:20 => {A,A,A,A,A,A,A,A,A,I,I,I,I} else -> I; }; }; gesicht = { abstand = 2*loc_y-loc_y@@(0)-loc_y@@(1); bedroht = (kind==kind@@(0) || kind==kind@@(1)) && abstand>=-6; switch { gemalt -> ; falling -> U; exploding -> H; bedroht && abstand>13 -> E; bedroht && abstand>8 -> K; bedroht -> if abstand<-5 || abstand>5 -> K else {M,N}; -> V; }; }; gesicht[hard] = { switch { gemalt -> ; exploding -> G; -> if 1:20 => {B,B,B,B,B,B,B,B,B,F,F,F,F} else -> F; }; }; man4 = { file=extrapics; schema4; file+=1; fallbilder; gesicht; *; vordergrund; }; >> } inGras = { pics=jjExtra.xpm, "inGras.xpm" colourprob[hard] = 1 versions = 4 << var li, re; inGras={ file=extrapics; li = ??????1? || loc_x == 0; re = ??1????? || loc_x == 9; switch { li && re -> {pos=version + 1; *; pos=version+7; @(0,1)*}; re -> {A*; G@(0,1)*;}; li -> {F*; L@(0,1)*;}; -> { [qu=Q_TL] A*; [qu=Q_BL] A*; [qu=Q_TL] G@(0,1)*; [qu=Q_TR] F*; [qu=Q_BR] F*; [qu=Q_TR] L@(0,1)*; }; }; vordergrund; }; >> } ithDreck = { pics=jjExtra.xpm, ithDreck1.xpm,ithDreck2.xpm,ithDreck3.xpm greyprob = 1 << ithDreck.init={version = rnd(3) + extrapics;}; ithDreck={ file = version; if (loc_y + dy@@) % 2 -> E* else -> F*; vordergrund; }; >> } Leer = { pics = jjExtra.xpm << Leer = vordergrund; >> } } cuyo-2.1.0/data/theater.ld0000755000175000017500000005454012417277716012331 00000000000000# # Copyright 2008,2014 by Immanuel Halupczok # Copyright 2011 by Mark Weyer # Maintenance modifications 2008,2011,2012,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ithBlauBlah.xpm[.gz], ithBlauH.xpm[.gz], ithBlauL.xpm[.gz], # ithBlauR.xpm[.gz], ithBlauV.xpm[.gz], ithBlau.xpm[.gz], ithDreck1.xpm[.gz], # ithDreck2.xpm[.gz], ithDreck3.xpm[.gz], ithDreckExpl.xpm[.gz], # ithGelbBlah.xpm[.gz], ithGelbH.xpm[.gz], ithGelbL.xpm[.gz], # ithGelbR.xpm[.gz], ithGelbV.xpm[.gz], ithGelb.xpm[.gz], # ithGruenBlah.xpm[.gz], ithGruenH.xpm[.gz], ithGruenL.xpm[.gz], # ithGruenR.xpm[.gz], ithGruenV.xpm[.gz], ithGruen.xpm[.gz], # ithOrangeBlah.xpm[.gz], ithOrangeH.xpm[.gz], ithOrangeL.xpm[.gz], # ithOrangeR.xpm[.gz], ithOrangeV.xpm[.gz], ithOrange.xpm[.gz], # ithRosaBlah.xpm[.gz], ithRosaH.xpm[.gz], ithRosaL.xpm[.gz], # ithRosaR.xpm[.gz], ithRosaV.xpm[.gz], ithRosa.xpm[.gz], ithRotBlah.xpm[.gz], # ithRotH.xpm[.gz], ithRotL.xpm[.gz], ithRotR.xpm[.gz], ithRotV.xpm[.gz], # ithRot.xpm[.gz], ithSitz.xpm[.gz], ithVorhang.xpm[.gz] # # referenced from labskaus.ld Theater={ name="Theater" author="Immi" numexplode=6 chaingrass=0 pics=gelb,gruen,orange,rosa,rot,blau # pics[hard]=gelb,gruen,orange,rosa,rot,blau # pics=gelb,gruen,orange,rosa,rot # pics[easy]=gelb,gruen,orange,rosa bgcolor=50,0,0 topcolor=45,0,0 toppic=ithVorhang.xpm topoverlap=22 topstop=15 textcolor=150,0,0 toptime=50 startpic=Sitz startdist="...****...", "**.****.**","**.****.**","**.****.**","**.****.**", "**.****.**","**.****.**","**.****.**","**.****.**", "**.****.**","**.****.**" startdist[easy]="...****...", "**.****.**","**.****.**","**.****.**","**.****.**", "**.****.**","**.****.**","**.****.**","**.****.**" #startdist="...****.............", # "**.****.**..........","**.****.**..........","**.****.**..........","**.****.**..........", # "**.****.**..........","**.****.**..........","**.****.**..........","**.****.**.......*.." greypic=dreck randomgreys[hard,1]=40 randomgreys[1]=50 randomgreys[easy,1]=-1 nogreyprob=1 emptypic = Leer description="Please keep quiet. Otherwise you will be blasted." explosionpic = ithDreckExpl.xpm << # Die Ebene mit den Sitzen findet nur in Variablen von semiglobal statt. # Die Blobs melden das Verschwinden von Sitzen beim semiglobal an - da # dies nicht mit Nachrutschen kommutiert, fhren sie es nicht gleich aus. # Das macht der semiglobal dann schon selbst im nchsten Schritt, zusammen # mit dem Nachrutschen. Und noch einen Schritt spter sehen die Blobs dann # das Ergebnis. Damit Synchronitt gewahrt bleibt, melden die Blobs das # Verschwinden 2 Zeitschritte an, bevor es passiert. Ja, richtig: Wir # haben 0,16s Prkognition. var sitz0,sitz1,sitz2,sitz3,sitz4,sitz5,sitz6,sitz7,sitz8,sitz9,sitz; # Bitfelder, spaltenweise, die angeben, wo noch Sitze sind. # Genauer: Der Wert dieser Variablen am *Anfang* der animiere-Gleichzeit # gibt die Position der Sitze an (so dass sie mit @@ ausgelesen werden kann) # Bit 2^0 ist ganz unten. # Die mit Ziffer sind fr eine Spalte und wohnen im semiglobal. # Der andere ist die Variable, mit der gearbeitet wird. var besetzt0,besetzt1,besetzt2,besetzt3,besetzt4,besetzt5,besetzt6,besetzt7,besetzt8,besetzt9,besetzt; # Bitfelder, die angeben, wo sich ein blob befindet (Kugel oder Dreck, # mit oder ohne Sitz). Genauer: Am *Ende* jeder Gleichzeit werden # dieser Werte (mit Zukunftszuweisungen) aktualisiert. Bis zur nchsten # Aktualisierung wird versucht, die Werte aktuell zu halten var weg0,weg1,weg2,weg3,weg4,weg5,weg6,weg7,weg8,weg9,weg; # Gibt an, welche Blops gleich platzen werden. var spalte; var hetz = 2097152; # Das Limit fr sitz, das dem Hetzrand entspricht. # Ist um Faktor 2 zu hoch, da es gleich im nullten # Schritt kleiner gemacht wird. # Zugriff auf die Variablen durch semiglobal: lies0 = {sitz=sitz0; besetzt=besetzt0; weg=weg0; spalte=0;}; lies1 = {sitz=sitz1; besetzt=besetzt1; weg=weg1; spalte=1;}; lies2 = {sitz=sitz2; besetzt=besetzt2; weg=weg2; spalte=2;}; lies3 = {sitz=sitz3; besetzt=besetzt3; weg=weg3; spalte=3;}; lies4 = {sitz=sitz4; besetzt=besetzt4; weg=weg4; spalte=4;}; lies5 = {sitz=sitz5; besetzt=besetzt5; weg=weg5; spalte=5;}; lies6 = {sitz=sitz6; besetzt=besetzt6; weg=weg6; spalte=6;}; lies7 = {sitz=sitz7; besetzt=besetzt7; weg=weg7; spalte=7;}; lies8 = {sitz=sitz8; besetzt=besetzt8; weg=weg8; spalte=8;}; lies9 = {sitz=sitz9; besetzt=besetzt9; weg=weg9; spalte=9;}; schreib0 = {sitz0=sitz; besetzt0=besetzt; weg0=weg;}; schreib1 = {sitz1=sitz; besetzt1=besetzt; weg1=weg;}; schreib2 = {sitz2=sitz; besetzt2=besetzt; weg2=weg;}; schreib3 = {sitz3=sitz; besetzt3=besetzt; weg3=weg;}; schreib4 = {sitz4=sitz; besetzt4=besetzt; weg4=weg;}; schreib5 = {sitz5=sitz; besetzt5=besetzt; weg5=weg;}; schreib6 = {sitz6=sitz; besetzt6=besetzt; weg6=weg;}; schreib7 = {sitz7=sitz; besetzt7=besetzt; weg7=weg;}; schreib8 = {sitz8=sitz; besetzt8=besetzt; weg8=weg;}; schreib9 = {sitz9=sitz; besetzt9=besetzt; weg9=weg;}; var rowdown,rowup; # Werden in semiglobal auf 1 gesetzt, wenn grad der entsprechende event kam. semiglobal.init = { # Erst einmal alles voll. Die Leer-Blobs lschen dann schon raus. sitz0=1048575; sitz1=1048575; sitz2=1048575; sitz3=1048575; sitz4=1048575; sitz5=1048575; sitz6=1048575; sitz7=1048575; sitz8=1048575; sitz9=1048575; }; var rueber_sitz; # flag fr Sitze in der Rber-Reihe. Lebt im Blob selbst. # (Der Wert von rueber_sitz von blops, die nicht in der # Rber-Reihe sind, kann beliebig sein.) var fall; var my_exploding; semiglobal_spalte = { # Die Situation ist: # - besetzt enthlt die Werte vom vorigen Spielschritt; # nur Rberreihen-Verschiebungen wurden schon angepasst # - sitz enthlt die Werte vom aktuellen Spielschritt # (und soll hinterher die Werte vom *nchsten* Spielschritt # enthalten - auer Rberreihen-Verschiebungen, die # hinterher korrigiert werden) # - weg besagt, welche Blops in diesem oder im nchsten Spielschritt # explodieren werden. Die Blop-Positionen sind die # richtigen, da whrend einer Explosion nichts fallen kann. # - my_exploding == 7: explodieren im nchsten Schritt # - my_exploding == 8: explodieren in diesem Schritt ### Teil 1: besetzt aktuailisieren # Blops fallen lassen: # Bestimme unterste, nicht besetzte Position... fall = gcd(besetzt+1, 1048576); # ... und verschiebe alle blops ab da eins nach unten: besetzt=besetzt%fall + (besetzt-besetzt%fall)/2; # blops sprengen: if my_exploding == 8 -> besetzt .-= weg; # Jetzt sollte besetzt mit den aktuellen Blop-Positionen # bereinstimmen. ### Teil 2: fall fr den nchsten Spielschritt bestimmen: # Im Prinzip sollte man auch erst die Sitze fallen lassen, # und dann evtl. Sprengungen entfernen. Allerdings ist (im # Gegensatz zu den echten Blops) nicht garantiert, dass # sprengen und fallen nicht gleichzeitig stattfinden kann. # Deshalb muss das sprengen ausgefhrt werden, bevor die # fallenden Blops nach unten verschoben werden. Also: # Bestimme die unterste Position, die # weder besetzt ist, noch einen Sitz enthlt: fall = gcd((sitz | besetzt)+1, 1048576); # Alle Sitze darber werden gleich eins runterfallen. Allerdings # mssen vorher noch die gesprengten Sitze entfernt werden. if my_exploding == 7 -> sitz.-=weg; # fall orientiert sich am Zustand vor "sitz.-=weg". Das entspricht dem, # was auch die normalen Blobs machen: Nach dem Explodieren erst einmal # einen Zeitschritt leer sein, dann erst ggf. durch Nachrutschen ersetzt. sitz=sitz%fall + (sitz-sitz%fall)/2; if sitz>=hetz -> lose; weg=0; }; semiglobal = { if !time%(32*toptime) -> hetz/=2; lies0; semiglobal_spalte; schreib0; lies1; semiglobal_spalte; schreib1; lies2; semiglobal_spalte; schreib2; lies3; semiglobal_spalte; schreib3; lies4; semiglobal_spalte; schreib4; lies5; semiglobal_spalte; schreib5; lies6; semiglobal_spalte; schreib6; lies7; semiglobal_spalte; schreib7; lies8; semiglobal_spalte; schreib8; lies9; semiglobal_spalte; schreib9; rowup=0; rowdown=0; }; var dy = 0, oddRow; semiglobal_spalte_up = { sitz=sitz*2+rueber_sitz@@(spalte,19); # Die Rberreihe ist komplett besetzt: besetzt=besetzt*2+1; weg*=2; }; semiglobal.row_up = { dy+=1; rowup=1; lies0; semiglobal_spalte_up; schreib0; lies1; semiglobal_spalte_up; schreib1; lies2; semiglobal_spalte_up; schreib2; lies3; semiglobal_spalte_up; schreib3; lies4; semiglobal_spalte_up; schreib4; lies5; semiglobal_spalte_up; schreib5; lies6; semiglobal_spalte_up; schreib6; lies7; semiglobal_spalte_up; schreib7; lies8; semiglobal_spalte_up; schreib8; lies9; semiglobal_spalte_up; schreib9; }; semiglobal_spalte_down = { # Gut, da in rber-Reihen keine explodierenden Blobs sein knnen. # Daher kann weg nicht das Bit 2^0 gesetzt haben... rueber_sitz@@(spalte,20)=sitz%2; sitz/=2; besetzt/=2; weg/=2; }; semiglobal.row_down = { dy-=1; rowdown=1; lies0; semiglobal_spalte_down; schreib0; lies1; semiglobal_spalte_down; schreib1; lies2; semiglobal_spalte_down; schreib2; lies3; semiglobal_spalte_down; schreib3; lies4; semiglobal_spalte_down; schreib4; lies5; semiglobal_spalte_down; schreib5; lies6; semiglobal_spalte_down; schreib6; lies7; semiglobal_spalte_down; schreib7; lies8; semiglobal_spalte_down; schreib8; lies9; semiglobal_spalte_down; schreib9; }; # Zugriff auf die Variablen durch die Blobs: var sitzl,sitzr; lies = { weg=0; switch { loc_x==0 -> {sitzl=0; sitz=sitz0@@; sitzr=sitz1@@;}; loc_x==1 -> {sitzl=sitz0@@; sitz=sitz1@@; sitzr=sitz2@@;}; loc_x==2 -> {sitzl=sitz1@@; sitz=sitz2@@; sitzr=sitz3@@;}; loc_x==3 -> {sitzl=sitz2@@; sitz=sitz3@@; sitzr=sitz4@@;}; loc_x==4 -> {sitzl=sitz3@@; sitz=sitz4@@; sitzr=sitz5@@;}; loc_x==5 -> {sitzl=sitz4@@; sitz=sitz5@@; sitzr=sitz6@@;}; loc_x==6 -> {sitzl=sitz5@@; sitz=sitz6@@; sitzr=sitz7@@;}; loc_x==7 -> {sitzl=sitz6@@; sitz=sitz7@@; sitzr=sitz8@@;}; loc_x==8 -> {sitzl=sitz7@@; sitz=sitz8@@; sitzr=sitz9@@;}; loc_x==9 -> {sitzl=sitz8@@; sitz=sitz9@@; sitzr=0; }; }; }; var maske; # = 2^Zeile, wobei die Zeile 0 ganz unten ist. # Zeile 20 (die rber-Reihe) wird anders gehandhabt. calc_maske = { if loc_y<20 -> { maske=1; if loc_y%2==0 -> maske*=2; if loc_y%4<2 -> maske*=4; if loc_y%8>=4 -> maske*=16; if loc_y==4..11 -> maske*=256; if loc_y<4 -> maske*=65536; } else maske=0; }; bin_gleich_weg = switch { loc_x==0 -> {weg0@@.+=maske;}; loc_x==1 -> {weg1@@.+=maske;}; loc_x==2 -> {weg2@@.+=maske;}; loc_x==3 -> {weg3@@.+=maske;}; loc_x==4 -> {weg4@@.+=maske;}; loc_x==5 -> {weg5@@.+=maske;}; loc_x==6 -> {weg6@@.+=maske;}; loc_x==7 -> {weg7@@.+=maske;}; loc_x==8 -> {weg8@@.+=maske;}; loc_x==9 -> {weg9@@.+=maske;}; }; bin_blop = switch { loc_x==0 -> {besetzt0@@.+=maske;}; loc_x==1 -> {besetzt1@@.+=maske;}; loc_x==2 -> {besetzt2@@.+=maske;}; loc_x==3 -> {besetzt3@@.+=maske;}; loc_x==4 -> {besetzt4@@.+=maske;}; loc_x==5 -> {besetzt5@@.+=maske;}; loc_x==6 -> {besetzt6@@.+=maske;}; loc_x==7 -> {besetzt7@@.+=maske;}; loc_x==8 -> {besetzt8@@.+=maske;}; loc_x==9 -> {besetzt9@@.+=maske;}; }; bin_kein_blop = switch { loc_x==0 -> {besetzt0@@.-=maske;}; loc_x==1 -> {besetzt1@@.-=maske;}; loc_x==2 -> {besetzt2@@.-=maske;}; loc_x==3 -> {besetzt3@@.-=maske;}; loc_x==4 -> {besetzt4@@.-=maske;}; loc_x==5 -> {besetzt5@@.-=maske;}; loc_x==6 -> {besetzt6@@.-=maske;}; loc_x==7 -> {besetzt7@@.-=maske;}; loc_x==8 -> {besetzt8@@.-=maske;}; loc_x==9 -> {besetzt9@@.-=maske;}; }; # gibt in einem Blop den Wert des besetzt-bits aus debug_besetzt = { calc_maske; switch { loc_x == 0 -> out1 = besetzt0@@.maske; loc_x == 1 -> out1 = besetzt1@@.maske; loc_x == 2 -> out1 = besetzt2@@.maske; loc_x == 3 -> out1 = besetzt3@@.maske; loc_x == 4 -> out1 = besetzt4@@.maske; loc_x == 5 -> out1 = besetzt5@@.maske; loc_x == 6 -> out1 = besetzt6@@.maske; loc_x == 7 -> out1 = besetzt7@@.maske; loc_x == 8 -> out1 = besetzt8@@.maske; loc_x == 9 -> out1 = besetzt9@@.maske; }; }; calcEvenOdd = { oddRow = (loc_y + dy@@) % 2; }; malSitz={ if oddRow -> { D*; A*@(0,-1); [qu=Q_TL] E@(1,0)*; [qu=Q_BL] E@(1,0)*; [qu=Q_BL] B*@(1,-1); } else -> { F*; C*@(0,-1); [qu=Q_TR] E@(-1,0)*; [qu=Q_BR] E@(-1,0)*; [qu=Q_BR] B*@(-1,-1); }; }; sitze = { if loc_y < 20 && sitz.maske || loc_y == 20 && rueber_sitz -> { behaviour.+=goalblob; calcEvenOdd; if exploding<=5 || kind==dreck -> malSitz; } else behaviour.-=goalblob; #debug_besetzt; }; var guck=1:reapply; # In welche Richtung gucken? # 1 = normal, 2 = li, 3 = re, 4 = vor, 5 = rueck var rede=0:reapply; # Reden? Und: in welche Richtung? var pause=5:reapply; # Pause vor wieder in andere Richtung gucken var heimlich=0:reapply; # Heimlich auf einen Sitz gehen? Richtung? bla1L = {[qu=Q_TL_TR] *@(-1,0); [qu=Q_TR_TL] *}; bla2L = {[qu=Q_BL_TR] *@(-1,0); [qu=Q_BR_TL] *}; bla1R = {[qu=Q_TL_TR] *; [qu=Q_TR_TL] *@(1,0)}; bla2R = {[qu=Q_BL_TR] *; [qu=Q_BR_TL] *@(1,0)}; bla1V = {[qu=Q_TL_BL] *; [qu=Q_TR_BR] *}; bla2V = {[qu=Q_BL_BL] *; [qu=Q_BR_BR] *}; bla1H = {[qu=Q_TL_BL] *@(0,-1); [qu=Q_TR_BR] *@(0,-1)}; bla2H = {[qu=Q_BL_BL] *@(0,-1); [qu=Q_BR_BR] *@(0,-1)}; malSitzUndBenutzer = { # guck sollte der file-Wert sein mit den Bildern des Benutzers calcEvenOdd; sitze; file=guck; if exploding<=5 -> { if behaviour.goalblob -> { # Blop mit Sitz (ragt in das Feld darber) if oddRow -> {A*@(0,-1); C*;} else -> {B*@(0,-1); D*;}; } else -> { # Blop ohne Sitz if oddRow -> E* else -> F*; }; }; }; malKugel = { calc_maske; lies; if exploding==7 || exploding==8 -> { bin_gleich_weg; my_exploding@@ = exploding; }; if pause > 0 -> pause -= 1; if falling -> { 6C*; pause=5; } else -> { switch { guck==2 -> { if kind@(-1,0) != kind || 1:20 && pause==0 && rede != 2 -> { guck=1; pause=10; } }; guck==3 -> { if kind@(1,0) != kind || 1:20 && pause==0 && rede != 3 -> { guck=1; pause=10; } }; guck==4 -> { if kind@(0,1) != kind || 1:20 && pause==0 && rede != 4 -> { guck=1; pause=10; } }; guck==5 -> { if kind@(0,-1) != kind || 1:20 && pause==0 && rede != 5 -> { guck=1; pause=10; } }; guck==1 && 1:4 -> { if kind@(-1,0) == kind && pause==0 -> { if 1:6 || guck@(-1,0) == 3 -> { guck=2; pause=5; } }; }; guck==1 && 1:3 -> { if kind@(1,0) == kind && pause==0 -> { if 1:6 || guck@(1,0) == 2 -> { guck=3; pause=5; } }; }; guck==1 && 1:2 -> { if kind@(0,1) == kind && pause==0 -> { if 1:6 || guck@(0,1) == 5 -> { guck=4; pause=5; } }; }; guck==1 -> { if kind@(0,-1) == kind && pause==0 -> { if 1:6 || guck@(0,-1) == 4 -> { guck=5; pause=5; } }; }; }; # Variante A: Rede nicht, wenn die angesprochene Person # redet: # if rede == 0 && 1:20 -> { # if guck == 2 && rede@(-1,0) == 0 || # guck == 3 && rede@(1,0) == 0 || # guck == 4 && rede@(0,1) == 0 || # guck == 5 && rede@(0,-1) == 0 -> # rede = guck; # }; # Variante B: Rede nicht, wenn drumrum irgend jemand redet: if rede == 0 && 1:20 && guck != 1 && rede@(-1,0) == 0 && rede@(1,0) == 0 && rede@(0,1) == 0 && rede@(0,-1) == 0 -> rede = guck; # ber mir ist niemand und niemand ist in der Nhe, mit # dem ich mich unterhalten kann? Dann evtl. heimlich Sitzplatz # wechseln. if kind@(0,-1) == Leer && kind@(0,1) != kind && kind@(-1,0) != kind && kind@(1,0) != kind && loc_y != 20 -> { switch { heimlich == 0 && 1:120 -> if kind@(-1,0) == Leer && sitzl.maske && !(kind@(-1,1) == Leer && sitzl.(maske/2)) -> heimlich = 2; heimlich == 0 && 1:119 -> if kind@(1,0) == Leer && sitzr.maske && !(kind@(1,1) == Leer && sitzr.(maske/2)) -> heimlich = 3; heimlich == 2 -> if !(kind@(-1,0) == Leer && sitzl.maske) || (kind@(-1,1) == Leer && sitzl.(maske/2)) -> heimlich = 0; heimlich == 3 -> if !(kind@(1,0) == Leer && sitzr.maske) || (kind@(1,1) == Leer && sitzr.(maske/2)) -> heimlich = 0; }; if heimlich != 0 -> { # Kein Doppelpfeil bei den ifs; die heimlich-Sequenz wird # sofort abgebrochen, wenn was dazwischen kommt guck = 1, guck = 1, guck = 1, guck = 1, guck = 1, guck = 1, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 1, guck = 1, guck = heimlich, guck = heimlich, guck = heimlich, guck = heimlich, guck = heimlich, guck = 1, guck = 1, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 5 - heimlich, guck = 1, guck = 1, guck = heimlich, guck = heimlich, { guck = heimlich; if heimlich == 2 -> kind@(-1,0) = kind else -> kind@(1,0) = kind; kind@(0,0) = nothing; } }; } else -> { # Evtl. wurde gerade eine heimlich-Sequenz abgebrochen: heimlich = 0; }; malSitzUndBenutzer; 6; if rede == 2 -> {A;bla1L},{A;bla1L},{A;bla2L},{A;bla2L}, {B;bla1L},{B;bla1L},{B;bla2L},{B;bla2L;rede=0}; if rede == 3 -> {A;bla1R},{A;bla1R},{A;bla2R},{A;bla2R}, {B;bla1R},{B;bla1R},{B;bla2R},{B;bla2R;rede=0}; if rede == 4 -> {A;bla1V},{A;bla1V},{A;bla2V},{A;bla2V}, {B;bla1V},{B;bla1V},{B;bla2V},{B;bla2V;rede=0}; if rede == 5 -> {A;bla1H},{A;bla1H},{A;bla2H},{A;bla2H}, {B;bla1H},{B;bla1H},{B;bla2H},{B;bla2H;rede=0}; bin_blop; }; # Die explosionpic ist auf etwas gesetzt, was den Hintergrund # nicht lscht, damit Dreck die Sitze beim explodieren nicht # kaputt macht. Deshalb hier manuell die Explosion richtig # malen. if exploding -> { pos=exploding-1; 7*; }; }; landKugel={ # Frisch gelandeten Blop gleich in das besetzt-Array eintragen. # Ist allerdings mglicherweise unntig: Ein frisch gelandeter Blop # kann nicht an einer Stelle sein, wo er das Fallen eines Sitzes # verhindern wrde. calc_maske; bin_blop; }; >> gruen={ pics=ithSitz.xpm,ithGruen.xpm,ithGruenL.xpm,ithGruenR.xpm, ithGruenV.xpm,ithGruenH.xpm,ithGruenBlah.xpm, explosion.xpm << gruen=malKugel; gruen.land=landKugel; >> } gelb={ pics=ithSitz.xpm,ithGelb.xpm,ithGelbL.xpm,ithGelbR.xpm, ithGelbV.xpm,ithGelbH.xpm,ithGelbBlah.xpm, explosion.xpm << gelb=malKugel; gelb.land=landKugel; >> } orange={ pics=ithSitz.xpm,ithOrange.xpm,ithOrangeL.xpm,ithOrangeR.xpm, ithOrangeV.xpm,ithOrangeH.xpm,ithOrangeBlah.xpm, explosion.xpm << orange=malKugel; orange.land=landKugel; >> } rosa={ pics=ithSitz.xpm,ithRosa.xpm,ithRosaL.xpm,ithRosaR.xpm, ithRosaV.xpm,ithRosaH.xpm,ithRosaBlah.xpm, explosion.xpm << rosa=malKugel; rosa.land=landKugel; >> } rot={ colourprob[easy] = 0 pics=ithSitz.xpm,ithRot.xpm,ithRotL.xpm,ithRotR.xpm, ithRotV.xpm,ithRotH.xpm,ithRotBlah.xpm, explosion.xpm << rot=malKugel; rot.land=landKugel; >> } blau={ colourprob = 0 colourprob[hard] = 1 pics=ithSitz.xpm,ithBlau.xpm,ithBlauL.xpm,ithBlauR.xpm, ithBlauV.xpm,ithBlauH.xpm,ithBlauBlah.xpm, explosion.xpm << blau=malKugel; blau.land=landKugel; >> } dreck={ pics=ithSitz.xpm,ithDreck1.xpm,ithDreck2.xpm,ithDreck3.xpm << dreck.init={version = 1 + rnd(3);}; dreck={ calc_maske; lies; guck = version; malSitzUndBenutzer; bin_blop; }; >> } Sitz={ pics=ithSitz.xpm << Sitz.init = { if !informational -> { calc_maske; kind=Leer; sitz=maske; behaviour.+=goalblob; }; }; # Das ein Sitzblob sein init-event berlebt, passiert nur fr den informational-blob. Sitz = {G*}; >> } Leer = { pics = ithSitz.xpm << Leer.init = { # Nur am Anfang des Spiels: alle leer-Blops lschen # ihr Sitz-Bit (um die startdist in die sitz-Variablen # zu bertragen): if !time && loc_y<20 -> { calc_maske; my_exploding@@ = 7; bin_gleich_weg; }; }; Leer = { calc_maske; if time -> lies; sitze; bin_kein_blop; }; >> } } cuyo-2.1.0/data/pfeile.ld0000644000175000017500000001574312420653541012124 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2006,2008,2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ipGrau.xpm[.gz], ipHochRunter.xpm[.gz], ipHoch.xpm[.gz], # ipLinksRechts.xpm[.gz], ipLinks.xpm[.gz], ipOben.xpm[.gz], # ipRechts.xpm[.gz], ipRunter.xpm[.gz], ipStart.xpm[.gz], # ipStart.xcf # # referenced from memory.ld Pfeile={ name="Arrows" author="Immi" numexplode=4 numexplode[1]=7 numexplode[1,easy]=5 chaingrass=0 pics=ipHoch,ipRechts,ipRunter,ipLinks,ipHochRunter,ipLinksRechts toptime=50 toppic="ipOben.xpm" topoverlap=41 topcolor=255,0,0 textcolor=255,209,25 startpic=ipStart #startdist[1]="....++....","...++++...","..++AF++..",".++BCDE++.","++GHIJKL++","++MNOPQR++","SSSTUVWXXX" startdist="....AA....","...AAAA...","..ADAAJA..","..MAAAAG..","AAAAAAAAAA" greypic=ipGrau description="Arrows can be turned" emptypic=ipEmpty << pfeil=switch { turn==1 -> E*; turn==2 -> F*; -> schema4; }; ipHoch=pfeil; ipRechts=pfeil; ipRunter=pfeil; ipLinks=pfeil; ipHochRunter=pfeil; ipLinksRechts=pfeil; ipHoch.turn=kind=ipRechts; ipRechts.turn=kind=ipRunter; ipRunter.turn=kind=ipLinks; ipLinks.turn=kind=ipHoch; ipHochRunter.turn=kind=ipLinksRechts; ipLinksRechts.turn=kind=ipHochRunter; var grasig = 1 : reapply; >> ipStart={ pics="ipStart.xpm" << var vn, vne, ve, vse, vs, vsw, vw, vnw; var manuell; var manuell_pos; ipStart={ if informational -> S* else -> { # In welche Richtungen möchte ich mich verbinden: # normalerweise mit anderen starts oder mit outside # version ist aber ein bitfeld, das verbindungen blockieren kann vn = grasig@(0,-1) && version & 1 == 0 && version@(0,-1) & 4 == 0; vne = grasig@(1,-1) && version & 3 == 0 && version@(1,-1) & 12 == 0 && version@(0,-1) & 6 == 0 && version@(1,0) & 9 == 0; ve = grasig@(1,0) && version & 2 == 0 && version@(1,0) & 8 == 0; vse = grasig@(1,1) && version & 6 == 0 && version@(1,1) & 9 == 0 && version@(0,1) & 3 == 0 && version@(1,0) & 12 == 0; vs = grasig@(0,1) && version & 4 == 0 && version@(0,1) & 1 == 0; vsw = grasig@(-1,1) && version & 12 == 0 && version@(-1,1) & 3 == 0 && version@(0,1) & 9 == 0 && version@(-1,0) & 6 == 0; vw = grasig@(-1,0) && version & 8 == 0 && version@(-1,0) & 2 == 0; vnw = grasig@(-1,-1) && version & 9 == 0 && version@(-1,-1) & 6 == 0 && version@(0,-1) & 12 == 0 && version@(-1,0) & 3 == 0; if vs && vse && ve && (vne || vsw) && !vn && !vw -> C* else if vs && vsw && vw && (vnw || vse) && !vn && !ve -> D* else if !vn && !vs && !vw && ve -> U* else if !vn && !vs && vw && !ve -> V* else if !vn && !vs && !vw && !ve -> { if loc_x <= 2 || version == 3 -> G* else if loc_x >= 7 || version == 9 -> L* else -> S*; } else -> { manuell = 0; manuell_pos = -1; if version == 3 && vs -> { manuell .+= 10; manuell_pos = 7; }; if version == 9 && vs -> { manuell .+= 5; manuell_pos = 10; }; if version == 12 && ve -> { manuell .+= 12; manuell_pos = 12; }; if version == 6 && vw -> { manuell .+= 12; manuell_pos = 17; }; if manuell == 0 -> { # sicherheitshalber nicht mehrere manuell-malungen if vn && vw && version@(-1,-1) == 3 -> { manuell += 17; manuell_pos = 14; }; if vn && ve && version@(1,-1) == 9 -> { manuell += 18; manuell_pos = 15; }; if vn && vw && version@(-1,-1) == 12 -> { manuell += 17; manuell_pos = 19; }; if vn && ve && version@(1,-1) == 6 -> { manuell += 18; manuell_pos = 22; }; if manuell >= 32 -> { # zwei manuells geht nicht manuell = 0; manuell_pos = -1; }; }; if manuell & 1 == 0 -> [qu=Q_TL] {switch { !vn && !vw -> E; vn && !vw -> A; !vn && vw -> B; vn && vw && vnw -> N; version@(0,-1) == 9 -> Q; grasig@(-2,0) || grasig@(0,-2) -> F; -> Q; };*}; if manuell & 2 == 0 -> [qu=Q_TR] {switch { !vn && !ve -> B; vn && !ve -> F; !vn && ve -> E; vn && ve && vne -> Q; version@(0,-1) == 3 -> N; grasig@(2,0) || grasig@(0,-2) -> A; -> N; };*}; if manuell & 4 == 0 -> [qu=Q_BL] {switch { !vs && !vw -> E; vs && !vw -> A; !vs && vw -> B; vs && vw && vsw -> Q; version@(-1,0) == 12 -> N; grasig@(-2,0) || grasig@(0,2) -> F; -> N; };*}; if manuell & 8 == 0 -> [qu=Q_BR] {switch { !vs && !ve -> B; vs && !ve -> F; !vs && ve -> E; vs && ve && vse -> N; version@(1,0) == 6 -> Q; grasig@(2,0) || grasig@(0,2) -> A; -> Q; };*}; if manuell_pos != -1 -> { pos = manuell_pos; *;}; # [qu=Q_TL] {switch { # !vn && !vw -> E; # vn && !vw -> A; # !vn && vw -> B; # vn && vw && !vnw -> F; # vn && vw && vnw -> N; # };*}; # [qu=Q_TR] {switch { # !vn && !ve -> B; # vn && !ve -> F; # !vn && ve -> E; # vn && ve && !vne -> A; # vn && ve && vne -> Q; # };*}; # [qu=Q_BL] {switch { # !vs && !vw -> E; # vs && !vw -> A; # !vs && vw -> B; # vs && vw && !vsw -> F; # vs && vw && vsw -> Q; # };*}; # [qu=Q_BR] {switch { # !vs && !ve -> B; # vs && !ve -> F; # !vs && ve -> E; # vs && ve && !vse -> A; # vs && ve && vse -> N; # };*}; }; }; }; >> } ipHoch={ pics=ipHoch.xpm << default grasig = 0 : reapply; >> } ipRechts={ pics=ipRechts.xpm << default grasig = 0 : reapply; >> } ipRunter={ pics=ipRunter.xpm << default grasig = 0 : reapply; >> } ipLinks={ pics=ipLinks.xpm << default grasig = 0 : reapply; >> } ipHochRunter={ pics=ipHochRunter.xpm << default grasig = 0 : reapply; >> } ipLinksRechts={ pics=ipLinksRechts.xpm << default grasig = 0 : reapply; >> } ipGrau={ pics=ipGrau.xpm << default grasig = 0 : reapply; >> } ipEmpty={ << default grasig = 0 : reapply; >> } } cuyo-2.1.0/data/springer.ld0000644000175000017500000001007412415051252012474 00000000000000# # Copyright 2011 Bernhard R. Link # Modified 2011 by Immanuel Halupczok # Modified 2011 by Mark Weyer # Maintenance modifications 2011,2014 by the cuyo developers # based heavily on schach.ld and thus also # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ispBeige.xpm[.gz], ispBraun.xpm[.gz], ispGraubraun.xpm[.gz] # ispGrau.xpm[.gz], ispOrange.xpm[.gz], ispRest.xpm[.gz], ispSchwarz.xpm[.gz], # ispWeiss.xpm[.gz] # Springer={ name="Knights" author="brl & Immi" # TRANSLATORS: "Knight" and "Pawn" refer to the chess pieces description="Knights connect via knight moves. Pawns don't connect at all." numexplode=6 chaingrass[hard]=1 pics=isSpringer * 6 bgcolor=190,210,150 startpic=isKoenig startdist="EEEEEEEEEE","EEEEEEEEEE" greypic=isBauer topcolor=15,45,20 textcolor=20,75,25 toptime=100 neighbours= << knightlines={ switch { basekind@(1,0)==isSpringer && kind@(-1,-1)==kind@(1,0) -> { [qu=Q_BL_TL] {A*}; [qu=Q_BR_TR] {A*}; }; }; switch { basekind@(1,1)==isSpringer && kind@(1,1)==kind@(-1,0) -> { [qu=Q_TL_BL] {A*}; [qu=Q_TR_BR] {A*}; }; }; switch { basekind@(1,-1)==isSpringer && kind@(1,-1)==kind@(-1,0) -> { [qu=Q_BL_TL] {D*}; [qu=Q_BR_TR] {D*}; }; }; switch { basekind@(1,0)==isSpringer && kind@(1,0)==kind@(-1,1) -> { [qu=Q_TL_BL] {D*}; [qu=Q_TR_BR] {D*}; }; }; switch { basekind@(0,1)==isSpringer && kind@(0,1)==kind@(-1,-1) -> { [qu=Q_TR_TL] {B*}; [qu=Q_BR_BL] {B*}; }; }; switch { basekind@(1,1)==isSpringer && kind@(1,1)==kind@(0,-1) -> { [qu=Q_TL_TR] {B*}; [qu=Q_BL_BR] {B*}; }; }; switch { basekind@(-1,1)==isSpringer && kind@(-1,1)==kind@(0,-1) -> { [qu=Q_TR_TL] {C*}; [qu=Q_BR_BL] {C*}; }; }; switch { basekind@(0,1)==isSpringer && kind@(0,1)==kind@(1,-1) -> { [qu=Q_TL_TR] {C*}; [qu=Q_BL_BR] {C*}; }; }; }; >> isKoenig={ pics=ispRest.xpm << isKoenig={B*}; >> } isBauer={ pics=ispRest.xpm colourprob=3 << isBauer={A*}; >> } isSpringer={ pics=ispSchwarz.xpm,ispWeiss.xpm,ispGrau.xpm,ispBraun.xpm,ispBeige.xpm,ispOrange.xpm << isSpringer={ file=kind-isSpringer; if kind@(2,1) == kind -> { [qu=Q_BR] B*; [qu=Q_TL_BL] B@(1,0)*; [qu=Q_TR_BR] B@(1,0)*; }; if kind@(-2,-1) == kind -> { [qu=Q_TL] B*; [qu=Q_BL_TL] B@(-1,0)*; [qu=Q_BR_TR] B@(-1,0)*; }; if kind@(1,2) == kind -> { [qu=Q_BR] C*; [qu=Q_TL_TR] C@(0,1)*; [qu=Q_BL_BR] C@(0,1)*; }; if kind@(-1,-2) == kind -> { [qu=Q_TL] C*; [qu=Q_TR_TL] C@(0,-1)*; [qu=Q_BR_BL] C@(0,-1)*; }; if kind@(-1,2) == kind -> { [qu=Q_BL] D*; [qu=Q_TR_TL] D@(0,1)*; [qu=Q_BR_BL] D@(0,1)*; }; if kind@(1,-2) == kind -> { [qu=Q_TR] D*; [qu=Q_TL_TR] D@(0,-1)*; [qu=Q_BL_BR] D@(0,-1)*; }; if kind@(2,-1) == kind -> { [qu=Q_TR] E*; [qu=Q_BL_TL] E@(1,0)*; [qu=Q_BR_TR] E@(1,0)*; }; if kind@(-2,1) == kind -> { [qu=Q_BL] E*; [qu=Q_TL_BL] E@(-1,0)*; [qu=Q_TR_BR] E@(-1,0)*; }; A*; }; >> } } cuyo-2.1.0/data/hecken.ld0000644000175000017500000000650011671742014012105 00000000000000# # Copyright 2011 by Mark Weyer # based on go.ld which, at that time, was: # Copyright <=2004 by Immanuel Halupczok # Modified 2006,2008 by Mark Weyer # Maintenance modifications 2005,2006,2008 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Go={ name="Gardens" author="Immi" #numexplode[1]=4 numexplode=3 chaingrass=1 pics = stein*2 pics[1]= stein*3 # *4 startpic=mihStein.xpm startdist="*........*","**......**","***....***","****..****" greypic=mihLoch.xpm toptime=80 #randomgreys[1]=200 description="Gardens need hedges for separation. The hedges do not count for the size of a garden, though." bgcolor = 48,191,48 << var gli,gre,gob,gun,hli,hre,hob,hun; stein={ # gli sagt: Der Garten geht nach links weiter. gli = kind@(-1,0)==kind || kind@(-1,0)==outside; gre = kind@(1,0)==kind || kind@(1,0)==outside; gob = kind@(0,-1)==kind || kind@(0,-1)==outside; gun = kind@(0,1)==kind || kind@(0,1)==outside; weight = (!falling) && gli && gre && gob && gun; switch { falling -> {}; weight@(0,0) -> F*; -> { # hli sagt: die Hecke geht nach links weiter. hli = kind@(-1,0)==outside || ( basekind@(-1,0)==stein && !weight@(-1,0) && (kind@(-1,0)!=kind || !gob@(0,0) || !gob@(-1,0) || !gun@(0,0) || !gun@(-1,0))); hre = kind@(1,0)==outside || ( basekind@(1,0)==stein && !weight@(1,0) && (kind@(1,0)!=kind || !gob@(0,0) || !gob@(1,0) || !gun@(0,0) || !gun@(1,0))); hob = kind@(0,-1)==outside || ( basekind@(0,-1)==stein && !weight@(0,-1) && (kind@(0,-1)!=kind || !gli@(0,0) || !gli@(0,-1) || !gre@(0,0) || !gre@(0,-1))); hun = kind@(0,1)==outside || ( basekind@(0,1)==stein && !weight@(0,1) && (kind@(0,1)!=kind || !gli@(0,0) || !gli@(0,1) || !gre@(0,0) || !gre@(0,1))); if hli -> if hob -> if hob@(-1,0) && hli@(0,-1) && !1?????11 -> E else B else A else if hob -> D else C; qu=Q_TL; *; if hre -> if hob -> if hob@(1,0) && hre@(0,-1) && !111????? -> D else E else A else if hob -> B else C; qu=Q_TR; *; if hli -> if hun -> if hun@(-1,0) && hli@(0,1) && !????111? -> B else A else E else if hun -> D else C; qu=Q_BL; *; if hre -> if hun -> if hun@(1,0) && hre@(0,1) && !??111??? -> A else D else E else if hun -> B else C; qu=Q_BR; *; }; }; qu=Q_ALL; pos=6+kind-stein; *; }; >> stein={ pics=mihGarten.xpm } } cuyo-2.1.0/data/used_levels.sh0000755000175000017500000000205211672203520013171 00000000000000#! /bin/sh # # Copyright 2006 by the cuyo developers # Modified 2006 by Immanuel Halupczok # Maintenance modifications 2007,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Gibt alle Leveldateinamen aus, die in summary.in erwhnt werden. echo `sed -e '/^ *file/{' \ -e ' s/^ *file *//' \ -e ' P' -e '}' \ -e 'd' \ summary.in` cuyo-2.1.0/data/antarctic.ld0000644000175000017500000002271412402113362012614 00000000000000# # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bpEis.xpm[.gz], bpFreezeIglu.xpm[.gz], bpFreezePingu.xpm[.gz], # bpFreezeSchnee.xpm[.gz], bpIglu.xpm[.gz], bpPinguA.xpm[.gz], # bpPinguB.xpm[.gz], bpPinguC.xpm[.gz], bpPinguD.xpm[.gz], bpPinguE.xpm[.gz], # bpPinguFall.xpm[.gz], bpPinguF.xpm[.gz], bpPinguG.xpm[.gz], # bpPinguH.xpm[.gz], bpPinguI.xpm[.gz], bpPinguJong.xpm[.gz], # bpPinguJ.xpm[.gz], bpPinguK.xpm[.gz], bpPinguL.xpm[.gz], bpPinguM.xpm[.gz], # bpPinguN.xpm[.gz], bpPinguO.xpm[.gz], bpPinguP.xpm[.gz], bpPingu.xpm[.gz], # bpSchnee.xpm[.gz], bpStein.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. # # FK Keulenjonglage # FK Presslufthammer # FK Pingu-Iglu-Aktivitt # berblick ber die Bilder # # bpIglu : Iglu # bpSchnee : Schnee # bpStein : (graue) bisher: Stein # bpEis : (start) Eislandschaft # bpPingu : Pinguine in Standardakro # bpPinguA-P : Standardzappeln in den 16 verschiedenen Positionen # bpPinguJong : Jonglierender Pinguin # bpPinguFall : Pinguin mit Fallschirm # bpPinguFall2 : Pinguin mit normalem Schirm Antarctic = { name = "Antarctic" description = "Beware of freezing!" author = "Berni" pics = Pingu,Iglu,Schnee,Freezing greypic = bpStein.xpm startpic = Eis startdist[1] = "B........C","ABCDBDBACD","-A%&" startdist = "ABCDBDBACD","-A%&" numexplode = 4 chaingrass = 1 textcolor = 0,0,0 bgcolor = 150,200,255 topcolor = 255,255,255 topoverlap = 0 toptime = 50 << var sum = 0; var freezecount = 0; var freezekind = 0; checkfreeze = { sum = 0; if kind@(-1,0) == Eis -> sum+=1; if kind@(1,0) == Eis -> sum+=1; if kind@(0,1) == Eis -> sum+=1; if kind@(0,-1) == Eis -> sum+=2; # Das ist Absicht! if sum>=2 -> { freezekind@(0,0) = kind@(0,0); freezecount@(0,0) = 0; kind@(0,0) = Freezing; }; }; >> Eis = { pics = bpEis.xpm << Eis = { switch { kind@(0,-1) == Eis || kind@(0,-1) == Freezing -> {pos=version+4;*;}; -> {pos=version;*;}; }; }; >> } Freezing = { neighbours= pics = bpFreezePingu.xpm, bpFreezeIglu.xpm, bpFreezeSchnee.xpm << Freezing.init = { kind = rnd(3); }; Freezing = { freezecount+=1; file = freezekind; pos = freezecount/5; *; if freezecount == 24 -> {kind@(0,0) = Eis; version@(0,0) = rnd(4);}; }; >> } Iglu = { pics = bpIglu.xpm << Iglu = { checkfreeze; schema16; }; >> } Schnee = { pics = bpSchnee.xpm << var landing = 0; Schnee.land = { landing = 1; }; Schnee = { if !falling -> {checkfreeze;}; pos = rnd(4);*; }; >> } Pingu = { pics = bpPingu.xpm, bpPinguA.xpm,bpPinguB.xpm,bpPinguC.xpm,bpPinguD.xpm, bpPinguE.xpm,bpPinguF.xpm,bpPinguG.xpm,bpPinguH.xpm, bpPinguI.xpm,bpPinguJ.xpm,bpPinguK.xpm,bpPinguL.xpm, bpPinguM.xpm,bpPinguN.xpm,bpPinguO.xpm,bpPinguP.xpm, bpPinguJong.xpm,bpPinguFall.xpm numexplode = 8 << var solo=0; # Pinguin macht Aktion, wrend der er sich nicht verbindet var sum=0; # Welche Nachbarn hat der Pinguin? Siehe Akro-Pingu-Sektion var fallschirm=0; # Pinguin hat seinen Schirm gezckt. var fast=0; # Wird bei schnellem Fall auf 10 gesetzt und am Boden runtergezhlt pinguA = { switch { 1:10 => { 1;{A;solo=1},B,C,D,E,F,G,H,I,J,K,{0A;solo=0};*; }; 1:10 => { 1;L,M,M,M,L,0A;*; }; 1:10 => { 1;N,O,O,O,N,0A;*; }; 1:10 => { 1;P,0A;*; }; 1:10 => { 1;Q,R,R,R,Q,0A;*; }; 1:10 => { 1;S,T,T,T,S,0A;*; }; 1:10 => { 17;{A;solo=1},B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,I,H,G,F,E,D,C,B,A,{0A;solo=0};*; }; -> 0A*; } }; # --------------------------------- pinguB = { switch { 1:10 => { 2;A,B,C,D,D,D,D,C,B,A,0B;*; }; 1:10 => { 2;E,F,G,F,E,0B;*; }; 1:10 => { 2;H,0B;*; }; -> 0B*; } }; pinguC = { switch { 1:10 => { 3;A,B,C,C,B,A,0C;*; }; 1:10 => { 3;D,0C;*; }; 1:10 => { 3;E,E,0C;*; }; 1:10 => { 3;F,F,F,0C;*; }; 1:10 => { 3;G,G,H,H,H,G,G,0C;*; }; -> 0C*; } }; pinguD = { switch { 1:10 => { 4;A,0D;*; }; 1:10 => { 4;B,C,D,E,D,C,B,0D;*; }; -> 0D*; } }; # --------------------------------- pinguE= { switch { 1:10 => { 5;A,B,B,B,B,B,A,0E;*; }; 1:10 => { 5;C,0E;*; }; 1:10 => { 5;D,E,F,G,F,E,D,0E;*; }; 1:10 => { 5;H,H,0E;*; }; -> 0E*; } }; pinguI= { switch { 1:10 => { 9;A,B,C,C,B,A,0I;*; }; 1:10 => { 9;D,0I;*; }; 1:10 => { 9;E,F,G,G,F,E,0I;*; }; 1:10 => { 9;H,L,L,L,H,0I;*; }; 1:10 => { 9;I,J,K,K,J,I,0I;*; }; -> 0I*; } }; pinguM= { switch { 1:10 => { 13;A,0M;*; }; 1:10 => { 13;K,0M;*; }; 1:10 => { 13;L,0M;*; }; 1:10 => { 13;B,C,D,D,C,B,0M;*; }; 1:10 => { 13;E,F,G,G,F,E,0M;*; }; 1:10 => { 13;H,I,J,J,I,H,0M;*; }; -> 0M*; } }; # --------------------------------- pinguF= { switch { 1:10 => { 6;H,0F;*; }; 1:10 => { 6;A,B,A,0F;*; }; 1:10 => { 6;C,D,G,G,D,C,0F;*; }; 1:10 => { 6;E,F,F,E,0F;*; }; -> 0F*; } }; pinguG= { switch { 1:10 => { 7;G,0G;*; }; 1:10 => { 7;A,B,A,0G;*; }; 1:10 => { 7;C,D,D,C,0G;*; }; 1:10 => { 7;E,E,F,F,E,E,0G;*; }; -> 0G*; } }; pinguH= { switch { 1:10 => { 8;D,0H;*; }; 1:10 => { 8;C,I,C,0H,A,B,A,0H,C,I,C,0H,A,B,A,0H;*; }; 1:10 => { 8;E,F,E,0H;*; }; 1:10 => { 8;G,G,H,H,G,G,0H;*; }; -> 0H*; } }; pinguJ= { switch { 1:10 => { 10;A,0J;*; }; 1:10 => { 10;B,C,D,C,B,0J;*; }; 1:10 => { 10;E,F,F,E,0J;*; }; -> 0J*; } }; pinguK= { switch { 1:10 => { 11;A,0K;*; }; 1:10 => { 11;B,B,C,C,B,B,0K;*; }; 1:10 => { 11;D,0K;*; }; 1:10 => { 11;E,0K;*; }; -> 0K*; } }; pinguL= { switch { 1:10 => { 12;A,0L;*; }; 1:10 => { 12;B,C,D,C,B,0L;*; }; 1:10 => { 12;E,F,G,H,I,J,K,L,K,J,I,H,G,F,E,0L;*; }; -> 0L*; } }; pinguN= { switch { 1:10 => { 14;I,0N;*; }; 1:10 => { 14;C,D,C,0N,A,B,A,0N,C,D,C,0N,A,B,A,0N;*; }; 1:10 => { 14;E,F,E,0N;*; }; 1:10 => { 14;G,G,H,H,G,G,0N;*; }; -> 0N*; } }; pinguO= { switch { 1:10 => { 15;E,0O;*; }; 1:10 => { 15;A,B,A,0O;*; }; 1:10 => { 15;C,C,D,D,C,C,0O;*; }; -> 0O*; } }; pinguP= { switch { 1:10 => { 16;L,0P;*; }; 1:10 => { 16;A,B,C,B,A,0P;*; }; 1:10 => { 16;E,F,G,F,E,0P;*; }; 1:10 => { 16;I,J,K,J,I,0P;*; }; 1:10 => { 16;D,D,H,H,D,D,0P;*; }; -> 0P*; } }; Pingu = { # ----- Pingu wrend des Fallens ----- if falling -> fast = falling_fast*5; # ----- Liegedauer ----- switch { # Pinguin liegt am Boden !falling && fast => { 18;{switch{1:2 => G; => G,G,G;};},G,H;*;I,J,J,I,L,K,{if fast -> fast-=1};*; }; # Pinguin mit Fallschirm fallschirm => { switch { falling_fast => {18;F;*;}; falling -> {18;C,C,D,D,C,C,E,E;*;}; => {18;{A;fallschirm = 0;solo = 0};*; }; }; }; # Pinguin fllt schnell falling_fast => {fallschirm = 1; solo=1;18;F;*;}; # Pinguin fllt langsam falling -> {18; {switch{1:2 => A; => A,A,A;};}, {switch{1:2 => A; => A,A,A;};}, A,A,A,A,A,A,B,B,B,A,A,A,A,B,B,B,{A;fallschirm = 1;solo = 1};*; }; => { # ----- Obendran Eis ----- checkfreeze; # ----- Akro-Pingu ----- sum = 0; if 1??????? && !solo@(0,-1) -> sum+=1; if ??1????? && !solo@(1,0) -> sum+=2; if ????1??? && !solo@(0,1) -> sum+=4; if ??????1? && !solo@(-1,0) -> sum+=8; switch { sum== 0 => pinguA; sum== 2 => pinguB; sum==10 => pinguC; sum== 8 => pinguD; sum== 4 => pinguE; sum== 6 => pinguF; sum==14 => pinguG; sum==12 => pinguH; sum== 5 => pinguI; sum== 7 => pinguJ; sum==15 => pinguK; sum==13 => pinguL; sum== 1 => pinguM; sum== 3 => pinguN; sum==11 => pinguO; sum== 9 => pinguP; }; }; } }; >> } } cuyo-2.1.0/data/schach.ld0000644000175000017500000002123312415051252012073 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # isBauerSchwarz.xpm[.gz], isBauerWeiss.xpm[.gz], isBrettrand.xpm[.gz], # isBrett.xpm[.gz], isDameSchwarz.xpm[.gz], isDameWeiss.xpm[.gz], # isLaeuferSchwarz.xpm[.gz], isLaeuferWeiss.xpm[.gz], isSchwarz.xpm[.gz], # isSpringerSchwarz.xpm[.gz], isSpringerWeiss.xpm[.gz], # isTurmSchwarz.xpm[.gz], isTurmWeiss.xpm[.gz], isVerbindung.xpm[.gz], # isWeiss.xpm[.gz] # # referenced from springer.ld Schach={ name="Chess" author="Immi" numexplode=4 numexplode[1]=5 chaingrass=1 pics=isLaeufer,isSpringer,isDame,isTurm bgcolor=216,201,151 startpic=isGras startdist=".DDDDDDDD.",".CABFEBAC.","-E%&" #startdist=".DDDDDDDD.",".CABFE..C." #startdist=".DDDDDDDD.",".C...EBAC." #startdist=".DDDDDDDD.",".C...E..C." greypic=isBauer bgpic=isBrett.xpm topcolor=137,92,37 toppic=isBrettrand.xpm topoverlap=2 toptime=50 #hiddenfeature=1 emptypic=isNix << knightlines={ switch { kind@(1,0)==isSpringer && kind@(-1,-1)==isSpringer -> { [qu=Q_BL_TL] {A*}; [qu=Q_BR_TR] {A*}; }; }; switch { kind@(1,1)==isSpringer && kind@(-1,0)==isSpringer -> { [qu=Q_TL_BL] {A*}; [qu=Q_TR_BR] {A*}; }; }; switch { kind@(1,-1)==isSpringer && kind@(-1,0)==isSpringer -> { [qu=Q_BL_TL] {D*}; [qu=Q_BR_TR] {D*}; }; }; switch { kind@(1,0)==isSpringer && kind@(-1,1)==isSpringer -> { [qu=Q_TL_BL] {D*}; [qu=Q_TR_BR] {D*}; }; }; switch { kind@(0,1)==isSpringer && kind@(-1,-1)==isSpringer -> { [qu=Q_TR_TL] {B*}; [qu=Q_BR_BL] {B*}; }; }; switch { kind@(1,1)==isSpringer && kind@(0,-1)==isSpringer -> { [qu=Q_TL_TR] {B*}; [qu=Q_BL_BR] {B*}; }; }; switch { kind@(-1,1)==isSpringer && kind@(0,-1)==isSpringer -> { [qu=Q_TR_TL] {C*}; [qu=Q_BR_BL] {C*}; }; }; switch { kind@(0,1)==isSpringer && kind@(1,-1)==isSpringer -> { [qu=Q_TL_TR] {C*}; [qu=Q_BL_BR] {C*}; }; }; }; knightlines_falsch={ switch { ??1????1 -> { [qu=Q_BL_TL] {A*}; [qu=Q_BR_TR] {A*}; }; }; switch { ???1??1? -> { [qu=Q_TL_BL] {A*}; [qu=Q_TR_BR] {A*}; }; }; switch { ?1????1? -> { [qu=Q_BL_TL] {D*}; [qu=Q_BR_TR] {D*}; }; }; switch { ??1??1?? -> { [qu=Q_TL_BL] {D*}; [qu=Q_TR_BR] {D*}; }; }; switch { ????1??1 -> { [qu=Q_TR_TL] {B*}; [qu=Q_BR_BL] {B*}; }; }; switch { 1??1???? -> { [qu=Q_TL_TR] {B*}; [qu=Q_BL_BR] {B*}; }; }; switch { 1????1?? -> { [qu=Q_TR_TL] {C*}; [qu=Q_BR_BL] {C*}; }; }; switch { ?1??1??? -> { [qu=Q_TL_TR] {C*}; [qu=Q_BL_BR] {C*}; }; }; }; >> isGras={ pics=isVerbindung.xpm,isWeiss.xpm,isSchwarz.xpm << var roch_gr, roch_kl; lili={[qu=Q_TL_TL] *; [qu=Q_BL_BL] *}; lire={[qu=Q_TL_TR] *; [qu=Q_BL_BR] *}; reli={[qu=Q_TR_TL] *; [qu=Q_BR_BL] *}; rere={[qu=Q_TR_TR] *; [qu=Q_BR_BR] *}; turm1={G;lire}; turm2={C;lire}; turm3={G*}; turm4={C*}; turm5={G;reli;H;lire}; turm6={C;reli}; turm7={H;lili}; koenig1={H;rere}; koenig2={E;lire}; koenig3={H;reli;I;lire}; koenig4={E*}; koenig5={I*}; koenig6={E;reli}; koenig7={I;reli}; isGras={ switch { version == 4 && loc_x == 5 -> { # Ich bin Knig und stehe auf Startposition. # Gute Vorbedingung fr Rochade. roch_gr = kind@(-1,0) == nothing && kind@(-2,0) == nothing && kind@(-3,0) == nothing && kind@(-4,0) == isGras && version@(-4,0) == 2; roch_kl = kind@(1,0) == nothing && kind@(2,0) == nothing && kind@(3,0) == isGras && version@(3,0) == 2; switch { roch_gr -> { # Groe Rochade iniziieren (auf Nachbarfeldern) kind@(-1,0) = isGras; kind@(-2,0) = isGras; kind@(-3,0) = isGras; version@(-1,0) = 21; version@(-2,0) = 22; version@(-3,0) = 23; version@(-4,0) = 24; }; }; switch { roch_kl -> { # Kleine Rochade iniziieren (auf Nachbarfeldern) kind@(1,0) = isGras; kind@(2,0) = isGras; version@(1,0) = 11; version@(2,0) = 12; version@(3,0) = 13; }; }; # Richtige Rochade(n) auf Mittelfeld iniziieren und # Punkte und Message. switch { roch_gr && roch_kl -> { version@(0,0) = 30; bonus(300); # TRANSLATORS: "King" and "Castling" are chess terms. message("King confused.\nCastling both sides\n300 Bonus Points"); }; roch_gr -> { version@(0,0) = 20; bonus(150); # TRANSLATORS: "Queen" and "Castling" are chess terms. message("Castling queen's side\n150 Bonus Points"); }; roch_kl -> { version@(0,0) = 10; bonus(100); # TRANSLATORS: "King" and "Castling" are chess terms. message("Castling king's side\n100 Bonus Points"); }; }; }; # gute Vorbedingungen fr Rochade }; # switch ### Malen ### file=loc_p; switch { # Beide Rochaden (Mittelfeld): version == 30 => { {koenig3;koenig4}, {koenig2;koenig4}, {koenig1;koenig5}, koenig6, koenig7, {}, {}, {}, {}, {}, {kind=nothing} }; # Groe Rochade: version == 20 => { koenig4, koenig4, koenig5, koenig6, koenig7, {}, {}, {}, {}, {}, {kind=nothing} }; version == 21 => { {}, {}, koenig1, koenig2, koenig3, koenig4, koenig5, koenig6, {koenig7;turm7}, turm6, {turm5; version=2} }; version == 22 => { {}, {}, {}, {}, turm7, turm6, {koenig1;turm5}, {koenig2;turm4}, {koenig3;turm3}, {koenig4;turm2}, {koenig4;turm1; version=4} }; version == 23 => { turm7, turm6, turm5, turm4, {turm3}, {turm2}, {turm1}, {}, {}, {}, {; kind=nothing} }; version == 24 => { turm3, turm2, turm1, {}, {}, {}, {kind=nothing} }; # Kleine Rochade: version == 10 => { koenig3, koenig2, koenig1, {}, {}, {}, {kind=nothing} }; version == 11 => { koenig7, koenig6, koenig5, koenig4, {koenig3;turm1}, {koenig2;turm2}, {koenig1;turm3; version=2} }; version == 12 => { turm1, turm2, turm3, turm4, {koenig7;turm5}, {koenig6;turm6}, {koenig5;turm7; version=4} }; version == 13 => { turm5, turm6, turm7, {}, {}, {}, {kind=nothing} }; # Keine rochade -> { pos=version;* }; }; 0;knightlines }; >> } isNix={ pics=isVerbindung.xpm << isNix={0;knightlines}; >> } isBauer={ pics=isVerbindung.xpm,isBauerSchwarz.xpm, isBauerWeiss.xpm << isBauer={file=loc_p;*;0;knightlines}; >> } isTurm={ pics=isVerbindung.xpm,isTurmSchwarz.xpm,isTurmWeiss.xpm neighbours= << isTurm={file=loc_p;schema4;0;knightlines}; >> } isSpringer={ pics=isVerbindung.xpm,isSpringerSchwarz.xpm,isSpringerWeiss.xpm #knightlines=isVerbindung.xpm neighbours= << isSpringer={file=loc_p;*;0;knightlines}; >> } isLaeufer={ pics=isVerbindung.xpm,isLaeuferSchwarz.xpm,isLaeuferWeiss.xpm neighbours= << isLaeufer={file=loc_p;schemaDiag2;0;knightlines}; >> } isDame={ pics=isVerbindung.xpm,isDameSchwarz.xpm,isDameWeiss.xpm neighbours= << isDame={file=loc_p;schemaDiag16;0;knightlines}; >> } } cuyo-2.1.0/data/genSummary.pl0000755000175000017500000000436011672633152013023 00000000000000#!/usr/bin/perl -w # Copyright 2006 by the cuyo developers # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # use strict; open IN, "summary.ld"; print SUM << "---"; # This file was automatically generated by genSummary.pl. Don't modify # it directly. Modify summary.in instead. --- while () { removeComments() or next; if (m/^file +(.*)$/i) { processFile($1); } elsif (m/^verbatim$/i) { while () { chomp; last if (m/^\s*end\s*(#.*)?$/i); print SUM $_, "\n"; } } else { die "summary.in: Did not understand '$_'\n"; } } close IN; close SUM; sub processFile { my $fileName = shift; open LD, "<$fileName"; my $levelName; while () { removeComments() or next; next if (m/^include /); # provisorisch if (!defined($levelName)) { m/^(\w+)\s*=(\s*\{)?$/ or die "$fileName: Expected ' =' at the beginning.\n"; $levelName = $1; print SUM "$levelName = {\n"; print SUM " filename = \"$fileName\"\n"; next; } m/^((\w+)(\[[^][]*\])?)\s*=\s*(".*")$/ or next; $2 eq "name" || $2 eq "author" or next; print SUM " $1 = $4\n"; } defined($levelName) or die "$fileName does not contain a level?\n"; print SUM "}\n"; close LD; } # Operates on $_; # returns false if, after removing comments, nothing is left over sub removeComments { chomp; # Remove comments, leading and trailing space s/#.*//; s/^\s*//; s/\s*$//; return $_ ne ""; } cuyo-2.1.0/data/tetris.ld0000644000175000017500000001141612402160040012146 00000000000000# # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2002,2003,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # btGrey.xpm[.gz], btScore.xpm[.gz], btTetris.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. # # FK: Bonus bei Zeile weg # FK: Feinjustierung #------------------------------# # Definition des Tetris-Levels # #------------------------------# Tetris = { #------------------------------------# # Allgemeine Beschreibung des Levels # #------------------------------------# name = "Tetris" author = "Berni" description = "Complete lines will disappear." pics = Tetris * 7 greypic = Grey startpic = Score startdist = "ABCDEFGHIJ","-K%&" # schreibt: "SCORE:0000" numexplode = 4 chaingrass = 1 textcolor = 255,0,0 bgcolor = 0,0,0 topcolor = 192,192,192 toptime = 50 randomgreys = 500 # Das muss evtl. noch angepasst werden randomgreys[1] = 100 # Das muss evtl. noch angepasst werden << var punkte=0; var exp = 0; var exp2 = 0; vielleicht_explodieren = { if exp && !exp2 => { exp2=1; if kind@(1,0) == Grey -> exp@(1,0)=1; if kind@(-1,0) == Grey -> exp@(-1,0)=1; if kind@(0,1) == Grey -> exp@(0,1)=1; if kind@(0,-1) == Grey -> exp@(0,-1)=1; explode; punkte@+=1; }; }; >> #-----------------------------------------------------# # Startaufstellung und das Verhalten der "Gras"-Teile # #-----------------------------------------------------# Score = { pics = btScore.xpm << var local; # Parameter fuer Unterroutine 'setDigit' setDigit = { switch { local==0 -> K; local==1 -> L; local==2 -> M; local==3 -> N; local==4 -> O; local==5 -> P; local==6 -> Q; local==7 -> R; local==8 -> S; local==9 -> T; } }; Score = { switch { version==0 -> A; version==1 -> B; version==2 -> C; version==3 -> D; version==4 -> E; version==5 -> F; version==6 -> { local=punkte@ / 1000 % 10;setDigit }; version==7 -> { local=punkte@ / 100 % 10;setDigit }; version==8 -> { local=punkte@ / 10 % 10;setDigit }; version==9 -> { local=punkte@ % 10;setDigit }; version==10 -> G; };* }; >> } # End of Score #-------------------# # Die grauen Steine # #-------------------# Grey = { pics = btGrey.xpm << Grey = { schema16; vielleicht_explodieren; }; >> } #-------------------# # Die Tetris-Steine # #-------------------# << var sum,local; # Prueft, ob eine ganze Zeile voll mit Tetris-Teilen ist und laesst diese # gegebenenfalls verschwinden. testline = { switch { loc_x==0 -> { sum=0; switch {kind@(9,0)==0..6 -> sum+=1;}; switch {kind@(8,0)==0..6 -> sum+=1;}; switch {kind@(7,0)==0..6 -> sum+=1;}; switch {kind@(6,0)==0..6 -> sum+=1;}; switch {kind@(5,0)==0..6 -> sum+=1;}; switch {kind@(4,0)==0..6 -> sum+=1;}; switch {kind@(3,0)==0..6 -> sum+=1;}; switch {kind@(2,0)==0..6 -> sum+=1;}; switch {kind@(1,0)==0..6 -> sum+=1;}; switch {kind@(0,0)==0..6 -> sum+=1;}; switch {sum==10 -> { #kind@(0,0)=Grey; exp@(0,0)=1; #kind@(1,0)=Grey; exp@(1,0)=1; #kind@(2,0)=Grey; exp@(2,0)=1; #kind@(3,0)=Grey; exp@(3,0)=1; #kind@(4,0)=Grey; exp@(4,0)=1; #kind@(5,0)=Grey; exp@(5,0)=1; #kind@(6,0)=Grey; exp@(6,0)=1; #kind@(7,0)=Grey; exp@(7,0)=1; #kind@(8,0)=Grey; exp@(8,0)=1; #kind@(9,0)=Grey; exp@(9,0)=1; };}; };};*; vielleicht_explodieren; }; >> Tetris = { pics=btTetris.xpm << Tetris = {pos=kind-Tetris;testline;}; >> } } # End of Tetris cuyo-2.1.0/data/himmel.ld0000644000175000017500000000475612402334075012133 00000000000000# # Copyright <=2002 by Daniela Lipps # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # jhBallons.xpm[.gz], jhBlitz_anim.xpm[.gz], jhBlitz.xpm[.gz], # jhDrachensteigen.xpm[.gz], jhGraueWolken.xpm[.gz], jhGraueWolke.xpm[.gz], # jhHelleWolken.xpm[.gz], jhLandschaft.xpm[.gz], jhSonne.xpm[.gz], # jhVoegel_ani1.xpm[.gz], jhVoegel_ani2.xpm[.gz], jhVoegel_ani3.xpm[.gz], # jhVoegel_ani4.xpm[.gz], jhVoegel_ani5.xpm[.gz], jhVoegel_ani6.xpm[.gz], # jhVoegel_ani7.xpm[.gz], jhVoegel.xpm[.gz] # # referenced from labskaus.ld Himmel={ name="Sky" author="Jela" numexplode=4 numexplode[1]=6 chaingrass=1 pics=Blitz,Voegel,jhHelleWolken.xpm,jhDrachensteigen.xpm,jhBallons.xpm bgcolor=150,170,255 topcolor=60,60,60 toptime=50 startpic=jhSonne.xpm startdist="KL........","FGH.......","ABCDIJIJDE","-M%&" greypic=jhGraueWolke.xpm #(wenn man nur einzelne, nicht verbundene Wolken will.) #greypic=GraueWolken textcolor=0,0,50 mirror=1 toppic=jhLandschaft.xpm topoverlap=65 topstop=65 description="In which direction do balloons fall?" << var fluegel=0; global={ fluegel+=1; fluegel%=8 }; >> Blitz={ pics=jhBlitz.xpm,jhBlitz_anim.xpm << var leucht; Blitz={ switch { 1:100 && kind@(0,-1)!=Blitz || leucht@(0,-1) => leucht=1,leucht=0; }; switch { leucht => 1,1,0,0,0,0,0,0,1; }; schema16 }; >> } Voegel={ pics=jhVoegel.xpm,jhVoegel_ani1.xpm,jhVoegel_ani2.xpm, jhVoegel_ani3.xpm,jhVoegel_ani4.xpm,jhVoegel_ani5.xpm, jhVoegel_ani6.xpm,jhVoegel_ani7.xpm << Voegel={ file=fluegel@; schema16 }; >> } #GraueWolken={ #pics=jhGraueWolken.xpm #schema=0 #} } cuyo-2.1.0/data/pics/0000755000175000017500000000000012422656731011351 500000000000000cuyo-2.1.0/data/pics/ibkRot.xpm.gz0000644000175000017500000000165210362016024013656 00000000000000]kSAk+xdZx;KAPEs!TSs;s#Yhi{f&OOO,&͎&Wyfzً>dzr2=|4=_˯^\/C;nnC^ !ZHϐ!eTxVașN CC.W@(CIY+6Ԅ bEANCށ}4 D̖s`ڕ0Ne &}oBNjj3B,mrmE(\sBMwL=5 dܞepMy5p0 dog?hpwq@dPFK eFlt`z@CAI< XQʗpi@V+ 鏡 ~e4061JE0L^BUq? 䊏jQEQsBh Z4L \k~3Cih`WlK\?Kj赆a3JCk' ,BO%T24pLM!PAg$hF^3"`ЈּG-H d$h60^5`={h{y@qh1Hai}N(}VG' ?_M~1y^Bcuyo-2.1.0/data/pics/mdGold02.xpm.gz0000644000175000017500000000424712412223261014000 00000000000000_[*Zk2& qH[ ٚnZFk9Cw3uf3 ߤ'E쮱׸ߞOz vCa<=yh\4Z,` Ҳ-f!_ӲűX}'-2\H۷b{7(-Z8)_lTo+-;r 63t0*d!dwbK#dhm aH)f6=hj+-XJMv"! رl<)IѲD:Kb0tD}AΆbcEKd2h9\ִ3 s]l4Mk̮g`QU#;[jgF`6k [Y f53<#qߕ .#uËnbD0jĀyպ+?&wJ_t=.u븃? J(j=p3yׂCkPE +qIN]9mޢҷs=c,k`zlRh͢٩Qge,xBm(C_l&YĚ lс2kjreEYspJd=@^:0F[kZ|<4ӷ} lRNIY#=99\`i(8;e}:aK^y>wZs W=:'LS*-{ZE XEK0'l :a[i>%.Ts\O vԎQ;jG`"c˃ PY厼AwnOy^Jvn7@o|T*r(E~ۧݕfZ#CWO*q>!4YU`(?0WY+.ãFW7 @e.cLrME(ߢdῈ#qD#h8G4 GeˑgQ78 ~r2k]'.ttTbd!$[GN iDwy#OU[GڐC&iMZf .OUF{v{;4#2vy|V.XygˈysdZP93$d\v~| EQCI䈟ݰ*4ܑvt͈͗L.\~qȗT]:Re{;4#26娕d9s>2Gė|tj]99b#tT8:yqD#h8G4Fш#qD#h8G4#|!!18Juvٝ#G18#G18 `r=_+Q uySe&f#y$#IJHg<C!r!)r7!UEL! Q;$B84LGc*$׻!}CݶFyiCtCd^a)4ÃHS:`?A58yI9G,$j\pp} *§wpU7H$@!vX G7 ROPxk Gah^~R((Hږ#^ A&(GyL,ő"qYB OVE*fI2`^!ġg:jS8 5K;u'$KHD* o(kOʁQ 1Fےr xë@!@(w7T(&cuyo-2.1.0/data/pics/bxLok88.xpm.gz0000644000175000017500000000447310361553650013701 00000000000000b=bxLok88.xpmSL[&!ynK.<\]xUŰUWM$Cߤ?33nflcvIH:/g]Oz?c=Axctˣ<}CwAWY'ڻwtf ¥A6Q\1O%@n<:q)Mtj|{Ξ~7szNdQ0-EO JFYW&\ 1g&5]7@,j">%|qgy]-_*,4FyWE ICA@K9#em2isW9O|;1ȵY6A:BiVk< d@Ķe!oQ9BȶȕyL8z\ ,w5OlmoDQ:Pv 2=(,/./bu bN0OFpCwnye~El ɞnh{)Lpɝ[bL~aR/t17.UK+\se==Y.ѹmO44HDW֨ݦ#ƩR銝;m]WL[V ݢp3<79 Yh %2̞ń r  .Y*mRA7HǸfu [7'Gn% k2:-Ds%iD7%WUL&Dc$T0DK*W$խb+1H nduW?Wgȷ]&#ZÒ \7n:cHudjm<Gѝi G K x oGR:9h7f8݈3|OUD W[Hd'`4LGEApĦ몱Tj*qE2D!+cNMqs$^kUA.TOaXj&S9r@k1CX#def*:Iq]zjSDY3bl9T-M=P49b 60a#BPfAlod߲e"B y0s;NxIHIc=5{^Mbw=$0UQ9FJb#^q6S޲ 5#TkQ|~#Rw$b2C҈}ک+3rne!7r۫1n!U*3&za/+0,W(`g̺_[A:>`q(JrĠn$=[v*rLM3DF8HsbF0M Qm\x`d1iA2㸸㌏ZZ{&+j=` Ƈ#kU+ @"`kc.5r51\yu\-=%qX+A631Θ2Xm˯iuʵϾyZmԞaڨtiT*K|Ӹ:a=onn.ma]\ZA@*mALyU0,I ՠς> 6y\K҅#с,G  |$5i\cg+,<0(e٩ l-S+FaغX0g^y 0 8"F_0)jØo[k2ǣdʈ$W WߦW("Fh.߱Fqq! "\ÒwF!HyBފAC a5y3sZrț1[ go 'r .&~Q9F}GYh⨿ߚ Z֊~h}l#_›oīK A?<ء0l|]xʆESYF!*_vOadˌƜ%t 4W1u ANKn^2ʨ>? M(D!DўsVz$HeO  :tQ#/{ 0DDoySC"n;rQ(;Kd@?8 "Yn? ml$[;朋zj,[؁^_ 6iɳ1{ُ477)#Q7|7clXeaymOOx0`- 9tR홻<}0(Q} o-Űf~!t#5+@&3 uqL43 3#x#V7SDu1 ":YG4IQ{[82q}  ăQZ/r`'vC7,i&c"&O5&J8缄?.I %:`JӦS06iml *cuyo-2.1.0/data/pics/ithRotBlah.xpm.gz0000755000175000017500000000071211101102054014452 00000000000000LGAK05asR!xDCwAyyItzPDoɒv8k {onl绕nqq\G? {}8ZҢp2MFJJg37*(N]RzeҌ{_xn6cuyo-2.1.0/data/pics/lrWasserH.xpm.gz0000644000175000017500000000267707550521117014357 00000000000000[=lrWasserH.xpm݋7{r߃]ȇRpro P#BC!Jc% ff3lSjOwզ׻Ǐ??P}_}<\Mu>w߫a_7uUí:=nGuR{-tJKwҍ>4n=CnypZCnfXi+sUr˵kqUrKEAq97;nny)(*.`8>踀` FzwH@,_".(ԯg3q-zE|>IzC^-q [y:-/G5Õ[u-/uŌ<y>py󜶐((.yMEyqaBBLk|n~9$k QU`ݠ:~qQ'0PFM-#Sqi ?apupW=O\ \\tBo`HmS+0F=miA  ֈE ͈(b~Qy#{yqZ¥؞/McC?믙}'0vS~>wlAn:ŌC!pׇ~7ov^Zq_7BC{yq ' Zʲgum}$;d/yKqlF0IMWqk>:.r_ܲmXkF݋B9e݌}A`R3p  ".!2(wl_hO<5C#[~!Rè6;._НG5VqF.H[tCz|b|j& Ǡ23M,kE]g͋du֥“D 00`$5,y7?aBeMAA q]Bչ_b`܃A^(bb!!CDho%m!=Z e(7Qb`߿p2/b+c{@tcuyo-2.1.0/data/pics/maLidA.xpm.gz0000644000175000017500000000312211615032231013545 00000000000000kWJ+b*7\'QQ*.D\"x*=ZKb=g-;3`!rY!:;?UJuT Vsp$$ " ~L} "A(QE `PQUHhQD]H&$ʼ>,ڢ CLo(KK,O$ UGI* (#*>"$A3Raӈ3!"ꢍK'f0xӕ!@ Pd_Da3 *PW+ `1p ҡ"@B(M@@#P +`Ҁ n!&n3\k5}*bGtTW:UWQ+ceKu-8DԤm[?Qo_'bN\D*:%:p DS!kTG%&j"TZ8Q;FTuI9?AuzR4`gUR:9I& D}%e*m_2 a^"|\!,b9ޕ%jx7ݴ m좪[<IJ)NNQU{FؘP`+<`JmB Uvu\qT GqLĔsl]a6:jcfv]~+Z^14BXDhp^N:x K+ܗ|"[Ϯ,/ ѷC0,3ϫe2i6(y Rny}}m- eY?kk˹ln-<ۛۅv|0d͓1DCi5HGR>SNԜ^J6/|k!ˮtW4M3^hhk^Ʀ@F5mn]jAxFMf7ҦՌnGuQ[Ti;hFcjNݫmKW vkvXΰL y{ ɴm̎^J.7O..{I~urw3P)sǪ>ƪxtW^o=GX;ƨ7-buso=_fmV{sǷuf\?g'9<)$gpݺy0b$W-5'xގT[ɏ+K>:K/ӟ,tQ.ѭӾf0vYG/ԥ ÏK!{y^F6x?xC-G9 YFJu:< ?|͆o!Ly1҇go?XV$ Z^Vb Tƽ_cl;S\8J8A "Jx>Jf,e~g­ yC|oww]=|{SW&cuyo-2.1.0/data/pics/mdEgoL11.xpm.gz0000644000175000017500000000200012412223250013720 00000000000000WAWLZ-&N; j&PHBK+|oo7/'r ̝;ϝ3$ilEOG3$A!jn>)|\_'OOB{!8V&<@O={ȳ ,X.e8g?A0sz>0[\T} 0X{%J#K YbLnCZ |,idİ) geX7*(0c*B+Y`1@Bj4o]-+\WU؍AQUYeE*@J\iT82?]$t 7u r̼grum'.PɌ㮫TAs Ba2L*`So00 sW_9V~J&cuyo-2.1.0/data/pics/bxBall112.xpm.gz0000644000175000017500000000650310361553650014066 00000000000000b=bxBall112.xpmySOƥXƐ0Q zJ#;$uߪ3ΜJ<9N!ZS*y훔ЙPYcvCojϗ|2G÷_O/d3MvioJ EW2  44Y хf "'4GԱs\93jLE+Z@&]73z( }4с,|[ӄ :L. )Et8 "WD;ğ-޳h6eqhpGc[fY9D-;D[eȡn6E)sħx7ڹ` 4PE;4eBkElj*Ϩk5;2۵v[ٝǽvn>zTLT_PQlͅZ3&5c2Z3&5c2Z3&5c2Z3&5c2Z3&5c2Z3&cKhB:PI0.Tի#U-߰&.Ms 51#jEHFԴJawk:*\6I@hqn\V+z.velF+mQ#cO\FCBe.Vc1R~b'N6߂F _bs% b=yb0%G5R-CD3R+'vMooȺ n2N T%#nser[{CsjhQ\7!pa1|4->K)Fb<=#SKl E0RY^!P +C tVhdHTCfqA{%2<#LwUK1 PF`e׮A]}LJ8٤*B̜)(n'Yb.ai%Uՙ's!"P8OdTR?gsOJa<ndه}:1dB 82#-.3yp9« q#0WlZ 1RclّGrwmxl/GoB1굌Md0\$'B=0Ҋ1瞬.*O'gD% C16Kpo 3)iN (ݧӧݒd'iV#a\`3"H)ɗf@O%1lݎ`FQ=63Nzd +a^WratqJ djniߑbJ)bwzfIS+ FH=wD;N F ug)8rpKb<N] iBqDƋ]Q5*1TC~mo_ `AߩMhj5%7Lqk4A~tgu:O|OY0|ܟ#5qYZ\w/~`\rYc0>o+"s4E%;,ԶOH5 aoԞDb<% H~UQ^LD~f.?DXwBNjLןQi Y{xD7Zה=45sYϨZqꑷugvlpYV\6R, ~(3qTt6}Dx5şf6.csyV&}i_m,{cX|&wV]^35_1#œr3pߥJ=~|qRY2,wwV[=7bS 4 OT7C=/i;~; 欹6e9R$*,>p@3:c{ O"I+#qA\"r-#e"a&$D s,x^8y3@/Dy_|Evfpf?G߿ uH}+#ح`FHx*B8mZƔ6΂E "1{H4lQEy>wQ"E +[ň5# ty}y}0%؆ 7sSP]Vt$*l.o6W^,—>$1iUѺ2* jxe4bᗧ$?{g2њ1њ1њ1њ1њ1њ1}/_%߉kcuyo-2.1.0/data/pics/dnBlue3.xpm.gz0000644000175000017500000000102307550521110013712 00000000000000<dnBlue3.xpm]K0MEs Bzx)ȨcZ }[zxir ['.EM櫇PWwbtt}#Nħ0:8raut/'Uw<όltWnOg?2n'{jnwXld   ֦VVRnHoKzA{rғ J&ic ^VCSX AS+/H=n,*Z[36("f!ndd @24 r9-BnP zMyZ[`{5DZVjĎa]~A,\άv# :@2 e?v0@N#8^k޲C:^ b@a՟ˑ d cwe9Jj??ÿuZ5oYk \by._ dױ yC-Bcuyo-2.1.0/data/pics/ibkBG.xpm.gz0000644000175000017500000000042510363463316013412 00000000000000cCibkBG.xpm @uJ*ADE B$`A3ǙY0|\5u6ZxEr!-a/rY|8 L;`[`L2 &>l$xKT 2ŽB~2+%?'D(i #k>"Nj#| h#XF1D4o⑲1Ca$%75c8U2$! o!SXccu鞣$gYHr& $w]t{HK7hcuyo-2.1.0/data/pics/btTetris.xpm.gz0000644000175000017500000000033407550521110014222 00000000000000+=btTetris.xpmϹ @yK"h B !0 Rj)fB-LikْOsMtVhCoe%ɂ (ʢIEǽ?ZG8!3猢11t Nw|jH34^>˅a0O0#0#0#0#0#0#0'g{/cuyo-2.1.0/data/pics/ilRolefant.xpm.gz0000644000175000017500000000313007550521113014521 00000000000000ӣ=ilRolefant.xpm[E_yۖI0QDo$ȲD Dt3}깜'3oSU3w+͏޼Ͽ/ݿO}ϧ;<~˛_L?ϯ?~^zGffrdS|ˎ( (2o[.[0 ؇0B éDCN225-&Cj)c<-fgJ"*1CZ"Lu #rY!"akt j(oBh4&O΋eRArሡ1eB6f"nfR~W\d@lNɝɣtn@ .Cg!:ÀJC xd!8L5ײ5 bDB1"`0}Ăԃ(b=@o:C j+0= 3j#xozOGd{ م0 r@Ɇ~ޏ:U&20}S$sm!c(sr[0`%C21'1XI55CĒ^.h\v$#qJޔMӶi/ X~"k1C 0Om\]K5)KP b3FFc mC*9L>j[ (~٬0k ɷAe^*NEo, 1', io MQ;0%1La\N(C?%\f ac}Kw P V8`0"s-q1Vur&$,\u !>4l浆`w$ZKE @(7 #3Ĝ Æ&(2_k ٞYZ$r֯2; mjb@/toF x\?0_jkH kkV0p<;Kc7E50B`-?N w/lC6z&aB5[X: 53b>m|c 1$S"hﺟ} 91Bcuyo-2.1.0/data/pics/iwaBad.xpm.gz0000644000175000017500000000624512420650610013620 00000000000000\kSK+P&٬(( (J!"( 3K$q0tO?}ٙ,X{+{F`pqh<[zE xlZʥRڠih ӹJZ6ѕbA  bX : aԠGΆ^k.Ҡ ] K?f ]3ӡQAߵR.}n>ӟ$Ű )>iCԠߍh6_(}2ߠH}u~1]U 㩋rfe't)_ X?iO3+/!/٣O&_퟉yW_}V~cl5(^7{bd^fߌUBGH鯦o(]/ o~C5 z7<:A#R€ ik=xDV%SFk> R>C/s[(<#Ί} zgOczLЯpt+elI󱾞?e|4"g:"G4 '0"ۯht^h~f?+2V|lU #iV%֨*d㋒q|sk~m5|^mxKL%'OiP7WE^;?~Z?H/c@P~5͟?'+:odTe*z *0'[":~2'&*xOyߴ/J<>x_Eު}fmB3~eu?ׂ'g/|k+-|BWAT@dtQP_ 6 Q6 {t>S~܋Ǭ?+q?Ej;،omZO֫/5HTE]3'uã,=T+>5>uC׬[5ߵ^ԟ ,>4foX|d}^AWPcFkY5G+جRվ OR3zEsy?`_ـc毢P_xu}3}t?o4,|8ؾG18gw5{FZKB{b6{b|6C6gyxa|JOY|j|<6i}fmˌֳq<1ޗK}E]t9+ x `6Cc0p),;H0,}xpt!! <ܸQ!d`>*|5Xwl[7a >6|fۅon`ip#(5/br(N T㛀Ix O)'astx49jNǼ\xoݿN@DH(E4d QY6< ҌC{1w#Ʈ0JpӯVzk1H kjҒC5@tm8:P[6|;4:eF>v5[ ?E}:{ gTg Y:=rT1`SAb .[ E CV°C uFaahwm湽?BȵMӭ~WΎYhrع)Xj>q,ݞ06kLhci>'C]1lxR1|qO _E|إ1缤)XA{%Lbs9$Rp8B'aM" $C9˴ I]*Te?AڮgS~PZg_^,nX2[/2.v>3u̷{v1\>nWFuo/c8R`*4AI-přqlU$i቞O}o1Lc؂!FѫsoӉ0 $yWzy 3fEì|bP56Ub`s:tb_ M1l`R1 cX J,Gȟ;0pJos'|)r1FJ}܈{3cI,x=a &qwK=s,Aأա ?kUwW1Nwhcz+|}5~7kh?Axg_?\? Dr޺H?6[1K(lv(|8X?4J, cR1,}[0^lWzrfE/vSo͹縤/yPXĞkh|{ wbab1TN=%]4i<|X]{ G8%6P-['@yr;6a$y^Hg@b+{?^u? 1fawp ݓҮ !5j֡~  7/NqG0[pvu3)_zN?NCt`񌎰BNIB_Ä n'y-)5 3tv獿Cat e`  AXMc|S`8gi|VNKdU`f9WWu& [GOi}Ѝ}) 5Xccc0ׇp__)W `8/'*scuyo-2.1.0/data/pics/bxBaer48.xpm.gz0000644000175000017500000000311410361553650014010 00000000000000b=bxBaer48.xpm[o8+)frO@5 pI#UD>8!Дri j:*vѴORQk◳ٜ$A`i(Q@ٗ" 'haOWg ѹPHTv& *)𞡬HH^2Tχ ,s@M$a.Ʋ{/MG *"CU|@*j㽿Ae轁PUy VIfXfj×5K0IOc"RuMjI0`h*Zkf{1`WP/4  MxC"}~q &?dw0+Ih( QdbİϽ&$02659I{XrX{ :|! !"0d*L#`*fOM#`8 m(a.Þ v `V bBZuP(ApqD3h&0pd Pđ;;%H:j,Na_#ϰ $`|AIðMѝhr2z #wܑ;rGMc\@ҁ>VrdYSTN@[TItF>ӂpUߥ:Ђ:V9 8>GV?ؾyJ8s!pH>GIzL\5q:t7P9rd0aGb9;?8tA7 ˔N~4 K㈮Α@?uY\0lY-Q~~|NMA8t !Vd_-1XoRq@bm>pS&S8#jV4AS8eI5Tb8$>G>Ru\KN@Z,6={Ίm\bu4Տ;J|[\y^tt3#vG,t }fDIqq˪ݎJbO[ҁJv]نbK5;mS^ܒPޖr|@ԥ Ify_T~!-C-ϫnu9fXg7$; -Ud?ljA+ricc?7_w9B 9juy5 -wh__.Y5`fHk[)˱imzոڑeHnO4Ϙ$8sv[Ǒ$iK߷(83?Y|W^ȅq<Ąl{ƦNE-\-xxv#Jf^~_<{*WyGu&כּh;ɮ?h#/ާ&}>/wd#wܑ;rGw_]\#*cuyo-2.1.0/data/pics/jjGrau.xpm.gz0000644000175000017500000000050607550521117013654 00000000000000<jjGrau.xpm_K0849 ) ":s ~w{Yyk.# 7WGǺ\?WP=+а\^χ{;' _<8<B8Φ>!-9a>E(vjӄPin yzaSBEq2ڕ*la]nF8$w-Ŀ31.:c"vΆ9[k׳ѴڳZbLmz@) FQtB)eP))A*ּ҇Clihށ#9]ͻy8 *z!9 ~qJuKcuyo-2.1.0/data/pics/i6Blau.xpm.gz0000644000175000017500000000162507550521111013551 00000000000000ba<i6Blau.xpm]k0_!b;P4kR$K:v9c0Xa_l $9J:*">Ob\}s+8~:sqw|/ދdXnJlbt2Ok_W2[inޚmk˛zoUwlnZ/7fۘfv_]ړBK.iWW0eI2(*ٯZpRzA4MQV]s*G i[UL A gVVcԗ]LG .<(}RK@Pkoǁ<'%qhKDฤ }{e0&1A=} _A;AvEB[0 B=0 K>j% g̓]1(œI~ãC8UŸ|p)zqf0߭eޞp%/P}GEtE{.p@1C7Y1P.@$<| _zq\T9_aF z* \ch=E )|vQ@`e!6K0|c.|s81zZ`CR??P!̀1`zp ??0j>H> OwI}?C:R> ?uha>q>pT>Hs̳8ԓ(CFH?8sF/`=xE?/A1_za|S "zO8! }ȹ C2.Ps6!cuyo-2.1.0/data/pics/font-big.xpm.gz0000644000175000017500000004754311400205376014146 00000000000000]{6qZz@q3I۹m-,lW`@<%$ёĽo{?n©\W]?9:_~GW 6Pſ% OeAi,ɳ$xq@y@??.Uի ,EG$~OH{gqit$$UO,\BU\t$CR8(tߑyKJrDɫ)4F\8($f|{%iHp{r!9MRu;@uHÓCWw#A\u{f7n ,WcRν4xKM+kR yoUH!5imuGqt;8sΰC^K|sZοoLH"$GńdtOI9q9ja\}zG$ɛ.H>:>;&,=W''?w{G#?rB,]~c Ʃ:<#5_WI>o>鞐K?#MD$S\w* _\^FU"ߝ+r."I~'I0yv<{~I?M="mU|"[ \">w=߶VJ_8 "0+ (|(߸x(PL]GFjke 4$̢$vl;ǎc`q}8>vl;ǎc`q}8>vl;KsPY2^Z`?^1d&Oh • 8|204R95 fm\V/_RW[A8am^ivkrhĬ6p?3*˂ƛVN4m(z0%!=WmXcIa% LAMHqfâȖryer$^㆚SUT@TRyR׸o'QXWO ĖE7wMGc H9-(?)h8̃E H4&`h1)sfrry=>X$isU^_ )]HA R ($Y3,նpAU)mN@64,L + Ɩku9 <$2D#TyA+E@c% z9IU{=lP`PThJw39x(Jm}i!(~b>߰(%jx ! dl)pjc# n~`;@] ²/Wֵ٭jTƮI 6 ˢzKP>gcY~M= 1y(O؍Fjx_!ZmU ASUKXjkPc/8R߃IY4h[iNbB8PH~UU͙*2{NQa-o)c!Y>cEvJ,c-;lh;}Zܡ`>(E,05dxt rjT85vjtYX߷(F$a6 DĔE.ʯ0??\3 O<󲄔o^8$aгi{a0^|rܜH>ߨs'zUZ8) av{J&S ň`)| QWgb4+Z=3sdǧueh^bLWa2 .8voVUl TGiZHNJE ܗJ[1&0 NccR5t-qnqr0V-[rGyNvf|vK/g(b,F!T$#j2<6`zX#bU$` B0%hAE"#6{ŵ" E/lvyRO+˙csoҲJT ?"sV:jk)ꔳCgGcWJҋlNǎ#1n~(9E!Al4}3W"Gt{^Fk5%y;!==AA`N8k'aвd)_xA"f̢hl_;j+Y?prngO ag`ʋ{'~; L.Sz,Of-/m&EMzBcl)$7J;i?1crh4ll/152d0)Տ3o@]yk \3,IW<#EZTV}XUC@BM?,,MM(N"t2L8K\؉;0a~GR|5TyM{Y̬6$} cwjW*%( ӃšlUzq25md(5K>"@gԎ>F929%#5=7-Wr:uW"ڣl&^ʖO<1c0K1I ǘQEuaqqyiw St t H*]X%2L&&8 &`61 M E$Ϭ\fVܨb;' \оMF6 3:Ybx0EdXo-;xZo5 |JVNRmZ\v&w-m]\fn0ą )hXZ_T&@|B-vi${}{μA߷j|X䷼HװTF3>Iw uhg;08l~F9^MծHZ\}W;B])toLcJVloe"Wv]Ei4*>!O<](x|Efg\HÐfhoh+5\̂0IWt>Pz[59cvQg1.EWJQ1K[im/^rPx7Ho^kV(ؐXR ;b Ja΄iPCrFX2q62m$HIn@#cɅI([Ѭz&/S19Vʁi4>e*_ucJxU4O+iČDN%ƮIA&*'AJBզɁ!.#A#꼦.I vB>㘉< T"⑀^C'<˖jv=JzIĚ!*[xFm"]zb^HY``D0O}CVZ6۟ ~L߯ޅ7 :m@dwyAfi"7qEk.E2W.(x"͝)K4l:"VŦT̝ ի}f>)rrZUxzUF4U: YG=?VM#=}^E9=ݣ@=w∾)ExP<KuⳜhJù;@I<{8Ewt_f_,O TA"L8ܢ?pHwqBfJcdx΃$<SfOYNL9hpYyOw{ЗEmΌ0'J!MVv;\'6_?PF3ITJʁ\yҐi]ek]מR7iݙg<|SYGnv;]V߰=oO^껈W"v^nK ;lMVȗ F9Yk(Ei](bFii'AP*X<6oHt<<OFm/}ܛI2Z?EG^YNZx)`i8XXm$0yo?,]6,,NS5!FF䃉_}N ۲l--(d̚'o C7;񌠖9Ep}p`\FXzf|=)P,.iBDk}0go ⡝(DȝF9Ņ~Z,fhZ6rk=D61v$zGܩ~,~-j-B}J1Gv+q;P+t#hB~'Tyh׹Q_46@o,ymTYhNke]IZ6ƪbf FLChxD;9PoM =RJ[g2U{/Un:@5k$RZᯄMRxPrֹ|%Kk9\-`Sk[+QQpD.$"͊ ˉw dC5XRΪoIID׉pc93_A#yԷhe..]^^WN ,c[u3V5bI&4BeʴPJn栈b6C AJE]TE RQS,ߖr E[jUv\^H(*Do5XЁS%gA[u$c6o%ׄS` $8@ 8kam>k [?c>`;xkxz󒯆JG3^ 9y/Bix/)$ v.Bir5sQ{D^!ƞy4.C:ntmY(`$T'.DQKU3ޡ'5&˂dɚڄw̰VځǵhA E7yaE\剺mnЮ14VU]ke0LџEmmAXJO4?.>z_L$`x[2D6]Y)cژ$"դl,X4>Bba>* ҼlKF>jzzU_ǞW,N@s˼YuD*JB'5LXRN@E 3 Y\U 6M"h[.ŗl%,sTM B9;'γj.wu.%lbTC-]$Ƙ|$jR-L#PţF |>HnPK%Ì6Ym I򲡭S[3tR-;33hz4T> L{GOL1)ԱK#b8MUP/Jܽ}, ́!qA=M֚s=MBFP,WMPSO~V,(H3} r\y?4C@9ڊ:X"ςpqeE-=Ho}tǢɁ=] #bC9 X:b6.˕7+41aKh^c)H鷼J9נ, h9|$;I[钡4 eS}arվ"ƫ`ߑ[e4fXQJGD4+ >9x~7嵃H..̘yD)U >1rj`ޯyHϴiXwɣ*'fyLOă;xC98Ra:e.+Xz2rY3l])Zs bU52s TL|S$o9BxA%~·W!&#!R%|]ō`Da@$iї5ovA*sfLu: %/% fDpe[ܖ69́Ʉͩzsh:2D…=/1fGXn k*хP#Idl !KHŅ@/d%\%ȁïOL)2GJHM-D*@y[?e,bGj/D5{{._A}=E 88cbtsr/o<*kHX<yD$RG.1ys,unկdVؤq7 ޤ1`r Bq ^OQ\rp"1Q:+B(+sy(B?oaҏ_-E[E:&Zc:|b4q{#/ e2KQ>!ؾ,}V5ovw\U}l>>6v𩃨ԉ\t@H[)- "BKlFM}"ºcm2uo6R>;p >3@[ʲ}|gDiI̔VOkG T|8vs=zGA9=Ss.[KƧ6HA|fI8`BxL6c ֕BuHC<$RԂ8(c2KUl=u^'AP>z%lBZq88B~}$pQ$o`[.;BKxd_`Űb磔E&iLJfDζ|23%|?KXρR1y*/!_É>4qЩCYU849*A)CH `=Me} vyx>y;Ԥ^1u..d)E"~ż\N\脁&l|w/l!qn (DsnXʼ! Ws}YBVfs!XcLܯ$ P|6ɡWdi@7#4:s, bZ*~B@,Qj(-$~Ë(#|ea~bf #V&3m@׵p=/Aun$PQA+5#sHmC8#j A`3B#. M@qv{/գA3ۃ/\a.7k^tR]|#{BfD~QSL3aoҖBHGq@Iv%De|@5B^i=O?P%S!񭁫N/31@ ўMZe? Uu=ԖZKsp}WH3 dN[4) ~.u4kI*Hgj {~8dpk)24׋`:lyTdߩ2ia}DYD.48r |yBYGU?=zGA9=ݣ{ts=zGA9=ݣ{ts=zGA9=ݣ{ts=zGA9=ݣ{ts=zGA9=ݣ{ts=zGA9=ݣ{ts=zGA9t `)F9_e8R9Xщ"QR)ˏ'rzy'*׊C9~$߼y.*Ev $XmY2Wy/GY(qeG²M=QI . .LV[8-4]QIGr|O՛S=$g%N xĴH J cwV qPX:6,Djc4)F rR'wPu;_ ̉eY6v]oS"m{>L188A,Ўpx$qi'u>xC4!HVk!K"Fcc|2bȨb֘y1B:A} TYH5VfA4j hf#hbb Gf0UM6RbI {9%|@'g ϰ+&Gc@0yStCT 1<\fP}7P pak 侈h(S:딸gXPN# 0!?~Z .̷,! M/e|@ՌG2/F)L/o'qF섺/|[4&K|]'#zX^<ǃwz E+y6G脩Y e=yENraˆzmpδv8p }+dg_5.rJzk,:zi>]2fS=ݫr2ĝ4F{UQgt[%spYE4brhpYr$:0CC}:x_8=R{3iT)|l!>h%zǹ Kp܊6RGKƻm+'Hvn]E ݬLBdr\Ғ\Ǿ߫ Mq㦝%D`>~zFC0DW#BH|" CZw{()-5,kϟi#͵ b% +g(KvX y;2>]ܹ.& vO=nw~s|=kSh&9[j.ΐgDgX9^ut;\߸]V'?ptS}hP[Z,.F&CYқ<?tXǂ1|s ׄUfmK::0LIo[*}`! 2+ >&bf˃F\zqt}tw_{a/SͥMWwZ%uKu=jGcB8P_$]f=PW<8}&Uೡа@TB[A?ƀwx>/V K+pWȃ紈"I.~AIf ;&qYiI3y̸?=V1<>t؃* #"uK13f۾r t=avh$At6pBa&Nf"=Om0ȚA[%}| 9MBAiTy2KBHQ<D 8H"s:f._[aͻ !s1d{1DZޏ̌{Xi \:5#p buhqXXn X((#ngL5nJYehZd08 5Abw:7MqE.!RKOaΩiF`" ֪uM|!ǬH_>}y@ }d~u`,]`Y3_ Je]U fCZmqt<W3w9C>" uN cHsl{SݵA*L|y##^ MT٠L`} ן`np = w|zxgZ<2x@ `!Ԥ&nH@G;)'Q8t_R Lauxp$GS4)XFKZ77DNM7.lj f]2K9 (z>8ŃrF5A1g TI(V*_UI2T2ćǔb`!* { 8u,UXOL!'&EBWb6 O 2ʒ6i6̲XK+r` Keޒη|>=1Yᰢ% S'r=ߖEߖya| Nh(tzaMicun7f p맜-mysCe43<'abşLⴐsՑƹ2"\@Mlw)]4$ri7:l1YAfcxJ1k% `mօî2(1%Qa$D7h}Ͽ^NY`>̳bZM9BA)ARfϲ`$Rڊ;]t: ]4%\H+ 8:@<ɋ*f( "7'dm egӉ ^b`m;e3Os7K/Ki7ku*Cje1 ˸;N CݸjaF*Bs)B+M`]|ʔݦS6y_,S '-i3BY g#֮3xP`?j}ӛ9"h̃MúNz<;yHU z'.6ke}E)-Wf }ҜE\'dNĉ4Q3ò* >Н7y?w/ B'EUN'b0bٺʝ0;Hs$$YI($iGљvcNH ؇ %Ll~o!8ʒi$ۍbaKLHYZrj' E(=O[@R,13Q˳[&ۑΠZ"½ <\3v0\;\J$O^|7|7J׆#փq=3[Ko!!R0ldbv9sF{@EZv'+}g:yv<̗gSd2a6LbM \b[^xn4x9Wٙ0\| [S i:yWMV-w8YM:yUn<&k\_[ssyK֒мl;,Iˍ4M]YO>p7T ,q~eYڮm;Jp[d1#jsuA L.ef[_jŴBlcdI=7x fǔ|Vۇ@1kM{ kږbY#7ƹ( ĄNr'V&ۓ,FCtdck\zOҮdA;8ϓ$J[^\(PUS,|'&y/:v>U r^R#TbB]z55v` kKi-W{u@x.Zݿ|7Q?k4BĬQsƍ #TT %h^OLAWݽ'G=WIsYRv~Yz|ϐ53<<}"˧\t0hG$3SkiU iqבk.gwd?Z1\\*?x4y0pz*!4e:^Up*(\8)?٢ )Εir  ̬"uzUro G{ig=T)#qJ28 )"XJ|b= -OI_Y0pU$m}Nc T}7|+WP3vIwӡIJ@Ƶ~ [+;rpi< ZLX 8.&-ЯZ6L=h1#G <2O_L۞SoX iNԣzv&R͚PAlH&rP\00r6 q/[]=yL9h{+?Zo*{Fps (BQL5|UVk=Z@W|lW/ ^5 U{9NTW# ܠmkS蹃|WW׳]MPJȐJV0&)w<"QGgzsS;%jřGEE)T!Z y<_ }>Ml^[ipJ*.!jE_~i%[Haj~!'|OoqFyԵdcrX2n|\7댳 :0cYn}hCv*C2R'Љ]bG.F~lu֏Uw B`u>! k9}C^A'~:6}-~ϋ _T9z#[jqS쵗`9H״,tG++NzSP~,C#׷H3Gz$DW( ̙: (!Az]hWò{t[t!,䃵)J/rdK{k:Оoz6{\LWBL]$0d/ X@ 2dwf][slS'^R9w>{o6{. 7ۋar[ # 9;ˡf]j+T ?{#Bx1X1}яa>Τg6VM>F! 1i! /8Híe61id^U/+BmpBGY3/.Hփ27L6ڬN<`/m;H05^hz$|k$qz&gCwɱPE%QF|aQK v{_r|fµ ٦pW-3ܔ㗭(H[ ,J#tb"LAb,n R;Es%R'? *TM&.읃oqУK}ܧ|z\t5Sr;i\EqI̕)z!2 "!)XJ3N?OUYSd*^vnc%P 3I>\.Ds>m` IǾ+i ݷKO"gBn&3p|ިŞ4xSGٹLɃ8=WV?ك>=ۃ ?=YVo{\A>aDI_-E` e"#5fqr|pU sQJ]꟠Oy7)=e!kTD)C>?솏>8B{&hσg-dc$ u#'P@?Pۇ*LΚoGhzUއv]°{􍀧TPXݥIsx'컡!EQs$9ak?i,`Q|ՐF?I1p4Eu0l,Y]](1EWErC K5P; krMLuKZeO31Wjؔ ~z%eGK`ӝ7)Y:C(G\siP)#7*[ҤFW.3WX2gzkh `-냃 g2z* r)'DY4:Aӽ40JX(y6}ӷ= ARDG^KS[OWL궏5 txQ$@\X85D/QSaz̖6۲e1ߖe7bٍ9תH{Ⱦ?m֧PrŜw#Kt T"}>ZߍֹDw}JURP|kJF99 UerJmxj :7&wrv,Ƃ\O(onC\7.M=uS}\!P3kK ^A@ReБֿtY^ǚC=phNf午9]K'Q ">Kj[Oo`C BGj(8GόHvjZߵ|U56Ȧm/'$d9= QW: ۽Av} rw;ؽ=>h|~{7NxϦKcuyo-2.1.0/data/pics/aDragon.xpm.gz0000644000175000017500000000157112377046406014016 00000000000000ŘMkA "GӌI(Pz˵B)5 ulMiiVFc{%J;zfٔ>@٤z??.hsa7Y{>}Jd6fi]no6^nrUtsw޼{W}_꛰Y/GJ'ĉ Qx#!U4Ԭ-@?8-3+vI[¢[ f cw1bU u˦lV'X!Q@7$/ֿ+X !|z2< ?1:(\Dv$ٞӡ:ت<*{3[!? *@Sq DD^j0*¢S_ ƃtanjRAr @|PÁd:>dH< 9wKM䩷 ' 8dBBW VwAfS @$8_ ԉ[?d|8 z9kd p39C4ba0!DRFsg۝Pb6ML!: G ʥ]yRz)c0d ķElZ>W HK=`~+a3Cɿw3}!cuyo-2.1.0/data/pics/elBlue.xpm.gz0000644000175000017500000002262607550521111013643 00000000000000y=gimp_temp.206421.xpmks.ݿb؁$`3\* z(Ba-6<ݲZkWGd21GVV+W?,Wը;,~ Fy{ïH8.G~FOxxp$2@J>t@qQ{ErV&K8> ]2,]^e6NeE4Y]ې$]ۮ ҥ]~k|)1 %h 9,}rO1=F7W89 qC—nEm8<*ŗp6ϵMn7 I$D%dup{˟tECsk C],+]5$?ysmDvFGt_/㑸]~uopJ"KaJ]WtnrGP YB_ge@t9g.1tGP\U>0ȱ+v߉fq97&it9sPzw_u0>d\vd5w,e Vj .j VekYpCa9,nr+jm~VAvY_FcQ!ɬ;:_Đi. 19ť`E2,YEw@NI1 O$e`\u.]ي;*Vݙ"n~q}uCVP\fD]~_8~s}-:Zmv緧 /N+KݜN`e[+f Q8}|/bQͷ~3rJZqLԼse4UUiF`,kŞ17O.h,IU/ZM![in _NSpi׬ug A҉Pm)M1mo6MnWT%$I˪6ar1ą^GSo'p5$<ýt, juC~gkJK1Uj4/ҮěU>\ ;QTݶͫ+B )P`9؄J{hAf?>}MjI0c]5SmTz}$n7|@==Ti]\Nx=9͠cp$qZiZ?g&r{=aXw3 VJy2if.U΃5VsRV4\R:bD7jPMI3/ /+t]2i~4() |wSgY)kixa>$ITϳ}H;cɅɚZ8nn!61fDmzsy\!c,{^/AT^.+QQDz@+%]ph#Pocė~t* Ẅ.h^i/񪑇| {ei\m*K<':.ߴfs`jF/Ϡ#V߷ Oa5Cý /|#z Ͼ9:2շa4 4_ode~}jM$$Xo W'Ec 2!ac=^˒"&?O{Mߞ:.gBv5.Tv_E;2".EoG߾;_/O ^>r_ Eq*t+[ļ:\MsoH_Q#/?wQ ſ?\2jg`1f5fh~7g[2r-gx^.  vB \ҧKo* N^0'9=COoyx8#t}n>>>A7By0tC}◎_T?>NQ0J'po8`za G"56=3. =1>=[Aqi<=QnЃ\i{(4E4P&,Z ^o5w+e)a,a);5{1K:[VH~D#|0%_j(߿rGSMٲ+vnRnDnh+yhL@ 0S˺j6G8g9l=x\ɉpP'9a ؂(˻]$M&U@kP ,"͕UU#\$Ÿ% >3,GI\k": 6J!o};9ړcd%b>ᒇ6 J8:enxFKI1eg}(ow_)+f(opˆ,%Ցx&F2L}gk$&F̢Cg$b)ģ(䣡HG|8/)T$L/*lmĜdR6b^$z/[=U5o77bKz hCUd(~MWn!v] AI'rxc^)'8VWۡcIGdKQn  ugbI4&Z$qަ{.P<{\ՇE?kRa AqcabxZi)m}垚ϪlZ4JNǯ5ftCF ׉Wa"{QdIY0~[sO HLə,ޅ>5!~ 7mGjưiI0"d)tɪ]^ j+=l?r z-R'K*ְ>;gHč(~ DsJZyC$U(l֗R %^ }:8KZzЇP{I"I 0BLDj\ c&W@@~|=>I~€:r<, f#HE`s1T0bwzS4k ( D"yImw`}0kb9 /r2) U*XnU Yļb 4jO3%eg}0ز hN$Kn@fY7TI'bN[XP($a9m0|{i;Y @q*nax ?jl?ˁGAohY[67}ϢtE [X_〓?-_``a-ЇCO.Vk3[S-9\z{R~B]z;I['K^3jǗt9=Pĵ50|p #j fHP 6@g*! iٚaSb՞q?iNᰬԂ,}CxakӅ>2L1ftZhYid$e=דg5|BN/ѹ~ v=.֕na6}#}7b 7jv柍*h%)]׶Ụ<Ww1Yȫ]LCoO24 dToҙ]9fEf83[cɵ}ՉnR\DVi,3w2A]5[___ck[\{Ti掁XvVͷg757Sv=]w|HV>Tiw?QNli3"6 &Љ_n }:9l$1`]sWReb\b|B}Aǧ]>ӥLg,`uꑞ 9cu029 rOMu Wlb}H@ rFrx;OI/O'7 *InAT((FH~_;)^I'a* " Kd&1av90R?3Yx]ܑ3M22䀉e1ӨwmށyAgO;ۇ|Y7p3r |l:8)1yUӇܨ,Ǜ9'}Ieu{%i>K \7kP0DY+ ~ı'6X[orľ8nB^שfրs4eoFm<ۇ&>1'Q M"8{fJy(z2撸S50$-3*< {pi_]ưa |"y=w8:q/|R8-!ڥ f:&:3(x.DЈ1\Z+.cM0΋PvbSaoܓb /nE)*JP:Bp3@XË8 ԾIwA҈phE|s42I$ko$Xt1ÔklMK3%#_`OrШSw?17}8{4_(ZD`0$:kHΒʺi1 $h`@VKf#b^ح5餠|i 8Lt2z!_ tB[I:MQW =\qdu_v)ELn؞9~,kh̷κYyw/S JR6˱ IZ=+Y0lª[^ eԵ\ϷVR8\ḿbr$PHMsL `\8;)J.*)9Y%'I/2 e`J%yp)N5ㅜvbMDnRłOPx"A.nI+}\3g5 ۾?0x(J)GѸq0,x䣌oo pK(20,ʽ2DYǻL.Dd^05;'BS!Y=:Y3WETYQmm>Y {K. XYaI 9nOq0b妧錅obu;(9LƎ5b<ޚOXOJRdi.or0G=(-%nl zKb|mO>PK\$uJڤTxC dzZǀ"-"?\r ߥݝ]eA$91&h&2 r=K`oE!u V / ĞEߍOb,Yǩs~#3H胈t(C2ly7,5rM!$ۥLW}D'3*R,jg)+G6v'  JA)'A97/ J kk1yΗ3a07:ndybnn: Df;M> &H x19,Jb&O]#8i:/'y~ͱ5P~&(SYFFbfDA5*Krjf6NLQDVyc<$r7j?iV3Ea?hMEa+zF r`d s~X)_DZ$>r(:O[+k jN@[ޜsnz[:/6nk!(<f}9YϺ"1] 45mc#Q=I1 iCP1o05PkJ'Wq*}S<}ñޣQ8X8qL"D N>ҬMb9‡ /gIg\ ](|4!p==H96rVQw2qh"d\IIe"[v5U=pؿ" |{0m1wNYV|s',v<7C{&"B*1p*<-./RdΡ`_V΅է3}m*8`@gUa >N#N HNY^Ln6|@#^_ߏĐŸ{]|_'S>cb`c0_-rS@ism4iw؛ c9XA⋂bT5bb r(o%Ky$&qQt~'(B{:Q  ZqLJMxY( '%'/$GS.q=Z}poOyd9NfÏ3}Ą!!2#sz>GFAsI|*s8@9 \n ޲n$m$g,>s@79نwǀޝxu-ўq]8 0*X?)alu68 R’\.g@G=3AḼɧV||*HI+27fS(]."ro#mN1ogaà2nۨ͝l7kY⇈GEy9㋢HjNn6&w ݵk=EEEi %㰷bUhpƄUw搲7{{8\>~1GIuFHtnt|NS;ދz{8XOãh /ˑa#C7>)ƱhyKOQir^N";/o|EA \p:3qN18ƨ17 J8ˁWpZ{=O1uΩj xMiq}i`%% %_?Ү?ſ_L_L64r'MkΏNr:0_TCdȔs,_}r}'/N=p>p>Bǁ{vs q |%KGcuyo-2.1.0/data/pics/sbKaeseSB.xpm.gz0000644000175000017500000000375107550521124014237 00000000000000=sbKaeseSB.xpm[\E_Qd_h4Mм""7ߝԭ\fveӗ2O՜~|}<{sW?~o_~|_=z'G_=^׿:_'/g1g_r6Qs/_쁲/l(?yEӅpax 1b|7hN5jWS.71JC8h-S4ue$O X3I>4 岯Qj+nafA hc0:413DP )0PTE*bOMTJ)3̐ȥDz+lSyzJ^VtVz^@t#aPe:v)0ԩhP{bR KK&i a!t!t*_ BH7hA 0üa`2b!؞l/})'/V#@]U A+| A "(i|`oʷB;gIg/.  Åpax|{e?2,Em-Jcw]l 6̅06|UƷ0K0öp62 JǸ}/FFy2CCdn{5Xc!іM\DXT*BҝҙOA,W I10dq5'Qd6Ԩ6qy> Hfb-EqKdFDraH^G-y@40)$ϙܯm45P]䵄Aaf +U:co` }[aj9: m7KI Zc /SJߠ(NSca& Fbaj4]08C6NEgiwdPRO )? #Cnlj(lF)wb!fv=(MN& 0])b0yP?{!2πOO%0w3 61YF?ɭ杏(!(ޝG qjпC?? ϵ#'-0>}8tG)Ĥ0]8]p05EEk_ K)~Pa VgY=w*G1ac0x:{$\P%bOm7Yż&[ ,3hgsQo^nI[_ " _tZ[ ܚa|2~z깆\!patC4{_ B8^8{_ӀJ?o[OaE{_ӢBcuyo-2.1.0/data/pics/mdBoden05.xpm.gz0000644000175000017500000001030212412223241014130 00000000000000Z]wȖ}_8HUm% &6ao]%gֽwYa"$>G,p.K&\|kVOҋ/>%_z˯R#,kAjPmvxIQ/ 69~T,P{mF#G539>o#5(zfr=m 3W n0˧TEڬ~6">/;6-3y7hp?iWQm>7Aĸ6|>G 9 :jF{̴h0&xA]hAkya_kTfhdPuM= 枉Ej`FnP ѓ" =^60fS AO[}eB#kmzac83m~Œ|[\EF9fFk6Q!f0ȌnM/TOm‡'ev4y5͌_Ubg@6I 乙 bF~(+3z]nJ#Ս"waLޏ6kndjƘ~wLKVʘ ,ظ5Bܘ")ѰUȯƤlF 6P)3ofr_/vΞ&׹){c Ȱ<8*?vV`a6k&)"kvALv~qtvED3&v ccbm߄@ =oY8j?1O ?1O ?1?G} ?ހc}p 0?Hӿii᥉h MM Yq1"i 'oL 4l 4 af[nNe4밇ј%/4QhOtgn2 y;M l78xhVBūsZz>&9 9ıI>m孖=6L6zO3* HGI+'ȟwX,9;M ([>[60k[}TpOaU<t:ٮ5>i϶Sa vnOm> '}LB=Ww 1i` ցFhl#Nl;D8 {^i90m+0?Tg@­(Э.@'b⁔ hM8qVk=U8B]?UrE!vasŢNv&3Et)LbYpD{ p,h6EjRj_Z8/_:J%@+Npumw N[Zδ[0tZ:V0 rpī-c}:eʷ+xؘ&1HNZzB䆈f|w F9cl*qF SּJ's,Kӭb P5)׽ Z-ѽfn@Cnu;1{;J>u,I2)gb,b c#˜:IXzBgE-vB j}Ӛm9nر'b:5`0J ۷ggR%|J@`̤,{2^Rxv^2.@cogX#.../vֈpb'\\HWH=OM!(eQMxP/QФ  za %ҲPM^PַNYtPMYA[ADÈI~op_,Q*HřxG9A s%ano͗Mwާtqos%2:{e$hP/@A0~ ) FRq&Ĕ)oo^]Սih ܬ߿z{ I|^4hH?~_`D/,k,fo)(Q P╺I|' ѯ jJ.YHxA}? i̾ J9&?#2th"<\CTjz/^tJ')6}Ar0]kH ]`;l~TB%#_y*<ˠ§{_P QfDHE «6DdJ+]'*b0(uB Sq 2^J!]**FݧT Be7k͉۠n]RF 8Bd%ݸ %\˥R`|\cBIt3CFjDü&2?VB[cHFte}-/[1G->}׿YHHPBg@"Df5h@͌D(-iLN\n8E OB`HV< P-BIS ϲ,ZkmȬy<5"ԉ ?Z%y>]1I5*XnݲږH,R1">BԔPa"4=(YK )4,"7q&5 \uRs+2S*Y;8$wDeTu:dEݯEv"2 P4;dٜǟQx,=Qub(UM[#!Nmr| ʕNkghTsBڢѺ5tL@"lhR2zKxAU,4#;R&Ճ WJnEڝj)w~tDs|PTvB֮K^'ၟ?F(ZEr j.*eUFVLW,Rĺk*'Iv)*+|x:8XqmF0y3 jwE8BB GhoVe2FY))˥}gpB-2pBdX)[5r7߸y$h!uBБx5>CB2rvk.lAY:'HR$Hu^"HGpCiIZ- 䨼+\vv'-ugЇ>!A (|wug&u;,#VwrT~^"t^pjۏfI{9l଎ky>yAlD vr;\Ru!.@g HVڥs`%&C]mȶ%|$+5ZyW*k֣װxK|u'sD\t&cuyo-2.1.0/data/pics/ithBlauV.xpm.gz0000755000175000017500000000066011101102051014127 00000000000000LGJ@)xKej% H)hբ9⻛ddv3DZpd$5_/f[lrNo=\{g)L3HaD1i]XVQ#fyfMᇡ e(CPƯ1@c lvAfj^e`܂28[YFunAfhZ@Gcuyo-2.1.0/data/pics/mdEisen07.xpm.gz0000644000175000017500000000557512412223255014173 00000000000000k{Ӹ).ͥM,v_.S'vqZ.|9i"xusfOQ2`޾ %6yC6Yt~X~VXo {~94ͮyh;E!Zm|TL*4д,<'?Tا]QoQ:=eh~Ofn15D5\ Eק42C4h}Oh:-O۷ZM2hf̞X&m!{dց۳͎6M2%tE=J:rD=޳hԑiw,jOEu]-t%#t.a칝Oh~]5c9e+g');$T xY\g_0׵hϋrD'r Fws~%H SJsrA?nJ;%,pŽMnIlU@iwiDM{_=dLHQQP6ٵ}I-KCxEfjSˉv\b[.ak2;g' Oɴ܎̽$HӴ6ireV3ξd~+1NΑӶ Cg_}_Z g^Pݛb~R}\TW0@Rc,tIg}Ǖ4Y0Ȑ!CjfU Y蓥uq CGn$Cl~)tˑӧ*a&%<NS$0_07~YC/8TO/ ɘٸb] 3dqjƬ \9/Vbxuxި 苩.ϋY%e^d9/sޖ!i^+N] v~ܡ *4i&hs)C8Bh4rOxg#U}qJی*,j.Yʎ@`tҹiantp|r܌ _9"+4c\YC?ƴjS6Y~lG r'S.TSP cAos!1BJ,G '5)(4[& e)FYf`?zW^=ud454kNa!^cX |D J$qPe0|=ogOX = Z4k@;X"ML ?`7Kqz= 7p6b:ڄebOrQQ^CU1, 6ф0V[۫g'k ڸ/&U \ 뙻Tn {w1K 12ɔlU1$"v8Uo ٌ;uXFw+g2$̤ %H䌉AK x5Ca.Qf"vA4M!C_d+L g0ȠU1A!B `YF_``U:d 1W*:0b^ nb{˹.0<)e@pz"GApF}8H%CohꓜȀ8?*0'da%C! -Ev\21{76*tz$_2e18c kI:1 RIHay΅ .[]^$ әRBs aRW/{})"|}" Eĸ>@/rJ,բ~?:7!i/Gh=/u&6M8] 8lQDil/dϻJL}CBsL%6|0y]; Pn},xq쟞l%d>Rh?WeCd(8ƶ/'8@:ȋBaXoe2g|*5BZm `RČdH4zQbRC/ЊOvHY“D01/.:NO 3(U ?|d<>RZH ߣ۩qR*犋r4qA\{=;~r5?Wyq1Ai}0l6  Æaða0l6  ÆaUv%7cuyo-2.1.0/data/pics/mkKolben.xpm.gz0000644000175000017500000000113110552021505014157 00000000000000MK@{~ҽ-B("oGA԰KA ?1@?]hm:hǰM 4ɸ;޵_Mx cPv ߓW2:_hO>o.y0 0 TUO$?Z8<i5k9J(;s}{Dl3 9jAi`!8 sxfAc1& *Ly *uV>#i:H]Y{'Ү<8ɴ7H"=ip ߓ†`1? L^ W|T0BوX($ҖZ:/ Lky s],l?5 k#ciRaMho````C3\;tB+$kXJV/ֿA2Wٜ)Unk6Meb+? F-ۘ!0 0[M["g8S' ep\׵E_Kt&PϳSd7x^2؁|00!l6A7Pj.G`D3PQkɐ@  ;GT\ z`````ڟ/p Bcuyo-2.1.0/data/pics/dnGreen2.xpm.gz0000644000175000017500000000100407550521110014061 00000000000000<dnGreen2.xpmOK@S ٜ&-<))RjAF=wؚ?%/ h;' p w2:y)˧Z_Wxr? tpt*g*{rxe*M 0N8M#,MU t2d *|%í9_+Q*,h-=ˠUftq [z0+7êa(L*# CTڋrf_n&F_{ao"Qg5DB݂aZ 2 d :~0^"x{b[7€p-a쬆YIm5vE%c?=̎4 d Qk7Ar#8^{޺k `g5DB݂aL@2 d C x9Oz^=o µuf!|vQ~A2AܯsfBcuyo-2.1.0/data/pics/ithRotL.xpm.gz0000755000175000017500000000107211101102054013777 00000000000000LGj1S oNb\B[K1!i}{4ڕ+oL ! |瓼%tH7_?kܭWICz\o2Fvs{GWן)h?Ê 7)k)'љs)pH9oRZ)/.݁I(?[qGqGqǫ9iGb\86(h4Ҹ&4!I7[u%N \USqбpIJҖ;t n쇾z_pp0N681rC:f%;`Ȣm`ITޡc6} 6=B8]l#hBs q$0p Ci~ǸUg p?uG;e;o|.xrLlF9[>[jXwP8WfYuq1(`1;t ":r F`+ڵ`.a#[. ;jhQ6n.{Yu6cuyo-2.1.0/data/pics/igSchwarz.xpm.gz0000644000175000017500000000057407550521112014373 00000000000000<igSchwarz.xpmMK@Cd)GE"(wwbff񐖼d_pAg0Ma0᠂{Yc)<<-i,c,:X ,'lF3%0OmlyC80iC7ı] k09Ic!LHDvK'7 ! fi0-$B|`Z n޸&`[(03^1rVZ_˽1C{DI(נ aK|׺{}Ect1 : jD cuyo-2.1.0/data/pics/iwBaum2.xpm.gz0000644000175000017500000000254207550521116013741 00000000000000<iwBaum2.xpmMo0쯰ʭAv9B\J#B血$$3c;Y{h7cϳJf=;o߼gwWw77q*n~_=|{BޝT<GZYb1a*ٸ:C Fpek/ 5 r߹"a,؎8(j,Mt=VaXNV C^43`0 lXhJgB*/ dOP̉0h󸱤0$bp#  8SB0pv0'h[=MG;1ÄNWS aH\SR46:c1Lf1H^Fc>5-D9u >[y(6Šk>b^g1CцaHXD)dX?0k>6J I}@K67u.$v=:uD|f3e "$5wf}3/VñH]5i{L@L'L[m+1/.a-xǝm8P:C u3ԡΰT1p EA2ž{ Y3{U5@B(O6?e3^Q 7@0`\ܙ?q|R9&zmA463>جNuٙː!t\nL'S$=Ϯ"[N v>P'DjazS>! z=ůRܕ9!:g'YIX9n{\H0EԦVK(x'Rj=$}ӟ >]&gu 9`.tr[ -BUgX#Cu:PgCaK"DGao*l-'QT>DRTI{Ze1RG"uJ*`~o,OCZanA~O*1]&CUِφ3#3ȰI +)Ru 92sh 4Z .y18/3D P6yk=J3?^H^[]*XPQagԐ,h8 ^3 ]u:PgCuUZ{XVGdp^m|Q-a,(-`σ i^伱[ 9R" C~_@MCbP\f 3@ ' |2 VvyERw=Ax(z| Prl^hw5T&Z> !a6 a|?T/l@?x:bwBX8+ DByk8Jkg +k:|: >$"CxNA⛑{@2<^bi0,ϰ$\)xCQZ\bh:"KRt0A8JɆj; ?21#9*1 /Iċ)f] !'^h_JpK`ȪLA`v y e"(:~9->!<P|jZah$ dY0v!d.AwT@| Plv)jR g@69"Fu4I$0z-&{ :)(es)'+zeP 1$6V#EB"dVfsI= V.5?ƀs 4dțP%9CW"OQzz!cuyo-2.1.0/data/pics/mfaRoad.xpm0000644000175000017500000004122112407360135013361 00000000000000/* XPM */ static char * mfaRoad_xpm[] = { "128 128 6 1", " c None", ". c #8F563B", "+ c #6ABE30", "@ c #663931", "# c #CBDBFC", "$ c #595652", " .+.+..++.+.+..+.+..++..+.+.+. ", " .............................. ", " @#############################. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. +...+.+..+..+.+.+..+...++..+..++...++.+...+..+.+.+..+.+.+..+..++..+.+..+..+.+.+..+...+.+.+..+. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ...............................................................................................", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#.@##############################################################################################.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.", " @#$$$$$$$$$$$$$$$$$$$$$$$$$$$#.@##############################################################################################.", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#$$$$$$#$$$$$$#$$$$$$#$$$$$$#. ", " @#############################. ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " ", " ", " .+.+..+..++..+.+..+.+ ", " ...................... ", " @#####################. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ..+.+.++...+.+..+.+..+..+.+.+..+..+.+.++..+.+ ", " @#$$$$$$$$$#$$$$$$$$$#. .+.+...............................................+.+. ", " @#$$$$$$$$$#$$$$$$$$$#. +.+......#############################################......+.. ", " @#$$$$$$$$$$$$$$$$$$$#. ......#####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#####....+. ", " @#$$$$$$$$$$$$$$$$$$$#. .+..####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$####.... ", " @#$$$$$$$$$#$$$$$$$$$#. .+..##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##..+. ", " @#$$$$$$$$$#$$$$$$$$$#. ...##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##... ", " @#$$$$$$$$$$$$$$$$$$$#. ..##$$$$$$$$$$$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$$$$$$$$$$##.. ", " @#$$$$$$$$$$$$$$$$$$$#. ..#$$$$$$$$$$$##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#.. ", " @#$$$$$$$$$#$$$$$$$$$#. .#$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##$$$$$$$$$$$#.. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$#.. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$$##########$$$$$$$$$$$$$$$$$$$##########$$$$$$$$$$$$$$$$$$$$$#.. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$##@@@@@@@@@#$$$$$$$$$#$$$$$$$$$#.@@@@@@@@##$$$$$$$$$#$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#.@ @#$$$$$$$$$#$$$$$$$$$#. @@#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#..+..++.+.@#$$$$$$$$$$$$$$$$$$$#..+..++.+.@#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#..........@#$$$$$$$$$#$$$$$$$$$#..........@#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#############$$$$$$$$$#$$$$$$$$$#############$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#############$$$$$$$$$$$$$$$$$$$#############$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#.@@@@@@@@@@#$$$$$$$$$#$$$$$$$$$#.@@@@@@@@@@#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#.. @#$$$$$$$$$$$$$$$$$$$#. .@#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$#...+.++.+.@#$$$$$$$$$$$$$$$$$$$#..+..++...@#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$$#$$$$$$$$$##........@#$$$$$$$$$#$$$$$$$$$#.........##$$$$$$$$$#$$$$$$$$$$# ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$$#$$$$$$$$$$##########$$$$$$$$$#$$$$$$$$$##########$$$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$# ", " @#$$$$$$$$$$$$$$$$$$$#. @#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##$$$$$$$$$$$#. ", " @#$$$$$$$$$#$$$$$$$$$#. @#$$$$$$$$$$$##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. @##$$$$$$$$$$$$$$####$$$$####$$$$####$$$$####$$$$####$$$$####$$$$$$$$$$$$$##@ ", " @#$$$$$$$$$$$$$$$$$$$#. @@##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##@@ ", " @#$$$$$$$$$#$$$$$$$$$#. @@##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##@@ ", " @#$$$$$$$$$#$$$$$$$$$#. @@####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$####@@ ", " @#$$$$$$$$$$$$$$$$$$$#. @@@@#####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#####@@@@ ", " @#$$$$$$$$$$$$$$$$$$$#. @@@@@#############################################@@@@@ ", " @#$$$$$$$$$#$$$$$$$$$#. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @#$$$$$$$$$#$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#$$$$$$$$$$$$$$$$$$$#. ", " @#####################. ", " @@@@@@@@@@@@@@@@@@@@@ ", " ", " "}; cuyo-2.1.0/data/pics/mdEgoV06.xpm.gz0000644000175000017500000000372512412223253013760 00000000000000[ڀ`V#$3@IJHQݭZqa{ ۫v7/ɱד9gfu\}}|:U^"z_ozM\Ox TlX9C5P”5á9k6q-T ~+RȻdD<š|1/F-;ЙˮHSf8`\b$5S\J}?`_)[pO)1\1JȠoB9CX 98U2QW*b\IKsN4CA)JjW,%u7zoj6%j}5\ѯMLr>J6 S #T 1)S,V$H%m‘P:4oc!$+9co@CćuGYB/$X2ʂL T2.!ߟ[إx]m$P6ÉN7e k0!aH!aH!aHc97,j1@܏ P j5$x"$ k?j&!<ۗ1= 'n Q<ia^Зpz=^oApzz(2) OjZULDn$20TwՃfv:o߿W[ /{^}0lq2TFaPet:Ki5Dc)X Ml=GPBNmbA@<D%"aU_XXp_<E` `!mׇ纆gk5Ang(2}>} (r8<,i2HǐJv4;,~|'wcn&7C3ؗˀ'L) x3uޡLu(5U08"0@`.?NF`h- >MdxX>Ep^g/6Magjݐ A#L?=#0dU 2xrX'rB2>P?ᔄME~0l))#W|-x2:)/uxtt(?z冁p-mxC9Z>2C͓z>pwΐ˵vޙ/Óق׿G(Lz6 `l)CLfr5̗w<,|QNwb9^&3x0RzgH $=&4bL2'z~>l2p7NOg!&/L=eUH j(LFqg,2GHUaz^oA&A ø\3,Z YLTb&fj2* C zT#Mao/*v1s `_V9 C8)6,(E1DX4ݣRec81Eh4śi#&^dx~tM#00FKCc9T{P^Rv*&..{?޷5oLDŸ݆'d>J|Gxrbǣ>5|_` p8!|1D'gC '[ ~c>SI}U;>sM~4zu> X|)'D?~|7 *Xt.5 6!$.:!9SQ q7]2;Hd_!X#_O"y!< FXC!O;e fɇP Dt(?~ 8kkJJDZm@8Y6,X[^$𱔲&5K+"[1};~E9o$?P#ЁqrQVW9[ϼ~0v|mf"wWX>sBT(G<ߴgI»4BZ8΀o?E|^N#+Sy1K/rG uƯrK|su)hˁ?7te*"rݽ\Ij\w唨We.]ЙBvh8)TDĐuD r16i#9)[2u0(8<4,'&cuyo-2.1.0/data/pics/iaApple.xpm.gz0000644000175000017500000000054207550521111013777 00000000000000J/=iaApple.xpmQk0ǟ8:Ved}` )EP[|}w{܌%P]}&G~h[<>A >VjA6O!Ez/g|zk n҆C'Bhdp:Y8lp<8a/^%j-S =l*h9X2IVC#͉D+==,c_f|硝 am#aُ{َ˧3ZXv62$cuyo-2.1.0/data/pics/mdStein04.xpm.gz0000644000175000017500000000614112412223267014200 00000000000000Zk{ί01m\8oRu %u УJPJSAc緟wVE5"3fq6P!l$c؞Ҋ=̴# f)-TЫf={l G֕-|hf9#aKCUσQF/Y߃b?jd%DڒV[1URi[a ~ڠ! Fc{z7?T3, 7n0`e)1"6f_7Y7)J EQHKxwlMogYܰ,C%eAJ a\#p4ˎ9$ɩ C'ʢ05 h;Ea(2+hͲ4APL=T`wR]aȏ`, 01`kg`Ct,~wL0" ,;AeTIY1I(􀅡E*(eʈ²la` \/JC [EK7% lU(y"cH+ [ﭸQ?2$3ߧš)T ; Д%oCrE JIQA**:Jm ČY2SGQW^; 40' \lSAut02]72/}RXORvJiL$4TTH!O~.Z-];s݀!.O} I͓Vǘ'DM9=bDFlwbj"0G_dpE ch mM\ gET@)2$3,obE$g[:s-P皖(yӱ5KR{zAD}D&gLʇ27* XuK&8s_j \Eٹ09 GT5Úɂ :w3_*C5`W(* a C)__ gUl] DIDSI#`'_MA._@R7?*} B9mPRҶ>ו_R?ö̓'u ;a_;QKWx ,+֭C*Rqȁ]48:|OqG{9-Qx%kЈsV,iªZ]DQΨY)a:\c(]7\`4řAy] lAr(I:6E1Q$1fדk8:#BOfQHƁ7 :8زcS њIBW)<:ApCKnk{@[$G .:_G9sLisb Uv侻kRTH"gU;#A zPA%!+v?OYP?rlTr:"G]lJm951!O\"sQ\t ąAR&D+85O~dh&#˻wk'Zk;p-|~!!*.2sd2YNh1?!8@U-h^f\_&yryv"?+BȻ>6wiM#N4 ؇ObI/_f \$Y %reP;O[\1*@-aGaQ,g^Q4H i&_@bdoy9%B0M&MfieN`_`Txii߭Z7ez(HߚMwo_]a8<FYh(9[e^\?Zv)djh,ϔe*?Ep~xғ-zRv˯>}fk{4.+vqƊ%+/Gc▽v/3_p'Ef ab]B8p,x.>/)SxA̫bw‹mAx n/^̯x<ϲ9G9D |8N_,tr2q04#u '$IhZG?q S9#1^R$>¿0O/NQ0 f"@>)G zL](<)Ypqo1N[`rO^ C1/z?00js/N00 es:g-H2Z6` hAd0)6J v#FiAٱA 8Zg@mNG gwVu t 2pDcަx[ VcSGiнPtJ,I-Y)CW 0tIzځ7?/y2cuyo-2.1.0/data/pics/bpPinguA.xpm.gz0000644000175000017500000000304410361232217014131 00000000000000`CbpPinguA.xpmQkF_X~C(Ko-y,RRS<$ i ^Ι3+ɦ 6=;+iF+= ?>\>?˛/ݻ7e/}߄WE>vv ?a;owWvCvo&jFuڽw_w#ǰGe`XCgCZ |?P#Fi6N\w00~v(ᘫ=)=TѾ2Ns( #qPf :1V"`]::Dך?L X?qJVW3=NAbb` t&A2ڈ}fAiRCb: k/ã1pnC(} KH rsAA9.킁`ZG5 b ^u8B׶%LJf%10>ng>hp 6N OcQ¬#YTQ!dzY8?iiw&c`ACPXd,:77@63hu HnqCgA0Xzgi\sa60I<$Z|cx#,Y$h 6| NC!3qu= Yt6 Xdp\?ZA- q Zh'x'Þiqr =3VRг;1Dqo:1,ZВ!h} y2ݒ˧{I"HssdԂ궬f/8d!YY\dqA؟vTc ZߪvX#T@l <>$̹j2L !:N2Ϲ/aPhg(&V l﹆űm,́dm,́@H6t8|}\Y6$/A+7Ѧ\Fz2ۊ,d q cj:(;X1"wIJ]?$T;UmGMUCY4KP] Rhq`R#eC=_f{bG֝b\@(ߦis{!@})kדUz ʆ[l;{{>w 7|?tc}P1XX_qScuyo-2.1.0/data/pics/sbBrezelSB.xpm.gz0000644000175000017500000000366307550521124014434 00000000000000=sbBrezelSB.xpm[k7_!Ҕ&BZ )RRh'\zw%A`O!htO~ptW~N?z.y_}ßEOqzxy:}o'=y>d7G苛Zŋ9zQO~pg |8+A xCSY>1j@>0W=| _[5' _T1LS,jta}AA<͚šsSCVPp8J!dl-Pͬ6P]h` C,60z!0 9T4O[D F96,>'.x!qnaBNE Z~ts) PMIB͵q0qZjԊBl'y8`% 2[4&H3@:CZsiC[AIͲzsv=u3KFq! KbT8Ctg 4A dBT?)EbVq, Ckqf!>GtL:&dę3TQnG[z:1N 6SYVt0$C?,wXupȢ%>3;cذl FĚAuk³#g?GɆA:NnƷd9L} H-<CWi>=یæ!kJʨv-ij#?`} G@%jlw ɸ1v {5kg+B2yДۆ QMP= CqS@, $AM:$HA $/߆[HqБJsT h!OR,Fؤjj0>[5ꦟU>flՆb@{YTo VXΫE]quP"d ڑEBۑ=#@߁Gև\٭zӡ= + vq7w 8J.΀Ve A'0hnit^e9Nz sh}[{k8\[~%Mxs-[v2HS "}I- C^KU+o"+hEpIՀ7 }{V}5M/jTVSnPe<ռ[ iT.pWqih C )XvdX]pjQh"v,̜ + 1CvF&U!_X]a~_ˆ!v%b i>#kŊp"BP ^`~~ si2xw55IYl_t{lGOu "5mM4bDfp%.uaK.4#ef%me9f_P"=NխV1VJ v]TvX8U7Ɂx\YR;D ÐmcZmv~Ĺ=ĞP15,|ں{3T"Zd!e'Zw}r ;!>M5 ;Ce肝}-8ZFRa;3r-$=gA`WEv/d1E{!ԝK5bA,e0xM/Įλa0z'x| ֶZ,o0BPT!9ewv>hnQ|AĶ!B8@M:hsja҆ȃ i!cN !>?tIBcuyo-2.1.0/data/pics/kmHetzstapel.xpm.gz0000644000175000017500000021637511347236315015124 00000000000000KKkmHetzstapel.xpm_Xe b!j$@C&J3#"BX Ls:v3{C.77<6j;&/zAh0} 톜ӛwOCPZBah罟~v|ݗ%H.Gt8>5Uܼ8J_$'=?P=v \\;e<1A$7SşwfUa1!\a C\IOns`"P 2/rSRy &\E(eUdp2gi2rM>zH- 7N=rg.-Ϧ4*`&#fWU$o5vLk Xbfݢ7M*e2 'z+fxppywbf|Ngq*lS Vd3p?xGqTU?葑UI-fV%1#c| Eys>)|;)UG'{.`v| 1jQ8 c1-yƑjjwMrg& 5Y>zM$S&\GSEvBݒw Dr6=nQoW3yhG%8/8Rbb*|TkY"?{|+ҁ|niʹGGoܣwY}1پo}?e4]Ltcfbr:LBZ?ľbB2$E 'uQL bߵ0-ERh70`toKN_.PM<e(PkiႨ+ׯL*P{1T]]B/a.덼w|堠Lx=ѥ'À.=^u7KF}dfyp1͘'Pfł>W^¦?`1$[]V)ɚ1X@JV6aG]SM\2xno!I@,i]bnw<ݦ2/ȕ~p߾/cx ]VɂZ0\{=1\>hhKhX= ioӧtsX{ )cU`C .Uܪ! 3 d ҏ4'IJI ecߗ%9p&w{Z@ -S$%@_ @Mb>DetTݳ*z{J$eF!nEwwaeS΃B|Uq4OoKGGw߄ GFk4[믫7tȦ}+0!뎺!b:va=/~H.Dž&lv3=dN/'J=^٫WAo0@rnFw1? .Y9O}17s `޻U9sߕt7EmbljXvg0&`8☦,*vwwΏ+W </r`<0cn_ƋYǢo5&lj1Mݘ'UaH:sCc}çGw.1|TȝʡXkwoz4[0$͝'8vZ1@jt }{+&]^b`= 1T"OvvzO=Ӱݤ0u;~4r58??tmҠDݦ:}+b[՚n. @0]x 'OZtv{Obxs/PڄӦ0l6d }7TsDnM p6q\x_tmREog'p6B!:zNh4jH7FDiM <9?YGaJVoHMCx<:lԫ]7J)a:A3%T)f8l'9 ɬ\z}̮gfLqZ9PnṷhnE:tmGnH_DH yoF9 CQD^8c|40Ռմݍv dBiZC,[CUQU)M ay|'²a`/_qoxXzR!n1dw nff#re\5~-B;hn5[|-Fb;|Y^`k!3_cÐx$ |Q>={Cg(!٪ X2P 10ݾD"+)uqLrddbE6S"3"8=B4@gm޼~! v ts xMlL,2?#vː,./ iZXBcMռ4Z~va-$$e, qR6.ΝGM8ZVB\lKv/`ޯ29mEw5w6 k 0q|<$ze(Z^\_CWn2J"ekKFa ËfRRubƭbu 7q|ܰ N"eW$z%w @OsV!k!EK.ؽ?_̧4luzhILڽ|)ԳlN\Ȉ1-\|UUT٧* ZEɯ#\#;e=m#Aǝc{#]CeIFӸIQ;HOm{sfvn;T; Osn{ghGһ"Zl ۍVZ8]DU^!隶y_LIPECI9l90Rrf-C-RM.*nRi"i=Į.mCu$Ū`Oduٰ{tv޺߁X+]elh5@d fs5BOvGq{\,(^ ? M[,Ud廗3l;_筲*#.UH"%FiOQ:(2!r7%,ɍhxpE\o{ l 0Dڕ}1:9pR{z4 w{-@W @VEC5Z єN8rbǨquUTX8$pmӁJr&(!#!f8چ[,'T3Y7QksFh3lj#J{ӳ,CIw۳.2Bd< !'.E>~YmB,~iqUlw[BwZXO!V\Ǩo"dG戔^ZEm12(64yz'pS-[n_<$@ڵ/+Q=Xv~Ô$t ]~^ #f&|kuj6ۭx23~UQe{/[=ݸQjjK=5(Qĝs!b6:7Ѓd$'Rٞՙo+O2Jˮa|6*=qAiς&pX)7+2JolC5z(IGfc-,qm^ʓ(qQ3oA( a0uAEhفfձOd` a]D4^J<vDd#c`;L.uQMӔRdžai5-Uߟ_S]d ]dKɑ.d@q!,Äx"vu2$Xo#(pcWZ6LAglH$< hg O<#z|JDV7 w|L=.!57(DɄ\j{R{fFdZCʆUʋ% 4;Ɛ4Y5(SԄ[&)lu f%t'+~H@#PY)N)se9qy&mJ EA<4䘻lDlfaƒúD.4{hPk*%E?BGXFe0y)`"ҸK\e9Ve2pa'!FB;"P`^s8R mӱ0(F8s&jsw]F^_~x9R5b(-Vsb[Ur?Zr&ǰxlÛ#P()v #tn$0+d4j٦DCJ'T:.RZwȌ&լe8ĸ%ͅ\r%Qhe0@EQ@Hl e| eV($ћV1'>,Qz"y7'xг DDA-ٴjR-27\id[WH - U a}7Myttz4SeaMLf>UD:x;L\!S+Rf:!B)Nt!Kf¦G8=|{8Pd U+o{ B;O'F6\Z|+"8Z ?D?m OcnqȘFN(Xϑ,xcӎDa,j}.V&ё1|sQB]]蘹Ly\?cf r}r*+u VB>#r;d"<Ʉ5@X2`2 i!SE6OZl(`?%8(#݅ţ*hc)fgL@҅; Pv 'GW=*W!~wFRi|U_8By<=Zh5?^| v>4!erGChwXgt)q58x$Fj&!62Wϳ |_S'8CB}Ϟlck\AQbQkit|30$|xrXHM:mD''}pe[ C_e;pyae> Ƣ$ڰ40y? F~G)i ը6Nb]v~8 Cwu2;`x\'$ Rɂ<&MIc#>$RpwUK꩘&'5҉)Nʇ滻3Or.%$`wr *­<Wzn8f+Y?Vlw68@q`V&O`?O|vdBr9ǡ!|:`^#tcI"P2ji03>g`OÕl +Kꃃp~ǎtŜlthM :p>mt *^C@|atu_ !v@<^4Z.7c o uBsya ٌLWl6xˬ`vK+0 ?o˿!|5Ss§c?pW\_bY':K^vnYTHC(rbGؗОa\~v! }ac`ɠl,mPJ?;te$kNsY3C2Q}8[6:K?5^o°⁓lH؁3gW&^;ۥ( 5E:8{5?pxDC|9mcqO6=":m;x;YeR3>s]#d8ZI I/y~Jph 7IEKE'?p}xDxN MFY:=2{䬞JiNgxn瓀ع<,}h~׷Mn&Ӌ%'1d ǣ8S`d1'4u|) vNs M$̤vgI2IÑ#`RlslA5}9HtRoE(7JGy1gF{FEI2m?`$˩R6%8S8:4A66.6 :e]./d0xEEV I!Q+Qw@U2lANRe|N9q"whtgQ>7C0#236)I.ÅqNdGNocuҡBGJӃ#aW-d99ZX| 2r\ G0Nsr[\KIÙ0E9?3 _mbOmvX/9A\0ɫ?4qrY$1?Ι9w˚ofR -u:|Ok dt8lV.uUc@_af@7O>\GeGGFX0:-e|Qp4Mɉf9}*v0nH;qp 1Sg3{p$X ?>>5 (ɨH$Ӊ+fɔg@u rû 2ME 7 rNe( 9Pǃ#Nj^:r&4qAz׻g;;]2hs:ٴLa1zN[)I@Ϡ#]BKkyE] $V֠UHy[w#ʧ~r3(ҳ *o'H\$ Vl^%Ge2} s~HPMHi)w,<{9 ûy$T,:{+Oa4y|O,ACL)J ^wA(~?;9 t6=~TV^=>ooZ-kpI 6QfG%P/e.!)/$d #fNټX+>Aż֝<ѯk`ʜ&qEndqgB2e_*^㧇/gX6 ldb0{xxq1Fm2utl2o )$ԑ(5tچ;Nى;1#AW4gtzږ}ka5|}W'W>}:R]0^ iE@JBVL͏zʟ֪:6޾AN9|?FC ̘>\JCYfZm8<8ll,N@9?uML7/?x(}yg٭i(ˇmlznΫ?I|IĎC37΋W'Q?ľÞRƨmt"Bu4]ÂE`_~l-{U/z傖b(+hYuSJl ªW9sv:-Hvⵜ(WOҘx+<)[[:;V&ȾXmSsƜ!=[4B wr3.4xrB$|</J 3z=63 n(UTX.QKmA⟹A6|iLI__I>zu V]󰼤;͆:/žÛ9FhM`7yd p9?We0AIoXȱh0}jf0@. 69eYQ>(ǻ _5u0_;`x%R-=&R,z9i zU/+uX4f\!@[ }_1)a#8XN4N:ocCh=`YY{M9)`v!dL)OÌ+JZ1-GҰrety k"O5ٹk]c +@ڸ0c/9i1m礎x)} >7 8"&l͖%g X ̑:l’z+쀥F5ELV#CJ+ a]k;+I2Q ĉ^4}ы͙H`#0H jt[w lk@ tg)!܂sk+G= bPtFCay{ ;82i L p-hAm^|8ίFA36!–85$J{5&(T:(RiO̿6e~9eΝe$4] +?"Aa(&!e[?!6kq"osN 𦡆0Iv\SҲ6_HZ6Z;^8h~Bk0ofzydCz vW) ~aGRnNHRjRM߼4Ac\X ;gYs%ސMF#np3j֦:BPuォX~zDh2Kڊ̀d- r䄠m- 1HjRI4, '|H#/.ki>F6oɰP\ۊ!ЙR~m*j!!ZbѰ,Jkrwr!S&%SXȭh!8'9J\#9|saL!W|"xFOŮCgBMNOB}Jk!w9 !y\gN㨹[R9eqO@f8ӌ88*Zy!$Tnգ!&2OW,xu!l}.;Ǜ&6% MIFI^ϾnA` ZdfK|8]^^0W? 3̮Wd:>gٛ[?;pzcqYrה[5# ؛ht?Ӄfn!TΆ(?iY7(w7f+ݓPn#-7'bCF *XS,"ƪ;)iJ-^[\Y̓<%qL.kS@,!xBU[X]!dڢ#7X&)l-RX\gШ<92F M@)+vX.y'0>;*f1#9a2~_9Pm8tyc9,ɝ %SO38u!lesZ2FzpPOj)Cq+kdjg^! !! 9wQ|pJ9sYz>\gh쉍'& >y0MXN6~*tSEݿsvdC3۾ߓe|P7KfyFd,$Eٟ..BtG/Edjf?~٘@3&տᴳuXw$%!s咮/sdX454j2IML|byszHhf> R3.."P4άSQ8? |>|~s_?ggqvELBBc +viiD _5/t8aǡy <4[n2K<'31sg{Hzg֯\n/Qvky]<9_aܥ 12< V&@'{1rkH03S3I%>^9M(EݯY=w v3L,p+΍o:;` C{x 6q,5~ld+څ1 75fjCC R*VCch*nj(gWbNfa@'q'\~< 1XKtAVGSUbᴒk>sQ4)*zCiH4G+aU歍373K]{-βJ h6]}>G:'P@%LolZ&ɔ_5ZCz&Hx2=r;xzP!s"Ym 2ﺙh62XNtj~Zk6*x)FXJOb23gRFl4U5^, nУv:,tas)%皑DfH7OHίPzd_>XiFz[ r'(̰y;+fUK~zԽX3FJñ9D$Mtq3 %U[+#_^H/!bA`U Uj!yQx2f-=7$;mK7Y sq UYYoKSsLTrG#'7**ws[0iqJ4JG\Vd`3Q`<6NAFW h2F0RN68尿9 YhS:Ҕ(Ӯ5)%vfD2@l^ ً2q* ~ ;Hpk+/āGÿl@'0d}-ɻ4( թ61Dm8RW|ShMuƅߋl&QrPIfk,]nomFbCSbh75o-jفy8C,dC1\ QY5YA+[WTB C~:4(e΄RMZ,dSm\v[ӪۢO.._8n4КѦ"4֊)6 $?' 'p6p=m Upn \d"m5̈7SGqSvYɦ\"zTu7`qJ~yV>*N ]Y'}6HfWd23E1Z^EؓTFUǃ/bx3 $èW:Ä0Yp5 ~}o޹թYUTAC*~/ap̹ ׽]ZjC(.5hњt|\ZP3aռ5iμyd>:#}v,O@0>|b$Y[JJEXJԪ7q(gڭԐ~yX;XLK[&hit:I^a2 ۄ HW] "n 罽8*tV@+q:~^oDQ<@>4ͺ. a- GCf99 SnkX #йL|r1RdOξ"֮1LiS>4 yOu|"`r<+UgE_d{ שZŮP7٫E'=K1C 'DlN<ɴU,tF6nC]u;唟|\o4w\ ٢j ;rVrŸ" (}z9}>Rډ4&L *Fzq~RA!ۅ=gY>$qO Obz:BU۪Pؽ,w-fsІJ({kF8a|+aҁ0;\/mbg^rc("8"}?NZEz8[/x9GT"[Xqv3'fN'210: wY+ dһv ]}g+h0^ zp&vFG"-d56JĪ-%$whwҞ<"9EKt|6u*cy#qD_dH:"2ϰWr:Uo} Wb9UOPM -~JSg*nJܦ0Y[} v7;yA0iL z\]'n>].&ؾC)=2 Wf>o@!tRHɋ4a·MmQ!J쒯la}muITiT4M1t Yf2un2==vhHӏ:cٺ 9I8* o✆5aWk ݡ6^dŝa8`8B+pW+4hӃZ⬶ 9{'" 3Ę-fӦi,Jo_jEk 0e*ѷ뇬n)UW'JjK@R( xHz|92"r$B?/Ff/f*0Pz/򲭢j'~0ܦ7$ʍ.Z|4t3v"gic/ڬa9O@:5+w*޾V cdPH⒲6,)\e t3&ѳc7/s_#-x:2mn 4@.}8ӳsћsKAFM 'zWS™&RaE;vxrSBס;_hB3]N!fg7V5urht~N=2!bdFw6bAc#m17ӹc%Vk>Odхw_[B@Mah<2 +o<, ͢uC^J58C29c:H5T]ݲ|+v{i'FT>pR0c1n{HPԈGꋕƣґaI_~0vm*"gt0`3[e i?B|͵##I>x_ `OQ2F&YV~B}_or('MO3*,B# (km!d=JorC~g]6?/vߜI?z~zz|ݛ$P,iO߾Z߾ڂ!r,R,IbW![]ǀ?1z'7ùwc :bUߞG|wp:>bM-"&ч_~}d%Fntr&ϯo:g}lPef~kx@t*F NTIѯ&{ML|1_1+KCW?†o2Ud|۸,xNۋ7_k#kKY@uC8?@J.*vt 93HmT#`-I(*7.4TgoSg  iC F#VY%nyV+ )a[8  Ӹ. aU%?gQSg3!MGn~Mw~ݷyUS\'2(H:e#l$Th$m䤒Mn]2eCtfL~wʖJA@VRvy0I}&A`\ͰSegHYo#|Hyb~ri=4h2ﶀնCV_l1}7Ym}7FncNaHi.] vlwRX:`봰P5}O{1S^:_|ƔfCn|=1 !tQVk#MPU׵+xpJ^LSSusnv~weI'9GB2QMk aF$(H(6,|:^[/cv3Hm儁x-/.áu+3ة NLR,B-S XVRaW{]m ~pʹe4d _ ȢlJܨ9'hm#a~ ͎ XxA?)fөdQ$tg3f)C#3<~AF<<:'n\ZЊZy^3? FZVp91D4s8vs ԂhJ.7aX)s>ỉi! GIuݨ4} c"ފUݝUaY#v[`\M[ȱ1&F QUi|b~;2&ת> 'n0?8]8v.z.H+9jK0K8 4IILRR>–2R"7CbQ~q$v= ۵++811oi*d$I ze]Eh?HĬ$@,F+:0x#瀕 cNV~AF|9Wavԥ7؊Y!$7lvf!ΥFv SEF8!t2 WZ7s¿zVjrfR%o[/8l{Е;U0Sp*orݱ@|]>ejMi}e`d茌箩MLՄrcee@\*x>UCocy221K-VDoeT ̊{H׏-}Ǐ۴8OT j孭+bҕnT3w%W^6x~ϖzKR'aBi0lbHfN`rqoBC*;8n.bWn; }oUtD% ծ4: MQ0-йa}Hǃhr_>8lOJo+9% 27KRksh2 .Sf|S&QL]ZQK~YL~W9/P1;_TڝDCݚ`aY} ncf9D-R?q:q4?f#ѿ>0ܡ:MeK19 ^p.iēE_eo R9Mh|mz*l_734,ؠ(;Mx\# xKI|XDÝ#+8;@7:%t:&tۇ-SmR3<0C;]IcbbDNeEu8fDŽ\0 TVl63X'Д{^uCbЉj^O6$> (7\oPkaR-64|+NBoc6hwCl[P3_<$ٺqx&4"+UE5Ř1ykV~=#e ;&3.okb^'p,ʳXW-A& 33XSgy)G3|:n۫@Q_KOa#$ ^eF~hX]7 @F[[%PMOUEf+pcVkbwcRi Qs4%3E^ P ٨GӰR >s^0ujPw?UcC&5v޿/5S!Œ1Q=C%rLjM"5 !Kj*m'^lJaH9;'gaѠ+<΁IM+~Xk2j6ZJ Q%kX|i՞:yL⑭;"!nղ+ יڇvZ U_z(?2fY>-ϴKu&n~pDkQ&jԪ[cG AѸ| z_$x\T~2{ν3*Rp> }MmBxJd ꫅,bgx01 '6K ]Ic^ _bj"dUg5g% ) H:PCh5QE-cnՑUlBĦ?*Yx-PJZlp)M q m懶7.˅NAl*|  +ЯWreAMq/zujI2#//5zoAK'?Y/ugv̌ .)_l"'[L=Z4U*]̤eFj:(vb/1ܜxMwaumİKOG&7 74V 9 :l>GrqD$ڮ<$/-" s]۞{0fw E8w V7MLŪZ{+-k/5VfLڕ2yuS:緦cb:̍p8М vnѲF+?~D&tHd|d\r%ebT,hj>r“]s3_YQjCVْeځomI]th6O"қ x׿e=B1=Hf25v.6FoSݪ .mQͥ Di2t+#Y-6UԳ8WâstCFsgA ڡ|zgߖGts^Afh_6fLR0Ha61VzBwѡq# oga8gp7Y.bz&$p Moߞ!27l )޴dw*PMvuT}֣pj"͘Y`HxnaܕU0YE|0.5'_ LLw?p _ ~T~Xm:#Mo &Upiz%0B.$:t5]&a+7Sgh*mܱ!1[԰IiְKbjwww?aD0$[]:fd4\*D zP H㜩OƃS|}dPg9-DıNmotIg gvtˊE68c] mw/`8^.a^) Hz{}vr6R-z&A+@a 3GppU̳HPS ;fT~5QAws hGq>*5nv=|lf& ]L~(vX+Rr,7n77?LY2ScKC"7Zbmf ÕC(~C~]hs}Rp11y*<..?>?ЬJװLMgi:?Jsp':A2@-׶Mw}ܸ]13}q-h_Cby&6/Dd>/ZA s(ƣV' mیM.̱޷K3>X*E4=>/Ɍ&s3SvsȑE a12Nw2DrV[fB{n黫߽2rF I@vl<ʮ d1gY`jSD/_DMC;FR6o+da* )ZIZf%-} !W,̆2?T "Qܜ&SS=7>74He 55VZҡDnچLF9Վj[Sّ di$ Z kփ?5Os=+xnV6бd\Mg##4_?]̠rK3xs:P8l'T>OI(L綦jx>ޮJ9ԇw &UhGYXʎb "U|p[C͒B\/08j(uaʓCT5 v6Jir >Zm) 躓H j3 /w}NI>pK#i\6ׁ?6{x_jO>Q1x^Kt(VOn ߘgС.o/ߵEZ3U9f22#} Ԛl-sy| Cȗiՠ75G){pEt,[ջT=`lQ-?q׆1x<^*U3ULNukޯ O;BChODG83g2b6qrl2zlŢv?l+N:tkTcl徙" uJllQ5x"n>PxHR Dg$t":48f",]R nu o ~Fs>k"[ģE5Zڂ=&٦AƆN`$Ot^?O-dlg;4Wvxp+?qI&t&M" D6Up asne}2oۆsXTyB+'BVH1%c] ik\}_fq,eL]/R)܄\b,`\ɼ2>$yk")Tċ\Fuf4-6K:6δUFV \B*A$LS%U1;d/V /I?lEm:s>w#h>Y:2؝98h kZLUܥ(6wee~SΆ~:T~Z7-!83RFFL_p.lԾTS2o뭊̈́qΙ9e?7'F"cNBX\Ye[c: թ)t=$`$ Gw8 SëZN[ܙt_M.%P׼8;mKAied"뼆eLQKMw5sߧ/%U=Sma)`ԻE A([vJ\;.~h7',\gݬVd\RI;!Ϥ!fb*wbn\,7?LGщeZߓ aN/b8Hb&7>4Y8Օ8:OlkC9rW%#=Z.-_.in =(q?3-W72p1``h~4;tP~`[s*6aH-ySJr]nMJ> Q/:3..RYSG%zh|g0_?ѥ<׏=~gȩY ,YhXvX+]еܮI$sU,B#J`;?>6p>7Į6\>G-[Qpm5+.kxi1ұ&*&iCㅛ +arVFQbSwiy֣ G(ɪa(f Ç^?i^5&J۴ _\3UQ%Җ/5*,G#u^Zo3 ~4SMLIyFR=Fk3G599Փb>cIOM==??\ΆieϕIBEMDn-렠}I:LXT+XP8g?+$V _:)mAu3׆A7י˨#>Uy` rvr"!M4AKR\@ij~ЫW*7tSM !X\s!]Ab1P(s z3:3nP<ܕ[abc WqtYi_\@dof>Ur$ (5h#` u QaºUY-&6ڲ9F 52ʏ4 Ppn)p|^@.6 v!JDakGS:%zkpo8usR3/f)kUd&nרs% 6-v-lp'\!Kpnj WJCC嚍sϟ\+v8.߷:/)S M2/has0g6E wO>9'e>$4y+Й4{̅%+'rj-jgmU_棩:8nsh+azΦ2i,TMHQ[t(VK6NN|<,cܞ$` >\7fiI6X"`]AT@3%e[҇Ա:ƜN;R:W%Eyü Ûk\/+ pZt6 zȠі= OSf271.Ӌ/*-ݝqt?OӸzTowwu23+5 c[g *D,bNk5)5WxoVֈfqNd6N $,{^[գ )0m:|T{ Y;0{hZUr j Pj+oIF˓TCxXpRǛ$Ue]S?j/gڮVhn+ 5}m㷬aU7DSbH߱a]~*ro7ohTC $| YI6,V$(O5)3l9~ZלМhҩ+M(%4)6N 8‡WF7{3{a3T鿫&Eh:W#Ky=<+eddaV%u -%M^\^ G5Ͷgwuꨛ]@K .i6ĸ76JK!ҒP686cǔZ%#&wF9>䘕& 7cH Ȼ{ȮK=ͻof2v=Ncފ`/bº^isq'tP‚]JfI KX$ėG?zldL|(a Pqg-J>&~ڰnrgl\ίXjp4^s]R?>9L Oh^J˔޻W?dky~R-%->GU`wgd_TXr]UQI XEaTi4} BKӋ&]¡2,$Dt{84棸%śY.V<,"'1ʣE3r"M(/ KFL&N~hH$cN"oxwtDe>w̷jBp!ƓQԮM)v:K x፵RJl ӱX9GSvOƢU|:PCz[-_4w>_Xh&-jq::im1;bm8[`KX#nI:ΨYc:S!]? .,Qn`dewZv3kvYoO\4O&ð, yV9g7ַ?arxؾ}]}ǿ`L㑍b8&BFó3D U!}r6 *zխ~?p's̝׿_bw@_Ys5y &L#o;7[Y/ XUa纄F|^?&p>'QN.iriVezѵPSrPU, s#ZK5ZֽB]pRr4QN.[XR4M7bxw'/_=,(XG+Vt̳AlV |V`8C"-{l_Z[ymd\mȱ7/M5]WmTIxT*x51.7HZKЏq@n/t)f5o2 bYt8AVו&2/W*yN,edn%x{v$\v7'kb04| NѬt^ӊRiG29uD,0-fIׂn餲G\] ~T-_^FRcq$<9D':x18F6vflohCWa+02lF"$Ao{9RŷGi萮A4SYZX<0p5MGd4~Q'4DFʣ]ۧҐЃC}I+6=r.*Wa? [R?7|W5--'snn0B*H2dfv$8?y=8^$7?}Tkvv< m79H0b%\QPZVoP[QREkmP-ㇱ4Z$e+`!~Cl[DK)).K#i͸~T[r:l!j ^x[~NZlfWVRrJ/­Dy#ŗY|tV4x3JO]S ƻ2!s|s$2$MS(4a0D}F$npbaQCVt pYQ0q,M&b#c:ʻr=G|Ev˙H%̯uzۉTk~nmeD|V E}If̤aZUcD1GSƅ 76Bku\Z=CXG-g0oFK\I{q{1GݨS9~sQA7Jyܧ\eۡf!kI:g.E0͹Ä܃ gw4JE0tg(P&1q'ř+琋['KfwGӟMu{5yxH:/"7ίqO7/c8:FeYkC&@'XmPP–>/Q ClG_746. 3[03w;gҍJzs$ ^hs5СUN#g3ԥ!prxeΚZ $ axJotҪmk jUA@n,a 09u8lX .bE}|N?x"m%cm'ݤ`~›K[ќ'C 2Y\YMw &s$V*n7=5]6$Ғm**jO7N*bƀVh-x h!J~hi~BVCwtB0ڣI2HЯZjK3:iaHSj (~mrrԐH]:"2 Z35BPjK-Q`MW3aİuIC+~^3H #}$| '+ jL,Z4Zv?^'R">G[g(AaLY.go|4i`?L⁐әuI̡=Q"`v'/^0j9 "W`y@˹OcdbK>җG5mi40Xkp,*(+N@nY<,o1yi;4ʾvy*Jr,!B|'r"/h ;nbeS['| n!e\mUnj+igY69Ggt4UAV!iy b} :\=±Tx;ѕ6bg/dܓnmsK֦+BRP2Q=S|.pC=r*p{iCuIn$w~a2/^mMϗ̚CvܦMl;dGTEf=gt|i8io}7JQz0eu߉6f5#q i2΂S&iY@z֛xZuTX|Ȍ1.mNOjohhtM˓&^/t%#Vd0GX! ąht18dT9"F(ՐDլ؞Arh9Z}M .(ڮdݴ3vf` j(`. xvg˱y{Qa@+zF$-lat3rz]Q K{T=ģ"9tj{\YN.zr8Nin?z|^;tPoVl4?Bt:q +d |!*Q m[`]M7A*G!et@WJG/iͅ]M>%Ċ# q҃A9ۏ'K Zؓxhп5_bf^pŸ5fۈzhmx`Z}>\`xpS}oK}UZCoHSg1?}u P 圔y3K>0t$:QI!ƀi<|A+Z>wk(yF{whUMVXvC[rъla2Tn ~SQc2DžsY:K26l|~Jc`8 GRr}tEuo?|ÇryhWc׋,]xv,cm۲)M)M#ׯ!3Uߌ!%\HD9%CaV(iPiUoުr +՜l;lzpBR!^PWîA~P2b7 0E#qF&Nd 0drpR޺ӯ7OwWz f]'F Am+pV T!vNkTNv_gNsEX'Tȡf4wvơWr~aM7*;pX f@-9㕮p]4W4c_? 7ӋRq2aՐ-yu%/΢NѣSЉ.Y7T'RaGzq&p2Tk7=0yvb8^ #cU.0b_+atyԂDey)_Ra"_~|@+3C#n(RT8{I.fp^"'d|7c6">i8O,v( M5! / : 4txbҍؕO`(8~03+OST6եLդ diЁ[4{?(23'kX~{ι\2>@8 %eT z%-c:}\2h)6o2Vv3wtV lZ{OalW%LD$b(+9ۆ2Rr_+[ K ͱ3Q;nP.A;dq,6_~y?{yeܮ>퓈T`g=;ď20:ƫ}^3<Rs<)IO6"`8# X[|\ t&|+͂W(L7ɏ6^9B: qsQlls}Y-/hk5(Vq#Is¼:jREן͵HVւ<4QR`٠7QDm\-&=aQ^Ke6b>ȇ 4ӼH cK?*+CO鑭w];F$RUXGLRT3*޽+5޽{gt_Cbm9lEc}ї_`߾h1Ƽ3Mӹ7S/ƍrXi$RZ,_DYY,5y:jc>s2i.o&eY/]ahDj Ol^&"w5HqҔN72{}n?șv.nOOyUya"q 墐e5 {ڵo;д{Gnx67!IW_Ĉ_G6KN׻s640#NY1ȥ콄;^WaoUCšcVRGSӑ%D#»TE^OksU$CZʮ.O}9 .ۑ:..J vԡ*Aɍze3N_Yٜ&FYd8ɢL'y׮ҐdY1pwf3{yZky7!il!ogdLA eᄵ\ vNM9DQA M\ 2 نm #[JGp;f Mt@BꃦTߎ \8yFk<)KB-YiK8(vmzuh#ƭKFc93w;b8J*$sBpjZ b#[~®l}j,!13^{k@pMܾne?{t&jedY3[zv~&?3 #1 Xvu9K_|uʺ&tnWkZyI[j ~o0ER칆xz 0 #3颖+z=\]YF.ή,>7ծk4!BQ֌OEsƝ~N?jAGZe] .i8V}߄G܍ʛ(IJm=Ae11'̍}j'|}dk޾dN!ºJ2ck~`I_5vȄ3a3b̴e4d _ }3J>Ɯk!ӵ* ZdKV $ەyovXD~r*tשdQ$tg3;gDKφKޅ+webR^]!eem[OZɪ*cg~hp$1DBneUf1 +eNևY:M Hfk{MAoږIGak(}gPH$1X>FZ# #i7oQCύB-Fe}yiw#?V ȨD^jb֬j0S51"]Tt۹GpdRWCTz2)Jx BDe$%%q3,ltJ/+>X xd0l!ҭ\G*G(Fl% N6.ruOmFH5[8u\ѩTFVlA:E/cǏ]`7؊Y!$)MW >dodqd|R`oM'`}5o"ӓR3wh`Dr^F D7<0SpDst|< 1ͦJ 5Vk@6cKϧYcy2bnL/e2'b[\D*d |at4vd0<gsD Vmv)bYCpq1JhQNLd< Wf W2#RowiVJMU~!:`0ʸyAfN`rqoR fޠPد$3("=*nDwAe#.TF \;2@J$_-('KE0uBC0n4~I]DYe] ָv g(&{.}h: %QowSŞctm+@68PVmU6v Iq`b ՞?7Ė'lCF,@߱>0ܡ:Z#ֺ}ay8|^?s2i:* P5 󣂺~#C0s06· Pwl=3׈'erh 5o|Vg]oOp'UG"SDJ-D ,-[SmWLg`fh+iLLL-i(r,OCvp0Im35()DNaWºᡴ' 6bǧgfd_kمAָ"4 nb߼vcEZ[MWwpfŪiF[SeMZ8; d"0ŊmFG%&QGj>/jN@#Z2C[9eGQaʵF<:^_o`\C'*XUkV/_R3-4kKmM1>GZz8IS[ql0*2XsnWELUU-J~}35ujr)xW4$J7o?p1VդMMG<ɴY '{t0 rX8lB;hǍ̷ruaWcZ!vaDPAF؊.}A  b8F2jO|dW:e.H?!чʊ 2XATn<= bkd7ΔjZހØ6v|x mE\+$E^aV7!C[UKn9ϳܐ};sVђ3Kg/c#ĎK$I*Yhj>r“]s3_YQj^Zпëz}BV/6{ hczXC|Ҳؔ%;a*K[nyts)+i0rԑD, ^QP㴰R 5YԺ!OOyQs̾圎fmI ;l'̐L`Foeyk+%tZ/LIZih4@3;wG"=|lt9Gc\{l;τ_|1v_Sa.o#Mo &M1?=`Pn9R n\V˴*9=y^c#! y9 b:UFk}@|ٶKNMXY|wdƫOt?fyw3!ny!Z rgD&'(+ӝ '%[wQ?C]kk"YYiJ >`kh1oh%ȷöUo* )ZIZf%-} !WVqb'9 CNeq_a2EDs qKk~LOepJ RC:~몤|k#Q\}0&: \*Yx2s\tSUَ= .>q;=s7GTt8辣)&ۚAta `g:V"Q80Pq"]uU9}R,$F.#[û;h^`UjMآ[~ c6Ly:豎!TckUULNukSt8ӑ^: 4fW%N"Ge(Nk1T%XٌW̓uU/d25}3EZ>٢{k9ƇrE>qw|4P~nai'p #t{3vUձ`պKxH&6>"'٦AƆN`$Ot^?O-dlg;4WvxpA[3#)1t%8vl =QH6Bw4]Ĺ^TwK7>LmùPfi<wX WW1)y% ]z.NW1wx6T\b,`H˪3K뫹&BJHke,RDVKԘK:6tA'lU .V%Ch!GK`%y%<~70B!棙u-,ٜP&%|Uܥ(6^e :l(Cؙx7wQprO: 7v@`ж8>nӁb1RN,]⮷*C69gbnTܜ ; qbqe5o,T'*~fK)zެlX:@[تsǹi.+sW8rNj `7eNk9x] w5j]f9wڈ!%*ۇ+[yҮZEFYbY|tE6:u\zN#k>4}zHIxpWV?F6}mvLBj]/рi[ZRe3E-6 oʓT7LJ4՞m zowsc˜svsB3G-IYΪݻY ɸ6ړit&̳jC^0U*fܸb7TYX o{[vh=m@M+Ü~ ^7>4Y8Օ8:26{\UH#4ʬV60x+ӌu; Q/:bZ@ʚNsL6Bt)k?ImG'8rji 1?H96ǭ ;O^E,U] 6$*^@=0jg0Ĵ +[+ZҠ'VT'-lFJ2`ZL.jt,F  7 n*x̆YC EUMնfh*z7N$ O0TArޫބ\ `w2^5c_UXVE%{h̹K ћҀtj[к77i}T VR=Fk3G599ÚkQt,On(ygsq1۠|:(h XȤ]&,*{E!ra?:q\& ]HC3%uV3׆A7י˨#>Uy` rvr"!M4!'8HǗ0iUԛ$ASNuAP~vɎFSdcP*gtf(ݠy+3 >;RGVJu4[O7fkF/`ºUY^qs? mٜGg,#yrl G(8b8c>rEmwvhL#Y F)N?kܪ i=y<-+YmI5jz\usMcK]K4\ w=1dRАifcs/?sWp:.8S']o#u&^S~%d^ZR,8^u8)j͍do3|́u&pE&sIN4|AXjcN'C)̒f9y_W-ac)mByNX2d:7qD+WE"A3wJ-yKvȧc%*`~7|! 2:a<Eϡ$nr yaJnX[*Ɇ̰?{=ݍc^~ğ}}d97I~\s ̘`>4sE 2aUp;}KhGxK\]m '|sBy19%k4[Rj *w6mU] ?*z %PŒ07BT3e+g,(Mu䲅%Jy!^_ z^ɋYTaQV\g1x26O@'ʸ-ٴ5>QtzҮ nw>ɐ}جp,Dr}#Zn%"OAwɸ ˑc/o:3t5{F5GWA=rsPލT1hҝMoV#&+v]Eg흞Ѕ:88jD%;J=։MuNdڀ7C=^ua QqDK=].7X,hGCiȝ8 v;$+RZuhrފТ>~17|^^-e8 L+ɕ{'4%.JiB[rc]B$s,j6UF3c@|uHzBp.cch2ߔ,С&Ze\%fե%Ybqo3XVVDRБWӇ9%GR5k?9 rJhC%r`r<@VӮs,FwjAomR npw&>,/_V%n!mI!Xo>9~OsGsNz$vN~\mWf^n0A#C ,G {]\[No4Vt [ qr| F}nBK _Ts\.#ou}t><<j\:ujρhU,hu- ۓbkVN[03`PXhMiEjex"Ö$kA7Z?Ur= ~juJDo2*;o'Aeu$8i. 4k5+d+O|C[܄`#59 z!-=JCt 7j21?6WυIDvhz=Z%隕ˍ G"Ff+w>lJC&B* %Yj\iC9,lI]HpBvԞ̹Hx3 ")ʐI귛ٝ=xkZ[n!ЗankDD҄/:RԲzÅ Nߊ*Zk:T'殩]Z9Թ _@ &)fOxL"X۾akH78f1O(! +a˨~DQT)M&b#c:ʻr=G|Ev˙H%̯uzۉTk~nmeD|V E}If̤aZUcD1GSƅ 76Bku\Z=CXG-g0oFK\I{q{1Gnԩ9ݠj%֙& ʡs1GAl/7S {&[ _*j!s gtA?3Ox dtf] fshe@%ئˀ3hNy_>r8j'X:tXR(AM[<# 2Z++{E0 jJ[E[ D^jN>/BJ҃}!. zFs^ZOn5EP :^(Av: {{&<˦ vOܰC45H37ڪ VֳTmt[sl)ƏBh(@3BA@to{c v^+ׇmČ&C ?'㞔vn[6E\JLZU*`Hs̅"a~$B{3"DLEW-K >'+-/4V#Lkz#MZp#ٸ i/P낶&KHxEf!;oan&2Ve"3 Þ3:FV>4SY7P־a%([h2H:DR4PqgJ利GdGt xZuTX|Ȍ1.mNOjohhtM˓&^/t%#Vd0GX! ąht18dT9"F(ՐDլ؞Arh9Z}M .(zRgA4*Bi?/P\(b5cif&*sÀVrtIZ2Bg 6>()p;zGErT.v]pN#~x|=ެh~W1*u4#VJ kCT<40nH T|BՁ^5,A }Ju5KG )>A'B*(rO9`ioch$/C#w>Gt 痘\1si6Zf}7:b5>ܔlt_նn?;P*ҰTq7YC$Od|$?g6b8uPz"U'q"8 #D0/rEnz{%و~ʹAں ˎhX3Z1-l}P_&-4{J9jLp:KwI&x ߰>U>U`SI}, X ΠGRr}tEuo?|ÇryhWc׋,]xv,cm۲)M)M#ׯ!3Uߌ!%\HD9ǺsaV(iPiUoުr +՜l;lzpBR!^PWîA~P2b7 0E#qF&Nd 0drpR޺ӯ7OwWz f]  P!yJ!;Q=iGi9֨`FWϜ紋 9Nͩ.,C-h C$9n2Uw ̀*[s +]i+--iƘBpÍTvq5d!vK^d]ɋ蠼8:8 s?t"Km bbg^gbh \ UM,Ld%ȰdG}⯸v Jg;?'?p#:`E#@Em^||n_<8aP99%NF?p^R3m=k:t͘HOD6hz74Jxu fߠAAZ7rAav@nt<R Tl1'~ff |vwզ , :pk_d2b Koo9KQ\gj4ADeL?<)yJ$ s}5^S[m%U%(:Q0I/ooeζ!\c bCG蒀:xis,|LNd;t{5z^0 P>ZM{ֳA(cǙ{5`].u)G1Ù$LaY/<Qc:"m̀a{Ua5@ jr̷,xqtz}oZ`N#/!O86;GZbVS))n!7L;(̫F!U1I_t\ie-xcI% |JqBjrc1WN_(K!yx@>LU)FZ[~Q]zLl1"bdtRD{I;vxս^axp9E:[خC3Jͬ@(aQ:kTXE'PND |0RxvF:*Xdl`8jĄ9^mb?n}1o3)h[}5=mCZv5Ffֆ͏qj'p^ir] S47"`^tbyR =*2jt{žvm9vێ4ޑ) 0:xqfW?1בxĒ.bŜ +&jf r),{/a:U[lpGrNM7 q2J\{j}~y ={8Ʌ(yȆY B[`nWIua?Rs5;v +m?K⵪gz+ѝ&{=iXQ];4x2M?9Kh.U pÞZiܕr3@m 6PpvuKݴgAff~!%7%W?K73X8vÀAm 6]c (s23>|햒1Jv/ $Dyut5h~@^RC>TrkUQ&|5i~+A ͔*Hb,r=KOFaID2k'@J,xS1|ѩT-ؔD]RPEu&ov0Q40ޮܛ1bG79 1[CTr"DX?<8<$n'R,2G1HÎ_r-, 2 L|5HKM9q{wG6Q(AX-C i6ގL$a=GҪ"{l`H\Xʓ;O4P ¶3Bb_o2Q۶8^N¸o-"yg&Ujo7ǚϹ&%3%_rFeF ͟\NX27 }&.DN e4I___]^Z~3,%V)zIw4AG?fvդlv Zefί2M)oGeJsĄϱjʥG>,NWhd ?Ubb/p,Tg-PB~xQ^8.>\SKXj{LJJL پR< Rx4YW) qHX4>.B*`xOY@'ПNOOU.SXn|ks=x D=f~LƊ R:^^ lжy5a|`WH ے:x;<88I(8IwNfP)ͥc^g7pmy\bbMk27Fp@"qD~3s^rL|{䄭W*+cץ|FOvIu>Q:x rOfڮ#w 82!ĝpEJ&=Hݸ?]-n*BI_ފ&hA:>pPw$k"'0!k &?|7wnTn-]gB#Hٿ>}Vaa{!%K){G87/=b1T9lbATB#P V [̫ԎUPVh'X6X`5 --d5>v ;̬&{-n֠wVdG>\τgR6b&F 'Yc %u.U*i=ґ! 1093G:.ŃnN$J"Q>g %-Ia֞q:y2k1vH4+킥sX(=djcXk5<J~ʧ'@*$S9'RdΜyOOdTB[`n(kgU_53%]oXo`8 zT۩-8˔ʙNX8M0|5Sfl}ѺM+l9Znp>Z-N 6u2dbbAi0 1o54۬qQa𦡆Ԙ9fƅom>n]~8l™6 ¹ǔl!vuv=fVEd~/:a ~5,' qdݩ &y.ؔ}l5řܓxċ`xD#AJ`h7m޼dք") x:Z^;_=D/UiT «CHX~ l iyL]e[&“fˏ%ڕ#JpJŽoneuOr-Ccޗy2Za89 >W|" ㌍ʟ@ f rZm769MI:>::/CaaLvG*.هkI@!kO3"[V oqm1-aQ=f?!Q|zp(:IH Ko ۷k&`r#fag_r%j`wlpЪu% .S7cC7ug]t|p79;!9~vh)X.eCmtb0$!>kDG(f/Z,_UG>n6FA6G3\6P0YIL]dn#-7'bCiTHٲr2ws7%-]Eӫ Û8"K5v2o`ЄSJNCը3cLxd8h]!dڢ#7KY&vEz[ 8l 5ʑ8S`Tz:L1w|#wΑ&2u`W/}sR.xl cȝ |`SһV6XhhЌyX=85ǀ zLi&tj ຜُHTQ=4ĀRQ׳J641l'OL|>WQH@  TșSNtMmcEp~v4тbXLf!s,g d,MW*ܕ" 2ڵecԃV2.kWξ]LNhce _z]9rICYQtRx|MMq,f%7'7ffQ賍p)5JuA8>&Ohs*_<*,lY%a1u+N(Wth'M²Cw&؟Tķb|=3E/g&F}F ؂׽o~`',(ɖ_ k } ֨NPU#Bsvr2@C/7"i)= E~`cD Q8Ϭ_4/1_ϮEĝ|ц1jV|ű؉%㑘{2#ZYHF&#t)&o$xkm;9ʉR^ Xd O@~9>0Kno+ /#B=H e&8vkZʗj,i<2~l}U`ǝpIh?.y;dY R!ՓDPcH6>sQ ׋7c'ӈvn)[a˼?ggl?\,;-7W]6_d[d^^n8\B֡oQʫs,F'': P T&MKaLUUi;g*tn* ]8.KiL±ZM ~<֦N,!=׊*WE?0a2/,B(B~r 2v5+ljVUqX3FJñ9D;)h]^Y: HhITVQyZ|^T?8AC|[^O? ߐ-dMZT3t.u&9v&BYYoo> |L'ocfR8;ZsgjjTsr2s:+\1EUq2mb)EAƲ=֩0<=@<#)0vbAt`ZlYSAڀ\[y!?J ~!`1*dO8%yr:!QfEznL\k]AYfa䔲u@w@Z2[6moLuH$d}<MU?°s9 ~w ,\fUD q@txH*-pTO`_,itM~{NRrQ n4BHGhca qkm'i:<=m x-[C+IЕn6թGQӍ)gSD77|R+9@yPqSɸ/sȎ!&u|e!l8e% ~iC]hn}p{eƖܰh:S?n4nwѫvh{JRfL>: QtqC4is#* v@SZ('_[vȽ'y+pȭhЋ'q̹ ׽R& :KF{V5&qtz5/pk޼َa2F{?h/" gS '-ZV|͒5,M %7q(jB `ӵ[!0TE֒D%@JMҔ /OЛH[WbLQ ܭu< ݥ 2> }ۋz~y2PJμfG˳Kqqws !kMs3Џ3TճsrJ%hW@%܉kŒ`Ȍ((S;71k#GÐL>}"`r<+Ugf;xG V+MCQR Ђ‰8S&b1Of.?F6nC] KZ~HN W^79 p`GCD]CFUFD%k0}N^_.ܤə\:uX5ETL0O*{2ݫJ2ܩf=+ 1$otXP!{gUǻHEn)2uN6C8{_ vC:蜧Mn [ө7?\/mbJ^b>nb޺^'n"Rl`<۞Rlcm>3Hgq" xc_Y xabyݤtЕT-W̬Ɔ i3vWXA!;tC2_2L*#٬@Ǔ*p&mHeR<]02Ta$uOdnc86pbn6y?{63BJ [e@Iš6ⴉU~&zl,oc$8k56,G#ZWY.6,Ԑ+P*4}ٮд1]]OFru p5)baze2}uw*ȶϠ-mub65b7*Vf>/qPX9|IyH0tXæSXԚM/H% =>]Ab]|DM0@!MOc(2\q{+-oU6f2un2==vhHӏ_1͓tl"9[c\!6")Wu49[]Ӱ&vz<;n~Xao)/dazB>=ܯ$,R<7Ƅ 1"h~g1]'$â5izo%;#͔T|O+I`[ U=b@&ӡOzxҾuipb },C2K˱#Pe'x72k1S;"/*vRw M0Lb@r /pg6 D-ϢԞ(GdWמ]x6f9O61aZ`B*a P\R6;-*/_[1Q1~Ɨ/Xm|&J4@FnͦTk(ޜ\{,* %5"U>| [*pӶZ̃κ|x%h=;?հusL>|ױB'?:[+@f%F YmnqOwC;!CzZ`X:YMXxXB#faC4cқpЉ-&1DzFQ@A.95=l0 MtlYb"fHgLnS2;Is,u*Ya1U ?a\҉\t2#;]nƠu6Ø1[5i nV»/Ն PGQP!` aY.sy( 1𶠓g0SVa;Ȏ ֌9JΑf$x$ua#_:;Bk`26InpX+ˇpl!y Mo"kL 4 ChmϤM6>汼ȯ\#ͱAigBy`j1j(I&оr횲Xg s5ERhiDK |K?\ںkBYvsR=dVV]Ku. 4,VZz1N,twϿGN=#e?-oߞNҪ;A:nt[C94 Jx.#9i ]NչUh-KGym}"nA9کpR0c1nG^ H!S,+ApGw[.oK3{_~! _A|AyDVyfl@!$ᦅ+#I>x_ ~XmOQ2F&YVS` z7`5GdI|&VYyc$B5%_7!Kdzeoǟ;U~oso_=?==> :iAhAd~_h5j3-H}|\ 'V\iluEz{?swɟ 50!W~{?ܟaeyj2'RM㓌o_i{1Yۏ" 9d[J$7?]+t8$nKiV!̤_ɽvBT*7.4TgoSg  iC F#VY%nyV+ )a[8~}q-ݰ0b0.XPqU:uX~63WDzpt}G_?u" C‰dSVJ=2;XkFBFFN*yf yA%i_=.| ݮ*|s~R}0rLRIaԭF 쏬ηA>b<1?MWDEr4w@f!/_>#1 $Ft'^t`[}RM34BT=7тsOp)ٍ58Ԟ\fi<^<7@!|VtQVk#MPU׵+xpJ^LSSrƝsnv~weI'9GB2QMk aF$kNyYr§e-9"1lQ<>Іx-/.áu+3ة NLR,B-S XVRaW{8Irʹe4d _ ȢlJܨ9g"z["/b$߮4ȃq[6 'I1N%";%4K٘K@gM/GG%p2VTZ| a7ҲJ\6!FñLkXhD{Uw1Y JӸHeN}M[ Iu-@?rO"FݧI|HN]//IVpMMebV d}ToMr7o!#nj* mqwv7h<߲_I**F/8&GÉN~`"|NK#bN%&5C+(*m@g+5ıϰL+͐XAm@I&J+Hvr?8<1"`mM^̛d1ACKcM=]Cֻ59`eӧ w6٨F|AIе)SClN+3#Cgdrz rjPjg`fh+iLLLahs8u옰 Qي Cfc"v+XnxSLv:PwنZ@va& j 4L?}EiBmY`B͓nCrb拇D"[7pAgH&4"+UE5Ř1ykV~=#e ;&3.okb^'ۡ<+a(5zd}oW)5df6 8ҝN\5k%oFVrڻs<1(O޻<,o!^sy[5v8eҪZhxlX3R,X#\ѿుkQ$CXǠᙸc1'~f ,$3cdܣ9#B$PN%kl"M7Wy's3n~Q /BXq5n(ӡfum0lUam/^gҙbzQJ(ҧ蹜mmK%_c>btSZ㙶10&z2~;2qSzH[cJ5QV}=V7{Mנu$JCOFyά4ܲOCa<% Cպ,bgcb 9N욗R2ۃ]Ɔ/'3^aO|+q;Xy^FI $56ٞKL3cnթUlBaG,J%mXaՔWo&6Ss7.ˍNA|*bI / e^UE h$g p͍f spk`>Jkk;`7 a#U6QZZyMUJw|+cK{CSw!ʪ8K 7 'Eh;ׯale\ci & f1|6Az(lq0\|ɦtSu5C y(->WR17̞zp0n(U|S<<,nkD~w̺3h 4z9>9|v|܍6W H^S\|T0*#R=;JNp4sWtvMf_Ϩ F5nm0yd:whC)\aOw\2x~/so.F*re؄=M|P>Iܓ'݃4*Gժ Y5͕dOM)uza8Bzd6#(F.xr(0O <}%ԢsfL$j݀Rr}dPZdثL~;ty0cK0L:* Ƹdhg,GDq$,ֳÌ>ˌJf$,.IrG:cY%2YJsۈ,al֨W*kGa a<_4јWϩ8Y(DL5fp**ϖq3V!}<%#;1ndS4a #W6=A؈t67; 4Jd-b gB~_~76'h<1$BH4F#3tGb.E8ĭ-Obql'jӘ)ISS2`,%2xcc;9CdtAc#h{8oe7 ˿aӫսˬ3^uRcmL8_??%$BToR4R@5cGHEacY`HxwƸ=U`"e>y7_I~/&۽[[~*Mo c&SZ.ABbdTg1+%ѝev|2lDF{N%hdClQ&]-Ta*do|wfXO6c]U2]lDh1CtL!{#^F5͋HJ a׍'#w!oΫlM$B ?>hhy!}n!OۥJ-#Y؃2 (de`RɋZ[7!k۝ә90mw@Cne /00N2!o0XcZ}B&Ų+-HJFVPN|bF;PmC&@X'oծ'rXL@&4d@1 Cլxj0G1\ t-?Py Kħ ]<גO8{ / ͮySqy@ stԶDV3~ma+(qhCcIJj9:,[,W#*]IK<89 ?=bm?xj 5Nx0y:hZCF)UnG 4ID-Ed$d L {mKyR8|4S.Yrೳ(| 1LSo)]Փ9?[czj:RX>|qnof0&CN(sX2*#$LMbjKQy<&rQcM.,C  f*'/pT;_vCYTfP^|4E MZm뙌9wP^*U3VLMukGO0'І "#xv<̓U˳Ѵ6q lzcدJ?fH6t[jRc:l>&ۯO34bh8&yK45&B/ @d`~_fvqn]dg1#&#➗ÈOs&ɍDw&+clO_m@e;%.l Q+%՗ ^($Tf&iBv`ݑޞU{ `r~8`k//CS9 @P#,ygbMlF<(4lJgI9y5|}9LX:}2Dς13{[V)uBmMU*ƢLrsK4b-$uU*:%NvMb l)džw™<|6~WfTCactC! )K-ߩ:z`6fz%7܂ ?-8'J\ئ.o)1X0Ά^T~ZudF0Bpp[Jc Mry|(jDntu=`7!Lra#.n,q:hi>6 vYN*,&=e+`Z kK^^MR-1; v: kRNIt){clՆ 6s򳇖h3\G@ 0tN0 s7̐ DbTuE]𓞎`*ֺ >\z p ٮ/쐄O!qLo;ԙr#҅Һ_0@W-5(CLd,R>g}z"R{3՞Fb/MG/^u鍏o_%JK=׵rJ*ljnVF2 s] J'k:vA?2gTd+|VzSt3YДyw"v0Ͻ0|bw&ė4=f|pXڮ[ ݫ^gn-]Onhiv&{ZQy8>3-w7Ғ2p1`lE|*%>]KxֲSbW[9hwmCN9 A':b@ʚ9zY؂~]nz#D 㘩h/ZZ5HJ2eժ;(zS9˭Db**McX-4~T.ɜ36xmlFo&o/q(irBazΘBIBQ!tV6Ik֑> DNrm=RLH>|.%$5mp. 2m'?J-1!RΜfvkƁ5J>Jn03'osq`-Pe4|&2iQ)fK`lqdg+L1 6z:(cA)t1׆A77cрGbhNTEBqO4HR<@xR'M(B~75sυL1C5*UNP rAp3c[aa3U@gGr]6|:f -Ƒ! !uF0Xb9ϖB[65@v'Z>Z_N-4jJS? -%K10w9ТǀÂ"qЭ:@ja-yͭKM/^EniYRi&vۨ3veƖjUh6?ZJt`Fȫ]C垍C])q IJg_i4żݍJDr48FSXd-|m:y9֜ԡ;FscIJ fV5~OªtZJ]9ash*6D2e,S*ry6e/:yzuµ CAvX&x<1]0Z3|/,m12w4Ӎrv(B@'OlVP;>#ceI3QCXzC.'2Rj̒tK{L9Kd͐a ϟ0o4r0)(qrėnjVf&6ef{E3B])SndXxNթf1\,|D>rfFteLBdNhVw]0O̙G?[[#Z"mTMqϲMW=e$W@۞WGU xS:?/U5N({Ru<:Tj9Rjh33AveJǻ$Ue[:b6ڛvhk =}}=ְ41rru"{WFL --d'TWѬb'JO%f ;Sc'7XNmB)1_lwpxqfָe !~ Q6 "frqrAQc:|xt7wWkI/\0ɸ\UI 43#䥗z*e%cdIV-n[Σ`LS(מyK=|:?u]AK$_77:.i2x7ϴ1JKJN%2P:cFĔz%#&OF;>䜕" 1cwb)bE32%gcf?LwIei$\f#Bqxa_vej:ڦGZNQ:Y &$R2sU*er5EJqvLPVOx`"B|ʹn`I(Nvxu){oY[{x_>.w-;Ҷ48f"ԉ}OE&ee#J@Î/s0͗/\&ah& #/[;b\G|Ol̲i`07ݛLPڔQ(x"5Ctgz#"[vaŏ,dCWqX f}"!f-Cr/3Mu(5dK>I 6㎽`!8 ($g,5neWcɐ m+pbL9p[2;|ec+&GGBQs"*,y?]WфIa[EAPi4p|x΢bH8UM5na7a(6/ND@Ʒo*۽βPPw<ϛh?gHiKw’QlD;WE"A&δZn-nFG>te6ݏ"B àUw9u7K.1.2h4W)+ &፷D  O{_k^~F?)h+4Ns ue-Ks2Œ~x-~b! MVO`hLic:B2ʖ;Lq$L'q3zG}n1tR3jXxOb y'ZXQ`de~vaݟglYXd~~yrie) db0N?X='IOK끝b<&BF+D 3Ue>ϐ>dvg<˗ ηo][~d?u#LnNf%ovcH~>Lһ %4So9)y8i^ŅgKUҘ@*imiZvu<'9tx e70e.qz_{~]Z7 l{OܼOz ?8jסS{'h"S nN7?6+3Tː|Pk7PhbB=:.TFu5]3 9 jrBp䎶0[r!B0Lf:W|c:qDҭSk]x <^łƛ[JqmU3>;38+f_f$ 13L.!59`gڑZ*yY.~́[5*rb6bЏ&(݋Tq`_hh{#nzVW"aĆ60*?ōbIz5SH+sx2 N;xYFm4 ~NJawuMXMP? ;[jD Bv\j fKW'лD<`5~Q~]ZU=\a%:ƖQ*2' W#sk"0B#};6.fxaZ3㑐p#dU ybjxHbI:n7NgkZn~չYsȩ=JߧG !*xvBY!7I:W/E0y„g1w JE0u7ЀLk.I= ŕ+ ûN}-6 w]2yyAϦaoWZc&_\t]S MZ@v/G$wkDs R n 0jLYsA#C<ً^/4A <=> ~(BJ:OI%xN4 %7}#OdrM&=G4eN.LiJ/~ Q>{dlh}Jp\~gfO'zqvRo 0|0#Gj4?a3 ڡ7`0^Jco,^]= _*j#3!['}# 8&6b&1XF WtR+r9BھRm-"/m5z#O ao`i"qǂY/ף%6E[M CnaHIJ7V P.`gisMCU:閴喅2 q;؜| Lآ ?)xZ@nFR+Ki%QOe`f_W/y7+6*zm\@~p Yi6 Mv-R?2zrЕ Fkqc z◷ӥ_V]rE)s xTk(@9 ǫ,k <=NgDKnG^Z;4r5_.c~u3eD=73#͹ldnunsʊ+Ʀ/р׾eԘuy*]<%1x|S #q))^aAK+aB)̈{wr㌼o l; PWzJS;N8'LIYO?%]+ǏכK2gWԿ ٱKZr t>&zQӠrVTi9[x$&?g{3,_( u5J8Ow%#vqNOR7[Wu}C`N@J[pQ{J욫H^Tmi]ȥ>OTo pp8uYQF5*8}/r.2&wt"KCx79|d8WlCUΖ&{c*ϙ ׃͕c _~ӵ\`_+a\&0~~kH PA7*5p*"8׿p<`@;Թ5%.Fs^JIfe["&LVA$2'MN" q65Jxu f+?!"n( N]ūnĩ|q _Gk8?J>e;@EjS$]MI@& 3pk>E_YR[u}ZYh)㡚M0.iQ{yC(RER6o6V3tvt^ /4Ҙ¾.(Jn@PC1˜mC*/6rvm K ͹sY;nP.AHDmrįuDG&O"n5&~}fD˥!WLIzr<1&l E< pLG읟g_9 yL$59[w\nBLD?6 r 4\bgΑgՔ`ZΌ!;7RL'!PקBbV; v7F$(kk| N))0PQDB-t&'xѼt`#HhgI)􈣚PiX6OԌpLksiHA$}}l*{8'{Xkk.{[kk~+''ߐ=}dOo7VF?w70b;p= í u0{;[Kt2KdNVvc\ew!?>{3f`8k{b(;k;mllδ_p-b/w; r3gtpx?y}w/!`xx}$..?rØL6gWXnLwWs!Δщ8 ?d˿%`wwN'+kqAg'{t2|v)Gw*w:rKyRދ^!ݞ8|'»b?g{,_no9`{? 8_!/FYx7WQ;BH^"g,?jO_输/^w{/?gN1?cAx* |?a? P3<ݥX)kC|(.ؒG J%jC<Yˠ$FB<;)>A-7".ge!`E߱._ſ%7ߙdN*e5t~񫳄vXW3r2WBt9! DBՐ#CÐU%2o "WГ!WBs;s)3O)zIu5Yԓϟ4cX_}!΋(, -LuD9'eYW.aq!͘df_!09FIC'\g? / jH@hϧJ -6 ߯xp _DA^J^^ jȔJ\g(6 CBZ:0K*MTaw5@t^;C'O F֫M>fϐݮ&e)C]>R ?24نx)Ï/t%Ā7dhTx: QoBQOM t0Ϯ)ChkspQ! Ap|d +6fk@P\4vU/gYes|=KfI^R y0/8L>*ŋGG1& }+;!0|G!E2 ]YZ+yv!`O|5A[.fS&sYd@ AO ^p3SW!/@Wbf#;،ٛ}udx~AN` ~3 o Kl J?DD1!.3'HX(̘a @|Z m ;~ŒyqECdaȍ@ѧfûxq|`NU^ӑ !)CÐqqz8G4ߟ_J"͡˛KD!oj̟},^LSijw_`Ga9q%<(`2xr}0OO?~|O7?x!7_BЅWObOGs[_|Y]F B_)b?~a}^AC%pjj'y#O/41fƀOJ mDӻS!C󑋐w)_N?b ̘1hh4G -/Ϟ Cȇ(/CLi>{p]W0sX79Ǽ2!*6cZ? _#׿)C!" O>9! 2A<;>>D 4Sy  -N̓.Nhί(AOŅ!Z Oݗ/2DgeCbq d$SAm8 &>7Pǹ}ڎ|9 k ,Jq3 C80 蟿 ?b 4~Cdugt7(k1Vf<+ve+!.!"l2{T~~ex2;8Φ3ZG/^ɋ] :]_trpNt5Y!ŜǏo18.̙[?` y鵴Y4c.CaH@|w/L=yp4?UJe2M:ehRy1@O?jcehΧ wh9;9H\aΥ7RWG/"<9 řMB~B?`& Of<|矝5;deyF)P7t9rOTTfًB8ۡ0t B6ɣԥglbAty c" bDQ9 [G!x,0R?> ?#v r!<.* C>3[4᜹.kÃ/DiƤ e! ~z\8Mq$'#4bg)* b*o1Y6]-_ Qr#3 :Lk׮}2DKf 2:0Dk,|̘Pс`xFzDֹ !C'_#d ?c"-3-_(:E{wÐ by(12b*)/S )nf ̗׹H.Ёl1S6 35?NA.Cq>UWԅ۷S-X 4RV獳Zf,DDk9|!xϧ&W$7 {iƚ|6:r~8h1b0t!S+s % koaAdoO~h#Z(Q ?5ses;>'>g !)ï OG/C3;Cuxv4FS\CR,1k!Mߧ phn_/5B  (o xCBr08+b8L24CfL˻*,HgfV=Z&0[Og@e4``9bЃ8/f@ ?͎NxGS@ʖ~^3~͘Y//: B5b (4!@K7f1L z0mP`J LOt;_Ϡ9҇.KTldhq^JDS)UG m[ }lY˗ӂ'a?/3 `ىcG,/٠c7UfdH]w"UYorJS~ze "".7K &̩otNB<R? Oc7QC[kJ$h)k@J3$^ٓᛩdr8-,1O !Yr%D>!¼!0|oA\ 3f%ރX3{^(tRCky1/fpoߐᗅPBߠJNXߤe LWǬ~lxTṕfC0rʵ|rrp.`S2Dɍ8}}<-pOʇuG_~-:<܈ ޺7l,Ӭ0Q!8ėMgW ٩0 FADmY*komod &Hb6◅͐ủڵpz / s`{Ji -`\=%Co {BEa>!On|/2`^ q0BV'ɿ3$*( Fм! 0d5M eh3(EHC'n0ur"6Lb,m?@@Ϥ Sҗ4U0<]聶6B !+BXy,C5#EX +^ Y=9)Ә7 J3e$DCTGs~pp-o"Ā8! Cłkis^2+ AEGY?5 p8ͮ!C ΧL?ύZR!箯.^bAp*0Dta `BnА~0 #:b8%Cel8e* -~]<900ߐ9!$Cj̩jC@zD5CBg3ЇXyh"vo̎b͘Y2P Bdt*95 @oj`(wur挨̦ǁ7fˁWt4xprD^CGGŁ4c&CJFB!Msgx,4f{ - 4cZ_Ƒ5މY b[32~:ėIQatAɐo=c%' ~ɍh_SeaDVfxEC3~wM]77[, F5ล qq6mP!\&L 7D?Da CTC8dRG8pʢ84w(!Bַ  qp+PKF<~I1W0cZ! ! ȁvsϼ<q "_h 13ɍ(c ,h˩$Y8ϏwvM8y2=ʱpYd 5#t4y_Aخkf,3ۚF gҌ }7U1?,n Lyn@qy( I6>C&(Reͤ89˴| CZLflcfl`P,!4SQJO*fٚ 鐗woQS2J< )oN:)c>_Lg~0 ( 1nf>~\NA 7DYk O![ ߹FC Λl9 pPYad6mFC|h̘۝ 衉ƒxyCl/$#튇.iS4z](Y/Oy?M7nQ\v!'yu׊3\ Og j~jQQa[~coA,AW 6e -!?#ќmb"ۘ|!@)MƃI#,Xov2%̘{s&cv]*jwi3F gnȑ ! /z8;P<$!Ά2ɍ^j23fo_ϤNPB,H wB;(&k Q`F'gtOB)6(?}eh Q1ӑpa:u2ʌ%İY"+Q~" w&52bÿ0ޘ8KB&m=,g hFA<`"TebsQ1|͘Bf  A۹>xYi(y,K《8lD=i_RlP2DɍXLv}@ ""(`SNUecyҶlf~& 2|h$DY `X q`kha1|8,x ف)Z-?߇ `?mϙ"dfӾPC~a򊊖!̪#Wjhct1\'DEOVPrkN? Byab xé;ɍ1!w9 NX×Ys>lAnriϯiBT 2|3}fƬ'q8S޹,}QޱȌaM=jM2·c FC %a(r:h~(^ ,_DsZ34L#4Q1-7wO @ E $72DAA>$b+qg: *6ðb?{I0pa _7Dp+ _7Cdb[>;YONG ]q(lHⰴFڣ|({9)p 7fax^8?(j`0=.D(ّIe&$hY3bu n>TP8>:C̐fQ8̌D;C!^F%Bn-/phei3mHk>CocJ!_-C{"3#_ӥ!3v%eɍ}-C fb8fe1U3%CsjNf i{!?9y5fWP'76ęjaxǁ8F=}>F~"* @Ҽ UP&efڳ0Œ >bo !bD *,ִ`Ủph1DYdp4cfX#:)I%7 bc _vBahKgk@uXGW3|D>fA ~VnoߏhzBHX`iC ݩÇwCW7h8:V`#Bu:7D9Q~PK;+04JÐ65(Н[1ZG|=t.4CK~(h-up$0!ߐ I(¹JCb}hŰCpTx842|$? 3NugF+3n+eg F| yC_V0df x7~X|^ w3q>B >6c.=QY<М~xD0v!6c1|Ec== 1!F;;Mމ(C3 ~ӌ 0kG L~z5'?.r !~!ǢȂ 9(paWx*Xn\ MM$#eNwD0c;3T),\"cx(?-OA/PAT[wD-C0 =kйq)QE cB| ! D\e7Wf (FRWKf{iu`;d%i,|D0#"[;ex#aE(UNA#BP!X.۶BR%띐X86\HcE%1!a'"7c'Gګ{,m;:swZYTBf kܡ͙U<ę24ق̘_3ehq'RP'H+TfQ~"/>r x!EZD~b9Mf2))C'܆yʏ#|h !n-83e$ʏۏIXt4;Fdj&3D&[a1-m#|gA"Zܒ1 G>k὞f/v!4*Զ9MeȾC-tp7aƼ6p&C kcOFV_E>uo  qr Ɓw}T y5"7<Q _iR""?q:wZT;g^=6@Rh@D%j(%>qk Q:8 n4*tߋ^qg'tSos~ dgXU#;+F}gi j(rRMI, !6c>v*܋c(!/|'C`jvbT@(%G M`yCj C8 %pJDӰf +&ڔ.D(H*ܒBڢe0}0cc!Y=ф湆s[Fy̾Bf _llNoݸQ&"܈kċ M!CM{ Fѡ\wLUP%[806_Aݵaaf2 _˻ĨZ޸qwիCL7LavչP|^<b,zth/a?6d2A_~،amoRQ(l%ýQVCa <(zrט5@Edž)2J[VDaưZɋr&2C!OCŤbޙZw|CT,AD^gRli3$0 ~J UC5yd|kAB c3!s ⚜! ̂a)q{{aOMn7$7"TUtC.ʅFƃz{;> ˍ*{XCa fn>BÐ8dĵ{WovkpDz奛E% eC x.)Pih_wmyw*p |-cG14ڊg/r{wȫ9AIfưrse%y4@$RoC3fypݫ"_s7n14$ex>P y.Tl߹F',o\ GiۂFB-!bHRnL[[ C"MS.TW4D0~Vj,:%,rƒdD! 1Dl]iKU].#Inl܌ Wq- Jȧ:.!WpeN_Nt(r<(DA!|7yU4T벣ɚ &Ty$ûΧ0ڥOD(d&hhֲD%'~49LICxTMwOU,VDn2āYJ^w; E {|RN:Sq J~ C{0Z.c:QGA_|!)PyYhz ЎZD1܈W{ C$nh܌Y[.A#b/vV"S2nP,qe84)X/~ y)zu+{r\ c7F§OYlUˊMG 7(#HMn6f ndpi3Qm8(dC2v)FA4!CЅ(rYFxdcGwa,'à^m Vŗ޸|)pL*m78F")Ckr=6)nze6@f \&øZ؜D-oPRKߵQMٳ2{rr)WyW1P>H  2l`VVe\%B`2|`L3HKքc[ fwQH!|l =Ք cwalPi+] $ |ZϪ bx*U|ơPW^T.=~e~,-ç T,wMS"5Cu#Ȯzvnm35ͺ]VWd3{Ҹr?ĠpKtluT7qrjaiFAY ᐑ'o3Z+r J1T F,wѤZr w>X.KZO9jkRs7/Pug{a w Đ12r@ŧ4NC mQ2ԁم̘3>cSzE$7 '=Á x~/fƔ]q,a?q޸oH9|%~D 'ĒaBu'-eˬqF[ya,o 2d}P!$4Ix~ @ CELx zWRǏAnW@ ({klyd,aN:{9[ XHT/xMQ1܅ߖGx9(GۉDs="o ! F&_N` eU~#تȈj#ݤ_ĭ8CT>m nyY15~fƗןd6D֔cy܄)-4et`s=cak%1(284I#n8"]( Pa^E\@:=E4#֕~K7V.?] 3]b!>0PH*Cj(JK оh̅ XS  D#+ Ab "'2иIDq"p0a(vN/ V#5X*܌Ӹ@Z(0#!/r8(on!="x[&g+76Cf*x g$NA"']+0hW6]|;wt4Bg\Ȱw\Na݃%b o&%7bM3d2a VL=f2'K3 *Plv8Jdxϭ{UV߸"JnJiYS1atm}7ء]_!6DC;=PӤOè3a儽Tٱ$ a}:^CPm2jlbpBerVNfam-d oҹ2'"2a$ϚEpAHv/!`1S!cJ"7(B5 ZT5:spK~^z-W~B@CxH{y! 햕@̬Ep x0_O׍!2&"k%P\,&~݌-0ș˪5fγ,, y|`Ft]@& fܨ" ,wc%Bah_h%<7fL3Q欄 )kn:̗-iX&"!F򗜥FjaYdܢw5US锰+1 Qø,]U:4)VB D0ĉ2yU⌆zjT20*6/6TA*ce=y.µe$UfuD1Dn^96߁aHKbQO]2g02B${ ieej0dōNHEõ|51/뵒A,Z/ P&QB2"r nJHxGVtK/~$؝sT^#T(eZ| ZǃaJuBY%PWyZwTC={f`)"!İ^ sTUe05Q`yrb7$rʁr +QĺlMѩ B!<0 KJk.`\,8^JqF4", ^ f]pC~L4.!YKIZ7; IV[je8kֳV>+=fr^tuB/ڊw|+BJ,ic_d nfµ.`++GڗVbn׆ɰfHD 3 Mr .UvOP##!V9dYl`GlJ;zG ז:ٚhak r'  f.jAnb'IY aH77]Ko,uYp Uz$Þ`J6vx0FiJz5܈F.%5dvah2se '`fuC5vֳc+vqTKfȨ JDnT6Tc& W#HCf䓼btWFTCWks&*Waǥ`]5v,bo(FCS Bw%CU [01z:4YIhWz[4fxv_LP y^Q3:f7I*M˚eC﶑Q@ ahadZ\y^E -BO-7%aE^L e2LYC1ꔕ I+jӳsB1fdHu6CdM96ɛpb1eZA"t=I {}Fфtb0H4BA om#LҊ5DwvaVeMoop94cXqI97L-@Cm>2'*.#QPp3yyCQJ3o!)Cޫ(6-ڛ78 ѭ]P5`x,

* 'ڃBL BM7G⺭! 0cFT@qA' ѤfѪq(z#!Tɚ7uz &ouY0s7.̄:4D1MbqU˂V 0㘻IQ,jXV6ܘoFM4DXF5rPa?_u&ȅ I`1l#9arՆ0P{#qjZW|m Ԥ E%/kZnmEr*ݮmC5da'2h-eZCJoRR4+x<11ߑ}-^Z`@B쁝>%Gu$ex;*-q:?yZ-:?3!wv>$R#Gz5HYgyxojZ\5 uoPoPVQiL9) ae0|DsP+_QKmNمahrKWb{I`Bjb%}bbIݡ.Y+7on A/D3c8r>VMP{q%^;Z#$Aad .9iej(!akT*۬*ypbUyMUZw}Q`{*!޹!j J< 40ơl$ĭ[ԺDTC۫TfZfƜw-ٸsxedo&QL;H<6z׺ZN\}uYyrAjRPQV,$Ĭ-L $(L~w-U&IyZ7حMMޣdȓ Qj(6"'I1\Snj"0R'F&ݴ|@uV_ǼC,2wr-տ b֣h $157\/Vn~Ր8̟tƄ!JkywlM87T+k+Agχ!5' H7;au`U =D$͢=MbQC L:3GA/6õmJX6-m%8U' u-J7⎑nr/dF wܱl`f֐ݪ@ y}Q_CUCtP-ݨmccexth[tM.@6KMRl,1C=Y-JqJnލ+Udk-ݠ]G&DJ2#;Zˌʬo_(]?fKkY?h*ai\`7Y[ACtp)sfv]qhTKnou6 i.: ~M 1ꎸ6Y')J.C(AN]p4nӥTfoP:݉=m^"!BŀJOwyF.qP V{[@U!*Ls>ΎdI$tȃi`)V:ep)cN[Tz`lG:&QifPJJ~Zu * `vn븤{Hõ5I֠qfJ4aCtQx n]&8UYަwDjw61?1;8Ix<,; |!NmPe4Mfm`MNpW6SzK,rܡ7w<E?+bֲk [±}=e"~C] 7teea@lM6gyRBueGkXURp+[Dn&]ud14lIvv.,xFHee,#-wbJP[KL̀]фhqGA+_ a(DVmB ݼ~f rNኛ/GҌ٢%(R惽QmrpbIBm^J1j w'uDG[eemۤd2n_ŋ`D7*&HNJl8⻃ u>CL1A&\ָۭM\Ėsw-dR6TCz'@Xc)`>#}K_j HZ.B!Ǝ' R P:VliYI޸-vxIy#bi AEuuG42 9呒:}!@!g^h3nH0g]&9nZj>C'7# qʎ&/L$髸ֱ3"!ݾC[Mf@Ta>DQl4ii2t͐JE/ȃN`n0U~V @Y5(;qveNiPJD1gjؗ( A^ɋ-?굶_A.=Mk|U{̇wJZ9Н PSb֦.#>!ALKr 6nvdhg-Ζ< (C+<0BN/-ۊFjraw'2AjH).˲]Y10"6M ah&Il U7"LnlZrv~ae! Bbxȸ(rhjdx{ÐQwt%q*Aw!Pr &U[T&IMtխn-DGS1;E 9+CWlW/h͖>l)*;C.erՄ2>w6bѸ8i2\I/?Z(K&/x=ٰ? Y'"ezPǻ[}x\e-z- DlNd]6ݱTRcUrIuP X$DX+~/vjh|;'7 Ӎn+rJt7|$ ֭\dmn9%l5M% CrI'2 is|l{wK;~kڤɦ:? AHIPTZq7V4|[ uBʖfXS- _Փx`Ɔ.J黪BiC~SbAkʕzbX:eAJU)?:>;9+TC{ѽj⎤닟3Mz>Ja%(,2* * rh& a"'I+" NX(i#L- (#*YA|D=hhdu YC,d +@M n~BT?c ,nm`PdAnjJN(ɆU4GY M6b&7W oD _9Gn'< `'̃^ `n!ok_GUo :^DtB4x M70&&?.QQe'&xBT nQ%0[Dd(u(zC !tM0{,3  Q,rs&Y ; xȉ`+ *3"`gw0 gHz?v~Fc%R1BH h\eYs^")痈5N;B9&{مHsꕈ4zUg`똑SM4Y^77wK OM&?&Ge_~ise)Y:hw~^;>"[LKş꜏5˼Uk4UK],ْS:k~٨d yxPoiH#ىkZyOu`J/IjY;ɡjZ?jT്eN+u:jz~dꘌ0L\6[F\.o}#K;5W튠WFmiX@dIPT8d'lec$b8uj'c*]I=mkZx<ˤة>vYln%ޯ@/GVlmc-h }cyJc%}g_ Aa`r溛@N/70wۗ"޵ɤ7F/@{5NӠF߫] SP#[+/eEsJiK{Jͨֈ5ŧ5~,Z}?[שVoTx*N~_^5ն~_+jec~o_o rQʯ}=sh&)?y`t% }E߄*~oA#MiFv3[[}v[+t3ָJA*@>`IcbIOHw[\#4+9м'E*}=N~?>*w:%7pP '> ؟W4lw ĞQöai#,1s Yǭ&g#2ashk% .T՘mac{O39w2y>OBsTsaޯ `N^oG mnʵa]Zj)רVfɔk}Ѱ"[k5M T倽~eQ _YTWՀE5l47Ј/H/Q^\^V= >a|f0)yG5bNg5[w7Xd=kLִ5,/ cQ 9ˁg-z+y+ay4/C+2*v2FK8m3Vя_49 cֽ_O{Y ǗO+@>O8izT{99r{;3<λs\]V;U?}=7}\PSF&nt589E=p4ĝ}J t_eV^?cgՁKWW1cՅR׌k<<%6*aG?lAx،!2^_6FUտh5V#VGiEk~raha YYj"3*)~?jۇeLe5-aۣU6c5 A ?af1lF[R~jtwTU4cArcDkAudvwdD右#V'BFG{ΙyEk~|b$qS6c5fVHF5^eO3#By(P@>d @Q##e"Y5-z[iH,7?gj/.yUV* YM`XaBVHEpѓ?P ` ׌ ռׇ8?1xA9)nEuffz` c6i=r_As WqD!vCX,0xQ-¥ } 3>1ZDI<%ԓ Xs t<:3Ƃ-1+4Ιw&3uʊ1c&#~v$oTΒ|wh ͪјLLSR UD#ǟ7'!i W,PXYqmQ9@7DhZ'h^%{^>yP,>JRRitҥAX,rܯjs^2gx},`8c3\[Ɩel[Ɩel[;;#T*cuyo-2.1.0/data/pics/mdEgoV04.xpm.gz0000644000175000017500000000410212412223253013744 00000000000000ZkWF_Bd[~H1^$2&iyrLj[&p;;+~Һ=hwgݙvm\!?қo=Nݻz@˛FURy{ҟC~ כuaC]uZpGmj68Z8, M3*FEŠQ&EyuJi D*З^ N nOK`"Rc 5KQ>VYEšR$*#ʚEVpa5*&Gm Tڶ\eqrCQo a2尉U\iMۦ@ZL$& k 4p ^DY7p(D&3Qº41, UaY8zVa㰇u[NDa}\"OqN 9ȡU684uh ?hլ[sl/0_rh7X8j2p Gm" b&5"Pet|'4&BA10l+va>/8 q| $zB_Ȥ?eaOQd(T.FLMD8ٴh8jH䝉ɶ-EljX8M+e38Z_.a6E?Gh@ qkP4-BմL U0u12bEbM YBADc4d2 LC!Ӑi4d2 Lÿ#l- EZЗO( xQB?THz|AX]{>*BON:H9<<J i}?"f+P"''!i[OPN=9VjX/ \ĺU//uBarfq~G(k$ ȯ6+Ewjey~PE¶ ˊ Y_6ڑW&w B<5"B5x+2 X8?`JsID*ʎ¦)m΍Ebpۚzwm=}o 7%o![7xǘKBC 9>$n  2bq81;V].PݕC6~O (c,mضW0pLntev[iO6b`)a!E-xSB /%~񪀣aFBp~R /##m@C9JhAȄ%a?dI(ޒ\ s6J/ӨURҿt>=DmtQ0pz:ϢewuJ$S =x QO?^W !r#\1jX,;T8+~;8kI.ڣEn49@z FQ44?sP܋ϥ\!wE\w0Msۖ :XlZq|r]\` FhWRU| "1Ȑrb]@ߝ߾wh fqqs Bys;9Ymx.>a^mww[r{<ۓѐ?,Wk=d5\qvH*BfZMgvθ9j{Ҏ%?呹VkZ+Kⴹ3;(sf$ӓz ԰~!Jyu>ߑz8Dbn ܫ2y w`D 7N]J!e{|;8~ mِJῳLC!Ӑi4d2 LC!O+%7cuyo-2.1.0/data/pics/mdEgoH07.xpm.gz0000644000175000017500000000376512412223245013750 00000000000000}SHϧے!ecl/DH" lZKEoOmBKޫnu?ӣqkKݓD:9?&-IWWǗ_%oުސuI}[I:wpN M]7\RoM2Z[\A:3u.jfyFi0и\ΦU-{MVyP7Dںg4\QjrA0. ! (k:ӑj E9J#\E`N\(5 \D,KC:歂\fb䆘e5.70TjX&6X1Q ml 8#]L. eg8eYheVDii&NpeZFE-\D@ύ(ϥY5b}dFC>ZkFZ K:tbpi(Fi!J({u.:H,Q&27p}hm1չakҍE"NP6ͪhc1AXno"o '(Vbky۰:BBf8J%$=CY.l?Dm'Ja@gj3LČP 8Aݪ~Ӈan7*0|!MMC x*D(uebGAVl%:?3v9.]Gx/lIk+J* ؒκ3 QIGU9{y{cd#e7*Gΐ3 9Cΐ3 9Cΐ3 9CMzb;HRЍ; CZ./ |p|Luw8Iy^,u]{^7_{X=??oY=l^D$ d\,岮˽"5ePXV(d]hs3 {=AyಶcM^@BjŲ=YufE^3Pt7\`J. =^JʗT(@uSJb(0q! H Q""Q{;A`)8CŖ9JD(B+ňӾ}y&};5vz%y_3*K[e\(' =V削B=wK3lj40qwAqyฮO(۫۫ikgQ01 g|8~ ~頌 ErC0 ѐt!{0>0PJiR,doqw;d?Cgq `0!0\Ltϩfa\hgC9Ayܹ0x>S2h@P2L4h0F& k6 ]ãF@ '/( DX9BDoXF&&5Fǣ" {cxTƴtt.+)˖ D| XF370-r ku21,[ru)߆"ߪr˗e!YL^&-}^ئW,VˉJO;{W1Gmb~,۾Xql Q#t* =aXFAXna9 [aK%{!p_" ܸ 4mms^ZYOL+tY=)'IgM9oZrx0{@'kZXw,c#l`aގgX{ky9@^F.G`81x{&DWO1@<Ԩ~0AQe^ea5!a je_z6\]˥3J! *-N`I\6Z5cQ_Zu7Q#|{mjo٢F)DXϰ{Q1LJ/ 6 %qT/~-y=h[Ri+ۘϓfZ9j^ e=QƭD)<RbkHA(Ss)=Nc͊qvoY{BAHzD\i+^_I=KG&ݯ6qնfuߟ_]Fp7,9rkksjKa)M%u?vI/Cj侈h 榱P~(C51 e'$$9yCpqYtp~Qc3}`K4ecHe,9auG7ֈ{wӸ!J(NOaF\B UcHګܑ 62::hl4Դ::QڱE'V6&Wu7ZGR+ӝܬƭl,xSQIs}M~$&!ڇW2i/c7_jT?f] &E}j%؊kž Wƿj֚H#jO׺= w+9ԠHqxRfmȳ݊މ[vǛLh{6Z]5쳡oERĦsR#*ϿMDJ"Ulsҏ2T|#̈́OU\lKi#\P#.hv(vcOMu#Y/Q{DY[ZQx&j\/qy.';<͏)rymM|k匒* 5%8mo:<|; w }w?=|ӹ8D照JSY--*GO 7~^ƾ3Z[QR۵0Nf޼h*q™͍?Re\]]5C~(3XJ5dsM?Cct?Lj wh|oS(Ӗ_X#sӍ?պVSTh QzA KO~,?TDfwa?[R Δ%㺚`>}닚39;'sSWwlm][RJ]qggk3%"cuyo-2.1.0/data/pics/mkKolbenBlitzGruen.xpm.gz0000644000175000017500000000266010552021505016175 00000000000000Mk7³Rx@˜@iv!͕ts80tΜFw^ݟտ_?_׫o~N?.)?oonoi),ŷ9vo:`OI$>BBeXL M4U誚sdO>c[G2b2LqbE/K4gާrfvsVn5]0XMiU0T(33d3;k!ժv2g({-`0n!uC5/E#1{}6?̄T#4yN#.|>'[XG0I( 6z1*  ̾\7o Tlp0 p0 V^i< E>WQdL猿lag9ׇ Sn"C#)CA:/QmP&T Nh4nNQ0&ĠV^侜םCkP@Z.w8LءCX[ X(C0Z;d8 :X ""2PyXw98%2GvrE#NH *-z`A RDZ# ӣDꌋAڼv'=!4◶ܚx=2#'C EO^F1Rg_^B;( e nv`Xi\ny*o]hH.͂g!e? B1P `-Z{ځnb0Es6ˮ~|ĺFČB@ `fhy \ɩ$%柳>i:qN›lPvMIXy!WΓD>@nSV흳%Ū6` wF-VaQ?1 &Њ(;?sBa}i`PrM1_]0@zpޞ6Oj Ԣ_(II8k Cv1&6=Y>} v'z# dC֠8€]c@sԆ|,ʎ S&}Tk5&&[C)D}51BQmju6/h|8]@'P11ؓLndmcQ9(dm suVx/\3HNNv>wôoZWHjHZ3$) HɎ霆ʎ嚕NeXLlYeCbalJe V GT3lA%9*|?@c(#  I \-JLneg OLtW8^OtW8^+H8^2V[g͎pFHZn̏LbsOyV92Ra:cpwԯ cuyo-2.1.0/data/pics/ihLila.xpm.gz0000644000175000017500000000044407550521112013630 00000000000000F=ihLila.xpm; 0n\UA "|Mj_&}Lkya>nŽx:uWn܈mZhP`zدYi>jwN e9ʒX2&e V d*Aޠ+b  a4H [8 IID&@0⬀$FCd: $,I|)dEeH4~e}(YJ  ga^v& (w;'UMcuyo-2.1.0/data/pics/ilKlavier.xpm.gz0000644000175000017500000000235007562250351014355 00000000000000YL=gimp_temp.2243417.xpm_kV@SHx!icևne`WI,ٖ-EVzNUrb?_}]t~ۧ_\5̦?_>kt{r:"O'7wя1<.Ǘ7ߍ߆ eax~9}7vp:FW0M&Fa QV ° g70~|Vg40 Û|<7axqq>e*`h8Hb q4iӐW0r(MГ4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!oa۷b}jCŅV#jx`qiӐ!OC< ymߥ EГyg׸n4iӐ!OC< y4ib$LidxO+F7%Z再OˣIYa,bӓg44Ӑ!OC< y4g[/|;divȪi?=E/v&pس/Qn5\e]3<4iӐWml5EՆO"+Ug00T ^iȫaiR5f:Us e]8cuyo-2.1.0/data/pics/infoicons.xpm.gz0000644000175000017500000000244612400635053014421 00000000000000}GTinfoicons.xpmKoHS2qlΏH`B jxÍb ӈAd 67Vm,C~ e|A] `Dɏh q! c0I?c쬉%?}~% U?˻ j `7*16$+ﺮ~x00ԢĢ2AQi:ЩtWڀ$ Jԃ*Q1 eծ*ɡ:.wa'I0. +pt0mT>fhk$rK{Ȑn1C "z{.Zљbzʙ!TLu|M7k6v?5^ 0 VUC;?+R*Ҷ!) F9FE/Ll  %)4RE>AúW_07, !R3T m"X\%N j["cAC)P#qlJ963((|S Ֆ5WsSYf"5_LbXڽ=r .`obۯTo:kVڍgu$W)IZ|G^Q~a,g(H޸PìX5dZr,Q7թ :e !龰D]G8(f+tt"D. _6% a I1ē4N !2b[q4G[LD^,ޏ$J޺??(OL9,sC9Ow8DB?d/H-dO}2y!̘56 F06[ss8(QdsJBme׬%qs/=Kq1=/ʀQ2LWaeXV߅ؑ&@3v$%$[VaeXVqv. Ccuyo-2.1.0/data/pics/manKoepfe5.xpm.gz0000644000175000017500000000527011646353246014436 00000000000000kWZS씋JI\*ťi Vjm+Ofgb?ٓ!ҐK$Ŀ|Ӿuڤ}ݓis"Ooƣ$do7߼%M|BЇĆ!#߾CB̛̃Ÿ<0/Dyhqp}p]Rls„ X371-$9 `XTM fgDg3ˆ9p` 0Fcq,8`0F<L@f9lU0V mG9p]("&KJ2"`Hyg_11p4؅13&&q(xc%"6sr^L̄MlYq~&f"*_ 9[u-^#&o1pb fEpb3`.x ~܏;~폃> ~G8 >8"8:vgp{ 1 x}#HJh82c&#Ƚb/h~)_?F&T1vY e 5nL5gAL>/]4Bm]:DG.'kÙN'6וX#o qK\xo275e%tD{0dX^B]L )#k44&+*H+ /Řz1^ĘŚd{<Ʌg?5}='ؙQ/\ OoO42=c]|}љ_3^Ń1`n=Uy[4Ua۪?x'/3xb1G\5ERohҩ].55vV#B:7#mtF#6+cm]#?S X5z)3,*ÊGAQ0FtT4,ʸAk6[j0jC>ŵ_gkyoo)S$eѸ'h׊?[ 5f,fMI;dK:hÇ5BN6xu{Ezh޼)ȡk BFiA@҅hy]*ؿ1h$mG#Ue4oօ1~s\@&L}t15mΑ@.kc,RR*ϓc]uR(siob}%-m#ͺk7cI*45Ykz]_>V0 +4: s*'{7xGyWس qXG{X*]k]BdTTqv"X4bt9qb/jtlkIw#swq9Y M,'1aYMVS ԢIոwz:=jQF ̗m. ZRi>a=bSߞ7J_;k" uF! Cx\{Y\[O#BEƞ1Bz@";P:qj|Y= 0 mCqjzJAZ~zoīhԸg˟~x{O Y1ЫI%¢ѣ2cԞ[XMS^ʺ?Ac8q-B{?=7F^Pkt2 s3 BRH3@^S957ONsԇAGK^>XxV\b H@J_gA~pUc\׽H}^ԆU"h7h?cV/yu2gK/2/U\n_ -n4=q_5U/ O$ix:qZUsu2c(ݴ󗙆c8;Mw/3Νlʮ_֔r9Z= ^ 4h1fZM8ӐX1U.m%]}n_=uXs2e*VKLF#_O5V<߹?2.-e&y<[?ₔ\璔S\1Jc#EwI*RcX\ wGQ&WC&sѪU?]QM{M)n6~:}򎺈mng NuL,,F!w݄&bxTr֪;$FI2Ti=k]oVg?AkjV$cubˌeXLnpXPT@sêAh4}lF='I壀?P%鄐?fD?vNr0 /SerԹT2+4fV7Sʠ1 ~JiS^َX]cZ!PڭE7/)'Nbs8Zz툖ePη[7⚥Icuyo-2.1.0/data/pics/mjZeug5.xpm.gz0000644000175000017500000000243311043161242013750 00000000000000KkI º89Bثoq!`L 9ā$%=tT5l]ү$C=3/nW߾@ =~y{~^Wk==mscyanޱ.]  he`Fj&:I0R{KV eQƈYVSd^#دt_8=3?|O@q27Z{XIG!#0 rKӁɹ+od~QJO$*8(0H0^-tc5c"T#RoP!mVi_"Bd'R }Hoo:DaswGDt 3W,Q#;|H,ڐ#*B9Ew8-k)#L-n񻌸ξ.uyX 'Ў8>31.ZiҦp/p1( R\ezD)x[n2s2H Slxegc-*Bv+AA) L!Ϋ#[:fG3pȀ x3;*T'Qns}qw25X1#Vnp albLm!`Բ82z#!#;Ep?R# y᫸]Ym6 XCKFk.:_tg0͒5 |Mg3P@[s2?R[uѧ A#DxJ~еWP3 };DuY_͐N7/RSx{g5m>cuyo-2.1.0/data/pics/bxLok104.xpm.gz0000644000175000017500000000556410361553650013750 00000000000000b=bxLok104.xpmkSۺ+B$n3\hQ gGkI$έrxR^[ҒibYO?= 띧zc&37VKq{O=:DzOgzrC-\o!Ew+$HCȌi4L2,Hr 7t=(f;UI3j\ʻ5G1M^n[f2BY1LkB6Ț,~!žn5Lo M\s&G'4,l=ʬ1*~Y2O!AIdw<4Uƭd'TV ۆ.* y\7Hu%H:  .bEB ޕ<(j,+\ƚ6ZTevo ]tE\(vݮ>ѣ[U񭷢]ꇠ؆ZA]RTṳ!|[3],}O&jO,ߺK0̙(,ݑS.] gؠlfݭU+@:w\y0yͅbR lY*RY.JE,| S &-8&AqK@71D̨&bF53QMČj"fT1D̨&bF532ӂ{EhۆaJ {דiv٢$l-iy GwZ3Ce4JKBd4-N vϔ.<iHá*Vz@6Yk WӖ&ùg4F\$xϊnc#RFVRѭJ˷K41;9JFuY+ءmKѲV1R]6ĵ60cwHgA!wDo8 Ă8F Uс6a(JM.")+K`LO_yq%EHOnF RUojCiFS&AftQXp#CMk^]cU p L9RSHi J J Yd;WEDȅOڐK;U,i=ƀi(}OJO"..YZtEg9&,&6oQت\Ɣ}9U_`>īH5)U i w HwH w"a|vIN>bL=}v#f|TWܛ1ތH~ xCiU3nmmn_ ?_x'88?%1N-'ٍ8p zF2/3"zƄK|?g.GpCq8}<0mrfs1s!Y;8 iOѸ3/,Qfj_/a~,^Ȋ]xW\eə8Vs"q.;(@| Ϫf9h͙ȅ#\V'񘝙rfvq~CsϬ>;>iC#ܮ_U?q-0]ugfjN }jm\.퍍2ZW\5N__c:OtaK`?_\4SRBt58RL хƕ$kHjݱΘ:h8Yb!dU&nedx\"Yʫ\r'3wóiOgi $@r+OČ$s&&՗J oLdf\Th'`2#ޜ;b\n[$lɇ3m >:0eD+<(g.Đ1l\;U2\UbRl^PcLbL'E 1UYzqzS\$l2+6Z)9&d)AMZS|>Br7Hrf]89f K.S6=Œ[mm/Zr7(c$dfpv_Z57_/x /ϥuf1!V˷2O|ye|#qH6~73B \ яad7 @d8$=>9)جśfM<W1Bf'ާk<0>^_f@xuA_T3`c)>nA>6Ort({ޓwYO9mNB|6ݒ=C_={{0"ۛXG !;2"f[TeVyy?$MGO}kw x^Gτn1^gt\"$ >lfcסو]|ȂM ' q^秏VB]G׆0VY@+1&+I$>Nn+c=+s{DŽ}wGѳq m6uyCϕ3-1%c FC?7e9wAE);GctHZ&Nۣ%gd<}FB-ɇ'R;!?a xHI*1aɻcOY;PpIcVy=ĦT/@ݒ al+@X4aqkO'^1'2l=^X֔6 5*Zw/#fT1D̨&bF53QMČj"fT1D̨&bF5ߏ++o kcuyo-2.1.0/data/pics/ithGelbV.xpm.gz0000755000175000017500000000111411101102052014111 00000000000000LGQkAǟͧrsyԖX+")>DJ EP-A63۪ v.7w߽rw˯7+><[=~{ h o|kIII_sZ 8Ԍqh'f#B_Fc4Fc4Fc4?c=eA4avGjUwfwd$* &C]TM Uݎ2JodXɰah$euPeP}1IȘ6|o 7'Ed  CޑoR[ʈK#C&qFD`NmjX0 .s0x)}(0U*M\ۃ;tKw#xd FpS]l6]el3 6]vFsn"ZmF-[m92~mi6R]Yxf|3e&;Ð-i_vh3lat<`rѕu#stdAKfً&{ dʿNvb0oj]Głrde|1%/5cuyo-2.1.0/data/pics/bpPinguM.xpm.gz0000644000175000017500000000161610361232217014150 00000000000000`CbpPinguM.xpmj0ݧv}!! t mMCBݻ,4󏬥 A?yY!gW?nz×_ן~?~ҟ+z}It~Zӳ=pg?͋Clwkaf?ѫ+ץmnqv:n+ na:?: ^cq6R W2t>CY31{xX(OGw&fνt@Y Qt;p~O/)'<a x8'/v ~?$xQB`BSB!O/2A*0@;t]^p x29fv8)wj=;R$X ~ 9_"."h 9xngZ#9?ũ =LC5t 4[9, ]B%E:2`|tBIms8I15ƙ9xЋ6GcPplKiuYa^_pۓj܁AB/`ZkaKΑCDn7s IN)xVb2VI bKʳCshҁ" 0O\/-1<䴅yy^=u|?w)]ln1q|߬pK2cuyo-2.1.0/data/pics/m6Ganzduenn.xpm.gz0000644000175000017500000000214211672457345014637 00000000000000N]oF+Mkh ovPU!x$Bgs8s[p.Np\Fe v:ntqDtC-aaLC-Ob)MR񒂿pQCKJ'A?.EJ'!:gQ,:b 7TMTe/#W|d x$w}8=` y܆WyamL)' xN'ӆ/ƙ>}gCs ?7r$Nɑ,6ŏrȠhFs7 cGَtP](ixNO 鼁}QhZ9ZCVPUjU5T$95X*2HQ^`Prm^i(8:yVqrԽdWvlW-e^ohYKZ`7AKF`/6(Vy3C^R`77Z4㼝Aբ 0_ƠRh/ e Aa~ߐ?#YU((AnxAa$(0?h:k^AȐnH Qِo!s%F%^٠k5hutO AVRPA;PVkj_Gd y&y |fNW_s !L+HsS.+ֶd:Wz%ա ,_lPu fE[G ?onȴ;9y+CP,- '-G3&om8jy3 îJpb8?8%'^@1$cuyo-2.1.0/data/pics/mdStein.xpm.gz0000644000175000017500000000555012404657520014043 00000000000000Ykw6_AFD>`S"Iq *lS5j{irڎJ~r,CBu=tnfpgqI{+Uep{o? Up+xq^p~z/]A0BIja #ba((𖅱HZFp$u {G* "Lv,L_"T~PQRXxBJ4GcU- qı-Rna0b9Œf,pPa8CB.XbU1B&#P92XT |i 0cUdԉ y%ՀaG!gC^BU):Xp;89}1%P8BAl.!"Kga&D1ؠ7I1B%bXb0jR,ː>BVK/ɰoJL}A BA*\ Y(LNKa#LT؇EDEVl`45Ȭ.1V%eR{3RW)9q?CHUay]s$VȗWK a eȸ1KV TT\WɡTcUNA$p`XpE&HG]5WeCUƎ伩[.. <" zhz@jɁ{Lć7cX8YRW/ a_BoދΑ)`փBcG?ap64|1V#pw.`]l*c$Fҍqec\!(m`;_ϕES-ޯwsH{z fw.׿kx/;.o~#xa1 GfmϤxc|0D1-XoX'w\I/J9Цxc|nB?ZZņң!wxY~|Ƴۣ7N?<젿GۯnNsR6su~zy'JW>Gۯ9%a!!v$ }n CB)]؍w&N)_@لPNV1ⶖcw`a`k9>G?R)ɴ>0b_J_`f\fVp.orM ݇Sj[جe5)P]YڏUuYHIUdRN+.Uجl>+ȍwiܗ%=\^%v]><ڢS[X|6{8C>t]><[Ӄ]毛7 A_{/N>{ԛ?9Oqgi_c?/xj[͡'QY\{]ڞLҔ۷=1Dh?0j (nq&#A託tZ^/)<'N+%&VF6ITp3oƅL/fmĹY4~<h?m7hx!o~G>6eW%3\005y\Q4_r/ډdgLgt!`y m`AiP9D,.sJ˅J.0S*3'f,Cx7[P5D_B̀[Z(LeRМKûM_BV+4Q@Qrdy\J/4kǛ+ZJr"%4x4L RV{`YMzD~^Ŝjji# H?2kGK3Ie8 3$dJ7ė(T(r)B",w#\%2ྪڥ2wQ*yP}-DM'T0ݚm##|ihJ#ߛZ j3>ģ"- r.5-x49ƥ ~,e@0 WMI: c]d! M.▯iҔJ6E8<>8g؇_Ͽ;; 8O۷ߟ7ΞCIpxeF{PL7 N&2 !4;IrʹT _02|_U=8Cå okkxE&. ) Z~<Â5x%f +y)jа%@IQ"tф3,*8R-3 'WZ0 [Khd\rY#D; s/́K-J^:n3unكjܲ}ki2GIBi*,&>e$7f/YF1 CZ6FieiMev{ w[-&CH(EyĄ܄ nD# )xQ7n xmQ<350/E9`nȫAfBÍ |ޖ$+cuyo-2.1.0/data/pics/elYellow.xpm.gz0000644000175000017500000001174207550521111014224 00000000000000J=gimp_temp.206425.xpm[{s8S $d< %, UWR d3Ú`>_RLتSBzZ-{k~ڽ?]QfsV?noբ_}` k?ǵY{Z|x z k {%[>e!;JF7!;[q+da4A=,l{Rx oBv ص'X8{JކarP`7d! ~c ax]ZC2yڷ+W:I$aS8@+ʪva-] CvG5=쮰Ya}҈!@vY;!>R{=ҍ-wc!sMƖm!Az;A6zo}'-S9{%P4p.3@%㍰pEpGCNXIJY}h.bSe-lcoidU1>7|^ =lj!1Y Ԣ*:aS 2 ,<,$;:~I(ޑO JG$رLʤ_ 7mcSϴ,ЧFP-Osh7yϝ+uq#4.9_( EѪ],bܝ z<.b]!(r״/r/R>̟RwDQNKIg92y;%:ЩKH2N/M_7L_پ!iQB|; }Q|uNlQ/<`K '[qJM`})NG3kc֍#33J맣c[`CbT۱"3N ҍys:]~@jj9%_Y3pdmP_Hbf@]t*savKcm=m?16ʔ?SYVk}uXqviJN:i p:(MnPn:L oxTĝdWT-PNY.P'-j胭57]ҍ8yl,%p,ePwx`5.+өN3t {iկPNNGokO %rPp9-σS #Cko\Y6iIuYsJ s1\u\@'y.%kυ/*}Źs1sq95vL>~)[ ` ڀBtx8嵉p bY0<ďM>HgC'>-9e)Ǹim\9r:bnkR ZE¹dkz1f10f6ֹ?SgƔ= ї{,}:tUeM ?rcC9TD@D xhIIg77sLd窏8s=M'bH4{m Mɲ4i֧>%I֟1KȖ[EGXC~៉nM r/܄b;hh5~:.8~xT6I&?QDb=q 7ZT.ba ?h<`Zq-~ޑEE:9-qt'?,L+A?#}U'%y@&6CAj k3࡮aARh6}с?|r}'ɂ!{RuH_;lD!>[iWK`>w!`j[0-|2O@\;rv1_>tjorp5Ϧй5:k"Uk{:e[_86ZNHӑ\b 7Ճ@ F@ ګ pXlĻjأns03G-@ʡb!c!vM|bqp98g@[O&%`|I?pÚaQi.w^ Y a|rD[鹿^tËSwm9 |%~CDvUٳЕ3ALe?,K?G+*f%m J<>ķG_3=Hwˁ`O>*1@(*{c6(aFKtR|V8YXD?%w?@gi+!N|kMh8Wj Y`c4ty}a曃&q /YS[~G9uz&4esC~w6klXr$JbW^ɁN(%aPW\vd.Z BWj ̘#$Wq \޷ڌ9}U>>NghGcMi;6 Kൿ zO:lv3s`^={܂+ 8] oi8/=0`f|.n#k^Wr})r!ofGxiz99Nǁ|JR˽/PCFNdq \@&8Z|}rhP _8 \I ǃ0; U19,>Y/T "a3*OoՋ}F %.DB;nAJ]ՂC>"p7Hk PuC2zaw,C8Qcc )$ǯ&KGcuyo-2.1.0/data/pics/ieRosa.xpm.gz0000644000175000017500000000265007550521112013651 00000000000000x=ieRosa.xpmk7ǟBxݜcH1g-J1&<)M {wF6ɣZE~^}Ózoթݯj=;|J]<\}~{=p04p(@/ROP f(Rhau2dh #*]n[3zz)P8=n&0wjך#hyPVl[q*ưɻ];FB̀.t]t<_~y ELw L~ |HoFTR!2k! z%%;wV)J=@G"!)b'؅)vƽ@9hK^34QK%Hq <Q.>(245zRP䞡89<ªx=rxYd|E^Ǔe9( BgPLgHw#^\wg 2w3U/K ZʜceQ|A5G%fLABT$} LRT޽!>u{Y_0q~#CtoIqM|A]{ucP8 ޙj.. vX?vCm|co$YfvFdQWx.? &0&@3PZN 7 lA+]Aڦ>t$K1?(.4W2 y_0 t '?x ? '? '?8||$`l1&r*y!,Em7u :ll_:n X^> !lZHb`ŕ} kL{i}7Ëh@StN(wL50wC bJQO0 `Gcp,ہ8Pcrn6ķ7}hݻ"Tzo5]`ܻH)$}r3? Cdo0NPV ̤ ̤qr:!`E˧L; żqϱή<"7Kv3{6J/oQT 5n/޵Saիa,Kj-a >Tnq c* 1N3"[g-8샲W3/00000000000000007tkScuyo-2.1.0/data/pics/mbmKettenUhr.xpm.gz0000644000175000017500000000313111467336346015046 00000000000000{WJSpI󖇴i (ZB *OAPggҖdºsZ7hO(D~צqL({2 YvS2Z𑐣:|C&{f.~kggwog~n+'[*⦘2=wvI}d{"lҚJ\lxϙ f$xguEg+#{hʆݫ;řgVPIϬ,x̳;D x;A2]NzAz!(n<\~0(pp1 cdKQQ1ghG7TH)FՐ9ï?X =H҃ =Hw߃?6C'XmWă>a>CN\?`lz`{i)S8{r&ˢb1J gOS>ŋ=8ˋQ~@'s"3ѽzV\?@,p fY)0~g7cS)m}AzAxEYNA )E"TJdBi!{R?`1GB-ᷭ7b 䁽v F$xx,PNf9W>Qyhp=!=H҃ =H}m7eWgUxXXLpA gmjR`b2YxX4ƲU)=H҃ =H-Кr$&Xcuyo-2.1.0/data/pics/mdGold03.xpm.gz0000644000175000017500000000416012412223261013773 00000000000000_wF-MvliWqjV $i9id˱ !䳿~Px{ެ#73ϬdyqggpjvҳxWδ֝Q/wٿs֝N't 8JvZt2uAi;!g]FC%P:̢jR0 %Zߦc%(->#\(yO_,,•<@.ų(y1E?i!L>JF=jzm~C }/5d];ԡDrtH_9֑mq,OWsV 4EI1tP2Uut^Pڎ|-ݱf(lA$! "!w=Ԑl` ]m$FܑH m(-X=‹;v0xv|dTw )Jg$19Biqqr-1B6h(-&4+(5JǺv.b%k%x6tM$1=C3`s%0Fz(P % -[n#oG,GC=ޡP7=^,,!9KA3m %Wk%C~pӯPb>bd: raxQ]ki0iŵ}a?k3;VLl0 b5X@4/(GAC}AqkO~YHuFo|tFX{W}χa0 0` a0 0` a0 0` a0 0` a0 0` a0 0` ÿc8TכǣװONCn?F],OPOV&\M$a/sVuU&*QBX|RGu}= uʖ*BQ5CYURiR~{ u]r*yR-*1Z*h2Hhfɥ\0r.e%[3Xʂʕ:(뇲,shĥk`E G.Uy^GJUAu]O&>3#dz.Dp [r׎ LrX,ֱ u@!0TE]\s0|b}lͰZb.Elw 8lf,|68+Q8yL\SYcw*NL  u͡n8nF,g=:bl=sBDk$2W&O,[3D UHy:pm)kh`S`luc(aϋ(܅&r v$ma8'۳yQR*kW$#VsbEQ炩?: 㨾aXY7V"Pv%a8? #\0] nT!DmIn'x zrs=u,\3%C/gIE :^fJgq,34HWuQͳ)E6+HWefJ@e6p2bI,NS̚,u'e9: JۢIl8np\D,a y$Ks< T r0φۯZ0<:}$僈'hh%oZυ%#^$z7<>xw3Cc(+L͕/aJy6y!8;GkQ5|kd8Xӈ{4gh@5:3?Cdn@%Z+O=S?,ez@}dnZΧ9䜩 612A +b =9 {rd?GP32+0u3o7SOh0! 6砾3594`ڞr=S#$!a`(Wy!fe?LظGأˆ0%nL{Ý*‰v#Sk:*A]mB{?~ Կ _`ꊪ ^= Յ//}0Kd e&4U].d$<-(/c!VE>$gWcr NO %r㘜$Xы֘+q 0:q8q(bbo3d$ #?T"F'c2U4\(rȞ)grLB)iǹ1G?jdo\giOjy0S TcYHAfk;vjI&tISIGon&%̅B)wi'3nByrV!cֻ-V-ceɈJPDk"z݉pX{SFB]*WQ2oGDԛ3KGOY. iDZs2 '^/ #7;?^0A"78m;eI啖] xqf Qg@2C~\}ZgD콴 q3 ^L0;^wQ1bV~Dq!!Y-#ώ.+KsF[ m2.g`t umdtzyd܎`H+PjVC_uÌVD1 -yYJǘTf|`ɼbrϬqUnP4u{Aܒb&mEa΄iiHQ͈ԙFT{' ;^jƥ"g:^7 [o/T H ˖=G,;kήx%rƼ`8 -Eݎm2*"; š4(šC.<yTJs_9}~g1tڣ y_H֤k/r#ƕSq!fҌl/6&5vif/L4nyt]j˦@qaD jlgm&9v/\!O&4Z w\; l1U$/}(gϞ/X8HDшDub;t!yM;>U0K]dhM)ܵNkNmٷ7|e[{i:2 7YjAԻ}mIjE#ySJMp ߿>d;<%zv{qg y{=X5dZ8S٪!gf2-}qA =+t[4B(YML>mFQFxv@yv\뱝W;:L5̒Ca׀` THw4:BˡsHt[dcI!]-OBߤ#4>d2q<|/>20^B Pq.( HӉ*O3P4<pᾭ9z,)d/GtMx{;g! N nOב3h X 0M%,ND2&딕FI~ "At!G&r"GskW;ȳ)?D,)睌$hpɛg@2i{NuG(aҸrgw0Vc9s5#/dUayJ;Q,oJS:Z( %(&V3.M8Jc#0ʒl!N| 1 W0f>[Ǹ~+DŽo4iCqFu0N} .bkhۻ2y$TGv?QY#8VqrS}luH_N4if[dQge^&;rVG͸l5P8MmD?[O0*1iRKX[$R,Y,}Qhgl1A:c5wzC? /agxx׎߷3F2;_r($[Q.!wƨc~@jN3di7|j;?oӏnX8^6H^ĩ, h!kݎbt[UAD.[M؎aYθB`J!9 y~Sg9q1pG`gG<АD|塧C*| KĶq&y8y:@j݋ϕ̲\Q8ؐa@n ƜژŦvc9By6T`|5)"Гz{BS]2G\ĵ[h}` =0BxOVZmdd^vq ׳uk&˳P>yFɨA5,j3aVsShA,液k -"6#]u!%\SGp5rw8ڧV%y\ye(2!ez=GtH@|i"S0Z(P8n=bCĺs~ JQ2dTQV^ŸfG$}U&ӿ;Yo?DFZJs+ amCv%[`O3=)l*'qY0.O1\jgdKa-2BiSR12^}D?M8BZqQ mUXqLKWm `t,LSFC 3e#alؑD[["ivwKZ\tk-z:H--_lbdĢݐfq|>꠷D}%-q e*+򣷗#FNP| ug3RH4S eJQ4#.zk_v Y=ƕ{ZPP]B 0qdx£TUˌ+3 +_Ͷq!{3T/KYt_b\ rXN˷ԗ-`):#55OQze6|؍"ÐMwk[׾o_d%ftnn!o/d+eW2 +E|r\(.b\j4q!j;~ΊeM>vBF*[4Ȇ 3RyyyRxc-}!'jcuyo-2.1.0/data/pics/mnv1.xpm.gz0000644000175000017500000000027611611542650013315 00000000000000RU*.I,LVHH,RRKMUUR23Q"C%.%dT[V6us0s \zf(Sf8 "1jƨf1j9f"̀TG@BR!n Q3F5cԌQ3FgTSbF54Զlcuyo-2.1.0/data/pics/ibwSchuh.xpm.gz0000644000175000017500000000050707550521112014202 00000000000000=ibwSchuh.xpmJ@y!D[0/^i@+ ;Mn{C n.ovBۭ^޻ϗ;8J՘/Qz* ]ŒkLPdV_X0~Ez.*ʃd aE%6w6eE]V?p#_+`E93OQJ3ftRFLz5-l *aŸxw,uLz1'}#3d6boxY9A^]((<_ǥ>`, +?QJQẢrR޸fy..`FăS9A)7(!A=eN:6[`(Ouqe=|p`پ3;-K F+}K\JW_`( `( `( ~wU9n >!:F_sA]ga BI8H8c2ȸxTx~>wu@BC%ŌщIl/ld.1'tPǍX2p*Q\a7pw>F{x}xAt~~0}p,ǽżW3\|E7Bj{x{/W9y/V͸\}dhr`8{dozg*n@<>/EP0 CP0 g 'm%7cuyo-2.1.0/data/pics/ithRosa.xpm.gz0000755000175000017500000000064711101102053014031 00000000000000LGJ@)xkeJ)rH)hբ9df3?IEp~,h@w4o"[>-^i@f-od7 NlJ'AHG)ݼoQ0&$ɇq1L 09a_sk=`V:h7ĪZ`^K:dL: {viU58F?b?tuGñ0w8Yu:kP;[i;<K\Gyh6"s"¢jk8aPfmՖMՖ4wbA^!-#хQ.B>b n'`pHn' y4cuyo-2.1.0/data/pics/bmKarten.xpm.gz0000644000175000017500000001231307550521110014165 00000000000000ou<bmKarten.xpm{S)`B dbbf1%qխdKcg?nG~s=\=~jIcni濛{3K~%ۙ?ǷUM|fg5ff8/)U&f|lT&%Ka&+H֪sdJ! Y,֪9ӇE$r6W:֪| ɨkdZHn`խb.Cr*F\dX*+X"V/W!9j'XHޓ6drvTP-bjZlU˘yWy'jF-X~a17Z]n_ dNUB*/;6 YήrĐ,bE\B,jDQ!-VD?GlB- yLڰHyz+sNBMLڂNQ%ь/DaTd+*ylWɨTDΰQq s<|ɭRT%^*H0Yx@D5Y*V3XZ/│+ Fhv+K%t(o1OTQ/@%k/dDdZ@5P^eu[d6/$6+%jXT+w*$BܥzsYVJ$?`reuln@r%Z*!=q]威Xjy*mb_+Y,꺪\%OɏV \$[Ԅ-lf*/ZqmL)㟬@zҐTF!>} qrplբ!8}dzD~L__i9ͧYtkOX8LRb냠@͓F~u*N׏\/.g?WVzRԀ(gŃ΁apKH433z]oMy8H}M\w<9QKر9ԏcL@痎k0^f_P猁OT*~}LVHܱyIx(nZ6$tHaʏ߾U]#|M8 )c)ʃ= Ṃ|s>M?vc{>Ae,6'4M1Id>h8b;GAomC>B> 4z[-'d+Ys>~ AvǛ+J9y\fg3[?Vm'7\_#b;O;yǧZ<7qcBl&c bcJ5⇇Լza5' =f0x^:.I}, n;ae\!8tYu`ɘTcJHŸqT$ @O6+OV ?~jdɒvێ&dwg =Qu''a@WbɘÉȧb1{ 20.ÎɣnM<uFـ;e|q!OM?'$66z#Oj8ޢٺ%caGc7g]ASFjwKqV>5,κ2 [~ z,A1gLpʤ@`}71c$"^[4W Vx2q1@c[/߫سυ5{ǡ5Z7g>#sƻYB0q??~??!C~![|ׇȇ( z} 9b}XM1OƋ*_q[V7"x4cu1O+?~c>d2t_kԵ1u>6+Fg\I|Mxȩq \=s jzp2NՆ/T%`80έ95t;}t6,Ʊx3w]: kNm;7207;eʖ~:2 5#Պ0?KS#)|rw:_,j?:0ӂ$~,1l"Bra8%X?Enq 1ud2ԡv%D$ϫ~dΊBN[Wc}֛f?NmMO\}R*y|6/5I*ۿs?oS_L|2~2ee˔˗)/S/__j~̔G2+a 7Fa沎q!GGA/n#T(JE{ѤOϢl;|;f_:j(W Ðef^ry3cJr,D1>3#7 g3Ϛɘc%/^]Y>V#:1xi jCl o@7A<ƌ-,-8B.~2#=|z{<}wg]q|d  U#-.̣gKKd__Ǐ 9nYɶ]DH qcl[]l4\[F~|ͺ5q#Ҍ=q 1܁<)Dub VFOEW\!g"#« \)ʢ~E{ :I޷uAU'/Wpn<  l6/pɘ>E2f1 w; ʨ#71@Na"{#eY? řec sx{Y0&6冠}i q~L ^)qls9w<~uc9d0e_֌cS/2,m?!_^3fԉcr\%tbt86]|vvo?mwG.ˊn74([/qOL ~:MX1@V 6/bwB8\Èm3vIpkƗr:-8胅pIݝ,ⱖ?Pc{8c\cmܘf VE`%>WvgYfǾzc?c/aX1Fŷk5q2fRoۭExqS$<[1f3F9d,!0P-s9 ߿Oqw(Njd}o@'Ɯx51"|hg'#ɵ_kp8XϊǕͭZVޘFCXYG];3Xz(:SeVKM.c6=v ss;@Wd\¡opšS3YqM{ՏquQQt2`ˀʄ n̠0 `g|rB15Г9 ,#VXIdR4&aesBAzcv HX?`N_O]!/qzy2~Ts%ڜtI7ottd'!ӴDnUƹ!X`!';;(|6%F/3=L$ 'S<[tx"%!]LK8U?h}ek>5ء1 ٗAŸ<ת7DL$;mzckƋY?Oqrb꫄٬Enj㌴ísbon530fz?F)}YE\?4>B@h<օ46 'SHQjB,`ػhQ(CBGπ>/ $_k1:(좮'40W@q 7g5׸kC sVV#=:#{TWUf/Z8L{dhVcVcIrFMU34މA4ā~1(kTutno~^3 j%9yc/&op(NJ4!(W?u:X`u:X`u:Xԁ  d+5[N>Y&́kMV<8d2$.wHwlN'Q~K!waqMQn?3+.k?;gE܉P,R$n=80{p~ṫAA d nu7_XΦw?# 3}r7lj/$Srt$v0Jqv dt{Aj|'OצSZj[7 \6 ?_0]_g@&cuyo-2.1.0/data/pics/manGesichter6.xpm.gz0000644000175000017500000000714411613522347015137 00000000000000\k{_*9+X$emRFHbI8M$-o?;,,li3czeaXƺ8cXw#qo ̼= 2~-`)F72T)@PRbYA~OzEbS5T8PD(PknJK pPU%2(An("( (W@$F Q^ SΈZE᩵Ba/P+O/*c+"".RDYP6X e2 ԪSEA tSpGutz/Kš$} B1O2(S P @DP*[ P?U~))J)}O?tBy?q%9M ӡk-vvߢ. mܦp_2ڸC;*K mlSNw)ȒN; rݠ"F)h)s+5x@!ƵaJFQ+B6SH(i}`S t~6gnPG7 0(*; P)ĠAR(@a GBXA^Qh`]T#PR(BA^/)T@jR%qx2ZΞ ~NBkL{=_1%wǘ#EoO+{8-n]=M0oEӟ#Xsc$67s'Wŷ*xu"#m6SpF-YU|[lhA\{64sϛ }ph_37WW7y+4Wm터7OU:4N@$pqD>מw2Ql%si8|%0faJ;$Ikch]VLb;p94Nj*<:A|a\evrWgrոƖVpu{hUBxTO sZo܅TNwWǰ|rvRz䶶r;ʎ-g0 $;9::^L 9nӐ+H!q8d,a?11Ud Mbf] 5ɶz)r$a'1#TX$ -HĻq.7f$j,RZKaKzˡ NKIl+3צca,fJu,NF-տ[(bēsJ b퇟O?R?3ai7A ` i4"AVL jWiHϋ!{9 ' >7P-]R5_4oYɴr/aȖvX +;%ιF9B? 2D<>>|Qb+RO* .19Gg999c^PlsC[h89‹ܚznٝxSkKO]zhl[p}_lv{ qH IxE-1wO]lَcL3n37pڋBnDq@ 6J2_R\L8W8$~he[idbc-V979A1 E ^@/:$9r9HqQ{*DF]r<+Xt^*z8ˢ^ۺXN0ST_V,,#V\ #F"ţ%_UaVnk:86e]sU$2f[Wa费ZS $J Jb07ZYJh.dc2 5RO ed z*p8C"23+p.ƞWv -I}ϐNA`B=>'Vֻ'Ɓp3ϊCֳ^b6OܯwO\E_ϟn3rT?q޲ϔϒxdýX\a}nwd:m+v1vCv;!=2C ŏ^Amg^^,"dEòD٨$y-N/󜊰ibr$h:i="lR|S9(b~LۦN_v^d2C!RfJo˱L KX질,Jz|ڌIKJiQmSwda%H[ˡ;-:hN| ~xBWf^DS HA'Vś)NQ=LnO=m>lF9~i(nryWWwM{wqhK'M9On4/=60nFQXCVl4I3 ;(i6 9 iO< 3{Ey6>+2L,o_3{Aby]^>1㷚zmB;%6/N=Rn 2d7~" .rnҴ_UӶ*9L$9|1m|ZEz$rA6$(z=t욝%Y1O]Q/W\w v_'IKs6U f&vŜĚr2ΡYMuGU kvѵ:<ˎls ^sn ơû-!}"#ޭC񈞅Nm|r$]I3UBq"8R9XAMQc) ;&3jGΎZQFY'C!q`b2p={z6[v ,^!aD"WP<& s;2;:ԡuCGsmXr0mk.{d# `/a֥c0iEGe6/FH8}s2psq<e(,;t{qGeG;݉eG=8vs1'[ۉ;zq#"w*AcAUo?S:CkK_!Gim֖Z[F0r`A^!eG}~Yÿp{+b-G İ8> :cuyo-2.1.0/data/pics/manGesichter4.xpm.gz0000644000175000017500000000717011646353246015142 00000000000000\k{_.]6A iI^ҴT0F$yףվZigGC_~udij+SZۿJM~>ǠZ[Tm\๟ڲYapJTUԏ| wT 9L|G=pm>v wfǍ8pEE C=X<%s!a*.(SND֪^|^+bR\''3lNVӵUJ!YL&L⊻.ԟo"W}g*\Ƹyr??i{I=\,^CV֭x kO_bJ\BNkп¥?,q?dz#o ۍp(mgqc'we?"B}E9צLvS_Cvb%xGiÒ/ #ޓEע[S?KVJ.f28DVK3ضB{/*}tpբ;jyo{O& W0]:F/j𰟥eXF]ft#k%xBj82(XR((#Nj8#%liKA'(Is֯g7ݸQ8H?<>d2%nq05u`X1PMA9ءA=KJz{vNӕ bGߪ%)?$c?xBl=LCM0GmzDxd{4؂exOY؊+rY 2 A;λ3=mڲ2-YrzX> }8:8`^VUvaF=E֯m5-N=aE!pH8$11cڃ53[Z&Ãfom0C; ^HN,"¾ҳhVm0vEX՘!TږйPnߛ;-A;y~_Zμy&DyҌ7ӷ}ZoY|6m~r܏g#XuävX3:ޖVe?qI[:OlB JSH!_PtPNֹ(q{ⅬSB8.=zS>b> ~*sg6r8^rԋY}eWzq/ {K{BҺc_rܛ+z}q:RpB*9$;Sůq;dHIc}{m@(*W≕򫢰k&Jݟ9; ,"SO?;`JZ+sC}Wt-BߚZhQŠ䎍ȯ}ֵKsb BEfb uf@`AԚB[aq"  iYwv\q0D{-SIy] b]h$^T*R nt7|IEXBe:ۼˠlG(&`MZ*WGBl& C@뚩ӝs? :Lzؿi{L ֙.uM}v[QRToOFXӮsUTtwaZAo6 ]9hg|{ѿ~B-;=qJw𯿠ɛG϶6oΛ@?WTTMSeڃP1-F]Q`B[`Xu òb;s4`qX﫺^m-,7ђYspH8$^lhcuyo-2.1.0/data/pics/mbmRaketen.xpm.gz0000644000175000017500000000422211467336346014530 00000000000000{WX:66B j+)ZiDEX)O>rȉ8k.^͓~99םl7VR*W~ݬ_VRzN_NB*zTN-f0E@> Q\A4W p0nFT7y05@D́CTOi0790%D @Y\@QTr`i3*afD0.U"bPEsN 59GPfy "kU셌VCC+a5tDS a`JX PjHa5*,a/LL:E M~D4+*(!bhj<gD "oD +΃~C#`&! Qkm_p|3N1 -b p80>ΩgXcY0-Y0D k8gW4j_KOk,2Kj2fgbIG4uGF,eSF/hf44E \ըD1MӽyCgy}Jgg,ӉQ Nww3E틼VO{Z_ע״.~[?oqֽm+ED4}{W+ h:^Pt#%aX#Fww7GzÓ"*Fvg,kJnVp!} ï܍4jf5?Zr% 4&׆?]Z#ۀz0PcMzֽoK)P@{4[wbsAk[JlK'&Zl1gyX]/HTami7@ٷ"GK;`Y 0Rm1*Gز>nۭlZ,XXv ?5ֹc--ٺ.v:urbγԜ ~Ւ۹RSVjW=5H'OAZK&#k k*pkHRnt~M$Tè^uR#8iS $N'5^y[*M9lأ$)kv:~Hp d ~tJtYY&)Olu1oF-RKSc`UBXOG, 9?^⏗%??|$. +liXwSߑ}WZy>Vov_-=jxҨ^e#`,`m걼=;;[hd|X|Tw|ԻyjP̱pQfι 'B1c6 'C"7A1D4y sev t>|5üc=x7=0#*nY0 yG0y@-`ntsY/üKa NxQ? jG>#B*))4kkZy~Za9#D/>߭xo'm3t<7i$^OpP;|:|zJa7T:y֭,/q x֗0!fj0omޖL7K7̀>Ň! i·oJ;˻Jϋ3}׏aL|Q:\Olfmq9zA`< y`)YȬ']ίM7|D>m  aLۑ n\8ye| 4܏׃<9>? <|MoPyy {?tCap9e/ɗ/UtzaX_~?g;J0}s|%q>8d~fwiD_i<qۃWyWt ?y4xOewqRo@ |֏?w<'gI=5kK+D2^ ^k'9/fUt+c Kn  ]stX[Yo]C>1CA;o4<}x/Gܗy?#s" S_: fS3ωyay a}!qQ+D7Q0})˄yNKgI>}! yȜ8ajrNo!7:ȷdq$= Go!>KD|O ɇB/EרGJ߃ < dm_ro#3rk04H>/)0_?Χ:åqIq~JDsrEΣO|:_ڗeUV12+Ė/WNN~Nrb'vb0N;aȉ؉?vCalDI_́=7/';/OŦ~g7/$.,,r5U(__\u$O/_Ig/WI)V%˿5>t>Ȁ7ⷚLDwloK!=7S)6Q2qWaWyt,Dzk/c?~mm5m؝$;vVYNG+QJ_0/h.+OƛIqb4={A|6yxuMl<OXo8Ԗc_O쒚nvI?9>GRo#?S?EIoi?sU{|tڋwaemR?IftsF'Iu]WJϑꉺV?;vI;GKbMdwvʟv.'ld9Y}ԷՎzy`ϙ$đ<:>e?ۏd_绁#jJ=Tǚ;M$IQ4MPY7tp$RQ|zg)-&Ft7oj2dXٷgx8׷clnGnoAY;ffHYs4Gst)ʈb8T]?]?N]AlIVtsf~a}=⯮*bbU1Mʪ9#*+Zcrl Ytvt=@:NsbHL2w&n9S䯓]#n[Ǚ?^E |%ycaٻLWbSHG{H2Ȝqdlȴ2G_(pG!T9>X'?ȭWq#Ev~@VC/&E}ċj.dInxċ" $vԋ En7/:.LJSM8GH*'KF{ x/9=$w=uTy|=*6C6Nעċ($9p~/%)@ċ5c r}G$ؘ#EꨊBwMbWb/"5^;2L8w߇dݮE6djiuFk̫Bd@~#sdi QD"f 5)wQ7?[j+VW+B84ӫc lZBYB @(@ otOxY#G#S3k|UP̊jXtS"bI=d RCrQ.#"WfL.?5 K#Pȥ8WAZQ+rRLE(bQיcc $ vqJD\r7E(EX2"p1p0;TO)Ğ>Y`9B3.r@=,9vc `d?>0˺S Q8"EŌ3Aԙ%]RL3GeSd$s -zMozވGώ#" We> =jCUGHl-zl^q?9S3FW}5j#Qd We=AU}7-5FD3[0' ;xE!?CJ^ȭyK uE;GR"b0=;̣#i XJϮ⫽A䲞szF0EAld,d8܅ȍ>ofYPsj^͙2(b3-񃾀_1q,#g!Esҕ7'320G| W"F?H/1JLK V#ߠGHXT3g7|N03jSeG$=`( %"S菉9/<߅iwJd Y4o   B!?n[o}L3fO -P"r"L2:؇Y,YS+P"1%)Omw +LIV"y%7#M*CcB` HI(JdR(#SFySCNWp"ʷʴ|L .fB"pWR_)aRINɨ{g9 0`4Fr4ϢK?#7kA(EEVgLJM@  HRX^Z{p1!A,EbQK}-MSJ"+O 8 rU'ޮE^P*A(CEs R\!б̐r!gf̀!2e}^a&ǐ0$̊p^U|JM *ě܁ͭfXZ! TȜ.#BE,CJJUmRc;~-D!!Nf*,1d1W"G!ګaR!j QX2EXJRxkUȮ  w|ߤDm2'THg]5>EUI%UU!z緝U]tdN/ ٬H7)-JīB8vC<,EbdN?TH_]+1JfU ӷi,EY|KU!OS_Chb~݌ 2D63COu 1SusO [7w~0 <PD2EH@DN+P-i }s+\%~}.1d%B\tTҭ#๰K8Yg͌"Dpזh?u [PITPv yÉ-\ rjI!'E .Y륉: 0Qw3Bu0z3(=5!C LCye:A}V!kG^ᣚ,Xv4?HeD"!2a,:Ehre0c,AC@V"rʐCeV9沪Đ=?6dGelج*1̀cȭd{SE E33 {IaGN":pE"yx`)}h+IP賂mU^YZ-0CFB QJb- Ճ0 0G"f6k{aPdQdm^׉zE?Ճ|J0ƚr sdONOP9fߐ!b )IDWe|P !>E>u0Įd2$*$`ȕU!*3Ve|}CR*c 0D fLYqb 9blf2$*CQn9We,AB6ŐhF 2*_0%b˨.QF *d ~|0{f )ٔ?2fazYdO>o~*GBVU~3$l:!*>fCw&C>:sFu xHy23cC!5HUEŐu2ĝ^05j0 2". 9 YC.D20$gUF@CRnRV(`%ʐ>D"C.|q^@d2D0EZ#-^&!'AuT Đ'0d'!U1Th$r39 ~?ޘCΠDb_5]sˮC|m^}!Cx]pP%6.f0EjA3( u݃ |<2ĀU!{p{(Sd12ֆ6A fl7!EB9Շ"՘XCJ rAlN5!"LA\hF3s* YhȐ 9b|JePį1T! )[h+D@l8/;J"^p3^c%@Gv0 w!^a.ScH铳JYAfH 2=g(Q`7sB^C-Eȿep( YWS3`DNؿCzSWfH\j)G}>$!^| )rQOWzOT/Sd%Bq'2CSY1Eת2AɌ09H ˑ UWe֖I;cE|D Rl|PH .3'G \C6qeT}S31!CrB/(B5fOP!~~ م˩>1E ϩr3EAvtIL^N31G[T;Bu#A|1/ri)Rq(CT*WPjnB*Acd0sCQ$Α ,!E3 %2M#!AI;܂ehY#U!6y-?8<qT1$e/4,HiT(%H 3@Ebj ĐԿ_|fvD$A,CNSVE()Aӕ_2Df.qfC%omW,@m8<Ⱦ2; yk.;Jn엳旣1 ̹_ەp3 3W3d{]mYPL8Cڐ^A" W_@#3(B  La&d\^Oew݉!]Y5G`Ds8A L>͐"wL8A!r*Ay (d2|LmBE)"SW)VV}3՗1A|/5B!t{T]D,E,G>*M71DܪԿ_QD\E"&Jkj*.Fq%RhPcVd%b)"9/{"sN&)ȪyzL~Yo"]rGYB·M;G2֘ajV̫1a (Ry7v՘aM@]96%dk""e պ`Eȑ8AuI"pvn2QkFQ8bwF rN}! 1\ϙ#G#Q Gf#DQ@tdO8S 6sRV Mީ#1M칋R#;z.Tq7i.NՆ YZ8REu BeM (ŽfwNQ-V UAs7"A!=wQQ%=wODGC\SMbѼ+pI#9ɳr$ y'-';#IAhA!AN@\WLb1?,AڋbIdՉǧ{惸e0I\tAD=b3>I>9m$`2v#ron?Q);V7(BjĞv A} -"#2ǻv??U }4},qd*{:L? ɺsR *OnXrq\L.Al{y# b3&_KiFO3g;-h\ĹK.;"0TX\ŵ!$$ + ɤF4r 3 HA9ϛ b'K xs'8gg0G S<|J YO7($ YMx80O: hG ޢ,h,_#& e =)LA3&eMXTbIc'툡=6d }YFxK%,,+ގ$!Kn,DG?f g28BQSo8lʱG^iD8*G5kKėTg}9EL~qޜT~ɿ.=woi߽?|{Ξs{VAdL˘ԏ-CfLW-hͿ&OTԘq3P]eܬM2>1;nWje&wndjj336,mk31R56ڴp"cc}(P~k1U_2MaLO\0h`2TRu &Y=lA{^̌i32&70!7ukÀu{;ЌJca,`8;ЦRѠPϯՌvlM%]w3Q-Q=Yz)mjuu@xiL6<0 kG(a2Fرe ڼ4ff?tЯSfcrD4#·RkG݄07?lM/`wA#k=7j `FK 9(x^=25!mյ\ףnm~+EF٘~PIyҘ,c~yLU22G5fJg7?f7BzA{`&7R)A7YȌbv{RjULBD51<sLR;DL}}6 ?0 ?0 ?00}?cgލ:\vN<>>=f ֜0w:z8c<>N[?|''i_k 5:d6]xwS\̲q׻&|wCM4xjn_p@@9^4gɑia;Asڷy-n1e,˜k\PZf=#4ΞyժK 3}zCLu_>BgLp)/x^|~~v~Vŕ(K+s6~ <8ǜ3f8Y %9S2]U_hH~AG=[\0 8\6h\LBHK@8?G3-;T1zN&}rŴ88<80s!94&,7!7xޅcf2ϑ[e|-)ȿtH!eK>U%wg烢8yo62P^k&^{c{ wCEc~q~M%[Ƙ)O%Ϊ (yTTˎQ%huv*mB1C *TWY)}~{5x"$b")TĀSQ@A>A~aM]w槖2 nˍN?PaJ{!v*2)_SB$ ,7h!ps<vRH{ s3qf1}¡5U /LyJpB Q M]ٖX[JTkΛ'a[! "L6s!343^Ȇnƹ*Y292+:6HZVGrj.С)MhE;BLT )|]/ ̋0JK+g _(~&XcܜJQy)?FMȤa "m{6m. 5" 'Z:@P##.֢+_ۡ`'W0@{X+vԢ1umj[}J&ɄZ)B0Q;M&BŘWZcGYŌ|Qv&l{P6w%ue0POlnNlAZ³оZn!'m,EDxz/˅YmH ?A'F-x)tҬ@]Rq$x#GXkJi# !IM^ Ыd"yCaFz&6N'yLzA^0Rk *[KDzrO^ofMۮ"I+t79Ɇ[ԦK;RnNtI[8PʸzhOB^ p?ݏV6jvۖKJz\˥z}l6knN:s%iC#[}VhYP]G8t/>j`]0("^jS~^:j `XIݖhzm±.-:зɡ|`:)'ĶCf"L.U# yӑxmoIвmF6*ʏ%(t?٭CJn>.ڵiC$Mdbޡ|hbQ}ո-'pVˑTMnF+MղZѲ{]D$ wZ)ld 81:!:Jc9]}*?U/єڄ.}qES>t+ ײn`^ϵZc+IjMdIl`QC;i&po<G7ǩIp$oуmX[W8[Wk :Vg%WdʲȟZn%IEHEնAM2_l_y@ (R$Q6MH;:Z˞eצ %aU%is'˄e~eak#1q o6\HX#k[Sw?D:(gVb}rj~j?¶Ӣqum'{'UՆfCR|T^- eѦ͡ϚYh& H+;EB%]`8NOO[nE^znjߵղ -9$7svv&΀ blqSL)Ң : 0g{\,x&=g_HSᪧ@@aA{Jl +@<=;3ۮ<V$y_ъ٨&cuyo-2.1.0/data/pics/lrWasser.xpm.gz0000644000175000017500000000265612420650611014236 00000000000000k7b\IlBR䭅1~(]i?}t+d̬vF{|[yqttPm/=>~|_߽~=;?\^WWMu8o߻:ݪ/[uzTon?J޿k)h}V7_ZzI7> b qba᦭ T}-׮ T}-/Ņ[&︹آiں9qkoFzwH@,_".(ԯg3q-zE|>Iz&Kkr@8_pGEAޣ-x:斗b]bA<ʼyJ[H\&Sڢ@zgw!qT&5_Ϋdma8#TY/.&ed*.^\p&vkCekf@;1DU[λ] OR b!A| /AfyAn'q9Cur` ~;:rys[^-di:8y0lyw(. Eqq;C=I꿔gGE|./=jw|ԊkV}!<^^L\HAzT7\-a_͛A)CjV{~ռbKEgeYC ʳm}$;d/yKqlF0IMWqk>:.r_ܲmXkF݋B9e݌}A`R3p  ".!2(ؾ Оf  ?@h la+.bK fG<AwR-[GzJ[E#lf000C|4}<9co8t5/AYfX/o O|N& P:Բe C6aaaS0ew T~9/1frye =Orq IH_bh!2a@tbF-A"Cdf X% gr5V?Gގ~X`u|0Sqα?tcuyo-2.1.0/data/pics/inGelb.xpm.gz0000644000175000017500000000356307550521113013634 00000000000000<inGelb.xpm[M7=gEja'qCSBY !8iRUJ[ƳJגkO?Lw/nû7炙~?ߛۗ_鳇?"x-e<.C_-]r⺨`y8;P XDS3A^ܣ\Sb34!&'3KiIs"OK_9@TYx n''r;[v'|& ,By6ΰuc1՟SV+t+t?8/?QP]Ip?hQa+Ѽw`37qiE9.:ImgrO$s z sP4:EuZg@{SCRvոGQ| 跨>L11^CKAdShZS\җMm@i>LuJ,@p?apN2;*P =ЩEfibH6{$y RgYTUHh' ,s<2v Bx[P7#BhbB0 o-k 6rqW8 C(K0\|Rv!.=G"ggvR6X@Kr>:uJzCG{>¯ .`?41a|eȀp(-$;hx*YvUBxis 11CL67 q~A3#،ھ8 ̢'XP +}cʯ&S }cn*=Y=m !^b&ri?_ϑCyQi<ޮ<o?('ü? X-p"% ~ |⅝QPaAbx:0In\쿨AZYf2FT((/# ?~yH!WrY 9ȡ K?w+JNׅVV"t8E}o ?.H' {~g$ s~19B,e("t[8Y0` %O-c{R/nԯ 6!q]o>i?PJL}tz:i?H*/>ƽ*垯Bcuyo-2.1.0/data/pics/bpPinguJ.xpm.gz0000644000175000017500000000127411543455110014147 00000000000000bBMkA_1$)B y> "} ϙ.3 l/ ;g[pgO7O{->^?|o?Z| Wkx8߼nOw;aꇟn@@ QWc"9,ES|rHI$SJx߇Wç/Sf@1GPp@5^ {/?D/0驩yy\b*Xd$j^>.9yIJj^_p+^H<ǥ]CבIxut+;C ~g%rhp!,yO1Y3_T1NoKC<;^9`2|yy8g)rhrʡlÎGB#΋vta}Is_:f$+ Q,WrL_\ρ>K\Wt` ".9r X/\a*9pjAA?\Ӂ %簼pBAüìCqtg U q#Yl՘_sX_PtX_t(D7pmk8q]bd_pp| f笱?fq _rd%!cuyo-2.1.0/data/pics/mbmSterne12.xpm0000644000175000017500000004552311467336346014134 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 512 3 1", " c None", "- c #7f7f7f", "+ c #bfbfbf", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " - - ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " + ", " + "}; cuyo-2.1.0/data/pics/msc2Info.xpm0000644000175000017500000002576612402435276013514 00000000000000/* XPM */ /* Copyright 2010,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 288 5 1", " c None", "1 c #808082", "2 c #808082", "3 c #808082", "# c #808082", " 11111 ", " 1111111111 ", " 11111111111### ", " 1111111111###### ", " 11111111######## ", " 111111########## ", " 111111########## ", " 1111############ ", " 111############ ", " 11############## ", " 1############## ", " 1############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ############### ", " ############## ", " ############## ", " ############ ", " ############ ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " ", " ", " 111 ", " 11111111 ### ", " 11111111###### ", " 111111######## ", " 11111########## ", " 1111########## ", " 111############ ", " 11############ ", " 1############## ", " 1############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " 2############### ", " 22############## ", " 22############## ", " 22############ ", " 22############ ", " 22########## ", " ########## ", " ########2 ", " ######22 ", " ###22 ", " ", " ", " ", " ", " 111 ### ", " 111111###### ", " 11111######## ", " 1111########## ", " 111########## ", " 11############ ", " 11############ ", " 1############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " 2############### ", " 22############### ", " 22############### ", " 222############## ", " 22############## ", " 222############ ", " 22############ ", " 22########## ", " 2########## ", " ########22 ", " ######222 ", " ###222 ", " ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " 22############### ", " 222############### ", " 222############### ", " 2222############## ", "2222############## ", "2222############ ", "222############ ", "222########## ", " 2##########2 ", " 2########222 ", " ######2222 ", " ###22222 ", " 2222 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ###############3 ", " ###############3 ", " ################3 ", " ###############3 ", " ###############33 ", " 2###############33 ", " 222##############33 ", " 222##############33 ", "2222############33 ", "222############3 ", "222########## ", " 2########## ", " 2########22 ", " ######222 ", " ###2222 ", " 222 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ###############3 ", " ################3 ", " ###############3 ", " ###############33 ", " ################33 ", " ###############33 ", " ###############333 ", " ###############333 ", " ##############333 ", " ##############333 ", " 22############3333 ", " 22############333 ", " 22##########33 ", " 2########## ", " ######## ", " ######22 ", " ###222 ", " 22 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ###############3 ", " ###############33 ", " ################3 ", " ###############33 ", " ###############333 ", " ################33 ", " ###############333 ", " ###############333 ", " ###############3333 ", " ##############3333 ", " ##############3333 ", " ############33333 ", " ############3333 ", " ##########333 ", " ##########3 ", " ######## ", " ###### ", " ### ", " ", " ", " ", " ", " 1111### ", " 1111###### ", " 1111######## ", " 111########## ", " 111########## ", " 11############ ", " 11############ ", " 1############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################3 ", " ###############33 ", " ###############333 ", " ################33 ", " ###############33 ", " ###############333 ", " ###############333 ", " ##############3333 ", " ##############3333 ", " ############33333 ", " ############ 333 ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " ", " ", " 1111 ", " 1111111### ", " 1111111###### ", " 111111######## ", " 11111########## ", " 11111########## ", " 111############ ", " 111############ ", " 1############## ", " 1############## ", " 1############### ", " ############### ", " ############### ", " ################ ", " ###############3 ", " ###############33 ", " ################3 ", " ###############33 ", " ###############33 ", " ###############333 ", " ##############333 ", " ##############333 ", " ############3333 ", " ############ ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " "}; cuyo-2.1.0/data/pics/isBauerWeiss.xpm.gz0000644000175000017500000000042607550521114015035 00000000000000|<isBauerWeiss.xpmAk@ͯZR*)Hsh+BDI&R{{;3̀o4lҘul}'YfgX+z~Qox>=4LpgwW6h'-1D`D8È? bwUj` \"0T,0N,0GBiQ̑C!# #.+12a-W2* ϸqͨ; s&f|@#cuyo-2.1.0/data/pics/mnv5.xpm.gz0000644000175000017500000000027611611542650013321 00000000000000ױ 0=_qI 4B)8Pl7m,U'$d# xa.D? y{m'lprUb\%r!$|j+J(PV2MJ=N%P yut 4hРA#Ƙ[Q15D#te;4 4hР0#gӒxCFlcuyo-2.1.0/data/pics/ithGruenV.xpm.gz0000755000175000017500000000111611101102053014323 00000000000000Qk0ǟOq<ڹM1 оq0F)l}V< J{u:);`t ɖ7a7ܬaڝp !;%L.kr;ov><88\IT˥(b!ao$lQQQAҞ)k nZu]7!`egÍotn݆l0٤ ʠ.ېMF MVZ ! NE--c]1 qf'$A^.0;0)!0zi`Hbfo@xĬpnl20  !ů+hy8 rdAS& f'd=a^û)L6v\y3 g:]F3ή#jmiF-km90^~m:b]y YgtSeT'i[63t`4aru!s4dAfދ$[ t) H%`xU9exx?yɴM5cuyo-2.1.0/data/pics/bxBuch144.xpm.gz0000644000175000017500000001456410361553650014110 00000000000000b=bxBuch144.xpmisږ_AB `@KcrloW<` ĭo5lM! l3=6*)94hnݚː<8zݪw)94?>>B J,&c/󧺟ᥐ * B4.T55r@2ts\f4UK㲅K-N.|6U5\t4& ӽ0K/%+gFz\NU-!.ez|ns+ʹl78,2745K}M5qy˼- RDe\*=djT=PV3Z"}D%| =Ɣ'?8eLOgHszn.!s$c\N'vIxH/5Y.-Q>QW5iDuqy w:I&=w:O+%}xez߿hh:Mdz{{,Ns,{/j:#yk11&aq9 '#=7[0ǤZBH,tR̹p:,*3-c '\~'\'dI=qEM yf5o_Mf5o_Mf5o7ZF2׿cH+Y=VX+e"kl6} w|x>+Gm3}ZӮuxeȇu?HA:(t2^ZX]?[HW̸pF޶Fd&q4rn3ޮF6cٶft^tOn+%x|T΀qY{8:Ѯuy:T@HBE Ȫ ]`Qcsv~y@Yb?x1x#3Vab{W`L ֫^D<=ؠpx+KO{v3%vl3UuLCFjNtV\:\ø.=ost&+t^?kTJj>Ԫvtf֑$x= ||7\3)(M0u)HJ`쉚-uf!KCqes枿+kxC.BA;}c_mps >:>:nǛ {w HZ ڣu*btJ{(w"DfZo#_ؔßvŀndL){뗡һ.!m:*wg䅹iVTqs(@fHG:ӕ9ׁ9:z *O{ |ӛ{Sqͦyj%:r,J@V+?Mۜ&o*:~@GbaWr̞^Yٽ=6Z㆒YN:t<QԌliQNmbLyU?x7}̷;MJq8]x06\tѴ#~SM3Nrtbk;j):F-yČGk:19nָ||dԵbF(jč(lӢq?4h+d%q'ʓ&͆%; 1HްӱIcZO]o5{ "X IԐ0IXMQ‚˰OVngvT\J0H?ފ#ڏuf:܋1j+߆4+Yo?[GN!u^﬙' 6^VqN#iXn9 Oޡcԩu~42|Ƞׇ]5^':jh~;g30(ېcsI^`'p` 6g1 1 }}2ullˣRc$>ӑQBӯ_zñPVV(e{Jpe8Bb]+5^BI86e^*h/_'[tUJ23"4W xԂN@9q&J'ޡь:ɕN1:>u{K^V+vU %8A;jM5œ&ce-J(3۸<: ŗ/߿>)'|E 1WfyO둵-ăK(q\Wn.t'|b"c\6l'KՕ~Z{}囻+MZ 9sz33ђWLR5!$Jt1N=CFOzNSW|=)AuM5cҭs,i61jpڲM+s+F.M G?3$EYaLÎ$MNzV+gӔ{#`F-f Ѵu¸'&uXR .e3r@ۃƧ"N瑛-WCݑ&aY|sb.2egRDdgSA7T-6xK(iI:a}aŠ0Mֱ:=X:^:.YHH&IڋM\Jfsbd".,'BJҝc@kѨ~\JݟVd%U|0P.Fodt<(Et;N :cLd -FW%R4w 53.m 鄌|}5I.ꪎ8sIIО\AA<(_'R:j^;:ZRT ˴`sїe%{2*3:@ 58H POB}O=k;bI;b FN'IFy ,(1 <$F#|@5".|1h47ZVˤ%Fj{.tAH FБkE HEI0Z `|20ZĚB:naĨ> 5u#h!]swt~'xAd4RK1@Fߗ8 N^ߡ5d#M7\T\E7vMF_>k5>_~#0-i6\4nNu ;M6#-nx} eVv.:L^ʡ&.\T7E>:"c&cu䮮zb/h;RX3H(1ΓxC(ԓ(: #̌:9w uo@(l q\v8F O7ܜGXw X;\F *tIq$nSr)> ׎# kGeePmNC}E& k<1u8{tDnE͖5yao S152nƄ:hO:..w @Ro:$"ޱVd9/ݽA~{<{3c_@C(l\xM$QQlxn1&#xuk;cmH:1Ħf1[Kw"!:ud|~U$2.,QFJ@p'9iMnuDH]WwOv]|p%88 LZI) Ņk92J;O#K_1t#5v#?zLL:~}21WW^8Qa, ŋP?HǮuxߝ/lL QZtu/puxewWj uhS>,T6Çr`>^ɮ͌{6[й(>FIGGa|~|,fLۜP GFI#X譙GQ/ וBP3*fzno Hǭy(vu4vzFm!V3I9*Tud$NhG#HG[3jSD4){->EdTdgNȈBm赳9'Fc\ِ HvHŅhOwt5h.7&³**!syIBk597v;v+T+ؐyST>JŴ7^xUE#<#Gt1Bi?-h(KxwQ6@1MiC`c4kP/3~P\Ob.~PCIb: ;]'apS=y3O]1|jfB)u!](x1YH(ɮ괘E8*J/G:GڱBCG+]BdF1TiI~ĝdOQ $ơT+"?Oo8*L@J,. YCNV hC IQvT]@sP~y3R@AgBLjþ k+pZzN ۦe;(>`G{:m|+%8}/Yg>M~`4\6yksxO} W-2^rɪX,,c)\s7=uusX^ÑK^dl]~qp{G,MepWGSF^k>93W0:b0i$DMwLK«.!ߨG8H:jq]hsOJp>kB>|}Ԟ7t,?Ilwl̘Yz~O3irm*"x$ߔi권!SݍGWhAcsB{xPKO41oNPT_v~'hɠB|EHf7ˁaB~kiv;'m;_.L*o뺠 ˯#rCT'2HmiXNڋ}2=w j #QnXnlŰT0B!hS'5&4cRȲ Uxsez:wGB}蟻p3g~^UgB!bݺiۯ1h 36Sug34dYMyEЎ+IW)kE7*"ق$yz|gR_HW^fYAsrs in_۶-[գ]VTbTUԀ#F7q;| l넆_=/%B(i{hݔ7cZ [e+S Δ 3I?)bFFU4 %QE 2\gT7 8c~,8O,8O,8O,8O,8O/><,kcuyo-2.1.0/data/pics/lpStart.xpm.gz0000644000175000017500000000040311345776166014074 00000000000000ǔKlpStart.xpm׽ 0>lE&7EpDAR3Ŷn)ehkG/;ZL!t1[$[vZo`w k.*(u)4(EJ VkCA;b@!t1p#X lP1ԎD}WvPLxqQ>8 Ѡ*mZz3X I(mEˆ?c? ]cuyo-2.1.0/data/pics/mdGold09.xpm.gz0000644000175000017500000000220312412223262013776 00000000000000mSL+" җ4m!lAAU&B 4ZR[Wޛ3rΞMaXZ[DP;<93Ӗ561Y(V5j%09?1iŹ/~?O55k8Us6!VDI NYrA @J*² G"5HQ"U"p XX yZf%<-pD9FM 7+87D)) +DLT;cФulDk)A e`֌5:tqU_H4`UG4O$/%9Q4ڗ |6 n5 Р<kH|kH5 w=x $13?inliD [2G87(4[q.J}jpܟ$G\@DZo HE\lT.|At(Eߓd8 Ń@ޠl'9-p _~z tⵝqsGx,#LcG#>YB.6݄ex.F@BBSN B!tB!tB!tށ! _!2߆PàZpJrP|;mc _s;GMޡ7wޭp7pU'~M~[rj_B.NFHj6Gr(ȍɡ'@מ7cAߓ Xsvw06Iu O}̲V ̬';Dvy'Gi3h7ŗ]b%{y6c?XgmrxJa\^O1iYLџ<=)1Lev"WQƗHWa8zj6lt_Gfշ^tfdlTq閌 W-jN.܉{v8m&=纞ڦf [gMaS&Lu=|Fo3 IKluN Oq]̡a=rN6un|!Kj:[fy9푖q7rҲ:WԆuzʔ%=۰8 ҹ몠lƲttU*BZNE1W2L5SA UTkժaͳJVQ[:_ X5MeS ?FdduNٓ}r ge& phcuyo-2.1.0/data/pics/bxBaer56.xpm.gz0000644000175000017500000000356110361553650014015 00000000000000b=bxBaer56.xpm[oH+&r#s&8HB6af J`ތ=|xv ~܋瞋ܮ/WNII@}}@E wxH C#r-LdHQڼJ yI$ >]9(:I\!2 5ѣKHx_D^t$Ξ)b@BA uI"R%1̺$02W)˲)iY^ȴ*42HMvU@:JLl+W%RUnC)izU\vŃ5+H|!{Ap%!ȇW"5Iqy0pRT\H'PT)"UDNEH5S{}ʖz̄. @jC0>mAХ %գ{]U!\ؤJ9߀+ iјc =M/ !%+Mhdvki.^u_p+KguMMfAvޛ#ҕ4 56m]"O RtnYYkXJql f;kMz[`U";SOV@zz;j\|K/l qP9X@ﱼȍAWc1vc1W~|x8oNRkcs2}?0ob ącƌ6q+!E\.yZ[0Q aԌ5v6=F@V.ܰF{9a=m{82 fa6D,cv4HՍmXhV GdBĨ-ځ#tv}  Swi^ΩZ WU:ExjBn"V9)*͘!͖/H۶}eF*&eoX+If$ur7*Ufܫ2‰cqL&ZRV18RU`T+V7cY׮ef-ìb s񿍜_}L"Uf8Xnj:pӪTU줰:]>+̚C-< ҍS )LAEBq e1YWb/n&t'rߊIjtOkxy70܊~s-g4 y1`BiaY(yRd\hukYǭ7;ǀh'KaUݸ*q5:bbgf+jڐŌQUbhǵ}=>1Qa!#nÌg1XSWvHvV?Dn{%lE]S3x0kP;w ۳ì μ!Q\A*;X`"7qg$ 9_VAF͹:9mU6aNMUA|~iқ #, uA>id|ӐEFyZ n487a $<Ĺ_&8o)vҵ8k (rJ-GY#{̣E;6y#~"gNEa؜cr9~*Usc6s){S1c_RqfƸ`VX뱑qpܚkS*Yz@{_y|3 =Hgi^3?̈́Z H͎{\̳a1-U c߼wwK3l{ey [jwdYlEK5 ڌ!_t]?I |]*pW0, RDA2LeʢR9"f'_TRA2C%v,H E*)_ᨇq'+SyN( ,8)cqKTJ`G98Ev +JȡT,R"Tʲ2R=vҕDARBPđQe%ݕ#m|S$, }* UYa'?ka`ѐ8Ov-!MJKaf uAzܟe98*$Rb=RdR=vr-odeFr8+*]A1K 5EfBWPHH,mL䩘zk%׊̔jYEfyL^ Ih]RꀙjTTRYiEU#M`jTc ]M-QGoeeGo)r)l8y膥Meʡ؄B9,HUٵMj_)@"UˆHelT/*R/*O)%R͡ʝ0x:ɉ7:*k5.OzԴQѿ@B0z= bb;N!ioOX?@}<fAƍ81xƂҺԭw}@` ^v]wG~hath,ʆ 1nٜm9axԌO0Pw6X洲3zR9g߷#`6v]ºarBD˄2lg|K˜3?rPaq QF9t#G2%?F|Ƌ.AM'@|||C5ԏw2fL=H+#3ZXk^r%ot њ t O鵵RM#>7)UM _UN2n&m%(l]ub$sյ}]6tcb4*|^ޟ@g:)1oo~&Ge@QumXQz1{q:Ѹb)L6Wv(# zU%^d^1b!5 ŋa%# i[TF%|2ӽĖqnd753HyXgp6E[Fy;aD!6 Xzսϻk'`w=xI#L&N^:ay;#!E&L8-}}*PX%f}#0W(:Px$+H-SJ4Wk1[@vđTF~5Fhݧ^`dcnGFÙң^l-&} ֪݌2#a ʘF ]>(#|&梀,V죠~.<΄L2<[>Q~:\lS@J]E8bD 4س&p0LƬn;PfnyKܔJ [ $sBiQS9cITBm7Vs9f#P-ጃ'8D+ F꫏@VL#CYfJBb/}{HЗ2!Q5/XG 䍑;0P1Y"Vg:g^3,܍ &ɛDvl(H\i8 .A?>32ErBʪ2^QOq<=26A١y;t Chy4F'ŵDz0ۻbQm& I]sa3$2U^]AIauyA9R40kr˽OaMg(_R{sr8 Ow4 rr$*9'> %l5yrwbAr݁AStKI^Ŭ1+]Yעb)2Ϟ^"U, mRg#-@.f hthHm.M"\d (5<'g& =Vi $J9M3_Rzb"IO$. EEZLKpHarxDI"AWybL]q"jԈjBcuyo-2.1.0/data/pics/iaString.xpm.gz0000644000175000017500000000103607550521112014204 00000000000000>cs=iaString.xpmJ1S ֕-ԛ"xDJ)=X nel21Y2-O^o>l ӗ0-+ a3Aց)ܼ͟b5]]N/|==JEQ~!Eby1lRձ:QڊM6(T[my&ZRYDRYH2L2+AR (n$Í~!wE3h?ˢh! e(ChPBRƆnG#RX.'QWF]NZ vA}A- /n w}:\shܒvKP Q`ֿ[Xل4 @^kP2 e(0bLjl1 cDYތPOu4tԣ;O$0yf6Oa. a.~Gی e(CIg&%cuyo-2.1.0/data/pics/mscGrasGrau.xpm0000644000175000017500000005421312402435277014240 00000000000000/* XPM */ /* Copyright 2010,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 320 6 1", " c None", "# c black", "* c Background", "1 c #602727", "2 c #276027", "3 c #272760", " * ", " ***** ", " ********* ", " ***** * ", " * *** ", " ***** ", " ***** ", " ***** ", " ***** ", " ***** ", " ***** ", " ***** ", " **** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " ***** ", " ***** ", " ***** ", " ***** * ", " ***** *** ", " ***** ***** ", " ***** ******* ", " **** ********* ", " ** ****** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * ", " ***** ***** ", " ******** ******** ", " ****** ****** ", " **** **** ", " ** ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " ***** ", " ******* ", " ********* ", " ****** ** ", " ** ****** ", " ********** ", " ********** ", " ********** ", " ****** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ", " ****** ", " ********** ", " ********** ", " ********** ", " ****** * ", " ** *** ", " ***** ", " ***** ", " ***** ", " **** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ** ", " **** **** ", " ****** ****** ", " ******** ******** ", " ********* ********* ", " ******* ******* ", " ***** ***** ", " *** *** ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " ***** ", " ***** ", " ***** ", " **** ** ", " ** **** ", " ***** ", " ***** ", " ***** ", " **** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ", " **** ", " ***** ", " ***** ", " ***** ", " **** ", " ** ", " ", " ", " ", " # ", " ##*## ", " ##*****## ", " ##*********## ", " ##*************## ", " ##*******###*******## ", " ##*******##*#*##*******## ", " ##*******##***#***##*******## ", " #*##***##*****#*****##***##*# ", " #***###*******#*******###***# ", " #****#********#********#****# ", " #****#******## ##******#****# ", " #****#****## ##****#****# ", " #****#****# #****#****# ", " #****#****# #****#****# ", " #****#****# #****#****# ", " #****#****## ##****#****# ", " #****#**##**## ##**##**#****# ", " #****###******#******###****# ", " #****##***************##****# ", " #******##***********##******# ", " ##*******##*******##*******## ", " ##*******##***##*******## ", " ##*******###*******## ", " ##******#******## ", " ##****#****## ", " ##**#**## ", " ##### ", " # ", " ", " # ", " ##1## ", " ##11111## ", " ##111111111## ", " #2##11111##3# ", " # #222##1##333# # ", " ##1## #22222#33333# ##1## ", " ##11111##22222#33333##11111## ", "##11111111#22222#33333#11111111## ", "#2##111111#22222#33333#111111##3# ", "#222##1111#22222#33333#1111##333# ", "#22222##11#22222#33333#11##33333# ", "#2222222###22222#33333###3333333# ", "#222222222##2222#3333##333333333# ", "##222222##11##22#33##11##333333## ", " ##22##111111#####111111##33## ", " ##1111111111#1111111111## ", " ##1111111111#####1111111111## ", "##1111111111##33#22##1111111111## ", "#2##111111##3333#2222##111111##3# ", "#222##11##333333#222222##11##333# ", "#22222##33333333#22222222##33333# ", "#22222#333333333#222222222#33333# ", "#22222#3333333#####2222222#33333# ", "##2222#33333##22#33##22222#3333## ", " ##22#333##2222#3333##222#33## ", " ###3###22222#33333###2### ", " ## #22222#33333# ## ", " #22222#33333# ", " ##2222#3333## ", " ##22#33## ", " ##### ", " # "}; cuyo-2.1.0/data/pics/mbmEnergie.xpm0000644000175000017500000001621611615360432014070 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 64 7 1", " c None", "a c #800000", "A c #ff4040", "b c #808000", "B c #ffff40", "c c #008000", "C c #40ff40", " a b c ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " aAa bBb cCc ", " a b c ", " a a b b c c ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " aAa aAa bBb bBb cCc cCc ", " a a b b c c ", " a a a b b b c c c ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " aAa aAa aAa bBb bBb bBb cCc cCc cCc ", " a a a b b b c c c ", " a a a a b b b b c c c c ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " aAa aAa aAa aAa bBb bBb bBb bBb cCc cCc cCc cCc ", " a a a a b b b b c c c c "}; cuyo-2.1.0/data/pics/ivFeuer6.xpm.gz0000644000175000017500000000550307550521116014126 00000000000000<ivFeuer6.xpm\]I|ƿ'';`R7He|8SY=g۳mwg*:+322k_iͯڛ^~O}޴??}_~W웆w럾z~o}~q:Ł}So߾ӷuڞytϸ y0zK/02Drw eDb bB C9@p1O0 G9/Z~)wⶰb@X0cذCjt#y?`b1Pp. strw Ɵ9D~G0TT1\#z_0%x g i0!m'qTc۴"XHz_mami0 `PzAXVquxEz^'Q]ZzHZCnê< mw f{> 81$h D[W?aaK/g }&*|fo9Ē?Wԧ\iGF€ɖ?u=E((YK%:ښa0#v~ddgE/ =+Op#TUk&Ѳ t|&xEOƂP",nժ\#/L l kq*#(n~陀5 !͸zAهMc`YAu:ln8 lF>ƛ\> űE * G~ Z)&MjbV9+zsM:.) Ks>r Z,|0q l!rMJ6?0R3 q9i*#'"e{dfbk B5͜$d˘ g9Jqss-z2g %d0o]Đ !!h:MtAcX!-\T# Qgvvtͅ w:0c-Xpz|&u Oj\|b-ϕSA1*f'F\C D`MNC`-QX$aoQ-0d>iNXgy?˨d=Hs%)gx0Cc5%tW`dk֑iˌ4> ^HFyr"u !R:E/w.`қL`#>)1FC)VTedN0/h~oTFBdLN0#]b )(1"Ns-_ʳ Xcի' Q9 .`Ӎ%-AS:W󽮁Er~\/#10nTJI #|%!`?zWHlJ-{T|L}-VxD3)A${WE5DfַyՈAw^XZEDSB]ty 310;(k@`* RT&2H4`6 9GW?:$M)@ikaf"kjNGqX.qpT(TfJ&h2zN!vqoUw Z.Y0M"mXM[.T|:|^ڵy&]LޟW0B~7).ﹶ{j5 k&}V%]C9ܗ?)rw6^[89hgb(9+o~x) ?n M}3gc`z{501sؑBcuyo-2.1.0/data/pics/ivVulkan8.xpm.gz0000644000175000017500000000176507550521116014330 00000000000000<ivVulkan8.xpm͔݋@_ܦ94w-KC{;Qz"ُFɁ;ٙ|l.xVׇwGq|{E(q?|%]mz%ڍh3(}f\˛7% -ԥP |۬WQmwUzyX@݃: mkՠ^]QjWO@n=zf1JTNM `{ ?F8Fi1T! 13QRJA6q 2jJ$ a-|^ U!0z MvE12 k{'1 24Mc2+bϋ3'!|=APoPkMYX(G*e>a] " %2s+`P* K[Ͳl` ĈBRUe -*5ϴ(W#`؏\A>ayB@ g`6)}U%'G!E=O3pcl b_?\p' CCMmAru|5"Iт;D@ 3,  #hu ]gȜg@;rC)|=c^k`flA`U ,v:΍hۓJ g3AC2h"`;B<;7\3-48 ]GƓA3Rpʢw i,! 4b,,z"/= OJcuyo-2.1.0/data/pics/bxKlotz88.xpm.gz0000644000175000017500000000410110361553650014243 00000000000000b=bxKlotz88.xpm}SSābDCCFo8Z΢("[g}N'IɌTݪ{/TsNw$fvil[n'fǜi6_7柭c /w#i:1|ΣivbOwVbO[bH$/pA'yWA6QfySAAף@&P dq} ~naS"J}Ϙ 3h % 3I ؍[&|5z7ܑcG(-^c=:r¦n}2/X(}Oi7$l P$RvcjB[(eSdҭ&{bϩ5h6UݙrR"s% R˺8N"HnDI؍cEU-K@@ZsPdo~V\Yٷ]YÖY[ǖMi{'FYAimbtk0\Q^(Q= Yd*Pzα۴ϖEʞ*vT~%dx''H<uÁ36`ҝM3XI/7`Oj+ -L"_Q"A3t.0`0wDD'qCIVcBb2r LXC$#MT1-|F=>H;i $:#7D{ PHd pRKWD& ^'v<ҤRW$ |ե˲CbSF "r^W-Y f0,o!`i{^))zmѼݹ%AR0)q-3Gԍke%|*^̀peW2klNJD9>L 1[`,"B c' -Ek7>E  lTTf 77zBjE\cCрϹbP19FpI"wLN:b}}M. I5N$jn^?.fSȘ"`0G#x{3H,Lģj ۶_+c#K[rq+Kk?W펇՘4uo 0ſf䰉z=O<'%cH=nխ2mr V8)%O.}NFr.!ڙ%kČ\g!܉/>ޞ4Yf0r QrJ;PѝQpm 2b~E1c 1`Fq1CFf\}`edM抚uI36scW`6[ׅc5]X`~Ň^*$.K!˕^hs# ,t(D`UI.zad] dD%wn~=W}]sba#c>$SH^ O:[o 溬1ؓpF," C# |ƔdDtU g4JEە1D>]\͐f0"{ߙ2x6;g'+5}ACc?`k?b[*cuyo-2.1.0/data/pics/mtrGras.xpm0000644000175000017500000000370611460117435013436 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "32 32 2 1", " c None", "# c #000000", " ", " ", " ## ", " #### ", " #### ", " ## ## ", " #### ", " #### ", " ## ## ", " #### ", " #### ", " ## ", " ", " ", " ## ", " #### ", " #### ", " ## ", " ## ", " #### ", " #### ", " ## ", " ", " ", " ", " ## ", " #### ", " #### ## ", " ## #### ", " #### ", " ## ", " "}; cuyo-2.1.0/data/pics/lbBomb.xpm0000644000175000017500000001470010211122646013201 00000000000000/* XPM */ static char * lbBomb_xpm[] = { "160 32 86 1", " c None", ". c #CCCCCC", "+ c #DEDE85", "@ c #ECEC4C", "# c #F6F622", "$ c #FDFD09", "% c #FFFF00", "& c #DDBA8A", "* c #EBAA4E", "= c #F69E23", "- c #FD970A", "; c #FF9400", "> c #9B9B9B", ", c #5F5F5F", "' c #313131", ") c #121212", "! c #020202", "~ c #85DE85", "{ c #4CEC4C", "] c #22F622", "^ c #09FD09", "/ c #00FF00", "( c #E4E46D", "_ c #FBFB12", ": c #E1B577", "< c #F99B1A", "[ c #CEC5C5", "} c #DF8080", "| c #ED4949", "1 c #F72121", "2 c #FD0909", "3 c #FF0000", "4 c #868686", "5 c #2A2A2A", "6 c #000000", "7 c #6DE46D", "8 c #12FB12", "9 c #D6D6A5", "0 c #F4F42A", "a c #D1C6B6", "b c #F1A43A", "c c #CDC6C6", "d c #E76262", "e c #BDBDBD", "f c #434343", "g c #A5D6A5", "h c #2AF42A", "i c #DADA95", "j c #D5C3AA", "k c #F89C1C", "l c #DA9393", "m c #F81B1B", "n c #AAAAAA", "o c #1F1F1F", "p c #95DA95", "q c #D0C8BD", "r c #F79D1F", "s c #DF7F7F", "t c #B6B6B6", "u c #1C1C1C", "v c #EEA643", "w c #DC8D8D", "x c #3A3A3A", "y c #DEB986", "z c #D0BABA", "A c #FB1111", "B c #777777", "C c #F59F2A", "D c #EA5252", "E c #1A1A1A", "F c #D8BF9B", "G c #D2B4B4", "H c #8A8A8A", "I c #E7AE5F", "J c #E36F6F", "K c #4E4E4E", "L c #950000", "M c #F20000", "N c #F3A131", "O c #F13A3A", "P c #232323", "Q c #FB9912", "R c #FA1515", "S c #0A0A0A", "T c #FE9502", "U c #FE0202", "................................................................................................................................................................", "................................................................................................................................................................", "................................................................................................................................................................", "...........................................+@#$%$#@+.......................&*=-;-=*&.......................................................>,')!!)',>...........", "...........~{]^/^]{~.....................(_%%%%%%%%%_(...................:<;;;;;;;;;<:....................[}|12321|}[....................45666666666654.........", ".........78/////////87.................90%%%%%%%%%%%%%09...............ab;;;;;;;;;;;;;ba................cd23333333332dc................ef66666666666666fe.......", ".......gh/////////////hg..............i$%%%%%%%%%%%%%%%$i.............jk;;;;;;;;;;;;;;;kj..............lm3333333333333ml..............no6666666666666666on......", "......p^///////////////^p............9$%%%%%%%%%%%%%%%%%$9...........qr;;;;;;;;;;;;;;;;;rq............s33333333333333333s............tu666666666666666666ut.....", ".....g^/////////////////^g...........0%%%%%%%%%%%%%%%%%%%0...........v;;;;;;;;;;;;;;;;;;;v...........w3333333333333333333w...........x66666666666666666666x.....", ".....h///////////////////h..........(%%%%%%%%%%%%%%%%%%%%%(.........y;;;;;;;;;;;;;;;;;;;;;y.........zA3333333333333333333Az.........B6666666666666666666666B....", "....7/////////////////////7........._%%%%%%%%%%%%%%%%%%%%%_.........C;;;;;;;;;;;;;;;;;;;;;C.........D333333333333333333333D.........E6666666666666666666666E....", "....8/////////////////////8........+%%%%%%%%%%%%%%%%%%%%%%%+.......F;;;;;;;;;;;;;;;;;;;;;;;F.......G33333333333333333333333G.......H666666666666666666666666H...", "...~///////////////////////~.......@%%%%%%%%%%%%%%%%%%%%%%%@.......I;;;;;;;;;;;;;;;;;;;;;;;I.......J33333333333333333333333J.......K6666666666LMML6666666666K...", "...{///////////////////////{.......#%%%%%%%%%%%%%%%%%%%%%%%#.......N;;;;;;;;;;;;;;;;;;;;;;;N.......O33333333333333333333333O.......P666666666L3333L666666666P...", "...]///////////////////////].......$%%%%%%%%%%%%%%%%%%%%%%%$.......Q;;;;;;;;;;;;;;;;;;;;;;;Q.......R33333333333333333333333R.......S666666666M3333M666666666S...", "...^///////////////////////^.......%%%%%%%%%%%%%%%%%%%%%%%%%.......T;;;;;;;;;;;;;;;;;;;;;;;T.......U33333333333333333333333U.......6666666666M3333M6666666666...", ".../////////////////////////.......$%%%%%%%%%%%%%%%%%%%%%%%$.......T;;;;;;;;;;;;;;;;;;;;;;;T.......U33333333333333333333333U.......S666666666L3333L666666666S...", "...^///////////////////////^.......#%%%%%%%%%%%%%%%%%%%%%%%#.......Q;;;;;;;;;;;;;;;;;;;;;;;Q.......R33333333333333333333333R.......P6666666666LMML6666666666P...", "...]///////////////////////].......@%%%%%%%%%%%%%%%%%%%%%%%@.......N;;;;;;;;;;;;;;;;;;;;;;;N.......O33333333333333333333333O.......K666666666666666666666666K...", "...{///////////////////////{.......+%%%%%%%%%%%%%%%%%%%%%%%+.......I;;;;;;;;;;;;;;;;;;;;;;;I.......J33333333333333333333333J.......H666666666666666666666666H...", "...~///////////////////////~........_%%%%%%%%%%%%%%%%%%%%%_........F;;;;;;;;;;;;;;;;;;;;;;;F.......G33333333333333333333333G........E6666666666666666666666E....", "....8/////////////////////8.........(%%%%%%%%%%%%%%%%%%%%%(.........C;;;;;;;;;;;;;;;;;;;;;C.........D333333333333333333333D.........B6666666666666666666666B....", "....7/////////////////////7..........0%%%%%%%%%%%%%%%%%%%0..........y;;;;;;;;;;;;;;;;;;;;;y.........zA3333333333333333333Az..........x66666666666666666666x.....", ".....h///////////////////h...........9$%%%%%%%%%%%%%%%%%$9...........v;;;;;;;;;;;;;;;;;;;v...........w3333333333333333333w...........tu666666666666666666ut.....", ".....g^/////////////////^g............i$%%%%%%%%%%%%%%%$i............qr;;;;;;;;;;;;;;;;;rq............s33333333333333333s.............no6666666666666666on......", "......p^///////////////^p..............90%%%%%%%%%%%%%09..............jk;;;;;;;;;;;;;;;kj..............lm3333333333333ml...............ef66666666666666fe.......", ".......gh/////////////hg.................(_%%%%%%%%%_(.................ab;;;;;;;;;;;;;ba................cd23333333332dc..................45666666666654.........", ".........78/////////87.....................+@#$%$#@+.....................:<;;;;;;;;;<:....................[}|12321|}[......................>,')!!)',>...........", "...........~{]^/^]{~.......................................................&*=-;-=*&............................................................................", "................................................................................................................................................................", "................................................................................................................................................................", "................................................................................................................................................................"}; cuyo-2.1.0/data/pics/lp.src.xpm0000644000175000017500000022271611345776166013242 00000000000000/* XPM */ static char *lp_src[] = { /* columns rows colors chars-per-pixel */ "256 288 15 1", " c #000000", ". c #2D0000", "X c #000032", "o c #4F0000", "O c #770000", "+ c #000048", "@ c #000070", "# c #920000", "$ c #BF0000", "% c #CD0000", "& c #FF0C0C", "* c #000096", "= c #0000AF", "- c #0000D6", "; c #0000FF", /* pixels */ " &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&%O &&$O &&$O &&$O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&$O &&$O &&%O &&$O &", " &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &%OO &$OO &$OO &$OO &", " ", "$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&%O &&$o @*--*@ . &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&#. @*--*@ oo &&$O &&$O &&$O &&$O &&$O", "OO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &%OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &%OO &$. X=;;;;;;;;=X o$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &o X=;;;;;;;;=X &$OO &%OO &%OO &$OO &$OO", " *;;;;;;;;;;;;* *;;;;;;;;;;;;* ", " &&%O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O &&$O &&%O & &&%O &&$O &&%O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O &$ +-;;;;;;;;;;;;;;;+ $&$O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O $ +-;;;;;;;;;;;;;;-+ &&$O &&$O &&$O &&%O &", " &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &%OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &%OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &%OO &$OO % +;;;;;;;;;;;;;;;;;;+.$OO &$OO &%OO &%OO & &$OO &$OO &$OO &$OO +;;;;;;;;;;;;;;;;;;+ %$OO &$OO &$OO &$OO &", " X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X ", "$$O &$%O &%$O &$%O &$$O &%$O &$$$$O &$$O &$$O &$$O &$%O &$%O &$$%$O &$%O &$$O &$$O &$%O &$$O &$$$$O &$%O &%$O &$$O &%$O &$%$$O &$$O &$$O &$$O &# =;;;;;;;;;;;;;;;;;;;;= &$$O &$$O &$$O &$$$$O &$$O &%$O &$$O $ *;;;;;;;;;;;;;;;;;;;;= o &$$O &$$O &$%O &$$", "$OO &$OO &$OO &$OO &$OO &$OO &%O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO &$OO &$O ;;;;;; $OO &$OO &$O$OO &$OO &$OO &$OO &.+;;;;;;;;;;;;;;;;;;;;;;+ &$OO &%OO &$OO &%O$OO &$OO &$OO &$OO o+;;;;;;;;;;;;;;;;;;;;;;+. &$OO &$OO &$OO &$O", " ;;;;;; =;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;= ", " &&$O &&%O &&%O &&$O &&#. +*=-;;-=@+ O#O &&$O &&$O &&#. +*=--;-=@+ O#O &&$O &&%O &&$O &&$O & &&$O &&$O ; ; &&$O &&$O & &&$O &&$O &&$O &&$oX;;;;;;;;;;;;;;;;;;;;;;;;Xo &&%O &&#. +@=-;;-=*X O#O &&%O &&OX;;;;;;;;;;;;;;;;;;;;;;;;XOO &&$O &&%O &&$O &", " &%OO &$OO &$OO &$OO %. X*;;;;;;;;;;;;*X . &%OO &$OO %. X*;;;;;;;;;;;;*X . &$OO &$OO &$OO &%OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO &$OO &$O.@;;;;;;;;;;;;;;;;;;;;;;;;@. &$OO %. X*;;;;;;;;;;;;*X . &$OO &$.@;;;;;;;;;;;;;;;;;;;;;;;;@.O &$OO &$OO &$OO &", " X=;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;=X ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;;;;;= X=;;;;;;;;;;;;;;;;=X =;;;;;;;;;;;;;;;;;;;;;;;;= ", "$$O &$$O &$$O &$%O . *;;;;;;;;;;;;;;;;;;;;* &%%O . *;;;;;;;;;;;;;;;;;;;;* . &$$O &$$O &$$O &$$$$O &$$O &$ ;;;;;;;; $O &%$O &$%$$O &%$O &$%O &$$O -;;;;;;;;;;;;;;;;;;;;;;;;- $$O . *;;;;;;;;;;;;;;;;;;;;* . &$%O -;;;;;;;;;;;;;;;;;;;;;;;;- &$%O &$$O &$$O &$$", "$OO &$OO &$OO &$Oo X-;;;;;;;;;;;;;;;;;;;;;;-X $%Oo X-;;;;;;;;;;;;;;;;;;;;;;-X $$OO &$OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$OO &$Oo -;;;;;;;;;;;;;;;;;;;;;;;;=.$#o X-;;;;;;;;;;;;;;;;;;;;;;-X %$Oo =;;;;;;;;;;;;;;;;;;;;;;;;= $%OO &$OO &$OO &$O", " X;;;;;;;;;;;;;;;;;;;;;;;;;-+ +-;;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;@ +-;;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;;;;;;;;;;;;;;;;;;;; ", " &&%O &&%O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;X X;;;;;;;;;;;;;;;;;;;;;;;;;;;;X %&%O &&$O &&$O & &&%O &&%O ;;;;;;;; &&$O &&$O & &&$O &&$O &&$O +;;;;;;;;;;;;;;;;;;;;;;;;;;;;X +;;;;;;;;;;;;;;;;;;;;;;;;;;;;X X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %&$O &&$O &&%O &", " &$OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.%OO &$OO &%OO & &$OO &$Oo ;;;;;;;; .OOO &%OO & &%OO &$OO &%OO X-;;;;;;;;;;;;;;;;;;;;;;;;;;;;- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.%OO &$OO &$OO &", " -;;;;;;;;;;*+X X+*;;;;;;;;;;--;;;;;;;;;;*+X X+*;;;;;;;;;;- +=;;;;;;;;=X -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-=;;;;;;;;;;*+X X+*;;;;;;;;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- ", "$O &&$O &&$O % *;;;;;;;;;@ O#$O%O O @;;;;;;;;;;;;;;;;;;@ O$$O$O O. @;;;;;;;;;* %&%O &&$O &&$O$O &&$o *;;;;;;;;;;;;* OO &&$O$O &&$O &&$O % *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@ O$$O$O O @;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* %&$O &&$O &&$O", "OO &$OO &$OO oX;;;;;;;;-X . &%OOOO &$. X-;;;;;;;;;;;;;;-X . &$OOOO &$. X-;;;;;;;;Xo$OO &$OO &$OOOO &%. +-;;;;;;;;;;;;;;-+ . &$OOOO &$OO &%OO oX;;;;;;;;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X . &$OOOO &$o X-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Xo$OO &$OO &$OO", " =;;;;;;;- X-;;;;;;;;;;;;-X X-;;;;;;;= +;;;;;;;;;;;;;;;;;;+ =;;;;;;;-+;;;;;;;;;;;;;;;;;-;;;;;;;;;;;;-X X-;;;;;;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= ", " &&$O &&$O &OX;;;;;;;;X.O &&$O & &&$O &%.X;;;;;;;;;;;;X.O &&$O & &&%O &%.X;;;;;;;;X. &&%O &&$O & &&$ X-;;;;;;;;;;;;;;;;;;-X.%O & &&$O &&$O &OX;;;;;;;;X X-;;;;;;;;;;;;;;-+;;;;;;;;;;;;X.O &&$O & &&$O &%.X;;;;;;;;;;;; +-;;;;;;;;;;;;;;-+ ;;;;;;;;X. &&%O &&$O &", " &%OO &$OO & *;;;;;;;@ oO &$OO & &$OO &%o @;;;;;;;;;;@ oO &%OO & &$OO &$o @;;;;;;;* &$OO &$OO & &%. =;;;;;;;;;;;;;;;;;;;;= .O & &$OO &$OO & *;;;;;;;@ o. *;;;;;;;;;;;;*X +;;;;;;;;;;@ oO &$OO & &%OO &$o @;;;;;;;;;;@ =;;;;;;;;;;;;= @;;;;;;;* &$OO &%OO &", " ;;;;;;;; ;;;;;;;;;; ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; +=;;;;;;;;=X ;;;;;;;;;; ;;;;;;;;;; X=;;;;;;;;=X -;;;;;;; ", "$$O &$%O &%o+;;;;;;;* O &$$O &&%$$O &$%O & *;;;;;;;;* O &$$O &&$$$O &$$O & *;;;;;;;Xo$O &%$O &&$$%o =;;;;;;;;;;;;;;;;;;;;;;= $&$$$O &%$O &%o+;;;;;;;* O &$#. @*--*@ oo & @;;;;;;;;* O &%$O &&$$$O &$%O & @;;;;;;;;* O &#o @*--*@ o#O & *;;;;;;;+o$O &$$O &&$", "$OO &$OO &%.@;;;;;;;+oO &$OO &$$$OO &$OO &o ;;;;;;;;+.O &%OO &$$$OO &$OO &o+;;;;;;;@.#O &$OO &%$$O.X;;;;;;;;;;;;;;;;;;;;;;;;Xo$$$OO &$OO &$.*;;;;;;;+.O &$OO #o. . #$OO &o ;;;;;;;;+.# &$OO &%$$OO &$OO &o ;;;;;;;;+.O &%OO o. .. &$OO &o+;;;;;;;*.OO &%OO &$$", " =;;;;;;;X ;;;;;;;;X X;;;;;;;= @;;;;;;;;;;;;;;;;;;;;;;;;@ =;;;;;;;X ;;;;;;;; ;;;;;;;;X X;;;;;;;= ", " $$$ $$$ $$ -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;- $$$ $$$ $$$ $ =;;;;;;;;;;;;;;;;;;;;;;;;= %$ $$$ $$$ %% -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$ $$$ $$$ %# ;;;;;;;; $$$ $$$ %$$ $$$ $$$ $$ ;;;;;;;- $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ", " &&$O &&$O ;;;;;;;; &&%O &&$O & &&$O &&%O ;;;;;;;; &&%O &&$O & &&%O &&$O ;;;;;;;; &&%O &&$O & & =;;;;;;;;;;;;;;;;;;;;;;;;= & &&$O &&$O ;;;;;;;; #&$O &&%O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O &", " &$OO &$O# -;;;;;;; %$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO ;;;;;;;- &$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@ & &%OO &$OO -;;;;;;;@ .o &$OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &$OO &%OO ;;;;;;;; &$OO &$OO & &$OO &#. @;;;;;;;- &$OO &$OO &", " =;;;;;;;X ;;;;;;;; X;;;;;;;= X;;;;;;;;;;;;;;;;;;;;;;;;X @;;;;;;;;;=X ;;;;;;;; ;;;;;;;; X=;;;;;;;;;@ ", "$O &&$O &&$.@;;;;;;;+. &&$O &&%O$O &&$O &&$ ;;;;;;;; O &&$O &&$O$O &&$O &&o+;;;;;;;*.O &&$O &&$O$O =;;;;;;;;;;;;;;;;;;;;;;= $%O$O &&%O $. =;;;;;;;;;;;;= &&$O$O &&$O &&$ ;;;;;;;; O &&#. @*--*@ oo &&$ ;;;;;;;; O &&$O &&$O$O &$. *;;;;;;;;;;;;= $&$O &&$O", "OO &$OO &$O.+;;;;;;;* &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$OO &$ *;;;;;;;+.# &$OO &$OOOO +;;;;;;;;;;;;;;;;;;;;;;+ %OOOO &$OO +-;;;;;;;;;;;;;;-+ $%OOOO &$OO &$O ;;;;;;;; O &o X=;;;;;;;;=X &$O ;;;;;;;; O &$OO &$OOOO $ +-;;;;;;;;;;;;;;-+ #OO &$OO", " ;;;;;;;; ;;;;;;;; ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;= +;;;;;;;;;;;;;;;;;;+ ;;;;;;;; *;;;;;;;;;;;;* ;;;;;;;; +;;;;;;;;;;;;;;;;;;+ ", " &&$O &&%O & *;;;;;;;@ #O &&$O & &&$O &&$O ;;;;;;;; &&%O &&%O & &&%O &&# @;;;;;;;* &&$O &&$O & &&% X-;;;;;;;;;;;;;;;;;;-X.%O & &&%O oX-;;;;;;;;;;;;;;;;;;-X. & &&%O &&$O ;;;;;;;; $ +-;;;;;;;;;;;;;;-+ ;;;;;;;; &&%O &&%O & &oX-;;;;;;;;;;;;;;;;;;-X &&%O &", " &%OO &$OO &oX;;;;;;;;X O &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$ X;;;;;;;;X. &$OO &%OO & &$Oo +;;;;;;;;;;;;;;;;;;+ #OO & &$OO =;;;;;;;;;;;;;;;;;;;;* & &$OO &$OO ;;;;;;;; +;;;;;;;;;;;;;;;;;;+ ;;;;;;;; &$OO &$OO & $ =;;;;;;;;;;;;;;;;;;;;= $$OO &", " =;;;;;;;-X ;;;;;;;; X-;;;;;;;= +-;;;;;;;;;;;;;;-+ +;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; X-;;;;;;;;;;;;;;;;;;-X ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;+ ", "$$O &$$O &$$O X;;;;;;;;-X OO &$%$$O &$$O &$ ;;;;;;;; $O &$%O &$$$$O &o X-;;;;;;;;X &$$O &$$O &$$$$O &$O *;;;;;;;;;;;;= O$O &$$$%O % =;;;;;;;;;;;;;;;;;;;;;;= #$$O &%$O &$ ;;;;;;;; *;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; $O &$$O &$$# =;;;;;;;;;;;;;;;;;;;;;;= o &$%", "$OO &$OO &$OO *;;;;;;;;;@ $#O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$Oo @;;;;;;;;;* &$OO &%OO &$O$OO &%Oo X=;;;;;;;;=X %%OO &$O$OO #X;;;;;;;;;;;;;;;;;;;;;;;;Xo$OO &$OO &$ ;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;;+;;;;;;;; OO &$OO &$OOX;;;;;;;;;;;;;;;;;;;;;;;;Xo &$O", " -;;;;;;;;;;@X ;;;;;;;; @;;;;;;;;;;- ;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ ;;;;;;;;=;;;;;;;;;;;;;;;;;;;;;;=;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " &&$O &&$O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.&$O &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$.=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=.$O &", " &$OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &%OO &$OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &%O -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- OO &", " +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ", "$$O &%$O &$%O &$$O -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- $$$O &$$O &$$O &$%$$O &%$O &$ ;;;;;;;; $O &$$O &%$$$O o@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@. &$$", "$OO &$OO &$OO &$#o X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X $$OO &$OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO #X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X. &%O", " +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ", " &&$O &&$O &&%O +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X %&%O &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&%O +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+o&$O &", " &%OO &$OO &$OO X-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.%OO &$OO &%OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= $$OO &", " -;;;;;;;;;;*+X ;;;;;;;; X+*;;;;;;;;;;- ;;;;;;;; X;;;;;;;;;;;;;;;;;;;-X ;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;;+;;;;;;;; X;-;;;;;;;;;;;;;;;;;;X ", "$O &&$O &&$O % *;;;;;;;;;@ O$$O$O &&$O &&$ ;;;;;;;; O &&$O &&$O$O O. @;;;;;;;;;* %&%O &&$O &&$O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O &&$O +;;;;;;;;;;;;;;;;;;+ #$O$O &&$O &&$ ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; O &&$O &&%O$O +;;;;;;;;;;;;;;;;;;+ $O &&$O", "OO &$OO &$OO oX;;;;;;;;-X . &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$. X-;;;;;;;;Xo$OO &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$OO +-;;;;;;;;;;;;-;-+ $$OOOO &$OO &$O ;;;;;;;; X-;;;;;;;;;;;;;;;;;;-X ;;;;;;;; O &$OO &$OOOO $ +-;;;;;;;;;;;;;;-+ #OO &%OO", " =;;;;;;;-X ;;;;;;;; X-;;;;;;;= ;;;;;;;; *;;;;;;;;;;-;* ;;;;;;;; +;;;;;;;;;;;;;;;;;;+ ;;;;;;;; *;;;;;;;;;;;;* ", " &&$O &&$O &OX;;;;;;;;X.O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&%O &%.X;;;;;;;;X. &&%O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O X=;;;;;;;;=X &&$O & &&$O &&$O ;;;;;;;; $ +-;;;;;;;;;;;;;;-+ ;;;;;;;; &&$O &&$O & &&$O O X=;;;;;;;;=+ o&%O &&$O &", " &$OO &$OO & *;;;;;;;@ oO &$OO & &$OO &$OO ;;;;;;;; &$OO &%OO & &$OO &$o @;;;;;;;* &$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &%OO &$OO % ;;;;;;; .o &$OO & &%OO &$OO ;;;;;;;; &# =;;;;;;;;;;;;* o ;;;;;;;; &$OO &$OO & &$OO &#. ;;;;;;; &$OO &$OO &", " ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; X=;;;;;;;;=X ;;;;;;;; -;;;;;;- ", "$$O &$%O &$o+;;;;;;;* O &$%O &&$$$O &%$O &$ ;;;;;;;; $O &$$O &&$$$O &$$O & *;;;;;;;Xo$O &%$O &&$$$O &$%O &$ ;;;;;;;; $O &$%O &&$$$O &$%O &%o+;;;;;;;* O &$$O &&%$$O &$%O &$ ;;;;;;;; $O &#o @*--*@ o#O &% ;;;;;;;; $O &$%O &&$$$O &$$O & *;;;;;;;+o%O &%$O &&$", "$OO &$OO &$.@;;;;;;;+.O &$OO &$$$OO &$OO &$ ;;;;;;;; OO &%OO &$$$OO &$OO &o+;;;;;;;@.#O &$OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$OO &$OO &%.@;;;;;;;+.O &$OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO o. .. &$OO &$ ;;;;;;;; OO &$OO &$$$OO &$OO &o+;;;;;;;*.OO &%OO &$$", " =;;;;;;;X ;;;;;;;; X;;;;;;;= ;;;;;;;; =;;;;;;;X ;;;;;;;; ;;;;;;;; X;;;;;;;= ", " $$% $$$ $$ -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;- $$$ $$$ $$$ $$% $$$ $$ ;;;;;;;; $$$ $$% $$$ $$$ $$$ $$ -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ %$$ $$$ $$$ $$ ;;;;;;;; $$$ $$% $$$ $$$ $$% $$ ;;;;;;;- $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;- ", " &&$O &&%O ;;;;;;;; &&$O &&$O & &&%O &&$O ;;;;;;;; &&$O &&$O & &&$O &&%O ;;;;;;;; &&$O &&$O & &&%O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&%O ;;;;;;;; &&$O &&$O &", " &$OO &$OO -;;;;;;; %%OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO ;;;;;;;- &%OO &$OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &$OO &$O# -;;;;;;; %$OO &$OO & &$OO &%OO ;;;;;;;; &$OO &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO ;;;;;;;- &%OO &$OO &", " =;;;;;;;X X;;;;;;;; ;;;;;;;= ;;;;;;;; =;;;;;;;X ;;;;;;;; ;;;;;;;; ;;;;;;;= ", "$O &&$O &&$.@;;;;;;;+. &&$O &&$O$O &&$O &&o+;;;;;;;; . &&$O &&$O$O &&$O &&o+;;;;;;;@.O &&$O &&$O$O &&$O &#o ;;;;;;;; &&$O &&$O$O &&$O &&$.@;;;;;;;+. &&$O &&%O$O &&$O &%o ;;;;;;;; . &&$O &&$O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O &&$O &&o+;;;;;;;@.O &&$O &&$O", "OO &$OO &$O.X;;;;;;;* &$OO &$OOOO &$OO &$ *;;;;;;;;* &$OO &$OOOO &$OO &% *;;;;;;;+.# &$OO &$OOOO &$OO . X=;;;;;;;;=X .$OO &$OOOO &$OO &$O.+;;;;;;;* &$OO &$OOOO &$OO o X=;;;;;;;;=X o$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$OO &% *;;;;;;;+.# &$OO &$OO", " ;;;;;;;; ;;;;;;;;;; ;;;;;;;; *;;;;;;;;;;;;* ;;;;;;;; =;;;;;;;;;;;;* ;;;;;;;; ;;;;;;;; ", " &&$O &&%O & *;;;;;;;@ #O &&%O & &&%O &&# @;;;;;;;;;;@ #O &&$O & &&$O &&# @;;;;;;;* &&%O &&%O & &&$O +;;;;;;;;;;;;;;;-+ #&$O & &&$O &&%O & *;;;;;;;@ #O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&%O & &&%O &&$O ;;;;;;;; &&$O &&$O & &&$O &&# @;;;;;;;* &&%O &&%O &", " &%OO &$OO &oX;;;;;;;;X.O &$OO & &$OO &$ X;;;;;;;;;;;;X O &%OO & &$OO &$ X;;;;;;;;X. &$OO &$OO & &$#o +;;;;;;;;;;;;;;;;;;+ #OO & &%OO &$OO &oX;;;;;;;;X O &$OO & &%OO +;;;;;;;;;;;;;;;;;;+.#OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$ X;;;;;;;;X. &$OO &$OO &", " =;;;;;;;-X X-;;;;;;;;;;;;-X X-;;;;;;;= X-;;;;;;;;;;;;;;;;;;-X =;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X ;;;;;;;; X-;;;;;;;= ", "$$O &$$O &$$O X;;;;;;;;-X OO &$$$$O &o X-;;;;;;;;;;;;;;-X oO &$$$$O &O X-;;;;;;;;X &$$O &$%O &$$$$O *;;;;;;;;;;;;;;;;;;;;= &$$$$O &$$O &$$O X;;;;;;;;-X OO &$%$$O =;;;;;;;;;;;;;;;;;;;;= &$$$$O &%$O &$ ;;;;;;;; $O &%$O &$$$$O &O X-;;;;;;;;X &$$O &$%O &$$", "$OO &$OO &$OO *;;;;;;;;;@ $$O$Oo @;;;;;;;;;;;;;;;;;;@ $$#$Oo @;;;;;;;;;* &$OO &$OO &$O%OO +;;;;;;;;;;;;;;;;;;;;;;+ &$O$OO &$OO &$OO *;;;;;;;;;@ $#O$OO +;;;;;;;;;;;;;;;;;;;;;;+ &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$Oo @;;;;;;;;;* &$OO &$OO &$O", " -;;;;;;;;;;*+X X+*;;;;;;;;;;--;;;;;;;;;;*+X X+*;;;;;;;;;;- =;;;;;;;;;;;;;;;;;;;;;;= -;;;;;;;;;;@X =;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; @;;;;;;;;;;- ", " &&$O &&$O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.&$O &&%O &&$O & &oX;;;;;;;;;;;;;;;;;;;;;;;;X. & &&$O &&$O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.&$O &&%O &&$O &", " &$OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;X .X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &$OO &$OO & & @;;;;;;;;;;;;;;;;;;;;;;;;@ & &$OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &$OO &$OO &", " X;;;;;;;;;;;;;;;;;;;;;;;;;;X +-;;;;;;;;;;;;;;;;;;;;;;;;-+ =;;;;;;;;;;;;;;;;;;;;;;;;= +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-+ ", "$$O &%$O &$%O &$%o X-;;;;;;;;;;;;;;;;;;;;;;=X $$$o X-;;;;;;;;;;;;;;;;;;;;;;-X $$$O &$$O &$$O &$$$% -;;;;;;;;;;;;;;;;;;;;;;;;- %$$$O &%$O &$%O &$$O -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- $$$O &$$O &$$O &$$", "$OO &$OO &$OO &$OO . *;;;;;;;;;;;;;;;;;;;;* &%OO . *;;;;;;;;;;;;;;;;;;;;* . &$OO &$OO &$OO &$O$O =;;;;;;;;;;;;;;;;;;;;;;;;= $O$OO &$OO &$OO &$#o X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X $$OO &%OO &$OO &$O", " X=;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;=X @;;;;;;;;;;;;;;;;;;;;;;;;@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ", " &&$O &&$O &&$O &&%O %o X*;;;;;;;;;;;;*X . &&$O &&$O %o X*;;;;;;;;;;;;*X . &&$O &&$O &&$O &&%O & &oX;;;;;;;;;;;;;;;;;;;;;;;;X. & &&$O &&$# &#o. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .oo &&$O &&%O &", " &%OO &$OO &%OO &%OO &%o. +@=-;--=*+ ooO &%OO &%OO &%o. +@=-;;-=@+ ooO &$OO &%OO &$OO &$OO & &# =;;;;;;;;;;;;;;;;;;;;;;= o & &%OO &%Oo @*--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---*@ o##O &$OO &", " +;;;;;;;;;;;;;;;;;;;;;;+ X=;;;;;;;;;;;;;;;*+ +;;;;;;;;;;;;;;;;;;;;;;+ +=;;;;;;;;=X X+*;;;;;;;;;;;;;;;=X ", "$O &&$O &&$O &&$O &&$O &&$O &&$O%O &&$O &&%O &&$O &&%O &&$O &&$O%O &&$O &&$O &&$O &&$O &&$O &&$O%O O =;;;;;;;;;;;;;;;;;;;;= O&%O$O &&$o *;;;;;;;;;;;;;;;+ O$#O$O $ =;;;;;;;;;;;;;;;;;;;;= $&$O$O &&$o *;;;;;;;;;;;;* .#O &&%O%O O +;;;;;;;;;;;;;;;= .#O &&$O", "OO &$OO &%OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &%OO &$OO &$OO &$OO &$OOOO & X-;;;;;;;;;;;;;;;;;;-X &$OOOO &$o +-;;;;;;;;;;;;;;-+ . &$OOOO &.X-;;;;;;;;;;;;;;;;;;; &$OOOO &%o +-;;;;;;;;;;;;;;-+ o &$OOOO &$. +-;;;;;;;;;;;;;;-+ o &$OO", " +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$O &&$O &&$O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&%O +-;;;;;;;;;;;;;;-+ #&$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&$O +-;;;;;;;;;;;;;;-+ $&$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo%O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo%O &", " &$OO &$OO &%OO &%OO &$OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &%OO &%OO &$OO &%OO & &$OO # *;;;;;;;;;;;;= &$OO & &$o =;;;;;;;;;;;;;;;;;;;;= oO & &$OO % *;;;;;;;;;;;;= &$OO & &%o =;;;;;;;;;;;;;;;;;;;;= oO & &$o =;;;;;;;;;;;;;;;;;;;;= oO &", " X=;;;;;;;;=X +;;;;;;;;;;;;;;;;;;;;;;+ +=;;;;;;;;=X +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ ", "$$O &%$O &$$O &$$O &$$O &$$O &&$$$O &$$O &$$O &$$O &$$O &%$O &&$$$O &%$O &$$O &$$O &$$O &$$O &&$$$O &$$O #o ;;;;;;;; o &%$O &&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$$$O &%%O %o ;;;;;;;; oo &%%O &&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$", "$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &$OO &% ;;;;;;;; OO &$OO &$$$OoX;;;;;;;;;;;;;;;;;;;;;;;;X#$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$OoX;;;;;;;;;;;;;;;;;;;;;;;;X#$$$#.X;;;;;;;;;;;;;;;;;;;;;;;;X#%$", " ;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ ;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $%$ $$$ $$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$ $$% $$$ $$ ;;;;;;;; $$$ $$% $$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$", " ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;- -;;;;;;;;;;;;;;;;;;;;;;;;- ", " &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &.=;;;;;;;;;;;;;;;;;;;;;;;;= & &&%O &&$O ;;;;;;;; &&%O &&$O & &.=;;;;;;;;;;;;;;;;;;;;;;;;= & &.=;;;;;;;;;;;;;;;;;;;;;;;;= &", " &%OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. & &$OO &$OO ;;;;;;;; &$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. &", " ;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;X X;;;;;;;;;;;;;;;;;;;;;;;;X ", "$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&%O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O =;;;;;;;;;;;;;;;;;;;;;;= %%O$O &&$O &%o ;;;;;;;; . &&$O &&$O$O =;;;;;;;;;;;;;;;;;;;;;;= %$O$O =;;;;;;;;;;;;;;;;;;;;;;= %%O", "OO &$OO &%OO &$OO &%OO &$OO &$OOOO &$OO &$OO &$O# &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OOOO &$OO o X=;;;;;;;;=X o$OO &$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OO", " ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;= *;;;;;;;;;;;;= *;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;= ", " &&%O &&$O %o @*--*@ oo &&$O & &&%O &%o @*--*@ . &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&%O &&$O ;;;;;;;; &&$O &&$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&$O +;;;;;;;;;;;;;;;-+ $&$O & &&$.X;;;;;;;;;;;;;;;;;;;;Xo%O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O &", " &$OO &$OO X=;;;;;;;;=X &$OO & &$OO o X=;;;;;;;;=X o$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO & &$OO X;;;;;;;;;;;;;;;;;;+ $OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO &", " =;;;;;;;;;;;;= *;;;;;;;;;;;;* ;;;;;;;; +-;;;;;;;;;;;;;;-+ X-;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;-+ +-;;;;;;;;;;;;;;-+ ", "$$O &$%o +-;;;;;;;;;;;;;;-+ &$$$$O +-;;;;;;;;;;;;;;-+ $%$O &$$$$O &$%O &%$O &$$O &%$O &$%$$O &$%O &$ ;;;;;;;; $O &%$O &$%$$O &$# =;;;;;;;;;;;;;- OO &$$%$O *;;;;;;;;;;;;;;;;;;;;= &$$$$O &$# *;;;;;;;;;;;;= #%O &$$$$O &O -;;;;;;;;;;;;;* .#$O &$$", "$OO &$O +;;;;;;;;;;;;;;;;;;+ %$O$OO +;;;;;;;;;;;;;;;;;;+ $OO &$O$OO &$OO &$O ;;;;;; $OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO X=;;;;;;;;;;;;;@ $$O$OO +;;;;;;;;;;;;;;;;;;;;;;+ &$#$OO &%OO X=;;;;;;;;=X &$OO &$O$Oo @;;;;;;;;;;;;;=X &$OO &$O", " X-;;;;;;;;;;;;;;;;;;-X ;;;;;;;;;;;;;;;;;;;-X ;;;;;; ;;;;;;;; @*--;;;;;;;;;;@X =;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; @;;;;;;;;;;--*@ ", " &&$O =;;;;;;;;;;;;;;;;;;;;=+-;;-+=;;;;;;;;;;;;;;;;;;;;* $&%O & &&$O &&$O ; ; &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&%O &#o. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .oo &&%O &&$O &", " &%OO +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+.$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO &$OO +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &$OO &$OO &", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; ;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-+ ", "$$O #X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Xo &$$$$O &$$O &$ ;;;;;;;; $O &%$O &$%$$O &$$O &$ ;;;;;;;; $O &%$O &$%$$O &%$O &$$O &$%o -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- $$$O &$$O &$$O &$$", "$OO o@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@. &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$OO &$Oo X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=X $%OO &$OO &$OO &$O", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; ;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ", " &&% -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- $O & &&%O &&$O ;;;;;;;; &&$O &&$O & &&%O &&%O ;;;;;;;; &&$O &&$O & &&$O &&$O &&$O .X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %&$O &&$O &&%O &", " &$O =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=.OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &$OO &$Oo ;;;;;;;; .OOO &%OO & &%OO &$OO &%OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.%OO &$OO &$OO &", " @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ ;;;;;;;; +=;;;;;;;;=X -;;;;;;;;;;*+X +;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; X+*;;;;;;;;;;- ", "%O &#X;;;;;;;;;;;;;;;;;;;;;;;;X.OX;;;;;;;;;;;;;;;;;;;;;;;;X &&%O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O &&$o *;;;;;;;;;;;;* OO &&$O$O &&$O &&$O % *;;;;;;;;;@ O$$O%O $ =;;;;;;;;;;;;;;;;;;;;= $&$O$O &&$O &&$ ;;;;;;;; O &&$O &&%O%O O @;;;;;;;;;* %&$O &&$O &&$O", "OO &# =;;;;;;;;;;;;;;;;;;;;;;= Oo =;;;;;;;;;;;;;;;;;;;;;;= &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &%. +-;;;;;;;;;;;;;;-+ . &$OOOO &$OO &%OO oX;;;;;;;;-X . &$OOOO &oX-;;;;;;;;;;;;;;;;;;-X &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$. X-;;;;;;;;Xo$OO &$OO &$OO", " +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; +;;;;;;;;;;;;;;;;;;+ =;;;;;;;-X +;;;;;;;;;;;;;;;;;;+ ;;;;;;;; X-;;;;;;;= ", " &&$O *;;;;;;;;;;;;;;;;;;;;* & $ =;;;;;;;;;;;;;;;;;;;;* $&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&$ X-;;;;;;;;;;;;;;;;;;-X.%O & &&$O &&$O &OX;;;;;;;;X.O &&$O & &&%O +-;;;;;;;;;;;;;;-+ $&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &%.X;;;;;;;;X. &&%O &&$O &", " &%OO oX-;;;;;;;;;;;;;;;;;;-X. & &.X-;;;;;;;;;;;;;;;;;;;X &%OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &%. =;;;;;;;;;;;;;;;;;;;;= .O & &$OO &$OO & *;;;;;;;@ oO &%OO & &$OO % *;;;;;;;;;;;;= &%OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &%o @;;;;;;;* &$OO &%OO &", " +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;+ ;;;;;;;; X=;;;;;;;;=X ;;;;;;;; -;;;;;;; ", "$$O &$%o +-;;;;;;;;;;;;;;-+ &&$$$# +-;;;;;;;;;;;;;;-+ $$$O &&%$$O &$%O &$ ;;;;;;;; $O &$$O &&%$%o =;;;;;;;;;;;;;;;;;;;;;;= $&$$$O &%$O &%o+;;;;;;;* O &$$O &&$$$O &$$O %o ;;;;;;;; oo &%$O &&$$$O &$%O &$ ;;;;;;;; $O &$%O &&$$$O &$%O & *;;;;;;;+o$O &$$O &&$", "$OO &$OO . *;;;;;;;;;;;;* o &$$$OO $ *;;;;;;;;;;;;* &$OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$O.X;;;;;;;;;;;;;;;;;;;;;;;;Xo$$$OO &$OO &$.*;;;;;;;+.O &%OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$OO &$OO &o+;;;;;;;*.OO &%OO &$$", " @;;;;;;;;;=X X=;;;;;;;;;@ ;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ =;;;;;;;X ;;;;;;;; ;;;;;;;; X;;;;;;;= ", " $$$ $$$ $$ -;;;;;;;@ o $$$ %$$ $$$ %%# @;;;;;;;- $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$ $ =;;;;;;;;;;;;;;;;;;;;;;;;= %$ $$$ $$$ %% -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$ $$% $$$ $$ ;;;;;;;; $$$ $$% $%$ $$$ $$$ $$ ;;;;;;;- $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; ;;;;;;;; ;;;;;;;; ;;;;;;;; ", " &&$O &&$O ;;;;;;;; &&$O &&%O & &&$O &&%O ;;;;;;;; &&%O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & & =;;;;;;;;;;;;;;;;;;;;;;;;= & &&$O &&%O ;;;;;;;; &&$O &&$O & &&%O &&$O ;;;;;;;; &&%O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&%O ;;;;;;;; &&$O &&$O &", " &$OO &$O# -;;;;;;; %$OO &$OO & &$OO &%OO ;;;;;;;- &$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@ & &$OO &$OO -;;;;;;; %%OO &$OO & &$OO &%OO ;;;;;;;; %$OO &$OO & &%OO &$OO ;;;;;;;; %%OO &$OO & &$OO &$OO ;;;;;;;- &%OO &$OO &", " =;;;;;;;X X;;;;;;;= ;;;;;;;; X;;;;;;;;;;;;;;;;;;;;;;;;X =;;;;;;;X X;;;;;;;; X;;;;;;;; ;;;;;;;= ", "$O &&$O &&$.@;;;;;;;+. &&#. @*--*@ oo &&o+;;;;;;;*.O &&$O &&$O$O &&$O &&$ ;;;;;;;; O &&$O &&$O$O =;;;;;;;;;;;;;;;;;;;;;;= $%O$O &&$O &&$.@;;;;;;;+. &&#. @*--*@ oo &&o+;;;;;;;; . &&$O &&$O$O &&$O &&o+;;;;;;;; . &&#. @*--*@ oo &&o+;;;;;;;@.O &&$O &&$O", "OO &$OO &$O.+;;;;;;;* &o +=;;;;;;;;=X &$ *;;;;;;;X.O &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO +;;;;;;;;;;;;;;;;;;;;;;+ %OOOO &$OO &$O.X;;;;;;;* &o X=;;;;;;;;=X &$ *;;;;;;;;* &$OO &$OOOO &$OO &$ *;;;;;;;;@ &o X=;;;;;;;;=X &$ *;;;;;;;+.# &$OO &$OO", " ;;;;;;;; *;;;;;;;;;;;;* -;;;;;;; ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; *;;;;;;;;;;;;= ;;;;;;;;;; ;;;;;;;;;; *;;;;;;;;;;;;* ;;;;;;;; ", " &&$O &&%O & *;;;;;;;+ +-;;;;;;;;;;;;;;-+ @;;;;;;;* &&%O &&%O & &&$O &&$O ;;;;;;;; &&%O &&%O & &&% X-;;;;;;;;;;;;;;;;;;-X.%O & &&$O &&%O & *;;;;;;;+ +-;;;;;;;;;;;;;;-+ +;;;;;;;;;;@ #O &&$O & &&%O &&# @;;;;;;;;;;+ X;;;;;;;;;;;;;;;-+ +;;;;;;;* &&%O &&%O &", " &%OO &$OO &oX;;;;;;;;+;;;;;;;;;;;;;;;;;;+;;;;;;;;X. &$OO &$OO & &%OO &%OO ;;;;;;;; &$OO &$OO & &$Oo +;;;;;;;;;;;;;;;;;;+ #OO & &%OO &$OO &oX;;;;;;;;+;;;;;;;;;;;;;;;;;;+;;;;;;;;;;;;X O &%OO & &$OO &$ X;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;;+;;;;;;;;X. &$OO &$OO &", " =;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= ;;;;;;;; +-;;;;;;;;;;;;;;-+ =;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;;;;;;-X X-;;;;;;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= ", "$$O &$$O &$$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X &%$O &%$O &$$$$O &$$O &$ ;;;;;;;; $O &%$O &$$$$O &$O *;;;;;;;;;;;;= O$O &$$$$O &$$O &$$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X oO &$$$%# &o X-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X &$$O &$%O &$$", "$OO &$OO &$OO *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* &$OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &%Oo X=;;;;;;;;=X %%OO &$O$OO &$OO &$OO *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@ $$#$Oo @;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* &$OO &$OO &$O", " -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--;;;;;;;;;;*+X +*;;;;;;;;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- ", " &&$O &&$O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.&$O &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.&$O &&%O &&$O &", " &$OO &$OO &$OO .X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &%OO &$OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &$OO &$OO ;;;;;;;; &%OO &$OO & &$OO &$OO &$OO +;;;;;;;;;;;;;;;;;;;;;;;;;;;;X .X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &$OO &$OO &", " ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;; ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;; +-;;;;;;;;;;;;;;;;;;;;;;;;-+ ;;;;;;;;;;;;;;;;;;;;;;;;;; ", "$$O &%$O &$%O &$%o --;;;;;;;;;;;;;;;;;;;;;;-- $%$O &$$O &$$O &%$$$O &%$O &$ ;;;;;;;; $O &$$O &%$$$O &%$O &$ ;;;;;;;; $O &$$O &%$$$O &%$O &$%O &$%o -;;;;;;;;;;;;;;;;;;;;;;;;- $$$o X-;;;;;;;;;;;;;;;;;;;;;;-X %%%o -;;;;;;;;;;;;;;;;;;;;;;;;- $$$O &$$O &$$O &$$", "$OO &$OO &$OO &$Oo =-;;;;;;;;;;;;;;;;;;;;;;-= $$OO &%OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$OO &$OO =;;;;;;;;;;;;;;;;;;;;;;;;= &$OO . *;;;;;;;;;;;;;;;;;;;;* . &$OO =;;;;;;;;;;;;;;;;;;;;;;;;= &$OO &$OO &$OO &$O", " ;;;;;;;;;;;;;;;;;;;;;;;;;-X ;;;;;;;; ;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ X=;;;;;;;;;;;;;;;;=X @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " &&$O &&$O &&%O .X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %&$O &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&$O &&$O &&$O &&OX;;;;;;;;;;;;;;;;;;;;;;;;XOO &&$O %o X*;;;;;;;;;;;;*X . &&$O &&OX;;;;;;;;;;;;;;;;;;;;;;;;XOO &&$O &&$O &&%O &", " &%OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.$OO &$OO &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &%OO &$OO &%OO &$O =;;;;;;;;;;;;;;;;;;;;;;= OO &%OO &%o. +@=-;;-=@+ ooO &$OO &$o =;;;;;;;;;;;;;;;;;;;;;;= oO &%OO &$OO &$OO &", " -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ ", "$O &&$O &&$O % *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* %&$O &&$O &&%O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O &&$O &&$ ;;;;;;;; O &&$O &&%O$O &&$O &&$O &&$O &$ =;;;;;;;;;;;;;;;;;;;;= &&$O &&%O &&$O &&$O$O &&%O &&$O &&$O &$ =;;;;;;;;;;;;;;;;;;;;= &&$O &&$O &&$O &&$O", "OO &$OO &$OO oX;;;;;;;;-;;;;;;;;;;;;;;;;-;;;;;;;;Xo$OO &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$OO &$O ;;;; O &$OO &$OOOO &$OO &%OO &$OO &$.X-;;;;;;;;;;;;;;;;;;-X. &$OO &$OO &$OO &$OOOO &$OO &$OO &%OO &$.X-;;;;;;;;;;;;;;;;;;-X. &$OO &$OO &$OO &$OO", " =;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= ;;;;;;;; +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$O &&$O &OX;;;;;;;; +-;;;;;;;;;;;;;;-+ ;;;;;;;;X. &&$O &&$O & &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&$O &&$O &&$O &&$O $ +-;;;;;;;;;;;;;;-+ &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O $ +-;;;;;;;;;;;;;;-+ &&%O &&$O &&$O &&$O &", " &$OO &$OO & *;;;;;;;@ *;;;;;;;;;;;;* @;;;;;;;* &%OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO &$OO &$OO &%OO &$OO & &$OO &$OO &%OO &%OO &# *;;;;;;;;;;;;= o &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &# =;;;;;;;;;;;;= o &$OO &%OO &$OO &%OO &", " ;;;;;;;; X=;;;;;;;;=X ;;;;;;;; ;;;;;;;; +=;;;;;;;;*X X=;;;;;;;;=X ", "$$O &$%O &$o+;;;;;;;* O &#o @*--*@ o#O & *;;;;;;;+o%O &$%O &&$$$O &$%O &$ ;;;;;;;; $O &$%O &&$$$O &$%O &$%O &$$O &$$O &$%O &&$$$O &%$O &$$O &$$O &$$O &#o @*--*@ o#O &$$O &$$O &$$O &%$O &&$$$O &$%O &$$O &$$O &$$O &#o @*--*@ o#O &$$O &$$O &$$O &$$O &&$", "$OO &$OO &$.@;;;;;;;+.O &%OO o. .. &$OO &o+;;;;;;;@.OO &$OO &$$$OO &$OO &$ ;;;;;;;; OO &$OO &$$$OO &$OO &%OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &$OO o. .. &$OO &%OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &$OO o. .. &$OO &$OO &$OO &$OO &%OO &$$", " =;;;;;;;X X;;;;;;;= ;;;;;;;; ", " $$% $$$ $$ -;;;;;;; $$$ $$$ $$$ $$$ $$$ $$ ;;;;;;;- %$$ $$% $$$ $$% $$$ $$ ;;;;;;;; $$$ $$% $$$ $$% $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $%% $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ %$$ $$$ $$$ %$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ;;;;;;;; ", " &&$O &&%O ;;;;;;;; &&$O &&$O & &&%O &&$O ;;;;;;;; &&%O &&$O & &&$O &&%O ;;;;;;;; &&%O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O &&%O &&$O &", " &$OO &$OO -;;;;;;; %%OO &$OO & &$OO &$OO ;;;;;;;- &$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO &", " =;;;;;;;X X;;;;;;;= ;;;;;;;; ", "$O &&$O &&$.@;;;;;;;+. &&$O &&$O$O &&$O &&o+;;;;;;;*.O &&$O &&$O$O &&$O &&$ ;;;;;;;; O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &%o @*--*@ . &&$O &&$O", "OO &$OO &$O.X;;;;;;;* &$OO &$OOOO &%OO &$ *;;;;;;;+.# &$OO &$OOOO &$OO &$O ;;;;;;;; O &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO O +=;;;;;;;;=X o$OO &$OO", " ;;;;;;;; -;;;;;;; ;;;;;;;; *;;;;;;;;;;;;= ", " &&$O &&%O o ;;;;;;; #O &&%O & &&$O %o @;;;;;;;X &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&%O & &&%O &&$O &&%O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&%O & &&$O +-;;;;;;;;;;;;;;-+ $&%O &", " &%OO &$O. X=;;;;;;;;;X . &$OO & &$OO X=;;;;;;;;;X &$OO &%OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$OO &$OO &$OO &%OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &%OO &%OO &$OO &$OO & &$OO +;;;;;;;;;;;;;;;;;;+.#OO &", " =;;;;;;;;;;;-* *;;;;;;;;;;;;* ;;;;;;;; X-;;;;;;;;;;;;;;;;;;-X ", "$$O &$# +-;;;;;;;;;;;;;--+ o &$$%%o +-;;;;;;;;;;;;;;-+ &%$O &$$$$O &$$O &$ ;;;;;;;; $O &$%O &$$$$O &$%O &$$O &$$O &%$O &$$O &$$$$O &%$O &%$O &$%O &$$O &%$O &$$$$O &%$O &%$O &$%O &$$O &%$O &$%$$O &$$O &$$O &$$O &$$O &$$O &$$$$O =;;;;;;;;;;;;;;;;;;;;= &$$", "$OO &$ +;;;;;;;;;;;;;;;;;;+ $$O$o +;;;;;;;;;;;;;;;;;;+ %$OO &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO &$OO &$OO &$OO &$OO &$OO &$O$OO +;;;;;;;;;;;;;;;;;;;;;;+ &$O", " X-;;;;;;;;;;;;;;;;;;; X-;;;;;;;;;;;;;;;;;;-X ;;;;;;;; =;;;;;;;;;;;;;;;;;;;;;;= ", " &&$o =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&%O &&$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; &$O &&$O & &&$ ;;;;;;;;;;;;;;;;;;;;;; O & &#X;;;;;;;;;;;;;;;;;;;;;;;;X. &", " &$O.+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ &%OO & &$OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; OO &$OO & &$ ;;;;;;;;;;;;;;;;;;;;; ;; & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. &", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;; ;; =;;;;;;;;;;;;;;;;;;;;;;;;= ", "$$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XOO &$$$$O &%$O &$ ;;;;;;;; $O &$$O &$$$$O &$$O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; &%$O &$%$$O ;;;;;;;;;;;;;;;;;;;;;; ;; $$$$ -;;;;;;;;;;;;;;;;;;;;;;;;- % ", "%OO @;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@.O &$O$OO &$OO &$ ;;;;;;;; OO &$OO &$O$OO &$OO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; &$OO &$O$OO ;;;;;;;;;;;;;;;;;;;;;; ;; $O%O =;;;;;;;;;;;;;;;;;;;;;;;;=.$ ", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;; ;; @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " && -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- &$O & &&$O &&$O ;;;;;;;; &&$O &&%O & &&$O && ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; $O &&$O & && ;;;;;;;;;;;;;;;;;;;;; ;; & &#X;;;;;;;;;;;;;;;;;;;;;;;;X. &", " &% =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=.%OO & &%OO &$OO ;;;;;;;; &$OO &$OO & &$OO &$O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $OO &$OO & &$O ;;;;;;;;;;;;;;;;;;;;;; O & &$ =;;;;;;;;;;;;;;;;;;;;;;= O &", " @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ ;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;+ ", "$O #X;;;;;;;;;;;;;;;;;;;;;;;;XooX;;;;;;;;;;;;;;;;;;;;;;;;Xo &&$O$O &&$O &&$ ;;;;;;;; O &&$O &&$O%O &&$O &&%O &&$O &&%O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&%O$O &&$O &&$O &&$O &&$O &&$O &&%O$O $ =;;;;;;;;;;;;;;;;;;;;= $&$O", "OO % =;;;;;;;;;;;;;;;;;;;;;;= oO =;;;;;;;;;;;;;;;;;;;;;;= o &$OOOO &$OO &$O ;;;; O &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &%OO &$OO &$OO &$OOOO &$OO &$OO &%OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &.X-;;;;;;;;;;;;;;;;;;-X &$OO", " +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$o =;;;;;;;;;;;;;;;;;;;;= o & =;;;;;;;;;;;;;;;;;;;;= &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&$O &&$O &&%O &&$O & &&$O &&$O &&$O &&$O &&%O &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&$O &", " &$OO X-;;;;;;;;;;;;;;;;;;-X.O & oX-;;;;;;;;;;;;;;;;;;-X. &$OO & &$OO &$OO &%OO &%OO &$OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &%OO &$OO & &$OO $. *;;;;;;;;;;;;* &$OO &", " +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ X=;;;;;;;;=X ", "%$O &$# +-;;;;;;;;;;;;;;-+ o &&$$%o +-;;;;;;;;;;;;;;-+ &%$O &&$$$O &%$O &$$O &$$O &$$O &$$O &&$$$O &$$O &$$O &$$O &$$O &%$O &&$$$O &$%O &$$O &$%O &$$O &$$O &&%$$O &$%O &$$O &$%O &$$O &$$O &&%$$O &$%O &$%O &$$O &$$O &$%O &&$$$O &$$O %o ;;;;;;;; oo &%$O &&$", "$OO &$Oo *;;;;;;;;;;;;* .oO &$$$OO . *;;;;;;;;;;;;* o &$OO &%$$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &%OO &$OO &$OO &$OO &$$%OO &$OO &$ ;;;;;;;; OO &%OO &$$", " +=;;;;;;;;=X X=;;;;;;;;;;+ ;;;;;;;; ", " $$$ $%$ %# -;;;;;;; o# $$$ $$$ $$$ $#o @*;;;;;;;- $%% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$ ;;;;;;;; $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ;;;;;;;; ", " &&$O &&$O ;;;;;;;; &&$O &&$O & &&$O &&%O ;;;;;;;; &&$O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O &&%O &&$O &&%O &&$O & &&$O &&$O &&%O &&%O &&$O &&$O & &&$O &&$O &&%O &&$O &&$O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O &", " &%OO &$OO -;;;;;;; %%OO &$OO & &$OO &$OO ;;;;;;;- &%OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &%OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO ;;;;;;;; &$OO &$OO &", " =;;;;;;;X ;;;;;;;= ;;;;;;;; ", "$O &&$O &&$.@;;;;;;;+. &&#. @*--*@ oo &&o+;;;;;;;@.O &&$O &&$O$O &&$O &&$O &&$O &&$O &&#. @*--*@ oo &&$O &&$O &&$O &&$O &&%O$O &&$O &%o @*--*@ . &&$O &&$O$O &&$O &&$O &&$O &&$O &&#. @*--*@ oo &&$O &&$O &&$O &&$O &&%O$O &&$O &%o ;;;;;;;; . &&$O &&$O", "OO &$OO &$#.+;;;;;;;* &o X=;;;;;;;;=X &$ *;;;;;;;+.# &$OO &$OOOO &$OO &$OO &$OO &%OO &o +=;;;;;;;;=X &%OO &$OO &$OO &$OO &$OOOO &$OO o X=;;;;;;;;=X o$OO &$OOOO &$OO &$OO &$OO &$OO &o +=;;;;;;;;=X &%OO &$OO &$OO &$OO &$OOOO &$OO O +=;;;;;;;;=X o$OO &$OO", " ;;;;;;;; *;;;;;;;;;;;;* ;;;;;;;; *;;;;;;;;;;;;= =;;;;;;;;;;;;* *;;;;;;;;;;;;= *;;;;;;;;;;;;= ", " &&%O &&$O & *;;;;;;;+ +-;;;;;;;;;;;;;;-+ +;;;;;;;* &&%O &&%O & &&%O &&$O &&%O &&$O % +-;;;;;;;;;;;;;;-+ &&%O &&%O &&$O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&%O & &&$O &&%O &&$O &&$O % +-;;;;;;;;;;;;;;-+ &&%O &&%O &&$O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&%O &", " &$OO &$OO &oX;;;;;;;;+;;;;;;;;;;;;;;;;;;+;;;;;;;;X. &$OO &$OO & &$OO &$OO &$OO &$OO +;;;;;;;;;;;;;;;;;;+ %$OO &$OO &$OO &$OO & &%OO +;;;;;;;;;;;;;;;;;;+.#OO & &%OO &$OO &%OO &%OO +;;;;;;;;;;;;;;;;;;+ %$OO &$OO &$OO &$OO & &$OO +;;;;;;;;;;;;;;;;;;+.#OO &", " =;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X ", "$$O &$%O &$$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X &$$O &$%O &$$$$O &$%O &$$O &$$O $ =;;;;;;;;;;;;;;;;;;;;= o &%%O &$$O &%$O &$$$$O =;;;;;;;;;;;;;;;;;;;;= &$$$$O &$$O &$$O &$$O $ =;;;;;;;;;;;;;;;;;;;;= o &%%O &$$O &%$O &$%$$O =;;;;;;;;;;;;;;;;;;;;= &$$", "$OO &$OO &$OO *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* &$OO &$OO &$O$OO &$OO &$OO &$OO o+;;;;;;;;;;;;;;;;;;;;;;+. &$OO &$OO &$OO &$O$OO +;;;;;;;;;;;;;;;;;;;;;;+ &$O$OO &$OO &$OO &$OO o+;;;;;;;;;;;;;;;;;;;;;;+. &$OO &$OO &$OO &$O$OO +;;;;;;;;;;;;;;;;;;;;;;+ &$O", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- =;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;= ", " &&$O &&%O &&%O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X.&$O &&%O &&$O & &&%O &&$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; &$O &&$O & &#X;;;;;;;;;;;;;;;;;;;;;;;;X. &", " &%OO &$OO &$OO +;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %%OO &$OO &$OO & &$OO &$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. &", " ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; =;;;;;;;;;;;;;;;;;;;;;;;;= ", "$$O &$$O &$$O &$%o -;;;;;;;;;;;;;;;;;;;;;;;;- $$$O &$$O &$$O &$$$$O &$$O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; &%$O &$%$$ -;;;;;;;;;;;;;;;;;;;;;;;;- $%", "$OO &$OO &$OO &$Oo =;;;;;;;;;;;;;;;;;;;;;;;;= $%OO &$OO &$OO &$O$OO &$OO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; &$OO &$O%O =;;;;;;;;;;;;;;;;;;;;;;;;=.$O", " ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " &&%O &&%O &&$O X;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ %&$O &&$O &&%O & &&$O && ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; $O &&$O & &#X;;;;;;;;;;;;;;;;;;;;;;;;X. &", " &$OO &$OO &$OO X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X.%OO &$OO &$OO & &$OO &$O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $OO &$OO & &$ =;;;;;;;;;;;;;;;;;;;;;;= O &", " -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ ", "$O &&$O &&$O % *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* %&$O &&$O &&$O%O &&$O &&%O &&$O &$ =;;;;;;;;;;;;;;;;;;;;= &&$O &&$O &&$O &&%O$O $ =;;;;;;;;;;;;;;;;;;;;= $&$O$O &&$O &&$O &&$O &$ =;;;;;;;;;;;;;;;;;;;;= &&$O &&$O &&$O &&%O$O $ =;;;;;;;;;;;;;;;;;;;;= $&$O", "OO &$OO &$OO oX;;;;;;;;-;;;;;;;;;;;;;;;;-;;;;;;;;Xo$OO &$OO &$OOOO &$OO &$OO &$OO &$.X-;;;;;;;;;;;;;;;;;;-X. &%OO &$OO &$OO &$OOOO &.X-;;;;;;;;;;;;;;;;;;; &$OOOO &$OO &$OO &$OO &$.X-;;;;;;;;;;;;;;;;;;-X. &%OO &$OO &$OO &$OOOO &.X-;;;;;;;;;;;;;;;;;;-X &$OO", " =;;;;;;;-;;;;;;;;;;;;;;;;;;-;;;;;;;= +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$O &&$O &OX;;;;;;;; +-;;;;;;;;;;;;;;-+ ;;;;;;;;X. &&%O &&$O & &&%O &&$O &&%O &&%O $ +-;;;;;;;;;;;;;;-+ &&$O &&$O &&%O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&$O & &&$O &&$O &&$O &&$O $ +-;;;;;;;;;;;;;;-+ &&$O &&$O &&%O &&$O & &&$O +-;;;;;;;;;;;;;;-+ $&$O &", " &%OO &$OO & *;;;;;;;@ =;;;;;;;;;;;;= @;;;;;;;* &$OO &%OO & &$OO &$OO &$OO &$OO &# *;;;;;;;;;;;;* o &$OO &$OO &$OO &$OO & &$OO % *;;;;;;;;;;;;= &$OO & &$OO &$OO &$OO &$OO &# *;;;;;;;;;;;;* o &$OO &$OO &$OO &$OO & &$OO $. *;;;;;;;;;;;;* &$OO &", " ;;;;;;;; X=;;;;;;;;=X -;;;;;;; X=;;;;;;;;=X +=;;;;;;;;=X +=;;;;;;;;=X X=;;;;;;;;=X ", "$$O &$%O &%o+;;;;;;;* O &#o @*--*@ o#O & *;;;;;;;+o$O &$$O &&$$$O &$$O &$$O &$$O &$%O &#o *--= o#O &$%O &$%O &$$O &$$O &&%$$O &%%O %o *--* oo &%%O &&$$$O &$%O &$%O &$$O &$$O &#o *--= o#O &$%O &$%O &$$O &$$O &&%$$O &$$O %o *--* oo &%$O &&$", "$OO &$OO &%.@;;;;;;;+oO &%OO o. .. &$OO &o+;;;;;;;*.OO &%OO &$$$OO &$OO &$OO &$OO &$OO &$OO O. .. &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$Oo . . #$OO &$OO &$$$OO &$OO &%OO &$OO &$OO &%OO o. .. &$OO &$OO &$OO &$OO &$OO &$$%OO &$OO &$Oo . . #$OO &%OO &$$", " =;;;;;;;X X;;;;;;;= ", " $$$ $$$ $$ -;;;;;;; $$$ $$$ %$$ $$$ $$$ $$ ;;;;;;;- $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $%% $$$ $$$ $$% $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ %$$ $%$ $$$ $$$ $$$", " ;;;;;;;; ;;;;;;;; ", " &&$O &&$O ;;;;;;;; #&%O &&$O & &&$O &&$O ;;;;;;;; &&%O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&%O &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&$O & &&%O &&$O &&$O &&%O &&$O &&$O & &&$O &&$O &&%O &&%O &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&$O &", " &$OO &$O# -;;;;;;;@ .o &%OO & &$OO &#. @;;;;;;;- &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &$OO &$OO &$OO &$OO &", " @;;;;;;;;;*X X=;;;;;;;;;@ ", "$O &&$O $. *;;;;;;;;;;;;* &&$O$O &$. *;;;;;;;;;;;;= $&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&$O", "OO &%OO +-;;;;;;;;;;;;;;-+ $$OOOO $ +-;;;;;;;;;;;;;;-+ #OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &%OO &$OO &$OO &$OOOO &%OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &%OO &$OO &$OO", " +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$O oX-;;;;;;;;;;;;;;;;;;;X. & &oX-;;;;;;;;;;;;;;;;;;-X &&%O & &&%O &&$O &&%O &&$O &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&%O & &&$O &&$O %o @*--*@ oo &&%O & &&$O &%o @*--*@ . &&$O &&$O & &&$O &&%O &&$O &&$O &&%O &&%O & &&$O &&$O &&$O &&$O &&$O &&%O &", " &%OO =;;;;;;;;;;;;;;;;;;;;= & $ =;;;;;;;;;;;;;;;;;;;;= $$OO & &$OO &$OO &$OO &$OO &%OO &%OO & &%OO &$OO &%OO &%OO &$OO &$OO & &%OO &$OO X=;;;;;;;;=X &$OO & &$OO o X=;;;;;;;;=X o$OO &%OO & &%OO &$OO &%OO &%OO &$OO &$OO & &%OO &$OO &%OO &$OO &$OO &$OO &", " +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ *;;;;;;;;;;;;* =;;;;;;;;;;;;* ", "$$O % =;;;;;;;;;;;;;;;;;;;;;;= ## =;;;;;;;;;;;;;;;;;;;;;;= o &$%$$O &$%O &$$O &%$O &$$O &$$O &$$$$O &$$O &$$O &$$O &$$O &$$O &$$$$O &$$o +-;;;;;;;;;;;;;;;+ &$%$$O +-;;;;;;;;;;;;;;-+ $$$O &$$$$O &$$O &$$O &$$O &$$O &$$O &$$$$O &$$O &$$O &$$O &$$O &$%O &$$", "$OO #X;;;;;;;;;;;;;;;;;;;;;;;;XoOX;;;;;;;;;;;;;;;;;;;;;;;;Xo &$O$OO &$OO &$OO &$OO &%OO &$OO &%O$OO &$OO &%OO &$OO &$OO &$O# &$O$OO &$O +;;;;;;;;;;;;;;;;;;+ %$O$OO +;;;;;;;;;;;;;;;;;;+ $OO &$O$OO &$OO &%OO &$OO &$OO &$O# &$O$OO &$OO &$OO &$OO &$OO &$OO &$O", " @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X ", " &&$ =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=.$O & &&%O &&$O &&$O &&%O &&#. +@=-;--=*+ O#O &&%O &&%O &&#. +@=-;;-=@+ =;;;;;;;;;;;;;;;;;;;;*+-;;-+=;;;;;;;;;;;;;;;;;;;;= +@=-;--=*+ O#O &&%O &&%O &&#. +@=-;;-=@+ O#O &&$O &&$O &&%O &&$O &", " &$O -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- OO & &$OO &$OO &$OO &$OO %. X*;;;;;;;;;;;;*X . &$OO &%OO %. X*;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;;;;;;;;;;*X . &$OO &%OO %. X*;;;;;;;;;;;;*X . &%OO &$OO &$OO &$OO &", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= X=;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;=X ", "$$# o@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@. &$$$$O &$$O &$$O &$$O . *;;;;;;;;;;;;;;;;;;;;* &$$O . *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* &$$O . *;;;;;;;;;;;;;;;;;;;;* &%%O &$$O &$$O &$$", "$OO #X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X. &%O$OO &$OO &$OO &%Oo X-;;;;;;;;;;;;;;;;;;;;;;-X $$#o X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X $$#o X=;;;;;;;;;;;;;;;;;;;;;;-X $$OO &%OO &$OO &$O", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= +-;;;;;;;;;;;;;;;;;;;;;;;;-+ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-+ +;;;;;;;;;;;;;;;;;;;;;;;;;;+ ", " &&$O +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+o&$O & &&$O &&%O &#o. ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; .oo &&$O &&%O &", " &%OO *;;;;;;;;;;;;;;;;;;;;=+-;;-+=;;;;;;;;;;;;;;;;;;;;= $$OO & &$OO &$Oo @*--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---*@ o##O &$OO &", " X-;;;;;;;;;;;;;;;;;;-X X;;;;;;;;;;;;;;;;;;;;X X=;;;;;;;;;;;;;;;*+X X+*-;;;;;;;;;;;;;;;;;;;;;*+ X+X;;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;;X+X X+*-;;;;;;;;;;;;;;;;;;;;;*+ X+*;;;;;;;;;;;;;;;=X ", "$O &&$O +;;;;;;;;;;;;;;;;;;+.%$O$O +;;;;;;;;;;;;;;;;;;+ $O &&$O%O &&%o *;;;;;;;;;;;;;;;+ O$$O$O O +;;;;;;;;;;;;;;;;;;+ O$#O%O O X;;;;;;;;;;;;;;;;;;;;;;;;XoOX;;;;;;;;;;;;;;;;;;;;;;;;X O$##$O O +;;;;;;;;;;;;;;;;;;+ O$#O%O O +;;;;;;;;;;;;;;;= .#O &&$O", "OO &$OO +-;;;;;;;;;;;;;;-+ $$OOOO % +-;;;;;;;;;;;;;;-+ #OO &%OOOO &$o +-;;;;;;;;;;;;;;;+ . &$OOOO &%. +-;;;;;;;;;;;;;;-+ . &$OOOO &# =;;;;;;;;;;;;;;;;;;;;;;= OO =;;;;;;;;;;;;;;;;;;;;;;= &$OOOO &%. +-;;;;;;;;;;;;;;-+ . &$OOOO &$. +-;;;;;;;;;;;;;;-+ o &$OO", " *;;;;;;;;;;;;* *;;;;;;;;;;;;* +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", " &&$O &&$O X=;;;;;;;;=X &&$O & &&$O O X=;;;;;;;;=X o&$O &&$O & &&%.X-;;;;;;;;;;;;;;;;;;-Xo%O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&$O =;;;;;;;;;;;;;;;;;;;;= & $ =;;;;;;;;;;;;;;;;;;;;* $&$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo%O &", " &$OO &$OO %o @*--*@ .o &$OO & &$OO &#. @*--*@ . &$OO &$OO & &$o *;;;;;;;;;;;;;;;;;;;;= oO & &$o =;;;;;;;;;;;;;;;;;;;;= oO & &$OO oX-;;;;;;;;;;;;;;;;;;-X. & &.X-;;;;;;;;;;;;;;;;;;-X &$OO & &$o =;;;;;;;;;;;;;;;;;;;;= oO & &$o =;;;;;;;;;;;;;;;;;;;;= oO &", " +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;+ ", "$$O &$%O &$$O &$$O &$$O &%%O &&$$$O &$$O &$$O &$$O &$%O &%$O &&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&%$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$$$O &$%o +-;;;;;;;;;;;;;;-+ &&$$$O +-;;;;;;;;;;;;;;-+ $%$O &&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$$$O =;;;;;;;;;;;;;;;;;;;;;;= %&$", "$OO &$OO &%OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &%OO &$$$OoX;;;;;;;;;;;;;;;;;;;;;;;;X#$$$OoX;;;;;;;;;;;;;;;;;;;;;;;;X#$$$OO &$OO . *;;;;;;;;;;;;= o &$$$OO $. *;;;;;;;;;;;;* &$OO &$$$OoX;;;;;;;;;;;;;;;;;;;;;;;;X#$$$#.X;;;;;;;;;;;;;;;;;;;;;;;;X#%$", " @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ ;;;;;;;;;;=X X=;;;;;;;;;; @;;;;;;;;;;;;;;;;;;;;;;;;@ @;;;;;;;;;;;;;;;;;;;;;;;;@ ", " $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$ $$$ $$% $$ ;;;;;;;;@ o %$$ $$$ $$$ $$# @;;;;;;;; $%$ $$$ $$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$ $.=;;;;;;;;;;;;;;;;;;;;;;;;=.$$", " -;;;;;;;;;;;;;;;;;;;;;;;;- -;;;;;;;;;;;;;;;;;;;;;;;;- ;;;;;;;; ;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;- -;;;;;;;;;;;;;;;;;;;;;;;;- ", " &&$O &&$O &&$o .. . #&$O &&%O & &&%O &%o @*--*@ . &&%O &&$O & &.=;;;;;;;;;;;;;;;;;;;;;;;;= & &.=;;;;;;;;;;;;;;;;;;;;;;;;= & &&%O &&$O ;;;;;;;;@ oo &&$O & &&$O &%o @;;;;;;;; &&$O &&$O & &.=;;;;;;;;;;;;;;;;;;;;;;;;= & &.=;;;;;;;;;;;;;;;;;;;;;;;;= &", " &$OO &$OO %. X+*--*@ .o &%OO & &$OO o +=;;;;;;;;=X o$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. & &$OO &$OO ;;;;;;;;;;=X &$OO & &%O# o X=;;;;;;;;;; o$OO &$OO & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. & &.@;;;;;;;;;;;;;;;;;;;;;;;;@. &", " +=;;;;;;;;=X *;;;;;;;;;;;;= X;;;;;;;;;;;;;;;;;;;;;;;;X X;;;;;;;;;;;;;;;;;;;;;;;;X =;;;;;;;;;;;;*X *;;;;;;;;;;;;* X;;;;;;;;;;;;;;;;;;;;;;;;X X;;;;;;;;;;;;;;;;;;;;;;;;X ", "$O &&$O %. *;;;;;;;;;;;;* &&$O$O % +-;;;;;;;;;;;;;;-+ $%O &&$O%O =;;;;;;;;;;;;;;;;;;;;;;= %$O$O =;;;;;;;;;;;;;;;;;;;;;;= %%O$O &&$O +-;;;;;;;;;;;;;;-+ $&$O$O $ +-;;;;;;;;;;;;;;-+ $$O &&%O$O =;;;;;;;;;;;;;;;;;;;;;;= %%O$O =;;;;;;;;;;;;;;;;;;;;;;= %%#", "OO &$OO +-;;;;;;;;;;;;;;-+ $$OOOO +;;;;;;;;;;;;;;;;;;+ OO &$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o%OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OOOO &$OO +;;;;;;;;;;;;;;;;;;+ $OOOO +;;;;;;;;;;;;;;;;;;+ OO &$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OOOO o+;;;;;;;;;;;;;;;;;;;;;;+o$OO", " +;;;;;;;;;;;;;;;;;;+ X-;;;;;;;;;;;;;;;;;;-X =;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;= X-;;;;;;;;;;;;;;;;;;-X X-;;;;;;;;;;;;;;;;;;-X =;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;= ", " &&$O oX-;;;;;;;;;;;;;;;;;;-X. & $ =;;;;;;;;;;;;;;;;;;;;= $&$O & &&%.X-;;;;;;;;;;;;;;;;;;; o$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&$O =;;;;;;;;;;;;;;;;;;;;* & $ =;;;;;;;;;;;;;;;;;;;;= $&$O & &&$.X-;;;;;;;;;;;;;;;;;;-Xo$O & &&%.X;;;;;;;;;;;;;;;;;;;-Xo$O &", " &%OO *;;;;;;;;;;;;;;;;;;;;* & o+;;;;;;;;;;;;;;;;;;;;;;+.%OO & &$OO +;;;;;;;;;;;;;;;;;;+.#OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO & &$OO +;;;;;;;;;;;;;;;;;;;;;;+ & o+;;;;;;;;;;;;;;;;;;;;;;+.%OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO & &$OO +;;;;;;;;;;;;;;;;;;+ $OO &", " +;;;;;;;;;;;;;;;;;;;;;;+ =;;;;;;;;;;;;;;;;;;;;;;= +-;;;;;;;;;;;;;;-+ +;;;;;;;;;;;;;;--+ =;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;= +--;;;;;;;;;;;;--+ +;;;;;;;;;;;;;;;-+ ", "$$O % =;;;;;;;;;;;;;;;;;;;;;;= #OX;;;;;;;;;;;;;;;;;;;;;;;;Xo &$$$$O &%# *;;;;;;;;;;;;;- OO &$$$$O &O ;;;;;;;;;;;;;;;- OO &$$$$O #X;;;;;;;;;;;;;;;;;;;;;;;;XOOX;;;;;;;;;;;;;;;;;;;;;;;;Xo &$$$$O &O -;;;;;;;;;;;;;;- OO &$$$$O &o -;;;;;;;;;;;;;* .#$O &$$", "$OO #X;;;;;;;;;;;;;;;;;;;;;;;;Xo.@;;;;;;;;;;;;;;;;;;;;;;;;@. &$O$OO &$OO +=;;;;;;;;;;;;;@ $$O$Oo @;;;;;;;;;;;;;;;;;;@ $$O$Oo @;;;;;;;;;;;;;;;;;;;;;;;;@..@;;;;;;;;;;;;;;;;;;;;;;;;@ $$O$Oo @;;;;;;;;;;;;;;;;;;@ $##$Oo @;;;;;;;;;;;;;=X &$OO &$O", " @;;;;;;;;;;;;;;;;;;;;;;;;@ =;;;;;;;;;;;;;;;;;;;;;;;;= @*--;;;;;;;;;-*+X X+*;;;;;;;;;;;;;;;;;;;;;;*+X X+ ;;;;;;;;;;;;;;;;;;;;;;;;;= =;;;;;;;;;;;;;;;;;;;;;;;;; +X X+*;;;;;;;;;;--;;;;;;;;;;*+X X+*;;;;;;;;;;--*@ ", " &&$ =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;- %# & &&$O &&$O &#o ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .oo &&$O &&$O &", " &$O -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= OO & &%OO &$OO &%O# +;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;X %%OO &$OO &$OO &", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@ +-;;;;;;;;;;;;;;;;;;;;;;;;-+ X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-+ X;;;;;;;;;;;;;;;;;;;;;;;;;;X ", "$$O o@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Xo &$$$$O &$$O &$$O &$%o X-;;;;;;;;;;;;;;;;;;;;;;-X $$%o X-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X $$%o X-;;;;;;;;;;;;;;;;;;;;;;-X $$%O &$$O &$$O &$%", "$OO #X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= o &$O$OO &$OO &$OO &$OO . *;;;;;;;;;;;;;;;;;;;;* . &$OO . *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* . &$OO . *;;;;;;;;;;;;;;;;;;;;* &%OO &$OO &$OO &$O", " =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ X=;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=X X=;;;;;;;;;;;;;;;;=X ", " &&$O +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= $&$O & &&%O &&%O &&$O &&$O %o X*;;;;;;;;;;;;*X . &&$O &&%O %o X*;;;;;;;;;;;; *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;;;;;;;;;;;;;;;;;;* ;;;;;;;;;;;;*X . &&$O &&%O %o X*;;;;;;;;;;;;*X . &&$O &&%O &&$O &&$O &", " &$OO =;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-X &%OO & &$OO &$OO &$OO &$OO &%o. +*=--;-=@+ ooO &$OO &$OO &%o. +@=-;--=*+ X-;;;;;;;;;;;;;;;;;;-X@-;;-@X-;;;;;;;;;;;;;;;;;;;X +*=--;-=@+ ooO &$OO &$OO &%o. +@=-;--=*+ ooO &%OO &$OO &$OO &%OO &", " X-;;;;;;;;;;;;;;;;;;-X +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ +;;;;;;;;;;;;;;;;;;+ ", "$O &&$O +;;;;;;;;;;;;;;;;;;+ &$O%O $ +-;;;;;;;;;;;;;;;+ $$O &&$O$O &&$O &&$O &&$O &&$O &&$O &&%O%O &&$O &&$O &&$O &&$O &&$O &&$O%O &&$O +-;;;;;;;;;;;;;;-+ $&$O$O $ +-;;;;;;;;;;;;;;-+ $$O &&%O%O &&$O &&$O &&$O &&$O &&$O &&$O%O &&$O &&%O &&$O &&%O &&$O &&$O", "OO &$OO +-;;;;;;;;;;;;;;-+ $$OOOO &# *;;;;;;;;;;;;* $$OO &$OOOO &$OO &$OO &%OO &$OO &$OO &$OOOO &$OO &%OO &$OO &$OO &$OO &$OOOO &$OO $. =;;;;;;;;;;;;= &$OOOO &# =;;;;;;;;;;;;* %$OO &$OOOO &$OO &%OO &$OO &$OO &$OO &$OOOO &$OO &$OO &$OO &$OO &$OO &$OO", " *;;;;;;;;;;;;= X=;;;;;;;;=X X=;;;;;;;;=X X=;;;;;;;;=+ ", " &&$O &&$O X=;;;;;;;;=X &&$O & &&%O &%o @*--*@ . &&$O &&$O & &&$O &&$O &&$O &&$O &&%O &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&%O &&$O %o @*--*@ oo &&$O & &&$O &%o @*--*@ . &&%O &&$O & &&$O &&$O &&$O &&$O &&$O &&$O & &&%O &&$O &&%O &&%O &&$O &&$O &", " &$OO &$OO %o @*--*@ .o &$OO & &$OO &$OO o. oOOO &$OO &$OO & &%OO &$OO &$OO &$OO &$OO &$OO & &$OO &$OO &%OO &%OO &$OO &%OO & &$OO &$OO &%Oo o . #$OO &%OO & &%OO &$OO o. o#OO &$OO &$OO & &$OO &$OO &%OO &%OO &$OO &%OO & &$OO &$OO &$OO &$OO &$OO &$OO &", " ", "$$O &%$O &$$O &$$O &$$O &%$O &&$$$O &$$O &$%O &$%O &$$O &%$O &&$$$O &$%O &$$O &$%O &$$O &$$O &&%$$O &%$O &$$O &$$O &$$O &$$O &&$$$O &$$O &$$O &$$O &$$O &%$O &&$$$O &$%O &$%O &$$O &$$O &$$O &&%$$O &%$O &$$O &$$O &$$O &$$O &&$$$O &$$O &$$O &$$O &$$O &%$O &&$", "$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &%OO &$OO &$OO &$OO &$OO &%$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &%OO &$OO &$OO &$OO &$OO &%$$OO &$OO &$OO &$OO &$OO &$OO &$$$OO &$OO &$OO &$OO &$OO &%OO &$$$OO &$OO &$OO &$OO &$OO &$OO &%$", " ", " $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$% $$$ $$$ $$% $$$ $$$", " " }; cuyo-2.1.0/data/pics/mdEgoL03.xpm.gz0000644000175000017500000000550312412223247013742 00000000000000kw8)MŕmlXl˗[de˲7` ;5J󼱀93giզZsxurVk^y}i֯niYnݮ^n:7p D>7[KLiiqSię8QvYef}˳6Te7m4uCt&>L+L' \-IMb*M±s7VD M͞;8!fvuᦉc-:7)"%`M}bT>N|)]eɄP!>Auu;^j2 ײ=^0c.\$fvËC|6'<2ۥT171hG8u8Vs|  LoM'sMbo (:4 X z̦gRȉǣWQ|Ӆa/aT@ /]b]0 ^!Y `w^+0! wD-& ?dkno~6|Yտs p!8RÇ =>u|%990ޅP_ Ҹ0 )C AQ8ػ± &Μ }e7 ׽*b*b*b*b*b*b*bW +޾uX h4պ|eE(5 ֢ 6b)K oeYSAl61fԚK!4m0 u۶Ӥo::|[V 4Ķ;a >#Ӄ˲d z츧(heJXժ;}+J F~I Rز[+lb>Q2H ߿8F\U{ #GCaV* CAcBҵ=d|.Zѭ]\Xb8+#l F\$dh!mLKBld3- Z>|`T4>2dmWJrTnfz SqՖKmwp0 mp:! =!m`cDhr )S9ALS BH0!:xMHR $$ %H+6 CT^C@O؆?0m{4IS)DlmƸ7>F@~_R_! ,}ߝUAd dcǀ8a"Pwb]Qˮm9{pUI II: ؈C< #ߊ!|CUR,WcYѻM#.Tp( Y"lYrN٪'#+_>NYVPe$/-]dUWGuE$~2/3,r?M/\0z H9@k@1D0$/R~@p}t@a:=z2FsRkv "`~}8CUK2 ƃq˦R#\~V@=!`K2z(Jji\IY[փa==?e=? 0QIBU6QaC,~]UT}2>$jc\=ȇJ"?< z}{#ӟ~xc7v^q_,:RDj+E,2VdԪV,TsZUP}K09F8+P%D%QgJ{fAԼUR6/-:l" R)RߔdDlPYB:]DNUⱁM|i{2yI5=T@̳"EfUEj-Q-Qe92PLQUgTgfR_ Pua0l)|9R8# -c`Ŵt%NT.a GQ"/xK઄)]lSBe_q<+iFd6uA좜s*8`զdvt9 ycpb~OLۖ-U*2-/e4.b2*DTRSv#.1¸$_䈜"';,˾ZX{2sz40 Ll[8o2Zil}* F,۳X}V)IGPˋ!8qfJNgMѐ[4mdmXtq [-Ǣm"'x)cj5MN vIkAjF+"\Kj$3vwBMGP>R+W4^džF~P=ECeY3 k5ÚaͰfX3 k5ÚaͰfX3 k5ÚaͰfX3 k'E%ZwwIVr=eP$Ɗӓ>ytwbSx.ݧҍ8ePA0c]8gebP}%Ej7(uL&RC%5 e4zzz_`4RR_XuC%d8R2NoA ʄAZp< MrT:::Rlna&㣣QMZEHZVӎ~CGdtT]tUU5tsz;7oª 0f沙|1 ?`N$YuC7^2 TCMf)-(!Kȥ:Ƞ'~[)Y!};08?Vd^\vUw3Ck3 eS@ ֦{} sׯoa]KE@T@V3rtzV8RW4ńĴ\1:9 g(U62w +ZqVڟf2cXaeK?Π ~3}?b)Cـ2KYWCf|KSz#= PO]QR+nz0J &P?(C kLb{RḋawvEm72./BNJ<Oԥ;]wi-hI"I0`!p"As_>CƙJ+8M tpbj(0Ē3vhd#k{ d[XɆ3r&B2a8GFPVT>!5=Y*zLu5 &CU;IijC7l|A pHBu\N[fdNxb.a(Ӎ-T5Ӿ\6J?Sa0-E1l;2!MkYQE4x545 t*dȢJzĨfd 0#l|t0O Cr r91՗03W8 bڢe%PiRfߚQf~rrC_0RtcEx"KKIJ_.#NM ̉/ߵtϜsQ pWbXŴT1pce 0Ca08'=*@&&|5@rb6CI"BL2` /UWɄBbXͅA/D;8iAGJ]>$ "_QBi(eJl A׍?FQ:RuV0`=`jt.Tj2&0(7(t f{FF7D(n"= 2Q$,!' S00ʽ^l BٴQ.,1>g ]' m0׳ V(@ },fǃؒ ט@!ƤONr8MF,`Yg: {ox}0 ?$&Bl`^ @('b~<_=d09@Dg({:{}<|IAA3V@p0@8c!'!p!cd `韈$ LʬLiV~ϫ`GҠ8@P(NQS ` X Å\BkC"T'>J`[ *Ik+aM~t&pC4$EC''O^jy%}6T3쀙I0ڭI[5%=_<]R./D_4V;ƹjϴvbnJ)%MPF3绵 B^3O߷WO?~?]ӻOn}w}ݫ_|u}3//./n{~elas~:l}Q77qܜ深׈Nܞ"H.9,U9*[`sfx9"tN')"Ўr, ^8Ԫ89'n/yu$J}" hFYǺƀ٘.#T"pX@ADDN¡{v;Ŧ8 X;=Vƽ68 OO=N9<nS^+tw1 :+t?8HwHF+t?}(|0c? 孴?0èWaZ:!k0?Qf@`[kS9/_@6QP`6?qÝ`8Y.uVݸ&=̈́yqPy,%I6X/$(tpȢ~f@[<"s'_Ht`}gk璿3-P1)>KSJ۵@='u)6~?DClN+0$X4yX2rE?T$~xߐML\ Mv.??XQ?fJ-=1nqpƫ}ƙqCȰr"tGrrP6Cs%]'vaY?E{H5 Lĉj/@ހ}ZdŘ=c.c&ldÉށaӌ},"@p0tIɺ:)p =f&"1(`AqdB0; 4 j*kXȟ@y_hIcd9̴#E,MM6H8]& Nd?@. 0xȀpȿLP_s(LȄ/HHlur{Eb"d?~<~T_ơ+y =f E@غy*vھϱo9Aas->~+}A ,DOg9paODa a?EAezCxƟ߿Px̛(?^p&%.?ԷE&<otO U> 9xzYZqH!sAxDpv~A73J+8[&~ {yed`cAzb.o ANP? Q<N{"t[(8[`0/48:=L{К>2 a/4n͇^`>=x=04(_}>°Bcuyo-2.1.0/data/pics/mtBlueLeft.xpm.gz0000644000175000017500000000440112401656724014477 00000000000000ysS7S8,w%׶lE#4!>+Pi{'$ LGG,Y^*z|pVikwcTm!KJ8MJIT;׮J[Q=H 'oJ ҠnX C'o;WF9yJQ'|d8u34$P2ȊM'Al~(턭 J+Q%:y' }EdЈyW5olA8uSУJ͟ QjQs2qɪ~(EBiZmW4Oev2i/\ Q%לL@ Q3F6@&A +A+[N&pPj/]] (uqyVЊ Bi%Ќ@a7.n#K7OUPSukh׾vJ=z2ܰ'(lp%q ݰ@]ހV6#W +Q+[d3r򍿒VB7uqHM'0L-( 0wӷF+nCi+Jj'2xq5ZB͠K߃M_soڌ'užFuȁI5t-ߌc /+5فoUU#hU5c8NCöGxQ`Lue?|%i ^4}t]m'ٴm*ճ7ZQPkA#$h!ޅnZlaƫ+3A6rzH4097dҮg\h!~GM/ sf1 g|΃b:iH/)D:]x?)?zof}Gt}#jK~n=NЩaϥ. p{q˜xqWI]Q2? clkC}nMo0F7?,Ow-QX[{BMdט R2yx(77GVvM7bC=;}M}qc&v{HcЅdptkcHLwr{-ݢЌMMzi9-BCWҸwaDZ~ԎDs']A֘ĔGdhXQ>woNvovvThtt_;ǃa9û艧m|FhE1GbtL\(e;JYn˷h4Z-(W?$26Ƥ 73J-nd7fY;cB4&ϵm)Ć MmՐp;1Z Dcmٞ0R)$B|cUߑ|%+H&z!g W e\ ]V2Q VYR2ºe; QF]k\mC)rh/tZJ22 ibSGƨ2$eĄybƘ B|KmdAcH-1u|!D!bXf1$$č*"#HB %†Qf⌹( Q#-lM+T<?ҴП{m0T4Ȥ glfA#̈όX-~ r+ƭV#ȶA7~t~-p'cuyo-2.1.0/data/pics/btScore.xpm.gz0000644000175000017500000000457607550521110014037 00000000000000+=btScore.xpm\o6^ Nl˲I!dž 26(=l> p}DGJm4t|?Rxlן{ٳ?}wzϿڦUo7_\ɳ罟{|~ l zvC >SľD{BQ!;{ 싷(`$ط(``/PN..PoQF{D0.P>"{z68C}@;~_#Qs D`ohDg(``ߞH/T{vN#]l\={@{N_}M K55E{JC$IK~OQh=q0C1uS 0hMtIs0Pěz%`0pPW:01]Չ؈d2F!ԋ^ {>FIqyfwfʒv63YRY",pg%ˉ՚%2Xm`"%HWI ` `#8Cr8k0rՁ%P~UT9;%R D+'.DZl}  dwc lJɘƨBK 쌉ӱem`mplioC[q%vt-[٦ x*KݩX#{ͫ ®7͔p5`  D̳<jg]; 9jF=yBr \Ma()ڧ<r0:OF'` 'Hvuۡc;t;웨ڡf uۡc;al:퐍y#ME#Xxq](pR!t$w &Q1tGblE~b1gI\$Id';]bc]y#U/}R/|Sl)"IFA3((nZbɊd$GMcNiW|}ރ|^qrYXFLF>ev{ߗ 3ȇF9g"gw A,,Q'c$̇qA4T CY&(Th=)`Xx1 b˾ c}ec51l:_i __zaFa)r[M#^vBBNŁuh/;$' |a xrF6UAN6y~W8s.1N^ÕvTOw̭ƙ[گ1P7d$cv %r_ Zt_A3MQPwyfZzt+G[zdpH@y h*u5ճwUSdNFүj+auݞy:F ̷oɣ{4EG&H2kDPK$ȆH֠ S@EBD`P*0(H$8KC&"B2*qI @%5H܀~G)@ˬ`M3$AMPL$oƉ8毢.<9Z'm(cꀴq^ -r gT\sbRr]+ -\f?!Z q_*ZɗQݬHAFS̱EŢ/%}#f cFxLQ KuQr^"pr1P݁,j:&0cR K nE$f'K;en /HVHݎ  Z86}Qʟd0w)ŠbP A1(ŠbP A1(ŠbP A1Vg >*ђn![&Aw<9 '(Aw?º? 4vz>"WVda1 ^ `ۃ5ےCxaGoH4m# 0tؚNg%郭ӌ뻍>y!E_gd2Ͷ5j ]owڭ3ix0L G:̗gNX,E ڡJë:wewE>Ii4u]tu$>N.\wQL|vM^l6s T '{Ϥ5i^d2y|0A0YE|}vmvLC:2#`f܇Ja>\߿pHWIQo:ɶ;gS\م1S9{s!#2]J3v>4xns#VlJCURԣ4jnԟEHڸvqc!`z G~_kVTC`oP/;DZt}a]~&^=?+}<|oѤ1Rw7C8nZ%qpR0Fb_x<6~O "ot̫+t=ĸDb%O0d2N$ džzt@q'骗 }.7aXl9wˍNv҉dBNx*}5n^z$I`PV|k=|#)X$~'/S&{ c8IQ|?yMz&6vwϥh~{gZŠbP A1(ŠbP #ҏ%7cuyo-2.1.0/data/pics/mseGG.xpm.gz0000644000175000017500000006062211653006611013435 00000000000000}[I_<Ȅ@H(fPuV3J ?GM\tECo>8ɾTy-Ч黫O׹Z8*Ug٫E8ڍoo7΢Bmqxg}vv~~?\ww7a֛Z]y8㇛[yXh_kTj8UYjV趲;=6 Cqf.3o466/[?,ÍC.&;F#+wũj]gn4..cy(ц8{{On_uP7%qw]6e6 ["k[2e6pK?["/Wu ƭz]wo3Ken3 7nl˸'н4=~x{}c]z8m6"tGp`sS:x_݆֭ͻ●a?EjVY;{IC ѯpy(]'?[u(8<ꉈ3s)~_v?Mg^k_~*cUo4{&Ѭ'@T\zH~S\0ػ%Hx.2- q[-a襼)z=q 썈z}@S8VN8{5n p֡扼G? {h?pƞ@?{j}[U}gyGPR?"ϼ!Un_jy~uy"Q$5O?~d?~_[.h׺e8ϻ]K]QLh|Á{Aޤ82yyq́'qT"A~nrVE 4;K W8w_>CoRi4uGgggÅ%謅$3™,-  w.GH6qc>;{2T!p%?-w#tkމj·9:wY?pxXGFd͟|#>$"u|7/xSk8.Hƿ_Z/ƿVp2CW`ON?}b? u/_)`чDNIЊN ZQNѠ("?kZx?6 TRm]R)Xp& Wv I~|$='I{x8( Nbٟ4(Θ Nٟ40à ``J?q_`\}`)۷Đu#jܻ~lwD G &Y|wD +b+ROˑכ0\x+Z~[QP=?#{/{7=V>k;xD.2y8 hr '`0OP@wVM7aq1*`᝚+ 14#iV׉G6d6Nm\ج <[c'bk,q48Om٣!|؇d6h~,h-f hco>f hcY_˒Xs_[s^]9!'`y9!'`"yfퟀe- np~}"M&Hq|?Ǹn n+n dPy%`@f Ż!'(2ԙ׍ό]ܹ-{ rp<``ClIIƨQތ{ ǥ?='Չn|78OߒD%y61L'$Xϋ}x00؇c U}{6;w*=! ֜{]ߛ*NP&+t L ESy)Py)Py)Py: 9!x-q[~:#>EWB_‚@o'HDJ0KXP_H)OB?SmRlVϞ?;.\U Ab1FU$ e$@:m$Ix%i-a??`@ ,OW|f? JN$hE A+:O\"m. 'p?UF~hg$h$h>$h.0h /9=\rjzTHɩ `f>&S)}LR0Leq$q>? xɩjHɩj@=48c/]p;Sԉ?o̝ԙ5A>eM~qұKO?؉?p;wM%k[>lPfe֏Ax+t\:p;n7 ZXa؇qc2'e(!)CM Xe(ԉF3uv=ߎ??0o'>?01AL}H%X(FcTiB:X%0\&z0\%<|iljpI. ||ljI$pq. 1=ؙī':UmdU['c(Yɪx;?itI $KeD%e #KwI. 8/RD?`K%k0<};T*9EO0S|^ڶ} j TZs?` M%As%AmjYx'kd9I O~!MewP%^Ax 5oڃy;8 p=Bx׼ pH&AHlH$j b1cK߷dZsK/q8y'~OkѴm\!0$;:C W$qDp]?>k$^28.2$(xx$@:BMAqsh _'~"7k:p8 HP[q[1,Pߢ) N/pEx$Ցs9y☾>7??t  sn}}j^??pM/vv-v &G?V *_\X]y^FɽNep|96W)E^pEJSzXGЖv Ә/-%C_2{)ulױG^Njиv%%$QNdz@L0|3)_ϔ~?Gfh7H EE{p(α`@s*<8Uxq\\]XOx+d .2-N N(T"O^S2qHG4~ǕЖSQ<SqMD@ P_R $ P@Q IaE$y 0-?pS>?٧#B@ZTT1Ӻc++ \`Kڟ [dåIŅ}akø0?Y ^0.H]Bcc] d5lM+, x-Z_kEkffI{tLY/K)JNv}ok{[e;MHCu$-{~O[ $ }c_Z/v9Cc?R?(S)p?(C)p?KVGVwp;MHҹN^:FvK~?ns{\ 4 >嵱oym_ƾϧ vw,MOp/MtS'k~o/^9xPs /27F0\Q̹3b؊}Gpm}D`O^i"ψ4?K]''~EO_[w-g:nY=v̲[g"'>(F38NYq؇i~sK?-Ý// M$"AkNz'^q͋%'˰Csv8;HfCfv88H>foMc|3h@'voƘ~@UOߑҲ_?CD¡驻.#CF'~ow(p^drD;f]ۇ+mƇ>%F/SU`\?,eM;~dic\ d$ͭCO_RÇ5wtg"C%ߜH^H/%1S?c{i(X*=P`d˜ bbHP-k Q !Aޤ`H?#bR"\(( pARнB.  o05&C(MdP_Rb4o( 0I 0?~SG6U+D`YşxF>|8B*|8) rX8 ' $8NQ8Z>b^Xb6~/Sɧ ȧ ~&8:˥y`8I`874s߭?pIdN@脢!( h 1ExFT`).I 5⌤@8\ 1:9t 'P˴DD?-\K]'Cyh]K݂@@?D\zr_ rr(G ;p 4p $8[`D9Q@ߡ?@@R'NI ? \|0チ(wib/-?@%! H(@Q#JE8 R  D'J_?/?@P&LC(< ˉs(< ˑsq}`Gq bx?? ͘VCdsٶ?@D l `$(-tǀrӄh#B@ #:A> \ $p)oy}J@=  ԓрoy} , ,)?` Z dIP K?K嵦XeCKŖךp2_,i/mL@5L@{%Llǿtw||׎o/$ @~ KHP ?` x` 6'} `:H`= '$dIXAc2*YANJ mCJ`H ?Ps̜O3`[^[#N@%GD8uHnY[+s'}'"̀ G dŸeŸw3ۙCs'|}|-aWK̟x Veg)Avf ̛s d*6F *g+HD>q :?0_,`жUm3*(dU9Kov:8BŒI(0U`4@i[*_r]O?I]afJ. Z3~OI> d ԙwx8;#MD i$k4 mIhE5k)`?>u Q`q!?$xKi@08dM`Ѓ*"#н?`"øLPO/&P9I N:9 }`.f00?LO<#_T6̥9I X^+by pbLueKue@~@ ?K@o?gZd>\l |y]iQ.{7Wrw}?;[u?Ԟ8Z@hcqZ9cAÁ\.w614N\tV!lV*jsRمRY*vS7m!yDk;DUTi[.N~[(==6;]no9>ȸK 5ą<?f_q\`ӊf*&KJÊŊ$w[۷kqZoAKE|q' ).H!vq4W?u:ϔa|߃{{ 5^1;G]8."I@m.kH=oHbˏ"@\-th$~[LkpRǠ+*a=+DI(>Q|(;|D 6>ɉ|D8P<2݇[i|ʈuh}.3 J_8/8JmU*U >}>k/#~YWwGXX b9tgm'T >w}#ؖCJѾvUՙƯўh.ink'Uem p IxO7SbK)% f*H-7>'ޮnqޮnqn).v`63 <Dž}x6 pi&&*Dſi{h}{N ~pBxNx~~N @;j aAD>5#`n@^CGD^ktu]; W9p=|[Pnx;6'<ޮ(}lbMGb݀gźii}9yhFCh7>P&l: »&Hï)Lc]eT?Kq2_C|6Uƻ do`ƂSe~5(+AJه_ >j@u|F@u|FpECh&ЂAvMI`ߚ.Ԝ0г}0OW0Ak3<X`i"jJ'f9ߤ9%7?ȁM?82e?QQD#Hfg^Q9sBxNh M9?΁9;K>RYRͤ} W$'jR/$^9@ݳ &4CS.n~^,/}QPǾ}QO~54r<} &pZ戬 `{,3a?~^\Ot>+\1O_ HzMa&hxO}qq?}qq'>@l}oFTᮂuBiC hg$AⅯHH7:G:A$DqAl@]?쉊 wUo2xsj H.ώ?p( ?ܸ+:XGpZ]l ?DU3ԢR6#JG7I=#?<#`x?QU#THOTKx,sⱴΉҾ3.7#q\S\S Yq_= ]SSkJsOi9Z-e*_SkJX\&G-({ۿbV>PkW|8kK+g#w#S.Z ڊfk+JZ5&5wB֘C5"n֘X5&;ktjƫ/uŨ fZЮe -p œp}aNx;ځD}SUA_#v_9Cv na5G?/]Lym?]9Oŧ+̳$#,q?]9\ U`jsDU?#:yP+dJ'D?gr}@jCjCjCud?+(z$W &_uDuDطq8G`?0&^H^7JQoi1\*%& .ɋqM^哂R"c$_@zо"Gқ!I㿏!I*⿏!+E@!4$F \%sQjEQ|>?kɤ}B@גda=a|%늧h늧!?SϹ}Jۧ}ri96H/+$!.ـ"&0kJJȋ&ED7"D@-GH-zmyr^[N omy\[^2זL%|m!ȁ?EEkJWE:XՐ(('בPǼ' :/^ctLA?19'4$ -f>rS)>S|c/O5f&p?&bSBP]8o8q6%Q|6C {}7Akw֜V ?4K˕ km>N^xaH<E@x؇]c oj=e3cZ$_E?'_xq`lC5ű>4+,}`~86CE&c?Td286CE&cʁD_\@J>?P2o6%c}bRM*Gk&O}??ok`נHE0ru/+&XG4>I5VSjhl1鋀=4  wîi)8.ct>>%ܦʎB&J&𻡉?nhO E| E܄ E|sDOZ򖴏jTOhʽd5*u>?WLAk_rDoNE; H_sy7+biKxX'S"0%RW}"W\ L@PT\S"{"~`ŐV ~@'(Y׸}O}3ـO|3oF>HǾ=WG4T5,?#g*#QIL y!`>L"d%L1v,ǿK)z?l_ѮWGU}\߉&ȁ/!H4 DâH=&k"?4{XL?D!)#%D_i Ϛ{WCpNxS^KQ`aגIѵdZK|-b> Z2C@4 b8sR8O)=$@i`ߌToF*Zv@)O_P2AAkG-?Օ?ɷxiBPW4eUMYi5&P?[C֘,FU5?B - w0Q\qoFQv5$a IXK֒5aMiX[֖Pcjڡ,ԜP{޾A}5(MkMI6]Ш A6hYv}"a {ل=žVao]qV֌?_B -p 0'?\uFeAvAxj^"CvnnW(8 =wyb!kTsg9BZ<??_?#*Q戺+*\qW܂j@[Ћ/hYV#@.{ 5i{ ) Ǡp3Z(ߎkx># Ou#[D:huUAWGpA9(PkHPvTG ܎ nq9'I[LD临@`8}E8(8 $><;8VSd%?OVRqQS'`wQG(8??-RwmSs9KKbx/$hx/$6^ Iz(>pp.w p 4|i4w@'g|=;h AkPp^㪽U{_|//}R/ 5cxw(}M>F|;Q1c;dxͷ39 *~Ç${+^Fq _K?~SѦ?$T$q.$rz;.c*r\y/pw?><ջ_ rIOh]#z:}.z}.?dK/mAA_ »C3S#`!~{;߯?GYAOK {ԥ})=կ>`(𡠏5aĿX*X8ĿX*LA7݊8&#.7c=. Ňre[Qtխ=m RoE61VqKe;[K:v|׎?oc\(. O^4"8HbxE{%/{:N}|׉9 cG{XQѣ#{,(p~~f ύ}h^\7╱}9#@?+Vq>|Vq4{5){k'S0(9WO0sBy3'{0sBy3'RYܲ>Vqm AWh|qĉvg"qû#'&/ } ȼz7) Ч w,P`C>ՠdCH$zZm)םozxω/+\s H.xy:/ Q@$< xjz+(֍}譠xeCob>G bH@bHw7'ϲҦ_9y3Wp|L{} ^SYܲ nهvϑ XSs@4^[^#/5w[Sdo7;/px#7;/p}#mc?UcpP5`7>Ej2hP03@ 5_ߕCFߗ#+ NNĿNw}܉Z9yVN^h:QCVCV_킸WʦoRښVԩiA2SC5dd(l(p;nߣP@cD^ lмʲg/fзAGگw|WK`?XfYc#K}5 [_CC=( 'r@3G?? tB@$gy$ŧ9a Ec!8I$`8kTXG+T`Y|wJ  _吀ߠPѩBE~ ZK #!8p?~ST1L@x$ 0Iу$!HG/$,?g N'vg>?xRe'E$ SAR.uAv~\A>|!H @pA@DL}rZiëi}R$E x)E^t`i0LaDBmHo4\dXl ͆Y.oֵ}a|SE'T?4LX47܎?_.dKM &wRI ?lEMc,:m@اNoƘ~@UOߑҲ_?CX'".F8{G;Ňg+E\f^_}c42Sc42))O U~^}ICB X~>Xsp *NzAɉ2?WX^r~/ފ.N}K'X qH @8qH فuc nR4c2y<ߜ_N}ʉ/;7x뜬xɺ 3s.AnE}X̲>kN4xU 4J?*S68G'9L:$=@!?;$>,EcR4>,EcoR"-/lyH>`˥Er:֝WN}e'!Ev 8$gCIv 8$* ʾj,}W0( >438o`ѩ`Q8.GnZ'˾~;p;MH!K?pH0ֺI[" "e v~ kf&5UCR1\@㕙z`4TcR4e;xjÊw9n7!KO"`-i&K>p~Ph,1)??`0L/[m<pt"Cbm?0 P@h_&BÕFlv*%Z=Qrø"60nH.DH!KWcEOGB ??H 0EL@P$( S(8 Pq? \jN_GdP\9W]siXݐ "|?p3Gcr@3GķCpG-Ap Ay7? xi/ ?P[,G?]B@a)~B@!,|Yh_RK]KCyh]'܂@[ׯ^ o/\rso1}} x$(;I}?b9HaES _x%wboU,X̲'8IA`3GEmpw() 69?/]?>k4Jcq\^ ы[bMwx3sE{Hi|/ϥh0%/ X8VGUcTc-rGEXwY0)`}t9x_p]Sc*@ה{abO?[b?w])N~  /SE)^O1KSH`ujT&p)$2.Nw)K]3mīm}b(PO;~:^qt\qtر햪vz;~~XS.S} 8 Xid4BX! ʲБ]9<p(p( |q).^Nw:5@vSs |,&9 o2p).|_)ЊKh؇qcƍ}J=N8d_˘NөݩU=C]m2*˞AG7ayx+#q8p;n;Ԍ%pw}P@|GD?P_ _:v;pW]_`hE 鵶HhcE1^bx\r?ͦn+8p;)}PJc%cc:5%4yDS0i؉0vN؉??R3IJԉ ϻh_RS@&w1\xR] _@+ Pj^Jʹ" @Vdzljj<թ)yjj<թ):5NM8oe@G ;?F.  <l(HS3Hu@f0|7}#pq4+,Rߚ lC\=7spmQfS< ER)_- ij)+#B@tAF7D@do#z{8>ʡ@+JS S *?+S?KS?? :/?pIP@tgNP@$J@PjJ(5p,5p25Պd%L?@Ɵee3(B)@hk?|N'!A ?>D H$/:HN bLG~DGE,Xhk 'NIkC V6$( [Kݾ?PY慎Я5PC88 d9TidN42 42xiHU=! HB?#5D`WVG `C(6 ^٧ 7nk+4ȢS'CA1$Ckn?`n?`n?`n?`SK?.  p j O&hE}'TCN P`iR>?Pn?0:9@vLR ;&e)`o2ZN;@|W.:-  5ˠ~ 3Y2e;SԱ?Kv`d <(>\ܧ ;ZJ# FtPp+?OV~ܥip(?.0';N.0?`]=hC?0#Xs=}aPq=)pMVdCx( hES8EkNg"K`k^ 9$ķ ЖY퉧ހ쌰ހm@`XW7FdŸeŸw3ۙ܇X|(?'X%R }$pN-iD?0 y(TJ`&fpF45N5O?Bd b+5Υ\):w9dU4,,Ԍ:0ۥLjMMySS!qEMM8o7;!wC>J@A"E쾕Vj@4MOa??`\` X@6P Fy0L?N&@#D@O&??Ï+>r(Њ(  !\W1|Db nj57_a|13ґI6P8E'G7NG7NG7NGSSjNb2P|vy( %d#?  "? ^ r R\?FlC?@P@{ ̿q@𡠽0 % ѡ@=t(J1Rh_Zwo;o LJ9?`?о^PB -p B -p BS&?[\$t~@$~4[+#I(yڛ7)+m$w;R;zzG؏_ُXFq~鱷'o )^8>xw8נXS`xE߅kp#n@?Pw/ow/\.^?Òw_Z^flg{OϯƂw|1۷; n0 U_xt/&||5_Lx~?@2ad^m9=/` xoƀ07}c`8&~zx}{^Yg.oI%ƀ> uWf ]8+颓{p5>/p|;wzzb ~eL9ɉwDx#zͭ-@ټ%B Xd?Lo}XF 7Do?Rdmtd}}v0=?^ X/Uz6+`@T<Ï}(Oϯy"5ݍ l\ lT2et~؏`~gn8?̼.g -g -|g -|/gYP7ݡɳ+lS?zV'ЎDA:V}a6Gu_cfrxArXX劕XX_n6W\.ɓ6+t6kNgWvf]7U?XS#xJk|'{CLtnob*?P*mo@kJwY[>Y[Nbmyɶ{ojՙ,gVOv<|gſsn2+U_!ACi *FHxCDٿԘ(e?x1YgkL lIe1X c?lI&cĉOq$A!B3v}֬fjf}LhCWol}mxZ3[4 kAZ_OZ>EH x{^$P!{FY@a0ߌB-p B -p B +# cuyo-2.1.0/data/pics/bxBuch120.xpm.gz0000644000175000017500000001211410361553650014067 00000000000000b=bxBuch120.xpm{SڶO yHT*"QF=uwιVBPw:V1 1sŮIp?"LZםH5iJՔH)/i1q$2vg\ xSw׏!͟Dj?#N$PRƥJKƥKvfಆK̈́Re[؋mT..|ڤgzf8FK+-\qg2ǥH2TgfMr KT3#q5uU!f -cjLҳfWqYe0L\7=\jJ!f^,)IT#gpe\}@̰eiɩZ&S) Ra:;}{rk :YV6I{t1V|gsM>(4zvJtZ{M˞ɐ)wt*AFTKtzJj@\qm+&U;ZmQr]:Аl~.#-{~hk=EN[l2UrsF4}{K͌Vz6nt۸축.S\ ,.RvNf{fdZ`T-U!ʴApY`:nw{w=C!q(0LC%[}",Ћ3޳g>cV{~75;bgɣ&Df/GJ։j?w7n> 3?Ieo'GA :n.| .wB9x?֌5jj͸Z3֌5jj͸Z3֌5jj͸Z3֌5jj͸'0Fd98,QT?hL1c Qݨƈ|VF"c>.X.c-SR&g#tz=.[Pi szX=ثizo1n/}Jgg9':osey|wxT7I?pƈy(hѲeojw2FDtAǓZ$#xdn-6swa>.3x^/oQ;;;ll683Ҵ (xT7^OEq/ X9[9R`WLG=# L7-z -3O/vJBf/$9+6ơVopo/GmNrx6 o\b 뵴tn1Qf-331y:n_LF!Dp:2F^gx=eQTJ|h< ֱ}&`Զ:D+k'?3{vjXPZ7E qqa>1L7,}įxoWI>, ta!Vo&.6N.ɷYP<1\Sq+ xqtkbO6C_o0PEvjn0h(>Տ@!Є f {:"EspgگBWo~ #zw2ᢆ֬7@!ϥkא.x?٣dAq~p](DK>"|Jꈈ26 e_$F3U 0د6;Gr.AG=lf(DI =u/.vw)To< Z,{If_Jc轐RNʴL2V(8>t5)[8(vv?iO|N7* ]:'aUv)tz[oGD|xM[k}^O*JEX57q{! Sӝ -94z]b>Ij=cmZAt #c.x.8M[(`TDx]tAǩ#aҭN b7ZͦsJ3rM1~yafЌ;u&$&1n\9gdɯ ޖQrl.oRDsz]j@CNSƬLnB3uB 5kr6>TcB`_.QԚѐ:BfĘٸ2*M7ԵU8??;Kx1 :I~GFR4;sGU. 㥿o D>V.[e=g1> (IS`NfESfZE&جݪ[/_ہfYTZ58)~lc?3N`0#D낶':4=zΑQthG{gx8g1qʉU-"KHT~-VZ2 "4݋u\wcn3"(*i:g0ы嵜 #uh;D`S%lbKcIֲArQu lMء *NpءymR}juz8{>я ) r AC91񎶻^pץ cTz^"\2uE,bLd]: ކ-xd^_vpXBk^,gXu!#QTԑ`&q2c?f%T9S:bfX!&ċI@ 3V1?A!Ub%I6AvRR3bC8HG29ǘL.蘮y̠#e)ս#B2B?ZwٺCFHTMJ]zuh+fFu)-K"{S (ԝ%F"đ{\uL~1\?Xw9ddBw-4RO(cb 6c|kDzjʑ1qJ# 'ˋ:=95@B?f~| )4(d|a|BF!sTJ?k^^3a>Zl63#t"a>n ?adz`8G׹FB2 ㉬( @>c3!ӝq.`DE|@< ܵx")O^B $"ޮC/Uf/Z#:{M3xHr(:1 9)*- -c@G ͲΏI-+-9OF=2:=Owt\L`3Ћwд5/` llKu\V#:s1b?*19)}|ɿ,dff.ClL3che^O9H=T{͊:mf-|28,{QQxj#.;s^##g2HG^ #zmY3QKg:؀Ļx-:*,gtb HL,u=/fΞC0293& G1tI ,٘(Caj XU}0&2sx}T$[`X  E֙j⿇HxyfOJgu.B2ʍ#4 ^!Dڔ>8YͲ"g| V* x>~J0IaA<J8 uhJa8Թ4gxPW Ķcx eO4hh{Rie[轥Jʊ |3cۑzj^ZA ~4;6;sz bĦ)`i_G8wA G ӧI6cuyo-2.1.0/data/pics/ieGruen.xpm.gz0000644000175000017500000000264607550521112014032 00000000000000x=ieGruen.xpmk7ǟBxoal>51J <$)i HZަ>#9y;~o"'~}ýщ?oݯ(]݈]{yԏNz>~?t+PzeZɎh (]n[3zz)P8=l&47jך#hy@Uޭ (+ưՏ'һ񒎂zP?3 h xg`/N~y8X0Fޥ%&o8f8%1d)"aX 2k!  ;}fz}^TG" )b'؅)v@9hK^34QK%HqyӣT|PdhjA)JQB]|{Z$(@!C"/j:,SD_ z=C|"EfZWޞg>Czk⪏/p;KpxY_zgV|S/ \`D\1 A_z8SdfH1AHQ_z7"C|`, <"CtoIqM|]{uc@8@ޙjWLB,gݣP_D!=>? ͐"@12@1p,>BIYaX?hk2>7Hh/q|?dp +?gB!z<ѯ?n,[nME7I"!70DD f%#C>Pt=N.TS4aXt@iUG;oB1og{ ! Œ݌VpÄ́@:{4C ۫w-,ķz5e)TM% bنm֑>a,C%](F9#XUzԲC()Y4jMAaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f"COlScuyo-2.1.0/data/pics/msRed2.xpm.gz0000644000175000017500000000532212401656723013572 00000000000000Xk[X_-ݴr!UJlU,r;gNՍO}ΜKfO3.ο+I3he)2Wg$%Fx}a/BXa@Aa@q38Ќa@"5%yrZ *@:h l@U!%^"w"_AhŮ~G_KdHffpGXU^%P@X-"P$PW _!PB( C`[*ʋ< M/"\#y Ѷ[Ah hIT!Ԅ)+TlD,~B!|p&B3Ά۞XytUCVdl!xłGM?`D+}֢(иkO4.WԷ5 4. rYb"ȤRre #+9ْlb6T#rɁL*} z^UNǶ)d1$AHEi*g v)+rXgʉirLr7F>d)es^\ϵd {$B^iҿb}yր4`ْG)2,^&?>afכCZo]civj©{J77g"Id k~=6R?3z.r׼p."2H7;G2ax_w]rJ54[׃M]d inȿal7 +Y ] p%d9ݵg)<3Vs? g"˲Xu7?f~~R_rxgAa$ۓfg"fM7رxSF]Ƿ^%o4x<*3ey"r dÊƗxcjl/Yn[ç?M¦=̏E\X&QƯo߿}v&NT.7Tb ]Yx|d]UU5JFSmz'.,ڨ_|pta(tDfݗ0tWo}пP?xj*h.Da۾04Lȥf7='Ώ́I- p`0AAhG:[R.€ rZ+9F7v< ~re6m7kOݨ5W^6::O;I4D^#D^;! c42F;Nj}8 |jd- zU_?n\v<}txթܽ3sC<汩p6jцPkk;iz[,ɀJ<:~͓ڤBAMȞ,}Dch`3:f?P㍡.f"E&s ..~MgkE΢IؗP>\ LP4[P w68NN=ZIÃƸYbV\a֐GU#1n"!% ң@ JRk|=:.ډ\w[tY:r&K'2.}{o@<\'b|1 i l,q4GD 6њgd'7'Ud>cOܵ&w]mܭ=*Q&4DAHD}9MR)cNUc4BTt/}rZ4j_tg(:<2^|1ݶgs}ڹ =F^ޝU#jS/b %M?7r/_V^%cuyo-2.1.0/data/pics/ithDreck2.xpm.gz0000755000175000017500000000061011101102051014223 00000000000000Mk@W ]51j"[JRB!mhs(:;,xITh[i 4<iל$c zyeW[}}u  –L0Je=]fV0eC(R[6&<1tlv3OR";v`@ߘv4LO8D4uAct 4!z8HL:=%#㠱ϡ`C o~")/8_ 0w(BݒvvyvޥκKyr]؃:KUUNK);!W|\@ircuyo-2.1.0/data/pics/inGruen.xpm.gz0000644000175000017500000000356407550521113014044 00000000000000<inGruen.xpm[]6} ú(B)Bڧ>J(a 4ݖ4BF͌f$]*zht,ɾ>ҋ~n^\ݧo>7Ç?7ÿW_ WÏ<_~X)p@~r}p9T-p!)=68<Y 39D!9d;9 lgxm!c;,z|H@9kBW\\{@3C،G'$'@{ L*9 +CɡLSľ$h~z9B/ * i$< CoMlgE-qLE>ng{W0$Xyy.C"]* FopfS<CFA@Mv.??hQa+Ҽj$75x583sh$1O'rHO$s ZsP4:Y5jg@)bnq@QjE(p=;ʜ/‡& y(})(,Ta2MkJ C (6M߇)N"H/u| T SVFp f+ jKB)|Q @ Bmh 58KmeGR!w {t,$L$8D)mq@݌= /0.)"ur5YN_+,!/p|r qD }U)KAJG`/cH) I:Ge .48PqpĄ]=S XdU ८ϵ?s/(4T$hClǃY2\5"y|5eBcuyo-2.1.0/data/pics/ithVorhang.xpm.gz0000755000175000017500000005310211101102054014524 00000000000000ksZٲ%_a@RKZ F \0h@~c\ ?v];NwGvG̑9\NnQwUg;&;ռpۿ>}HwWr1>~K񭧷Y6wf6ŷQͅߍ|1Moz {'oS#m*l7M]aޞ{>m%l߿ǰ&9'6~ջ}ѧAi^o3YK(m.쪥Qo~z[ ?MY6q|j(0m {yYlVLiNoaw]];w{z[ m-H=+tƕ5OSRFzoޱ®&z`Vj:>ȷg~M߯x5kSg!P~鏛O&f >}A?ܰ5۪ƭk=d Ds{-r|?גTmnng }rn??߸ ?Dlj} 瓚cqOn[7(𳛟$Qކom$NJ]4qs+[|w)nz~j Ggn.n?lpcckiݸoPgסuajn?p,T_Ʀ-?4oM©~~[[/8aZrt9oCU}ƚ9U=e<8G&1o~|Eџ.C3q?>o.SgrOFg?ء"3_役|~ObXW/5/}7ТnXuP^ιs:5 "~- y?v{E32bsSϡᇿ໥\9?a/]VllMuӽD"7'/r62VC݄l=eܟ?Uϡp"ݤ?}'CMr9"6HH 6:׬bLE}z(t27Mݚn߁ǭPjr769K}O [-yx&'P];'m#rjۛH޵DNF溜)GG>D׫Ng uTb]M6G52K5)~ʽvr2wDrtŞo"GEVþdk-G&b\0{\kdսÈMڔ_Ml7abbnZn)7#"}ݛB|E/#}6h' eQP= 3ġ,$wQ NJ%CjlGk%l8*b$uE]ƍvss'W<vj~ki0bG5<;lTqm8su&ۮ7 "<ߍڶߜ`-1[BڼCtE,mU$Hi[gGaOHEaD~'8z&F\pb\n-9> m,!~S,Xս欘pJvۤFLnjCK5ގ#jC=uDg;/7ޥ#{F=.遜>{[zCvx2!ۦn[yIQ-&3jqMQ Z9ݾs܌A8H9dx㠪Nv8p*Ơ<#tӖ% sLJTY]8 gP8I5MPda5~9`  $>~Gd3ni,.'Ι2-`x"Z"AQqδ-oس&Sa(t9?#39]znQ̆:h"hzq_1hZ' Noᐬd8cDH Ȱ1I$O3h0 R' *\sM(Pqtmbf2Vס%]{P7;~Bkvk {-@q phJayN4pB;eENK-T 06eE-spL O ¨ 8\h[ʩ%Z 7wzkl:I1qmqaB$f"(Ӡ'|׶x=v4"\[0O: &8hKQ6G#µ&GHGR5pJNgd!m}ulj# "4NH09dxj'eR']D8[ss6QAg˗u[CZπB!&A)hɐ(L)&D_ɅQ[FV+׋261*x]& . EqM8]Dx;g{bhr*d$0x_'2)1;%nk ÞZj Y&xdƚ}zEkBצXZ#ro0݌j:4lM+Z8&AOb-?Rĵyvg')[3f: Doqd\m%жQ l ^hB#+I-gҼK)BLjh%pLS۔<*F dhBрfq7$y]s ے/$'gr>DdH83t"li 8D qbHa DLKI|^?>v=v$s0p !#N M:_[$&ZZmY)L&-gl2l-kS &Ŷ%Xn[_Xa^ qZ o1.WtԘCGB#Uj9<$[ắ;g.ƒfgM>bÃh!_זސu\@ +*j,_ AZć %ބkie8E"/'Eq!ppzMh0MMHM, IOg"k7wC1;n ".OqJ$]3Qj73${7d8;mx{1)Nk~֮/tdɟ W ]T-.CF~ҢL+A27ɞgd"k&ԍkɄr3 UE8Ns $ByV~"\Mu$#'sJ2 NՑP6!aJr& V"2y2g}2?0td 7Qri{'˃CbLe&^:ת:^/ Q/O)@kW1[)I%FQAP,;urÖ0-#K57#\\,m\,6C?;]Óyd&Ml&tb"aldNszsŖ11iQ"}:+G* fdI{Rf̅L4pV1V q.0@b''D90Lc2)NVRM:f0Pzҫp:F9.Ú|0%*zHMiӺE !4 BuG 6&ߖ$aQ8_dxC$&J ͡9`,CEҶ\. ns!k 2󯶫h/ؑ=1 cۖ4?/ׅ$iww@b2s 5H ɜO p B b4eυCX1 313A۹v{cmo;L am2ewԷ ж4N) "RqH a<0jpN.ph5b8uMxX=aAgs"$0$umz+!א/-]P$h@L*&€K1I-ǽbRYnH!`Frbq1,pJ]-au^(D !}w?:vx 81)_d5618S ܰK|ePv'vK<=drY@ɍ->2dI YpY2Uh&Y悡k8  dbwL-L5+s^ugj+XA+z!k_.HC 'I(9tD!Xǂ=-YZ:dN0(-!F.d^j~H{r,-X)O]*E}G5T-Ĉ; 'K!jq H\rȇ~2DOmU-ްVCMs0T`EY9͑!Bt}JAQ>|LBB:tAPEt{RH1h 4Cv+3~?# HGB\"vgaͩd5[NY؃ "@!Ic&BUM8cT0;u+t [ֶq,BKberJ\$(4s!"r cZٻ˅r^C-5] jR?fC>|J! KkC•Ҵ- 1q(1&"  p}-2CshȀh$3.:Cs61mDq_x2;bI1 K&/(@n@?GKR. @ԜpnoBK i+/ L 6aE:2HiTTNpq]}" CY S@Lkm):rsQ[Wy*ЧG?#I=h6c!J BD)LW@0nU( j!?taƬ|Ң$lXJ 1T*A\/O$R1tC!rtD7j2'ݥnSYB4rzaWx}1?eA /:TyF0 BB>fJRt%`Zǂ 9ӇyTD2!b~a*U4veRaq'"^p-݁BXaT S<; wW^afhXh'9 *ҵ+ FH0|HTm}1!ƞe%kˤS th;7bjmJ1 \9&\>2v1=Dl\mHDN(g+زT2 ŞD~,зq)FѼ2Q^%J'r>thRt6sI_R)93k%*ۋGc(#0t|ZM@{2& b&m p'`vxaA 9&\YW =C9i&攡TE'K/B;H}GMZ eao ͡9̮'rC[>IW)'9M!-%MpFm1ڡMK&G&C}O%{+.17?'šsUhezq 'W ; fœ SW)mt{Qrpzgptw'my\"X4H&s`((w-A">P-jM!eZ9#' [.F=(@xf1L1]n~dWWi\v t,DϞ}j8DQqbEz΅}LO$;Z62D {<b. ,d;!M[1'P/̿m'~P ][h$#bNl2b\dPvDsJ3'h7ΰ1;RvZh C4loLȑYL˖_"tR&t9 @W'FOI"*4½33b"Q s{@cTy% +wتR6CWG ϢAg@PIp Eӂ)gx&cڈ 2m"X1 hƴ3)c"GDTh W=(6Dfp̖SdTNpX@o%fC׆WwZc'~l#DF>-9FJ3I ңp 10QLhNSЊ&~.Utʲ` wHh=\s@"2gkt@ъ7 a ?At cr6]afE?Θ23+JvsWg2_pghOkh< rZR:'XZ-f|,'1β逭D?<,x!I֖`eIk;fR3e`P\-L 0+hDR@<]C <7RїK+i.He MT8V.ᵠf$0lLď,FtICy+VnBPy3 4J5;g2;8l SNc"Ӫu߿.t tr#)%C&дx>[ 5WSw,Iپb P5X 2G?U1ŻhJBfxQOk'Yd|Z 0աJHLͱE1t &ܴN't82L0h!|Ƚ \- PiSWjcXf㑊>dE9S.]qԙ|XrCss+y"f+bjyh$Hgu}R\r }Ƒ!=@9>A#膛ݢbm2߉F0 i3g_etP{=9G_WXȣKZDfIxCpsAJ"0d#4yN(3[#Q=}mky}]'ю|pO,t¯X0ñC\wށ7DP,݆&yFNxy@% bF51ڃO3%-u[3x~DUBb;84ZNP炣e X%z<͆bq;J1hFȹɬ0si[yڿ| <=Wz7fKjKB0E<`YZ8,^p #rAn4ݚB% #nex#x6@(fMohdjz<ƺic%c!߯FhRd̄.Ys5d'QeJM \A4@TNo<`-<xe dDs;̸0h-Gζ=2,u1/NCF@F72"әlʝe>qe-sb`֣{ʐ†?'562!CdǸFb:x>| D\2iQ'QC:CU|g|LHvÁQef͠+z!dwؽ=xrv(_C wo+]n*uDƀKneYET# ۘA%@"\6&:9a8Oe29 䝦O$t8C,C<5h4RÁYͱ8{\F)6d×BRT,m#Į!,eN<ݕKr ؐ<}.a*V |(ö`tؖ[#)Wëh;)T_;6T;θNC28Zd}"JfoMy|q4skyKEaP85K/Y+Vؾ2AJIm x 74#n 3&àȐݿV*͘tŞ,w=֔6a cfm8"dl: =S\l }ujo9\Jx-rb)\z.G<@’%1g^xū8j "p^40%v?D"GDlw_8n<\R)v0.U JA*`,=+|tV7Rw}{^zRTc>Y(9sNP:@)KXlvePIkH ^!FzYx#8b-c~K*zǴ~8ֹס~Q\r 1t ,;цeKa<[xOsD TR ;]Ff*9-24AcQj74ʖ;y1`xcӰG}X_mdn!-聕6* FspJ(CI?Hz!vv tmt\޾Lu2T:,y}ԂpdXhP ,˗2HJeOKdHmfĨ,ʦ<)FH+A˲؏\ d*Q{vQ&\{: 2lC؆2tR mb>Y 3 zHvԵQ{/o%5;H,fʖ74 XɴGKU"M2Lq/3iYAj엞rܾYPzߗJq֌IB8&@%qo=ڄ%S+\t:xdGw\/AlE6 ETq4/5*0eGB #zAc4ч݊ۏ^. +FZ>e(厵sdxs=j_AP-`)aO>zxnR5CNml1=w5C~\W5UF аc}̌^cֈǧxR 7`TRO@}p1=w aКOUN_v dX kr9ƒu|ʰNGcPHxaQ3t/ױ.zxCٌ\BlKoxe) o k;iقN,9W5yE&o 3BTlyBrwGOA /7İ)\/qO#ZkPUz۱`c._xsV"!p- 8oIzMB(ܘ9O $CLy&!T Fr2vpXBuA1C/cP3YdzݕpKɔ)Cu<W ͲigeXA% eh?LUHf* :̷3QI>,woy8%t1@"k e ^[z9^yGg#L$ӄ*p~ҝ@'4_!hX׸8 ޟ|?ힱڨ<#[2$مWƺ po,0/R\*Zrܝo1-R!p(}=15/d*R>̺|1͎'d!ϟ-a=W %S%=~#?|[(y06ޗeFQkP輥g'%F$Ţ7r!C^A^ȩj}{m`.[օ; aD :C[#1)O@jg 46kRvF)tM-=ED7k d 2$?!zy| &[yۿ!dݳfNN'5] R%sotە7 .dv^(B͇f2[1@^.WR8pػɰ?q4!a8x4S6#OzHq>,/WMNQ,$#7AoPSǣ7wS͑iކ$,fS蛯uá*K(\ yЎ2ߟ),ukϐc{"jefxk5lțjxqs0Vd|lx-θ''Hy*Ls'{/Lm WzIQ=kO<:p*pX'9P:$/[1ӃCBQ-g841cОsH坪cYAD-)^f؟[JW5mDĴy@ sMHCCPf?MHF*ɴk=b2$IM[a#Š2-ᵇs_7f-Fe#XW+|$e̲󸣊\f m"-Qk5bl|j$ۄˉb Xf+dM"ȥShLPϬqȘ#@B\'s)Ys+ɋK {d`!ؠ)#]6JUcqemm,$õ]H_FX&mG{=#a"3$mk2L=~2Dj9 C'Sߞ83Cqy 5k7dh=+,#N^wp٤A?.2[}| ;|+icVYmϓj ȰTaZd$z] #l^pN))<VkF$W [A7Tkf\bJY2GSGW58= K<xK1u xdNXmxdL< پvyrF'3`X~mX(Fn}@ !mRYT{d'9 R,72[>ϑlL >=v :Sx'8ύ> z}I8|]@rip'lyɐRD~qzs"c»/Շ'ZYW@tx*[R4D8ܮU{R7 p}?<3 ,:aE/,d%}1ܵJ_d6 ~ʢ9wM17X1{Cdy)SiOOZ Rx7FP:T&.M]vxvtZm8,'RPtㄘ29ڪ͖g,}((;E?Ox@:qx:E0=Qnj{yc`+ †= g/u&> H8~Ml, s_Rd64{1^ [}\暧m.;F_f ^ Fnsg5Dunbb<Ө32iԞ?rfy;ޟh={X=ׯ_{zcΦX枹&C,]QF-e7,Y}Wg) N",Kj۳& hGm3w' >O*FV8{yNϙ50+j(x0 1?OF>O~N9 |;&H{E@am] S q?oU2KeUDCrvğ(Cň۬}χbQ l̐+Aŷ7%` oh@cjP.sTvj5?gF SPc `aOtP3bh<#UZY4d͛K8e2{X&k <ԃL M}8wͦDEtWG}=53kP1*D h0'h7{ ި2sOc̐ '[("drD> AKpYBH`+010kHWkʭ?+jYYgodRh!C kրt{odhtZ1e9[x ł_~` S`Nme1:Yjbx8.&"fhx[1[~zJ1G6y "X4Fj\==laҠR~SрuQ. vx`\g[^c>pX!=$Sg0RkÖ*7VbTa[%>˖iΖv?K8'J +kxs1ɡ*G  H4ۿ!vnSJ\8DR++6ȇ~4F{4\׉OB(}ֹ? 8:"ff9hXP)COYu LTPіSbY bJy+} EO\pAh2A_ CQ-C{>k3cf?L4b7Cn!MyRJb'Ӽ='znXIG9D>,tL0.艹ߟgjq~/Y[b5 2Lae# #]c&ki}%d`GPx;eC exdW}ϸwմ) 9W-FzʜtY#O2l]Ad1eL)\'FU~񜇞tG=ɍ n֛uw%5)CnL.v! 蚐](ksTw >ݐydARzC7Dre"l I* 9? 'W)acyu=-WL6pj-GaAȨ> 9 Qd7>ϫם3z>*~'8O$dv0Ů &!OkObՔ5V' 7 N|V=Jl55 2 celcꀸ<58Ӄi#( b\'4Ӕ#l0.R ( "*Fe2ÕZJeC`79U\m@1lg:,My "&p9e2KGDxp }SA;*U&OdwsԆ8-+nsPqMTm1K3y1\\:3,~>J ƔH[>揙`GzAgf6FSqC>El+$Bh0WX&nnpf6nCr 96a".'?L 4et; ш$f ap~F2S!z ,E\9h9+|xO&CB3x2<Ãp|8߷+C|-R02pÂf u?[;݀^n<ף$GzW#~Lz>*dA|| 3>.|,^ `S?~ҟLY@dEn6ġUMq`ҳ?t\faC k ϣ%rGb)O4R2k&rچ 6غ>.;DFdvdx$CjTA 9 ^"슱||93[D2Y/k3ɇ'@TCq Z(!}SndH!|R"/MWM.G=-.V8| 3c P9px~L-r`,އ﹩L\O0[y~vձ8".L'\ 'Žԓߟ;ƴI VfgÏ㝮|^anU9u^<_myxWFb{~xHiq͟-C{D)zrL+ [zO9[zFoED>$\<*=b6d,CT44߅C&vCV 5(&xgekksO9 a> ճBHh̠^hN^?TjV<{\9H{C)O*Mj9}~@3˭:8Y_tA9;IPx RfN#hEgDP锪6t]uqR2=>ՓFG#כRU)8 }p8;'ad.-qB>$ `{z6UUrˎ vw&lZUX%`G>-ŤX\淿ǡJe)R~w/8!ક͎6R=7V-b1 m L!*ϻooetdkj|ul`>Qe:d7ՓvUI;/hpCwNqFl&خ0y M]@`Yᛝ}|Cn1Ww:#<ʇ\ӣccY2|p|DBO94eS٩YfkОt}ާ""!V(/\bbn<rngg6 G=)L!t68pjJɛϧ@&6ޣ Rh;|Nf6UxlӅ~!Va/D|ӢᄏaP!rɍa| wzFUo9gSq)9?eݢi4,ݰQޜeHQWPN͞}޶eXV0 o<]/֢]vtm,GFm#eKU@h]}\li%q:!%Sd2jZ^p |: [:^|"لʓⲪ aC"V'w]8ҵ+ )t?>0<(=>\RliLx$STѰ=)ˬL * vJa^ O24$tE\ 7Q] L ~9r虧<۾|cp_ބnH.љ>bUd3%pu |4%xRJӄJ:6 ?>G,7l8೺ǓQ]uRw9w )_<=vͻB(:4DVaϳ',Fxۼ9[Gp.lnV/t ZDd{5U?cFy <ޏ YWPy\D6T_?~H;\i~ 2dUL@ḒhqYu|]TjakR+7? ?˗V҇_Pj6U*Ra3/^zk3tZgp N."Z4Q6Gsa|?н~%C[{s8t|>eLUy@Ѓ}703:#\JUZg.~ ?^(L7-,C z˴h{"Gѕc'yCReD!D߇ O}<)ۄ,?zBH@jh V-m S^yOE=/J гn7l5QŒ*D.z>\#1Vʥ|'k=95/k犐},JbIpsuW.f},&A|z}#e^3lu lb}@k'w@h ]gb6 CAvW { ]! 8 6#\ R Z stA n$ %C\/7ld<2DR+HkbDRyC7}"m5$`HWUa*}ɔ0*PƐ]|¼p2۸G?(B.[6^el ?L,ܺt#f*F@T0"G}ŤI,Ü eI'a0 I1BqEդĴAeq9|!!4E. I1̄L,1n՝I\y&/ñH3 | iD81t {N晻#6Ӓ2מM2nۢ|CoT(b\ 4* )5)[Z&Vc❽y 4)*-0o,\`owߦo:0HB:{e`OyEtVZjsYr,f,ɗIz|u_'ƛ/~ki K>Q}ahN%uOoD]No>~v.Q QfJttE9yZ¸|ڱ!zvO;NmQLqA~ -ը3X :ҎRm$#f*3x?2H0iF,a8"2(/`(ʴeq5lў^|Q#y "i9r^Q$)ӏ (,L~Ӓ{û9Q((9u&8i +87*ƺxd<2ֿ*cuyo-2.1.0/data/pics/msc1C.xpm0000644000175000017500000002430611545155530012766 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 2 1", " c None", "# c Background", " # ", " # ", " ## ", " # ", " # # ", " # ## ", " ## ## ", " # # ", " ## ## ", " # ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " #### ### ## ", " ##### #### #### ", " ##### ##### #### ", " #### #### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " #### ", " ### ### #### ", " ##### #### ##### ", " ####### ###### ###### ", " ####### ######## ####### ", " ###### ####### ###### ", " ##### ##### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###### #### ", " ########## ############ ############## ", " ### ###### ### ######## ############# ", " #### ##### ###### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/bpSchnee.xpm.gz0000644000175000017500000000064310361461707014165 00000000000000_K08[T oeC 9.%Aͥ/˟N b5fUCxWͼYnUu6;=op Y>-+P4?r8y]mj'O, |lcS1}Pkelơ5ae\<@&EM$@ J Aծ2c7 DF K2 %>)gKas0qHDsMu3U0i!3q  Mױg0P;ibb}AO$8p1t^:(8xZ éVgJDkgC,nscwI*,!D) %޳D-!f ϋ tcuyo-2.1.0/data/pics/bxBall144.xpm.gz0000644000175000017500000001035010361553650014066 00000000000000b=bxBall144.xpm{WJO  AzQtf,UxA5~@RUI 35,1']{%|re~r_G.ۙCYQ?/_\w4|~=^'=NC1p3i5C }ܶ "reUV%d#ʲ U + 0F\ BmE4PM?iMv1ՎE* b dE%|ZL/%ݮ(?{~C*ɺ4@nJh]j}Yre- $>WP|ea(̐W\+}]S33 Z;ݶnzA:3UW_}m+{{&|nA6'O؂]>c@6qoJc=Ɛ}cq Y{Qex؅ie"x_` TMSu]Bo5v;}ˣrov0]?;87yn ?FQkֿas͘fL~3&c9wf''S'ȍDN$I;a확NjÌ4-_UlkNHЍ!6WMlW[`7ϩWE\ѩ/W3+DBO7E-4v1cQXe('%B&"|x[+k1 D4*.\C،@/ۛp82:bn:n?XG NlbS+̔aK ƹMBT)3UPF؈JDȌPg<0:qQ̝}""5ʈcLl$:֍!8 X#gUiMƇIKӦ/ASٴ޳ZLA+CF`JMg?; y(*tAع" ė@ =Q |7 Zh=IY;6!!0B @a,]oAłd3rcG q<wQqjfg PeȄYs&#fPHb<ɌI:NSC93fΰ1&7gѕd0:SS\āk6.! 7-oY^ MXK8R:VlFNyY.M*7jsJ9[OocĹrͯ2Psɓ/W$ӯ3>Mw5dcDMat1'+njya7M>Șe!+nz%~3BhY$Q" f>,m*UHy"Y"4I"#$Imh w[NRoMQM IX "32c扼{nN; v_iCdm b.;>˳oכ۟@,#"@Jl[D6c-PAsߙ/y [ʳfLv;ڦißOz/U՝RD\%%:,F?y_>_c~.Xxyʤr,F0G#!FV 蝻)Vd0rs]<1uvDҏskp+u^wvY�$M\r:tܪVc; q=:7u]/G4HJGX;[W/˼gb˸kcr/eĺ2/bRu[/, TFGy>|oqO sAy茸6P߃a (B:x[zLUFyD.]2YKցƬUSXq#KgBf^wSNp(~''gu#EOw},YN7wy:c)OMS˃˳݆{\K*s~ORroWf޸!M#s%-8^ o,k# yeZ rS,orcm,UfKc;2:Qdн++vycb)KuieyyL'(M,Iጵwrïcb&Zɩ}͋Dka&y$dH=S <&Hr MeL 2>Ki땖X5%gClH 2v^ 2DF+2I [#= Z9ktF4fYObVs@*>;':ekA59M<u+_CfS_)Ҟ242'ecH~vCݡ۬Vkn;_ymզ[c+0zo>ǚBoY_AXk3ޒel݆3;7(|f;b H'AOɵk9 VsZAŒ[]:L[ t"#ohۈ7ye WCM{4f3ćD*~l!4\!h2'.lHBi y72 'cݷ#ȩK7P;ԧ&">ǜBjz>`ԧ/''䂐(a.gHR>SjpFIKDD2#KiU?|oƐf%51n>w an$cVl$7 z7c6y1MXqF=)RjUHmO\f 8 U%!Wj{4|77T Dt[N w6S3oo)6k"A-s)#'Zx&[=ZfDrwͰ{ iq7/֖c8Tm_Xt ᴛSO0yXn?&.8CW;v^TD0ab>wn8#L?sAv3\>4Ö\!?!k+".}QR˱T#lG,^HSd?7f'͍3"wȶrԧ Zpvh3|J6Fᨌ.B s{'%'a`m?Lф(q$2@ 6!z{4%%g>\I᧌>0"#,>< J2n'e~s.1SL?bFb'#jnb~G)SDxxtt!uE.ޫXOң\ўp' @hGe u85BT~ 8z{|DG>H)ʬt(.. =žˑ_z\g9|x0s0YKԔ8~3Q?W0![-Vw4L\p)!F*GTڳFi5"9W-Zj?ˑ 9%6blqeQ5,++|U(B5qVk-ZO1WJ8:ߵ.c MȬt*7r{b20ɷu;~)I#u) v1 gjt5YGߏj1Y.2k4o ֎qnĉbUEA*~ dI1Ood7c21͘`_/_YlGJkcuyo-2.1.0/data/pics/explosion.xpm.gz0000644000175000017500000000320607550521111014444 00000000000000W)u<explosion.xpm[d5_qCb̢B3w7GQٕu񿛺$^g,K'_*ʙgfww~_{?w/7W_,ן,Wϗˏ/.Wo^ >>B˻y럠&@(PTP|E /PBK( M7P(PK^{FIz5!PB T0 i^ ZduVXvbP3ᙀ$!3x`Ig0xR8ȠB1rp9DàI;Ȁ嚁f09v=W]= (iEyú&܄s4V&?UAE!T;cUdp1KdC"HՆ'Mtd0Lvm{ Q fav|܉!.ްw<  uJE(0 zp3cC πqH!b҃Tb] ;j`AB$_ M:a s!F=GT&NPxPߺ5i"#0׮Y0x] S cc # Ul]|%76H{wdԄ^Z2?2[!>`o&H`TvC> [p:`g&EfCV0m0B p"6V/A@(cf{@<" CTD9DǠ 0GMߴhs?Dg cs9SBМAJ|Dٸa"8!Rg՛ 4YfHjF0o1oL Siy<}n5q"+zS0w(ϞVO7wOB`kK7`s۝ v#B$vP^C4cPj^:h#6ƹe/*{t'0؊wg=0x+aehݵldHNSl ΅!`k#\v1qN %͑3C*Us')E$s< X(3Pm8e`U gCPsJlP_ qh}\*'C+uZ.Y,0_`pү(D![M2 `(8#fcoj|3CdqڝRLE6i#%a8 bb!rouvK\f;[=f{ L9Ʉo<}gX>\s8H\!cuyo-2.1.0/data/pics/mdStein07.xpm.gz0000644000175000017500000000622412412223267014205 00000000000000Zk{ίPȱ-`')-Y;vhKK&U]a~ޙKV.ӹ<ɮvߙyjo9:;˫wW/|rtL|{6=g{wqWNkfyH#cI"wĻ<֛$~ˣa0$ ý&,°">Onͳ߱X;fbz@$!Ńh8M,ƣV}Iܘ-k& #Q\[fʣvȨY#q0<ڈM6Ξ7 ,qMb݌qAb97 c;:0:0!D3MmD/Q3[O-6]G=#skb31 _G_Fmc-pʈ}ës+lĘ_{)oXl3ɇY]2'Vē;qh'0lČ1xBNyro`͘^AFX0xO-) 2qem$˜icaR ǛhBKрZ|3kr.(&-C_nom;|@m1_W0x6d'T^$n %oCpX%mPngjl Ch]w`B⃥í-ƀfB내n0v_zPjL(NJy"ϓ" ORۚWHԖL"7R#FÈtTY1#ӄgz;eʱ9DԌ U, 91Ș,S/(d13@Aݽ*T9?r\(oM@Nen<Ĩ帠p rpJ㬗Rt3 =ELjYYMdph_{"%'Rͨr뢄\@@=YÛʫTo%舕x`(jYRgW"ډAo 8H 4Ӣ"cfgW{_ .rN:ԕBR6ME(8@Fѱ9O-!jU"M1޲]S:~EH9z U !(9Ako٠+ECV$B*X❥(w1!w'y~/n1 3ճΜ_oQh;^&NگHN%Ef& 16a/K%ñT|c|܉Ix|@'oQxkmVtPyG~7}upDz#t7^|V8zG͖:83MSab|9>9svp:AS\?> ίy#+]ln+ :|{wϏ8w_v;bg;(zoO_<=)Q N?|tnjx~ ;wNse8nswiySfW6-.& J.ݿY鼿g;bUðCWHo Kkg@nzZu9à9ڝ|e9>TϷ[+d(Jd(Jd(Ja6m̞< ]`gؐX9YA2 ?(00b@O&Yja@}<00d,gYf}g+0=h4xAmVV`VgbhdLd8VgEaU03i _A ðA!KY5fa{62h($'H갧#H!y 6yT5?;r(gd  0 7n  ]wY2}=^/fdC#q1$Im\6eB$,{1a:M6 ̓l$dR]|| B2kp agH<"w0~q'Q@ΊZ׵?`dI2 P#@ }8+C12 2d3(~a VHX!aGc FSޯNE~J$d`ٚ#%6C fEAPO E!v2d ùx{΀_9ykQ2hsrj i|AUCd ,g d\q2~8;yat͂kA}0ϳ8x0_1Y IC1gip˫Y_fI4M1sa-w8?W |^5yKybfb_\՞TA!IEzbbXz!iyAJJk ûTu JR_B-a-Rӷ& e~ybcX$^K~-.uaޭE` ly/|/JWl ie! Uz7͓XJb ]a/mxKWϚiϘ(Ȣ 1M妿>1u6sx{1,aOT)W!8{*?K;iouW~}Oq?%-c=x:p|22ܪplQ;po%l ztBpw{v?01pR㜗N}8?N- %CP2 %CpɟǙ%7cuyo-2.1.0/data/pics/lwDach.xpm.gz0000644000175000017500000000466507561732241013652 00000000000000F=bwDach.xpm[SHǟ7H@8tlɖWDF[U*CB&L ?v/[&[d}Nպ`^?go/_Ͽ[{{=_\]_~(gAoxIoɃ,z5߷1bf' f|$d[QC63߲>3C0CS({Ń7i.";p2szfΘkec};znN 8Go̾ %Wrvo[6O18s9t.4Y  HWsa [f|?8t^ HJ!3q>3lBq a¦C113'ԦTc#RI9%A;:j<1xS\a;z q4ί`58 8g)} ιtw0Tj;|`t~L G13KKqe~2:^0@ Bk-˦w5^V`tUʠ6S‚yFħM?&lkvL )d _鋨U}jRov:Cf8}Xn]4_aF ضڐ9:}:pه&%Cbː @4t`(X4jN}iTjFM3NgNRC(%pʉ sMYA`HXCYx6Ch:B%b ;Gh˞|.\xb_RU^KAB_K5*f0 |> b:6WX~뙓:(҄AlŔ-gn1SgjuBX:N<@EBzN=h#! v<`DbrIzmDY NDbrfxQ9!X nຘ3 H̀DDgxXR2$dcɀ5ylmKD1y+m"r-8C,nn/ƌo"re=zȍ2r>ׄ7_0xちHD޳Ǩz+f:8?^2hB _t~ [mZp(uMG/4I'*D"P0E\BsPa.bE]K1t C1O3g U d Tfl"BelB c !1  (c ˀ3@J"Ƌ2c z1/ck Ę-b..C%a1`! AVl!Naoc:c{?ttNbl? ;agO~ oBBȁan٥t5b8>FSL.t݆i2(o\An4.0NȠq1 !ge6S1RatqnLIDs|g2viJC(dzΔT{NuPbjrxѧ//s8z5BqA&x^NN_yz~1BqKM"e"oNގ~\}?S S qFׇMK9:{g>o|v . 3Q&&O>0VќQX?2b&O"<}c-xqXOrt>V\e98,9M]e) K4r/L51Lݯ0xr9k7 9 "r ݨJ"}.Ay֗i ca{gGJ&øDy7Ѧˀ0뚗vet_   7 vðL t_11d^_HĦA_]EK#Jb: `[g!Ytp/#q/# ;(_%0*:_e8ׄu"_2ה55_S2tm״8;+1s\+Q3>5D-wQfg浚ĚSb, !'#n1^Ğޫ^Ğ~ğhmI2cuyo-2.1.0/data/pics/msc3.xpm0000644000175000017500000004346311545155530012672 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 480 8 1", " c None", "1 c Background", "2 c Background", "3 c Background", "4 c Background", "5 c Background", "6 c Background", "# c Background", " ", " ", " ", " ", " #### ", " ####1111### ", " ##11111111111## ", " #111111111111111# ", " #11111111111111111# ", " #111111111111111111# ", " #1111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111# ", " #11111111111111111111# ", " #1111111111111111111# ", " ##11111111111111111# ", " ##11111111111111# ", " ###111111111## ", " ####111## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### #### ", " ##222## ##3333## ", " #2222222#33333333# ", " #22222222#333333333# ", " #22222222#333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #222222222#33333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #22222222#3333333333# ", " #22222222#333333333# ", " #2222222#333333333# ", " #222222#33333333# ", " ##222# ##3333## ", " ### #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ##### ", " ##2222## ##33333## ", " #22222222#333333333# ", " #222222222#3333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #222222222#3333333333# ", " #22222222#333333333# ", " ##2222## ##33333## ", " #### ##### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###### ", " ###### ##333333## ", " ##222222## #3333333333# ", " #2222222222##333333333333# ", " #222222222222#3333333333333# ", " #222222222222#3333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #222222222222#3333333333333# ", " #222222222222#3333333333333# ", " #2222222222##333333333333# ", " ##222222## #3333333333# ", " ###### ##333333## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ##### ", " ##11111## ", " ###### ##111111111# ", " ##222222## #111111111111# ", " #2222222222##1111111111111# ", " #222222222222#11111111111111# ", " #222222222222#11111111111111# ", " #2222222222222#11111111111111# ", " #2222222222222#1111111111111# ", " #2222222222222############## ", " #2222222222222#4444444444444# ", " #2222222222222#44444444444444# ", " #2222222222222#44444444444444# ", " #222222222222#44444444444444# ", " #222222222222#44444444444444# ", " #2222222222##4444444444444# ", " ##222222## #444444444444# ", " ###### ##444444444# ", " ##44444## ", " ##### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##1111111## ", " #11111111111# ", " #11111111111# ", " ###### #1111111111111# ", " ##222222###1111111111111# ", " #2222222222#1111111111111# ", " #22222222222#1111111111111# ", " #22222222222#1111111111111# ", " #2222222222222#11111111111# ", " #2222222222222#11111111111# ", " #22222222222222########### ", " #2222222222222#44444444444# ", " #2222222222222#44444444444# ", " #222222222222#4444444444444# ", " #22222222222#4444444444444# ", " #22222222222#4444444444444# ", " #222222222#44444444444444# ", " ##222222##44444444444444# ", " ###### #444444444444# ", " #444444444444# ", " #4444444444# ", " ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##1111111## ", " #11111111111# ", " ##### #11111111111# ", " ##33333### #1111111111111# ", " #3333333333##1111111111111# ", " #33333333333#1111111111111# ", " #333333333333#1111111111111# ", " #333333333333#1111111111111# ", " #3333333333333#11111111111# ", " #3333333333333#11111111111# ", " #3333333333333########### ", " #############44444444444# ", " #555555555555#44444444444# ", " #55555555555#4444444444444# ", " #555555555555#4444444444444# ", " #555555555555#4444444444444# ", " #55555555555#44444444444444# ", " #555555555##44444444444444# ", " ##5555### #444444444444# ", " #### #444444444444# ", " #4444444444# ", " ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##### ##1111111## ", " ##33333## #11111111111# ", " #333333333##11111111111# ", " #333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #33333333333#111111111111# ", " #33333333333#11111111111# ", " #3333333333#11111111111# ", " #3333333333############ ", " ###########44444444444# ", " #555555555#444444444444# ", " #555555555#4444444444444# ", " #5555555555#4444444444444# ", " #5555555555#4444444444444# ", " #555555555#44444444444444# ", " #555555555#44444444444444# ", " #55555555#4444444444444# ", " #55555555##444444444444# ", " ##5555## #4444444444# ", " #### ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##### ##1111111## ", " ##33333## #11111111111# ", " #333333333##11111111111# ", " #333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #33333333333#111111111111# ", " #33333333333#11111111111# ", " #3333333333#11111111111# ", " #3333333333############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " #### ##1111111## ", " #4444##11111111111# ", " #44444##11111111111# ", " #44444#1111111111111# ", " ##444444#1111111111111# ", " #66##4444#1111111111111# ", " #66666##44#1111111111111# ", " #6666666##4#111111111111# ", " #666666666##11111111111# ", " #6666666666#11111111111# ", " #666666666############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333##### ", " #4444#33333#555## ", " #44444#33333#55555# ", " #44444#33333#555555# ", " ##444444#3333#5555555# ", " #66##4444#3333#55555555# ", " #66666##44#3333#55555555# ", " #6666666##4#333#55555555# ", " #666666666##33#55555555# ", " #6666666666#33#55555555# ", " #666666666############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333##### ", " #4444#33333#555## ", " #44444#33333#55555# ", " #44444#33333#555555# ", " ##444444#3333#5555555# ", " #66##4444#3333#55555555# ", " #66666##44#3333#55555555# ", " #6666666##4#333#55555555# ", " #666666666##33#55555555# ", " #6666666666#33#55555555# ", " #666666666############ ", " ############2222#666666# ", " #111111111#22222#666666# ", " #111111111#22222#6666666# ", " #111111111#222222#666666# ", " #111111###222222#666666# ", " #1111##3#2222222#66666# ", " #11##333#2222222#66666# ", " ##33333#22222222#666# ", " #3333#22222222#### ", " ##33##2222222# ", " ### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333### ", " #4444#33333#1## ", " #44444#33333#111# ", " #44444#33333#1111# ", " ##444444#3333#111111# ", " #66##4444#3333#111111# ", " #66666##44#3333#1111111# ", " #6666666##4#333#111111## ", " #666666666##33#11111##44# ", " #6666666666#33#111##4444# ", " #666666666#######66#444# ", " ############2222#6666### ", " #111111111#22222#666666# ", " #111111111#22222#6666666# ", " #111111111#222222#666666# ", " #111111###222222#666666# ", " #1111##3#2222222#66666# ", " #11##333#2222222#66666# ", " ##33333#22222222#666# ", " #3333#22222222#### ", " ##33##2222222# ", " ### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######111### ", " #111111111111## ", " #111111111111111# ", " #1111111111111111# ", " ##111111111111111111# ", " #11111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " ##111111111111111111# ", " ##1111111111111### ", " ###111111111# ", " ####111## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ", " ####1111### ", " ##11111111111## ", " #111111111111111# ", " #11111111111111111# ", " #111111111111111111# ", " #1111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " ##111111111111111111# ", " ##1111111111111### ", " ###111111111# ", " ####111## ", " ### ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mdEgoV07.xpm.gz0000644000175000017500000000352612412223253013760 00000000000000aw6ShmHKWGm]Bha[ [LR|GJ&=/cJյplg9:p6GhOZ& T{cQ' 'NnAM.wA\y\~ϥW%WKfky .@\.\>H6OA`ms6H$@/0@0w d腈&qL:\Vj8Մgb W"*8N ,A\6ar7 )ֲ`mu(lҤ>@HoRʥeYR Mڠl1W.vF -0B>} k6v#:1XYD3t@t|'H !@oO,!{ Yz/L :/%(W19o` j[&x k<׊a2a "wE&p(ÒdT`S²ɐflWU(3%1 } 'y(QXC#j6C ,ݾհGAdMV3yF^Xe)숾k0e3}@ Zt[e z r*͛?yOAR$Ιãd(Jd(Jd(Jdo2`> g4J=CԵFHg#<+y.Q4a)PY`F&VZ|ˠc h 89J: (jya c(^Miכ1a^0Ph4(/PQB5C( 5W/h:0jaX7fAjEAPUZf- )Cb+5vwBsȺ) Zg(RBeXf 5 nMV3 hY̆V,.|^Tx(T :7:'Z#r:~!rSZ)آl( U gi*~4oHF= ͿB#ԨlXe0l1 Z^ǒ#pF~9xA .b@2{@hP*9 j-Q(6:@o!^ 0`qh'[*.dK ZkK߲\]|wRxoܓ8}Sv2,'v,ƆeoFʞ;.]|`!X1yL'b3-!wBGF _uQ__V}$R^˞m36{ lW}ĔOsjVud{x:(&V(J&_/&'W<єXj~2> | b8[ilxŗy1RT{kh_˾l7?~ D؎mp*'}DZ4q8yqT uz^jyIyLH엒G\a0Ӵȼ ψ qp %!a`GфXAB9$敜ȩTfE q "fCȓ 2>ȇd.9|0 c C"#ȩ 4!<>\dUBDCAa〷5MO}'$QfaL8St,8BB"NcHHj~z"ڀ rtpe@CD3|)'mYǂa;B"6| 9B|Yp#)LzfЇ*$`^"a>p"xdH6rbŐT}Xb #>!HiN4'4KM LձX>BD(H4WB(ƀX\|@ %'}Qh(!0BI њB5CDmg# kV2\ aY>Ì}@ !A On Dn!%boq(0(z,C#DH Ԕ7OrؿB:BH,ѱ`6GM4[' | Y؇!>1m`('1k9Qg>GSSN |aDYpm͙>@":Ws\ !MḊh >,D_Xy5 d5 {>p_a`2YU|95|Ϣ\͇a, Q{YYo&}r 3Zi-/9rA:?5?deյD#1W ~@G;0c&AЇIѥH }!M iQXVT\MC3l 100~$:4۞``Lc_v1O?~<pM;y|gNC Ҧ2yll&ɂxbPn(B Np.O/ <*4j!~4g2_|,S/@Y 0Y; N|:v'ּV 촀OS?̯} 8̓[ g]1:Fyb_];MsowGML0 +F緍fG韜tAtņ7ό N*f#XOn5 녆RH7`[*m-2?tw$8QN?֞`i+Q^uv°Ru6~ZדMm4;ӷˮpTkE) [9ֻV?$˦!<Pz ˇv֨.^뮻oGLܤ\{U'Fk-=s7>98KY;~QC ;\VOzh,6\b[|I~'E[q+/Ej<˹֋F#cS]dxgex-xV|t.>~t_ԖO݅jƦsl;oRʽEki9k[wֻYݥ~,]ggggg.>`]%7cuyo-2.1.0/data/pics/ibwMuschel.xpm.gz0000644000175000017500000000377207550521112014537 00000000000000<ibwMuschel.xpm͘M$5 +F !~#]]%v9!;Nű߼Xe;eI>}|_?~zuu7<__xϟyw?<۟<}<}Oax{i}(ixxI^=[.aXG߇4nr2Fz ǻK51YM/*sL dYAETT9a-r/Ò0121@,21@,21@,21XdPC( ! CoC.hxrAې  ")B ")B$Yp%g8NJ3 (+2bh3,r^/`/`/` g(,pcaAUaXRU Ê*`XH K! f& DJAJAJ /[F6ĖQ}eu XhDZ]Ukj"uo%7>6bi{wЂhgy0"c2|>?c|~rHB WH"Q C~{%1Wc%f5l2"!8{!HHG =0ȨUTQFEoUTF0\ncX1l_F3Â6137&fL#ap08PC( [錡恷!4 ymog s!QPSRDAMIA5>֜c>!Gfp@\1PW Ca`yc(,p/°0l* [aR=Fg`JAdR ekCl[F61FMժܵZ5V&R#?Xs1\,B ?afE(Cc+(CuA!sHB WH"Q C~uu^G x^ӹB$g=DBp ٿ٩{UPQEGUc\nc1Bv&fobfL 7wA8 Bap03 ކ\<6恷!4$=DRDAMIA5%AH;` V`q >2+2b  ; 0 0 09 g(,XbQUTUH0zTpR=;egp+ep+ep+2kCl[F6ĖQ eLQkj"wVMժԵÎ치G.a{wЂhgy0"c: AA9 IC$^!i+$ ({a~uu^G x^ӹB$g=DBp ٿ9gUQQEWUc8\nc81\BN&flbf_L 7OA8 Bap0\3 ކ\<6恷!4$=DRDAMIA5%AH'`q V`q >2+2b  ' 0 0 09 g(,Xb8QUT UJ0zTpR=;egp+ep+ep+2kCl[F6ĖQ eLQkj"wVMժԵÉW.a{wЂhgy0"c: AA9 IC$^!i+$ ({~uu^G x^ӹB$g=DBp ÿ?=B!?Ccuyo-2.1.0/data/pics/isBauerSchwarz.xpm.gz0000644000175000017500000000043107550521114015360 00000000000000|<isBauerSchwarz.xpmMk@ͯl?)wE")!z(~%H7ü03;ӈhfi|PvA&>!=d4X.ka_blۉ DjؖzߥFw &baO8EF3BK 43 cwtTث$ =k_70{ ;dsW2t* e\!.e0R~Ju ~*%cuyo-2.1.0/data/pics/ithRotV.xpm.gz0000755000175000017500000000111711101102054014011 00000000000000LGQk0ǟOq<㚺MQaнmq0J)l}V<ƾt:);`t ɖr8pc{wۻ;˓ x ?'xu +8L`}kr7;1kcp!r\ưo8lQQQA)k n^w]7!`egÍot܆l0٤ ʠ.ېMF MVZ ! NE-c]1 qɏf$A^.0;0v)!0zi`Hbfo@xĬpnl20>䆐E<CP)K{3\o0/ ݔ|r@gp?C3d.{3gWFeZ[o֖Ͽd̼3R{H~ZJ `f- l0_D1th:ԐչM ~E3T-:򿔆wbl0oj YGق2da:tB5cuyo-2.1.0/data/pics/mdHolz04.xpm.gz0000644000175000017500000000466312412223263014035 00000000000000owڸS8M$EA6iIv$mO mbZ(ğFw}Sa{@WYG3#iL)oO=CzF\+{Ӆr,,KWR< QfGcsI%_].Qɔ5ȌD|</*ы~`Y hFFdK,!&XK޹ruɫ30wz ς@(/߱W*T~i 7pV fNp >#SK ⥚,(ё ' JRzT*뽈ol2 ${&ሲO8I_ 13dxF"r2 dvu(RM t'c2(_#zY^kY%]M8KW[2)+0g/h7/!Ԍ젣Է[Ŝj%ׄ$ CC'Nx%ع;! jJJ red3"_WuTqLooBJJL%upgG)mgd Xu}OU-wT<<(V#| ^9oyN׸1W~8 a0!apIXt `)١`6{3phBX0z\A2 L%ǝQe(ϕjV? h5~ N -eVRz!SnUqS[XvŠ Gi8QƑLRk層O6_ f2MjsNGRJi)/0FV)*II2#:h1Ltbc ⺊ePBH`pHCECXq|8~a(dwĮp6C7xew1Op\OG[v3325LPZ>#ڬ\/pC A_w;9Ä 2n|H Ϸ1f8Nz0B?4 `R{ňQX$IUNl Y7bTe[/pW+bؙPCuV +2Xh05CujjM!_K Cbm!#T04-iJ!-#i:]ŢWAմ~M2Pa/,]"~q^M/3d64A=|6M{mTXB?zEZ l.؛< AEn#^,ȇ" -#2^3JkٺWC@NZ kC Z?̑Wв3zȐV 1X-{X,CX,R< v2?[T' 4D0l6  Æaða0l6  Æa?bx/k7%7cuyo-2.1.0/data/pics/ithGruen.xpm.gz0000755000175000017500000000111411101102052014172 00000000000000K0ǟ_qZ9:0}S|DD@ \]QHfmLZgP ^Wnhק ؇p{ va6!ᚎQYrYߤrʽ[p9pYRy{cQ9Ћʊ{{-;#;#;Xr 鴮n\ m5LbY\8(Y Xt ޸L+Xu޲D.1tHXt(W TpxHc.2N:8rY8bcd_>\Y:bpC6:8X6C ͏(f8L'JY琱i.f:L^BnЫmR~%Lhpj "nX+c qvaSx 荧`,=ǟّ]E[_#-{QV0똈eGS٠\7OXq!cQMd!㔣 m^^@Z)9M/` +7՝ VϣhB){ZDDcuyo-2.1.0/data/pics/bpIglu.xpm.gz0000644000175000017500000000301410361232217013643 00000000000000`CbpIglu.xpmk7ǟby:.)J`RCJ %Ą&uǻߙvύN&vG}4I9?o߽ܝuonW|eKǧiuۧoݯcix|x/ǫ'ǧQRR:XT2:t\`tcS3R` T V e' d%Oa*j`IfP- a൛!Rue1I p7Urΐޗ&_\2ʁ @lC-P !!|" 8 ]r0 "Q @`R'1UM(]%Q.5՞ rB(a@rE2JX' 7#[M"g\a2VBs嶋6dJ:B܄ZS(AtS oS,V”}jQHKKAŏL?^UA)"W'trz3!T7 D5JDa|?Mx(Agi\L9țJ76CV/e!bH; ?xA D?Ld=@fpsЈƠVp|8 k\.dB3fPNo dnBM?5RM ?QN2!h&ll[N9dP$P 5Ů\BD' iӜq A>`0`}M4_3(lcƭh!>/pԴ6xO&8t]Sq z.? ;W[Zo4MTly#ZݾB?;-6qbo {iAfAgCso7~Ho1w=7ޫ!U&`PrKJ -HI Q`#m|a@.f01-CpFYUfz0!81m0IUv8ɀZ@f!Pbu |~L+P41" O:!;}xZ=C[yaȘ6eXtC]Ufp/V*WĴdmi= 0+bZlK]}v h`= ly BݭQz4 jk:8O-f=d(B>M#>"u YPS-h97pôR\PCnsɖO!sd t tn,@(^ync.MF@K4n]# s#_a|  ܕv&7 "\ Զ7pT{!0|+6 ןOqBcuyo-2.1.0/data/pics/mdFog.xpm0000644000175000017500000000515612405235607013056 00000000000000/* XPM */ static char *noname[] = { "320 8 2 1", " c None", ". c #FFFFFF", "...... . .... ............... .............. ........... ...... ...... ....... ........ .................... ..... ............ ...... .. ............... . ................... ..... .................... .................... ... .. . ....... ... ........................ . .......... ........... .........................", " .. . ........ .. .. ....... ......... . ....... . . . .............. ... ....... ... ... .. ........ .. . ... . ...... .. .......... .. .......... ........... ......... ......... . . .. ........ ............. .. ... . . . .......... . .. ..... ... ....... .. . .. . . .......... ..... . ....", " ... ... .. . ... ... . .... . .... . .. . ... ... .......... . .......... .... ... . . . . ... .. . . . .. . ....... . . . ....... .. ... .. .. . ........ . ....... . . .......... ... ........ ....... ..... .. ..... ......... ... . ......... . .. . ... . ... .. .... ..... ..... . .. ..", "... .. .. .. . . . . . .. ... ... . . .. . . .. . . ... ... . .. .. . ... . .. ... . .. . .. .. ... .... ... . ... .. .. .. . . . . . .. .. . .. .... ... .. .. .. ..... .. .. .. . .......... . ..... . . .. .... . . ... ... . .. . . . . . .... .. . . .. . . ", ".... . . ......... . . . .. ... ... .. . .. . . ... . . .. . .. . .. .. . .. . ... . . . .. . ... . . ........ . .. . . .. . . .. .. ... . . .... . . . ..... . . ..... . . .. . . . . .. . ... .. ..... . .. .. .. . . . .", ". . ..... . . .. . . . . . . .... . . . . . . . .. . . . . .. .. ... . .. . .. .. . . . . ...... . .. . . . ... . . . . . . .. . . . . .. . . . . . . . .. .", " . .. . . .. .. . . . . . . . .. .. . . . . . . . . . .. . ... . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .", " . . . .. . . . . ... . .. . . . .. . . . . . . . . . . " }; cuyo-2.1.0/data/pics/bpPinguF.xpm.gz0000644000175000017500000000141610361232217014137 00000000000000`CbpPinguF.xpm]k0_!\4 F!PF/c.k`ϒ,|xD $,9YdqppWW?Z}O\^,O_Qgՙ:]\,Ջz{e3TwTrՋ WU.Byy7A<uCYჇ0Svۙc3fza6cNM0w2k22a5Y{^a_ 8.gy7O0t6qCq+kKՊQgJ x/ =4N$q+Qܾ/\=ϭ 1mE┇izD=& [+La|X0T➹(ŒݚI_}ukN=TO1I/j&KqHhsфM!F <:z<`9Ub{rL! )PFG<DC?8_Em|(YV͝0(Eԉ Q %6 N'J<{r[͇I+H]B`)GjAh[8F)O)Gߣ 'r@$?hny(9ƙpb4Փ?g)ԾJA/H59}榶???Po_ͪ^!cuyo-2.1.0/data/pics/ithBlauBlah.xpm.gz0000755000175000017500000000056311101102051014572 00000000000000LG_K0g)Q)> "c{ ~wrɥs=Xm?&w٨[(FGl5/w(y.夬W_᪂ YI wo+5G9?=סRaҪU:5lfR艿kPKC1R韕ؠ5gYSg` ɵM{t.wz7Co1ݮ5wfqM85A1+V`< ȫW@@>"k82呢C رEˁFx&ػE҈~Rw?)$hی]I݋!7Gs,S` kKnRyg/^ȿc% cuyo-2.1.0/data/pics/blMark.xpm.gz0000644000175000017500000000036607550521110013637 00000000000000z=blMark.xpm׽ 0Gspv_)=$5^Aǔr# < wz&k2!#4dLȿ1IC? nGe6=6!;S[3e4/$ Del Af$,0qw7}'U h.)ޯzr&(Q?R z㼛89HINohMف7 =\/QL44\132.)ojL?N Aٔ6ZGTWMh?j*V || |qJmKh.2'lTR}LL9a< SPjaJd\=Iefܺmz$u؞/uz^h)JSRVq!dx'UpA%ʝ!hub,g90*A Mnr]^_AqݝBHnN$"WræK[MrK?xx LR~͚NBPuM<\{v$ݧ-|q2mEG0SBu0Qz|fPU|g[A"r>yD&`o"1 L9X2-p EN wybwC a*k,0T]eB0'f -ÂBdpw~!/ P/:CCÜouHϼ47]nb1Y@0n818w;yPepj[~ r01p` 2W# "aV쬛"ɦ)l ێJ(K^g+øK70Y2~wPg| 2[\Dfv I4k+Q arw l-a1r=%I$g :>bٖP|,ƥeGUB%@F~[ZB℡wͬt8SLJf-çeDZu\X/ @ |N}oZʊU$ z"uKdIV'UZeQ#(%C(B9I$I@jX^ K|CKJZ0[F%)LHFNy8T70gZ#R480pBhץS08({ ! gpҎcx|?AߵbRΟs8i !8m81g bTIv6 GĶ0L> }b䛟I0RqI:! n4gEѯ V>xl<;YzxuPÓ#iޣK碂' n"dLC@BiIջ9啫La?;V ǝ^%ߣ\4mG̱)4|0EA}aAëD+O'U>8( gUŇ' pB"ۄAQUbzҿk0AܺyJ/[dAt QtŇݚ%zӯX̓%Z윔zj6Ӡ'rZjc4]xM-Jji_G\5{c}>߄RZtݫEm5;,ʽ#ID6i &cuyo-2.1.0/data/pics/mdHolz01.xpm.gz0000644000175000017500000001162112412223263014022 00000000000000śk{D+dd;Hd4X-)"YumNCz3QzmcKw}ƩXǖsk-zW|k>w,'ZܲB&1PG1H  PtIa Q!z:,Q5?T2D==bȰPunc'(F@vmz pQ)%FHM&bGGѣ/L tt :if() BV=+eh%@ T$}: 3tmS Ddfz q@Aq!ׯUpɳN%*׳*LP{5bfmRu}@!?: y:AME&@\U,lES@nyɥh1rTHDP:Jfn:ö]y9FL˱`Ʒc`l_d ̀%Bc%2i|QD!ݘRE"@U "~5 {Yk|b d)1u~E Dև9u &)kmi 82 :AxJ|ڽWO=*=WRئ9A簊+ pc7mR&ST!x=`7  ҒE2 SpQi@e=_ T8~T8~6 'ldMgy%̞Cd`s!L82@\p tAyt Z =,נ%RܙAzh`cDhPP QP2d8c`usP+ `Fv0F82mR(8 Ԛh>+!m(~y:YZq[^NBځxȤҥ2،$K OYN> 5N HǣO+i٠: lj?d/]0]VgvU-2A.x}f5<H.?ۋu(ny݄/ [ N\&12#؀l$2j;B'i5)6' "Mp^y~f< 1t1UB ncDw!boˢ\zwL*dtXR= `qB/đ~O%; TP"C/aXat:^YP1!@Q"Im~2崡ݦH8jiZ0buݥ;Vs凜\!RQj]=+6 Ӕ _E `OYIM^{ȨF|p\7SPUJxVgCrEuuFU ]Sߣ078/|wAR^ڭjFQfe];^T4<ơ! q] 9灩3eT:繌Md6a棊ewRqBB(h0n VZx?;Y62#%Tϫ("gQ,&s4W֜[qR R j%s'[l>c q;i@DV6(&=K=,\YtrasQ ʹ ШM =ryyV)W1i-f4E;I W*Ya]Jt`$hE}Zy['hAt0/#u^]/$JrOq"Dft*D?" Oŋn/k)r, _@=PZ.=|hMjU֙קBjy-+L$)* 3Y=ƭ P&|kj4賕~VSdD鰀ܥw߱q:Y@\ئzN9!+ H|/RrrwX4ur, PZqъ>n1t" O~+!eݏ`/mAt{EwV wY\B h͸y5s 9ouClaHöLK7nGX/nG^) A{eIpipמy{m[]?"@7Mve 0A= pmmICI2:>EWX9f٫Ņ_,X՜2XZְ}|z)qӆa{t![CrT"_a{@Ř7[>?AG9@4bѧ42 S6Ţb=Bcʅ0O͍I >nCFlJqq2eCDͶe1boL۔ʢD1[F~Dȡ^}M\9|9m gDtqUR`>EL}f wxr_Wd#R?EFdSr>S1}pqmߒA |4)-Gj,n…#!3a卣q48Ghq~/{?ANšC!DovZv1N>1DGwx2,O>!k<DS^][CR0ΫIݱuDsǽQf* 8\FO&hWȥ]='b<ΰR2AN ۼ؎FZ}uqLV:yD*`,ѵX/x~Xn]:ui[LdIq&gqrRIQq(y|sƪxut0%AұIxc*ђ7 {L"x sJŒ{"xm7Jhn|ȱ6< 2h w+s <ւ+q3,,u;#M;dl\6&ߔ=Oq[S3 {ar~|QB<վs>H$׍|1;#q$yo||wrp ɝz]:"sP<~?vǤtX"4d9 گ/?LdrA9.ѡ~w&Sex]?8Ghq48jt78:gP )cuyo-2.1.0/data/pics/bpPingu.xpm.gz0000644000175000017500000000341510361232217014032 00000000000000`CbpPingu.xpm͛]$5_fjZ"а0w^ "+wSI棪-ޓsJRӽ/w /n˛}wǿ>Ͽ 7o߮Ϟ><s:].'uIW4#^#{ Ct:[5Csc lH)|ww^@0owc'nRccB\D 1O]A|cg!xSy@PoIݧO~}@s0,у@}O`}aY`7K?H!a oL5y:t;BFBs`l atԬ- h΀ d*y툎1a tA ͆\P96A"ԎD@}8_D a?:0P wKA[np+t?dz)@!{M-QN`̠9+`߈ ^'~l{" Y2C:a")̇C/i|k ԤuuP.{r{ZY1c7aPQ"\| 6/#13_hf`*CmVVjֵnn:X$jh Cd(ȇV[ j}n2 -w8;( e#rK}UϞ,MO Xh:$B{P(1R#cÐ;4.@3T"VhדiOݷJª؈mvZq"0 1l?d/`櫮f!@6g!!vTO# ecF>p\FlmI|nׇ} eWA=8`K^ucH4Z`NJ#z-~<q dTo0 i j떡Xc 1%C5Rkgh} ]a:|t2dlbl{z6sّS[#0ݽ•bD`Y%WsV)Zaz;CU_h/C'ʳc;cC Rd&B,,}.H}a6{Nd^ z+͇R'csa %\f`҇Oli}(NPc؜~%؊ӯ`7'35ja>̀lC X+BL?zU3P3?x@ұgq `=1\";j$j& pLmJ1G>$!fqQ]ﳊIp c\W6&9o..[act}1:=8w3emCPP C Rh>"f(F3S3II ;b;o?@Lv4Ga Ra ,F}Z~RPO0OЇ %ھXisaA6ajD91]<3Cy=B\CP71 LZ2 ާlY xf0&:Fw!!p!L[Ru92"¢Qz#%H3DǓf2Nz v]\鿑Bcuyo-2.1.0/data/pics/bcShapes.xpm.gz0000644000175000017500000000124007562216753014170 00000000000000ռ=bcShapes.xpmMK1j= BO{S< "R?P5fS} 3 4;!`f$\]s {z{ g{0w0}<<:#qXUp q8Z ͳUUOs0D.0#Qayfi$ꢎ|~TG>?婡l6 ;?n䉁 #F0@  ! ! !A A A !!A"! A4/  20- l!eh"4.E aBXf!\C{^P j7DA.kq7`fh2e@'7 npܰC7ag 8;ckO/`Q"HFPaz7 |G0np T~up{x<|+uuy]7y>[ `kwB npar%Z1z:#l/xB]2n2~:.Bcuyo-2.1.0/data/pics/bxKlotz112.xpm.gz0000644000175000017500000000545410361553650014323 00000000000000b=bxKlotz112.xpmSvhȅ$`+Tj8sV+^3쾛@ rfx;!n%řOFwY?6|-~E_l8wԽsvO݇owkAT<3iN,nS' Y!MBBUTDXڃPbeJ$LPDE} K7!T䴐%aBAJ ~bV\* 숢p+  w  Pj.+5EYMܦT%6I UIn -QU$T2uiXڑ*$T39*.@j$ԲB.RIlI4 MY ؐdiˏtC( ,4m M52۰!Im oX7hF?E'}Q˶Ix^vzcYlU͑-!ԄflK;rWʴ¦@S?eIV-Xz aZҥ ll 3 )ӭ+o!—- V3rC?jB(6e ZY 0rZY GmUB*0ϓ0K %i)o H5j$lʸA+$l*nºAR$l =\Z aEh8MP挃 2Xw T 2-V!sj6q##~;vH+`nXmI(lh@ÖSurK 44i=\I&q$Tt/$ D\0`,vJ0"CҌ{H{YF3<R0q&~;?K2NA uŶmG{# ޅpi0VL`ɣɜh4\4y#N%vjfzhgb$R+X?g{M&x֏OAT86TS)ƌ旎Qq|^*Rέ\y> RuxL1#z4~yGH +$*`Dh%0"\s\okgˣy]yfhgʹm1"\s;5>*@'oC-Bb#s0'AdּFοZE.b#֣ˈ)qw*鼕|fWm"#CVQԣwHBy2ƋG "0buS}g?NLH0J^.8l|嚯N2^eI&sD\w0@bW #\> $ϻ4\߁oXdAՈ_gakX1v_w#ftƻokQp+Q5$I{_|Ĺ>{Q̨}tϠy&5\e_ [~"F#U`=bI3`^F0vvîu?d|[14My?>񔊔^G)b;bwq,CHuuJ_Nwk׮ y.cOWek>>cwUkyY;s;JoI42cs>fN߇s0r^H\G!]?;Uv8LF.Y_)rmm_1ahg1rI<ٹs#5{NSՋ 3, ں f$O__Tzl / ~1g06D],^,ƘX}}8և6~WdyZjV\MS)-!̏KsN۶M*\BRW ϞW+|ȋC+1*1Z1?ed# qb~ƘsPrzvI5zXC7Ք1>j +k3UfB&ƕaq |u=Ri+}f +%cbhHPFL%Wv]QhK^1z.8~q3K/4eFG(DU[kRZ5^2;j-m;/, j삾F(ew*FWo [u]rB }c#^c#dB02^EaǨ|lTг?VJ*tFXׁyޗF_1# cXqS8B +vݦ"cWU},ĶMY!Qa-Llmԙmmkq$G{[+;Ӯ4oPwbwjb^*B,Z1?eh(omE"^  "yCp..\ñ"0$vҟtYJcK8;,BF_O~zVHFTF 9 i^QÌٜЈ+ o ih;kt}fnw-!, ঃUF@$}/CBáHu/2˿= 1 v` F3nv*4vCQ+^XGZ/_Q17(# %̏tU(͌ b:9 ^>(I4{*$qh<9yCI~Fn߾U-F:+HsYG:hᱥMO.DsO*8#13~x8cQ.YE}swI3rBU`Y-n}C͢T Td)Kl$ڎ ܜxGrC{&!y`9N^~]AUT;&8h桽F6ݕ0l"KtFK=HG^9qy|z?zp&iB^"2ђL 16=7YFOL^r;\3FV]ӵ֠0ɑFca䌈lA LC$Yi\܏UYH ^ˋ|>_ui4|zOu{ v  b|d:ꋵ.fGMٹQ]riCui잜\Iǖv{7KFf%,vShN7_V.,?o]ub=`bZ.uߏ͎“2 Ϻ5@Hp˛{.f߽E&\ sҸzF}_loѮ4oW+`>1;%*cuyo-2.1.0/data/pics/bxLok112.xpm.gz0000644000175000017500000000617710361553650013750 00000000000000b=bxLok112.xpm{WSY!JĂA"gM/mBv{g?3I&mh3EZ}d23LҢi擻A{K1:?ѯ׿& ]m}zwnVopA)ER"O%KȜiW,% Hd _pi m1mk @Vʃ\Fi~QlV1H d H 䦨-bEBk(vǮ .OUR{U\cm.v !|tv-,\Cٵl<ȵU2m[+by@J~݂,-W7ʊU1%oâڰ`QU@K;DY oTn9%.BX(GFDFP'8\p'\=@pl^ѕ3'<9IzL3hlHԬ$b52uCăK>|Ş\aU \!14?NfVz-4qyD$ c- T&4/$:Op: O1d;ټlb9x'ƗN(.6|t Ewelh?=N04c8~26hVf X͑ah-){Oif1ROc8D w1 AIR3҄ȩL5⣮O pI-=5aN5㘍b}#E|1'wGv 2-я/JCQ215מZF'X}GuSu]1#CDi/hX( S 3i:ƞjF:͋e|sdlq%]bܦ0ϱ[09ϋQs'W{X01EH%yW>j'CFҮ1W[a(%Kjgu9J)6?J.λ;~og˽?z1Z"ſ̿>}О:e?`|E|y/Y^H3/l4qr[Ǻ#:k6%gq/ѓǷ>.Ki8Ч؇cQ$X1/e}zZc<cS]+Hq\ϓ>mS-xPcGV:8J^ kɐ[`R}VHOԲ> )>fnkBmXn'=>w9em1cgQ4J8IL[#*6rɻP3foFIaGR< |6U4Di g+ĘGjKEd6Čdi'LYf"bO.r,3fM;ո`VŒ>:rÈs/d5OOeH+a!1K[Sѐ)W،ܪ̗1Ӹ& HͦٮEpҎ&:{Q˜umf5AsEe׉EOG3#qGr'oaM\+RwLԽpj4SZ4`˴ jc}&!#߁fwdVfᰞ57xE} yfH,qVm6܊ỞkvG^2V|Ie9V9-Yk͋1y1?+sԍ~<::sƾ*5?XWG#}s z#xl`</{M6rRoz|GRsx[)chA"a9YfF^&M3_qyW)_2oXꥏHuoF:?sF/(VpEDG+/J_bW 7=΅,r{nO Gm)x7ge$C^#b{u..|/9DB')^HQ>-փB)Do#^3~: yH:~M=-c[x+/_N&!!P!cZ0'рFꐎI%MVF-l1JcZ5G#83#zX<ΎcNI{*{$ZMQn0CN_2Bo1ErT}z#a=lO JPqxF0X0X0X0X0X0X0 'xC,kcuyo-2.1.0/data/pics/manGras.xpm.gz0000644000175000017500000000206211613766736014036 00000000000000YSHAVdc E)aqcSq1" ۇ$@+'sy-+yOw;i I 9p+owq&Un8i5q6wq_(* d&d8e @U:a f  TW!\<},u,(z Yf (S'ePBy}Ng))A4 l`[`XBEX!` 7i%ڦN& e KݨS"l-;gЀM[THG4"<&g }6sM9BE!^ `nKZl ^w ޲ 0 *;`'HȎ0 <$4|l v㓐*ا;Svsn1#Fs c$ⱨX<'v8C6kᙟz"G j8M~.HZl_ ɲyq4TAȊI*{>zd*"IQ(K>ж=FaLWTAfg{k\*5]zxdy!j[ \5jew@u{qa`>sAzlj9N՛:>b-< z[7r Q]TX|L#Ce Usn-#9Úns}3v\w.{]#t8Zn{w}zw;?lw[{*GX9aXs*xl kaZp0pkd/okko/ny{{NgO=\ӽ?yg/B_z¥OQFfowPHVJC3;? m ;﯇caN}>_?gOnwdΏ/3~+vv,cuyo-2.1.0/data/pics/ithSitz.xpm.gz0000755000175000017500000000077712404256733014110 00000000000000TithSitz.xpmk0M#V2Cd`^?l Q![QKnX}&ddu:Y#d??:cSg'Kv "Qv!E0B:t2(Cz=OSHHGW @B:lAdAb5^V7a m5#-(ɆhB`&rmFo ^U!z&rUlm!4Uh# 2 C5mT`ٖoaٖ.h)ެe[fd 魵Elb`m}>m5#f`md3> ،2>Z֭3unvrPo,|0J767#6\n\2@[i8ުfN4v(>B5ʿ;1ipDƾ >=j~ Cg{_񏌖iՔ^x&cuyo-2.1.0/data/pics/lwRed.xpm.gz0000644000175000017500000000212707561732241013514 00000000000000^P<bwRed.xpmo0ǟ׿*V4R-y4i4M]Wi{m6iZac IYeNq|Sy||·_o?wst<.%cɍ[~49v(D,g 7WrE4ewxG _1qs/n΄政r3_㘛ܜ멈jYGEٮxFZTr֒})Mqh@%Mqh PSԤr-*9k}It@f_t0OpF_x$/]ү刿C(˧xM3IqиOpӿpM%2uW8y3y/J*40K<ψ,+>JPOBK\gPY 3ޛV=kf;\>WqԳf8k{S ('JK\E?kXx'/Kxw߯?rYlcUNMPFMfӳ3=<<R5$Z`38/À"Sɗ]wq}/9`BN7ߋY$r!HԘxp 2nD 0}_4W*sN|AǨ8Zr Y)rYqjE𸕠y*†8Aio AiqG<!8 DC5Atv߭xb88ۗ:Z8`fss=^ǹ{?,s98g4P߳o Tp >h;c~ CbAV?=>!F!P5J>rd%g?(Z.@kPl3q j8rO^0_X '?c c{*e<`%*9{9n^Ǒ!cuyo-2.1.0/data/pics/jjHerbst2.xpm.gz0000644000175000017500000002406507550521117014275 00000000000000<jjHerbst2.xpm{| X֯m$@pJ`ZPխZD q0B|3HZ99rV3=O 86>#߯qh!mo{'t!?G w(JǏ*.Nqqŏ:.R82E`p;#\dSaC\w*OǏE+- .jgi@;\#](GR!J'-7>Lx$.>>"O"OVHS@H,)C^_qQ"}d@?L*ǶG2|Z&:AiS-^E茹GZ [-qq2@RY-}Ww7dD5[9wV IS [с4}t::~UImZsa$ v LHSmS*)J/)~&×Ҁ:V _ЗHQ'I#GLD'DVf;aGOd5#MڤՎf Mm[+x Mـz/DV( !C@e蒎4-GjZw{RЏ/`Iӷcu߾ᗵϳ[Q/Jx ^7vhn\q,\k,ˢ;jys-k8&7:f/{C03~αRzye,\aH7r!'h 4qXxr ,H%LGO#_c9',E./UMYqT7q ݎwy`{Hy•b5ű^`Մ{)\?o:wJĔhTz -GtogIP~74P7. 4- 6֚w/rnWV4` NNT^Nh,Im{c\_o YK- FdĎ&gIA{Q>C)nidޡNF僝^$hf3[äal6pU-wo6VZ=@ 0Xq癇n~OUThggUwBy3-}߈|nYdS]߶msq/jGԿø@HxU؀>k߿rtTq3}hسӰs#n(uv ano440ڐ.."^(!d:I`@H>B3̅CzplBuTfĠu[߭{Tk?-WzhwW}MQZ`--PlZa_/6ҭ^v#Iֺz%;4@;3:EVjpw%t4Z,O`FtLv%ЭM?rkBZo2l-+! Aʅne~PݵεBr^100[2gNOС5~ge[Ìʲm#Uu49T&l)$2hJVƜ B#jH~C0E!IŬ5)p}>wǻ`\ϱVYz+JAO Y ?O:YB "^r!5)o]GO4*ZS-8~C؟W<\~NCmSplV?TV}nV1Ҥ  q*Di1 7h'8!<D ܆([Als= vGހ~ 0 qjO~\d~ۺOhDxel.*jހXL*}O_Ϗ@k mP8ׅk{e%Pq hMilf^럗Gː2bnR`ƃ4t: ݣ-X m"d B1\FvΫ;G׷u=u\8uvtVK tMcWUTbKj V cJJ_zԜkƦW^too)=>o5uЂ⛧eE5 {u[ ^y|94`o0_`OWqC 4_`8>Sw7/ϖ<񐇓REȺ G/|z;8kDː@ Uv˲ȼon|y{uǁZb$Rõxmgo4RSd<1mފyE3I׀*v]wWTN S勼08 7Ps@a'ǶmE)]5p爒q gTeM0eYˆs! DgP@,̶Z|w#H˺^+ Gji2hcEE-9w<[m8j䈰:~4稑ɋT*0_^qe -] c-D~맗e"$z nj(i&0;'of'Ys#,pX&ft6ŀL~Şs1oW>c:)9sAL#`2[T Sn|!K.űgW 'offuu#,Ȝa{\5j Lo2VE"[~dWgv*Vub}: g۳DWGlF 4:+"UgW7GLb@RD*#v9r ֍v]IZߒIBӋD7i;Xj\ IZ`{MsufuǾ+0@-*>`jAZy\5"8:T;uBդҨ? HAm9/l&.Ӹ^0.c),'FW^)M2cw+qbp*}8*i>ZFH0e,;b;~J.:k1|FI%;̟8*'mo l n8 @ u0,KP~ITc0NZ~8'˧<5W={7vk}:MށNc]-?ȩ$؊\'"jJ噴pr8p}.)|`snY!Ű)| f|Q9M:$]h,lշ=1;`,)4ju-d[xFlu^tmq 'WL2U`XrEia6༱v[|#cZ5]*[&}Nl$N6D6h??<%ZdTMjx!#_0 ;2fAt]/sAnzdLۖ "vF;nay6l]jiq,[iDٌcsvbXz^dGUUKD5tCqɮKu:\ xeS[bZUXF 0!1, !ٮyyO&HeQGL"oqC2X8Kn~P>"ѢNx3J˪E;ejKuYYQ1Y ̥nE-DllKa΄<,⥟w@k<  Rɢ@\^z X _9ň=m~D:ʪ)cp4x:Br2 Ax.*z_a]JCFT ΋*dLӂ5jy}xbQd/yVxpJc|cp, H/0mfJc+ I墒wV%}{Y8AM*"s|Q.NkCӪ5f!ZA%Ȁ\4D< ]*9{ºֳ<ゞ]C%U5>MſPVEPq Lwp1UGM63Sx,[؀exMoo'\Չ/** ĴᕃglnvXFޞi.mׁuYÓnZ3FCL-}uld0fX.j:(-"׍{]OAdxBرƶ%6]nzMxBS;Q0 m+NOBl+'d{-nb#ÉC¬G&yKVe^"ݟN^Ѷx^yѰ(MaT@\mfR0܀ /!By;Fiyd<ƈp)})t78Ng Rk&= NvFCN\6_7L1hNͩ^멣f6jL4'R>|K}ͧAHeGUBl^3>9ORT*^=TFo;o~  xWc_,jtʪ ey3h,9ɦ4* Ȃ媢DQr{<0#\_N{piʁ kSJqL`QNFCu"hw5 0#USҷXۤA!"y׿~ρE4"FEϹ9;_c[ uը]#/a4AC3bp+qtyq|1A.cNXM(s׸F矿ܭ_~=U>B9ffz$yJպ\ƒ=2SpU`*Ui*xށXfqD3V(b>|`*f_scKPH6jfK8pRz$(zF(N&3G) CElD@@a(vf} &L"ey.d0~? >qf~MNJӑ->`ipss[bpkiIU*a a8B7_[4?HyVø`F̧ea8[y;3[%D3 mG2nر;$SW] nu X:?s6B2C>T!^˓$Ъ@Ut(O2J*M3n1#5 Bև!llUSdnV`RN SW1xMȫᙨY])aa]=*K xry9;HΰcĎ[MFRV(,k?-h;Mr5ga(ڙG5~٥לKt]O ȎX1_Lh8<Acx˼b;!DHu#*jVNsÇl\iƩºS6mDa80Q :E#lp݀P^1 .O9L*HqyU@X|Z`EF 0xp%.ZT3IO0b$UM&zYf{]Nb0'E_*mܕ. Mh!;_X-#gMZ z](.z٢RSRܮ2,ѐ?~ί 3f(VFxi.RpIy.dCx ܾ( ٽH3P{ɉx{/]H#lrAnO|kK/xv#"Ž\ զm\ͯ +~`_4^25gЇGt244 9ZԵ,/Do4b:˂eyY͈Ln[B?[:x2q<-hx K) D*xjxv~8i5pZ%3!A]Ү R;køB tX#|]AalR`O.sQR& W0]a+4Ixċ+SVVaEok ~O>9y=_p ao x1yA7W-NE'N%A|^ݡse%V-Âۋ=d,eK僧QV@&|,\j*gԇm`& waDjX-=bIw)JYhP^SaH#j")lo΀]0x;Fꂮ|rEǬ[Z+Cy1gƲ,([ fǟWj vD o68NdR<|{ Cıv`:Lm͓\wz&:Igjؖ4M]Z8M'Nv{S%iK/`rFV#;~~_`vyבPXwa!L *ކ'')xm5sq(F =6=d`x~7 w9C L罊aO(p߅$Q2acn'"P ͗tEQ=7\;39xK/4mBA{Y{| q@xA@BRFS@"[l2,Ec'Y(z$6N<|&gQYY kQz ·H_Tnp /.cla<$Y4^vYSp#_g+MY]tⴃlK DT suá|#0˳ë{YKD>dݗėzMR[y 9*&|NW'Va LҸ9mK |}3xss5 "3l:rM[޾=woB:/|7w7gS>y{ܟSso1nv/dN_oْ8Xwz׏; .֪6 sQzb⬄ qF?FrcsܨjCq1o6*q#nC="5&I]cU;*B'$/r Yp?[m<">0 ~?nBZF V~$g?yG(H rG,H a!M"G*~"G*4 чl>dC!}ȆC6D ["l4%ȖH#["l4%Hͨ)N:BD )N:@F"M4.$H"M4:j6&Hh#m6&H!K4.DDMK4.DY):"H#):"^ʘDDnBYuOYuOYILޫQ|D5@rQ\G*QP;g{B>oDa)cuyo-2.1.0/data/pics/bxLok56.xpm.gz0000644000175000017500000000324210361553650013665 00000000000000b=bxLok56.xpmSHش=&`6IQKH59 gfxViϳϦDDfEpяHtRx196E\\"Qr2:=r"9Aՠ;'Ϝ2?Ig/W H˲ZTP J]*\:L: u[  XAepԂI]2W:\5k6vMO˸\, #R1޲fYcR6A\Z@u {5l ˸fEZxEtA6HcgYR,(;H+V,|@UO1s, Ӟ!׆ϸ@kBdaV9WM]|4 p J]5'k1JC6!&'T-p0ڸ6NAl]׺i`eK-f¥";VƸ><"ycҰ{.FKMd4ii!aA:+:( Z98'Jl ,ddheO/892+ 22 F&[ {LVAL+ OPZ@^L'ppq f!@A3H"n.}BВt_n=3?cq0A̲às|aUnU#^ϴ9w0y͙7r3\csd$B}Liyrѿ.a|3FU8ln]ƈ13`4Nf1Z@*0< sx?F]_l7 sRUiz2o2:>͸UWb4o1UW͚A5]׵f㍮hU[_ҋoޔ^=^[kWG;ϫY1A&[TJVmB$A6)R٨-GӑPH^D%2{D3rr262>nfiʕ+IiyV2'gHy\ڭSH{jrgmxiևV_h9bOn@z컁ݦvIm7*3uU2z߷p r0O8na LG==]xX=f ea#gUWH y]irtx¥_$ZB $^8˷kiV*I04.)_s7 uƾy-L<$t 5ʚVK)4F e.Ny&}[=/J>`F 3i/Ifx؝`7!/Kƒd,Kƒ0c埵Gذ*cuyo-2.1.0/data/pics/baWarnship.xpm.gz0000644000175000017500000000105310361514436014526 00000000000000Mk1_1؛)QRzB)""Ճ |̘-=8cA?(>f k<n&05zWE.*POYeê ~!ðPHJ8?4Pm&Ǘ `:ݜb90ݰdBMYu\xabdWa1dNR"'U^Ɛ]H w*9ai  2\wT+-ʩF*^08*`jH*$n3̪dGŐ.a ]tfDNi;"/mswa16"}sן|xe)rw2yE5'SGWnsU}٠[}0>qy*sF/jD,9QnV'Eg{梓A{/ k Y%)_f2}hh1dJϓ2Iy8'(ώ83Ό3a.jcuyo-2.1.0/data/pics/mdHolz09.xpm.gz0000644000175000017500000000330612412223264014034 00000000000000WJG6MVH,/9A )4*D6<~wgbR{ms]uZiAYXЩ~0T!ndeO&وZ>㉸YH%꒙$ 3b1F #Qof]re-PhoJH oǡb; "+<0m;ʾ A֨DtÐp*W &{eI!Cir]Z k{wV&YC̐3v2<0%;P^JՀ nًU$}Yc+KAIDЁ,q?L= =5 'ۃClt fgݗ%`6 B4C)@;SE|Gl7NORǥcuu| Cgx\]م iaY#vN~&L˃WƖW!Ko>ǕZd>sSyp}KDt!9'BHhm%LGk쓙ٹF#2̔{B|`aLb>BuL`1g\5>(?]k0!4M}i9K3cVjD8s0RÎvΧڱϼ dAM!]ư+?6jj@9;pYC.˾'ڎ-m1/bc ƀdpIHs\OFGVPQ,0VTMΧLSo B>T)2*Ab\@nΰO (_}íO6vצr\A` | {_~ϖo^Go߭~??|\|~_N߮!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<+wYL1v@l1“SP EÁVc&[nxɐ'CHLJ㗟? ^~9V9 >ɐpkrp1D'C弈oBWs-Ѵ7"Y6~ᆷKud~&qЈS1pЎ1%b 9 |xtg_~Qa]v)}y#aU lMsU~ߍ ؁arf}m\wlp/ˬnzE6@hؽĦ o%Ëa"~')Ҟ@ܓ![fsS3689y_3&9kIxi;?˭W甽.2@gCHg%p,ZPDg㳪m8db}%74ܹ1[t&C"HC W$t{×&$t76#=.a #l-?;L >c_Oނ3䄆n[~lFó.zNn eh y2ݫ嘩 Kkj܆Lnx8nɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y|>4›Iqa83Lf/!x35D}xq-| ^^GbB 晹 _6w*aĆ]kػ-bsF"&x-c~>L>^4݂|h52cQ1 C Þ_~(on 5ky:O( pu {+Nɐ.22Ā W/:nJJěqڜr`,5ᱺH6&d'cN2MX *kmR[zu3Z8 gP>e8 )dHNڰ߱ ͘#dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<dȓ!O<C64ykxHoT na[&fOA;Dcw87'C y/an^zEc2ܾf_/hl ۶ai {&Gj k7pֆEM, }6LhhX4a)L(;&2;f1!ܫb2]*3!bV޽C>+>eR_28/<)]er39bc[ pykc'jTNv96n<9Un.NA\ťr>PCلwZfD#=Ԑ^C,O\O7354W) h;3lA^kXF+ab7Ä́ ޔ"C(Cjhp /N>/"0hc6fF;߇F~ -/ALghOXo 0p:Q3&y +0ekR jfr\=b~^A24țpFŎf`6CO@+T˾va6. e;ʰ~\LylG0>lpIdxq5ŁWBmZ/[r SQ;TgUZ"kcC3ZC hc=Gf w}{XطkŁ -n"62l7VY [Ǎ"YÞico ~l;lRVD4kV5enFKDlh8!Q :߱Q_/ձ~cЧAw.BZ P O8>3>E(CwJ|ĆeD93V6|qkl7 y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ݫ  q_/6,p*?ެOWk˚u@h8! Ĉ"BcQ2|H0<t푄c 3*𪘗C 0sF ؅C; @\tj!&Xv}[1Ԕ=Ig2%%ak^C"<$ޮ0!92ɰ 2b G螊%l3G ?>tD nKa5#܍aűGŰЉaXs؈0a"J oĊ5 +^҆ z.mlhL`ɓ̰ad!Fp 7d^W6$V7+Y.)-}C)lо~n\# < V] S \b_oW_ըo/Eb9CY ^n6aAqi$:os;!G 1l̆úְq)a7b!47By|AF55ä720ܓea&!Kx B/Ʋ;H !`=`CNY7x25I#6Cy Gohy4gy. -<S)Gr ߱6vp+cAv CP~9~.chl6]m.4qc mט=e$ &4ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'C y2ɐ'Cѓ*cuyo-2.1.0/data/pics/mfaBack.xpm0000644000175000017500000062514412407360133013346 00000000000000/* XPM */ static char * mfaBack_xpm[] = { "320 640 3 1", " c None", ". c #6ABE30", "+ c #37946E", ".+....+......+................+.................+.......+..+.....+.+....................................................+.........+..........+...............................++................+.....................+.+...+.....+..............++.................+..............+.............+...............................", ".+................+.............................+................+.+.......................+.......+.+..........+.......++....+..............++..............................................................+..............+.........+++.......+...+..............+................+...........................+....+..........", "++........+.......+....+.........+.+.+....................................++....+.................+...........+.+..+....++.......+............+..........................+.............+....+..........+..+..+...+.+................+................+..........+..........+...+..................+........+.+............+.....", "..+..+..+..........+...+.+..+....+....+...+.............................+.+....................................+.........+.....+......+.........................+...........................+.............................................+..........+............................................+............+....+...........", "..+..++.+..........+.+...++.........................................+..............+.......................+...+.........+.....+.............+.....+...........................+...+.........+............................++..............++.........+...........................+...+.......+.....+........+..........+........", "..+.+...+.............+..++........................+.......................................+...............+...+..+......+....+...+.................................+..........+...+...+..+...............+.........+......+.......++.......++.......................................+........................................+.", "....+...+................+..+...............+...+........+...+.........+......................+............++............+.+.........+..................+........+....+.............+++....................................+.......++....+..+.....+............................+..........+.........+.....................+.....", ".....+.......+..........+...................+......................................+...........+..........+................+.........+.......+....+............+..........+..+...........+...+..................++.....+.+++........+..............+.+.................+.....+.....++......++.......+..+....+............+......", "+....+...+......+.+......................++.......+....+.............+.............+.........+......................+......+....+....+......+.........+...+.......+.....+......+........++.+..+...+........+...........+.........................+.........+.............+..........+..+.+..................+.........+..+......", "....+..............+.....+......+.+...................+.................+...+...+..+................+.......................++..............+..+.........+..+.....+.....+................+............+..+..................+.................+..+.........+...++........+......+.....+..+.....+...+..................+..+.....+", "........................+.........+...................................+....+.....+....................+...................+.++.................+....................+......++............+........................+.........+...+......+...+.....+.............+..+......+............................+.......................++", ".....+.........+.+..+.............+.......................+.................................................+..........................................................+..........+.....++.+.+....+..........+..............+..............+......................+.....++.................+...........................++.......", ".....+.+...+.............+....................+..+.+................................................+.........+.................................+......................+.........++......+..+.....+..........................++......................................++.+..................+++..+..............+................", ".....+.....+.................+..........+.....+........................................................+......+........................+....+...........+.+............+++........+......+..............................+.....+......................................+............+.+..+..+...+....+.............+....+........+", "+....+....................+..............................+..+........................+................+.......+....++.......+..+............+..........+..+.........+...+....+....+......+..............................+.............+...................................+.......+..................+...........+......+.......", "+.+..+..........+......+...................+.............+..........+...........+..............................................+..........................+..............................+..........................+.....+........++....+.....................................................+.+....+.+..........++...+.......", "..+.....................................................+.........+.+....+....++..+.....+......................................+...................................+..+......................+......+............+........+++............+...............+.........+...................................................++.......", "..........+......................................+.......................+...........+.............................++........+.+........................++....................+...................+...................+..................++..............+.........+......++....++..............................................", ".........................................++...+...............+..........++.........++..................+.+................+..+.+...........+.................+...........+...++..............................................++.+...++..+......+..........................+..+.+................+....+..+............+.........", "..+..........+.+...........+.+................+......+...............................+............++..................+.........+...+..................+..............+.....+..+...............+.+.....................+..+...........+..+..................+..................................+.+....+...................+.....", "...+..+......+.............+...........................+........................+............+........+........+.....+.+.+.............................+.+............+.+...+..........................++.+.....+...............+.....+.................+....................+...+.................+...................+......+.", ".......+..........+........+......+....+................+....................................+........+..+.............+...+.......+.............+...+...+..+......................................+...++.+......+...........++........+........+.......................................+.....+.................+............+.+", "....+......+.........+....+..+.........+...+..+..................+............................+............+.......+...+.....+...+................+..+...+..+............................+.........+....+.++.....+.....+++....+......+.+.+..................+....+......................+.+..........+..+......................+", "................+..............................+...............+.+...................+.........+.....+......+.+.......+.+...+++..+................+.........+...........+.+...+..........+.........+.......+.........................+..++..+.........+..........+........................+............................+.......+", "......+...........+..........................+.+...........+.....++....+....+........+.......+........+.....+...........+...+.....+...+..+........+.+.........................+............................+.....................+......+........+....................+...++.........................................+..........", ".......................................+.................................................+...+..++..............+..+......+.+...............+......+....+......+....+.........++......+....+............+...............................+.........................+.....................................+...+..+................", "+....+........+..............+...............................+...................+.......+........+....+.......................+.................+......+..................................+....................++..+...................+.....+.....+.......+....................+....+.................+.......................", "...................+..............+......................+..............+........+............+...+..........+................+........................+.................................................................+..............+.....+.....++.................+.......+.++...+.................+.......................", "...+.............+.................................................+...++........+............+...+.....+....+.+.........+...+.......+...............................+.............+..+........+........................+.............................+...+..+................+......+..+......+...........+.............+.....+", "..+.....+.....++................+....+..................................+......+.+..............+.+......+..................++.......+............+..................+................+............++........+..+.......+................+.........+....+.+..+.....+.........+..........++.............+.................++.....", ".....................+........+.+.+.............................+...+...+......+..+.........+...+...+..........................+.....+.............................+..........................+......+............+.....+....+..........++........+.....+....+...............+...+..................+........+...+.......+......", "......+....+..................+..+.+................................+...+...........................................+...................................+........+.+.............................+........+...+.........+.........+........+...............................+.....+.................++.............+.........+...", ".+......++.......+...........+.+.+.+.......+..............................+..+.......................+......+............+............................+.....+.....+..+.......+...............+......+.....+......................++..........+...............................................+...+..+.............+........++...", ".+...............+....+...................++....+.+.......................+..+.+..........+.....+....+......+.++.......+....+......................+..+..+...+....+...........+...........+.......................................................................+........................................................+....", "...++.+....++..............................+..................................+...........+.+.+.....++.....+..........+........+...............+.+.......+...+..+...+..+.+.........................+............+................................+...................+.....+.....+..........................++.........+..+.....", "......+.+.+.+.+...+.....................................+.....................+........+..+...........................+...............++.+..........................+.......+.....................++....+..........+............+......+..+..+..++.................+.++..+.......+.+......................+...+...+....+........", "+....++.....+....+...............................++..........+......+.+...............................................+..........+.+...+.+.+.+....++................+......+....................................................+............+.........+...........+..............+...............+.+.........+...+...+.+.......", "............+.........+...........................+....................+.+...............+......+..................+...........+.+.++........+....+.................+.....+...........+......................................................+.+.............+....+.+.......+..........................+.......................+", "..........+.+...+......+........+.................+....+....+...++.............................+..........+.+........+............+..........+..............................................+....................+.............................+...+.........+..............+..................................+................", "............+.+.+........+..........++.......+....+...+.............+...+....................+.+..........+.+....++..+............+..+.......+..................++.+........+....................................+.............................+.........+.....................................+........+.....+..........+......", "......+......+..............+.............+.....+......................+........++..+........+.+....++...........+...................+.......+.......+......+................................+..........+.......+...........+..............+..+..................+.......................+.+...........+............+.+.........", "..+...+....+.......+........++............+.....................+.++.............+...............................+.+............+....+.........+.....+................+....................++.....+..........+...........................+.+..........++....+.......+..+.+++..........................................+.....+...", ".........+.........+........+++...........+......................++...........+...+.......+.....+........+.............+........+......+.........+...+.........................+.......+++.+.....+...............+.................+............++....+..+..+..+...+.....+.......+........+...+..........+...+........+.......++", ".+..+....+..+......+...........................+.......+..........+......................++..+..+................................................+...+......................+.++.........+++...........................+.........+.+..................+............+.....+...........+........++.....+.+.....+........+.........", ".+.......+......+..........+...................................+........++...+........+..++..............................+...................+.......+................+...................+.+......................+..............................+...+............+.....+...+......+................+................+.........", "++....+.++.................+..........+..+....+..........................+...+..........+..............+..................+..............+...+........................+....+.....+.+....+.....+......................+......+.+..........+.......+..................+.................+.............................+...........", "..................................................+..........+.................................+......................................................+...........+........+....................+.........+.+........++....................................................+.......................+..........+.....++..........", "..+.......+.......+......+................+.+..................................+.....+.....................+...................+......+............+..............++...+...+...............+.............+....+..+...+.....................+..........................+....+.................................++......+........+.", "..................+..............+.+.............+........+....................+..+.++...................................+.....+....+.+.........+..+......+..+.............+...................................+...+......+.......+........+.................+.............+...+.......+......+...+....++.......++...+..........", "...+...+...+............+........+...+........................+...................+.....+.....................+................+++...........+..+.......+......+.+.......................+..................+...................................++...........+...............+.+..+...............++.+...............+..........", ".+..++.+...+.....+...........+....+...........................+..+........+..................................+....+..............+.....+.......................+..+.........................+...............+........+..........................++...........+........+..+.......................+...+........+.........+.......", ".......................................+.....................+..+......+..................+..................+......+..+++........................................................................+...++.....+........+...............+.+...+....+.......+.......+...........................................+..........+.......", "..+..............................+.+...+........+.....+.........+..............+..+.......+.....+..........+.+....................................................................+..+..........+.....+......+..........................+........++......+..+....+.........+......................+......+.............+........", ".+...+......................+........+...+..............+......+.............+.+..+......................+...++................................+............+..........+..........+....+........+.........++....................++...+..+.........+..+..........+.....+.....++...........+...+..+.+....+.+......+..............+", "....++....+.............................................+..+..++.............+.+.......+.......+............+..+........+...........+....................+...........+.+........................+......+........+............+........................+.+.............+......+..................+........+.+....................", "....++....+...................+............................+++.+.............+.................+......+..........+..+..........+++.+..+.................++.............+......+.................................+...+.........+..........+............+...............................+...+.....+..........+.................+..", "....++....+........+..................................+....+....+...........+.........................+............+.............+....+....+.........+....+.....+.....++......+...............++............+.......................................................+.....+.......+.......................++....................", "...................+.......++....+.........................+..+.............+...........+.....+..............+...................+........+............................+............+......+..+.............+......+........................+........................+.+.................................+.+++..................", "..........................++..+...................+........+................+................................+......++...........+...........................................+....+........+.............+......+....................+...+.............................+........++.........................+....................", ".........................++........+....+.........................+......................+...+........................................................+.........+...++.......+........+................+.+.....................+..+..............+........................................+.+...................................", "..+..+.........+.+................................................+........+.............+.+.............................................+..............+.......+....+.......+...+....+...+.+...+.....................++.......+..+............+............+...........+.....................+.......+..+..+...................", "..+.+........+.+..................+....+.....+....+............+..+........+..........+...+............+......+..+........+..+.+........................................+.........+.............+.....................+....+.............+..................+.+...+.....+.....+....+..........+......+...+......+......+.....+..", "....+..........+..+.........+..........+.....+.......+.......+........+....+.................+.......+.+.....+...+.+...........+.............................+.....+...................+........+..+.............+....+.................+.........................+...........+............+...........+...............+........", "......+.+.+....+..+.........+..+.......+........+............+........+................................+.........+.+...............................+..........+.....+..............................+.........++.......+...+...................+...................+........+..+.................................................", ".+........+........+............................+............+........+..+...............+.....++..................+....+.....+.+.....+.....+......+...+..+.........+...++...................+.......+.................................+......+..................+++.....................................+......................", "............++..++.+...........................++.....+...............+............................+.+.............+.+.......++++..................+......+......+..+....+...........+...............+...............+.......+.....+.........+........+....+......++...............+.............+...+..........+..+............", "..............+..+...........+.+..........+.+.......+.+...........+...+..........................+.....+....+......+++......+..................+...+.........+.......+...+...........+.................+...+.....................++........+.+................+...+.+...............+.+................................+....+...", ".........++...+.........................+.+...........+...........+.....+......+.................+..........+....+...+.............................+.........+.......+........+...................+....................................++..+........+.........+..+..................+..............+.....................+......", "..............+.+.+..................+..+...................+....++.....+......+.................+.........+...........................++.......+............+.....+.+........+................+..+...................+...............+.+..+...+.......+............................+..............................+..+..+......", "................+.+....+...............++....+......+....+.....+..+...........+.+.................+.......++....................................+..............................+......+...............................+..........+...............+.......+..++.............+.......................................+............", "..........++....+.............+.........................+.........+.............+.....+...+++.........+.........++.....................................+..+.......+......................................+....+......+...................+.......................................+..................+.+.......+.+.........+...+.", ".........++.............................................+...+...................+.....+...++.+.......+..........+........................................................+.................+..+..........+.+.+.................+............+.+...............+....+.............+....................+.......+...+.....+.....+.", "..........+.............+........................+.........+........+...........+......................+........+............+.......+..+...............+............+........+..+...+.............+.+.......+.................+..+.........+.+...+.+...+........+.+.........+...........+.....+..............+.........+.....+.", "........+.+............+...........+...+....+.+..+.....+....................................+...................+...........++..+...................+...+............+.......++..+...+..........++...........+.....+.+.........+....................+.+.+...+......+......+..+.....+....+.+.........+..........+................", "......+.+...............................+..........+..................................................+..............+......+...+............................+...............+...+...+...+................+..+.+....++......++.......................+..+..................+.+............+.+........+......+.....+......+......", "......+............................................+..+.....+......................+...+.........+....+...+......+...++....+...............................................+............................+.+..................+.....++.+......................+......+..+..................+.+........................+..........", "....+........+....+....................+...........................................+...+..............+..................................................................++.......................+.....+....................+......+.+.........+.........+...............+......................+...............+..............", "..................+.....++...........+.+....+..+...........+.................+..+.............+.+...........+................................................+............+..............................................+...+.+....+..+.............+.........+.........................+.............+...+....................", "......+...........+.....+.......+....+...+.............+.....................+.............................+...........................................+.....................+.................+.............................+.+.......+......+..........................+...................+.+...+...+...+.................+..", "..+...+.......+...+..............+...++..........................+...........................................................+.................................................................+.........+...............................................+...............+.................+...+........................+..+....", "........+............................+...........+..+...........+.....+.......+................................+..........+.....................................+...+.......+..+....++.......+..............+........+.....+..................................................+.......................................+.........", "...+....+.......+.....++............+...............+..+.......................+...............................+................................+...+...............+.....+....+....+............+..............+..........++.....+...........++............................................+....++......+......++.+..+.........", "..+.....+.............+..+.......+.....+.+.........+.+.+....+.............+...........+..........+....................+....................+..............................+....................................+...+........+.....+...+.+.....+......................+.................+....+...++......................+....+..", "......................+..+.......+.+...+.+............++.............+...............++.+........+........+...........+....+..........+....+................+..........+.+...+..........................................................+...........+............+...+.................+..+.+.......+........................+..", "....................+..+.....+...+....................+........+.....+................+.+.............................+..........+.+...............+..+..................+.......++..+............+..............+..............................++...++......+...+.+.....................++.....................................", "...............+................+.......+...+........++.................+.............................................++...............+......................................+...+..+....+.....................+............................................+.....+........+..+.........++.......................+++...........", "++.............+......................+..+.........................+....+......................................+......+................+......+.........................................................+.......+........+...............................+.........+...+..................+......+....+..................+......", ".......+.......+...........................+............................+.....................+.....+...............+.+....+...................+...........................+................................+...+........+................................+........+.............................+..............................", "........+........+..................+..........+....+....+.......+.........+...+++......................++....+........+..........+.......+........................................................+.....+..+...+....+.................+................+...........+............................+..+............+..............", ".............+.....+...................................................+...............+...........................+.........+....+.............+........+..................+...+...+........+.........+...............................+.++........+....+...+............+..................+.......+..+...........+............", "...+..........+....+........+....................+.........+.........+.............+.................................................................+..........................+......................................................+........+..........................................+.+..+...............................", "..............+..........+..+.....................+..+..+..................................................+..............................................................+......+.................+..............................................+...........................+.+.+........+.............+..........+.......+...", "....+.........+..........+....+............+..........................++.........+..+...+................................+.....+....+.....................................+............+..+........+............+..+...............+.+...............................+........+++.+...........+.................................", "....+.........+........................+.....+.............................+....+..............+....................................+.......................++....+....................+....+.............+........+....+.....+......+.................+.......................++......+..+...++.......+.................+......", "+.++.....+.........+.+......................+..+.............+...+.................+........+..+..++..........+..............................++.........................+.......................+...+...+.+...................++.+...+.............+..++..............+..........+.....+......++.........................+......", "..++.....++...........+.+......................++.............+.........+.....................................++...........+.........................................+.............+....+.........+........+.....................+..........+..........................................+..................+....+.........+......", ".....+..............+...+..........++..........++.............+..............+...............................+.+..................................+..+.............................+....++.....+............++............................+..............................+....+...+......................+..............+.......", ".....+........+.....+....+.+........+....+......+...............+.........+.+...+..................+...........+.......+..........+..........+....+..+.................+..+............+.......+.................+............................+....+..+.............+............+..+.............................+.............", "..............+......+...+............................+............+.....+..+.......+....+.............................+++......+.+..........................+..++....+...++..+........+.........+....+........+......................................+.............+..........+.+..+.++.......................+..+.............", "....+........................................+.....+...........................+........+.......+.......+.+.+..........+........++................................+...........+.......+...+...+...................+.....+.......................+........+..........+.............+...++...........+......+..+.+..+............+", ".............+......+............+...+..........+........+..............................+.......+.+.....+...+...+...............+........+.........++..+..........+...........+...........+....++....+.+........+.+.....+..................................+..+.........+.............+..............................+..........", ".........+..................+...++.......+............+..+........+.....................+....+........+.........+.+.........+..++......+.+.++..........+....+....+.............................+..+..+.+......................+..........++..+................+............+.......................................+............", ".....++..+.......................................+...+..........+.....+............................++....+........+.............+...+............+.....+.........+.............................................+...+...+........+..........+.+................+..............+.......+..........+.................++............", "..+.............+......................+....+..........+......+............................+...............+...........+............+................................+.....................+........+...........................+.............+.+.................+.......................+.........+.............+.+...........", "...................+..+.......+.................+..+..+.............................+.....................+....+.....+..+..+...+...........+..............+........+.+..++...+............++..............................+.....................+..............+..................+............+..........................+.....", "......++..+......++.......+.+.........................+.....+...................+...........................+..+........+..+...+...........+..............+.+..............+.+.................+...+................+.........+................+..+........+.+......+................++.+............+..........+....+....+.....", ".+........+...+.++........+.............+.............+.....+........................+.....+......+................+....+............+...................++.........................................+.............................++...........+..+.+......+...........+.............++.+...+......................+.+..........", ".........................+..................+.........+...+.+....+.++.....+.........+......+...........+...........................+.........+....+......+......................+...............+..............+..+................................+.................................+..+...+........................+..........", "............................++....+................+......+.+.............+...+............+..+...............+........+.....................+.+....+...........+...................+....+......+.+..+.....+..+.......+..+.....+..........+.....+....................................+...............................+..........", "......+..++.+...+..........+........+...............+.................+....+..+..............+.....+...........................+..............++..................................................+.....................+.............+...+................+.....+.......................+.....++..+.................+....+.....", "..+....+..+.+.+.+..........+..........+.......+.......................+.....+...++...............+....................................+..+..+.+.............................+.....................+......+...........+..+.............+...........+...........+..+...+.+.......+..................+.............................", ".......+....+..+..............+.......+...+..+...........................................................+....................................+...............................................+.........+.+.+........+...............................................+.+................................................+.....+.", ".......+....+................+..+..........+.+......+..........+........+............+........+..................................+.+...........................................+..............+............+..++.....+............+.............................+....++.................+.......+......+..................+.....", "+..........................+.....+......+..+....+..............+................+....++...............................+.......+....+..+...........+...........++...................+..........+......++.............+....+.+......+....................+........+.....+.........................+..............+................", ".+..............+..........................++..++.......+.+.+...................++..++..+..........................................+..+..........+....................+.......+....+................................+.+..........................................+..................................+...+...+...................", "..........+.....+..............+................+...........+....................+..++.......+..........+......+......................+.........................+.....+.+...........+..........+............+.........+.......+.....+.................+.................+.................................+.+...................", ".................+....+..........+........+.................+.........+..........+........+..++.........+......+...........+..........................+.+.......++....+..............+.........+............++.+..............+.....................+.........+....................................+......+............+........", "........................+.....+.....++....+..........+.................+...+..+..+...................+..+........+...................................++.+.......................+..........+................+.....+.......+....++.......................+..++.........................+....+........+...........+..+...+....+...", ".............................+.....+.....................+...........+......++...........+....................+.........+...+...........................+...........+....+........................+.................+............+.....+........+..........+..................+.......+...........................++............", ".+.+...+.....+........+..+.......................+...................+..........+....++......................++..............+..++..+...........+....................................+............+.................+..+.............++.........+.....................................+.+....................+........+.........", ".+.........+.+...+.+........................+.................................................................+...........+..+...+..........+.............+..+.....+......................+......................+.....+..........+...............+..........................+....+++..........+............++..................", "..+........+............+....................+..+......+...........+..+...++...................+..........................+......+.......+....+...........++.......+.......+.....+....+...+...+.................................+.+................................................++.....+........+......................+.....", ".............................................+..+.........+..+...+.........+................+.........................+..+......+.............+..........................................+......+......+..........+.....+.......+.............+....+......+...................................+...++.....................+......", "........+......+....++............+.........+...+................+...............+......+..+................+...++..+.........................+.....+..................+.............+...+..+...+......................+....................................+............+........................+..+.....+....................", "....................+...............+.....+........................+.............+..+...........................+....................+.+......+.....+..+.....+..........+.+.............++.......+..............................................+...........+.......................................++..+..+...............+....", "..........................+...........+.+..+............+...........................+.......+.......+........+.+................+....+..+.......+..+...+.+...+.....+......+.............+....+...+.............................+.............+...........+...............................+..............+....+.............+....", ".....+....................+........+.......................+.....+......+...................+................++.......+.........+...........+.........++.........................................+...................................+...+..+............+.................+..++...................+.........+.............+....", ".....+.........+...++..+...........+..........+................+........++......++.+.+......+................+..+.....+..++......++.......+......................................+..........+.......+.................+..................++........................+..........++......+............+........................+...", "..........+.+..+.............+..+..........+..+................+....+..++.....+..................................................+......+.+.............+..............+....+..........+.........................+........................++.......................+...........+.........+.....+...+.+.+........................", "........+++...++......+......+..+..........................+..................................................++................+........................+..+...............+..........+.............+........+...+.........+.......+....................+.........+.......+......+......+.............+............+...........", ".+........+...........+.+....+.............................+..........................+............+.....+..................+...+....................................+........+...+....+...........+..............+................++......................+....+.................+..+...............................+.....+....", ".+........+...........+..+...+........+..............+................+......................+.....+.....+................+.+.+..........+...........................++..............+.............+.............+++...............++...............+................................+..+...........+...................+.......", "+.................+...................+........................+...................+.....................+.......+........................................++....+..+........................+........+.+.........+.+...............+........+............+................+.................+..........+........................", ".................................................+......+............+.................+..........+.............+.+.......................+.....+..+..+.........+.+.......+....+.........+..+....+.................+..................+.....+.............+.................+...+........+.+.........+..........................", ".....+........+..+..............+.......+......+.+..+.......+.........+....+......+...............+.............................+.....+.......................+.+.+...+..................+..+................+.+..........+...................................+...............+.+...............................................", ".+......................+..............................+...................+...................................+.....+...+...+..+........................+...+..+....................+......+............++...+..+.............+.+................+..........................+..+............+.++.............+..+..............", ".+........+...........+........+.+.....................+.+...................++.............+..........+......+..+..+......+..........................+.+............................+......+.....+.........+.+................+..+...........+..++........+......+...............+......................+.......+...+..........", ".+........+...................+..........................+......+..............................+....................+..+...+...................+.+.+..+.....+...........+..+...........................+..............+.......................+.............+..+.......................................................++.......", "..........+........................................+............+..................................+............+...+.....+......+.......+...+.......................................................+.+.....+.............+....+.....+...+...+.................+..................+.....+.....+......+.............+...........", "...+...+.....+............................+......+.....+........+...................+..............+............+.........+........+........+...................................+....+...+.....................+..+..+...........+.+.........++.........+..+.............................+........+...+..++.........+....+......", "...+.+.......+...............+..................................+...........+........+.................+..................+........+.........................+...........................+.................+.....+...+.+......................................+....+............................+...+....+..............++......", "...+.........+...............++................+...+...........+.....+..+................................+..+...........................................................................+....+.+...........+.....+....................++......................+...+......+.....+..+....+.....+......+..........................+", "...+..+........+..........+....................................+...+..+.+...................................+.....................+............+..........+........+.........................+.+.+.......+.+.....+.++..................+.............+........++.........+........+..........+.......+..........................", "......................................+.+..+..........+.......++...+.................................+..+.................+......+..........+.......+.....+...................................+.........++............+................+....+.................+..........+..+....+..+.........+..........+.......+..............", ".....+...+...........+..........+..........+...+......+......+.+...+......................+.........+...+......................................................+............+++...........+.........+.................+....................+.............................................................+.........+.....+...+..", "+.................+..+.........+...........+..+.........+..........+..............+....+..++........+.................................................+.....................+.................................+............................+..+...................+.............+.........+..............+...................+..", "....+................+++..................................+......+.....................+......................+..............+....................+.......+...........+..........+...+.......................................+.............+..+.................+....+.+....+............................+.............+........", "....+.+................+....+......+......................+..................+..+...+..................+................+..+................................+...........+.........+..+...................+.......+..+..................+...+..+.+......................+...............................+...........+........+...", "......................................................+.+.+..................+....+....................+.......+...................+..........+........................+....................+.+....................+.......................+..++..+....................................+......+.................................", "...........+..........................+.+..+......+...+....+.................+.......+..++.............+.......+...................+.+...............+........+.......+...++.....+............................................................+........+.....+.......+....+......+......++.........+.......+....+.......+.+..+..", "...........++.+............................+.......................+..........+.+.............+.........+.....+...............++........+.................+.........+.....+......+......+......................+..+.........+............+...+..............++..................+.......+..................+....................", ".............................................................+.....................................+..+..............+........+..................................+.....+....+..........+.......................+.........+.+....................+............++.................+..............+.....+.....+....................", "..........................+...............+..+.......+....+..++..++.................+................................+........+..................+..+............+...........................+...................+....+....................+...............................................+.........+.....+....................", "...........+....+.......+......................+..+..+......................+....+.+.+......+.+.......................+.............................+.+........+...+.....+.........+.............+......+....+...................+.......................................+........+........+....+..........+.++.................", "..............+.+....+...+........+................................+.......++..+.+.+.+........+...........+++.............+..+.+.........+............+....+................+........+......+.+..+..............+.++...............................+..........+.........+.....................+............+..+.................", "..+...+.......+..........+..............................+........................+.....+............+......+..............++...+.....++...+....+.....+......+...++............+.............+...............................+.................+....+..........++....+.+................................+..........+..+........+.", "..+..+..................+......+.......+................+......+......+...+.....................+..............+.......+..+....+.....+...............+.........+..+......+...............................+.+............+.........++.......................+.................+........................++.+........+............+", "..+..+..+..............++...+..........+.....+................+.....+.+.....+...........+........+........................+..........................+.........+......................+...................+....+.................................+...........................+...........................+....++................", ".......+..............++++................++..................+.......+.....+..........+.........+.................+.............+.....................++....+.................+......+....+..............+...++.....................+...........+..........+........+.......+........+.....++.............................+....", ".......+..............+.......+.......+..+......+...+..+......+......+......+...................+...................+......+.+........................+++....................................++.................+..............+...+.+.......+...............+...+...........+.........+......+...........+.....................", "....+.................+.....................................+...............+...........+....+.........+.....+..........+..........+........+..+.....................+.......+...........................................++.+..+...........+.................+................+...++..........+....++..........+................", "............+.........+..+..............................+....+..+..................+....+.+..+..................................+..++..........+.................+...+.......+.............+.....+............................+...................+...............................+......+......................................", "............+......+.....+........................+.....+....+.........+................++...+...........+.................................+...+...........+..................+..............................+..........+............+........+..+.....+..........+..+......++....+.............+...........+...................", ".......+.+........+......+...+++...................+.....+...+..........+..+.........................+................+..............+..+.................................................+..........+.+...++.+......+............+..+........+..+...+.........................+...............+.....................+..........", ".........+.......+..+.........+.......+.....+......+...+.....+...+.........+.........................+...............................+..+..........................+.+...............................+.....................................................+...................+....+.....+............................+.....+..", "+.+................+.............................................+.++.............................+.........................+..+.+..++...................+.....+...........+....................+..........................+............+...+.........+...........................+.............................+.+.+....+..+..+", ".++.....+.....+.......+....................+.............+.........+..............................+..........+..............+..+....++........+.............+.......+....................+.....++......+.......................+............+.+...................++.....+........+........+......+.............+........+..+...", ".................+.....+..+..................+.......+......................++.......................+.........+.................................++....+......+..+...+.........................................+...............+............+.....+............+..+......+.........+.......................................++...", "........................+...........+....+..................+.+............+..............................+....+..................+...............+..+++.........++........+..++..+.................+...+....................+.........................+....+...+.+..........+...+...........+............+.................+...", "....................+...++........+.+.................+...................++.........+....................+.+..+++.............+.......+......+.......+..........+...............+..........+.......+........................+.............................+...................+..........................................+.....", "................+.+........+...........+...+..........................+....+........................+...........+........+.....+........+........+...............+.+.....+..................+..+...++.............................+.++......+.+...+........................+....................................++.......+......", "..+...............+.......++..............+...................+.......+..+.+....................................................++...............++................+....+...................+.........+.............................+..+......+..........+..........................+...+........+.....+........+......+........", "......+........+....................++......+.................+..+....+......+.........+..............+..+..........+......+..+..................+++.......+........++......................+...+...................+...................+....................................+......+...+..+..................+......+.+........", ".........+...............+...................+..........+........+....+.....+...........+.....+......+...++........+.......+.......................+.........................................+....+......................+..............................+................+...........+.....+..+............+....................", "+........+......+........+.+.......+.........+.........++....+.....+.+..................+......+.....+.................+...+.+..+...+......+.........+...................+.........+..+......+.......++...........+......+............+........+.......++.........................+...+....+..+.........+......+.............+..", "......+........++...+.+............+...+............+...+............+.........................+....................++.+........+....+....+..............+...+.......................+......+.......+.+..........+...++............+......................................+....+......+................+.......+................", "...+...........+.+......+............+.+.+..+....+..........+............+.....................................+...+............+......+.+..............................................................+..................+........+.........+....+...........................+......++...........+.+...+.................++...", ".....+..................+..................++...............++.+.........+...........+...........+.............................................+..+..........................+................+...............................+.....+++.+......................................+..+..........+..............................+...", ".....+..................+..................++......+.......+.........++..+..............+.........................+........+.....+...........+....+...+.+.+..............................+....+.......+.....................+.......+................+...........................+...+.....+....+..............................+", ".....................+.++........+........++....+......+..................+........+....+...+...+.............+..+........+.+......+.............+........+....+........++...............+............+.........+......+..++..................................+...............+..+..............+.............+................+", ".......................+.......+...................................................+..........+.+...++.....+..+................................................+.+......++........................+............+.+....+...+.................+.............++..+...............+..+..+...........+..+.........+..+..............+", "..................+................................................+..+................+......+.+........................................................+........+......+........................+..............+..+...........+.......................................................+..............+.......++...++..........", "...........+......+.......+..+............+.........................+................+.................+...........................+.+++...........+..........................................................+....+....................++.......+..........+..+.........+.................+.........................+..........", "..................+..........+......................................+................................+.....+....+...+.........+.+............+..+...........+.......++........................................+....+........+............+....................+++........+...............+....+...................+............+", ".+..................+........+.................................++..................................+.+.....+...............................+++.+....................+.....+.....+.........+.......+....+........+.....++....+........+...+.....................++....................................+..........................", ".................................+........................+.............+......+.+.+..+........+........................+++.................+..+..+..................................+..+...+....+++........................+......+..+.......+..........+.....+.......................+.................................+......", "...........+..............+.............................++...+...+.............+....+.......+.++..........................................+.+..................................+........+..........+..+..++..................+........+.........+.....+...+....+.........................................++...........+......+..", "....+...+..........+......+..............................+...+...++.....................+...+....+........+...+.++...+.......+............+.....+...+..++.............+.........++......+...............+.............................+....................+.......................+.........+.......+....+..........+.......+..", "....+.....................+.......+.+........+........+...........+.....+................+.+..............+......+...+.......+...+.+..+.................+.............+...................+...........................................+...+..........+...............+.......+.......................................+......+...", "...++.......+....+....+..........++...............................+.+..........................+.................+....+.................................+.......++.......+.....................................+............+.......+............+......+.....+.+..............+...............+............................+...", ".......+.....+...+.+.............................................+.....+......+..................+.............................................+............+..............+.......+..........+...+.......................+.............................++...........................+.........+............................+...", "......+......+.....+.............................+.....+.....+........+....++............+....................................+.........+...................+.......+.+.......+..+...........+........................................+...+.............++...+.............+.......+...+.+...+.+...........+..+.......+....+....", ".....................................+.......+............+.........+......+....++.......+........++.........+...............+...+......+.........++............+.........................................+.........................+.+..........+....+......+.........+....+................+.........++......+................", "............+....+.......++...............................+...+..++........+...................+..+...+.........+................+......+..+...+..........................................................+..........+....+.....+..............+.............+..............+........................++........+................", ".............+...........+................................+..........+.........................+................+................+..................................................+.....+.............+..................................+...+.........+...................+.......+.........+......+........+................", "...................+.+..+....++......................................+.............................................+..........+.................+.+...............+.................+....++............................................................+...................+.........+.........................+.......+........", "...................+.......+..+........+..............................................................+.....+.........................+...................+...............+..+...........+..........+.....................................+...........+....+......+..................................................+..........", "..............................+..................+.......++...........+.....+.+.....................+.......+.............+..........++.........................+........................+.......+..+...............................................+++....+......+..........+...+.+..............+...+..............+..........", "..............................+..........................+........+.........+....................................................+...........+...+..............+..........+...+...+.+......+............+.....+.............................+....+........+.....+..........+..+.+................+.........+........+..........", "..............+..........................+.+................+........................+..........................................................+.......................+.......................................+......................++..........+...............+........+....+........................+.+........+..+.+.....", "+.............+.....+..........................+................++.....+...............+................................................................+............+................................................+.............+...+..........+.........+.+...+.........+..............................+...........+...++..", "...+..........+........................................................+.................+.+....................+.........................+.......................++........................++..+........+.+.................+.....................+..........+...............+.+.................+.........+...+........+..+...", "............................+++...............................+......+...................+....+...................+.....+...........++..+...........+.....+........+.................+..........+.............+......................+..............+......++........+........+.+....................++.....+.............+.....", "..........+..+.....+.........+...+....+.................+.........................................+......+..+.....+...+.+.................................+....................+...+............+....+............................+.......+.........+........+.....+..........+....+................................++..........", "........+................+.......+...+....+...+.........+....................................+....+....................++..................+....+....................++........++...+..+.+......+..+.++.................+....+.+..+...............+..............+........+...............+...+.........+.......+...............", ".+...+..+......++.+.+....+........+....+......+.........+.....+...................+...+......+.+....+..........+...+....+....+.........+.....................+.................+....++.+.+.................+..............................................++..............+...................+..........+......................", ".+.............+..+...........................+...+...............+.......+.......+.+...+.....+.....+..........+...++...+...................................+...+.................+.+..+..+................+.....+..............................+.........++..................................+...+..........+..................", ".+................+.....+.........................+++........+.............+............+.++.....+..+..........+...++............................+.+................................+..............+................+.............+..+............................................+..+.+..........+...........+..+..............", "................+............................+..................++............+..+.........+.......+...........+....+...........+...+..+..+.....+.....................+.........................+..+...............+..............+..+........+........+.+..+........+...+.....+.....+.+.........................+..............", ".........+......+..........+......+.....+.......................+...........+.....+.++.............+....+......+....+.........+.........+.................+.........................................+..+.+.....................................+..........+...+......+...............+....+.+............+.......+...+..........", ".........+......+.......................+..+.........+..............+.............+...+..............+.+......................+......+..+.................+..............+...........+.......+.............+.+.+............+.........+.....................................+.............++.....+...................+..........", "............+..............................+.........+........+.....+........+........+..............+.+.........+.....................+...+..........+.................+............+.....+.........+......+........+................+......+.......+.................++......+.................+............................+.", ".+.+......+...........+.................................................+.+...+.................+....+....+......+......+....................................+.................+........+.............+.....+.....+..++....+.............+...............+..............+.+..........+..+..........+++...++...+.......+..+......", "+....................+......+...........+...............+.+........+..........+...+.........+..+..+.++........+..+.....+........+.........................+..+.................+...................+........+..................+....................+...................+.++....+.++.+........+....++....+........+.+....+.....+", ".....+..............+...................................+...................................+..+.+..........................+....+.......+...........+.+..+...+...................................++...+....+....+.................+...............+...............+....+.......+....+........+.....+......................+....", ".....+......+...................................................................+..........+........................+.........+..........+..............+.....+.....+.................++..................+...........+........................+..........+........+.................+.....+...+....+.................+.........", ".................+...........................+........+......+.......................+...................................+............+..+.................+..................+.+.....+...............................................+............................+.................+.+...+..............+..................+..", ".............+.+...................+++...............+.....+.........................+..........+.....+.........+......+....+..+.....+...............................+........................+...+..+......++....+.........+...+................................+............+.......................+.+.......................", ".+.............+....................++.....+..++.....+...........................+...+........+..+..............+.............++....++.+.....+.......+..............................+.........+.............+..............................+......+..........+....................+...............+.....+..+.+....+.............", ".+...............................+.............+........+........................+..........+....+..........+...+..................++...+....+....+.++..............+.++..............+....+..+.............+......++......................+...............................+..............++......................+.............", ".+...............................+.....+........................+..........................................+..............+........+.................+..............+............+............+..+..+..............++.........+........................+.......+.....+.+........................................................", "..................+.............+...............+.....+............+..................................+.+.................+...................+...................+..................................+.........+.....+............+...........................................+.+....+.......++...+........+....+.....+.........", "....................+.........+.+.......++......+............+.....+..+........+..........................+....................+......+.....................+..........+....................................+..+..........+.......++.......................+............+.......+.....+............................+............", "..+................+..+.....................+.....+...........+...++.................................+....+.+...........+..........+.....+......+........................+................+...++...............+++..........................+...........................+......+.............................+.....+......+.....", "...+........+..........................+....+.+...++...............++..............+...+......+....................................+.+........+...++..+....+.............++.+.+........................+.....+.......+.+....++...................+......................+.....................+...++.........+..................", ".......................................................+........+........................................+......+........+............................+...........+...........+.+....................................+........+...................+.....+...............+.......+.....+.......+.+.+.............................", "...............................+.....+.................+..................+....+......+..+....................+.+...............++......++...........++........+..+++............+.+..+.....+........+........+..........+....+.................+......................++........+..............+.+............................+", "...........+.........+.......+....+...+..+.............+..+..+.............+.....++...........+.....+..+..+......+...............+..+.............+..+............+..+...........................................+..............+..........................................................+...........+.......+..........+.....", ".......+..+...........+............++.................+..............++......+.......+....+.........+..+...........+.......+....................+.+......+...........+.....+........+.................++.+................+...............................................+...................+.........++.....+..........+.....", "............+......................++........+..+.....+..+................+..................+.......................................+........+.............+..............+......+..+............+.......................+...++..........................+.................................................+...................", "..........................+..+...............+.++.......+..................................+++..................................+.............++...................+....+.......+.........+.+....++..+....+.....+...........................+..+.......+........+.............+......+.............+..+.....+....+..............", "....+.+++.........+....................+..+..................................++................+........+.+++.......+................................................................................+...............+.+....................+..........+....+.................+................+.+.+.............+.+.........+..", "....+........+.....+..........................................................+...........+................++.......+..+....................+..........................+........................+........+.............+.+............+.....+.........................+.............+............+............++++...........+..", "..+..........+........++.........................+.....+......................+.+..........+........+................+++.......+.................+..................+....................................................+..................+.................+.+....++.+.+...................+...............+.+.............+.", "..+...+.........+...................+............+.......................+..........+.+.......................................................+..+................+...............................+..................+......................+.....+...........+.......+...+..........+...+...................+..+...............", "............+.........................................................+...........+.............+..................+.....+.......................................++...+.+..................+..+.+.+..................+.+.........+........+.+.....+........+..............+.........++..........................................", "...+........+....+.......................++.+..........+......+.......+...........+.............+..........+...............+..........+....................++.......+..........+......+.......+.+............+.........+.......+.........+............+...++................................+..+..+.................+...........", "....+.......+.................+...+.......+.........+.......+.........+.+......+..............................+...+.........+......+....................+...........+..........+................+...............+............+.................................+.............+....................+.............+...............", "+...+....+..+.....+.............+.++.............+++........+.................+.........................+.........+..+......+.+.++.+................+...+......+....+..........+....+..........++................++.............+....+..................+.............+......+..................+..+..........................+.", "....+....+..+................+.+...........................+....+.........+......................+........+..........+......+++++.++............................................+..............++.............++................+..........+......+...+.............+.+....+.........+.......+.....+...+....+...................", "....+.......+........................................+.....+...++......+................+...........+................++......+.....+......................................+..................+.+.......++................................................+..........+++...........+................+............+...+...........", ".....+...........+....+.........+...................................+..+................+..................+.................+.....+......+...........+..........+.....................................++...................................+.+..........+.........++..+.............................+....+....++...+...+...+...", "...+.............+..............+............+..+...................+.................+.+.......+..............................+..........+..+.......+..............+...........+......................++...................................+.....+...+..+.........++.....................+..+.+.....+..........................", "...+..+.........+.............+..............+........................+.................+.......+..............................+..........+....+...+.............................................+......+............................................+............+..............................+...++.....+...................", ".............................................++..+.+................................+..................+...................+...++...++.............+..............+......+.................+.....+.......................+.......+..............+....+.+.........................................+.....................+..+.....", ".........++......+..+...........+..+......................+....+...........+........+.................+.......+.+..............+....++............................++.....+........+..............+....................+.......+++...............................................+........+.......+..................+.+...+.....", ".................+..+..+.............+....................+...........................................+.........+...+.........+.................+..........+.............+...................+..+.....+...+................................+.....+............................................+....+............................", ".......................+.............+...................................+..................................................+...........+.+.....................+........+...+........+................................+.....+.............+..+.+...+.+......................+........+...................+.....+...............", "..........+...........+.............+.....+..............................+.........+.......+.+......+..............+......+....................................+..+......++................+...........................+..............+.......+.....+...........+..........++.........+...............+.........+++++......+....", "....+.....+.........................+..+..+................................+............+.....+........+..+.....+.....+.......................................+...+.....+++.......................+.........................+....+....+......+......+..........+.+..........+.....+.....................+........++........+....", "..........+............................+...............+...................+.............+......................+.....++...........................................+...+..+..........+............+.......................+...........+..+..........+.+........+..+...............+......+..........+.....++.........+..+.......", ".........++........+.......+....++.............+................................+..........+........................+..+.............................+.+...............+.....+.............+......+.........+..................................+............+.....+......................................++..........+..........", ".......+.............+...+............+..................+.......+......+.......+....+......+...........+..........+++....+....+......+...........+....+.......+.....+.+...................+..............+.+....+..................++......+..++..........+..............................................+.....+...+......+....", "..+...+.+...........+...+.................+...+...................+....+.........+..........+......+...........+....+.................+...................+....+.+..+..+.+.+..+.......+....+...................+...+.+...+...........+.+........+...+....................+.+..................+..................+.......+...+..", ".................+...................+....+........................+.....+..................+..........+.+..+.....................+...+..........+..+.....+...+.....+.+....+...+....+....+.....+..+............+.........+..............+.+........+....................+.....+.................+..............+.........+......", ".................+.........+.............+................+........+...............++..+....+...........+++...+...........................+.........+......+.............................+............+..................+.....+......+.+.....+...+....+................+.....+.....................................+...........", "...........+...+.+.........+..........+.......++..........++.........+..............+..+......+.....................+...............+..+.+...+....+........+.................+.........+.+............+.............+........+.++......+++.......................+....................................+......+................+.", "..............++.+....+...+.+.....+........................+.....+...+......+............+..........................+..+.....................+...+..........+...............+..........+........................+....+.+...........+.............................+...+.............+...................................+........", ".............+.+....+.........................................+........+..+.+...........+.......++..+.......+.............+...............+...+..+..........++............+.....+..+......................++..........+...........+....................+...+.....+......+.........+......+......................................", "...+...............++.........+.......................................+........+.............+...+.........+.+....+.......+...............+......+.....................+.......+...+........+..............................+........................+...........+...+..+..+.........+....+...........+....+..........+......+.+.", "...+........................+.+....+........+...........+........+.........................................+.+................+...................+.....+......................+............+........................+...........................+........................+.....................+....................+...+......", "..............+.............+...+....+..+...+..........................................................+...................+.................................................+.......................++..+..+.......+.......+.................+........+......................+.......................+...........+.............", "................++..........................+.............+...+...........................................................................+..+..+..+..............+..+.+.+...+...+...................+.+.....++.............+..+.......+.+....++.....+......+......................................+..+..+..........+...+....+..", ".......+...++........++...............+....++.+................+..........................+..+..........+.......+.........+..........+.......+......................+.+......+...............................+...+.....................+..............+.....+....+.....+.........+.........+........+..+....+...................", "....+......+.........+....+......+............++...........+................+.............+..+...........................................+...................................................+...................+.....................................+....+.......................................+.......+........+..........", "....+........+..++...............+..+........................................................+......................+.......................+.....................+.........+............+...+......+.........................++.......................+.......................+......+.............+.....+.+..+.....++.........", ".....+..........+...................+.................+..........................+.....+.........+.................+..+....+.........+...........................+......+.......+...................+......+............+.................+..............+.............+.........++.+++...+....+....++.+....+.........+.........", ".+.+..+.................................+...........+.+.....+.........+..........+....................+.......+............+...........+...........+....................+......+....++.......................+....+..........+.................+................+......+..........+..+.........+....+............+............+.", "..+.....+..+............................+.....+.+...........+...+..+.....+........................+....+...............++..................+......................................................................+......+...+......+..+........................+......+.......+........++.++....................+..............", "......................................+++..............+........+........+.......................+..................+.....................................................................+...................................+........................++...+.....++..+....+..........+++............+...........+..........+...", "...................+.........+..+.+.+..............+...+........+.........+....+.......+..............................+..........+....................+.....+.........+.....+...+.........+.............................................+......+.......+.+........+..................................+.......+..............+...", ".....+.+.............+.+........+.........+........+...+......+.....+.++.....................+............+..+........+..........................+........+..+...+.........+.........................................+.................+............................+........................+.......+..........+...............", "..+..+...+......+.......+..+.........+.......+................+.....+..............................+...............+....+.................................+.........+....+.+..............................+.+..........................+.......................+....+........................+...................+..............", "+........+.+........+..................++..+..................+.....+....................+....+........................+.............+...............+....+..............+..........................+......................................+..+....................................................................+.+.....+....", "...........+........................+...+.........+...+.........+......................................+............+..........+.....................+.+..+.......+...+.............+.........+.....+...............+.....................+.......+............................................................................+", "....+...........+.......................+................+.................+...................+.......+.+.....+....+..........+...............+...+.+.+.........+........................+.........................+...+...+...++...+............+..+....................+......+.........................+.................+..", "...................+.........+..+.....+..........+............+.........+............................+...+..........+.+..................................+.....+.........++...............+.............................+...+...+............+.......+.......+...+.........................+.........++...++.........+...++.....", ".........+...+.....+............+....+.........+.++.....+.........................+.....................++.........................++.+................................+.+..+.......................+.+......................+.......................+...........+..........+........+................+...+..............++.....", "+...............+..+...............+.............++.......................+..................+...........+..+......+.......+..........+.........................+..........................+.....+..+.+.......+..........+.......................+...+...........+............+.................+.........+...+........+.++.....", "+................+.+.........................................+.........++.+.............+....+...........+.........+..............+....................+.........................................................+............................+....+.+.................+......+........+..................+.....................", "..+..+........................+.+......+.++..............................+............+.+................+.........++............+.......................................++............+.....................+..+.........+...................+....+..............+.........+.+...+.............................+...............", "...............+..........+.....+....+.+.++...........+........................+..................+................++....................................++.....+.............+..............................++............+...........................+...........++...+.+.+.....+............++...............+.+......+......", "+........+.....+....+.+..............+.++...........+.+.+......................++.........+..+.......+................+.+.....................+...........+..+.......+.......................+...............++..............................+..+...+..+........+...+.................++........+...........+.....+.............", ".........+..+..+...+.......................+.....+..+......................+...++.........................+.+.............................................+..+...+..................+........+................+.............................+..........+....++....+...................+.....+.......+.........................+.", "..........+....+...+.....................+.....................++.+....................+.........................+..................................+.....+...............+..........+.........................................+.................+...........+........................+.+...........................+..+........", "....+...+.++................+...+......+....+......+.......+..+.+......................+.............+.............+.........+.......+................................+..............+.................+............+...................+....+...+......................+.......+..........................................+....", "...++..+....+..............+...........+....+.+...........++.++.+..+.......+.....+.....++..............................+........................................+.....+..............++.+..............+.............+..................+....+....+.........+.....+.........................+...............+...................", "...+............+.............+.........+.........+................+.+.....+...........................................+..................+................................+..........+.++.........................+....++..................................+........................+..+........+..........+.+...+.............", "..................+....+......++........+.........+................+......+..............+.................................................................................+...+.+......++............................+.+.....................................++............................................+.............+.....", "...................+......+...+.......+.........................+...................+.+...............................+.........+...............+..........................+...++........+..........+..+.+....................+........+..........+...........+..+........+........+..+...................+........+............", "....+..........+............+.+............................+.........+................................+............+..+.................+......................................+.....................................+..................................+....+....+........+.........+..........................................", "...............+.......+.+..+...........+..............................................+..........+...+.................................+..+..+....................+......+.............+.+........................+.+.+........+.......+......................+.......+...+.....+.........+.......+.........+...............+..", "...........+.+...........+..+...........+................................................+............+..++................................+.++......+...................++.+..........++.+..............+.........+.+..................+.+....................................+..++.......+...+...+....................+.....+.", "+............+...........+.......+...+.....+........+++................+.....+........................+..++.....................++.............+.....+...........................++......+....++....................+......+............+.+.......................................+........................+..+.+...........+...", ".......................................+.+...........++.........+....+....................................+..............................+....................................+..........+.............................+..+...............+.........................+.........................+.................+...........+...", "......+.......................+...+......+......................+...............+....+..++.......+...........................+............+.........+...................................................+..+......................+..........+.....+.............+.............++......+...+....................+...+++.....+...", "......+...........+......++.................+...................+.....................+..+................................................+.......+............+.....+..................................+.........................+.......................++............++......+........+......................+...++..........", ".....+....................+..+...............+.++.....+...+...............+...+......................................+............................................+.........+............+..................................+.............+................+.........++.++...........+........+.+..+................+.....+.....", ".....+.......++..............+...+..........................................................................+...................................+.....+.......+...................+..........+...................+........................+...................+..+...............++..+.............+................+...........", "............................++..+.....++.........+..........+..........................+....................++..........+...+...................+..+..........+.........+.......+....+.+..+..+....+....+.......+.....+..........+..........+...+.................................+...........+.....+.+............+.............", ".......+...............+.++...........+.......+.++..........+........+....+...+..++....+.....................................................+..+.+.......+.............+............+.......+......................................+...........++.....+.................+.................................+..............+..+..", ".........................++...........+...+...+....................+.+........+........................................+....................++.........+.......................+..........................................................+......+....++.......+.............+......+.........+............+........+...........", "+........................+.................++.+.........+..........+....+...................................+....+.+.........................+..................+................................+...+.....................+..............+.....................+..............+.................++...............+.............", "......++.....+................+..+............................+..++...................+...................+.....................+...+.....+..........................+..+++......................+...+.......++.....+.....................+.........+.....+.++.........................................................+.......+", "......++...........+...+.........................+............++.........+....+.......+...............................+........+....+.....+....................................+...+.........................................+......+.........+...+...+........+......+...++.+..++..........+..............++......+....+..+.+..", "...............+.......+..+.....+..................+........+.+.....+.........+....+......+.................+.............+.........+.......+....+........................................................+........+...+.....+.........................+.+.+....+......+.......+++......+......+...+..++................+.....+.", "..............................+.......+.....................+....+............+.........+......+......+...+........++.....+.........+...+..........................+.......................+...+....++.+..+........+.+.........+..........+............................++......++..............+..+...++........+.....+.........", "...........+.......................+....+....+..........+........+.........+..+..+..+.+...................+..............+.....+....+..............................+.............+..+..................+..+....................+........................+......................++...........++....+........++.......+....+......", ".++.....+.........++....................++......+.....+..................+.+................+.....+.+...............................+....+............+..+..........+.......+............................................+.....+............+..............+.......+.........+......+.............+.....+..............+.....+..", ".....+...+...+....++.............+.....+.................................................+.................+.........................+............+...+..+..............+...+..+...+.......++...+...+..............................................................+...............+.+.........+.......+...........+...+........", "...................+....................................+.............+.....+....................................+......++............................++.............................+.....+.........................................+...........................+....+......................+..+..+..++.........+.++..........+", "......+.................+.....+.....+...+.+...........+...................+..............................................+......+...............++.+...+.........................................................................................................+................+.................+..............+.....+.....+", "...............................+..+.+......+....+++...+................++..........+..............+......+............+............................+.............+.................+..++................+.................+................+..........+.................................+.++........+.......+.+.......+..++....+", "....++..+....+.....+.......................+............+.+....+.................+...........+..........+...+.......+.+..........++................................................+.....................................++.............+..++.........+....+...........................+...+.++..+..+.....+...............+....+", ".............+........+..+................................+.+...................+..........+.........................++..+...........++......+.......................++...................+...........................................+....+..........+....+....+.+............+................+.............................+.", "..............+.........++.......................+..........+...++........+.......+...............+.............................+............+...................++....+.......................................+....+.......+.........+...+....+......+....+....+....+......+..+.....+............+....+.....+..................", ".....................+...+.+......++......+..+.....+.......+........+...+.+..................+....+........+......................................................+...........................................+........+.......+..........+....+...+.................................................................+..........", "...............+.....+................+..+....................+.....+.....+..++..............+........+.......+..+.............+........+.........+...............+..+..............................+..................+......++....+..............................+.....+.......................................+.....+........", ".............................+......................................+......+.....................................+..+.+............+..................................+....+.......+.................................+.+..............+............................+............................................................", "......+.++.......................+.+...+............+..............+..........................+...+..............++.+....+.........+............++....................+.......................+......................+................+...++....+.....+....+...+...+..............+.............................................", "....................+.....+........+............+.........................................+...+...+.......................+........+............+...........+...+........+.......................................+..........................+...+..................+..............+.........+.................+......+.........+", "...+...+...............+...........+.........+.............................+.........................+.......+.......+....+..............+...............................+......................+...........+...........+................+......+..................+.+..+..++.....+..........................+.......+..........", "..+....+..............+............+.....+...+.......+...+.......+...++.....+..+.....+..........+....+..............+.......+.........+.+...+..+.............+...........+...........................+...........................+....+.................+.+..........+.+.+.+..................+......++.............+...........", "..+..+......+.....+...+...........++.........++..............+..............+...........+............+...................+...+..+...+...+...+..++....+..++..++.......+...+...+..+.....................+.........................+..+..+..............+....+.....+....+.+..............+...+........+............................", "...+............+....+.......................+.....+......+..+.....+...+..............++.........................+................+.....+..+.....+......++...........+.............................+....................+.......+.....+...................+.....+.+.......+...........+............+.........................+..", "..............................+..+.......+.....+...+++.......+.....+..+.....................................+.....................+..+.....+.+......+...++.......+.........................+....+..+.....+............+......+........................+...+.........+.............+................+................+........+..", "........+..............+......+...+................+++..+.......+...........+.....................+.+.+...........................+..+.......................................++.................+........+..........+.......................+.............+........+............+..............................+........+...++..", "..+..........................++...+.........+.....................................+.+..+...................+...+....................++....+..................................+++........+....+...........+....................+........+.......................+.........+..........+...+...+....................+.....+........", "...+.+..................................................................+..+...............+++.................+...............+.....++..+..........+.+........+.+............+..............+....+.+.................................................................+..........+........+................++...................", "..........+..........................+........+.....++.+................+..++.........+........................................+................+....++........+...........................................................+.............+.......+...................+.....++.+..+..................+.++...+..............+.....", ".++....+.........+..............+...................+.+.+..................+............................+....+....+.................+.....+..+...+.....................+....+.........+....+...+...+.+.+.................+.+...+...........+.........+.+...................++..+.......+...........................+............", "++.....+........................+............+.....+.............+.........+.........................+.......+........+.........+.........+....+........+............+..............++.....+.+.........+++..+............+.....+.......++..+..+....++..+.+...+.............++............+...............+.....+...+............", "......+.........+............................+.....+.........+........+..........+....+..........+....+......+........++........++.....+..+.......+...+..+..............+..................++...........++................+.............+..+.....+.+....+....+....+.........++.......................+...............+....+.....", ".................+.................+...............+.......+..................+.+.....+.+........++.+.+...............+..........+......+................+.+.....+.++...+...................+............++......+....++...........+....+...............+....+...............+...+...............+..++....+.....................", ".......................................+...........+.................................+++........+++...............................+..............................+..........+.....................+...................+.................+.................................+..........................++...+...................+.", ".............+.....+..........+....................+..................................+.........++................+...........+...+..............+....+........+..+....+.....+..+.................+..................+..........+.........+.......................+.......+.+......+.+...............++....+..........+.........", ".............................++..+.+...............+.........................+..................+........+.....+.+.........+..........+...............+........+.............+...+..........................+........+............................................+++..............++.................++...+....+...............", "................+.............+.+...+....+...................................................+..+..+.+..........++..+.....+..............+........+...++.......++............+...+.......+..................+............................+.......+....................+.......+.....+..++..........................+.........+..", "....................+...............++.....................+..................+...........+..+............................+........................+..+.........+.............+..........+..............+..........+...................................+..............+.+..............+............+.......................+...", "......+.......+.....................+................................+................+.................+...+...............+......................+..+...........................+...+........................+....................................................+......................++.............+...........++....+...", "..............................+.+.......................+....+.......+................+.............+...+...+...............+...................+....................+...+...+..+.+.......++...................................+..+......+...................................................+.......+.......+..................", "...+.....+......+............+....+..............+...........+........+........++.....................+....+................+.+.................+........+...............++.....+.......................................+..........................+..........................+......+.+................+....+..................", ".......+.+......+........................................+....+................+.....+......................................+.+....+.......+.............+.........++...........................................................+...........................................+.+....+.+..+..+..+..+......+.....................++", "....+....................+..+...........+..........+...........+...............+.....+.....+.............+.........+++.....+.................+......................+..+..........+...+..........................+.+.+.....+....+......+...................+..................++.++...+.+.......+.......+....................+.+", "..............................+.....+..............+............+........+.....+.+...+.....+.....+................................+...........................+.....+.+......+....+...+..+......+...+.+..+.........+.+..+.....+.+.....+........................................+......+............................+............", "...............+.+..++........+..+...................+.................+.+.......+...+.....+.....+..............................++..................+.........+.....+....+..................+.....+................+....+.....+.+.+...........+...+.........+............+............+........+.+..........+...............+...", "..............++...+.........++.+................................+..............+....+...........++..+..................+...+....+.......+..........+...........+........+.................++.................+.........+............+......................+............+............+..+..............+.................+.....", "..+.........++.+...+.........+..+.............................+..............................+...+..........................+.........+..+..................................................+.................+......++..+..+.......................................................+.+..+..........+...+.................+...+.", "..+.........++........................+.............+...+.+...+....................+.............+....................................+..+.........+.............+....+++...........+.................+...............+..............................+.........................................+................................", ".............+............+...............................+...............+.................................+..........+.........+.......+...............+......+++..........................................+........+..................+........+...........+.......+............+.............+....+.....+...................", ".............+.+..........................................+........+......++.........................................+..................++........................+............+................................+..+................++............+...............+...+............+.+......+.........+..................+......", ".............+..+..+...+....................+.+..+............................................+................+.........................+.....++.................+....+.......+.....+.......+..................+....+............+..+.....+......+......+.......+....+.+...+......+..........+...+..++......+.....+......+.....", "................+...........+......+..........+........+.......................................+.+........+....................+...............+.........................................................+.+................+..........+.................+........................................+.........+..+................", ".+..+.++........+.......+...++........+................+.............+.........+.......+.........+..+....++..+.............+.+.........+....................+.................................+..+.....+...+..................................+..+.+.....+...+..+.................................+....+....+..+.......+...+....", "........+.......++...........+.........................+.............+............++............+........+++..+...+.+......+........+..............+...+.........................................+.....+..................................+.......+......+.................+...................+..++...+....+..............+....", "........+........+.......................+....+.......+...........................++...............+....++........+...+.......+............+...........+...............+...............................+....................+..........+...................................+...+......+..........+++.+.....................+....", "....+.........................................+......+......+...............+...........................+......+......+........+.............................................+.+.............+............................................................+..........+.........+.....+...........+........+............+...+....", "..................+.....+...................+............+..............................................+.............+..........+...+..........+........+...................+.+................................+....+............+......................++.....+...+..........++...................+.......................+.+.", "...+..........+...+.....+......+..+......................................+.+.+.................+...................+.....+..+...........+.......+........+......+.............+...................++.....+......+....+............+.......++..............+.........+........+....+....+........+........+.........+........+...", "...+..............+...................................+..................+.................++....+.......................++.+...........+...............................+.....+.........+.........++..+...........+.....................+.+...............+..+...+...........+.......+....................+.........+.......+..+", ".......................+..............+...............+..................+........+.....+.....+..............+............+.....+......+...+......+..........+..........+.....+........+..+............................+................+.+..+.+..................++.......+.+................+.............................+...", ".......................+.......+......................+...+.......+...........................+...........................+......+.....+...+....+.+..........+..........+..+.......+.+.......................+..+......+.............+.......+.........................+...+........+.......+......................+......+.....", ".......+...................................+..........+...........+..............................+......+...........+..................+.......+..+..........+............++.+.......+..+...+...+....+..........+............................................+...+.........................+++.............................+....", ".+...+.......+...+.+..+.+..+............+..........+........................................+....+.............++.+............................+................+..+.....+.................+...++.............+.+..................+.......+................................+.........++...................................+....", ".+.........................+..........+.....+............................+...+...................................+................++...............................++...........................+.....+.........+..................+....+.........................+.+.......+........+.+.................+...............+++...+", "....+..........+..+........+....+.........+.+................................+......................+...++.............+..+..........................................................+.......+..+............+.....................+....+.+.........................+...+......+........+.............+..+...........+.....+....", "..........+.+..+..+..+....................+.....+........+..........+........+........++.+..+...........+..............+......+..+.......................+......+........+...........+..........+........................++........+....+.............+....+.........+.........+........+............+...............+........+.", ".....+.........+.+......+.+...............++.+.............++.......+........................+.........................+..................+.............+...........+++...+...............+............+.............+...++....+............+................+...........................+...........+.....+..................+.", ".................+......+.+.......+...+................+.....+...................+.............+.........................+.............................+..................+...............................+..................+..............................+...................................................................", "..+..............+..........+.........+..........................................+........+....+.....+......+........+.....+.+.........................+..........+......................+...............+.....+...+..........+....+....+.........+.+..+..+.+.....+...................+..........+.......+......................", "....................+....+..+........+.......................................................+....................................................+...............+........+............................+......+.....+.....+.......+.........+......+................................++...............++......+.................", "....................................................................++.......+..+.............+...............................+.......+........................................+.......................................+....+...+............+.......+...................+...........++................++...................+...", ".................................+......................+...........++......+...+........+.....+.+.++.............+...................+....+.........................................+..........+.....+..................................+...+.......+.......+...........+.........+.++..+..............+.+.....................", "..........++................+....+....................+.+...................+.+.+..............+...........+.......+.+............+.......................................+........................+.....+...................................+.+.........................................+..........+............+..............", "..........+......+..........+..................+......+........+.......+..+..................................+............+.........+...........................................+........++....+.+..+......+.................+....+..+.+.....+.+..........+...........+.......+..........+........+...+..........+.....+..+.....", ".......+.......................................+..............+....+.+.+..+.............+....+............+..+....+.....+............................+...............+.........++........+.....+....+..+..++.....................+...........+.........+....++..........+.+..............+........+...++.........++.....+......+", ".....+.....+...+.................++..........+..................+..+.+.+..+..++...........+..........+.+........+........+...........+...........+............++....................................+...+..+.............+.+.................+......+..+....+...........+.........................+.....................+...+...", "...............+.......+.......+........+........+..............+....+....+.+.....+.......+...........+................................+..+...........................+.....+..........+..+..........+...+.+.................................+.......+..+................+....+................+...........+.......+....++...+..", ".......+....+...........+......++............................+....+.......................++.......+..+....+............+.................................+.................++.......................+...+...........+......+....+...+...............+........................+................+....+....+.+...............+.+..", "....................+...+..+..............+........................+......................+...........+.............................................................+................+...............+..............+................++................+.............+................+.......+...........+..........+..........", "...............+....+......+......+.......+......+.........+...................+.......+.......+......................................+..+.+...........+.+..........+.+................+.............+.......+...........+............+......................++.................................+.................++............", "......+....................+.......+.....+.+.....++...........+.................+......+.......+.+...............................+....++........+.+..............+.............+....+................+.......+.....................+..+.........+.+..........+....+......++...+.................+....+....................+.....", "....+.+.............................+......+....+.+.........................+..................+.+....+.................................................+..+..........................................+......+..............+.....................+.....+++..+.....+..........................+..................+..............", "...+........................+.++.+.........+.........+........................................................+........+.........................+.........+.+.............+..........+...+...............+....................+.............+.............+.........................+.........................+..............+.", "+......+...............+.....+.......+..+.......................+.+.............+....................+.............+..................+...........+........+...............+.+.............+....++........+.....++........+.......+.+.................++........+.................................................+.........+.+.", "..+.............+.+.....+...............+...............+.........+............+.....................++..................................................+............+.+....+.........+.........................+........+.........+...+.................+................................+............+.....................+.", "................+.+.....+...............................+..............+.............................+.........................++...+...+....+........+..+........+...+.++.............+.....+.....+.+.+...+...................+....+.......+...+................+..+.........+.....+......+.....................+............+.", "..................+..................................................................+...............+..........................+................+...+......++.+......+..+......+..........+........+......+..........+........+............+......+..++............................+..........................+.+.....+........", "+................+..........................+..+.............++..+.............+...+............+....++.......................+..............................+.....+............+...+......+........+.................++...........................+........+............................................+......................", "..+......+...............+........++........+...........+...+.+................+...+....................................+....+...............+...............+.............+...++..++................+..+.................+.+.......................+..................+.+.................+..........+......................+.+", "...................................++......++...........+...+.........+............+...................+................++.+....+.+...+.......................................+++...........+....+..........+....+........+.+.........+...........................+......+...........+...................................+......", "...............+..........................+.+................+....+...+...........+.+......+..................+..+................+...................+........................+.................+.....+.........++.......+.......+.........................+.....+......+....+......+........................................+.", "...................+.................+.............+..+...........+...............+.++...............+.....+.........................+......................+..................+..+......+.+.........++.................+.......+.+............+.......+................+......................+......................+.........", ".....................................+...................+.....+.....................+....................................+......+...+...................+.......+..........+..+..+....+.......++....+..+....................+....................+..........................+.....................+......+.....................", ".......+...............................+.+.++.....+..........+.+++.................+............+...+...........+......+.+..+....+...+.........................+......+.....+.....+....+..........+...............+..........+.................................+.....................................................+..........", "...+..............................+.+.+.......+...+.+........+...+....+.......................+......+...................+..+.......+.....+...............++..+.........+...........+.............+...+.........+.........................................+...+...........+............+....................................+...", "............+...............+.........+............+................+.........................+....+.+.+................+...+...+...+.....+........+............................+...+..............................+...........+..............................+.....+.....+...+.................+........+......................", "++.........+..........+....+..........+.................................+..................+.......+.+...........+......+.......+.................+....+..................+...........+............+.....+.............+.........+......+..................+.....+...........................+...............................+..", "..........................++........+.+.......+..........................++...........+........++..........+........+.+.+.+......+.......................................................................+...+.+.......+.........+...............................+..................+....+.+......+................+..+.........", ".......................+...+......++++................+...........................+..+..............+......+............+.+...............+.........................++..............................+..........+................+..........................................................................+....................", "..............++...............+...+...........+........+.......................+.+..................+....................+.+.+...+.......+.....+.......+.......+...++...................++.+.......+...+...+..+.+..............+.+..............+.........................................................+...............+....", "...+..............+................+...........+................+...........++....+.....+............+......................+.....+.......+....+..+.............+...++...............+...+..........+.............+..........................+................+.....+.......................+..............................+....", ".+..+................................+.+....................+...+.++..........+...+..+..++....+....................+......................+....+.+.......................................+...............+...............+............+......+.....+.+.+..........+...............+..+......+......................+.......+....", ".+..+...........................+....+.................+....+......................+.+..+............................+.........................+...............................................+.........+....+.......................+...+..........+....+...............++...+..+.........+.+.+.............+....+.......+....", "..............+.........++.++..................+......+.....+..........+.............+..+.......+.......+......+....................+...................+...+....+..+.............+......................+................................+..........+............................+.............+......+......................+.", "............................+.......+.............+...+.....+..........+..+.......................+..+..................+.+..+.............+.....+.....+.....+.....+.........+..................+........+..........++...............................+...+........................+..........+..+.+.............................", "...................+..++....+...++..+...+..........+..+........+..................................+...........................+............+......+.............+...........++.............+..............+.....+................................+......................+....++..........+...........+.........+......+.........", "...........................+....+.......+...+...+.....+......................+....................+......................+...................+..+.+.......++...++...........+.+..........+..+.............+.+...++.......+....+....+..........................................+.......+.+......................+...........+....", "......+.....+...................+.......+.........................+..........+...........+........+...........+.........++........................+.......+..............................+..................+.........+..+...................+..............+.+...............+.......+...............+..+......+...............", "........................................................+...+..+...........+++...........+.....+..............+.........+....+...................+..............................+............+................+...+..+...+.....+.............+..........+.................................+......+...++.........................", "....+............+..........+.+..........+.............+...................+..................++.........+....+.+.............+...+.............................................+..........+.+.................+........................+............................................+..+.............+................+........", "......+...............................................+......+........+.+.....+.........+................................++...++..+.....................................+..........+.........+......+...........................+......+............+.......+..........................+..............+..+.....+...............+", ".........+.........................+....+.............+......+....+.....+...............+.+....................+.............+.........+....+............................+..+...................+...+..........................+..+........+..+....................+...+.................+...........+...+..+...................", "+.+.....++........+..............+...............+......................................+..+............................+..............+.+..+..................................................++...+......................+...+........................+.+.......++...+...+.............+...........+...+......................", "..........................+............+...........................+...............+.......+.......................+................+........+...............++............+............+.+..+.+....+..........................+...........................+....+..++.......+.......................+..................++..+....", ".......+...............................+.+.........+.+..+..........+.........+.......+...........+........+.........+........................+...........+..+..................+.....+....+..................................+.+.+......+..................+........+.......+.......................+...................+.....+.", ".......++........+......+.........+...+.+............+........................+.............................................+................+...........+..+..................+..............+..............................+...........................+.............+............+....+..........+............+.+..........+.", "..................................+...+.+.........+...........................+..+........+.......+...........+.............................++....+..................+................................+..+..............+................+............................................+..........+..............................", "..................................+...+....+........+................+.....+..........................+....++.+..............................+.+...................+..............+.....+..+.....+....+..+..............+.....+.......+......+................................................+.................................", "...............+........................................+....++..........+.+........................+..+....+.+....................................................+.......+.......................+..+..+...........+..........+...+........+.......+.+..........+........+...++............++............+....+.............+.", "...............................+........+.+..+..........+...+.+..........+....+........................+......+.................+........................+.................+....................+...+...++...........+.+............+................+.....+........+..........+..............................................+.", "....+...............+...+...............+..........+..........++..................+.......................+...............++...........+.................+.....+....+....+...+..+.................+.....+....+.......+...........+.....+.+...........+..........+...+..+.....+.........+...............................+........", "........................+.......................+..+...........+.....+..+.+.......+........+...+..........+.....+.....+....+.....+..+..+....+.........+..................+...+.....+...........+................+..................+...++.....+....+.+.......+...........................+....+...+.........+.....+....+..+.....", "..................................+..........+.+..........................+.....+.....................+........+.................+..+......+.....+..........+..........+.+...+.....+......+..+.......+.....................+.......+....+............+.........+....................+...++..................+.+...+...++....+...", "..+..........................................+++..........+.........+.....++....+.......+.........+.......................+...........+....+.....++....+.+.+.................+..........+..............++......+................................+.................................+......+.+..................+........+........", ".........................................+.........................+......++.........+..+.+...............................+.......+...........+.................+..........................................+......+.....+......+......+....+....+.......+.........................+.....................+.......................", ".............+....++..............+........+.......................+....+.................+...................+......+......+.................................................................+............+......+.....+...+.+............................+....................................+...............................", "........+..........+......++...............+..+...+.....................+.....................................+.........................+..+.....+....+.........................+.............+........................++...+.+......+......+.........................+.........................................................", "........+.................................................+.............+...........+...........+.+...........+.+.......................+......+.+..............................+.............+..+.............+.......+..........+.............+.....................+................................................+.++.....", "++......+.................................+....................+................................................+...+....+..++........+.+......+..........+.+..+.........+...+..+...++...........+.................+.+.......+.+.......+..+.....+..................+....+........+..........................................+...", "........+.............................+..+.....+.............+...................+...........+.+...+...........+.........+..+.........................+.....+..+...........+.......+...+..................+...............................+..............+..............+........+..+..................+...+....................", "......+....+..+..+.......+...............+.........+.........+...+..+.+........................................+.....+...+.....+..+.............+....+.................................+......+......+.....+............+..........+.............................+......+...+.......+...+...................+......+............", "....+....+.+..+..........................+......+............+..........+..+..............+.......+.............+.............++.....+..............+....++.........+..+........+..........................+......................+...........+....+.............+..............................+........+.........+...+........", "....+.........+......+.........+......+..+................+................+.+............++........+..............................+...+................++..+.......+..+...+...............+...............+.........+.........+..+...........+............+..........................+...................+.................+++.", "..................+..+................+..+................+................+..................+...............+.....+...........+..............++........+....+..+.+.................+.....+..+..+...........+.+..++........+.....++.............+...+....+...........................................+.........................", ".........++...........+.......................+..............+.+...+.....+..+..........+...............................+........+.............................+..+............................+..+..........++..+...+.......+.+...++......................+...+..++....+..................+.......+......+...++...........+.....", "..+............+..........+.........+..+......................+........................+.......................+.......+...........+......+......+.............+.+...........................................++.................+.+.................+.....+...++..+..+.+.........................++.............................", "......+..........+........+...+.....+.....+......+............+...........+........................+............+.......+.....+......+..................................+......+.+..............+............++...................+...................+.......+..................................+............................++", "+.....+.+..+.+...+.........+..........+..........+...............+...+..........................+.+....+........+....++...........................................+.+.........+..............+...............+...........+.....+...........+..............................................+.............+.++...........+........", "..+........................+................+........................+++........+.................+....+.............+......................................+........+....................+.........+........+..................+........+..............+..............+....................+.......+.....+..........+..........", "....+..............................................................+..+.........+......+..........+++.....+.................................................+...............+.......................+..+...............+.......................+..+.....+................+....+...+..............+..+........+................+.", ".........+......++....................................................................+...........+.++................................................++.....+....+.......+..++.+....+..............+..............................+..+.....+..+......+...+.........................................+....+.+..................+.", ".........+........+........+............+......+...............................+...+.+......................+..+.................................++..+++.+......+.+....+......+...+..................+...+...+........................+......+.+......+.....++....++......................................+.................+...", "......................+.............++.................+.+...............+.+..+....+...........................+...............................+..+..+.+.+.............+......+..+.......+...............+...+.......+.................+..+....++...........+....+......+........................+..............................", "................................+....+.............+.+...+....................+.+.+...........................+................+............+.....+..+...+..............+........+...............+.......+...+...................................+..............................................................................", ".............+.......+.+.................................+..............+....++...+.+........................+....+........+...+.....................+...........................+.......................+...+................................................................+.................+..+.......................+..+.", "+...+..........+.....+.+................++...+...........+..............+.....+...................+.....+....+......+...+......+...............+............+..............+........................+....+.............+..................+................++.................+...+...........+....+..................+.........", "+........+.....+....+....................................+....................+........+...+......+.+.......+....+....+.+.+....++....+.+..+..............+..+...........+...............................+..............+......................+...................+...+.......+.........+...........+..............+..+.........", ".......................................................................+...................+......+............+.+....+........+................+.....................+.+.....+..+................+...........+........+..+..+.+.+.........+..+...................+...+.........................................................", "......+..............+....++...........................................+................+..+...................+..........................................................................+....+..+...........+........+.....+...+.........+......+........................................+...................+............+...", ".......................+.........+.+...+.....+................++..........+....................................+..+.....+............+.+...............++..................................................+...............................+........+...................+.............+....+.............+.....+..+..+..........", "...+..........+..........+..........+..+............+..........+............+.....................++..............+..................+..........++....++..+........+................+.........................................+...........+.........+.+...+...+...........................+..............+....+...+..+..........", "...+..+...+...........................+................+.......................+...................+......................+..........+..+.......++....+...+..................+.....+......+....+......................................+................+....+............+........+.........+..+.........+...........+.......+..", "+..+....+.....................................+........+....+...........................................................................+........+.+...........+.............+...............+.++..........+................+..................+..................................++..................++++...........+.......+..", "..........................+.....+..........+................+......+.................................++.......+......+.+...........................+...........+....+.........+.......+.........+.........+....+.....+.............+.............................+...........+..+.+...........+.........+..................+....", "..................+................+.........................++....+..................+........+.....+......+...........+.................+........+...........++.....................+........................+..........+........+..........+....................+.........+..........+.....+.........+.......................", "...........+...............+..................+.....+...........+.....++..+.+...........++...........+..........................................+...............+..............................................+...+......+.+............+.........................+..+......+.........+................+....................+..", "...+.....+.....+...........+...............+.....+..............+......+....+......+................+.......................................+.....+..+..+...................+...................+.........................+........................................+.........+..................+...............................", "..++.....++.....................+.....+....+........................+...+..+.......+............+...........................................+.+.............+...............+............+.......+.+..................+..+................+.........+........................+.....+.....+......+...........+...................", ".........................+............+...................................+....................................+.+........+.+....+........+.................++.......+.............................+.++......+..++....+..............+........+....+.......+........................+...........................................", ".+.............+.+.+.....................+......................+...........+..................+.........+.....+.+..+...........+......+.++.............+...........................+.............++...............+..............+..+.+......++..+.....+..................................+...+...................+.......+....", ".+.........+...+.................+......+..........+...+.......................................+..+......+.......++....+...+..+........+.+.+...+.............................+...........................+.....+.....................+.........+.++...........+............................+...+...............+....++.....+....", ".+........................................+........+.+.......+.+.........+........................+......+........+.........+.+................+......+..................................................+.....+.............................+...............................+.......+..................................+.......", "........+........+.............+.........+..................++.............+......+..........+.......................+.........+.....+............................+......+..+........+.........................+.....+..........................+..........................+...............................+.+.........+........", "+.....+.....................+..+....+.+..+...............+.+.................................................+......................................+........+.+..+...+.....++......++........+......................+..+...+.....+...............+......+.....+............+...........+...........+.+........+................", "+....++................+........................+.......++.....++.+.+................+..++.......+......................................+.+.........+......+..........+..............+..................................+...++....+....+.........+.......+.+......+....+.....+.....................+...+.........+.........+....", "......++..............+...........................................+.....................+........+..........+.............................+........+.................+..............................+......+............+...++..........+...........................+.....................................................++....", "..+.+.++..................................+...............+....................+....+.......+......+.+..............................+.....+..........................+.........+......+...+.........+....+++....+.........+..+..+..............+....................+.+..............................................+....++....", "....+..+...............+.+...+............+.........+...+++....................+....+.....++...+...........................+...........................+.........+...+....+....+......+...........+......+++...................................+.+....++...............++.................+........+......+...+......+..........", ".............+..+...+....+...+............+..+......+...+.........+............+.....+....++...+................+.....++........................+..+...+..+.+....+.+..................+...........+......+.+..+...................+.+..........+.+........................+...............+..........+...............+..........", ".+...............+..........++.........+..+..+......+.+.....+..................+.........+...................++.+....+.........................++++.....+....+..........................+.........+..+.....+....+..............+....+.....+.........+.......+............................+..+.........................+.+.......", ".+..................................+.....+.........+.+..++.........+.....+...........+..+...................+..++.+....+.........................+..........+.............+..+........+.............+.................................+...................+++..............................+....................+.......+......", ".....++.......................+...........+.........+...++.........++....+.........+............+............+...............+.............................................+.................+.......................+.................++...+......+..+.....+..............................+...............+..+..+.....+........", "..........+..........................................................+...+.++......+.+.........+.............+.+.............+......+............................................+..+........................................+........+++.....................+...........+..+........................+.+.+...+..++.......+.....", ".......................................+.......................+...........+.................................+..................++...+..+............................+..................+.............+.............+........+.............+......+.......+...............+...........................+..+....+...+...+........+", "..+...+..........+.+......+..+.........+...............+.........+.........+........................................+...........+....+.....+...........+..+.+.........+......+........+...............+.........++..+.....+..+..................++...+....+....+.......+........+....+.+..........................+.............", ".............+..............................+.+......+......+..............+.................................................+..+....+....................+.......+...+....+.+.............+.......+................+........+..................+...+.+......+++................+..........+............+..+......+....+....+...", "..........+..+......+..+.........+............+...........+................+..............................++............+....+...............++....+.............++.............+........+........+.+..+......................+.............+...................................+..........+............+..................+.+.+", "..........+...+.+....+..............................................+.............................+.....++.+............+...+......................+.................+......+.+........................+.............+...+....+.........+....+...................+..+...........+...+..++...+........+........+..........++....+", "..............+................................................++..................................+.........................................................+.......+.....+................+..........+...+......+..+..........+.................+..+.................++.......+....+..+.+.+...............+.............+.+.+.", ".....+.......+...............+.................+..+.+........................+........+.....+....+........+..........+....................+.....................+.........+.....+..+........+..............+......++.......................++....+..........+...+.........+.....+.........+...........++...........++.......+...", "...+.............+.....+.....................+....+.........+.......+..............+.........................+....+..................+....+.......................+.......+.................+.............+...+.....+....+..............+..+...............+...+.........+.+....+.........+.........+........+.....+....+.......", "............................................................+.................+..............................+...+.+........+...+..................+++....+...+...........+..............+...........+....+..............+............+.+..+...............+....................+.............+......+......+.+.................", "............................++...........+............++..............................................+......+..........+................+..........+...+....+...........................+.....+.+...+...++..............+..................................+...++.................+...........+.....+.....+....+.....+.........", ".......+.....+.......+........................+...+...++............+..........+....+.+.........+............+...................+.......+...................+.........+....+................+...++......++..................+.....+.................+...........+...+.......+...........+...................+........+.........", "......++...+...++....+..............++........+.....+..+..+......+.....+......................+.++..+.....................+.+....+.......+.........+...................+....+........+.......................++..............+.....................+.............++......................+..................+++...+..........+..", "..+............+.....+..............++....+.+..........+.++..+.........+...........................................+......+..............+......+....................................+................................+...++........++.......++.........+......+.+......................+..................++............+......", "............+.............................+...................+...+....+...................................++.+....+.+.+.....................+..+.........+.....+.........................................................+.+...........................+........................+......+.............+.........+.......+.....+.", "................+.....+...................+.......................+................+..........................+.+..+.+++....................+.....................................+.............+...........+..........++...+.........+...+.........+.....++.................+...........+.........+.+.......+.++...............", ".............+..........+..+...........................+.....+...............+.......................+...+.......++.....+........+.......+..............+..+......................+..................................+..........+.........................+......+.....+.................+.....+...+...+..............+......+..", "..............++.........+...+.............................+.+..............++.......................+..+++.+.....+............+.......................................................................+.+...........+..................+..........+..+...+.....................+....+.+.+................+.....................", "......................+..+..........+..+..+...........+......................+......+...............+...+.........+...............++..............................+..................+.......+........+....................+.......+.+..++.........+...........................+...+.......+.+....+.....................+...+.+.", ".................+..........+...++....................++.................+.+..+.........+.........................+..............................+..+.......+.....++.............................................+..............+..+....++.................................+..+..+.........++.....++.....+......................", ".+...............................+.....................+..................++......................++.+........+...++.+.....................+......................+........................+....+................+.......................++..+........................+....++...+....++.....+..................................+", "+........+....................+...................+....+..........................................+...........+....+.+...................+..+..................+...........+...+.......+...+....+.................+......................+..+..............+..........+....++...+....+.........................................+", ".......+......................+.+...............+.....+++.....+.........+.......+................................+...+..+.+....+..........................+..........................+.....+........+............................+......+.....................+.................+...+..+.....+...........++.....................", "....+..+........................+............+.....+..+.+..................+....+...............+..+...................................................+....++..........................+...........+...........+.........................+.....+.....+.+++...+.+...............+...+........+...+.......+.....+....+...........", ".......++..........+.....+.+.................+.......................+..........+.......+........+++....+..+..++..................+.................................+.......+..........+.+..........++..........................................+.+....+......+.....+...........+........+...............+...+..................", ".......++........++.....++..........................+.....+.............+..........................+....................................++..+....+........+.................+.......................++........................+...................+.......................+..........+...................+...+..................", "...++..++....................+.......++....+..............+...................++.....+.............................+..+...+..........+..+....................+........+...........+...................+.................+........................................+......................+.................+....+......+.........", "...+...............+......................................+...................+.+.......+............................+.+..................+.......+..............+...........+.....+..................+.................................................+...+...................+.............+.+....+................+.........", "..+.......................................................+.....+.....+.............................+...................................................+....................+.....+..............++......................+.............................+.........+....................+......++.....+...........+....+.........", "............................+...........+.......................+.+.................+....................................+........+...+...............+.+.........+......+.........+...........+.........................................+........................+........+.........+........+.....+.......+.........+.........", ".....+............++....+.........+............+................+........+......+.+...+............+............................+..+..................+....+.............+.......+................................................................+......+.........++......+......++.+.............+...................+........", "...........+......+...............+......+.+............................++........+...............++.........................+.............+.+.....+.....................++............++...............................................................++..........+.............+........................+...........+....+...", "...........+..+...+........+.+...........+......+............................+............++.....................................+...........+.....+......................+.............+..........................+........+.............+............++................+......+......+..............+....+....................", "..+......+...+....+.+....................+...............+...........................+...............+.........+........................+....................+............+...............+...............+...++............+...............................+........+..........................+...+.....................+.....", "..+...............+...........+.+....+...+.....................................................................+.............+.....+..........................+.........+....+.....++........................+++............+................................+.............+..........+..+................................+...+.", ".+.............++.+......+...++.......+..+..............................+.......+....................................+............++..................+....+..+.........+............+.+.............................+....................+.+.........................++............++.........+............++....+.............", ".+..........+..+.............+.+.........+........................+................+..........................+...+............+...+......................++..+...+.+....+....................+........+..................................+........+.+................+.....+..........+..+.............+.........+.............", ".+..+..........+.......+.................+.......+...........................+.......+........................++............+..+...........................+.............................+.......+..+.....+.......................+.......+......+...+.......+.+........+..+.............+.................+.........+.+........", "..................+..+...+.....................................+.................+...+...............+.....+..++.+........+...............+++..........+.............+.+......+.....+....................+...................+...+.++..................+........+........+...............+......................................", "............+........+.........................+...........+.+..........+............+.........+......+........+.........................++......+.................+...+.....................+..........+.......++....+..+.................++..........+...++................+.........+..........+.+........................+..", ".+...................+.....+...................+.......+....++..........+............+....................+................++...+.+.+....+.......+..+...+..........++.....+.................+..+........+................+.....+...........+...+..........+....................................+........+..+...............+....", ".+.......+...........+.....+...............+........+............................+...+....................+.......+....+....+............+........+.+...........+..+......+.................+...+....+.++............+.+.+.....++..........+.....+.......................+..........+.........+.+..................+........+...", ".........+........+........+....++..+......+..+.............................+.....++......................+........+...+....++...........++.....................+............+...........++..........................+..+.....+..................+.......+...........................+.......++.....+..+.....+..................", "..........+................+........+......+....+..........................+......+................................+......+....................+......+..............+......++...........................+..............+........+...+...........+.....+...........+.................+............+..+.......+..........+....+..", "+......+...+.................+.............................+.....+..................................................+.....+.........++...........................+....................+....+.................+..........+...+........................+.+......+............+...................+.....+.........+..........+.....", ".......+.....................+.+.+..........................+....+...............................+................+.......+..+...............................+......+...+..................+.+..........................+..............+.+................+....+...............................+.....+..+......+..+.......+.....", ".......+...............+.+...+......+.............+..........+.....+.............+......+......................+...+.+..+.+............+.+..................+.................................................+..+.+.....+......+..............+...............+.....+..............+.+........+...+++.......+....+...........+.", ".....+...............+..............+....................+...+...........+......++.........+..............................+..........+...+...+.....................+.....+...........+......................+....+..........+..................+............++......................+.+........+..+++......+++..+.+......+......", "................+.................+.........+++........................+.+....+..+..................................+....................+......+..................+.....+...........+...+.......+.......+..........+............+.................................................++......+.................+......+..........+", "..++..+........................+...........................+...+.......+............................+..........................+..+...........+......................................+.................+..............+..+.......+...............................................................................+..+...........", "...............................+................................+...+..................+...+.....................+...+.........+...............+..................+.+..+.....+.........+......................+....+...+.........+..+..........+..........+..+....+.......+...........+......+........+...............++........", ".............................................................+..+...+...................+............+.................................+.......+........+.............+......+....+...+......+.................+....................+..........+..+.......+.....+....+....+...........+.....+.........................++........", "..................................................+......+..........................+...............+...................+.............+.+...........+......+................+.....+..........+....................+.................++.........+................+..................+..++...+..............................+.....", ".........................+..+.........................++......+.......+.........+...+......+........+.....................+...+..+....+.+...........+.............................................................+....+...+.........+....+...++.......+........++..............+....+.....+.............+......+............+..", "+.................+......+..............+...............+..+..........++.+.................+...++.+.+........+........................+..................+......+.....+..........+.............+.............+...................+........+...+.................................+...++.....+.....+..+..+..........+.+...+...++..", "++.....+........++...........++....+........................+............+...+.......+.........+.................+..............................................+.+..........+..............................+.+.........................................++.+.............+.........................+........+...........+...+...", ".++....+............+.....+.............................................+...++.................+...+..............+.................................+........................+...............................................+.........................................+.......................+...+........+...........+..+....", ".......................+........+..........+............................+...+..................+.....++..............................................................+.........................+.+...........................+.+..............................+...................+............+.+++........+...........+.++....", "...........+.........+.......++.+..........+...+................................+.......+.............+......+.............+..+...................................+.+...................................+...................+................................++................+...............+..+......+...................+..", ".........................++.+......................+....+...........+.................+...........+.................+.........+....+....................................+....+........+...........+.....+.....+........+.........+............+..+.............................+..............+++.+.............................", "......+...+............+..+........................+.+..............+....+........+............+..+........+......+..........+.....+........+.......+.........+..+..................+.............+.........++.....+.........................+...+.............................................+............+...................", "....+.+...+............+....................+......+..............+..........+................+...+..................+.+.....+.....++......+.....+..+..........+..................................+.+.......+...+.+...+......................+..........+.+....................................................+................", ".....+..........+.+.............................................+.............................+.................+..............+..........+......+......................++...............................+.+......+................+.........+..........+.+.....................+..............................++...............", "+....+..............................+....+...+.......+...+...+.....+.....................+...........................................+....+..................................+....................................+............+...+.........+.......+..........+...............+...............................+...............", ".....+..................+....+............+.............++..............................+........+........+..................................+....+..........+..+...........++....................................+.....+.......+..................+.....+.+....+.++++..+.....................++..............+.................", ".....+.........+..........+.....................++..........+...+.......+....................+.........................................+.........+...........+..+.....+.......+.+.....+...........+...+.....+.............+............+....+.......+......+......+....................+.......++..............................+", ".+...............................+...+...........+................................+...................................++...........+............+............+..+.+.......+............++....+.........++......+......................++...+...............++..........+...........+.........................+...+..............", ".......................+............+.....+..................+.....+...............+..+.......+..+..................+..+..............+.........+.....+............................+........+..........+...............................+...+...............+...+.......+............+.......................................+...", "...++.....+.........................+.+..............+.......+..............+......+....................+...+....................+......+............+.+..............+...........++...................+..................................+......................+........+................+..................................+.", ".............+.....................+.....+...............................+..+.............+....................+.................++..+............+...............................+...+...+............+++..+.++.....+...............+..............................+........+.........+............+...............+.........+.", ".............++............+....+............................................+..............+..........................+.........+.....+......+.............+.......................+.....+.............+......+...........+.+..++..........++....+.......+...........+...........+.................................+...+.......", ".........+.++...+.......+.......+.....................+......................+....++....................+...................+.+...........++.............+..................................+....+....+............+............+..........+..+..+..+.....+..+....+...+........+...+.............................+..+...........", ".........+..............+.......+.....................+....+..........++...+....................................................................................+................................+....+....................................+...+.+......+.+...........+..+.......+.......................+.......+...........+..", ".....+.................++.+.....................+..........++...................+.........................+.......+...............+.+........+..+.......................................+.....+..+................+.......+....................+...+......++..........+..+...........+...........................+.........+....", "..+..................................+..+.......+..........++.....+................+.+......+.........................................+...+.....+.......+.............+.+..................+..+....+..............+.......+.........................+.....+..........++..+.........+................................+...........", "..+..................................+..+...........+......++...............................+................................+...................................................+.............................................+.........+..........+.................+.........+........................+..........+...+.......", "....+.......+.............+..........+..+.+........+.......+.+..+....+......+.......................................+................+......+........................+...........+.............................................++........+..+.......+..............++...................+...............................+.......", "....+..+.......+.......+........+....+.........+.............+..+........+.+....+........................+.+........++....+..............................+.+...........+.......+.++..+.............+.................+..........+...+...............................................+.............................+.............", "..+.+..+.....+....+....+...................................................................+....+.....+....+.............++...++.........................+.++.....+....+.......+.+....+.................+............+...+..........+......................+..+.....................+...........................................", ".+...............+................+.......+.............................+...........................+........+................++.........................+.+.....+....................+......+.......................+..............+...+...............+.....+........+.+............................+.........................", "..........................+...+.+.+....+...........+..............+.+...+.......++.......................+...+.............+..+............................+......................................+.................................+...+.................+......+..............+.......+...+...+.......+..+....................", "..+........+.+....++......+...+.....................................+................+..........................+......+..++..+..+...............+.........+.................+...+.....+............+........+.....+............................+................+..+...........+..........+...+........+..+............+.......", ".............+..............+.................................+..+...........+.......+....+.....................+.........+...+..............+...+.........+........................+.++................+..........+..................................+..........+..++.........+.......................++.....+........+.....+.+", ".........+...........+...+.....................+..............+....+.........+.....+.+.+.....................+..+.......+.+.........+.........................++..........+.........+..................................................................+..+..........+.....++...................+.....++......+..............+..", "....+....+..+...................+...+.................+.............................++..............+.........++........+...........................+....++....................................................+.......................+...............+.......+.....+..+..++...+.+.+........+..+.+.............................", "............+.+...........+.....+...+.....+...........+...+.........++............+............+.+..+.........++........+......+...............+.........+............+..............................+....+........+.+....+............+...............+.......+......+..+..........+................................+..........", "............+.......+.......................+...+.....+...+....+...+...........+..+............................+...+...........+...........+..+...................+................+............+................+...+..............+.................................................+.........................................", "....+.......+.......+....+...............+..++......+..........+..................+..................+.........+...+.......+..++......+....+.........+.......+...++.......+........+.......+...++....................++...............+............................+......+....+.........++......++....+............+...+.......", "............+..+...+........+............+..+.......+................+...............................+.....+...+...+.......+.............+......................................+.....+..............................+...+..+............+.......+...........+..............................+....+......................+.......", ".......+...........+...+....+........++...........+..........+............+....................+.+........++.................+................+.+.......+..........+.++................................+.................+................+.....................+...........................+..........................++.....+.", ".......................+....+...........+.............+......+...............................................................+................+.....+...++.......+...............................+...........+.....+..+..+.+............+...............+.......+........+..................+...+...............................", "...+..........+............+...........+..............+..................+......+.........+............+....................++............+..........+..+...............................................+....+.....+.....+.................+............+...........+.......................+....+.............................+", "+....................++...................+.......+...+..........+......+......++..........................+.......................+....................+...............++.+.............+........+.....+...+++..........................+.+........+...............+.............................+......+...............+......", "+...................................+................++..........+.....++.......+.............+.......+.........+........+.........+.........................+...................+.+..............+.....+.+..+...............+.........+.+.+........+..+.......................+..........................+.............++......", "....................+...........+....................+.+.......+........+....+..+.+...............................++.......+...................+...+...+...............+............+............+..+...+.+................................+.+......+...................+.....+.......+...............+...+.......+......+......", "....+............................+.....+.+.............+.............+............+.+.........................+........+....+......................++...+..........+...+............+........+......+...+++......+..+................+..+....+...+..+.............+.....................................++...............+......", "..+..............................+.....+..............+.............................+..........+...+.+....+...+..........+...+..+...........+...+..+........................+....+...........+...........+..........+.......+................+.+.....+............+................+...........+..+........+...+............+...", "+..........................+.....+..+..+..........................+.................................+.....+..............++.................................................++.+.........................+.....+..........................+..+...........+.....+......+..............+......+...................................", "....................+..........+........+..........+.................++.....+.........................................................+..+..........................+.......+.............+..............+................................+...................++................+.........+.............+...+......++..+........", "..+..........................+.+........++.........................................+.+.+....+...........+..+........+..+.......+..............++..++....+...................+........++........+.........+.+.....+.................+.......+...............................+........+.............+.................++.........+", "........................+...........+...+...............+.+...............................+.+...........+..............+................+......+...+...+..............+......+......+++..................+.......+.+....................+..+++..+....+.....+..........................+.........+.+..................+..........", "..............................+.........................+.....+...+.........................................+........+.+.......................+.......+.........++...+.............+++...........+..................+............+..++..............+.......+.....+..........+...........+...................................+.", "...............................................+............+.....+............................................................................................+......+.......+.......+.............+.......+........+.........+.............................+......................+.................+.........+...............", "...++...........................+.+............+............+...+.+...+.....................................................+....+......+..+..............+..+.................................................+..............++.+..............+.............................................+......+.+........+.......+.+.....", "....+.......+...+......+.+....+.+..............+................+........+..................+......................+...............+...........+..............+.++...+......+....+...........+....+..............................+...+.....+........+................+.....................+.+.+...+.+..+.................+.....", ".......++..+......+.+..+...+.......+............+.........+..+.........+.+..+.....+.....+..+......+................................+..........+.......+........+............+....+...........+....+......................+......+...+.............+...................+...............+....+.+.+............+..+................", ".......+...........................+....................+....+...........+......+.++....+......................+......+............+.+....+................+...+.................+...............+..+.........+..+..................+.........+......+....+.+...........+..................+...+............................+.+.", "............................+...........................+..............................+.............................................+.............+...+..++.................+......................++.+......+..+...................+........+......+........+............+...+...........++........................+......+...", "............................+..........+....+......++...+..........+.....................................................+.....+.......+..................+..+....+.............................+............++.......+.......+...............+..+..............+..........+...+...........+......+.........+++......+..........", "........+......+....+............+..+..+...........+.......+....++..........+.......+...+......................................+...............+.............+....+........+..+...............+............+..........+..++........+..........+.................++...+.....+.+.+...........+.....+.......+...................+..", ".+........+.............+..+........+...+.........+...........+.+.............+...+.+..............+...............+.........................+.+....+...+.....+..................+..........+..+...+....+.............+....+..................+...+.........+...+....+.....+.+.............+........+....+...............+......", "..........+.............................+......................................................+...+...............+............+..............+..........+...+..................+....+.........+..+.................++.........+.............+.............+........+.......+.............+...................+............+...", "............+..............................+........................+.+...++............+......++.....+........+....+.......+...................+.........+.+..+...........+..+......+.............+....................................+....................................+.....................+.......+................+...", "............++...++......+...............+..........................+..................++......................+......+.....+....+...+..+.............+........+...........+..+....................+.+.........................................................................................+................................", "..........+.+++...+........+...........+....+.................................................+..................+........+.+..........++................................................+......+...............+...............................................................+..............+..................+.............", ".............+.............+................+.........+..+.................+...+.....+.................+..........+.........+..+.......++....................+...+.....+.................+.............................................+.......................................+....+.....................+...+.................", "...+....+...............+...............................+......................+......+................+..........+...............................+..........+.+.......+...............+....................+.....+.+........+.........+..................+................+...+..........................+.....+...............", ".......................++....+.......+.............+.......+.+..............+..+..........................++.........................+............+......+.....+.........++.....................+..+................+....+...+............+..................+.+...+.......+............................+.......................", "........................+....+....+.............+..+.................................+...............+.....+.....+.................+..............+...............+.+....+.+.......+......................+....+.+...+..+....+.....+.+........+............+.+....++..+............++..+..+.+.....................+...........+.", "....+.............+.....+.................................+.....++.....+.................................+........+....+..........................+............................................+..................+........+.........................................++............+....+...+.......+.............+.......+...+.", "....+...+...................................+..................+....................+...+....+....................+.........+..+....+.............+...................+.............+.....................................++.............+..................+...+....+.....+......++....+........................+............+.", "..............................+.....+.......+........+...+..............+.+..++..........+.............+..............+.....++......+.........+.......................+.............+...........................+..+......+....+........+.........+.......+.....+....+....................................+..+..+.....+..+......", "................+....+.....+...............+........+........+.......+..................................++....................................+.............................+..................+........+.......+......+..+...+.....+............+..++.......+.......+...................+.....+...+......+..................+..", "..........+..........+.........+.+...+..+...........+............................................++................................+...+.............+.......+.......+......+.......................+......................+...................+.....+...+.........++++.........+...++.........+...+......+.....................", "..........++........+.+..........+...+..+...+.................+...............+..................+........+..................+.....+.............................+.....................+............+.............+.....+............+....++.........+.+........+........++..........+............+........+.........+.+........", "........+...+.........+..............+................+......+.....+.....+.......+..+............+........+...............+...............................+..............+......+...........+...............+...........+...........+.....++....+..+.+..........+....................+...................+.+.........+......+...", "..+.....+...+.........+.....+.........+.................++...+.......+...++......+........+..................+............++..............................+.+.......+...................+...................+......+................+..+.........+.++................+...............+............................+..+..........", ".....+......................+..................+.............+............................+..............+...+..................+.........................+.+..+...++...................+....+.............................................................+.+................+..............+........+...........+...+.........", "............................+.......................+.....................................+...............+..+..............................................+..+...++.+.............................+..................+..........................+.................+...+...+.....+......................+......................", "...+........................+.......+...............+..........+................+.................+.........+..............................+................+......+...................+..........+.+......................+................................................+............................+...+...........+......", "...+..........+.+...+..................+..............+......................................+..............+...........+..+...............+...........................+........+......+..........+.+....+.....+...........+.............+..........+..............................+.........+...+...........+........+..+......", "..............+...........................................................+....+..+......+..............+..+++..............................+.+.......................++...............+........+.+........+.......................................++.+....................+.....+...............+......+.......................", "..............+............+..............+.................+..................+.........+.......+......+....+............+..............+..+.......................+..+...............+........+..................+.........+.................+.+.........+.................+...+.......++...+..+.......+.................+....", ".+.........................+.....+......+.+.+...+....+......++...........................+.+.........+.............................+........+....+...................+............+................................+....+..+..+.....+............+........+++...+...+............+........+.....+...........+..........+........", "......................+.......+.....+................+....++...+.........................+..+..............+..........+........+.......+......+...........++......+............+.....+....+............+............................+.....................+.+....+..+...............+++...+.....+.........+.+........++........+", ".....+............+...............+.+......+.......................+..............+.....++........+........++.....+.+..+.....+................+............+..............+...........+........................+.+.......................+................+......+..+..+.............++.........+...............................", "........................+.+.........+......+..+.....+...........+..++..........+..+........................+...........+.....................+.........++..+.....................+.........+...................+.+...+.....+..........................+...+..+......+...........................+....+.........+.......+.+......", ".......................+....+............................+............+..+.....+...............................++.............+..................+....++....+........+.............+...............+..+.....+..++..+..................................++........................++..+....+.....................+....+.++........", "...............+.......+.......................+..............+........+.......+......+...................................+..........+.........+............+.........+.....................++..+..+.....+..........+...............+.................+..............+...........+.......++.......+.......................+.....", ".........................................+.............+....+.+.......................................+............+..+...........................+.+........+.+.........................................+........................+.................+.........+...........................................++.............+..+..+", "......+....................................+.+....+....++.....+.........................+...+.............+......+....+..+.............................+.........+.....++.......+.....+...........+....................+..+.......+..........+......................................+......................+..+.....+.........+.", "......+....+....................+.......................+.....................+.........+................+..........+.+........................................................+......+..........+++..........++........+.+.......................+................+.....+.......+............+....+...+...+....+.....+.........", ".+.........+.....+..............+....+.....................+..............+.....+...........................+......+............+.+..+............+.+........................+....................................+.................+.............+...++..........+......+.............................+.+.+....................", "...+.........+...+.................................+.......++.+...................+.......................................+.+........++................................................................................+........+.........+..+..............+..................++.....+..........+..+....+..+.+.................", ".....+...+...............+.......+....+.....+....................+.....+....................+....+..................+.......+.........+.+....+............................................+..............................+............+...+...+.................................++...............+..+.......+.+.....+.+.........", "........++...........+...+.................++.......+..........+......+...+.............+....+.......................+.+.......+........+.................................+..+.....................+...+..+......+.......+.++........+......+........................................+........+..+.+..+....+....................", "..++.....+....+.........+.................+..............+................+........................+...................+...............++.......................................................++.....................+...++........+.............................+........+......+...................++.++.....+..............", "................+................................................+...+......+...............+.+.+..+...............+.............+...............+.....+.....+.......+.....+....++...+....+..+......................+......+......+.............+.....+..+.........+.......+.+.+.............+..+...............+...............", ".+....................................++........................+....+......+......+.......+....+..+.....+........................++.............+...+..........+..+.+..........+........................................+.+................+....................++.+.+...............................+........+....+........+..", ".+..........+.................+.......+.............+...+..................................+....+...+....+...........+........................................+.+..+............+..........+.............+..+...........++......................................+.+.+.+.....................................+...................", ".................+...................+.........+.....+....+.............+..................+........+...............................+.......................+...+.................+..+..........+..........+.....+............+................................+.............+....+....+...........+......+..+....+......+......", "...................................+...........+.....+....+.+.....+............................+......+.........................+.+......++...+....+.......+......................+...............+.......++......+...............+.........+................................+...........................................+..++..", ".......+........................+.........................+........+.................+...+.....+.....++.................+.......................+........+...++..................................................................++..........................................+.......................+........+..+........+.....", "......++......................+..................++................+..........................++.........+.........+..................+..............+......+.+..+............+.....+..........++............................+.....+....+......+.........................+...+...................................+....+.........", ".......+.......+..............++...............+.+..........................+................+..................................+.....+..+++................+.+..............++................+...................+....................+..+.............................+............+...+.................+...................", ".......+....++.................................+.+..................+..................................................................+..+...++.+.+..+.+...+.............+..++...............+.....+....+.........+..............................................................................+.........+...................", ".....+...........+...........+..................+.............+...............................................+................+..............++......+.+............+....+........................+..+..+..+.+.......................................+......+......+...................................+.......................", "..........+..................+.....+.................................+.............+...+.+...............+....+................+........++............+......+........+..............................+.+..........................+...........+.....+.+...+.+....+....+.............................+.............+.............", "........+..............+.+..+........................................+................+.........+........+....+.....+.................+.++....................................+....+.................+....................+............+......+..................+........................+...+...................+.....+.......", "...........+.............................+...+....+..+.............+......+..............................+...........+.+.++.....+.......+........+............................+.........+...........++....................+...................+............+....................+.................+.....+...............+.......", "......++............+..............+.......+.+..+.+.+..............+......+..+...........................+.............+.....+..+..+....+.+......+............................+...............+..+.....+.....+.+............................................+...+.++...............+.+..................+....+..........+..+....", "....+..+..........................................+....................................+..+.....+...+....+..........+...+....+.....+....+..+.....+............................+....................................+...................++.....................+..........+..................+...........+.......................", ".+.....+..........................+......+...........+..........+.+..................................+........+.....+...................+..........+.....................................................+.............................+...................+...........+..............+.....+.....................+.............", ".........................+....................+.........+.......+.+..+........+..............+.......+.............................................+.............+.........+.....+..........+.......+....++...............................+.....+..........+................+................+...................++............+", "...........+..................++..............+..+.......................+................+...+.........................+....+......................+...+........++..........+........+......................+.....+.....................+.....++...........................+....................................+..........+..+", ".......+..........++..+...............+...................+...........+..........+.................+.......+.............+...+.+......+........+........+......+.............++........+......................+...................+............+.......+......+..................+................+..+.................+....+...", "......+......+.....+.........+..+........................+.+..........+.........................+............................+........+.+....+..........+......+.............++.................+................+.....++..................................+.+.......+.....+...........................................+........"}; cuyo-2.1.0/data/pics/mjZeug4.xpm.gz0000644000175000017500000000243111043161242013745 00000000000000;I b-?9.ufsq`;3^NWJՏU=-~%y~Cn_}v}B7tK7^^?&?{~޾}1scyanޱ.]  he`Fj&:I0R{KV eQƈYVSd^#دt_8=3?|O@q27Z{XIG!#0 rKӁɹ+od~QJO$*8(0H0^-tc5c"T#R= X64V/! M)$ 70¹#"KVy+HΨQYR>`$v mCH! cӢ;ٌw&7v``]F\ g_<`,nyFxpLhG vF xiSfk8hф )2t=<-T7ù܄)U6<Ì231 눌`p ;@d ˠiyUN- M`F8d@vcuyo-2.1.0/data/pics/iaAusdruck.xpm.gz0000644000175000017500000000127507550521111014523 00000000000000J/=iaAusdruck.xpmYJ1}_[+xA|Po*(/ n\L`)L3Ǚdf˝pr|:˭(/O/ׇӳZ0[ +V;,dͽcw_o|aX裂/^ct2Կ@|AeQ9d 6|$xzC?<5φzapVQ0H\UA(;Ud@O썂tB2QYiQ.a$Yy#a\I`, uasQ0 F(CnV /G6%:_̟uGeOs#=kJ|=/-$)V ?>Oc>c1)` b}#ýXtpe>G/'NZW$5otwAA\6I~WhFy[ t^A*#9$8_!rm(`.[2%cuyo-2.1.0/data/pics/mdStein11.xpm.gz0000644000175000017500000000237112412223270014171 00000000000000WMSf!((qV!gܙ=u '?=ܹ̽ \Վjp۫ qYhZݪߞW-mSs‘i^Z[XҴVhegNC fDq\%͘74":MB4uw !9 ,l$8czLD[$b@uO MDK+ 5hGR wbGo("ih`)v&dc0)QB4t1Bbn2p0A`!#qd n07Eqw! QqJ IpQ#$g&vd0F(s cC;1'&]B>B!oQa QpoZh_ˤUmX"ģbR;Q k l'E]P;{E6[\5WEq÷ 7FzX3oh3InWjmvOp狿~dK%6Wnt̛IX7 1eYL^EFz QW~рL4氌* Y+2rhаEM|_J@ttuTY۹7?vvDNǟ:* {ZC~'4Xv䴝Ґ'EyW.N#@0~ZQ7K V:!_XR0X8q15hp6awDXxШ㧽$<\Xz,4i8;Cٱ5P19AZL?%4(:ܕ5o4??C * . ˋ& A#?d́լ\(W͇?Ⱦ(!S!<WHܻ*@79L?e!a(+Ŧ* |Q?ﳶt=èH'y=1ω<}(aIT(?B/'H?P Z߿DcgWPFcuyo-2.1.0/data/pics/mscHinter.xpm.gz0000644000175000017500000007657612401656723014415 00000000000000wwTDz !2D L6&gufF޷ֺx=ݡRW/uܞyۧ~ܞ[/xSs<0ww܃ǎ8|.@< gqGɇr@)t.E|x?J.=' \~+ǎ]r.5<$Gag>]c'*q~./剣ty/WD r gprH.\^Ukg&>s~ȟr\aY.ױK=la\ާKD/_b#lA|,=Iw;~|)ȿ^32ry/_2tyv.r.~r];%|+kw ?|.;¾|...F+ty.WƮrLX}]\~r {n6_\^.ɇ]G.աޒ,!KD{QJ ^vIP.U~!|ʣ=$04PF"E~${}mdeG~CO\:e#Gg#+ӈf%1IbJ͐+W Ó'.b3I-@)D<ï 3?%31V~+ 2\J?\\\;X'yݸ[ #⠸tobzIɣ(従ߎg <}Xh?\roN0zՎϟ?_!3K F>{Sp?_ "'~"VXc%rD/ VR~GLI54(^)YOeLC[+" ]H26ǐ' p"xeECfb] }%Oa=hoQ"4im R3#?fc{fO)B f2CQ yʨoA Cz !ӿ[A}3a( . OÐ-+w14ʃh,JoR߽{HahtdXyPٺk$dP+#~#;[@{Uz+S3В!@!E"yFaX R1ܳgȳJ&g(+[b= C{^Sq=Xa0CbcC"EdRI^{^D0`N^#ׯhL5 xo޼eXOH1Ė֎#af.x xI ɼ&_=^b5Clχ% 0 *s2a >wf|aX=0I(] U0|Gü>g׵ b]o bz4; n!C ͐-1Ʉ kmz 5d8ê# e5𼓀RSfPqDfa輥nnOin2tߌ9c!C0BaaԌqɄ  p9xI#^SD?Cӕ:e&))o%)?7H C V]S+@Unx) ї&aܠ(Y1&g˺{':*1^ olKLbVOǰZԶY &Cno ЪzǏ㱸eӃq:/,('{F(=a*D ̪Pϰ0\+*yxUZK/ðLQh $1^/6*!&[R z7g-1|^W ;JiYɐ' Z$l2oXVWxV04ϣlT1-CX&Z3̝^DcL +%oj3@5} } 㱴W\ŐaxE F0$3LE/~ .z)ˤa >RyHr$$z(ac KaXgpq_!%^0-1C%\jhMwgD ESȰ&ZꙄ]<+nɊa`nlDP4bx/1o20t i1'S03IPIWWa]rb蓀efhmj0]8i0i \*274à C/S0Lx}~^MSJB 52="J' MHabٕkaSTC i`d>z)Z(|ݻC4}2CVIO0zC D tU2bxbZa@w;C~%3T `TI2T s2Vy41@71۞enmPoIC{0 9ͱN*@" yh0L4ud vZob˛p~C;-ƍSem/j6."ЗߍlM1\eZ_!!t'e8zW݃9dXwWFCҤ-êYĐ=1x;z@9UWqΐn]3̌j* )MӒ Mnޕr`H/2֎he  xJ1a@Ha\sI!.DxlMdz  =谻f*Őǁ !;>J2Ceʖ z9par31nq ٷ*IdlYK2, :Ja,S Gt3LoKf> >0d0[Cܒ^!*U1̖ϥS !å%fIhb]V+mBV擬'!̈aU t` HJI#+1ϑdIf 4 ط y=O“" mjLa[7L_G bXYp>KTF{üٔc@F8h CkSt ;gWzk!=%9T6 ear7az4(Cz0F4dQGZ uqHGQA$mE_)i0tY2̯rt0T}J'ar_!(HِV# a C 7!C Y1}񉞫!#˰{ *<ݠu?H ʵRǎCgC}v5>/2(&  i _DeEX3t_Zu~C{#fX+1aHg0$We&+5)rY’dW!Δza?CCj}z`agf axps3.em`:aQ3tëauzإmt^:3ڨo9v!n\ @AQ|#ֳXbXoiz/3T@Q5I>!<: W x*\3,u:g7x`pC2$z`X6G0t&Bb3dH<0{I %\'O9H]-T ]l$3cܼiQNflcs4`"Ńakdh~} êN6S0yTcsr ;ɰ>!gH1 ìWe a5 e  8j?EÃ!y(-Ã^24.ndtyu`xRaznamg/ ljxw3Ĕ4𘗚LD:_391pc#.0;!aI&"Eҹ|7U$-!haQ#06V dՎ N *Uh&9)c{/$ aT >F p h}w1k1 -^_ !^yF1&i0j,JCQy.S0Zt'Hi2 |-Xټ`hc] ՚PS271\Y)yaZ:](31}0{.mNaX4Zw7P OVhZ0ll`ha sz:aJK m<[֤F1&$P0_,=9ofX\c-+C6L- ݇P~ͰgX MHbXf8( ܲe3 l-I쎡|J d1#z n2LKB!kjIMĘ]S0,;֊!=AP}ti( u>G]NKvZ]z 3qݾ4O?ð* >ڎRʪ Y[-CtիiJF ~W5 >馃-6 }) }:DyVKKP\!q 4nct1YϘV -bÃ0ف!dL-i,pgL?}O#;f肚ZEjUW_}e*MfLF ?J >;0me1,fߪZ[P4Y_;e1!! 1'bX,> > gU(bXBf f f͈ard(5V>3+G !1fY!ϰ3Cwb038,MbWf^\.asIμ 7I4懊XKKruXSgn2fCXyg bX{!ob땊 pu#1!3ܫJ$C !%JΗaX5CnPA Z;6vC^CKfPmt3{v0,ela ,Wѹ3`;F'0kM2So1dCc+1~6.  0>aZU7üSc GwC(ce_oJs=;WyB*5%hN޲ 73$bVq7Czw0E>v #ei ~n1qC1OF0L߽&~e>\;{aja(YW0!k0̫kfX6k>yayS̰f<ójNoB'aUVα /anaXMmP- ]g0ʀ2gPOUyЕ*°hC޿|i EA+U!9!Cq0N v5Cxn|eq3VsPyG eCyҤ {kڳ'h%44ؼ a y-:2(P!O>+~s&ud(iZ/g {اE7Z30ě"7y:#fKRfBIOC>7 ~8eH jΐ\!ew%g=0\X e(TP жgf ! t9Jwrx} |nefXQaڑ ϼlիaɤЭaZ n,8o +ceՎeț$S6a˂iDŽgHΞ0ՠC0yab _r{I>cf Cܹ5zXph2 PJ0m`!0|dnIW֗Cy,{MMaj0|Jİ\j!jabx/C?!2+j1d kȋڤ/ (g  (b[0Cm؅ [Eʲ e_u C. Գ0^~ 0T%bb)0ġ"}!7) m z1'w2dg0tY D I? Ǹ2)Cۛ(2Tw&S!y2"Q~L;N&aDE3\#nMPe]a<d׫FD }>4GBG2WsQu rEe0H%yKN"?cƈ!쿴I '9nb ] *HbdFA+W;/ab甆I1kw7Cu3NTAR YBy5҃=;슩YfhƲ˯#dᒗ6= XcH2, ~Tnef}!d .^Y0%r Wj<ϐ322CoеP0ĩu 8IC0x14 >>3mnǔ0U3<]D 6-ȐU(͢98sDQ!cŋP/|P^~i4=ʼntxJa^'˹Z#UyD p.f8n84*wl 5 að40_~bgtaO dXYIP?BfxĶ3_UzșaƐDbP;a! ^ah[Fъ̰JS Qwg?Єz(؛5ib2y/C?gpf[xzHjVXzx4w9si8\JʺlR2C WCN.#Vrai3seh۪icP{2 $`XL"PE`eHl;\gPYBC"y6<;$Ta{޹9l 鯨se(Yq:(4IٗP&~`"y:ҏ %d&z1CD/3ԯPuJ3)Cud(CI5`b;%9cӝqJP{qqf.(E-FP ddaz twzb($3-ͷbb CfGKCY5W\ z*0H*1ny!dXe9Ý;wNZݣ85.5!*xa;MfZYϝ =`DZ\u f2af}"I 3O/&10sGrocaCV!+ CAK޺ju3@Vu:YTO#VHf@{ME2N D.3 %fHzur;4o ?jK1oamJw2,dvBaV{ uzUsf(OCnex%_wä0jw)%w~2KJl1 1C>nY; H_tTʫ ʾ*kCͰާr0[2ajrxf\ozf}arFj'P46P( DmV5k3B't1 KÓ(7ʐ)*|`:и/wV=: CD^P%1t2\lbT0!RR bgZpjhuFf}.:<a aHu5 Ñ* ett 5lyeHKW]U*8zX3C12޽˙0R/s5tK|ppz 8ayBP5`xU4bC8踪VbD'ʔ:p`0Cd³eOB?T̥0Y>)q I\3k{/Cpla91 C" sx rn( ˣNU+gx:. `xHȐu*glOb!WeGzC.Fd,~j!N ]1CZy~0ؘ@:1dynSbE Ð=!nckһ CSv; E>O9gfm\nǎ>LPu.Fi0I nyAùg ŐFHZAdC|| tP!],' YC^`/eYo ah6x+ݶaca:!^jʆ 9Y'aII?8.6*bX찊!%K d(jft9".'fF,Fcs0SIC!K7m?[1,Z+%X(cJ*Q3V?M{cu跺~hz=UJ50 Oǐ fw:6!!~İ^CmgX0RV4E8d7Wbȟ`=SrQŐ(bh]6%3$S63TJwCNMyr!e o2ЏgHCbրe믟!Cђu>VNyg8C`̨ I3;J{k#1\~.=c ºnm Z-P~0LFZwC2O5Ch[ M݃.J?H $ %oc] S5!Oż {wfh3UĕEz56j|jvmY#.B =EI(IV1 #$dh g:`BbR,|$5C.d551aZ U~XDJO\ԘlaZ\.[g9C!h10a0 y-=y;Xf(p;)>6 u C&}^dhW mPbeV KR11w005ԖNZ= }Ul^J&0%0Ev0=>mLaEaX`HIе_ð2Q[jN>`) ;Y\r,*i4 ᧢°W^8< C~!5C/C9) u4 C4KAi "v°$g{\͐850~EY,CЀm*@]to 1:KE1Q p1rCyASPd_BPdCg!03[tO3¿bX[(/^(?m/T2 CMahio\H2ClL[]`̐'?jVb1#<=ZzPbPmofڟ󪉡j^:EMB8`K27VZ Z1ty/CƥTLFI  qp ;]oqiZQfX҅d :jK@Đ AnÇZ΋ r1tk\\rP %fSl&Q?8zCa/c$e=N0ØrC}0uKVg̓6~;\Uuv25Ҩ2T m_a--ﳻ-b(ag*+58fHa{<23nXqHGN]Edhga&aQdp4ü6ڀ`m@( ̎͠k,S1MMPA2,[ kdW w3r/CښȰ(pS3|d?CdDYޒMS)K0 Ő420W%fsUB>2<}LiIڪuCs4$1,Q`y;kf() 29C w2/7) 0SWr*  21:֔wﲑ3 IGu2"q Q {Ȱq. jf\yܗ1bkdO4 %H7;Ň1$gQ<C;3NĐCM^74Cƾ搡vQ2g3E4EU# K\$`Hƃћf͐ ,CϙZߨNdhBfuaH{sվ0ATU؂~od,C|4ΤpM i,8[CwܟmZ5P2tma'$y?Y+ d^`˟)^>JjC@ g jJ g fX=E?a^z0Ӣ!@:%vR(A.ss@2ђ03t)za^d2x+aHƙ Cz.`yPcc;oUVd 03t?:? bazCF3  sDf %clDg[f(Em}fCmkgH.(3,#AC0 u(ma 8!8z*3Lk3C왡9 ObTfC-Zr4G:{CnXHf6*W N1 ektO° ;(TNQ%1KQR 20,avک/\A ) 1LN0T},9'[s qF w S(tz/aYԪt!=t{$a?PK6ĔfȐ~X1H =ls2dMZߔuP &úHz\|aV! n>Sg7r?=듶cFfCEfL0D3,mu9ö1`R!B & U*}0CVex u:ܝ;wʞa׹1<0 _[O^BͰj[|(_<67p w|d΀*21 q dH?P 5CQ6  GERo0v!O{f+j00)nVyZbh&_=\/;m̰v0!UF*Akk噅*1t^`WF t"C7#!8sI>ͼa'& +wfD<p{G43aW6*a0 ee^P$fhyu UfPzK7Cݕ-C@L !LE2D{7fu,3.0FIqSCFK H|53Z D{1Ѭ=iV~~ KښaG7 m0!VPBdHU]$XWAE8zb]M[[[z63%dt Z7tJX&Cya r04s2TwF kPGQ[C/> ú00L<12#bX6C=1C2p̰*..Z2; i.IsC0tA:QE̐Ű4)8LОqje 0,Fe0MG0aUa|߾!-y !J![^^r[14 (&K" UCQEkt0? sI L .r`XtN65Y>P& **R1LcNлC]Z: S1<*WP.MU]o+ W)U0@_:Qg3āZtoCS Q5 k ~ҮaejaN(EAe῜*E <C5mP%ʾ))c D1dR^S C'#n CeτS_>TXˤ ueB 2tU Zh2 ULP1yuvdh<ڠ 7Clrɐb4%_ٖZEDfuPЂCm5K\p~S1<і.n?͇C34 p`Z+MEFP\犡g3HPwMz7yP}rBJgGOm=Ceف1 D@V k1Œt0dW "im{N =U u1C2y=7$ M߷9,/owŧr*! @G`膡cg5Y JFoCaQbh'-fX(PN1wT15Gq\&+34mM  ~RhUŐ&>6;G0[0= ;4<?P 1C6w(z ˇ Q ؝ C= a[3lB]Nm:a~跟gX)!qOPG0m C4)B _w2,a m0аj} '#\M{`˫Ycfש] 0ҷ1=C~7{ba4CQ$-Ҋ޽/,?{ iq,:8QCZ!?ŰA:$iY ? |F(CXzʞߚ!/ !d(ٯ /h{81q +1|..0K;P~\kFIh2^my1 =u[Z0<}8  #C~3/ 7 G9e CVN!c/CldlҺl̐H-+vsha}U4N~~ qÐ9(b0dSӽwYrxɊ!}*bh=+f[׬8O*ni#GeN V|},ڏ$t{aZR"53vÒ+ eR(5C V{N3gW ٗa8f<#k`6! Ct ãG%aCh5{k&@?CXةOzh3?L1ft!;""Iqa/`PCdH# ͟ C;Pԑ 2T*1m%zs/CeQ?ed1磊!%([W:#_aZ4%8~6 ._a艡K՜CbX'`G,Я (Э a bYJİQt0Tb( 5o_[ !)!α] mic$Cֻ:ZA2A39fG14btŰbH9MK!فe"zqfxӧ{CyY T#GCeq܊C3m'CQrY?U" d8r~nkOV PɐQkWbcax3++QTN~Nw?e*ŰN7 1mJۣCcMm+ ׵~* m"?;]ʾ!N0a5CoU qa2ϰL4m\(aXkȂm"-oCsƮ0\^`PaZC!=UͰLaj_0C Ϝ ݧ05"dm/`oF[¬o6!$T m6(Pm83Z<5P&͐cݞ'aDj %1ܽy%o0ШyP/|rQ Ow(]};U&(zY-4?Iȹs*ݰ Z8!Ȥdm%3b+hs%"T4 e#MP3xPO%1`$'NS(WRfzaʕ+"8`OP0 i sdK0'ls=Qf ^1S}bX^e ezg%3Xel{^ڽ_P2 Ji,CӾfM`:JtzRUnWusb] ~jZ!5e b4$k Rβ!?M#(2`5C=Ja>J0%5{-At`w4C[ ﲪt_}l8s ۆ Y sFvu E0[ϙaZ.,pbxf*Py-+ɜ!2LڜS7j!CYa_} oݢ"Iū8Zi#Q:]*I[yX:T "@2:(1Cd}0ҹi"e#m*@0^qqgY"E  n-Ã4[a3?2}N5s ֢_JK2]W Se%dH_}= q:is~ӗhaȞ fR66{~4mUWh0TF=kTh0 4Dt00%GőQo̤1Ra[^dX4:a5">!A a ;.jn2g`eH$ o1 qN ?~8C؝! v3;[f+e;0}mCMzv0=FIfh3q*b|"C,X'>(1 ř,aZcHpފ0쥗!&%0;`XfO !,;Pd%W cDe<]b(ֈ0C\dhT0)ށ"+ OKfhYÐaaT޽1C7K3u3jzƠ"e FdxK0pto>,\*sqao =*h/edX)$$a+fh'1MPa(v*2,PTzI H~x' s7J aܯC!uJ5^Ȁfa [NXf8O>+8 sjj)PCiͪl?2C9W %ec0&*,va^ ρ2 ).`}嶚!YwXB%OmzlR_Z<|gf3lŐB̐ˬpՓ?;3ΙdH̰13V C8[c^.0PzH '1<a?Ʈ Ý^ Ί!gdRN毌n(CV:j12Dc3 B_ CM0[ԙ2y#y`#C죪 &8bHZ,zF $qH.Rm.EfX:=0gg4ET}B(xÙ0\G!a/]evy9`hJ6cp0iP+WVBx-feCs43 - CQn !?_0 <'yìB?LikhtY0|ybXf7l־I}Rnl. EEXs'0L?n}cGm'5~zk9d fz_a_'-d9p"`Nuh Ҙiny겗ly#>fu.jk93b ;AS0pVџ3\Y?}M'sY1ie,Լ*]?CUϻp6eDJ;3A`h=} SXc?a ={ֈ:# ӧ8ǘaolC ZCFb#ޝڤ ϜqecgN Ea{E0v 'd\!I.b+k bHwXg(.`BZD Qy};>ƀaq~خ78b !X$1 `\kkk>K>!SMiH/^h9$h;n1ϐJW>= 01aYRk'd Jj ?J6˰ ô֡wfB9Lp8̀PCRŐY T4 u0$ yga +obE7)*/x0I.R=Asi/GS223L4-CjA~ 6xz!$bQfXBCO=P`:LpzzoZ/Poe7NHgsTLe ADI"!{j#DCpΝ:aUȉ60Ji`Q0LsoN)ğʧ RO/xvE(hEz }Q Q3ĉ!b2X3VlINܺ IG0 rpav-yb$04I*! aXv = a牢2.Ma,!ӥ0\] u {7~خk^ 5Cj2,Y 3zg%8&d=8] ]ƞNϐ;%쥉Ϥ8:0)!.;Gc*'D1AIFa潀a*04(f3zCH汲Pa#wqHC* &ℾUIPM] ( KiC܌͜:Vf8!2 T55C  N4``k0L0=cxv8 4C~ -Yr3 aew q& 7Ndȝ'05~Hٜ7!22 (Л!⛒ ̐[-oޙ@'OUI iq 9LПR0DReJjԯ.UbxٳTw:"!d2jD e8/Dfa^ A2ő-eC6oaP`eqaKfXii*5Ck3DU 4&cXT`_x gErڪm ],C+h0t&fF1TЁ \9v`X1Cch3d]# M:P4iahEf1ü1d/!)d3_qV Sa8n24C5eғ i'ey+<~hs*{$X/(2,6 3LA 430SkR>u3GI/CƸ (%*ɐǰ0oGBn3̞SpǎxFPzH z VF34hP3:6z x3t1ԑ&;)C?jI UxC$F zjfa.Py_תwd>rT0*g x Ӈk_抉mdS1 U_N%!. yZcPlrdh9dFxe+= 2 2m\X87O^,McjWtHF-u>]gB<3LyҷnMfu| @$a4*ycXnː! z*lR4Ū?]$g*c24J&bavL$ K8VE34L?k1`Ű*t iƈa{sbcgCXD Ck iY3Kb+h;CT!.[UD3{mCJ !YF4tKÐ=[Űxr 䨒gt°/2L*!+u2$,Đ , xL%P/fX&Jǰ!t;0)C=34!stea쇚 up8Uv}c';r! a5!04 dfNW~^)mK26#5ScI!1dRI\3oCr̐v~R} Ϊ̰*H P^@6edO0]^+%rLß[b*!;)JR͐>hL W1\r£`w,CcJgu[gdCbe M}f8| BHUL/tA Uϛ~Xm2; F0Yn~vQnlUN}lw3$ݳN. ~leӳ wi:*2!q"U/ 2qYEӏ úr!_IIfbȹ!#(dn]Bi2tGbT$~0'G !C\~ A?g, YQ3?`V9*s3cH+UPvW_5~n(5,!#qdC+0LwkCu2,Lzd a +EKVdNt$ϴNM! ay0} bz^? ɥebm`HboPٚi0]!뚡.ݯb1 eoP*GW =:RKD4#ei$aF_dm53Tu_V70azZ=jX;G_70kfHHN6 Ջ̰mM*Wl; }801 8Ao$ 90#6vyh[ +ZA$d,w-CcIj J7e ;2T ;k0)-i!=FŰ I %od} 2 ::ea& gCud)V3D K- O:sM-a:C, upO-?!3>Pf4>j]0v-R`(a&CF1s0ACT)D ͘ KH^kn`wazt *rRMPԅ>ǒ`U;wUN?s='O5CwpCxC'xMTC d~OYCwoåE. ]ZjiO s=4WI qi$ yp>c;$OlV0+PC. BJniCTB)̎\I+d10ģu2 ,ii zq bᯃz1}J* ~[df$+o C] A X҈iw0[6 4t Me(CSXI Ot3<2rRgj$2˦3)lÛVR2>0սPw12%=Y**]axn:_Z ɮKnR3ܟw-(A C Ug\ID^8z̝sUC:e&C6qX) #{iP=V6B!!h<% CwP9#5CXaf.f(0o0C~E] uQU6k5aőCWۯ:&$۹a\gRVƦ!?\%( o ű7a8??a8vZѓI!:n4D9cԶ1Y -AY>ÇP@q m.qL+?*/)fڏzͰMrT3>-/p,!dPء[1$}O*gcB=> +/atGhmFU0xS\D5$1„v%1[yCaUo [GQŠq eXƄ0s-<&C}}sLP}!{hy#2id0C"chNaX^1CVv4ޒU!R"ȴ{GgX'dȖW {kzHHaX9ad0 I]oe9]9agv`ZG2 pNF1CI% S$OǰFR-aX= Y&PyFIC\{Vɓ'OX=Rgz_0yni8WyǶe&Cz bȡ : 0ni >7f sh2_\5" iYH e5n{<ÎZ2V yc p~ C09~ y|3z:LF Ó'0xESBZ 6>$İ0U*] dco ŻvIriγ4@[z*\!6uP5C@ZP=C/"#l@D!E[1 rCQLaͰrb!;esݙa[daQ?aZ)飙!:< BX2C UwHcPI!((vK j!ɐjÜTe,h8r+ @ ݼ08^ ueH&`#'cxE҂ UbsfI͒޽8Q~̗̰k|t M~ECq dȳ-]0֊aE Uo Z Î0TY(!NsxnCk ez䡔,:!D fWez4[ SȖ22a,Eaj*8rY3,ZxakX3?9CJZ(}P*Os ݝ 9bX>~0ax&! y⸟0lbhVEr c9fhg_a oͰe bH?$6oTN6ò:0a!ẁ,Wp;0z! 0\20dC\1t 7C6m 1KF1y<1P uʿ eJQ\WZFC| 3ʏ?2@aqhm0<POX/cuyo-2.1.0/data/pics/ithRot.xpm.gz0000755000175000017500000000112111101102054013656 00000000000000LG]KA_qbHB޵x)^JBwN2;{QDa&$gcw:;Fj}Տ~tݧ˿wtL&}::#ڝ~LÊy-lkRR~{=)RE(k)& 읹r!/)).(((WsoOĚ].mk(裒q M`d7`+fy6 0tؽu]sаpI.l`pH,}n::8s8Rcf_!0sNl)8cmwqαmF GD%:6mB%,asr⠶E9/h@sss8lov#8\C!~å9qN&vaSiF;?FO438=8r(k0rt.emomaAa]dqVav0ۙ`_8J$C}KK֥Qd8:%;m wTJ cqYwo~C-/;;lU fFGu?u69QO߰Ɏ6ѱ_y&9Vf~ hόa!3.f9C$Ѽ2k:C 4G{~Ȏ!h3D܎]C7D!7ȕ[?vt"[<~Ƚ!2x )G^?g:!^CTQ7Dr C(1DE,C(3D!(U]C[m`}3g6cuyo-2.1.0/data/pics/mdEisen01.xpm.gz0000644000175000017500000001145312412223254014154 00000000000000{_HS*%$0iHpH vk᳿gLBP]4y2gf2 V:^:~.f׃7.ng[٭~O+[߅~lT&p|R4[ Ők،B0)ejd,[a9h[a!Sj"ia%I2:ag&nM|Ob@Uky̾ au tIKߟ4ԕ OGܚ$*w0IAGy=cjj<I14afxxlx9W*zg·ML5;Ay(`Fnhh 5_y%[ʧLL[3t{јT>|;gǝw;+N14 /pa`Zذ ) 3XW lÝ-hf<ܪ"; 41cHL4ѐnz?V 1ZUzر\Ą>)+9+S3J[Ed|L"9 ~8pY7gqw㹆ɲ7?; U?A\T7"Ĉ3p 5h30zZ`姆XMM ;ӬW^V |CG"F^8e.l#l&`P̰2W  lva:{t0ޟ *(gPnt$tfwt0LT i@>zЙl`//e,xjFq0xd Bgoo8"E s!5}C|%b>s/d PYOMz~lD4.cSNv=40TL.gl`{(aG@'άaZ|01b91Q:j3 ,ދDžPUnp![*J{1vK} wCGĹATh`]az>_8*J@opWǛvhԐՒH⳾8 oFlׄ?btT' $>5ГyN(1ͦ" R!:`0p8W?R3 sӛ2 0v* vwB`YI3N0 s-M(LK5th 3A }H =L וaEf4 qj^(~#+ n?ٓI@ pݙ#ϴ_'cS&2x`h0La&hLu43`rjh'Y퀆FԵavR&zcPGcf'QX;|Nb1 plvSRX{D4d?5x#0xh>55>;Pfa[ͅ7"KboD]PNa\ `4j*\%hKÔ z `/ hx,߀@#scl @;C4 V BC X 48J þ,v |I !Lj£B̀C xa`~A&+x4 '!3@.#m#2T + duB.4v#CoՐX1JpwQsw=v2CrR h8oT"H0g oO '/PR#dH&O r& GdШ9ѩpPgap6qC7kn067aȠ#DK0r`PF`(Y.n^X*vH[08.HncXpC=0$5jH>Apun?dP u*mj}CE SCE@lX@~}}r72tf`c;<1Dh5lRhp|C0.Pa]j5Ll~^0ܠ68ҜAom[j y6|nLR0hP. zm;0Cp1q1Jkn7sp`lbsC50e08abp% RJ#h4Ԡh}AW0t̐X18B 7\\/ }\@7T>`|tVcpCgCP/ 诣H x."Qjt|jЗR2*y= Ad_K%7w||~i)ﺢA !\AC ۻsZ+\.su4+Z >}{uDCy{}{}oժ5xކ2UjfXTAM,wWMb#DѾljio*"vB԰,+kjڀvj5`-^+5lXN Z+d]F :ÃCe+(  l>CL{ GI[}'K2E`)3~&p0=X3L!6 0s?5?T p}lX5؂V3}A}^:jD5eW U4Ȇ<2d(ScCj27(j4[!N%rCߟΏ뎓qV py Ǐg$e:S`rǹ٬ᔧ?B}Regx.w5 }mC$Po΀dzz\!1*ln@岦 irk ?aPsޗF ,/r'bSeb0Mq\cTq ۶lYr=dXv9[s < tn1԰ i s~溵ܟn,L t5s85 o 0A?e?Gcuyo-2.1.0/data/pics/ilTuer.xpm.gz0000644000175000017500000000211012403531071013660 00000000000000h TilTuer.xpm[k0S$=ki&+Ж-o{`QJa:}Ȏ-|1HNyZ޽_7헛˵}o?Yw6_o:Y['糹zΞ~_xPӣj{zzMKj]5_m.vyI|m^{ݜó;:RlK5CyG5}j_À: qtO sи>1q}jh=o`v9h[/,N9Z5XT볡Z_6 `:q(ضfЮd0oB{ 닃yؙlС fЭ07At] @>7Xn&0 `0 `0 `0 `0 `k3p~F3 \`<<`ktp-z?ZLa 7L7`h0 `0 `0 `0 `X7 70 p]Tu= |Eig/Ჽ-Adէ:NaV?`ڬ!S`cD1+ א[~x]G4&P-Ѭ>?tn)ҿ_QM}B _?+Ѿ>н>B`?!Tl^?PU鲜f2g=7h^X>Q {= ` {O{O{O{ sbD~4?e\./SFƠ_Ġ",N|<42`Î }+j XCBVo `=q 0!з@?y4؆.;ntHy>.Ԕ}@&;A0= xDE>]N<f~ȭ!Z@_f-)ln^q>˯HviPFl y:OOPk1kcuyo-2.1.0/data/pics/bxBall40.xpm.gz0000644000175000017500000000261010361553650014001 00000000000000b=bxBall40.xpm[OHN)"x<7PZ7I!FeBHBBpj9(Tꃏx4m%ZQhMN%xceɿ}3-)~:20Gpmr&+g'W/sqS1-ϽS@!$ bPIܤ}&rl1=@Eis蕎#H,em mx S@ 5hZw$,< O9x‰і2 P`Z=[N@6MӋ!FM.(QY 4 kÊBbB} nrOWaHD[B _OIy`\SgsZroaR96;_$i!IN%7X ~7(7bж9&dq *8z^Vن|U(N$~/I}@$5sFX`Dt@m`EAyRAr(o &0HDfn'1 r'"yz9@;rG#wܑ;rǟPnxx(ɡv饐15ǚ;c1猖̎4kq/FE  cvM1Uܕ1Z8:nЯLp+PMZ5qZIiRAރXƎTGpfG)U^'u{#JVcUø8Z_?tT2ʺg=oF8ֿ<轼SQEU﷽yk:UꯩFQ QzJA+N;(Z~R+l 2;Z39vn=д/.zc7QtЦ?f#qħ)Ϭ:f#q;{bZ[{N2SqOcTӝbTǙ,Ág:ǎ/[p^| Jjx#EQxէ?ܑ;rG#wܑ;1oin?G6*cuyo-2.1.0/data/pics/ithDreck1.xpm.gz0000755000175000017500000000062411101102051014227 00000000000000kPƟ_qi)"F{`zk9X ϟWQnob:xD |v|($ ~hn^'}BB{8F-IhM%nhh(ڞZmSSu&x mm/hq9+! aC0)v2  S 9rcuyo-2.1.0/data/pics/lpGreen.xpm.gz0000644000175000017500000001651411345776166014051 00000000000000`KKlpGreen.xpm]ݯqσ]k$[>( jqo(פ$r8/J98:G3e~̏3_o_?Oӿѝ~>?y/K|>OA7;ݯ~?|ƹOU,0mvljz~H8Ooy姷?ķ?~o.=/oC.o _K奿.-ކ CΑ F{FHo/{";^]dedzN˟:xop:. !#g0#/\Mn׹onl?Pt WPbD0]¼n߻,GSwkퟞ}ޥUaJo+U9f$T;n.ĮzOg~w"-{J~wOmn h_^\G(԰vI8 ԝ$7rѾ7 3P bG0y]8qu:_s+ԅ~o qL;ܖ#ʳ_FoPj^喻uep_2[օ[՝η:]3XחAoX W^KA P..X٦rr."W+.E]Lօ uay;~~W 7梌 ¬l\LXKJׅE>uAz~.a6 {m@ǓJѧrؾl.&oݎ` :it>WJY?V KOtYI&:+'ykkG}P_Ӿ hC1t_o܏>?x.W<}Tۇ4/nDy?17ыy?λq$0 ~+!iQ~}\c$ x"2BGC)/$g C'ّ:=: MY_cA#cJ}S;ؾOJ1(czaI} K2A0@~8@>$WB"w1ca-̫L_+^x}h!j_|b&+O}ow5>Mt?z]_k0tѮBeim`U:xxgM!O%]xʟX{}qڷvNdܜȯ hR_ ~Ƽ6y:a0\SЅ,?Izgʲ_GλEz(W:jzރ{D~ |> qzcD2>ŢYlg:KrI*tNR^}0w0/`.yUsiO_tO98f]`~Y}<J,PM"g~Y}miQzO4{l" ڲn3]]53_gfDv* M˰|g*m ~Klb#=wfIT/t܆) TFP cɨY.r,)_/cQ}*/řQT06O#hwX"t#~]xdEGca5üB4;JוHC$ ?ox}h}ي? jFlw]d^d;g;Y2&ȧev`#) ihG5ۑ?[wV]Yȓ'_S- i4}a# !ϯۑ+}t#_j^748QuC+ɽQs+t%f6՝n(@cNt" ,CA@ GۇcIAEmu 42k?hiߌ?dci|%߿3ŤL[r >?(6{L|^l_㜘vJ_{9l? N_`zݍ^)<'R}4b4 g5 g0eȄC\ %$ ?ʌ4xbپxʟ*>by^ 9,-:G ϗr)qg}g<Dltxj?ys )x#L:{\ c@Ht*̽&)A`A+ ua{1?(.)3 "JIC.tAa{q{3a}!C9·c8!@^u dhK|#o#ʆFW(p]_A:̊gwMva׸W/||a )g:#1YO); O?r5vI1'/aE;~tz](/ $$irJv$X_@PccL W_sPLyk"mcxbu~Ro X Xȟm?ls7Kt1f/ /B/p4A>ʿG"{Lrh+U|EoRo7~Kw=II3xF~4,\okO ->cG Ik[dI!ϯ@ :>pN>с *! >\܌]ZȑL' B/xZ3R?:(Y_`V0NGvȸMiLݫ,~&" ߜ&G/<د?X% iXq }¼Ё=K.Ô~0qNŚa!d}n@,7_Hqe iL&ZFe5eM~?˿ e47WD/ lDcR|Gz9b0/^զeCX4f{.B^7`|x">CAm֞ڠZ'`";RP:'j _aio1- p7 '̀X?0t[ֽm];?\B|ɿBW/϶ Wg-B/9~Z/ ?͘~-D0} m /(B_A{M(|XRml#;:o@K|ި_䬃 j |=ou=TlBZƶJ7d嶨yGBC'6 )8~ɏ_h?#/_@MtK}sncQsD~-©9>`E<4>ݤ2'[OR;q8L]_~&7NF[.EžDOQ_03Wv'Ӻ`/BX>/h %X0 ^b:'օ5q07y) #k#Mqiա$_.[ {B{yr@hَD_.,?H蠏2 ;oCݹX :>Ҥ )_A/o/8hK[곘U'ñ5 XV_8͸X  3οeCJ hU]/7qDkF8k_A/W_he_AS So+z#yy+S$1z3&~ZiW_yP5~8SOn?'d!'x mcqu? P<Ć?xڱ hzc;i i 렚pD6#R72Ƨ,0I5~t)C R s" Re]`|Iji](uR gDG|r1 賧˱{m@urօ5u3B Kq42v cA#Һ6D.(se]k |ymdlɕ?WQlKaqny4ّ(Ź<̎  "%&;Pm?m9EMH>?!JF<7<¿#}}};xWHsҖ`HH TWE;~'\8~@zek) &?:RHy*_ ](6 ɚ1~[ 's83 ~YS |?h e C`yDl4ؽy'lV7{޿=/h?Юw.|?@G;+RIwnvӾ?@x$;O?X.;Bh dm B̯۩SYno*z,>~@ ~)OJ3?|W)Ar5hίG? }h|(U3@Бϩ|.%d~-McZ˳4uD"KN@ILz~W^W\荓C.rw z#tZ6+/흫k,y] ٯS:6{"?09f t {$@Vaޅ GeHV;"YhEˢ7 y:!R*K|= !"3~hO\6/ztKV>a? t63峗so(yTua!Oa?-1Oޫ)1霱a |"þ2x}M]\:o-|8 Wg]67[&?3nmT&N$9"p"fN`x{Ģ Y1EO벾fNz켢)Euhdrŵ 1UA͏j Eit Q(i4[ 9xvOG)*ʎ<^52N|D4}$]/^=w&y<-l'5!ہJB zU`ߓ#9YwUjtEw__?/ ȆQq<;Gm8OKC^5v>22JLy$ #iLE:l.Zoڛ$^c Pl YO mt?,BB~qGw|[+ʢY̖( {֏/1p$\gp }>tm&z|c zy>@xBϐ 8 L~m?91IsadX kA1їRJWT?=? u9P˄w;yzOi{?-%zg}xΝ^|KTn~Nҷ6ԯ&E<!qڦ7d߿UoNqk5X7הOl_?m kJ)舌R`Lt @Oz liZY Vn~(0!M&;BBZ̈?OLRNٶN Ht-r\`U eBxBfzqX ( pv~>U:5~ݍ*~6A٧qL*' ².y ֢ɟ訹smb h' K[3DׅY?!pZ&*Y*3}(M>b󭺉\}@cr=aƑl\BG:q:Њ?x{nvŎO %TWڑ#F;u:(nLK}|"6z{M]ǡ@ 2/դ ,<؀?NQjg Sze/\ʟPGR}ySY |$]>/I} -o o i/W]P=r<~pa&%cuyo-2.1.0/data/pics/mihLoch.xpm0000644000175000017500000000372211653610753013405 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 32 3 1", " c None", ". c #5f1f0f", "# c #000000", " ", " ", " ", " ", " ", " ", " ", " # # ", " ######## # ", " ####....#..#### ", " ## ##...#....#....#.## ## ", " #.....#....#....#...## ", " #.#.....#....#..#....#.# ", " #.#.....#....#..#...#...# ", " #..#....#...#...#...#...## ", " ###..#....#...#..#....#..# ", " #.#...#....#..#...#...# ", " #....#...#...#...#..# ", " ####..#...#....#...## ## ", " # ###...#....#.## # ", " ########## ", " # # ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mdEisen02.xpm.gz0000644000175000017500000001143412412223254014154 00000000000000oF* 7 l FE0 f\n۴r6m޶.#[l>=猄qb //2M cI3Hvj6m4۟uvF%N''vXO?FM^S?"00ۤG~by >lo1{BNJ=욶.6 [{ǘmβ;QE,}ʺ#F+uY(뉀5aOƘ5(eGUL zl4$6!EÅ_o:.m:ǔzG]YF=2t:+Cƨ(FY/ ᐂ,0xA7sRv8<hlO#ʎz.WDYF';Ƭ^_bv3֣Oi`cF%OA/cF;w"<(1%e:z`,s*j$zJJ+Ƃ%C:V1jo(ۋ<ou+&1wȗBG;xcrT;h+:EG*'(kA;wa+F7xU?및ezP2u_u3O7J(W]Tѿ0;X *wuV&d@'eŨ[FhHaB̂qܣ~53rEWVEfW hxx$kH7 C9iaAYoE-~0tEKBv$;[Փ~DpIF2vA[{Θbe및܈ZС1ґ*,DcLc0 eGΆκnc s?nX}Wk޼[dXVdXЄ$ie_RR,mᾥq*`LSD*I=ϲL a_0乙-nL.߈ͻ;2M|5s۴͓‡7eC@gц%#m/=>乾f)MjF3ƀd1Km8P%kLІr&Z!#H\A4)c f *wӍA>aqAކ\4FCnC&.k-: sVb(m>9 b!`Rj vaNpS[ 4.Dbr>bqwًӳww x_7IF~}}M_u?˭'!>=O? 4BQ~BiV@xECw7opUQPl-7}l4q6[Fnz̴h6UQ>v8/ꭄOO7EZ |Pu b28@Oǡư :) Fi0ZEXDMt1T7D@W~'NaG6Ƅ7q^Y/۩T?8VyWA_`ypAFSCjKKrM)рN0 Q c)a/SRaqu C 0Tdž^  уAaP^?e 04n<냃5ĸԬah5102L?0j$ײZ`~ HuZ6xe**m{` VOJo8/ FMC^v um8w3`0[06ٲ0!ĭ3ŃA16LkΒOÀYks0#VqQkH7xy滆qHK Tm,o?`0dXi͇X1 KSW֎tL# f02P"}a7a>`&, Wa!#b30 jRo8|0`4A՞k蓙W+}bpLnD/瀡v++2*M(Zf!P,$)d]f0Y~~q3TﮰGq`3eTl+9FqEn˶䃡+J@o + .39_ \W a 6i= A?vqlƦo |,7"vKCO?)N o~ŌAa'I CRŖkJs5$C$g`H.bp[F!NQ9OC* 6$c۶JeIJ ѐ$X4͝Я3e >T2# [[ 6Tae?ڰnid-.Բm+wuj6 k e Gmy&1er`+ F6t5S'I+ bUJsNUVjAyV$e_&S$38}2Nmn; :O7Ï Gr5!fyLQ& d'FB>3 IőOWëG.U *Vo^& d+Kp$LB4C_I87r(o2A$Dg C10 8=# NW)yB;DZI '+ӵH{q]u0> ! qW )Zu/Ɵ ?5)v@+ox C^>8a,8쎱y\8 /U]{XRbfT>_JNz_>27Ն3v܁! <%~&t?u,ǜPk LxW_'r"/.B-|`2|\SI -z s;κrܤo@ 0 A^*ybzR򧃥KzkIo,}lihmO/3X|qe#ߕ2wbY#{+ܰ*foX\A1zŔEm,d,46]_u- fd/!^/0֌]nT[ngez.zF}o{cu5f@%@ qY'cahcE>}(ybodϢߤ5 4=v+32 #l!Nסw^PgqԳ Su]`GіQAt907~qX 1Vqͯb;Xe}(Y&?Q/l/ɶdw˺bKΌ-=i,4 w~1x7/d4S/B+,Ęa#Qk<|,K,MTo`lSpoXo!{oS͌H,P賞TدFA+zMֵzbY̶ɾXwx,I&D{z7 `$qp-[ g"kZ{gB{5CPP(4or0B=6rt:uNY19 ^zC\״5~0q.2ŢtCj15"۹B9k2/0ڸO$M# aNID֤i,QD]l!m%S \Il2TK] sV LwQ|E\ /*{B1D~<弩QAܣ8M5\Si4'ziSVTq' Pڂ7s5__+▀8?g>qEiT<0pta j搴@qf -0B}c| X>}J*@@t;R;k`Tbi*%ʠo|?' XZZ(p~לΛ E s#v(*-C1WHa}i-A`%wY@:r[}z/AXv0ӆO{D*h܃xχ`/Un!}GJe/ڸ:j.j|6?~=}u] Z1 ha|A=:Qө = a䚬QW9NGedQޗIU D%DqOcMwN $ɱͷ%mKWC(|rIYز-g6 )w'ǡlu‹tͫ=TȠmQ?]0S|i^|_?` l'GE[iG8RQpɈrN(A,OTy⦪Gno!YQ1&G|_.ma8S?D'Ň2/)_eNuM $1xfOʸ ۷|].;#7o!IwɏD Mw4wDbsWN<ϳ7GG]܏|ܽ!\ ɋz>Ӌ~ن\NK{-|7e+f'fխճdu2.Fq~ԂTӲ,˧'׳A~qSï&OV\V`t4X͟_!2?۽^wj2͟ wgC<~x3⫧{V|kO z<}%A<{ZCr~'duӕ-v-[ n1a S%7cuyo-2.1.0/data/pics/mtr3.xpm.gz0000644000175000017500000000101211653006612013305 00000000000000AK0{?EhnAX2&"촛Qc ]mҼ/ݦԬk3OMr2qf,/|eLKS*ˍYf]b[ۡnYMyӬgiN)ql4 jQ5 f" bPPE6H"RD $<3[GKUƏu+URe ,x70jo\\sUO*24JOP jQ!dpJDH4(%*$1FB r3h)쐑pm~Ol?g'0|1D# yp=Ts6~)%pQ#xTH0h<=+13 0QxY^5{m+0:o@KdZ Ip! zb@]]440A[S \kv_Vʿo]lcuyo-2.1.0/data/pics/bpPinguC.xpm.gz0000644000175000017500000000151010361232217014127 00000000000000`CbpPinguC.xpmkAǟ_d祝i*R)}D} wٽ]B >̏%9?s޺χۭ~ۻ/֟~ѽqfKw.gsl}鮩vl6tM7atUe7iuGOW47U }8Ad, ^4&^Z,0@eAYVG&O1!Rqs/D\j`I(,&$w[RA C+48!Ʌ"NiH<ɔ6>BZ!x-v| ΠW րk%^4i%԰/FV|CCa;14:G1L6(;x|7ɲaz=51x?d?k m8j j{q]-rSqD5Q8˃3Ф5̟nwpҰ%<%7 c# 0,Wj@U7Kr!'krԏϙ9X>73s1{bbWs1?!*̐F;V+uS#N2@'x H&<ǘ:Cu9ДuԠ1E19*Peiv]͖4/gPJAcIF*p/ECh+ g^ qF+1/0qdIãhzE!cuyo-2.1.0/data/pics/ilElefant.xpm.gz0000644000175000017500000000312507550521113014331 00000000000000m=ilElefant.xpm[E_yۖI B{˛ "1>wgVUs9gBNr\KOU+߹'ܽuw߾{_~v_/.>v{zť}7w~dO?/_O?_~jy~~իϮyxdh-Gf=ɷ80 " P}!ٙ?Aq1o;q-?-CXs"o2ă}|3A ׃>kI0wv"{eÌI)R]M8(D`(Ha @ CY?ɫ, IŊ!!9ZA>C i^ %h"|rBdh" 鮆ޱrf*-;1y BF (uA& uDP@&Z $ V j;W)2D+L^@/qm* 4.Nǀ6G0{!T~`8KJ~D}n\}Sz P @ # =A;AL0t{(5o(ƠTkK:V2dj e Z"gGTK304e Z|ZN+«=:H]ZL/$ Ad*10270BRRR%9Oj SvC֚l?Ӳmv$)"3^N5( ,EB 'PkoaѿC#F1-|3qb8E!+vlO65=N۷0Xy`j/yLߋ0+݉:]T{zʑ$t&}9 )PY׆8rs,-y" ϹAIS1<K-1(i-~o Ҋ`Jyn)1ԆFf0TFUc5C+ͥoa=I$ >[L8 v-V*zePqsj \YYʼnKmZV^FҘ/b cP6cgz½`V8ZaZ nS)>8BNhe 81`dvC֕Oe*CiO}20BPສ3X`#w!hq&?~gVgfɴfr%B>SV0B1WQU@8Wy)RD*~q/F dHTj4?({,NgIS9`*LiIE[::I:rtEb+bXH Ua"ebCJ$f |,v/mTFL =/{1K 1`. %JZ}~C"]☄+,! 0'));9D)Xtb)I4v~(Y`F ,YGۗâB4܀q01=F~z~GrcIP{؏m6,&'n2~\ a:f ˶|>#|.ٻ٪L&aT)Cy4> wE p ͦ̐; ϐgC>3lؿNv8M^ gs!Lq™('9@D|*[i'B9m6)qO;F nbclv*Xql_v;3"=Gn/)pCV<}U f͔JTK\uHiԖ3K1ǐՁGD;^gdBeW'j.fв; C8mHu Gk`ak ΐ6A sN4n&9`i4?H9) C0F>kς_|\ʀX,؃;! %l3:/o ^Ј _D/S0ܝɠfpZVnJ4'rC7D}! UW0{1N` ߛvF`.7o+fquC-Չ`uuLcΘې|90x;PUUVwUc 07Nc뙯WMnuwaV#TeO5bm 8.W yFi, 2C {s| ɪ !ȶ1C" :B lC0e=dz!f#7Ǥ sL & ǔ˖A )" XCj?hKhmq:| aH`1 < +{l| g v9SMzVL6@CmVs .V*mJ wtA/uA}5o,Uk $NɺZ2Xզޗɠ Pk%(|w+SEcuyo-2.1.0/data/pics/mdGold01.xpm.gz0000644000175000017500000000207212412223261013771 00000000000000kSI+P1\2==` rTTDn* D~O֮U~9]Jt993ƚ7;?ѿܻ#庱ݍ/TTI@C{,X~btB}lh$ Dw'Y5;f=g.oD{Y]8BpyS:PjA{'%мG+`jf\9$Xhwsj`n@n\^EV3.TN%|r4@ WKTP]e'o)oR`G0 Pp~σ؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁؁soc_|_1*<&_۱2>߿94zL m2 ~wµ0cnbLqdj_m#0XlmmYtBݩhruajPW׶ԭF }{J_oVUUWW}#2;cuaw& Z{룫ѝ:}KQe-c.WAUvuxjZ;\ʓ=wb;mqΗ?xw՟p,Ͻ+S?/;獇єSLƓ)JwD,!V-op N-78^4Siκ&1cj_ 1=f-LEZTئ4BVźa)&IJ=#0h)L Y[ /05 =DjY6 TwL5t-J3ꖩI.Se$,]*s USRTڕNռP#2Xt:kR VE惘iye)9Z,RkSjb )*ye]P\U!g++R8ls{Jn hq+ @M)͹EtdO)¥]rGg/U=|E>yuM\U| ~?)CJA~@>.1&ӮO'DVFv| 3 FbX0'Jwg|&R}x?>NNNz=eiHթ>F/5#DѫHx+APx7 7jC op fW)_9/dTf> oe`DN,1mT`i:~ˆIlyb#cH5U'TNNO78O0H7THţWȈӁPZNi=3*Hov%@vWkz@N}8U{Svyy9M/S7NiEYs鴔֌ucџ0sԆR%~.jN"]pLH`\_OhRB.1c4[-(F7ټb >.$/7bzh6єD&kP0;GN$F{ c"Hp("zĸ^OS}TX#Niulm;bp13ύ <.F1Dj/ -{̲;W8w Pq2U\]O__(aq[b2uxNPA`rv*IOl/_#T$8@4: ֢${4U!0H9(:s\&pdyy|zh:NC<@'`I 壥֪g2ɀHBul;Dmf _kgP@9`-|X r ˻*r? ׏`0bC3$'9 sW 9``t<ΤIJ"F2y/u.F`0{z[ &bxȸ6jE ޲a8ۊt> 5Ikx50/kT*yC1IٳWu;: *fq.*<"5dd㙯׌0(> c m@H`p"H4GB}C  1OJ)I5>:38PGcXJ< B׈>yVmsu( =Ϋ)T[Q"ΉP[zj1M h/"ѽBhv Fa3 A0gT0r 2%99Q2 j<#hxX# jl[s4:MJzLՈBYJYUB`gLe"LM}SZN.Y-r< 5 j)"1ld-@OWsPGq^XŢum[1FG}U!$?Shŕ,J2(JXՕVRbf֞+Di mU\nQF69կxofsT؟ RW ҃PJqJ?]&RI2j/ B B7(9gqk+ڱ}޿1V,8*㿈O'd|2_]?Y*cuyo-2.1.0/data/pics/mdEgoR08.xpm.gz0000644000175000017500000000400512412223251013744 00000000000000mWFWlR`ׯ62& #!j[8X5cЊ=G|fV3Kedf~>yHv|#HeE,xIȀM>_ϯ:uSԹiY6mul.wQ2&e.ͺն\Ҫ·͎沂Qժ˟0JiK*aԶ&.`FߢvPv@vS错Si2)1j1?`TgIv[dG0Cfd Rm7X["U#U岉JM j Xl'Q wlЎjSui!)$r bGMX&RMdF0c-%c6CEԮ1슨14Jhc#ݰq]7&%Y(JF:-hVjT'7imup1Za2J(aTg"GvKxu-:nX'\\cNEQ֘.)!$kϘ Vꋈ3& Tj=Y52p"HC7(Mo 2Cل=a#MY3օ FQ2[X9J(ׅ"s [DdD.̪ػ~)2*:4[E6Au :Z\S1CDW(;.OQX[Soٱq:*Ry 9Cΐ3 9Cΐ3 9Cΐ3 uG|E3N]``lFaJǁl\߈ῄAQ 68e:n (^22)Vmq(P4oMgjSڲb5U'}ҿ^>)C\P RΠjj. Sn6˻l?-#O (@QdmPz ch7uUm7pa9q!<>7w2xCKp8|mXhY.h?_ykЖqUs>'|{Y~{U#.x28y.PY7y 7'[-{-n >(k@ $q; Tu-J,`:SFT|hTv.SU% RL#EV p :^H4 { 2sѓ;:X 1 C)d>m>A~ť*2h:ZnKTO a-xMC >ڇm % =wnRI;PI)6 10ep.XPniKwn¦T`^r]uz 2k+=ahp7}H.XBceF,$c-Szž13a˯gosOrpD*!j$a nz9aDBi8blEmTҳJy)guoȢsHnX7 E**#$~z_}3> NJ%YƻHF㱌|ۜ*^j_Qդѿx<1Ew&䇳/3HzP9#s 5[76vK'sF],~,anX㔯0,s۝Wq6$ wǖq%^̌_gogXfr+˳Sǰ9Cΐ3 9Cΐ3 9Cΐ3 9a}%7cuyo-2.1.0/data/pics/bxKlotz160.xpm.gz0000644000175000017500000000712410361553650014322 00000000000000b=bxKlotz160.xpm͝}W杻YI@e r( X6(uwfO&o$d‘]޶20ͤʼ/176|RWQ] Õˤǜ{Qs/sx<=gGEJ"'?|\#~"cW(Y>]\Q֞\*=7x lvHw-dakY>P M`7W|)Zʖx`.RN"M##aW'-C|+Nv,qC!G"[9?Ώ+b7_XW&-;ry Gw H,,o@\3Oq0hkF=wu9H+}903Q+3*O$)ׯ_lĎoKL7/S=jE GVR|cg Q9Z],.#HFw#mqZ21z6T5$E\]!34J 9c,OEݮU QW~tG>jD$Jb8 bଅ,jqF0=ځ'cyjjd\>cmK- t ~6ZI&=iCxfh&jI(pvnԎFxRGLfR֑TGS4)C5mrV?(pzqd+NhFһ)g[tpWshwvpx PD72~97!ޟZB+Mtum Ckfi5B ,: &6Ə먃zZhmuxDKOݭ ij#nd:z1^A ~kyز"n'֞_5;?G#."8+/>?kʸ|%0^bYmQg<󷪙sinnc{y 3rn%w_: L2hˮ.PO%?_q.`4'sՕ`::FcdloJ1޵ۂxX).t?4' )n||0 . e1z#/EǩN#3'ձu:zɛ8w]f}? ~:f8I>[,hz&c1cqw ʝ9ևe>r&}Cx8aE?nՃnٖ1e13X7|̘斕VL\ozHOl6Sgfx( #ȝ]me33n'ַ #[2]WƜlmu2)tnMu2BMEN#+1&;k[>fv"m~|똰Hu||(ګZޮ0H#}9itLAfNǪ/ڞ 4:ڬ"w-ZɾP/=һ#q`Tu҈ca!B'FXܹX7 zY' wkL!;c {ۓezwtMu{TOk]nΘ%d|˺3TG[öfu\P:ʍyܭ`:=MOPFQJg>&U|©u ~ެǥ,~~ͭ1r7.,lmtftf06xW} f516"~]u#k-Nb6qhmI۳ERCt\/auq*ʒ"^"@36J蟑OPDt]-V׾J5"122~_*6\C3|qf$I\u]lbv^f~CѭlVDs*$8o>ٸMH\vH?:28:l?#isN7KCP3|׆}M&dG:ѭ ׂP5-T!k:'gFa!5k fMgp?=ԈCBZuT~i 'j a cC:J#{$*z^佺yH(jq +ރUG5w2"n EcLVfRC{gZ7#QQj6B>bl'c#qe̬0X]3Xq|xAT6.V:goizt.zݲ1J'|v!Fyic[ {7ɤFf0LS (Z4wTkEQ(k1hS+惑譣Qܾe?{|:Lkcuyo-2.1.0/data/pics/mtGreenLeft.xpm.gz0000644000175000017500000000436412401656725014661 00000000000000\kwί0ЂRbng4rBHChD(4<}PE+r׽ ,?{ifft0K[Kd勉ysfS::ҕ4:Yĝޕt:O:WQ^*A;iQn]GKE;=^2[@ӄGҪ@{q꫺hPŤ$lcow;MC+E5ZUO",h4Ak~Ed%^y<!wH0cL0ͱFv 50) 4`<)m@]\js!sx˘B6ĺj*䯐ZW6?PZUDi3U\3II`=,vlj`%]kCk.doQڿ8c \ZlÜ(I̔ _ PltݗPmpvK*N\ͫzօ1/(pn]A/7#c|-j)5=إCdaJ|Ć>[}vLpZO\ {ꭝ(zaj8T2Gh٢j; 6ʥ2/N(]G<(x Ŕ(Y/La[w~XRTZoX扇h?P{O}8j05ozwQ(E{. YcǕգ$CҸUnirm ރ^l#CD…0SLz(]DLO'%RbQЅD|"D SA|. NY2[4c1鵣Ⴟ  ȤZL< 8|Dv/ŢIOP]A& BC)b};x(-"x(-"x(-"x(-"x(-"x(-Kvҥcuyo-2.1.0/data/pics/mjZeug3.xpm.gz0000644000175000017500000000243311043161242013746 00000000000000KG )<`Bh9,!>d otT,.RWꡞw[{q/???wzs|u_/7DǟO7oN'ѱm|i` 9O5 -;ѥ+ l[HdB8kV2`o A,1"˪y |\k~7+'cF{gh NF|o+>dDΛ#}i:p49wE!]I tѴdC «nfLJcDw **KDdB3wSz>yI@!pazF@33jdgTeC2vPRpØc0GN6#e-e ō4~W.Ba ^t5\c805C+-^ڔ ;e4!C ](`Mpn@)7aJ 0c v BE94:"#0\(5;"`%2u32(c=2xa)epd CG9hO1v&u'{;[*C0}>.X|+f db8Mq08BZ6GF[`$~dVʀ^z$2|ޒ+Kۆk`h-bq@FYl (ukNGj =>S7Ԃ'xѲ!  fGV0!bw#a6_6uNECj(j8bHClII"ú!LS.0$`*DEty (|pxLfƈ h㾱wK a*cLGVg$EF]&8'M<,@J Sf!4LjbYYHo,RjoFao"C!"V]2,_k]<#u$LȜ.Xj;kֹ8N1"Gqw7 4peF>pY+8ƌLUCĔ0hOɏ#_ j!Rs盨.#⶘4V2OgUݏ-Z>2=92~7 Ujo|;>cuyo-2.1.0/data/pics/ithGruenR.xpm.gz0000755000175000017500000000106711101102052014323 00000000000000]K0ݯ8.V9͉C;KADdz A$L֢ t6O=GL϶tvzLjy3rym?F`st~ANiwJ3v7;]XõIph0=EQ9|ԧ8J2ƍXul\Ifa:8Y64б9-gXuI.waGpCme+etvWsk4cL/r͏(ZfSJ9t;lTA,C q RJ)hn&͞W@aw|Mf&ףݛtxy{v{u/~狯gW/N}Sz~O^t|lu7uYWB]uΠ {YσIsߨػ}Ƒri=Թ畯[%g L v_ 5Y`ouOjYmtp $2N41tEK.e C1:fopW1ǰE dʩG!MPg C+E>1:QZlc*li7+÷.<<0ltqa5nT#XϪjɅbTM؞J A 2(tO6ftM|$ dyMtwCbc{rQpbb6u3+8,MS`l߄r*/Ǜ0Zf5Iޔrhqi!ѧo[da 3r1͕̠8!L>mu5ι"{0t,?qgTC\@Ë=BfG$PBWGaf\"AViM. Hb= pD@ 0 f 3 Y5b+ C jb2nl%VB~D=Gũ bh a| 40tt #AqC@9LZQSG"P%"mFmG(me bCE@{I/Gƽ(v4A&?BGPmO so@[QCy4 z (W@s_b{k/eT*G>fr4J/Mz)$54 <Ѷua4rp~joNwA ? ; h'n{mcFQGغSo'uj~EwN^xᠢoEE3m iGGOB uA"yP!B]uA"yP!B]uA"yP!B]k./, |-8Pasf*\רݻk +P 4˲R)Tf5c|X*㜍f=4feƤddc:s0+'بvʔ>9JXLƻ5Œ~*J׃Fxࡌ7A%,Ӓ13vkLË6Zp1x;k#tsXf'̹MPBR8% bC[PB齶xH-̘DMʌoFOl Q ^*`C+UR\AM{ЕY'⒪eʚatwudMv!VK^*J6t"3Ywh(H|_ػ%8F>dNlnR? Q5JCCccZ#>˸'5nx.˼z!7M흕$m8#' lQ7#5gkعWS25c%66;:e FN$5L J~dgHǬnhX\*+rɅ_¶j/cɾ~ROU5d~YlB}R2Gee2dj]lHX}N/s{~h2ޯYv)+Hj.y+-lFtlzX9)z>M!(hypP 4-FTΪNdv8L?np(CȪ%W%rZd\$.kŝa0>BZTr#8K2cƟAnb^2C_?R+81AMCT]_yraնq DzJ {HyTT/e#2z{K9݁77%4@|O!oEY)6-[g^Yϸˍ|R: $6/7 rN'VDN?{'O[R&0"ט~YpsLOVJfB 5?d-Wܨ_8SM9x:yJ:!mۇ:bƇ䡫ju@`*7v^3y`N(Xs{!ۗ?Е'*c3;7!…0=llvێv ͚|4E$P]FFhBu~6oF@s*lp66PPQ`qYcumDGOɡ /y#[m96^a8B솪k,yoA [Z$|6tCCџպ WMSx T&PhWK '-Y?_s;qe5{}50`ě!Ţl'JELt*`$NWWTo:,&>?Uc*7jDyϪ۵d= , }V#ʋIqguZ6x eOGSDAWd~y R^Xn;MMj8Z?M4P2Uc-Sb8.\b("5폻,Jz̃Pv ӯQ>KnK*oSQAQ6eLA>y*ՖEYf:F#6!./?vB򣟍!rNz6So+&I*3see=)lJxwޝݩٿߒ6LvxLj߷Atp'ZTF{娼vH X8̱ܿqn,;CeT;GYwesnF'}k닙N/"E]WV.W &<4 eO>sg&^#U ?{~GOtL͹?ևp<)s"WȼL";{[֧?;>mms%Ne˻oNDO_$щXd]w?iP9?"gc?#pRl' j+' cuyo-2.1.0/data/pics/mbmSprites.xpm0000644000175000017500000001624211672457346014160 00000000000000/* XPM */ /* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 64 8 1", " c None", "# c #ffffff", "% c #dfdfdf", "* c #bfbfbf", "+ c #ff7f7f", "- c #7fbfff", "/ c #777777", ". c #000000", " + + ", " +++ +++ ", " +++ +++ ", " + +++ #%* ", " + + #%* ", " % #%* ", " #%* #%* ", " ##%** #%* ", " ##-** %#%*% ", " ##---** %%#%*%% ", " ##---** + + %%#%*%% ", " ##---** +++ +++ %% %% ", " ##-----** +++ +++ % % ", " + ##-----** + +++ +++ ", " + ##%---%** + + + ", " #%* ##%%%%%** #%* ", " #%* ##%%%%%** #%* +++ +++++ ", " #%* ##%%%%%** #%* + + ++ ++ ", " ##%** ##%%%%%** ##%** + + + + ", " ##%** ##%%%%%** ##%** + + + +++ + ", " ##%** %##%%%%%**% ##%** + + + + + + ", " ##%** %%##%%%%%**%% ##%** + + + + + + ", " ##%** %%%##%%%%%**%%% ##%** +++ + + + + + ", " ##%** %%%%##%%%%%**%%%% ##%** + + + + + + ", " ##%**%%%%%##%%%%%**%%%%%##%** + + + + + ", " ##%**%%%%%##%%%%%**%%%%%##%** +++ +++ + + + + ", " ##%**%%%% ##%%%%%** %%%%##%** + + + + + + + + ", " ##%**%% #%%%%%* %%##%** + + + + + +++ + ", " ##%** #%%%* ##%** + + + + + + ", " ##%** ##%** + + + + ++ ++ ", " #%* #%* + + + + +++++ ", " +++ +++ ", " . ", " .+. . ", " .%. .+. .......... .......... .......... .......... ", " .#-*. .+++. .##########. .##########. .##########. .##########. ", " .#---*. .+++. ./.########.#. ./.########.#. .#.########./. ./.########.#.", " . .#---*. . .#%*. .//........##. .//........##. .##........//. .//........##.", ".+. .#%%%*. .+. .#%*. .//. .##. .//. .##. .##. .//. .//. .##.", ".%. .#%%%*. .%. .#%*. .//. .##. .//. .##. .##. .//. .//. .##.", "#%*..#%%%*..#%*. .#%*. ./..........#. ./..........#. .#........../. ./..........#.", "#%*.%#%%%*%.#%*. .#%*. .##########. .##########. .##########. .//////////. ", "#%*%%#%%%*%%#%*. .%#%*%. .#.########./. ./.########.#. .#.########.#. ././///////.#.", "#%*%%#%%%*%%#%*. .%%#%*%%. .##........//. .//........##. .##........##. .//........##.", "#%*%.#%%%*.%#%*. .%%#%*%%. .##. .//. .//. .##. .##. .##. .//. .##.", "#%*. .#%*. .#%*. .%%.....%%. .##........//. .//........##. .##........##. .//........##.", ".%. ... .%. .%. .%. .#.########./. ./.########.#. .#.########.#. ././///////.#.", " . . . . .##########. .##########. .##########. .//////////. ", " ", " ", " .......... .......... .......... .......... .......... .......... ", " .##########. .//////////. .//////////. .##########. .##########. .##########. ", " .#.########.#. ././///////.#. .#.////////.#. .#.########./. .#.########.#. .#.########.#.", " .##........##. .//........##. .##........##. .##........//. .##........##. .##........##.", " .##. .##. .//. .##. .##. .##. .##. .//. .##. .##. .##. .##.", " .##. .##. .//. .##. .##. .##. .##. .//. .##. .##. .##. .##.", " .#. .#. ./..........#. .#..........#. .#........../. .#..........#. .#..........#.", " ............ .//////////. .##########. .##########. .##########. .##########. ", " .#..........#. ././///////.#. ./.########.#. ./.########.#. .#.########.#. ./.########.#.", " .##. .##. .//........##. .//........##. .//........##. .##........##. .//........##.", " .##. .##. .//. .##. .//. .##. .//. .##. .##. .##. .//. .##.", " .##........##. .//........##. .//........##. .//........##. .##........##. .//........##.", " .#.########.#. ././///////.#. ././///////.#. ./.########.#. .#.########.#. ./.########.#.", " .##########. .//////////. .//////////. .##########. .##########. .##########. "}; cuyo-2.1.0/data/pics/ivFeuer4.xpm.gz0000644000175000017500000000426107550521116014124 00000000000000<ivFeuer4.xpm[ۊ$E}v"&%vWY!7GADa}º qȬb.U3ݕ'ODF~q ܽ_̗I./I.7 \K?`:C0BDJ;0zPh(&Cb"gm DBG5fFosI φl2 Â@ dry옴x@Ցq(it&ƁBǁ@x @y@ j !$/H  z0 q]Bbf^!jP.iPB́V8>q1,#P!g (4Rl sp rDI^˟Rǃ;󆙶T- Iw 1u"<,L0P3s5<]L!MSw:e?tzI |Yd!@g:͸j'-Eo(<[Xӯ1rO2!9$C@\Lbh P .PPo| /"_x\& x KJ-y('laj$ާRԓa %θ?XbLU( aɗ˂ꩨƀX}|d@애fM" 5E(1DI-@m')7.C븰5a&%,8& pCR !r1NEmgIhRsn-7BM3w\H1` -BsMgلp^׷ u|ʱr DPS 5t 6ACX̼wlۭeeϪBr Q2fh];i)'qRGOkaݴ͊$}7%N2T*W\0^d.cF@0'Eǝ놊9$%hPKlbN#{kJ-nCAhA c跅X;~d5Z2f`knxq!QJ:j{E+%PUj(,E UwÒX BEy`V"$6SvfqxbԉmIIK$‰,\B_qb.*4lrٺzQA{J( _Ts'DX;E5ނ MSK:15ን$7R&t|*Ut,q' 0*F2}( ߯x5rsHP/*X.on Sһ\?a6'hX5!h`tR|=\"U%KZTYa B ?8ыAh+E)D.$ `Shȅ;sV@;k!凕ڲ10 ޚ/ 1]q#wdۗD;Y t uTN`\[Xp7AsNZQ[U}N.9SrNCeײ9dL BXU[P-BJ|B+jĊ7 &Q<+ˣj))Q[O-_Ǩ]ۘm#c)Ez=ڏ$լw&֠1wS4Zy@:YyV1tk hX;!jVR[ͨki;zØ71Ft2 d :~0^"x{b[7€p-a쬆Y[<@2 ]ahvx/i=Bu}a@|аvVC,.~/@2u|{hBcuyo-2.1.0/data/pics/blBuchstabe.xpm.gz0000644000175000017500000000570507550521107014655 00000000000000+=blBuchstabe.xpm[3Œ%?vLO7z.!H6d]J%>gg!G/>Je]JeA}?}ӟ>}q/~{/_}~?~|;w9O?K.޽w|x7_t]rrw>>'wiׯ}E]==ݽu'wӇ7[j~1U%__@ ^͵~5R^;T+Wqa[[Q& MVp(#e*"&QaYu[L5 {yVEFrQZ8阅Q"*Eٶ\X>CV3ir(#n"H`ЊJk[Ki(/nXjuqF2Aī\g#V`F" TQH*(FFLmFs0(Mճq7;F\twX#2P(ޏHౌFy#ᆚ15F "`c=f>Wup=3$Ҩ-hɣ?WUd+Շa^l_jڀ̼UO9}20 ,:J0@0F1W0)WѤzTՎeC]܏M (3\A9FK?3X\6GtYR"?N?a c7Z:iFaymT9Gڄbh"*6ph#>Q;\])mB@raH:܏]hBB<0BK&Lg sqe]ʈ=.kXlFvVvα ~ZY6)'nBx[:b FCV #!یf'$$1ByS!8npo鞬CM\SUy/å72\ѰN>S@N ؂R6vgU~Ӷ _nƨnƨ~NFgN_<})F{Y6mfi]l[}Q c9#ˮB6qI ;F.Y&rPq-r EPDX&ޞ|(:Z glQtu݄P87kptIiU#+3&S ʞNHQ|Rv^`$48R0Z0Ngt #)H%O!V ng8韄J9ȂGb#!2ʇ%#tqBd( )O qWbdFs"\L5FnYadI \c0)(v/xFdD$1vF#_>4HF3ݣPa ' zY+|EmY.Fύ޸dp FE8U/U9f&uUF.>F!nwh=#_G(Dn_e>mi bd-zX{8UFӶmbM&_}eMFqJ`|Pq}0b!ugx1ƿ(t ŷ̔Q}$ǩʈ-s&Nf Ş_`QwJJ; f* >UJĂYv?ӍQ?ӍQ?ӍQ?1"%^tp,_Hދj/֐=z:]KcpeV0B"d_OI62B1$n#|oGKɐ@JUVr5cA*2Gs$ή1r'U2a#Z/PF!ZooT%#{|u!9/6/EtSŀ}M1~DQpO/6Ms #>R◝KyhϹ=ES XyфU8FjűvRV8c>n*5)& #r\0*,#pjM|tߟguҐW~/122dQT4CKB2EK1=D%D;z- ߼|S%0$eFG&#w- tgz e ^c=}D },֐lG3_Y۴NyVŘuKrBk<+nyo-ZȪj|y#*wȵCb! -xj D̎0Ɖndds6Ykeq,s I2dcVۮ5 GE͆ D B#*N3{cچX Iŧm7#4PFx@rk`F+5G2D%Jю ѐ5@*@9GQ`=Lffkfɘv=("}F[(9$mD.!*h#fsDI3BEFQRrt? 7ehhqFr\c4a~KeMLv%l{J}Hs2Q7FtcO/{z?Koncuyo-2.1.0/data/pics/mtr4.xpm.gz0000644000175000017500000000101311653006612013307 00000000000000AK0{?EhnAX1&"Lxc7It3fMo]yz7n}n۷Y.>3zz~17+˯&f26cs_d1KYc{li1YٝEue]7kgu1ZANu(F(+AEC"adHQ7@oimhN~,eV?oױM0J55l)lHqBsU5UzjC4(Ai' D CRzB)!ѠlB` ) 2J_ao̠AFCN$u~4=>~`CAF/?H~'S]ܗES"[?cOlD hϰ2 k4 nD GS܏{֨#﵍>UR/A N> h3$Q,h1tum}kN7p Z#_g?lcuyo-2.1.0/data/pics/mkaFuenfeckFall.xpm.gz0000644000175000017500000000312012401432161015432 00000000000000Y[0qPDJA+ +n+}zNHqyۤop2M5ﶺguGҤsi]7w ya1 7#3C2 atY bq cP4㽦fiU3b!@8\Æ8A5, @4r Na̲q eKǹڤsj RQE~+ 7yH#8tՙUoe}6ΕiyUVqgg&4X/ >4= +~NםcG)}+5XX =c KyĞUi|v @Q \MNvD`z:aN١q{Q٫x4aWjj&ƠhE 48 bQ|#o^GwO:^Ξ^}~_%K|Rjkn_s _y2)q$}J\B̋xF͑y>~7Zm{9.>ZQKs<7<+bGXj5_lam.vźԼ[ڭ`Uxx!3K*od΢> mkL㹓vX'qYyZuekLÚnbVacQkJׇa߾>B}|w[ߓ<ՒϧR]O<({s zSGSz, ^SQ{ۇ!ԡ͸.BndCUjx&BՒTGp^-bxNn_S)Zk*nWg|EX,0^R)6%h̼_g ڍjqƇԎCՎi{jDH9'*?Ɂ ݈;2݈;2݈;2݈;2݈;9;W3* ;2*O'#>rq* c"=c/K# 38tx8ty8ty8tnx8tVy8tjcybqvwy^;x^;x;&)OɓDN>NɈ8"#YHoe[oˊ"ˊ>+;~Ed%geǬeyˎ"Ɏ5'dDGW-,*>WVGe~,*|STܔx']QqWu5yxI*c?`.ɲ,sGttd :.\5EǺEAƹ&y_$o['q+=xӼt+!/tBZN8 kBŹ.T)KBHrWB]7ߣ Ǐx%"cuyo-2.1.0/data/pics/sbBurgerSB.xpm.gz0000644000175000017500000000545207550521124014435 00000000000000Fok=sbBurgerSB.xpm[mQBn B@!h!iqIE!")N8pW>~u߽|ۛ?}??~m<{'v7/>%4x 4?KWtؼ\b?}jCj~~w{Ŧ_\n^@󜴏/_vSj>6oypFhRs_|"J]f_'b8(2lgMQ?~*eZ1t:U :RDD9F?U@zeHytY O% e6@{'gP NCSq1m ~).b'j#䯒:F 無eCapr`!0l0m(I1T16Z6!Aد`ܷn _T~TLfAy6 g ñO~F O@M1,7 m"iH,>T(z!I{Z@( rػf8(>Yrb!|"`Kv1/k?Q>9ŏNCi =]Џy}h1,ga sHIBDfy7CBm̈PG?+U lj9cX֏_?ppPe{. 7rzC@s\>/9qDZTNM㟈 i쇥MIo#AZ[?>ù(ǘOE~㰨~LcHkL},_ 1ާTUK.E_0ziT1dk1xk~cd,"m$<J71E쥓06ULOz=ASA'ɫq.ap6TR~ܺA%kڤɬB3ܞ,sP \͛zΗ/ ¬b ~FُqBwŚT5\{V=VUdžǁ6R(Fy.xvl8 oRƃ𺵱ڔhP,]J:cOnaqrT\=AH77*aNs&1ّ0:!VS((o$kj"~"6%fHN (J"hcAWpZ8CVY1N&FZA^9M׬_51,~眘k^b XfJP3r^YkuwIӒ\Y꺐OJmNOTa3&SxBMa9 Z^+ )_Gd5DHN7Dp$@ AjÔS8'" n"z F ?A{s"kiRC/4tsW!0!sZ iygFnYE<[Eu-îϷUMĭP ! 5˨)ʈzQN(W@1/HiwXx#Ƙ$\e!\Wy~Ƒ\Y+:tW{H3qU~:mЎ1Z͹Ƒ61D1[; \oH,UAἻ5́clCfBa8ڷT4p Y"!Izg7Ph 5*̵ɣ,73P#\s깐F ?| 00V<# pZÐ_a4p{z-Rci5!/C41gƳe xS8ǭ'P@019o#zyb=@"+ $>gD G]T_UJubN7,b@4~6H87nNc*B5b~B4ϖ] ij\PԉZhRASf8X hhZ*[а/@Q͸a@[-<+Sb0f;3ؑ鼣YWW5W6X+c*n65J<"}KWTܼU%TAGUg%7YCp+h`'陎ju,UGuѵt6㽲wZ7Чe`?+ϳUוMN 0\D[xINOmZN2nX9@ Eù"d!OfSL4e&?*xssbvUpտr*<+?8x# 1c!/W s@]yfXxC1\ktTy[4Z)p;*{OLl̲>?ڿD3l%|.+,S.C!^?hf8Xma`:k`qdgFbggmXgyGaa/B83ym룪xR?G\tj&1tQbQjfQHx'L0LXL|Ǻ|/N*OW/K_?u yQ)r0Ln}!\׫ -q]anmزmݾ=yw9گQnrϋ\:)':ek= wUI>Uz7s0%e$ҫ\_Mb(Lb/-Ïfij$|4MUl3X߭Z&6*\,>nPepw`Ja=j]5y8r4zVDsht_`J Yv`e!i$s3IF|;{u"vy3ǞXлa:5*XJc!e/6 Y.Z+==nOŢ,|*!O?az/P%cuyo-2.1.0/data/pics/mdFels00.xpm.gz0000644000175000017500000000715512412223256014007 00000000000000ZkwӸ>Qr%ٱc+EթMԔ.0mahɄK&7&[1:kZĎh߷\<8&W۫㇫˗;{;_';ޯ/p a=AmaBB !Ew^,;]hiƩBna!P] ݦJu(S5|2:`a^ЋaV݃ ;_]Me,@(6oBa[(C ,l6#+؆J: EFv? GZ+CZk!g5s>7WY(q <0jDՑP@o {jCj00ā0aҀ+YBGŖ9 z  ᧖F=Vtgnё>q[iۇ_͜["[SynAt[\X(#)B/"+xeg;^ VZIެE'To,Xiػ۵xg!̵v ;5$;V)CKҺ?-ðYŁQdqrd!(l?anl{/ U:8N-D[3 ;8-8.vXhFxobknu{_ۻpu-Wk];c ⃮B{W 8م^VY9_۳zQN&?~xk?8@R,x:Lf@#~} N.fb6[Q/_/E(Lbqx5~␿<_+c`Xo7qJ\)zjŗ!^;!n7_o&#1oODLR$Fhiz781|<0LFW"I>lB^o:ө0P7(ǷI(C)@M֨7gMjv9*R$:Y/͋xk:x5pQ r\A 5 !R?D''gYŗn7PcHեT\+tt(Dinq`cVs0L)96%K#69pp~%c8u`)7ZX>vTJE:cZD}8R'y% (aEz=bP&UgS(,c8nv0bI$;MW]#x۳I_6 AA Zs7}N4z qPAFm)cy<L*!(jC A+Ep, YU"bI4 hpAG6 C^ b(x9%Cwv"fmd{xXJ ! "D7oHut-QI҆=*!Ίszv=JOų$Ś&B&Ł3T!HV7ffKw>+%}S k(*fѡRMڻ5U[kGP /}kIҴ%k0-;d]pC(b8Bl)GZnVf(ڥw- Z$mHQTxa " 2ܢ_%hPΦIs/>|իa2G8 0GCl&vaBR`%oQPeqx0w8dl]l8`HY d@>c+ 3ǡ-&d˜eL͍Oq+I[205Qڪě2$4q}".aH-_v#4cQbS۶Z .U?4B=(0P+24U8 L36LryH{ص5 NA!Ya$8/׊ͫ2(#XxzB N>%v+qD÷o k-x;9∁[:5Vd1$aT TYXP#ӛ7x@j*>4'Cqv8P,=Cѻ465J . k2b~qڻSZM;!B4{e\xBԪ8*%x',QPY% !6sIy(bH$! :;".&=Kd@ cF16:u;[rlF Y7 e87gH:R ZFE:w琓cTRvs胁*< :A?lpCS('  |QL]%%8 L R~XIŪj[0!8ɦF  Mt5X3=/?5~ BttU? (V e X.D O[Tnb 2ax!G|ɺt PI@>v:^%I$_ʘCۅk]>a 'V:0*COCkqVɆLv +1652L@qCt< =L܍YTGVtA$H09wjq߮dX.g!/S?*%v/V ƈAi|w9.>PޫGj' im_$e|w9$JeP5q+f_d7y #Ȍ2.{95$A|#lQZ!^g$"]a59+p[_ Ղ׀`P*d$`ߝCd ! .sc)a"$PZ' $9a`v󯢀MW')P|U(࡜O4~:'%I.N[p#@xd,'@D26w8.Gcuyo-2.1.0/data/pics/spLabyrinth.xpm.gz0000644000175000017500000000125311662241762014735 000000000000000=spLabyrinth.xpmQo0g)Z)J* BB㳛I-Y%Ic8|2߽zXZO߯~(Rן=~.fϦOV/9vln)tj}Sj}P:U J>yA(TQHkP|RRP:(M(=((YjjJ,5J% KREKK/iēTQ/ 1e>s}!0AWs" e 'V6egU4``` ]8t׉3o8ٿ,p[g=己an$ /rC϶PJ @+C"?x/ r?22 (Q%vQE' ol( c%Ap8R8 )^ѦހN/CoG9(-)P KxV.AJJɦߕP+%=EA epxbѱJIe*JrRD@Jt({ A>R1UF Ւԣ3G)I=jy/\d(iɲBMQ*wyH]WG)S8)ߣ,*< M (U1 ;hJVJtᜡ+=TQ:" ҧLC(©UD\9UWGS $urϦgo)qmx J9MC^uh+(9uHkT{ 5$f9NH @B9&QhJ?A^%HĊ%3~3.;Ja2U FMEVmn4kf0uäj3\_|,kaf aXNl ƽ:FU|FK .u d=tٌ2M]72kbUQэ\7vL5KZGxeڙLF VKCwb15MC*fG:Բ>^$Z*2g3|ǂlg9g3?}@xHU#]\ÍJCX ){rn=~#B!ΡlꞨG.ܝn`&'WG /cMYb{8v@BiލtZ }"2g61ql' Sԋ6D{DBvwR!9zеv'OU 9 ͎xxB`\O%bjhvp/iD+܃їx+"iq{ԙA.SM2%tĊ܄K{$жfP/14ư!e 9i}j*[eVB'b!e&1ʫ\Md`X9]+0̦^%QX!tq#cq=ޚo~M鯖iI$.Z\$ޘyx7&lJp#YolpDj$7Cn];:ۺbm\t3X><:k~EOc?FKet23) :KL*kG{壋3pbZ58-\Q(M3B%)+Hؼ۝-c3n Wڝ ˧2U%,sExUV<$ӹe1)茿m$ŃAWnI'z#[-} UagɎw[FykMhA_p qe⿿x_$dDڪXݓ$Ӝs"i]Xp1o|g\epxuS.n"bwEue:ݲ!:d:zMgy nFȔ|DU`(P1ڄL@ Yg(P} WR 0R0)RTgTE*4h tC.0%EZC0psYok4-(0W 8G@o 0`FVhhaC)pg \%`TѨz/nH@kԮnyqI\&]׉e$-=^"?Ԩ8J2^EN$;DsT5ir7CwVQ4jT9.ӓ8 :YjUf᝭ʨ_5,|qb-d!o:(ݻY%#W>9G֬ӟ[?5{X۱m %̲ 5.TZnH;woK3LR@*؜xYhI` \_w̥,Dymtɒ$sc}YvuN~ulKF9uj;\ɫ䏱W].kÞH{n ;\خ5~ٮRsZ5Zi}G4Kf9'{ף!~^M:!u1M+Ϸְr6{l64voC\+u+''X[)ӲJyfI1WFY0y||ȳX{&4gٴ"=OeY}ty{~ed.guX{~"#U"o,+h̟%F)I񳐦5WM|P )'p=hi#۟ ٛ&p@BwB srDQIK.N:n_NbIW?h. M"[^"ByO4՘'Cfa9?><֨ mu̵a] [1רQB Y+3m6ls5Iӿr2V9wX+Q5pU+Q5~#{z"Hcˈ7kC3jxGWP6|gX.]<1x?2~$Z]&nS]\Ka|>F{T;1LOF=Z9yzGw[j<5.o2c a?j%\|3phXjH>BOI?&8_k#k^qOA+cj49G)Fw4%0cuyo-2.1.0/data/pics/lpWhite.xpm.gz0000644000175000017500000001651711345776166014074 00000000000000`KKlpWhite.xpm][8r~_A`Gd/80$} GA, dI4 Du$vc]"-VU9?;}է/ٝ~>ÿꛓa??L?w~~O?d|o~;߸_}7_}X1/Կ6_! oob oͿ.o%w >?o/} oKx{ZEe}:om}M,p}Tk6_ޗrQTCE_{,A9=}loNw>[ Y~{Yή$ퟟ}ޥUaJo+U9f$T; .ĮzOg~w"-{J~.wxLmn h__\'(԰vI8$ܝ$7q#Ѿ 3P bG0e]8.q5\9֕SJj:;ۿ+t}ZsNH췺r}W~?qne]ܗ%u^u˽N eЛuv4)հz}>?.#V .Bjׅ\]{Һ.L3}'jcRջ\񐞁X-~ xI\Bs".H ֯=6}AhBhx2ިu#:\`u4t}~SРх>^\A GSc̸װoĒ}F@?Ѱl{j}DZcʩ )ІuS4o;.:~/->>ׁWJY?V kOtYI&:+'ykkG}P_Ӿhc1t_#܏}~h]x*Z~G i4^݄~cn~wH`#`h3PC(Q>3U<.HEe$RR^H/;^ّ:=: MY_cA#cJcS;ؾOJ9(SzqI} ױK2Q0@~ﻚ~`}΍tA?D.:@XoGhy#^ǴWh*X<<\߳&CI{7q~/.2TΉ uݘY*t`ϑޘ1@0 \{ ?X7X^Y_ hHoJ7\GM{|t~3?=_?/Gz;NoLBH܇X4ˢ_5@L@gIn#i^Iy+zfݡLم=1ϱ]jBw.Kt)'Ǭ /K٣]?`Cie u^d/KO]-->JM$A[~fBȮC|Aپ`V8LMO1tP,~BN,_j0Ŷ~"Ձ  ua,5S%+=W},JyL8~~d5gX hK~_? ^Bzr!冱yA M< y=}dnKn"@ ,H;|,l|ukNxm<;R鐷;/B,w^_Z_D}*e%D,]W*8NcpNEk ? 2iٴXH bBH7y;G*+4ˁT  WtV\ @,!s6+a-\A=oPgIZ}/Wnۇh'.t 5Ήi'W_dH2~~Y/ڇM F{_pc-_?LL8^ʵXH~h|;O@OA Q*Euk?H4J쾻!?p_[Pv0#`7g 58áj|AO~!z- ODXrazr(1\0#GkG@"#6Ny_e!Xs}j_;౹Ңs| .wfoz{g`S,T(K^o]8O}4qgP..BSqg5I;ZI x82u@au!Na@1WMu  ޛ  R50\NpB/"hH$u G6?"Y?*F \ӹP*G3?=t/<8> oq, S,tdGbBҟRv}#jݓSO_h;ӊvJuԃg3HO캕H7б8>hoEBO 8 `/g~?xob _@^xz);σ.#; ~A .;ŬOl(V>X.{#h"­Qt$N_A ?> E9j ^M_{No+tʞqބ?ES|Z_h=|ODiРWވH}G]o Fe{b^)&f:h,T1Y֞D Z|Ǝ%~A>(x-Bp=_t|!lf(JU }*U7z#CIM|@=c #O@: "څ_:e,̥/<guPa gvʸ,MiL=~&"ߒ&G/<د?%+iXy }¼Ё=K-Ü7 iV Ǜ/ 8t24 {-#ڲډH|:_&_?_2|K+vM`6~)>C#I1^ tjS2v9D"8ĺ7  ! R,O s7ǽٖ!D0>BG<ʿ 6kONmG-0fu] )(+oͿ0w紷 8SROfl̿PV-A^E6E.3?\C|ɿBW/϶ Wg-B/9~Z;/l ?͘~-L0} m o(B_AW{M(|XRml3;:o@k|ި_䬃 j |=ou=TlBZƾJ7d循y3GZBCf6 )8~ɏ_h?#/_@MtK}wncQsD~-`o!NoRrk')uƂ8殯_hj?SÐh륈_@~;W3&wXdZl"ZR_]D KLcQDۺ%r&/_0WAzamDi?.:4 xכ ܱ`a]{P^bE#5 7}x/R,ao~8!;QtGTt7X^|JOciί` {m\YLϪqa%+y!9l/TQoh*ٮ}Rft (A) X @Eig E{ؚaw~W,/ .1V!ok/bّ|Z M=њ ZW_ZnY7W{Ժ5 oH^>~+Im̿ օ|%4B-tԳqo o(0Y= ^wXks\>m@.0o(T6Б/;Yopg`}pܐ /`^MtOi=/oz#c|  ]G*.A7 0'yٱ OX+dօb^W-%Nʠ~Ft_'0>{wpp]|XxiDŽ?B{\q61ú.l pC6/Ɩ:2`]o T(ױm]R]2#$mGӭc:D<².l  iӾ>xN2'Z5ApXʗFP}A,-\k5ζ> 'R+H^߰ؑ+R"_`6:-#Dz#S`lѴہN|hγ-3 ?':# G{eڎ$m $ɎԐ(-NE| @$"sӡb{74i|gh āKzwN+3e .,r1>)W/l?> G Itz|މp <"k څ X\Ay#g:?TB~߄?0`/*c<Tܷy|9(ַ? z%u@ pbw~n?<6>P9[{; u=ϙ<2>}A<ۧ`G -^C[J|ϤNu'l&H3Ͷ}&Aak|ނ \B/H}|c?(vP/X_C@. vo5gyg &,{M94uP?H>W;7i?;?@x$;O?X/Bh dm NB_S57TzLWYl@}< ہ=A|_݃?s$/( -A)n/cnR"&kɅ]Gќ_9O%.? \73aaz#o0¼ h 2.Z?G"uZc;dc.(qۼҡ.!Zqxd9,&Ih^mHVMSYׅ<|ƀѫo)/1霱a gnnFB}aa_v]# gsׅM3.E\uA*_Z}8s|'ɏt=A@brlƢ'uY_2'M~ v^ޢw:419.ڄ*Gڴً"X%]/{JZ=Vp!u?膝y?UJu?pg<9'Ww[9 zWI~Eq4A`G"O tIgv^v0$}HN]i=cݷ׏ Ȇav<Վѳv 4R.WM8EϱL̪D:w ,H|`4[=#IX`|?`@v_&L'k[*(;!>gZ4yQh&% <1Ñ [b %@7t?X{L;W"8sOߪ7zr5{blRk{vԯ_65tDFtcE &ga 4~,]Lߪ`Y'7vV?}w ѝ`t~`syf'Q) Cw\$#!A?Aه?BUL>?.ngJOx ^o؇?(9y26U>AXׅm0/D߻@[435w` MY (M`qi[8[P_9N D%TEWzѹOGtb]UlUwhXgl4tk?\ieǸu*H R:qhP?L/ y5B0'?6! &ԻZ'ksB\]>u9 %?'uTt_ޔx|)~-IOK+zR_|˛&o:EG@۱PwQWg{ՙ"JTgSY?P =62zCU A⪜`*H)1X9VT835PҽB,"G>3x.ٸ/Y#3r1T2P(]+ZtNb+u1|U\,?eVĶczAj #CgBl|VS Z]!VtVABD:q?{]W'pn%lΥo.{G0 ` A0 ` A0 ` o0oo in?#Y|v'ĝ041} n9>B'1 A+A|pfFI5c0!7M C#FAH}.'%;m r<dž28U!/{r6:;, Nv7]Ӕe9TC0#Eio:Rn{wT 9(gw@86AQ:Z`[_n%2nv^ |>y gZ=ZAι`蟎| ;6:#;]YNa59A[햢(!x>4~GY2{0Zt'hJȏ!ltxez. |Rney o+55Cs0d12`f3MS9j%e0GJ0cҔ%6lYrO2YA6ᰥ,K1윩Jd #m8 $Y>Hrx,4.CN4nIxPgui쫟a)jƗE0O4Ԝ$"=n-I/(j(!j.fchzAbH QL:"IxAKPPzVm^R5<@$^8x}LP(uo87眙0Tnn++v˧OVvޖ5}ӾRܢ?%uk'O[[yVF]Zأn[KFᐺ9|"fdckйD[kÂJ]FAɣDRț5_jIgPn1NDbRKcޠaQB6o=Dת <[ϳPYؚJ\O0lG7 Z:eX:V7oƀZ*@8RwY3r0ɬX{=b5t_<uMn)Oq?4K&O2x^8 ʺz?`Z+|5 n9!JXn?v,O77K2'Nw1dw. 'wM[{]ڻ]/^uyM ^MZ#Q"n}xkL`w\_Oótg:g2-u[8vbz󾃼=UMdיsu/Hߞf螏 -q&L߻Xg'*2|!!1S ͇uo W%3Cx?daiCh,sf8 x2 8n^,sk%A3̾} L QQ_fb>F+Va8 /k`~0^pߏ}\vMvj o=`{~Zߤ_=W1~sF[}q!uPnN d O5W<9K&iy'2ot<t{7CS V*LBcja\ b7Ñv[$mGݶv*QKtM 'B(۹Էnȉ۰[zq%^䐊6 \εsxh R,8ibi$ؚ PUB.l;~?)(=nb u$WHwF AS 1p]< ]U5Xcsa8aԁ1!hb sd8tj@;BmkS0 Q,T! qRb j20:4GCkα\|m}Z3p0EFs qԉNuNIž&iv3h;x'iZ"(8 cC;:}Hfuo§NOfONs#DspAg-Z ~]8 45{ / uHv߉l`|ڟ BmG읷yʯ]Gcuyo-2.1.0/data/pics/lrWasserRH.xpm.gz0000644000175000017500000000270007550521117014464 00000000000000[=lrWasserRH.xpmk6dg[!%m /-G_Z(A $P(kɟfF bώY3cyF}~~}{uoOծ駇O?~>x}[]_Twˋ?>4oc4uW{uzR_oF_Z ZuZ镖ҝ>k4a?mCnyplCnfXi+sr˵kqrKEAq9䖷;nny)(*.`8>踀` FzwH@"_".(ԯ3q-E|>IzC^-q {y:-/GÕ[u-/uŌ<y>py󜶐((.yMEyqaBBLk|i~9$k QU`ݠ:~q$0PFM-#Sqi ?eppWO\ \\Bo`H]S0(0F=hmiQ!ֈE ͈(baQy#eqZ¥؞/SC? }'0uS~>wlAnzŌC!pׇ~Z6oAZq_7BCweq' Zʲgm}$;d;,yKqlF8IMWqk>:.r_ܱm\kF݋B9eÂ}A`RL3p  ".!2(wl_hO<7C[~1RäѶ8._НG5^qF.HG[|Cz|b|j& Ǡ23M,kE]g͋duֵ“D 00`$5,y7?aJeMAA q]Bչ_b,`܃A^(bb!!ÀDdo%m!=Z e)7Qb`߿p2,/b}{ҒAtcuyo-2.1.0/data/pics/mtSource.xpm.gz0000644000175000017500000000171112401656727014241 00000000000000iWY+P0aѤKl"[(orfp?`Ι'޺el,Ns ZvP /Λg;\1:Ob5294`4Jqh_0 cXW.l0NnƇq ^LJqNa1j"eV`| #IF衄 U3"0y b&-ȯЉ{xIf| 5"[(s4"[7t=0ʢlRXNYJ :dUf^ym0:*!DS`L%ࡌ:^jU!bkD~2 cbc~~ަjsGa\] e!^7?UVE>gȡM=:G (Pc5:032l0&4Aٺ4$` _sf#॔eM,UjFow{(ۺ:aBod|_Ry3-0ZwҍĈ<.139 `A;H.uX,r#㶄PNl,B7 /ޑӿ4M Y~RS/+_*gr M<-88s-`Y@aO,t9ryh c,`W% tt8(Vpt^ɼXU &/CQ'sk 92Ǣ gG#K9O)Dz\Qa *r *䆆 z@J=h]`C(PNTXe,P2Ua:3TFd~P'JCS`cS#JL:bMTD嫗o/Ԇ |3cW1oKU'Bt[gUH#f Ħm! А$R志mVHL$$  5bO]u=iDC'?K_dxHF:͏yaq3|UQz&@HXBXTRDA7tfw_Y~he(M oѩbtutXcQ _#|!s2!s2!s2!sT_=)^:o1$&fܳHMwE8lMw0݌v2juH}S=`2Di!;={ivHK8- Գ`x:gV " _o>Tp Jl}O؟#L2sMӻ lN3(\Cܬ:%8ir2O?zՊ-"=9?Hb`єI!j:`1i.G?05C+} {{h`e@}Fmgͺ@ё]ɧv7;eVen?n_cUo[9侥ҳRw__Kқ7ף҇7ITi7TKe e,,Z ӰX/(cӬ=(އb-Y6hCnxXl6b#Fn ma}EIM25Bm๫،^aP(VMj]h*=BL#6ӫBsz&[֞׭c3zmͽ: No-,vZml@V4* k D ;DD=vt⹻" Ap {ت]xAq5f q OPiȪdXfCV6`#kmt׫wЅwm`qh`A.҆,N^q+/(-/(c6  x![/(a] Uy!ݵzx١{a6 =7~gsy0%>0AQ^7( +|ȇ}g۷⟳kQKwھި/՗/vu-/+ g~)CL~<+APѹXs~Ế/~|3ߖZ\+mlo/G7U}!=?jd(~ǭsQ׆?7gG.lϳEW}W?tݑRގğ~jj*NpngmMpE;{ep&~ pۥR_:,bYQ^c>Ch'~W1iPRa8l-z&pJVʥRB}B_$| / u)T?,~ ĉK+;;T ܂kX)87) aD$nf 49[l곕&,lMg8j[',{Y@i\]>kT/݃~<<<l_O nx _񼕥~&~|א/o >˷oY_9go;a~m̲Gq[]K1eXÿc‡ aA¿! ,kpE}Ṱo@N0ju(@q3mM|`Vљ,_hxz3qp%d2nuݭӭy)8{}rl2:Mr6tq5x4z7н_>L @ XGvȀvVw Sa!Ӛy:(@qhd>^ ܧԷ-CJD(O&1v;a[‰h#>7%UWFGhv3Ⱃښ[7rnH|aT >N}_hL8`T=Uq`Nq,5{>͝%z fduբ'*R}<~ݠfK`VO?`Gʴ8]8os"FPN[@f]c~j>hSG &uf0W Rk62q'qaT^]Wt[cֶ,QǵnsbUٹQ`ո޻I@kY2(۫b3= ARb(m5é!<s1LM"ߩqWCx@`r]%czZQ<ЧROeR;r֐"vT #aG"WEU(sw;즒mqwg(م!X(e C\܊!DFAŬHḈa#:?lxn>D0<=aa7mq"D*]Q"*Rv?JPMynWO鳴龮/itqx%S7lf,[>ZC>!V+|ȇ>þ5/dB_@ Wׄ O|tSITSML-Bgwfv5)t2IǷ>j#H5|9O练LP$p 2N L3.U2Լΐ@,"S3O«y7EZq W}[.2`Siܸ[>z\Yav,!$c e nj\s ǯa{~q8¸3u$MDn5 4 l觟yVW%>jXWbTxD:Hub'g{ZOw/ګRܡLq¹= c_;^.D $#V.J$ p=`ma+(-iC#F⺃񆇆r/|K6x) ;}7E (ql|9KAw#^UBW|K<]¦O(AJ۸hOjvHy؄w 1&$)Xt[pt_sc~ Y\m11|!`iQn:kCӃa5Ukq>Q#M憆ϵƮGi'Y_WrFOFx? a‡|XC>!V+|.^_"|!{q-fUVd4c\rຓT,>I8Jǹ}@e$:Sxn O+3c 3@u.d$a>gHz'[ |r C]xef|Gt*r3q1PNv%/$5?97gSLoT!Τ'Eբ5A>&'1 rO'N؞]u'\vZ}U3 NT"3aԹko.ڑ艩 qm -LPhkXaFXuIpr@mc#@qP|p0E$U@4SCC!KH["f STO|xO-@BbcM(>Dੁ@U7f)5~Uhch(wQ+Jv)5 4(Xrc)<|J`An fvcp J2|e[q@,g8iCWV߿mo[+}0n$].0]̕yޫӺ٬OM ^‡|XC>!V+|ȇ> !x? 9~XZ.t8JŅm4 >tu:Q[園Bt0+? d;nɣo ҿf8;}x~c:'096x:'0ˌC,Hj}Gn$[Qf*76Jn%, 9.Nc8:̕Cч1X16YU%Bk@T1:3Re×mTi V|qvfqYB'9k!+A9wzɽgq"4V=D;|`qm025, ;eK5 Nc)CKJhQ<-+S 4ݓ`I.4lV@ۥLmx| ;[#35eY㰟Yc>!}Aፗ:Wa~"}ClԹ)s-4J{އ)Ot'`RI q8|Os\~b.RBȇ> a‡|XC>!V !x\~bEf0%^~~|'!D"s,1,GJ/ϕҕ tq\-녹taL% WL4gl9k0-y#s搅9s9w;rmA`{,=(3ђIw\j] ,+TVTKrXq- Ңrisqd.\^\`4=\b5M$}MӲfseTɶ0۝ז--7o²tYr}w1nw(ڟ!R/|XC>!V+|ȇ> aFS} #~?@|qȯt| GǃIRC0gFM⛪Rs2/%Fϔӑke䞐 {JeO=)GJޘgq!V+|ȇ}k>U_ !7?_ = A. |u!~}̜!7!8ت' b8t !FݐQ9#q9਑F|>>S^:j6>Uƴ΀VЌmFQ!։kӌcsYfMsu{nP;wy=S_BA Ρ 9PCs1C 5 `8Kr`<cY1FXZ}Zơ42=g-3=<&c1&d~*( fclcňqP|o\qȑ=/j|^|'{.'7N:O^ +gtE>}r"7==O"OI ~Wz髓@dE$I 7G'~s>F~11119| ϤV&cuyo-2.1.0/data/pics/bxBaer32.xpm.gz0000644000175000017500000000166210361553650014007 00000000000000b=bxBaer32.xpmu]o8@ViNbǦ-w}DZ8I)!!ЄzAHg8M%܍G}|2Ĕ%my$&ۗjw mav<\E!qo 1dLqLr5`  phHDahhxD¯Aԑ`- ױǚaG@!bIcb,&KQN%g(xgw#D4"f0TH)1rD>I#'= I2 TiX (Y%" }*N / eeb_sx O(:6&Wq@t)!*3z T)dR'~1O[~, <ZrHEQΌa;\d!öW6S!]:A}:Z~|2p طy}!7Nwݴ`$0L|yt]:1rάڅ2&9䛺>)wt6CY|۶ gYnٸ|!wߥGٽ5|.9Ky.Ծ9 8ϟmTV~u }I-qy|Ow6 Xtv q[35oixKוֹs4༼:~@Wr9/1ϗ N≆**m8Okn%ykM_.aħW#7:]V:`Z,+|?l,?"i4:5zQɯCm?=x:52[ӺE&-&IvSQL'=P^ 44~0OݴY)Ecuyo-2.1.0/data/pics/bpPinguJong.xpm.gz0000644000175000017500000000245410361232217014652 00000000000000`CbpPinguJong.xpmKk0O!vcEyRJ!ȭ 4C49J{-^kFcmw!`ߖɱz:>Y?<|U_n~cç?}^?ًsuv~.jݪ7?ߙuݬoNlnu˞͍ݼUk7ko*gD4h'ɡ[J!# ˭ PȾX֛MRۆN!&Bğ\?@B=r>N;4ZB)f54&8\7I^$ymB% prIO; jh7RnÔy"Sՠ#9hNCA<˫*9נ$wOiW4ksaH6^5p9bHK"c\?bc@>@ A 2? \Lӭbcuyo-2.1.0/data/pics/dnBlue.xpm.gz0000644000175000017500000000102707550521110013633 00000000000000<dnBlue.xpm_K0şmE,po9P):AMfL\XIȒ{oغqyq&:]u5[n":v<-nޟʼnáЯj[؛B߫T2vvv vo ێ]Ck62 JI=Šmg($r7J bJO2H'M92;)=aTO0d:>1=>EtgJ0ڲ+H \N"M= aY[ 05@2 e?v0@N#8^k޲+ su"fEUZ1r / \.W_ d @2r\ EjZ5oYC:^ b@a՟ˑ d cwe9J%k?h?ÿuZ5oYC: ]?  c CBcuyo-2.1.0/data/pics/ithRosaH.xpm.gz0000755000175000017500000000066111101102053014135 00000000000000LGJ@)xKdJ(rH)hբ9⻛ͦqw3M(jCG; IwMjQJ(jWt} Y g3Ha!pTcISjiq]ʹH==K8!_sr ƺ8IGUNL:KZijnv -1aiK\áJ%)\[rZB8̮.I~ )pak;ACq0+fݹ^Fl`K Zfحy}3/NzŞ~7p}sC31[g0_ǿvPrrc-liq'`D`ڱYsmGzwL:g CDh`ơ8>σ/uz=cuyo-2.1.0/data/pics/mfaFence.xpm0000644000175000017500000003740212410517162013520 00000000000000/* XPM */ static char * mfaFence_xpm[] = { "96 160 5 1", " c None", ". c #45283C", "+ c #8F563B", "@ c #663931", "# c #DF7126", " .. .. .. .+@. .+@. .+@@@@@@@@@@@@+@@@@@@@@@@@@+@. ", " .#+...........#+...........#+. .+@. .+@. .+@. +@ .+@. ", " .+@++++++++++++@++++++++++++@. .+@. .+@. .+@. +@ .+@. ", " .+@@@@@@@@@@@@+@@@@@@@@@@@@+@. .+@. .+@. .+@. .+@. ", " .+@. +@ .+@. .#+. .#+. .+@. .+@. ", " .+@. +@ .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .#+. .#+. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .#+. .#+. .#+. .#+. .#+. .#+. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. .#+. .#+. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .+@. .#+. .#+. .+@. .+@. ", " .+@. .+@. .+@. .+@. .+@. .+@. ", " .+@. .. .+@. .+@. .+@. .+@. .+@. ", " .#+...........#+...........#+. .+@. .+@. .+@. .+@. ", " .+@++++++++++++@++++++++++++@. .+@. .+@. .+@. .+@. ", " .+@@@@@@@@@@@@+@@@@@@@@@@@@+@. .+@. .+@. .+@. .. .+@. ", " +@ +@ +@ .+@. .+@. .#+...........#+...........#+. ", " +@ +@ +@ .+@. .+@. .+@++++++++++++@++++++++++++@. ", " .. .. .. .+@. .+@. .+@@@@@@@@@@@@+@@@@@@@@@@@@+@. ", ".....#+........#+........#+.......#+. .#+....#+. +@ .#+..", "++++++@+++++++++@+++++++++@++++++++@. .+@+++++@. +@ .+@++", "@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@+@. .+@@@@@+@. .+@@@", " +@ +@ +@ +@ +@ +@ +@ ", " +@ +@ +@ +@ +@ +@ +@ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. .. .. .. .. .. ", ".....#+........#+........#+.......#+. .#+....#+. .#+..", "++++++@+++++++++@+++++++++@++++++++@. .+@+++++@. .+@++", "@@@@@+@@@@@@@@@+@@@@@@@@@+@@@@@@@@+@. .+@@@@@+@. .. .+@@@", " +@ +@ +@ .+@. .+@. .#+...........#+...........#+. ", " +@ +@ +@ .+@. .+@. .++++++++++++++@+++++++++++++. ", ". .. ...+@. .+@...++@@@@@@@@@@@@+@@@@@@@@@@@@+++.", "+..............#+..............#+.#+. .#+.#++@@ +@ +@+#", "@+++++++++++++++@+++++++++++++++@++@. .+@++@@+@ +@ +@@+", "@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@+@@+@. .+@@+@. .+", "@. +@ .+@.+@ +@.+@. .+", "@. +@ .+@.+@ +@.+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "+. .#+. .#+. .#", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .+@. .+@. .+", "@. .. .+@... ...+@. .+", "+..............#+..............#+.#+. .#+.#+. .#", "@+++++++++++++++@+++++++++++++++@++@. .+@+++. .+", "@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@+@@+@. .+@@+++.. .. ..++", "@ +@ +@.+@. .+@.+@+#+...........#+...........#+++", "@ +@ +@.+@. .+@.+.@+@++++++++++++@++++++++++++@@+", "@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@+@. .+ ", "@. +@ .+@. .+ ", "@. +@ .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "+. .#+. .# ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "+. .#+. .# ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "+. .#+. .# ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .+@. .+ ", "@. .. .+@. .+ ", "+..............#+..............#+. .# ", "@+++++++++++++++@+++++++++++++++@. .+ ", "@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@+@. .+ ", "@ +@ +@ + ", "@ +@ +@ + ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ". .. .. . ", "+..............#+..............#+. .# "}; cuyo-2.1.0/data/pics/ithGelb.xpm.gz0000755000175000017500000000112011101102052013760 00000000000000LGAk@,RMJ[KRB0!mh}(jj&15OHj|~.w[~A}]jygzCg-gsz߿]>~‡$޹t#FӷƣNSptS}iiG?2*2*2*➲`uc;-Fwbl4(νȀ& .&})f} dȐmn9eX׆7;2`ZaE0>u{F.X+;rZ wF.qS8So@F#^ Yl3;/!åarqDKGB % N&4gri RTS/wȀ=<:{2Tn3ĕN`R6³lD#fWFe<F-Lj[&Q{ɵ22oi6b_yl3S{Hzj`/e@ ެ2`8aˀ&r°P 61&)ͺsIF 'R]d20 z5>Dcuyo-2.1.0/data/pics/i3Kreis.xpm.gz0000644000175000017500000000272012420650607013742 00000000000000KoHד_HDhF 94YCݽɁ>Un옺v5>΂Ա|74_}p޺?u?=gWn׹r~zu~<.1Ayh1Z{P>A9_W%(hBYҝ Ao6Ay ewԝP6 )Y9\@d>lP4|rZӸeZ V#6*+guv\&(/ٮ!wgeX;3P/Pvgy{؜`a^&(A9a{ؠ\=ar&y﬜=3lPvسe7L4ς˦ { IU0U0U0¥ĨtSTJ(!],qY+#i01+ '$a,gDgT1K5:3WJFS $k4J\._׫P:Fi J@F}*~ M#\#\G,ֵ.{3BpgHr^^ 8FC#ـb2Qщ^UaCh?^JM`!| >C ,*x{ `Ke "lk#׼`\`Q-&0ň`Eۯ#Ҥ>lՔYF6F hdC`t m6k:U-Yu־O`:8%~:WY^gg1k m%_GFu BV2 2lIWWv|1ocuyo-2.1.0/data/pics/maeSorten.xpm.gz0000644000175000017500000003603412401656666014405 00000000000000y[̳?"`aED2+n ¥(~ Lwu\';]dpm _z?zxrUMZ,zNlW%DܞۍzخJ^۵޿ﯖ} -Jt<qb)_X*pX?| _ȗʝzzXqە.n+/6jUOMdkVUo>i{ZۥFDmF_o>O_kx8cUOxq=N[YSֈAkt7qU}>|NCW>nz*^i|Wao|ZHa;*o>N`|· Gp12?J[6\ 㸽O__vTiWi5nW+z(<* [Ywx~J=R?|i_7(x|=MI /|~JXl5pOGNoߢ?WO vkOyWt<3]._k4i7-:SFҡm0=xySwp~_tѿfWc=[ѦS=]XϫrKO]|Jp<8KEޟzh=:>~'~YuE_VovKܥi>|+CWi9s>\K}V/, Z/=~&ճJjm獺ZVZ-^ܿKۭol>zO{4[-Z ,ȔM/>n+t[4=n6J#OU?+*8n? O?s-2k^u`IWtXſS)ONz>;6G{GJ8nc=I:SVAD߄%?S>u~𹞷^_i١FSM;oN '4~:*Ӕ;_XˍnWx(t+t={J|E덏\̖&W.]Oh4xNeF~CփFSjE 7Zh}hK3z^Gw"n&[mNK8GTp_*~Sځ>Bmئױ`F(!sXth;= \m:}~JAHΦ!zޅ2mCmRwx۔G.?2t} lXh*\z;hvxVՃM韷׻t|[u>ߤ끐yyZOsy<r=ޥ/ǯ|z>n`1; MXhX̛/>!s2 ,bż ż k,noC,Z[a1K-!N, n7!>-xJ&.|^jsT)y|Ny9Tb9Ox[?NZ/RRbԹ3zߏż y֐yYpqۦ|Wd~jp5Fbނ}`1oU&O`1]XamR t Ez? ożWyQ`1uj}gżϯc1K;-A֧=z2"y..,ҏn%Wj7(?X[b+bށ 9 4>򖎧Nsż jt1`1K -.A7AC[`1] `Nż,7,NA'Aٯx zrOP]_z. Hż B4,-(4,\c1oך]~yӮT/Uw)_y uxb1 {Aż]mż[OWpyolùynsQԕ1ݥ9mz.mCE=}~;}ަz^|a=oU>>An>!1pyWm"/~uWKwDWb+zWMG:Zڦקi|9y .󱞷+pGS=eO op'rI39zy[4-O\Eu"vyx \ϡc> !;ys\fP!o Wh ^z'睊zy"%zSKrf|P> \+]zQzށIZ;E ?{裰$WIS+mx,iQ#?`=5U~*?u+4$//\ΡΡΡΡ1aP o0Nǰeoş毅g9 wDx0!?Mq 揘Χ;n'f zGcd=#-G?_;>Fh1\~Y:ǀc3=~`^ZO_ <߲4Py X΄yx?\17?V3aΜ,d0r!$-Orc>8~&>$r`$_7b7#}v`,V0~ŧ:|рcޠ c Wh0՘|a9`Đg{lG~`xX!s@tg^f""sqEu3c/_C:psOs,&Ӝoc(wxwtoq͂1b|u}.1A.(x;<|C1,*t6b{uu [xA]@I&bw&O olq0 [ʂi,fF/KҁY8?}9ß࿅g|=~y2wku;"09/W*ՈZgfQ*@gm]u!?6ٙg?pG΅76g<̞ySx=Nsžpppppppp1ϝ`ΟL̿sèkd1~zbB''/TǺnb2 ~+ f|xYee/sHod2g cP%;'-_,``Y$] Hc,$ff\'PfU΁_0gq$M LfѲn[ymȢC??#Y9%0i|y:b6)>/C'<9Pgܵ9[cr3?Ifs) *~=?nv]zs{o! g1zL¹hƋ 3ɜ?Y4?b<ǧC9 efDq3m~&o?%YG39r0Ö/*?~"90?NϳÏ!p}Əp(sީTy5h:LᯟPtj|2h$h`2hO7|4 ;ƺtJ^@]{D ]36?< f"ocdLx3cr ~UûEcq\_?C 3=o$OO_O:1~]D_ռ79Zk̂_W~Dp]+c.W'(~]?>O<Uŋ?ܚwsh8sh8sh8sh8sh8sh8sh8sh?.;)x7)xCٿŀGo9>,E>moNg& F B~9?w$Nƣu,W7Ȣ)$G kޖ Uo3ލ=@#x4x?< L䏁_A| ǐ>KdM=6nL@JXMƯF6Wi!5Lox`:3ẦʳЂ?ᚤ#/+ ^T?(~M$U:?Lo{xXz׌xPoG4u1<drb5#~2pWC#k(֍>e 9y*OF0yͯ$h޿*_dQƆáȀf WGs+1~yzŵ<(<:GďB~56zPq#oY<2gɫQ u}'2(roQ0l@=oSYǧ[ e‚Gʠ6{H5᝛̯aDg^0n}}xkkį&"\>~q~ox~΅}lMowsh8sh8sh8sh8sh8sh8sh8sh? 9]>2)/BГ'|8:9€xȃ20ϑL"rF-olxWxEY4ퟻlBV0CY0E #>́&ѡW7b+e"k&< @X@ó7+a&-o0^%-hëbo59AE} H~,_+DG"x9 */b0 5Ρ^&;,h4Lx ]DpP |o/b"O"/fb=Os_ggߴz ߌ`{rV<#{CM^URY4b~y}C_p9wQpCfdp2UY+a.0+tj=Moj,FwxMzU4v_KmK턁M b<5#^dQWty#ɢр!-Au7x+J?'"ePۡ½Y `a3fPs ]=1@b!a0?[MTYGW#F A5 Ok/{E?fP(pxgnE[|fA[JxCMc~#g OăbGbyTusJvLEofsوϚ`Hw=73oU>!pÇ|MyH,0!ʠ! Ø> F 6h΃'p'F(c=ț9l_ca17= fmqȠ:J(k\&-A1>W,>Yľ) !/< 7 "Y܌w=G|A7n0ohь [`YL3~HovlDSR/h'H36ei *-]0kwE&rCvͣ [#=fL[ Ë""蠭ţp#n,nhd^xE1uh~E16!*!"<|aOY{Wyog/r(-Vې-gpÃC 9g5<x`gb_Ya8<ç:Fos{䛚<9GzP9fSX>'vx^:|pp' cjCbv9?:Pas*ҡ k\ Ѐt0sxÕ [`7p{s{D؞4x3~4u(,>Ҡoh1C]3hACh| 9_KqA8 7/?ÝG6r?PʔxPr֕ix~?!,Oǟp@O_ܠ.w ޑGb'fPyQ,2ZTfiP+:,Tsi?{ /*-~`-$ q 1ϦֿxC?yy6gmU5n1>$Z#٠6?` ~ 7鰌3ij ΗrOļ|g/V3|ј1|MLΧPZ4ć䗵S"`yyp _k1^հŏpL:La&8HdP`)0p8!ϵp0X0_ŧOxUN}S=69_ˈ/:>,K%9Ыe_א,48zlPSzެu,<߈C jdಾf/& fi#q7Y& j9k9H٠ ܰA3×xUԘ,,"_gl(3F ܡ,_R}7Ib,11 |%EBn^X,S-Co^Yο?R|Ä y !/ǀLYx#y( i:ĵ ﷌"#Vas(CN#堜y(FPfb=#U958{68 -sHd0ƛ8UC~) 漿 a=$^,~C7z 3:(4ḥE2ɧ::`UuOw@|1!$g`ēE"%yo@Gka -Fw'Q|Fp[uT[ 4\gИo#~Ȁȡ&/-[{ nԨѰ=zǠSx ~3/_9Lx?|os˱ Oǟ¿6*Мxs~- DQ3 ;;"2/b Y#I0|soݏ%ppppppppqUNCxπKWa?l>7Qhn,`#8`ćC;$E7#xL{nio1P˫1 gRɷ|xۍX31nW%k9XuIZo(?߃omaFh@Do9Lufy57qQ7u@0 LqYuKu&&la92hCSrs{@FSbmZ%D_bur&y_5׳T{|/-Q~0_O8K|)fДJ0|A}9h$ e@~ׄOSp y9i C?y0wj̼Xj܍lw`&20CM<0Ob8w/f#R`|[&?`g \Q&ȷw no9.5Rt֋0D (|;搲?Ixq|!/:>֋ixSlAS3_ OFq&˼çƒG#?w' ߝy?9ˏ?1ItxΡΡΡΡΡΡΡc9N!&O/x9x?X3vq a{O+_wo7,>PdP0mȢ)A ,"Eҁ9B~B_e1?$~+-j &wA90/"1Ƈޒ-1&y B!,hcgA??'\ocr& y4XD,E= r`/*_d~ ~g4 o+aaj[*\܁!_p5f[߹y9Hr"Ϥy@|-q&,:Oa?w WSPCޭ=3 j*ڼt(xr8 ?Oc;慁_+^Q 4=  3bnL 4焁*F9x^B >Qdw[V~n2x7= /=C9S.2[M0>)Uj0 |dso|B1qq3w-;`ayEdȗ_*.c>uڔoc2|iCއ4`ˬp",E6@@Oye}>4(E ~`&<ܢ2(fgobou!&slļty4XX(@,E1/h :"8ux65+[|hЏ>fQDReQ!⧱7e;`CZ3Q'%i&jdP[h5[`+/lyG[c:0v x7ڪavQXwuDf83 :2:pE՝8 nq&Nyy5 iE530x!]ޛ쾛^K<-ñ99,6D8Q ᅱ!9T+/іqX~K9+1Tt89TrPQ6rH4Hh5TѢzE=4Gj4; 09$`ԡ*m`N9D-' pOi}k_V^"yT_j;H#,b-ᧀh" O|o&>K#q7jitWhTKUx*pj]x5([/S^e/!QFz|e zF`4R̈M&F}Hb~,295bFtݜLc1vɛ81#KrQ|F—+=%W.sWY(# ca,1#J}eH̷>٣5ڸ_ L,̀@y P-mIhdk1ڡ@tqL,R 0TyGX>EyCvRG 0 APa?Sv 1r P3c`&0 k. k0|$jG4+'"4/QcG׌ܩ  ]- kg)g(u#{1 |ސ!tq f#j!.f 3Q {-Gppm1ϝp8j9'Gq 828dXΖXȒ Rqfqq,89G_/2cuyo-2.1.0/data/pics/maLeer.xpm.gz0000644000175000017500000000102211677631637013647 00000000000000A0OҢ*C]$`QDQՃI&j;qЪ|x/ `< B_;#ϵtE8u>"oe`u^9:ݢ JiPX\t)΃U%\,t7=I vֲ e OlM%>%Ud*h& '$XcWbm0u) bD) Zax /x?xIYwtO NF>?333їa9!Zcؤ cNJ#8M)שּׁ/p.(3rlP9xn4(e8%9Gf GŢ8peaG0E^4 'ڐƓ@ XÒq w@>s𑤖42=_3FLj&e) ?:e8/B[_O?n)maTlueV<7 ߿XE`.oա]ٷi8!68w:::go|Y_(oR+v }}]2I'vR!{_Me]\]M:,s~9<`=g޹L|}kK7m؃C+S> ޞlkc igd{Jl\c<ER&rsfdbqKWSl8>I*%-vl3`Q\<-{D6%)#6]\w݇!i2AE@b-?&^pֿS =&cuyo-2.1.0/data/pics/mdHolz08.xpm.gz0000644000175000017500000000526512412223264014041 00000000000000W_1mm$W0)YHV=34ts=Ũȗ=ُ>p|q={9OEE0\#Pͣbat5xȕN}2bƌ DGY^d9zj }&${h f71C_~*!E YMNzviA|Wt*}D d(_T-g XȆŴA."'AGyA΀xi(;7u.][ԙy %= (ڌl|ڎ2}F؈5V*v~zGV  B~+E/+bYf0E9VУ-Bf* NF!pX1;,e lB9N߉'o$OXo X,CRI;ȋT1# I4庎 4FN0,A\zJQ %%$KMR.TGDopl Zn?)'.x Imw]-~_dj.P6_l.J~Rwx})h#m"0JH.Ī|P(M}xejY ܶl;?7_ixxBX øcN OaXP{KHMEvwOczS<Cr" 2%r;R'e `/!,'vh g{8/P zH?lP`.CXuNjs& /B!'|yt }0i|4fF2âJuCnȍ$;eC'0gLQ?[IIP%͉\f#9L0NBORDgYyV3L&7V\ 78i&8k5`! 8Kd8i5O&K1>ɐZ4,yL* I"1>$ZgI@ZfX/~/ +jj%'W?Cejƪ\5[Io1Va$$`y?X⾟ÊG̋oxs[;{/]&"G*dos\س9yf`Wf?H/E"V$eL6mҤWt6. s&.w3a*ڇ pYeaGFz{t۴TsVO C\iΥsy\p&pș]\qKYew?㲌˃^>Mo\ǥAoy{{y,wp-WإY\tBΛ/Xdz{,}.eAe>ɔ4-L~/O_~w= }rd1[4S9t?ȃ|a5^ wsA<rKJ9kMh٧e-+d#Zz1y }t~`^֢=ј%yAKz;-̐pYiZ2qpp9Wsg.Az/M_.}vb>J󫇸d7Gt N!aaTUZ z˞+SiԈjrz飲^lr81w=~%\)}toOUvƐFp0L'CQ~MM.}1EAր|Cd%K7jK. K5η 5.S\֏ܞ2" Ω o7?'0{?'0{?'vf'ɕ#]g!2+Fd!gDR-z.cgïTPŻ?*~#|!]T?g2L㈫P:kYZi@va1R:@Nx*q xd #_pB[IVL1D c,&'8;;;FA6 TJE[ EsV ;IZ*Dt]2Ԇ_2) OJG >h>1ф:^RŶϐjC$0O3~26긚:p4RwU4-Nҭ"cscq1yT A|q3g> )Ot JTR+jP=X:-L7'd3!]A/Pqc-X)>;':"QNU/&>*<7቟-@CGxJxG` Dslgl /9~}B&l/0YQ<@Luv IA)ϰ?ƺ;f#RK0:,qӀxxnl#̈ylx:j[qƉ|jk'e'+]z3.1zߝ8J59cR><`CID_t>;Fq.v 9ؙqppAD%E2UDF1"r'6֍TՑTI=vj˘ch8dd赇EAH, 36^uhh2.b p O b|!T@ŕ&^{vቇp|c=7{<'fX{'"FÌ^{e,!`ۇ8O$u{t|ؠC;m nOQzgD)IDZ+b=mk)Q*a30 s۷Ҋ dL촌겝e9)]Ժ:| ]%xx(C̈́c ]ƤG7hd:B ?ۃa0Dt\ 5#FBxމA@ j-bD+x9jPF;2ULXt38u^7a/P/KCՄvөHubAX3&=Lbي6S(5dsGWG^ZV1I -KoAHP Y"]y4iVG>: ykjB0jDi[0(s+6y:?EI1pe,6͂mxK3Z@5 >C5^jDIĪ⚁KewmH:6F_A5#1j !":Tz"UHv(';j&洄{و~ k&ñfjP/bsO04zG#wݸy8M ju ̏ftnS GC'9l>?z`d1#E5hu;Pk<`^[Om>zX3#w|vLJxkюy߭~>㜩uAG"XWrZR|5CCgCճ&^=%L&V`LaĔ1S-(ZތxY>VO/on? \ވ[_|Y8 #ȦMSS.Qk5RspVQjTPBGou0B\bFqJ'j#&Ud"LY?<7B]c*Tvlz{GA[aT4Sq}Syq/߄okE6`!lv5&E^^q 7cqkk#3#?y39HJmoc]vb€JSʬ4cxus}UQJHGcר66Qj\Yʧ\N :V&ws媪kDI($y&]ϕFTD4:SQ>47v . 6(RI*TuwqM.oU]/A%|tz.!BꎃhيJb8V@5#wXM{7>:4~>nQ~>%Ώ[N 鈳(jNM$$0z*|KY*Wr1᪽M)!!Q.1і0])HuW#l6+F1d0"F5c38?aBBBFκ|'n(G`6=ءK+Qx|X„/ e45C/U?:wֵQzsFNƳc>Uww!#_$4(bwj )ț-9͠qz^)K IB)FUUL)qDC^㤹vx}suUvijsf兡XȨIzfڮ`8 nGgӮj`[L.oīkjRz۽P3DE 9%BFmőNw_7$&qW+F7Ǐ3x3_DL!IHD7tڗuAYܺJn>zWz{&zeFۦB):%M ܖU_XёjFkJ}Xm"qR?y}x#vDq[zN1M_ԂGS"6Y-ubtKWG!BӚۋ"Lw*&CL W-dLx#oLy1c Bx/>@Gwi53r$pT @6+k=?P-9fﬤiqv񂜜r/7WCUq긚YϘNu 9>6xOnGI/*mTyD(SJvoV-oqëWzQ 0^Pzں H{|ࢡF9WSC:JL~ U}OڏG{ttc u$Y&FJxV 4X(7CW{D^y 9CFW{^d'LM7 xyTVܒXv {=sDY(ĄcA 3~0/QST h:޿؞$=rܯTE]ת[[+׉4fnM-c=iM:Ȯ`E@y _kRGD{N#pTSf{h!;|e;sYҹT3AώͼБH}B^55(Ϟ 5Q\@\]x]RzO~ldɈSX?޸<)W6nͤ2ru u f^XsyP{g:ءN;b2JBQ=+Gb4?vu4|hp~a*P:qW9kq5nOX{5g:we  YtəN 'gHGL1c~>xiEB~MHZXd_ _;:$娄(s9d׀ ='E:p u:c Ty5Ʒ/3Ƨ [s |l@LCu<ɧ>3Kv5Vqw͕BO393cy λ O ȬAf3\lϖ BZDYU9ǯj xjBaG )sڢXudLSCFCrA'lmu+w1bmZSERxjgDHSk K/Lk]l7o`Jės𴖊*̮Ѧc>WO؋Ʊ~M/j>}z}-T]ӑPR)JﷀKa?0P8gYvu /~[ay|v%§m%Wrch.$̇-eNOxlw6лǪ(u>r="،u(2;|X}F,KFAczNW| N%Azh) oQG-Pr}\Bݱ.sw_&_0Q|+/|{B%u]Bj*(R$}kϿז戞E,|:ԜL^ "AscTDCpplrYZӗo'APYhK| ,>>8ʊ >I3Z m]Y;@}vSA PnTzoAoQ%6 TK[|sGo_ʲ]Ζɦ,r#Yq‘=1e17DR V%tW0U&iK38ߍC;Hp uI(s^xmp2`¼| ]hlfip#hW nK P]}Tʴ"ƞt(O|_/3ڻ9?#ffC6UPu3IZmBbWMnm4O=HM7LGX,}A&b6O9OrxA_ȟ`GFgi!6`bާnahUOfw1Nc7i84vcn؍q1Nc͛%kcuyo-2.1.0/data/pics/ivElefant.xpm.gz0000644000175000017500000000525307550521116014352 00000000000000 l=ivElefant.xpm[Eǟ=9󖖎 ^%(HEwwUU}ݳ4${ݿLWuGo6W/̋aW}˟~߿ O?4'ݛ^o~{rNB?O>G|q?~R(SfpΑ#/ {!ڿ{ȰWt. ud8UY.AAKҎ7˫+ :ft6Uё#\.0l['3(@*/Ӕbݶ2(Qfy'4 eom o'>n֖>ZFǿaآ ]'=0$NH\S? _p e(00zj\9IA\i>t}G9!ꛃU34o>/sU_V1`yUh Iɐ.C&"bKdgkb.Bcc ik{ ] MAtx@4& 3l2} "Bae0]J.uB|}* *C ` ܕM+2$cȓ̙\?ž=@0ԓy^t r;YMOY A, ~aPHχۅHLC0X) vp$k S!_Ĺ,o [xȀc;pj- oUU pBJ{mQ:fV3`M)@4qǝY ܆5Ɇè#<(Ԗ3΀U{07q~wr|-Ҝ'fХaU< 3(_~o$Vw, rDK h<5>"f fdE Ϝۀar-2S uzwC!0̖#֛nP\浃g~h̄at_D0Ȕ0슭0bWO׹_2tF 9]26oD3L(e@G 1L uD_M1)U*3@H Qm d@S;bj/ CO* -+O¯E^ص4 1 mڶ#$>km`ӞK@9Ke⍬alSSa6tpLO'agݦK "'_XnZb@1d֮}u6vFa낆R{F:/bqZL7 kԓ-_і8/1$o q zDf,4I7 z2\!`AN^NfJfJ?HYUC/VjwzC/BLj8Wa\0 C_s682@{~0{2G)GPF2?+9_?h )?n^OKh={){o&{6`#bXoZ; -0?^,MH/h$}tr7*Qywc H ⢧.2P8Ap܆U)c$8l} mkir,ŐA5xX}bt}~|ð^_l e v,Xv #( vҷډo0!3,Eo FCSJbB/2VHKֳ >gE3":,Clf 6ة-ˇMS[eJ&6% ?V /R`+R5mA~$oY2,-P3 Хc5êG?"J}}8u\ $ZP2cXD H<5|C؄2_rIX?=` dma=ϗ 4- ZĦ b=\& _{7S6+%X&JK{,z=J~8P7+]gZ.\}ߟa؃;sƳ!CR0GpMv?vvVףu8f(2XaPꉍӤ52\깋oaoq>ccY?1hgXXk𞕔_0v\R{Cz/VaX#8 21Ͱ' 1!߿35R^O'>l-)Cpb0m gfQDzjX~i(} ~c֩tcuyo-2.1.0/data/pics/mzZahnDreh.xpm.gz0000644000175000017500000000507612401656730014514 00000000000000k_HSzrhQ W-ikQB%mZ|͜!ffs&O&³oXtӞ", GGw}I6YK žUQ$s OC *ꢅ"H7\BRDK "YY]IErHTEԐ qe\dIґ\ERQ` jȆfAV Cظ*25*3H5$AVe]^!i@TULDR* *XSJ);A+IIPTNU,AF0Wp@VT] iJA) P5 jk m,_GsX؆bO`&pBbWZzmh?e jT+n6`*n ϼ5\ 6~ 3;2 wdͬa5eg:0;-Hɨ@wAuj̼RMHG7MG":P{&1b~O*n؆)pMɀگP+ )JjᵲTV mao kkG%v/╼+iL5W#XXl >|5vhͱ0$Lт隢 ZpA=Ȫi`h?{XMSzȵ2Xt)$c<,ϊdҞXaUbO<,w6(Kޞ{RbDpgY(YǟiW@K'=yDu\`op??L'~- 4>ɧ\`">3Q{Z{<aZ4筶ۄS>bq(]OL y(ۃ0}<+.#0<8 ^K| ȈG<0hV&^O~ oL,dv< 6;Cyv~ӞS"(N9{ ZOoԧyag+0 !oFS=?8|'ކߘQ>st*Rէ|uHG~?1oX O8?>$}JW? 'OY?}@η|>;>gڪi0Q{Mo}ꛏ 9+zϬ (H=\P+̘R1{O=p=xkw?aĩCiBNO"?DICS˹a~031NG{1wzgD9!H_9o⒈jOݧ_ !df .&CH~@)M!Zg[[wH~@i)eě~4 q4Z!pJ@zh_Z p?d{{y!79N<}AM4?yb_?)#pj?pK=%VXdF?P;?Dwpoz?Zыcuyo-2.1.0/data/pics/highlight.xpm.gz0000644000175000017500000000176311361423676014415 00000000000000nH@&,ܶXl a'ahDXþ% ݖZ᎝\?ttU>7W/8fim3h877Zosa ί ޛ[pۅI!yA7i /t<# H44>":679ɹ :B)""/x$t( KIIEze+(JH%1AYG $| 1:8-RA *!$A(]G:6 Q Ry`dȨHV.@ |Q d`*`1\ B4"+ܦ8u BSz*R1O;zCyD|@ i69LBq4.h\&QR®:~ A(xR;8X2 Vt4Ѣ7iEk999{7;j'|Ss8BMt"GA#6w5CvD_J h˒x!Mű%GH%-)}̨\P,=DXj~*#zJrRWhkR%U/ӵr]wkvu;jcL&o˔[p4LgsM'pPl36iawj:bZo bZ.&ΠR>"Vv> ߭a"1;%5W&ۻm'z)Jΰ)䐵|3^M*Βbܩ5qRkφZwܙU햓n6_ԌGdޛLqNd5ՋI%9?fV'IM[Z`g{3ha0<͠n.X Z^]ZaR v҈x1RAlqExSjbqL.3%jZ۠H3q\eDx*bhSKWvӂ^sT&*g-⨓=0ro0 ABb*1X8 E P]:JGH&).]93KiNy WĬXGN%^wZllZH/V2v|+}Ǿ*>.FOYwT&[3И vLLzFP <2Kv0ט-Yd39jƿw5{PE̓˽tCCИݡ-G5"1hʊ=K?O q^<)At$~NA}9{9XؐWψ V8w*Y?=__7c ߜM2.@k?O=Ok:+7*nM# {Ãnxh4:E6[XXCߟ҈.K5^7Ѐ?.˹5f6ӳ%0e99:z8WɟI5>K`6?N&ۮa|e<:1h4w>U {[͵oSҐ v,jp^SKl}/3,Gcuyo-2.1.0/data/pics/mdZiegel.xpm.gz0000644000175000017500000000427512404657520014203 00000000000000YkW_!"H!F zJZᆰBC dW1w9I}uWDgsfdfܐ޼ڕO'Ontyuy蝴&}{Ա$K'O%'ɊP6_qn l<"y|9l\C2pfk:eADR.h-Sswmiϰ:NrꚆYUt]7 dzKuS7\#jHV2P4$-}כum| .qMnt}äm#2OWKF.BpC;#0piҜ8m'R2qڴn!Yd 6 @ǶL gOaZ(P}ɯ6M[5P5Vb4_ږaԯk+&$-h(#;`]ZX0|~^67V*i!:poQt[vB z?`/QR!tF#\ɧ@eVhέn9N佸 G~@{'.4/uϘh΁pٯNСFCxC;!dh١ű8ljx.44I&誤#s J O۲Zndc"Fo}. KkA3{W?-Zmg=OP5g=ODޣMyec&"ǒ2 ~\~eWxxc'Q8m~\QfiR_T3Y.oٚcqDyp̃4GWz$yX!7b1VD\?8J".]?۝ܻ".ǴzpxxqxxBDxc/rU=@Dsp=%<ڥ`8!;9=<ԃfA=2pSӈǽfX!qҌݮǟ>:!? {DiSO}rnhJ=jMuCð)nzGZzP;ARj!% yHx*ޥ f\E~ݞ|[".IDc<2Cyܭ>J?z$+cuyo-2.1.0/data/pics/pktZiffern2.xpm.gz0000644000175000017500000000251211052300554014625 00000000000000YϋE>Eݧ}aM(!&${ݮ_=|լ fwٙ'7嗟,7O><|x}_xܔ_yUonoz׻7V-_]rW?_4~񇯹"Os~t5va!O.e?QL'0*ĉQcei{aB{F:H "0jxZ&ͅQsl@1 5X)c0vJ^xr1_CQbkx4 ;.F{;V1ڦ6f3Mq  Dbd?]!3{C@cq*UWc( &٘@H(1D\i1&4Y168)D!xtۇ)x+A3E#jD9_7b1[afGI,-w&ƸQ*0 ht}dSF9jսs⪝3kE0BH%9Դb^ڄCHR`^')M5ǃsȒc;Hıd5lZo\Jx1yS?☭UcjQ7kYFNjn]5Yz @+!؎Zx,Yޛ{c8P0T~Ѷ O ^ .$i;Y9)o{#`r;j *@;P҇o/{:ׁ8꾧O7ǨT\Z @ZD ^K}~ 'p2JմT}S;sY-h\o4{_(ڜ '8i3ab)P2(NFéƗ*ITFaRi^dމ5D=#&_ ?m8whKyp2v.>7vBg+H Q#Dnv1)Np>[lg`ǂ%|WS4qQ/䵦%1$%)3HS5,l ዏo 8H1R|CSp쳇X3A[2 ㌭ls% zcԾ hAᆼCuQ!]řytć{@0vb ! oä SSW?fP$*e}r24r{W\_e?%cniii<)cuyo-2.1.0/data/pics/mdZiegel08.xpm.gz0000644000175000017500000000566312412223271014344 00000000000000mwSN6jiRS$.PwfvIs{=,%xO]^sY٫?Go*oƣier܍>*J:+>zm<{ײQB)aw#w:M4EyLli١>[Ƒ@N-|YS6 ;h>!Cngdqda5ٴ d>7dZfz#ZHu,|`-2M0m45m 5ŵ#i5tM!1AõqBuhy*lUKcqa-nA&LtmAz5eiIt6mkiq9ցapBL7 rieOtD.<'Ka N=#SN'!`t4mDL^WfS,i_hNd6! dJΠ+qtPl4FҔ9|ߐٲDN%G:ۆZ8ۚPOndـ[迧y!' d&&[); !;&]ۄ^rDPf(,tz[eT8ۧQ-Rr.r4L\ՉL\IKaZ-[yd[ަE?^[aI:DҬZtGxR!s&qNf _hld۶ [-Öa˰e2l#ƘA *1 =k 8^^ CuecJJ}(1x=cX:@BK~au GqΑC~mn/3,KHOu,0u`9jE: uxʸZ/2T?ۮtOV@ؓFӴRBb}s0$/=ъ lju70[ mQ'§~>gPǾ! 1!-逭I34(2ERϯ dZ>Q1<à[`V~9's 36$^5j1|[m\MVG6Mg{ =̱:@We.@6ըEW hd00``X`)Je4tc0`Y}p  }tϗH JCJ~)s83XTq*s 6>w6BgB4ą=poSJb/Śa3aݔ}3 V'V^}^,2Dp.lgS!_Mqgm^\nt~C z;eYK6S/0TjFM[ N!V:'%tpΰfz _(A0X7Qqϊdg*>\cЉ! StliFW6U j=(l)!~)19Rhj,\ArۣA(r#Y< Ac,F+}r­uzF`G.v] w]pI9` 8 րzʙX?3xd`$DW`a (\wp^t:RUAƢpW6WCh ח2H Q!Y0 L<0O E8 ).b> B%{4 Cz/XAƪS!0 ,M-"5r\3}>mpTٵ4XT0Lw<_nu‰n8wym/`#-(2߷Rz5ܵBNCo_lVae7ê25wGN,ݏ2|/O+paXէ36BC&jN0ΰ0koGC>?("䏸|tzjRFh o&c#ԮfY,BXǓwxl;1y̗o^4 |k\k@cYÕ{? nzU ɤjW`M,ƥXWG~ӯ/ߚGeZcq_;Ӵ޶Ih}Lv1ԾOCnq<>5j?IK㣶ͣv*YIJ1 ovFm';?k˰e2l [-Öa˰e2l _ ك3e%7cuyo-2.1.0/data/pics/manKoepfe7.xpm.gz0000644000175000017500000000532211613522350014422 00000000000000Zm[L_$U IxI($p#KQimHm?Ix >3_<&Ξdw#J{Uxc>\Z$Jzwg$O^NO$W iHBAP̀!,لPrp-R\G(7os6d¡JTI) T$6r p[O `0T;<48@B("b›5pi* f%E>TS^Oj 0 I[@4"(HXEAfL,s9XQP1<8}o`0V)pHypD`lF)B %@nz0 PJl#vb0kZ`@]!'8 -@;h=:w)ϋ?JbA&}+,|@ Ba8G B41Pip85pO޸=cܰL|0 Q DèӨG#hѹIFU;eM4n]8KbMbMyCTfL~Rt帉곷Xi;͘0'5G'-"146帉o(eI 不, ![kbi:SD;u>; QWBaY8K1 clȱ0r=9R Cɽ'f5㵲6 6Tο>8Iɳο>hό/Ӟ=\0BLCrl?Xꏡ-ǤMCyG A/o{zQkitwWd֠ 8:1f2l[~sozgU#1I0;ϵ9N5q@tXK.-G7拉$q(sN-hDa8.tD9ϔRH۵0է/n *ٞD䈆Ѵ Px Y93Jtn^W2$,Y*!_߸Q?Qp4pXܽr<ؿ4߮=+$r] cwdK^YQU7a8IC:U@*a_U_ܘ3cg<d3vc+qTMTɑ4 dž.%T?73ar}4mξu҃v΍>ؽW%`Q Wf;YBBCUnM@59!5*25lap:mH{yA/R3vu9)GM&m2EF0+GX3A8Z9{IX#?.VAd5'P,t; 4h/.va}J+0,3$_rm[M1S旭7 UV+P~ŕ.ZH;/GI_p?^܊1ΘA?ToPPXs׻oǔZD zQ[>$G?jP0;K1^LrehaN/D]de"M )1,{OkU.gD⎢eӍu.Q@99PZq(z/qV2J%Scvݹ&J}Hloóѭ9SRsL[勜[` zc*tɞ??bf6嬒傝Ve#Lu(_ ;ABQb^+^ |k}UYxeB,v`cWfV?քV)JoKDqXXc._Ʋqb`\θ0`FFع 0`5vSXF՟vt- DA4i! L"9ͮ:ĜNm3FQ13*?1ƘVp6<˱jgVQ|q.kZHkrA1Q}ČĜ J I!2?̐;BߒXQSaLa_#ɸ*id #!4B/x?>egV"0BP9}^]Q@x%Q0`h=ǽ=P-s1u}v^.}_q:U㘺[q& #?7D A7D k 2(9ej8mbVzh6$bciF^K%}5 ^_`6\1}m?\?J~AZ;a#|]z1DžcL%ncuyo-2.1.0/data/pics/ipHochRunter.xpm.gz0000644000175000017500000000134307550521113015040 00000000000000<ipHochRunter.xpmMk1tı)%ԡSL 94 ^i$13'sHVgҌD|NLF7W۵X\=}x{ns÷_kk4\h,^l< C2 ].|2 O/0Tax2]p6;=?^[JFoVoAfxW"BCp`l]( kZW#JV_B;Oz.ެmA&֟A[o3d8az1Y84g|p\&c` gq 1r_1-RI ^/1?!dzzG)Ҩ^' Aj pNn,ӟwe0HO*O}] ( ׭"Pq_o0[hEc`$1LvK$Ŗ-ap-< ~8 WM-\{R |imALK}4g(IxWJK8+ d7 M|- ,%=@RwuƖB2V )@c2eʜOR2]yTX I8M rn<~xl/Tiw jc8 PcX" 3a8F?Cla~5*#cuyo-2.1.0/data/pics/m6Duenn.xpm.gz0000644000175000017500000000217711672457345013767 00000000000000.N[oF+>h ov8(^8f:46Ъ]|7@\D}2 sx Eb\ӧE ^Knܓ5ۀ)8$ftN ,N"yY*]Wk3B"$/#*xk?o1 'zw#a&?t4_I#pV+9#i@d;qsf^!/@(?-A'9QqZv!fi ^9MʪwVww86Ƭ*;[ D5_.w\(׷pq"XBNys+yz'{'ȩ~#*񋲎e^Ty^uTm8G#RmP9d4نl AՐOVEc?CBVr9Rƾ^ eKF܈qmlppa z`&m8fd[lm!eY&G> ]%B ɇǞ^_6' 2|^CR ^gLrjؘ F<⼦,gT![8Q+7s06j!`5;ۛFډF1͛Q짝{(p~|rBHxeZʖv lH+"Fȯ= 恶RM=9FF9!|1 XU,l ƪr"hi "f3aکJMF]d%ԸVu4O] ХpZhJ#IQ[:^ZmY3CZF a1߻jit ,ؽVFIyg7XF܋V`s)a,]jdϺZ8i EW dQd{w@xZЂb1Q˗룵>Է dJ-ޔK}o{n4F6c5]+;3lnw78OtF{pmC:֧QEQdR(Y7dKٜ<"ߏfKpW}֯fj=٦O~xlN҉Dmݿ{_l hhhN_%*cuyo-2.1.0/data/pics/msRed1.xpm.gz0000644000175000017500000000531712401656723013575 00000000000000X[{F}ϯPB+   !Eڍ# 5\Ɓa]pvf(>yR*b/^K_RJ^ut)*RIU+I Q @،ੀt9Gpj# /F0Ј`NB)~A*e,`]UA0 3B!OK7C]P#.P JA@"`y7YTdjq$b عh&`azVVB:AWe]iYQLDT #,Fw RT(PokѸ-d al#T#).fO&!E 1+&mІg6sI4 &-Rt>I5'H {2X3+0d*+2t!J $8ANO~ :_#[Pӧ:E!BAvn0>Ke| m9T ђD#h;(8Z4JUnH;Pbr/Ԥy1x-h!ѢЌl@ g E2PE^cW9z&G{9ڮqk2TuMBѨ"%; !n'5fh:1Jr>Ǿ9뚺b='n1SkY=YOA3Iӕ넪ș|M`<_]u:nRMb#S~!*^նV-0d$]Y!b Z {-fSUu3w[9h)պ%>톌[{WW0//.gG9+*XN}WW +/? CZ|h?HBa cjTf.kT>{'ex㼦M(Bta;|]=+V8yDiȋC`(5r!V4 7VrFd҂򦽏}K5*b>.-H==rK-#7#i.=]gGiZ&lR B9xcfpRnjZao߾5ٲEsmozǛAhZp* c^+&9xYr9&~4(x5v }A 1l_?o`Ç$ [f7EBo[xC&)_"!trg agǽXyYإ4l8KٚEnD8(!`!?y$SnSpooǼi yИ?,QPgrPT>" L,2'Mջs!gǰc1v ;Îaǰc1g&46 p{JHrnw1CHj;I8u)(Jޱl,(p_5"$R9@#m Ζ+Ds@qOE(1e:|-ё},PI l8b j(`͕cHX(Z2+JTNqy7!1 Χt9!ڬS%%@rLْvqZv T66 Je(T A,צ!*Ŕ (A[j4\̩HqGBJuQJБ)Uu̽QAөp,c'VywsebH \G}ͯdN0I0TKłRJ椰ЗAyj3ӭB>v@:N%=iS޲a'0 $q%^|ULL1*YG[`r 0Cxa$z~ٸ~'"\;ch_=9RJH<v ]©xW'ؾ8e/wЊ1u8fx?'Kjj> Nz9| .guQH UrÿQYxy}waxaC|?:뫓`ت_h|kV9}su7pqh|yZy|5=ӝοz.jv yǰc1v ;{͓{yr%7cuyo-2.1.0/data/pics/ipLinks.xpm.gz0000644000175000017500000000121107550521113014031 00000000000000<ipLinks.xpmMk0)D$_i8ֲ`R +k^=e뽑dF;(28߇&he{x'h9G t4>ч u>3OeAK]z=C{6;ϡGu@[/g)'ǕJa+7Xhx!\h0^l`RK7 PTT7$AM3{oH-n0JsaT5dۅ=F`#L9! t) @bq+h@lCE{cHm_T(?xlC?u+9,3 ?vXع"#/'##GcA+jo#A$ G )-Tͮ ' uSmY *?JЍpՑ5ɣʴ(ȪRɆSe])ʾps'%Ӭe4H-^)TDUFe-k ]%-G:HG 2Ԅt]@jƚUX}c-+pPe1  ;$óBehJ&. kjRK'9 cݘUu RSuvHfQ 0Ha uag HE #5l_t#€z 5Mg<kivեҕkR,'eU! ]f֔. .W ee}~6dAˎ oK,? |Hy*fS 2kdXKT#B 5eMa0%oَK0-?UqX?]=[}',#w u!8*}ѯpv Idٳa@*lQّءE&S \OWEog|"fЧ]" *O6 훞Oc#lk@Uמ9#^ięܮڊFص$Ϛgß8lJT*e Ըa GTL)ݮh?BE&Mc8ϕkt6žJǬw\ƣ9Z.8~Ɩ[~SjaAƳ-hAbBWp[ ƑI_`ApQ)6a}Y'A=: y15OsD+(cA! l+Ao@ꖥ3P?` csҚl8m@BŠcӞa4nz|8Bl5?Ȓ0GVߣD.~X18'_ђa+k U܏48|ړytztҾR5CljX_^QCi F־\[ƭ$cZ1B ]|RHp.LL!CN]k 1/.qs*wZF#1e6K}y$XGA}|̲*G'.]ȓ!*_c>ebw_gh3hu %(l8NNV4эQ-S(m Uw|p@m؋~H]GZHZO6wQ6Za _ P6J"nގ3Ho d#2Ð0_YrC2cBhd ^NhN oNEƫ>ਕm&q:Z1F.hZbU_ t8cJAXmZ] l~1{c7x:/JcD$6~I"mo G`_dzҟ0R IUFuYبGO9UF T֌Z8FWff^RR=U1 Zv مH":%h5 ѭfG" PZ͇تGi5HnGh ],‘_:F=Vm=͉vw7n t=R5"hLm`q|ac`pC9DQG&AII9(fQ 9AÊ1liMj-.KӦm9c0MFDϯ;/Bn^j)qk.7gΉyaY]"A\0[oMlP9NEQ sM` r#Φ5zLDq%oҦ뫵`tKլGus5(Sh.N$`x||2_P+p0s\ٮٽce|}׈7z?8U?JgQvpf:WWW>|+e5߼ BS%&vmR'K fDYYf?E*$rBuea9Џm\R3!ݳ8MC… "-؎rr[k7Ƹtoٙ4o5@h 8 ^- MlQk:9twxw/|^{w.yTlTqC76apj}Nm!V;su29s?uƍ ]?`ٞAFɟe%?w jw?;0ݻ%**cuyo-2.1.0/data/pics/msRed.xpm.gz0000644000175000017500000000524512401656723013514 00000000000000XWJ"V lBɕH-ދGn5HA~ J೿3Ij_ݞÓ}vvv3|FX}>92d:__ea-3ASS[[ASk df3U=YZl#D`DpL V#(#4 #h!,R@'ETL*unľ؜No˥,)E#B)  AS))% a5^JPSlF6ә@l늮k mEUTEb]؄Aݤ[%hDQXъf4Q a-޾:º.=G4dEA47h3D&:BƱ:&F6 *QN։<GwM duF7jL2>SJf~!XT @=\tDYЈmX1/ ACG>A7RեXT]%Y$GyFИ(}ΪဳUSiˆapjd8TMŘ\ *uDN oJ2fjn=GkkF}'X ~мt4oQs4'OB@/} zDYWp ;<"ϻQ-KKi%Zz? {BG'vCڅCY!E_tFo:nݮoNwyi; ,u_1{ZuzۡDQμN3(;;0zyUr6yJ|G4}[v?.h0A ZrN5 TReY^g+)Yd~g$'#aB*S=1xdWiE@pb0$*e 4vK-4;TV=kֹl&[.!, 13ݙxyXrj'@NĘw:}_/vw'<7yuwUR TTU/RӣS~X$KDM`A}w_ԝ{aR"[a JO?<<܏ǠqG_qwQDϘ|>Fobylp│-$neU߲XLí~g4Kps ϟ?^`ѿ&{7#>MCn߅>|a/tz9/SV*±'NZy:3ߝ)xX#~qfv nnH\h?:,vVީNw(Q# s fk:?_GMwЅC|x 'C,sBR#oEVl =8?iT.XG<߻X0MvUŝ~ON+V?A[do;?iT/!N8g...iMmx롓Q4S-'?^Ww~q\3bÇU:=vX<χ IhZ%I:/}|]|yz>mPUe>Ãc Vb S+oL1(NM<eR?Ƿ~dԛx$^ɿ?SbUS./t7 /`ʃx$4 |aI~2?zxG&4֝ 57Gm4H=P&MGSÔB ИKĚE657!]j9 K06P#Tmb>Q?:Ehmx( tv DOjچk.P&h/gi()^wo]=[:Dv N _L㽋e"ڌʆj= E_<4x]@ߑ}|OYwn75,6dV tG?쭨ńZjZaxm :Di |$ߠ SjQsGbB#fr`85 MY B)Cg-CԿJsU7 E6YzL|_D:Ag c-%Ge BR`ɮ31a;`˒<(@rBV 6].`QlqݢAεf36QOZdXL6>\:@E -`_;nm寂$>@\噏@Gp\W_eQy p3x[Or&jHAmfc.p?p?Pӫw$gj6W^јb{ڇ3".mԆ+;bWj?d_!՟o%cuyo-2.1.0/data/pics/mdZiegel06.xpm.gz0000644000175000017500000000561512412223271014337 00000000000000w_Jlv%$TL^P 65)~NnJjI9s< Ɋݏ3 ዧ><=-N|,_qY?z Q`=|]pZر0}twn yENܰD׭%[!::{^1}Hߵ=&ܫ]ttBW-'pxPiݭTsQP!~xU ;ѭV]eTZwQG7zKU:nu5fn\%*nyUȦL:uw]vKD/xi/UN Q&~N̝?CV 7pj'.'TOHgX!}&,k蹐ݯ}!JϳJY?tRrL._ 7䢪c *Bqmz*J鮛~.xDu{-% 0MW3۞ -Ӟ34-AU>[p gXd2l0l  SٚL!ruЙA܂v ,ee%F_43"YmM3Â6\鰄ЈCDJ$ X$i 5Ј8h\el\K,V)%c63f` Y7,EdXJ2[!  ~e@ C$P,_1L"C.AqL`` "Q lSZ=I{b[ͱC8C` f4M.ЂHlIIRI,E+P#5z>P-&kB鄹LF:Jɸl1DPhR}4U75pʱxfP%l~W0``H0(h-]t}CoaV`I3wt؎T"`Yv ҊaJuKVg>鲹UЎkj$,GˋMCd(Z4EJ(mfVb8lQiS]l0irؖa2`6%(AN[+8F fA0.#Aon0欯g!u mf3ehJヸk4awS+[bȯ 㸡*'5-F9 b &יUsTra0w,} fsr#,ܽ=:A/2K ͍<3W1,RDE1`X/%u8(:X &aAKb/--t6+ǂɌp;0,20ǃfŭ8#:gh1iBC{QT.R|,,w]D^lsv D;^=/FbtN,$i^k"eaP20EE͜d@G0ap!RlAB D͔RtAb!CFФ? F!Pit.D+<61w>QIc=_$"Zfq$< yvgj6e1o3Ӥ`Pz„eEb $uCmE;pL`w3ǂ VZOZ eiʀ ]Â) AՉPyJx^_Nud $~;`j1C0։.+ rw Cnlڷ42pˤq lu4#'xʅ[RQ}\,WI0 mTDMJE*^f6om dV1Zɀ[0 Kpt슀m 5>ǞH2\ -bbkYɋAdaËEj }D<. 1r9p1!c\M FgFfYFqum~;adi{*A4Z?O@szgC(,^,b#esF>K2&ϱ-jgcB2b ^Eݡ,Co:i(C.G=xu$,|4q&mea @&pjnp2 {H2,~uo!K zĺ.fWAarsιrF}( @UrCkvtMOQݺ0g֛/Wy9x|aN|On'q_ktֻzj7&d?7ʣCݷބw~v'nz5IG'睮z({Q#` h8Rn2ދeޜvIގ l+5opty1<^L0|z_x <Oop>8=7? KѰ6v޴|tq3yQt^ڃZ 0͓nhF&Y??{{{{{{ƃ+%7cuyo-2.1.0/data/pics/mdEgoV03.xpm.gz0000644000175000017500000000554612412223252013757 00000000000000}wϧ 5 e KI&`ʢ"oRlnI#wvZsٝgggW+(bn4'*OFooy{헜߯aM9r?HO~vj^9LlD7l0;טQV ИE隦24u0ia(jV סU&mOW5Nul0Iqt pPIʾԸaHXVll%e e70:vn65PZkbJc<Q L#᝛&L 6lL6UsQ̚T(U>5Um,D K©:ϱtL/ 剋%mx_@5|0I&20s[*H,:op Q?@0PyU^sľԡ ?`d{p zT?r|1/Y yҀV8}(n(s"?3IMت-'}4p/Cз KyEIIPcV}~C}]b iZ('|ksՄft;ryηP"U/k_Fy)Jo F2@@#F^v~m/&2!c2!c2!c2!c2!c2!c2!c_+iu}S2H~!%&3M堔!_ 6 3۾,f6ϼ$`<,`?%)>Kr3qBdr>!o M sIq+/e9ܟCn`IIBPJd)#&#ض8CAr!$ K$R=̥OGGeI,ђC+ْ`O>ӗXgτPCkgޱBqg''O9s"(0, Y.g1T1~ *';>3\Dp` UrFYsӼ<k)!@S1A?- Pa;)$\(ϓ6S$+ O|QŘ wВ"_ CyCE@|s$C5ӄ:*գ%6 "b:V ~w( R2S ^/0A;l2Y$?áT ˗dH t0f?T۽ txVpaᎡU4\5RKd9Ibp7iadQQRIQD [{Jf"8` t@B"şI R!q>bEsdEZUaryNا^c&/+j3|qA!8n ^Y,ܒ ٌl adpx=~KNҞ,~짳ÐҷR amZ 7oI&-DZBå`s :X80>"!Ž$Ȥ֕R<òg!kD,t!;N'|; 1LQYleJ T>O+rp.G;WC08 $6%t4iH%iQsqEpfb 4ȗ i r>*C wT# DT;+7&AЇɢ;[G e,g;%߶Giw:,PN:)6Rx< 9eWOQkt>g8j75SuVڧt4ݍ׻أplG(C(sNF(*K^#*H$"_pFRVF~e-D&l߮t#J+J%ul[Q;jQeQGtFԋJTɷJu"5Zm`hDu6 M>M4_Th7ξ#/&y "b>):FGatJݮM;;TiRRO ZR k: ]_mWH\PO MSa3W\dUԡ|u ˘hZ AhUpFq+P b-vRczV@ԮC kIb6gۛ'f'Gcuyo-2.1.0/data/pics/ivTintenfisch.xpm.gz0000644000175000017500000000373207550521116015252 00000000000000<ivTintenfisch.xpm͋E_QyɆ x HX"ك1UꚞI }VUO\\=xܾ}{*w|wo_|]~UY/..gwoϟr{Xno}ys|O_Xcd p*%!Ժ Їi+_SD8B1#@n#& ؏ :4"I&XBڈ0 "pP>p3 ]r?gZE ޖ:$Bʠ{z *+j ,=F@m ,66va+#H9:։O0 ]pf!$ՎVׄ܂ _d^-HTCH(VM tjg+R!I; u11%C2lePԲ{EhHeAJ͉f. >2b:ezK ByўW)}cwϠcB}9:"< IXBd-{ OE.ȓr3zR͜eUQ֏NЂl0ː,vFjEb,C1o 0ؕNQ \gƲ=p *o/6*ddJ߸!["87HFVC%G{= 0C{;S20,bb1bÐ5}gOF5Ĝ?L20'x< }36>W`0hwԜl3@K\^wS@,`PJ3 ċDnp b(|9Dig9Zuk omZz CW$XFs D 튡i $lajͯiES9!{3Pj7v&1C"A;v1~JoW0dPwn3`hW ?fp AHT: s`5x4HƠʁe70X5`!XO! AA"L0q̄Af8_iB>ǁf?` AXͫDT?q,vRx X'7V!*?,uPdh\MHL_8Vڳͅt:0~(XG3ı36Eag1ȯwPq9B3Ta(} "ʍ(Di8 tOGo8e #p%<ճփPC0 0e^K%;wv!H1069*è\L~l +]lNFۀ'gEȥbl2Mī2 OЊ<:8gaK9Fq yl`D9˳AsPFCa19!38gP7f Vu(o2XMN^N^T.޼PW޽˳_+Ja:ZQJ墲nw;\\ P mrՉkGv*W;.'\ttvlHË[N费H'vДRT)1mb"JmԲWT i>!Pv#C THT ^C`Ј)Uuj P;m B89wˇnupUٱXQfb9 "\cup5AǨ:%B mAbP%rpń8&>U;xqRa*Q!"|)RuH8Mq]P9-Q5\&X\L.{Ђh?"d8Ea? fpZ~.i$<3Z6o_'i`^Kx R]X,w;RFC9jF*17xlt[e̲qO\o+tm\_lEG7;Tд1q5;1‹#b;9cFZ±pA8јWDTUh # 5"!.a.=jmjD{"C!`WqlD*8p& cWk?1Z.^Tu*FNpͨd(Jd(Jd(Jd(Jd(Jd(Jd(JocZyAE/m@j7b/yeEQY @Q[?ϖtØL9Ug|.3ۛ^S14,P0>g BP#7xb9"=l~  y;e<H1$t|$ #5d>16nP4G`|#%*@Lm 0?s<C219'I' +#]c>!8$0*q,V02h-  ,Cx4<+nJWTUWr~%9 pMxlWm tAWљe’8dH N>?ES6&1gPs \0d,C$iOW3QYfR+V CS +,׼BM,Ch-xTB[Ͱ Y2+Q2 !;;@A4L3F`T}OlDPvvv1|CnMK 꼺`ǧ {NK8wt3sC $2C#=]sExbnBh ,N/{ q)u/RJip Ž Ϟ.HHpM]FvfÍP8! C`$$@DMTI4Ô>qo˓ Yo I/K) O,$ē. %i>/>IJS2l4O} (H d !EyƟ( P!4aG',齑$ Q{/Q /~2X?0QxE2BCb FAJ,#HH>&I>W29"p{0 gݠ%a8|!8h,}6ݖٿp}PO6xGcuyo-2.1.0/data/pics/bxBall32.xpm.gz0000644000175000017500000000216010361553650014002 00000000000000b=bxBall32.xpmukSJ+e{2KjPwCdELpO_IOw$%yy?w&:m믿]ퟂ^Ĩ2l41cm=vߒ>eY-M1[37 ˚&AXFbڄMBZrbprL*mXa]UXijz)>Z:N(<w꺮n)\n{xB4p5|2'}'4*[j.^@4xDShG9gm@&gvcT5&@یc$ aH@f: g-K8#2wf`~TUEBG\2Č c\'2Ps0{UpճuDdCcpdqLEߍ߄ |#yH%j }[F,l y*\%M߰zN(}˜yaL_? hk2X!\#L?_=BG^1E4xɩN^}&jzSBUj<\Gt5T`-HӸB*GK }G*KI^2%t߼1>z럡mT*bqTfቑQL?90 [<r(О*gNJkn{,9;m`[=k3Ί ;5zŇ]z$ rI}צΎ.v0d㽹(NMyѨ+{M9{o G 甔>aa?N&Z+@e,whяDzFwIߍ@_c8kj㗌 :(s6Q"|8'yZuR2-:(q)N )mUi N}9Rs^(|8v|n>T& pAj_}ܱr&F)GwleE#X=mQc~:ەw2ZP;Vr Ē'VծdwYy T߅oByH柿\T¿ۅDD cuyo-2.1.0/data/pics/mdEgoL00.xpm.gz0000644000175000017500000000505512412223246013740 00000000000000m[HS[+" k1hS"{m!RJ3j{/Wbpr 3ߜ39t}._EcoܻH\\z_`8$ׯ~B"{Eu*k 9i ` *]&EIQES,A)RSDR$j"aQGGR)\̋TV*Ej*I2_GREEMo# (TY,$)ȪD9֔"T9ORQ J (B1'(RQ.RS"U6%H)RiQTY"<)Se[6drByET%*9EAR _VeBm6+J+l'IꪨPG$M`-EY"kꘕjJ?ҢS)FPJ9TZl4Slh|*P_$U=ѵ5VԋΚ|FMz],F#@eFԠke#\Q(φSSMVRdžoh:Mkuj] |aton:y2 ADta\<葔 I'o|F) C']Q s$ESЉ9ASe@҂00$_e_H-ӠF,FWg;o#l bC)u4!iX $54ihiɢ%49Um٤T*9Bbm"׵ImQGAV.Eprdg&v;J](Mrx I2bŶa0l6  Æaða0l6  Æaða0l6  Æ!/_Z`8e AFa 2xat]!`F_Uk6z<(x ?>ۇKdЉ ~=)Ѳ,Z>kVfd蝾evxx)r2ew_ko,+fJ^%eY942{ N\ gé\.E88kp5n$\!o)yg|vܝːr.j2xX9D)';lg[$dl6'ò[ʦ~Yz0(Hh12I.2L:DH3; $yg3dʊ #>}>A7@$!7Û?./<(,*]*q.c|ߪX Z~9kap|^=>>>:4RYa#9~:t=:o:4ϪnjA6'oPԽij1!@z1VƺṚq[qZB X,ffv3G1B ]w8phz=8u*Ɋ݉Vys= U`k5?N*uŴlg:\}:;Vܰy҈n{ˮT~j|J#-8N8MFh5 ^Za^>>,RipnE1/pXuL(΃ FV?\vPQv4!KÅ.)Q%Qxd:F`FAEx0녓|:!S_;=z\Ü~p!6$AaB 9 ܞs#a~50? 60u}}ϠXgyU;Y %^LJ vuN8^dцΙ-f?Tb{iwrgaש3uf2Q$CFa +8bWf?L~w2 ` n`GTl !:klBŊ;u8z*Ϫ7Lt$I$~[uA}B9}yŔ&c]h њv ؟MQK((Đw(#'("cSP1OuB! 1E3< )dz; YlCkW ?H4pn,ȓ 1Bؐr ?aFx.$xh&":Sa HMt#q24;APdBBؐ 6D3„e'H0!!Fv(ZZ6R*0 DRjƢa!jD1 +Q!X%#}c_z+1\|WN~s'Ak5Ydddd/dOg 3M+: cuyo-2.1.0/data/pics/mdBoden01.xpm.gz0000644000175000017500000001015412412223240014130 00000000000000YWȒ>3`iw V;0Cb8Id,&Cmw3{v]u֭~n|<}|Zoot`c;=n}ՆE{LRcZƌ86ُ#tTK6Ԧ/)7mFQ恹Ҟ6ɉ3c2w96*{h30h70$}Onj[s?mn罶1dTj{WHb f.)č6 SMa,fϸbJQc@Qfwh]L}yn@[`3>ӦoѮohƌ#M"ccMx ؘ$V $_Rh)wOڽokftMEn+cc*\MIXLA6{|M'b7W߶&ܘ Ȁbuuj1mƳ{U"V9DFձYKf`@aCJo0iQhӸόr>IeqK{ir⾤Y\} Ξ1Vm`enB1mn*DZ?@Q~3BV-pe5Wi۫[]ּ3R!\2ӑYWk{XJib201}C؋LF_[3ؚ0-ٴڐTmlWBgy.D3ɷ{;f1d1wom.ژFVA95 6sRgoaoa+z`Ëu k '8΅A ʜ5H~11p蓵9ӆ0ū^p֎5l%NuӢXY8K}s2yF!zK< -4g $Ihk\p\4%EZ֝΃iڀYe :x`<|i : @%se:yA aɚN=βi+Fys~\(ƨJz..t= 0l?Й@ p|}pdUU-;YwyQ]ΛN-|  hr(hB sLJnCG_TY&#j,Cl7*Ft/_D5G1:foNj< qxJYWS!s|{YVUYn7`BY=j]u*U#H?g6VFvk3#>\gaYNG9^˹aN%1tPi=qO:` hȻ/:yfzL7\{ :áe:%( CUTkZ/˪4pʲ\6 t) If VPשVPx׍N,fU&檬檪R-G1/(T{y`jlWòjPPGkZ9NҴAkoi9}5RU3uy"U"MS% qh,x()kZBҠ=Kd=~0@+3]VooP@LŶ⩈f*E$u4R]u}U'E~jjvw]e%  Ҧ|Ȝv F :TѠ R NNN͒BM3`K`PU#Ao3*=DGoO#! -2ɤJԠHp R"F`jiGꊂ1YHH!g WZ!b~Y*U*JkoŠ矞!_u4嬚~EbJ\R;-duQ2CVE1Z{{2)XKEDʙJp"n"@gʶ˂X*QFb7GE!g72^p ́G-iCɘj$׉hd ut.xP\/ hRPߡ?98=UcuPjR+"rĐa&X.iZhX chZJ]K xKl\]U-QO$wL!JgTQ yΒY|z{WN&[ːSNS@5ŕ ?p 7`X'0B1NJ!0!:C0Y׷wPߒ󄱜bHEcJ%3V̢)Qs jq|;g|OǤ@%heIr,S[Z# ~@ɟ$BȀ Q{@>?abNN >1׵-r{]j{&!+Qy*6A#Mh9@ Eq'ZysamDz#랁ZtZ* t[乁.ݤtFdжms:}i̮>kAcޡǨ ߣOund0Mޱ?9\Y-k, k^1$tsc5eF|I۔]l;>CS;x]+,V-wl0R7`cuez#ݷ&:b5 +|[{(vWtvH'y򴴎O~.Ĵ=zNVT"MB+ z?9|FM]QkuW#G;:::\B =Mtub6Va)a|Oz$<ը&cuyo-2.1.0/data/pics/ithOrangeL.xpm.gz0000755000175000017500000000064611101102053014453 00000000000000MK@EW<ꮕW+!*" ).RJ.En&v27It2͕fYe8{<,Wfzuw/Xe;zr0秅kk> ".cuyo-2.1.0/data/pics/mtr5.xpm.gz0000644000175000017500000000101111653006612013306 00000000000000AK0{?EhnA؄1&xc7iIt^6yumMy|3nR|얻וY,ߍ3f~z6(/f>33s^1+sݬٷSW/~U7Sb)4F'ܨqTT4T .HQx цRn퇆~/+U_ְB #Ku܏ q>WUWj *C*6%2 IY$LRBRa+0+B6aʾ0F6i8qfh~He \wJש]\\ %S#?cNl׬D g5Z6`Í^)GVkTёVqt`ׁ*ɗ '`y4(C4Ĕhl`67PA Z#/U~]ߕ2lcuyo-2.1.0/data/pics/bpPinguH.xpm.gz0000644000175000017500000000144210361232217014140 00000000000000`CbpPinguH.xpm]1^ulY e/Y^ wd24BanwyL&wbm_5ŏ۽nןo>zѼ6˗si^,/޼{bpmeVw6V;OCuWWjN\@xIp*F>j &@Xᱵ!] EDz$! AHt>i2)D/:긪w_qzy6G-!Qͣ a>j~ IQњBSɽF8&iFh˜װ|YA# JGLc,4 q;VN+ZN]q>G-W+BJNp5G<˄$rx\ۙ(.F4?O?¼x*o˛+c:WPL-'C;YےnpN@7o$#*wCi0r/}*%@UcpFO#a"6p)YA2vV8$pCQc:t_ǟWV&cuyo-2.1.0/data/pics/ithOrangeBlah.xpm.gz0000755000175000017500000000056311101102053015124 00000000000000_K0g)Q)> "c{ ~wrɥs=Xm?&w٨[(FGl5/w(y.夬W_᪂ YI wo+5G9?=סRL:5lfR艿kPKC1R韕ؠ5gYSg` ɵM{t.wz7Co1ݮ5wfqM85A1+V`< ȫW@@>"k82呢C رEˁFx&ػE҈~Rw?)$hی]I݋!7Gs,S` kKnRyg/^ȿ cuyo-2.1.0/data/pics/moFisch.xpm.gz0000644000175000017500000000161211051552442014015 00000000000000kW@*PPIsYd7땋RZ*rQZn)?8p}l*Nceѩ̍NZ'm:v*Nill:ubl#Sw3Qp0S%O Rj*1 ,C<úaMF9 xCC BU }#V#W%4}dYӾ[@D}pP%\gR~rA;`9wBj+*<2TM(Z@qSN 37qΌthxY#ȸ:<9`q-9ǹALcd.Y>(n&XKr FItKc9kߖtv9d;QSY֢T&m,gXPKeչ seZ|F/T={AT|ѓn< ZW>ݏ>9y3"؈/1S?jW);N@9;DzY^l33&P/Fb:.bt(!]~[G/鵚bKbDF/n{Ql |}kd6f2f[%3l{sW:ݹW3h4]qw>|9lD)ӟ u$ cuyo-2.1.0/data/pics/jsGelbFlach.xpm.gz0000644000175000017500000000373711657534402014613 00000000000000Ϗ5 _aun r)ˢV)*mo HUUUA z@B$u&zT-ꛝyqI̛¥xWꗗ}w/޿\_ы?߽'G4nO'~}=oǐ?{1Ώo>{*N7__?Mrnc&CO0#MaIY ܔ E(!pjO}YTY~%aȥOGRլ,?P+#V$rNOu^E͉ a>注]˥ >ʗP42֣sQ!SZD d6Vx UGj)VKIqU浊27YTwau6vg`Ә "l̆Y!/s-FTd7G8znZU[8uMSӏK>tgPRDvs='yRUIj\(%qa^!XDB&Qn{ r2@*-&CٯqQ)DltAzl~"*Y]21'?l?llu(/@Wior[( .]4k`Z|/t\% *%b?VeH?Tm"ay""7R~3Pd}?5z fE!F( +!?6Lݜvf|ӡI7D|u-5ސ_"zLrP"5 CK ! gMI`eooZ ylI@]m䳻 эoɇi˴uҊnCie'/̀|E!xM =qaҌ=d_DT|M~92HybC"aCH@0_i oȇܠm?H nAN7_h-)0]%֪AC|!?@2liR)O[jGl,-Т$)?F)j.ZZ_g?U"8sÈg+7l] ?8΄ߜKla_t/"CdyJ&v[` rw_,/&ȴ\),ђYWp;p!9[cQQ - ~~bʛeLqbDӓLȡqڞcX S zY=G'Pۘo?! ]ŷ W7)]ܖ0KJBdWI.-H_МM =3tzw16p.v!.ߖȡEat4`H@ceR,?0{_&BĄ1#Vڱ zGzcA 6E_ vKG+JA Eܷ]MhY~&p7u:<4Ʈ;U^ĺ@;(mwB~K7Cv_FOd<}xK?eI~ ?dbHT.]V`v5peVba19{8]NbX.bgѱ= 4\a# 09O&(cwWagx-sFˈ9> Šs$4v E%2FHvyJ]'ݜl%#-A+ FZr0WuF *F(.ZMI9Ǯ#r"jC儡}s0s_A+ 1z%%Sd׃͠Y9w8.# I"qR7];T{ oL>7pEޘ\]0ܮ1w "Y' }eHEa2 )@rp 2@ |C9pE9eVn]얰t¹9`3_[nO6>{.qk[sXbW:P7s0@ICT$p0Nܿൊ‘| #sC{ .c770 QV@v;P\]&.qW䞎G8cBO|u wx1{g 2R4M2)mTM1ƱTQO8V 0ֆB,%7HQ4VI FmRON9-x`%;"\2ڀ3RZlV);#BĐ*Exnjz BN_ݱ2jɊ7"\?q2jI#;FFM|uDkWw|X?A/ׄQqARd\%aS+eHrꎉDDV)cw<͜K  b| U1|qƑղ P&10R 5{?fܯx HT %'*cѯgrp9qY 6z"Qa!iJQQ#bHZI2vKCϨI=вw6xV6HKŦVI\{ײD"G"H$)V@- oJ揈vny~EKXTE heShעuY-WmrI:f[E*J~-"AD\/ũ \if;NFݡM(D*V8~tLD}"0&_^ĕRZooHFlNF;T| Eµ,x=Fuac~z֧g9$!ˊm>%YKEy&E4g 93!&6d\0EMlyM)\g[euA`r̝-1ΈDJeT ֗-sљk"/?2SHcU:N[fޙfzb~gڱ b#NS~&X/3KLdyY]G};DgxG2H̾(ָ_@8!'ѻ!61ձՂG"cm( s-a:Z&Dx-{ߺd};󆝍{={_'}?F?1=yF,hlQt 35tM??2K(2v9j@ѢFތGW]_k<ZWX[ B0ƴA ;R>Fա }kY$#׌)Nϋ!c/$cgp: Pኌ5cMiR:cOueF1vV 'J6L"gC0>4{_Hh+2:>~]8Bgm6[]?ތÑ884h; U 9tʖ\!1\Wa^Ȯ<4Di3j8OźkKi+eаﷷC}NŐV[T?O,c+*:"Hb}hՕ)WWٗ]Gtid;䬪uxJ@ވ'υ_<$胝]\#SN dby 34EMռ>7#*zu1` >$H;֓jX. w蠜qhi_\dmv,Cˀqn-B1*7: fy(,iyc(F^R-cPG_޿}m[Ҍowx1{gwx>UFxkcuyo-2.1.0/data/pics/mjZeug2.xpm.gz0000644000175000017500000000243211043161242013744 00000000000000;oG {} BS0 NQN3|,ޒߐ^П|WW_Ow_>?}~^_/WD燏=jϢc:?|n` 95 -;ѥ+ l[HdB8iV2`o A,1"˪y |k~7+'cF{'h NF|o+>dDΛ#}i:p49wE!]I tѴdC «nfLJcDw?KfƊ%"Dv2)E=fCF8wwD{I0=#[ y53*Zβ Y;b)da1zZt'Ӳ2„ Lyˈ^ 0hqbx1 S3N`/ml G2!UGge&c87 0ʆg1X{;Aa .a ٺd1ܞ<0 8lv4 ΀'  ;ȺB}RgfY~~,c>Yӌ3b21&8` DVxr! F-#a0R?S+e@P/= gkoIؕ[mp5dd1z8EwV ,YCt6 5'#Z}jhِ 3#+n;0F`Q/ :'!5a5G1!6$IpTa)0Cd"":? `Hp>_<&[cĄE^efcqe^MW1#3"#ޮCj|d& %)3@FrLf`cD1Uk7{)ϵd 0ZطP R[+. `?Jvf/H5`.:&dΏ XyABԂ5bdNW_#?¸HAl0#z8itW~??~F?dZFv_!KPiKMBy3R2!68k8&05p91njxF 71#v1% !Sׇa&Kƈ-)UxD}Uc (Fytn v¸oWL\>cuyo-2.1.0/data/pics/ilBlase.xpm.gz0000644000175000017500000000313107556014504014005 00000000000000{=gimp_temp.160563.xpmMo5WXE[!{qDB z(T⿓{fKic?f2@h E:D5SdHnF&ߧ(5mVa_ԝB>N_a823&Y (8%c B؂Qm xR@ (OJta`aݤ ":bZ2(Y, =1o1`-]ZF#~ ٽ™!%C9g`s%ŧTbK *(EAvVb(BG0 8"Ybgƙqf|粷a> [{pSÇ;=§>lp爳1gNRA @@Yctn:vcsfilܓnN-9`aЉՈ,K;^sŻŐ=cᳬu=bgG1r }d`Ht=$l[0Ќ^]xnj"CiGbOBZֹܶfm&/Na!%`?f3TU; UgS_f &I!F.Ƣm=>//X'؈k0H]j(BRƘ0wmo񴙑+cMM(R 2cP2ȸ ty-12dZQ}) Cp;ޕʐv8# CRN֬ HQB\\`3o4\WCWh&A;#8퇲yVP:R!Cj1kR\ڷJ Ucs\Ui !ce*`l)L!zfyc$d)b9 z!Q.s7;bZ !y'7lgXBrgD PZX̚b0cPk1 r/͠2|8np.G8 $p{kF4by `@A(-@</c f.z- TX ;:ƠV߰jxiVs3pLY?[(>kբ3;>Ss3 mKgP׍*dw>ׇPO`p!muA%ת>ҥdY Y _b}j0Ȁ;>%#H9e1xSK2YphJDJpoC0B}C7Yagۍ- t]/q1J 9HdWcuyo-2.1.0/data/pics/ibwTintenfisch.xpm.gz0000644000175000017500000000326007550521112015405 00000000000000<ibwTintenfisch.xpmnF~ iPAGhc5#@[wrfvEYIښmpIi⛛ݯys)?=Lcfzzx|xi?uuww\]ͻӼ{8nw߿ݟx0Hy.+fc\DGLHK MlA ӁA |._zժ29aciJc=dhg P@ً; P ; Uj#:DtP-gh0M`B^mՋ ҤŰL<~IYhݞ{@_ j <=͐fC[~fmU+[X?3BpWC\"k+pAXdUpq%Y\8S1L~AcSL6O=~~3Cvt?~AI6ɠu<&5`*AqS={͊{nu`YG#b@0eAOnQz V]sȜ,\ PYc}e Iu"udFB zu?]u]]8,~ v⥛^{ 4Xv;"`Y.d@>;J#C,H 1.C+ARG!u7R#?XٴM?z%0Ul9e yeϓϥB>` C;cHaO/`xba a_ oC(`oB_h+Zx-кpt,m poA"8?!7y=S3_%% _n-WWjBcuyo-2.1.0/data/pics/mlSorte2.xpm.gz0000644000175000017500000000310211672457347014151 00000000000000NnF5TZQ % (zAS(M$eC]Ҧ4;%bb k~3=X:؇.`sie|gAp3/R$}g^e""_]< feA0{Rl._,c"I;~2ROOwri<D2^EifIpx N,.HGe"K!W^D"B\܆_DO>;I:SY8%'9Nb鹈D  @aP>c⧼e9|}.Y/!s AT| Q! Xby7\N>\\M`x~hx>9wgXVfWpwҵ ,l)x ߞ~<0tr~<p9MN]}jty1>v"CgEWLNEaTS{Bv/ /~+xa}*wsy 8c7MW{Я{ v?`"d\/t=6Nγ!@o~;r?ؿ q~!=|pzMW6H׀] 9k;)Ԣ6p V}i&MC~Ȁ2?MVեiƐ0&OS&XAyZj:ZA6S:IT$/dpj28G@Z'& \*T?j4sA|acfj :s E܊C8՝*1(ek la]_ɀmaՅ‡n޷0=V^^oǐEl6AeЮy6f֟y=cu&Vr>2Ħඐ>YYO( OPo/Űg;3CO@/M?d@idP62?MVեi@e3~2ඐ]yWtiwCV73kw[_WeÚA+T4 C?T|?TT?MM}Qj:nv}_c?ȟMϮa]%4g?b ^AbZmXm}p_7ZQDKEcuyo-2.1.0/data/pics/baPower.xpm.gz0000644000175000017500000000062510361514436014033 00000000000000JQuYhvE BB\XR.K#h#e=;a|?v3]^fz'4yLt;Άu:?L݃NnH[tp?^ܷ8,ǯ?fhe/Na0ey `lDyki FYF@^E.`0%}^^`05Ml2 Q5% `0 0"{ `x`0 c>_k/a0UF]`0J6"`0~`de0 d#W% mbs`0>oջ0Rl `lD9`#"w (و[# "rx=ҤBcuyo-2.1.0/data/pics/isLaeuferSchwarz.xpm.gz0000644000175000017500000000075107550521116015714 00000000000000}<isLaeuferSchwarz.xpm]K0k+B"STo)e]6Q=i&9f]bjlwn|mbe|ZnnGz|{`g;6Arv8'liw5snf/|_@o~w+Zъnfs }z>_/v>ߧˇcr uq9~@#G 0zuck7U#j[0`Te #Ry6  Ym7Ìed]iGBO3џf? ؼ$yCyzA̹ᄯF1Ch #?9cigvf*y& #7L81PΕ;%=*10`dԲW;Lh6ü8V!2;,1da d0)󝅠*q@.jA̹d" Y#/tOR{+0j?<0c$7Be[@!c$#DfQڇ*\0Zw#6r*g#5KW4 O4^ۡp~8˥+1NjxSs2N=䂀cDUFt҂$F3xȘwAf1 TPxM B/8FDu,: sz f_=FuggBi2HYw'K:[1118`L~ncuyo-2.1.0/data/pics/bxBuch136.xpm.gz0000644000175000017500000001356410361553650014110 00000000000000b=bxBuch136.xpmiSֆ?~2B im[QU@iķ$yNy l!pqkt1X"4=7? *+ wiϧSz45yxogbx+c_bK-ppiѳN p9e3E\2kkVIZaέ2W:.z~!R^d܂цi9,8z. fs+9ahYy\,,AzA#*.u'_dqg3{<{%{+)e9[*ssUT҈*O:shY/XDU :)Y%ghi5=G:WcN,a 郊-K/v,sW(8 zV3C;q9eq0زGdenk%z+jP aJ>1_E>蚖6sosf۸K8$ .L9C=㲔L|г:߸Izq^+ d.ІiЫl13=[slyN-JFWFW`齏˾ӷuRεoεF۠s!V,FTR-8![aT??)I,mF+ a:Xm Z-A0l.s5Ըd/Ɨ2M:\l ERRĘlئ'XRMiZM=;0F5]ŕM*?kUU%>bm jfKMU5YSdmlkMkɍ_G2]muYoEalQl Ä}>%A[~Cn!:BՏNMкbp^,JɀgoRU S+2/ãYGPEG|xB Kގqk_e5D}o}C"bb&eEӶ'-1@W0~Q>#*cȬu Pސ_R;3PJEO)8* nPa7t 87RJMNa鮊$" cB]Ga!㝠G7) SEe{z֯0n ;j>f@7U`vf|e۷A-W.!cinԳao%UoN10R2xuSٜF{-o\>Sn1rcnxh+Q];o""dƊ^ƻ$QzbvZYAU-a6& mx|ɵ}]#:t~p51Z߻sUcp2b1f=@yJ<1T%iro]ܫwnUǶqN'rd `L+J<^'onQ~g/2=/'I^v,psjk2yUG=q=ݽ-sno!^t\s`Gˈn4[m`)tzso`֛o䋏JUB:FGAW ;v4LMj{KN2dbt_?2Ĉ XJ' $ %%K K*_d0Gxht'\f3#<6wԔ$k$jU?QO5gi'78 . I6Nƺ Q9oSWT^^*!_+A =2oSzMMJrJ#t^kK'~LQoW}BiI,AN###|=GQs]Ky}d\B'4g=zt 34yJ0mu< G2ѳ71FD &Ir@ysTTT-M5*y`<O lf|D0nT>/:- 4^ߖ+[b:)zWgw7W9yU//Έz3LǠ9B0C"#p S4aW&F(ҹNҐC". yڣz36حQl8{5(QqvM!45$){L]x 'TڸO5,45z[_T]؉5 )!CyΉbl@N?<$TK{SV4 |xʤ;儍?TRXW8w=b(kk὘Uo(=uT;yc3:KOG' iKf{vEJftXOxLM*&ޮmiz51bo` vL4tcN4»V2 k Cd._@%JO^\H2i c0!AWVc.=ȧ&@c4{L B5H b<a4D<|x1BN[*JBܻX㌏9:~H&cȺ Mmbt߰7;{)xi2JA>? Qh49u`uVlD6n!ԑǘ|J 鸷šv3d24y&l{;==LdUt50%dJZB˝@fԍ36Z gzEIv?}R2z!1N% 5&NǠנcɛg@y9 pFDN J 7hg5%W %Xz..Jw3ㅙ :}vkq "lM .|UqB#V.^bN#T~kfbn)%JT'%pΛKS N&3^"w?u U*jWDlLGe)#KZ p6}$3Rkm^h?ܢ:2F#fLbWIۆ+)meSW4'YHǓ(ъOȬ pSi  @N4䩿˚#|n_f0f5c r^i ΝU  z&B02ZЙ\{| lQ}fdhYKuT[! 禤/5:;`|GA%%: (c>.8 Rq6~@9؇"`>>=YBG![tK,FLap)/o# uq<ži㱁L9 Hԋ5%$ Vj#8u.< @^>ܨjt1Cp̠jwP^ پTb'wTϫx6CfD_14#k cv.\FCɘaF3>?]Pxb>Y3?.RȈB"K:E`cS>s f^3( _!#(-fIIEC\] #<򉆬7^1h Q:v13L`BZhI |DB$>c|\yt\2%g@>ZΚ9CrA2$-/b!JE{WJwV3RqBxH:jf6qL{0AHDžHN4 ?n뺅xuH2U{ChyB`ddC:^('K`Zյ|$ ne`޳Sǟ&3I3jf  ^hƲifdyeu) G˯0z2RϼܛmU= D]׾W59'tL5LLFX}6CKBQG;7[U['2i}ϦX=~@]K;4a.<\:Ab1ZU>kڴLy6A5+y uE/sZg,R>t1zy r BsfzƊy;ǡߙ8$gi:rH2nUsH'㜄,Nӑd 59\P3ޚg, &"0Vs]^"Z]sF|GQPAٳʟ%1џװs&>(dD <@E ZrSs.HKCmZ+O$eNȎyH:Vٷ sQHՂi4-gq̆u2 ϯoP3^g+Μ %ъ"ș^!p.e[F>UБBV0Z⮺9CV,rYT0tT(5@T:D _Uߐqw>[B8戙e)EI\;IϹ(k^#ޓ)Ido!cEIT@>"dwy]=:2` xPQ"(y:Ҹ`ݮ$IR.x"*x4 CN>8%GhsƼm@+R,PQHv3 ѥfI,ЁopwdSGH~Ӈ}Sʶ0M^[8y[* EY[~,ЎZ?Ѻz,_7v!:kqg#w'R䉏j{U /r.kbajGbfhAG]A˂Ja1VG[pЀj 靵}FHS۟[ѫjlxԄY.&b̒iK_@x$J5˪q˞oR9Zۼ˻pY6!l]^f,FxE~|ۉ3ϡds㳹QW~`~4w4Mu-_ '_ &e vhܘ Mz]$g(1QbG1c%8Jq(1QbG7:0kcuyo-2.1.0/data/pics/mihGarten.xpm0000644000175000017500000002441611653610753013743 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 7 1", " c None", ". c #107f10", "| c #502010", "# c #000000", "A c #ff2040", "B c #ffdf20", "C c #2080ff", " ####### #...........................# ######## ", " ##.......##### #..........................# ###........###..#### ", " ####..............#### #.........................# ##..............##....## ", " ###....##................### ##..........................# #..................#.....# ", "##............................####...........................# #..........................# ", ".............................................................# #..........................# ", ".............................................................# #............................#", "............................................................# #............................#", "............................................................# #............................#", "........................................................##.# #............................#", "..........................................................# #...........................# ", "...........................................................# #.........................# ", "............................................................# #........................# ", "............................................................# #......................## ", ".............................................................# #.#....................#..# ", ".............................................................# #...#......................# ", ".......................#####.................................# #..........................# ", "....................###.....##..............................# #..........................# ", "..................##..........#.............................# #.........................# ", "...............................#...........................# #.......................## ", "...........................................................# #..........................# ", "..........................................................# #...........................# ", "..........................................................# #...........................# ", ".........................................................# #............................# ", "..................................#####.................#.# #...........................# ", "..............................####.....##..................# #..........#................# ", "............................##...........#..................# #........#.................# ", "............................................................# ##....##.................# ", ".............................................................# #### ##.............## ", "#............................................................# || ###.......###| ", " ###.................####....................................# || || ####### || ", " #.................#....#....................................# || ", " #................#......#...................................# ", " ##...............#.......#..................................# ", " #..#....................................................###..# ", "#....##.....................................................### ", "#.............................................................## . ", "#............................................................... . ", "#............................................................... . . . ", " #..............................#####........................... . . ", " #............................##.....##......................... . . . . ", " #...........................#.........##....................... . . ", " #.........................#............##..................... . . . ", " #............................................................. . ", " #..#......................................................... . ", " ##.......................................................... ", " #............................................................ . . ", " #............................................................. . . . . ", " #.............................................................. . . . . . . ", " #.............................................................. . . . . . ", " #.............................................................. . . . ", " #............................................................. . ", " #............................................................. ", " #............................................................ ", " #............................................................. . ", " #.............................................................. . . . ", " #.............................................................. . . . . ", "#............................................................... . . . . ", "#...........................................................#... . . . ", "#.......................................#..................##... . . ", "#............................##........# ###.............##||##. . ", " #...........................# ##....## ||####......### || # ", " #...........................# #### || ###### ", " #...........................# || || ", " ", " ", " ", " CCC ", " CCCCC ", " AAA CCCCC ", " AAAAA CCCCC ", " AAAAA CCC ", " AAAAA ", " AAA ", " BBB ", " AAA BBBBB CCC ", " AAAAA BBBBB CCCCC ", " AAAAA BBBBB CCCCC ", " AAAAA BBB CCCCC ", " AAA CCC ", " ", " AAA BBB CCC ", " AAAAA BBBBB CCCCC ", " AAAAA BBBBB CCCCC ", " AAAAA BBB BBBBB CCCCC ", " AAA BBBBB BBB CCC ", " BBBBB ", " BBBBB ", " BBB ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mdEgoH01.xpm.gz0000644000175000017500000000421212412223243013724 00000000000000[SJW2 ș9tD |cP  r$z5We\dUYK'>i,"/YsmEZ$ KG>|MQH񗯑H+&TQɥG9>;P(~?Bsk 'q \l?V u ^]Ӻ.@?>=MŐ8==ޏAuӹ ?B6'ԛ2$F )TP2C0@:A@* (Ip=AӏzS @u2ltʐ+h0#Xg\b.G!10/\f P(ߟ!x~AQP\'er0 r:up%9.n`aW̜=>f"~24$,BzIh[2E?zRgP,F!fדQl6h2"|BuC̑gFӟ!I@ހi2f7 x]d>YAÒ1dwܮv<Q^ )@-3B!d\g;;yՎ(T5;a7xpu[lg4Ղ%FԷ{Ѥ=vg$EɨInkqӫصG-ehCVFjU=v Ц Y5 o޳%JU7p {WPƐ\Λl@,7r9Hxԭa_ Kڷ *G.C xJxowVYSFPu6`8U HW:g0V-BB4AA4Rnm!+0qs[  I -DΝPx!B?@|<0{|?C1ɋnlwS_J dWήyfW otP(:ސU{R8GՊ}LUئ4t:x:Mxro yZ.p+UP;tXluʂ B \,3Pם:K]yz}t_V^Vt]k9^K|; 1N:@ytؚK"5/@ؚa6f{ = cwt>{8 f*``f@KeYi'QGcuyo-2.1.0/data/pics/mpAlle.xpm.gz0000644000175000017500000002377211653006611013652 00000000000000{w7?E(66=I IڦhCPӆp >ki^i5䋨sZ]ۏzf/Lݹqm^~h/.L=;y{SOs˭ԣ%gtPLtI^71ӕ~T9Vb/-tULgtcn~+WE1_kKr1w^ӫT9/ +K92QLϋbk^垓ӥ{FN ՅbALChi{azb<‚./(EUjIN7ղ,,)9]YRTr]RTm71PӮ9&Wޘ71*+&ž71ݒAt[N7ML(71I>qӝ񊛘,Uqkb nbz]N]1m/ސeqӛr!nbn*&{r"nbzKN&i%nbz[N&wtKw1*nbzWNMLUqӇr%nbHL7MLtEO9"nbXNML֊S971O)}$wܒz%KK9w x,eu?e={uiY={|J1}!wc//tuE]^;yE徖Eu*ŠzSUu-z#w*ɭJN @N7GqD!|]:#J/Ȇ*Q / 㞜7TU;#[]u.(pmR:x}scc:8kNuݵ_vmח+x/#;߃qed/E/kň23qqMyvq6.63b@Yt± =|>ˍny|+|/k~qW~\|㫅ɇs3?lq㥣ӷx[z#͌.5|y8v\qW}of<=XG~qW}O1c939מ)"3N _~3AwkGl|KΜt+1|%&>`qW}+`\1sXU/X5%^̈׾jv飣`dlQԸ/_>An.fm5# (h)R{[>^<ϟ_7(Ic[{4:,ߥ?t0#=|.AI# FF7#2,FbDUU`l{aseՀ=-+?g8q,exk? 'Z/qW}qӳw}Bs;]ukw";7|ɋFީ)^y~B)Ι=I\3cf\+Џ12h!8RdC0>bdC0?V`:Z~/ǪC~1mk4퍥?zh{~E[?\XGUرKP}r#Ɉ/Yh"`$?:`F(R3.Ƹ?هQ3qLkK4~~'p{4/ [ wN>vw/ҤgcC^w+_1v^|Ϗ+ƣOϱd o~{̈W_.?"v+7{n7+^oqW}-ۻ%wPë@W+3v*lqckyw`ܵ'OKֽ\qW}-.g5sv O͜]Wz?]X_?]x*13z1cGA? ~G0!,4l`4sG1Gް|Xڞ_~@31ߥ?qP?d2ƈ(#`h0z?Vh~0chcň?➌#.PFόs/ Ʀ)_`Fzw\qW}jxE=swWCoOx?y&^߾GU_cKhW1x/1qtG]cc9µ'kx )ȌȨ>GA? ~0vf4{Vh~6:廮|F`D|"#mC'cYY^ތt?Cߛe8Rյ/ZN$?f3*.nv٧y,>Zvw:eXq /t^oG|xwěEŘY>`wSgc9µ'kxf̌3b?Rb@0qGŀc]Q1?xӢ{Gдb [534DuG:o#Gl~?|DQFv"E_KPưǒTcc$ѵ0!3jdFόxf1dFZ(㙑ό4H"#?`q? 8GX14&X2JlO}G1MOyP_ך{{m+Oc-|kʯ=m]cfwsMˑL+|='ϼWxR\tϸUCUʯŭ|W}(՞QczV<5`V>B*[wgΞ=_\=UzO1yѝQs03m߽{5O I/Ɖ)x~چ$囂'r )0pS8g&ړ5<S,ȌN\9VK08E^gOg ;oZoՇАG}،ۯ_o2BKSyǤDF(?6+Wf=vw[TF(_c,4p͊3=|^zxGoح?V^Cf>5^D4郀gJǁSx ]Rx{U`|#Ƞ ōV|wo#0ȟ\Bz<31|SD.5)0pS8gR$q όQ[Mnm$FX?t0~b@?]ʨ Pt=AAAAAꏺF=|rlh_ C?q?MlCR`R*y@|G0_ܨ!=m#ȠO!'1fu8BC9~`tg{, t=c3DHh#1#HdlĈ?#1DR{?h{9LQK 0_ܨGAχ}F? Zr Qz@!#?‹]Qz AАNҳ ʯJsǁX-+5K1lG]QǺb@,ƹcɀXo$rqB'ǃ6/_aL'2vS`c9µ'kxf0:*r2#:Y?=ΊOD?tgzﱠ~.G"ccc$F$26?FbDG"ccc kGP3?džEk}a%#XꏾX#?X#?X#?Œ1 y,r㙑Ɛi52gFB<32#FfC~`!S06뇮<ǒQGb~lFV#1?6#H̏$fd?}ab7/~nؘo ~qg-d+v\ZmkT|^x_ּ?e2mF~q^?mt_L3u^_0Vc;ۻoXẶ jXnc}>gvcgqx+H㓆:2>]ӄ}.JilO#h}Gz"|SDN[:u \{_-5ܖb_OqCUΏv1{4 'GxUΏxi? E />+4~"=m֩>5[3K'v)۸^+V_cl-?vƵN_X{x_am􏅟k҈amn]ر'kBHNx ko@y3u}#?z9P?4Rs OkP GIR9U?־P $]u0Z_ #\C #P?61>.#UiG.c?dO$QgksLo ſ&[:u L OF;Q}!160!]?a?B ~ؠ?2x7\}2Cg֮=p1-#GĶap}r~?b۰G>9QZ#GǍ=rx^ _*`d%>Q@?yc>Fڌ|ѪO|ˇGw](.XNMMB ?пyy(V?O>.#fIQAP#n-F0fk$}{:_wP}GUߎٯu~-?B ~gh3!1~`|FG#v'39C>SqB3"Cja-kGxp#T_c?ۀ#G>1_c>ڞW~@GOrE1b~@#c/ڌ11F^`t.*qwf v?b5J?$?Կp)3T8<? Uk#s?Tkw#n-S`c9µ'#o MZ鏱M"h3!1h3!1v#Y]K 1ot~e~1mHĶA$?b۠?}=|rcq#ߠ?+?bMOԶ#ߤ?Œxb &f5_(&Qctj87,h{X?..k ހM?zF\Q;'@h2?e[bIDy~~`l`bzA*ŷ>`5t̙KZwObdGAGF? UI5\ 13~ xЦ囂'rN1c9µ'kxf̌8;UCcCܬ5GY1"aϵA e? ،`DLj`DLj`Dǁ==|rlf7L, Pg|d菃GS?4=|C?^kF>y#`? F>7GA'2!3fFF4wWqLk;Nk_k kaf0*R #:`cqq? @KA]υ،h#1#HdlĈ?dk{~9LQvb鏳xGk##\|/n#ĠϷ^Ő'1'/1w*'1|'t 8gRp O01gƀƋ q ~sa?ƌGr~lFF#9?6#H&`G4AT@34.]Q04Ǻb@TU|?*tǁ,ȍgY1Nm ^Ø Od.)xK8I:s&kO̘GX| dYqj5gzﱠ~.G"ccc$F$26?Jm?#ѷ?6/c?*ѷX2bXl ?X#?X#hѼ7KOό4He<3♑Ɛi52gFB<3"1z?CcrcجpKFmY،Gb~lFV#1? QCz/Pb|vN:={P=N\7Ǖ7 co}ǞNmOm}M9oS8)3sIka )2wկÌjFYuF3^gۼyss!wgΞ=c445k /[xoGCW1]|qU.rհ5˞=wշFvSD^_2NWf }LxPTY\hׯ~ \EZQO0F+>`([~~#o+S5 )m^\G##ߛ|oFP?d02AfC##]HjGp~/\-K>)2&Ao ſ&[:u L מ$q'cTfCq#Ƞ0hGAGAGAX? ~2jǪC~1 G?m#(=nj!#?F-KP}r#Ɉ/Yh"Ɉ/Yh"`$?BC@G Ƙ6u.F3gC/Œ bu#`@|? ~?M[?QQg7,F3?55kb82FDYcGտ0FDYcGտ0F4=+F4?1QDC "z)xA{"wNquL מ)".z1F!]?G? ~1Z \ \ QgC~cň?6?G?m#(=n U}r#+z-Hdd{0DFv#ڿHdd{0DFv#ڿHddI`ed?Zp/cLqrό4He<3♑Ɛi5,@g#@q?`q? 8NJA?4GǒTcS} K#= 8k 3zk=2tO'qIo1vnj;̘3D1wjC|bZ ~Q&_cc чGgh>=Z^C<?&i3cf̌4u1uי13f8|FL+1zh)ќ8>E o4G?|r{yB^CbX I~q9}I.3f8 )x~m ^I[:Ɖ? 3)\{RZ{̘3g jR5?jo Kk0=r؃cEd?j^C0Xϥ>gig5B"]f̌13'ǃ6/_aL'2vS`c9µ'kxf̌13D4'&Y1@{#om0AFfu|rKFL/ϙ"y1㙑Ɛi52gFB<32#FfHgFCfȌ2 Hc/1?V ZʐKM?joxӞf?cuyo-2.1.0/data/pics/mdEgoH00.xpm.gz0000644000175000017500000000500412412223243013723 00000000000000{SL@ME*-68h h0|YP(\pfsg/ـ3>f|ۯb{W*}7og羸u$*ȟ"7_>DQH?&deMBؑH2`N;)T/(*+cG: ,X92RհC(Rd"ResKܤYFE+JIRa)%|D+(+ Y%2ɸU**P&Ԅ#`Y) JX']Upѽ VTX{RSbnB#M8"[JFw(CprqDLO*[t6a xAIBЫ$e W0Hɨ:(d2c3J=H6CB.ad7|mŰbX1V +ÊaŰbX1V +ÊaŰbX1)_?y /s~ktb4}8=2`02|$KF '|Z8^&CU$4!*D)O>1h4xq {bbpϚs\dI o޼vHk/B_vvvQaA-#z# +y(2Tqyჵ6߮VUC6BW ޮoΰQJr_~FpH{ݧ|_p8jGv8yA}ӽt)}~fcw`08~7]Y@==B f}?df7}9>ѮFZ>?c/Oo2¼ o!_a2YQG×a}Ck|^a??y7iR!G@,44 OAw_a;>< #eD0L0"߱( ,0h/01o~ۓabnE]>2vx[(c[M[cwsk9-e;uunG0k2K2;CX{[c i]YoWyݺ̺$33+p\''s" fe 2n9x=h8^2Arf32 .f깆xALf2IQ๰d^t/Ynzt3ۭrTm,!岄ARme&8aFCF.%4gض˦D.J-^o4ueTOdŢJԭ@R9(٠q @5HDVCr~Ngqke Nrm%b_.`vá1u/\z~<8C·8i6(B78+>-i=EqN9ndF]\m9+*`;ͷ>ڳz44UadU<iRtK/T_x<_NAOxܒۦ&_>mM^,_;Cux)kza79۱42ێc3[f?5v0?_;A?{/7e7~hxڴ$\ʶ޿GߧAS*/`~6äztTps|o^A!e18 ^2m·||dϨ7Q0G<(Uջ^0(a Pg@Y&SE=_cA|ǀ1GF::yo>ϠizQ{;?>}q7_E3Sw%cPy,sY1@ Gz v1 |_oS$`f`PBzCNS 0` .Õx`|Lh'@I_:c}t "PֱT 5 i{uC!:lh6%lIxEOc7Y:.8Ҩ? wWE5{bVAؿطK}h |o)ދGnvմNQbЅЀ&6t*\ R7\=0wȐAc|gp]p܆;pWƽpo_TCNٖ#3!*j><1BfjJT^4ao oCgB_sS jIͪi5ϜAx=e0A\W?Ӹ:R_PUmҠ 9 fѣu_Ji\'Z{g+3{o tgc3*[W1_Tyz$Q Pq.x a% J0(a P@0@ d a8g0/FKI}p 8z-1H CF$!Z_K }4lE1H C 7 u4 7 u4 k,zj$0Dg%{j4d0ZKgSɾaN)YyPktzj {-FOpߡd=5^$wi{j2:l=5FAT kOMf6`% J0(a P@0@ a% J0(a P@0@ a% J0(a P@0@ a% Jį%Acuyo-2.1.0/data/pics/mdEgoV00.xpm.gz0000644000175000017500000000461212412223252013745 00000000000000}W燎6"I@y@C}CD "Jg?{Ъs/]ڔΩ9@몆yBk謊C&vDGcH5[vmFOrp:;zJ3<[^<Ѹh:Z"6,b:)ZHkA(K^T v!y vX|g|g|g|g|g|g~2t{Z֩HV 24^ӹ{%^1Rڵy橨^Qjbh8Aᅡ4oZ\7o^Vf< R JŹ=;;MӴ:.+. Jv4fۮyͦo|J, XXPH džX>N4,oYkA)ru=[t^ogrRјl&XL& aIϳs l,f-+;߃L0Y6_<  n~6Xjo{,]ٻYk6˻ $rnqkk[֖ke2;7[E7w$a)D"p y$XNF#у"TJ5;!-yrp6YE,Eҗ[b%"^f\.B]_8LKsZxm`̶sZH>E`I[;ufXCqö@hqɐP ȹ&yv]}@(Ȱ* Ța;2!}uw @lC+cP8 @ ZhCpQ.jJ6 /Ka Z(/BJzgp U@4 U5ܵ2p\UJQ8ǭ!weHvu2pq +7s=~}+VBø( P)@?1)WЬ^,05:6rHR8L(!%˳ZCSp[ d`B_MҿZ_AuUC,8k붆[SP@vɾNcp1dC끰TxLX&ʠ`-J.wVmb@w(.+E^S@'<`J~n̆(a Τ;Lә<X=ekN0sLSP 'E7Ԫ&BKo6X_wU^ Z>w-goW/J~%%[8cɯ nEt\ugĜٍJ>%W`*ۑ+e'G͑qG#P b(*|:dr勣2+L,T afJ$T9S(UAGQUƑ]X B6͑2ܐ}!7$g9A)J%"$"&S9DI'8$8c/<4)H5G-Qy <(.w%;KG1N ccC񹜬3%+6&q4UyvA.Y'0Ώ>A.xhYG ۢ6͡җur5̡-%XivGPDp\LqDXҺw8"{^xh:b>/r0?BG;Qg;6|נA1q5Z_j2宜c|dwqg?IWq0IWqwô`6?~[9#y >ģNi1almueFzc9,'?V(|%i 7k[C[Mx97?뇄}Bd-iG z7BXE_4Op&}l9dX<;۝N??ko9 9}\^]]i∰/~{=Q?i׻v>q@'#!;4K;CCxB}rRϱK_\\=KϿ^xh%rG8s}5G-Qy <(.w<7'cuyo-2.1.0/data/pics/mreZahl1.xpm.gz0000644000175000017500000000160410767544041014122 00000000000000j@ໟboK!\J![K҃1PJ߽UlY3;3;V?9أ?lkw5s×CY<=oWa|- ˻MޅM]Y,C؅OՇuפM~5ilK^X0X# td0`1بc;0`\#Dg$ɈVy&^h2cRp4f 0`xe-tY РSA/J3 ۠SҚJM, r2*Ĉd)%a7خsyU#Z5- 02r ~*=eh>pBfxCM0SD_ӡǶi! BO36o3tb޶^sn]ԂsQR!)~`,ߑ':_ c.= I P7H#;`Ȉ$Ҍ^}άEWauTԒJTjD/ܝܽDM6l޸wdq7꼘Ӣ (]drweQdi-ǫt˒t˺ǻTXNj*s߲ O z勮X?>:}Y_`ݗ^i, |7E˚u)ֿXa(t_`ޯ'pSWuQX,O_ePvO)Y'gZ|_?2VʨaF2nyѺ¸qlYׅ_7#'/Cݳx[xyܔAx?[=-u sF[2WYGwC -[a}ZV㫒 5{;:?yǫjaϯXOO%82yW]~WY/KrA_cywWy|:4) .o+<`Þ{Fo!^|5]+=|*Għ޿qkq_<'wj(a뼱ϓ,wA&zJ~筽9ͮ_ x0ui;&놈 x>5xEL ,pߔa/ s koKW{|-;x]A}U}纨|z u}*ZwU)߃twoy^5u/2KC7&yX>fҽȏX##y ׅE|6[M$~|m1ϛn3kC=/&zyN@ g<߯ {_>[yA8}๱VAca-䫟ZF{  doY_b? ~v$mk9ySEj!Yg]_Ρ>;ubxss/"ߍl{ ٿ<78pmuy4=Y<:Gk߉=Gq >ټ ܘ”anEv 4;anںc1-5khÜz)`u s3v :cThj;[j^an&wV 8/]>؟aCW&1̩hVüm*1}KajW1\aN5h.9̟5WaNW]{^3M_0̩kqy;.o s/5w_z s=8ÜUv1馣ea7ül]ɯX#C 3м?!@|/ͼ{ GtR0j\a4n6 Mw''#=x۾ygSB a}/(Kk4n{M!FJ`e<`aZ5gza<֔@Xa@t _ROס7͏1̃/cGZOyWY|Sp+͸bwX4jyޕ Sq}5G<εG1z9x^tuO 4PtSN&*p< isۦ?-Szids:$C>s/:g@wJfo'c?)X=tA`~=g f=* .1cyh;yŮ2yG&;,dJtyoc{vᲾRw2ʼȀQFo0(-#Feed(̷ e222`Q[F2|ȀQFo0(-#Feed(̷ e222`Q[F2|ȀQFo0(-#Feed(̷ e222`Q[F2|ȀQFo0(-{3 ;3Y=+H>V(1_cf_ٿJw|%Yu5I0$v!Nް<9 uKm_Wwt=uVZWt'ɳt1;{3+ZxmB>«,'м?Sϣld=P?`3t=yJoP%|BS2-eXTu+Ry:oӍRQNV|uuuml$_¡On'kd-u-%A1Sd-XkŊ{iww)>?U}>?{L6#{OoSW{ */uM;8댫&:23TI+<,med%+|ɣɍlwO$}OTww߽IQ6\%\Jok~eu{EN9?TK EO#1Ă[C&kM^{L\}R?p+C Ik޺$Ug yκbriryw 3B?C8`wY =7ݫpRVa ,No' 6NXߩoOKdN` XNpW('GЉ?W9 #`m&0E= c&00Cb>[URguq\WOU%z< ޹MH&q/ Ȧ? _ϥo=H^`IA&Xќ=v}^[12F߄b+_̼a pO <kFK77D9~ U=T~CᏬ:\vkO]Z?"֏ذ6tXݥn#瘼pTT~~uUπWH @>k`_0.yU63zM }P>rJ3O/(K@%s^̀?.v4p.h Ͽk{arj &:1ĭ)#ai_%+]8#@;:!SHX+`F N Do0#@{;rS*YǀySFTe| X/#h8bߚ@x!G`ϊܝqyDpx%Q67ǖV!PdoEX+Y}<]+< aY E}|X\N&D O@O6X;|0bg(OW C*ޠi @ +2?de0`-v K1|d;&/`/yȀn?[|PGw69~@}-1cB4(bqy ^kdAlw+/˯0!7y؏%̀< sRǏ_u+> ?# )on&M̀4콁i)}BHQ``c@{[~ pg 3B5wЧV~N xZzF1iG08,3 2/B (g }c  ?Kv?c@Uh` jq=€6 ;@de"oayJZsW{:c+1`T 2@?.20@4rx}7-egZM2`]N.?w5| U_3R6 p)zqg  @?w]onƠH 2D!=_ϨR p $^}uxAo*/piOd`@GWy>}<@E>i@"9QϵGXSj(7ltI1w_[/'ϝ>75€ aIdz-d=.3v=L лPaw?p;яr2d"9_[1 π% ,a b3!O`8 *ܽŀ^u :{0ppzX<HOSkk90'u#>"`@Ch='33* 7Q0;}? 3 ^?~ʀ0L 8ѹ7? ǀuvARP  ])A%bGoܷ Ȁh!g'1 |٬zc | Rq:ȣ!W㾦(H3~@c @[0 t4 m |@V:!Ԡiŀ7rR.A\0 |@cFĝ0w|x1`<:w¨BhUʀ1ޭH؅mrq TBـ| з<9TnI>20J:z H`)=2|N0m'C+_c^Wa,`svSA {ċb@!O}SġGbRL@^KJZV}yG<<c4J.ރyxFL,gߔ}Ym0tVx}|KzOcjed7] 9.]ѳ} tǀ}#4$?̼>VY!ݚnNj8q.z1` z>.N_gBBc xHoS (:+=\+"a=jAcfK>DS!o䓲=LQ~P,1O·w/9"4 u Yff!VPau&H|\~0X  >f3ڟ\gX}?/] x7"9IyH6_kRQ1kI|N)#ZnNИ>1CJq'`ͻ D7,l@~q[V$ 3+ Z7}+  7J5A!j?2#1 㧤O i Йڕ( H/oPOvUC#9<y!Y|u6yxDʏ_&}_4ĀN6 z\`F-I K/ۅzݦ?  3)rzki8(K'gRʏɨg 8@>V6yk=_S:#DxZpGl'}\ e o c-;%{DMYV 88%9O" 3)l1aw/0??_C֢'v(ooszW̠o?7~{e+W+YWۃ/ـsw_0O % (8i#mI(ў@Fш}*.鬐3 pzc[:( L5zM=ZFQCt˴CDowL6 yAT7F JX~JXU>! h$xhФϫl Q"`):9`k_Z^&c1QeH X3*X?q!n#[ įɀy-0x c/Ql9 d@bo -ݷXMMl; _[c5ȋ%ahkH`xJ>_A7QHq_ j37$* aI+U>Y?PA3 @ }X%~k(p+xEC9\~-xcxD=@17 ,?~](Gĺ&?UH(}V5^g8xVq} L0~s&tN~%'V7q`$@YM%l.'@O*V-Tu >*Vcʙ5sār{lF1O;w:WDG |1Ae?uЀ5=>/;8 CiN|k0kкC=6 ";_LuS?h}" _J)anp:}y8=KXǓ]rC#wN -BM(x} 1Oh<"ٲ'{P+ `Ч?DϢ/.~] >pf<[;:D}J^@l8H 7el*i} ]ފL^booHʠ߰A&ܛb+aƏ羞#3@-Ew4/Еj-dx;~s\ DW9ɇ;$k3>(PU" 0L OoNg>WHm_;KH-lS %`H ~w2kC9魜WsBe s5b yo/*`1Pտ+%Zk0SxQ~,A&kyxwۿOяc=WyE*}t&!cI շؤu8ŧ^[}wٿ>OgKտ\7<3ɠ_M @}Q1KzrͷǑYߺR{fr-!^X/; eCN}'$>K?PF+XzCؗ#rX?CVZ# >0gl1`SvIu*߯~vGKҲZdG 7 smw"HWPM'Y֢N_uyK#m8 .7H%o(?[uYօo'hGi=Œ}I5C6&:z&)&u@,(x60㎸q(Px cj xy`W~}6?Sg-$Q KY;ֶO<yV%auLxQ?z3I"u,F O @խMAod Z`?D[ΑtYg'CUD_UYy`5 Ħ5\Ar_Un l_0?T>~GR gS SS?Mu`.^,wz2FJl/vg.yUfƵT|'\/m@^fշOս%LgEOÏ S?[sOaZ32oįdm][y棤{GkX2g5+ ]#س>0=xPTG z{6ylbA d↑<\w|PWf]g,&&)q(hC]9˧)C7y#?`& }  xϯē Ȥ_3`EŭP wBjp 2oud jL^ ߐ*Q}(z0EolUa} @eȂ Dsu{џ^=Mh`?{[ us7EEep)΁! VL~T<{ϠR z ^fX$ǀx ~"Plڳl3҇{ H Df}pߠuܘ_va643#b"xEk7g8Zگ.cbysxc?rZ|0`b^ jԳ&1@?t}ٔ%' 0`եwï~,x{bˀ64;Q[jG@3w^}b@IxS9FGy{y]vVF|OsDY[ pW H/PDr0KZS hxOOYX#fp|1[RfYO&ǝ~E:^@71S02IZ'|@ "Uj9X 9 @*zFP}s-90cPf2c)ZE"8~\CP>@ZWO)X]}a'R >ь"z=j;.>hu,պF] (#8Σ$?en `C?a?'OS־5<-duy5g__eylP;aˆޅ|_1@ހǃ-YQzvPp&v5>Y}|m[a1ԆP>S2#2 \H\>y' dÉ}a~ZQ*LA hhQ<h Ā!=t PNVuw5WY pC&} b@] %VV$ ˝/y_wvs 9M@6y "0`B3ʟ&c@DSߑ|C!}cR"*A)$Y$[?Tg 7~rũ? ~pĖu`@=? >; g}J0Ah[~Z}uFoS @Y 1wF'2`+3f˯܍3OgwD1\<灢H:=T] p^1~ʀ;| hD4p%CNĀY*3X~: 4ĭ!(  Ic`on\Mө Z(T& ; }q($@fP,b?Dt>0`e@WZ9on 1 }SuFѧ8ȤazW`Q?'{{0 zpf;;{ dwpg}9Ài1K*E>=l -T() wr77ـ8h}?IÞȜJf`ˀ b@9̀TPſWHf@n >w3Ba\ @K7haAt {>F"' W^뷴ĝ>^MzgI?  3pV8V 1hxI*;1 J8Ne/.F( Jg} t42k ȀUyZ&zm&C ~)f́>4* o^7#PwW -uU9O{ y^V ̈́O7NFb*[zS;Ct 7^9Kݷ+SQp(<<JG9N3 5%If}51cI#UJ rj|[A2r[6TQ`h{ JtƞV:!T6Z9/!KGO3X`o5~b 0&vԇ<Y6/b@ / OC5[?wj7>xX.G> zkxGW{:/C=NS'GcXMxweP'wP{sE=cEAû; '8ÓήL'p {5s!7Q^{SQH=(-k`@nsI{"a S_)"O "c>r? p#b3ﭡDo+'t0 DʗS~M3:3yN(pPY[~N,anPz Wl p3߂+; ?m*XQO=>IA? 8Ɣa=L@$oo]b*"%M@ 0GCz%y"CÀ~߅o8)d?R~gY3 p"pFy ?*#N(\2gU 'oAkf茀~{ߪq<uoX uKETFmnm?d*ܛvD  >(~f$aӌ 6_esѬdR tfF @D4pg wJ~no@ l4EF{($/8RGf )}wȮ dH*,yZvL}g֋BSc~^6 zf'(K'ޗw:pe[Qr7$D;2 Loh?:q>C40Wk:2xbOT^\1A\q[ȔHU o(p-.-=YE%8XG?S9 w[3bߤ$ ÁSY6 c!Q_ۆ{3(A?\1~4%Dlf'-|EӍT%}P7 l9@1 zOe`]x" #7RVі;D~!p(f}@b)kyAzlqO~ts:_ DnO'KXncўRF0?K lLu}N}" 7Fj@W4q@;U>! 5SԒΊdu[}^elf;a o=^fZndT~1ߘ@~O Vu c$"* /cȀbTC- ~SWp-^տq)!cJ5_#OC}MK}z'N@~l9bt讏Ĩ`Q;Ā_ڑ?b)}Uo*O[c80nFI _aJ |f>$M)0NpH6}C`AZ8Q$(@X*Ơ7 A^ `4QV9Nn6;'+$0PoiE]\ l,vM/pO7u'@Q`KE-l3)sY ?A$H|J);/؝?Ʊ<۩ТUYg܅B<+\ x4hن\Y8*C}(? :Ϣ_ e. KЫOi+y( $Ev)GW0pu~[0vK" ߖb+~ÞOq`|9_<}bgP +bR`M1~HA!x]Y=fup@Pe<+D~F03h'1e4//kٟݍIGx 􍰓淏$xJ`/M-lf7 $$y$Ȇfa^")O3c z+=B@%N{aߕShտN8@ /Hկ pOhv]+8Vo$ϿxRH!  )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (Ζْ{r?/+F9ˏOo(~q}q |ϕ5S~%>gl*ڭ?cWOex@I>'+^/_17=[>JckbF} 4~χ {|Ok} M- o(r韲]]EU bCy.f9`]^Z?(// ΁4ؐȪ6K_Oy-Wm;M8bOs >SQQ#tg%GoL˪K?rVɷA;XK"@{+(g_=O$EkQ -.XJs'7^3@{#}{XZ'VeU~ c $_jY\MiOD]~r 3@?uonAW>x ) QhWе`6h)oNE+}#l`30'~} | P`ZJɾx88O="i_蹿UM%iϫl4}XۺAn\> msBdޕ+lC?+}O$}ybլ9('"@~!a?} KIJJxMkl@os7E ,(1R'"Zkپ8&X?1B~?=HP1"Hk4f y/?dPʫamxLLmA \]{-k6->ƈ QK#$ea>2)@c"7Dߡn+Q`<ɦkq>Ff?cO'`ɋT12 ' < (W30( 8~EkQ~Sۆ0/O7vO_W¯2!O&xLqG~M8L6}@S|~: <<\3{%?Q 'g_̯48 &yȀWf,1L@g? <o[(` m뜟D< 5Hn3C)/ $ 5~Z/{dH[Z^f:ۊzi= D<1Wę僰rc0`kS޻ H| P@7w6tc7_Xb &E+GĚsp*/5zh0j_Āon5:+yfo# k4'Qf{|sF2[g/4@, kt.[^ebK4i$'pM|%^||Y-&``: Ih #lD1`\A -` .Ii J)3Ggl*@sXe6'hO(?/̀ )P]ly9jC2?y#S4!-5(MGB#l7OZ췠UqC@D*K +B %-&TFM8-מˀH/(Oր8$VYp%+aYS`@w;:D}'@YA%P~+5' ~ PpP~^? #1G;1͔ XGm '] m/+:k/ ŝb؆ٸ~ 6DQP4pĝnyр 2&}|YsbB~!#b߷1&߰%"@Mg2g^SGW">1g{6P Hob#@ŀI+k910' fRgaԁs0}<;`: glzV]N-[҇AvX@O &og0_X7kf4#OSdPiazͻ)/0/Sav13]1L3K9 O }L{Vh7;T'pjy`~ Gx gSbO*AeѽNP(a@UFT1db~@HЫ0I:xa3B baWq XIׇYF)35$Ā BI HҧuP*?À41aœ16a~KA'3? 0\3 ha+ 8gX]P40~BktuodI1dJE\XƚC01H&=~H.~AS@3(PÀGԮ<1`$0#QQe (g-y|l `$`* 3оB*"`=1?# e_9`3]y'Āה> _ado֟J>3F9  ?؃ dX32Y,;jKX.̱ xMÙzf0U"#ha*Gn5LH13+ m" <^<SB>Ā;#ǰQG?`$@2@ <8H&I 8#Q€~n bA{Vm#uF012*C~4tF}4AD(/PWd@(`Lw bqF?cSBDd.Y1 H" XMe@bc*"fQ(XrJ]\À̱3uwˀX}ub@`OYg XNeѾ`9oڟ@]Lm2`6)~@|||XKogEa'# >q:Oݺ 8k1{0!@3@LQFπS_,l>8 W`&P^b77]"M`3B) 0b2 noh?/ a ̀0| X~g:p+tvRG`#$Iw㺑QD xBǖy؇H 3 : X+@0_ \h ;g 1b`$؇ pd@X@[Clo_ \(dn?( ! |'2`NӽVtfeM6UM xĜ`g| xȘ@ r3..H0z`Fa@8#X D| WG{F K 8vE 0`Owxe/`:0F1x}Pt"`QP x8: wF(:uD&[ : N`@D?'Lo} 8Ma@H?7[[ 0껞2@''@^GTÜ 򿀝63 (g9As'Z]כֲJP3U<{&7N s"s90 !EWm?.qg:]1 |j?~ucDszW eca~"NŽxoC@.$mB. g >?o3 P\g~kA_sw3xVзUҁ؇Ybc 5g5xU\AQ0"|?૿,ǘ9|Ā<+lfȵ54U1Zˉȋp0hd@f>-wc6Q?1,O3{焁XQ ~bɡ`)T xArݓlC1mf72g5{AdikX;Xi_OWwn6 5`7Ƕ32 *qŔ:B J3 Asc\72 PBaT>:?[J ʺSŀz>Dw;| l?{~d@Ex _ʬ~R #H &\~y^ǀ2̦2f@X_6} R`A0 X 0`"`aԿv(~s;kI16&~N|<uf@#Ā =NĀGp'1@n9-8/yV!kLt+Y:|%<d .A|8z;DBOqx P{;4k wm44#wQ%@ 0/M >v Lw$ =E|*&1EE>(lG > `Fn$}\PzoD=D;D}ՏhwG"#S`.]'Tah<1 'Ӎ>N_{!xR(O`D`e{&|7 bH-b>;>ʜ&&@+ H6疠ϖ^@xgчkOBg2Jo3wb-C!;oVxv] wMAQ_,OX5eڏ|6DŦ`D3kBdgB1[ʾ> Acfn _vj1Mx PZUVδ+ QNg.a4vB h(k~ '!YkÝA}?Np6 EG6Dcx4e h0Kb@~8~|ٕ dL/~Y/? 5y;4F6q(g#G0  / H 'Ƞ߲ F-^M}F8 ?0-(!`@7$s'eC/`,<3řX\?tx c bW( p&+毄<Ș#@W2HM@7{^@}a?8}Y!OWBb_e>`thX_Wj;>x7BEl'0glhl3 tFQ|)@ p~gthz  +18 P=M`a-`{0~+CF=dx0{`5꣑`QGql͘ a7Lˏ>; F/O!J//-JoSP`7WP-x75R$rr0+_u/a-~OJ>p"b䭏7/֑l9[-\Lӽ+b=ЍVBwP97{1N-v*bSl\8do\j83W{qo$/yN$G?j fK'~P,ԿߙAQ$}0"EbW{3y^m%F%(F>!l, _ oݯoN"~/2®D%)v f[#u |WYV7_!,Lox ִ< Ow$To)N4\[_ְ3kB˅D~(`Wy<}ve-X_pP_$xg:V7*Q'Q7lCq7 䬜FΞ ya6;(}^ue2 A|9 x%4KAUE}mB?}2M1a? \y R(zx2p=^h Z!gg"el0Q@t~7rK-[֝~] J$xɕߠbmwDB.PoG?q&-y 3Omff< ·_o+Vve27j3_ 밖Aho 0l!A(_`}R-)(Hg? ط' ̾W$%Ѵob~Ҽ -y ؒ '71^G'`? CMϹ H'yf>@%ۄٟi}ݠDy$Ȇ<iqZ|+7?)U߃.#-xF(@I ]%;EnX=D? &{br:=0oXف n3B )PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖdWfk_s}3ohqvJ8C#{&)%ɳ% }usPsx7z}&Q+|ko#Vel??cm.}S4ks7ڏX9y`u#^yk|ݖpoĠogiXYSML]vSE~Y5M~ag J *z[C2ֶ 5{k*VYQ-~4G`wi%VK>->H,AD_KuҲZdIߩvg/빿}ɣ/ś/Gy'!9$"n5^[֙@Qŀ$ ]CS-A#sZ!YXղ$?YX;lC? Y[v<9_x?̫ ! طf,fIèmôWAk:{ UgRg?ti8<+f/3sPZ/ P,C pkx"-(t)7"F^,Ck6xPE~r Dvݧ_2>Aזw7ŝ*s(51^S= YތuF֯_GG-j_WlL2?!fb_>!W揬[<6%"81]5\lKCc 2A%' '~P1r><1ցxA{] =S 1Xe{LX̦/82@1.V@~/kXy&a `f7b_ #վz!_3?Ve;Qu r l]VYKf@nq` EyL-VgM1*5[=MfWpz8d`DaΆ氦*?b;R}= htFD/ ȀaU/kLa\ fY2a`@4uŀy!}_Bgb20`b^4&_xס| A\3`&,uB@Y|uڴ?(2 ~G< `\!<#klWy'?E`@?xs^lφhAs{>eb=.I7_@h 8 a 0`8e_y3}YĀ M dr~9d[/π ' #yA{0@bJ `0Г~5o?)D$zp>}Lh-QNXe/]fbsD5P6 h$̈́"g_a_| (h(Qp0 @Ǿ( ~b@ 5=/x =<9\|7.9fN R"(A p J;ŀr0P<Ƒጀ&o[oYE{*΄S d2*#<%`E>O@1`  0@ 9+>S YH?4 ROtbמ8e"^ p)F)3 5JU։}bV t+w&l5_1@飖Z pў=_073wĀ/ N ow|Ɠk|=}/ڟ_1+`'/ĀV |{~paǴAatϬe1˾ǀ 0J/0` Cp&Q3췬&Yy|KŤ ̀^?)<2h@'yGSF ;B o[jG8cȀbxM!D}#콏;" 20wBHf/ w`'fPs73](mlҧy$)>j[ H}ik޾$P {YĀU$# hξb>;^i_Ġ70"0+΁Hb@+^mKl$H M oĀQpqN~=C@Ց@Z<#/6 ȀW'*r2@<+@dv3# CfbЮB>bZ@@3=>V7.)!wFpel?Y@ &3`N}*#1cQN$ݷj fO1`X.[:'KLq x=}i=k_ )&hô `k;O{9уf@aW} .x3 Fɀ%Үp1=_*I~:!@r_.&4\گ{yK{;8%f]KH~0@ _Qq=V* Fmod@ p ;$@vz}~PQg{`ӇXXeoZ0+tpE~5AdV,]#Q7ǫRA1q[:_]m2{!vK $2@޲aWy cR PP h gw=`ƽA?BC>2`—hm_ʀ׈31T`dH/!D~{o `q/ځ,ͤ!71}l  d &320 X> (%ۏa$8 0dROE˟QĀd}:%̀+Qs0gd@3ǀbQ|[$`/w$ky x-i7b!b}98@9}/'1T'*h 3 J^D^ODr9Tל/x~/4FA3BF6գIUzI~`=e-`@u'V`gĀe_eaP ~Ɛf@=)+O}$ 1Hg+slA#3B%}'_H(iоdt]{7+k?4x=et*Qd`a݆ŀ.utIHxe1+Ve@}^y/9?F,~G @OpG9:w<A1%Kf2\ 5DiM9, 7PǸ L5ѴȬ=aN&bL#3B޾Q/ItF(o=ـI U @( ~jH,(@O? ٱa\Jac`:+ܥ"o@>(ΫfBf}uV ,`Yˈ{0>V =' >S>`F.>1nT32`C 1 xV5@& v[`HOu4ࣀ~HQX_~h% r =T'UW! (s`!;Of꾙<䭿$[r8#D5{._+|C40"ug}1`0]29z~#fA w~zc+N1<9b}~:哥BG>@k}R|o5ĀIG%Ծ@0c?[(ߡ7^8~@_G"B2?L'x@'}2P,(<}1^ xq['@ 6CdY; XOk, ؈9i?ybP@@\!IaC,EyĩA୿/0P䮭:>[~zwXgD)Lt2_ Rt>?`G1@Xr(_ }?Gk-MSP6@ FnnDhȻ50 H:6g1M 1X=ڟ ŶX/ )PH?i/c@6AtW+V] - X}#/7_Nxx@mީek*~byH^5ij8H?\#{8HY/٫Fn_`P>iŎym;ApS$(z0pO?LMMV8@CǀS&/ ab5 ^fp($#HW>f@ ؅ ?/c(ڨ<@1 z? *O(@oh? jO(~2LEԾŘ=V_e% gtvp,}Qb%Eų2ft4)< F>~ }Nxf6QĶ2?%w8|PCa~5xAp(׵xQy gH,Q `~KQ d/k@)La~fxdv~|8` (84Brm?Jp6@8A1nj V`չ `<pg'#H~QT0 ( ̊;рKQ紐=J_.K_f] e&}5xřءڣU -.}|*Edǁ+E$ ÁSY_N¬?'p?T!O|Fh-F8pO@}X8Ч?kP 0( +'(~Э-B T oz!"XwfR?@wC@ m=Yߢ;_*K){'~ e?MGy Հ~VA7gDo%}UTnLQ ` <~Cp Js@;U>!U=%!GAyYA6F pl R4jߚI`I_eH 9hd_YO ȟz4tl7ןqgk/2QUHWT<(@w ]ZS|Ϊto4-ޘ^Ec-<'ЍOth>+zνr[zѽ~_FEJݒ5W)|P>b@)l?1,&`W@W\w·$|j2Ni w_`0ӕ<g2( . ? /(@֏BN_O5 ߟD8(<([X_`ffm0xS;^S?; ݍ(<+&{ |`] 6uf}zb(@`o*/O9ZRTuo(HdM }a(~ gx `&gVS  w2 UE'IJVt(_Zc~۩M4>R @d0'ONۣڿ:\EAtfͳrn~/)7 } h=b?du:3q9k\wƍɠ8N -B$ޯAG=^-ېˋѯYݚ$`~ S w;'2%vF*ߴ\ ,V٥ʤ?  s>6-uu6ږb+~^PPeO*^Hl<+gAwG߮LG[KD* 6}kg g쿆]o *9v V:ukZ0}SdsfK4r?`dU 43D -y ?A}`d|'m }$P"sꗐZ.&R.y$'8oc %0_ͮ@41Lb^IAJ^"#p<:94`E_ `?_ՁK?s鯉CpG]3)C{`'<[g?RH'HB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t$3^mHAV7uѹ~5~싖gE %/v߹Ŕx~X,; "oO_=^*,!ڰ?/fj=~}%䅘yfƶD6oO."nϻŖ΢obn=٣=sR=WmK].k?g[l# E'9yᷕQ_-a}$/ 5%DZoXUkW?ZXE~ՅL grP0ηz~R+"v<.9+O@gQK^~JhW.ϾXS (b8vh-_91-s?rnQ{:V/iQeŻ3\e5ugXwv6*[zov/]n.p`K07+KIah|Ď/VAt9l@QL%7v˺")pad߆uDW bMgPC|巧H[''@\A٧yEQNHl`=zQnyD_[X0 R"7pHd]xgW^ѥ= $+{5{$Hy>.`W +Zٯl\g_Q+_i p(P,/֙M{.?# ݜ>F(>`ABM]ސg=yc|5+l=P:~@A>̽ k>n\D@+mL8 1+lZĂP |{{ĞỶ WҺcv͈6v~DVG-B EϾ )~;a#)@@2wG}bdSk <寃((}.WuQH\ߩ يm?hXSl b]o> 4xיAZ  @_b[֖ܐ8 e}? x@/IF#$g2;J" Cr_+>IQ]y@{^'3>Eabh1 $aG@W&OaJadWX⁈'mJ L,y+lVc߲7=agԇٯ⁈''`]cVXY*g H&Ɖ &8OMϰhOQ 2`\g?0eA~IER򳯬ç!}8'7(H*0A iϾ88a-U%{$xȀJF2={ϓ0  `ij-M}k-{AϦyw{)<{:&X=ރa H/iQd`@ }uuǐ~Q!\^q#xv@@u p[i:j.?{ @ h/~zCe 2`G^ fDOvO{eT} _p0~?<a6C [G1|y^Ib}`Egv~YVDp iyoO0` ӎEڛD'`L$(0@ɋt/,?e ΥA}x9׮ hV!vSWIɍx3TQ"=՟%63p~~b#Y\G͈~}f|J ƪZc`P$q@Pn4kqt}8~CnhBBg@@4'~{2Mf۴?O(na0c1+H҇xj:Z-.xZ'3l@O3`MgOO 3`DC D2v}1'zul˟n> S} jg+w`´Vh w)H XݎT!`C,O}dZ"%`i~LFŨ"@.10ǀ墟Jh-i~cR>ѸpV0Ed/ {̀;k&UV'O^݇F'w7f^~~(l41`kebHte.:d@sb@SC xЧ n,&3`!yȀ#wo0;}]X"3"A} Soҧٳ chL0:@2x cr0`,y>€kS`=M72+oN|ɀ|=3~Z 0-O[s̀=z@VqXXk9!{ɀR ? VGoD{L .%2`_30O/z}9zZШ_\ I!]TߏKkSj5~~#\ 30+xȂqoLC\/`Gwd~2D)oǀ u /;G䠵aRi@- p$+F\3cvF1蔐Kfr11@QMYYq9)r3 #_̀.Q2=?J`yO _gb.Û>rrLk s?yИgM"nv`=&31`YA?CC۟Ȁ$?2볶r)搦@]+ 0 \mM@'yܽ(HSYR02W9aϚ'0O;qȀ@dZ;_SOŀxh>b/π(t6tX[ ^8$,}ɾ?j 02d6~>o)N5d0 @ a3 =oV_@ q@1A&& ig'Sj=R n1#ԓ= c8(p,q~F fJ>@;A}٤>\$ Caeޠ@733 L p߫ϛ ۩ SHfBD `N[?8"gCP =1u XŲΈ|s0lpE23fX_ YA7:u @C~kom};Ȁt9@X9K9^<#H u"Mģ8.{x<^ 4S7qhw*$9e/( .$geW(-oa@>B *~;f =1E@%?pm`ˀ3CbwXcO0.bE00BQ~ :n>c>+' Z"(!'ч8nnQ@Y$!b9?O)|v8 1 uNπ$COKv'9p>'e(_4]*~jQl w?'f-*cNO$I'hV;  zLsA1.zyΉ K`8'hG/jZ3@y3Bs?>h`^i'RxJV #J@gs™=ži '3ͅ$CcK0B^@|niu!~Ȁ.YZ QFU6™8~AtV `FѝCof}SV)}GMthv {`{1@v5Pxg$T ~>ڿq=2( )Bcuf `l3fN=;a[蝡|G3 3B 8PG:y:' qSO3v(=Hh_!_r1{+eQx;<0`ʼn蝡PU3p?dI(*#&\*Op(ԉx;!O"FZ 1 @s`? x> 21{ 5w| 9X SIlFsevGQ$ؗMgnp)0@'K s]̻I` ? 0@QgP$`(?;<vAv)~@\w Ǝo nZ煉{ zpÙn h=:5'N?tH>/Ou4@ECNM H}`S<0ő,^] 3( 3p5}-B>hL:+yĞY\Qـ荂 7iY78jwlwo] hyygxx@BͦI}ǀ^b_UCwZsq_`\!QP|;Va4&e  1t`FHe VL#Ш?*Q N &an?W:{Qf. wYQ`A1+@I8@8#_Po)?CDo`(%{A%sF0Î62?3uŗ_ggM>I|X-,Ɠ*K:zµπY)ĢUV='jzg<YALE&(~NIM^(2sN4S&O/@Iz5o%>K@&-u7_EXQeGgPC%MW/~UX(8|eD. 1e Vm? t _6ش<Ɛt$ypņU6u 'B"C]ק@z?  (0Exz*Ogq )Ů}_@VUJ0[8;:X=jol?ٗ? } |2oŁC}'|EӍ乏z z/xC!g蛏$󾡣9 VM{{l/h[|Oyްt$0 }X )0 (X;~tN Q엨>~X`ս;` 7[G{H`~P H>\ 4N, k?C It? zPU Z$H'2;*dCl67G_'O1'ɭ~]+VP: (} H<_W[s$8 A EW'@oدK<a#җO +0)+>Q@f hg+ T9oL(}XXw=@wK7^|!f%(^k|D$}- R~,@pRyٹZ> co |?tءYohMi8On‒MXH̺%Gk^?x\H*b+d$}qlA9?O1}kr: ɧVo4i'aL[w aNHαpe_.F UH?Ư0Z:_{ƿl~c ܊Xӗ;ybY ~߾A-گ|5 շeJ/O~$7b/mWufX/]V.m+%I gr7D{ ZlRgvuMúa{J^dޚH6!r˺3{ p@Ӏ]Bt؃_hz 9p~Mlck;@mxN[qB p)& z5kPog~W06}ke( -Q ڥ zS~W0(3Կj`R//Y%>%݀ ?lX0Q}5HK^ۓ_>Hz"ߖ7 ߞE0\Mzo.y$'# @6#& >{C^I6)O`#'?d/SDPb|YL#Tzw 0;1U  &#Tv/-g@! R0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- )`@!t (ΖR0B:[ RHgKB l)PH!- K79ZaϿIJY8?)57꧖?vٖ+|*ףc3?dook.; o+[_+'in)]ko-S`5`ءC1!T~b719y7 MyͷT+$wleҎU?/!ӢK؁g oDa7~z;δݿU] MZ:b_olO[j0.d:bo}΁hG A?,y˧eU^%'r6(RX֢N7HDgԏ->J2XCl/:/‚~oʟNІf(6]zsAG0= Z-ksjlK~P^~Sf*I^s{PO_|9 tJmԊ=gԏ-?DĀ ؏(f>v3_)`7w٤Պ`n. 6a[_fj_VSL&0ӄ)~|J̉~) 2^O#L2"F)7?P=q9n(F_$ ā@)ւ٣xKʨW~OÂ1f1Gv$V~  =lVLDQ7;kƺ3GTEgMA,Vb <^c.CQ 7*95G Huƈd$y O |U ?( |(e#giEGYdyEjixKc_ i 3̖}QkmM`P_Ӳla=X!OwL.jj>-(CEzBgA1գDkfO,\r^C M$/`3X=e$[$}sM &OVa~`ԾY\&O/2bf󊜵ZD<* h қ_]^z|},CH]=0h |O`+ $_pp1x dj]ҳ_nmQϸ+woр؎aR07R98 Ck6o*_B4 @a'?~< 2(菋 ;u "7{ o:'=- zk?ۂ(of9{mCfl^`z F @)PQxJ)Շ'pэ^BK [#ֈL D#Z" U o .~PMB͈bxz2*!o@X}c]}J 6kE`4˟l?]_~7&ݕ_]d7s00z71*ؤ5%lm፾\ǬqjC̺ $P f+o¡jh@Գ?}*!&y|%Le~BYˀD8:D~H hQ6@`P}ce8뎌%#π;q rGp%&ڶ?P 9?ӴZ*O"~?b0It#8u^mK:{B6}ٍ /eŀ}z WYS1@8Yw AрLC9JrPnD}(< e 0+NQQQ6@gӏ+c_`L3{}1`Ϫ"z ?5<eG @/ƻuE3@҈32 όPg>a2<<0d >TNp(P}`R; \AfkMX&Gj'2 NM 6uF?%>À?@G#  c4PM}j0|oCz3&Ud%)&H&@N[?b"!y8A[Wqq.@}zyEkYԟ2ZNYl _1 !75yʀ2xm(okax`Y( idh hYd(€D?`F U/ uX0@`Ơ(3|\(ܜлm<<; $2 0/z:'hf@q&v3jC0  %d\р+q9l}nDL2Оe@|\叵?O/%@v ZN8kJ7@4P^D󸿞xĴ]m^/bNb .x΀uF  DI HWr `,.xy 6R%/l̉h>r x@pf@/D<ʫ hzW M[SfzkW_`;(%'Dcd "@o>-lb@ݾV=iwѬZ? ?bOy;yDx,A’ch9"NsP΀PQM>R{8 =#gEH>e/8L$gT)-Btw 8R@@fGVn9D8])pz]"@?#荛PdNʱkQ"be@0"ng+s fl}N$P6_{K|*K!kyÀ3Bgt{(CY{@xB\8O|1|>_}DB~n32xJ*nxo`/g~7 ؏g? K-Bh~Wad3]@]ޠ:!<z9Bo/ : Lgב >cVQ"?z?jQ2fE <|0ˬ' p(PDwKG5D}b@0f3mEvw>H{a}%e%H֗(@RNjqm&X1\a{7%Ql@":sz^ugۼ Vq{+yJQ\kꝡ\}gtzG>{QX~EH Fo@&sna>S1p RGb,e/֒Q)  ȳ>_`I`I2\PⅢ3df CnK<r rvLmk<)L Za]bLe;c7IЗZuD1<hZ,o+'QHeٻd$`n&;D7 . 1 ނbFc7%FĀ3>(0Jܽ!pX/Z#\謀CܥQ㉅3*?* EScbC"z5DJ2?~*'Ey ;ؗ5|P  8ؓO2?371~0AǏ`^z1#eop_gٓ3bƻFiWo-8h$" H d g2o4>c?оg.a4vB "Q!Y0#`}]CH4E gaoO!^mb@CN6 KuA7^@y`M/,yPkQ ,S&w;a 3Db1q+syG#m_GΛ̺gZ7!H?'p hCəD.F Hol@U7xـ CۿE=܂QQ;EZr sJFHapL0+GM72R- 88GAk5N+?)j`]2"Oqa9`M-Ͼڼ%}P7 XПAvE~\ T e:sξqp( ٓ\Cg'x-^A{ EE1pyO|l3HztOm'[bـ?EϧOD2HU<冼Ӹ;|0G< ۂ: 5^e0G FX /6MdO6H.&~ }'\ɦw?q!<Ŀٸl`/dOy M P`51vdMݒ ^bK'"Y ):S<#䁼stA(;Dv}^@Bơ=/~<}0?;e1Xun7˩^L߹8|PlsM5O_Q@HAV[P% ~|ue<qR*,Yܙ ::%Z~f!/ AHo_@?0?VWkDۂ@}oW''گ1>ycx}?Y1 WXr+Xzo!VsYKϊ s2voS|+0-y@7q@ɠˀzQI-ϬdA@ X9jg%J_+qདྷ( y~@,i}A~xb@Ts>(I }ȭXc1= A،Ow¸bZ:~/SOO2B%g| ׆D1xևv;7Q_,M]upzgI]}U<KH\|6A9YA6a$~R/m4hٓ=H5`0$lK15O8$_XM}s֬5[-3.s|%(YM?~9$? l9$Wum!2Կa/(ZA~Е>4=_`n^qo[>Љ`=x8wxkme*?8r2֡G$%Ѵob~R G~y ?!$i6-ӿGx7>u;II /!̮ԛ쿡m#+' ymna{ 3y>чoh?)&S1ܒCrQn#+z$01W̧5N/G@Wgy&uo!mO:\:.?{PX\>~G@[@- їo-9,bSTArۗ;U:BVM: 0 U.r;culgPHU>l슣~rI-@U^%`ퟓ ({eٓ#vVb`l8o3.s+}A dެrwoք!Ƞ!j0OE ~%ORVhz~ŋ8eUʪv1}ڷCaD$}pua[GͩJ#f+&|姀 Tk?(r(0)BFl+:c˞XIQYa<_<~EX {mKUm",qwq3~l'Q5n}_[zQ`51߳6d0.x A֪ CvhOkZ7<#s'&C0h?"<;-nf>AA Xf^8 3Zͦa} P+{ͩPl-GQZu؈|*|G{r rv~i #B@1PXvݨ}\}Zܢ o"?9 I,E eT(RVs'0n!j79|JS~?d_EN ٧|0RO O:^4Si_Sނ?#eXAh{X  ,W#P "TǼ.[9-.0g1'/ХSCT9`T6}.E*AzѠ'p%̞A@wqx/cOY~3ُ7x QLAcU6Okbk|3 4#|0u 6 'W#02@b [ !7~dZv'^&k_/ǁ'@僚r H,CI vBf[h#tvP3G).HmzS>u/үT])v ڱ([eaH[/:dmHWcIKM7 "> @#C ?]b*Ztox߯A/H@$3XⳢ x99tć彊2&} a 0`d%y*yS?W#+cg})uQ`@/a>~DCiBf;mCN4ؐ &xBy"Qy P o,p<?~(I'cy۟])1m!g-`'̀>/pG !!Į`NCu?ppRfC,Z ppJGj1k N_?J kA"]}dfQWS.0#e@PD|wPl"YCT~` '@?U[`/ Y$Km:0`  Ú |_N,Zs*߅kDq ؀Q(w; lDm ?hF MW8hFP%֏\{.qO~@_3~*#oh?ŀø@6v%1D|=k8 >#}wOo8Lр!#sk9LwUzR4@0; 0" 7HXg06T % kB, q7@Kԟh9<ʰ~b AAFR~Z1 8{ mx0nFdE].1 ^;@xˀрɾ^GOtocNoff@~}_|YXP=oH`Q`F @A\Єg&1uـH`K6G ?e/k$^} mwGqHQ2CeZw yB _-Z (0`G> zgd ^2`vR*p&>o`r2sc@~g6Āל 5 ϐ.ZGyQ ɾ 4O] 1hKpoi,w$eb& mw>ǀ\SO&S0h`P@#)_ 0Ȁ0| 0s'21Cgg@ l<~=0`6'|=΀8 +2@$2K'FR (\0_3das HM-|ps W dg?h*1`;:#t/پA>Gf@ovz2 .@~{??0A@ǀ9B}, `PhkÀ}1 fTa@[le`< 8 B4GYړ0w.Qv|ff@S6랹tgbWr(!@=?9P ܌ 敲΁x{21 Km0VEFpFD?ied@\o$3 0P2<Ā,~Pz`WQ sg #95Ay0D V[ x]J> N_e1 [> ;|h 3=@FxQ0sk9`d\yK&t,7ɀ+x,~~0`@N% -a1QJCl&!+?`eX$.ĀE0 _|@;%DHf1D |\po1s Xf#Ř~+qr-#  ƶ?<'#X0c⽂{m6PQ a ֐aop} aHeaE:.66ǻCP`_e@|g H$2 Y*K" ~|DD<ܫ W~bqit+zy5{+=Y1tNP1`F zxpZCwSC 0_`A;Lg40o^f22G1ǀa޻ҷ1V>p'd]EqtedUKx-"3BI'?`:+Ȁ&N#`Nam[ hX=<~xO%fb {!-`Rq `@pB0 s* q( 孿E`x_0|VA7?NnHyV5~Gb+tJP3M|pD3kCWpF,y2'#xP `@BCDu}ؖ "_N4@0#Рsf[q{]~`@=cx1yH orY?u_j}d*Q72?PAEh^{~ 1OkȀCI 5V_a (l%u)z彼sz^a}b ( Smf\Dg"ˀg}^ˀmb1>Pfۼb{hJCv;Da} RnY-i?b;x:Yd-O pQ 0CѸ0;wX8sqw'1 a N'pw5 ~wDapw9l6^ yA /XN&<A 8߉A=t /tk{܃r>y[p/; = HOeA #3 r f4sǾ%w.P{[Q||~oۓ$DO0?  7 >{7(0ȭ+!>ᑻ >p`GU4R[GM7 F_3rJmbG^$Op3񒦀 C#}g6Q@AD(2bd-0޾ ce:ww^ rN$&4Q(P_fI_e'(P ׾w9C2ƾ B4@_([9b}A-[r.A/Y_ &{RUgܼ+7t.xB[1)0_) |ջÑ`F 39*cP^Ź3^qpxV8 T_(Zl7% f٨mHTNE)_#)dwB]>8ـ,>9  rVlx W`ޣYӫ~؋xx7ؠfe,?D ~71'΁'~7 O3n x@eHIG`A.F&}B/@ H g9:%H5?:$ ϲE@t<`kbJoLqO%5#]o 8՞+d17@}ebUTQr,+!} '|EӍ {5]E1\(Do% (H{"d[E[V*uZWs3`qF3`QE D;̥q`"7F{a_`(J Q!8T. {_?o k n"TKW0[Lp>DWOLz$PGAy_U6Ȇ`# 2#c co,oQĺ2eO6WmIKw0o}}(ǖ#G/:>V`le?,2'i&)w Ǔ`b@* ȿZwN d?݀^~|[A >$|k*y^QwDxCgwG$_KV80h`ԕ!ʦwѱ;?_0~^i'?]$gւ{? hΌJk;ñ 0?xHfPV@Q9g xw2]*ϐx}A@uo5'0`.FK_.NMï>o9>[gXrqЯDԓI"N0B7Gk xufP?O1[g?fϬdA@z[0` Ht+^@Tg@^|(:r{$R:Y(j%c cK=zwª ؊ʾ=dR~|fY(,q ^}1y@9Vww/_bh}3x)>߂| fW  _ѓ=)=z(K~{,sj"y[NV. " E$=QTB@g2פ'awɜTO_>S\{Fw'?p (3  =|N#A t`=? %;_O.+pmxJj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj2 UVʀT[)Ro Hj՟MJZ>kOw.|cz}z`߸;2lA8w|ZvVS^/E en-"z{^1{4˞ O?x-3_kVً}o]NfA;*QyC WzU*}'&0)U. ǿ܀_k# £2' Ύ#Ǣ7|3YATo>16e&HˆѶYL`W\Xu 06Y\os" 5ԯ0Qu2.`VXؓzOGa5ЊV#*e,;C;Wv oW? h/$F}gW`;耺Ch=I ;`QK~GO x_}7 Z ?/B};fl_~7 Lb~W=ԻbR`O?7%`9x":8 ;A ]#0W'T/0`hЋmX"#H{ #h ߇🳪l P`5Uٕu&k| ,.k*;LHYnwa ȑu/ģ]6X+9 xѤ,#`.6(ІV(l{j)@Ǟ{-"x$ %>ߤ@ (:O;,#^p_| *9li9qH`κ/ccp("@M<#p#0+=+/ (*CoD!d(`HQ~0qP2;%_?v mG@C ӵp /២("M;Q@P) NF,ڕ;p8m(G?/h"7k:|'>Tֶ~g9{xAa`& vծ+>v!.w:Qp J0ZkӢʏQ8܂s]?Hǀ0BUPV' bs @=R~◤ lX!QȿEya8jCUL(&$"X9{ "AdIxÀ#ߴ _d?C{% H_kr8ouk+&0z=!2+sf"WNVD)m%{NXkcpm(E @S4p"(2pd俉zs^^H&CкN&@=g: ilF 2#5hϞx2 8*j(Ā;m522?1q;iy}0】{ ;\UA z۲/ cp@ 8(ߍR_5b@ څH AAW؁uJ C p-:w0Gl?b@ ¥ pO@2n$r4|O1eFH-/| @ ll :(|Ь}Pkl07Py2s}pC w 4HT6d%~b_% IH@1 ›Aس.jX2c rFQ@,p(}^fH xal(ol]c1~CQÀ @ut!4 g>0/˟[^MMH@1M3r;wЪ0̨eX~Ec{/{0@WEgFpI`'.~#8$/ o rӺ D 18`3}K^jR60гC 0? N8M(][jg6 FAۿhOz)g`%w|tZV{ Hwߓ׆wVb` )lʢ >F2)@sҥD Ap (BdeekO+` XMkmA`zI|zV0̀v'j1Z}woQWރBÀST28}4+ؗ)(eˀ9칇[@Rj1f 8/1`%!o *:< qvu 4TH@1 <.?; * 9 y+bfQd0]Xb<)l\ngF`vzb%y8ӗ0 kl%, (`Ԟayٌuп]1b> '@Z<=eFP7iwU2 $d֞U&d7CP6 )oWÀ@fb 30ZCA=̀]t]0@hE2ru VD^2[1x0`vI I" ?C@\\kSM䭅;zLW-#о\|`v \Vo d30]=q+f P`kX#Qߥ'M/C3l;Q52j2 j !2|a+P7C2z D|`0ZrK9_j(t_?{ vT6D0wcdL^01N\Sv ~i`]8(J"cZ[^5`@֐ A6\(^G=0v@(PŔG0`  .:}pg0 O *qh<锈pJ 3@Bؕ>81@|;k\݋e}LU^Pf KY=p ĀUsCF (2dc(xYdd& xpTG?sp%e D3`K }ؓv'8 )Kn.0լOp(Nb@wC? h6(H`#v?͔P yI={.!0>% d;VeE*g-\M VןuO 8AO2JȀ (X8 m1}w}yOq@w@c b.Z`Vjwq\(]BA3U8޺WEˀ_\r a\脔)W]H` X Ҍ8cRh&n{8 i.rU? ڢS< x Cl~Q@[G$ @Ӡ =5|f(n$(grУ@'I&/ q??dM'B"T3jut_#DE^1^n`Ox=ߵe19vq01C$ QO:k "Ǖ6 pUa|$* #_2?~ҋ(fZo3Fp 1@~ W_$ DU|=ń;KnmPf?x(0>83#P\ՑQ}=_glbo:oT&U"nZp%9 =Bܠ]dODjȀV =3W.3Cl&g%Ց >?T|_1#(؍`@kDs"o%"bf@ɹ~߳@$У"@]4b)@Q@ANu>빆;P@A{ȫS 1/2 &Ʈ{ =>')P TI S`zvefo.bDF]q wz2`#ھ *􆓘gb'@yvX )3g=;|v a$wI@]xtb d7^H|v:qhY1t6A"X l/w|L΂o!ˋe q1@竚= x g8⁲t$w P?sg\ G8xwLm3D§z*80`p qյSq0w/<|٬b}<+k?u! xOޛŀfo]0y`ZgFQyuHDAYb[|GtT "CtgzPՁ?"6yEhD7 YުKCB/z @p6qF` / hխX[[$Ԭ3!W5??<fz<+B#Ux)jFcߥ'{Ȉ}we9#cM[UY~sz.<2VSG5w `> =|ŰO Wf]yl`ÀmqHϪ@LMPH+D`>Z38Q@֭Hqk*oG%,Fs= @.pfB]fQoZ1’@ #xt/T3?w?3#=3ff y;~yhدL 8౯ꨡᔟV''s[ڏzF35'L0#j׏_sfĚs5Y˖q54a*RQ>WFDVyc`ˀt.ۄ,/ЖeĽP5|jS3`9|"$J0V0'Eg:H2pG)| -##[b"ì,2jKoY!h6ԉ;y|?Edi`GİA;]>UG>'3 h+ D(ڳj)تMYx$E'cPmq#,w (J?#\!} ro"zg_Ty@N ;|wCpf93 O,C~mnN|C& IqW֜og?+R?({#fٌRz@mC({_Ui *L Jz> no3(.\?L;oBzq<񊀑 bR y/ Fc`/#U@Mb`_@C$bC֡Uށc͂G֑?Dҽ`=Pړ,rCnVb4 AC֍kGW)@4?|ҴQ@Wx)pA 4hDhPOk34  VWVYXD p35 @;?ʟkF=Y$AO(=@=@qD|3F2 $Cz&-$AO4='%_3N4`^+m/?ia/xpF\b'  P^5&~ rA99ǧZ_o/[d%O;g[b&+Oƭ_۾d {\c?)eQ~bH5@8\>ˬ0f>z_@$o WEpB}|$H.Oؿ@#^A 7n@K|0Nn-"l֟|\7@rS[&?˦k^&-YG">_L7Qpn7Ek?~‷ɥml=)8ib^_փucv_o{9^@_ٴuem&l!_ xe KП0:L9,p=y)EY).Xs7IW<{_W{*C{ ,ʶd3(־ x)b^d?XGe@3 *{0hb,ِkEb"mOߊ3M;ZO@8 "vx􎷁:  azFG݋աBWe](vu=UiO|Se~ď"$=! c@׾EH@g*Ê\$,w.Jg8a@Ž/ À~Q1 o/R? *X`]@" mQߵˀ20ZS ,b G/C΁ TlHLZ%^u-g%V(ՓGyz(# OE -2 x(YT,?WA{qsE \\dc]1`Z1@,Z |Y^jd4#B? b">5 LP6xP$\TE~mRR8vºn$ `b ך] :qYL[2"H@coQN?R`h@"AG 'IqD="j,0`?50lS՟/b@5h/r^60 Gc $aJ .~2`{ г Zه˿m/] Ȅ@эfJy{~աJ-1 l_S  t#QTX֙>оBw=ߜ@U[, > m̀> dt}|@&0j)FtT/B`@ lW E$g3_/|P`Vw",,C`.8qCԾWE~bPK."f7샇yMCb4Sc߭?v% gPd#Tia} }=.h>@2 6߼NDMNnZw6 |`s6Pk4ŀ."0Z @3 8#W hR.f@^lWMdF'Uj{.,ZgT2[h./C YbfRq@ Q.P ȋA g5 p(3mp/Jtڦ #Āk== ǀ׀Dt;re@pN`ˀaDȃ e@[Kz  (JӋFցC!v0`@(P1G[ڜqӌR?@33fY {&!7,-E 'F3f9Q}C ?' 1`O#n8+f@ی18#d@4| HL  -.,ў\t(/3U9`ǵSPg.sx{*$Ҳ9`4tDa@!;\p05$BQ?lox e@}%~T'Jr˺ 8q\hmpx4 0\{v?{͝3 8 KO(м heq ud`Ӟ+KX+KK|Gw @Ĥa"+utdBX #q=O Ψuf`ـ(`?a@o+1 a`*!Fb[>f--vFij5P3Jc@.졀<3ub#oFuțK 9; tXeI Vi9P*0g`@o ր|<ЄO/20"  أy}PE=+O2 @/3c3@s>8(X0 7I 0\ ؄ɘPI\Z hVj Tb =!4I& h1' ~>Scd.("hg Pw]M?o0lW"` ThC`\efP |͘9CgmM Б (:Iϔb.xg`@M?/8  [-T$uTt.=`o0@9' HP.2 ?"Y|L̀eނ |J_6ĀM>Y D 2 ~mpGg:@M= xi(`(( 8ʘ;4gXLb@3 οS:p6lgYNPN" hk@+ː h>a:Ia)`PKƿ|.hV*gF+O{Oac~?x^A zCcz` (]! g@ /p' D={C<F]Ge ? n@E-[_g/ F2@N nA|f2`'j;œ 0.8q)ǍNe@Q cX2D  80g3'o>!?=>aEŀ p'/:%):8RCv > } |}HL90y޹v5k A 0EA\"\T{g![T/OWt޼ Ѝ[|Z~z?䙉|>L=Dѿݢ'i 4%`̪9Lz q Fcq7 ?lf7V'1Ear1~.9?ox}V˲LB^0;=kw Mf?1@An+?:;,>+/5>@V,eOCQ@}8c0? B.'nu|%h0 pǀ MSWBI 2{ˀfڦl'uM.xgcDD`' 0"p؉< pТ(+~_Ҵ鄎# (s} G)3I=L2b$F}W@ͼG 0@ a3h%3>Le. ǵG 7:= ]4  @Nv2̀[?迳XX0/Z%SB 62 {0 '{Rj X 1 ?]dGf5%`23 DsseһGHCU5(w/u8xdwG@-6 w?^ -zɾe*^pB aM*L+6/] SUPxogxQ7%BK>J!įĕ?Χ_#jo2j@h$@0@ AlM()׿VnWhgU`OwO vVu |??t@bP>eYGU]IR? ((?t|Bd79?B,qȧy!wDO QчoƿI)#([pgDz /{$V_;9i#@܎{#~_eƿSB= M? %?B} w{g?D> ;~)ɗ`qTm^hXC";| LV; ?ˑQ@sXL?k_ ?Ep$z)e[l#9cڎ)zƿYI:#Hpe - 蝤x{& bL v(c֎( -;zĹvy{@TQW^Wm3>/ G\i"Q{SppF:2}4uƿH=i-N_~oz޷sBrE'Kɯ YN?oSXײ)6(P nw=qz{ZqmveЬ eSYꯈXv?Nї6#`a5ܡ8ƚf eܗ;d"?tU H> 9@֘\Lv^( 0ݐN ` ݶE*ďP+ g?·'?AO&@](iΧHkLźod90տ]g9)_ч^L2Z OxvNi?YYsz;e ~ \Z zY*Gw&W<bT+m) Mǜ9Eis6@/Vy쯚'`!QG2? z:쏝K#b'^ *IJNJ#iEPneh@q?݁.1erƙ`"7M7< 4t;̨+a{VlcClJ' u.vuS{MDDgi}k}LKJs"6 ^1rڞW]Ң Rx) ǽ)mSD`VӓAI1@۾ FxgM/F}{O3.* ӽs1 ]}qHUFo,!RREq9O|0ރL+-hInOXsφ7 @ߞ^[~62هhOpफ़` ~`0qfzr}~ W,lhpϝ~{ОHԮLC-Yf /ӎ/r ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro3mcV=_q{=cW3}nnwEny]v+_?\>q}3uɹ%>'{QŞJ+*gNT&ԻmET_/T)kp$ lwwLUs!ǖwi)os'q^KSň^ŵkx.yk;b9C͗ "}˝U#bH8=Mq*[荩֟lJ~. }tj վ!E-_ڋ'0`>L2ɾL:`Gxvܵzj%\Ŗ.We^s|%U燛^AW\)t+\~|=TL9~B B/0G, bW~Ol ] sEgӛm=Gg\׬2b/5#dA;3bXl@>Doq.ēlGs~C4S>QrBS{)0qggיA[Vܒw|qxx1:' Z{R.5u#.>c]61)"LHEK)\ڐ$5*Gd oAeE -5UWUPW$=Gԟ[CT#jڟ`>H_@Ki}-N^coʪ~/'3wҝCոQBO@ Ac{9a_T3 \V7vGaݛj*__#8۠v|FoB+'h]sX 6#ywJmɂrALj?7O30<"*2 1 j.o[ڑ@D#@e(p.uX LX;>wj3^&kJ GS /΁-|Y'Pԧ`E_OU|t;On/_93Ϟ8R}T|gADРXׯ䌸Jf7չT!C=/w , ,p|P[2*x A!YL OVgb"DGK98QUm-|0`$z]1Q; -KB&_m`Z97h%cx8 CVEeYjw[S?=Q_0}{|^Հ}U3*CQ`q@_'pH R? K"@:V68`( H 6hwi$nc)iÚl= Z2Ā!H~(ɿC Ť0R-EgANfŕ[yhlWŰ:3C-fswCD(]?3؏XCLqK}<v(70Pvˆ>U!=^DU)%L$fg(`"k^$yc2A`6k!Ce?Da0`ǀ0(0+^7 .# v d$06^(#ס@qf%b3?`Zgoa{.l e fk}?9OFLڽ'c1,k1`Q!' P@TyUQY%8h"GjO (`2b@+}`(0.cPIM{ mS76P:q', f.J?x (auQ8z)?y;v=KpE?,6ѾW׉[PZr06hݮ?jy,Հ0̀qO-|%ŵ*1Ȋ@}+ l"c&lQLW W1نv ΂"xBDP䳿U}O]pI:I h@yzmxU؆h[(ceI; ḣgY19onP3@SvT~MT0_&<'-5kiM330)Ge~vPUY^`a0 )߈xTr+C&A1V,5 3@gڗʮԡFbM Կ T`Lܪ u_a47( q X\) `F`}D@"L! Ңxg:mj3zn=3Cpp?}oG x h&1D- ƣK. "\lR%"ˀcÀr)pFgŴ5 Xd}g?e@~/^)Y`Xk?,n4vn l_#'i H*j6 xb"(fe(+ʀ LL ,Sf5ڊV(Bz;+c `P^Z>/A?*| dIB%ɡ~ (qݿDcM3#UE _ddhtqX@݈?Nr0c#:\ (v>g@~nF`8{\t&! 0 ߷-h߆䍔Ŋ‚t€4\L1.GZ) ~0x:'>%M~ @0Js?:s3`NIF=^;1N?ah̀ Л_O(4}tS'ז\̀~2S p 8'0k|ӞE۰`IB1 ta:`W:7$ a?o@/~?yb##<93C~BQA@˟;`9q'On?S?~| ם'N=6ŀog@1#QFq  z>bTLed~b<,};gрlL~^!01¿{jSMF>{Z/ f:Xϵz-H X [i1M,(lƀڿ̀:H*gHj޿_h4;d@_dT&%1) ;_`-QZ}2€v(]B[a@. πh1cN- s{nv 8a઱mo^snX`V/|VEH GfC-8sX mnpDʲ@>+pm"dbl z X ?xD(<;f@ gg@j,_t4kxP$3mnP1J;22d@?`׬HkC$l6Ucl О^&-`>̫dS ̂y)>nPމY"^@;dkSp2eP2 d?~ _ hD:ե0`LҚe">zM;{R{&(uh TϗAe%b# Pqh/_ģ k a\VP M߫kV4iyh}@\0K@Z\)[]DL?€t}}-o> ( ʀv{" @_kP>Od@Pߵdg]h?0v}eiP$@iC:+̀cKGRyM!" }H O_ߖ2Uԟπkh9 ➡fc _$# ~Tdolػ,M? ΎIsy x 1-IшπuVe"G'Ta@!7iF4Mʻ)y1}Q &T:=+fP 3k"ʿ6}Mg XCzp:oʀ`4r 0gw!9J~ ha`.<SjmU3-/lY?q}V;zբ 09A[lz(xȧ(dX`au+= Qx;ZB,b`/dnUVioPUU7c  rB'8oI3PVhfЯ‰  '(U1g +;L^1 z!{UBhqW;i%Z/|F M?x ai Iu{R )dl H9bn4`@5bG`u(Pu| dzkX@bay|y,FwxՋ!2h(=A:Wx, YJb0 xtj)p y3:̇t0P$s; p@'u?kSw a$0)ǁ7YHX䴅> Pl <(eXQcJbxv\ PKk?@C$~[>D1z_)eg' [s> btz.-:C~gɨ>e%̭ AO`;9eph}>wl?@bur +W`Cvj-7R qB?s3A_X?$6{LX.S w!_1R#0`mEaYYbt7L?nh HW)7n2fϘoiV |R;}~ל9Kΐc=l ` fꖳLV| P \;Z@`4fbg &AC*7E1"~f(rG+cL0>W )Rx<0ؿ@ӈ|PA$>}0gVV7i3 <4|v} O,gJ{ Z|7#@pր_E=~.o{$X8ź)G@jf${ߐ3D 3H`6* ;Ie nJݤԿ}K?V{D 3il}%$77B)"zZ1}(9WwQ5'JWG<@MCQ4Yo>BdΓo_b<RI!\5s9S_'~d} |nꗺFŨ@R]A5VWtGᔶ|qU8e,[~1_E5| .ږ vBrNo?{~7;p'q6QA )ЄFB?oDgSZ\7o!M(\+FNj@?bM]殽e#S/D9>@~OvP@BxŎDy?*Hx* i k<; ~?Օa{ 6:7 L>RA#:d2ā1"Mxsi]tV-! R F(bp.4[R`ַ{_@Ux/?} x=;9N(Hв>XaE~~sSǓC>O_@4vI6WLͻbbǂ"ٿ$qz?o8^.愲1nZ~} Mp#~C|4 x,HOj_!G$X%'3=L߃OdxנjlK8pQ qeP)6e#<~G%&cTu2i50;vAW ;] JKv|H>ȇpw ȩ!T~CxK |wTGWAؾa$(Le;* @^|ui5&.`dj gYs (t7+SG ig,p T!j5`Wf? FB WAud?пoM~\f,{ڼ'cl 0D$E9kzcud# \k{\|G:93\PI`c٠T%$/`{.Sj5ML&_HH̀Gx}Y6Gӑ~X{,,ab' ߖ矃ز D5t}oK.M? %\^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^3pj8Hǹ@ dw3O'1.qū«ó \|ךZPKtt۟>?/:(M.H_>3ݒCvZ@l<:l| 4+WƏ~E"2FKQoWK]Y8@??ܒ^6Ӎ>H([dS޲ld(M^Q{.vK_}T+Wg1o9m?YX Fze|/i> 7^_tT_w@sGi`/_ AuO);x]*8q0w;)@yvh_ ,k*~u_`-~|Su)0%sV;ҿ9YSj!!(c~+t+ɭ5@ZByp''0A]ݦQ@'S>8x9cbUd/pϓ85>/~߳2 А< :FsY@΀ @{L$}(p?m'g/)k+9|oBeG|dD/V)lٲݗ(&p2 /`佘39W#G ( X#}No}Pg08w`6L,{|_Gp6?A[h\Y'yMby/yK2D]  |CO@ߍ' RԟC,kn{_/+xĀ%9':Tw:5:jEIS`X , (GZѐ:"#} Xעyl D~&;)_{| vL40/N xڔ_>7 Pü X`75 7 zo_t>ʆȀ"v M cHj'lѶoU0h_(!Gh$ ci 0'д23\8tm#yC{ߍ'R/ݏ 8pgcaHΌ口@ Kw@L4(DE԰O` tL !?iIg 3FÀb5:+n-V~v&>f"ڵ_S}p]_@X 5 hfGϯ ;}(1F p̪oޜ')WL4rC$0/<P6Pͥ؃:-_x @ LC5 fSaL&X2 ß~ڵezN `>XQ,m&eg>2.sO_njWt?0<&g2<=#_7BAĠ&>K+2ED6H$& ó0;kE&ЂkF\')?_L!@XĆ-\_4Ybxd'MϿQ^}a@Ĉ_p,-o1`2Q${`@0chӞ zu' '?Ȁ5|7ڏ\14Iɢ3)?eFa bu@OpdEx2QסF`8p>aL -V \ʀ|牲C ߙ3р;3Ӷ_pіa 4;Lz~&0>WQE0Њ1 Ki?F'(4t4ET' ؎1 WM4ha@~=$HᆺƬ`*'0%8opVˌF۠Ppn#@P0 (kڟ}8|$ \}!8(E"xH\NS`-_!x}t;c@0`IfS)(> 9ۢ /fɆD^_3pi'?+2€4bt1 Xwƀ,_uiаA?Ug9$e~aqX/Og w \<7XU FC˗4|?ӼdÆ>BX1Hc@|fF3Q$ \}G Lk{ Xy XOf?O9}vS3[A܋[yeW0 ~Xpcex)#`,,VPS w^Ak;Ӯz {KGe4ZZ 5M`@n ÀĀ~@Od33(AH9vc&rf~ xt̀q^˙7+ kWxFP" X-~>{c0 #h\݄;[N;e@.2 m?q_0€jÀޛ<[Z*W1],eY5оF38.Q?E>#pI U1Ugf@3˫H>@Y?amV~' hW- v篚tK 3A5"JV{h Z=|K_5 4 wőJ@W1j^*f 8qpG3À>WF'Yb ~3v ].{~Xl6g _de# 2 c_ Ǔ`_Δ0^"Q7v$JB @ ~mpf2ˀ.3 zF;e@ Ȁƀ x(?ԕGm X'\$+CXԯ9Q@;]XB3a8aP2l#z pg{5H6[xmzE@-4[3 y}@Z?a${o 0Yddy~i|zc`5278Ec k-W&&)@m91@@;/k,_Z :d,y Sܓt؞>f@}̀}x,r*~>B22`pca@#wOtuo0_9'kF0 aP   HZ=tmk%q_P$hf20V {ֵ Ȁ7) I`[:AK4_ʚ@ o;~ }}1 F(ʀ'ԱǀG`|YB $u}8z QX$5 lkb+'_3Ā; ,>=n*E +ppt@7 + z 2 "0 `bρk7CD @~cX>A(V?fy>de{AFo( ` ol@dxVf0xcof???i؞NtQB)'~W/Ȁb<1 pc]Co |zU3<Ԥ=Cw{<^S$8O۠ǀI hkTC TC{"OM1ˀB Ж,VĊf <.qNmB  zP$wfKa\)kN⧉)S_\hǬ DOYT2aQ 'O xޒO&RN{R wz*PN0gJO kج\ 9M;ǷK;l2i~Z!Od>#h){Coa3d=? {b{\"V 1Kp㍔8 = 0 P7g)p 2w^l;dg  ,~ @ PG˯W )S ddwO' 6H@H@@sh?r0 Mb-$C_`o#o O4i(j0E, R/j=QX(/XX3<a0 0r@X&zDLϯ`=QТ_1H3DCg-|/햌4 St!@: 1>@ #_+?sC,_(' ! `*!xכW YRlO{ Z\ D38 H= ub1[.Vˣި'PgC5k-^-#hѷõ  `@\ ^?<3Y0dfCñ`B-βG( Yؙ3=#hqOQ`F{*v ŻZ_ dQo@`Ku o1/91_J߽Kll L6¿ɥxlWʁ OtV{qz+Z ~(4+p$kGU|/`Ah٥(\L[(jd-`AK7>ؼ_a@ $Hrc ء3đ=x{^@BX2C\o qFoDQ4YAݷxM"؂/i}D3ic鱸,P4 NooEwt>P{[fB;/XF@# /?h<7R]s|'g"hxJ4'`9Q4r(0ѹa7~XTD#ցA j+*6-ȃA ᎊQeII)!w 8N|>wood `&Q #Pћ~3,]$QC|8bcu i$almI5y'St>z+Qx؆/SƏюxs CAxDw}MXLӗoCAѬ2xҳ)U~ 6!tYP >ćɒY@OQ1*?ԄtWfbwյ"DW"%@췹_ÌG$E5X~b3@_{(p} `TLh[,?`D{ ĩ->*IУHݳ(@۵?Q@aGU`K=' ; Bb" +FioBK Χhw;i(g (i0O 8aDr$ qqOH4?a>O_ 7w߶}zo|͈ UI,706_4yᢶtx?o}lhNhoj[?zrol uĂ=fVx/Ce2P8`H? U ocRHuJ77/&6ffxW%K" WGzx]~TB ݅%JY*I x8@!FJm@70D+ޗ,{<5〖su* 0(dɱ wGWe89 gu!z/73ߢL_̓/7?g|w =3v2oiŐ'tq5~oo_vz2?=ַO7h&Y<+ţBo:1|ҒK,_jWvfx@yD1$/@1(6x+]_-~,GLI֟zgyL I o~e&x4+F9S7~Ό7QhEߥp_%OD}:oP3u@ س3_uV?M3ş#~{F1 \ry 3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْ3 \^ %-9reK΀\ryْi{ g '.Y"siSk׳$8c{,;/{d+#W)@m>:ԟd_PN?Bf}YACϾ<~W|>ٍ:]音^Uoߏ_Q17?+I-FU5m p*-; f4v%B㿿BM>ݡ3 T߯e;|Bt?+{?}?ˇǷ&,ߓ #=zN% ^:@4 kg q`xE\@+˿Oe;J88N9~|xJҷG..ȠS hiَ^^ TKjDR|' 8OrgmW>m#ԓYG>2%?V+ɥ[a+ރY>}@/&ka3ѓQ/_݊ ZGwUnҟ, pꤷ_~/ :TV_':*U>@. _g:l߮e(@ 8΄ ?S}F?oE+lRfR71cztxc'/(J C 0(pN@N=1 ŝ _rOFD3[zՇ-ShFKV !Z$O`@*1`0?^6&/ \"(-_^p.B\N d@ $Ȁ_(&+0:K `&@3A3@L둦_ '>ǘDHчg;5߇Ob˔1P&a1ʤ!0#]>l"0nfdrH2u~#mÀm"/(ϣ xʢo~(yMFoOG\vW~'_>$o- hWlJD;c{TEPAFF] g|Y[ @O#e9t-1` p`#!8ׇ#Cy^x2eb[  tw7 ?0l* PgY @p$@R~7~]X 5# T?%"@ɥ T|4!@,9/Mw p }߁g 01KA'xDq |) P {$c6̚|~6ppIyRi#&3}h2*|c`X hCEaE,/ AR%g7a'?&>N:/h@~EO^ǧsѼpH2q1<,Ex `~0(" x 2<po0K0X@A>`Ŧ 2͋'=f8CT/gEpSVe*׶0ilP>]k@'ÀjC[]B3"DR~ `o<}W1 =ɀh3\Kֆ+JO@odw|~ 1-հ, -2ʀ~C DX-?̀0 \=Hx~hGI߲Pw6"6_i׏~2׷`ÏUgQ]&+e &Rї`0V~Ms)f2` WWj$Y91 s5 hEW Aяeֿa~v?Z-c@DF̬@l8~MuZU3uoabA8}5zZMH *ef@Y$w "c €P${XIV1QT}9) R@kCc(Qh { O]uÀ{ϯ46, BE׵I.=aYw  #b2HϚx,{+8[.bhp"j%32`oC/HCOv_ֹC o^=Jl@7 (23>.p? D>,~@3F nGe@ zm  Xw*szI~@|1@&2`鍗T7b~qA\WL2! _$/b@;?` >9,4  i?: ʆF<'1 R7̀ y&F s3GPH-5[0ef qNK_{a3$2ghdC\bll$;ap"NR_480 !І͐edYsC%aOga P 2BV o2,X?#] ؖhAh4qں2 >7ЧӚ2K~A}/ f Y#9F X?J& 3-X h)cg@ܟĀFF?Jr X6vkÀ{ I.<⢣>l9ʜ6Z灝8]Ci }W# @>0@}̎gn/+1GH}s,2431ϭ<VVlY1af>H23J ]  _" 0fap"V, `8,a~xc@$ .SLV 7hG z HX@#۠πVtW. 6FGz}f?FHg)B.Ibp/~,j2'"^$#g&}(iKss~?l !{Q/ <)p`>:Mapv(7@oOf| v`_'h6綳ñD'o:À9b@шO]0 M)c0# S AZ^vR]&h 0V8Z \Ǟ!igvOo(vRgg D [#e X?>GU>βV 6 dm;s N82Oh]-lkO h7~W p GF~K}L kDQWc1VNg 3H  h@Q{PwC^Vp]:$qxc#xҌoC (+E5w oes8eg~ݪOcXoLFP3Tx&CTNQ $Hz:%i>p0An4Pp CUQ-9K{D2ߎ:Y &(P=C6'ϖבh @#3 9bQo bS(POފx" 0^nj`a0H! >n? y>< ϐs쿡OmѧSF4{VƋ7aF)N=3x  }PQʷӑӺi; z^DC3!7in1x8l@&`@~,%e ij_L9!up\O 70F ТcMa6&#@p {ߨCu$t{q @943h"h6 ~iFHgOk(E \7c\>$4LsMa;hOh_`WUyZvGu ND;x>L FyȀr=jT,;Jjx+< ۆZޚ=7E!W5Q 8P^?Q4FHێep~ݝ(Js )-2_ .뎿mͩyJԏ1:p HZ'ݐ5#= \ ZG@<O $E_T(%"˂}qP&Ro@? 'ow=%L>q]/$pH*0q@`Ӝ =<]1́1O1@ 77DIgXˌ~dbBSs ;9`^L%3 O5h&XODS?7^Q{D0~6d?@?Ā|tഹi &W\m}rDOraKb6 \+Nv{P l-Q$=쮱:2E$%^# E~GMNi̚Q|(ßz^;U(?Z_smލq!'X-XyVb`Y()lУHݳ(@dac^{~$e:/@B9*&0@IC4ԭQvD=6'@ PTdx/`8,g*':O8 `^_CG(&e-N 0hxQcF%ؗ6qJz)7DW@:e}67ZF57OSon#en%4 ?ٽ/i" fIH|B_9|0v4?[ɇ1:M0{|Wg@3ulz&&(]bl{} 8b7 .rt m-d[Hӝf^(~rb>,ύeaMUx b_*7j PvpXN㭳x%+q|lS~n5-O.Y[ˏWgbN2:3 8Y!Z=t9@rG 8ͨpz<<xIZ(SC=h9W|7`; X ,w()Ļ (#x~u%73<9E^Z(kC]GAyT0}/%}cA0\}s@szh?ЀQP!)@Og`03u,۷/oֻ'- P~=5Cb;t?ƕeQuz;,#"s#r 5;⃑3?rKyZ~#x7Y%tKE#p7ag=~wΚ3ewLoN 4#/{mtd5 ?]GH`KU@wv?K%g@.lK./[r˖%g@.lK./[r˖%g@.lK./[r˖%g@.lK./[r˖%g@.lK./[r˖%g@.lK./[r˖%g@.lK./[r˖t8κSYokNIV%iC+d?V~߽~Rz%1FS9o_Aןёsdo5F sGd}_?\]}9:.I-Fk#d}wkeW,E-:B A?37dJz;.էol^~]-so/m?_=1_{` `g wy~MS,տ_uS95uˮYCjHpY8עyE\瀥a$s' i[ÛD.8/8~zFM΢CQ'rE ɪ\5ODr58kB\CւQ3~QK\3xuVU?@(+dBEw|0D/_V 5ͷ&d+lMd>>ȾwP~QW֐[__OX!reIMkqFCs vc)sj[]M1 妸W}qzy7?L0K7Ɉ%p+wJn:#_"H8|kDϲS [|sϳ02@rD Ϗ-4 /` GmyTMrŝWy)Q@bةeZ|(]ߙw%z`8VV>vZhj e $?G>@\44p-Rs7qr7@6 !0 q9\wWE?0`#H`:P%)QŀM_ݢ jN%akí;@Wnr s 4alɾɎ= L~X;W^@ SvΔjwb^5Dd/`E<Ыo0`]-'`HlׯCq /y)<(O%/*:(=hqOd!!{gW*>C{ y/Py'ޥp/vT;YlY?y)=إ#1OZAϏ[߫?fAq^!ݶ߿_ >ۖs<l~yIC 0,#wS3b3mΌ*^xpF`d r$ED_`okooS=?*؆%Că=:1w\gD]| eAp}<;1* GV$RAaͣ80`*l `boAD>clSz]K ԝ. \>bdzA[ 13)Z"> VF S@L!8/!_g pq@cY>,zxWh`(k"%w&],ig{} '(v??[|i){~SHÀ'0 `_3)㤨ogkNC߆ q+xĀRg"8P˧QxF (X :#HVXp&DAnOP^!фp ~f WG34!D[9E_,ط|O`A+ ֊ L XuF`[ fe\sbĎ%Xn4>΀ma`W3cf;? }5 E4K {NP6m}8k XGL 1aJ|7"ץ@>y < /_0@S@Xϱ&Tm'di<#/= Z~M3ΚfS r}[>ɈԦZ#$34'p ocFDW{=Dc|}'Od(cx='A X0Т@G7ny\ cⳜ 03O lȞs xJ[ ?BO 1 ho(NDP{<@rɅq/)ha@l~m5|4+茱yv1`ݷ;2Ht0 ]߿Vkyd)_g _u[y0 @]fex# X;6r qd#!l v1659 f ~Jv/N=yȥ򸴕h%3u  D jǀ>~M> gxU* ]*zcdt(P22ۗԇ4fWc+,2`ٌýV5g"dZϤl2ɓ'g Ȁx6 d`%Vw?5ıW:™@u)hp+`zd9/*J!W*2I74'Ez5ÀTeEN@ xU@=ѻvi1 -. 2wާ0G׉30`ߵKԈk|ŕD?`)'2%80`_geF@Tb(O՟e@i|gb@K 8Z.{ R1ć̙~Mf˝ _KMoc#}~b~fcT_yW:zF@SJR'P1 /0 ~Fc}1F  Ęa XogxWO9 r@̨7΀Jh82~/P? |UO87XMQJ X7cX22Q|' UfT(P]?3y<vhAݥQ_ZZ- @9'hF`Z h,8S2*u\?*p=߭j mMT 'A=#0ef4:C=3`€3\6iH;6og̀u?7j0^]ƕ}~fvպ:O`ida|%2@X:d@ 4P_w )b%@hI"WU% x Y,dd@˔WOP@0~..Y, Wת뀢 < м1>heπjA&.dsC>|.$F~$+N`D/ ~@5'p!/ ʷ&ĀOƀgՁ,~@, 7 Xfi?=1u}/ H2d(䞳}~܍"`0,ޫkK(^@[ y:=g^39:ll@c5fY|h8> (> u2`X1cdnj[p =1 i@P.6`W7|@r90i9ef1 iȀb8oV]_gme 5xEg7)2u8R Yq~ɿD7 +lC "K`c?xK?NOeǀ ml7BɚP,TDw Gi_#+  W%+'EɁoa`=BYk0u, 'bGptE<*q} !: 0e>8>@}0_[ E3e+ MctT}iBM9}+=Ba| 1:R39( Z>CV6XiiD"@lyd ,[)Oe@=a9/;UOzHIvw<W8|^ }yE" |$D E[A>D>mg& )@1NzT0=n3Qc  sg.`  /GBmx cxtN8' (d_aF oBu%ތ@EEg1(B1;F M wXgPs̹)..`40PcOwllgԪf _e=}c@c[1'ﶎU =C@ 8Uc0R #̀O`5@`[ gGˌh<: (H4/b@<H P yx۶6̚O";sѸglNUK h X@^oe8k͑|x-g(~ <dWS Ux N>F헡~h Q@ `Nb> [ ;#.`[2 -%'ԽAx P%R=y4A֝~A]~4+8o<=+0:9w^NlP}N7 zFOp?J?´hNTU g#3y..BD,6UBc4';| DlՉrKy@miדߢрGyO!Lw6n tF2I5:83>Il^'@́w~_AJ>RQ!g"gLKk(E)Й _|@#[.䣡' XW0X<30Ewhm`e99|@'@(Fl@ֵ'Q켃%ǿ8դQEw#,<&{*eo":ӶI_+>i}Q44w?@H:D~Ou]o <8P{6ΩZ7HJ3VlEM td" Tdȩkj /G?=hk)r.uHDQJQE4 40bW(P@ `|I?ш'`+J^$HzK'׷~a}^Bk} Ȭ\wv ^hDQj憡~ x 1t kPtcJ@$wGk0ǦXxW. ފyE@~ 2s3 xD? ;<AAHG qc>JpI@QзHbL"Pn'+?qwȁ% !8{~+Cu(@Ɩ߲#Q@70n@|K>Slaa;J}c Yމ,V4WtSWt^tQpc vL}Í-;b_sϘp @ ?rX] S:9ІE2L3hsQTtzZ1|0`0?rE}(dP]. \y+ E ZB^}gP@O0PI#`饰cONA<-ׄ|;ŎEfc[ ƒ&,-9&KlOtr^yODo`z4w @S`-WLGO6mtб/e' X> PUQUrD}2˝uuKx 0Pe\դe$i1ϱAhf--dAXq>WK2$Z 0jvH.n?ZR)JI0S'W0hCe`_b ڱ)İz ~x.LcƂ 8'gYQOIE|o>Gד@bjz80L;PǴf냄+3XG3?j On n R'o` GqgP'~r-bFv_hc߅OC.ءmg:\XB+%?]I V3ه_MM`u~DsCΉֿ3> i_mg S"tw;`-S7зJj z%[m 0t >0z } IБ}0)=#yc|mqu >W|U*@ o/%9-$% f iS(՟ Pvg*j΍&?NFi~hX3sb $Jsߐ'iU ?.bքRzwiҹmhEg@\A9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[9ro ȕ3 WV΀\[ [4KL@z՝4߲,9>>5}E9[}PZr6ΆR}Tg:Ϋ7||a^}^W-p'$r^9P9?jV>|5Ԋ3>ޱNհz'Dٙ~/;==??_ /{u哗~'92^P.!Uz> JkHunŔXWv'u?ğ'[>jU< @r|~ʞwktP~ơJ}S1΁nĄS?jCd?[f-;.jʎ @%[a ^*{~ =5*n&T߽%*MhY_CQ݋5}EyyCނtO'0)lr/t&DAE`?*|+hG ΀k #Wx+n)N.)҄L2R&&{ 4AA%yǠ26C{gߞ?3' ~x-吜揽?*G{CoAZgMGHVB]oB= .a8 bjQ)־\x\@ ߱B|!e0P|ڙỏ55 &*uoV yj'0?Y<_6U-;d}~p$F V~p)[k Ik9 fjOx @C1 -a\=B>:_`o]9Ҁ\4RKu.Ψ3 MߴQoȯT]o1PC}\#"}zĥ2BQ>9CT C9,pv٠]Oib@sl ;OΓh&`?y[)WH4`,A,bclC%6K2ߪzW/vrs?=u riuUI- Y5u} HV~o`@~ _qh%e Wk`}hEv^ŕˁQ>&93`硿8DY8C7ٟ ۲ T D[9":؇uY *}BvuӼ(.EG܃X*LA]~lC7 ZbȮ& )ӧ4G0Ap􂀁KPE rQ>' 3Se xH ه#,` LFsTa0d?@)"X'=_ `oh"gX~sŝl= X |{b!& ]t7k{_ 1RoW`fc[g!{?( ҟÓ @<||OY']>+I$ b >PA}I.jW '^2@`iKdOdZ,e02yPϠUx)lCY`bAϦ-XVάʀ{V? _gDdH` z(AĿ~h\@ P_#0A_*pcߨ`@峵/P.J] %(;v N>$L)L P6a@ f䥨yّk1@!6-eqP͠ʯpOLhbx[8O W#Pq`¤fxD"b ן"!ۿ~A} $D6 *`bo/Hi}h V_n|؃~¾{Ay#x`.\vVčT8L7`T8X9Qc1lxQ{έEvu1 b$`ڍB{@9A{ĀT}jGpUh$)7TUZ\C "x>X_G`W:N8 /,ۋAb@0#@k 3`Fl@z40C}hFКl?Y?.\9'>A|Pw$sP*1́&쌢 p<UZ x6O+:}PC3`8 O l%?T4j[1@ N_@WY]%3,Km`)-πc>@FF0B|8+hO]89AR꿩AOϯP 1zp_P 0E aQ@}yc'< hcDc O`Dpld@SOW Md@e`ȀI $ߑ3>'3;b=^wÀ. $Ik+`?5€G#L x/#^.02g !b< !Nʏ1T==0`VtYIj*|CvπMw7u= XGPvZ`:/K. i (UKkx99:@.db`s?Al}3o5I~!00;.t40Foq&_` Ạ F^$p߇lv22b@Td4mg9Xz d}=BA$b (0(?ToȀXe[CeP >37 80zp؎0F:Պnگtǀ]g O ؎gSsV 22 m V(S;@E1c@Ȁt;׉bO_B/'1 ͏ 3)vt RQu(O[?cxk~ l=3>Vq9n@#j\Y{$p jxOl hM:ge`%Πbߡ` /3HwkjK0ѥ?:oE1 ,}Fȁ0hDs@DF=EtVD0 P v>RMhOP ~ yx@veGPwȀI1 C ?b HP{v$= 81R_:h ʀ~u ӄV́!:S` 8@;C س6->dcsgU;?#TMD =B0~ Lߞy@I_ hwkO'"  xĝ ǀ~^auz2`S+|J>gn^ ۡѽM̀?uFLqx*LfH&"vFfp:.D! b/e } h'D|wNg-go0}7C-~|B V` 00">?aDW#  =¾:9֣w$o Osp )b.?@'he٤%'!-b34W Vx:>H_3tw zb.?Y('0 2O{y9VLO@H*w ls~vem.'Rl?n((~h;IknX Y~%"(2 O <{.{ca:B@$}wx4 J& {pf|wx;D @asO=x _?pF}GKeEj#t~2z)P7w5"7@ 9.V@y P 8y'r z "6S~@0~g< bY@N6oLq";73#ƾ0>A{1~Nt4|oP~?X!/ lߤ Kp,eAbF( v^?Ũk9р^+s^;B#'#N4R Ȁp_Vt k<zǠCG*/p 36%-uŀ艆?VfS &XyV-v.|0g[Ia(;" 8Gl_i~O?q0yK`sfd@'͆-v~$lo'?F1zZ`%īU$ b.'|O@S@7޺`DQSE;zwɵ9<oDЃb(`QnA (JCp!_f/O N,T> / Ѿu1"eGweg=@B |A_@727\"C}$=ҏ5֐9Rq|Pj7V>2N7 @ю'qP'pyuk1|M7ƞ37 @M;o%/>?=X +&Q/xeN60RX̓1p5,AN~sN#)$wI8b}FŀPt&n-[7Ir&O5oU2?W_45zx[-3(1E;GST@jZ*F>'@,{DaT7 H"i -bMXB&Rˬ{!I"҇n{##ܚb(Ho~,[JY3oyv$,[jƇ%^AYo92 q2tpewaÌ3Z٪Y5ր7e37}F$xŃ|-[tq@~LqxOEm-Y@@1fopFV(Tώ}uEVXt;t(}_!> Gw؃#yp!a}>qZ;X!(y#yϔB6>Z> Љ3_['O3&2տ.q;rKlgjm@n~@O`/' c?2iU"[*;(kfop{v2q2vUeTbOe^Wۡ]1xERO 7&OZ"-@:_J>_Gp7g$9nҗ#*So .Yfџ$ܥ~@ˍzx/myfwW'b(J:=gYrq}}I+*'+|M}9(s]3x#!2 ٵ:a7 w %\ރ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷$3nZRo__A{_O@_QoIq~#I~<ăoH ;Iܫ8q[S۟M)`֬Ӛ&]믋bU~{Bg=_߂Ǜnl˪ף= -w^7mOy]^amo(v_??a ߃uq*w,ʒlD& Kb,hҠr@oS/rBNXO Y8?&#`D ue7Y? 0eO`?Ijh/^{hu濒.l(ti?CKOVǚ o{VgKlj66Ylos<77~(󟽗;fQ؋"Ģue"X5җr)б:L:b~_SyIOlqiL>vW~!2`Od 8׿kFK0ʒ m؝E>u#Gz/~'\9}w6g][Gv6bsZp@dyMa04>]$mIM|RkD>,(($Qp+`JOkF *P9u`AML^e/Vczw~zߒұY? <P EyRtH~Ķˬ 86Gu6><^ǟc@̰^[ <o(ymǶٞ8Y#<* /P`H٨aoܻ#G3MfGyh pW `%MUi[i8ds= `Rؘ 2t޵#6sp 'pQa MA> ERjϸ$?@!&T%؄q YsD`75?+ IFA <D_wo3߬N飬<<'0>0k *DHgtܥ@˟3(\e3Q| uc= Xr) p@~gez|qf\uZ#ޘm(C)^,w~   p)7(}_G%{^8z?(jyGQO@yb zS!'_@QxQO O^.<.C5H0`*Ā3|HlU44 e> h0g: p2_"30S@> 31$(pAk?a} +]R@y\OĞ!~9ń?#‰}%ش +4̳H^EpAqA6i% @C`۠8- UnFf}ȩkS)B~@cX1$؈]Mlb~d}ZFdh^Q=ӣۯٶxdDO Ԍ='x O:]?KWC  ( 0BUBqE]'ԧ7!#uPq'S } xe@#GbZĀ>;7p o tS~`CG#;O q0;D>~A茀V~Ahɗ,Ǒ 2H`/0 qsIBi[@DWx {$_P`  ([{ p#aѮ (_Oi#c4S`7HXhFPG8%(`'c6]]Bkva0emoXu]G P% Hŀ(o~ 2A0ll}A4'ʸ:ـDd߭;Q` ~QG_5!䵰 {ۊrD{S}\@ Oʰ?L "yQ:`f@~v-Ѻ`:ǀ4}3 f > o4'4ىx7/?2 a~, ~ʀ/ ^?p}:L &1 cdg@?f'wx@~ 90@v(Y9wi]ac| %?@eT~@^x"|(~鑮8>#bG?htRh0 }aKQ\?:`Npv4{Lge@h@ nx'2 [ 2>*3 s=K0 v|l (pˀy_fOBHg r0φ4"1@GN(6cmqn,>P r>~'zfh`@}C 253`VX`O\XrS> g:y$Os !0 ]%F|30`;)Qz:~/v '?Q1`Kƀ+bo >L_c@&ޓnr€Xx (R`Fo69'Hm<#p3bWc? l0v0n~WdfuA}}:x߿ @47APIeg*`543 0" ùgg ? 7= uD@B\{ m8O-f،דPzNПٯ گ2ݠgZxR; >(h,kq`[C]1~fq1@ hj80 p0Ob>T\%p8_񌢘Ѧ|y0{ "[{)0@ { (? G&4|@/hH ʀf}01 Y?; PM- I++@R pI 0?kȀ}``rC\PV MA٫y+;u ~@\ k3]Q~ƀʚ9kJm`#d#Dycxm=x~X'(@иe@f` žˀ4};CtU { xQU33 qޛ |o^Og hh$ ?{|~>E}_/ikA>$crf2] â^HceUqm`1ϥ@d^zm[~ğbR)Hݽ׉ 0 F]tN`OC1dz_O N굽1hz_C 0 +|JW=ߝ@Y`b@tpǀq9$3 8^awSd@P D@<`+e>MۀA"G(TyU>2\XtW; :~_8рzLOl߭1o 1O BsݓXL7Aŀ>s'-i+~ΒP^>#170S D}{1#?CpHB9py8D? Bwp}9bp##DU<]4!6lxA\*7(q(P1`+xwx7 x`H@7`a@E \:7p8 /ftRt5 cGٝڱ 3WB^ˀiby9 =& X:ϚP~v| ؕ$w])d\@b1ʀ}kІÀwuF >2 Ѿ3C^G)v_2)ҵ:CdH4]`@1Q5d|ࢻ;4_c8@ ~0@F(OT)0gZ7{}?w~-"ʰY~l3c|`@@.]ȏ֏h 9h_'0@1F}~gl $軧90O͈< O_~:C$z` 0?&TрGQ_6 P"${Pe5,Y.'p gH*D *y?aoьC7Cy/ޥgP7 >f;SM={SFG?xf !MYa?%J@;oWYq?$WY 1rIc:# ʔΤ<} 1`Unj< b%@ bV.)+d_ 'P wUA~61g40/8 /-S4 gĴ}1<t~f:uAЂs_M c jvN(I>=`Dq~. 9_0:UfO(`h` o=}ʭ!v 3b$`wadap:SRQHpW5´*O~hi~~c(luYS@R7 SX^Tfߵ\}xFb YLa։#)*; 0 :Wt<@M,y)#w5dGNT9|+"I>_=rsB6H)C-t[Y3t/4Vuw? G5~khDu$d?F;7wR\/PѿɽP%}~ \ p(G`h!׷wRξ?|2I]X5;5~`vϥG pr }E{GʀΨosgO* 5-]q%pG>1 @V[ e4fd}kW~tD߼߂zH-pb)q : foVYu M_YF?RP. o2S5!́sKA@Tx qΖGOt~;R!'ct _K6D eNp9$j}uǯ^ j'e)dJi}">`)o3-fIsSgKK١Up9C38qhGBS3 ן~S?$8Tz^# X.k1GGk1~]։̀[<%*CmǽAo@ ;gh8\dnOq1{ǀi(5tXý">o̢-{㨈? kj'-DMWձ2 >@90?iH;f=_Bx"t# <h/A$̞߳~=Z ! ܰ|g(boLr>D#%쿆]q>*No?{F>o?0t}S:a*bs% ?үӓD=&4M+]}L7J.g@3 \ry3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒ3 \޷ %-9r}K΀\ryߒa/wwckH;g]MzcuBzM[K 7{\+/c~,vWGztthoY1- *go>M_ >;rjlXew[ٖM/߭odY[e}?Yu@4rU9>gKz;wd k p_:0z$'r֥lZM(07ΠOn$A:=O!Sr-=ޣ- -N EaDȏ ћ 3y߄4/"d UV!Oj|+a ,M0.FH&=?c3P A ,ɑumG C7vOq"^e-r+sDV|P==KC>@Q~Ti ȂD8c! z._fUV(v /? 0~$S ~(Ϛ R /l8q ؓIHol O毚 '9]ß&E : `3?G(åH5q$=hQ >x1 P{ѯOrdDq1m-C3_[Ѷ7M?1-.w/]X],Q j,ysD`w.ivWMV'<دv^0@Qau/3{(`;巾AXް7DBoH#,d!/ pe݂ާ[ PT`ګHyh19:0v_3Pe~p'-?˯,FAMYM _%M/߀Sbd0ϊmP?f.Ŧ (/pځ:~(H&}lvn8퟽lfՉKo@lX_w&}_9ڕ[@_'5F_zi??4Eva]%h~5)="2^ O` 12.g'^2@{OPY ;툒X~lf=Q?MY_b~Ck@c( f$짴_[* "  O [ `N`d&tԊ'O ]fOc7? ߪx`od D2 |gmknj c'c e2_h 6h$h_ ȀHnfVQ.2?Ց@Ћp> ([ `@t7N_1eBymh/ ɢ SL| ^d<`tf)1&!: t e"0O$Q4#@@ 0ΛUwIF:eK<8|M뵁pFT~}sABkv ٯD AXC^>@g2i_ )@kAĀLgE0 t䒉z&WـXtW~<0 #`%D@hIa@kB@4of@ۜH>,Ip:p0 hҧANE^ . %~`=XBK2Z 1(hoB"^keOk*dXQGb` ʠ&o˿. p|/SW ȁ^3@F2}f@ol2#&@=10 S+g~jge @X2ÀS zY;f^"c h)BVA 60 Z( `G`  @T~A AZ0.b@w~ O 7'Kâ'* P ӷ.߰,Z1eI?̀ @? @ ( j!" H_f,ӧ#g0èO0'8%'K) 2(^09 )fvA9 V1( Pp"$8g@V!Rgy.}$hCͲy 6t~HADߦb폹~@ѷ; <~ʃ48lO?~'o:G 0p)dFR`ǀc{t@_\}A Ȕ#]1D^h( O:';l49`@%@8ǀ7b"v[D!ðd ZY (1j k~C \? =0 oxz P\32`W`*(`%*òFhdXHRw8} ||OlI b Xthp+O U 0 ƀU gcq2Q1 g@=~R,`~L0s@~7>T<0C~#CO"IaqF P+]І{bZkh ĀH,΀v/@gG3T h`Wsa``&4B PU=PxߴZf3 D=ϊD2u(x6c \'O`/y 6;WO=2@WD k|l\ h^|ņ<|@Hg|cdCI hb{[ J Xx NN!Y/2<3r>/  P'FLt:G=>>e¼ lgy ^}u%zk8@|P `ĹJ,+$003 pcd\އx<fb[ڞ7g 0wÀx^qe ~m0oZq? ɾ kp%b\,ր &^n 81x$ `^ޢ|G, .` L6(-M Ȑt E[8 wȲR,~w8{*Io|.}FB~@9 3g7À~ F{ #dO#n~!~c``VD0}2 p fJL6@3̈́Wр>:l:TV>1¦a+ @^1 G˯/ILDx%y ?#:sR`UhplŐp(p ?S H@:7& (@Y-%>r1e@(ȀybvU~ 23i@Ծs 8Yzp 'i]OT}?9Rwd'ob@3zX"/Ԑ^@=Uϻֱ5R` {~'=M4` R`< (DtO; 3ĀibyÞX+ցN*?1 Jt$})"oI0#*1CS//Y j[t~2o6R @ 3}u>DMyR"= /c0m|w8ob670I*ΐt}3N#k>/jm0rQ @ 3ѿ)p 4 eur`AQ)hEQ#(ҙS ڻNNY3Q6S`K'կ_< (4#gBE No3%@3-,!'-.(^6 z$fO` vV(XF-'p-NŽE܊5X~= aH`P~OߙE7(}@h/k>/Ndl@} `aקK:;5Y1 ,hEop8p"Rݓ`8Qұo)w ^پ./txCGo[FD >i/>7$ߖW> J8hE%[Owإ̓oHmY>E}wFO FNmR~ Bx/^uSQ:[gLКDрBu}=Q4V0# :p([;U>9 xS(yYM ')lۇ\CY cPsf;psG:C H@"1.寋a6BpH@}7 Ep a !ܤK\7]?_"O!o3M*r΅||WqSVo{ND0J`7>nqY`뵓D/[_Q!Y8PԿ CԷS }B@ ɲ(4) @R(=FD!V$n YM6i_ԍl2|0,)u@,|%v(@-'7ǚ4S;ok;G)/WB7 %< uzbI#@j+AE| c?Dr$h?voM^)sq>X$4xkZL q`Ǐel$x: FxH'G:$0[,RqNׇ H C\~n) xPpt]G}2= 2p`: s@~m3~ډ`GnlaT`/'@OG{c3oͳb4 J_ᦖ$O?]'9`߭~҃2{f oܥ~@ qX%$'= @Nq5ϞO-}ݕU أvdE?Qfƒ"?0O.VOtzk N&N#ow݅l3 \ry3 \޷?gx50cuyo-2.1.0/data/pics/mgsGoldVerbind.xpm0000644000175000017500000001223311672457346014735 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 64 4 1", " c None", "= c #ffeeaa", "# c #ccaa66", "- c #997722", " ==##-- == ", " ==##-- ==##-- ", " ==##-- ==##-- ", " ==##-- ##-- ", " ==##-- #-- ", " ==##-- == - ", "==##-- ==# ", "##-- ##- ", "-- -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " == ==", " ==## =##", " ==##-- #--", " ==##-- = -- ", " ==##-- ==# ", " ==##-- ==## ", " ==##-- ==##-- ", " ==##-- ==##-- ", " ==##-- -- ", " --##== --##== ", " --##== --##== ", " --##== --# ", " --##== - == ", " --##== -##== ", " --##== --##== ", " --##== --##==", " --## -- ", " -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "== ", "##== == ", "--##== --##== ", " --##== --##== ", " --##== --##= ", " --##== -- = ", " --##== #== ", " --##== --##== ", " --##== --##== "}; cuyo-2.1.0/data/pics/mdZiegel04.xpm.gz0000644000175000017500000000525212412223271014332 00000000000000W*}@39<*>P*뤶|CS,I,g=I ֽwݻd7==>Twv$K GHaNw;Lz֕wܹ+ItOTSмG&s5#2MSU40_D7S@s Md=6=<м@44R]noNeDܲFe2"s4e1 2۶=/gw42S]ļeimF}7lv"0{ht:1:hmiѥļAW=S3 cҬ.w#˻.h22mp]̈T.8m2G&tm#u+uWKmW]n஼Mu B̓R:?JO7;xW=RC/[[[[Gj[˲$٠3,2ض]-A1hߙQۑ͗pdMlGȸ0\?B6lajl KY*{9 JS$U*N慴&/4C~D0Cȇ87MD!rrz )1$=]O= 0^M~ K *=gU d#'j_*'؉$V!@ICZ\F0`.U ku0_3\7 mh7o!8IaF6P=_3UŎCU9 <8np +c!ѺI+8@hQsPܽVfa5u jZˀk=,rbI1=eqm`;:S:I:p%jd1Ny8C_ho bjY쎫5!% v{!҅aB67Q9zt4 b KKaP5 ,yd7튡)C7"N/3ic^ [F :aU+LS`@A`rcb?WA}/_Q:+uZɠb ޓbl a؆ª']~0`Dc)1L`P1XE]*Xd^0y1OB9p FbO N`H9CN:Lh.v Ŝ)ƠQ rbH)8HbQ"pC$.'{|T-4f%g؆fk)S0A$&ӳd*@bO d0|OdN L?NNEEc8>  \|l22{`t)3_q'ɘ`t2 F^|ņN.FI0I)Fas0vw\qlϜO:?{j+ƓΗ7놻<8/ }:p_Ոxb-άˑ@v̷rg.qqm6t9!l&o>kfq֫E澮*qw*l"txWÖ1.u ; G kfC]sXϪ}SELKتutB6.fTs4z:3oTq.|2U灋vPc=}pȸꁔQ5M8ϪhWO7o8JQUոuqBTk{|K |P9?i݁PA켯=3hc~fā~Ebv ;WsdNO# oعX|@gΎg@f}g%B5 U9tȺP'-eпd^z 3QQB#A8ճ }0BCIiWM4B@CX"C[NrhB GI_¸hy\z<.=Zɿ/>G_ճǏxG_/5=zp/2މC"wɤ_=:<9>cwKZN:Ą5|s_i}d\GLN :RCĬ$0";_GYAӝDyrK,`8cт"b, )Mɹ4䀨_fuy{OU ~nݞoEu<9ReTKFߌGG0VeiȽgu?"DYM ǿP;wyEoJcU}X}}hlM"Fy#(;|,X\_[^J."߅OQt}3kdƣ _"x(B`l%ba}Z_?'fҚ7ѻw$l>')ۼW(>&7fp!}s_o7{?N$54)#[CǛ7Y+sf=Zw aN0߿i]+}?L 4K>wOޞTjmңqhy\-\T+%*cuyo-2.1.0/data/pics/ispSchwarz.xpm.gz0000644000175000017500000000107211655275460014576 00000000000000KO1|DMa#Ƥrhb!((w]^t:]YXvavt[_f9g'jYQ6~^ iAs6`YfsvϳI6v(ۓj;NylQv(pmfJ)&oޠQ+)FVRtb<7g+!bƄ O2rJ7g4B-RkA& LtŨYI NcF;;c )%YI jB)FU^t%)H"q+G5T%)Hq/t{Td%!H (t>ne!) Aƍeax req㿖%BX"SMVFBǨq6 q/tףpcT 3Bq[1cLa!د ܈+ Ɛ2* J$1,z-1$DͶDB2$Hą;GJ4Bߨ8=V Hxqa1`IF]j?G<  kϵ 16Z^ug4zA7^R!cuyo-2.1.0/data/pics/baBlue.xpm.gz0000644000175000017500000000036110361514436013623 00000000000000O 0SYJD0`Iy +Վd2aۀi{i 9 4")/s{9^ȳV$; L11`zI5/tR&*d-nA߯=F;+3=Ιl(}3Z! %Kp/.ef=b!;PXC^SVSr֕sD;$o, cuyo-2.1.0/data/pics/mkaRhombusLeer.xpm.gz0000644000175000017500000000106011646353264015355 00000000000000J@{bRC-jADAzS< ⡔=؂&4m7l.Y_dwf2^?aJwspBlinky.xpmQk1-?>lWk" {S|DbML2d/* L fo߼bt~~}-WldNgo7t ?ҢugAJ??t>WNPE'ZENVG~r2g;)#B@<"H΀v< pKе@;j1hGͳ cj1A5o Q^TU/ǎ7UWUնm? ryccG̓oybQ @-# Rگ~e# h#a>$3F~z] uR6!Τ@ @ dψ[|Il⷏Ob>?[0$oĮp%ho߃`1oA{Z9-hoDl=ǼZ]es T9"yޟh@?\m՟PQ$qR DtN!i*!dMۺf^JDRUACSUCR +oEԫ~H ǁVOBAy DdPqBAEǡgY1:yYDgS.P,+4rB8r SOޟ`{Vm@^o2C&og`Y!qVpx˟O|bN=H$̌I'+#{[80ޓCRI\ȸD >O⁠<'drAXqd|G#{6PA 8B6a}msBERU?5R (6*(՟D NQO8PBQ.H0 āLS {%~k3cuyo-2.1.0/data/pics/sbBurger.xpm.gz0000644000175000017500000000475407550521124014214 00000000000000mk=sbBurger.xpm[n7 }b6;q|`qE EAۇ^@х)؛@ZWˑxtȣ'/?o6Ox7͛^k6^ן?]5esQٛ_~~k?{W_=}jm鋋s[4x8ŵ-:|;˫;[l]S-nlY(\ŭ-^ϞZ~?=wOe'xbg7c[ڟU{}Ϳ,b a{vjb0fdAYb 6$8cn! 0AjA?#dC51DF[V' l#ZO1dh 4Yxjq*v8 aÍkQ+àH `7+oAH!1l &>r83 A%)caCFSz Myzm1vz;uyao8NX [~ڏ3biV42!~uDu%?Kb/G}'SG^}\&&+ka>nu\׍AAN~ ȉ`0۳Fs`܄1pfqa[l\ oq;n+55+>bE1~,A D/_n#r\L z~y} \iz~'י:X_/Xuj# ќW c_"w{)r LP˻0 jT9QO?*005wW9Xw92S5p2$^ȁl8b]@*6CI)3E"ADrgL~[Z?l]! VNgWa~<1Ao[^?rì2$V4Mo/`ǣxn I3U ^!zp CR9@ л&}ʍ3 $~f ?V6(CAofyp Gʙ>$8Ƒ6@Fڇ!qdP9IP֬G3 D᯸&EznKkZb }}G"'&@ʩ!C9/c\} 5`Qs^N Q,z0GCrkiQ棪w(Pn@n w(-u=dYkla`B#2JnrމY'@F ޝibʅX w4r"$CLHj|}^3njvċ `EtUh_K"b} p1 '> &`E~k}Cǜd_(7=RADX&(d.*w}!޾z|Kg!%!,`%qaC~ѵhrcc !!DFm@0]Y}@ b6ch}ܱ?)Jwh&@(wLa!n׭is?B2g0OZB eqM Y1#-ɾ %v`bLfɮ!Wto5 uQUӺ9-a*7qd#RL @a>,N' >cEia3>+0]ots^%6hr)mmbb n_%'+ׇcO* v1W~z^ȑ (*s}֎qSQkƁ$>paT&Awks $*BBDq#?Q,~f}j~%Y:~ƙ䀘gc{oTY-% @;Or nMl3;I-7ľek(4x DL7i6E[[ww |5؂hbu?>(bp&`}%*޿̹7`ypaLiޝ`)b( J>|5W8p7~ !Wڿ;ywyw@3l.%R?>?8Ccuyo-2.1.0/data/pics/jhBallons.xpm.gz0000644000175000017500000000753107550521116014352 00000000000000@܈<jhBallons.xpmms9_B0HfNI0vmv ^^eR!pmE>ՓɛPmB]zY9] u=Ivq\$6kb~}}P,^@7i>T7\O3Ma7YP=и/C5~VBph b`%W83;Y/:4sXAHN^+!=d}G4y 0.@gdc>j1Ɵ1a UnӒ@$ h=?Wf4eK~ ;¸T70VS'T @0.57./,'J0'fcWe,٫Đ˭*vw0"17m[~yb!iЬb-! 8 T&f8E2 R`Xz %0]І3Đ+dxBNVڏvm2$C3#DUDcy]Z b%|FdU[nV.H7VbݐX>.+MRj_6NayTĠ{;C>9ǒ2rA zt1 !C2{ⶺ2Ba;oKl%] YT٠'zJÞB(}!4R\D3dvw}e0X1 i?, ;E¿9BC cL!oSaO9BV}3ޔgNiR"G0P7M}t!;_Ʈ?}b`P%_xǑޔ"FX#,}r8ǡ:;fA{]|(b ]CUcQ3${ ׁ!,dPLMaixYP݇AxC* wst\t\b+F7*8o :Q^vݤ <@l_ 1ujW24?PDw \2| C̰ . O3`hV^@~K+ g&u+lFzד*}'OiL}/! b1,h(-밮`ı{$H=УC!60R޾gl|dg=ze3+c{BqI 2ZTeL1K֊E Ӆ"D RTU"E@CHhL56U(oQvl"WPHklu Av` 2fM  T!JC,YBl-:bH)T(AƌyF/A@hѡ/a vĪD'6|sg+?̍ԱJ< 3'Al"/9ơUq eCWF[_t̝J0ASǐ;u苓 Ade Z!-H_km !ϝ9%1`xo|ۘ 0KkhN| oI;VW*;w& ߚɀch*`6r!c3FܙCdjÉUJ S~7+G }Ǟ/GH]yD"ouug-c7?Fdʋ'@9Ɩk0`!8Þ3"KkBCVB rRw?1gN 8q*boro-ewLpё|~iMx?w~zʆLGh4zR;c71d-rcK}BSWϓ0Xvd\t6wH:_uSE:[<~supi[TBB\H7e:k1 P 1#탗J NR@:@X`R*1dSQAE0q؞/Y?0*C3`7`À`@12lz~p-JA!]f@OJ/l{ƀH+?Zd(Z_H}Zږ ? ?H|7* }AIՃk~Ȱh!CawḺ{ ucw5F[ $W?La eF£f|OfL<`zG&Ú|g a:{%ܿi;{ 9 r(Z M-+ 4?#mHYu/ڌa}C?8)Qd3{o"el[_0 ~}:sM 6o9uxNl'7Qd89?':!* aA44?q }OՁ<{whb"]֒R_ I w=`c_t;ZBF*wh"sʱ87&$!IRp=+ izY&Njo{l2~#b  u_I=Z>/Ecuyo-2.1.0/data/pics/ilDing.xpm.gz0000644000175000017500000000252407550521113013636 00000000000000ك=ilDing.xpmŗMoF ͯűˎF9 v߶@QhۢCrP#J{/;C|șǾ7_wջ?>}^o~;׸r_mn{t_~~=;˰x#o_v=n+ڞD9mw%m0Uwmh[{Љs]@'ڮf kھc%m}I]mප=n2d/gS߯a$bNb2Eg#:a$yQ%yQ%ytHޗPYD*HyxBt])S޻JZw N{o[պ佷] u{ots^f0bD aĈ{9@D6}n]nʿ6{ l@  l\!dY7!&B d]#<'7?o~ |!^#^#TFD3Cg uF묀^()3c9)1AFb"j"j"j-11ܠe:7{YMK(}9 o;[;ҥht):~K9X"M~A/*䠂dH%$e4׈>(~z:+5Je 8L 2zLcZ#່Z#່ZKLe:7{Y ^s}B! s@D)DGw[hat):~#]߮RyA§rЄ 9 Y-2j Vj VjIkbP6"D51Bt?GQGm9:j{QQGyQv?O=GssB1ʠ[=ܘPܚPiƄy:lBq4,"gs{o]D3u1{oBr˖Rcuyo-2.1.0/data/pics/mjZeug1.xpm.gz0000644000175000017500000000243111043161242013742 00000000000000;I b-?9.ufsq`;3^NWJՏU=-~%y~Cn_}v}B7tK7^^?&?{~C{1scyanޱ.]  he`Fj&:I0R{KV eQƈYVSd^#دt_8=3?|O@q27Z{XIG!#0 rKӁɹ+od~QJO$*8(0H0^-tc5c"T#R= X64V/! M)$ 70¹#"KVy+HΨQYR>`$v mCH! cӢ;ٌw&7v``]F\ g_<`,nyFxpLhG vF xiSfk8hф )2t=<-T7ù܄)U6<Ì231 눌`p ;@d ˠiyUN- M`F8d@vcuyo-2.1.0/data/pics/ithRotR.xpm.gz0000755000175000017500000000106611101102054014010 00000000000000LGMK@W MF~ZzS< ""Eԃhdf;o ͸էcou^W˻-nO7wOk1Ýק ڧNwMSѰƂNe~6pCBʃ`<K9I92 )'hKHHH5%|>/Xs2VUT nĪ* 0pH2 7`T̲U6n93Ī#Or 8 :ng-[X=us'#_;dcz#U`0dCǺæd:LVy5f\?SJܞnZag2\:qKKs3ĕ:ZuM;X`Alg'GrG-[F-5G-kѿ[jXw+,8똊uGS{)m8|~c0C&r͡&G6^@U[̇e-&&Jl ?Q>Gpx|jW6cuyo-2.1.0/data/pics/mdHolz11.xpm.gz0000644000175000017500000000252412412223264014026 00000000000000WRMCAi{nV(dZ *e?3{/f\X;XG3;Y~ɉn ۟0 vS!OLEgdbb`^w)|=xn%c-2ZΒLk'/,Z Z>$i$ɂ̱|`B*A"^EEtv\$`(e'J9=%]R%Ὢ{^UY-/^)s5i-SJe3BI)dL(%VYNe.pVD%U@EIZʔqHHb]*Nr%RVX :㽪KvdK%vj.PSii0̠Lrq2K#Kꕑʣ.eQ7FVx 3cl0_:J2 $׌LI d1(uzT5Yq FMY4{}o"+I&aR(Hy,w@~$YH~"Sssprg9";akH|hLˎ|v8'xJrRQ˾U4_ wᔜSƓV3iRbpS΁"NBw^HP3zNSF0PR 9J %Bgﷷ c1Øa0f~c+(pUu.@O? K0+M'4A1Ah۠U E7EПƑ (c u:wݝ|<_P:@ ?H1Wj sxn1`>^1ZM)T"\~&MODD;j&BD. \X1&nM>=pCt.A}'`u"~ƀHC !](Dz.|/d~pܰ_][pMt:p9}ewꯓo0toCȢ W| m.ɛMd$Pk!ܬ5f3 c8E&cuyo-2.1.0/data/pics/mffisch1.xpm.gz0000644000175000017500000001332511653006611014131 00000000000000]{{|u.$۲*R;uS%I}@賟Yзy`ٟvWY! 9hзD ~v^IL??:Ir!!dONˊ6>\ S`S.\A6-luS)J+Czpk \ji/L&=FT\>V6 \ZXXU XX  p6{ ƖUd6dQUA2Z6 4oHo!bC:J&{!:x ٬(‡cNge U룰:of3xG 4G!{蠪Y;ٜ:(UJKرϱ}1':p{= "ʨ^BPbofY8y8c_"ٴsӬ§zaV=2Ǩ"kj~uuA@6;ϗؐ>{=<ɿP?FhP3}RMs#VlX8E{H=NXp-UC.`oC''.`}zp= {ƺ]׻Mp F$:\\}'L ؟}B`Y.`_!N$`D\ Hu00000;0 [^":O:E}+wHĔ 0B/°F= ^0 FEc9礡;( z2Z8'MRsIU&sz-QR'ATttcɜuFn[l^챲\9ԕYQa$h؁`(;ZFU/, ֨5+_\aviaaaaaa=moRбF~0X \FV`WUuJt_lL>ʝտڪ:2gcHܯ]ZA ?Br'udו *Q="6gܾ*6)!N*EeG7!LeCOdhTrt*"WaV[NN|Z 4E68a5Q^>>y sCkIf=Utڬ(bP׭hRڜ$ KY\cET*> Ҙ!Pyـʨ4ҩbЛHv ["mU %`95J"ǡ&c~9p;-\lNf"rʍH:l\8.QvĆhw,3"Uj-cR:F+l\jDoFjģxxukӄe{ʸM2 {\;E&5j0vvvvv70зAݶޥn;)3wcxɼOw_a`[<`YjnOVuq.<6W^fDؐV+"!GHT6i3JSBD[ * NoHZ.Z*G$Jg-0C}"y8 5EaxO?zg@"~$1s}7`G9zT(+ "i<P`6:˂D פT|%CacI nGUG`\q\l^6/v#=&+^{hGLAy-6<a1öcsҀXN $45 #i^ll='g(趜dyPI4W<5*ȕI7Aɼls׬QmjOJ*rr~~Tz{︭; ߃y NmJ3j=;kDe~oƆiaaaa߇aQʔЉ+MٶrsHD45cZ) 5Xrik870 }ь0 s=m_¬cs(Cv;ddfڱifd{uLc*$J+fjEG)*"rIR*f9S&L&P T>`UaHɧ}s4&D$F*H7Y(H%P&esED44nIv"Ňpו&;/A%'G8v>]'GB|yaP< =IG/7axp#*Hj4g:f.P騨Raҵ7‹ =y4Nb.Oz V}Í 8A] B dD4Vh2HH +/D<C3c ]+*̥ LD^E)"?ڱ9Ʌ%qs7+(?X⬝44}SXl֨Y<|~#$ ;:mFEVX'^CIL Iz:Ӊd]6"zYӊd=,n(Ya[6Yzxwi@Kg%FM}V*:zM cZO(wlAtǕ64ls8`h_zߵ]N; ; F y_/m.ZmaQz[ ȝ`otˣ|>ܽYKd?@ݑ8Xb,ЏHzp!dWY})!/>OcZ$Z\oy?@| ٣U_!l m-VlmG߯R̗nB UyU4Ugy+xX 4Ϥ A"s{[!!2SهJg/0Ks_24Xӛ`ƸOop}(_UTLKêgfF H<J?PEd:ӸPu (wwL4iҼK 0&T-,>B*e?"BŢ ҵj Ҋty1r^HV*Th*.#l1D+Nq`hƛDm0CB3 c B,ZAaXj,`N:acG|8tV ˹vs(CxQh:m}mרZm<*$ugǣ[wMJƞtإ)6[4q Yw7ߤ$v#Yk9{num~aFP`O0jY}գ7ltV6C Q|8Gz-+7ryuҜޱJGM; ; ; k1tÕ&k>go!Uo` -L)> ț:Ԋq:Uސ\dRadt 췡p7e'OkDIo cKtE@[VySCV&Uϒ|& g5[:*a*ΟYzPm YL_^NX1'x>@EU/_U"b2{ld26B0.tHPM[R=dĦx5# @6TyZǀOաLS/xϏ>MW`Sc* @َ\H/FA1DŽ9?͈G= D' 103;^ Z3dA$ |n%qy0a?1P"< 0NZg,x<އ1v"8` >y5'豧<2kRv /7qA7:#/Ӈ_p7GoM[#8s!eK.C 52p>Di[ 2Z ˴D&}8$)Ticg,h4Ir&PynU%!@6JGp&r޴`Ҷ`\ HmrG@akt7QV'fׯE©_&wm505ߔIV 3w@8%CstKApLs mMg66 g [l#߭G\Ut7M}-B㻇F|>L -PzE0 ?"+;Y-x޵0hgB!?/>y<7†)ycuyo-2.1.0/data/pics/mdFels08.xpm.gz0000644000175000017500000000416312412223260014006 00000000000000kw+\/ bٱ2LjRB60S N쨿٫뜮"y\='{WǕ'fɠ2/J9FʳiUzJUi߿wRT^~NF}M)ٵ~W=moKd=[R>黝/3)QIiwܦݑ Hضsߵ@ڇ֞=)햔OsslW}[ U{ߪ~We L6t>RqXOUw<֮߱al  5 ߲Ch;x+ғ=EQ%̱Aڞ@\'KA 9q:.W끓?HE`R"O*|RzIUPcA| c >cePW ZQZ"_h} Rua*+髱 BY@/XGAZmºl-ePY0s{GJ̦|CTpm4 c:}AIS}V<5OSγd7U+0օ|]]ŝgc=Xu*A"ȫ+.2|[;^ Hx|R,~mP_coO*j/_)C2fD -JoZ}uOP2 %CP2 %CP2 %?ǀ} ϖ;wk @&;&/to0`Vwb.ŀ1mL.6YP%GH$ڎ $B#edRL iA@3 PT g 531 b!L0`(&ڲ "6>F[#&FCZ #E W2YE 0F"T0.cX,]ٷх\8Cm;ԧXDB׎vI=ړѵ_!`04xux`k%n4p4DuऎS@ql"$ieh,XDŴKeK K1OeP.u`DU)],p#97d JJ܊~p+LKyX/RA EipQg/ D]\w]|A\ ( ҨQx>dg`!ÎCʲPFܸ F؇!̮ $K9~=HD!pFap4><b#m-hD8^Q7V1yG2F`k?ÄE]@sͽ{=A `H4.n#_bN %iJ@9`r>QX! ưZ[B4Bw{KY4@8ho _'F` ҰR Bl h6nrP#FyB-Z]woG>+E Hs@iȇ)cylp#IM-}OSC֚˛7 \lgXmcHpţSq ɂEF.$2ܬ%`TZ ݅Q&u1,cZ2dcPa @ssxlTN$QȎpDM$[Ru cD4cq})ĉ èov*fAZ1$7xfIb;^eg$x]^Rhcoexv$b@u1͡uyzg8ncE3[u|Lnqm2KpK'n|2BUh8xsٱzudVf3h]q}3Iɀt$r!Oo2]w>~|onBfI2;?Mx4N8vtď5NW*fqZfMY{<0񁦃goI% oɩk&\oWʇGT^5vpęMlo0'S9qs? {j^?i*={Lβj_qP2 %CP2 %CP2 %CP2ҧ%7cuyo-2.1.0/data/pics/mdFels04.xpm.gz0000644000175000017500000000461512412223257014012 00000000000000Zmsί0m%Z)wx׻)4/ΦqSB{nޣNKtf$=:^:w\./VٻEY;Bn+f;Zyk ^fOTaa8Y#fq?"8a#ݸǽpE} L?y;ٝQ ܹ#0->I{1aƸ{ 8anww<޵.B^x{A[;`J&8k!¨%] ) ݵ*wqQ$aβA0 #ra?ߍܾͯgXx*{xY7B=g8gf)ga/c<'Ixig'~AGK+$hR;,.;KUK /FN$_b)@jOP J ϖ4yݤs7%.{skIwr+4➅o,;.$/p֪ ŒfY~vYnaeԅ;GRɱA?bkA\,}C3|}'N$ 76u }W `nNM%JNȈԾz)A`ͪln aH *_lBLnm1ZlcӷJ*=?3Q~_ж$V5{5LrH#(ze,Q\&oцWOmR}NȄ2t4 UR)m` CE=Nlβ!FE <+ J~siCw '0B;  }.Omu0UH+QRΧ#cBCI>-<0\w7ޜ^"VRFXMc*u;A+~Xȹ< %dNTeK57ބW8JRGP*LpGWKVC[Ք妇$MC&ZM+86I/ǧ>`sTIk@ on^o,:k.>l7oE _r)˲g.o~TMɔʹR_nŰ4䐕INާbxsJ 91'SpO~fO\bȉ,cpxZl6pAC}!cd, BOI}?ۭWN_eP${{G~6>W¨xu5|K÷HMoAHH'`cJ]˓|$#Ymg?~Wa{;(b {v7 `/{8tz8<ɿ}|wm޳8ͨf.o76?>+noRokkkkkkk7<T$%7cuyo-2.1.0/data/pics/bxBuch104.xpm.gz0000644000175000017500000001033510361553650014074 00000000000000b=bxBuch104.xpmkWS; $ Xv]nH@)w2K[D{bʝ^=\ܧOLincvctCL=G*8< ЫBQ61b0`ZUO0(U bZXp:+Qm\Q:$ p#zP1u1-eO]=b:()cbj5 mljV ״dg5J}eEoa:2eE&aO1D mv5N k. cXRXڤURe kTW;gݣW @&SڔF:K Q}Z#8D enslw5g.z|!ˏY_%u1 @кQS|kK|W>^^zKww'Ψ)aX$ >.[vR+z[.\{FǏ.FmJ#d|a|x_1%Ikdam wgE|ZûK2];xrrW`-7ͼ6#\-d#:#x "qW-uH;p*V3rw.gq ݅pzV޽wՙuU9kB dS7l_m=k 񸋌/kīb(gx#x =`qDE4~FF]`\{S ECK$HώqqVl- m}Dk,GK=&"drydI:>v@>yS3`}uu<lCEcxs1]NbkOKvױ~ϖwONBnZdy]zEqy 6)df1ZK-|ԺxH[ːSo 3ۨ#:2fv< e1bыokĻڇZ!dBFˊY|nLud'>^,oMoW}8Mҕت k_[tAX#X̖Þ/dvÄHB1xaީf"*^8L| Nn4xK=b_ 2α[={j io6U*-1=Ed:Jb377spIqgWZsLP]y淜r:Y0H^3Fk0f)x Fg$!a4|πwot5cD#1ΜLO}Z>d\WA(6˲/#zg7X8ʝg[U(~ȼ LȝGj/#0|F8%ʨ:qIEl(lrX,MןI2+A~*Uo@\x=;:B_8x LH1ν=dDA\RD88x- m *iH׫r\zq6xgV/#c2F*#(qL0C?6ޚ=F#jDF4"g3W EccSK3fy?pm(*p;3dyI\yehI,ˣxΘGF | |Df$|1Qdoo3vk?tDJH|q4>QWziJ>[)2A=g<20 5AN@9AZG+^W*ڬ;#='!"|`1!ARmGk gk'acľCFށX?c0ߨp#{ Ƀ'j3'׉z$ƜN񻂰$w=swNG^?0DJFgf:iyEїkx~zbDCF@փ-왜+-`ܴs+^#] LG3/@Pph~B#Q7Miz :ݲ+cDF/&2b:>2M`D tEṱz>/Qukw,KLSj(ґf2тq3-CL]<БArqk`=F.:l&(M`"bϾVF@~ :F nH1DgTzgoM.* CH2QfM9`$ ډAH!%t G^s_d9T4O{A@NRE_1ܴ\R;f]#<m`ݮ&;7UNVS#ynhQQjX$}݁.v_Z5@LF\:ZMx.]x>]_r7.I j~ MKwpp !hS_ tnqoJa p`ca\mQ:s򎃿~t/!k 눷<AsC~G9T~:} #آU6~u`C2h]廁ot,Go21znnXaex u p3"$u$s:8yI@}AF<\ŖjS(ug/=E≄1H㉄1H㉄1H㉄1H㉄1H㉄1H㉄1H㉄1H㉄1H?>?kcuyo-2.1.0/data/pics/mdEgoR00.xpm.gz0000644000175000017500000000504412412223250013737 00000000000000[{F)hbˈ.F'ũLbb!),ioLEn={W; b*5_E#o}H<ϠL4Z^FyD2c&%9o<%)IT@2JJMI#MTe9*% I`r(r!+QS͕T G2[ T$ Teɟ#%'K(KTY-$W402)5P,IU5*͡rd̓ J) NJ r@e%/S$l+BaW4 j$55P`$˪Pt MU *̯jԲE2Am6+-5*.5"yNR$^45eA KVZ4Wr$VW :xMrY+|*Po$5=[{o^I/hkJk[jJs^dNԣ$M])Stbdm4w,ΆSS WRAu(딢mֲ4Q Iݔtd@l7 㑤mdFl:E#J%k:JMpD鑔̼NJJ@yUP~"L1t&?8Y1f`dJјa ,[I] A,XIQeVLjyN1ixV6, ]i9Y;g,$36d!/(u4NNt+e[f]L2R2X8NsOFCԨP*  d=L$8J%3⽭ː\[ 296@Zxͦ K\rJexːN4Rp0pzz kJ_@ Q?t#bGexڶ\t"~:bn0jEnͶfM2Z|;gss7Cu yY~Z-Z(Ww?[[3 sA|ǽqu?$t x T+.0wf 7Akt|j77;.hx a Nn|h0$t0r+1ݬ5L( | z4 dyN3Ϸd6\s=C1b x4z_cI.#ŨgE^ FZJ4\qQ48UN0<`E]o`tMEtѫ9F'v]sytt5^ctOG^"R @B(T+`G ;<3@E*?1*%t!B pN&|b-I E={f%02~!m?[ .U;h!L{d0m4`UoXJ:` P><#ǽ=4I`5+Fq<~D'5nOi-YS&˲,cXwD} rdf1)j,%Id 2KD'cKU]OS)Tb*ƄFFJRV%.um ։)MǯqWzjh2\ddE7|[UFɜOeS / 6*ښjVJl MzJ|n;'S߸jjl UO&uJh6h~tѱ`8L6E8$xŨ5t4{OokzFhds^mX_ޣ16ϯ>Rj$'T9jF?|pT*NmjTT㱗:vfz)$Y$">PӺt_?~ʌ2p:?mS " Nrlݔ|}־59{b%-+<٦X]¤NDs>.?a;cuW;ȱ0Mo)NdbHQ~Fdܤf+klxYzwJ6Q~bc~"eZ-+|b7"#>'"zkP?|BBg$w}◀1h1 ]%X^Pöa>/_`X9,ỸhQmD}?oo+Kb5~\F++<[X1Xxuw}XϹ)/a1? r,\Ø=h#憞4ܰ+GQ f9Ms9WڿFԜm9gebUX;XWVՀU58<ޭj\|1 u)ϬAIϽ̫{oĽ@ٻ1YZY. i6;[HETyXr1s{[j<5`//|c j?VՀh n/~lsʻ7}v|[ (l|&m^,|iק @Ej;_֮W4f̣1e1ξҫ%0cuyo-2.1.0/data/pics/ivVulkan9.xpm.gz0000644000175000017500000000176607550521116014332 00000000000000<ivVulkan9.xpm_o0g)5$뚖nD}Bӄ !!;>>i6N'/g;՛W/*y>q}{S|^럟?]mLNZ-n]u'Iz\px~X,`pPpaS|m- kn׫% ^U׭ % 7Wbj`xs!`pe|?a fWښ+ykbnm^=SM0TY!#7`6ZNhyQFju"< WKBL`Sm[7~$kzY`޸{Jvz:\Ľ1Bh#etNPdž! )~?pp̓2piLuU(B]$0C Ban0ḍ`Ҥ~67ĻS+ !G fXÜwtR kh3CG]dD0phb0B.(.I[ Gh**CJĀ d'BEh~#bP=|3s"5P[3K+|Y܁!X^8f,73`/sQ5z:6ifG5 T7ik-MDIG =sPlZ;0'S3eSˆ!FA{Y4tѼ|=2"` x5f(#D0e D7$XfsZQx5`AfÈ J2BbЊW+\] p'pl6SQP5HNP%j/龉DC@<ހyT^JFPn>B <˽3#ޅwB, I6ۓtN8 0+h"8[ !P4(#J g'9}CP wi6 i :_5 gAas7g :"?ig 1Aa4!C0jȊcuyo-2.1.0/data/pics/i6Hintergrund.xpm.gz0000644000175000017500000000053012411361470015153 00000000000000%Ti6Hintergrund.xpm]K@И]?5"Xۄ) "b 9~l^͋gfDpf53#I 6.{>ӧǯoE=pVONbyKwZSZX]/ \ kׁUF"2wf;Tj/+{ 9XKɘɐ gt# V9(bZ"i )rBX.i'&:2w90t &F>pP1*aJa 7@k + }\FP#m?/Un3 cuyo-2.1.0/data/pics/isBrettrand.xpm.gz0000644000175000017500000000063307550521115014712 00000000000000?}<isBrettrand.xpmJ@)xK xgţ "!*idf0% 3;3Q9d E`Sժ%/)fQ.OtEA&&,< B:)m'?:Ǹ~|l918Cscq!90c6Cp\ R\ѿqUۡʐ$ԑ IRziop(9R)ڿiΠu0Cw(7ry.>!3GEy&яC8f0<8ԭg۳U}w(r¡㻁83*|Db !xObᾂ5yh`q!918l?3 !Nu|D:v(cuyo-2.1.0/data/pics/mdBoden14.xpm.gz0000644000175000017500000001023012412223242014131 00000000000000ZasȲ³dn!!xIbVbֲR`@fvd֫z^/hͨ-ʤ 8;x/w_~>S旊XhG'cE ;CNHo~܋<LY2GÑaqWhVԍ#]߹6ZoLeCp{6֛[c w6K 68A9z*?0 ?0 ?00sV}P3\0gs;fP'`BSmwxU1flVSNPOYai\GG1=A \ݮjuw[Rvp|@}r2dmM+'lvn+ZUT˿a*QRvs%WqKs9߃q~7B\;'o1hlWi-bvy9yeoo6vc&ìwLE랏'7 r{WuGĬE2Γ<_d3?j9ۍ6Su&>|lcpV%o~}Tls;O! @e$y0zj4h V~T^䈒ⰖIi/ɒy}r~~N<)qaR\Az󣲷UTmkZ'=ŇCb+ Mk—|[Ҵ̒t;I(i%e"E\ڙ%<99߀WNJވyT+K`o*>$GHh<˼X J"\'IDÑDd=S<:' t4?:(hJ1<74T?(OA@Y4Ykq>ӅE"w#rGdK@>'1GA=L7i>GU4 W*(Z7=~Y@ } x qׯ_ r#;agYe))"I$QRN +2̏,[{QE b2 xɢQ*"2RIԡzaA>G5䜕 U;U$X$NplvB8E RqI)(-_K `^$W `%1q]P/`l W# )5Hs{#.x.B s,)Hwʝpn5u﷦h1 S\nZvoW4%4 Ɖɦ,(=`M1+JѬI|@;_مmЌ BҪ__Z M.6ez׸f&;%% b T Btj5e bc`;@8gFSeh,Si̲L۴rjTef~۰~;0, 9Enz`uɄp?+Ka9 9tJMɮw15^@hPy rnLy`:5 YX i6U[.Mz۟M.lV}[+4W*bu( i6@Aٹf}l/G޼i7;Dz=m[ձHߤ yt+ƍX7$"ĦvGLPBZJ-:η,Rd}ّ~!3dBKj!ӥE;KhKխMz! C%+ W/sI^IץjX]jJq)Ayl[fP.e_uԩf0Xm ɰiѦ[݁u1~ uMڥE,|%5灆pIQ j2ː\voEݺЃuc]>v|=͇y_qcț~=Se;H)iH04 unFw\5BV\⎣4`Z, aX77@f[<;>Κ͛~o!PCLZc *nЦGq3`^5\s_c&cuyo-2.1.0/data/pics/dnBlack2.xpm.gz0000644000175000017500000000107407550521110014044 00000000000000<dnBlack2.xpm_K0ş4}Z#"BgGADJuAMlm9܅HnIن<0ǒʇt7=}.ʧ W'4NwvJx뼺ɨj+MvlWfo130C/C.i2_Do1R:FUқ yP$d\HwPzk|"`oVSeB F6Aj~-m]f.|dnz[6n! Kmc3̅&raBث!jB&130303l)C aEgߞrqL0*DM= aY( F<^S {^Ν#ҙ!~0^"x{3U; sun؆:6\k!7(f!nB0r vx/i=ȪE~:p7lC`.T5{^ Q~H|_030_7Bcuyo-2.1.0/data/pics/aRepTile.xpm.gz0000644000175000017500000000133612376063767014157 00000000000000tS՗Ao@-B*@Ekn HCU$̛VUyt=Ǿ۸߾y{vGqÏZNݻڹxx8ix>na|؇x2lɭT^l|D]cOO͝a{70nxwn5ya)uFy]wk2V 7u>^0ޣ= shJzE1,(+0 OYގ18!\byU.L&1GBGϲe1 dN1d.DN1xq}^xN`֕Cb5靥|D]cOO͝a{70nxwn5ya)uFy]wk2V 7u>^0= shJzE1,(+0 OYގ18!\{?T.L&1GBGϲe1 dN1d.DN1x]ڽ%kaJ!>1JOV ާf ֧v ΰ7;a{7~r޼0 }Iy:e<Үػ5xߛ: /e ^9 CuzZjz TdhogL.Rm r=*l&#g|2'2"'>~U?}Z5i%cuyo-2.1.0/data/pics/mdEgoL07.xpm.gz0000644000175000017500000000354112412223247013746 00000000000000mSFSI(5d[zJ Mi X $H8ٝ|~Flt>f,IaǬ>?zZv)+36biOi{Bu!74^S_QZ-Y1lfj&]PaܖVK5jB&X YAjMK1a9;KmB_u [ȧ\u6R=fBk $bI Ǒ$S7B>4[b"lUA4,-d eݪJ源VT L@4{&)0UiUQ*Ұ4f9QLjP64P:-M ̲tB6춁m0Ai~ @bhlIJDrfCȽe(G>J $&CnpՅ} V4elJb_,t(q4Y(Ub6aZeu2l;U-Aq=`Rڡ,DF@nٸߑ:5cܾj)#dkquX%CP2 %CP2 %CP2 %AO~ny]9h\D~I\ <43!37\B<8 W !zax *[am"$Na (Vwҭ,S B9c 񆄙P((&Q4%ZYAϓQ0$`]a%.f!L ĔB!eqFbX;BFIpA/OQ@1 ơKAG a!4"&!*A@L&,CjV r"%DH-, rca$ò 4Ϲr(9Ӽ }⬣4I4M)3>ĵ/! ff,yc7i'_Ej^!c֜Dw#wb@%OJ2ϐ2D 5v;.ފ8p918H!*pg4t2$ΚoXv! IXT.(3v"FaDG}%;wu1ȞIF>TTB,sx7C Je=rŵ=(c@3xzO0rB~ aQI\q{5UkwN:l .֮$W ta,01wc"lwww;ʾ~5o>gF(4c ԆvI`ʮrWU(r< ŧ6>as6m[iyfrr9.V+(3(#Pr(WCP (/СLogСPСTPNhJu(R:ee݈(\3D5R!Ast"yK !o (1-f$b5Vc$gLKЉm,'`r0W+DUhF厑X 30TE6#0=npPͽu @ *<(A"!5=.T^Se5![F朦<0ס;ݼ7? ؁ü~8oyzg[{cB?/:C cuyo-2.1.0/data/pics/mmRot.xpm0000644000175000017500000002275711672457347013142 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "64 128 9 1", " c None", "# c #000000", ". c #ff6060", "1 c #ff5080", "2 c #ff9070", "3 c #ff4040", "4 c #f06040", "5 c #ff8080", "6 c #e08070", " ", " ## ## ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #...# #...# ", " #...# #...# ", " #.# #.# ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " ## ## ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #.# ## #.# ", " #.# #33# #..# ", " #.# #333#333# ", " #.# ## #3333333# ", " #.# #11# ## #3333333# ", " #.##1111# #22# #333333333# ", " #111111# #222#2233333333# ", " #111111# ##2222233333333# ", " #111111# #22222233333333## ", " #1111111.## #222222223333333..### ", " #####1111111##..### #..2222222##33333##...#### ", " ####.....111111# ##...### ..##222222# #333# ###.... ", " ....#####11111# ###... .# #22222# #...## #### ", " #### #111# ### # #22222# ##...## ", " #.# #22222# ##...## ", " #.# #2222.# ##...# ", " #.# #..##..# ##.# ", " #.# #.# #..# # ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# ## ", " #.# #.# ", " ", " ", " ", " # ", " #.# ## ", " #..# #44# ", " #..# #44# #.# ## ", " #..#4444#..# #66# ### ", " #.444444.# #66# ##..# ", " #444444# #66#..## ", " #44444# ##666.## ", " #44444# ##..666# ", " #4444# ##..##6666# ", " #44444# #..## #666# ", " #44444# ### #666# ", " #..444# #66666# ", " #..#..# ## #.666.# ", " #.##..# #55# #..##.# ", " #..##..# #55# #.# #..# ", " ..# #######5555# #.## #..# ", " .# #.....55555####..# #.. ", " # ######55555..#.## ## ", " #.# #55555###.# ", " #.# #5555# #.# ", " ## #5555# ## ", " #.555# ", " ##..##.# ", " ##..## #.# ", " #..## #.# ", " ## #.# ", " #.# ", " #.# ", " ", " ", " "}; cuyo-2.1.0/data/pics/iaZeug.xpm.gz0000644000175000017500000000052507550521112013652 00000000000000ycs=iaZeug.xpm]k084w̮:Ƞn8DJ) ݘ n1K =M˓vZ,b94z}9~3XvLDv޲)Scbty5WeFQy%Ūw5JnF]s5]Qt<McP3d )xF֧,qEFZ`=c=L"DY&r"#ӏwi <xs}+ʾCa$'r38'ׂ$AVOAm jC=[m똅ò ,!BwqnM졬Y=`UgYhMusGL8^옘A{;0Wt̨,coi(O6wc6V[  60!:ǴmwsM0P3*PyM]g)K=)5:?BŢs4[:n {g&Ko(mê7&xFSsa}i#g5 \tFGuKg~l@`pnp W5&; _I6;Jncwm%07 ٜ90S Jf}W8s/`+~3*|?Ž#& 9Cΐ3 9Cΐ3 9Cΐ3 1&/n7"kT Jcjb_oqyJ0z(xsS!eT8)"q]{c  _/grX$AEA(+"h?lpAe>,V(H[ BLQ ۞(JJj[F;AP u ?;#^鐶a(bg'7}(H rPf[AT8obH[1/+a ?a˿' U?!>{q<c[/xzfX |p1' >dpd^Dq<'>D^ZLN.,EtSҙm/Gb6-Z%.AKM;Ӕa3h6쏭קexs!,̶KxaE3y7R!Gݫ,Zp2\$Zro^n7Y^~K), d6vtbf v7](Ʉa9'qiQAnd]U0߷6Cu~ein8Ў:nn 8m間Vܼ|d9B~[pQUc ޭcc<Z{?8j?@6hʟ-3 9Cΐ3 9ÆOqm%7cuyo-2.1.0/data/pics/ithGelbR.xpm.gz0000755000175000017500000000106411101102052014111 00000000000000LGMK@W MFF+HoGADz ݝllM(@jr3n [aFzqk?vFۥ=ӨƌΞoe~J Ol\r"é-?,dxlˇt*C#ñ-@~Xّّّ`_`&IUU8G}::$ )nŪgCr8$Y-Xup4l,ic-K[ \†|c8Y˖:`Ǡz1f8"$ZgӈJ9t;lڄKY8Hn%__A*\cnw3^Mp$;ݴp}.da6`e>uw ?Ύ[6\9[j[6԰W&Yuq1(R 0p&4atpMCm"CVmXZm9M/p7|?Gw|>a6cuyo-2.1.0/data/pics/ltParatrooper.xpm0000644000175000017500000002237011034741202014643 00000000000000/* XPM */ static char * ltParatrooper_xpm[] = { "288 32 4 1", " c None", ". c #FC54FC", "+ c #54FCFC", "@ c #FCFCFC", " ++++++++ ", " ++++++++++++ + ", " ++++++++++++++++ @@@@ @@@@ @@@@ @@@@ ", " ++++++++++++++++++++ @@@@ @@@@ @@@@ @@@@ ", " ++++++++++++++++++++ @@@@ @@@@ @@@@ @@@@ + + ", " ++++++++++++++++++++++++ @@@@ @@@@ @@@@ @@@@ ", " ++++++++++++++++++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ", " ++++++++++++++++++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ", " ++++++++++++++++++++++++ ++++ ++++ ++++ ++++ @ ", " .. .. ++++ ++++ ++++ ++++ ", " .. .. ++++ ++++ ++++ ++++ ", " .. .. ++++ ++++ ++++ ++++ + + ", " .. .. ++ ++ ++ ++ ++ ++ ++ ++ ", " .. .. ++ ++ ++ ++ ++ ++ ++ ++ ", " .. .. ++ ++ ++ ++ ++ ++ ++ ++ @ ", " .. .. ++ ++ ++ ++ ++ ++ ++ ++ + ", " .. .. ", " .. .. ", " @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ + ", " @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @ + ", " @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ + ", " @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ ", " ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ + ", " ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ + ", " ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ", " ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ + ", " ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ", " ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ++++ ", " ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ", " ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + ", " ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ", " ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ "}; cuyo-2.1.0/data/pics/mdEgoR09.xpm.gz0000644000175000017500000000241112412223251013744 00000000000000kS8+kiI Mlܜc(PŦ^ޝ3l?O<9Gңsyűۻ!9<ߐyrqyY!cRh(!dX>5VԫȜ8ut&p%n -Ш \6Xh| 4X0.5֒K"?;/ˌe_\Ҁ4KuS4֎Yfi ky HõQW(ciM[;ࠂd Xf%րulց%fM` XbLF@~A-ӁDq 3GXy@Cc{`#J!n&8FE=#Z C75VcdCF Wl1:C5v s$3ɽ\n)p?[aqd -@TvC+f·r68"(8B$ *:[q l2CS΀:_+|ρ&Y$Xl,tD/xŹ6U8r#DnlH(eqE?gx27@  eZ9l()4dcPX&(k\X9U(]2r!wr!wr!wrr 9?k(F'S;nC׶>ضjC^@VKl[ժk lM/T"<6Up B#a"WTb8ZjَlӰD^"ڶGl/v "qUdZ-ꐴ13It6^d1P+@"ycށ6V9(ҍdedwTýwaѤj;u<'Ifp eo[Wp;z*8~0\oo/Npr7:PjuNū2è։wLNq-<ݔH {LK*})U<,~_U.rg}?;S3;cZRN =3v)=O' 9jjQ<|eu >mu857~oY@}uףJ:Ϟ=79|FnɡɛCocl/sARI](s7kcf`FBWr /%v tHH5ںqF֕߭\zLb̾.ƄJWOq_JOI[$CqjM]pBVbBW(sЗbco_Lƅ^.rc;!_p0&cuyo-2.1.0/data/pics/jjWinter1.xpm.gz0000644000175000017500000000647311657577001014326 00000000000000[Mo=G!:leH A`Htg^ի^. |}hݗ>_Ï?}77o_wݾ_|~*m޼{n?O?~~~ݻ7~OwWݼ}׷׷~z޿w~{Dt;Ek'cnuP% 3B2S1HvA!JpJab&>oI^q" v`">зY>)X*Mu5aw$m˳۔q$1H&сAU\Tex*޶}u;&F :@jdɱe}!HB BM$e B#au6Oӂz]>ؔlaVUW!O X`53 RB>aN""a#=1)1D"t^1d`PR`ImuvA{04B: 5ky֟d\J1IFY]ㅊMQ֨P@RN)I5d4UO v4t "! z:%_+ɳp!PMa܇=/HB-rOlǀʕp&)ClISlc$+-Qr:`qUjv]Akd7̍a]_DxK+,"lr] '@+aP,5C  #0\^qyI >q5a HUbm!AA`$첝?,)T/+=0\<9 dG2n<[#*UY> }G=y5'mپ`'`xV0bS.܄̪D-k&ZS>b=l+QKb.%.ՕNCK)@xja$j[ACNH ^4~(P:Љt| Z Qmة(#}4vx:VR~ !ۚ08B8Ur?HcO%;F f>R"zAXeq0HW[cfI{s/2}!P}JWA64>Nrd^Vg&`Š6B !f(~2r`X#jCIijjшؙa>ކaЁ\`I.+ѨLAݹ0S8D=\uonC91^̭qr 3@$ț Ǿm,Rj=`) G+y}Wpۍ ،M7" bM3"]$Z5jhBHʵP00=_g!Y\̈́c8`$ӹR)J6 6x5}˚H@ĠD D6"(R99{]9b Xa< hʹ1}9\\vgl~pFBT51U)Eeh9F͍dX+]r-c8 xiI(Y[u z>31;ʍ =⠱4FZe*Сuzu"yS>q@5_u?, g)<:GN`b2jY0G)_Pup#m^@֘2iz;I7ZC3;HҒx3`KXx[eE+xpY~3#&6a0q\r]֐hgY@ g0W2[@< I zy!ut&ڛPTcoy)*i5_ߥN`S5 Yـ07pVuaCd" ah| :)m&gȄ]E&#n ufmy*hv9 CGΌVr2GSZCK0CILx;^2|=`h#Yחu R KF'ZLD  BFj\ip t}Q MBaDQByBjdb+dʌM0A  ~ +Fgn q#MWe)Z &x7Ve36b|qȭ=?Vt6҃OI?`@;=c/(~+!#YkovŪ1NS%Ҋ1ږob,_ɲlW|e4%G:Vozob,^L + q&k.r3l4$MK 𧻓ob!Nc߮x; ._/eBcuyo-2.1.0/data/pics/mdPlastik05.xpm.gz0000644000175000017500000000554512412223265014533 00000000000000{SFϧpƕlR ֶ%1i$[$Q>{Ϟl h 3yA)"w)m4H`SNxG.J[RzxbG 2B90 q4GyvI#7 UGeoߡpxR)Gdy(xDcx"5(qF7mqT99ŦBJU\%(Fݎ#8rv#/]9Oq_ qu?u(F/(Q=S'Sɿb=w=el206^`S.HNTjD|)UR*T\эL5Eku@R{= O^Q Py׆aoTlPa0M^MEI(Ợ#磻4j/*Qq\(߿n(Xuٲ>?/LF c2Dcb#:Qɹ tBz1B/%E`.ygg_da Vrܞ_!nh``>nˋ. ibe̐+US%p'0JB1֖@DX?VPۇ]Bb֜2lxeh-1ԓ X@$ $¹k#p`l)5}P.C H[H.v|R>C^"t Cv.r fEa2G7Dbh1(|-2IP.!Щ0a Db$g ]03]0so i"%t VK@[ & j -ەیEr#~`h2B4`ntB߇'0 ČW*|܀'m)CNd cp"Զ C! 0CK"X"W\A"׺  "PO  )r5uQy> ϙB <4e>S+=Jp& T2rP<>@hhI>,sg19A"ԄBǐN,@v9djr"@2  L`CŃMP>pD"8z 0!af2 |^x5ʚeDtt&,-G.J|nǤU"PlX>\"9Y)eR͒>$JM$XkA`@;&5K.n%q }8k?_kDP5뾦&pUͲHgX1YUA,`kLC/T͒k$JD,' ÿV1(\J9j;,k!_TA.#U͒Mraj2(TH`~|#% W2_Lͻ1pyw`X~k{+Q#ư [0UYYaՈ;2[%2 pA7}°bDPч`B,\e+2 LX0bs!c C1FX;0gFNZZ0,g\ʊ埿{N![a(LU$ c >C̰h+,ax%200ʌљCĐXEEwϣL`^%vzX{'Zͦsnn p;]~CCߌf{&$̲(?#ɤ ltk{`OwkIcLǓ iEYЬq$ ACEF}}c1mO7Fc2=th㿼,;~59O~=H.~0\l~>i?~uA72$I%87.mLkWex~4ؙl?<|ag1x^6ȐFqp$ӟ*B7=]|Im?z3=td?'{']h6zI`09&y{{{{{|S%7cuyo-2.1.0/data/pics/ibKegelGelb.xpm.gz0000644000175000017500000000076707550521112014572 00000000000000<ibKegelGelb.xpmKK@Kws!bAH}D(H[AM6UfN5i3lM.IGLG/M. 9 IkOz#v"[r >n22=ҬLEJez{te2vL݁NɊXǀ:Le!2P %1a yW1P03(HJ-ҥ)f I0cDZ(UC{0zV` |ex'5rH%Fԙ6i"Yʰ}`SuGc~/:mx S81?Az3,h4iO3?;@֛-1 dAzp ;\o4r %ÿnk˲&kcԻJìlOyYldO훢r G­gPo&įjVy6V?'hbcuyo-2.1.0/data/pics/lpYellow.xpm.gz0000644000175000017500000001653011345776166014262 00000000000000`KKlpYellow.xpm]ݫ+9rBL΃p08;}[GCa,danH JRw_v*m}UOU|o_?O_᧟/_Wܧ~sx39_~9OA~{o~?|s\X!1'5ýLo~^.8?0~Q>=/ocx{Zۏz4޽paH9R([~e]Z[>uKL\L7iSG-NŹ]~7dqd &u]:͍ǒ.c QӜfSuKٚ_{w Ԕv>N}Nv唺O5_ua6.c}R$]ykHV_ JV+tzr K\C{˺pBKz2b:; Ĕ?jkx>v^+TN.Bjׅ\]Һ.38}'jcRջ\񐞁X-~ xITBs".H ֯7}AqoB hx2\u#:TNwcЄ1LA'.Bn> EG`ƽG{%@:ySWH' lSh HyvZ6EӶꢧeSRo'2@W)׊caiu.+D'w>OT` wڷ~(&KmP񊧢wtFōh?G8&z1gy70 }֏6w<}:#:Ï_ϓBzdY[FB(h(%ZLuDq#;R=ܲ~@@Ygݼ4 ~ ?t{Xl_Io3{wR_I<`L8,=/_2tI>(?|݇}; _h_dpC6Fx,,yw+ϣ3USy}E\|m{}Xs#]wP+kQ.u^1v:̳J2D =WOa~/.2TΉ uݘY*t`ϑޘ!@0 \{ ?7P^Y_ hyHoJ7TGM{|Ot~3?=_?/Gz;NoLBH܇X4ˢ_5@L@gIn#i^Iy+zfݡLم=1ϱ#]jBw.#Kt)Ǭ /K٣g?`Cie u^d/KO]-->JfM$A[~fLȮC|Aپ`8LMO1tP~BN,_j0Ŷ~"Ձ  ua,5S%+=W},JO8~~`5GP hs~_?.":B c}A M y=}dnKn$@ ,H},`rպ5VHfTrt۝d!};/P/[AҲ}"Ml vl18l5KlڎTv$`C!H7y;{*+4y$+Qvy U/,td!u;nd W@FW; th%9v`ν̦ %hs)#]v(HxA~Ѿs|,3}@辭A|&_C|mV-,{\?/w<IZ}+WۇfO2AKkNPk:'$ L+ed^ʵ@&A, F ZpVk[auc#$`4YW@1m@Ti>vi$}wEz#?X;`?:X.pkl:aGoO@jqCD3J2> $~ C`ZAh?ޱPb8 `oG̗:?X3@EGܜB4?B8>`cվv}sEH\.%PR\hAS<OP?/yu/dH;p '(ҫMRp|o3#bD: q4cs+HgY΃#L0?LGv$&4+)eޗG9>@.=?fd#=hTޏN 8D$~w>M[Ɏ{ jli 96/{_m/ P/ё@\^ r _ ~vӾ-mf~.Ѭ䅧W>N蒾CYJ~h؟o# p/):Eg@,4~n˿SqL`_/ʡAބ?5F1BzYY|{M_?X0GF#GHdVX z荘ZwqiT'6>9ibȏBmAG`HU:ir ~2)wyAn҉T@':]{~7;Ԕ_#1"K+9i ]OkTJCqV% H)mB^R{DS]@[+<x`! <!֝1UQ:Gz)"`}{G7)ªJPu,-#3Md_X^ ΩX/U"_ HB )5N7]!sD@v"_L ׏Gp hUh_ϐHRo3GBsݫTݟt`<;.lͿ;>g˓Fqo_F Og/HړS@LY]WDv=cG AGD->Bk/L9=@%!NԟĹ+/FnWѺq }ѼzUK01ۛ#<b"o#Ak|3`cUU~6/կ_<6͔_+("^Vrɱł/?C->C~pvP y{O`u0>BXAҒ8mn?m/_P#RɿPfL5oQH3]ȿZz00 -rqd+6vnom^}`)5BQvo;7w;?SGX|!?+/Bmi/W}ӳ*BGiIJ|eH)[ *UJk]tB(b*_P58B~!m8BGx`9BQV~r8_؜_ u+Cz5lȿP}>KS&ΞhͿЈ?g+hes q,ӛ+=}jݚar~]o$/oEx6_X?xO@B>m !XٸO}j7D,S~As9.n 7c*БO;Yopg96! _zTnӛ{$_ߐF0@& ՏT\ނ.ocA aN$cA W/P- żZJAhO.f}a}t9'w hE  *p mbe]Xm _֍5ue?g} .P.CۺyFHYa)[Nu,xy]X@ZҦ}yeN ~m6}a׵/졲YZ-*jm),m8&;8Wّa#!WD"}dmtZ>GG'=>(٢iUx'd^ 2g]GOt`G#ʴiN I!?PZ 7H3F@C#>ohi)! @||(cW'`2\#7XJc|C^~ }p5H@/dy;'E>6Z 7@ϱ0R+z{Oπt(-~3'(y do `)_UU}ʗy6ԳoŝrQ>ƭ@TMK<>4E{H}n?<6>P9[{; u-ϙ<2>}A<ۧ`G{ޏℋHwl-%>gR\@<Vk f]>Y5x`kAx.s&׏>kJOPб`lya,! | <3-}?  t|aU҅?@U~}cA*;nCpOdeGX_(T-al֡-8~A_x;U|`*-MWt$}O: @3~ X|">@">*?(P/]B]u4Uh_b/0uu<S ~Z:S|9շ_̯i,T/yv:HdI%7;Ioô/˳qrcRyE;AozN}fEs}% $0uYfOy#ltO#u7 #̻0 ⨬?*S{X HsYF0O'9]?QbOgW!ăUdyEou ъ3 'g5NfF|wn EB״"oʲ.=)%t>{5A9F436ӑ[_;P_X{ؗ]@O] "^sזb“Eus̼p"}kGzƭ}]ש1GDN l# yS0X\!+ƾ}]Ic_W;h]@6!}!:V-A?-= %fa8琺tS׼"Y3]p٫Fi[;ܵ; Eܫ$0o @#y3d;@ItA/ {>Vv$'J@Ҵd0 ;gpbY~ |}VثŽS"XFfUip";oAd$IHg0E[{󖑤s,0>M0 ~;k/|da~@Yڏ3.HDWCTu uYa?Y2|~)=ϴ~?02'B:=BAu4Y? O:a-h5&RJ_RIz4 zNz'O 84mgEDz#O¹+t|I7Ѝi?ngJOx Vo؆?(9i2^6U>AXօu0/D߻@Z45w`MY ҷM`qik8kP_:N D%TEWzѹGtb]UlU7h|_'l8tK?\hwhGNX'|ٍP2cܺo]$ZOp)R84(Ѓ@Qbow#]- 9Sـa[/?KP:]*/oJ\j{39g&sE1W,? ]]_ވ=׫|)ճ7^Q(ibKl.ڒ I.B]dkrME >@Uڢ "KVUYco*R geB `JTUQA3"*")-U#TШڕU RE{m*(VZRiH1Uqj@[mk"٩ZUQbkb jQaZu,*֪VQ-V6ζ*UV gRzŮ2$KE.+{f)t:5MCr5I-;d˨:5]*MґCh-kr~֬9Hu[vʤ-$\_)T%,OkK#3BV`KԴV-\#l!|dI5T0e]ia͇uU[ am1VG#*۴l9@KmyV[ΤlI}b:- AepP 6E_Uwmd:\ugYFm@Hsj+`-Kw*!κVZ}AY6v0ֵel/,_QJu-JtV:m]a{R VZ'-mb#=|Gw*}h>1H0F+Fm gɑIo_z7ĬoQ6FO g= Cِ%ƣ!-cQLHf~K>?GCf߿ށC`cҗx "s>[< <7=zc~y8~;zÅz`?w0_=ǿzxpO7g 9 &11zy UB1)ǭI 892s`/%^q5\&z\5aaqBH\&&9#A8"#F&WW=/uxArڄ|=VK,Cх^Oxj&5aNxM`azEyR 78=Zz0 ;IP}R_IXR|ȺWPp4dRNxpˑǭ;4wmP`6Rd%}[8T`Er!Pq'U:Wl.UyyF^\yɨϗ#o󒄥2d?![ӣis~ד=0j=U<gGiqirzo9D^$/΅DB8(7R}Gn8/·ǜ4A˽tЈ^zL@pO n@<(ːuu/C9Ch]Qlh`NX{|B@1_::h1$Bb'h+ aˣl"0a FECS3o=$4E#?A3$}Z).7hU(+@ )nT @?AFkpH3np%uP VqvKW3!3p9[iGt7Mbc6^*)so/;2hiG[.ZezWr >=l>v>_\^_rdziZTXuBm./JZıɾoL~9N~cy4*J.4u#HQG*QO#<"G"s>ʃ+W :̯H9͇mz;<8B(r jefF3:+B~N3s 8Hԍg='Z!s$ SiL i2 ԳL]|Ei1`#2AvRJaCÆFLCLM``g%Y!q0U4FiS8eq&#cy!į*ҩr0d؄b.C^ &Po)6>ZG溮Js085n;|6@7ޣ)}@|kՏU[΢ui:tc82ŷL+tK"/hy:5w3 1^O]\2Hf2_jFG[hVZg>FĹC(kpN\"U Wk̚!fNwGZiU/qy.?5}B'GJ#~FUd$ʲGla }z=Nl.Y,͕bn֟.ƺ~'cuyo-2.1.0/data/pics/bxKlotz120.xpm.gz0000644000175000017500000000602210361553650014312 00000000000000b=bxKlotz120.xpms_A*hLP^4BHBLLwnƘVܹ/{T A֌w'p,gAvu=n=z<~D_f>2ya?~8~@~ػר3hReFx=ôB!B!76 k**dP8#",=m·PD{|[n1XڶCS,,MpZx9-p, wP?*2 eY('oNI9EM_C$cK(*xeQ ۯ@K RUl=Ba': VQaDC'vd+5x2r -[3/v vV;i^av)v+^ujw;<ޠ( 0F~_skHGF:0ц6ta #mhHGcdVX+hfNSbfj"FNѫUZadT@VB-zk`آXZ0rV>#4FM7uFf߬zeJ!)32We}Ic՗pQZ8SsQ &#'? !9 U=TF"8,$5FNp R_z0"!RYi1*S08?O s#ɐ THTG'A.UsJ|ۺF< pdѵ-ȈpC䗐Q$gk8jCn1ANէ-5 #DXEE_H7\mݏi2l/BD>]q}ȵ;fgp[i#~xWX֌]DsJ(H`]%HbΣp{!y3r2bDZ>;X9zʾ&d4Xrwg6!-Ff 9ӯ,<_CNc~@6adGP^ST9GF!Rad}_'z^+ƭ1F0>8253!;c^4ՕzQd(0rrn!ٯ%ͫҼ΋RdQpMlTƕxñR'>¨s7>~? wcp?=[vu tsGL:=>^c맭އϝS.ʮPAcFDX6hA^c 5vBL8.>ד*P 0rJs|3'zd%eN"gt I>~Mof ]n0 rqJO%]ߜ |̸X޽9qnsV^"1|θXq.w|r?.m%:RG8\ >63DFB㨠]ky%",bddjkRq3r5t+3s6"//`.`؟j>=&3ڈw+/%3# Co[2ャ+ުz~/4ͪcO~_.FA~|V.x_[h?3/q+:c}ș-?Ds|vbdXu}fug&xNs=gi1)Q%ʼnH&]\])|4# Fle0RW3 Z2zml߱돺>sOXƫ0UKSsU/|~ԵbIAZR}MY6,ýҤȌ5Cǒ.lŠ |c# czI6lDsK/|WX%] Elf$\2juun+N y9P{,f5%ЌA5#0oƱ;S> `d lS> ZI$h&3ea5*8)`(\E͵)ɀf=2 (mc8IzяK#m?ȒrmD$K3fe]:73T[orhVٵTV !~ø˨k\qwIGQ/٧˺kBU`,=޿QOsIأ&ꊁ0F?^+uM 1j}|b\>؅;R-s9i7EHL-vThZ 7ۇ͵jE&}2ĢŐIj};BLr߱ }r~pTK_qu҆6ta #mhHGF:0ц/7,bFkcuyo-2.1.0/data/pics/msc4Info.xpm0000644000175000017500000005541312402435276013506 00000000000000/* XPM */ /* Copyright 2010,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 224 7 1", " c None", ". c None", ", c None", "% c None", "+ c #808082", "* c #808082", "# c #808082", " ", " ", " .... .... .... ", " ..+++ .. .+++++.. .. .. ", " +++...++ . ++ ... ++. . ... . ", " ++++ ++ .. ..+ . ++++ + .. .. +. ++++ +. %. .. . ", " ++... ++ ++ .. ++++ .+. + ...++ +++.. ++++ . + ++ ...+++ + .. ++ . . ", " +.. .. ++ ...++ + .+. +.. ..+++ ... + ++ .+. + .. .. +++... + . . ", " +. ++++ .... +. + . + +. ++++ .... +++ +. + + . +++ .... +++ . . ", " +. + +++ ++ . + .+ +. + ++++++ . + %. +. + ++ ++ . .. ", " +.*** +++ . + .+ +. + . + .. +. + +++ . .. ", " **#** . +. + + . ++ . . + . ++++ . . ", " ***** . .+.+ + .. +++ . . . + .. ++ . . . ", " *** .... . .. +. + ++ .... ++** . .. . ++ .... +++ . .. . ", " ... . ... + . + ++ ...***. ... . +++ ... ++ ... . ", " ... .. + . + +++ *#** .. . ++++ ... ++ .. . ", " ..... .... + . + .++****.... . ...+++ ...+++ . ", " .. ... + . + .. *** ... . .. +++.. ++ . ", " . . .. + . + . . .. . . . ++.. + . ", " . . . + % . . . . . . + .***. ", " . . . . . . . . . . **#** ", " . . .. . . .. . . ***** ", " . . .. . . . .. . . . .*** ", " . . .. . . . .. . . . .. . ", " . . .... . . . .... . . . .... . ", " .. ... . .. ... . .. ... . ", " .... . . .... . . .... . . ", " .. .. .. .. .. .. ", " ..... ..... ..... ", " ", " ", " ", " ", " ", " .... .... .... ", " .. .. .. .. .. .. ", " ++ . ... . . ... . . ... . ", " +++ . .. .. . . .. .. . . .. .. . ", " + ... .. . . ... .. . . ... .. . . ", " + .. %. ... . . .. .. ... . . .. .. ... . . ", " + . ++ .... . . . . .... . . . . .... . . . ", " +. + + . .. . . .. . . .. ", " +. + . .. . + . .. . . .. ", " + . +++ . . % +++ . . . . . ", " + .. +++ . . . .. ++++ . . . .. ++ . *** . . ", " ++ .... ++ . .. . ++ .... +++ . .. . .... ++ . *****.. . ", " ++++ ... +++ ... . ++ ... +++ ... . %.. +++ ++*#** . ", " ++ ... ++ .. . +++++ ... ++. . ... ++ ..*** . ", " ..+++ ...++ . ..+++ .... + . ..+++ ++.++ +* . ", " .. ++ ... + . .. +++... + . .. ++++..+++ . ", " . + ..++ . . .++ .. + . . + . ++.. + . ", " . . ++ . + . . . ++ . + . . + . + ++ . + . ", " . . +++ . + . *** + . + . +. + + . + ", " . . +.. + . ***** +.. + . + . + + .. + ", " . . .+ . + . **#** .+ . + . +. + .+ . + ", " . . .. + . + . + *** .. + . + . +. + .. + . + ", " . . .... + . + . + .+.... + . + . +. +... + . + ", " .. ... + .+ .. +..++ + . + .. .+.+ + .+ ", " .... . **++ . + ....+ . +++++ . + .... +. + ++ . + ", " .. *** .. + + .. .. + + ..+++ .. + ", " .**#* + + ..... ++ ++ ..... + ", " ****++ +++ ++ ++ ++ ", " *** ++++ ++++ ", " ", " *** ", " ****+++ +++++ ", " .... **#*.. ++ ++ ....++ ", " .. .. **** .. + + .. +++..+ ", " . ... . . ***++ . + + . ++.. + .+ ", " . .. .. . . .. .+ . + + . +. ..+ .+ ", " ... .. . *** ... .. + . + ... + ..+ + . + ", " .. .. ... ***** .. .. ... + . + .. .. +.. + + .+ ", " . .... . **#** . .... . + . + . .... + .+ + . +", " . . ***** . . +.. + . + .+ +.. +", " . . +..+ . . +..+ . **** + .. +", " . . + . + . . + . + . **#** + . + ", " .. . ++ . + .. . ++ . .+ .. ***** ++ . + ", " .... . +++ .. +. .... . +++ .. + .... .***+++ .. +. ", " ... . ++ ... ++ . ... . ++ ... ++. ... . ++ ... + . ", " ... ++ .. ++ . ... + .. ++ . ... + .. ++ . ", " ..... +... ++ . ..... ++.. ++ . ..... .+.. +++ . ", " .. + ...++ . .. + ... ++ . .. ++... + . ", " . ++ . ++.. . . + . +++. . . + . ++. . ", " . + . + . . . + . + . . . + . ++ . . ", " . + . + + % + . +. + . . . + . + . . ", " . + . + + .. + . + . + .. . + . + .. ", " . + . + .+ . + . +. + .. . . + % .. . ", " . + . + .. + . + . +. + .. . . + . .. . ", " . + . +... + . + . +. +... . . . .... . ", " .. +..+ + . + .. +..+ . .. ... . ", " ....+ . ++ ++ . + ....+ . ++ . .... . . ", " + .. +++ .. + + .. +++ .. .. .. ", " ++ ..... ++ + ...%. ..... ", " ++ +++ +++ ", " ++++ +++ ", " ", " ", " +++++ +++++ ", " ++ ....++ ++ ....++ + %... ", " + .. ++ ..++ + .. ++ ..++ + .. ++ .. ", " + . ++..++ . + + . ++..++ . + + . ++.. . ", " + . +. ..+ .+ +. +. ..+ .+ +. +. .. . ", " ... + ..+ .+. + ... + ..+ .+. + ... + ..+ . . ", " .. .. .+. + + .+ .. .. +.. + + . .. .. +.. + . . ", " . .... + . + + .+ . .... + . + .+% . .... + . + . . ", " . + .+ +.. + . + . + +. . + . + .. ", " . + . + + .. + . + . + .. . + . + .. ", " . + . + + . + . + .+ . . + .+ . ", " .. + . + ++ . + .. + . + . . .. + . + . . ", " .... ++ . + +++ .. +. .... ++ . + .. . .... ++ . + .. . ", " **..++ . + %.. + . .+++ . + ... . .+++ . + ... . ", " ***++ ... + .. ++ . +++ ...++ .. . +++ ...++ .. . ", " **#*... ++... . + .....++.... . ++ .....++.... . ", " **** ++ ... . ++.. +++ ... . + .. ++++ ... . ", " . ***++ . .. . + . ++ . .. . + . ++ . .. . ", " . . . . + . + . . . +. + . . . ", " . . . . + . + . . . + . + . . . ", " . . .. + . + . .. +. + . .. ", " . . .. . + . + . .. . + . + . *** .. . ", " . . .. . + . +* . .. . + . ++ ++****.. . ", " . . .... . + .*** . .... . + . ++++. *#** . ", " .. ... . + *#** ... . + .. ... *** . ", " .... . . *****... . . ++ .... ++** . ", " .. .. *** .. .. ++ +++ .. .. ", " ..... ..... +++ ..... ", " ", " ", " ", " ", " ", " .... .... .+++ ", " .. .. .. .. **++ ++ ", " . ... . . ... . *** ... + ", " . .. .. . . .. .. . **#* .. + ", " ... .. . . ... .. . . ... ****++ . .+ ", " .. .. ... . . .. .. ... *** .. .. ...*** ++ . + ", " . .... . . . . .... . ***** . .... . + . + ", " . . .. . . **#** . . + ..+ ", " . .+ .. . . ***.+ . . + ..+ ", " . %+ . . . +. + . . + . +", " .. + . + . . .. . + . + .. . +. . +", " .... + . + .. . .... . ..+ . + .... . ..+ . +", " ..+++ . + ... . ... . ... +. + ... . ... + . +", " +++ ... ++ .. . ... .. +.+ ... .. + .+ ", " +++..... ++... . + %.... .... +. + ..... .... + . + ", " + .. +++ ... ** . ++.. ++ ... + .+ .. ... + .+ ", " + . ++ . .. **** + . ++ . .. + . + . . .. + . + ", " + . ++ . . +*#** +. ++ . . + . + . . . + . + ", " + . + . ++ .*** + .+ . +++ . + . . ++ . + ", " + . + . ++ .. +* +. + . ++ .. + . . ++ .. + ", " + . + . +++ .. .+ + . + . +++ .. ++ . . +++ .. .++ ", " +. + .+++ .. ++. + . + +++ .. ++ . . + .+++ .. ++. ", " + . ++ +++ .... +++ . + . + ++. .... ++ . . ++ ++ .... +++ . ", " + .. ++ ... ++ . + ..+++ ... +++ . %. +++... ++ . ", " ++ .... .+++ . ++ .... .++ . .... . ++ . ", " +++ ++.. .. ++ ++.. .. ++ +++. .. ", " +++ ..... ++++ ..... ++++ ..... ", " ", " ", " ", " ++++++ ++++++ ", " ++ ,,,, ++++ ++ ,,,, ++++ ", " .... + ,, .... ++ ++ ,, +++.... ++ ", " .++++ .. **+ , +++++ .. + ++ , ++ ..+++ .. + ", " +++ ...++ . ***,, ++. ..++ . + ++ ,, + . ...++ . + ", " *** ++. .. ..++. **#* ++ . .. .+ .+ ++ ,, + . .. ..+ . + ", " .****++++ .. +++ . + ...****+ .. + . + +..., ++ .. + . + ", " .. **#* ... ++ ++ . + .., .*** ... + .+ ++., ++++ ... + . +", " . *** .... + +. + ., .... . + .+ +., ++ .... . + . +", " . **++ ++ . + .+ ., . + .. + +., + . +.. +", " . ++++ . +..+ ., . + .. + +.*** . +..+ ", " . . +. + . . + . + **#** . ++ . + ", " .. . + .+ .. . + . .+ ***** . +++ . + ", " .... . .. +. + .... . +++ .. + *** .... . ++ .. +. ", " ... . ... +. + ... . ++ ... ++. ... . %.. ++ . ", " ... .. +.+ ... + .. +++ . ... .. + . ", " ..... .... +. + ..... ++.. ++ . ..... .... . ", " .. ... + . + .. + ...++ . .. ... . ", " . . .. +. + . + . ++.. . . . .. . ", " . . . +. + . + . + . . . . . . ", " . . ++. + . + . + . . . . . . ", " . . +++.. ++ . + . + .. . . .. ", " . . ++++ .. ++ . + % .. . . . .. . ", " . .++ .. ++ . . + . .. . . . .. . ", " . . .%.. ++ . . . .... . . . .... . ", " .. ... ++ . .. ... . .. ... . ", " .... . . .... . . .... . . ", " .. .. .. .. .. .. ", " ..... ..... ..... ", " ", " ", " ", " ++++++ ++++ ", " ++ ,,,, ++++ + ,,,, ,,,, ", " + ,, ++ .... ++ + ,, %... ,, .... ", " ++ , + .+++ .. + ++ , ++++. .. + , .. .. ", " ++ ,, ++ . ..++ . + ++ ,, + . +++. . ++ ,, . ... . ", " ++ ,, ++ . .. .+ .+ ++ ,, ++ . .. .. . +++ ,% . .. .. . ", " ++.., ++ .. + . + ++.., ++ .. . . ++ ..., .. . . ", " ++., +++ ... + . +., +++ ... . . + .., ++++ ... . . ", " +., ++ .... . + % +, ++ .... . . . + ., ++ .... . . . ", " +, + . +.. +, + . .. +., + . .. ", " +., + . +. +, + . .. +, + . .. ", " + . ++ . . +. + . . +. ++ . . ", " + .. +++ . . . + .. +++ . . . +.. +++ . . . ", " ++ .... ++** . .. . + ....+++ . .. . ++.... ++ . .. . ", " ++ ...***. ... . +++ ...++++ ... . ++ ...++++ ... . ", " ++ *#** .. . +++ ... ++ .. . ++++ ... ++ .. . ", " +++****.... . .++++ ...+ . ...+++ ...+ . ", " .. *** ... . .. ++ ...++ . .. ++...+++ . ", " . . .. . . +++ ..+ . . .++ .. + . ", " . . . . . . ++ .***. . . ++ . + . ", " . . . . . . **#** . . + . + ", " . . .. . . ***** . . +.. + ", " . . .. . . . .*** . . .+ . + ", " . . .. . . . .. . . . .. + . + ", " . . .... . . . .... . . . .... + . + ", " .. ... . .. ... . .. ... + .+ ", " .... . . .... . . .... . **++ . + ", " .. .. .. .. .. *** .. + ", " ..... ..... .**#* + ", " ****++ ", " *** ", " "}; cuyo-2.1.0/data/pics/msc1AInfo.xpm0000644000175000017500000002431012402435275013573 00000000000000/* XPM */ /* Copyright 2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 2 1", " c None", "# c #808082", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### ### #### ", " ### #### #### ", " #### ### ### ", " ### ### ### ", " ### ### ### ", " ### ### ### ", " ### ### ### ", " # ### ## ", " ### ### ", " ### ## ", " ## ## ", " # ## ", " ## ", " # ", " # ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### #### #### ", " #### #### #### ", " #### #### ## ", " #### ### ## ", " ### ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ", " ## ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### #### ### ", " ### #### ### ", " ### #### ### ", " ### ### ## ", " ### ### ## ", " ### ### ## ", " ## ### ## ", " # ### ## ", " ### ## ", " ## ## ", " ## ## ", " # ## ", " ## ", " ## ", " # "}; cuyo-2.1.0/data/pics/mtGreenBounce.xpm.gz0000644000175000017500000000345512401656725015202 00000000000000YmwHVt} 0c4$AmV9 }4*0 myhnu{;y;/ꋧۗ>}^|1:z0CT >^ob^{Y]^;4LT6AY[йgM7`nQ;!. ءՓ2׃d\՗2Ζ'z^[VjF@3m9oGZA+kYLO$0x`HXr H҄ ! Z2g539 l`_Y=>۫[&$J%abfxrMӑ8g7޵Qy?#3p,jDU9cjb5i4PyFO<{Y%S3ii  JŮY߃V[FU$:H)4% غ Re]A~fβ"+ P`hlU%OC&YWUQRԲLY%~žojk4H!J" YQ%RuQ\ILِAj:+*,evGVHqjt쫨Y2P64[<*7%*bQ00^P#ǶAv$c6dYu\aeS\%JI=Mľ6,Ft$EF &.fuQ6{S4+ 9_aDll4.,h>X*U-lUn @ڴجyN6%%pơMcCAFll衴@zz ^(+8yGV Jp'N3lmځ1@k-vG_ަ_a<xLf7šw{ۻ~ڗ7xƃstT'1Hhհki hKwݯ%d<^«VbY4s^Q8n2c[HYlY?Oq0(sgpsg@9+ P'՜sUgq́Q0T3W1=q0`- 1i,4_jn8'G_c&0a./m*cuyo-2.1.0/data/pics/mbmGrau.xpm.gz0000644000175000017500000000121311646353246014027 00000000000000[o@GZ[/P($H 0JQՇU"wv !\7gve?mB/BMZ'Jm cսryX"AS,shf@dqYiLT, 'ě,&  I5vUg+H(ndDYNn';'dKE*k$?ט9Gm'v*5~d ¬kO2sډrK +r2M1"rҒ`wv" qzA'664LSܘY'Ѿ]\sMp޺iCnVعѼ!@7腭MCw/O>Yc؍O2&#d?>l/9#s6'y}~NE*w2>2%! 4~񷤤Y+`.u)(\LxP@K ύsv)Fߑk $lwCCP?r}?'G%tztHp~皡fQ{e? EA;# >HG-JgJd;ŻU>VMq7]Oe@ Ϊ݄<ۣ;-tx%kz>UٜcO-j0#GUBh_ >h &}ab˺a:MAܘ` 9C!IR.UV~[ԂU d.7DzK!A)uUl#C C+ $ ]Cqa(̐0l%ɦ"moDLa C fJ(!6My:=dM+*jڝNۅ?W3RR%'&cGp=4!![srKBR0]bi&AVWuX0=_T :0 Df2 :AWɜUNMC>Ns/p;8x,Ap|X25IC =cP Ra*JR^CXCA7QXYz÷e}zk^,;d0w:eRM-Rs7g/G?:12d[?w[0\pj馩< 0TiMXȮ0CyC /R620][2n깈 j gJ`o~d0Vxm%XWc0\1O]% ~Nc֒g1 P\0SѺbC:p)Te-B9>@Ee)STDdaM~z&̀j)wxbCL[Q&Ȑ9'bm:Xo@T G+ *C~>.)1ؗ V|1g'(Da 0Ήa &ѳd&n?<,"=,_"Đ$"I1Z& }RHEKᯍZO.ΧY4(itu(4z^`D~eR8A93_D~R~~w\^N;#㩇lyM[ܹCXK;s?WH 57ÇiĚN&ޱ`|xЈ-Ir>V'JnNwƸ.ggϦϢP σFڶdJʆG"dcXevx_9í+5 `FqpE~:^5gظj=ool7^һي~a.Y~|w΢ӛÉ88yk~xqn״?Zw w w w w w  G%7cuyo-2.1.0/data/pics/bxLok152.xpm.gz0000644000175000017500000001033510361553650013743 00000000000000b=bxLok152.xpm{S۸PCq ; -@BKasf& -p_#ɖGcYO!ˎ]#'M \lU\׿I獮u}s7P,nW~ˣy J$ \-G効"\9_`N PL%P@-r]X˕rePߢ˗YS+E]Յ DJUPPLDwd.Ke:b9sͣjr3P B- *\–G2k̘ :/\E̗uPk' uT󹳂 jQX@܁Z1sUPuaX[ 6֭w;)ʈ1Eu TP`Aʍ3a鈫:Z㛰7>jm=YPǸ nI .Z㎮Z,qk^z:F>k:pu|?7sJo##F p7.qO4Jw8Ueu?b f@D]`'rc\-ONA5um*kj2S; T j ]OT,J@2T@ 7UOuRzZ1fM9-gePgHVPuPwj} PWڳntA\? 2b !] a٬mn>e(t 0SH Mg4J6eN?nTT9Tv+-MQ! *Sd$ w B#PZɰ!n"L!LQ2 1$RD~o13:ܛm^y\Mw Sc]ËlAhڳ̨U =ȅS%ΜXtKIDϲ|Xaftu4m(hI X$4V Ʃ慔.s! 39TEڧ~EIdREmX1Zc,hgDgmb-HL]F}2M|a'9#|) taiVXV3RU\"â$fdftuP䏴'}c8"f)0HzqНHJŚ 23 DקXb%{J4K gCB"ۉ,QH*kzeGEi%zSF@Db%k1d܁LѹDQWCPF]Oq#EF6hJ#~m&g +f|6"ٞKʈ{>b**7$e#%fP7{)\I19߼,\ >? |_\) =!>jfFnjF8t b9f{x_3^532F6$0Hc.%gW)194m43.k.hdGvt70u4aJv-Zt|ofUjՊ^<ۇ݋10CH=zMݚec@ 8*hmأLHןˉxeN*; sK 1, Tu;T:Qe1FO6+L%nw&1KL,/xc"MH;].(U(ß9C:> f xfϷI n͛I1q,-U(_FTSkL#t,g u]nB#܄LM'g2c@@l_ǰ#:hJa8ߎ'qhtƎ`0Ƨ_RVkߡeƞxT:2И/4>z9y="3~빀5)l.%9rXoGt}]4]hD_Kڔk Ku7ǒmfIn'g8gnF3}3@iS_@bPz<ͱx擷2Gbғ8V*<_%MȆ P#,?8sґ&ǝ 6sj GX6#%+Rvx(SF=0}{b &h<{?-cvJƋH=ƀd:aFs0lw/C_Ɠc3F 2>43UevٿΎQt* ^˘xBOAUJPK]WH}/: _1K2F^Mc\kc\=7%-RF |uv$ov]W쳐䖜sy F:ɥ}$.G(Ϳ"T}Uc!Ɇc:pդ鏘ɛ1u|I5*>0PC]Ib=AkR\F_> 5L8k96ƫ&@n vDZx-OwVG}5 J #5KQV\ཇWz\y ta;#^Km)@Fgk%O\G*7q뎈)#C t**qvd+%`>޸MOfz_Qfn}4ce|k`F-7W⇲ך-jH0%8o"ko܎Gw yS?:#6y`A@7Gx>VŴ/7k(mB*|TA#V\Cw~Vܐ;:NB8ɵ׊?(y*p{k̎vi͝0.%Sowl snjjxMډyWyn:oJIc<6e콕Ϸ_Y}!|H ˦67ؘ!;2V"RS=!2{<4v\5QIĢ jx|kȢj &ݠi-XڠSNγ% 7#$wKth^JmFa?hv>ɈnsaHotca[4^~:sryrB66+n8}?|7)VdDMJ2[ibYmk7-of[z5]_mmt93ll;7ۉη[RKUU+LYң JJWe- )=Ơ U# `Ҵ\&eA++UCԗz]LG .< }RK@Pkoǁ<'z84%"p\>Gugh&ILйkO*`g |}X"B[0 B=0 K>j% g̓]1(œI~ãC8UŸ|p)zqf0߭ep%/P}GEtE{.p@1C7Y{a ]|IKyt;".@)P㸨rX<U>z* \C R䢀|,C4m:`:? sGe0sH ~k9HShh@yp4?!PC2 p{`ƫy <'0olJ8O0znrס-? `(?E(?P 'J2PO? g"G? TsF?>f@|I"O1>?\ ק ?0! }ȸ@Ge@<.!cuyo-2.1.0/data/pics/mdEgoR01.xpm.gz0000644000175000017500000000521612412223250013741 00000000000000iS@0AhLqHEQpYZiYi3I}%9ɓ4=sf4!\*Rғ't5yʥ޾{;y39UK}~\1R+4uՊ<"jTU6P樔iBSQ4uQidCoTZsL($ Щޒ,eeJ\eJ+Fѥ."VI 91I˨0T^W  IMf궬7MR0M^GH9JfF^T e.u5.Ԙ%KUhѹ2Qtat.Rk,:KqҤsywd2NZp0Ud#/ՠuj:J mplR!4lE1ɍ6I퐴,[Х\Ie68sN1VV"eJLbҲI0LJlK}*=H'mC(`"OR-l$k *NŦz)oaRM8 46-267ty)QjQHAI fӥ$snS.pJMYZwo_:7fi2{ߐtXC'ߢ9z;ֹd%7* C%ߣt"* ctG6$ 'ODUjkҷ)ME*s)&YnX6e-;e=C3foЕw-`ҹqr$ɿ$ ɫkNIN@np|80 Áp`80 Áp`80 Á2zwdx% Fc2|r4 F/1#F?egtJ{u/p2t:á?1]bX_l2}U q>_s/a'V X,aTץ @A…Pw\iqq{da"-8P)c_ZP9+vJuAMpV(< UKUz(' *B-u=;}>̛ XAZjxTqJFQ3Ix{{w,vzC8:#1U-n UxtaACRt1aM%l 0ԩڢT<{a$.1JI0RȾ) )C4WKDZ5$D :6! jWQC#LJakuNC# RwD1l5I `Iͤ6{#1zӇمd菒~=:B4PUU&l^$Q04FR O'b$KMm2֓_"D bBTKMmCFs/ ½| U}P҇3X|< #|ˈ #AB"@ã 써1$;GB`Nr G\v$91| !i Q`y7]} pZIM۝p^:MqKbWHγhv ;j0jLy$]VvcX`"b:( {1ƪzz1,5Y,13Á :LS!fao8^/ ͎%$^&w٘I X7n/AGA跡}$CD;F8LVYhvՌ!3BJv|!!Z(Ϯ`0h`JM(PVb8rϝ1#x.*Dlϝ:XV!!` GҐ?z9<lH1)VB\R^0,dP秛^_?o-;t|n@`@nymHA6KN$!{>hO۲l:b Pd_غ^. ,u_ANĀCut.cj=xM-4!tLm{F&&2܃0ƞA9ޏt.H/JM ΩaBєמc[=EDq7dbc?'Pc 9N9WwoLĉ7Қ }{ Ʈ?&vV?no-.#SɴfrX&~#` _.b`OrCGcuyo-2.1.0/data/pics/dbgZiffern.xpm.gz0000644000175000017500000000061207550521110014501 00000000000000<dbgZiffern.xpmMK1xYoAī7ţ "eiDIf&_KCr|dddݬ-vb_j<>>M{y98kOG=6KO4hV2'7Zֲzoՠ(;q C9V,ꍛk-:M;o65\95t}dz# 5\ǶhBy am95 v| :^ϮDm/183U x83 (p d: @OpSpj|lϵݎ2<0 Az̵s H!snӅ|]pfnz窇5 `#aF1 fnvc y.dAat!_1=.c )`*'xs:8=pv3Dugs|7by.+%!_9Tu=ỹ؆g Ads8Y0 Xߍ0@Q_+bhc#Md4Fw<%<A|cV+ً|y30Z2  RtVa=)3~'w0>|+ sPJ!4e0byú踮aƦ50CH4lѴP ;^{ʤ"aa\]?!L4|:o םvɵioWPbߎq=/E˲g>j!~DJ"uxH(m.]G֗BiZJe_iEXJFRpnD0-he֛O^F6*7,(" HEQ?)xԈįJfoIҢ;kz.2^e%$QK^WOk:^Pqc%jROlz)f1d4Jc/:U:5RU'F\0ֈ㕻= hi~Ȧ ӯ(b*iayQE0 % " N&w@HuSR.M" ߆&@ VrQiᱮ㘓ƟܽÏe`/ަ`Y<V%,)V(RS )5( DPgw1%zg/hK@Kq/e1ME) /&UjZ:NEаRya2jQ޸@PCT\^%bTjZHE H* OyWrO&:U6W=͠Ǐu{":ǂD󭄟SlSݍۆ cTE|#Sb>dW[-!Zʶe!m&u^n,žaVVTyU-s%l%JH]}сP$R<59K:ՠὴ#i?*c@U(ps$͋4<9;<8;YvyR9[Dg{Nki;fh|oF `3yB&^p3d|r>d|[%ٌF#uH~ ERKR#/f4N.0ǧrY2j}h:.0ɥ~ySNixm[?f4t(H#ZmV42OmF~u|oꐭN0K6H>S22?7հQR^Vg5[2-(-R}1]5.@!yt-'ñ]vvvvjyB%*cuyo-2.1.0/data/pics/bxBuch96.xpm.gz0000644000175000017500000000706710361553650014036 00000000000000b=bxBuch96.xpmkSZϧB.TT+S*r4(A:|k%\=ϳt"CWpO {Te7NƯ<\SN5RRʧpxz^sL9];/aOoZN)_~Kܔ S`*a(JE1ҳULCLձ+:]J=5P=L ,̲Mu+lb*Pj`_ 0ͰYUe) tGgjj"VUĴRQˬ>(rԢϖ!RBrٕULzVҫҳaQAk.ŊeL+WVdJuJuSUǘGS* ,W}U$UQi255 |Tu2)UZQ J_rUXuVμ-YuZUl8KTy *|S)BN ԃ;T/e][|ȃ5#AO}ځ2v)0HX&A$upeGu%!26 }o: >~zj{zore}sss)?~HUވ%%jrHk;qo0\#|kx bd+Aú[~"N f aGLHG%eZ9 0Z\pn`O$W*b@:s3b[+طm@Nwr9M!}qЋ-璏)X (:뢎>]o!rf @1''s,j%+eP$bHm۹َB aL֌T̀>TR\WQRF'ݛp >#3RnZz[hcx?`+g1CJ4U QGHɟL N1x1}-n34cIN~XK 6'NQ8ގθ'Qn4X9&¼, xU0F>-xEBg~rcyA}'N1焠^QmX㻂YEyOds8pJ͎ǀHΩn؂˵5'('ÛÎy/1>FལK{p;f$7w߭͋fcN:(6m #iƦK-4"T@1G`5(?.Ȝ빚gѰD;+xvb9ڻA̕լa/MC3r+6{b\xѡkf"=B+^9ZՍaQH*źQMQ'L1^G*(D2LK{Hcm p½d[NPbGaqbOu@ϙWxx:,c-@!A;]:a?Hmj:_e [07"nj?a]]d%alwiNj{-4Ӗzw3c00000000000000< o. npyɮ#cBcuyo-2.1.0/data/pics/jjHerbst1.xpm.gz0000644000175000017500000003101011657577001014266 00000000000000͝{WMͫhF v,4sIfΜ9BOH0y$yg4cfC{߁]wo^6i/Zq~yvj(ޱ/ünҾYW=& M8%B6=l;rD8Qi}٠ܕAf}ߓǥ+o\1 irOB;8`&K^&ޑ8y"ȿߚ@KR$C9vWZʂPƺFPK \|ڮd(uhσ+q-I˯o're\Km_|;1R+2J+fL+yÕ`OOEYPyG( }F,}74n >˿aS#JK 乶?kvߢJQ%Øowǿ.v)#.ϱܕ>r|ܥ y2'- .A'JҎZ=Vv}:JW_+"'-iC%iR@ ]yP]XZ5J0ȬhK[fп9TvϨפ ^Iү!=6`J vIUlʱfSɂPS:߫Xo9溕=i[q/BM#TL=i]hW;ZRPՙL>Eh#̛nGӎ> y`=0 =ZZZɌ\3_gkx!gT뼩J{ܵ'XDG[ۥSǹ-NL3m ̘s u~Hꊤ5sU1ڃ4:GԖf q kqْ<ߔ)u7aҋ-Q*L~rLVgr#у?(V=iߑo?w:K;tRk%d H' {{rߔv?uyY>~Ta& 5Ʈ!o1gƂ@sH-A!x;w*͈̺F=`4QԃJT)umiB' qԿS]xb8e B`g"hHM2*vەo ZM4oJzsKQIkQF b*7^\ 4f}"}ZZ?}[fP bnQq`2}kzѐҎ)y>DYXiGZ3vfT"RWA\B2WeA}Ƴɑv]G?-˟cz1Q ޮ`07ʰ4x^q-sG T V)“u4a| )礇%9Z ONv =<򦮼i7.t_gR.Tl\3v@iajJO7-*eP ʿ#]G$B*|:HJZ <]yY_Z93sʼn0 3u^m:S02wrͰy]/.50+g%J0OC:>!ue sNKr\6%kސQB/jiʡvG<|7 څ4}8!#d)R#40 QzӫPzmoPYʕz>ԭp͠ըk&cԀ.W%.3)8Lثd {`p4?J7Ҋh&4GjA)7l-zX~o}dQC'-PLj1 vۻ$\;ςmL{|2^h3O/ztt'6UT B+l>1GI+,򈎳U]P dfQ7i~~,g#҃ʔox.yrXwI+ x(GVVX2zcun;.J+ʡ-tTB *-%V}{V[ytn6nN64dT0}hj; 2{I3]%m[؍qKas* Z̾L .ZO߇Th7if9f-CCr%ެk` N5 ,u؄A$\3~«UT rLSe^~xrلA-ĢK>,kKѕ:eijMiV~"Pi51MqUZU]OxͯcPEk];1s7j/c{|aE{ExD5%G~ <,bU-f3QZVRjqٶ=fZXd*mk9\US}oQ#B~+o: C"gqS`{^}$ջ#ZP] w^k״#{fQj" .-xKͼȳCigyq}zsif~F#")t(.iZ!eQ,_`o']d:u:hXcJk~M1(ۢՔJ HɁ#ųaѻXrN0/mFoS/ypZ;Πm86=uJ3~{H-U?ʌ݆FuV4F=} oxTz"He}-8czɭbpM3vJ{gWkɇfGqBK*^9#AA\>@_ȅ%MϾz)_W4=9F:똨3oqH8( -s|!CZDyJgѧYjzm2o7H%6Ǫ2vZ~e1mHɘJ2L=\ se, BuDfbPtkQܙKQ\e3.QSM8.IiJ,k`g"dFiw~={rtZċ:fṛ oY`r@52dM6STw z;!u V2 ,CZބj,/i=꒳{H u Xkbmc`Q&xw>PO_1TZ$VH""TeG=ma3Zy4ZŒ0Јe1 W#hٰbOiF{-zRMZͧ#RC- w="FV@4-dD\rP/rsSmN-kFU(rq47o,@WPfZ>" mD 17WXpW3ѓ7}.;V7vr7~ڇ&}`ƞ#_EXqoJ8t{FcqOٍ-b59sͦM+R"J՟-fe/-8`,В :h2:ԙE:Yy\ikو-buZ]Ѫ*>i:] 9\xb ,8¶ϒ1C(珌>}iG"!ZSUɣ< ,EˁDMhS69'vɷv0+g9:1@^"=An sP$2ǼÔ75Ȥ湴w.B_mpnܦA@9'3h1AӜ 4`Qkk̯R c ؂gr`y FXl>=_t=]0Fhy}pâ~|ӣ՜ni /d~g6-V3-$fhOc!G.bVԄ*M\>O_gDC=gBm1䬏F]FQu[_Έ9K4\ -x56C_α~XB<(BUxNZf3 ;lYeZs1߀.Q6-㍰G̞xLdi |#tE|cn9A3}[Vm9!E>dxVffaSVWgdY!Y8E_kek{ ̶ k+5#m=qR+!:]"ޒu.y@>HK\fZIV厰fpu ~6v5\˄岇6e]yu (iflWhq飷 O?9$oIz^?ZiQ*@1#2 }Ǣ89)eU׬#^l2-$ȯD`E_u jY4=[]= T ]HvSsMͣ'a1?wLUB!mj }xkl /Mz"-Lt[)qUT67!z\W,x^ zQxCb6Z4aX92Gqd.Wx'DGHui{|gq؅N1nq?u۲V2sp];?@ M7ZL: ]z$E5v[.ݪK!eC$٘Ui{)ETi:x-ms$g,>h,t~gф+ |m/zMX0J4y\we\%\ǻp#0":c- &{пtyɿsm#ؒSGoPoVz7G7As?}XF sfy:Oq(T:88#9kRsuk| Htsռ,a%Xd'r^G$Zi1]M.Oo9IlQg3.:ϞaeT)oz l+.?@~E2b ,i_`;NWv5U _-<@qLj냂]K(jNy*`5b=Kf̙}zI.XJ\ۑ /fClo]\wz*ewfXiwH@$>Y`J܌sҡGgq`dvۛt3 b3|؎9"*y{K_W\#RCw=*?Fwjm!kC,urifVXs7xG`#,{GLOo@=] GUy) >=rt]1 Yry`a|{d"r D0Fn}ޱ%a)GPCvBނ, @M?}_5f)S]b]̥jj7| ]¥d_*2à6rctݳ1:RM [x/j-k:Dd~ߝw0jbGm<|1 Ca=? Fb1ɮZ\8_b6_-a`-ڵ}B= Y3 F\ygBA&БV{T3l?5~@ZB?k byO+Nw}ƴ=xj>K3|\Il{ݖg930Ǩ0]?n3bjw$i%}ִ|z#mb9Fc|}l= {B-2߾/ag&^iLj2ϐ-xlguv֞-Q$mFU"3g>>aÃ%9ϓnv ڎ1 '~չЁ+׀XJ,xܑ θ,$3z}I'Cbcۥj`e]T7/L ~!Z }҂)R b5 l_Nc2 =l5uܭzz;WB%6[;{?%?r^{ױDZm\n/8yz>*|=d(hQb :94qvko{uFS%pʂ蒿0 [S}3rE qufOxT&DU%ˠ$6,[_UBXi~D-: |=%9W^~#3fHsBA㷶?u\\˸iHT:6K] /.;hVMqsl筊{(sFgWA`ٮwg+;>*zwئc˜q;q}e;n WsnGHdzFǩp3b+8<LSG BhDzf'+,Ċ kݭddȤѓ}۾OOwz vvmJ2h[qE ߰)wp;]hAY wc:r?m>7Fe(5VL=`;`&Uη4 ?`wPJ,EjCv-T=nYUo5[]8Cx#ޅЊޣkc(=mvUsAVw dv6i{Ɍ i=Zݳzd%܀Fz?-N^]o.[K:&Ͳoݣgo;nj:1q|zBiWgL2G%9mt@!39%c}{q-mu3MKyyEU%~ ^Mkΐ=6t3B ɪxu~Ƚ{ryU,h pc.]Wdaˍ |x$KGDC-0XH8纼 l7]00H}=((˸N>j:nbORe-wƴmF'G1X=a wh5)[եu:wnCnI0Ќ>rϨʒӁuXJמ!\!xCl8.bV-xVew:rmw@5+Me_ak?oG5 e2O>(vū ʾn5G2.R{YY2w!Wt*ң`}݃ #,ޝ>~ܵ[pcfՍܟځ*̃trv쿈 .[S?oWKͰc A)[sߨ;[r2娢U,ꞙiA#c0!™sּ9=i1WJ?QDz44K_-`w_J%'@=#Iԑ3>>bxc1LʝF] l^tWlۑTLBjwx|O߉{0,ᷥ/-FUm )Ik^gRwDBHsT5x]T[|):bwW#x{p֞ηĿwZ㩴a;Pxh?EzO|}੷\| '7ΓlQW/uNfr}%k5-feQ]PLsCD D?aMb.@ex ` 9X_6lx2Y^قXAZ[ϨȰ>a zBωM5}/ ۳|x[0w M,;ZO})%.523H̳^`A$7.?M+ Ǭ4crJK5 s"v 2Yh%=bwj>Hhw~ if3M/F{_0XҀ`lπ;4+Cg}wpAl_Xuf?}&D#a"%p;HDci8VNFc&B`I12 ^+DTFCaX*]pXP0pp4 00GUph PFp$8@"LJe&%̱ #@(/Lb#S&84B`ͰUʻe66g(pT756-*~E&Eo8.wr9-v!GTu,jS SJfulf !|)t]9eR謁?})Ga j?u}cL[?b̏XcAB_rrJ\!U'AhܞQg۾UN/qD'DslGUvrԇ!CI7\l3r͏g/ j~fU nGM(mŵ 38ʡ=Zqf-c71A>`3 p5v?Ǝ9oh@Y㿽հXo6amC}.vָuH8tɶ gz`XpX7~IWLqIJkEobk.KqljޒrA֕]!`-f R+?n*iTvFwK.Rppҭr]}]UVJ\ˬ܋sAzpqiVpRq 2Ũb4Skn3|0Ul6{Iblş|n)_X.ևkN^[_7Ãv ׾xx%]$dѮaR _/v͕!Yݨ7!Z9yk#0/0#týIpMN ӟneZE$x4MW^Act-]z껐/D<ax2fCٿAUOw .ZҕH072>A:!$XeaP^Vb(e e){{(*-ɂ/Vбpj$fzDupq;H]X8J| Iώ;7In,OIV,+$C?-l *QD#9CEHvI,H (w>rO)#e2RFHLڑ)LMWnSd΂ P`Q|jSa$,9C[ ;efw+%1#sܛ XICwFVI?C*l` Y h [CȢgx6[O[әx[,\&H`$5ZƔS!L U2njТi(l*|#{FI#)"QC;~AEZf? #id(dE=>P-W? &ƥ(J50x0C>.HXmO /גG><@X#)}Y f[CBèU*hjvn>TQ_mIockяXw- IFou퇡<=9J&ezn}Z?LK۠^>b Z-53]~&3M>WDdR.W|_gS^Rz"E&gg }w%eJGsJK#+V2 [H3rIT|+т;Ίpj|9X4Z88ުωt.O`g?>y{Qc3V;}7ǥOPk"%2ur3ƿUlX_kGyD'0"ѨO>g)K*BĢWcD`cFΪ1Puq nux QKiD# U9aYxKiW#K)#e2RF26~~**cuyo-2.1.0/data/pics/jjSommer4.xpm.gz0000644000175000017500000003110511657577001014311 00000000000000}kwKۿ" HQ@ȯt=sX:z!d[!'bȪ!ۧf- 2wFD+׻?h;~r o?nc7CZ?:ܟo?דAը6zy絗r|<ꉞon#fU~_z{_l/㪞=/SYX{_=gSw݃ =yuRϋVԏڼV[z  ꡞ_G7~|}}^gw}8 jojp<qp?F}-~8su+CkѬ8?#u7}9Yc.<78+>[׼k{hݰ}/I/cw_\?Z/YO!x߲}qæGa|bR??Ֆ4>׿:_>gֿ+7^ҨU_ϫwOHq )_7c>75O7V>>wR/ZGUgMG}2r&=e?دf<_LW~_}_H=ѯ'_ƿMx ?0O@V|Ul]䟃¾뫡97yyԏl~^/GO9? gW*Wy_/^ |8]O2󓓆r߬O|~jՈ)=/yk6:94y6~8l4@lfq8?i`<ɻɁۛ|6 <5!Ϋz@~+= nE `VhP~{w')>o;+9Q{J;H3*Rw>_ v7Զe'1ȡږ;[o҆SZ{">ȧkG>ǙyN˩kۻR+G39z>`^Һ{m cuIwϴ9z҇۷83Zmm;/޷Zp&JmWoSe1pF;p `>EtOat@ =Ru:FeA2vCm,-}޻3Us]l %n]kPý-y~8ܷ劲QhK62(XQU˓^UDiU ePZ3p1&SuWtA%* GSy-=@UGFjI"P Az_Bt,#z]NJ=L;蘟I=]Po]I_UBzӚkMyޥ\;V.sܣc >< ΀QxK}@;Nw5iR_$w 1xa0*[8:\^Ho_WTHK۪\:.myNWZj(\'9K S_6p)bЕgI易5;p{#xʾ<[eA1Pn*xj wIt0ǘvrt@9RO/dv  qBO <ʧXo+/a 1Ñ<\*zr1l[P(jkHÝcBX@RiM]9ѓ5h;rgP5 !jKi(\ /c(^k&r޻ :""]`a6k"ߗ'@Wqȡ=s]uO:>G:AOeMV0ܲ~P^B\kc eH]P7;4uM]Zǐe̅R>08:x9!H* Iv}JGp!4߁T3Kl5*5*ug[Ց3ὼvAuW<;Fr |KO'-blN6k>C\gfTaM[6ҿIOs޸A>m}n/+-rZFTAqCJ Rm$M j*6ly>|gGʸ%0&*M}i\iP1i5 Һc6P Uz)ie9H1+7!ySkTE8Cf,SK }d6P6/j׫g%締C Ϥog_1`Ӌ2}zڂeT@E*ƘnoBmet"r_ZЯ G_,|)d)+Wc;>R=ux Lm7Š>8޺m\0 Ϝ8"xakjPz6ѿEƚ &R@Z>}Mbָ3. -K^1 ?p4A*Na+(=D)DW0o(A"xnG=h2JSm:It~Bno2Ol[-:3f==J{CmeϴK#p 1jAN"a{Ew'J[~Ȱ>msyc>>hbfم]6E^71Ж-0hg<c땢c/{ :u1ؔߋ c ~K,:x2=&=DFCw*^ H4\]_ ͬF1xoŕpjγ'v-ŵ{jeTڄ(+PyVj|l(!o[bEO?`Wٲ4]$vGT_ߌgDw4Wx/yaqV|1r8Hj[ h{~S"@`-iV59h+p~(o59CJn{Fo-Sm@6Ǡ2aL#Pu hf e1`Q`o4KtU&i-ͧsԡ# '*I Yj[di#ZAf;P4ia-ڌAyd7P6YSֳS8zL-ȭ7u3Sw| hTF -/~WFɠ1cRfNYG{u-,J~eZPAQ2v<KPGB[|%lftlfw"P]Du-ZV/sh.MEM$*`=,1ϧhʖKxLP}  hH87gcn`|os.r)&,jvyϣ$'$nCT$mحOٸs.F{ZnjۣYѲi4m _}S),znWHm6K(ڸG㘂7A^ /X^>j y^,H- X3u;R*grȈYodQ@})y04#Я@A, L/3g38A 9Ea L5Ǽ=fM~7޴Qj`qr5b VtrxF~gkP6tQsV!C\ꎶ| *&TpS :}4vd b๭%g ^ لuh=uD*@C@bPK+:-d0+;>v;IOnc^!A[n9Ԥ>I9>X6\r! ioe VZn,w1{lJ17BD67e7:GޅjdVV< ʹLk*?(@W0Bg6J/u#E[ <*@G4Ht' 7 'AQ( 83WַvBk%W`F+Y37#ma4a rol#Ɩϰ=\\6ZTWý2]1VnB5݉P(+Ii{lm|n<п\2|S rd۴(qAQ}*)h\j D "˥nlf 9]}Q}̩}[H 4Gc0țNt2B:T uj?!gQ.Gsc-Y; zn/͋f SIU%4siԯVZ9 [^ñXɨcx\GrgCH[n!w\Od)CɺP?ѻ]G{5E NJeme1rT9.녲 hc̻@*(|7LcPӣ,W:#/frIK{ W EvOrU@=Y,vu&O+kQFv e.̟ 0ߠ6&Y*^驊guNAehB]+R1 p\]3GE p9r 9J|G=+ c:GzJ.% $b&axoLnEnkp'Q,L)|qmxjxI[5A c ^:@ v k?~Pv//XрO~+:TGɼz[Jk.oCʠħQD{H0Pu\;̣E!gתZi !>{[YC| ͮ !V ҏ-1\fc>7s"un R:΃G<@74zȴ>mcRI`}@!15jI`K6hL w|d1hC_/ usk Xݦ,#Mh: 3ոn6,oD.ƊA X/.0DЋ6sިϵ\0UiKMp,Gd/O /Uf0gͣ܃HOuB7ۘ@*]3=hѩ&hk~@ %LQ ~5hQex%l(^ߐ<*/=^V~m f9<]_m~(.9EÜj !<1bal]NNnJ)_#+PB ]ۂlT* w|mUD W]ԕk/<fM*._ݩ1U!2#MU@=E?!2e1qΣ̜@m>,եxwG#P=3p\+]F#yMbr>Eپm\:WvIN⋥=dsy`?\{+I7hGi;E?12-Mb7 %#"EW5 b% E;z]gOXd!8̌2:A RN7]١l 3Mz\Ƚ,'aC}b[YgXmC 5T&^R)q>nHN(Q]yMx+*a\/Z `0iUvwȵ"fˮ':gg*ɝ6jS][m+F \cD_'{T0cӓ>Nrz:qbw~,&qnlhԙx! X16QsKL MkZg…qZRao)d%u+fYibX^keoъ(ghkaZl? nHm!wf >$:ᆦU+ͷAm]QYvW̾P[ 59z9p&z+J\oIŸ4ȫirV1[&0`ND&Y36W΅x mY_m'9V4{x?wDKzV39`lhb6|>%S[r1#HKHdfPgS$|}VxȘ9cj.̿O`?؋J|CdsK}5}8G<'Aղb܋s+F /P!ny>zӲ'amg#ә 2NYå=!7l$qSkR, \0zoqID3PeO3N!nvk>w Pion2y)Zp̟-/iFz+9-SwZ#-E86}TAyppiG]bՓga25.U=G"1hG6xzOGv.0+ba~}hcP)yd.2pe;O0R!"]U\P˯Qez)h u}T63׷9xgCk}m<,}b-$vmrBs9Qg] Cɱ\B ~][mYfp;=Sd!+dV=0m+ГxZ5 ~f)̉anf9Y`8.6("g瞡iE kZ]x;d*lK"eM?fSݮh80Na ڲe+{\)8 F]ہ'˸*d[#6?Rդhq gEڰ M&O;d.z*!% ܍tcn9oUTܵyP%{`~zҁ18O\0ZCo#LmbNaQ dM݁ou"(CrT;i二ɾ'v]XrﶟԪ:/Iq5E ^=magǵ*l+q+K7vBnЁ9FuUo6vmb.=t3.}]{ |n^7RN\ѤZtͲJvq+gү1=h-OmSs_yo03.O{$C|#ԼWKZV q״ tSآ;XZ5|0`cBd([^LKvm%Or*m޻>wnΓЌ t#{d9 `^WqW ʁT*qGh[[˪Vfi>{(Թ&kC3_Rya4CUmWnX: `.{& lLT=?=xhiu2eoWz%by@e0~AcY7)'['|2[O1؅3a )yTɎ/=X&YZ ;'׾Δn/|'eM z LUX`Ma`kIbytM7[QuK@ 3k>5]TL6piJA_r)|F)2(p<@ J1 ;]$@cd#8VR؈V6q 7S! 1ލU@ 'T(O+PVȩ|*P{c13 ~'Z( ,tu00$~G_ splTþzΟE0 X.mPx l8` rq>QYĖ~]+ XH)JMbY2]3ϐ0y0"q+b8QD֍RUYP}KFZ| b#R{t~qD=y2?{,Mc.f>S%)>%w56NV%闝N1*wv"S%v78)\׮W˥Ұvcxud4tӝ̍;uXin0rG?zzI;3<ޠv5׿ moу:\)Mlm(o.Iޙ[eK'M/I7C8 "/D[Ykuo4f{U'.n.jn.XgͅM3lJ.Tg\X DZt\*ՋsT߰WǏM:4+ .֫3S}²_V!qʿʤ^|n}3;,AgyW[RÑ,ATλ;nX,Q R(uQ,9On cuyo-2.1.0/data/pics/bxBuch88.xpm.gz0000644000175000017500000000634110361553650014031 00000000000000b=bxBuch88.xpmkWxIp 1H# j !rQpgߪ'\=;gZ`M~dQX)Lm#5A3pwI)ӥ%7La%0*[]MҬuL^9)bj [[LݜHg].NWitcK $Wf̜u5dP&+gMUȫ*mf1Q.AM^{S@5)DԤeYWߨ rTK=+ĮP +z3̱tUv,uզRpq]8rlw5٣ʖkH13vhQT9F/K+ڧ[x`O'osd|2_!QlbcF$H=Wö?;q! (H@yb9·d[~o;sD$s$n\̏ bݧ70+#tDT*PG 2n$%؜폥\~,kqqV xqogq_C;[= HҶ7!uqsuss„o4[cw0 4mNwsӍld\)]5鷷mOx:Ĉ877v?|]t?{)Ń:Md)͐Pڝt̏0w94sӼebJlFoZ l7@ׅ"i`D C^uk(ޜW ÌxӋfo֥>#m>l8gYܸ[#EG:i2nTX?Eiv߀`.~\&= {ۼ3܊b9ԑ5/.0qwm͙3_6<8QEmma*1lcp$Y5Q$&mhc+ۄz9Af$NbYng^]Z&%ǐ ^xlrzZH 2|@ԬjNVh̨y0ـЩӷ7=1`A_D: wGޘ_4%opW T+蟦1 j_Gm(iѨý᜚aogoPwQA b2ǘcd̍j$ .%NÐr{5 /Px1>ttpMg|.r_h0>~wq{≎; )i#FZslC-DP3auYD7&20a E*ﳙU> 'dDױ?^0 !Y΄'G+E+T1o!_(Ry:fV0&<B_&,"JH& WO ue#c"kf8\c(x91̣ǀ ?ׁ^bLS31 2& ^y %_wA{W8\z !&BigNu2l3uc Ca !djd _yZ퍷 @`Ӈ60dNuZ]ڪ6{%0L:$.bCϘه8b ٝ5U=\wPx2l:a5ғA c!:a1{!.0x%_oeᷥ`y0F8t]ADӱ8>鱙93 F(d`YEE7S$ܞB |FP1r,#amcK˞WiON~: 0n fó& 71zՊfLs&_:{:yEr< *>3Gq~Š-0_ bw9X;AS[X~P>XAͿyX,yd O=_';^b(ݿ4c1)* _XhTE3N6EX(̓I_1ֿ…q< g 1$pt`CyoßUY4 6!uE/k_O'0;*cuyo-2.1.0/data/pics/isWeiss.xpm.gz0000644000175000017500000000216607550521116014063 00000000000000'n=isWeiss.xpm]k1=bi67]VmaQNNADJ) ?BL'̛zZ l'Gݻ7ã;t;.o/.ۏ?}~{>Aw{&?g_ّ/N8s)_=yƗp%f\ΨUCøR2Ȑ0F`%2ij*1PhE aGc!z2\ 7A8q7Poch i7K ).M%f]C4 0TBgcQ;2A2Dʈk0X7`,kuoi66v f ig&T>Fa6deVzZ z_{2:aSiƈ1_0|C C[i!F@K[8V}b\>I&}[T7z݌ZW0c{Y1 3IFf]5cF9eX0;!eĀЍݝS$_͐3v)%yP|0s݇(=!\%2RadBg|aHp1B XBWc6%%Ţ31vC<#˜`vyԎGK^4dGq{+,oN2Vʋ>Am0.F% :Ǩ*Dc3*C62VC?hP H@<.K0c茺.0s P10KK Zhd@]Rg1K%23*Kguc5Ad?i߸FK>.3ŕ/9GQKԘ~(^~lf<sf _ דo5&cuyo-2.1.0/data/pics/bpPinguK.xpm.gz0000644000175000017500000000121011543455110014136 00000000000000BMJ1S ^u%" F/"ꅵxA|w7ͦ$3V7c¦Ϸ65n^^_&0~!woWNjK8^gwF{0f8}{U2jAW+SEW6بQL楬 %A*bA_2hryL2aB4zUK24:א x?CzDrẘYp1EN='L!Ct3"d`FJWm2cšm(pJw]X'Vmg;tA%TNwd}'CQh ?mi9lO7 s Fu<7 ^H gAKi  BݕȿaAn%u1, VUڻcAy@ܢvYr阡ɝc<2`*`0563`a?: C2 YUr |@"C? D$ \*C  x&1B 0$xB4C2 e<}Q!cuyo-2.1.0/data/pics/moOctopus4.xpm.gz0000644000175000017500000000343210766714573014524 00000000000000ZkWJί"&i(bByEQ*XIh&fҒw k3g2a~VօV'΅Ys:{"Iߛ'{T FhɪJK@j.Mtꖡ5\-W3 C)JC!pP1j~69 Ӱex%KQ4ŭR_Pe:AUTi@2ݏih$a٪Me9b"F:K.E:vMG%mnm"hKLXŨ (ۊHl@3 @6 l@a б]bD :^nˀamTaoܺ (X]Aª4 5oFz!_nN{h5F4"ëVM$= If&h P !5l,-zz1XUh}m }@۪7{p ѣC YP1 ju[$ w%:tM)I>jQO6v?n!bPm"޺HhO@=,6LC^$UI_Ia r]=ѐ$] 6,+jL۵ Aٲ?A-6Hh?Kp4PgAda[toӯW (AWA0mg.+;ݓEQ|±2hGAX{ =yN֟|=o߈;/RcY?|ǧxO&1?!7~~'wclCkPL1xXC?3uplG??"sݟS$HS 8VVXGY;?/ͫ8Wsh3At7i5lvh{lk~p⣱"m_w7A9e؆aϏvkuvfkȖ?>m?<'ΒN^iU[fNcOt|qmZ[=<8e("?C2O8J`U]88h Eϐ 3E*=3,_]ğw^s ˱yyR@1!)ZEʟORc:hQ$8fEڟGR9C59$8IgI3u9I^EnO B~R0EX}?7P(PO0T~(E'ќsc {GL͞G;S~4mGuVdH+I>?ŗwˏw̏w̏wˏ7EG>6Oj<}REOI>"'U?x7*_gh$+cuyo-2.1.0/data/pics/mdEisen00.xpm.gz0000644000175000017500000001106412412223254014151 00000000000000y[ϧSM4!a*LQ A&BS'>]kL ϻ,2Za6_7ۋAkݓӍ;!n{c|SH ɡ 0 PH4 ´S)VLΡp$Lرt͈ᰆ锎1N%ΊbigYTLyJ%)&xDtNU1I$%QEǦ%%J;oRE"1BhDDS"F1N`Ci\TD X.aL;"љEJ%J9JՏi11R$Z#i,&eD8j$ JR$S)MDU0C;KL5R"(0F4R(*Ũ&"YJCt6Gi"N·Tn4g)r(UaPʱhp*SԿĩqb\b;\&Kikvi*J;ĥtcJ&s1 [D J I5 -]oܔc;Q241L-JPl;xF ۱*r]JҞ&2Ԫ}VPB:Jt8C{Ai(#8TK'b\ѩLD&+(S!xZP3(Mg`bL$~V)eik(*tJYb-0(T `o:U,(T(D@Y,άԛBm5B~TɪB[(UJJL*l[[3N,im*FD[wKO(Mb4_1D:vRNEq}6,iAE{{{R]s>&gwA moNdh3C G3 w+'g=2|a{Ad4L1tpBC7\5W0!5͏3||va2 7 ox]du}w6i C4S(4oXtmچt)oO&g9<8QAG? ao U dMd0Xӳi1BdHZ֟mI?V'UkA(gctn3mg1Lz5 G3B30? \al6W{:0c0* D;Lc&IwU:hx ϡk]Cg.B+;48`n3mA_`huJ yÙk62z ?]C67o Bf2nlOF  }ADwY jy0nنR~;9dt!GLz4pF0jvc9A ,2'h0p.3ġACXͨ^0s!8VnP)?= QA]ð2>k7dI+hu G7 5FhH1 &3hr̟(ntkB'Ck  ܌CkZ`P0%C2$F׶ NvHc2Ht]Xf ѨW5t㛎kIg-È ]2t nACg0x!CH1iAyUC= m1hPR) ÄokڮA_0m{^Ck4B0~4(DcaKj/0욆P pm8j0Z ?9e5hLC}`:IajBߺ3`L 1Gt$C %f@:}נF=eahBaې?Z`ݡkh:]hSH^C#!2C :`nN/Bס^ 7N hNwSXsּ \+.0^[J`^Զkhi,q |[oZ3 7-dx Jy4( 3K2  ǃPhwRk6aE&hh[ MA{"["!ڇhP`hz I윁#C*o9nUC/C2(R1x_lZ]ZRlC5dl<]2He'0MYC*YYr 7PX;3ZB;bofqABC6A3xZryːgkp↤z)_Pl:<Zxmbuj1ϹCyΐ\KxfPK yAae)j C'[Cf(gE g z1s I]g ,ȅB*dxh# kzqD$Vu`)>(蝲cY}-:nJ~tlCh?8[3L eZި_5yxy9q}}YTrՊZ ~WA? M><=B|p}Ѡߝ``y엧qb^www[!Lr2,z]"g;io "`E*X( c916֍ٳ||IjA<++L uW ;X3 4$կhDPDCC{8<N%td|r3%uޠ7X 3C1HV;eLC`}C>.hr8qh 3OJn_"Q/; Oq9u %[rmvc8UĪs&<[L8$xf WhŴ _tb:U"3Tp4TbBTɚ \6eӲ+cS ^BHd@O"UAۂkҲ`X\\^2Cvk*D1@Ȱ[`-Wru u4eL٬ϗBA>_Xk0Iu [`Zad+zZnO^`UhfuV o%zDkUڰyæ+}>_A@&݀6~29/nm>\Ěדj&B>tEJY0@e+>Y5wJmD^]s>8#2tӀZvqq{k\mu[>_,ձu|p jhzXE>0~0AѰ)HWF`ȕ1|٫?OW2eq??syMKJV&ؤꂴVx| u_QƊds?YL1kཁkTX⬠~}Uƅ[X_ ph<>?7;[=>VX%Ԩ`Kk7hƙL> Ш~'@Pw6,/cx=_i ` nvP2 |'w'Z~assˉp^3 Y Lː|7#lz)ޠU.W\?9ewӇɯVIW9Kjwr gp?R'oaE£z7>%wo4o(?[䒶]`f<`7d:~fXYŌ^o d %/6XZ]߰aQa3G/ /)W2,* ú2% g_G|Ļ e?Ć6K_b{(eX"45po[B ,$+xn s/f0gȜi(D3<1P!J 656Ab1xn@~!Ϫ#t/2`'`D2X?ཆc`$ hpJx85fRпZEi<9 ʬXۀtABdH_9GדPO%=~h] "^煣ob^?C>N-,M4HtF9u[=uX̰]f'q[)?kن t5ƿm.hNa/ /$VQf ؟1Q"4-1<QxL*Gcuyo-2.1.0/data/pics/spPacman9.xpm.gz0000644000175000017500000000076211662241764014277 00000000000000F=spPacman9.xpmK0ǟ_>5"B7e"p{ݤ2kBrm}F/ÒK{NRy $:GEߔն #?Q/l~Co|"7yk+>˥ɤɅg!i-iRiϗL >oX@21^FX%gSµi) &D_KAT8\uM^< d @2q SMٵFU55ui܌W ' 54n҉f=^qQ5sb7Ŀ5 d @2.Ȩ(8 ƨB3j9㆞+:ka f8:op{/ e+u_su3w dx@<!(w-D͠Ѱxd@g3Y @d2 z2%Dg d {2!2cuyo-2.1.0/data/pics/ivVulkan3.xpm.gz0000644000175000017500000000165207550521116014316 00000000000000<ivVulkan3.xpmo0gWDK{vT{Bӄ !!w|>}h;g7뗕]duͯ/|}W'GbU-U{ZGǓMGx|]ݹmv}nr)vϷ vAW@mnnvjmv ޝnjBg3f{s|ib}x)E͌ Q ؀2U55k4u 3_fkxu|}T^!|mK` #H #kM3E]Ǎaj$d(!C B[D30)Q L{1!y¬޹A}/h`g~9j3F pf &0 Ӛ'4'm(@{ xĭ*  1(ocGu@IlV,KiYB0q Xlf(bihtf~ʕ 9fD(MK#ȧ&@L =bAL5Ƅz}8mJ1ĈAZ *]4O߳sA eDցԠt]='@:Έ 45OU0hY< e1AKFH Jl㔴 d? ܰlt(^$'huS/h GdM6P`#QPdUa7(g{ Y@ۦݙs­$_LY@s T <Ԡ9cAˤ Q2؍br{gޝp!>NZQqTv8~| X\5J#*-K qѐ 9u _cuyo-2.1.0/data/pics/ihGruen.xpm.gz0000644000175000017500000000044607550521112014031 00000000000000F=ihGruen.xpm @s>`74.Av*:"! 3w5w5WڢCs?5V9(tvޝ^Op~LLI 6vbY(O cU,@$A*$>" q7BȐH xAH0uFVR6I{iA򁬑/^Xǁ%9? IƯ!k]ȞA4,fgr% pWk#($cuyo-2.1.0/data/pics/spPacman6.xpm.gz0000644000175000017500000000124711662241763014272 00000000000000=spPacman6.xpmMK1WB(H)ZAcbv,9&}'I&рN਷6s6[b?w삽1볃9yY>p\5/dR5FcǕfbT_Uvlg ,~:T*.iJ!duv&%=5~0ﻭAsŅAtzҙ!ŮDŽ: Z҅%Fb$Fb$Fb$1ô޷ =Pe`~b71}t5\廣DoW߿u=0do^c]|~5s $YKHH.{`jG Jp9jG2seϐZ.dp !~xY:lb?x>q1A Ww?+.ίv~şv`e+vWZȯ}w#s%AbMX)(Ͻf }j8Z;>3YIqv&pX QɄݑQQYRܽ!ٿa|>O/2cuyo-2.1.0/data/pics/mdHolz03.xpm.gz0000644000175000017500000001023212412223263014021 00000000000000[k[_J.lf5+ٲeM1i]n)9~ffejy&ξega|귣eAxǟ _֪xۍo- vJ"'bmZۉmEAON˩XBqV-AqElg$Ҝc1=5ߦe\uv kgP܊(̠L+T0b62}!R) aN!v\ReEPd qj*mdCFo:dMOF!bŤrIti#7])&}ڷ%Mn(rG5QN؈31QZ$ƞe mTMHU˫Dl'9M$G9-}%@/Pl:~&6^X-mԧ5SVK>"&FCMǍX9e@OFCQOw ?H&OsI!52>7{9OͦKNDb-_$Vc#r>3T8VjTJ/9g fN@U0@.NkRVt3Pa9gk B@Ԫ)b / 2"< ,ز({/5G" Wa+k3 >'99/ (-y+@k+zMބ]L2诐~:R`׸{0̄zEKZLHƘ'9se"АqN> 1mv0Eqf2I#-pTA2ВaPA +2@ ϔZB"U@/#>,z?s<1>! E[P00}n0+5Y"؋Ps^Gr=PjPi<\-wx\1cʈz잞a2̈́XℙGs"뢨TE4,# fganJƧpSq)'W@ cM̃Ob]kCEcGg +C,NA0AԢ- ܦfo < T0+ ciyl4x HJL0G,(aSt|1 ; *؄~;9\mDgD޸t7h,)&%L">E2z.Iy sm*&ĺ2HB7K s{O8X 6ē".BtR؄:SV܉ɐf1E)KQ_,yu> D2^}( ?RTn182,2(rw̩xVO?x\b?.Gϐ  [a͆?Ph"ȉ"#liwNa@HJ C@!4u;TMZB~> `Gʺ,Ql+ZsڙWQP(wXsXF(EE:\jߨJ- l4kkszhw]kB+D(9w.kI4*Ìqy6z9!+ƍ3 .Ca@T cm$kDG_r'(yhqO1-X D-g') -Vyp׮{˹4>2GiKh  ôYBaXw("1}T*Hڨl Wy\üVQݲP_Xa8Mi'p>@ "rS-*1x8̓ }Nh[9`Ù`oF&4U+ehHn +؍ Ĩx7HGW%f:0!\\L/[n4uȉ*Oija`| UJ1;ś5vq1(Fo(%<~p>m|-yp2Ǡ10ȳ;  aEA1~Qf0\y!З᷏U bfڟ?$Rkâϻq=XsA<-U0U0&aX&a ̜#1qG 1ӹ `c4~|;b0Y$Vf,\C\f46 1t-C<.0a!0IzbX"z`,q,IόAo =2"IAvz 1=t3h<`xNizΫdIjy dl8/AC A, 0r˃B<*1@Tz;`^tWÀ]n!`) yv3zI1@TAD3A,е a".bs3A3U^F=IOy՞9wnvlnݹhګ7{[l7y5}Z4Z+jWq6N^w27ɟ@f~-iی~.? Y̼do/q2FQ~f/ 2#/IQ՝#8Ÿ=;y_QԏNٍ }益[1\UT'YQ;BC8{N9jIulzo҈#C[ZqMM ˝Nf #{n] d#76xqh9فhPB]rjB=˾и߄sw.CI+B+pF>4=*m; -:K'lkARNn\mOiՖ|{{o{gpmp#9teLA{w )tЄ"ڀCnZ~9U_+qχڲ>}㮯+N4lB~ioo|wC} i{m'}'pP7RV߿Yg#R(4WY MY]:ppnM}CAjvȷlo-( <n.;l;J9 |ECH@6mL ' UR:z^R';v%skA/Fgﶽ̝{7;9/ 4@P*!C 2JP*!C 2JP*!C 2J uHLHIQJol*8c 5)--3FR[6@P-gJۆR|0/ )x-)(98:[FXTrY+Ԣ3?2fnLJ4nTDH%! of@ehwe!6Ќ+Cgs = X\gS3E9}~~+2+swp?MW"3=EC\ě'tK\y|if@ehy6pk6Mug4[zDHd3_*dyV2 *C7P(`E)qkD8bWq-cC ىBOGkG2FNn}hj٪0J/Pإc)<|yg?XBiF/MȲ \^˅E'9Q[hPIH ;sadn:DV͕69Ŋy:>B7FTx뭇s[XX^鵟Qse/2dY^퓛1#l dW7f%:S 5*/yA{2x| 9v" n@x\pq̎˽:f`&XT B` B4]0EPl[fK2tNO3t l>K^#ֳB+U~:׊K>AƒJղsl$_l7)vۻMm3 x!C+^Ñq ]>Zm<2:~a|-!CT\l=Tl@2tuj^HC.%M"%Ymܠ!?drpnm@  TKPP]2ɉ Q̲!  |)r%TPKw4E'=!CP1#*d(?f!C 2JP*!C 2JP*!C 25s\cuyo-2.1.0/data/pics/mdHolz02.xpm.gz0000644000175000017500000000765012412223263014032 00000000000000{WF類+8.gxI5J @B؉Q$wdDYzܑi5?|x 룱Fw'i=?᏷Q^hz7u;uQ P:Vb(6I-Үݵأl(tcKAMzguPlŮZ42t=W+-ZguQ<4dj:NlHdi"CA:&a8vj}Cq uk4#1v;Ů;Dա^$мIb%(vK;Deő9@[.a8(Ô\CVPB'Q 7vZQD8 Řz.wb%nRoB =JQ W&sg$v=zF1rSoF"qŘy-Q|HFa"qCY!-wXGʾnf(ߐR* V;mfal4 -_It#p,wS2J9j=WbKrz(UiAMS]r&!(jBu.B W̡C01,LSEQ]? a,24>}zhiS|[&tmQI3(^bg21O vaߩ /jFA`A:#HU ց^7Ju##=4D#- Ā %5{2U!!_@@ Et5) aQ+Lf1 xjy^9~ߏk!+!NWOa0ژ :YӤy YJRu $c_|f~8p갃{ɬlQ@|f&f3]`-<4g(e6d`~|}3',cN5޺ ;źD }6y'^cc-ҵ&&EҴfz}1T)MPW~c7-@J;+L"QԢ@ -] pWx "g20`Q|!r|sa֝'OՠMco>"O3@0afOA00 ,}fO+X}a Ty!cF UFaj-]'M+ߴzP[EC`:?QA&yp,L]VMh5[zvU̓OSKpbH mcmi7G9u̽mo bF_g[B@>Vu$?4 ȹ20IE[gnE(^B"\y#> 5ΒLQ`x;s-eS1|șǘKj|J p8|gY~8ޟ]';8C *DShVP̃9|K/,;@f`GX9-ܔ(6MD@eҵa ZlPŀzx֘2|^  Ab\YK;ҶY!8`MX^l5=5,k9~ n *.0"R/Cis"kᵧNS:X DU$4#Ad2,Z$g=}09X (7O;"jr@} 3V4خa1k\- ȔͥX`Ʋ*Ö%xS>}6܇2RvXJذIxڂ7X3Xa>iPV5Mp*[c?f%K0@yKd%l>=%U WjQmu^ЀtA빘HƔ' 48cP X80U{8yTBPЎ:+Κxj̶qޏ/$s{!VD`/S$+z(6/˜6&X'OƠxKB!;CKz1Q!UYTN]͟vf5U3#Orxa,s2([d ڞnAaJ<v3[o}g!1S<_F٢&>j[TPÇs}[[b_e>("I,ȕPː-b`Îsl=atm|њ>Rrs{ޣ 7VhgAA|Z4M(WZ zpU P\ޢUpYrWk8d醽+bo/l:xǔCE˄4O[+(4DA)ωAb ~oO_H[nS_;p 9Y|+39eE[3͞i72lxb}C^a,ln:C\2jC jĿ1TTn0m / 0T d0oЇ` 0Ԫ3`e;eWhlѿO>)GS,QQBTD-0eߋ FY/U[BTee#bIUCX*3-2b9*xRvO9jϲ i-nC&2F$S Y@w&0(Sz@E܆!d]2Td A:"pJEET "4 +I"CQA 6V iE NŐI _q:¨-&)CM+ }Q0I)LjCVgS }b4Mp" SO^꡺)DUK bz</JU=(>)垕ΪnU 1A`zLI -@m>]_;;;;;?~JBGcuyo-2.1.0/data/pics/ilVogelR.xpm.gz0000644000175000017500000000331707562250351014162 000000000000004=gimp_temp.223455.xpmKo6 ,z`Av@Q9 Z ̐z>sRg?ӳx_}GkzϗϿ*ſG[qw-X|,~7ȿ` TauX-J%W.Y]qካk>?r#Wz{oon V/.vwXmٽjM..H=K=]moz R8;;s>(؇"'71cYz *]`,R cfQACk=+Xɒ}.(Ѡb+HHD1Oȉ6 @j1?@?!owD1oUat s<'R6s8?dzsg5blo[A jߒd Ld L>3F3FlY lܫ3Cu+u,[y>#efotx:^M(?[mJ6diP:$`8:d MR ?0'5hٹjO E d3ovEtmse]>^:!l SGçK?pRg}Q G"kտFҴzʑN~hYj2&u$pDJDnFOK78:3OԴ>ԟAaZ@1L/bK{?,%0~Ku}\?XsKu7'TYЗR_E)0D D`m.gW G&0XO=Nx<у ?Leç3dLdb6Cb\ c=0_Oϝ[41&2AaQ,hya:Ӓ;_aP'fU 3 \z= G(>em Ag_Z'"<ɚ]d?x#cac,;R,? dࢷ$!>ea38g0 1D2B?!LS=MZSs..0-0b^ž8[2cuyo-2.1.0/data/pics/inOrangeNasen1.xpm.gz0000644000175000017500000000343407550521113015241 00000000000000<inOrangeNasen1.xpmAkF qK  {&@C@5^jɻ"0$u<~Ż7ݼ7?}Ͽ _\^0}=\_~qq9|v;n~-?to˗/^Nϟ$d>bYܡl0L"n}"aRj(Q'8ƁQ $ 1fv`ec'`쬃 v" HoB]2LAAXSϡe5' O'+2%z43Aj06ߨ@5 ޮcɹIppyCϽ c؈ݭ?B,?BbXXafZ((ii<@ e;sɼbh M92cl'>Gm=0 fLS3Kː^yve d=(3  Pu!Kcn97$D :no &J$(?h{qپ}XiXU\8fd?ÓaXk%?vay.5m89u{ZCL].>W[$;';8[I ms G[E嚨.ԧQ=E JVK;?*ZڿM66=C@ *[z؉@zyD8R(4r =V ψ! B1 D |r^`ahdAp!"ݸ ԳU!B^i+sYGnzpJ^Q2?,a= Ge*[k.E2tCpـ ) 3 ?-}O. m=ˀr=@pvs++q\qȮ]B3l aދ.c7 A ߑr!?Sbp!-i!bAOb>҃k iY]Yř{GtbT'01| |s@/rwQL}n`>NM #^P\Dõ)0)x6C^W&3G)MAi\!4; ͚0Q8 ZoA %f A{@/Ct92lAsȓ= SRiL@GeZ"$E{b7\m3`PzOqo)_\SP]gF ķ4.Pk vJ!0|4 j)ّ!0T)>*({ңeHߣai^ Rd R C'oSͽE94]y Ħ2@,A7xۿ0 qб}uw@4k! COUp>5KAt˃b*F2c*ꃵ& Ox|?C FBr8`?`+ըiؓC`Gn%T~f0 WU,%f@uuBDžR;k 41 h5>tr-8~_dCRh1lR!, ?>-o/7zBcuyo-2.1.0/data/pics/jsOrangeKetten_5.xpm.gz0000644000175000017500000000255611657534402015614 00000000000000Ko$5WXCxlgZH8"!ZE+ r@BwzUf'Y]/ۯӏ߻_O><뇏>vۿǟqG4qnG/S}4OoxQݿz+x7ci?vEq7PC7q?MEaq*i RԿRX?\vǍ42@<~(_n{]WЌaZr'/$ 'oe $1"-M:9AO! ie g HCCcWe>Ekc$d^m]fĎq Q !k usIx-T!frBb ȓWHY|r#2琝aP\6oa@;G2{HNGެ/HTtX20dAL6)h vu:Of9%6В" 1&-z%Xybz5lj*F9 ᥞ ‡k4Q CCZ'l}1~~qdu+d9hi7+7%d׬|dIٹM0Z%kN6A'١C6)30  9H200*1q%U-(D3Y?-U3r\@*cwAF`^ 1|NK CRN=s$4$ZMwCMf4C[?-Pjl@N9Rt\+naeP3MUctJy2b6 ?*ey*}9&G(|͉E1JpΖ!Nc :Ya`g=b90BEO00f8k@\VTVҸ =5jJEWȚ+/uc B,#P]3SyByx+x!Ia8Ama\b `}g2B'~n\9 ? ^7ƫ 7 gfS'G7& yzyc1$Ac?VFutNⷨǦ2em ?FaH*&E>Lh72Z\ADa!GgzPj] yf&2$ې޾3ߝuJo2 t1]UU~BM|6q%u)/@/7lij~2&Dn,~1xvO*od9:.;uc?ɴFcuyo-2.1.0/data/pics/isDameWeiss.xpm.gz0000644000175000017500000000226407550521115014650 00000000000000}<isDameWeiss.xpmś_o0ş駰& Z` E` Hi u5}}GꝹ:M\}^姫ݍ~[nu}nRW'g|mD=Q~~l_^m6-{v=nmͫM&l Mf}{ts螿t_\a,x%j&R$I*3{NĉDABS4'i' D;{ ̮ a00C[umEDr]}VſoY6 ̐6\[ʽ*EuBknHD|(~t!^ XJ0BݝF4Yt? <0{Uwk8pupupu pu pu pu??4) I c6ݙa C7g݃:::::0ݍKN1}KN0eE,:i'>mH'tɝyf$v?7a뗹ʓ_/?>|sp^\}r퓧zv-?-?y}Ԡ2uSťQ7{Qj%.M KKgm.4qƽ& Vݤ`%%U̥F\60Mbq鈸p gn1 ! ʰ4ăPe2.Mj FR0nۮ[6j׹ѕESFJf6f=Jlk| E&  Z(}* m.PXuq=|_d&0ޠlE|+ ]3gݫS@ (&Qe"䯢68}Sx~'{ ~<`/b/H*5A"= Db?=C3E\$T4}MKx6 <_Mfybr yҀ:)Pmֈ0yX X#VS`*mL\~2Lw m"eկq78IWa)6.hb A#X H<@Ӂcro(mLJ=}\!jX;½6.W#n-c2!c2!c2!c2!c2!c2!c2Aa4J9۷soh$iF_-77_nn˫4>G~.S f~ %}ẊBr|,~ժ8Dk4@\[yEx`R#>-r\>!(N#0qBwq3IVc8"~~3i-IGgU#y_D3jHCgUVg->\9~csÀ$VBX8N l5H_2jg3٥R4[ghAe&!ŀ3qh4hAR|gg<$Mc!M ƒ TxdCQMu߳4G3pGkf)ÉNM zര3 7( { ji VZzm{L34Rdj\ћZlRxgHx3@=!sx=gpb<_i7v 8~w8:%;8 o`c|p>fЯw}O׺4`^kwwwx0۟CmkNY_`chb񮸈o)ٌ{GgPڑ- \0H: n8ꎳ Rө< E2/V 1, br ='b PuMs`<[H~-!4bJ3DQJ>gpνsϰXrfvh&95#\i (<>= &::!g0F/ņ_6v…ƘMFƞ Yd+fOg}yb 1ܹ7;[l]K\8OgSuqu}V}6}1p2@g.p)_.5g-G>|2| w%t'2|9Mw~)ܦI0'~1E_̢(Ro9Cz?Xm6[A#(d#}Kz5 VwݦM=I2 0bP(F4W[*kԊ$S1 *< mEzVeI]M8@c<("tF![Q+mOs荦Rl1 sP'RECZI.cX^E=b߭ɉ3UènM%NnOY^Dz;!VDu''Bo2aenG&,U-YR*GOY=V Ǭb-htv 1mڭxYAW][QK0J0v<0?p(?(J5!JJfϘ駂tD DU-X pU.V8q?Kt&{9;9I0PA ABM\pw= *PB| Y*x)S]\L5NM(>(rmd<{&]c59}9/eXg|[|sOy55Olʏ('|a3JOEx&<=1Z~!JEWFQWcXyP:c9W&bMx VtCVQEN2y/o:*wp虸;AuD]cNnoh=CC74ԡ :NHx!D Lxx {p_$" s~uD L MBE(4:+C hT-Z[ {M#(F#y9d*2c!00DL0RAt Hhd@Y^ 1mPB`Ac`BD "mClune {7;,3QăBPz1=lnǫKQi0Kf,@a[ <6.FDh(a08AM h?&P az _;/lgJDj?VD`0np8<\! ʇ*._b`u,,KjF"e`xxІi\|%\.-! @pg0cByΆFhs`HZu5rC%hD#A"em(A0T6ACRc (,-~f!pqC UE͆n4`F   .7 X?a vY,6ocvAG9Qnc0r_oHd<=jp )7Lg !aHm<43pI13md6֟1O F/6a:Dg, <4 C L駘a:}P, 9 s JF#cO`A 0 JG 5BFo"1 4z&g;u^BоC@z%wa۷@Ǡ4XJp4熜 p=6 ,@ؔ$A,3 j% .*5Uewvbu01gǩ}k{ ԑ +plb7q u_] Ŏ&b6y@mT^-KYNS.?,oVÀ@a6Cf6GRj>fZ?~s [eXqXx0SMd R5b<1>8N挣.jȡt "RZ`(zeb^ Wr6FVS#: f]+C1a53f, Yj/!{U|_kX9hg :v盍1Kh4 %$ aF67kllaƆ! (Cl蹆7 t+l1s &|05K!{k|o 6*Y  㺁:s "CIl C. 5B`xqh4 ԱEp:Klvf3Lg?qޝ8D g_8Xx("" ;CA{b oܐvj#!6 &aduнֳ:I߻Թrc}0Ezg P|<PҠzq 1by@w6?P˥ 톣4dv<Ɏ1k%{*;s{Tl_3ְ7ț?48nw7?4ꨃR/bhCMr5|DL[}ePۉ+1c! >ra@/DTs͆Jp3 0XlcaYRa"<x!=ی+ auqk84r1 ,MA0jk2Q7hJ=C10 Bh`1>0p8`RH8kp!A!PJYWd'8c{ 'XINagAdJP( y@=C =iLhC;O2fg%C6_dz_b H) z>F{qpEgh*\+a]#3D釛 5Ta" qB ;[DHȓ 8p6( qOeY̠S_bJBгM~0'*áEICp` M b~E>̌KSJ)!!v^D8 24^ * "_ 5|oЈu2;`x m a[xwjq)gc؝$0U/1H9,^—R i@ljáb82{aк> IV vFBh Mhv #NYhπK}y0PMhmzC䫅1hm '0ď70 CG|&C.hizw'hf 2tN?|M_>nh rBC;7u - Yt'<0:{QZQ1LӿEѳH t0(XVy,׽Ui5ߕyjY{_fyZ| ـ>sϱ\&zr>,e4aSaEIB>.e5|WܔXoy[!7x>Bn~@K[n:[,Y{,Y}G|B3Sb  yU |eK~ǻͼ9U֕57/-独WϨ@Y~ߗy)mAX4%w^W =Vyx}@T{)e~; G?!>5,˟ٟhe/+˙q7ᅨ?`)2x >EaPoi|RYW;zB>װ^i~яe# I=xZ{AoUDzBjO=JJEk1<A=(y劁+yW* 2l:z-3XߤWuWU=_liINcy ?u / []@NWyS5_xy^E`/ Xχ&zdH=Cmp>maT3 p٪>0b&-:/f 2ܗf;W 2.ƚant~e{涗8jB<_?.55E'c;[Ո>ÜJs dAa*H桡(cw]%> v@ćai#3ۍx,a* G3d9f#TanڥY&䅅}w%9#_VI,`[3mF1oXϤ;fۦhq٪殥a/$/Q~%4 sBi%1 X sG[ٟa)8|wߪefaU[(y*d} s:k0z 6+o5ü2` \kyL+e܇??/^vh ea#0O s:/z8\Gj|0asj3~sr sgAi%wpk~Zmkf!ϣ)"s'EyEj10 _<~ Td7O3ύG  a(_䧕zno]*݃ݨ#^ˎ s 걠 g)8 NA[xn<65ܦU*Xyn,=`KG_>2 g% ߴ3=nfՇǡ~'A1[zܢ>z+xի"==.!3ϩgq gS74 ;CoEx x1xaxՏ97r K{̯?^q>z+yzv?D\_1ް1x>+ۅkk9>1s/_Wmٟ'^sg ed9H OI+w}҉TEGn?*r\?Q'a_Ek~wfHoҸj[Н?"F펦Q[Q<3RRx=_z]=Wwsg9^>4z%^8WԲZ1w/k+ ֏iO=Ə+8KwzMgׯ1ԚJdzDǑ^>c. zh-Q'XN I.rxH&%mcZgoDsDߒ?_Еi)uWHp;8sD$žV_ѱZ~߅}"~O'YioZp1IV$ꏪ_[J}ԏZ\Ԫѹ=C]LݱZ9;dr}u~+'z[B`r ;N~\3f6G/]`C)^x\?5_<^<yN9~D]B/"oֿU8R`=ߤFVNh.>쩿Q~,oꢡ^4ީ~(79U>~O,=Kqo>S_oT5⇪t/}~DwofHr-*\]htO񘰂r(]P]7U()rOr)DgMXE܁'CSۿUnz|GZC\_/iOl"!hn#?&r~}*w՟ Ď Fm gpAߞ&զ~ 0Lyuw@T@ُI'?>hrzN݃/uD T:}y: l:IwL='lI$Ws['zGG7@~`?b;B8?׏ҿSgh D7FBAzvUO1&0,SXpǒC Uϋu?bƻ '.2$yUBrF\e2O>) &!~3qdĐWO J>ISz]dww-Y?\Yzۼ_WN^1 6-v#J;"mUL8 A,QX x1 N$2TUN9˭I';UInվŐ.x!4k;Χ$}x"ӎ=PL/?@NgGa}j'HqCEE3\ .+wѿg*sAX}Yũ_ى7'Wl?+̟$Bsxk*BH?os0- _g0`.7d7_;!j'4ydAV`xav 0ـE֬mIcbHay"\}ʨkw?G1~jXovҲg<rV'1yOtH֋"G_[6cBa>`rPwƄ"*Ye"$94@ñaw'T}s7>xm`XAQK=}{¯0D3Z5{R% d(H/W?fGlRypW?q^@0{ގ/?Pbf4,Q^`2 }pNU@2wѭC8Jxa:[H1u.?=`y1)c?B!"*k5;h 8as]6~< xobJ'؝؜RJ`~Ky-~1 pQ +N:bNC6cj%(D32gm7s:6 govR5m?UGOd.Xbkw<u3s/kJ㟣g4~Q Y) B+f} C#>ő牄KO poUJ EC__2Ai|+,aȬƐwbfq2 ʊUsȹ]F}^8B5,e`@_}WK[֟d CAr C2 )?!DCRCg!5/?C.Pva0$_ 44hI2k?>;:!d'9f:÷`߆>zA_d ϔQ}Whwk?o0Ĝ LhQ~YoNψ U`0$Wqf M^ArK/!S%(#x"- ( hO5 l2ybP6ÒׇHt_WBrzNX&S]sb92deB+bW_.E6\*O{!FBdV`XtďB{_˷X_V~dk,I|Ā.y\uq0o3 Sdg18/v @,Ó7uwQo P} ~CGk?+0ɋ5'R<~yY ,ػIw-R4ɭDf xNK1@'@O#*|hHGG9Fu,V`ZÑj~ѱ͑Zpր\Omnr {Yipov\*;y`?Wa .~7۬!6lvC_9G! |%OKKκPcX﫬?Br qvc;?n-XAۨKCa L%/ޒД-}EdIs1+!#0*\qW!kW`oOWӯ`O+_@Wl 7wE__Kk]U_W )Z-D1.s,6=R` ZjGMR/$4ܲ*A nc[h);{=Bɫ;kKof硸J.Z(A:Ppr "H@-X~Ӯ': ~R~1kfpvOBW_>5"*/s4TY4|?ISoJfksD׺i020  OYK/?ڧʪ)HgY|jUb7كǯ #"*ׯlY~ %Cr9EQQW/n_XIpA`OX4~$fusrYMԶ:AJoDˣ2];0; Jzi> ;ѩ^cz791ZVS]I4~*?L5$_Ro#M5>SG0YGUɓ@};Js-P5՟fc?|O',iIG<Ԓqۏ} bؑ ὰ[;Pb/~-4~@i} u#?BW޾|n]~{ ~{LosW`@?TտSA~58bgG}Q_R7 ! D PNw;]͇[O rd/h[ {cc?j hC٪=>i4]=xT_3\4о/ee"Hh~aή<}?u2\C$qFV{ ga+˃Ip-D)e`cQ4k%h@:~FߕE U8zL@K!ȫbm?+5 A%W|N%u>Л//k w, Kx{Y !n zL'1%z=T_r P[}g5 ~Z_sCa/밑;k}HGK}XiGRQv9Ǒ+,h2X/Q{d.E3x6+I?߈g8W$'DEXL ,[Ilɝg4|5태3UgM_?<[~SLOƿw6KĄp*!(|kS<ސM'򫜗]$rwnqWqWMyt!i_4.XcB7 o?_N~NNZoS9ϊ%ϦKOگ/^A;^PּT6S?7;+$燪Lb}Pjq=R~h/_ =K%9lDt(+.rٗghAö.CTUc%-0'jBU*D_`>%C1{ьg5ZcY__[CB,kza?^̺(RpϏ'#ZEΪ?ї+/$ ~Q{vf"?PdBXk:pBvQr^M9ylE{{8rPa2':4b4_Br ZHJv!2y约z(i8Ϣ\_ 0~bۯ-X̂M*Vs5=?Wk#y VE[qAo`7DInh9-DhtXss}o SoeE`@ [^H"}y6DCXb͒j7y+Lp*'9W0`gO%_`-o?۾. 4S@q*l+"bqv +x6X TAkYOD G咭e:BwUM`}Gd'~˦C(%f2u>g9(0#tislrq89~˿ _^IChVA2f0"v$g+Pe'こ5 pc~?Vף7D(&mŐĂŹPuii$@+LI;i!/wkO@+[ ĻxS|Ed/~<+."X3DUPDČòAw\.J?o̰ME{~S}StC߯-1iҰ"*؏AMpP">v2XO$s [C2'ZoIJĸ+_oH}ъcOVK{ì^y韎%vfBYK/A+A31}E] ~%xɱxxm[4q'u0?x(BڥXbzb핎>fĴfx|1>E1!O8< :k0IXI -y#_rD \IUȥUr#^R ~Y޾X ♄׉j>۬|OIe 1-}nC~E ˼+x1~1#bC9>aȕSe~&Px4G X:k'wih/!A:i?!:BߺnQb:6fƒh&ug rא緯c/'_Qa|>Y}8ſV~Sbe?ghک!EHcs18GG4uA_(S4j}LC.Oc=ǻDuxbA otp%N4AQE yϿXƏǿڟ[*/l]*H^H3{IUE\y پF]c]a5};1DG/ȹ5,Ul_o7\C4$!i 57j_0gM0$o[q'V7og"/r<﫵/;Jb{+O*:#v 12޽ i^έw'`șMe/ش]`{щAh I y'd5!VVlr'8n^r_ A~!Ca bٺ<23NH-xX2>$Cr?~歠Bo_[}~S!-ѕ`s_}A:* !f uî &O[0߰.!.yy,3A/da B%~*Ik'q!7=_obH3 w}y؇a'k(}oBԝ`;C IxK-wx":njD5 IH Ȕ(09kxXg^dW0o;|"C]Y:,Y9W~H`*!YFSc~c^L hUb,6l1vg-W7Gv=j훱H||}kÙL덌1d)!}& Zv^BGb ZAl?Y79_?>ǐ)8(eY&`Ȃ")IƐ*V+#{/Ő4K/C _Wao0\FFfNzAh-I8F=sD4jrdD_ _i;^tX+woB< )@0V`Wɩ~;'u?A2/O= O5eOddd)!MRsk` CY2!~Ck Y9<"3^nKxDЋ9wlX8F36 {g7rX+ChV_7͜mvK_䭡W"g?2Gkƥ볐{" GVpF[(3*6 ՜a 5Yb}"ἤ?ty׾1F"+̽nWoK>L#>x#(c:+\}ak?1*V=X#o:ar;O`Yd+ Mٲ%OD:>R} Y U?߿H.oXvrmS|.Q i-k]SՌnjX:<}whBq7׽x'o5ĦU}&79_O8yUUc ~e4mBTþk y 4lE"NTg"S  {;):T!!+?wEG(&Ծ}/Jɳ1+Ck- M^ jxZΰ8B5CXԾƑR}~H5N`Ͻ݌<1B}/yd:R=lp\L`MA]*>1' 8""U~K0kz e$5䐇" %2r~sGwԚڱ=^s{8M=7,D߭< zW@} N_+9kT~Aǿߥ4叴,,+ :L{#?(X>)ו , ~Rz3sFVC'%笟OJJF}dJ8U?p{@>n-h{;mDH$%Q*k?韁eU(b-Q=Iq : HQCܺ XCZrW0Ay78WS?H`vv|Db}y4dWi$Q~+?g׏ŏ3g_sBlAbh6Ɋ*b?ԋ$v$t[c4}W־%!&;>GO`0迵62"wr_~tpEPl Ӓ^9sL~}ǚ~9(iQ`HϞ뿏z ɭ( Bd@ G9Vpy3 JG}ؿT̫|87KN @t/NJ~Mu>oVDLiJ`\"K> yC~9~e#AJ^[$w0{7kFu&돿Iw ȓܚ-tV ;g]WC5,8OH٠?g[#Cg!h[k͛ܖq3I(31PMȽ<~KJъQKF<19.g !}R ?Mo lѯ;1[ `HgI17"I :R Ջj-ɼVӇU<ױ+?J!|$I^3&A [?/_ D9^E ?V Q<^X1䢜#IL!w_ Kָ]#hPUقU|d\?0(6SWhC;wφ+pT%򒼮7Ų^>IpU? NtHScHUz-ljyɮD"$35??>$[?4} Õ;lZoG$2X&KgסIwq;G迴%#!~T*G\ EސlUʄ炝+X+Ҷo}9*Ojt EG3Qo|}ߏw3ث=I99WkO6$L-})1w+>({ G?H3XwynP$ 9E"p~؎tuI-_sC#rnw=HgM˻]mm :з}pu%_!R&0)e|fF+~ԑ/iZʚ ~FCK}UbDRpO +7?X_(Qn4:Ał}?^~ΙF<9by|9^|x&Bu!xarGWj2٧+n9BY"OЃOXr vcwh]T(]գ scغhMW}z׈"Hu(+" UaX0Yb/"I~*}r:R+YaeufүdߐZv;ЪlS$.oEsۆ]qx2vjw^JDe|HW!<+5 zDx!7(y_7~<)6 isĥHnyrc\t 0ƢE䈀H;QݸX7¯j>8DP N0@svg#:fhvȗA}] n:#WqKASAőr}ǮϪk;ru*>P,MnBtMd}bJ⻬$V/VT^js;"kڏƿgbHoP< 6MD+V—q9olrɚ"2M9,1_#^Zrw%Q(V0=B{,XVP$h? Gf7~+*m?DWrX"@[&L}ʟKbDw=sQ@ybYS{rLKA%3U)r*mmeo-J~1`$aȥ˶<,W:pbd8dA\#=bF,eu[+pQ$kg! M1^ǻѲ''*9xDEO+E^՝dmknWQa&&0bI11Xjx¿HŒ뉀~\)d?Zۏ1iM|bWHqAShAi 9Rx$ ʜL[g+[gsy#K@˙p&2.5|bASM}75[W Lsl2} ض(eS52L+ÀlPUioC,,EeP?I.*[9 17X~_ |=T%z0"/!a &1;b C EjFm$y7D؏ňPZnj#I(#uTZP AXL!`A iP 7ִ(vz".8ٺ~ŘK}N?-m+kNn [ X! mOۄ!WODcH3gcoabB \Qy10A1;WCE+nne bH/Bm-{q")"-ZE{\ lzVvTu7H3a\/"LU\}"'~Nw巿Ngf, E76V[ zxPmX>.Ӈ=Xďg yd$kVpţ ߭Đar}DGU@cq]UV <."/Uc!Rmx"!JƟPxlaYD=\>`H0Őz_"K2o5xo䍌'Ji?ı#V!?۟TU<Yq2M/8^"Ÿ q%h=o뺏S$gAP @W+ۧE|1P.p=f#?C`>XE?L6`v5-c-֞L8x]($v. lEC&Ɋwy!ˆgux 6#e"l!ο!i9U,F3 hO&n#<Ii!OYw29"%fX /OX Ov}C0~䷏ C`.` eqG/!5Gպo0$io4ɸ~H%GOvS8Avx" Cl4C'Y /_x۳Bmo<ѡ ! ֊mC_h`g(LgFp&Xngle1E,X< FkH0čf{!?ENaCƏ{Ch곈1ۃ5!OVA'Xƒh&~5Uq/~D A9Ǟ~Ӂ<_x?6| +b1 }Ѿ䬾ͻXS! C.3l=)uP$!yy0U+Kl>\=Q8d|j#ɝsPWwrXs_e0h > iSxѯjoi kX92^H)³UU]c:ͳC!*mI_iڑ׋aHx!/?0vNC،'5`>OaHVFJ{982gY  I67i MaAʧ(! ս_b+R cZ+T l360T-731dZADwa{!i}<}K2OUÙ_F6aH$z!+LuMU!ڕe]w2 Hg9D1)bx~^ ju>nV"@Bm} 1a~!^Sz"A) E8jݜ-!9Hg#8iwb>X@?k]BPgh1:OѹO+s?#R2b]b,ϺLC&a1lΟ˳rC<~Ȗ{i'LT}?Iw<0_('Őbg482)đO~҂Pz!*_Oʼn\O0Q  k QQ9fJpl`CuE]jX!0! C] QIx!* `SHT0V; 'eW,gc} X`i_V)]j^.7p=~*#y2rfb/9/DBDTcE۱1+ F?MHcVx#֢| i&R`? j-xq`g r[AW:T:!N+OWNle!ME14+k3d|42ݟxoىLP$a r= 1dÐE(fAo|ݜ`~G#! q߰X8dΈqHۀ^-vgAM2/1r1D om!A yĐ*"MD<0ٯ?EH8( `H1agMkx 8Osr0ķ|dd캰}A#_^2Fa^f| Ga6\^! ڃi(3! n,yuM p$;KH< ϊ1g d4WON$aH~0Slg"[Z'PdLDEP*S Y$ߎX9랲R3XG0?S]'FWqq?ٛ9!](b|)w{.FّFZrdoewB5qWye@aAo^ ȹc58-SF Tk=2gv;(Z|oC[!Eb_"o—{.&vY;>^] WMNs2U(;dpxL7Ä"w1~mAKʾsP$^9!;.rxx CpٚUio1^lNdOBtc0d۶fl'>u3#SZ% mnR72eQv'Oj!f*A}{*?QÏb|@Q,|<-Adr<et6&į뢈l5LgYw0/<ۣ%--_}AUd?IY )lPM&sgp[WKWPnOZkIhXpLSsND_@ld}u't"$A|ձȆ\iqǶ RvN rC PBkɫ)ѯX v D}e drU ޚ,xZ ab@?:iۍi@ȚxԞx:|߈21Īc0_asr݃^-OQENJt,j_pNBUtnux&oˬCo]eO[aݼSHU}J[&oZTAⶏ'<.[;"/ w1*1w?(odZ߼9vK-A1&Y9ctW 7g$#"_SrζLP/̯bD֚~( _dYʸ7XY<5]4V.Ek[,kS6l?VjAh}"bO_|=eb?5NjHǽ EF}|:o~Gt{A]Iu}{F|6~w1,A0,UBȔúG?J|`򃪀F!@o -K Ž N۴ gȑWGSxV/ qDuߍ5D!x~ e+%99(R4]u,9ֲڏα{{Ϟ?m? Gt>H$XQ5"2߾g >Ȯoˇ0'Bc@nGK5>iőXɱ_8RQԠ}~I{Z22Οg_@ڗq/Bx sY`O/c_.e fN#b;yjUS? `{;Du-m 6vRn p e_(kyr}~ rbOA).Db?ߋhF=TYȬFY@,_9ͩ+!PK7\%~H{v$eGȽ܋DKEr^aLJxiC(h͠o|ƃY}"rO5>< ?ZQzTӷQJej;qS|[+e8H >)a˼ϗ"u ,r3\ư+[K t{+RQC i>D_ٌ>M TT5A'QR\ qd]p֚EjSDDȭE+];tXWA8X߰MTtTT>X9U/;2ij-a6K"ʪs^,etG{3.Ɍ(uZ"= @]d&1L@$lj]0/iIv-;zBs5~!S;x-5ͨPYyo0]r$/ay7Uj2;#~5Ղ߉{#M5lVɌ~U<1^ >2iB *dE>jb ُށ>~vGqlr++(l))ɬ{qhD6P\PdFHXᛀ#?>!{MVBEnAAI^Z4yõ|=]KTǏ<[Ѷ !MHuc\Y-5ܳR"oWS?.z,5)@_b[ ,}w̩JS-@ 7c?P]fU&{n6 6"2JREr *U#$O`V3Q#Vp='`AbfsW%#?8{ @$#򑼃 xr ;H)ǓH"8۠זEU28 =pT9??(rhvQȪDz d?r0Q0Y$("ׂ.9 d{lAvAҾQ_ZKGNpTX裋$dIs۠?'g|멡J+pC$"cYE;W8BX?X!ҳQu&Gؤ\iǏ D5Ul`4)c~_~̕_<:ך<"$yBL\!}˕c:f=\d?Cbib" ]2:=b$`7sD/\AU%#p6>3ͻ͝YGm3ׄ_; 8}=,u<gw80X,QVQvf?͸PMS!R&0)e *yVgk_Rrʗ5?~[{KZ6f' 3G'Rv[ sBOρ4;@E3{th_ xC)X9gL3A~cs3eY۲QL=S{!Ǣ˚]NGmUFՙ v Z_;䭈T[*YG U|&gsޏl2V>SHLh;^F*e7eWU"d( zl3]W_I':CkUEПhNtvpt)@Oz>p7@ghfU;ݖwݬwx7G I>ꯀP4 S=G2)3dTϮχ%$z`'yֵl%rx-⃸`Ca'>bc/QG`S8L^}:(2\OeĆP?< oߙrI`˿߷?Dh42'![f#|B;PBI _#5(bE CI2\wkK~{"b^:x\^RyL@,v0:wk[|M $<}h늶}\{ bV|%Z#`$TQlS|i 2͟lW^e^@鬗pUI7nE^^f9gTXiADs(r;g-"GPH#{op6eȷ!y#FE(*Ax|vp%'QMlj1͒ysV3k%L?`o*o5szImE1t,VY !6۾B?q Z^\{5U'_[>=,3VEPdS2?tE_UE@,z y3ҷT6Dxo'g*5Lte+g_jOÄ$ y㟰0*|q}u^ P99;K6G0o ](3Ѥ* ;16tY^"y>Hoc}~늚1I`|"l5?`5}hnI@nUm Dd>uF:ZGw(/D>JIom3jv!9#ĵ6DRܾfsE#e{Kq (b=׋.NBXDLֱEMbٍ!K@ȯoccXz/oioqqDs,H=ݾG>&n4/ϠD{to_<'P/ T wb0#[2Y䋰EfpKϩ|h &5cEWo{_kAh;GOGcSްn(E'qEsSZa>wAl)3y26k,k PX'Q6FBb~_ˠ@V?T#ڇjf'wn-?89TUfb)"\})NE\s@2r㋸&Zfl(y k1].E1$(L *n.'2ûȓgkQ//[n-/޵4!S~XUZl;qev-8`5 q[qv܎{KjTl/I9toǻ(jҪx`5mCŗ>lb+3qd']D,côGVA/Uhfa*x"'r_<9/|բh&O /=W!PkPe33~;2@՘0ih>'b5 1s8+:WU\]֓⋀ |::ESpyR=}l5h!C&,ZozӐw6(B9CҼ fG4xz!> 1+ލ@lOCy{Kь>>nEhfrN_Y y: {V873e$!ៈb<Ž}A)8 ӳD.DlpQЯ!|:WDj`H굟\?m`TC2g Q:M5q܋ Ǯ~ CTvX<3̯,\Y?$}7s8~\b\`n. w1q, %X={J| ҹL0}N9y+؋c'TA%Le1kCDl0dc}%zIa<cfD~VlL秋 n?oW:~y!Avm?5B>0$"z+WI`g:v3̚88X HhGc"Fh8bx3JE)ߞ*U7ŝ sjw)Prp0DJhh_W& g61$ l$ވ9S)ĐdCA3:CҙJy7,MCa*_ 1d_1$dCb aȂ"PUj@X3UN<03"HCzuw0 Ȉhn̙ŐF 3[qZz.׳;3&f0E 0*8Je ػ]/>~  a滻~[@E!.oC/*#-qWa] ;X!3T~`;sڰCnد:Q"DG$gMÑ=!|`{FoM4:3iÐ}{gqѐ%o i =PjQolanGC:a IHnd_|bӹ}mNCwމ=KcHk|% !/ xw<1{rn5! F $,( Ir̎C 9WidѾH1/v jCn"&os(>sL4s# M!HS~72=磈sR>a~EwdCaAwzH ?#k7nj0Gqk[N؟F> ! uO63Gχi?\U1x7)a"$g\w %ŦbC^⽼ܦڗړ'EO8\$f w}B 8oΤiHw A@Roھ(1Dpy!Wk3C$InEYm o=a?`b zkOuF8AK!O4z"w"\+ZFgj;'I;Ì>NɱdNaf1Q E:szWsMFSKe.Ǔy3"H?)a (+JUA$M5%@syኪ>$|Jj!&8b2_4Ou(08beZK As\ZK+ > 1oid?UPq{F%+~ WTM?9 ?#\QO,!LVCU1aӄ#I Aӕk!hKaoH88$dk!emLT,wAfX,kX3D@N&\ Yx"A iP^-D 6 o k2݇y"j2ۚ$TqTN$t]f#TwرIXOjd/,G_a|]{ZMfsuTW+_lU7?Vu!FTĀ"cT! odC4@k2N3bn=—M<#0w->KSsCf!*qK Z$x~~ C !ڈ"($/Sh^V =H7H80X,*)㆐E4k| ?J!EP$#ȍ?#ьPsx6 1@e{07D~D$:ʹ!zQ|x'uLqCR ήF#dz" yJ4Lkpikp8U|2*pT #}qDAN$3&U=$HFo]HٍJUc"O5;qI*{8H_AU%q߳ۚw6"ʦpT 0GU~;*C Q h0by\@q`nUJlߞ#9+s]>|8WfSzA, ؏*b.f\mCUb l{U/&Kf`1qel]ohOʄSR4fzT_Gks#0?2#ģ'8؄]lC|0rF"`(ۋ.mzq3G(8oM3="~F4a]Ww,q&(jwugc|y]˖Xey }3sik}f_Q3=M3=XSNi 2&E]|%=lT]d3|]聞FX7ч&`s5&5_Gl9wx&4&D {>@z_iFċdXn>hihů6†Hݢտj镉 wK0~+ JwcBX^GݶʶXtݜ3ռWdAN*߭Zj|?--|E$7~^KbU%~هw tو dӇ>V碗cwwϢ8Uj/ (ulYm/csEߟ10lK:R+|_SނU~SE=&K4\9NIE s}c|х9N{AwMXhWkh s|9v9ű.{P'y*e|߯7uŅϰz/Y[a.ra3 EYPڿ?;ntTmoGDoXw~mޕ> P*bO@7DhS |yH^Ls@duɕ]Q~MEʏ<'N)}=PmZ8΢HnWu^Y5# $ &zy{'U(fEs(/lB ̑/[](Ѧ#z < O y2Wأ7aRZ00d)A[G<< }O#pUjߩAbG|p(Ls ]^m5Hs5^/fO$.`0{t5>8CR{2Ug)iXT5 fk ֐'FyDf#]PU~. ^ЧƼMA}X~^35pOB8RKǒӆ)!$et/6>a{ =Jbqرx3? u@Kcupk?K|gгf01E3:}틏cҼ"}[ qC_ޭZc Q[  "NLJ 0FZW<Ͳ6 ?<xrɩH,(0dW^-,k4z8r_Ei}S r+ 30`FC/zT-32(%F[N(G|V܋+X/VQհF[i}ccmJUpM32x+X\ ;n0$.wO#H^u/<Ց{WcDg%CFWvҊ̈c@-:eMtGmra733}wFcQٔEDNMq"_t1|x|A6Tbqj6,W&QhB uMj\- *z~y5P$UH_B/b&pqKTT 1̶|vd'8ڃg{D|%4ߌ&;(@e,EYASgCx"-^(-yFR{@b0䓘 Vi˫Xa79ӵ}.v[cȥ p$10KE3ILn I 7b}=(N4#CKSO!"z"/䕼sѡ\YE)}ÍBNZꯪZ|Ev8x"7A~x(r_~'!;UhOP@=V֯V~8 ]lKCV%&;Eݧ~KyS"oo {hiD3b&fXӶz$߆_sTm 8Al럴;7Et2V!@dD^0${蓆#)yPĎÑtaAk/?:;H&C:9*vr0з$a*ASp58HX~Y A–NC4T#6vB[juV#{J!;r*%oV'WqΞΗd[} XoQVx"<ֲ% y@<5]B k Yc%AV͜+&lT+bu2(t?c6t!i\ڞhyC-dQ" C _1 J]>y] "[~#<?WĐUG~C ;p<b}Wڶ]_.[ƺ”]~5KMbQ2y!AH߱;pr&UxYIdDĉo0ĽO(au[[~ B[up Qg@3ߟClEk|Vp'16-r$y $0qڳt!͌Ɛ>j8!Ȭflt"B v1D1d?N^?kA I? I 㿚7k0$8q0*]Xu//ߦ;E#6n!lv aS~!OTaLSJ!H ^W٥ hG_.PP ? ~ lTo}؄;dž֏0}{&⎡;֧V?bbC< qq#E,I AZAX&;oX{.[g'k{r*rw}C j';VLkÔ9ƐI4&HC/DJ$L.~H]i \_S؉1Kg_hXWE~s\!+3BpJ<+R}Z<_H&n= Őv:~^)/Azw>KEN#& ܐ?d1bM"_c>]3#_i^0$Զ#{UArQ勸w}q@Y7_g 4\XCF296A:?t|cŖs-ELnLt O?E.ND/$.Ɛd܅_T6 "[A4ѱCuvA-dp$ k߼њ?L`/#&"C ȴO9fLLYi!H@I^H$kގ#=c;`SQ3;?W;̆:3u]G^_ G$8}6 k@Յ4;6Ug A ~ѷE1"2:d O1!oσ(R~.͍npD(Y9ˀ"/y^~5r.|; 8~zI[{05~q[W-!%o:';#> ⽚ZqJf)k$uЊ KF=Kg;0~YpgjfCnA8, 18\xP^Gc21d|0Zf3$#㷕X8|+hx82SKWhCs꿕)Ath+sd68D " l@ "n,X$ Uy]=yO\}k뚙Z Ȍ7Ny ?j)[!|dԲc+qm߫mxi,݊vɫZ|&U6(W8g74Z/<&*J?-Uiʔ~?ry@0dHBLp1`=GtQi"X q+ Nb236 ]׀(hϜWY+k!WxI_*/?(2}U/I}7#<d&}}۷(O o vc.~&*$M;WfR RM3Я`H yп{cY6vUIvA8h2MY_H! ƌ'!k2}F6< -YIMd3B)~ʈjd毆wVOXSy!j29\V_Ud8sR~*D?aCQv}E_#m>EDs_AI4a߆pCq5Kͤ=n3$*7\ܤ1"7zIRqmu(IIvnPPDϣ䀼Đ!"UGcGH"e{TW 7>o>)#|u)T8˰CT@_W#IoKߣ_Q'y\kz+WȗPAߵMSI_s3_i^EG_Jb{OvQB 2Dn%naF2>Vc((V.sT!CG WoԎ^.&;ŨGOSU`֣х:S 9x 9(mpTm*v*%\+&v8>Cd눣ŃOKo(u\Q^h)^yD(pT-Y%KHP'YѬZbRzWsT韂\$Ɨ0Hr|hn]=LS>5zLVQ]lC`, x%5 :Eq,ƙZo@Ts |KeHw+洠g7re깟dremKh1'\Qgu.7r 뵹2i%Ϗo5_;l:cnɏFX́8ȹ<?0rͪGbnv~ ۧ>tY`ܥ9:~F؃;w~?{Jzu?s|2wәOhU.O?)O?y2Ɨ_ItvtK/)JH>=N}ɇmK|3av3-cusDŲ-3:uG3?tC:˨36HfgroS4UGF2ǣoD_S!;y&gR쏖;=Lޙ XcFK8zbkUK@-^dKg|QwR}\ndEt[|.jK#~?-/8i@%ya3Qyw]\gau~ FuW'l%3 a'-!dn!䵕M6wU!vA@"zvOl #Oʭ Rn1G5wkJj-1F/Z#gTK,u߽%Y26ǣ ':Q]T_ǕEUtQ&}qFk~jzWߌ1(c۟g X9XbФO#mG'nJd9(LQ;π!3ȐASz r\/ w; M/V~m>{#{ \'l?ĺ^ ,u9RrQ0 9>N=*?~̗)iSyeP!9{s 쁔)(8Xm(j* J7A2 ߭QA q\I}\YÊ٬~}Iqv~avl97$/b}D^;(>'Wן1=[|Saxea} ?QgͰj!F-9HkJދ"$}o\cU FSMǘKrxQdI~o߿frjqGTLhMiq_-(U ?J&v.!v赏b av{BbD=VU,b_h1dd*B73"SWl퟉Q8R~#c7`3sݔ}c͏cX{ ; P<::pzB֧ĆfoA(24 4Y5FfCEn9c|h7cI]SM<te# T "~ڃEfN Z@{ڥ,+znQHƣ8kS@&5FŌf&~|0 o.`6m P @zοB/?Y ~Q-oi:#ߊ?y&)X?~Rl3zEvW}mHr?|?!cĎ ?%R7φ.a"^*y(BRa} <ECcVZ1 @1-À#O]u1ͽR}fD>5/Os߮XW&,9!B8P :g{Տϱ 8q,Fź k9qfe" Vs,4(rOC<'@J zfXDv!Bvny"Y&Aۄ|E7^ҾF JwMNI&2k(Oq~/~|5[-x*- r<^G;Ƭ?W_ `v?V6~N "][R^Xr _~5GhKӡE@ab\m9*Da, kؼ:)+@)7rj_ HZp4MyDh[_r#Oyj( \ ;(O7A,!z 1Q+!#D2LoT=Eɶ A?_e-LDx/7z(Y]G{"чvȿ'(}f/uDI\~i?^SjWYu- 8(H: 'H푽^-AKGzÑȬB@P-ڶa ϩb׾ȩ~E2T?MՊqi9VC㟝Y|źZvx72#lQ=A:g"M|CΟ:iTv>mʊ_Yvj"}Eq盍a-aHQ:Q2QWB>FNed|˯v*a\ %y-ޒ'|"/p$w;Տ]Yx^x!+!C+?XmGxfAޤkx(XV W!隴kyx&[S8B?w%o@s2bk]\Gv81䑇"K?[T.kEC<׀׈"'TB y}b@Fr-/8j/db]U,k:p.lVbaP  VeI C(Rc_q̇@]L^0~--u3͕"i29aKn0ECU_ԾBE2!/~Ab9wMTŗ YLvXw16ϧ6ߎ1d,~ۚ/QC~>xfE_Ӂq5  CRHD?|#6ms_o_4W) P11/SZ~O`ʳxFcHI^ť ŲaT!b&8^7כAt( E^ !k[2+>"+TUkP~X/G!iy]2K'"SKa!fkd ۛD6wOEBdWPx8ic__cH\ʯ g'<<!$u+M[ 94ŕ_s0$92AB:iW3Iq-T4DW)h"]jhFߊƐԭ ԥ_02k(9r4=֥Jc{+||3R{]s+nfHX->s]Q73o< q{y #FCx:Y?g 0bj[Y8gb< J͌aU]=^r\W"3?~H`A4;QKl]o걈͠`b)D˷)H!H &H9eDc4W?^VC0胀(3N׏߾ˏFNϺ#/Ig0+H2\!d厁ʎwmɥh Wk$!IvJfc~C'B1f9['{^de' Uᔥ!Cgr̔k~z11$O+c{"F&" !A?*w'a?O߼Fch1!bea"%'g$B2>_M"xIC&0$#$ZVnCUټvO2U 1wXic7(r{ R ;Y!%=" as."&!ihjzk=71D2-'`~@"!y ^6ϻh_TZ?~ݮ"yg@?cF;)?/1d0u#p1S;1+z 92by_Őy>%Fw75;oC4W)Q1,g]AYgA9٦WMdF!f+-87S~2#AjwWQhT0WWycݲB!/ okh?4t$G3 `C"Swi_Ш[_ wkyv'ó%帅(A\wqǶ,||~Zs ۇ./PBb1$yuG.߽WE;4 /8qc"`PYៈkf>,oսJr}o =~/Ev`Tv.!9"ۢ0$O(}_P%@@-C8 Sgaz1Ģhm"b<,$x[^^Hݙy!m?MwȦ:j.z3w2baLK':U4ڿe}$7 Y/D2Zΰ8+"c;ү`B " 4@T/OV%mx3G: {;e'roעHYrOwr3Hڂ=063E< $5aX[@>)J<2^/N*^g!yo9ɌbߥOSHK!a<`]o 7:aл!߮ǣ׽=aLq߶a0?SwA~FD38, vL\3ZI*")B *^Xf" ~B7~eU?GOw<I}+"m 0E9{ǣrϼ'fEki* "|R1~5Li>YE,d*KE~|[܊8uGˊk%(YLQDv~DSQ? h$Bow_lF:;~+X؎1W XH#Hl#J ~(! EPP鷃 SHXT/fؼh,3#Q F[IgeuZ !,O+e0~֏m3?S"tuj,KA F"#Y%0ͯA(rΟs 9yF("H|_TKQL+B kj~S~z[V OcU=ļ/hP;{0z DȲ'& eY-?XA'"8f'4||"?aUWtJLE5w؞E?~+湷HBwX iY1Ht go/PͿB(YxB$_OJ  }1Ȝy~E@dF*?[ ~epDUdn—cs}bMͭ"H∊*4͠S,uT5f15GM DUbMfu.OMMڷ5Ak-^mx GT=<+8F)TKD}?$M$tsvGD)3|ɯɼΧ~ʓIopk*$*iZ? T1dbT< ~ϴ{A>}Q(PMg"٨RhPXAO,8~"GLѕ!nCWs.. )冘d{X{cWARn㫤ByenZ=c;ۚlw~+_d/ 녠WqU6ŠZѕ|'[HG1(^* ~@ wG*ÏnEdH;Tv`K#i,yWaPc+C }R"z}zIx>xN>DqD6b/WX[↘ث =oU-~8?P@ <<;dAɱӌcK_WoE'#>GUHrqTU{̂w}ǥQñ݁F;89ǚ xO +:o V(E9GO9=$ٮ1ţ腇# Kr4 ʏOĸ ?D1o6WWU*+_?ZNaRg1Z=#0S 2\4E\ca vYl`7?-vK{t ObͨÕ9 E;$W&X z$gUE'j5'XybKNk&EGNa/"W:cHpŕzI_>ހhjQl~@@/Y+^G. h)W ZK89)8YfJN?J9~8s៝p~7&Ύ>~ uWEowOOIÐOC0Ѿ y7|m CDcQ)|bo*`fPbiHZH,:}3M;2ΙH; WKg3-H3!}|g"JWI}1u¬qWLyS|g ]UqG+Չ?G?!|‘vF-lďe%!Is1ľ]^ջŸ~Ex&g߾[FU ?$WN@4C_bV4?D{v@(Zhˢ!;(b^e'v bW,-o"V0L_vEEwqydPz"=Ɏd8ZOE^Gz緯D`z>F }lG, +T8:_6~[Lbhg 52,tѭbTsŭ8U<Q=[ X]#}SJ@`}Ǫ,KȜőK0D@Q+Xh<& ]G!T~7=` @>x>fN@Gd,K߈y5w_~+8Lqnn E-剃Q7P* (+"UDf'Ƞ D-9+^(XA/ ˷ќ ~Г*N>^HJ_[˾?;^,(Rgk:F'82Adji4s4gxF<Zt(m-BqX5[~ϩ!YWgd`;է^mQ/8z]`fX~L,'b=s"oߥ0D e9_Y y: 1FAl$cb#3$3ayRؾ暜{RaH "@z/ ^~-l9k7U(LC{A@q>8 o2fU-y.υ  &c 6![@(ҫGa9о3s(KkkG#X#hk C(V]ffi*t+D2E7ʀlC1(=0dC5fvo9 13GkEEb[:hC(u}Ë@ETLH9Z )o@U!A"F84`5?kT,SN)V2sH{=2֙@FzmOSI0 ҼQ8b^~,x8Nlm8ߖE/8rI!PB}}*)ɶOw}ѺF̰F]E"*XN_.w9fA PWg6 b0s̜bHXi]لXf B*6(_Wa[AndQD;;ZDŽEA *M}  >j6e*cpTo$bQ$o WV~?d_:=XŊ1w*̝=)Y¯XWwCyM8Ҳ8~`ds`eDMsBn!4ՔmG ߵs ʹ!H2HhūƿxG 7DPd"(2r/=JT)X%}[hߺQLe!,DY_ EP$yæUE}D#=A#V VuWڷ alA\7b@nͨ7]]Tm7B()^U{X/I*8r9ScU|rDTĔ#_g]4 #\J܁7182ȇ!~9W(Tj' HyClG@i!o#*?qꫬ/e^b:U^A0QRSGܫ_qT{l圜9{ 9stóiKtGqtQſo:G)utFmhT4\}mT5.̕ vx$_' \|zCU+ q<!хEp5EzKt LClN/?"Dy _K s$3PcѨU2/g\ĕ H CRsU$L>* ۃd]ԙ?~$]MW"yrkreڟ9 s vc%:U3m9Qr|}1禖Egrr>7`pf: ͗=c)g?ׇ??ҩ~ǜRMa?'!Rl-G:E۔݁RLy>]ߠv< ;jKG"Nbo鈠XLs?ja'rZotd?oE;na;by~gX眩&g*ZI 9ϗ^E15'r7ꦗn XF<ʇ}/B<ѨվF [w"0$uw'2:''.^3͔>?/br-0ڏ([u;;Z/!oG a߻$>O[Q,3eOPu=<c/h"N{|@Hdr? #~97pj38(kFA/cIQ^_Wo9v6~ChicW(Ww Cyb-9 7yNFݪ?,1D#??<`np_&`NF2t+,P 7<dP3Fh- )YY٤х ˜kx~9##Bϱ*'A_L^ŲTҫ/~}sLްP,zoIBf~ ޶/7-'INj<&w'4Jr*ʟAC#kJOb?W" ~i-D4kߤKیynKcGQ 7{64`U%"<W)>~ =Z x*׼OWsXc\s3m1Fu_1 /HtUk .O^=U~?ї·%$^W5ׯk罹pIJF-YBԄUKz,(`Ah/ҞЛ5kvY>+g덶VP!qļUe xvGs+/b*EX2"/"U#qPD}ӡ7oAj c-Z9 n5S‘#yUo@CU6ŵ+GPXou]S'&h͟}f_͎c@^C>O+Ht-=[w4E.Ɖx2 mSO]u7R8./=an'vZE1¾j\.rPdI*6sĜ+7i5] h,>Af=#6qУļ(=f ]|lSd P=uK<_} <A鰻=U~7 ;`D2^74`F٦p ]"wUOYQ^Vci`'ܰ) C,Uc)ذ`wpDȷ2t51|s/an?w+J #$ 5o q'bkdҜ5ܯa2KbP5L˜d >>7,5d'0.2PђO7A4_%rv"QO!|~{FrƍS"1>Uhl#4(4R;*ߟb_u!b֌So-ki<\}%OEC,TDG[Ǔ Q(Nj_ī`7[i1L`># yKz":OFp^"!osBرD*i+HLtY/$^xRm6UL3(L&Y(f<[Ss__wh `m\/Du?W? kK~BfDl4W,Hk|0$aӂ5y9 IAC~Ӕ'r1D{"%_͢IfYB g"_\U ]QB'EA I~EɥB%8(㙗r3/$A;dW 9^ g9m`%"}n xDz*ʜF'IQcH'75~Uw܍Z2t1L,Qb\޸'A b{dyX >Đ -k*2H:! u'F3_L˜{IU!lPd_a!xëyߟdP^K/B!ܥ*_~zGIj 0o Y2s= 2'P@;zc&U|$v 1(`ȀŐt[A2nz,x2A9~^;-tIwD 9ߟe_Pbnzz/j@xI{.$臤QMpP$Ӿ9QM"p ?u?j+9HqfW~#ωIu"ފ*ʖƑᬯ~~#Kc1@QkPedYQ(0dG?ؖOS! 1LcZ!(1ֱv_0`UCG||1ĹbHC_͊-}F2˽2l675'%YF+J/KHmfn]B37bȮƐ]{F!Cv5Z;j'b0D0Dy".}R~1N72ODua/ds w! C>Rnz: >4 a-ϭQ\݊- Pd `܉lhynYķu,%CEAHN#.wrg{2b㉴4r,8v=%℺9bUxwٲ?9fA;|!U|3=`.#h;ᮀP] 1_vVj™΂P!~Iǹb;^?C0gG2/{ 橂= ۴^ȢƐ%C}yė)nYlC!ȵRFaCTd t >@r!h5XA<S~љG OŔw:+e/ok7n 9+e̙*(ui<ߞ&A0_u0?SQDcHL5~zX?Srp-vY k9!~715 1(uo{ipnvUHF!4#; #i9w0BJ}2cFߜ<ՑC k61QuB, ^engupD1xB!y߿Q$ᢈzQ8~VQCcHnW˭Q<wi `@}}H#[OX&p vO8o3wi {#e뷸9fdN Q0gsT3!?R72* c lg"!)iJgǻ}tCDcր1SByjA#ݖX",w z^œx#A߃_B6OȸF ~U+7? K?C^&cv_Ӌx@snH0A6  eC+9fUڟCt/12oaK :l4Ε2H|F,q;D_! nc[")I<퇬kO,?Ns_څbH?ea>KxkΫ;-SE |Ebzey}y0z!n(2Lls7/M흏!\wB<&bX&/ѤoJ?VX\L~(_> IWi]sݫWZEgsQdQX͎ve1~l@I ɼyB}C| GAƥX1=>y83VcF(}sETLeH&v;b#_g¢G |C?|[u~1w1[y" v,ҝáUjYw-E| ܙ"~ǿUD䅜eߟx!7w2뷠[.z;P\0蜃/d6"U`> &}.e[ .4W/hP⩮zf% ?Ӝ,0ٍmAiQz 3ef5MȕP?B$'~eV EϭtVm 1C f1HCgPC{ yAr9QO?ܐUYH@;7_0~DiI^pd/5h,Q{)ZxS~ WTM}?NYAU!E#W0!/C<æ G:> w,XK=?VɛiByi]y](}Z{_P 1OA9N!H~-DOF뢎 cCj!fG'cu֯_0~6Q#nlÈrPddQ^! )9圄W!Ȧ$ QnE.> A٠Hg&pG"J(‘O@3M#@#_Q|% 7f$_g*+)iV?%+?ɷy> i2W[sCdrf?vagl%n^.x,)hO+#yI^ ItEu!GlמVx!`S &XudE#ȌO( ?!]S{B4wy?'t㷡3Q>/\q!Nt7B$`/j'$.ۣLߊ#7bW!œ7-'o*sC$퟉'⿚ӗ5!pT a”)R%TG%6W6*?\Ԁ_zQ~D4,h= 58؀31#G@*E/,`KE7G4EC99`-=3ψr)3# ?&G*!E7> ;h(ڃϥLLF(J@8 KիWR'xT'^$ysSp.T|ʈ\@*? CF H;e-ysIdzl%`vIh_]xۨw{ME|!Q d39UoCl7ٕut\^%4/g'/cDbE}#K3=ZSEQ=0Eb"B@wk%Ķ -[JXXYF?cWbM-r~ňY:7gss) ^'؁?l(xvy:ڶ;rT4}|L}3r~0*FGIT9?iXN3r~0Z3XՙV1#ޜiv{]/f`t˵Z[Z3r~0*+KK'_O66?V9?w+壍owŌNdp{l߿}/vӫb MY;{%ݞˢe/9 Ќ?aiz~[z~r???[{=g~ޝ߶to~Wӷժfhf׌/ta'cuyo-2.1.0/data/pics/inGelb2.xpm.gz0000644000175000017500000000353007550521113013710 00000000000000<inGelb2.xpm[Q6~ sùLЇ@)RO-},Rhz-i ^[#fF#]$FeWwwO?~?ܽÛ޼w߽_}_o?>{~Жq9vn/C r0/熇˹1^=G[-~\rcs1MS%^80asN%  E$!dG;1ӹ821>$88a?n o6pL& Cp*E 59?n)ECW8x`76uO&By2yYKF``M\JkY 5lA{=MCA"kத?!~7q>!\ Mv)`E] {-+3nqpƋkN 6Fx&"9j8$I(|ǪSZoȢB9a 7`?V0@1f1B hn ta\|æ0)EO#aBçuvR%%Z>MEd¨*P)́Yax$%,kBcuyo-2.1.0/data/pics/mgsSilberVerbind.xpm0000644000175000017500000001223311672457346015270 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 64 4 1", " c None", "+ c #dddddd", "* c #aaaaaa", ": c #777777", " +*: + ", " +*: + ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: : ", " +*: ", " +*: + ", " +*: +*: ", "+*: +*: ", "+*: +*: ", "*: +*: +", "*: +*: +", ": +*: +*", ": +*: +*", " +*: +*:", " +*: +*:", " +*: +*: ", " +*: : ", " +*: ", " +*: + ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: : ", " +*: : ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: : ", " +*: ", " +*: ", " +*: ", " +*: +* ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*:", " +*: +*:", ": +* + ", ": +* + ", "*: +*: ", "*: +*: ", "+*: +*: ", "+*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: *: ", " +*: ", " +*: ", " +*: ", " +*: + ", " +*: +*: ", " +*: +*: ", " +*: +*: "}; cuyo-2.1.0/data/pics/mtBlueBounce.xpm.gz0000644000175000017500000000346412401656724015030 00000000000000Y[[J}WQBUbWd&!3'-Gx|p}kfkL8_Z_/Μ~vЭtO* ?5 y,1] 2?6i0w _׆]xV̭K'Wզ pUnT]ȼ2n%0,9E]*(\Mɹ/:pW;q@kmJx*LEZ hԼ ,d|h݅I5 vvW{->l˅/iH@I#[>KU<5_dfC(E.p[fخ 2aC[v]qn;9=Yh>`7${ аr˾ ;@Ϯ-;v\9ViUri9-R1jc~#Aj:`\ـT@eA*@ MHTou@h6ˋViaktڰPo,& 8\;>څ_ظhr\{49=Wߣr]0|\]~R߉4M%Wa4uV\GҲ[ƾc#KޡR,I?L?ZC 3矨JE ^A"$S'II9E|4D}x\G+%4-BWhjx!}222>Wh78/{{VBލ}%Q?AQqy&W¢0iZC&yzWR/zTy,S>KOc!1!>A`5IÄm"g_<=З~ͣ;A}j(^xn/0AKߟH }+Ȳ2ި97Bs~a,O-Y]5_<_Regדd}vIPOC h4LG>>Y+1T-o3EpYABAĨ?=C$!Tjm- vxaBVcm; S4 /Qg}` B_boأ3$$3D/}p0Y8\J1F׎c?W܏dO⻕2_C yT_ |*|ͱϗ< ^}M`c5ּR*NO}%Ԕ}}Bosp_7QwZ35\ߐGk/Hێ*yNK]wokcre!j1/ʟ]4I_% Wz7B?M2w-IOuI` 裿5dg "Fњ4koGXe^[t#ݮLgLM_\{49=M?%*cuyo-2.1.0/data/pics/ivFeuer1.xpm.gz0000644000175000017500000000201407550521116014113 00000000000000<ivFeuer1.xpm݋1_[#sW9_D(Qzn$ُdw[旙|m/vjwqw}oN9U`Q /dоwb0NZ0hF^tVe H=' Avs:hXȡ:1g`u\~9AB8ί E$7ID(W=_D1HDJR6JWCQ6dVTAk!sĵA; @l, A:lni9C,c14Cch ?f|p dBcuyo-2.1.0/data/pics/ithRosaV.xpm.gz0000755000175000017500000000066311101102054014156 00000000000000LGJ@)xKeJ)-"AsS< "=T nf&H #8ۛ+k6)a-uu:O˷=gSX` $(u|}Q"M.IRL8)0 e(C5(s đ .,"WfX; $Nd{+ 4@Y(܂28onN&e6p eWz4l0ֺْsq5l1|}Ku`$ZT B0  ^zіRt# h_yC -)ٲm:[l0< :@_dAde `TO@YFnb wߧmY`>IKY Efcuyo-2.1.0/data/pics/msc1CInfo.xpm0000644000175000017500000002431012402435276013576 00000000000000/* XPM */ /* Copyright 2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 2 1", " c None", "# c #808082", " # ", " # ", " ## ", " # ", " # # ", " # ## ", " ## ## ", " # # ", " ## ## ", " # ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " #### ### ## ", " ##### #### #### ", " ##### ##### #### ", " #### #### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " #### ", " ### ### #### ", " ##### #### ##### ", " ####### ###### ###### ", " ####### ######## ####### ", " ###### ####### ###### ", " ##### ##### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###### #### ", " ########## ############ ############## ", " ### ###### ### ######## ############# ", " #### ##### ###### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/pktZiffern.xpm.gz0000644000175000017500000000247411052300554014552 00000000000000k7_!LI[JA`BCP(߫!o.COƻ>F>I~!<㻇ۛ?M߶?_|u{K&su}{/}:}~?\/e%_R _fn]{,|yzI/ZKez>`cKKmU>ڨ}:V0vհE ,Y-n@l@ugq8v[jj&by # (sSs1ߍIA`+~[ ׄd! )dE'/+Z1n4JYY4`FG˿k^_Q&L0u+Zq7e?F sf)4F+ "cۇ^7ӗ=LQ|Ę48BDJ -- ȏ\T [fƪpeb}Dʠ>xN O1d(ԻeYPm2h!{P DGY;1Oqjv!nB^IM5ƃ}L3 ):4tp*8~V}ͼG^D1 6SƢ15#FG1w u<= r4šBa;- yʅNppo؇Dq6>:ֵ"؈wҶc~Yh9$3@nȳw`9V\@8^$ ƌl?|9X ;26hg~t:{@0u26ȼWBm 0)CSXj#>4={Ծ;!N l5Oܢ?% c. yʅ<߯㳨)cuyo-2.1.0/data/pics/mdBoden12.xpm.gz0000644000175000017500000001026412412223242014136 00000000000000ZkwȖ޿j)Id"*@vDl H@QkT0w֚ǚ/QIu{#޽yu}^|8x~p[J/?7iÏl`CjBۄèA:Гz:|C)e:|C3ˆO̪䬺W d t7q4V_{i4fÈG-5lEMuH0@N28PD~6tla:'cf*jOah nVYŖ̏l7[a"Q3aY ٹeVISiU< fTyK<2S3[a̩ 8fRي 4yYoVcڠɁ)ЬJ>ɸ'V?G2tMo_thWgDgf5J*dne.puȠUvQVVybV .MHqj+HfMTjY|g+Jks`ȥjaV.BL 5;4 &jUa^MJMnVeEoѾ1UilV0iYWiOa,A 7 *f*dcVտ*rd$M 9~oDٚUTft6pKs/V[*nx>RixHC}q%T2R ꗧ\_մշzWr|K44vj;c;c;nt~tkO:ݿ9knnW2) _?AkN: P:wEopg:[?~Ug= 33x{|S3Κj :ss #֝N;Cb=><<"Qnp*?P3\ zNiknY+wVnwxkWg`$!d+NK_*U*ɍm7a^΢ݶnwje xpӔ53u0Tw@yb`q3**M ,ݨGm vٶ6[Mp6ޙ^2-dد Avm, v1wTju2=rQ!]yt,|̷E;#׬1W ´RV7g)VavTS8;FMPS[nYvh`]ޢҋ!*e P #Yz))Mrg K\#Yp}n>wsWѫWQ$eE!K$_D,ݧm]Je9O)<>w]=ҮverH']ʵtnQh*RVdCPgFREi4j /`+M|;f0(%z %쓺Ϥ4?6 ؤG)/rr1YqSp&ȉʢLI l(6=[++O5̞2q V.=Atd^ \*왧\OMA})w.bRqsdq5qq=nZPVH=hhg0 S+KZgGs.P֥.xϨ\Y1H Ǧj+ALTmh iz~Ai`DқG{+\k;ECiET.W]jp悃)S"s+y#>i'|B\)HN*5ph `We`c} 4 jJ'{OB|zݰ *SHcʝp9u) A9{}Q^=2-HgU(&Owtg4TD0.BR)qY(;Q{U.:-IӅgyyTjϞlEĦk)sV8p@y캜n[.!=ίRX*(EM)+Εݴ9z.#ޮ3dy)\yR]Aa=FajIqE|Sre劧E[.,@']* ەcCbQV^ =0E!<9 /HA +! D`aIC7"4nV(jwi 6ɩoCǮһ &ޑ@MɯhW"c܋E$BP7nKPP/JrA^.zD/QA&9&N =ʫbVN' J yN; AK=ӄ,I>P,ta hCPSS'9c7ҍuP5\Ts&NBq<,)<, OD49P}BzbԔB+Yhw=M_aLw)5_c\LF1-vB"`M:E`5x>w~9??{A X0(*h(~nAyål4}O4>\%6K~f,ŸAZAdM+_@*`I|$Ja.h 0)  ص0z( -VtD] 4˲$/Ehٖ+@+\⇓;|("@J"jEc3??i]+KM1 @7pfXǙhfAMѓ6 [-[_N>eSqҤm(\\$6 v]h xQ+S,1\Vx2Lpp~>u6PU?6\pGdqSڄS_B|@' _-~8w8sWayp|N `ΕA+k "-:)Fp;FM-qCdo;m kavDʳe`=ێ-ND`,߆:hS^lq0 ҕ `</[o܈b(3?'j| ¶KqN`=< qw=BԶdo^Yq{X8YLi)Ƙeh+H*ڇ8-/noo ~;w8Xq8 _B.@x8mՁ!k}V .V`a~3&V2K4\p[rY42 o\ N 4zevΆ4 n ;tVd[8̉˘K̟}]"@~)$YX,{E'N57솃ӆ7YhoAn?ndq6z'|v٘6ӇA~= .㩇P4Cd0|,n=j,;Ծl ;I>sS'бh +ƧU CAs ~.]'Gk{ K$e@O8^0@KdNh>pn2aU!)$/|$`ẖ }'Clj[ eiz=wڶp=i۽CGdvGQ=Kz,uœh$'-٠E$ sN{m~h/(ooNRAа f5kÿ# (#&cuyo-2.1.0/data/pics/lrEis.xpm.gz0000644000175000017500000000160007550521117013504 00000000000000dl=lrEis.xpm՘MkA(vnIf]M(HX~ 鯪zgv=i~ꏙ=лisy=mǟ?@/j}qyNO3X?^с|)\zx[uj_1nϷp;nz2ь~jOlD?꪿W=A{.g,$FdVd2k;,F?ה.ꔣ}Ծ;Fg4o7稂8On1zei]8L!FNYU@t@DV8y [B(ֈQ'˘Ѿ8ց1!JL@ b_l]3VMa7Į޳3ҫ=6ѥ̩9Rj ޴p eJz1M4bw Ḩ)TP0;NO˘B4A1v:s ` ^3 ͩ Uv  t9rzFP70F.PNF(FInZ#:,)D. jД}h{bIՓĥԷc K攓wp.y,TEfl,}:6c9{+K..ӈ4RG4vCYW]'4F)(RtަԖtu'˴M{t:$I7Aے.KsM`&VG' º(#NHx;:t[זZomr1əz٠&^N\>)ݰ?R'ԏ.?j}ɾ'0Yswy`t>;)e\g ?ÜN瓝R:Yp!:-4~{Socuyo-2.1.0/data/pics/bxBaer128.xpm.gz0000644000175000017500000001102610361553650014070 00000000000000b=bxBaer128.xpm}WHO.ya24Ay (D﹬ ,z~ fܽXE~TuUwW|M)H|a$qzL78k&wCɣCwvNN[*+˂oO1 QhiKIbW/։ 30eJԀ9F{]0;SQAKUuY"5+I|@ ~Q}SS5'eLR5#)DT%ִggtNc%s:gNӝ4(Ci-f*MFͦT9´ +Sɰ+29U b?ΙLAZt͈=>R5ͦPf7e`jzة4=7v*}DLyKtLQ[9Tf]]5ö*#(z˶,3ݐr6kcGTe1U{(Ŷ~j[ΨPGUhSՄh ҏoR5TFxG/ḑT\{FU)g2S/مZT\aj s5U3rGTal"D^&gP5K}R'K,ʪT" QH6ٱUr[Ӑn=Ǣn{NeMuUs2jJUEJѝT9v%jR^P5˦h3!)T駘ڡ՗!=Wj y? i %'q'c&/`lrOq)ҡ9_._.c4|0F#c4DWO{@/0NiqV*L_@vF!9VsQ= WeVFAR>A "1Ylh֌H;q|##iTb> Ǐ'Qy#c\өŹ5ÆT5gdw:L`l ꒄvE*sy딍^a_J8>hh8j̾+x4wf5mZ~]XZe1]/c;fhxOF܋,p ?W| {2!NX֨-tJ;2ۋ̐T6J3V'ɖQ%dƉ0%FFk`#/#eh40dJÍy ֺ$|h;Í$[u9/! YU<q#c g3dw?bč{ػ|jp!qLF1Z/H7\XXl9v=s:3Ѡ8G*ɘd*:\/8YUcf,TJӏَxy1p;&b&2?wjdž7pG&F7Cߖ=($n F_HɕČz=A׹j'1YZOF< q6_yFXyWƛIx!Kݺ4I6XnFםe9VU.hL#F|q0I5e1oCµޛba冋?M2a٘#V9F}O0 Q9# .biB>5sv1 FlfJ^( >5ezN1QmJߏ1=F<' &_K>"0!a3_3W?8ȐvMc1>hwrJZ>BA0?Ȓ0yR&i qȈq=N_o%YZ˦DUX;`'_ġULqݟzOAvv<֜ 6[Yv!\<_kD큭21#g8mZFыi! ]!djs~YTD+SӘJ+6sG2ShF'`GFVv35 goܪ%y7|$m;[3e֋ 6wlkmmgv9HA#j5(-4\"!)a{!K_uӞraTGM:: p5KE±"I LPފq򳕇ӚADw3!MCBU-TU uv6rF`(SĘ بK?5[f"=k3[AC})=(NFGWX̀f(݆mftvlDZ}{Z5jHz1+3?}9\LpJ,O%)zPMjmIa/fWh4hlЇ\Y^S6p'Gt@%GO/& \7L ]55[ȒN㟗h1pQ #)/C0*UyQf;FlT,hSkg==kZ5L%c]]T1= [tqv\[de`KF6K“M8- JFW#F-hHlcg(fzkoobLWI{4;䍌yr<ۂ7&%*fFg?c(#HEKcQUH Nbۆ6֐kdH;ZlG!ĆCĚqGۣ~(6b~rh3$Ӌ5Kù*lȎ;&*x6-ʤ| ܌v³P"ϩky.k a\C `qEM#4"oԸ{ccԣsdFH}j-]V X-wTgU-qGN)ޮ3$Z K^B z5eER6!㌫pQ}"qحTFW׌gWmZXXcP>??99ϯo-h[-ijKWo1ã~`08BE6XřcY?]2cxRmHƟUHyӘ*V?J &fsܣ`ψ9@&"vi:KK)-߯9)P9xlֲI,IAoo")c<+rXs:gy9^iGcNg=s xv'D0;*yG{eѡob 限7B,ϫUOyS.y\c'~HY v~O3Yd N 8-qy2\Z2&G౺)+L~7; 9Ӻޅ8bk̈4w*؝k;]L!(3O1mXWt-s+6[xL)P#f/*cr-Xa5%~p:YBB3E@=93!>,8oOqm࠱zw>.a^la$SW8\[bMk:-sqKrU[<:a$7,].@!(^< Mj׳bʶ f?p: U8x}{;`2-ZYzΏQ1 r"Q%h*޹/k3jΝ}>pkk;b 6Jv5gug]mD']7=\|^sGg߯ă#%eayw3A^=*%@ ZtWg |04:`GOD.΀5PT']p.ő, UFK_icе˱o#ϐ|ެV^J2Eu=c (LlKob=vϼJfMg m!oe "0D܉9R_kYfńH@?~EbkofzWc4|0F#c4|0F#/?O4kcuyo-2.1.0/data/pics/inRosaNasen2.xpm.gz0000644000175000017500000000346507550521113014737 00000000000000<inRosaNasen2.xpmOoDSXYfWVB+rc8!!h%@= !;ݮ?Uٞ%ؙTumw_ W//>~p7zp5|ۇ~yx;uqa勋ዻgyƯ7߼fz<},d7*9jJDV|!d샽ўǐ$R' OsvLQJ/R@5f U.ʠ2naPຍXC"rWST@͐Ha . W1zqAK5?b_DG(oKcŀ~_4^ u67!̭ߞt3|<-/h6xBcuyo-2.1.0/data/pics/mdHolz10.xpm.gz0000644000175000017500000000257612412223264014034 00000000000000SJ8ժHE!lv*h}"Hj%w"zu ={< 0mo@8:uu}p}~Gg-eqb!S F IO/NMfDψbfY)פ iB0ьdI*0)#k5̡Y2 ( ,vPYER..eJ\2ϐ[TqPJ/u |RTDY`U-*Rnd,vUPxB5哖qAIqwl(&) !̊@= 1QE 4.L]|\1nA:R7'1*5YLhb>C"O@l^ZՅ>k0,]eQ`7TENHuR71W].lw we\+ܕ=vw9RZ[m8֪2O(,ߡnF49Vr^_P[Oba+ڕ[+eec{Hl= "NK;M!= Äa0a0L& cfx'>G1y?pF6N3HBȓ+5 J?exZދԁᶮ-.56* Y1EX.*Q*&nԮ2uW^BGy%ĶxcPu

BȻ r@WJ /GXhb(;`{@jJF%غ P&XkLꑀ ;sFZP2bnH eг]\45Ӱ0|qʶWvZV=&rl[ 6JgxkUl& 2 ǀ|6YE_$w3^jqr;9dx0ZvnfmF>vE> <S=\n7Xv܋r[po~7` (!a6{m|^@6*힍03מl| foC:j#1ߍ!`/`CЙ!t b| !wA]QFE w Äa0a0 ?5&cuyo-2.1.0/data/pics/mreGrasgrau.xpm0000644000175000017500000000570112420776174014303 00000000000000/* XPM */ /* Copyright by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "64 32 2 1", " c None", "# c #704000", " ", " ", " ", " ", " ", " ###### ", " ######## ### ", " ## ## #### ", " ## ## ##### ", " ## ## ### ## ", " ## ## ### ## ", " ## ## ### ## ", " ## ## # ## ", " ## ## ## ", " ## ## ## ", " ## ## ############ ## ", " ## ## ############ ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ######## ## ", " ###### ## ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/bxBall120.xpm.gz0000644000175000017500000000704510361553650014067 00000000000000b=bxBall120.xpmSJ"J@DTqgkI*8"踵HԽUwFgNO>$GKj/e)L ގTϗOg?Sy:y 7fvY }tj&LN(M#sMy`6i3.@"4@(qBo 8]+ ! <' ஞQB /Bf 3'0(9ހniۦ>Shʜ`B  !<t"<<_n_94 NA68wt }7 ҀQ#oEXЭ1T,R| LYg(dW,J:0+!76U1'7.dV9X~z L}10MyCO94)ܸ/ 1۝.΍ 򥱇nʐtS$oKU`bG; -2t:MK^Ė8>O#?Bˑ|(OdlTsiKMXqg:JR 1Ӵ5 v7ʶ0pL3<&9GoGBB@aZz!B&v) 8xHgu酚W5nD҉vd'b֜+PF^p3OgC4B]4MHqiɭ@`Zd #oW.fG۝)M2$ݮh~:HkdTh.ZR[B9Pm+n>N3y#"9%lL1'ɧ2rw?G3R>>Y%jSq?ctĭK&0G>ƟQ0n_{S+KT\Fi҃hdd%Dypa<8 q?.΍cg=FW7JuI&IZul[?<=<<%QH?Fln%#s9-Kf2F*Ç<`#q;%G3CEF#\x ۇ1ii WH7 f0^W#F'exBeSs y8E&i*{>\Rs=D@Y3Q,id7~-(/:~cdF4_kKGZFKR$C"#3S3P۳k%dؓk8(-j ZKÍ6/cO3f?oU;kڐQ-=q~9?K+7\zaŪb~kBFΏ8QiXuƋ8>;nsnƖ }tquap}坷E 3.e[4{F=cyxzYRcvqqﯾSe.n >)wI:V;f?t3`kq&m.$&@miҪ*~ I26Ҫv#ܒ'aclrkٳ Zwh:R]{hT1&N}ܬa`6'Si"l[M^ZXMzf𫆟Kzva͵\̞$t͓4Հ!?69=w2ekt&yPW"f56RrE:m#eá g0 VPZRsC@Y3+"fĆ 5\n 1وևS?軆>~"b)|!3uq,'J 3rb]qc>=! g }!sV_}"鈌zdK .bB=v6RL)A^n5IyqoUٜA_C^]QS'%xC+jsM(WM/T'/vyGvvQ[q"py+9 Lg2Z J)wXZhxBS ;YH]Vz^r ^>#h%NC){s"@ÿ U;BL&hys>;"|ZoI=H̄jxζL=Bza(ImO&LFa2%QE΄xiØ6hØ6hØ6hØ6hØ6~?Vkcuyo-2.1.0/data/pics/ivFeuer2.xpm.gz0000644000175000017500000000266707550521116014132 00000000000000<ivFeuer2.xpm[k$Uǟͧ8ķ^Y 7GAD/wON;I!;=3_|W߾]*x?/}_>/\\zG僛o޶}\?闟~=m3C2c. Ma K`-2cD"?@!K2DnBdiyaAl̶0,^ S3L11/83Z'F~ࠌZ ->4Тd_p}Z>1, 틦jXga9ze:CC* Ne! afjBLc(d&c1,9QkPׇu*r@ETp/U5<-8h mr:!fvl䣡qxwfXj;4Q~~}xrbAO]TC('( mHm0@+OHznw;(h n٠Mu"j{AT{m!46yQ0 넨o:V+~zT9Ƴ A+=H@+yUEe|,Tv&A U{F ,0&X΃ \wn+x1h%%Md]0Xۡ[ S%&- ~DHt, ~C {'Q>oŃ_Hh}PXEA͊jնPH͈ }zSf\"ؾ[ʝE3,{  Az$/`{@kג233Q CԃڐCf=%1%&%t*$-m":NJIp^j]=)Q_{;+XQ7Ƞ͵~vQ4U*=9pnv5ip`/k|HƤ=WWݐ  gڡ^S[1;m!`7 H@|'fXh]h[\Ύ- bQ#ܷkv z٢&_yf*-z1DdEůV7vpcm{b<ѧ ɨ/O|Ct6IK~:x#6%[0G/Wf1{nowɓ%sSP~NCFd9Pd``"b/CQL;0D.EXO4p^];BOiQդ1:KN X1拉v` _Td@kw,*rs@.tNtT g0D3)G|4ĠA <̄bK>L7で EQNc(OԴ#2p!θvvLn +?.sBcuyo-2.1.0/data/pics/lrOfen.xpm.gz0000644000175000017500000000105411543455110013652 00000000000000#MVj@=_X=+g'CYPj[iRJ0--9Jf yjH,i;fV{k'׷_fưz~dZԔΔdtbg[5 ]+ʽpjI{Q <+ueVlvk^zt&:wg*pcCenl\9!+=M !x|୬h_2ݔ>{V~E>Aft/Djݫ^Lt~)Dvcr)yvڳ9qJkP~f7GMԱ"c@8kVZOfYn-  b^500b9O>}9M98r G i ) \4.ݦ}I7xQhS5\p]6&1u*\j" ԄVAsޢtvS.=6 G}p;6T.t:\QvG\&Iu!.Eshzc(Mh~\=Jv3.b(AhɄ`Kՠ( ̟A⺟13tQXMtJHhcH0D*e1˥gB)ZfNe4Y"E@lSg*!~\2UV2$Q6K)_>Q$YHĹ*湴 +kY\4O!,*(2`ޢ&ߥ!K}ddllc<{J* 8> ǰ~҈f<ɭIVLRȲLʇqVp>0ѻdF/Xa? l;F&a5 G0 ?#=FD`namTc6Gdm=:4 6[`0f0 #LBT!ޫAwr4UFnJuFЛ^WFܫ]n;P? 9btpIxۣ ٯkb=US'w_j#,ysnףiUWڛtJO}/ `( `SkD%7cuyo-2.1.0/data/pics/mdZiegel07.xpm.gz0000644000175000017500000000536212412223271014337 00000000000000mWSĊӪ4GӚ>dZ:0A$ ؇uՅsNlvO^s;{7_n..p/W^{M=*'sR?{Mބ7M(U(U?(wHJ(wQjb<$5u_QDMPHC}UMJTk|FCI((kl^~PްuwH2G'sFL&Ϩ J[&L1*CdCI aTIu:'}7ʧ$gҠGr4dݔ0h(=TԸI &PIldd k5ÚaͰfX3 %qǑ*5'Uũ(` ]d hE< is2|vGJ-twZv扡f`z)i a cw!~z!H&d((e ŒAH3xi\B XԽ35 \m0PN1[-o*i&1uo* [@œmoFae))P7rd5YIjFy ,aıRbG><>0Dqa 2ԒX5z l0BJPZ֖iJȾ\aR(0 ȇPԗ$kaT ,!@qPNg~{+T5<`aV*=яCb2 v}VwV2 RC垡10b)ÊXZ? 2cBB:QbM[|xD\HtmSGU`%ux>̽d%4CCil B#A)8r?40ya0x6™=i0YͰ3 [9}p Źia!s/wvq*RC B Y,1x0/E<5:EQSV7XR~2bQO1,[ٗc(Jma% a<``ïQE` CȀYP} q_3l CT 8ѩ҇\N2ł1'%>ŸioVv70TQ$qg@G?pV94π9%y6ky/Q7Ȋ. (͹w"gMr0 x=#+^]; RaRD.cpeh`r2g#giPNEE% |ɤa(;=V޵Z=krp1Y9;- =lYj/{h4̃sTA푵?2+w^d>d޻=`xRs;!d$b5A%gw0x-e@vbiw#ЄC:c(?,|%Ͷ 9VjT- pp k }nu>dcG]ťIr\*TIoX2&-9XLNKF$`4LM` -| q?,OU@1|% ?$g]n:,w eu:8*bV3qfkfa<71mp=d&7'ؗO $9r0]H fs< x`FQ(F׽i 2EQ "]~b &YhDA 2}^L0~Nq^碛C%~e$Yl`U/|Xtգxʹooӝvx$9O3۸`_v\,:0#xﭮ9:έlذAG?I`}ώ7_8ճ|?{[Geɸ븼KM_[ڳus}ˉg׺, ԗ>f{Vk@߽⏟wh@PQ]r3lyLJaRb^bt1J,A(c$RrRr5ɂF9ZFKy%_ r&F.M,Zg y!vB`$i޹ rIta7%n<S+ٻ*d Ay^$Ωog(D Er"@E`he!^q]n%KaZu':/订 9rO0RGki`*6L[5̎;ae:dBk206!IaD' = T7$2_ʖԩ"#Oe^* xOHO Cb HMh!N@@URnjGsq:t1x'C'dƜ(CRGvaPQ;1մF0ykwS2(wc79V/47ཹeQmah+sZ̥ mP֎4# \OpLRGVL:/jጔRմBK.Q1zb ˽^nbP^hsF;G#hm:Ӽ*0ڊ=PIEdZ.d /MMw2a<")K աʢI f2FJevA24$O[],&ftȀrG 11|4D[IMd(vӕYoX/@ҷy]ֻC1U` U P=nƺ0zU_䎑V f^Of˩CyCB%8d@W! PzmR,(-RY[~USɳV`+0<׽S)EψAXϰd{4kgBL$F i(DMZXL*WLEpչ=+4Ҷ=Q`bi0naFߴ#zSkعtb)ԳN7|"15Z@N =2Ph8Dofv)9/jU(vFBÂqzyW=T˜4cD&޸fЋT&Яg1Aa?3\K~C!<{Ҥ[9&T'@stx9op[Vd;W`MGB +.G x(^{w#{*v!ۑU@ ꠾ 7bjs~VhV윂Z~R.}(ժ@{ng/Xg3|F%pIzVSâfiϮYa9& C;H0i"}CReݞXwӭ*wlzC oY%wTAֵ_cm:Yf݊wpմ ?2+}bX̦XԝY= =cA 2H=ۇ^rԠP&]L90,sbwbBu/jJl"}ԅʊc›+U /9\Q, eyo~XCcuyo-2.1.0/data/pics/mbSchmelz2.xpm.gz0000644000175000017500000041125212401656667014456 00000000000000[ElDFfThKS,X[iZQ)Pds7s<{;&3;;وk[Zkx|3Oy<^Ͽx7}E %>_M2`q\>8M"Dy糬q%e&%OHޏԦ'f& ]4Yg8NEJ:<$)d=4er~()֣b-ޯYMOzb%W%NoAOԲ>5YAyfoc=4e3-p|"?O$,oe8*|Ϻ.|˼P?AQD _D޿z ygU,e _g2\;1.D7qZ GO r5Zc?ަe~)|&DcjL?E}SF?*5{~č_wIl/yImJ Q"Y#[F4++sk2xT r2#_y[ ;>^OUB)"Kܔ۬@} nE>}dx?EE/oq}_&:x>˖y3LXg ɟA}'QF%:vsa)%ӨG"GpM0Xۂ&n5>-ax1ί,0Dxk< ׇa?%guZ[̧k(+K󼰖N*+]awy117ejydzsVޅ>x6%{<&Ѷ? x7>xZo &A`t V=Gn`}[_cdD>LDB֗a^:ah_h  <S1le腕1̩8< üVaG: san2R_`͗aa+͘1_u^1B\Y1?*bQan@}*\P1̫VwUkUkA}0ldj |1E<'r} Wb=Ü:(zS'M"eZk\Ti<^/0wtՐ0̩7KqW s~>(yaNGq[JC'{n ޷5HEd6 r?Q w7Gcate?8i+O5e۬Hl5l Cg2>蛉\-9cYs73ϫK/J._]P9<ПM&uaoqy e?Oxޝ35]$~"gY_h"/:M䧩e?wt!C}l& ַ׆O!UI.z_纨\wzX߯za ؏џ/DNՇyM?4x*䣑z ̟&(Y5Y?d"Gx1:^ԱsyCz mR%OW m\U/E< 6 | g~C4]y^|mGaP><h@VyNَPߡm8o-JN -jY ZGB'~-~k!xx~ Ӣ3ϛ'< W ï1~5mYT#ǝMD_|?0Ǡ^zJπ^z93^η 襗-=z|Kπ^z93^η 襗-=z|Kπ^z93^η 襗-=z|Kπ^z93^η 襗-oc@Xu7Dl8}o63 \ gz~W:1$[fK턯c}o2Kyjo{S7Fπ Zg8ʦ<:޾OӞ~/Ag^"H%(I6Rxg~iNjeT7 X.x-Iv#0¾zcg:ӵ4b2ƐBaw (oX g~ի=}?musO,~b80ˡ$M'xyc91ig~R޻g7~oΫ)Vj?)^W+`ɮ>l5y$~R޿tNKG2?fO-$;AɀO<Gapt do7GǴ G7].i?@ o(q+[I=3@8xQ?N%3g]>NԉLƙhO%{og}p!ȦZozy I4{ߩ\UkG*y:c6x M?x8Y~y{_փCv]}?0'=_$B _ǰ| ˿_~ɯm7]=dߊr1? t?d; 0\Nݷ{~6p6|M ~F4`O.~NF#gOľ}}O~2WEog3ZI_6j}ۆ(`^L",o? y}0CLa2C?a띠 8> {oҳHן,S Ȩ?,tw#"7'oĀNv$ G} |ǘ(0i:HLJn}/oOSɈj$G^ Ɯ`(Ow7'l/*07i`"1ouf*9c/'co7n۬?hwwy13_00vxz`!?:~ǟ]ʫ*{(Qz🣑)W}\x C?MQSWVU샨ǃp:fA#`Uտ~~S$Y4`X߿bοkVݶ:`8W5πy^6_*$ɿ&6o=?^ <#,O̗b}~Q  ^Y%9ܑ;=9\:Nzq_3keӚCliQ1[ŠB|:_k+Uj {(|5( 2Ůz_ĶX5]4Gl{hPjL`<=CsA|!@wE }o"O.=gBÐU,?Q-դjef@3OgQ۞ /F:[B-=ީP  FB:LŕKqZ\@S? 6咴G5Z%;/pM9 ['DYȇl=c+rA Ų𗊁ʓB+i!Ncֺ$`gEwQ7P$o\?7VSTTJ~Z N3IP/5<"Qn]8di L*k ^G5Ѝ?e P  +&!4]@ j?% l gΫee~~>Db] d+@gꤻ0툇W Ej;u>~5B? pAvN|9L2Şؓj{āw;NPrn"IP ce(ZMQ4N q7]%[ )pc^9J`/09@ØIh]_[KO_M8uu vTDYWS4G 9ә! q\e7z~ _d y=_Q|uGIkx% >ß.:S l=}}(P518";0ar3_ V.Fwx @ b;x:G8q`xU.rW,a=%4(/䔸& )`,X3%fnE- xKנ:[#٪jU:S{K xjbJ>;] 'F@Sߑ g8:7~Ix7)`p.qUql3iZ6Zz <RIޙHxB Ojޠw=¸wi" f7'p@Q<`OA0#)]_?eR` (]~#F]Qu-_`*sR8 95l.HkۭP+ Sj+jlڤysoȡi`" 3qomx2Z  Qg|PNş,+Ԩ'ru3xsFڿ%*r@O=h O`_#1*YD4V~bݒԀ %Ö@|O= DȀ 3?xaF/P (-|j $ g" DJ(@{Z k( YaF-kH/߶%4ܹhUZ vf twpFAg*uG8Y3qܑv!7R@=ϼ 9 sO n8+,44JS;`R.5űV-sY@[aO9o `VE@d˜ܳ+w)uLSb)J`M eH- P6-? ,sZ <(_6P^M džsd!bJq`?XB#ĕ>M}@D1yp}J[@S3 Um!&E#F*;-rR` g & 3Ojju [fo 7m+BX;1oa94]> VȄ|NOl{˿:qڇ72_B Ml?|2ؒ\w(Z`[3PcoɐbF+Y/~f9{^%>22< <@C [IQf(b[fK5# !+8)%Vº' m-%B $&Jg6xkLA|ݯכ ힼ/%%`s jձ5nAEXLqd>xvwQ_XxDc,@ Qz :ԡ!~Z9 Q ¦nc(7FM4|IVa\\*_#x2CdPP|/RKZ!>tT@WѼ_YHgeM )е0*`ʇ)P<1(eWRZ0 hغO*|JI%O%`5Ce](x#!C8fRhDi燎yq@Q!_ A-Q`S'A`> 1 0ϺGl-NR-< J\#tu"k( kB xV{~$P`0鯆!8PGv1 BbL@;hrpUDJ+UPtTSEJK_7=iPqh%0(I%R 8J H* p=Df:KQRf@HÀa1R@ 7I%@>BTAx U[q$Np.qb}~̧ʟժe0Y~ۨkxG!Q@;>)2'T@^%S10# 0owߤ`)RJt* k) x'[:6Xfw*; ?CUÐ \0>1 x]02?" 3tJ@)`(sCN68-s4bd-V b?*lpND^)A30e2M5a.lt@[&@Oeā]R;wClF!Nt@<8NK0t66x!0\~K$<~'h XBmH M Q+4؋a[ۘ' k@60a@ͶD{:=4<]0%lS>`hCZ a^^AjhlҺ">}N7 (ν ӽg`5bZ3`([l[K#`I35'mL@G DR`="IF䘷< 6D1qtxfL60__ɾO-&+&'&H0J81 4  pF/:s*_E͐dە\QD#(H0a=Ʋi|A&[1@]%,XxMfؽĵ>ږz|%EK㓣C&@4,ȏ [\Acba744 \ss 0YfgdQx[[p`94Op6<|u`6AEGAk8i&z[2)xLA ~mQuR>ԈuO@d 6W@GC97 b4L-tڮRf;gH!! DA"8.M1`R " nz.9ĂlGǀIG&ߌ3@vppQW4R(ɀi_ 9Y@Chh8V08:(}q8= +KPFA?`t@g@N.8\@ |W6@9 d1 34zJ~M(1`j8:p}#P.p,$n0jS.L1`9V[9ZRǞY=S'ꇓm%38?$g܃ M5dIoΨL5mRzP+aH,B(Fc1C$p㿥s^K] AH x5 ,5ƋOqB6_h@́dt |*' f. ۅǖ>h<q Y>'pqBACOuR O! .v:\ \`%= j h ~T"[Rsr>=N~ڄ=xd)` iMj=oPGw8ZeToj#];*3^LG/W/؆5ZkS~-o5h럤6q1~C&ȎQ_n暭:ֈ7hELo|)CFB#0W5>BMoh|wAR-FmҘW;>DQ@ 0УM{!oUa&_`>s|@#AmG 5Y2&sVwg]!m4ǫ|CZѪ ߽[3!9¾b?E9q,[4J+MIBi #>iD~ysf/ bԃ!C&FiNF[ -BḀhX~I Qq32 A>эuL_16SRU3k@ XGMHYmڄeP!$9C5{KI^S|aAީ9+Uh|""+9)(Y=YX/f j2|,04LCwρ|5fqA3?!s KN4 Bhz d?mpb9YE@mOY[THhkCysv #8#53q[;{ə7{/f4"Zǁ0c0/>s߮ F0& r]P' IpݠXFH?:ڑŸ5}A\t@#|ۧLſ{@$h\?{Zy ^[X*.P[ B@?&-_ŧɿ^dE@7h6-·)L ?"FNu(\zc_'ڿ+Ciט~-ph"sOWEVv#( >z{ HŹ)R~-h>Tp526qM=FJ+d@im+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiw2 k +u{ҿ/oA3@|NN KҿM~cǡ;D U_)4}gX>1_2~#2 :958[W_w)xM|S1Nj6MkTM c<cq. VO>.E`Hwsc£j"~?z_ ߛKjK ZV I_l2Ov51ה1VUq8so"zo='_O_?~#^i]7ѯ/ݿXIx8OsMI_I7?ÿ*m6>˧ǯ> ˇO^@,_^^/6>%{: 34GرGxvsϠ?[QIumS~}mK.{z󯐞ݿ,]xYŖʵۼj=ֽl|@|&a=.Z .S6տ6o׃W]_~ ?A<z9̭ ?Bݿw|@ &X0R|xEqf@18AĎ9]k#EBί?DbK@;?/~O=Or{u u*HPqꥐ@q?y񓯿R~\;F :ߥ`W':Xc1XI܇skj?oK8 @ڛ?7Ϳo_f_W://ûOxt, ?PQSO`0&Fz}Vo}>jHǿfN3ޅwIi 0Ե _QO) ], +Y?H~ױLdwq7Ahoצ"_3y?|ȊQ>eE+8_| 88 SC?՞[r0[{D%z*?|׻}e_9pw5u*68twL}uQo jX_ Vq&m(׮tq_``ǬH[` 3}@ 流]Lňdz*J^/Wu7IyE{dB1oS>Y{ib#Db\NJs#bZ(P= н<# hп@Qd F'-J~"m ο)O=5F SSc4 u9>5Yמ* PXMh9kQVu ߩk ?Pj&P`y~E@WbOe}M=W_MEd% Ѐ @I] V56>8[ST~E%?!) j_| վ4\>;dYyirHZrsWJq}ŏ '`TA#W;d=Y$Y{?;[~#XM_A9|@ʵK+n[0/$T¿Uc*zo6(k'=|/ν~>_-xyso׿ `WЄ, ѿp#w@ 򱍾Z9Gfp#gMfQV[B-u_?.屸'qPa?FCK5h cC١_S)e@ýݿ@(^ʩ`ZUm@!=ӫN9z61>(^~*&{u5uGI~Q-Tujeof@3D]|;AյM1A{?>*uO|CnCwzaۚd׋ s>^?Y۞AS4uC_TرL xVxvgl9l l_~yvmt3H q7vN9ą?ž:-8s`STT3Lˇ;!D )kdA̜tk{hl` @ڟCrc_)Wx@7sPK!!ɐű:,pXSGրh8F;Wjȁzh =3}\3gjJj1G}T__rI я@ NA vBK'$'SR >/r_{P4AoP}ͧCdȀ t{p@3 v1KP!V)`f1n/ͺ8x;VH< _T@w"WS"'|lU@O>,MO@' BԦrnԇd   j# Ĕ:n%fbE乵H*0"*1ȞR 9\ h%P '-`=> k8z8ՠ/ձ:J(rghl*Oݚ @6g:"S $>h:yVϾHQqj|Ǖ$&LB6 bom'j)]т2ͳK`DeCV$*g\?/|"'=1j"Ź\%n5rʇZ/y_`:S<~@3'@B !Yؖv {vZ!C6XQ3uK _Mi~nY 4,_@D 4J@oYCϪ u!Z*gW5 ȴj&ך@M w(`SY4`  U0e%-ܥ^hBmpԝh]1 /O_> T<lDnCj)P;Aϯɏ,<7\,`R.5_eZ/gA"> 瀔 >1y[Z?a,2`(`@D{`O WþsVR+OdS2$Dd[) |oBx'H56 _Hd~5mK1#|H5|3GrFΑ+=} b3D?0O{rLS C:>C-/>@ 3X8-kxˋQ0O9 >]CTSp>5Ơf0NQnJ>߁H\y|h䎿5=Bt4F& 4d_:bP7SDo0HXқ1 X?05 YPE oՄH7sx{ӳy$ב|zƵ 8JP0T3HQP( XsC{-%?@\ o ;ֽHȾݳ)_>G XAmi Z@GF?ocp_llIy4Nf'x#Bt> ob_ڡf9O5 ox~G(Kɡ3vƗ@!Ws`YրU#|xMh:桀/#b?a2Q౦4;5_OQTXV lsǧ·: t 8g`vZ DygƀF B8d@%g}R @6SFDH*VyQt^[39hd)UߌY8Z uA3Z@z]jxcpb4@|1R8bPmy(7u8f(U~B9 Q,*?N z :Q<YP@<@mJU >f )ѦC%`L%྅ ' (`, ֻ6KQӠ J`R` &o@T?F1Qud@R xTC|਀44i?| H*`<  a H&)po28ژGj R巍 ZscL P $FD*o3v^%_X2e?p)% G* k):~ af(-T8b0 %<(DM62l(0A5`/Pki0dJ 7 D&$Gmn.j8 H/>:: jz `ʟ='!5pdz-jyZ,M 90h趀;t vI -`*O ijVa@0xHa)J`-G4c  M ,ڶ,h5)^0xE#Z),V4 PMĿ; jtJw@(e~>d$3X R%@0`Ɛ/0!w+Z81@qeQp%@43`([l[KU&.s>BÁE ɀUb%PY )lǵ@8(czmDӚ!\ bL/P3la =_[|hM61`#ŀ `@MtZ60H1i_tLU!4j H@S@& @m֝E1)mwI AA$#| `wLAOO;: Fy `mK=>%ˀ{P@KN Ȍ $s|'Gh}#qn^?hb?A<wX!cp.:^0\0bLxƿk3p(O?kD A -^,Ӹe_@[T~5À4.-%ؒQ*PͨW w ' T!A ]hs +'FZEIz bA5  01H=+Dp.Q;1GQ7# 8 ±ayPi~3NG`[d2,L/WsGA?u(0B'L D~(`̓ ^D(GĀTπiX!?7`sO{@e5`8őO(8KOj|fԡO^IDX!j)4Dc jeTerIw)ƿKIMd"|S $Y2*Sm2׍B3mYJ6AK˂G?$@juA(Mqr/n_ 뿁>I`Y7@ u!pFG'8,B!HF\pO &g"+z~Q@sf4r LcK_8>2qOV0 !& M9>9Rp@ Roʯ< \`%(hsX69X**S=BlKM!c,l?!±B?7X3}eڱw3u#x9oP?&ډQy~0N؆56ř,PIn7`-EȎI_N`n 7hLpꁹhH(8` W {|C74>`,s|@ˡ`u dX P~!_ {| 0УB4>3^*0\s/09>rԣiֈ-?1NvH2!Y 5s"wL0{d(^6{,w?F ?Be78¾bY͍(3O[I#x  kۄX1=s(cߎqu?`" F%?A~v؀yC&@+@m zNx Q)?聪3PqK{c -Bk֢>Cq1q?W  ^W vÂu;~ wuQO("̌t"#t^[|mOyo_Q2.honV}X?{ZQ_|Z+EV'Iumf@ԓ1_.~NIPnh{x O:k~8[}pSG0;:Ҏq4Ic}kK_O{3G?@=+̘!98=VW|׮_!VWJVܿ-_aQד=9Us(|8Ue0|?ha/3 :""u/:@~3*_roq.K]Mvh?VLIϡD;Ϳ߁߼rCnc@![˿ kP7aB(Ƕ=!:VMM_-OhYq[`[j?8V??wůߡ7(?'@83'.woo9qoP\ D|{-~~~=c m#\nmuNZWvJd~_/Pn |b5X+5}ݿoz֢'>NP~G&TKE AՏ?I/PӮ|浂oz? )x Ɛ@ O^_s!`|_Mw6}~z>ߔC?jC S Gqc 6x3:g߁_eYWϻ!/~`0<bTlu,z`w {0G|q{l[|8미? R%;܀ge8vȀ' _01ןCEyVi>كuDqo^Rb5'ʧ(Ӻ8o*߉E`1њl5osvq5Dɲ!鶨7 Xk: y5@? ГHS~O-` r#?)%YGC(>{!*j ׉%&58E?Z5s=CGIG',חߗSkGgquް~|!;UL v?SxF:[dKO6tz7d5!58c̵U8g3cE߯tI=lr}yS_9V:n X/փ"WU|~k{-P`a _jR~YSdwwk5E.me]zЍOC-jqy+_CJE>Q8ׂ|9X ˡ`zN~s~YM .l_\+ y#G~__W1>)Ў X7zosƺ~˟8rzb:oW&\C_y˵K+n[m+BP耎|9m}? +ɟr=_ ^M ^:`W0|ݿ˗{s!# O8Ό}ۑ{|5Z"SPUť= h+F ÓP:Pk``'B0G#mR3:^_!+2)gyca+[JQMW4po7O'3f< !f *Ā3wbX?7 8~^q%.%h26_Y+o|I?DbMQ?r(P=V4[=c+ޱw /ytPc[0c"ېۅ` CA0* 8 }=O>M1>`\!xL`uQSJ 7]c@;U2(Z1Eh ~]t4YM3: ig ӊaRKޙPj=?B@GԼX%:V$lr]Cl)PO-sʯ_˔XbFZ ԁ8jij1ęu"Z5-pN7麷)+(9C-e,~NtQ V~b kw)!uchcP?X\? jɰzѺ9]P ,15 %ķ|UΠ9XȚ;H-AFF )YsMK!/;0mPuY> lLA`s%V7"`@@[%'׿Ӟ8|1/ 5Hϝ qĆSy Q@d5v@oS ֔jO#4]K@o|9_;+K*^ (0u1G4…@O0XQuWհ䮪) 績x j(S@+VSCTTM{c>o`jBϑp /#?XB#x@z5Ai͎::Z+DB/X%:@z5An!Πx,xpC)xR'LfI?@G `ˀf3rC^ohX5Xm`6=m "|eM\9`@x; N_2& miBu)-Q `m0 '#9R@+F:[xֳXav:?1 H)_>`uo(PKJ|PjhgTKlٗ`k%@`8xʷ/k)@J ^:#o kDJop<&{xWS`*+{33Gs)@<%6o&&"@>0*ԬN!6׀zŖDP]O~5vU\B@4eWd$3_݇@$,ܹ#$<Γ}P9L/'(PWuzb0 5@7m@H+u ـG @1<S*@3ng3k԰nf!A6#0J`@%&0 hغO*|J@\ rj)T,%`TdB t<bXJ 4Tgd3yD8Z U>z #\³-sC)Rx{dCV ! HEplQζr<@d=U>ߡW$aQV:Q؃=CA"y9FjTڔ83*Gl: A)bP | S  @6 `Q0 lk~ ̆ 4`<H*x 0M eVCxTP H0Qud@R @gÀ%0@j )`T PGb 8г0B5*Z~E7|-QS>Km* { e0Y>:Npf%L߀>'?W @%!]P ,>$,HxxL5C 8] P}-@TVɥ`r9y,0 U62s6Lξӎ<{.r3@" 9x[0#t{4@<'!#=bP3 Q~M|tta`Ȁxu=C Xh 4h>q5GdVD 8^0m}P;-wј=IvI NS~OZw ijC= MM GY3 Mb?ٌ1[,&E((m4؋Bu[@HDo xa@Ͷ R2`'H| @"g@ئn)"7#A i>sÀM?c' pbÀGeӽg` 0-g୥Àjtpfs9 \>&R`="yAdDyYSnH82F@A,l|6Y19&P`bЀ1 4  pfl[4"9AfH2 jy ,_Sn #h(J@3&uMJ!A \)5vv/9:%¬Ld<V .)] HNk:@Mipq<2#\6ߦpWL1tZ8>(0'c[xN@ 8J=-8} (1s&NȀ;3>ZÉH%OsPA[ XO+P_'%c@M3@zg1 ިaQa@Àikuڜ6A?ޙPTRˀhO/'vw2`R "%6H<U5J_s.Q;1Em~! Ob@l0 hUw D?`* ct/`%(]QR=\@ d0 h(lD |ñD7GĀTl"s&O{@!ԣ ܷ82 g@n,L$ `c"rͨgsT!0΁5C2* $ص$ 'WS;JIuXsDB Y;62PScnf~Xwij~Shgi%vi-3># |!"'d3:xٰ8$oQ-Fmש+@_ȁu8=D.. -д % m&_`>s|@#A2l#zY :|OFz /3كY ]kYͱ[[20Yg L=rX߷2iO~<3f-a0F2X bzPƼ!C, v4Bh'-p\@4B(`9@#8fld6jX m[s2};oڄNI@"І#Q(b-Bk֢ə7Իg8{1|׺?1]3c>s߮ `:M傻uQO* t"#t^[p5-)/kq=l#63E eWsMſ{@$h\I=FhE4/ #Bm` \ȿ$L/>M"+UA׵oM#drVq +)z29Ulq4 +Z`EW %z-Pj"@jjCȊԎZ~BG\OZ`I(Qs ~SZV$P忂 oBo %VZi+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiwJVݶvd@im+PZiwJVݶkGvU!>$y=ҿ/oAVb=>pݔcmC {S(@tMM`ϟoA1uwܥ^!O)<Wʿ 9BO}0~8C֢#辅%^qϠK?j@ MR?)=/loGV+~؄<׹لyXAq[U(c#q#A5y#y5zZ5VןA\GxỲ/Ohuy$oQ Ǔ"/Yd=~/FL Z?>Մ_)b??:)m>}񟗇@d@JI==&xU@/1V/vk ZGdECuPā+C~˟š8ǿ]g|+?,m v OA  rDPD_p-~~~RsQ gT3:o5æO|?~)տ)s^|(\b@ oқ9?eϋ?|Ck `Yy'g:K:[C$SLGt.եȥ׿+FB,?dدX?G.Ϳ)L}_"٦sz 񊉣_HV* (積Cu)xlhA r5@?R +*'WL-CۿW>S UoMyxF$4 Gwiֽe=Nw}-sCT|raM+̵( '`:,>1goXͩj"Ko-Q@^X/ꊖI_]'oMQ4c*n7n_Kykg)[&gx;Y͡EQu-|<^2qu'#cAqcct8z u)"WGM7zosd7Yc]+D5*v{__-^Ziw:耹`W(F_8_5N{Ll0.9{?2_o9d^:`ls[I/y)Vnɓ`g)GgRM#xX2|lKBz8n`_gQqy,=K7hd5=Whʇ{o@?Bc?{˟_& /sb[ͳf7N `?Q_r|m_Z=#0f?j:Ǟż3}L#D@@Sn` b(/3G"ömM\@S/BK&WERX@SC7VŊg{$$4:&Q>>WS3rmp|_|ͽ[o vƾǮp>b=|[$쩪{L9 9P5tsU?4bw! [ݩJʺ^I.[W!/OF*DwQy&1[o?|ZTR:թYQeUPp\-4Ӵ3ߦ:,^h`7 d-pB`WlK>xUI]N _ b)x:+Y{ Nؑh \vs%nF м9@F x]tX>(`Mg79F3ZM0fx/WkRB?#o!]jh Q)X$Pϱm0퉣E;xcCM?C]wPϚ)Y5w1 Q8ŧ)uB&Al#6? u jj~,w1y~!ړX=UUԹ:`z.y Ts~,MKˀNp̥ȯ'N>J`@#$Y8`.V]ChVJ}\ 8xK1(  b@)^n׹OR]sO؁ZoԦI(P wq.E_ Ц=;=nX2~&qagܣkHܿq!4J`GeMmC1E A@aСD5ڜ9ƿB3o@M@BSQDH@ΠEJ=ZQk=|*lQy}V 9x%4 &DТiQb:mv( @f>g @5σqzWPj-#y k9+ouZDBhP+_C~fu, Vs`fwHSR34@KT䀜#L SGCO#M- M>%^ A:D)o\aS $B%VhJ\ <UKmk ŅQH96(-h{1%?c3 8'4b;dB{[ Ab Ai=i*dp_Z"x̓=B {Kdɱ/@A]oac4Bjk-\gg?yw|O!6<Gv@!๸r_Al1E&8 O=p;'(Z`)k[2`:3jt&{Q ;v_U$@ )S|Ƶ $Pֳ3:Z"# $y m`d6 %\`,@\ #w@T%sk4@`=K x$@34yIu(xsV`55CoXH he/4pLPӱÁ%6y  7K!=W|o`>n $g3& XU"@X"IPL+>p;N 8"xgùd\m\,u7m@H+u ـG *@< <C t 8g`ʟbJТR YEp@ PM#vN+=kZ@DTu*-V ?::`{]@Ȁxu=C Xh 4h>q5 `8.l BR[eqv1R0QǾտm 3t6(-اc~'`F|rIЌ1tr@MECl`|mAFŧՀ{>Bm xV4X>8y!1oz+tϘCcM60eK&%`lπ(V xp{M0ځ] {.d>M^^3h̀  3Ra@5O@-biH2`$xd!֓-wG j X0 Ŗ;Lzo.dA,l8nMVLN ֫az| mEi-8IF/F&10`,xk,唯)@@7,GM[P`rF̀45)z`w @H4hl8v*^K@PZ=.\$ȀP@KN pH4,>>ȵb_+ |=G57Ȋù|F aG`9FfOspHmʮ=p"R\TlkP&Mɶ3 XOt6[>Ag T.V/?b@<qW[X9a0`b@%6'Mπ&)]g 3N'd3rakB g  ſCZ`,fW1.0jd@ô,oQ[d2`Gt/z>aW@A4:`H`t DY HD.`zؠoԮE2MĐnX!?mB>%D>^#,uY% Dpum1LJzk(̀t{PD|L$X2 :b@S!0΁5C2*R 'T>،NqBp6ƒ,?]GȒh@z8c4o-Һg}E\{Œ  NS0)C$p_ 'g@t$,N!2@_C|GX['8,B3Spj@́dt |*lrK>v_&!G8LpܓzFqҟCOu0 5аt `{@ >N_7-y6b8~eCCeS> L;;M!W qB&#KOdl2vXcKOtFQcigUoDxMg!k*u;lXYߚj572PS&ȎI_N`n H*)K;NĎ1 Q-8+PIq–BM- ̦kf@D6 *C%r j}D+9 uqa8L}_`|Lpn|FdFmXl #=wg]d Fh6(A+xF2Vx׿VU@9Q` y,GWl(G;}+ßFa_Ս(3Ϭ#Z;oP bԃ!C ":v__nЖ>1-ɶϩH6$pL = a Pnۂ+&tJ8zJ'id5!_o*"f-iA=_I h~A'~s԰@Hq`aAp9Uܫ*2WfW&we9sNp(m!}Y@OBFgmc-XPeAdj63ZK$se`2=ox;j!& 3^5pIŌV, ;2 t6e2 \!9P!Eѯ&I)@FpFj97g?h8SC7ghجp@$hoQb;dqc$}84Mݼwc`'oɍ+ )Orf82?ދyeA8q8̋8ʂāuغ1S^[t,0wfCQENDFMſю,5hۈL +Dm2is&E `/i" ^B F?6\X7h whʟ &A׵]!ܔ?QO&GhпX'SV@s`@t߄ %10PMƇ+lX֓ `2k]_C-sTW)`n`4~_dt( 6!~o7˵K+n[ɀJV2 (m%J+n[ɀJV2 (m%J+n[ɀJV2 (m%J+n[ɀJV2 (m%J+n[ɀJV2'X{vkq-ZKҿ]ij}7놸2f_?knqQw珫/O3Z{nRGgSm7hHћLq>ҿ/oܓ/?f8Q;^Màҿ/oꃜGV^?jJ|׬%JwKww m`Csk2}j[WW=[zeu(9&1n?Rp3=rο_ɶV`j8αl9Ý<Bmu9M܃/t؄/ފgʇ<>+習ǻ7 _t/; hMu-ycGXH YG؆&_>_Y?o3Sn[~_Mw|a_%O:}w=JDq8]Ӽ z/5D*=^%( ZPG_8->W#g|׿j{|∩FEG@%{TGП8 c[| G4ѽ6r>׋囿#xž8p(P]u4=bT}73?)v7`9fib@b428-@Y(vg]s )˗rC k# ɿprx(D ?LS?0~Ne+C~,OYH5<'_) @OnS8F?C|W|dn,yͿx?(U~ Cͅ~k@?;UA}o<ޖS?dRYG79Cx BV!)qo*;K҃oOP?VšR{jS5=QHdB|Odտg0<9Ӛֿ0w QDx 邢/@WX{a!@Og{mv۠ I{&@͢|Eu|&1=/] j@n#t\ 2Y5M|a}b?4$|!O:;O_D\y ֹ&  `O?P\ʎ_ȼٳ~]-NMfP{\rs]@NW ޾` _lm'Ptܛ5 ~?*z`o?g "X;?hzOQk.=8' Wj2L\+`QןV:T|h/.]()@hi? `f^;߿Y/ W@/=rMfQ1+/vrOぽANم/ 1k'/^Þ_Syk{#FM~糖9kdϿZzǞ0{~'>{ ⛜EaE&0ӃmM=̮O{o:j^-dt[ q]UT|[=p 4֫5}On~˯ ݿc ==3BOM|u>ߊbM:B O-rmJA|W5HgqM~ٿp]|A'F_e,s/GjS{#jUE~%Ы?>{=_#]h|/_W=elߗK#{7|usY]]`uʪc:X8VC~CY[U|Bc?I#!d!Ė%>(V~_M ؊lc\=.A@1RM/Tld 4;Wb@hS#io9'Hw82-T_)vEo_74k87+K/A yS_T(8'" )g`4埀mR X "ېŮ_;9{Οþ};yB9o%{IQ-B_gOSUS5.*0'R 5Π gTUD`gNN# D \ t;nf]?״Z#J(Э _̀?ž8_ۚ#@uBqbƋIw9a&_ʗuI, e͖"G3Oɕ0|j/ r/wBKPpq^^{P4'8GKPSh?P/UEtޤi1q7C%T ?f1ЙU{8ײʗ( 4ϿF/AkV 7GԪ_ w@0Q}5w;Ng jL?XM3yf+>O=ߎ5-xX[MakwOLƯ_=E|MMvH%Ŏq0r3ET#8/_̓xn** 8Wj5x `)`ЉPc?xs;oRppA)NU)`WiOZ P4|ͧCdڡ$4ViUzZ<~C| &D; :S`>'!OC6|3x*pƈ%M?7VF>bCu2=)` 0OEKN RZ`?cUHojޠ%@0(S0.3QFܵusgcJ)5ǿƇ .!{'kd?A#FZp] zV %Ͼf?B#(@ O EJlF?>}BRmp,VI d50*wO܅G4 H Lr1h; ʓys5RD-ɶ嶡@ w)[sr@B򉜴$X5- &׃D~ A-Ŀ/DET48^q%!@B 쨡Pۡ"{ ?ޤJ|˜} x!ƂyGIQql"<GXZah -P`7qQ_ *=;|P`- _,=9?`ll (0J됡M_IB &ޒ! 50L"zLsdJzYHRWVby*qm%''p ȈI%Ė7jVJwiR l/]6xkLXH  3vR*M?*s8ʴipnCFifh4h`"\ P4P4C 謀(mGG8o/S3k4^jc)ob(%Y%k,pJxo3_^HA^9_pDxkLxl)s'C1D*`jno*WUx@x|(GjV[aS*EBNQ & &0md@% J*a@|~mu] )T,%`R %K)`c7A 90ϰbUg|9`?<1f  E<D> Ex +ֿ|Nwå@Z g'PD|DI5 yڔ\_j}bOYȀ``l:T&JI4*-b+7q0 H̆ aO  {A'@J$(:2 &KS([ [ )`ǓkH`)*K\2Dj *D%h P >/wD )po28ژWh-YH0op 6lF@ h'o ܁1 xaUb7j`>p\Yبp)%lt@⾖rYF 0rsE@3 G ğ*t.`}6G}|Ll& :-a 1 㨀aH!.8Do0xcljl fS{MX[  %,Rtta 2`Du=C Xh >"w:vI, 6X6Ātq`N`f=1BN6Dam[@i5 z' {Mf– $oѶd1@M%Dm[ۘ' P{NlaA8^(ƀmm& l Q!t60e-$@HϴP Oo{,@6KC|nWY1Hh3=fQ= `n=o-Xg3@ h  l60c]sٖ{8&,XO@㘀IF䘷< 6D1#bz@gX6 pL&+&' l6R Pdu!!H1i_tLU!4j H)@@7ŷ;f- a Pפx ۑB>uN6pXbt@\H2-K~.Z+Clt@hMюm&/9: IGfP _GKAoS8т4J C:-~Y %riB|Õķ)agdQx[[pQblŁ 86Ag5T4*IE ŀo47 6M:)joi\O hoh\:" À\wI͉kj3T2oXh `3RP 㿭0u|'Â:='!/Q/%ߌ3@vppx 4L;NGa[5|H+@3!03@_-0 QR=Q@M.0L  hFR==@6 xWy]V[rd m6ŀt{PD|L$X2lϊÀhC|_a jeTNi"lגb?$0@D6nj k3*Sm2bf- o۝RhewNO]ECZCˁn~,Bk,$etz hpfa*=:@oQ8mYKj)9R@O]Ip $$˟'tS# H :A! .vz"I ?/l(Ps(lU@U 4-zغ ߄= xd)` q|>ig4}eڱw3]Ģ_wؽE6)Yoӿ\v6 kJzג+{;Qk6 X3> MGѯ <Xwij~Shgض@dl@wz`D/T4fP|^J1BMoYF  = _N|V P~!_ {| 0УB4>3^*0\s/09>rQHF~ߛUD/?oH~׽~>Cx#f-VlwC Z5®%0{!OkPVc[~+Sb_ScU47G ^^?ma')9o2cŰGKS8;pp0`7-L#v2Rm D?x"8fgsMZVdpX@x Q)?聪3PqK{cVu[֬Ecx6mB2 !$@l`jP wl'3g.S N]٩k|5j*<&[vV1]~$;#+GDy&!#سYY,ɲ 2Y@? h+}ȍĹ@H;?)}b&3sЌ, wƸmN!9C3q-bRa2!8ʝS"B   re)Wp@$hy-q]9Cqc$A0`cF{hcxVLUQg[~ߥ2QS Ǚ#5QݳPe _}_n5lg?8xX|L`g9@3B{?}/|ߵ?~V1}RȌtlY]Rlg?(/,k_ט-Sm N Qď@6 uP`Sn{;|=߾+g,Y $g&Z]_\> xsovʾ ~wjBC}C2SR0=8!BsH"1WW~;/ ~yYw^?ggV y @O*bB.s'0ޥxğqtcv7ξb?K2ǙVWd`_Ā?RxO{ȟW+3sg|iEЃ?z%$#m^]_nF???q@NQ @ -P 2Oe:b>=YdokS:7N3bcP^e?Pr/Eleg˽^?}Om#y,v3v% ď4Nxw:0 Lފb3l%U?]~O^ )__O?/v < oȪĵ<c _r5; qG9<ֆ `Hgz j&E+XWSM8}MۧwI`&= 7?$6ZG슳˛Ͽ5DI=:=::AU&im2R5PGV?<+-e>TO? qg9>|M9.qD/)oyȖQD?(f899ŹyxS3"G#Q_@nS1q6W"TczM/{oq(R~KR ;_`ϴìo:S 7v&Wo]ýB\_q3k35:2[Cןb+0D_- U$ P>'g.3BS>NSn1[D-TO6+ >?t {2%4;Oޚrb dz>ɼR`KTp ʗR'>'=o-_|S/xWtְI f剸N0A$jR\?)q2牋uqGM']adT'nlۡڛ znƺV?#1x V sϿrmJAheI׫{+A Wy }ZFG#oUE~%{tܒ[=7\>7y:RzQ}L> n67?uv8gDcy,A17;=缧_KӫwszoBg\ZUrB0':f ;F >?c5$`WqT̿^S?Q/.LEmJxOFTS9ьM./#$ћeO1 l闐6,ҮŕFן?>+ߔKAQ?!TPX M={'XGQ4޲%4&qOu_@^Q>pPD8yB9忕\A. %D쩪[O+>QWjށ^Q gexD0@z',߻-wZݞ!q $ ȟ7ľ4V}e@0'ECPܯlR:qPRB \vCd|F,zVFG8qT@NHU) @ | 3;Qɵ;_Dd?IW 4:S X{OZQ0A- û03O6W+7zɧ!@8 א ~G|#! h C.s8LKySoa^sM`lMܴ"4}Hh&հ؇#]S_o|P Ь/uy9Le.+ )zN0'A p>9C %<|fP Ϛ; T+d^ T@U\ _5A 4h}o\`ea'@c`qHbDF 1BtO x H]{b+T. .C{` ebx} w|"0 $W2$Dd[I h%EoZYB c>-_[HI]}Nn(W ,-p(/'4b;ds3t`.Xd fd)qWm+qks]i:KC)xR|Y=? GXWp~>6+.iWT-81?F9~\I H:آy)p^M% MāP ,yGM 9S*~؜O'X-0 (g=8 hHP t`_`"  ƦC%`L%,p%&6言ِLfI%#\iPqh%0(I%R P+zTC|਀4B $f,tQTSq اEqqNp@M,8 B>ʞ Qש2+P &?C8J `7h%Y,F~ĀG2@0Yreax~> IK}RglO*|-LFJ`5b) P 8 ?CUӘ \0ubc`*̄ a"`8sRZ CN68ߡtZ㹀U<ܫkuB À&Fn0~lH=?8za0Z h (# ^)Ė1'[V 0oz'pϘH0`':% (!x 0}4WC.l2p{MpMvnJ>Oi { z wqUbn=o-h0xg3@ h  $Vm@RG=q6pD & 17l@v*< p=|` ׸NFs.i?*ѱ:Q-,SI (H0%*r=jQ|k7ikRf|Pw :ᮣ1P1,#b= @m)\Rp.SBvEݿ1[z'~y-mܿMXQv!b?A ^8[8N(%231`EXȁQblQ> 86Aeh88se@ŶeEuq^,'WP ʯ2Fbͯ{Z"oh\02`(։~r0a45hKmN_5 xgz];7iڜq'ր lX ;#1l i+DK=Rذ.a qfwp|'\Hvppn 7۫Ɯq-0KL@hCO{K1"web z 8@sI<A@on47(@lxiX!?mBl2',"oqd=As|KNn#I"[~Ȁf30)ڴ5fHZWF^"f،z/28!j p}A6=90dMǿ#qB4ӬW, , t%WZ^R>&6]M .DL9wāU "J"43׭HF\pO|<>&DK4\ h >KZ(؎Ji|P8BlK8!ijGnb?PrDj6A:h||pWkǒ; ]z|XDXJPIL|cx}?H/Wa kְZߚj57#f=k<̹ʵ,04b? h%X0g$-`1+ Mc!Y@Μ!L`!r #Ra6e2 SS~"׫ ˜hsG /l+tAW;{C^7Σf%CtuUG9@N,f~ʋ?C3|pwfCQEyNd΋Y-)/k"rISyo_A 6uD^Kք~OY ?/&υGvu>~_;ܚ}j)AtJ*K?Ć[q??ߠ' w8*fi_6o\wa$tDG1P3JÀudr?%/K[Gg}Go\\G}J6?e - pyZs'o M߯(epG3pKVlϦpWCnq4ZE#1aM_K[,C{,|"&XV?7(G k?:G6tٚY?M,EI|/>>9:w;O=_w`xg_]?Rb}y#_ɷ`}_bwʏKsHD}b$G8T}'Ho>?1V=xzOb$:-+/o?R ;4~CC3[yן3%:RW5"@7~7Oҿ/P3f~}Z2ޚx_3w9W9~E¶@n/'$MɧG!O&n?%p|>#w^?܁]o &Sq!1p)hB}c;Ė|POٿ!>Wjw<'-q.3|?ǸH'@GQ=R ߇v_Q>k`̓m*_OS?woq**wG\'uU$.~J%\K qHTH)_;s@e |-OvK?f?`@/A >}Knu?A,@,|8gOrkH$oLlM Ur/kix|Җ-{g-}˯O`N> U'g3?s7?ZVO/_|G |9*G_W8h ?V^,_7A-xW&X~[`K^/\[us|(˻^8?K@O5Z#uIܛۼ-X~#x-UK.J\MxAL6qF@of0+V0{]zF7>/rI.3S[P9/pVWOdP#P=Ɍr!1kpK5Q95_b?{|WTA`NlUVTC/_AH 6=?rQ _@Wps7(Ma$jeof@3OQ@ K6_R(FAvmBǿF~l+Y 1?Y*]jM5y!l=<(Z`Lg`+l1 ? .|pݨ8kߐ" vƾI_Ѐ] j5) {3ɇ;!D )k*rPc)u;oyL Yk ݖ? wh|Q ~WT8۬7z]x_#ÀUUW{AjƬF?.WՉ{YtA0@/5Еjto$5?ȫ|/I5]>d}c'| (ǂW?(Ts dwYEJ0ߩ3Pҟ @%(p*ǃj>)0n- RW@sk6ga3X |s5xuoZ_>|]_πMwL4:SH-ǃ+x+⻬Pl?_4? GxC6GYSc)pE~ނEhwݿAdj|QV劬׊怚 ^w}o/ s8#1 Y< ЁM@A h;$8 a9 | ]>1 ^!jן)0DCU P{@jޠ%>Q g?#xAW+l%[;%)A ߰?.SJ`5rokt&Vu)'@>5Q,7g_sj8XKQ WGagbP R |?\iuS@OpRl}xV-Jg5bDObXPg9ް% F MρQ9}Ol[n4r|p@@   l&8j׿P+869`R` >Al"x2fmvy-E|7;@-_Gh r=M poɐPu'Hy!~ !MRŸ%PH| _rpgS|١}=AGLSbM[%RJC6Q O]+N=JPuYf1QX%PIk4uT Q4Jl+P %bсJhDi0+7K>.Vx|FyK"6S/!_%?QLܣOK+q$٢8JQ eDq T@N׉oD c"kJO@t$=?ߗPSouSĀcӡ0@pUD J  ix6T>6*`@Z 9JqR *`٩ %PG$G XGJ'R0 BH`)p) H*j L( 5HH  YQF+p hc)٬V4`>-F\aF@ HXlIW @V,|mF k|? k5z ORJQ~_m Z P+&) 0rsE@3 G ğ*t.`ֹfBmfEs>O182-!lq-[ P M1hx ORpÀT}cݖ_At:X]02(#| X0mlEP&'n#Il[lF!Nt@<m 3t66>CCBg2AG@%#1@3-7 XfT(<=D5Kğbn>V 0ft/v2)k^6)E'@sE:* {h%`g,ta^WhaC' (ν ^2KP hg0P@vj0?i`Z X=I-YHd;#, ;6D1@Ll`,e# =m÷Ɋ 6ĀF*^uaΜE('Z&o 5(H0-M[PfMꚔDa;RgcZd3^bt@\Hc1M>\Rpz;(o|'C&@4,ȏ)32W\Y{Nސ_$p:0`zp.Gm@&%|fQYwf! *}Jf1,hz-/i\2h/-*=|T.2`=\j tAN4= x} Z@&g;J*Cx7VD,Hx3O(% k $|(piFhe;>/$Y"?̾fe؝.< xgZWChKL`!03 8:F \H DYL8" |ñD7GĀTV 1`j8:p}#\ҳD  m6O{:`sjOmG1 ޶2 8 h69fHZWF\dzifhZTl{A,?W2&+4m80dMǿ#[_Vcߟ!eA#@`!9ʯa|SIˬ.VK]%^!gr`>l@Lu5=t |*g' p)U'; 2-}F P&8 p=L r|Y>sCj\Tm@)sE49 ,  ,[D8O?(lpK8!z#(R!&4}eڱw3ͪw1Ģ_wh'DG_}X;ahQO05 Ԅkny9|d6 X3>*>1d}"oWaS4X5[43"%DhN #G a{ ? T298jz/@<ㅍhqz0M:uzȆ[D~3@p@g35GjvQ9ž4hd7=NY7$^?Vf#϶Mek G owп[ȳFWl(G;}+߬X:cwABi #>iD!C3_(&dƊmSv b(]@QnP8. !h BD؀yCBtX m[s2};oڄNI@T휁*읉[ipzi2AH]}D@D$ܘ9I<~~]@*=3> 5Q@z6K6}B4S  Uz\ؚ0iXPVWā)akV04ʴxx+Q!}Y@O@Fp`uYV=>- ͍a9pg@$^"3U~2nؕDDgF5үV۾r' E~ܱ+I暡@"-%f2 ai, >w\= R&Y`Yk9e;֏IsKKzj倫f;  j[{XD38Y9r;0mSsI$PYot|`Mm10~DC4>;><_{;@=ƽE1"tJI>&%`悫&O#^4 M9H]g{dx{("Z+h!>%xW6ѦAzAx; {r $  z8A<ԟ^@ Yc3^|5~cƄpWYgGAG\413 :eoI\b .qWYI+kQ_ =mbm{/圴boB *U0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P+3aH}agNG*s*9aa_}|{:p#TA }a_ysN*YOI;/ ?>tޠz{jusrUg; Q # <|Oe9q쏺K>;;]?¾^*sn=C )k:9ƾ//~U㧗l?v}}a߶=I-)$ (.--e{1{8g򧗟l?|~>¾o~)tpO0= }rks?lCvo s$ v˗_r̞Db?WU>Ā5~Y`b?!~}S 2x}mO îk{`@<lB6Xox4m?O#q N?(|&| oAuϩ#Ca|}ƥ{ ϛ}|-jϗ޿84 -}/?qMcU˗/!{grҷ xI$;U5u{W+lmp$It{#ρa9,v~x*'bQ%<+j/?UKIdcPuzw옽W'}{sI MQH[~|f}5v~A|R&v >Zީ@WĀS:%`Y͋pia_gURYʿ$/נDG5d3|'9mjc~w#v$PgKT7ql·@SÁ 5a-sۛ( ŷyD!*S.o@,rwZ}LfU0&Rut{  L _5>&r??q缍x)9a,uzזo]#30`U߶\>|:ne{! Pb2ծ$x mbZD&!$چ7xOS @DSr?_vg_>pʏ(i wQgx\PFvd߅k]e{r{b6?|z!fF=ݕo*AhOo|' H~O~#r6bUݖ{Q+(Z A~<߾lq|[ @ zo8_v;`nMAwV>2` &YM-@76k勒}y݀:!J-?u/I X>v`*w9]^)`]h{^6|> yDz=rL̫e$Z`Zz%;+_l>)y;1@L)?kOQo?2WQڻ$ݞmX ltbWp,=&fIr8Aq̟ʼ,3CybM~?u @_uT8ň:=OCϺ}wO*O :7C s@巽:x/n =l9*G#8^t&{##ɐt7o6{W7aā?Pq_~<]EBbWOuPkZ7$i\ur ޜFyۏ{ެ7۾L^˜ -5W?9˴~W+\ _w`r:.=" ( 9%WR%~ l'pL O$|*w x/=ϯ;Z?\%kwdб׫gg E*à Y;_]ѨPe3D_NҳU_8\5.0N(%ۧ{>DyeJ̝CEAHuOhkt9 MSdG/aPxv)@﯃H l+=@3@}z\m>{I߃6M@PG8oLAhOp@i5_(&OۋP[l-%⻼Gl/'& ;c+> xi(~I.PRYK:e 3 ABN8OpNGruV\ DH#bRI ɮE0M^q_Evڊ~ p@k nOQ~`)@C2Gk?G>{Qa\9M~\ Y '^k  ͿS+zՈHk 8P?rٙJH5 Aa&eИ]S @E92[j~!t_] '!X XC;K3qTHѧz(#%>ZSHP˦Cu k!i|1|! c?}]b{}bW@\4 @S`=4cC#WGFk (jāߠu+ gMS<Вޢ7Ao#*;Y%q_)O7ŶÁV T_W$ Zx}ZDP$#U- p P xbPAC2} d_wH$@s63ʯ .t$P 5 G C ؿտ$-bMS=^w)lg^}6.ez3d4| (Vĵ:P7*w@&Ƞ{ĉ8( (AnxZR _C NWZ>˧r I0eߎ@i4 VKΊj`)Nd@S  쩔>z/H Ѽ4{ֽ߱Qh[F ;fzՌQ@NY{,j(TH1| (D쐧1=:ؐoφ_fo#q1 ۓF- rΌ4fn6MY^~IՔ+x'ZiV{5'V |`@r\st,we p%4|#R^[puخwMOz?HX9a76 PF$Γŕs$H' eq3hPx|-}y @OޣQIC8KD5"-%L1/g2l4fȯMrnhj*]sq O\U ~xb(0ܯopZq)1X#XOC-Л (-0 ) X-Q@DH$vnB~p^[Dp"Zwf_1=HZ` pVJ,%ߧ@8x>`7+D ')odM^Kys sf&`QI+ٿh'm G(kB>m > "!5Ŀ@8kKCH~/@Ŷ O BD(Lp!Q k`F>n] Q&<!"=abcE.O H<@ #4z#٤(0n> @6 ( @4hE6 )>&l{30 1@6q@|qܶr>AS`H^ L + O(?J [n @؃8eK$V~PگG(ܫQﳸcIpmG/q|*?J3;]80/0  F3~$`HGP0  @Ч yl'fH§&   `uZU:R~<܍" p"*2  $D.hf D8&Dq xE_G7{Qo`R@\ zuY.78Π di#jgMg0Z~~ D3JBv=C-jBAFP~H|.r_z  @mQ@R9@cq\`r9#M3 m>E3 A.X7'  o05> `Gs 081=>lvy  &}n.n8 m{5Ewϛ`ΛcIgV9}I X ?k( xz} `^gā}k D˟'<ΖqPO x (ޠ/>YJe XX@ hW)Hb@0ܤ(0"%8@{6ԣcÀ T]h9GI X3=~-meN&@|Q*ФG577p2ڋs%e?"@ s}$p_ J, 3*h "Gvn촩f঍5^83Uf~оK|ۇǞ> Q&8bF yr|sEu;N1 .fȢ# YڋKX18XQ*F|X}G@Lo||ͰB=7@'COО2uujzZ{!QZ+ߌU2߷mYѮI㻾kǮ\G%7Hm}>~CHPQˏHk]M9w'uG]Ϋ@'bgf(G(q(p͸H/l"CϹ3*>?&fv*L82@p@31$o"?pw\`>u~@=B$1hG(uCF9' n~ x5P~aٟ˛DCV-d)AKUb~O)G0޴m׭ B>!K#)놠 bD8&KqKGhgE=APDGfnVں!^Pj%CD{:8@ٮ(eC{MP `nMPf 6p^6̸㿱5C5`8 梬S ZSWk&04wE )`m^\3tc(, ' #8:LPg,UhY`hH^"Y?[Ӳ , #u7GY7Y+{a3M#, gؿIE?lؕ[$k9P@nVcPZE4 g8אCfh@s f@f |]fpeH yqI`9CY'83&2YoA7; "qF8iN֊Nl}ά,2e%v~;{L"lpD2BdNL@C 8cT #HmkHjsU#X1AS]ϱ*.?S_ H~]Cy?ג7y˗yvԻzCl^2{-$r?(>_4oђSv@s^qGm;C1^XQ?09P7fL yBPgq(oI\b .qWYI+&J_B}O`>mGboB *U0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0PqG/- ϰ3[z)ήβxyf}a_Av;_/ ?>rЌΝgMӇIS3WPطc_sysZsތYΧϛ+ ?opsie~{97i4&=ݶ¾]Gl1@% ŲkPZ-v m'W&ً=V:|O:WŪz^#tYkqG_EbHN~1`"i?gcd1׹}өZSe?ąr\A.l-ƀb[uS~ߩ ȰOd@/eɟee1 ~X t)-_3`]}mA5l/-̞ |`2ϻG?E`{7uB39@Zك @8Mӣ2ӹ}?OGj=?1{`W0[jS9,0`q$wbdʛ jD5t+ QfOFO#7BV-_snQ>:QG:`so5~W'Ā!Ol?׏{~GI?eA̫yޤ{~Vԧ ,xBbPP,0Iy[\,:p *-a\7/G rזWG'ޏ/_} SϺX> 1`A^%v ԍG ī+0Z%>)6Fxs۷~ P[%GrO:+";$W>;9M_nY=^}f gA'~E'VS$D?W%`0 Jʏ<x'} Akb 5e1`M]$+{=IoH-ۧ\9~Ú{!H*s Hp A.# kn߁}Auy5e/ >c »CG(k1!ۿ~xoq'vP Ě/CN#&@}Wzbp< *_'tVslC=oya'헯,6~Y-xIkͧMxZݢ'۫s`KznR0Oq"[ rWx/ۢ -σ÷MoNkw c5At~C}T-Zؾ_ ۋ%x3W;s6?X R>x(W{Y0及cUzrJs w]a갫gبGlvOCtUdhBFyd_V죘A5Hz;WvU >3{~Q|F=7((I\,X(_6ʯ*5q-i9fױ؎/]&DIԗ܊WT-pWQ 7+2@~n})~bN]}^@ewaglY4ߩ3y, /n^S@$_OW yЎc_ԗڽ~35ՠà5 ɔ<,oA ß-S~/;SX~G{)KK w#Ar<ż&n .aY`XiTQ>{,cphN?MZ, T q'uk bwq@kHȝϿ&! k]bݫow? Sz1]%? y~]ۿ&}]|0|hv bS 7GI}UnYy&z#"_~u`$0Q/+>$~R }Y R7H\I^ݫtQ~]zn.M c?k{nթ@ym_-^Vq@ih^9{Wr4 ž݃:-""G)\_3qPoNsc'KqzrRNB (4+GEEfNb*ഖp._< 5ws/ݙ'g-䊧E9 nŭ*s=[8} !-SU8)> "Y'wAF2fF%zG#s'ؾz̸N/Qq ~%{ ~U YUtM ۄ߁껺E昵y~WxMr2NhX}j-Rt(!gL%u p\t?c옯B)Ł87e{9R5CV I3 |j})pݺB=$ Hԧ[!qQ ſ`hȸ7/m> jhA pO-l^Hc5к hm/Lɀ}pP<3@S` D5v Y[D=}}^4g!`jHBG`>꾟ԠG4[S[&K )NPeSzUk xKTr^.A ~FTڨuuudZ~ONVHX/0Xwf hEsC5֊0}b4{ |<|"3$a@K h߁ hA|n@[/uP$`K6%S#xP/g=DlF=Bk"vԍJ,8sMZk @ݏA?'Q1[_Vtԯ#A֒"%Y#Ux8EWT򩸢C2;oEC  ZQ`v6jIH8klg+C:NHWH` Wf4@ w73rqEaFKk~}訰 !s R"^@Eை P$pȾoANĀxa1?*Z0Z* Ъ_w8|n%> فW|]>ĕ(Q>y|kN_޲,7i4=V?| 4%  kfK0 A^ H:Ou m`4B5ԌQ#e>Z~0j(sispW!L~7;+DHP~Pگ8`(vu@L*@ |+KMl 7 )@_~$ S_ >€IA>KB$V $]w)PH`}dޡ$p`Da6vhMwwJ@<x- B?X`%qd/p^s$H' 5OP  T'{/@(XCL,%@=¥@|7;c`37bM)h)IFNg;.˗{w$\_‘0o )xKH )@ z-B@R>w>"Ngc"F\ PZ|Q0v׻F@ -AЃWq-?F5x _e"@j p7  j{!@ D8!`av GQZ ʏ+()>c#^R$Gb9HHƦ_,]A$@=ńHj{vPDN$@)f;Àh$UR$+Dl biA$f$@ޢ (0bX$PO!^yu>6i5r|'&9@RQpP~mW(Nْ8W59Sa %&?ߡ7m"9Q\jDQ (@_^ @p}O jY:c <}j֌ | 5p0 `9/xf}1e@b$oSx@:w"'H DDUd@4H\,lHa' 3a@4Jl",Q7/) S?n=3ձfUS Bّ>F3h{)p`B5kvt[<cq?# 0g)P5pW6 X P#9Jbjyݼ(b%8ď¶! H yМ 6TP&sÀ;3>y|vN ˀp<`ze(pbz|;W|HjO+\`p)a+,Z _lw8!@o@xΫ>RsK9禌{f( 03?H^`fSʟ48؛c8"cZ:" -:}I MbLؾ(@=HD?m2@GJ/MȒz̞>ePgt{R)agI@ ̘u@pG4a63wL1@qK ؑu'5{ %3P@ؑ7Æ 3Di1[sz{T<%JNd XX@ hW)Xc QX@+`@8yfTЎ 1c8V(^0`|;U=Ɠfzx D>,0`Rԙ)=ۚ6P# \k뫲_zlv3A}~> I73pP4}s '3Gosq%@*z\(ʤhpc!LF 80 Tg"Ȁb@ldԈmP ut8 MYgoq`GA I5i4̨& "J|`(Q.P9E?b;Gߚ(AOE&%AO`:sIcanVOD3h@թ]=B󄼺87|͒S8_A&?9=.p]E}@:Gw@#3NŃ2=x!0 cC4jq੡Eu;N1 .fȢj|CVcg~^Ҹ@šVKq+OHD `.F wPG8C@Sb446X1}kݑS; ek!셼_Gk ӯ4G%/eԌh 3+v'qbzTOT)xP|~@E:3bQxqqPK OSdA$mE2P$`(G(q(p͸2&h80h;jW-`\vHWz`0SG7 n8;.0:?rYGsМףO9syvVto~^XQ?09P7fL <; R?@2",GPK#qO_0701~ڋ{ =mbm{I3F *_ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PV~A{Z}o~}a_Yqx w5{;ê3̝ ¾c ( ovϪ ¾# jV )191}aGه,)@ӣ8yO"`QK8}{L Ul|a*AXh$98<78ziZ WgOz+?|H=Ք)'){Qiwtq$E已?췖__c9yC c3OE<PV6hX'U1a_|yQ~a_طkB]c 8Bلւ!~&܉)ùZ0s<]pc ^_}6ڰ<Kr2!蓂OйCj,e/>b{sY7$dBɱX@U:*O1vGY8򣯟J?Qac!)@*7-HViIH3D.J>@aĔ7-: >~pw5at4g? Lgo`Ysd~VGB;D~G왺RCG3rT k1(fn =yYR#E2Sr߽c?ڛwkT07>=-O{(Xlq7dY [?əO XnSqYCO_*_/?8ݑ[{7ڇ?murGl0(?4?"?{Avwo7= gaP Ɋ_h#`/>OX6DB i(.O|cFRϤJUm߲y(wWrJz8 tx-_S)Vcuq R9oM~wq>c3`Λ8<EQ>`ЯYE ʏTpе`.6O*'@d/Vx^@?fT}ٵgLo]~3`3P~?"Ho)scK%Ǖ |P^mn{YыW@/=#gI,׬*t`a@s jV,N/ [! ʗzuf؆`^O8Ѷ fuDiG@s꺑KVDo^z!4e/h}3`*J%eϿ`n _~HyO >|"cϧ@mAOAFpuZ>L ^Nň~HH'6`%qbnYHrQ* sO )?ixk) (Ueށp8S=FQ)l[lw>k ܿz-cS>DᕼoC/C,0GsS3Ѕ}۷7h'd%^:SiH nj8Kk$*oNG* ߠ~ku \:M}6Hmi YMWkQ0|z]]Mn{{1捊1ey>!e[MIwpu>pr]۷I]>Q#{rP~nӾ5W2k]n;,_! F#_@}{:zy/jι<`;Wï;x`}^bu 6aLJ6ſkol-%ODqmՀCW>!r_:wGS,ꏮ[3N_NdKāʧi|HJϱHSEC='>AW]f2 z1;x]o6=t_]S_? c4:~{ ~wm_i#Eqŕ[G𕽯Wʤ Xuj_6j _f=N~Lwwk_i-Pu^U~sK"h7[Pq1&ӉBؓU`gqEN"iʪ]ބLhDW.VntZ>V o{y=s]{|Mtv{rRNfا3g;RU}MhOK42~Ƈqlor~ö@Mp ou^u{:~NWrHl:VGjrge͉]nxs9y.sq-s>' `W/cԱ׹jUU{ #=MQQLh{\!iF?AMr˟!Bx  IKo[҉Yuuq L 9eam uZfzt oUŕ^GʶqP~v1 10~꽊 MKʞg*((Àl0kg}VET5᭸"f?( Yk3h58&v]@3-E91al53Y=xTЂR|ގ=|TA{EM =~Tgm߬%ZEz6 hs `PAYJsKM#" _ujP`oeSFű*. '܄v@$iE[l)|ٗO 6jI6PDw*oPG +- DKOe< e˘]~ :A hY=z.U@| bLP#vdz_4  Se@ hE"˸6MxϛBQT@>ZMX^E]_Uc 0DFz18}O򘴋cCsm_(q >'{%h`XeC|\Niq%'S \eFZnv#BM5#ك%Q 8@?@j̀ HV}bS~{'"N{(@sSzQjgHg 4=A +55re2CO-iNODJ|Mz)Pl$6ؐo͊Q}'x&NӮz  @}ox 7dvذoz~z倦@E4CG#[Wnh(ࣿpH`* _Z߁`'JQ(%mFXjP2Be'[7@6`%qdsCH9OP$qb)yq Db 1`,LUbB R`z"kۋh$% #"f-"xYC @hC@$6l>`"J@G8f W5o@PA$Op>&Q@(H'g V)+|1pN0gܸsϬ! "IA׭;Q"ńW|w`[] ,rg[́Y"{"-? 1 Y!

P6:r>d &3kfSokDW{@q0`l!EjPS  l/!P{'% h (q#ޣVtJs@G L`@>A XWL"t60e56){`ȐC#3`yAx Fz0`Z P 'xb6y"/=*`G֝X@30G 6 (g1@ hcGN@vD )λsra?qhb.P6 r=|LN "l)q/110s%G:'(ub xO=ހ(  P cA# (f};Ef~hT{:/6; L} $8fonW2dפf. U5q<@ˎ p7~&FSpoߏ5zhT 2漽O 0Q`ZRpL}|Uw yu:cz,%#gm&Rs7r>>Oۆ= Y qB1d.h5٩Ͳ Bޯ3N<0>\.Qz3+kǮ\G%ys}/0?GSQ9# =|ݥI_AD=v-j~ Q೙- YW洮#1# z!bi"C9 bQ@"?Ap0.>?G|Wt<`g =ʧi3 'pST]   ьA;*PO=o%{zW=;ZAimg CuZ6ڎZRd=KK ,xW\,QF` =Bv:e+^h9esRdk0#01# H#hu;&#'YkhpXW aPZEȁ_@U~ျz_CGD]7hV¿dr>8D_Y+Z?'~;ӻGwVY'83&2Yo'Q76֏qF8I$PYota.}x$!ErxS|&ꝤfڃkoGheJ'hoJe {D$X #?#'4&7ooU|wҒ\ekᮠʧU[-a' ͫZ`;ggHS x= אtP8֢5(=x=IN/PCo+mۯn7&x7ggL;#ȏxa9$q{~D5 >x/B-Kĥ~c忄616wrIxB[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PV~e΁kca_}x<;<gXd;_`\;?' ¾_9ghOy?'圗$! =yANUQoOޱP tp9%~ګSsW ¾#'u?wXӂ=>H>??2^ElD paWJ_Q&Wmqë|@Ȁ=:>ᴣ_aP'Ek۷K?xbXLuhmzKW)ȭz6ky 1SmK ~20 ?)4M㢇ΞF`Lg|)kã.;SJ=Vp{h8q,N.=? ?|sޣ-{W={Cr39E 6մ c<)ԣg"OFB@bkl+)7|$=JM+qr@܊kxWAD\߽:]9|ƜWIq@W :bs**]3b[}l^Օ;F/=<2WNgt" =sS ُBp"j{ G:w'._Sk&|byVg]95[YW \Y ~VkW ҈o/TyCGj؛}<'c_+KnQ<'1ꪟ!~θsL%[X ,Pf/fgqfC] wV> ?hmg#.OC8?RQ(<4޿˖X?6.1 *PQ?1`Zw[/OX 򕧜ft p[ycfb[3*&%C5Ss)d^E:FW1-d0;fN73/  x޶=zX r+QL F[ hm?Ծ/Dn?}GG=A7CyO^+ V~a!Vȼ 3'$g5ys3*>ğvM,JT3@WC.T@rD$[p)0/ھ:X@ZbW]rWH {"IPs>ן)Ԭ?e]A=JXc5x/cfCI5 ܼfs;O0Ż|Y/y-+?s9 ufeꪁ=-/:~nj}wڳ.S]^o&pěj-iO;?sOG!ڽ>nD~n}#-G}9wZwk?ҍ=v(@0$uuu: e?ۣ'{?ݔOOKlF뇈67]A^B#ׅv-51Ծ%_Wh} nbK(Cs](S!'ZD^g3o78>kOQsҫG me D f?o.n8|y(N?\ϯ.͜/b0w/)"wy*{'u.g+L&Pܞߙ}+^ulCѓ˯x:~Ft &%8+[-^V8vvz E|L?$Iu\c%=,-;u.oN#7UÛ׈uXCb{{\=:,B[n?qNPrRNBQ~:~F yQ߳?'~PT}"'q>ǷC&b<=zEZ)p8WXG~3̗A_>9;F2BVGjS\?)1,Į7/`n{ _1~ŖA[O>:W5U/vAW|EG ׹믬jzW='NU]݊f~IAp(9?0 QC%3 wZb`rD7UqU[> ZK5?0~Yڡ<K'<4k{F꽘uк3*$њ`̈?2C/%rٯʪzj2]t!򌋭S|^ā8\>({ƞ( @ *HIqeJt$mb ؏ i Gk-b;_\ țg5t)k@{&Cڵף%'5 e")?1X! hD5և{sD~ .m$К@@h>M^52#vʾdS!R/(?J?u1x}P gS 憎(!Ħk)`ZĮiMC;Ip3/:T]~'@6ߔO&h]@K6 2ÁVphm5Ab-tqzDBp"b8{8=wʫ!tY=C:h@ Zx,zZ{h#K,'h*!FhYnzmځ5ם:G( ʏ{D{*z2  D G(n 4kV H1u DL.F- S?7Yx??Q  (5žN*|"e""[׾ <ih Gԁ:cP8C]=gsq&;h?=ji(FS׌|:G2ʧ~(*x`/c,WR?;H@PR*@_o M>h4C'Eo@53||$i {kl* _jF(^hkz n{E9R  `7 $p>&Q% %ނCbG4J^?bZ^޴KX vǎ죚pVtgm}K |n=X;f!O:[[O&7$ $.2~+(J[R )WR3E )%OmG& 86KE)/Ԭ0 H҉V (ŮSpgPu HFH& \q(Dx$Fb@]5)AIM8LM-w쭺 ٟQy{,^-A7  (KH`7V~PگGʏP, FP˛D6 Q! XYE)}ǏeOI|` |= PL$H$cº/@L?0 a@4fi? Ā@%Hg §&   ;h$-Pa TH Lf!Jv8| cu(@Pb#U[b6PB"=oF;(pm`/&󠒢K{N3@0 {+CYO 5 ShBW6 X A2.U|c/?>Ep5lC5DI>Z 0HFrq\`r9#M31P(O>L@wf|蓙?:) sRGHgl7v7 C#3؀A7No`8(@3M6 / +Ao~a:}GFKn?50e@cDPkbj? }O @&p@h9a~>E{w H>338E;n 8@KG8Bl9AePA8`BM |X@ hW)Hb@rT0 W"zow &0`|$r; "fzx z]B) زHpig5"m"u Te3I hzh d9/ϝ/lf EP7ybf[2`] q$?$ x@DF.M& {0slQ"Ȁbnćt@ 3 V|f8pȀ \D)[6Xv|7΀x+`'m>! mߢ *|5Qi$ a#Jz,r+֧S@t@Ȗ%'up]5D tBt!_A&?9Ic. 3*x4ҋ=K?t D]E۝"jDp}Ux2{S@s>B;هgκgc$wO&ꩡE~P\XU#E Ԙ<%  T (`36)9'a c+?}`xwGN\'oh~$77ăQ ezo5#ڲL`;ߚxP Q ?Am [Y7`uhקR:rJ(f7uG Dlzm(Q>ق#OyyU9;;HP4_Ѩ  !95LL,G|S\قLu0_G@fN< ̧xſyhƠ'xRK{z =gZAoemdJuZ6ڎ7Wk냐hFv8qHg/U= 7,4{q6L{\p_6o֏#jomdkY~g}fA\[8CBRYo_ Vm.HO{Z gr z3g>='M!>%xq7HobNx)2'h~ W>(.Ir*4h롷?qWto0΢vs3&Ԥu8<^`j|g9_[K $O5(I¯%罄61湇>cPBU0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P =l'X8|c, ϲ3>Oytjwf7;}a'|pn8{7} 9$Pgf155ɍZ)-Msz ¾C r}z>U)Wym1}?w(77Nl{Is K0}a߆&~oG/; G4!y.OS05}{jS?Ou/wՓ_g؇tqpNA OS3b׀;}a~w1*0[SOwfcMh+m|M~j":7v) ]~7|1=#! e#vb u-hOg W>s|X 8e矖 bU:W@͑ӳ،I [6^*7{^r[55)9ݔo\o}Wb P HǶ1ܗ!+z܃Ha5W/\C-%Yp['mq޾.(5 $?|&~'!/__uMob 8SE| l^>{<ag8mCSո\pELm?Wq,Os~+o%-Csyz(`r'I/l߾Q_y޴:3%p!oa4 ' yJP;c5\{_k{4¶c]qS꩚l%yfrr`t(R/w4PX|U%{) ,?{ވ;S,S?6˫bAl꘼-CgyItV7wgMu'zRG,p. &&6N&AJNHfd2~U-HAB_k؋X=߫s5D)|R)^xyZS˧x0܊sݿ6?-6^d/}~hDRLP8?i>u# ]Ж=3^lx1^OSku+y%}Q1)$Rb>V(d-eeU{yWO#@9?l)g` qeL@ "eVOw7M]U+&_5?OKP!{Q#@dߡ=R`As ڞU'N&ڵWl0'OAFEuL$$0_tW[yK+vx{z{xõ~^=勾E6Z:h,k22@[#D+{y#O/#UWǹR. ́)dEcOiw$zD1@Zmm΁꽶_!j|uhPןb1<x%v}|Q\ fB Jmk.ќF'bq/feO6 P$pR;S2Ć)"û`ͩ|q,Dgrzt3aq{K-6Ъ.9_y_}P,Ɵ@о\j{Eg{1sglÕeCA]=)+/rm%XmJ28rH|xګcVFh*]VOS6>b/_6[{]{[j(e? _T>R`;+i⌲ (?}?A9ނ@_%k;X~U߿~'@Nˇ:ЫWR 4$=q, ~=rߪ#V@ `Ο&dڿ@;_]sx?Wݶa(dž{k# .{5 ^h־ dum h'A7Yo%1Rt(N{ROwpsWb^T娗0#}WoQQ|>@8g*;?h\^+x+ǽ `E&:-[2A[Hmbz^y zϿe =l:tpvfqy-o:C7T~#UoQ;+""GA'  rJu\P=2;OY$岷?#ޑ"y~Ǵ~\S+NG\#?<80gu1bW|1 ԡ'>Sh yՑP:S99+֍vy|9[ybk vP4gSo<_ci y >ɍם}gz4phL2R#k^!%䲯>~0jgl))ny/Os/.54p0ϑBR>od%`}qUQP':.s?_w.Gs=]&猯A3ӯ}i]<`%3.ie3Fojq;B\* pMlQ{>D(pD/% ^<kL=d?n p$[J$אR4Pgdެ<|tp~Pg inuY{39>?W"5΀_J{PlT Vf8Ge @"n 徐B/F#Wv-?L.|`[nMoQ@ бDmx1_2o)-2q\d'X?]uۺo.m"p9ך#?R=䃽5)oٲt?h, -5!k?j{P_9 hv|m>\̓8oTq:{,X] >yo? g`)`Њ b/ꎢ5f?g͈Xd}E_:: " 9 ZQ@euP$`K64WO@<0@?Fu;QuyS3AdIw|6!q'Zk GO6 1!q%L9;|VׇKN-U[067Q.zng- 0OO΋ >0XZom@|U=꿱uP$E(p~+"0 L1S#0B>a?zԔ}O=@ dW=֚\"eVOo 8p)#ZAY~LP"C%}PobN@|,|b@+ L/P izRpL}齃p  OG$h`*i\ L4A^l :kk)i^N>J>85c^j . -q;P9V r[&|[&8*jG4)EI@^ptOCM 4!q`UZH@`P{#r"9=Pި7=|"z{ ՌQN=TDH$״ʼn+T@ VRoȷgjO3@HL}}D/=3fv hG 7vSׯ7$UW^{C )@H(ϟ4q-C+j3 ;j9Яϧ\kD:~oW & h"+Bo%P`)>"> 8!QRb(A?6 x9Ľl<#  Hb^ުDL+)yZ#?`nhd>J`P~ީWYGO|OPFM_7eɧ@88oC>j'w^O^9"yS.>*+`[0-,(-Oߝ'!0p(0M-8l4@|7ANWg'm%GM}< rFH LW*hɫWN'VLC!q`)?c cސcr>ĵ'Hy!D^/VM0Q N!(' xol@ @Dl7)yzevN9! D#exwL$Y)q?#M{@8x>`ޚR`Öϒ тt`cHr XuSճ+[0k@q)@k!X$P"S6}XNL:[DQ/&/_w/_s Y& %OcDKW(۟U$Ðg\YVw?Ā [@ Xw@b$GbÚ:X&Em03u'DP7YYya0 @$Pڛ;Àh$; _ O 4@#-yW  yxcIbӎsb;V>(`a LM.c; /xckb LA^-L1+"HGrs{pV*F_@ d5V>DP˛D6g*V Je9HTYB$:yږ8ӵ)0e)޿s1`hƏAoڛHGP@3`*ެsYA ve(`"0t$DO( '"$+qE=q,lHa' 3سh: P'=aL*G.uaT@gЫcͪ&d}C)pB[x_`3-iy{u5hpiQ@e b2DWQ{=QX xHw ? Z aWg(=ޔ<"K`@ ٧h&sÀ;3>3getJR#@ 081=>lIx~70)@daxp0 He@Nـ33 \Kuk(0_=>괷H9L@ti3&@£t 4x#z֗H'@_l Е$cN:`u#N,pC#`GX 1BÁ 1`ݎDs@>6Zk8'H` X0 =O ~! 5 H/V!QݳԽ`iVP=%BA܊1 _rD9ĊK\(hVP_7 ʂYGYu7FPrKS)0£H?L3 HdHugDt*LHDab)\p}Mh~H/3R`0L!@4w@_h~Ha)!@kШ@iXa ! UYȁ!bt(0 8>AeNܜ7y{ (ޠT = Xy+ qj**oh^@R,E}1vT@{C!Ha ! @%8W֛^6@ѵ4m@DzHL8g š6P# \kU !@`3C G~M>}A`*ݝ'ߠ XفD=.^\@  A?"1 0HxJ.`F37#FL@ 0 ?B Xa3;p}drh 7m6ĀehzT@mpD `%T>0@ w0S=sāC_|a@OC0+D4 - J}ñ>-meN!܊0ws2kD|[ioc:ѵfI`YؓFHS 77ÕgX Q#^/;k^^Uf঍5^8b]߽D-4\ (#>=H?8:'r<4᤭sN3;edQ@*BKX18XQw \3=zf"p|O|=mZ@ ,8!G|( p(7H5=i a|l=|-D(`-a|oۉׁƗ~7;ev߿5 @B >z!k$C}ah?5aB/}'_win~bwW Dl3*6?P>0"3,iT:?`ġ@?74? 3YmHPu|@ Mqe8g @CH m&<^RT.G ZHyq%xuB$B=f+y_g+eS{+.\nG/O^~Hg jr҈<4牘\v0h?gV /,3"8Cߞq 4Ch/-;W؟!4| ұ@gnVں!Z/ V $u q SGx5Q@z6t^ ֦Ozz+ ؚ d oy ̵euErX֚XS怡GW'y)8DZar@_A~X&3v*G+ d=KHK%QF` =B4??!u \  i8+ ]h!;^3e8ܱ+s}("W aPZE˴nؕ 3{Id~u W¿dr>8D_Y+\@,wo\X"ȭ{TV-\5)_7Wk!!ь>+wD8g9zDu~N;le%v`[{LFgm{D2BNkm# /2~Y)dWm?P1,/6\%?^bzWim0zоc=ʃ[<g?ϳ3bs}(&koS x=I.?k{r $  z8AP[P:x7ggQ;G& rq?Y3&Ԥ}is(HD5 >~yߟK8KU~v$yv(_B}Oϗ>cPBU0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P =le'(&}ag!=ԃ]UUeΈ}a_IiwawXW#{.-/ \siK*)+第*Sn/ >}˾PFә/zy spݻr>;89u:w=++^ܞTMq+GjcsC7.DSU%|ƪ+6"PVM!|ޡ}ݜ倸ց?|7K$?~@?k>!w0'=]&|ISJطF2)&S"e=dBl354}ʗ:pA_ux[?UO߃ksűob@(P(HEcI $N6^?_g>3^㵔ge̮;e+%UV쟉Go'LZY[À]S@ Ч^:HEԙz #{ *3!5$,?|GYŸFt+? Ͽgd˲[ >)r0`U(@E 85e 5sϫ+љ=Ɍk{5~$ x.ox|)S&_Hwe?b!gS)bw̟S]V];6(V4Ņ&~ tM PP`Z]d7꯰Q{B@R>e|p XIqD?j _x?#7on( h~l *V]s9 *)uQ{ɾ[c{X`V5PJ} ?׾Q̵  f|$W%KuX>o ?{Gc$p_;IWG +?2OpZ}X]H^QIS=l <ιE!ՙzަ~ wS~7PπgQ>yhi\bpO}AC{2l>fϷ?Ǿk|Sx l!#8(?€PǼd}c؛0,+]ȏEw`A5a?|s|fd^sgb#kX=UysIy@%~PC6LDx'WAK)޿bv^*4WNjL~>n ~Qa8}B<@y+_ q9ˏmz̚j+ abg8o2woxG{?ﹳ>\YsN {q@M@tQ>?OZaaӢdOs?Aj@p"?Y++|f("x|OьM`=Ulp>aHo_sQ{}u?v(Ph`]aD@e }0#ı :{*ZPW@/@aϾ.?Oia;8߶0T,R{;?S#:*/c9M 4@F؇wC;@;y,)J&喼i) /A.fM[8 g5^h-A6 k_7?}hk _D>8ho|Ry-JOzPC$h-:C|WgdpZM^5^Ȁ/hP[E0h`U9C 3~sZ@|_72mK%DqLys:(b[{3-eZk @ #"6ƷW-9V6ݚޢ{9r"_ R6uo)k_!ﳂ1g9YKX{k&)@Trt@IlM 5=%q%\5FkM(/ AKYS#)q% >DF Ym#Y;e"@ /Ѐ_Kbyzb@+ \/ Rlf=$ lR,;UM1( _/p>OHh& -= L4A(g*o%BG | dsήb..(D>_`EzU-iZ 4]G459p/n? t)D?5'<_L#HyasZFQ6K]O Q#e>Z~0>wD i.'t _ H(SZ | 6G xN[{F=A9Sǩwǩg9#́i& @}"7䍠@S9PUc{ple(s us1#c& }FՈu/i?(c/ +>W_u_eJjA%:)Z lؘPiϿA1@C@ߓ?€; ku!?']w))uh>J ]-w1ꕚ?Hx$'[7@~$ ebF h̑| #&0CQhCM+'}MP> `eu؆Yy fCZQ{\:ƼyҘ7$GdRkk?K,~Ox 4(pw"g`oA|7@n @s 8[)@l7ASCP_oH=@'# ? [7!VI#AQHH )yF(.M(_Z?" D#\I< TR<COp$ ` yC@P>,WG"Q@(Hi&݇ҧ{Wz&`Q`ĥdl-޷ >%lLs0y?s O?m.~RW~@ Ć&('XT> x"@ Rq"ѶcL1#_A0Cu7c#T2ֳGbh;0QWT>ƂH7"@x a0 @$P(99*4:Gh D#FZ$`  #2&cFb@=-:^(`ƾ(b3^@ 0|‚ `A G)⑀8aK'@G)pʖn* /otJOR3Md $D@!@ګԶĘ͵ QwgySĀ?0 ܍GP0  xωf}1`8F@qxfb Б@  Dz:֬"A P$y~ 8 ! К5;&hM|8h༁HiQ@B*jMO>E ? 7ŀԁ`r9tf7D5٧h&sÀ;S6+3W>@G=Bn6n5~nFhd7 < ӘX p"g=M+\`p)a+,Zk 3%?50e2(݇ې Ia@eP5@@_@H&0H,R@8 3- `$s[YD 37=@D*:P rKX+W9Uy!7>A V LY ;Md1Z+2@G@#ƀEb#C4t%'xy5/=*`G֝X@30G 6 (g1@ hcGN@ 1sX@(0F[Nۣo Ā̈@挎'ݮG@:'(u w;2k P6aÀˑ3FH@3>"3?(<:Ø !aYf oV$2"<2 D칙|i\p} c|U8_@ `)x~cfP vK>ob8:S |?B,@e02!;* \K)& L+5OPٽG*yɀvu).LϿb |(g぀ހD쐦Nȟ%4š6P# \kxVE5,Р>?z 8s_+{_#ʀ_w 7@ As)0 idP/hv0"1@^֢#@Sr3*@smrD>N$}Ot$T8;L8őO)Oj|fi QMO+}BP1`DG |K ixH`?b@OyB ÷UO;VFg j:,zz!@y |xb~MqPK]T-]E6\0[CFL!xJ(gn)p͸H/l"Cy0*=uHpd(7iWLu0_F~&|zȁ4G c_&@=(?2O^%*G7zh-EՃ ]l봓vDk!io!Kɫ =Ӑڟ7R~eG%8pO 65}Bf. 3 A\A&9RnЎ+X{N Qa[|.-{oܙ>R Q9E\-~O*2g"gؿIE2B6vLFEY@YoUˁEZ-K$cd Y@֚>w\= ] uW(2rЀ:e;֏IsKKȁUW,w?p,xjCMJ; IO8`˷/U= 7,2e%v`m߬G4>;>; -vXq(zGlV\8q@8RYo_ Vm.JԽКHt~/$?<؟kᮠʧ-w\8Zۉ<;CItO'+W)z/PCo]3s(ǎ* ԟ^@ Qc3^|5~cƄpWYc<^`j|5@9ߟK#q)!)⽦Iu۴?boB *U0P =l (Ta`@B[ z*PVB *U0P =l (Ta`@B[ z*PVB *U0P+ބPhqMޏ/ ?>.58-g쌊穽ٰ/ ?>vD#+:ߴ磸Pl#']Aa_} v'NO* 9H ¾sߎա+`wZssqk2< 3FA*SHiGEWhH ^sf&i&o=L23|\_>Ι984r*¹Eյ-)hց$EB_݊]`}~|hO:mgcu(Q߅뺩ԲꘇQ7# _׿)}duqEcW˧@}jBTw"6ptrQWO]H:׍Z_`;OGr7NW+״%qOa,zz`KjM'%`)p _e_B=?uI!S@?>lN:RtGVA^ԻbѫUHv}R?o._}&+L?%S w|t`o[q`TJw믨vTLE]z/Rs9+ ԅ-pC_of'wQw~S_@ 0UV:A+|}t[s3#p딂'y/W>'2ygJhD]*A9?ZS'13_y _7r;^:7 K_W'6#/ǽ*|(Pѕ( 8T_ů)>C$jذ&gQxbz"T'>!N.bյeL| ;gλ:D5u!嫰3T2O*<3`3q ͡5o IO{0z[M?b\0N%po?_W"(?п!kə)+>Z tbKfϞ鈒:A=Usi|Y_V입{ C)~(kR`mW<O룫'e\wfT o[? =x3D'vG˯:Ǫ>oQj@K.& !N}zR N3A4=?_(~K!c#h$rE%"|F+L6[P).y"Cdo`< .tcMlB|`3Qw ė@O;(WB.sǷC[\?pߒA mq$n؎|4M 8Y/"7m\1μ$Sϐm7F6~֠Zm0ý?oD֝-~"5cq=_ݪ``]8S⹨|%^x:LeLʀw].Z~뿌ڜwmF3 \4_k嗋,/y)8'M۴ _? VݤC:Yālk_u&/TwX϶o7T5%8X4 M;??Ma2_P[ ؒKO :_9KMqF 80J&?}Ô4%_PRB \}[˶b>(X" ё':?A XhS%3PM[ _woFSqv L5 -YE( Ia_]oNsDb~;znGF~=6z@CBL!z{-u"\$Z@_};SPW6OՕ5oOq >{9Zp9p#E\~g7dE>+~?ogg{Y5@,sq"U?q60Gg/5fR궷R(&R0~MX54>Y ~G@\\a3?Ab`s*_$8ƟƐ?g|d{%|?[q soaL+ _-km%u[9 yIZ͓@NLY8S/CVԿҏJz1iepD^[z@`8l]b[zu7,gMC/;[z@Gټ_!r\N/Fm9%.L|Og<';/v/Uf ?QkoY>yz̕ǰV뗛fqyKDw@+ mO+t|ZZ-̋ b 4\ +vP-Y "7jo%p! WP vz+  )lIԌ+>sϿ%%j}"P@]39ʎvFx6_P g^L=H5! Tj,`_/l_QHD|Zv`#Y}Tg١+9/I!HQqvPD@rg)́C ` p/̼ϞO=:[D~my[k>cRkeBr rQރ(lǔR? ٞ(w߀Wuoʛ QFG2e f,P\K-)F۴L5^&R P-ѐ)s5<H'I1~מUiiO! ̐woս~*H){w g&L_>jٽRjLg{o}rR ф^G?v 95@0fԸYXۖo{_ ^P$01Q@k@,́cP`޴`5Y /!|dV ,'z>8!Qivd"Y(Ы˵[ Q PbB]$+l>JAKŚo?-@^b[qd ?'-*0@̙Nbzjh?<U N[EKQ{XV=؞2 \@4Hy~f wEGWKwR g1P`NJz+jj5iW(5J @c@q%୨ XՀlJŧSU)vAaX%0RJGRt6f@0C2zT@/| 8ĕD/G_ga@@-J[q V)0ª@ld P15oN7#rEOŧM&?#(`dO|ZByms)xIQ] (T%W=Q>psVP'@/䲎.WQ߀P@zrUV툀eh3 8ܻ?ܹѕ޲WB# |CN|O.񸰟 t0Gdh`4RϧG6 ey>;vӜxc@O_CnŠc@Kh{N: \ `1ghF~kA~?^w "ێp&%t`Ss)Gy+XJJ|m;&5o#7w.lmJ*#D酲P[I !,)- w|wf$+oҞxO@H9h靅 x8Sq#@$0-&p}P.D0`Qpyω{nEc3{H }(hP8P3G?ag4V)/ ]ơgͬ~[̀z>oX&Ә 2X#NDK_R#uCI{ 3x툂uFkZoC)G#KK{F)9 0SS`KqwLH犩C!놠h xAGfGn {F-g:+n ebI}\KcBWj}RѤY3V4o( {F6TP BH!5/_ߚphpn8V']_)fi0(7>eqV~8{8ϣuod-xf\sԸAd]9n)o׽n_[1oމ=8r};!=xvd]{>i߮'ƾ{J$`{I Z1Ho+x bqGyh?BsrD@&(A9ϒ(3v!X.kd//)<9#~#Vh$eZ=B¯gt } 6[{?:X iW'O,=3wmyw2>?{9C꜓El6]_ =$߼oes20Ug3is&Z l_⧿Lo;\fup`~cşo SASX~Nl>y9{28ʾ/la(޿[Vw1?gCAW{>'$9>3D%u;bBGV=5loy3 \gO)?ǯXg_Wo{Rڻ. |?"駽0ːpyqLq@k柶HG1`A/~(^b?&7:E7}-KQx dbRrQ;7 =,6w>@О:tPRG_Kl[B%Kځa0ˣ1IM xWID^~_ٓ&^\R/|xU %{8}`6C!10a e1ï Ā'~ ,?o\2GEːOXۊ( fW!!pNW =DQw!|{}:b&ASxS Z~IOY_ Y'x+; ס'QS</ygOBo?J# jD×{l3$sע 01À9# )Z lW)2- / 6ޱI K _L{yއ =ڔ=g{Pv6Pc?`< =y H.!py-lԗXր엩OsYPK #<HO{ʯⳎS|ʠ%į}*f/*lRs h ft.M?}ZMJi?Nc'FK1_ 6ٖγKE_y?#,u0Ŧ+cA r ƾ*r+9gX.¾&6=mQ[.]%_aC {_~M OW(c\P *rQy6'unY~ $<-r`f@"5KA,uГ9*|$oPX "ˆ\OfvXLMph'B[@ĔO)XZ@IQ@Ǟk_'Ez]3)o2c<d^՟Jw *(%au bY~  C @'$o}6 _K@Lbj?(Y)}MZ 4uqYSXQb-'G{X˲bXL Ra}vB!]~b׃`818DU '`Ok b+.F }]QC,`+ukOhG'.(hb#e<$+LI 8JW)+A8?_=u>|?AސwxI~m1l%EE0sX BB{"-88lJ̰E("i? I3`+1ցWuq\ӐsS\b][΋| &he <|?O^_#VdE^< @w셸Gx 9XQBbXջH̝MnoOY5jUbHӖsնh&Mʟ'M_ ЖOsܒp˞Kl?/.w/<$kV7Ǿ? %|'~f_U~͞"ʯُ"ΰV:%{yѺ`3ez,k%}G0+g1He_K/+#!/{aqaUV+Z>mT "bO  ھn?b# gʘA HyI_q \U#(-ʼn1=n[>!2׏^rDB$$_g @}N2"/xpɞh}Ѣq1JR\?Ab,?˧yz?+_e.7p3F0.x'Ѹ*oX. sd\r@|ĶVo(Iʇ Fc3~`6K:2~^MryBS-}k:7x-ִѺI\[$N aOl 4'U]%8;NJye][<ټتo^ iwD"876 ^q@3rUR'b(9mX}A. ( ̉1JޯtXYݷK2ՆQc:ˍ{ltD9^ fyfbcޯ@ȁfu Z_ m-oywHVl^凁p~hfWD ۢēl*7[9A-OZ_Y5^tg@/ʶP(@+ T Q Գr\^Y@E@ ƀH( `qD Q`-1( h/@  b?@6hH=)oax~ gx^[)`OBKGCw@yRްa,cYC3 %+9q&,ZbXW8fxo)&5&1_gw֊5co4nSw3Y~)˸77pJ$^(`L#RN%#t0x|xDF?ϓ rQX w$0]B]6 !})폹A[vo)o|MM/ Ъkۢș)Ih@@!uQvĕ,g᳿UC=ֽXNꗪJRjJFN[LaC7~I8f~qD'ąѧG[)0'@j?.ڶ#d5)çm¯pXp;u=p{ޠy#jgv?y8o97OBHx8,O̠=8 XO;+;;'AA^H>'y/,1(h#Ov̎./[a.LF`ݣ@*A_=A=Q/ r~L0P!ߦ5Qs)P|TܗAvAvpuF@~U/#"_@o@얁jwp@{E퓝+xܱ@ҬkL|=81q(h?]?24bO@4Lz+";/3XtnGO''^>6@z5= (8%O`50 ^' <%<Y:'2}Nvdħc}_d ` <?ĭ 8 #4 9( {3!y "D*' T1Mhd?J7'sXa{\ޒ qz;VUU#v Ve (Pm_翑V2|%>"_W4)UQc 9$@ )<ѐO >\ 8LaC L%X?i 'wL&N͂1@!nyUc E qw@$<%ye%UjN߄',{H'Pz0op( s>u4Z yJ*"k7 :)>  rK]?>D%RC,De-<*#j8oLh% MKQp IsD>SZIQ[D3_:d=AtC; =5?¬?`  B@(pq@ġzj&QD Qx43duzH.0grK0σ>Y@W}? ^:i?&^C*!d 0ov *~&2 I"Q`D^9pf>8N xb_ K`{UchI `D` DS६@1˲Dk; UXM"5_^gn P 4tUO0 '`)S]! ƴ0Lxh0^FsTGNYO'Nv&5'/'pNFcٙxwUiO'`iO )#28u_(`<)ewqؾGN\DPU<5G}~X>aטڒ/ Sp9f2ϊWy8eK$_RWSH"?Q_)+g˛D_7D'`@U4$QDu.Q(׻_`,ML[O6/! `UY?K1 a@r  .Dl,|ji О@?oD7 lXcDH+ $2q60@Ob]cT3(@p)3 sט ڟ1`^C 8h TDq)FB X4О=7%c."$t^`8gLg HW['Ы@#Q'E{6'\#Ě.b%/|!9k @0wչ\@+*ghGY+:+ LhO%Pv4dn\OKK8#fYu'h3g9 8իuh\"u`P M 1@qdQӫne&# |poW5Wx[q&ŬZT)a@ͭ}X ĆO!%dVla3 oTR+yCljb:ƃĀ ̊@EC* V̺YRt1,-C H{lVݪ~Y1`o[G+靂RNpd d4`? 6fSav]BuMX% 3Ăl Ā3;'"1@Qv0Bfꎗ jYǴ;$2z](d}0SȮ )DF>MȬ īy Nt,F{D7H*X%t9l,eb2ߔ%;pő)Lonzk(t> :QWLj{b;GE4F7V.h ŢW霌2'D4  fI@N2*39Z";,w_|!^u$p,+M#[2[<;?3P{s HZo Q}uEkN`xRͮ = G̜"Ma8G n*sg!xw'ƆiSCuB)'+&#PD#^iV V^ \e3ma}Bt@ )@x( qEU9Zm,];h٩7W͒ vo*X; ul([F)r@=~9CY?Ju;=N'{u~_@ڟNӠfP=GOH{o5Q-8@Z0Q ͺ"~{y0H~\x@q ;VKM) nxP o J7XMQ92czǠ  ɮ\ ?Y;= b;FrE紏5DWtsC pOyw%|nH#r`4arB1cG ;^a_;'i(` %sBf؎2>1k(@#g\ @:9 =?[y0'@YU@^_ QN肼?;vgJOp oLQ?#$sAA b Of cK D`/kǂ`3C%ic~ڨc$1 |N _3CD gXT bQ+\qUpfh"ܰ'j ÓMo\l_(F&;2Q@6l[Nq`<-z 7MAW p )/E3OSp9qfwnМAEg9NU{ΏfIWd{ryj/ >Ι7Wi!h'[8? ؛{W"/Gh^ckkk7Q` Tc=C ] NE;>]dN,_[;@];׸cU'E iQEg~k.\#?n-1]U&U{uUqr +UoG ^O>EqCF8-Vp Uim?(~{cUq9I;A$Uo]qGU07NeQGf9&Ue|@^?X'V-XO<qUeqR헣7TQ7 +~*vkw+tЕe@W{K]-]t+tЕe@W{K]-]t+tЕe@W{K]-]t+tЕe@W{K]-]t+tЕe@W{Kn=rt/'397w ֢W[55IgʤUu_(zW/puj[+0|HWO3􊪒ۊ订(uOɚSw7={b/ɧOɰ-oO w }-$P_E'$n,^Ocs0siغJ߻Z꧞bج:<ǀ}[!|3;~kxBc>E6;*KlE}O@dlRtؼ:\ϯ__feo~~$ϰY!X1Hx#-?U_;b^j.܋D#}^ v o[;0| 7 ~KH].F+#4™AKGd&z"]g(0`= aLGOŝ:ʶ/XyjO;_7Ky[ ~?uu:CX? 3mOı6ԒgF&X[#Q5?T_%/~ _Acbe(j(ϿП?'gEȀKb@'+F ?2~~6'>)}[&0F$R=tcWD`6 '=Y_xses NU`7\kPAf _lOM/lK]7j}rHbO_ڠcH9+H(R?J,O?zk{;.خL:T y%$o~K↯EEZ-'!vTl0>}?TA7l@(o䠌12~bEC Hډ: Y}KQ$P`5#y.u y]:z{DE-ٽ8Z?g ;3h?JQ_3Rr u-q+A}xYb C!/j/#O0Ώ`NmO*O5u١-ɍ'yҗZ'@8h2/!$T#ׂ3#S~CDwhV"H!f7&8(اגy)wX~CKm?R XSu'̧x њ#Z𹅴>Pp=/0ү-O`O'dۇ-ka4g0*ѷX%I.h\":;9p h2B ʑ:'t1crPQ?G񃾿֯Wr ֯BpF5ofe+sJdZ@P1oa 2V)<S>|U^]u{wA< R80o7o|=?f?<(P8 vonx@}~l_0_ 5ඞMFؿ!gf%WEE_>{>5vmd6?C JzqMuk4-o8D5e*cv)NyYk1x82}NߟDlckUl%V9w>{3A q1'i?#"$_Y3DEjOё!u ~AC ;2pe M#k ོ#㴥o?}q+4+H, z+#|SBY{jg~Gl;~ `ulL$8_U;hlF@ޡ~ cvҌ>_@ߜp!+i Gך/oMV1>Eo ! AJN{>ŹSgM}|Iܪgy_}CM^BTA f=y>l/Uf hU_06I =R㯒7ӇYUy=, qf mV[Wji+'AQ`47@r7`!w#||v~:2;9G[%1m*YlGyù#erk`A?5]>mOs3H[ϏCsir;Mh4AT Q/^vq\ )? ~m߮X-jP1.kRW\S_ =Зf?g؀8ҩ QƟzL1N? OYf@ʭ )MG-D9%#/"NW;8IG+Jx-{#_҃C_z~z~Snmt&~V(ĝAhTCv_xG9@\!;qPթl۞mAp?.wn~3'rԡ3E2z껺ͯe_R_g2_Sy*zE!/]~ 8e @q++Fޫ>(]K )_C*9Wgfuq 8r->P tb9g[ldh<~~n{}+]\<}'e_~@H|ORVy;bP5@ wrO2h9 AvWVZYkX4rIZ]Y3̮ ΂q6ʘyd'Uʔӯ2ʊX!XU6R4zJ Tx5o<)52$]xD`G fhS%8E! :`ߧ_UԳֲ8WA ڡђO#xYJuDd=Pi)mf#jɜBH;$;nA:uA{8j-&b CjO\iky$o~@☗`H9WhE/1- U>i]K4I~H 1@S`9t `x(Ԋ k@7v ^qbcޜkm1e؜&1¦iW_?RX~Ђ=MgRmN {v$SpSԀ)'RQ$O~$maA^5?L4@Tl ׅIΨ^qy5~ `l _t_}v#qK c9h%rDiH-w p?kZ! 84G;XGp ={z=ͬ߀:-㠟_Ş@s h߁x )<6D(XcF6oG̫:3=js `#1(1|O?`zO9(`0FWM1({.87H4@l_{eFAU oV1W,b t,~3 @-H@3 ;Ck97XoY}ǾBqG&QVj(@/#2|oYc W^BDңp /j`_ux+70'w8(Ϝ'=*-8,N%8@nv0*COz@ +1B}[H!嶖D" '` O]9 c#w `  ?oxYFrH.AD,?(0VY~@""G.8# ~ ?s~?ҘjNt ȎL3<KU99zIXͭgף'q[OFV;= zޯSj~IP=弳c~C3 Z9B)O@y(H>E) Ogsr)1@?0W@41'qO OGc:怡@a`0W+(ā:G/A֟<&@4 2G{`2?=@*[ 0+ <X裡12n( πO\#Y3q Y'kX3;h9Z4% (@_A/AI1I x = 2MyG <|&HdW٤Xocߧ)G6^d fAR 񅠾!`Syl [ME\/ 0Ob)`# G/z>h' +#x恢W1HATAk8@(hd:"=Ք$>`}oZv$/2@ %Hꙹ8  B@(pqzv $s3 _6>'ZiO` Vh xx  b)<qO?h〷+D^ 0bQ j<CfPV ž%`ldh0"g RQn8 <|M'(aog@E')xWx <;YKj0+г˲D5Vd8PҾd'`&@px ҧOx7yH؏K ~ =}HOu @^&<A /,`?3^A@/`N^ OVk/0Jg5 @4@S );3cdf0h}dx[G Zaa&Xǹh=1Tb_ґ  dr@4ka!H#n@C [TY^1h i4ǹ?в,&xe'`lהk(`bM*}+7^@ \N  ]q H I.0RN  Dz`Z7`s55˔Osz5B XK|(63@ W xPb?F{芩wEcPQ`ykкU>;6X\uDwd%n ^o[닦hig7K4MXӳƾ2N<?J`}DFJ`$P_vCxN0$>sxewGXŸ}k$X '[iP3Rqf^z>[CFJ@`iU` wG֧7? _xg?Rު@UY3qv8^׆v)Tס'`# rTS0wwUjxHvI܋Wjh>=$ ~,yܐ<`S Ew  &lY>!f%cG ;^U?-"mJ4659!WL97k(@#5AonN: mWJ> P[yfV zI=`<7D9 GD ( 'MN-S7w~:1g3C , 2<av&Lz,Hʺ.8R5 1XT BYK_bX<"Я!"wr3r,*ٱ Q@IZ"篣ysKw~?! <ٔ5 A N!}U("tq`ȶ;9%N lU#bO mQ-3;\7HK3X =6ULtKC!s$rUd8Yٿ#]U<-|[n5,HXsQd^|3n<=C*r x}Fq{JUC$PEu߰`ٿǚ{.b=Z9dv6ө~ǧkkGh+w1 miQE]ƂCLU_h"^WAr +-}haք,o _?X'^-:%q~,Z/Qaڟ~e|:}sIxW{K]-]t+:ԭ50cuyo-2.1.0/data/pics/mkaViereckRahmen.xpm.gz0000644000175000017500000000171510517212246015646 00000000000000͚Ko@Cx,|yc@0,*UHfWooΥM!؎:gQg-Xb*Տ/waow_>~ v|Ṣ\uZ{1v ` XA@EH"0tlpr .0 !` h;]l }&6^n.,@O؆]>",d@s+|qgeXe\ l. bvr{l فC>#|]xփc> 8>S>>䃁s)\pC.rWpͧcmhO"ْ"5h,iTxǮ֨ ԩvM2Qs6)Y<?NܲRMsx*~ڦ#Ԯ7w]l4. iu{Oh:#D(ÜG\LcZ- 4aD׻4GNnytgB~`J4Vv6,@/H ĂF @Y'cصJ+k ^136 >T]4uY& (q3 C0>L6Ptcic";! `&H%0JI]c(A7-F !.5чI#ZP0 ` ɂn(ŜUh+7@!Nd1ZٛV3!?b>fJe{,RkL6J&\#'}&IJኘ0-zLi;u-I #w#bP"$*\E\[2~ev(fbE3M1jF\!WRGnWuFdAdAd!)%<뜳;*qk9JZT%PDZd]R"[E+fX~ՌZg Y\o-\F/FF_% ? ? 2Fb cP+CWJi(U忒m^/u_m^>s_ %s6U\^5\+6AtZ|H<iĹ( UsJ<P%j_*lk jR ڊzzŢ54>Fi߿ $ Ȝӣ g(d<*A'Z@fx2H̨"bm@5R [8D&$S==%)*dص~.EGWqTROW*oTW8(`*`LK=o lT=a?W"SExFjư@" *,c8h챨2J 1Wqcuyo-2.1.0/data/pics/mdEgoH09.xpm.gz0000644000175000017500000000266412412223245013747 00000000000000ks8Wh\Ĺ %.ʭ( ͥqo_镝ZIav?XÌ{$ݗ[dm}?hvi VKuR-$kWr@^tOӴ R>XٮK&d5 +L)@XU܀͐ [U8Yw!9/\ې 6 p:R~[IyvirrUA Y/u#^m)B:` d;%e!r!$ft}prtn!ɄAh GkV5^Ar,)YԹ Hܦ̪jeí3dS,%dR--p#i+RTn< nQقlyyAAnC ,E2rK*ECm`@↾,hJRL8WvCݍj>Aqm,r>: JƳq:(\0AAR"$ W\ᠯѹHycsAʭ}w"D+1\*nT":79:S=r{qn?:yu!܂lqTO5*;jwεV*7F 6 )wF%Ո ɎJ-Sn8t! uSve CƐ1d CƐ1d CƐ1d ßbFQ[WLŁaa@I2P\^EB5 LZi B[ p]#i[;n08K6O@ܖ`֠"*V$.{ʰ8L\0paP$ZtTuD0BUӬv M^5sL6ۑ<I bcT23ghaT*'WN2j^R{t1.gtu1,g|hrb) Dt* a8EKf bm$e2Pz1C^o َۧb/&*a  UWƟ@A@G%1/%d aA)m@@Z1C+wqwBJ~Osy1iֈ*3ԧQc|kVOϺe0qvκHO3j~,~-巜Q=_lږgxREvQ0PU;Cm=k4}_hz<Bș}ל1}-;С  퉖=yyZqCB?Ix oVGރK1ţpvv'a?Lɤdk<~apO~ϟ7;\w|pV[>H\nRp|p})R|\\K-\.pQ+)惋3.މpq..=\l(~p[>Q޼^"\ŃEy]+gۗƽ=;{Q|m6?VM]O˚.C!} >ܖe6|c}ä$SkÕ7dB@{, S%%fau_G#$ӂ \?p:Ô)B)í~~:7O){Ep>\rA%`I}pzE<p*??feڏ}X20WGZHקćqn8YnOPs1Xڂ,9A1n;Xq8 q۶6Ƈ 4b}!x6U Qhfߘz:ߦ4 ]`~<Ú[w6kq>nXG5\CX_Bl wuۉX+6hwH2fi Ӈ 3_|4h%%}xEԎRu.&\3'{_`I;>F4}7['̭eݛ$xl1b܌ 8L1eIчy \Gr DVae ЇD:nF)Ƈ xe& /Q_TxC2XS|%AYmp C׈aa:/M!ćK7bme@L<C n}(AFFW髸P ,U!~,SO?< Hތ_x W;3gy1ؔ!21` ٔ!{鞭A˙+5vƇa7O Ux_vݕ>_8TAQă|)R/0?@lc5Fav%P/H$1-2~/! cX6BiDB:,.q @a>@}'=LcpQǁGQ=j>[ d̒/xב'&6\͉ w,4Rڮ''>(niƤ>ֶo'\PmgQ|o@G7cNd" aH h89sVeR3U$EC`#8e),Txe5?@B, D>uL_x9?Z] 4? Ż7!@N଒> '8zyj?̬,H DO 8bfakO? DB)!@ jAުJa^Pa?@sΗ?р>&S<v" *gx#70u`:;!?DoP0 =L/HGg>tS]`n/C8Mf,7H\8>KCtϵ?)$ߣ8to=0>!7੩??QE÷u(N>6VxCB|c}Bn?3 A"u[gr?nLr;,?(%giO +jF- .C??Bf0x?^l~.?Mi/ n0&hFucwnXa60q5 a#˩?.4Xt?Ay`VƿO9j}a}" ik}qs sY;8Pbw bp=-|3ܻ/} ?a(CO8?3&<9l}0.7 gLV(ppm"Zy?Э"J  >Pb~"')?Їs|%të#($!4~!(5rl'+ 藿e~!S /J~1 Q -?r~#B )@h¤oON?腌_HOphP$h.)E2бE~\ uI2YgA'^O$C6ts*Q'CEw/p6x\b?Okv{@|?Q(/8p+)}-?if% x' $}(P/su~?x|_rC-?:A; tޯP8'NG᧽x?ɗ_1*.TD} 3߿x_|EGCcuyo-2.1.0/data/pics/dnBlue2.xpm.gz0000644000175000017500000000102407550521110013712 00000000000000<dnBlue2.xpm_K0şME9W: _sSt ~wiCO˹%ް L z_E j߼??^]0;[^F؟Wl27iƕߍO'q S}7Iߣ @R)=àq)wbIO3hoD 4nZCWU=ŐT Cf 3Yoǫ+Lua.l|'&WC,-r d @24r\ EjZ5oU \flYjZ%A|{˯9˙ndA'@2 n!ir{kc[պ€0<Y۫!bB9s92 d |-GT}<V뵱j]a@ ?ԬȀE 2 ճ/xf.,'?W*^]M~ 8繚^WǾ,ʟG,mzu>:Q[ǟߟ7/''oN?(ク[KcM?\MC'׋ޏߟ|c~zuC|uw˟OԱz{|r?OzW,O|QJb1^ݮFPsoӻ:WEN>+˓ïWer5 5P׳Łm>-?h{{^]}u:-JBww#<~x.|}᳣?=?R=Hgr2WK߿|7{O?;T-\=9{2ÙZ_Vvޒ2|%;RO n_\d *D O1 fAo  zRް[Ћb6tch *Fjh.P1JC;Ag :Rt!.@1*CAqň 1UP^PP1 C7bR[Ať (VG'+ #_)F)Ϳa( 0b (F,h9~ $Jw GHaCﯟοeeІ-0ܜ!aE׆36̿2l!OEhʰmІ36ؽ~ OХ)R_H ](Q4Ҋ-Ee(h~cJ(b7!_+BCDQf4U[H me(ZCSEElhfUQ*[*rCE'`ا~ a1lR~2OpSI~Q~bKE Gq#DB\03DgvakT3Dʰ~)&hʰSM[O!8A$O!:AkN!44__P{ ' z}C)M0 p6`74Ԙ]ذe:o s@g?8 7x6=to}Mæs@g|2l;to} îs@gx5;to9$ `opj ~.S#8!7Vfx8]y{tHׯ=3{\= FڝCno~m8ev iX?BY䷿aZ"5 ۏxow}_ðZ9$a5sH|MÎkZچ4! [iC6^_38D74lftIkX*w__o˸s{jGs{5;?~}v폯RC޶Sm|>l|=m7a>}{ |o^>m۫yƷVoW-ηvoیFsy?Oboo񜋐cuyo-2.1.0/data/pics/mlSorte1.xpm.gz0000644000175000017500000000172311672457347014157 00000000000000NKo66pA[{ɮ1@=0EE{GrҤi}~#J1~]urə^m_XzmW&*2q ԡ@X%/KB"Xo4B #&ieӅJ2ވ%tnDQFF*Fݭqx,uPRVe=_3|4"h}*q"!iO!afRbD MQ! hF"Oۼ|/l oWDA$o8/ ,E'wDQ;AָL^Ϧc8퓵]hRַr) M3"+- |2>Fx:8]cfLd &%igSE *J~K^b!$Mr  ,t| _rه#ֶGKcۙ_fAtgL%IbtN#vZ^@yޏi0-Z=H08^Fm~ӟ#: wL&9ԱܞNzf7?}ϒKU]" Uq NZڵ WUmJ$303My}5vy4=_ 30338MrHY a:}U{M] { G 5պw04?ԭw., PPksQzf`fp38ׯߵ>`}Tv^ ?1pPzԗ]ȞJv]@o[/ zˮ+9,f`fxPdRAnnfwV ZnghKtd9i _g-g%@zq^5UQ5-t`iYVSej3z@p$InF&yn )B`PT=; ᬛ gՄy֍RG2q6)vozAbd|E7 &ozYT>r >#zA~Kω}^r%0G>|GF.DBmī!GvD"owDpP[(K6᭹ޭDBr֭`\pܪvv`"aX3̜> mŰgڦlf`X6f/8s<ǩd8gV@p_1[ l?_bV'Ѻ1`W56^[&/VG#U.2?0,E!لxWʲt$g ;PH`IwlQ,©f*hΜYg&..k} FBcH&n ڇ!:_,X[fه}Fk4º]řKvEf;Vd;' Ah} wE1;PaF6Bjfv )Cʐ2 )Cʐ2 )Cʐ2 f$:D1Y (IVybG5'z3I)I8(:RbݺKriȫ,u]-8bҠQMl*:7sn$NgnhkAo4WJmiDS@a204 w4麼) 䕒 JFnDb wĻBȕ<Ȉˀ,1Ơ'@z,smDk/1PNxZgԚ!i;֥Nk3 ̈Cr007fCY#x_(w^a3* wſRċY†lrG$_,8|kͦ  / -4 jR 4Pww4z!}PooccLI @X/@_#Ns>u5 TjTuf摸yo3`P4 MEوނԬˠ!+~"I da]dvDƫ.P*|ce#c a]l?T1r bC)GLR_z'4g 胃lqdS $Euu]-66qbDSP;R8JPD>؎-牁G \X/cY2® ]8i ԇjugCE͍hIj>٢NJSZRe7Tש*#.y pCͺم6^L~jDW0{*Zv=c<=՛{sI7=i&?hNZIS%`,suXd gl?Y_![i+gNs'gó'BS?w|:Qh|pgh n;wl15m2s̗ >Lڝ|>= ml;``4 2ΠtJ~ yJg4XSCUS*YZqx\<1Kؓ:^ }v6{nӣլǝByQ=1^R˂o+)@Yg? Gl!C ^ ; /C8 w5f?y7q;z@#&%6Q}d70b5}:M*nȳmFa\q/k^dj3s0 "D.lcu!D8G*Nsk+^Rf3VTp g'(+16[*>nxؒҩ&IoghaG:S=ͬU޵A%zHgS. ?c2b1 %cCw)lԓ~ GMc -K>uN Ma0p XS@S!^8D "73$`* NP2 i:+!K FJq I$2T2bM`kM\Vf{kLuC\kYߘΒ}n6W`(`GL)Fao ,Ȋ0!){CY_ 32!|(cR38h+AMZP`6yA@:W6c6Č 279*K{ K1Xu |wb;hyTbpbϬ6X_C'g CD&ՙ502Fi= e0 QWC`ըdLBAYAKNI67ouG&vgۚ+n6262OВF o1R v0@y3O34=ЦzHRj8"VjX->-0WDC*SV)ܱ1L l[M7fub@FgeF600UL_uFg!fU  |*fEͶY]5#v|AIe!2Q[E&5EQ00=bc:a rMCL;tgzvHmo k k8!T'C[ 1pg+}g)ʓU}3mYcA stG:-w%B9nOB@,-]hR O@Cg߬NA M=l/gTdҚq şld-`leQ@ 5-foY>604}at,RЦXpK%Pn5F)ZG=È]xrE̵~NȆe,9~},CF!t!L 7anm N`feas?& $+ mKCl9db:~:ZqOB$@dl*ekHYprU?&l"}Zͯg(9Ǩdม0y菜-FO%eGZVW $YrzH. 2+YRFYenUd2ȍ+*UZjYmiVS.&)bKCl=1HdL[w@ì{0fTgEG[-kfwu#:`( c}4*, G>O/{1Wex 'zk|8O c<1<8O c<1<8oz,ũ1cuyo-2.1.0/data/pics/aCantorSet.xpm.gz0000644000175000017500000000070312376063767014512 00000000000000qSK0{GaNqPī7 NЃt7vKھ nY|`MtýdPJ)_Od/_V4:kYI*R],\kn]k;̫S͛#c7UBF9Mv߃0 j8ZԠ%B{6넟F䪬~qN)Q gPgcI̛V1D7=FϹX[,>C=;M Π5gȲ_Ly2wr98mà3E jYR 0:.zVJatϊAٹ&5A-jPSO::goyWV_kv Π5gHs" Kcuyo-2.1.0/data/pics/i6Weiss.xpm.gz0000644000175000017500000000161407550521111013756 00000000000000<i6Weiss.xpmKk1֌QQ0]Kw)R ԋ>(jWҹ&>g>{&;ur==l7j:Qۋno>byb.^:_>_,ճz=l- -/@˫K:hiZv|yC-{Z^劖7gtBcn:)[zi2#B Za:4"x^f8 FnapVb8wuFN1X?A1DY ~KB9=Og^e9%#\G}"z5dЯV`t)ב~U& :L@_!  Zr3!cE=@Ov+ c7បg00Ղ>`HwKw A/`}q) X2[pݥ/P}򬎷Va.| I\|sqgه׳ rG]|K a_LbՌY/r|k CvG$3\,/zSev%ٝ|!Oc.VG| D|!`=~-ƀ{ j8IPfC?:H=Cbyh{ӄzUVѦscvvCfCBv z,NlPpY `x| a@I@A/` X/|/0}|s |e8RTF%v=חOG?zA?rPsA?\A/ h O ,'!cuyo-2.1.0/data/pics/bxLok64.xpm.gz0000644000175000017500000000345410361553650013671 00000000000000b=bxLok64.xpm}SIS 1_W((.ֲ@h~ݳPꮊ^4~gF &kMykߺs=ټ/zMϿX&o2ǻ\Yxkty4Xq^{Ø41b6HT4E鑄 4 䖐o֔:ʷ 5S1;zmT66ͶAiiWh)\ win$@n iqE J7kB&(ufШA j:Qj@ι"i&ěM5 ȸJM'JJPmDS+ȽiZe(@Ҋc}@*.\ b0ZAW {JIXf$m71~l-QlEZ@$8I#+aa;u)nn:زkM0yQ;xYicoQLqtY1jt bI$8@f o>e+"#qX8 -[lJ]IЦ+L(ftҶxأO(MR\95M?F* ×9-Ne/#8 \X 8 .NI, 2 rς dG.\ȝx"H|eCb+ƊbL]`c$E&xls)X*l*yV ٓr ZIPwO bsM--"ޔxϱҌ!o+_:;1憌kĈ9Z>ꙌARa8åO T,)ZrQX6~L~/YQ\n8EߐzOZk{ygbRUzby[.-ȸx۹2BqY{uz}FFjLۺIca)}ܝMFTy/>oK0{ۿ!O//;al[)=~+xO`촿 *F';XHs^̈́{#e(3\# oxc3/tSwM0 >cw"CځE况.9Oq33YNTj}z~Fpm7k k֬f<mscY1VcX1skk=F*cuyo-2.1.0/data/pics/bxBall104.xpm.gz0000644000175000017500000000616710361553650014075 00000000000000b=bxBall104.xpmW$ ^٫mVVbYu3=wkY~> 30gS&mkv0ȥ7fSol=aK 8$7IX*%]3\8 aV^§r|d3aNW|Z#10DԌ3)pUB%p̵/Z'^}c;{y8A/ @@y7͵d GKpd GKpd GKpd GKpd GKpd GKpd G$FXY:S/8v(,ʢ(V:gD| _C}b hgPFFsN Aǵ.dGD$u2#V_^.fZ-י4Y|esf|DL 22aق%g1F]gzbRk=k#]>vk5ɥ`T%HD+跠뿝8xMIaiU22L%VEgI,&U_z/+ tILKe;H8H~X,Ůץ;cŁc' [eڇRҞ25$C~w#Mc9nb=z|02: "#YFyuu&|b iNE۠lxJ蝑) h6Z/wAkLȌ x˙lʂ8mxou㙑=a6VMX]UM8yB;!R"WMO aBqYiX"Q6'(RؙH!2m6NRoobmo{4F|VCcdJv똸OwZ 5ʼn#qOuNc0wyiYquo߬Ʌ(-FAg|ߪsһ ##Q6VNMx %0يqscbܫ˜ gfXhFOF-ruけNun׉/<==IO&}vwwwݻӆG9U bc֛UR #}lL~7*)-niT;#kNbR)HvFRH&5k{.F32_߱~Y֒[׉q7h^"Go?wL`z.844^n3ոI_6wedIu!9M]4畘N)I&|#e՛il44."r9tgDzwp={/ҝz g|50c_n3>}-cPFq)ӽm1_+- yʸ,=_ю諺g'ui4ō[ep2)Ƈɴ_?xU 0~=PӍ,5|dVLA {‚u~NTfł] HZ1O-. A#h'VQ\/ ho?n}YoyQhgmWlʒn2QN@ދw9u8v>wۺ3~ˤ|¨[;c-l^3fƞmv᳸KA3hBcBlƭD3֎A}ͭ1egkGO cndkIuˑ9CM=)X˺޴0sLk=ꁿ*S+.ݱ8rՎb҃Qq}^dM;0:t>D9w񹂑B3*rCq_n,xь3 hKc\ #i0Aλ*8[=3ްjV%I&Hi] q%h F&hD̐b,fB0{ =ck8NpI#G^V+x}##5y FdAf9Tw,D\O 7q*M6R$$:&|2i皙w;{F#bF)=7mיqKR̜gbew^urk貘\c[lbE~eʈƭ T,J.}fT=$Mi$ h3 yNC;7F%zw=sJ$VX&z}32pHy9tG<999 Q0A~}| m)o#װch"D"9_W`hDT3@x` "ml>_X&(f/UrlI7Lbg$)-z;9"e= 3030a&<*_S\L0I+ɗqiëߋӋёA I 8< ƴa1Ao" @ږiQpF gCg!7PGhbb狲-grBixð+-p A8Dw2noco'X)WkRWժ}C<F"*b6m9ȳ̢ebQWҁIwjhhhhhh/oKxkcuyo-2.1.0/data/pics/bxLok160.xpm.gz0000644000175000017500000001075010361553650013743 00000000000000b=bxLok160.xpm͝}WȶOQ3.ݫ[[t8`4wqb;[Cg]>*T Q{3l<ۻ^"NModk~ɕw[7-2vofr>>?޺j"Z"߷NȘn1WA2Uu ;pmt ۚek[(\eq:N~'Nn!ݡ X[9+'ZV.+_[G p!F~gRIJۜRIJ{rRo¤n\,#s -27c[KV ܰx n. E nSA &Wܹ\(0%-tG;nRQI~?bZ-ܿ ]!\\a| zt*|J s o QbΣ!<.MP]F"r7qw.ME'1l`_P bqʶ~`n1?Ʋ[@#w+{RVk"Mpk}¿-1-pPH?qB \0w\;߸5/tz D]d.긊e /Ĩ 5d΂pSW&Ex{Nw B_!,T"$b7 #89cLmg$!35񸐛RfYR!FJ(bq <y-ictWHDe=~X"Sb1w\suPe0:=(qnٔʘF1W(A,zG{,1D dLl i_11j &PWIh"d#.jȣOݗtq:vP72>0*> GHo?6EL\i!y9 Q^G Gd\ hDG;`5͈3Z ^ NWrOߗc|<,9cѱ9:RF~0Xf/gH8*c Zy6 @G5ֻX۟ƨ+ < VkѤc~-k1"&o1*ɨ1M3ɤc;~=Q116ȓFq1Exfl'_:ޯWX ?^ks_<֏~-X:.Aǐf$q|Tً:f>ƚgL}fc| u͘ڰg:>sYٺG>c[K-aCU\Q1Rd0wѪ>xʯ|VgDZ`g.'&HjgRZؤီ5 qzfI?mu$_[T-)RPZ.]}#$|BߟGl[m Ć{+pqvpo6G-Onn?pɕ|qFwk yv-v{:[膣U@.5qY?lK(IH$p[!WB և{[A!d3np!{U^ЯcD)x~>xE:F39oOac*RJ\etɖ?Z֔2 %'rNJFHFaurҔ rJHgibq0_#ut:A4RXNr)^x!9=.傘*7HJCCXɬ :K#bMHKF;TsrU]$du8OUFc2$%HNPVL~8-iE M&nTcMb^`cdT4 F>%|a3=$I1[p # Q[,}FC5541e @"F1b a8i>z#2]G> UMnAU0c0>z!O^% necO {*2>w%nmb QQtT=nOǜE[$\kh*Je" =|^x^ {>I4\kgι _|-u73GͯC?Q1>KSGQHѻ{v`S)[-S歆},<^ַIF|00Dr-{X7 ̿$Spie/u11 3(;['ӧY;hz2yFhi?;\H J?Qe}eF5R'({e|ѹ=f&rBM![d\^ah~Is9@F<ƝoOr|zno y'ާw]wvA!PEeJ?,ٻ)fd'\ 1MTTN&{/N I:l?w&;Xj)'@-*H_s)r-tI0:O@?qq26 o~FۯF$cG0BFR%i: GuB+XsEڴ)5Җef];1qF y?G1o{.L6,nZҗ/L] axW<߾6L%eGQ,V\~ @M+Mg*nn#Y5 dt*BH'VA7eRHkX`Aa: gc:p,żm?eӷ ] )buI!к@G_2$ 0 3 ['ѧMuI4Cck"! }h2GI^E؆0dI7V<4yfHb)(A?"CIw5%35#U h؈e2:P@0 2Ag$o402|WX'eJWc߹j)ζc<-fgJ"*1CZ"Lu #rY!"akt j(oBh4&O΋eRArሡ1eB6f"nfR~W\d@lNɝɣtn@ .Cg!:ÀJC xd!8L5ײ5 bDB1"`0mĂԃ(b=@o:C j+0= 3jx '#2=i0B6a# $v«PaNAC\JGTE>)ӹ6Ð19-iM!dܚC!bI_/es}.t8%oʦia]w Kv?H'6yQWTjm1#Wzh1!\z&@}5-slVm T̵Ae^*NEo, 1', io MQ0%1La\N(C?$\f abZN} V8`0"s}b0LvIl7-5X 1/F:C~]}(i2fk Ich-ET(UF؛a冸AzdfqaФEp[k _03\[]+BDUy-?AmY %m׶[ߨ : .?—.{C|9 ܀7 -"~Q;1X f?'6E!=0U-c ,}Ӛv1{6S 1xW1wݏ 'gb۳nBcuyo-2.1.0/data/pics/bpFreezeIglu.xpm.gz0000644000175000017500000000116110361461707015015 00000000000000͗O0׿j>&CitoxDB 0 񿯗svZJ΂W;D]Ra7D=<>_/np`zxypzTï2W<^^g?0b`N00=;ņlcti,CPb¹ECzmrhql8uat9Q~8^$Az96o!> +qϠYC^%4xc/h|lDG]pkgRtNbđO34jt]lP 7 N-?ce:0F<4 CGp'<$9~ NX/q Hճ*4}92 殊ȳˌE#)":Ƹ-EPUv6Nt,R+-yr`}UiZx[H63Za\fQ?tkR2<:tgưP\>I!q'T'E=z GcޑD%ܼk˕-wt0o[۷7cuyo-2.1.0/data/pics/mdZiegel10.xpm.gz0000644000175000017500000000237112412223271014326 00000000000000kSL+"M+^қ6U@.^P^ @s6C1-ߙngsn2)K)f.tNlGI)A}h++l6WVR+řYE(ۃ=9lMnbPU&x(">'4xѨ!dL E+"cTBkӄU@ʼHE0_ifef?ҵ%\DR 3KMZ !hU²0e5f Qg K0#rͬɨFqag8UT$<#-!"I,SP! X%"hEm7 "P RQ[G2@څWQ[u d4d[QyN mKg xQ ҵyL&' #,C*{{ U^Ԝp: k:*ɭ i^4''" "=Y?z$wߏ~7Sc) ƞxzx\K~(Nm?4YQC8=dQAR{rAp+ZÂ. k(+W;9%A- ZqMF"BQ\˗B|к 9W |^*Q&|;Sa0u:Lsg~,e #*/p=>C}Xc4Tu}w0!2GtbMX GQOƎjXP@-pg/ ֊աP(hyy;.Gp"";ܙ !bG{s} 0 p(Fvh`{1>Xl­a(:և8QM8k6J{)LġA/f\It x흺}jDL(s9tFtݓ9H:HaWW^Gw3#9îsB|$8TղZ]@[VhE fٖ_;qm` $q}߉p;TfБ3Gvx8awg{sx6MGpPt70\4ʑ^lja4\$:qM٘7*9铅l($;/ w|je9,R}>u:}tuH cmJ/VmHvPzณ?.˿ZnKEUZX.>-/ʝ|VvcmPe.z^,~V> /[+|Jbzn<(WeͲbͯKlzw>*Lxjo'rUvWW3Kٖ Vzqu\6q#ժ,G[ofUGt_ca|Bn:1.*{UnssqxZUVnkx/hrUW^*zة63n.fDeHbs{{4d篬n/{G k8 ,N )B 1C! h6hB!'h.҄3pC̞KGG o؆+gXK(1+g EH4 BH"XtCH0BP,hT"$6|B{ !ax WjCHJ-[d1 BP%h!&7D)nQ!Ajz+"C#e=C#CHPh! x~2E!B‚J B^08C001!{%lÕ=PkqZCB7CV a=PiH~B e k DELb0E@1}J4sސAiCUt E$ aD CFF f\hA!Oh ?E6 f(4M!8b g7C)a8Oadž0XFZ wj8lBX"o( ORC+ByjC_p5<=_ iY!/GiDsI ՈKq{Vq@ sQf>KntKi #aA? wC gc"+   AAPQkPi8H2}0#mCGl0+)H 9~RĈ AېVmCV4愘a1~zBѼK*C1"Zį5V&FѾ0X@O$ H kfss" !O\s"V\Y835O긆׮ rG,r<`\PB zb' Oy J1"<<5ІP 1a'!XC#b!z `ÓXC)j0wR 1t ACPƨ0 5!B! jC4&2gk Vt @xH EabD0"<Ϊ]#*C0&i05;TVB)AR WaCQh%X_E !4fJ }E)k^'C=;Q/h%qäZB`c0au{1"mÆqb¿p~",G Db!pC!yPD!)h" zCP4dy 9AmTՄ`q `];X$DiC>LAaP_QB B`}->:Ӣd KD+EZ6,bBRÅB<,!4 bEBALD_Q4"T .L0L1*aK%JaŔ? FdL)ֆQ 3C!t*@,i MEPa(GcJh( gWrD1N1ϝ;"xzBaP %7ZҰ""тdjAaaP#6EL b*D`Ib0og(UA1i+y-D=`a8b"BðQ Aa/KEd b0 1aiG!  #l +FMv%b(a1!e+6N/-P1,O|\Å001 `(U,@LC7T)&% 3E[tLJb(GLK.. 6q ñ;]g(G0P6׺ͣ C E MCqv|rCP^19ch3nV"z,b b!Fr !CqPL ҈ aFBl;<4$; D k ᡄ iC1y IJQB%0 $ K H@un!&&,v+ڰP4DVxsS!o#vBS4S6Cq2q@PbX^C,~% _~qD~4bBCߐaD*R"b=qwPPl85$Q 0d7 *Ãb!h^3w&TN"DQ#B ]D.Nv||2Dk1Cq34CE:é֐St1+E;bۘ(α#CJoGt/@IJ c IăbCQhHvF(.⁛hooS# )DbzUcX#6"-H`φի>̰d/KG`>дzWކ30F∜aW}Ea.Qi@(}Qb ^ 3JX&C;3#Aڈ96`8BQf"^ 4Q5 h;EfإI9GC^C“6bA`{!+?/F<!H*vV7a5iؽ!!h2/VD !B?!bbPx{;u왐Ds>2CсRx O"NAûw rTxbm]JP1!CX ޕ&21*%"ќ6[En)&'U>0! HPtû4!h&UFr"g޽n aEް`dW{3 ﲄO+Vz_L8 H3 !$ c'QqZv*I`DQj7i'AFT6҆񈡊2B ֈ:ŃLjIr`V6 n `Ehn}†[[_1 =~P Cg`L1dpkPg6ק`5,3ְ4̎;"*K8!A؍"Hz"C1'^jn B˗/t¡'D)P3 +^jBCoZ_.}>"MPTC$̂ )ķ(eφQW!0$ =1IB!3.D "C"o?ZC #"o!JBC! Xotb!J"U 傸ZyF BEP%!\Cx5++ DP)3 u%"C(Qd Մ0bm8 oC#,YBq''qC"re sDW QñmX.c "E-➙i!M!6cCh& K='"0Bp2\& qFB5D1,!i8#@ʂpsqQFhXCpd3T#y!l2c4"o:kjX6$aa(!g8vj(7'x[GX"҂sf8vjh2?YF#_QJf~۴rPU< (ie("gv* ]D00Tְ؇ 5t=CF|X%1VԈk:ÇV$H@&u,XMAHđP8 !d8% GjB"XԆGZB-i#F{-p$$ ]FuAc[!\CV<(ff04iA1PG eQ<:R+ d2A ':ne5֊BPVk!'m0둆nCPlX( ]ĉ_+ = 2|PQ BKq6n*@PL !%!l6a)<a+8 +DXFl [.bUCp1 1rfP1l&wH\-I wAHCDp^w ME-O<"i8A n iv'Z6-,,8]16dΎIHAB~ \ 1 b> la9$3WV BV% !@ZK;!عbBC-bK60!j) c/0Zgp5 Y BtJDЩo𧟶iD\QxK:Ca@vJ1?hxEZ!IN&4Q-C 5p1Q:C)"K>#U; 4!W M #EpmM{!b̋c2*C&4kbz;T>x? 2g 95a#rBGQJ(ְO7(±C)E 1>a{ePt6v7߀LC!x^XmC4;nЄ;B^bal%kXD@*f}!zRZ!/ jxXG@#^h8BҐ{\GLBt OwBX7OaBNXĔ*YhCmk` ]^U2꒠[a8br{PDpIE(!k Oxh1ckcZ{] X v\CHE^sw k8Y)Eik(C̒NDܱ NԐ"|Ta yG" !M#>!aAp6R`r2T9bPhH|FڰVeXW9҆3['6"eH[~GX#.k(!lHFo"4 TG5l sxCV7D;$L[CID0 5OA$!C(:!g#A¨ IDTQcjko3"ÎAC-ۉ1Q qD": MhLB %D{D qCA0!] $"ϸI8cDܰA,"֝dq5\1CBw+Cd$ˋQa"DCkH)&Gא&T >IH:EpsgU1T("3wUCbtBDD `x yB7V##F0Nc! I>`e ՈvCQ`Ž h8鸆!zEOOp. ypGf" D3‚a2jl(s S&:EӐ@ a!T5절REːD*QfR Bz(?JhrRFPvd(R yD#" Ն #&hem(DQ@0!aDP;R6aoO{Bt 5#͇vmioqo a çO{Ct jž >3T" )ǡa*D Q_aS#= q*çOE r z2#VD4d( ň!$)Ն:# F)6kW?80nac7j"qa! UbE/ à/HE0(24 T ł#ɇ!bjӔsJBHR#R0vB8&R>5!C1&ic5 a6e(ALFo#r"}*  }D![C10nㄌ㴄JDk}ED KElW{$!>3goMb ki pĄE f:3f&"ө#D<}:T!J 3!:Pi7t Da0\S5=D "C0ЛAXe( O>+_ܘ'*p!X̀"o(Մ}8gzba .fL*vᄆ}8Otb'ahO \siaxE| ΍muaHMPR7?C !X) `4SiO"N7T"0Sk1T!&!#˃j?B =Eܰp5^PAx '7Q"ҭ~ o8CN0#"6r0"fA|)gcV" &a C!bRB=2zh 5$]ć{1bj0z~B0oCbIh*vlj װE|A0HgCag؇aMصEPHΎͥb_JEp  Uq]BE|vHQFP hBa߆BEPeFPÓ<3Ȱ<`ΆAc_JBMرs+=!YGy:6|0|li 1Gm:E)ŏ !A3LKcx7Ž G=DC K$፣#p+;!jP ]G*" kj(Gë^X> Sհ0,wqC$">lG3:Gm3l =DА% q MWbao5°U|!B55 ˆ<CZa!5 4 EQDH`x0cW{{!hxWCQk"G:Q`?Zb.bx2$eع+T ]_.YpRxtmol,4T^Aj-R.[Z{a6D'cASb -B!@j{:@Ԑ4@#! h`!}gyz UC^`]HM62>[' e H@JTqGKhFt(8F& W*(!5l^`#Z831U@ϞjXNp5Ɛ̚#}FNAGq(ig֊`#w!PS0 Pj6WwJ:(C6V&RRM೎Yطf3Bz {O\]L{tcs"#7D́'%^f6~bpͦ]y#G|]15Hc~6[~ՀoE-spqPXݧ@1M0=ʇTx>SkŎt _tERLPQ iPuϕOJxN/pUVB!b uqRk Mᙐ9YI-q| g1AU?86[||Qc~h4I0x/hP{~vU,򸕄QERs|A^|ўX‹I{,FH?ϕ9 J~RS53"r*!J+4(iDDry8lʌe6\ Qʌi'V!M˧դETj^|eAseadNC&o6+f3?p~X?~ʜѐ+yA>:<.[VCu"4|fEm:,T*-jXš:|F+b!ycV1Y+2Q*=ᩆ㓓7f԰CuxfU<}ZVqO5w  rRVqW0bVJϧ[sV!tCӇ-(cW-אIϕg)VxxxV +xq~;g3;A^>(!DsrϚ,aa^#JyﴳMIXʋ FQ;;E Q95Ywy8r hCA ?Hq?io?\gb,e]/XK|s?&-."zUG!rp>]XQb )/ 0\o&ޠT%/q!wJuv}I(I NfZSiӰ]_dwJz854JrYI5p3V5b7?PLka2sNcd&y#_k`^QBeۜ|;m83?g<,Y^dÄ]\ǟ?Dl>xӬ#5=QBè.f!z"O.O?/RZ\ǁKP?t0q|?HA ?HACE ?HA0`ko?ȿ1A㣍m Fcuyo-2.1.0/data/pics/bxBall160.xpm.gz0000644000175000017500000000772710361553650014102 00000000000000b=bxBall160.xpmW8_!Ɓ6>qR(-Yɋ!m³@˞}k;ql=ęCɽW,>›\NdbT'CzSA=ܾ<2^{7zؽMB22~/ V13ӨWg43ojՏ,eԙIjĿf 35xqT漟sQiT-0r{3+$g2V-ϴY`9*>`*0ffʻjٯ>Wyf FmP2QUHު⛽ZU0{Գefּw^Ug`6j /(F^cf73}߃}Z^<ɨ}2M2o Qc\yf #ķHzCGAڃJ|T~_OG9y}А}ƠW4 |Ul9|n}P2Y4|33bɋ`^o7ׂ\ao 9hWO9"W /|C:05;WVFؖG0VmFrJ|})c696hU F=w:֋D7jp̃eu+42_`p d G3^Wyr{Z/-P n Ǖc5`MG!fޫ3s;y9[G&c-c:Șw&sn|TmG@#(73RNX)"/#Rĩ{%B95ŘzzwX;*bDwZJʴ]a< "Ǹ#td14LX\N'A{s<9cG2q3f9|NrcdOʈqKNOҕ'c̙"BKזgψq_*gx+&윛Vcjƺ%AL"=NM隥,/)[ɘ-TI=12oaQRXe^SF[{kti=W0lIP9ћZJ)gt,,L_3IƕRr32F~z Jc0%fKM`G (02|V dmQvy ImU8(A:)dH)fU4$r aͼ/qIC]tׯ[ زFrƘ߸"QL1_ Ԗd-GHͩ@\4eI8{b+;Q/Xm y155G.ݕcalĩ?ʣ+^_6ՌHCe t2"o4Θ\՝ 2!揢>8"e9#.pj[2||S_mΧ1t͑1rƗ#Yw[k#8{%c!cށF;ϻL;HQډG+fF[nL)ɮ)҅27. :yFE~tE277'ohٓ.`r+wP}KL!G.0Jz+ ҹeW# yH@c7"F&: ё4F"4YK0WZQ1HH=mg_}Yb79r-cu[¸,eYKQ'I1:QFIM$E^G%Yo˛#ez?u'SwJLO\BN1'E}̜%MS*wBi-iFHEFt)F,w% 7fQZM_AEFY_]P1 ca˱("9ו?um-Wg,jƵ*gS3zj jZ3vsԣ9~kIn2g4%լ\MU/+3Q{{1FHg 1$aK;={H-4~"?˻trI_A\K-!qD1cge[/C~̉4޶1c63-}aUpr?H;N`ؓ-$diEs)#Xfsv8¼ ce+_u>>1~ɬP1ǛD{:\"ci yۛ ᜤ"M )c՚09{Ψz4"굼̜gԾZ Xl珉 s].43P`>/Wa:lU q%w3iCRˍf>MpuHčS[u8-1R Myȥ& ҧMκ&=\n|ї7ƅA(3C ݗuRI)>޵McxFe ߪxԎn _NOƼ:*j%+>fxl ?i+vFgL>dջ# N摕̓ c)\;w.!P=bv2EDy (@[lYnp'ʸ:DʑC-n 1_dI4 UxClK+#+`ML@|v z+sNNUθeK*@K)(Ebp!mǴӤh9"O{}qIzcƿ697!PBS}}ùwOb!H ys`5'#w>AЏPC ?Qر3SQS5_܉ i0i$,lsb3UIf-χl=$bƺOSzg% :gDpݧAtՁ5À|P>%WK13ăZ;4$?wxʟ"_ռxnDϚ5'zQu~OY{(Yp1/.>3=Hr\:SJe x ٴUJR'E!/Ӥ%, \@G%?J}vxD<.-F< 383lz\˅Jtju7 )o%_\N7#u6rEdZ,'?K;03FP#@I4E\2u bVpL1UgFWIkcuyo-2.1.0/data/pics/mbaBand3.xpm0000644000175000017500000001034111672457345013433 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #FF00FF", "D c #FF00FF", "E c #0000FF", "F c #0000FF", "G c #00FFFF", "H c #00FFFF", "I c #00FF00", "J c #00FF00", "K c #FFFF00", "L c #FFFF00", "M c #FF0000", "N c #FF0000", "O c #000000", "P c #000000", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/elRed.xpm.gz0000644000175000017500000002214507550521111013462 00000000000000:=gimp_temp.206423.xpm{kSJ# F%j4S2DELrgе{`mw'ӗ癎^/~y{~Owo TJuR/?-W__'u>?@J⦊6~qs7:nJ٨7ivJM7C&n:~ZM 7vSs57t6?*f_fbS9Q=}%]ʮ7gtzyzT>ݨVV7\_ܼ+͊I;FOh澍_H~~TszRTeܴFAWal*=UMYYN?S6Qz ~qD.u/e=F?S7﹞S<}K=sfOJͮэIWncdSeH餚SOL6揑 ?l1tQJij#5B:'J6*̈́|0*|^UUsZ_\:tn{j/wʴyGk__<::!G!/F9z7ӧrL/u~s8ەm҆K7/&R4zd^+Ty]#o> GZlZ@)E^k>*`uUErL Y*R@Zm0h--J?ˤ 245;7дPs"=hzO5Muhӵ@qWe1>g=mvڡohj:H2HRFA!Aɦ$!\(JYI=ٳN8{F`Ȇ XP4){,$Iba8mE6k2UPoB%3gMW+܄1nM%U!]zx͟!m>bkԳ4]IE)Pb;kuM%>uLɵ`vz`pj9;JA1ly/>C-d8#6J+W1zsҐmOJ$]}Ȗz6*1C2 䛺iL =gh (5Y{T"=',Z _ `ɡD`$)0:èj)HF#bv1R]¶ I&'鼐ϑt|>jweٿ-/я Ϛ` " +g\{G/5)}t(TM{H,v@~!I|q>P-k̰=l>Ig_^vKOٽsG'2}hG)ʞ!g~_N^O!EGtI_ q81 Y, /@A`s]ɿK NwH\Mv6r/ 4'l U "{_?=à鱋t炁̸ʏ'Hn;$n]!Wz b#W'5X_IJ Y\-|)].I:,,g\ @5vE*L DϿ_(_A vj?rd[3VϞ!xٸ FG0:=4!sS_МTE|!29%I}sX7?|>'W}wsFϟ43z' ӄb_kEHb 2{">lD?7O۪oxG- I$~mŊ|zR䩑WP1G(Vf9L:Jfsa 71e-eBڒ%k-_]?*%TTJ:`A@{>$RS!+@C\ƌ-7)B("߄ c+15H_@ 5KZ)ib4a +*7bYBU!AOҭlN;Tk;B|nbA;X)q8~hЁ pI7 $hAݫP jI,Ijq7Ǧ-]QPٮFFdžv]JWSԎ8TGe 9P%`''8?sI VXLIb{T__UߖAѯ (Nxk0`*\Q.!iW@^-}R"Ɇ B?n08;i=Y@7bC" rhFO Z_I4h?rILgÌab6P8g R)[dT܂3*ЫLɕx= ܫ0]C?@;;s"pxA?ĺY9 )\HU (}L )IP$98aQTaNh"!B~â %!tB!I?VV/^;dPW"o{S!ariV8 ) ASi?Ĩ* n.CX]03RzzO+*ո|qd{h1qq*WY2< 4oM􆔎$sVBHLDu%o=[!8j Es/4L&cꁺ?FS^Y>>W4䘟s{JN6z_tM|~.+!d_A/h>^9V6e4B̺"R(lt^c}2!ۗS^Y^s L~.uV(B/7y~2$sM0!wݞnOXp\=D0rѼޮOMBv㕝"pV8 3r5ԎNi>Z+wɃT YwžʄKw G\+kI+.(+1EBC9vd@Ӵ&7be}8@c4ux}^j *ˌ*oL_/b3p2C偏>w7a?'W>?u;om+E*^*h dNٿ1?OHtaS_\/wÔȩ7,Bqo3-q@d8Es>l_3v⾃kn6t=/ _|._'N5~!|y{Z|`t9Rʊ as{NElfuy_trq%/22C;}~ ڕ]lȞ,i/ lUyp`왝8W )k/!pwWn~M_rC΍z/_s8dǦ)#lJe{>0'?zF!Nj"^ ^?"J !gZ8ݟa@Q 6`^䓽CsPч&s$P|xji>WNɊ!A*E|5Y4?àR?!$ Z@3RQ.b1h rrVe~0wa>R5Amп@HyC O洶0-2/y})/~3 ieF<:i+ F+]F{Ļ8!a3 LDQBU:r>Cye e?y("m#'TiTbZG%v`2D V%EF`# ~1'E/O[7`# @t b :*B9鴹qlJ;ceu"6 #5,< /lq! 8;E->R?E.ސ$L3oM+Ah<0]]w@Z ~If Y Fw.yuqеd#ǮgM& &cށ0&sPWWX~NǑ#Ifпmn1<i QNTTO݈Z[N?1Vپ` L=K޺-,1`T=ۿX=vF#hNXTTVXݔcAd(#P6>*&88?aC7mPl=lX"tJG@Uz(g>%:Q:^A'|=Ab5nzca_ZܥJc V{bA\s`0>$0/?\B؝gigPlJl"`)8#!7/5I{r,0zi't8 A8Eb7@5:߸+"bkJ\&>bg7|E%4=c[Ţ45Ί&b,ZҸX x-tBA03?[|nhVL <e{#a#4e* +ڳ.VHa \@ī؎ok7'9QIqe'b}\G.%V4yD=RI6T^GF[7HP0.fE:)$``aKHk{cR1m_P}CLxH`Z~/t#o/Z tb{,w 0o|/n 4Z u-g7L Z y>cn>O~4z'0P*^t?+E38W<>t~Pgۑ/Q tw- m_kPJt_}|{Ɲ}򋴆irUa͓Z\Q$Ƨb|k4㐞xy]XsʋGOT@ևb7 ma/G!6m0<(i5~xOt{XɈ0$?/oz|8/p"uOƻ{Jdaf7a9e Z .3;_%d:s 3j0ȟ0D]P,gd'.Z &wHX>Nv_0j DHC)Ebp^r\ޫp ]SJ/(+U[Y&lJB,++8[>"|nrzQغxy58żFi_y+P\3bm1~"!*)5fNQ@՜/gz$ӝ/ M\$7& ~Ͻ(˸Job*zQD8T `jI$1tM_6"R &x !Jx @# ;;j `!kö !FT)'ܰHGp3|5 gz/zE OE;E[3vRFr.a 9.+f2$—_u/p5Cį^du xD~Q 츋 Yy0F)r/ҔWrr'l:<\pJ\)`_5&~>I2PV5%W% uoR-T7?[7/8L _=>7ޙc^P9jyP:b&̜0Z0 `DRځX.7U'P-D( bw0;2lZe5>$;,,y0oio{6Ղ "c(H-hD~E++܄c^)HX(9] ȝfGBWKh]cg½j1B4JG`$'Vi1^m4bX7f^F<}~ qީ:Uk]oH#axIorX;PY5j4vRBUO?i3ܗ58Mu>᫷i)¤o]ͽ~|}L{ZϺ] hb%m@t|ny";!f2-CwI\HOZ'QUzv8oLPu*Sep11 뢡0 oA'qe#b%+VVGr[:NFR:}czG#].Pm~aV$+P_=|Ř?ߗ`Q%X/l)) RRY0A_*?+Jp1W:?;~u3ݜ u޴v7:|}b-zVAƼ\uqk1|_/a -^`mTk=+jl=KSmT;]ѝ+N'iOpgow΋~A_lbJSLFN?w-Ҟ)bއG; 󦘷gNJӇQs/2$8k0;|B@y)yW}Air/?'MuBYxK1'.JyU|/*B`q; :zeIJ].@9fNZĪ9lCP~!E+#Q ߵH*e zxbk,$/jEm_| iy779MD ð)؞^ [(mIVV}AuS>&RiR UYC}%C>鄡sJ$=*J1lhCΏg_؀ع>1{I>Oj!Dk~ys=)]lx PJ|aAV??>Qu 懲ۊZ-s|=`ŧ޼>{MF}Nf'H}  Rr;3-hU}RȩDf=B\(Rdo$0Gc퍐naH-wȥe:\J\H,żfR:V톑*Zb^&:/%҅Qg80/}z-njX>#Ry @(*)M2 %X^IMf~6` 0ob^ lVΞxf:yJ]'6B(a_e8el@lq:R9*4( I)W=[-.Թ JC pp`ccmO4TD, oh%;_9z׃-\V˒aһ bUazu(^'k{o›jW=`G8|m^hw,h1ѽ<oDo3XQu4-=1/`B&*{Ab5VlN-< yTD3`2ߖF BPozA/Bx#:0LoYw^ۋd@] \}A`?@P.k 5%< Ǽ_pd=M8l'޴@m4kfgs w2 :UM ? U*w79gKGcuyo-2.1.0/data/pics/moOctopus3.xpm.gz0000644000175000017500000000344510766714573014527 00000000000000ZiWLH dֶ!vѺ x\Q\@hEDMo2&`>缽pg$:?#TVe]_3B>>wbRWOsP `NZCgJ>tȇY5ESl} Pt2/+btD<^e4t6mݶ @,% _T .ޗ0 j*'fIa9tE%MLHUhJi((#Td"-Hhɖ% 6$P`u4hl@,6 А MR@ K!ІU݂9.4`f @~`JZV⏷DImŦybMٴ`r6i߄ƒ"MT-Ţ؁+`Uن*QXo*ղDǐ F _X@ O=I@C5jěsՐýpқv{j;0ަ b[:0kƁn:CgC`Y.%'x-â zߓ6.b*l[XV*8Uq`}>h|G<:EN$w, ?gN|OY>qaycO=,^{:3V #4 Hզ_}`HX?hRvws3$uQ[vyݭn(Q+S9fK[i?c(bYNQnns ;xZ'vG)=ގhӥ.t~"- M2Jg8#8xz' dU y񍙇FLTJ|`=Zyf{a'8~אwx>LM}xB58gAcl?q1#3ȻFrr"ty~~I֌^)w& FXzx`}T^D^v_}?K ѳϒUX 1]]P?$2ޙ)?$G:2 0{g 1A,ih>6b"$O@!_z~D't3 Il`_e rЇ1+GzQ}Nc$ೝQIIE#]+9F#I'왁@,OBgcO>1p1$z_w*E>g1$ gѴA=z##FDI(e>ɡ'sYLLLf#MUH'?Ix}o#^[H'?x$WP\}C7Ey?x0rW6$+cuyo-2.1.0/data/pics/sbBurgerS.xpm.gz0000644000175000017500000000547307550521124014336 00000000000000mk=sbBurgerS.xpm[m9L~EO+On6Fnf|! !tD'/b~lכvwft_G<>9Aq ӫ/^@(~sw E' {(- o_?z{u:AqŇǗx O77/xڇwPCA8/O׷obS/n߽^O M(vey"qLy'c8v>p퇏A[_ l|u(%8.62&Pm#31j1l= Cۥj6h?0mdB9FC͆`zBwj> ű無n#abi.V0[~R62M*Zc~Z6O B c C`(CcOek" }i>muϸ6k6;ϳx9;m}s4ϓ1Ma@9{b_S'0LSY|)JW U~_1m ?m>sj0PNp΃ZV•X <ȥD^-?/n'1?^zs'kmx`+!0j:#jnJ=q-IoYR_B F>/Z},m7|f}aU@ Pr+3OFiX\1"{(OثK'֓>BU?V0c?( &S Z6;JQz'kyw4@%SQ9L+V8nƴHg_xɞ8y;81I SQFKQP(OyeB&/` kp@P/v$KaRUl,1{rXa-!D { Іpz6grq>x/!tqιDXm}C0 1h(R+-RX|\ZZC# "S'C|Ki!0(dB뒑ĉI3 93->c#CfwH-XSA)>y]༨FEt! j Ib&*0eLT|£}֫y%mLPj'G?|.U! lj1mAe=A_?PU\z~O+ s9Y f?O(%n3u}KNßg i䇥CNﴣ~>ssQ:!ċs:|({y؇ Qۇa!a0CII䧨w1TŴxU0̳=&ٜM61YNܧ|8* X1Ilm.`\ъjyo4W%A rR6 iptUjG=I;BSbڌwt9 n&j>Lz L? ٨sR04Y >2lڌ9pnJ_. vC>;0 B~J Qf!a [Wܙ^bP{}zdQ,] :CK8oa q3!N?\x9eLm6!d٪T8jlB~"_X5g8xK&q/6FbH Y !}2Ā PP0٫0!)}үKr^bX,q%bS(̱WrܾtyŴh#+m^$Dmc|2Y0ź[ Eo9ֲ}Z1-c['=S̫@d{bБp  0?aҦt۔þB f" *QBHO 8}IU =/\al;Ǵ;;//MO~wv|_ЙU40*[ov5_Z&7 o" /01FY犷(6DI:G2c|l߯Fq荄8@à !?B9o84V~ /K8C[0|I-8;HXoHXoH,EΆ5āY} ~CkŁd{ wv$CݕVqCă\@Fmz.QO8#WZ) n@AI)& .jEI0uBS[p 9 nW 60twx[aN M9b-AE=Lkx}4u͠am%*%wG`6:`+a`&nqp J= %}v{~8na7U5xC@?w' RgE+XGw+0`;[؀6ob%AGeS*GgI6%V) UT>6 vaG47;b٬T3&5;Qޭb7kG7gbx|bsHbP4ݶ-LvNM'Lį?Z5lFQ{HCmLĿ;#~@Bl4;B3L?a"(?a5x,e;mu1uvPlDF^nRB4ob~&(?!24[)mEC7WQR2/~hO.zLrΦUKKig+'~5Y8) ʇyVO6\Do$ 7m0gu!?^ꪘ㣶%4imibLP)jB嬁ˍ_aAjAjZoyf00EJ_8c@[p& }G$#g?E}l%IOՙ4B~&oROGIL$ ]O4Aji9?&Xcuyo-2.1.0/data/pics/sbBroetchen.xpm.gz0000644000175000017500000000567607550521124014703 00000000000000=sbBroetchen.xpmoܸBwix E Fq \zW塀Q吜 9vE=6͟fݛ_~o?|si~?}/?yzbw{w\޼m~O?~\;;N]o!{Own 'y 5d]^>@><\<@vs^\O?x77Wx T y;| ˇgO/9(A ..ﻋs/m^91. N?Y^8a0L*\ZV'ZHɫ@C S׮f^cd`\7 iv/C_|3UVXwƗ`Dl&PMC T0l\2%EPl!Θ 1$!sK[b XC;tP~g¹#8cȆAP1&!/ @n<f RK@|!/`03A6ECGUc,#3TߑC*rj B2T|Gﯡ潥dHN,1 ݂F 1ze TF8j U'` 8ѫY.~rNzQcĐAT}*gf_!gqYGiM H2H)GHiw\22;zf1 G%ߕr_aw~=HK^Kx#<@x: e_e!a2̲)[o-g s,+8mw{DCڱ ,BآeS!HYVL"V CZ^eXeE+Xn (LJ4aᘽOعԕ ,d0DBkpm@p ީWH%o,̐#އ48t1u#gXe2'V9p P c\# 1rb0΀0WNS:)G"7h2D':v#:RB|P+P(0ކ H`D؜7F!w6r A{o>l""YNJ&1tQ?`y $c?Fd?LH&ñoZ2١/GKul&~7 :Y"h'#/4~ '3>J+->Nr1gOYb7IG̑z5{=:\? 1}@2a10yf%:$C ,`xϪ'fn8R.'(%?H1yh7bJ!abRHS1^,Xeq> 4;s 0,P^B!>Yc]b|\"O -0)_p )gEm^AQșTypdH=p9SENv˓;K9^23q<~ߺOS,CYҫPcۮm>TF7dF!^?=TDB<1 ] k&]_'eU߁(rvdL1n_p l_Jiӈ@S%|0}T4v{?mr@᳖ܿ0E#-B,T!1pђ>@]=NRp> Ύ Ñ.W1te:==!91bGoǥs5" _KQ}27#xz@&<|1DH[ pjrp= ՉdL@ yՠ۫O F/DF?BIAAH:B@#k2BU#dA23HoXPƨco1 j3aM#!H dя"nL)j 1 K@!# +M,zd@A 1cMv`6H"2 )CM#M41TKۉ١$0Y6RlB}l`JAAX58O]]O`5da]yyy 6yVr%B!ˇjACxJgS۟UA= zE .H9 XTE~J3A?xkie&1g Q59P} ߶o m W~߶'QBW6ڶR6X? @{S(!e;J%֫$)?M&-}rB!/CME G( 0Ctݎ)" XkX3?aZ1{&馍m,WcZ'DYi f'P]:7}1TvOG3:Ɋ6hɉ!ahhW`p{Dڣלa>0d##+ݓc [ `RB(Z''G% ie c"{ Ş'=Z{uTҴfgCC=ܗ?@TҊ6!4GPuf4}D =Gi ai9C#MuhF~C އr=93[6DiQ`"&6 !<#p^Pve^Փ:=O3ͧU?ku= Fg0"Z\i1>u0QPGs;T!Ġ ity2Z]P O4Dc'!uB4>#?Ѩ YG>' luDu3#Bx#=H7yzOڙa^RtͿݓhCcuyo-2.1.0/data/pics/inGruen2.xpm.gz0000644000175000017500000000353107550521113014120 00000000000000<inGruen2.xpm[Q6~ sùL R0O-},Phz-i ޵F͌F= 7}^}ߍ^ ?pO>}{q><|n^~1pBDׯpx - z9@l-p`β 9`4M,[`A9d3wW_Wc|q¸>Y~!uEb1"C  B0'Pg$Gg+a{IcHCcġ$x~v9ȹP3J8 0vzMq XkڝjzM."XokSϰeע1}OG_<0h_Iz!\ Mv.??XQ|5Vxyŕ8Nsŵ}'ǙqC#IwicULjŁDi7dZyFМ0QQ |dbØKEeA߇I4k0l.>a}씌"Rǧ@p0tIL:;)p -fj&"2taYX@,0Ma d%Iu C&֓N81(j,~(8ApPYKSpU֪d@.G% #MPx)NpS#67?́x-@sdA1C!Ms|)G8JR.>Bc& _g@l Oh )_ #_b]6Rk^Qh٣ca4@Dy8/XQݿ;ǽ&ewΰBcuyo-2.1.0/data/pics/moAnemone.xpm.gz0000644000175000017500000000360110773171771014357 00000000000000Vs=MjSlj@B_5q/d4RƁllW]7Ӑ!p=[xчiezzU*WG)*+wO*K֟uGGCm(~ owA3jE /wpQ;&)$(3LҝzoSR]N;Bk`g4QuNZq#}]YO:< 䌾?W\ZW8--,^%4ի6 .k v(N^\p^ (Z$)w/~8foj՗,,9nS7HqIH~~4K[,$\ke:_gQq<4J9 7Q oxcZN_E3xeqRᎲQDȟ$:Ij4eNdI4t}? ><<(x47FWNd1qMJv^lŏ忐ԯ4TeיC,G]e%;4<8!O<ZO41>sC=R4sL^qQnAu)4Bs2Ȁd 3q!%nj")#s!Ն)rC).5&e@}zJ d/ifXXOIw鹿ٯPL SA! |z_P%}o=x G g%kx_P&b@ (ccN3pToǍ#=W5|}b_%cuyo-2.1.0/data/pics/lbBlack.xpm0000644000175000017500000000255210211122646013340 00000000000000/* XPM */ static char * lbBlack_xpm[] = { "32 32 12 1", " c None", ". c #CCCCCC", "+ c #858585", "@ c #4C4C4C", "# c #222222", "$ c #090909", "% c #000000", "& c #6D6D6D", "* c #121212", "= c #A5A5A5", "- c #2A2A2A", "; c #959595", "................................", "................................", "................................", "................................", "...........+@#$%$#@+............", ".........&*%%%%%%%%%*&..........", ".......=-%%%%%%%%%%%%%-=........", "......;$%%%%%%%%%%%%%%%$;.......", ".....=$%%%%%%%%%%%%%%%%%$=......", ".....-%%%%%%%%%%%%%%%%%%%-......", "....&%%%%%%%%%%%%%%%%%%%%%&.....", "....*%%%%%%%%%%%%%%%%%%%%%*.....", "...+%%%%%%%%%%%%%%%%%%%%%%%+....", "...@%%%%%%%%%%%%%%%%%%%%%%%@....", "...#%%%%%%%%%%%%%%%%%%%%%%%#....", "...$%%%%%%%%%%%%%%%%%%%%%%%$....", "...%%%%%%%%%%%%%%%%%%%%%%%%%....", "...$%%%%%%%%%%%%%%%%%%%%%%%$....", "...#%%%%%%%%%%%%%%%%%%%%%%%#....", "...@%%%%%%%%%%%%%%%%%%%%%%%@....", "...+%%%%%%%%%%%%%%%%%%%%%%%+....", "....*%%%%%%%%%%%%%%%%%%%%%*.....", "....&%%%%%%%%%%%%%%%%%%%%%&.....", ".....-%%%%%%%%%%%%%%%%%%%-......", ".....=$%%%%%%%%%%%%%%%%%$=......", "......;$%%%%%%%%%%%%%%%$;.......", ".......=-%%%%%%%%%%%%%-=........", ".........&*%%%%%%%%%*&..........", "...........+@#$%$#@+............", "................................", "................................", "................................"}; cuyo-2.1.0/data/pics/ibkSchnecken.xpm.gz0000644000175000017500000000132410362016024015007 00000000000000QkAͯ["X7GAPlE nʲ3wΙÒ&$d.swӇ9_:\a{3l·]Z^ ͺ:<ۇ?4?yXoth=}-<VŪ?c;/Wd@c ǔ{F*hg۟2+gz~Em?g|j3Ys{H`2b} bcr=V-CX<ikaX4Ɵ͚sM qfNZ{p>ƀ< s}&C1eoo`=Z ^Ιۓσt6e(8g6lV3Cr][}ς&ҽ=&c1L+1j2a`=uxF̪1 Oy c٬fǘ{F&C1e!*]Xx>g~/ cWe`zoo?tkayn{hɀ!cr=\tv)sfjyTxrMT{9{Le('b8m- B ߮};mBcuyo-2.1.0/data/pics/ithBlau.xpm.gz0000755000175000017500000000064411101102051014003 00000000000000LGJ@)xkdJBoGARjmi̟Ep~,p@w74<[-h<=֛Yܾ/hY?<5}aeB1ó ݾ,>o '4n$nHG6s09~Ě9rXu4o܉U4XulXup`څu1kpT_$~bÑꎴc(w8Yu:kP;[i;<K\Gyh6"s"¢jk8aPfmՖMՖ4wbA^!-#хQ.B>b n'`pHn' U ͻcuyo-2.1.0/data/pics/bxLok96.xpm.gz0000644000175000017500000000505210361553650013672 00000000000000b=bxLok96.xpmwڸ_4Iڸg,ۄm)npx&misۯf$ٲ1vHdSKr<Ӏ z>9?^x_*K~H|2} ?:yV)h!3@j\L ҬCiw{ _p9(Ai sطo%{ #oA>G90&YAbMAuPsDE%P,|-d :Φֲe4sS(lVd9-% rhZE,86J: Ke>Q֢g`THdWM0,r=@89 p{aqr҆'yh1Jl|-TƲ?̛ !/l#E{8-R.@ޡ,g^R֚8 T\G1 !o< {#PSG:2?#,Nk=EiC<cSveem&Oӏ|ey7\Y5ɒ1¡d'VJ[&Jn:Lg+C d G;*QؗnqfV²WAJo(\ `` O*pT@y. o K">%:5e#|;satLQ|g|XlBj=A|RWtsu]5@zjKV`=CՙbLa#O[ [(z=Xle1+<]8 Mg2@U&E_NbM /Z cT3Q F#+DvFcd0`.&&" E^|%&>+?!% 8,":5 G]XG1{>rOkK#V9V*ZIb<ݴMXS+wX^WmWzb<9l.3>&5M2uiIFժֿ ɪ<||Ȝs7lYkuUd]ۓy3eoزVn6I'nH^b6y2̇XҮ%yhW m,;>{vgF}q'rb}mnFqzC;^΃Uw/x/|%洘?|L1#%vw}77uk5-Ia]Ӓ9vs Aݘl2íô^ ,3 lHak aoВ5u) ov8bגj""_b!^:X!Nvlu -6$n=R) Ujwzw1۞czժu$Dl>Nc<<7[hE ;B~e>'_!7ժK*0_XkD&x&ȀΨj|}gzBU=zx/N9pj1Hyz8R ¶[W+֫-SO556iI}rح~VKhjUh2{.RRϻ4ZzV`|1Mp;O3ӇW9|dyLZA/(t:ގ'c?|9p)ܴx zϻ sڗ41Ԥ=`| &*;>ݮNi,l7HK'W/u;~LgOooU5=5{cUxNFhIz:~O?!G̣ۥ <]s$ ֓| O{~JA-jS;r$] ҷ~p L<] Ëe }%H:qF.p|aGD6Mg9UiPn]ϕ FwÍ K\In.;2'\~&۬+4"!B=ƙˌ58^7؀°ēijL{^n䆞ϯ<}eM4Z| $g;{'*cuyo-2.1.0/data/pics/mdHimmel2.xpm.gz0000644000175000017500000000323012401656713014247 00000000000000iSKQULCn.R. * ,Nsz! /(:3N줵jMϻGQӚNNO>[uzivJrV󡧖ud *8Yf\X`5VNB)S::Eu~JbUg T>ێ *:tm U1ZpmuB ]b< X\X=[ydF785s PfZ"V%\2 N%FV=j ٧k=Wo iu vd~0;oBzwp!1vqG]ۆVE#INHP'qDϸ߈6E:1~r@5p!)P〮Uһ Y J!mZ]j7a+`'nUVcZ}aLw>Z0 c5Ԉ[Xe}9ϳʮԘWD3-/LMMMcʰѠ 4 pQ 9a0]o4"tBn?{;h0APsCAC 5lm5U(ZLB!ChxPŌLj``~-uW h8 1::jT>Ws#)a ,32D lFNh6S=!)'w4nΦTqbddTbg; 2dEӥv\FnPE$_1 :\_$(RGyE" zr旳T*hWq"6=!Q;ahV@LRm|jt:2cR^QJh+N2d rlo !3Hdzh1pK#912ǢG0g@KG9m,)/y`plˎ!IJHg<#&>f!Jȓptx2L8t9 1D9s dy0Y~7<뾥Pgʧ,'?(d8AzRH'UF燘_ˋK>;߇"Y4,?rN= J`-2 zo I`tj-1dbBEͣ iRϞ<&ϛ'tH&%KtVV|D:jT H_9c϶n7FNum9kb{>{yË>;=^׌(z~b( (d($f(LGQ0Qp<% 77s]RJ!BJ)R !(BPJ)ДQRJUH)U!TRRJUH)UaMYº.+º.+º.+BMFJ*)JJ*)P* Z(EJeQ'RYITuR(EJ-6|V[oN@(t@U{/W)'/Wk#;FxnDslӆz[xρwkk}xZ\֧Gk{|k3XBXc a.5XBXc $cvM2j7$cvMFeL2iTˤQ/FeL2iTˌQ{FAaQ{FAiø;;qwv Fƍ1c7zg4na:ø;tqw Vƭޡ3[CGwZ 4~ZNkAZ 4~ZVkAƯZ a1n0 Ƭ8n08qh1bňG~H=Fz7s{co珔H#7ّFn#dGɎ4ri4u#'FN(P94rBiHU#/F^(Py0Ba5;6!mB0ڄ` h>5;6!mB0ڄ` hiXawpu'w#эF7ot#эF7{7}mV{lGvt1knjroFo؂v;muMw5}(W9rE*W92mk'L\|Xcuyo-2.1.0/data/pics/mdEgoL04.xpm.gz0000644000175000017500000000356412412223247013750 00000000000000ksFW@  ՉI\lL%Hw3Kgh'99 Tt>HW׫03_/3RϼȄϞ-2z%S~.?{ 3ٺYNeI]+TtlP)y{#{Ninu*FP|ٺYjT>BTBT0[ҫTʐ^b * JIlְt=aÿ2Cܚa:TMD)Z,#nsWeS5{Q 2kU MRtWȲa%*TuCg*$ptL[)[% iBꐦiAkYuâD [Ȃ,mm8,AG1B:z+uW벇_#}H R@ :ЅmXT!un%d$E%?@k)VD WdDvq-::(]e3$}==LFS; @`tZwQmKt<d*p-Q+Ib0B#H(Cl!>AŐȐZAj&u'uC,_i,gca?"bD$)l%!0JbKD$?A׌C0!H$b #40>ՁdCD- :&d=a".G:ӾFc6ٽ/cYVqsjAnr2uLJ&a ^/ùχ"4.У'h2D=j~{;br}ƞ_nEq yԘ}Zo(7cc:wN\庾M n0d >=酎179lӍݣaFQD"!Sf^(-Ao0/Iҋ8ɀe:Eh0I/1cfr=?!;mU'2̒:,91"o3#/Yds(wꖸ {ё0м(j&!B[cfP}cj6#r)agwt6 6 ԡaD!} Vw 6XAFV.m{,Z!jZ"oP*WWc`@҂\1+gm;X@ i X,D@rL( jJ4m,˃ Ye dgбyhu0 VsVZ b$ 7tX>6p^E3EQaa_]ן?~ahǤ65t~CA6RbCAk_$U+dEՏ5C; {rh6dGȶZ0:8_lJ]9fc[h7'g^=1ߏa80\^ 6]e/!H4acO1f0fx<}yj܇aoIQz!lm)Cʐ2 )C`ϞF%7cuyo-2.1.0/data/pics/ivVulkan5.xpm.gz0000644000175000017500000000166007550521116014317 00000000000000<ivVulkan5.xpm_o0g)3]VQڽxBHiBbg$ N|ZzLǓo7W폗?~[7&'r#VKўtr"݈^O^-0lpx؞o`! 8ܮWKJ.\pO mjW00\.# {M*LhO`ع`x$g&3=Ioϝͤ3b^zl31`}ݰu_+_r_t%[yο)cA}R@d 843XU^v8`vJ _jPԭ~@ bs="7PW3k0(BYC)'- \Tm ,7C$5 T7ykʩY#F{aF0sb?!-F )f0U-l㩭#_(u`Wc:@ ]n0@qCe.='@9H ! E 8*n 0Q`4#dix5qJ2nv& ʗ $m%/h0k~^@{ᶂ2W{x0.dO0 H:uas$_JY@s ` %c Q3< !?;q jxM_ NhڕqvE",7}ÆTm(2rCʆeLuhYZ`LXYRd&͑*"FIE)$k.A_,=? z3rF9#g䌜|:Z2Ttyg\|D$F^wn!3:Qn3wNZ3b\N`m>f"\yaSWzB}OQxv1FDhp|e1'"#xz2Qʂ @z۸rȿw хA <|B 6Ny?GGđP((gLȨKhղ}e6^`cɌBf ǫV[^ 0Uw6b>$^=ǩʫ{*p,'>&Y0܆>ՖӫGx)r"Y9oUpqEq#{rfgG^WAa}tmZVSR*~JnSa̠4L6}gJLu˰h*[elQ+kC7I:5IMg!}UVh(ljVǰ}M1[wh!I׫/(#}蟛YYb(EU,zPTV)U)1VLr1ƼM d¬XfFoquZCnl"feFZ.+ bwVW%2daR`ȵ0rfU@dbeL0r0H hPfŷ]H?2 Y!Ǡ{}={ΐ-)dAМl<3 8Β~+2"PU7ӗ-9 \ڤ]a+8cn eIc&PϜ"`Jf]6m >gۊ7 Ui1:0Ev;(- $Sâ90lUT!k Ö6WEu ?M1eYzQl ۣdo1l7v'"}RIǁ3hV`ohaXrVT'֧9rSR !)̇2n͐δBv9+'X\džC-ʕ, ! g `HcLD.5L8P 2^ T@-\\!b΀!{apDa,j!5 P% da,Dsܩ%2 *IF š CF/ _. 1r^BJ%[/^IśÆ!m{?n IHXw,~ouWt8x7 nd,0,c:*T{(7 y? ow FI׏B[׍Ň'bpCr"htCrp $[ԢPK]k#,0>hTQ? bྗ2,=,v=pB5w1֑wKup~sFn7Qt V /a-ö^n_d09ޖuo4% G?w$u6 5_pK}Gcuyo-2.1.0/data/pics/m6Hintergrund.xpm.gz0000644000175000017500000000157511672457345015210 00000000000000N[o0ǯxUlZBwvUeEj)⠮v&X 1rL+4ԤžbkzTGr 4NdzUO73\pWb&]welD@`B97R 5F祔 әB(D&B'%G2D[Ǡǡ{E35Echhy35ҀgVD/NPhz@ G{"GLo"\"N8흾DH1(Ei"T Ikh& cj[nj( 7Kpssu/z #^FnNuj\g>5noڌK]r<$`fFx=9#:oh^.|tnu28 !i0a ;jګ&Caѯr;AyG8|#ڃe !beג>4F߬嗷[E+}A= t"НVwtkA/ѷ'1d Fy,r[M;o[:8P VH+̚vr:H,~ÂF(:Ê$('A\V}aem쓠@| RfC3uݐ-Eycr) wY^N;ml ;dɞiI| uԒ?J%p_0>Yy k2=R8ȯtN:dlxM G'2ܑ7c;p_tfGNCƶ;Xw;^:eYKm 3wɲ1{|W-[ek>Xv$pajٙ=__P1,cuyo-2.1.0/data/pics/jhSonne.xpm.gz0000644000175000017500000000232412402334075014033 00000000000000 TjhSonne.xpmk@+֕Rr "`+ڃ ndٙV!nd~y1Gk8:>qy n.|yww{{緯>+upxz~/ N“+xsw{=lwɰ1l<وգkWBrd *f$^qVQgiUf HϾ5!$Xf) 2b5HK wGc(jVh/cvߘq%\=l$c ƽQ~G!;}cN(ߎ8N#6?f° \*<䪡Ѯ?#suO5?cܘ pܨN"v1=Cг!LԴְFfG|Y;$>ƍr1HKјs=nФcDYlkCDLK|IeDDuʅʌ #Y+J)&a5Ead㢜洳fTr(!cj< T&FsEɳpRZCY|`cjHGkn\fEZq#fLza axA@y"qT:o9G?Fq>+VL1R[8&t3 T&ptT2"c "F_<@FPR.w"Hae1}e,2&I sD)d d 5symb%bbIFkk9 %d"ItX֗ $j׈Ngf2d(DZ1#M$Ii9RxC [z/wSޤT#RdJp+ Iەb"UHu"L@4ü&_Cj "V<"FhT[iCQFF.Y Ռf"l5AQڳ37J.%d~Ih#-FK ]OoD&Ȏ"eaߢ %|C$5Zp  a$mF2Y {ҼMcOO<;ޗ0$- xMjT)qRV`"Ic dqA2R7NjFfqA(1 v"5~w6Jd0AVL%5zmvXY Mdq-k41WɌL3֏F?ʲ&-yѸgl!c8B=cuyo-2.1.0/data/pics/sbBurgerB.xpm.gz0000644000175000017500000000472707550521124014316 00000000000000'ok=sbBurgerB.xpm[moDL~{sU,[47B-}ٙ&W@*ymv]՗7'go߽|/4wwoi揳GO/?im٣W~x<_\_nݓ+{i[^>`/[]p9˫Ǜghe兽yfpyn/\>v 7Pҵ_1 Ca1 gAS?1 ryؐ<:xk}Fvv)FdC-1Dz[*f' l#j+Ԟb0h65MP z? a碂qàH `3񖷠c~r6@i9 cц 1O!gɀh=].a>6˜De;:ϰ6Gai,EV> q1_;$]FdX᙮z|/Z|OnWd} ,`ũ`Gs^w`&>z.UC>@yw{9Da*b9QO?"0%w9 S?Te$āxnBjJdđdRQrZ$3Y} Xrg̲~Z?]! 6Ng-<5:0P -m6Q<7@$ E~A@l>8fed}c1) }]IP?`~:{yM D^p+n!Lm~?8^#SPlD+ CyK8\(s^$fs#")tRg\tˉ%>*E֛Qj<UUpIyC3b"b?6௸C9ɺX;1nztNzQXC~w/zxK{!9!c8!Z ڎvh9|{l!sD Qۅ@z 0.=+!^ cf ͻ;b(0 %!3`p#1Ϲp>Lօ~Bgĵ>j'CLj{?}D.D 7z<}j#mU~"]aβIC]bti_9=a*7jF0|N' >cEia3>+0w/w:b wa;Z %~duڰƘē  ObZוweu@м9 WUF7 {A@Ac^h}!'u6GP /pޗRB aSBlT``~_~~A/N>`gڸDu'Nѳ7W]D=) `FCD))q@^b)M8R4ڞݥ6i`ќW:Tݹl>@_!c9\}ؽ 'ώuGZȳpV\}Ǻ#UsA/gQ?*sy܊qCkƁ$>paP&Awss $jXG~rFE~2/ǚjdngN5}S1f]cn) P~:W?Icطl Őv)U k]D1yayAkߠ7]-X(Q8j_(Azvl,Fgr ݷPb" !>?Ȝ{n GM C)>`zNC]CFO0ૹY'c>W y87S4pm.5=߃4Kam[IW=;L5{9 L6/g$JsKZ\f ^Q&-X5$4u&g+)6R4p}پzťw,)JZ̨eYd_6^ޚdI0S}m/3 pA)ȢZݨ6/;blnqO)=Feϐ(11\1חa2I=83D %Dݑ0ixRC& '3@ b5*a$[\. FE6'-&[ƫzinzf  Ʒ$ Eg4_+r3 8jĖCpMf[5I1Q!ٮ3H!9R闆wIb/w 9$‘fax;`oAR-ZUw@#c !)3Kl:;8F{V5#X{b!51Ldʀqב*?HEr ߸K]!>WHlzoÚφdV6R$ kFk̾6mў{ҳ)\_;Ϯ "h#wP@ Yuj!{S/; ,]Բ6T[%JN{PP`0AhM)Qr-Oj4 i=CZ :48I "xi"-'#Y¿te R-Q@r ")XIf,wY^`whr IKFE;$è^%՜9aN$Qiu!6kg~o/s3V[kQZ5>M CL JFqLLI) eT D0퍆l)-8Z뗗skǧrz`H q(7GȞ@dū9~ 9F@.GG7ԒZcUAoe2 `I +YF#4qtDXr,K -v:;{{{ckN2?V/ŨV^Y"QFUх7w1 l-HvPV"s޺P+0¨7Ne)tFK mY>LgT;P<"34Jg\gs|pss`42SVNeP0U߫w3"o~4/͈|Fo|80C*d21i`ЯrE$|/`(Ku#+'ÇdWpF]m07LHX2%cA@,H;ko\ Jؽ{$re0 Ʋ<∹wG2F9.q| t6,bB6c # Bӝ <ߢ m1R1W$K 4un& }u{Octzzrr۝i\hڝ%eF# pk%V JYo ` @$%f3L(B}ILuNo2s6D_^fsq9NS5[KT@aY=$wXf @ {EL[fQm0,W\Vܟ~1_/H*cuyo-2.1.0/data/pics/mgsWeiss.xpm0000644000175000017500000000417311672457347013635 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 32 10 1", " c None", "1 c #bbbbbb", "2 c #999999", "3 c #777777", "4 c #555555", "5 c #666666", "6 c #888888", "7 c #aaaaaa", "8 c #dddddd", "9 c #cccccc", " ", " ", " 811111111111 ", " 88111111111112 ", " 8888111111111222 ", " 888881111111112222 ", " 88888881111111222222 ", " 8888888899999992222222 ", " 888888889999999992222222 ", " 88888888999999999992222222 ", " 8888888899999999999992222222 ", " 7788888999999999999999222233 ", " 7777889999999999999999923333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777799999999999999999933333 ", " 7777669999999999999999443333 ", " 7766666999999999999994444433 ", " 66666669999999999994444444 ", " 666666699999999994444444 ", " 6666666999999994444444 ", " 66666665555555444444 ", " 666665555555554444 ", " 6666555555555444 ", " 66555555555554 ", " 655555555555 ", " ", " "}; cuyo-2.1.0/data/pics/mbmSchnellUhr.xpm.gz0000644000175000017500000000320211660562124015171 00000000000000{SLSJyI-[ C"P`y&&be}ln6=3(הٱ}e(NήRPcTR\FuEp잢+>I h|D,@\4Or,!Cf*hȇ$4ͬ!!u \h L4d\ih?ADCf+RKHZhHO Z̡̒!sҤf2LҢ%UKlTKRˢ!K$]4duАUF6\r\2@.^YzӧܕU4*]4$$;! ie _3Hв\>t*Z >8 vsiI_4Ehp9Wd\t]ocˬM.sN d̹Yyd[?[Y+gz5+|!o#.,?Em4;l!nhc:lyh$U4db!OD%4)v4G:dDǚaҫ[v\+3Q ͖%+ v͡}F'8U\]бd ;]#1mr:G&}YiSؒg&j,eD6z\V2WDwԭ4,rZT颰 =HW+Kcn<fxF~QcL^JE=hd,ҿќrw;.dJ ܛ#o9C{pG^>{oɹD3/.A>[*|98W.ayX*Mww}Xz3LħOA>aYHMwwՀż(,}㏔V7tZ53F#a{ݓ̓TB(J^ƻ`Lk+!>h+ }Jޫ-PDx3nYIn g]=$g9AzAzCF?Pv<\7?)p6%ŇN}FDuXAzAz?ypY#.kï1.+&?`s1|>;à6c1|#NdЯ8?`̊l=IhΖǢj2k!&z*1ߓ"ظ `p[3k1&?j*v{fC-g`r҃ =H҃pW<xcn/|?677D=z% }^X\̽}8lNx߶^9t#0?@1aIP +1[? #=H҃ =H|M*=lnNuRCZ+*xWs ?ޚsavD J-0Ty(g00Yy5KIo0a!+U܇L*J QOt,.0e*OgWNPW\keTsE:eg@iڕ],*; 3V!:+ w+S {ڳjze؜gJ ^ۖL9ۅ wLo3a\EP2*OkC:Pd{N>«6H  7laX@MC5Wmz5Ϥ)׳.Ȝ_4 ̐|᠐@_1>jc(}~73ԳJ% >٤pU8 *b.Xyإ==/ɺ}@;Ns=䠘e/3t:P7}ha [VE:c6Zn{ǵ؟E'# ҞI{h/ށ3) x07a7_x0"iNh .׆q=0Ghømף za\6цq=0Ghømף za\6ц %Cy˿J&˙]"$l d2)FxF19ID],I3fij 8ŧg>0vOPfVqTj8'kL(3fS>g<ѨtZ}$}Z>sAk`}&L),)v5մofZH(v}|$`[P[FҤ4d{=^0f3:0r]-hY*}W]/]#Sࣹ JA'˲a|k>2x$D zF_ Kz,p p7>+o]KFsc ^ Ħr\>&1062;0hr 4궔G7XWPFgooo{$z[Aq,ډ}e<.8;.VZ >XXnc |}t4lܺWF$3݅80*}Finbg_ݚ7G:+-!$22p3g.tc/R<ޖ~_:xg__i 3}=Ƚ-%R۾cޮ׈ 9"z&gHxtSx4:Ҟs 3cRF$Ӆz :-A5Eގ鷇$L,eG 19!.\>dfctZHoo8hc5iz;6dχnj͊|-\12ƎEݙajXۯ.zKq?|>6wrs-a h{5}2iy M(򷠹E#[eFn>-qpS+{s!AIz挕}m䦣WaⴈQ[8{o2B\\FYۯ9,4hL.}5q-qtԏ3M$} ؎ (krx!;v3,PQȪچ\Si3ֱkRlRϸl;9cyzHxY$׈[ۭj4!c)]1)%]Ýxo$RX9ʳGb)c:`J> gZ*v&7-ӭ7!9@׀jq k+zLSvjX;סǙgd$9-+cL6\AּRvŪ4w;k2#Åsݤ\8r(c9;CF'CzN6>FL3! qŒzN|?^S 5$ٝMcIyFW=$t(mwgx-1x$8+0N*z1cK:hN\4N]jUE^^DU9'kI7q3xtZ53z'#x?8"w MŎ2hdZ:8hja'OU||8d1[vc *XFީǧ2A I=#2+΅f3wb?fD=Ba3h*܊X.u3@[u#+͵2pyA00bޑ19G4acoXdG\gzBh.Tt0a!vŽ{.șַKد=#8ՠM`GL1܁'eս8_5lW> ~Fb$+7BD ?`l'|Ud>{iUĢy,Q>vszQd#uO?}|%5N^Uk(? \EWj7\.+>"cu_r0hRKǏrNą+;gO3Z,7J'aF!rv=(.OqJ̩p*}]I\y1D,<{?x(z וc ݎ)^pPGڅ,#hIBO^NyK}- N>4aB,8~Bs.MUi}3!}@=A H6ԣ6zT$R̵G`t?Q=R(s]@]J6et_ZUR mK=F鈐8  %FqXglqGs QJDH>2¡~Z ] +-t8#U&‡N W9kT ~NE6Pp7Eܩ>kN0/"&]k-K$:QA8jztL}ӓ@Y#0{E"~ls tЀpБ>ƧWFfR4're*۰wwKbE!m ࠽0eDQLI7}Jhƻ^Ѩ*^뾱sOl]1Aas䨓uM`׿FRкfFѼJG6P-RIiwdh(|GJ^hнQiTʣʌ>Ia5Y)tD<~y.I◨ÑrJJe55|/._6Jԩ_4@hømף za\6цq=0Ghømף za\6цq=0G/[r=*skcuyo-2.1.0/data/pics/i6Gross.xpm.gz0000644000175000017500000004766312411111042013765 00000000000000߂$Ti6Gross.xpm[gSI|+$3=x#03fnolՁrdfeeU`}qݹ=څÝk#fls # _0q_,SRb8giQX `Gp{+ü.[{EfH8 I?Qi ~8fA*`f/g~f?y0M_ /h~߷$SceV_qD4eO낽O_(~2"y~=jدE]h;~F_7c{?p~K]6 F~{'7"㏡Y)Qr'lOkIG 2nmW#%=Rg VPpRH˷c/\o$>OCm?K`C`<ߨpÖ,7u{j;\ ?yb?/7|/d}^Z|‡6p幖ܗsc+d[F&ɢi-8[&<ߏV{gk(`{{5Ipx<Cѐm>˿b홋=We>R@k-`X!NY?Hg+_UŸֈ<I1%8k=-CKVv?% -8\#k>7d~2_A}F_I"ߠ0۫J~af.Ɣ|Y7`JRf60c|d47ȶ87ƈjI\XROhoQ5)۳&oO|uƤNç!=xɯ}S_2[MP5{?Ǫ6ޑ J$~<5{yj6ۓnL 0ofRjPS#e%wb2T:e;#{Y>Usȗ7}X2u`}LgcFpaֿ y)yy݂2!qؿ޷-b8_n'Ͽoe$k2^yz`}nQpr,<ݴ2$ܟh$/9ҟH>Xa-t\KYHof? e?6\<;mG.cP$g\_lg\/\?[Ҿ\NO^Xڮg9 Ú7ۂ ~DG6_M6EO2GUSc+6[y}=<fXpJbeT7Lpy~dέ?D &߽lW&nٟoOƷb2b}zwCsZO5vocΫ?Z利?c&_LD}j>+&oҿ\P<~aƬ߉>OǦd<ϞJ$kFK>?+|񜌗޼է+i_毬E/&kVc>zs~^\櫼>V*p|k-.ܟxeΣm<|g+?8F?&E? xT|ݎ'f?qiƔoqObj%~K}fwYOfd?>2߃_Oagom\#Vs_6f5̦2g}>8^oR_ޗ}j2y2_yuOs ?&Opo'g?lFV_~j8:f}/x4=$~;&>[ߏc⑙1Е_l3&9wL7BRpy]}=Zpyoxw4o>;Y_o|4߭,iKGZ_cRc'c`χاb &ptl)//]36^|=+c?Ylc⥉W F^}{\l c ei+`UOzZ|{_.8v&v,)YPgȘُ=5cbCsU3[澨G]k?q+O&/*xT|N+xAϳ뿷7_1.K7,Js?dȾ?ْ_^8tFy yZJhp0j<^C);^.xf*<3>؆MxG uhvC!DlA7"v AYW!OGI /838p WpMtCkBxo7p??!n+vsH X4A+a`fȓfaac9 IabPhL2*1Xu|Ը},Q.ť);N*`hЃq0?b/cUDЅ[ cnHs؀1'|ԱAC 1*Ž氏_u8Ad3< \KS9\ 7xO$ǘ`d+,:^xS83$.{\Ar\&]*ϔƢ*pB X+V=j@!#%SJ ^5ڔŢ ^ïxj:Y/o7; _7 o,o:qơ3(o:qơ3(W)u'ЯrR]Y=ƒR԰z&_B8*h>էFa[  c<}WH`zg TP XGթw5 'Gah5g@ HUSzx߶vq@!o)8FJ_@|iWqO:hp@8P0!0F,J^U2(P~-pN;l'PMU~gj8A* $EOKtF/瀰7.CUVWEC R*Cfd^SaʲaTBB"h5lЎ||5 9\^ݣz{ƗrX_w{!LLᔟL3K{I_s}z[ӛI?9X')Ϡ$u=_S;zO#R*n#}j;r8sN|3Mg\}:# }I+Jұ{myRӷxO&/9bAڏ#ObW0ѩ^FEsF0kW)u =O'ߕ>ßPEWI5E+yZ ?p2Y2!&$q.9}ix^.v~\cT-~,0qr>}V/zY \>GtT~quTD1D ä3z"iM[vp(yVK.qE&6Oӭc$_ ^{vJLk^Bq8WgJ{v~>o&_3zɠ}w3e;?^e_;*?߾o:θ,EݗnzJ*2딷wQ8tFyCg7Q8tFyCg7Q8tFy.^/MnzawZ}Q:M]rL:vl+1~ޠEnB{.FA1(.E%p- |>Sȃ9iCGiKʱF4"y۰ 6>_C;>ZzS?sBbB}l6]+rZӍ b&[-o2Hۖڠ/H P|z\pNJy)x!oZ:{4 IXPcyIEUGj`'8otzm΁}+o9M;;; mP czCXPL bj">{8a.{ol@tz!Zs3)^:H gԁʾa璗>.>sE=6]'6ld5$9aC7q+QSb>."*\1V'X=_I'74*$=|K4 czyK,?[[?O5Y ɡs=5:=v}{x߷j6y@8eLGb8iڴSsCfGzǹ "f);[&~{٩X+ډu4y/i[b}$e+iyT3۷Cޗ=$Yݶ&t!)D>}phNQ5( Ic8i[cNl/WWzG[Pycz?g ĂlwuQ'#[>Xqy0ŽU.}@ZtZ;ǹK&y.U3:q(?h}Fg|ZW#67~p?Op~ϭv؟~E.Xtι8.SM'P 'Y`(\qg:XCzŃe,y _`N!jVQ26N׵[!(7~#"{ŎƽX~D{E|Ջ39C_Q+h^O$t kCC85-G.2?X_s^*.@C D#vʖJF\f%Xb ?YLj 1TPl=lԹ2Eq΁st}̸KN|8,pB׌I>iZڔ45H1J ʬG]kuOn+RkLb.j;]#vC/bR} _ͣxw Kw'p\dN*#(1Dz(}Ho6 ;.t[xJPR'RVDQ{>ƺc/p_cʭ1-ҽ=-"*kgzDAЛKRwRmK| HZ5ȄMiP_Nu˵AV=Z5P:5F50;qWI\|/1Ɉm|rSbDl~Oc` սU~PZ<=tёqNVhKҥ:ߕ[}-b?JBAI©EG"Sjڙ{{a NYZg_Qϝu9'Rd}eAOKL}tIcPUF\緞4skɞg-~J[z[P{IqcINtGތ mmq6 ⽑/;ʻʼn/ X#'N rlSNע7g[18K !#^3X^#1#/3c:x'mnar&Azl73ߎC,ū.pĸ );zżD o T&okg֩kw0(m\@ш#/IawQĐkQ$_ ޵<6#+1#ކAiΥn'u=={?O;՝{?7>X'g~!kxaBi{~D=߂bu+*7YɻA9Pr`'9q\[$|>pzbZNtj+✀ G6eM҆}%%{ǧ;w|u.h[!x 35ٶcz™+j`Nj ٍ㼀ui\u؄Nٔ 6fݺo3п{$zxuvE"琱a+Kbm:y`zW SXjINd87 6^bд\f.U4>IsGr5ۢf]"=1f5Oڧ -ޗm@t#I|5KSaAq|Y+7X+Ȇ|sP18͹aodB 쿵)^po q+MCF 4j4r2 :a$',:dOIꉌYZ "(iwћ܈Q/xACPTӼ/#VaviQYsC) sx$"xBlbW}2W2SmFtV4EC#v8u~zMT聥#ۧ5H`7s~/* l!3x3WmƭNP CMBub=O)Za0J5I]"Lb)Xeؼy!%tF rWXgp/UR1G<_ْաKTz<Ku?DEvhNVqfc׊ dKN?#RkFo(/|0,`o'ؚ[w= Ǿ[ݯxwȐz9GbuN\dz4u@nGh5*-[vU.b60ʦĜǾ5xv?v+g*Om<ϫd" - XZ[ è1']ZyPXJqj<{q?tٵa'Jqu`%g{7Wt N7zM[m%~Yu{q7q/CgIHVv'1[Ae=JnR;ӄ6˶Й"i]W]Ŭ I"b'[7^28A9^¬Z/}GNec]v9EͲ̀UZ5z2UP8zuk*}TANC+Mnj =ы>j:sܧZָdcU/K,[M}yDj52"r) ¯ja_ƵO()nSW+)kAsآT^K41/;)ynlIE/Pwl ܯ+`i0q -'Y)]EA}[pLcFˠ>JàUIƟ}e;H}u}yM߲ɜṅ|8}wšWЎ-F5נpy5>n\O e>ϽԧsoG4S$`Ts BFzP)〛Iu)Q:}w:-GYp#@kBr}nqTA Ng 25rKBps2j̿[Lh+ Kj]$!74dز;S|GIugdR^2Jm5^Ϊ-J˹@BϨ?@ B6_rxh?d-4S}3M%~WI2)l=9tL7tZ u: %=7 b]Hi&k[@^ E=rgQacȦ;# RQ.4ntc74c#LrF1C3 @,he\3]wS[ēsڅuRf$K2"~Wa\{(LlrqL~VQ؞l)$XGr9wȺJwDpN?K4+#?ȱ+\j]+6\mc{ E7G~tuЧt9߻-,Q[2ĊUɹQL kGV܎fsVB%fMy8zޏ6G_Xd܉[D|)#cSmp6 yUq|ɏe:hx?g\DT8M`=6ؓlGp[ f`u`7;sBz+me6vT:Xx?8#b4=v"IT)!?"N⽀]tsd 3@l>a%G)!?wRDӤgnK'oNý'8.)EKېZ՚CG3zg n-?9B!+hIꙋ#˰Y"W>AVXY)=*tlJzVy5ы{[K.uSf&3,=ӨGF01ّu$ci9MQg{)Qy!m,JF۷-jSGzFI?s$RP3r˲`NC 1[Nm"#M6!pbds"_#~:ĩ(uڡ/Bfq ^A=.?]4BZf|mQdSu-8" rd@`򭑒l%c{~9o:#Y=W,Iq4l(W> 99G9Eۉ}nz,/b^R4,s`d~~mO_t(U䴝B\R*.dz{ab.5#F>aajg/4"15Ҡi/m.863@AfANpS#"Spw(DeG4ex-梛},^OnJ%ߌҗRT02ҖHV5ӅzQFR899Ҵ˲ Or-4lhR8[")ׇ (I F9$/Qfi_>j?E0c  4|#ݑR /> 8w%;Gґl NԷ<~e-ezߍgiǼb\z #Qt+yyFcW# |+q= )cY.eqN`};d ڄSI`#0o_"`:C^.j9} !5uMY'p#.5 KSDo'0[z@F1AFg?s g F{T"@t 5b]J%w}AD'3On_-8A|kAސ.V|B 8@qW (:F#cd`IA4Gbfi_fݙ^r '+q˔K-_5ECԆ[rAbD(VqwEUdR#?wOC@Ɖ9,2c pESR=b [NQi2 HA\Y )JaȓRH#=CvQ[u' g.Nb0k 8#gz2*)LhҺ RjIpVuiѺmqBB~TQ 5 #1Q"8rX8F;;󮦖`>E* RA@V1J aNDfdHQv!Q d{^\s|I(0+f@83*5E]RBzTVR 1N7x~}sϻ8οIPkPK5G&!lث) )Rsl0gqBHUKϩă$c@q4Qsx ?) ]zq5HL-UyRe4GH@ERNqEdo,ơks6gyӭbډ#WSSqHQ=ŎefJ7P9eIG1j'I2Fjјrj,()S`"iX!]FoSb :<1ƿì}c`-KHiKx:QD$HX~':ΡbOj_RuPҥ+ JbXFj vXR;h$ X(B$N43ZzPi,,uQ.\c]~Q}+].u.\>ʿυSopx%y/ͅ\?}qѨ5oz|ԯ߮F?KS,Mg<|۳ez:7z:7z:7z:7z:7O}kSq(^ZT-O8HkeAHwrsҘh!t{S =qOړdM=~G>`bN u?JI-s0b{PZ|32ru5g" LsHl z͉$CRfVa-]+'.tAA]o-".dֵҳxsa!yOZ@1/oS"p@|6VneR3ϊkCtNد۴5=8"-]BfS 2hg zm.:aOϤ:3EY7(9CrP̨ 3Ej#L"M\d|#R?!9|>O|:W`@idtMsDI!X$s揝S_3<%{N)ur͒W-d'JB(ūu)!@/Vܻ0}v?`3F -KʖG@ιcLKBâ.7?z߫1̺.N;= 3M=YcQ)lt:3՚rgPcݩїWԊ9^$i61EQ8!Dgne9EE#AE2EHR{ EY2~l#%cøfjtt70e׿8v }JHJ+ 1z?0zCS="+)qF^:@j,f >:u.WF02 g#}uEts&qbɕuUxLS=SKƼ>v3RfpKXK9x1RfKl䨧^rEFqF0q_2~;ghS[1Ѩax[2!F>I+QGZCg]/o^c)2bQV)Rű^l+SO_2atpF6^ #tRF(Ɵ8zq=$Ha =$y] z }0^rmAazR(ЗLt0glk`C@钦#Cb1WYhE =Lȧ胍XR$/sinu&S𗎱f :O`2.pNFC:+s|*Tٔ]k; 9ɜLQM@gMC x4vi\~؉}L^e1)s6.ڊr:u=Ya;G'$v3Ұ_ڰo\q}Ba76Fo )c0gZ,tbj.]}v)d]{1*:(]@Fui2"1 :s5ԩǨ T6m2ϭ3zi7"L[ZYx~B5״N0OjnQQnQ17YAѩ1~ _ʩ>`2Ar:ybce(Lj`.Ҫ峎Y&~4ĨK_4iZ_z$l&}Zu*}dQH1cQtB‡:$Sj DXVQgb LyMcH8@<}W>?#,vam H1pU@$ED}#9!F: KXqD>2C8f>jA*x6&`&xQ0U4~bѣN:zTf%8L'}c`qeC=1LTamYD#ǡjnڥnu2nQq Md~Shd2jӟE20/'RE辈Gܢ.R!Qv0?H}'}Hl22ڢ 2g(ɶO@vp<)u|~C5iP%,jTF3EXOSC})1ERJѤ%(Ry x0hW9XRh}Ck} aIUz~ A6Qd=+4GiGJU|(33OTrP2v8˻AmlqQpQ_m(O˳7lz|<~-Z'ϿU?\x4%idFvoL Z|Ԫ^QFxG.IO4zg^V(z{u\o^u\o^C~8cuyo-2.1.0/data/pics/mdPlastik.xpm.gz0000644000175000017500000000222012404657520014357 00000000000000[WK0 1&vCt "&+b@$$U O<9/[U3E`m.YYpkNvZGMkꍌVe82jY{֘y8Tn2s=ߓnl%y1+6TI,t}`Bs%~bLdp3 y 8 #fhng7!8}h'd YQ=\Рݏ!*^nHq\wT9]Gi5ɜnl?@3:e0Wct-D} ,K"+/ L>&730v?*8jT}A#$7De pbq?z7;aWpN *;iWgc}7ht爊ġi\LX`V. Sn3 Ua+R2^ iVPW$Weu@ݯĺ=ىĜowgXZYZn.,Ewo\ⱸ(6W׭7 Gݠ%^fx(g8=M]F8$cuyo-2.1.0/data/pics/kmSofa.xpm.gz0000644000175000017500000000504411347236315013656 00000000000000:KKkmSofa.xpmZWLFH(f,-pV Ezi;!`x缌Gȓٝ}vv6Ẏ0+}Ao..{~¨{֭w(n޼UTQQ7o@8|ЊX4@n6,W8TbỈb4oZL@[1(1XU7.,3=0nMUEaS ͨXSXΪT4Tp&F9LjN!氭b- m PRF&Z2 t)|E8$vuushVbš }U)hlԈOfqV i1L߁YYTE@dXYU( -UaY5Xw>  HngqK0 e:5p*q7aF5Fmځ9BE]Zk9{J%|R LUq:)9< И3a@c )ƥt¡l$Z6o""P Ѹ T)phb S]9=&v/L!C14`Y!9@ bR@bcq!H  Gh  ^ @C1H`hu5!4v32 3bN0R/h-:Ìm"D6U1 CdQdp{ gsssssr!bi<;dRW߅4dET&xZMU, =L22ׅT~""E$G-v{ kJOL8%vn;[0jUnV2˜CM%BZK a>([]OTtI{_BlUrlPՅp*3)P4l8Ȉ[M -~=H''bڡAp%F9)̖<MYڟI+5O&n}lCd?,nC? %-Σd÷|dtw"i up1L"۔CihUG/s!4p`VF '|GhIBoa}L(2Ĕ:CZt/8HD" 7 .<8b.% 療ϹaM[8KѨDh tzA|[hfp9dQ:B:̯X:$"4:=_%p;œ_ľ{~}MO0Vs.-fo|6|oܝ=swoO8 awJZ.Sp(t~JG+\iH3Ck?gݵCOpX`_\r~{e( pota&!hT.Z0_EdMY {BGZ]?-{8}9ILF'9LLؽ{*BǞ` Wk#`AV) #~!3f#w7{` j4$ď;8Hjp}}at=i"?d(vZuzΓ|e2CL$a4?%irbt]K]@frHjcE-/a6G*>=+qwgw!!(XP^AqPs?pH{ SyHT>if|r<dcJe;|dBq!|,8؛3OT#nxq28amFхr{.PC WaP Cy28PvvlC=>$Zep9ħY\Ta0[IF#aud'C.V@؆^DpT+ {"݅(rd]˖a==׵[|tEGXAl/2Fb_7p9y|Zb~k<3iX'&?㍗`R'&?~xGG^ʣGɡC)nLRx(Ӂ'\B?;glbg=^&G2IW2g﬇ Ea`s4?;~zs?I{[n!9+j>G3vrt5c+˽o?l}arFCThȧa}/7@}փؿQ ?Up?xOU0Whfxn~!mֶo75]yk҂ jַafoSٙ?^üa^0:O?}%7cuyo-2.1.0/data/pics/spPfeil.xpm.gz0000644000175000017500000000231311662241764014040 00000000000000=spPfeil.xpmk0׿­tt~`cQ> ';l%YCwe[]:up `<Nςѫapzu;-0@=r g9 PCP_aQ9 P*=5"Tczu1 P3P_ a:Tj0@rCPw(U=Ty+eEe 64=l! 7Hn0 98\t5e7<n!ijҲ# k7z'3^Vc&:oMrv;^c };jk0+SBp{_3X-V ȁkdZ :r`v7^cX*'5rv;f>Kʫ 5dT{9p{cS[pnzk{d^HԮQ^];)vԮվ7rR^~̮|np*J7d5{H(I(零6_u5K;yShPXDnxFڱrXr!U5 ݁/WR0MXOya).M8i77Kd*ִ \6Dv,&?Gxnaaaag׼̼&ٝ(2qaTk P?S b$Zy=Wr?x#55^[ڞ fKh@P=GX^n^kj3`==/gZ hﮝP0CfpU聺Jc٫srv 00000p8"3$Dma* 90 vߋ>ٴj3M{m'sd+n@clܼ[hړl'ݔilݢ[n.EjtO]U{l7]HM]7vI_:WS6?\io)3Ͷk+Of =!~Av)SNO]ʖ7(q>RlEK2ʷʲv.xIG@+?OhygWp>x'}i]GW7O:_㵯.5/d]Q=]8^G^>lS}|"GO4diڧ,L4_E+|W_dK:_x9^e#RW2Ϸ%x4~e/yK=M?eS '=xVt"+%*WC|Wv^i C{DQex+Ozg-?`k} ?!>E,׬RZȟ/3Na>(Nr|N_EO(x%RSw 7NvΧh}Gv9]qGd|'x"Ir*d\)p|koׄ;VƷ'~ Zuo<'~קQV3dgStgQ+P>rʧ|::̗GY]͇sfT;<~^\g[{wOƳP>?yO_ROkקC^?MgIq|Q|xzU/7/7'?Y/iY= &\K]h>^.OTO%[X~4^U~spVxCQ_<*Ge/߄̶rySՃyd?~(Ηs(4|i|e~qiu͟_fU=N=4wv[4R$L@5|xwKcxdggr)^?hڟY[0^HLKzb}2^Uz!l|iOZ>MxxۭYt>wNlQK #YOɷKѧy'}9o޴Kw+#zaWփjw~#'{^-|}ypH}HkbˁiH:ܯ?M;4gS٤C+F_o]qyTҬsOoFGǡ iKC)1ZoخjZgIzz!|b/>E==O4~?U} ^/\CֳOOӼ4rW^^Ul!p`>L8܃W [0  `6 ! )HCMypav=؃ ;58C8l_ᛝ)9 [vEzReP%x`rxl|b.uTr'%?~Ⱦe{*|u15~P=q@- ZSaԍOWk7tIK'=;a<$>ikfއwփMo)i BgMujICpN~EΆ ^8$0t.zCp|Ϩ 砚y8|{enƗLyh@UB8mQ̡tf3xE]7h" ￷}oG菿o{Gn}sχ‡??:p@6Ktx{n/c*?,q81Pni:<W C {sݿsW:kÚa" >*lSM0=k:h{uxKrQ>uT|E@C7.uԺcCwhh fX9ϲf[{0f_6qeh&ͼ3v+G7̰r2  !0;8BZ|砚y8|:C!>R'}ٛ{hZ :o o략m{?>a^Ou?3.㓀{0 ں{?2W>5~!,Cp| Sml$~ތgi ki + Mna7LC;h`qꆽ{izN)(2fׇ0u!G|}4 _,UZSOypL~h9L-[f C{a yg~h9$aL\]G=5mٞo-\wazhVˡ= 4\Co<80 84G泹2I3_}ľ)۟ ( `FM][&ijj7pQ3fl'̺m-آhi`}7^?MW%,㙙s?L _Z/U/O0kZ.[44!pCz{ ZC]q߻?~۱QbP=ZMu18AЩ 2p讇 [佷[ם.FjTAbPҵ?6x] C"k)pnjAbP{.opӳoRcs scuyo-2.1.0/data/pics/sbBrezelB.xpm.gz0000644000175000017500000000267007550521121014303 00000000000000=sbBrezelB.xpm_EşOѬoY4AB IDwsNU;ɊLLwUWTO~(xu~](zwͫ|_˷G_>.u7z{w_]~>eM.w٧'_U1|4Z֥P["Pkug0^?3Pm>`7OMtS'%;B~`wg}àx"<: II vQ$Vw !h,X{% ""_L)s*ng  N5~Hk3#ܩQ2<nOwjD; _7YI)!+\ n;:ltÜMi6SITt[A"Pkug upp}P/oHՃ)@dr @Exs ڼ`TP=b(Ӣg2jhƖM[;kPcPaW( !> iRB2&]NAjg2V ܻ)*G&`㊺3n]N&8IU Ҕ$n3(KJ/[$W!05% "]j1B2'U"{93KL-կ|6c6fCŽ vf3yppZEBǸBX 2MMkp<607S@`Jj[1 >XY^R˯A9k 0DcD$>N #aCl-}KPkZaUnjǾ?W$AOx9';”AKCdGnЉnbMOhNf8aQ[OQl00Ra|3Lax|1h' ` \{1=Ppj|`A {X>Љ\wbsCrL'|X&E1 m@''ə!Z/\k孤³u+? Y|.YBĘaF#CP1&2XcDB bA 10 kE|ۭyk1`Nv9w~`YǠ赱崫4#- yxOz:d%Qq`jٙ^ny#d@?"426c3V~料":$=,L(&FI h+_Ät9|$?G6 nĐ< o'Usb *ޑfP>^𢆀!AIpD(D&?dH3KC |s/`nl+H~3jOǗwgfv&) onn{Kr&lڛ > UaT eYf߼K!.J" q!!5L#d!!V pP)RnB6%xN`I,ep?x$!q8@k6 X6Fp}{bI,!A@l "²"{%#٬kW z9d5\Ec%b{JR]#,,Ka&KRQ*"< x(){fEFl#&2qDpueUV6ȡj%(NP=I a$N!BXYq|p!^X6٪ҞDϨGhr))c2ߜ28B\5D[p {"S"k0z|23z},ɢL,=pG>P` ,l@pEl2؆dʒLarWrI p5߾\)_ (B[e9|5ˇ2ɸ2YK*~L9VhsH8/u"yO"KB 6|GJI}ᶊNd5BᒻR -l7"?[TZ۪JC|*\rJHF0_~W1)V)_}^3sr,lLkt7B _1^Hȝ,{Z|u? rLSVx|Aj<25,wA l{LN'kjh\$34VF!ҹB>/djqagt>!~2J-jD!^=cwհmtqC`"ax *1H&L-P[e[wZM(-d3QH-{Eؖiv:g$#q0P h؎mjBag;@$gE>z2ݨ ?4M..t*JCdr1t,CP*LnV `jhi_·FUJ}$ ɍq{{˱ل.N//>p T׋rsl]YD^gMgC 7ky/|DQvww뛻ƏD%AuxALg8XƇF\;<>qxWhpnbrY'QJ>9y~{;szFv7N`fo.BͷMӾwmx(ueȟMϟw}HM|cL}"/;()-6L:%̹(Ǽ_©UVkUѾ{~wwЀ0<5Tmi0'TT"7QVӆÇutW0M&:Sb6'/|7m M=v_ Ysз-oQb<>eÎ .w0ܕ(P tP^E훑A9}Ai5f)a2uMe B_M0͝\s 1LBzc>0JعԒu.9x+;nLo(E]]yId&W)߽U$r]3@(yW淶3f˳wzv \ۼqD#f\%Je%}ڃ[`\ LӳJC`[p5{L-&D89djaga  cAPp̠[l&O? ﯡc(N,Sil#/ϩk .0SgV,)53m-$"MZ -﷎8}Ϊҙ8_P6VeZr:Jo.*0 0 0 0 0 0 0 _wcuyo-2.1.0/data/pics/ma3.xpm.gz0000644000175000017500000001361011615032230013100 00000000000000]i{_4cV3 Ij@4nb~#iFیHḺ{o-G`x_霽|l{̓3^?"s'vn63Lwg2O2J`x I](JUqnIYqq}.ZD?JtHb:br[Z\)A-xa\^S\luTЦ])%6tԳO .nA> د4.ب+U\,~+vFeC'oK *+5\< Qh.6JT9}O=(zUC(ޭ׫{ꘌ^G'r^l%({xTm4kx|߫ØE&&{jR$C}ZhR"K0"64;qYAZ.Y=6*)G)>bVBISlG(j 3j g+P׎r~Hf1^|\?<"zhS2F hm~sK?o^Z2>q|zͭÛ[o4ov_n"€WQM W=627z7/sýWq*$PuT? lz^Pk/n'''1*}k?"?G*λ:mvrN{v`.qTjFhIgE'wL7+t(>eaoq+ gkˋ>Êdk2<8}SUe^=+f2EV+C#VFw qÜ<>у?8('}4xd5}>| {[xyi߰z\7uf=z;֘= p¿+5O;VXө;:Bq'|>?z|_C^>Ÿ}wg]?X_;[0Iv?@_z&[w/=F7XcɰԇRaɰA0_`¿ gp?>LsgrutI@_]wx.\,E' 67mskszuMN(~;KѫLggIĈ۫|XnU'n-xRcA0` 5phZ&ð Ms:C N $->ř?dч9zWajx`ù2.܅ >\Bz'z_ߋ^Zgt|-乜xZJ-;A8@ ,83 hAZ;C^qt/T,@ ,U"#KXއ(z_zXDew-|la7ڞ KEFȷ!~!B_v/ O$RaɰԇdXC2,!S!?hdۃ\ `w.V˥ȯ 秧"K_c H 4'{&+B{2M+_|+ >a\ c23"M.]wkq!aa c+t\zq@TK2Cۡg0Qܕ<у#R3!uxм4)+nE6QӖ扈(.ٖE` _ bփziFeQWt =FjK<%DAH|!W Δzނ16KV*s#hR(<@At u/T?NhV+QZ{RףE; (Jo- ڎjc䌌S}ċFT?N5t3H5^8<_(ʝޞD]e"NXMP.S4cK\}s9el}Oif6l\ifjGm'tg[\rPC{ d.XD{4,y5Fx1I;G{+kG.JCgW_)P$BAƅ#\<7s+~,7s;\<7D+8*#eLxnDyMB#h*M\+#E4qF8ggM|r&Ƚ{o6a5b` F{ɠ%(e⵴igI47zo5hFm֨XmqY=kp?"Fc'+5z)RgC'*'gڳB~Y EX93춖''Ps*8dzxӧ/>?LC2,! K}H>$RaɰTH9;>\M(CU?D[[Qb\? .M:Dv[1?p|?A :jLޟd?Ğ cC q%0GĶ +cc6;Cc|YRc|cc(t|9֊)V1K\άǬcޘbc@| d\!c"S죸IሏC*&ՆwibcibqcycENS\Lt)1&[dLMŖc/Mgm1ՉgwGhc ΌAkIz~?x?$RaɰԇdXC2,! Kd }-=(S|F WVc?P_0>"?{8 1KB~]NG!&BNH_՜~Om!Rdll!*7f!"fg%7gs{r#A19JrssFh8V9Z)׬1W1mDcoC_c`SሜśNќ9C366}01f1"727BR|0t1fu1kSn,"5%YWML`kBjHqwD_QM" o_cdxΖQ?}!Pſ_>$RaɰԇdXC2! OdߘP?~xJ[V/>孃OCpAso|{Ws\p % 114v>!H?I;}Up }CN?t(HU | #A89 γ[ pc%+Bk;J? Tcz\AA}@D_(R3^iPUKEFzp/AhiTPL0HTr"bT#$"ŘM8-6ͮ+sXzXiu$ID BPmBqd PߵԲ\Bh2_u*9]X*b {J9ه6cΙ! 5!Ղph%Ȯ{Z,d⯡I+z؂{B+1Խ)7 UhA{w>Nhm%1B[>!}$Ra </  l+X? ?z/8V_ ߿xo-;t?ANLyN yNAs=rW W W‘y2&1J0eL} 5DBT f\pKraFhB*snr:ZLȱ̺Z\v>4 q AC1i0Z sNK͠E,>iz1IS4iZMs[u*om֤횴a.kˊ-\y\UA%_E\:`;.uB}ܾ|3k:ZNUdGBg9_Zp^kǨqϳZnWW;=qvjLA7eɰԇdXC2ݞ&cuyo-2.1.0/data/pics/jhLandschaft.xpm.gz0000644000175000017500000020235507550521116015030 00000000000000<jhLandschaft.xpmksF/~Χ}$2DMrv_>U-QvӚhA0ګAq]/ >__z~X-Vy_f³V/Y;yWd{?ޫӇ惓>'ׯ.<}㻗+| ?{+Oi烯P# <=oܛ x2=C7|{:<|uǝO4׃ 9+z }{?x: \){|zy-<}D^]o|>߲"'ï~oh\iTxVz? ~a_ʑk˳5߇`ߏ?'|~,;ٲOc~$G18\v@>^B 꾻;>PyWY$+7УsɖM?u_$x7 wˆx|n.l_~luΥϕCG aS;} @Zmng;6Dr/,j9(f?}oE3"ǿF?F:lvgq/qߖ*li[]l':>pDwwwz$>3E~]~Y.3磗n|_F ީ , {X l>2 G߇`8_Om΃m׎  "D((AK͠dsI?ۅ[m(6嗿BS;d~熗ܐ-1if8n[o 7,X1>}|CmX~_~;ЧymⅢ΋oOV Oa8~?l/@ ?7]dN:/g ,) P] |8σVYyb4xOWHy~-t["~gv{ X6!ap@߿`d7vvV_iu_& e"B9,.D#K[؞2Ġ70`s~у ?d5ȶ%2]Eq6[|<,D/_$y= OW/pcYϷaQRC9 t ̅^OO/.gÈ p#^ K3uRR 0'F#zw"݌e c]Y /-K m 5W p) WOˠ+DpZ@Ugd:Kf:΂*Fӈ` êBg]G)on]bB[/CÉ3b.+UGs_]OO:(\ӹcwڧ{'i \7XȺ%nC>z.ʤȓMVlv֒%#6.%jfJA`آw,\ȺH!ᮘ`R['.>DȠ?4Ll߃.;F\4h 44X.Q[Ig2y.zct"whΨp04@CK 9 MrpǸ-TU^m]Cމ됥 "ҍ4-9G O HClH%FG\Bd:F 1c""b|R,9mhuxIuA.?4꺁>LTɋ*FT<_gD{ڊ1p܌i= QE e~-@ϟoS;CMԙ2{N͒I\9D `.)%ooӡ,{UԤg Vf RX`90tH]tA6b^Ք=oU$%.Xp|>}7K$qL[P)ʀAg="y yx{b"JlgDYUPLHT9g`WiB?⪻1=oF@|q=zr憫D1hU^||(t3Ap]mʓ~|LN"ځ}lV|5 @~ ~*! ~FFh ~>L[DS rQKN{J m&ۣ~ &ęQ= ' 7I!$ gB@:{C%GãzҺ,i}Uoob*A#~C_ L4ZO>c zu[Is1,2$@'u@1 8 d4[4ad7MѴ`ap]QLaQb+`EJ }P{S``[<ҜT" ()rfxrFRa s*U A`p2,|m 9D~Zn4Ze BZnYɭR:td)ɢiBt|>tge2`Q|oi޲-ѣ#jg^o/g)9UVȣJ\"yKO)Utp DB8GoRMN"Re`/g3\ ZH]mA _ g˛}c@vE!Jĺ@BNOii, 0so+h`ͬnAID ?\H4 v풇;h(!&=`;P3#DLA@)~)"O >V:ˤZb)b!ʸ5L ;!;1ęEClQj0%z2 ?UJUS DlA– ]ޱw["#b|7:w~y?_/&M ."y Hk [(]>^hΘhLr(\ PoKl"fg:|)# M:CȄ^aC ,^lUh,ǐEdz5bz6u 40< )ovNNV>WY:7+p߈]%`E׻8_xwt=vP0$;</gWibC&SVPꬠ+݈cw!0o2*#9Cl@w6˔pK~%`^0zwt[u G:Bd۵'Wɢm2}$ҧ?zYN,,`MOh9B$,0H|: l ɰw*ZU&VZ:8.>ч7gwVR:LnHrmr0xAE0L}Soɋ2Rm!QN9RS`s7s2iO2"gfHQۏhJ5kL󂯗"Ћ,MFbʜ%p :; Jk꺟``y#<}e~MO{⿐$}BUE{5=g[IN9Y`3s^)A%Z Ï+akYwtp ._8k8~=.63Q1lC0ѽQ 3 0u9|4::ҧ;e]9XFPpfOd@[ѽ!VQ,:d,yMW^M.y=]RP}iJ %O0s ;IUk ў}ZФy`e°kNxwa򎾔~^_+G/r 2*_H0 e͝UNlE>[QI`l^K/+9C/K*k /i{/A !0B t8dΕt(ħXom1\0,5JCfb!$b4}>=NMTg?^9% o}͛͛JZp"s""91}cAEV&"5gO>x`aoJ!2HC (r %kwʱCx5|6?ya?|pp6lo-G )BFJ`EOECH&/p{M4TEi%IJ´_NǗ_FuY w?ݜ1\*LJyv->ݳ+/÷?<# P̛^\)PYVUr 5y,6-\Ķأ.ެ֡Ä֌.fF>s&>~xy%Bqo{8..(!z+"nz}e}#MB=*a6wbcŜ6}h1K CuzOlBXF/s>+,m7?@Ğ=녏~zӳ  "C2;yM|y٨BBr^:yz?BAMo5bSj!%xM1#]:o {<k/C F+' F hb~ h >7V=dl)$h[@şF,H|"~?yǣw>o^k\) &ƪ*JxJRn<Z4lbfB}CwïM-Ѩ{E4 0w~"?Ο[g2GF!XX/K3fplr떵 GMgb̠t.Ftn;L h|%;y9x@|8|!\D#N:;/p!>3tʺO<]@"[PEBku_v_:)eI%R 1m/0 蔔1S.=Ѯ1hP?NדV :%^A@ľ E%+S!!-t/o C(O##. z7_o*xBP_H uٳ/Ug<^w7;998' oG)91r"oF:zsʒsėJ>W) JZKg *s;")WR!9VYY~|,,2O_cwφF G 2 &d}ٻp $l"řdH#8 za!'ӓ"dr|!Cѓ|r?<a S8NݞxR0Lz_X`y%3{* +m)sG"""(; #au݇/fbX gXUqzHx1E o_]YzͥՓoHg-_]e;DSB8m ,Yz<ڕ%Q?ų ưKuAÃgNJ{/MJ>&]th"?z[3Lo sUlQ L/y'e#N9 xiXm`D^/ 'gGPU9\^8I̧`sǙD DO[,rjm $Chy{t - %m|P|1;+\8`X_UOBIFZ9ɨ(ᥔ!E\:RUb_V< xX[<+R!0XU@G'eo/ /l3;>GnΚ{\4к_]PMoWY?214$ cT*[ O?JGI'aЅxoKqڟFqL ⥷%퉶M@ßr4;4HqwIY^K{h+X`n_Kg,l3tF[x3x^ {^gkޥ=a NOӳ 6uڞi̇wqkᧅ u+u^Ӓ^V9 6k!HUQ-44V 8݂Wp hŸ[?[ܦ^){SG<0*6_Wѽ8;{w5l@PQc>ІBZ#,Kw܂Paoo{¸ـ 6&56Xoy$ilXQ|xGv vv=Ssrk.xC:F:T"ܒQAg)uP" `R޸+wn_S[1Ba:]жx^ZTa+*?jVCg*ٴVB N;gu]}e߱m6ۏSQF G j[iC;}7zRkiIoPNArD ?`zwCbQ40G-jb ZQ¦>0futWv`4؁0bs׹:n7KÁ߮p ZmX9la@|ʺpK` 8[.(ǩr+71YRwm)={q--LɁXlPTt"F55wV y58 `p!%HpɋSqgC 焳"|-"5>)EE-clyMSHhy)()Ҷ$oh ~߲w 6|J s1S-Okv|>̀ #@5S2q idkEޖمC)J<Bxdd">ZFjvc^4BlSϖe1t"Āu{vFrFȮ}td5Ao.I4H%]j Z:tI= {ʣ:0](ҜedJ1vAP1L"AђP=з_- -9v.%r"YD ݁9H5586` '{ql+8]a+Q@vLATJF KUWͧ{5zOt]ۗɄv LLmRɘ\ 1d^9d+j62@nW LoOQe-g$â!\8#A9-`pQM'%0=Y!Lr64гvJf#s52%3{PE4ƣY2f%nyY^-I|ʮIQSOYO#9ْmL VϷ!n WUUaf=!bd:jMVP!z ~I&ִ2\D$Ζy :%J:P ,.Ȅ/o@Mvi `$u!dM0A̟RܬڱQ1XFKrrEuGJ,߉(&hl=.'ʇKA-$?Q] җEHE_)\Gk۬Q1U+(.{ISÖ8aU&wpj*)jlW wT.Kl@"ZyDȽJn4H=/9=FVViވ0IoSϝѦGA5 JqCFbbH!JQKҾHpA yNr2:ą U6> GRz:l诵z+S٤Q/t1j"N3!S=nIq/wY*mA-ŭEM1OKF8t* zV1Da|1g8pIB< SQFGyrDdȢ׌*(g(Yw ֻߥߤVVzFM*I$J刞EQ5;!/NS,M$cG$ Ԅ/Ҫ!m@=e+e?q^dx#h@݉H]t $k{7W܂?#'iZI$lkBLt~bJm D\rK;KB1d39By9Rcm"wJ XUY%a#bar 㽈D>̆8"娒lS8ق^a\?/ RC7;  V E1asZ+b&@' -&joL.i"hI؆2WdM`a2%8xB LK@7P25h5RSE^^mNMsNCK}U&3)iɣGf@MWaeۈvK…'s !D\ia#7HHw& !h_jM-mUBj+&}4-PQx9F8FR%\]*ySSlPtʫHy*X3:tm/м..GnA>8%$[+Ώ&דr*b0EXJ4Ù`ܘRBԨYĨ@Z#* kTg~C٨ D*\ YshE D'PDd12:4S^!7D(uo^J)`*kCr~MNe.ܮw0~+B*b bo4E yF*BdĕЁ.jN01G\xD[:)2Lf>n1@e'K>°#Nh-Bv_otʒp~F:DH wy0tja ;希䙾 #Oc^*j⫅QFN}8U:r{V+JML`q|FAi#|p=*;*L@4-0I. -Bb&\ Ɲ?U@ RQxt! eL֨@4AMyZc= ΧL)hZʜ[endj|lB[QqCQ m$Iaۧ!*$ +5XZ ڄ(J94UpMSAb.D&^t.mQ*I|H!6tt -:ќwnJB{]Nb~R $eaϋЉ; :JN(O\t_<ۨ\}nYAC",;V]o,dGq|5SAh[UAu"ԙ j8F'$UyEĕ D"KsQH+99'9rOں?KbylD~υ,sOJ~1nc.4 ,pe;LOmZ ǥ 1_ZKSܚ=IJXrYӢPl3S3(5ا% W$ۦ&7D/kRޓƶ u9VȘN|Ha @9#tO`V?&vߖ=:VǍ[Kٖ眕HSWVSXxDu,F 87GéU)i@4ϚN,9Q8bq]mOԻvc&;‰5^3{E3"ҀxSoJ$50IՍ,;DuMeidhk|.26xT,6{R1/zU*S9=v*2 mDYėPa|$ꚺ\xd|WhrTm.X ?ɪȷcR$a04~޶†75E,gPc!,Y(o=NW@p8G5ÏRR /Cв\<.V>bEXm3(^if =^hA%c zt/ѡJ[vsQ; +jyM8ak8>JZU,ɏQ.)@V!iDHU+ug{yvVցy2VmC< L$` AFT+9u)fbKuglebEԽXQ=̉!1BĪe?hl= Ka{8 &s^Z&YF=3a.jcE(\y%K53FrqSbě}BGE#I6ϥ@R3/ [(}eo Lb^-NXP.GdT5✋o":3216*49@-y)h;Qfq"[eWfi5_C=G&u_|{+g%bl`)}]"_F":eH1$;13g+/6pzMHW5_VY\g3#k o =*^聯qHKJ}ƛlu2 `kA{ǝdV(RBYB<D$OpXo8ժ?n,z^ QhYxa9nnz H2*yIԑ}h-EG^kKb E$@ O ٮ:SE"A(Շ`72z85lA/1l\qQ]w%=0X ɢWNP⢔ z)S]set^C\{,C[z4O\4@c'\^a)gyBE՟1']zv*k-RДzp~VwQR-yCɯL&1vtH c8)0̷Kᳮgk8l‹/l.Ω /3P#鞸4!-1|tKZ.w3rzl*6esl˕e@A518p6D "Yn(rJ@VT;LIX#;Ybl$1SR5@x#j7%c̮`UȾ?ާV CDH',F"yFMdł8R'-KJ{@)rDJZ},r]sLQSE^VNL 8Aa:tص<>*1:#U,[*̫ /*fAmg\EiH֕Ry`5|8z_-ZUr $O bME_8؃JUՈ>*+RD1eY(3WdQ` U񧜋7?ދqGh_B0*K3z)Ǥ(plt^Fg:K2~I#J7Gd( D W:YtS^ " ʏn⳴^r]Pg bƨQLMCK*`<>.(Ic̄RR0y,Kٳ?(V4:G򞊣,Kah~0E#ձS^'o!ˠ?^.Tԉ>Rd0jDp%GʂMS1)Ghfi m< YFzx&|Ñʼ*S%)0.22Щ؇q7VHD)!WPRBYqfmTw&:2h! ,@oUZx) 2ŵ/P߱ų7 %5 UH*hA̛O1-9}<qZ*s1M+aHY7t- lܱ*(cR9-qe肏pt̊zm{ka5KV6UBP*\{5{9R *&+iYXH7P: Z1ۤL:| =EL,XK|=hc+NașH@ BԻmÞȺbD)!ƃF:Ի׳~;7SGgnzd/p+ Q!coufttʸIŊZJiN#qVQx^THed¡J0vaay\_*$ yHO,#jV\J*O2*fvYӉgĔ2sH\6 12̲zvR]\I¦]Vڢ# { mgID~ʫ T\Œ[΢`j^Vbi*jxm/%/m#4dij'DW2 i`رLm=9ԜAƤp( %ؖW)KQjdV Ҙ)RIt˦نnL8D W~1♽p4M{!FSS:b6EqNRPlnɋD&֞Z3,/wAh*vfgI2`Ռ&hNZX͢®sBp (!}0_^j,#j 1Z t@k ''Jp :&m!3}SL$@QC[ ƶDĺ @Zʊ; !+#5kmrA#{ɐ_r'ЮZ!W҄N Df]Hhx\]yɝ*2]BOJ"b!W͌Иl4:*jg+Ĩ.7ϊ{Js$@HaY6j D2cGT,@RJv Q"s2zL.''a;$4Ui$Ժ)y"_X߻(v;E4  /FB \vIpM@bN)S\:Nja8W 9R[T+;uWog$b r%wQְ!Yªj@)C~ڐehBA$Z:d~#) 2DH9&M}@+FٗXU|έ".6A{.>T}ͼ <4˵*^?YC f0jGˑQU&lV0t%|1xWe,[Nc_UL{"aF% rS!ɼҋ2J9ϛj5N6om[g˝c@}6S" 废'(A*%.A9ةQ8ku+9{dRIB%p,qdxq $f v[fWdb9{>LL1 hipsT\bX#"lj`ȵ4-(ޥ+ :QP?#QiA$mñ*YV|ŏ/d3e: ?2@R2ǡf-1ܛ* AJFAMlwG!3q@.$[c,/:I,zƪ-pZ\dtȺ|ETTx`rr+ ͂ɐǜs%SmdLi=^tHz(cGs2TC(a)5͘\5'*M{xAaDLK>%A4Td#R*/s,gX>2^Ѽ-q)ҾWM*~(T3˷'-?5H>sz 7V4%|7#*K^Ce"qd!aM\U9SV#Q{TNc+U_k}ߙYgIU>;gD_/ =^ }YBґNQ z>G$Z`gGR(0s L>^.rUm"Ew9NH|>8dc,c@-Rd/3YRBV/bC0\̛׶"<Sn-U3fl`_I3WI?/ X FD%4K)bǶe>xZO8;gk`i#^ E|x'}l^$m?+YDc,Up+)i& lpz pYhH51 /b|p)ZUj2¿"z/iL/,sDh9-¯ql=I,XP)  qV)2CY֜z-πiH)odDS&g܂?/ga]͉ 5cڵF`_hAOo'^*# QEd0XE"t(R JԎjc,-vz6f|DMl ]J|NDadEyXRTϺEF;ϋ -RFU&UAO:&OppoBP6/lj1}KWacX DeZRR\- rU aBnŴ1ƬKkv׷v=q_7œKȁx8]a茖6dTyR\QuY E #8Zw̉DDIP#.krKᦏaV[vц@E]ſZ^-i'Ĩu*aL<\baU1*k)9$ [;:{|y8MfRW( #hWgb=>& CgUf6W8Hy{+.&yO;%"iHISfzQ`RzN Ra*Q.M%ZTt&"tQiel9)B.*{z%ǎ {}9Dm%^uɯ5GjyȦsp>aIc.I,iRTfez a$Ak5 .'1}y]%noѱ$k'S|zҞ1&@ }}Z`*IPwYW+Wp2R )bw!UR=*ѝ=-_CI+wiZZo Moggmr\[' $,bəJa4c;CI(^?btPvu3qy8wpL #Aȳa&a0L61*Z[0\^|VnԊ !t~{쥡ܷ(kxk &lm ?:+݁Iֱ$y͆qbi 6H1Ē%Lϑ +ۄ3gkSy0WdYkA4#UsV]m#Bw~Eԡ8iQ 3,D bM{UDEK؎'W:% -z׊H[>,NEj7М^g}:gU^YfG78X/,24(Ǻ*ry` ,x_/*VZ|TjNԊ杖SW0dd9DU{+hNǜ]_s|zusz0_B8*g0yFqcUL Nb^i$h.tq+ZD /$sT/ðQ) F$ bE:(>To=2Vie*l9)R,% > &n!u+;ƲSHЕ`eHyףƀ*%4|y_Î'a!zmbJN{)NĎ5THBĴX"xejbtXɾ{h47 D.A9O3Z ;qdTBj`1E^F+;1P(*ɐ7mco_g~x }|{y1t'x#ԓQP*1j׆ /Br %9T]Yi.6:E7-L*Z%lssNmHroluZw;';墍؈5@>^Τ:~5k/l"ьܓ:N:x̳7n4x7,+Tax퇯Mb# m'2-tRVn BYC+")mDZ/&= iũ2F?c[-OU' 1@0̧cYFN9HS@ bl^$-rB"K(UE*D [(t31&ʷTb=y?0uFc= 6TRhB~ʐ~ %6jgZ:4>%ѕYs  ; *c-%bOb_*vm72h%$B04̀L+ϬyU TVSn|([sR)_|lei7O1䬪;ķײɞ|uR`zƱ5{;n{1[ֲLb`JihSaUF9,#Set9ʇ,f8[BxPL|Ε1W<] '.%dyq}9)e5d[Fwgyf!LeW銜TsCVr^xW3GReӒ<98UkK-?MX $qPRLgG glLFy%䪥iX^#fx/0x(uȴ2”aBdVGwBԔ2u%:3w ע=z؆'MݯD7*;^?(b$fbt% ,R˅Z윒]eye'eL(FK8\Cg'P[\5vlr)O,麟3NCE%gV44XYXRUW$3]ⷱ\E/W. UU +Iz9.ut-y!桩xv:>jlJD)yF4WkS*7Vxҕe:NMdBxR-bfH:A*ktkS6rmfxm&M̰.dz0ba한䴲,3Tsl`{cp~<\ su>DmbP*I6:AĨp, ՈY/jEs QzvqZaK5JlyxY ;X-N@mKFtxܢdlP Y҉FG}<0N@Ub nu "3kmb2TO=)cr{'EYH[7ҳA\ٜ^7 ERQO-̡%!r5X/>Z \ FyiNoKqvy?TlfWy ۭ./a.B4{7ٚkCD&T茛)- O."DPLkhVabB vvxwis碣{qmNճ촠jV0Yy7i8_-u guheWדp/Na׵-~دR'ۊY%g~[?QAThX˳6-T[E躭ĦхhR+,Q0ߞFoT`PB"|*8^ 6A5,c>e[pJ0$n+WB*@UCs,׺mcN=)މea:كKT.0s"Bw û2*cyV=`TE¯T|\}CWY,tjt1Rȑ$1^xm֢f 3J#b+EY@ 6&odeᢿX^f _VcPԛj[Y*q.PxJ HOB<9g:S9M#\'xHuCm .vSxܡfq$vЈW"%Tc+sr\*9GiLgyU ~N{*GOp\$kwP,L".DBvm;; Blډ[o\J c5*s$k%H4юSH?Tt$=Pup(nMaHPͽ$,?'FϭҞR|9ECR=OAVlmصM^|hj43Ѩ#ț>=+p˽c*pۦt* _aŦ"5ŋ즥` UXĆlQwb2u Qĭxy~rsý7 ЕoCvP)t ŌP1|ݍ~ݻS\ЀZ̀Ƃx.F 0: /[6P!bEq#c*{@I V&8ʠfM1H'׹ەI]I_jχ4E!{!GfW|+\|[ ,S?(DižQSzU :B3` WBi5 D. ap* DF0J#n@ KW7>(=/t$̰ 4sF"-{ըaN5hw]9Xo8cQȐ>'VZOuq9@LDxщHEhe%vA$!+YH>t|12Y 3U Yڪ{B椏EpޒT'9;X.A@]۱ N#ͤ#9eR b*|a4ckkɹ  'i!ubװo *k!)`fBL%pFk4wx)]I)qMd]h~QNrNE݅ C<>Rg(gop8ɥRp h;];Xض4l ZGmX)7WJtfԹ+[Iͳ#B$ݞt&BEG4%2yp qe4{G8U\^X=M߀j=YuN.^x]\{e Ϋv$Z_Og"c5eĈj&:Qrd盽YD¤ң0\@datRE(L…њj0e45rt#0,U:uzbw T*[# ." 9vQ9u0ơG^9ƬR`W#GN"bɣUQ'{.Li>*ZVGwÓZ6qg$dj~ `3 W#fRt-6•$H*!1by1N5H9:Ԙ%y)$AMi,òTt7M8wȦ=umq7yzjbx/K- s UN^MIF/Yz!CA"yp8e6 [4Y³Tv:5\{v;#Mia$"6ډ/4TByZǠz *DU^FT(5rh.ZYt3 =j2ɚ\Hi*j9a7Ұ^QS@HW/~Y6*vE_DD ,sxk3]>aت,̴jÛڀ*ŐN,ٟDeWNn** >J#B.UB=a0s@m7/W7Hq#+e84Hk^c_5ɐ` (P /r)JܫX?=Qů4a=;i+ bef@;H(4+)We\p9;ҰP p݁0lG>RX^GӰ.P e\bB:pZu/p뱰pvI:l [n!0PՎC/MKZԠ02䩘4 U]Rڀ%B%Fάd5nj|h&sbT  2ʾ9lNxA ' <1ߚ!K6WmBאK^yYCnVzqa*CJ %Ϫ,`^hP_6u:o!Rxi&QtlmX+ x DϚAw`IMSOC(U\ sYT: DZ`HK=f5JH5u#~#=KY.}sELZ:U.yan cY`O \ב簗} n2%(Z?N7նb[-;iuޏXMxLS$3*]XÅ $/ءLh+%QFqBh\0HߓmlJ-n[2 2JvJOl!?u^l{j4S:cR2y6~P'S@ +^)K9A%d{ѣ?\9{hWӖ3Yٹ—h㊪5u_qy[L?aQFҥx+>,n+k#:f%|w~pps}C8__8.!9 ܕ c%[swu`PmNtrB>akFPI߆f،1pqF]_NQ fBBj5i΃uuwW{oq{uUfC@k`RP0cw˽]^|^ഠTܲw聀qłcŎ4kN;z{Q.jmgDit m]YhQ+6򫫽p~uNο&h?:?ի:xײ祯[Z 4kY?EYSL D4_]VmLE[B|R b K40'<ͬ }pp~[~Q b<~@իיaa@5P Ad0*lh y)HM 36WH\agd2ѣoM7{CW;A T]@0/t/001a^}Sյ+Q}H*̔^rəAkyG6QnZWD^nI W;!l(^u1!7'>T!|:ysH\ aCa}ILxVR +͓bF"{ja8;[aغ&vIǨ'>^]ox G\܅9Pbwks rHS>>LJa, ͜S ^|^yV6ݗ|ܫCD4ng/x>.dxI] ?;&~{J H/fgBY ѥ;u9?hRcXÑM a'"ĕh,x4İx 'wH{'7osrQZWÿChhGZsFPO(NMh%N+?!xG8y?"$OOj$ver {zn ?!Z("ĢkX41؜s@=/jMzO Zu-}nw8f/_P;1)|Aq=yO2lcKAJeXVh<#3YW##]mpKz֥W!bvV`0p"Ii ߞ|wס՞bxe7]UΓ$װ$SҎe>PqQ/ 2Ok XD}{9k][䶨S'%gg?ylW̽J `"rU0DC5]D apM<<`po'!E}rtc!8U0 yỊtRݾþW'Dl٘?σhҷn3dx9"Z(AP)<)iX9R(ps$3'qt8H$WmSyI1qCղl(oF{=42`F nMN\uCvbVQyRn`^c PN_̾1CVy›qٝ%=?'$hBf$,5>BwWW?|u̾EWҹ.f^x4Z&1le4:j قc5$Pw?}7?&{xRb]K&X= (??x ~ ˼lvUzO{ȋα`ly0ڊKE(^|̈́&ē{O?lܞ]\| j1P1[NHa@~rW#=`_7 py_aU%:{ĎaO rw^.7/6'P LTh2K7†kՏ^vg/Xo۳V75*[(+g b궽$ptm\ǛJ a<0zWLނ*^Oװ*J&1bd">y{-q{?ee &ɒ-o?|I /U2d݈@Y^q Ů63pdZi?gJl ^"vBN0o \U^bD7a;]8 rS[)*4$aX͂BqY8 e$)qc֦Pg47YbSz | |OA(ZAMTYiz*>D?廔頞+_-70 5-T7Dx—Ϯ1$gU4jn"EC~0`s̓"፴s~pK?ǏE'Jl'EQ_?R/<`E/Q??`/3?^>(.2 3-z"_M>D p(Ff7(#^]_O*HH0_s- i{!dqdBr!WYb<2*  t2bj4{(jP9$nÈ1xXΎ2 <tH NAH Ňg×΀zk9W{wkA1U2m.޿lnJ*k4afMJaۂ e3:F=HXTƖ-R~?A ۬,Kal| _7XDGi|1GyVJ+û&6[\@3y4D b]= YRVB5㢛" EMǘ]{ QJu0Z#vSkQ2_pYۘ_,K}uS=r($VЇ>a/#vnyFUE " \K2M>Gy]e( ثQ)z# KAEL8ັta#Ozs廛iGֳm=Ŏ=bx ɑ?;@UϞu;)ݓ\bHȖ " 5\՞o!T2'!H CEx 2uZa0ؖKyyxq(ܠ|M/4M˼|t=5tћȻCh巆6;;!&j[؂ ap߮j8a5}cVOoğ`L"{q䊆%T[0;0^pHbQ6ppa'R &v"AH_J ߾z8mx]4)}IO_W65!͂ikc#IKrFf `x Aq{A|`o/[ Ж>ӄn adMSbWѨY誏gC!J҆0Dd1@)s2t`$$ =xuٕo^H@;`/~zxO':ܯ)G> ]ڑoM 9-#c)36䝋) >^ baRY:u||ܣ5~07> ]NѠX*]p~sp? "xp㳗^ئXx&Y:R:1/ |k)"\ڳڅ|pU!0Cz(^;=>8߁a.Hy̙WXN sF*%Zpxp@nj`~yng aPaʟ}F?ʣ/2 v /?C[-*Ǚ!>j`2ELo v@8'j('ҸSa>wV ]ScÃ?(8K\.5k{5V^>" j$nÿwExqb_8Ff>\j[̨D(2qHy bTc^16__L׫k. bUtW"=j\yZxзwf:8<)P(ZA+ cgA:Nxz 8 sao(ujB*Sd%C@0P=P*G.6}ƦbW$$H_,]7=F"E ;~h!=zA` )E?MX0q˜xKx%SP:BXcUrk#!n_Ʈ׆Õ+O:&y#5 ZDƌ1="3Z`+ֳ>euKޚ\JPC7ف!V; 0TGZ_ :ŸN؃T  6-fDp5a |H"LhraYfv>lqdK@OuJx<֡dTEϰ^bm~ pAM'd90V é.5֪fT0R 'CQ"~G9z}21rK_7HlJ6mnAz0͋z4 <N$pA JbL"ώv2bH{0[L]HTBdwM1+TJCha~FbU"@/FD"xTlP>ޛ$GuYX!7z}{_Z iϷx t@/Tƫb84w"7o(?~IUA |3852T.cT*XuBҘ~(OH:5 a (b#͐Rj!6ȅa:7uT~~udQCp_%TC\L .z T"ʽ\-?H>Ql <# c4*d^CZq誩`vWPvF,r"c*lzGɎb7:͊"IX>Q, :>h`5lI0J$/e?pCb b?|ؼyv4K~sʰP8b8RcFV^tH~jb[ 6,IիOu]ja" 8e2tkI4P$F=R:y޿|wnRQ^1֊}dZ %>F HYN3jD"4#azc1!SWm짢ǫWnV[MXm^=Lf`kVYy^ xM$!([tC# /H_h(l-6Tm4sphb gzMC3/"UCr |W,N^ "5ΆuRŋ qSC KMTW? r̞}'/}-dg_bAs" ^I`7Xӎ]X0V tn*-f0jDH\H>bTvj'{1VXи(B| չ4jz]E]?a"$nhue~'i^klr=Xb2 ͲϾ$h>|{ T_2hr1:64VL9E )1N 9{D?C jR!E^|6=b1z@l$&Zy$:h;cX=O 0sonvu={F];!͑{b 6̿º;҇5Ղ`*I}Dnhmx!8WϿpgJQ+iҴ6mbyD`U7=J.EGcw=Fh<*"|p\GYӠWvHZ:jZ KPz,i DF"<C}RHA ydgǤgYzx8&k!@!F"V7r +T9 0)0b7X;,%CN-;K'$_֫E"H4F¸|H} L۝P)!C}pwWv<;悇7%;#/i#K%fP$%,s %}:dԒR XIfw!'6=.SB,0TAmq;bw"GD1;.L}x1/:|AyL 5L&{sc8bLG,L. l@chhUTlFyo<" @Z| :rG%]ξcJ"7m>,I@7`Eg#`e=7Fdww=C8t Lp]\h=7fd萼;$oz(%& 0z5 XC ռ\,+7VȿaANi0m?n_vyq(ʹI~J@y;Wƺ%Wg$$Dc EXtȍp8l9DqP Pc8̘@% 2"G HARU{:FoqۇX/`дgxdcH<)=JB_J2Y i4!"™R V4bhE6)GA$Χ/J,+3^ $ݡ/ϯs52 8 CXh躺yjz'5w=q*\Jk0JR,PDfR}_G~>]N٬#FԿj|FG=A75 ]Ķjﱝt9~]w6ҿh/h8%i힒#R0V6 FM'Ta_{FaXaqsEH(":GW2'h ? {4M`:@ɡ.ۚ -Z&0{߄kaº]yićϗ1˶>_C{LmaD%yMGP⎹PWD cjW"=C-,c!Dv&.?y,w@GAuUTi@",(̆k?a]$e{eZ7ZM#+S۩Fj6b~ q<~9^̽?b Q$5M(d7O$y ɸ?J\]KCC5~(Њ-%̓ه N(300:A8L{ʺBK,_bMٻ$G SP/G@P }$/!N^ q Dn|x-S 1 &c,6F3Arg?&q"t0@#%{pחе3Xo.X˸X.$?2aKg"u&$iaB%mJ)M'sp2OWyYŪgq*uBꊒL ZIE"ƹûeU5ww.æ0oy+{贰l~{1~b ]@T =rj+Lh8$ij$'}MI cKVӹJγ9_W8V䝃sum|+9ʼKG88{8%q$ T7wj͡aI ӠN~.0qúj LbKKfCl cCG&ASTX H3a)z}%=/o,߹q]"QnqF W}a簌C3hGk;0hf}N0x K%0N>FB ֵlenA1|2x!d*Hv8څ@$\K/?1Rя;_R1&|9yPֵ/ܨ%)n3oa]$6.{~θѶnu=)h(Vsj+Im@y.YA(HH(0,×Q0~&T'sdհ_L Sh,B|֛o+ (gy<8q(v\M)Р|!a(5<ޔqk^ܼҜfid"!~WC{R{oC!WC9oagJ}}y_=<c:M5ȡe1cNKk)H聽a)+{ؚ L\&/5*,Zgs gN 7yN`xq0BIE>J&f'#=zPi,H _D .8*O`#vip)mP$lB]kY֨fɂ8`%B lc7PC*.R`-wwxWA/dq1hÆ( 0rE0 CK1a^ngBbmW$,D/,ippx,ʲqýh)U9!uoB!+VF&s/ƾV"JP dF\َxv hQv$biyMۺf V9h; :Jkxf.bsNjaM!^ kWư+!B,0MV5bk<c7 nhCpV{<>S /(E'kˇԟ `:%SQx*9de҅iTr#+uܧys;YC$Dda0vE C4M]`IbCpO"p=\Yf-_~i! yN30 ! C5TN K}$bvb)yq,htIA7+āhh~nD1D&!8wo_a1 \RO8|A>?du;Kls0Q:)9|>(2eYBF %&k%^SEmH) )c~Bv ^@3qt|88ɵ MpPM5دȨLc2mH$ 8gې ZbH帷{&<:{P Z1\VSђ\DRbE3u#m%r"kA@/*4D5"+K%N16E.Lc")`6}Л vp}My^y8-4~v1]t\))d-2<؃Uܠ xA٘LD 3МD^ +G|F/w/c>&#g5MeՅP.hl${'82?F ,kAi<Gup,7Ȩ[`Vf ȷ^64Pb/ZR )h>p$7u#m-F5+/`))_a{Exޱ \(x;B˦Uej&{e@ꍯe͗E v4 L ǩM!+ ̖n(Ķ Y 8xfpz9KFD.D|!WG,#%<"L-MO]<|| ً\vcWD:<.=~P9~%\ܜ# M2`!5+Ae-f+BZ+!Q`Zaq;Qʸܩ,DUטr`7qf+vakxñHf_s;х!CsOӈ$"PAK&Eu ^1xD CjAjɩ1wlem8͂}1i+MUuj%>ZyGFdH'NHG6b`zx:b4>,6 㣃E ^ s kAƎƮzDwXÜ\aZ&bЬ@^,* ԴbHrtJݝBj2nGjr*x{cS)!RFb4)A8~g< aYAr WY:Ngw..Vz.w>v%nXy!*>(|!"?`[VXɦ d#Mz*Œmbt$hbxj묬W׫{"C##ȳ g~x18~@+ c`:ĿlT |٠iOx0bfXM1,B[MpeZ c*7X, !|Al+.G|<1gDF|Wqnh⒄Q~e CVRMCj9_y .8M&B6b@u!]ХIRe3ү$\hB( 6u~d/!7F7D; <}}8j (KHm9 2ΖĪtDcy7\x5  ^ K :*2!Ѣ(Ckq?pn$<& KJ41OրpK4!+zwCveAa %>-ÐVhNrm2Xo22?5s+A1lcy6IlKF QgAC89Úǜ!$Tڌ95Gyz0bhtzOLvc_nKff$Y!@VҐ;ػL㱇ΰbh#Q=AYrhi 9`D}ky$,,kkaАǼ(RX1#-CD]tqL8Krҕr:N pbCa`{ZOiSadcobShˇq*gIIy8#@d.~=w̳o ]RNJo:E PNgYťf}܅T>?1rbD,9 .oKH[ lP$xPƺAP{@|r  >XHrEдAS-fBl㐽XEPرT/F1o~p֪j48 հH* Ci`kS2G0 |j3h*<@Oag$k!!Bi D zyaXQj/ F% ;s$M,9v,H1Efwl ׾F[`DP#"߇߾ aa_q/-X !;) !U %ї,/@@YC ![IAGf(V4բ$I(np"X1Ez|{=,$4q&*߄DcB]`@;r/[K:CI)f' (=E <'jEz :PDr>LZlN*pQ͢KU`^E7 14cE+sy#0s2*+ @h OiFkR1hXN>15MK)јuGjbтmh1Z!\ΐ:wT'Ç#7rOqtiƲ`ev1e!-FFuL$G#4:1bؗ3CTJX찢(2'jq(^G\0pi +Y09hCDyL!.q R9!a*|B qİK*Nہ'בA̘ϑ5p>-%H5*dz|c k%~68G~.4JZ}0H1P`/r"= xMmg@Sl&@]#yiRK3!B)nWr=6ҚЈeH/TD8rZ'C~ dzQg{䏉1bvȄU(T zؔ,ryq̎sӡM:1H+hhUqrA^Й%q9%f 1 WBFUɸPWz9i U/q'LΆK3 ;b5z #S]jD i@172Yu \~׫{Y'y8s Pcdr4wnx.vECp@Iʐkvyqe!8AgBS700ꆲq%(! 0`@cv~DłZLy דBpKk@2J-s]Kܔ+j+9P)IU6rl +0eFIP "6K)̥1 i ƍfhcO#({jH/:!"l`), RR e)+t_Շ $!ZP~\}mV*< P0@nÐF}^tGs0D \`5'IA;Lv,F1R3=f?Sd X66cq _jYULqɰ>fb,J,D*Q(w4M(Ԋ58"7d̙<.!ɂAX"H9%b-,,1sTw*NUzD`er2ٚ85 FA*l%KGRxO~&FL3>H qD~P#c3Fp\[[r wrpceagzYѶYRR1dEU@{h̾z4\;E jL 4iW,X INbc5LR˪j؟aT/F8 *$y@ŴƊPXjrأB:%Nm>{]+,SbuVUhc'eP _6Y}d&EU҈ɈÚ|]VJb/N~b681ް2UɆt0Y|dŰ [nzu56; >$T r;Zz9] [p9VU>llK͟/sYx g]h? s cI+E *U^e ju8 yp%@P!v4u[f,lj&06iqyQ *0Au p܂tĕ"\k1a\W49u4CZ*B:M PHyDa]JQBR$i21ΰR؂ƞgg-DJ/)QJ9-d:`x}?UgoDF2!},F$4M?V7{<1-٫ㅈa"aB0MW׫t>jcj8 u -0bpɘYۀF zj+hϚ[CcP,:S E8[o@Oƛ؄ƩSJt$?:~,ӥڨ#7|D᠔Ga<]Qz|ɸCkQкOk3DI/ѣiKe8X]IĹf ɇ %#Nht--TRrɂ$= X{D FK[M L15Zi0p|L䊫euy͏g^Yb/Z\޳cQ6I`d'e6{>h81`ђj.+:N(B1 !>I#=SA fo\@0dHJAh+oތaM smP2E9qqb:.l6;uu@39-F0wBT 65f8rKa)]1jפ"h5rRzVƇ:JsHdqCnOH 4cƐoAɁh-69 AFS\ @C!'ɁqiR`+c9up@34p]ׁ`=onp.礠fS+q v $'ϥlFe)B>2ܘ2د"Ujyh/yzL/1[^,Xk T[CE4gC0jjdDQ-Dzala8VpS)`LǒiF# F f=r8%f ɘ@&MPt1E\>gA{N_0‘oћ_P-v,p9@av2MVQ;Kb́b46p 8ׅKBR]KnA:q7R@iPmDLrGu /_XQ#kQw1gƀb@YaK ka|1ͧ;M 41 z5̑ܠ^?6^ػ$*:qCA[lM'Bdz#{z* ڇGDKӶƴHLOh|o pjz2=3gc^xY}~ : uBXAQ^~[A}h=r)R򨺽kev+A[a[(I0E(H/f6@3ftR/"B8IRԺb܅nzx 1pIaAd {}PI/YgkouzVcN9 (ܹLhq!:t 惙8xULCY?1#"ar!."<ҩ̣X=I8d;GR?ޥ@mt` pOQ*߇o4v]NO fKxkLFlmqY/&0U6w,đL?\d^&F[Hu#-=*BIop0$Faz98 o93ft;8ix.csDXo~6#byN}*Ӏm 1pNdC''^oZT@`zgA@,!, pA8/6&dN"cĞ8ʣcjuDB0ê`slD,6 .x$F=# ,zc^t( :c>)'"d«Ӧ ^>|Mo/״Faan 'H̟Ln ‰;{P> SPP6XP0F:S#C9-z`L*.Rf6 $n>tXCa@&,7^2»hA"OCM@gkp׳G`a@f`1lMBd}R-07AUzPqPU1n0tG_$]DR$±ϿmV2MFKZ!Ur$p40D.x&:}sc.85"9/u%7‘^T>&'!CcÂ3U B<֞|هL7IbZ X 3hjlj(}pf<]"DSL)bqˬA&qT7*x]H#.wiP|hɵPb!=I,V߁g2 y+pNo4S#>$?Y6j1[JbzS#-l8`gy~=qX:^䔝"ݱ4B% P6>NObk:-#2dhn1ctz#Q[L)=P˿HA2Htt2gy (/Yb׃%GJ;44yMRi@O i#6*JT'yxu72@XDpӫluGiMH(އuM1y{SH`B2т#@K\<<ֲ7TA<&4[xR9<ߧ]B01K'^4j$CEz_dϚEVm6R'A&*HP"ķ(TD*x a&I@Q+vՔ%6i˷„X(*PX*.g3L6RgĒ~$Fo8ٸ`[rQY&4*^TMc0jd|D lo1Ak>P|KR{d ɌOA9 Ef.4998PCIBso 6hb6cQYΠďhhóдFQQ#gא C&zQMoj9xMTZGq7X_8ǰGޑA1.ezXE^`5A6B 〇B2x!|~lpHJl+>pH kD:*᷑Faq wܩa;m)s,f̆O,Ky} yd "XV#Cg{m3l@KK{-P1eayJ&TU!FN93GLj#*FBبA$uFhK.$< E=Y|5nQGGBm= Bxd IxBC1\Booad0om`V(P<ġub6y>Y sհG}T\NK,fm!51Ee\ΎYdX%G!Gމ"kTNaD~4FൌUW$!bX賡k/@@\&e^-3F\Q*ul8 b̉*X| V96lPcGM\4sŨG@?+zc@><d[-8|PUo\yӴu40'ˬ Qi;!!.Q+RښQSi Jtbl#ZK?.Uӎg|u$c*sEȣ-^h#J F$!m9ticɓ&:r'*!bXP3`z{Ü[]֗0X<6:gb!T f[Me#z̻͖(xG:/z)AE!F־#|B| ͠KCAN @ &F{ ZS0P29$(^(N HB+V_g4f/ ?d^ KIf!L6ZUByEkKg\ 7˜ֺ󐁫l/eDB]UҜe';8rjq.EH^ ,trL4;B3g~'p^rfG JJFNzcnvrd'ݵGEƅ^| P^8q=:+S|~mǟϸ`JDdmN48Qƻ^$kJO Ab`􇟡)JZW7:K̆O7[w|*JD8ߨVW`.@ xjcNxsq'X^=i*/Dٹ2s/%n\(я {6P)Ȼz5t{W'o90t8<x sNMAv~J@yBR*o޴`;gJN '`o-7f. ywF~Բ٥5p*k]PP6q֙bxUDV΋G8;:N17b MRpN SV k>g藖Q'[&7E]pry<߿?ZZ\,ۧ+1 x*\D"Ls/[769@"$Xxe|cIgԮcqR*L8`%ߛ  %MR׾pTqDEݕSQ_*n~i4!p ]]CDhV!'%:9XI%卺6v{?MZLZS?TsNȜ᎓}_ָHET<k0ͅ3Y=ANPj䙴Ж߽\|kmS}*˕~C,EMJNP vwp| ;N1Y)߉Y~Zyl]uP-7G,dn_aG Јwu ,r:.!?'SU(D5OáIȔ=i.lW$%Gώt}I~!]q#qlvq#Jp =mFaSr,j*`ICGHEJ/[t Pi /B7Ёh"!Eva_bj״9(QY3>V7\ y:ZsYȫؔ#݀ 8U}O!?c=miaCuH'$ w )k-0V|s7#iխ]䧳b2R`loSm 2-!z;( $wL Ў~UE?ṃ51GӪt53Pxyq{n/拌1Cg !,NP8)y]4wf{-W٤ըݑ1)HUg_!)skb3+6//=Ӧ q2ZR$gzLCE$!D6D.8y(SEr f|<\#lpWΈ:)ZzL"V_t y6y+ACyZzӦ*//f*`QANQVh~~ZCNjR;G/YzP ֖3D<QX)^Lx/'*iK Ʀ?(q\ zma<&(B"@Ķd*Hf{ jçC]dkq n=mF(D95<3Ѹqq}Mi,gU?ߐ g;JBd vsM ~I[y;H ܱjBC0mּ }`iX wsO}I ׬)b{p8CmźM q4-LC WJ:Jr=ח<7oBh0VDEd"F]Ȥhl-j} NXWN=  ~oaV3mxMI9qw|VuRTըÂxY4%{xmknS2X*'6DuQNVǝEU( 8})sMQHFF Gp pt+5g{.'5>#abi"hDFCʴm E6av4 .w\VM؜5brhkZ۩dyk޾:J8gOuVK<)׆OCp>tmcƦH p%?d;^r9cj?Oh~lv؛y5z{,"mMiama \go)QP$m"H r7 X6*6wS"#a`E^/B*,/""Z/ʖ ?0Ly[+k^@~$齕fڽlǖ6 .γGj#e]jewXR1bgS(6ߘLϟL.Zq%+5[rC$xˋdufr"\Nza(8x#vRs^(._]\a>#\c8 ˣzdg8-QVpRE* wH|;f/kیvj$Q@0f K Dr ̹3?W^q]iX8Sn|I/džVx[͹ӓt.:l?Z0ѳef|讍K=QhCZTPµ崊v礌܃2r8 2$pʶ/h!hxFߨؚA,LirdҨLKi5q>~|NaĘ_}D2ÝU{S|EƬM\)9DLg #!Escm4//Cs U<|lmvU_^x+}*:pK ^)LDJD[~9d\{:Q\F~Y'|.Ǟ.#R7WF8xl7 &`^xl]yDsIi[^rٿԱwJ]52GMmnjh)YIo== g_%is)"ge%3(I:F&ϨR da?knu |7orukk{P1f+u /Xh􆡾Ucnf s л,: #VAر/^nJlÒֺMn:2C2jL|ݹ#h껑`V3稯/nV?ܸt4րd K+R![zZf giTn{tO XdXByvᘇeHbb #W]i=E/DɋNpmM\ ).Vo}U _l~sh!xaړX{Er/x4jAEg xЖ#b'6<O7'4UxXogؾy^d~=sXΧ,bLTժHTJSDlt4?eqᰩˍ}Z[A.*b% p5 ) 9PXMϳ@?xS<(tuLK[W#lyQS}EBxR *aI+m.>2uU~ŕ(1 Ĝr>Xe7k|9O%˘8> +L #;%Q|QŕS'13^s([HF:~K 88Ci|fٖM_ٖ[%~1\Em+ѽ7;ݫz_cc5w~k[ewZu;b帅h )|mωNA1eEmAO&0VƹgE\LڸlfjQ*9XK/.&}z"m=MϘO%\߭ Oz(#$a)r>&_lECdwC*mfy VZܵ]/QsL=(*&,t+cϱx}\aB>fc<슗p⠨k67:!~jdwS0xIo%敁Jd?7% HMq&'Œ^av~Ʈ|+x# ݏ3. ƇNhWj R5ג!}zrS/t ez6BUTmI͌@Te[9fj_ gQ.hgh]bw/^TXql¢M[0"չ4,5X`y'r΃w:˰5=k?? }QK^9 G 4-kY&b@xVRsa<Û6rGS 0 o[VZNe4 l(cG˽RumWLJFt8<zA 0iᐼmY65ʧW9rKtĽ_**&) oS?=_/X_qM B"m z$qzs5J"cs{1b?>?OAKQ Əp"T'+4$h%ӈ)NeLR& u-z}:I'u>w f},ۦy ƨ5J_aVqꤋ`yk BIloB|"yKV@c@ق!A?@ZdXBŽ;/R9 >kTmFX:Ic yh~PP0l29>Dn#>7nTvO6zB.9Q,y%%C BΎM 2 ̘NrEѝ]ja6.!}T϶{z= *^0=[7+6c !h"twgojcB4__>^^|?<.[ 3"{T"tl z2E@JUtaS^!q}jV\(VSzP-ǾCoHy2Zlճ( !~"C& vVƩsq|!b=FQl+ $h{H!-R+Q Z_l%AZ-B e&}p\o7‹T]nͶa͝Dq?#XCM^+6zS u6w{9ßSE튊N-8eUޜ%sƄxͥanpLD-Di挔 3Q@W⎵O5qmB.rv)PV:B=Z{]nO9FǺaU{K F,ƚ+M"74OLlD.]9KL6v%i)';qD~Oxo,GzCw:z[7={n2B 6*+ZΌՐ(yn߶Ѳdc^K, StӄDTEh }gR(gvhn\Xvd_d <`לH$| !iQ57w|勑cVn&K&AB\x)Tjnn#m\3j-;lt:N0Jxwq.AN) {l*ۛj6+I f.){u YsIAuQ%Bi3USը5ceqpoGs 4OPnV+)+#]v>ф#48 ܾwVJ `iU .韹Kϕtizz~"aǧ^Cڨ|3M,UH,\u}t6PO|x`ZWtA(}atomӸK 3tP9 ,#$3rI]v~h-!{c&ڈ$`?0-5hDpw`6nph|9vQVevlMړ;la9>n#F ȥOnY[ 9X ځJL@8H<.c}!(8TyRv.ԒaV#xo174l=:5:;l}Xyءaԝc9o"-VY]npozC6BF 9i؜uFiX" tŠots[}܎ͯл1١ٶ׾FOZ]n%4~*+8^{=H#btX8PLR AsWґ!NѻR`WSf~sZQ2U2< |H)bagc+olTsh2"/TT"K0>ݍVhG>qI#M뗹x+JM 3"S_pܧ1ABn{ENΠ9Tt03/d$Pqz*nJ8HK*r(9BzCgNB^6H-(zXseYuh%a'[K'N,Bi/s66eԩuw@^6OA/())D8Pg]z}?~XZ՟=Fm\ZmHw]ͭ-\sͪv͝zsY, +_c57 a;/0?`ѰhayrobX6 !qfذy5hs-hQ l`ò~4wٰlOg CEcuyo-2.1.0/data/pics/ivVulkan.xpm.gz0000644000175000017500000000403307550521116014227 00000000000000<ivVulkan.xpm͛o5_jagzI?-7O !TUHT@APg|뻍Qx~q|gMo|xy_yǗÛO_Ӽjxruyُ?O'Go~]ϗO' I/WǛcH^vmH?;Brs_c6_C ~z>$_·ϯBr>D3!y<^Dw1x&$|) P·.H:Fl,ZR#B.x"ksH|f 99ض-Af}4Hm0"$=ܖhL>r\e% wO|۠2:C͖Fi1y,HF)>dL^b3Pw*ِbpObDgc,'HC^ODЌ6A$el%XdtÌb;mqOO*DË&{1A1#4#Fx`V=r<"Ys F2 d[d3# "$wTnUM9>aoty0gx3{S/ſD!qAC;HMO53dkQg)c wAtp;PtsӋ#0r'eJJH~H.H( aឦ-GHj#=ʧaЮ!QO##_ݥf0Zfu)nOSŨ3 l:Iۦ0(qٴ4cd F?-i3`©e"Ϙ2Bq&ZJ}GEhG2陌>E(-OIGX~ľ_vAgd2` zИ-՞rlF7idgcdT~#B1 rkG1(1H꼋Z ĊiuAdjzDFeaD i5di6l0x^^hNF~)E?=_Nk\J=kyNIo/T- WAI=-4xFtD4H ~_W,U z׳kr.2>YKFu: Ј 񮑪.y>(g>`=@MC|q. Jx+6_19 F{6 nΧSlt6N`ߝc8Nw!ܤ - .x*~Tf2'^%9! !md3N&C&hB3P *dc|\)UAlP(.4V#)?zm4Jݻf{sV);Qln7㷛flxpjx8384D&GB!7PK[ۯomyf3ybhs,,ZL:o4B`9cuyo-2.1.0/data/pics/mbmBoss.xpm0000644000175000017500000062732011551335737013435 00000000000000/* XPM */ /* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "320 640 28 1", " c None", ". c #3b3b3b", "8 c #5d5d5d", "7 c #555555", "6 c #4c4c4c", "5 c #444444", "4 c #3b3b3b", "3 c #333333", "2 c #2a2a2a", "1 c #222222", "0 c #191919", "a c #ffaf7f", "b c #ffbf7f", "c c #ffcf7f", "d c #ffdf7f", "e c #ffef7f", "f c #ffff7f", "g c #ffff8f", "h c #ffff9f", "i c #ffffaf", "j c #ffffbf", "k c #ffffcf", "l c #ffffdf", "m c #ffffef", "n c #ffffff", "* c #ff0000", "+ c #00ff00", "- c #ffff00", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....6665............3222.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....6665............3222.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26......6665............3222......26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....25......6665............3222......16.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2004.....6665............3222.....0006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....20004....6665............3222....00006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2000004...6665............3222...0000006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", " 6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26666006..6665............3222..20066646.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2 ", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....646..6665............3222..266....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..6665............3222..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...6665............3222...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...6665............3222...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....6665............3222....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....6665............3222....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....6665............3222.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....6665............3222.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26......6665............3222......26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....25......6665............3222......16.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2004.....6665............3222.....0006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....20004....6665............3222....00006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2000004...6665............3222...0000006.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26666006..6665.....73.....3222..20066646.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....646..6665.....73.....3222..266....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..6665....7643....3222..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665....7643....3266666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666", "5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555...761543...3555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", ".........................................................................................................................................................5...761543...3.........................................................................................................................................................", ".........................................................................................................................................................5..761..543..3.........................................................................................................................................................", ".........................................................................................................................................................5..761..543..3.........................................................................................................................................................", ".........................................................................................................................................................5.761....543.3.........................................................................................................................................................", ".........................................................................................................................................................5.761....543.3.........................................................................................................................................................", ".........................................................................................................................................................5761......5433.........................................................................................................................................................", ".........................................................................................................................................................5761......5433.........................................................................................................................................................", ".........................................................................................................................................................761........543.........................................................................................................................................................", "333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333761........543333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333", "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222761..........54322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227761..........54332222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761............5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761.........*..5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.....7665*....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761....8....4..*.5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761....7......3*...5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761....6......2....5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.....6......2.....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761.....5......1.....5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761......34....00......5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761......32322100......5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761........210000........5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761.........1000.........5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761........................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761........................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..........................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..........................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761............................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761............................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..............................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..............................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761................................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761................................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.86666666666666666666666666666664.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617....................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7....................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617......................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7......................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617........................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7........................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..........................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..........................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617............................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7............................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..............................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..............................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617................................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7................................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..................................................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..................................................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617....................887777777776....................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..................88............66..................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617.................88................66.................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7...............88....................66...............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..............88........................66..............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7.............8............................5.............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617.............8..............................5.............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7............8................................5............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617............8..................................5............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7............8..................................5............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617............8....................................5............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7...........8......................................5...........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...........8........................................5...........35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7...........8........................................4...........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...........78........................................43...........35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..........78..........................................43..........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "2...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...2022...26...77617..........7-8..........................................4-3..........35433...26...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2206...2", "0222200022220002222000222200022220002222000222200022220002222000222200022220002222000222200022220002222000222200022226..7761.7..........7-8..........................................4-3..........3.5433..2422200042220004222000422200042220004222000422200042220004222000422200042220004222000422200042220004222000422200042220", "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006...77617..........7-8............................................4-3..........35433...200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "600066660006666000666600066660006666000666600066660006666000666600066660006666000666600066660006666000666600066660006..7761.7..........7-8............................................4-3..........3.5433..200066640006664000666400066640006664000666400066640006664000666400066640006664000666400066640006664000666400066640006", ".646....646....646....646....646....646....646....646....646....646....646....646....646....646....646....646....646...77617..........7-78............................................43-3..........35433...266....266....266....266....266....266....266....266....266....266....266....266....266....266....266....266....266.", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..........7-8...................*..........................4-3..........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...........778....................*7665.....................433...........35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..........7777.................*..8....4....................3333..........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...........7767..................*7......3...................3233...........35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..........77667...................6......2...................32233..........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...........766-7...................6......2...................3-223...........35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7...........66--7...................5......1...................3--22...........3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617............66--7...................34....00...................3--22............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7............66--7...................32322100...................3--22............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617.............66--7....................210000....................3--22.............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7.............66--7.....................1000.....................3--22.............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617..............66-67..............................................32-22..............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..............66667..............................................32222..............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...............66666..............................................22222...............35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7...............666556............................................211222...............3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617................665556............................................211122................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7................655-56............................................21-112................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617.................55--556..........................................211--11.................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7..................55--56..........................................21--11..................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617...................55--56..........................................21--11...................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7....................55-556........................................211-11....................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77617.....................55--56........................................21--11.....................35433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.7.....................55-556........................................211-11.....................3.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...77616.......................555545......................................101111.......................25433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.35......................5554445....................................1000111......................10.5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761.35.......................544-445..................................100-001.......................10.5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..335......................544--45..................................10--001......................100..5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..335.......................444--45................................10--000.......................100..5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761...3335.......................444--45..............................10--000.......................1000...5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761...3335........................444--45............................10--000........................1000...5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761....33335........................444-4454........................2200-000........................10000....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761....33335.........................444443344....................221100000.........................10000....5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.....333335.........................44443--344................221--11000.........................100000.....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761.....333335..........................4433----344............221----1100..........................100000.....5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761......3333335..........................43333----34433333333321----11111..........................1000000......5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761......3333335............................33333--3322------2211--11111............................1000000......5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761........3333335.............................333333322------221111111.............................1000000........5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761........3333335................................333322222222221111................................1000000........5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..........3333335.................................33222222222221.................................1000000..........5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..........3333335................................................................................1000000..........5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761............3333335..............................................................................1000000............5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761............3333335..............................................................................1000000............5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..............3333335............................................................................1000000..............5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..............3333335............................................................................1000000..............5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761................3333335..........................................................................1000000................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761................3333335..........................................................................1000000................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..................3333335........................................................................1000000..................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..................3333335........................................................................1000000..................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761....................3333335......................................................................1000000....................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761....................3333335......................................................................1000000....................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761......................3333335....................................................................1000000......................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761......................3333335....................................................................1000000......................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761........................3333335..................................................................1000000........................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761........................3333335.................................................................01000000........................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761..........................333333322222222222222222222222222222222222222222222222222222222222222220000000..........................5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761..........................333333100000000000000000000000000000000000000000000000000000000000000000000000..........................5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761.....7665...................3333310000000000000000000000000000000000000000000000000000000000000000000000...................7665.....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7761....8....4..................3333310000000000000000000000000000000000000000000000000000000000000000000000..................8....4....5433...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7761....7......3..................33331000000000076666666666666666666666666666666666666666665000000000000000..................7......3....5433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667761....6......2..................33331000000000802222222222222222222222222222222222222222224400000000000000..................6......2....543366666666666666666666666666666666666666666666666666666666666666666666666666666666666666666", "55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555761.....6......2...................33310000000080............................................44000000000000...................6......2.....54355555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", ".........................................................................................761.....5......1...................3331000000080..............................................4400000000000...................5......1.....543.........................................................................................", "........................................................................................761......34....00....................33100000080................................................44000000000....................34....0*......543........................................................................................", "........................................................................................761......32322100....................3310000080..................................................4400000000....................32322100*.....543........................................................................................", ".......................................................................................761........2*00*0......................31000080....................................................44000000......................2100*0..*.....543.......................................................................................", ".......................................................................................761.........*00*.......................3100080......................................................4400000.......................1000*........543.......................................................................................", "......................................................................................761..........*..*........................10080........................................................44000.............................*........543......................................................................................", "......................................................................................761..........*..*..........................80..........................................................44........................................543......................................................................................", ".....................................................................................761........................................80............................................................44........................................543.....................................................................................", "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333761.......................................80..............+................................+..............44.......................................5433333333333333333333333333333333333333333333333333333333333333333333333333333333333333", "222222222222222222222222222222222222222222222222222222222222222222222222222222222222761.......................................80................................................................44.......................................543222222222222222222222222222222222222222222222222222222222222222222222222222222222222", "222222222222222222222222222222222222222222222222222222222222222222222222222222222227761......................................80..................................................................44......................................543322222222222222222222222222222222222222222222222222222222222222222222222222222222222", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..77666666666666666666666666666666666666666680....................................................................44666666666666666666666666666666666666666433..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...7752222222222222222222222222222222222222280......................................................................4422222222222222222222222222222222222222033...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7752222222222222222222222222222222222222280........................................................................4422222222222222222222222222222222222222033..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...752222222222222222222222222222222222222280..........................................................................442222222222222222222222222222222222222203...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..775222222222222222222222222222222222222280........................+..........................+........................442222222222222222222222222222222222222033..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...75222222222222222222222222222222222222280..............................................................................44222222222222222222222222222222222222203...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..75222222222222222222222222222222222222280................................................................................44222222222222222222222222222222222222203..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...522222222222222226........22222222222280..................................................................................44222222222224........422222222222222220...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..7522222222222222276........2222222222280....................................................................................4422222222224........4322222222222222203..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...522222222222222276........2112222222280......................................................................................4422222222554........432222222222222220...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..5222222222222222776........211222222280........................................................................................442222222554........4332222222222222220..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.......80..................................+....................+..................................44.......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211......80............................................................................................44......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211......80..............................................................................................44......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.....80................................................................................................44.....554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.....72..................................................................................................63.....554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.....62..................................................................................................62.....554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211......62..................................................................................................62......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211......62.........................................+..............+.........................................62......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.......62..........+............................................................................+..........62.......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.......62..................................................................................................62.......554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211........62..................................................................................................62........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211........62.................+..............................................................+.................62........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.........62..................................................................................................62.........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.........62..................................................................................................62.........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..........62........................+...................+........+...................+........................62..........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..........62..................................................................................................62..........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...........62..................................................................................................62...........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...........62...............................+...........222222222222...........+...............................62...........554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211............62..........................................06666666666664..........................................62............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211............62.........................................26............26.........................................62............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.............62......................................+..26............26..+......................................62.............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.............62.........................................26....+..+....26.........................................62.............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..............62.........................................26............26.........................................62..............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..............62.........................................26..+......+..26.........................................62..............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...............62.........................................26............26.........................................62...............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...............62.........................................26............26.........................................62...............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211................62.........................................26..+......+..26.........................................62................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...............762.........................................26............26.........................................623...............554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211................662.........................................26....+..+....26.........................................622................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211................662......................................+..26............26..+......................................622................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.................662.........................................26............26.........................................622.................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211.................662..........................................42222222222228..........................................622.................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..................662...............................+...........666666666666...........+...............................622..................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26..................776........211..................662..................................................................................................622..................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...................662..................................................................................................622...................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26..................776........211...................662........................+...................+........+...................+........................622...................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26..................776........211....................662..................................................................................................622....................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26..................776........211....................862..................................................................................................624....................554........433..................26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26..................776........211....................8.62.................+..............................................................+.................62.4....................554........433..................26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26..................776........211...................8..62..................................................................................................62..4...................554........433..................26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26..................776........21866666666666666666668...62..................................................................................................62...66666666666666666666454........433..................26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26..................776........216.......................62..........+............................................................................+..........62.......................254........433..................26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26..................776........2116.......................62.........................................+..............+.........................................62.......................2554........433..................26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26..................776........2116.......................62..................................................................................................62.......................2554........433..................26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26..................776........211.6.......................62..................................................................................................62.......................2.554........433..................26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26..................776........211.6...+.....+.....+..+..+.54..................................................................................................80.+..+..+.....+.....+...2.554........433..................26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26..................776........211..6.......................344................................................................................................800.......................2..554........433..................26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26..................776........211..6.......................3244..............................................................................................8000.......................2..554........433..................26.....26.....26.....26.....26.....26.....26.....26", "022...2022...2022...2022...2022...2022...2022...26..................776........211...6.......................32244............................................................................................80000.......................2...554........433..................26...2206...2206...2206...2206...2206...2206...220", "00022220002222000222200022220002222000222200022226..................776........433...6.......................322244..................................+....................+..................................800000.......................2...776........433..................24222000422200042220004222000422200042220004222000", "000000000000000000000000000000000000000000000000002222222222226....776..........433..6.......................3222244........................................................................................8000000.......................2..776..........433....222222222222200000000000000000000000000000000000000000000000000", "666000666600066660006666000666600066660006666000666600066660006....776..........433..6.......................32222244......................................................................................80000000.......................2..776..........433....200066640006664000666400066640006664000666400066640006664000666", "...646....646....646....646....646....646....646....646....646....776............433.6...+.....+.....+..+..+.322222244....................................................................................800000000.+..+..+.....+.....+...2.776............433....266....266....266....266....266....266....266....266....266...", "....26.....26.....26.....26.....26.....26.....26.....26.....26....776............433.6.......................3222222244..................................................................................8000000000.......................2.776............433....26.....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26.....26....776..............4336.......................32222222244................................................................................80000000000.......................2776..............433....26.....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26.....26....776..............4336.......................322222222244..............................................................................800000000000.......................2776..............433....26.....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26.....26....776................436.......................3222222222244........................+..........................+........................8000000000000.......................276................433....26.....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26.....26....776................43422222222222222222224...32222222222244..........................................................................80000000000000...22222222222222222222076................433....26.....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26.....26....776........24........42000000000000000000024..322222222222244........................................................................800000000000000..00000000000000000000006........24........433....26.....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26.....26....776........24........420000000000000000000224.3222222222222244......................................................................8000000000000000.000000000000000000000006........24........433....26.....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26.....26....776........2154........433..................22632222222222222244....................................................................80000000000000000200..................776........2154........433....26.....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26.....26....776........2154........433...................26322222222222222244..................................................................80000000000000000020...................776........2154........433....26.....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26.....26....776........211554........433.................7663222222222222222244................................................................8000000000000000000223.................776........211554........433....26.....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26.....26....776........211554........433.................76632222222222222222244..............+................................+..............80000000000000000000223.................776........211554........433....26.....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26.....26....776........211..554........433...............7766322222222222222222244............................................................8000000000000000000002233...............776........211..554........433....26.....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26.....26....776........211..554........433...............77663222222222222222222244..........................................................80000000000000000000002233...............776........211..554........433....26.....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26.....26....776........211....554........433.............7766632222222222222222222244........................................................8000000000000000000000022433.............776........211....554........433....26.....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26.....26....776........211....554........433.............77666322222222222222222222244......................................................80000000000000000000000022433.............776........211....554........433....26.....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26.....26....776........211......554........433...........7761663222222222222222222222244....................................................8000000000000000000000000227433...........776........211......554........433....26.....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26.....26....776........211......554........433...........77616632222222222222222222222244..................................................80000000000000000000000000227433...........776........211......554........433....26.....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26.....26....776........211........554........433.........7761.65322222222222222222222222244................................................80000000000000000000000000012.7433.........776........211........554........433....26.....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26.....26....776........211........554........433.........7761.634222222222222222222222222244..............................................800000000000000000000000000002.7433.........776........211........554........433....26.....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26.....26....776........211..........554........433.......7761..6324222222222222222222222222244............................................8000000000000000000000000000002..7433.......776........211..........554........433....26.....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26.....26....776........211..........554........433.......7761..6322422222222222222222222222224466666666666666666666666666666666666666666680000000000000000000000000000002..7433.......776........211..........554........433....26.....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26.....26....776........211............554........433.....7761...6322242222222222222222222222222322222222222222222222222222222222222222222210000000000000000000000000000002...7433.....776........211............554........433....26.....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26.....26....776........211............554........433.....7761...6322224222222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002...7433.....776........211............554........433....26.....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26.....26....776........211..............554........433...7761....6322222422222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002....7433...776........211..............554........433....26.....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26.....26....776........211..............554........433...7761....6322222242222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002....7433...776........211..............554........433....26.....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26.....26....776........211................554........433.7761.....6322222224222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.....7433.776........211................554........433....26.....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26.....26....776........211................554........433.7761.....6322222222422222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.....7433.776........211................554........433....26.....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26.....26....776........211..................554........437761......6322222222242222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002......743376........211..................554........433....26.....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26.....26....776........211..................554........437761......6322222222224222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002......743376........211..................554........433....26.....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26.....26....776........211....................554........4761.......6322222222222422222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.......7436........211....................554........433....26.....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26.....26....776........211....................554........4761.......6322222222222242222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.......7436........211....................554........433....26.....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26.....26....776........211......................554.......761........6322222222222224222222222222222100000000000000000000000000000000000000000000000000000000000000000000000002........743.......211......................554........433....26.....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26.....26....776........211......................554.......761........6322222222222222422222222222222100000000000000000000000000000000000000000000000000000000000000000000000002........743.......211......................554........433....26.....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26.....26....776........211........................554.....761.........6322222222222222242222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.........743.....211........................554........433....26.....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26.....26....776........211........................554.....761.........6322222222222222224222222222222100000000000000000000000000000000000000000000000000000000000000000000000002.........743.....211........................554........433....26.....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26.....26....776........211..........................554...761..........6322222222222222222422222222222100000000000000000000000000000000000000000000000000000000000000000000000002..........743...211..........................554........433....26.....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26.....26....776........211..........................554...761..........6322222222222222222242222222222100000000000000000000000000000000000000000000000000000000000000000000000002..........743...211..........................554........433....26.....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26.....26....776........211............................554.761...........6322222222222222222224222222222100000000000000000000000000000000000000000000000000000000000000000000000002...........743.211............................554........433....26.....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26.....26....776........211............................554.761...........6322222222222222222222422222222100000000000000000000000000000000000000000000000000000000000000000000000002...........743.211............................554........433....26.....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26.....26....776........211..............................55761............6322222222222222222222242222222100000000000000000000000000000000000000000000000000000000000000000000000002............74311..............................554........433....26.....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26.....26....776........211..............................57761............6322222222222222222222224222222100000000000000000000000000000000000000000000000000000000000000000000000002............74331..............................554........433....26.....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26.....26....776........211...............................7761.............6322222222222222222222222422222100000000000000000000000000000000000000000000000000000000000000000000000002.............7433...............................554........433....26.....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26.....26....776........211...............................7643.............5322222222222222222222222242222100000000000000000000000000000000000000000000000000000000000000000000000001.............7223...............................554........433....26.....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26.....26....776........211...............................776543............3422222222222222222222222224222100000000000000000000000000000000000000000000000000000000000000000000000000............721233...............................554........433....26.....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26.....26....776........211...............................765543............3242222222222222222222222222422100000000000000000000000000000000000000000000000000000000000000000000000000............721123...............................554........433....26.....26.....26.....26.....26.....26...", "..26.....26.....26.....26.....26.....26....776........211...............................76555543...........3224222222222222222222222222242100000000000000000000000000000000000000000000000000000000000000000000000000...........72111123...............................554........433....26.....26.....26.....26.....26.....26..", "..26.....26.....26.....26.....26.....26....776........211.............7755..............76555543...........3222422222222222222222222222224100000000000000000000000000000000000000000000000000000000000000000000000000...........72111123..............7755.............554........433....26.....26.....26.....26.....26.....26..", ".26.....26.....26.....26.....26.....26....776........211............77....55...........7655555543..........3222242222222222222222222222222322222222222222222222222222222222222222222210000000000000000000000000000000..........7211111123...........77....55............554........433....26.....26.....26.....26.....26.....26.", ".26.....26.....26.....26.....26.....26....776........211..........77........55.........6555555543..........3222224222222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000..........7211111112.........77........55..........554........433....26.....26.....26.....26.....26.....26.", "26.....26.....26.....26.....26.....26....776........211.........87............54.......55555555543.........3222222422222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.........72111111111.......87............54.........554........433....26.....26.....26.....26.....26.....26", "26.....26.....26.....26.....26.....26....776........211.........7..............3.......55555555543.........3222222242222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.........72111111111.......7..............3.........554........433....26.....26.....26.....26.....26.....26", "6.....26.....26.....26.....26.....26....776........211.........7................3.......55555555543........3222222224222222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000........72111111111.......7................3.........554........433....26.....26.....26.....26.....26.....2", "6.....26.....26.....26.....26.....26....776........211.........7.......62.......3.......55555555543........3222222222422222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000........72111111111.......7.......62.......3.........554........433....26.....26.....26.....26.....26.....2", ".....26.....26.....26.....26.....26....776........211.........7........62........3.......55555555543.......3222222222242222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.......72111111111.......7........62........3.........554........433....26.....26.....26.....26.....26.....", ".....26.....26.....26.....26.....26....776........211.........7........62........3.......55555555543.......3222222222224222222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.......72111111111.......7........62........3.........554........433....26.....26.....26.....26.....26.....", "....26.....26.....26.....26.....26....776........211.........7.........62.........3.......55555555543......3222222222222422222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000......72111111111.......7.........62.........3.........554........433....26.....26.....26.....26.....26....", "....26.....26.....26.....26.....26....776........211.........7.....6666666666.....3.......55555555543......3222222222222242222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000......72111111111.......7.....6666666666.....3.........554........433....26.....26.....26.....26.....26....", "...26.....26.....26.....26.....26....776........211..........5.....2222622222.....1........55555555543.....3222222222222224222222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.....72111111111........5.....2222622222.....1..........554........433....26.....26.....26.....26.....26...", "...26.....26.....26.....26.....26....776........211..........5.........62.........1........55555555543.....3222222222222222422222222222222100000000000000000000000000000000000000000000000000000000000000000000000000.....72111111111........5.........62.........1..........554........433....26.....26.....26.....26.....26...", "666666666666666666666666666666666666676........211...........35........62........10.........55555555543....3222222222222222242222222222222100000000000000000000000000000200000000000000000000000000000000000000000000....72111111111.........35........62........10...........554........436666666666666666666666666666666666666", "555555555555555555555555555555555555556........211...........35........62........10.........55555555543....322222222222222222422222222222210000000000000................200000000000000000000000000000000000000000000....72111111111.........35........62........10...........554........455555555555555555555555555555555555555", "..............................................211............335.......62.......100..........55555555543...322222222222222222242222222222210000000000001....+......+....520000000000000000000000000000000000000000000...72111111111..........335.......62.......100............554..............................................", "..............................................211............335................100..........55555555543...322222222222222222224222222222210000000000001................520000000000000000000000000000000000000000000...72111111111..........335................100............554..............................................", ".............................................211.............3335..............1000...........55555555543..322222222222222222222422222222210000000000011................552000000000000000000000000000000000000000000..72111111111...........3335..............1000.............554.............................................", ".............................................211.............33343............10000...........55555555543...22222222222222222222242222222210000000000011....+......+....55200000000000000000000000000000000000000000...72111111111...........33343............10000.............554.............................................", "............................................211..............3332133........1100000............55555555543...2222122222222222222224222222210000000000111................5552000000000000000000000000000000000050000...72111111111............3332133........1100000..............554............................................", "............................................211..............333211133....1100007755...........55555555543....221112222222222222222422222210000000000111................555200000000000000000000000000000000055500....72111111111...........7755211133....110000000..............554............................................", "...........................................211...............3332111113311000077....55..........55555555543..721111.222222222222222242222210000000000011....+......+....552000000000000000000000000000000000.555543..72111111111..........77....5511113311000000000...............554...........................................", "...........................................211...............33321111111000077........55........55555555543..721111..22222222222222224222210000000000011................55200000000000000000000000000000000..555543..72111111111........77........55111100000000000...............554...........................................", "3333333333333333333333333333333336........211................333211111110087............54.......55555555543721111....2222222222222222422210000000000001................5200000000000000000000000000000000....55554372111111111.......87............541100000000000................554........4333333333333333333333333333333333", "2222222222222222222222222222222276........211.................3321111111007..............3.......55555555543721111.....222222222222222242210000000000001....+......+....520000000000000000000000000000000.....55554372111111111.......7..............3110000000000.................554........4322222222222222222222222222222222", "222222222222222222222222222222276........211..................332111111107................3.......555555555421111.......22222222222222224210000000000000................20000000000000000000000000000000.......555542111111111.......7................310000000000..................554........432222222222222222222222222222222", "...26.....26.....26.....26....776........211...................32111111107.......62.......3.......555555555421111........2222222222222222410000000000000................2000000000000000000000000000000........555542111111111.......7.......62.......31000000000...................554........433....26.....26.....26.....26...", "..26.....26.....26.....26....776........211....................3211111117........62........3.......5555555551111..........2222222222222222322222222222222222222222222222222222222222210000000000000000..........5555111111111.......7........62........3000000000....................554........433....26.....26.....26.....26..", "..26.....26.....26.....26....776........211.....................211111117........62........3.......5555555551111..........+22222222222222210000000000000000000000000000000000000000000000000000000000+..........5555111111111.......7........62........300000000.....................554........433....26.....26.....26.....26..", ".26.....26.....26.....26....776........211......................21111117.........62.........3.......55555555111.............222222222222221000000000000000000000000000000000000000000000000000000000.............55511111111.......7.........62.........30000000......................554........433....26.....26.....26.....26.", ".26.....26.....26.....26....776........211........................111117.....6666666666.....3.......55555555111..............2222222222222100000000000000000000000000000000000000000000000000000000..............55511111111.......7.....6666666666.....300000........................554........433....26.....26.....26.....26.", "26.....26.....26.....26....776........211...........................1115.....2222622222.....1........555555511...........+....22222222222210000000000000000000000000000000000000000000000000000000....+...........551111111........5.....2222622222.....1000...........................554........433....26.....26.....26.....26", "26.....26.....26.....26....776........211.............7755............15.........62.........1........555555511.................222222222221000000000000000000000000000000000000000000000000000000.................551111111........5.........62.........1.............7755.............554........433....26.....26.....26.....26", "6.....26.....26.....26....776........211............77....55...........35........62........10.........5555551...................222222222210000000000000005..........300000000000000000000000000...................5111111.........35........62........10...........77....55............554........433....26.....26.....26.....2", "6.....26.....26.....26....776........211..........77........55.........35........62........10.........5555551..........+......+..22222222210000000000000065..........32000000000000000000000000..+......+..........5111111.........35........62........10.........77........55..........554........433....26.....26.....26.....2", ".....26.....26.....26....776........211.........87............54.......335.......62.......100..........55555......................2222222210000000000000665..........3220000000000000000000000......................11111..........335.......62.......100.......87............54.........554........433....26.....26.....26.....", ".....26.....26.....26....776........211.........7..............3.......335................100..........55555.......................222222210000000000006665..........322200000000000000000000.......................31111..........335................100.......7..............3.........554........433....26.....26.....26.....", "....26.....26.....26....776........211.........7................3......3335..............1000...........5565..........+.....+......222222210000000000056665..........322210000000000000000000......+.....+..........3211...........3335..............1000......7................3.........554........433....26.....26.....26....", "....26.....26.....26....776........211.........7.......62.......3......33343............10000...........5665........................22222210000000000056665..........32221000000000000000000........................3221...........33343............11000......7.......62.......3.........554........433....26.....26.....26....", "...26.....26.....26....776........211.........7........62........3.....3332133........1100000...........6665........................22222210000000000056665..........32221000000000000000000........................3222...........3332133........1100000.....7........62........3.........554........433....26.....26.....26...", "...26.....26.....26....776........211.........7........62........3.....333211133....110000000...........6665...............+.........2222210000000000056665..........3222100000000000000000.........+...............3222...........333211133....110000000.....7........62........3.........554........433....26.....26.....26...", "..26.....26.....26....776........211.........7.........62.........3....3332111113311000000000...........6665.........................2222210000000000056665..........3222100000000000000000.........................3222...........3332111113311000000000....7.........62.........3.........554........433....26.....26.....26..", "..26.....26.....26....776........211.........7.....6666666666.....3....3332111111100000000000...........6665.........................7222210000000000056665..........3222100000000000000003.........................3222...........3332111111100000000000....7.....6666666666.....3.........554........433....26.....26.....26..", ".26.....26.....26....776........211..........5.....2222622222.....1....3332111111100000000000...........6665........................77222210000000000056665..........32221000000000000000033........................3222...........3332111111100000000000....5.....2222622222.....1..........554........433....26.....26.....26.", ".26.....26.....26....776........211..........5.........62.........1.....33211111110000000000............6665........................77722210000000000056665..........32221000000000000000333........................3222............33211111110000000000.....5.........62.........1..........554........433....26.....26.....26.", "26.....26.....26....776........211...........35........62........10.....33211111110000000000............6665.......................777622210000000000056665..........322210000000000000004333.......................3222............33211111110000000000.....35........62........10...........554........433....26.....26.....26", "26.....26.....26....776........211...........35........62........10......321111111000000000.............6665.....+.................777612210000000000056665..........322210000000000000074333.................+.....3222.............321111111000000000......35........62........10...........554........433....26.....26.....26", "6.....26.....26....776........211............335.......62.......100......321111111000000000.............6665......................77761..210000000000056665..........322210000000000000..74333......................3222.............321111111000000000......335.......62.......100............554........433....26.....26.....2", "6.....26.....26....776........211............335................100.......2111111100000000..............6665......................77761...10000000000056665..........32221000000000000...74333......................3222..............2111111100000000.......335................100............554........433....26.....26.....2", ".....26.....26....776........211.............3335..............1000.......2111111100000000..............7665..........+..........77761................56665..........32221................74333..........+..........3223..............2111111100000000.......3335..............1000.............554........433....26.....26.....", ".....26.....26....776........211.............33343............10000.........111111000000................7765.....................77761................56665..........32221................74333.....................3233................111111000000.........33343............10000.............554........433....26.....26.....", "....26.....26....776........211..............3332133........1100000...........11110000.................77775....................77761.................56665..........32221.................74333....................33333.................11110000...........3332133........1100000..............554........433....26.....26....", "....26.....26....776........211..............333211133....1100007755............1100...................77776....................77761.................56665..........32221.................74333....................43333...................1100............7755211133....110000000..............554........433....26.....26....", "...26.....26....776........211...............3332111113311000077....55................................77776....................77761..................56665..........32221..................74333....................43333................................77....5511113311000000000...............554........433....26.....26...", "...26.....26....776........211...............33321111111000077........55..............................77776....................77761..................56665..........32221..................74333....................43333..............................77........55111100000000000...............554........433....26.....26...", "..26.....26....776........211................333211111110087............54...........................77776....................77761...................56665..........32221...................74333....................43333...........................87............541100000000000................554........433....26.....26..", "..26.....26....776........211.................3321111111007..............3...........................77776....................77761...................56665..........32221...................74333....................43333...........................7..............3110000000000.................554........433....26.....26..", ".26.....26....776........211..................332111111107................3.........................77776....................77761......7665..........56665..........32221..........7665......74333....................43333.........................7................310000000000..................554........433....26.....26.", ".26.....26....776........211...................32111111107.......62.......3.........................77776..+.................77761.....8....4.........56665..........32221.........8....4.....74333.................+..43333.........................7.......62.......31000000000...................554........433....26.....26.", "26.....26....776........211....................3211111117........62........3.......................77776....................77761.....7......3........56665..........32221........7......3.....74333....................43333.......................7........62........3000000000....................554........433....26.....26", "26.....26....776........211.....................211111117........62........3.......................77776....................77761.....6......2........56665..........32221........6......2.....74333....................43333.......................7........62........300000000.....................554........433....26.....26", "6.....26....776........211......................21111117.........62.........3.....................77776.........+..........77761......6......2........56665..........32221........6......2......74333..........+.........43333.....................7.........62.........30000000......................554........433....26.....2", "6.....26....776........211........................111117.....6666666666.....3.....................77776....................77761......5......1........56665..........32221........5......1......74333....................43333.....................7.....6666666666.....300000........................554........433....26.....2", ".....26....776........211...........................1115.....2222622222.....1....................77776....................777663......*4....00........56665..........32221........34....0*......722333....................43333....................5.....2222622222.....1000...........................554........433....26.....", ".....26....776........211.............7755............15.........62.........1....................77776....................766543.....*32322100........56665..........32221........32322100*.....721223....................43333....................5.........62.........1.............7755.............554........433....26.....", "....26....776........211............77....55...........35........62........10...................77776............3333333336555543...*..2*0000.........56665..........32221.........2100*0..*...721111233333334.............43333...................35........62........10...........77....55............554........433....26....", "....26....776........211..........77........55.........35........62........10...................77776............2222222225555543......*1000..........56665..........32221..........1000*......7211111222222224............43333...................35........62........10.........77........55..........554........433....26....", "...26....776........211.........87............54.......335.......62.......100..................77776............211222222555555543....*...............56665..........32221...............*....721111111222222554............43333..................335.......62.......100.......87............54.........554........433....26...", "...26....776........211.........7..............3.......335................100..................77776............211122225555555543....................56665..........32221....................721111111122225554............43333..................335................100.......7..............3.........554........433....26...", "..26....776........211.........7................3......3335..............1000.................77776............21111....55555555543...................56665..........32221...................72111111111....55554............43333.................3335..............1000......7................3.........554........433....26..", "..26....776........211.........7.......62.......3......33343............10000.................77776..+.........21111....55555555543...................56665..........32221...................72111111111....55554.........+..43333.................33343............10000......7.......62.......3.........554........433....26..", ".26....776........211.........7........62........3.....3332133........1100000................77776............21111......55555555543..................56665..........32221..................72111111111......55554............43333................3332133........1100000.....7........62........3.........554........433....26.", ".26....776........211.........7........62........3.....333211133....110000000................77776............21111......55555555543..................56665..........32221..................72111111111......55554............43333................333211133....110000000.....7........62........3.........554........433....26.", "26....776........211.........7.........62.........3....3332111113311000000000...............77776.........+..21111........55555555543.................56665..........32221.................72111111111........55554..+.........43333...............3332111113311000000000....7.........62.........3.........554........433....26", "26....776........211.........7.....6666666666.....3....3332111111100000000000...............77776............21111........55555555543.................56665..........32221.................72111111111........55554............43333...............3332111111100000000000....7.....6666666666.....3.........554........433....26", "6....776........211..........5.....2222622222.....1....3332111111100000000000..............77776............21111..........55555555543................56665..........32221................72111111111..........55554............43333..............3332111111100000000000....5.....2222622222.....1..........554........433....2", "6....776........211..........5.........62.........1.....33211111110000000000...............77776............21111..........55555555543................56665..........32221................72111111111..........55554............43333...............33211111110000000000.....5.........62.........1..........554........433....2", "....776........211...........35........62........10.....33211111110000000000..............77776............21111............55555555543...............56665..........32221...............72111111111............55554............43333..............33211111110000000000.....35........62........10...........554........433....", "....776........211...........35........62........10......321111111000000000...............77776............21111............55555555543...............56665..........32221...............72111111111............55554............43333...............321111111000000000......35........62........10...........554........433....", "...776........211............335.......62.......100......321111111000000000..............77776............21111..............55555555543..............56665..........32221..............72111111111..............55554............43333..............321111111000000000......335.......62.......100............554........433...", "...776........211............335................100.......2111111100000000...............77776............21111..............55555555543..............56665..........32221..............72111111111..............55554............43333...............2111111100000000.......335................100............554........433...", "..776........211.............3335..............1000.......2111111100000000..............77776............21111................55555555543.............56665..........32221.............72111111111................55554............43333..............2111111100000000.......3335..............1000.............554........433..", "..776........211.............33343............10000.........111111000000................77776..+.........21111................55555555546666666666666656665..........32221666666666666662111111111................55554.........+..43333................111111000000.........33343............10000.............554........433..", ".776........211..............3332133........1100000...........11110000.................77776............21111..................5555555542222222222222256665..........3222122222222222222011111111..................55554............43333.................11110000...........3332133........1100000..............554........433.", ".776........211..............333211133....1100007755............1100...................77776............21111..................5555555542222222222222256665..........3222122222222222222011111111..................55554............43333...................1100............7755211133....110000000..............554........433.", "776........211...............3332111113311000077....55................................77776.........+..21111....................555555422222222222222256665..........322212222222222222220111111....................55554..+.........43333................................77....5511113311000000000...............554........433", "776........433...............33321111111000077........55..............................77776............21111....................555555422222222222222256665..........322212222222222222220111111....................55554............43333..............................77........55111100000000000...............776........433", "76..........433..............333211111110087............54...........................77776............21111......................55554222222222222222256665..........32221222222222222222201111......................55554............43333...........................87............541100000000000..............776..........43", "76..........433...............3321111111007..............3...........................77776............21111......................55554222222222222222256665..........32221222222222222222201111......................55554............43333...........................7..............3110000000000...............776..........43", "6............433..............332111111107................3.........................77776............21111........................5542222222222222222256665..........3222122222222222222222011........................55554............43333.........................7................310000000000..............776............4", "6............433...............32111111107.......62.......3.........................77776............21111........................5542222222222222222256665..........3222122222222222222222011........................55554............43333.........................7.......62.......31000000000...............776............4", "..............433..............3211111117........62........3.......................77776............21111..........................422222222222222222256665..........322212222222222222222220..........................55554............43333.......................7........62........3000000000..............776..............", "..............433...............211111117........62........3.......................77776............21111..........................422222222222222222256665..........322212222222222222222220..........................55554............43333.......................7........62........300000000...............776..............", "...............433..............21111117.........62.........3.....................77776............21111..............................................56665..........32221..............................................55554............43333.....................7.........62.........30000000..............776...............", "...............433................111117.....6666666666.....3.....................77776..+.........21111..............................................56665..........32221..............................................55554.........+..43333.....................7.....6666666666.....300000................776...............", "......24........433.................1115.....2222622222.....1....................77776............21111...............................................56665..........32221...............................................55554............43333....................5.....2222622222.....1000.................776........24......", "......24........433...................15.........62.........1....................77776............21111...............................................56665..........32221...............................................55554............43333....................5.........62.........10...................776........24......", ".....2154........433...................35........62........10...................77776.........+..21111................................................56665..........32221................................................55554..+.........43333...................35........62........10...................776........2154.....", ".....2154........433...................35........62........10...................77776............21111................................................56665..........32221................................................55554............43333...................35........62........10...................776........2154.....", "....211554........433..................335.......62.......100..................77776............21111.................................................56665..........32221.................................................55554............43333..................335.......62.......100..................776........211554....", "....211554........433..................335................100..................77776............21111.................................................56665..........32221.................................................55554............43333..................335................100..................776........211554....", "...211..554........433.................3335..............1000.................77776............21111..................................................56665..........32221..................................................55554............43333.................3335..............1000.................776........211..554...", "...211..554........433.................33343............10000.................77776............21111..................................................56665..........32221..................................................55554............43333.................33343............10000.................776........211..554...", "..211....554........433................3332133........1100000................77776............21111...................................................56665..........32221...................................................55554............43333................3332133........1100000................776........211....554..", "..211....554........433................333211133....110000000................77776............21111...................................................56665..........32221...................................................55554............43333................333211133....110000000................776........211....554..", ".211......554........433...............3332111113311000000000...............77776............21111....................................................56665..........32221....................................................55554............43333...............3332111113311000000000...............776........211......554.", ".211......554........433...............3332111111100000000000...............77776..+.........21111....................................................56665..........32221....................................................55554.........+..43333...............3332111111100000000000...............776........211......554.", "211........554........433..............3332111111100000000000..............77776............21111.....................................................56665..........32221.....................................................55554............43333..............3332111111100000000000..............776........211........554", "211........554........433...............33211111110000000000...............77776............21111.....................................................56665..........32221.....................................................55554............43333...............33211111110000000000...............776........211........554", "11..........554........433..............33211111110000000000..............77776.........+..21111......................................................56665..........32221......................................................55554..+.........43333..............33211111110000000000..............776........211..........55", "11..........554........433...............321111111000000000...............77776............21133......................................................56665..........32221......................................................77554............43333...............321111111000000000...............776........211..........55", "1............554........433..............321111111000000000..............77776............211.433.....................................................56665..........32221.....................................................776.554............43333..............321111111000000000..............776........211............5", "1............554........433...............2111111100000000...............77776............211.433.....................................................56665..........32221.....................................................776.554............43333...............2111111100000000...............776........211............5", "..............554........433..............2111111100000000..............77776............211...433....................................................56665..........32221....................................................776...554............43333..............2111111100000000..............776........211..............", "..............554........433................111111000000................77776............211...433....................................................56665..........32221....................................................776...554............43333................111111000000................776........211..............", "...............554........433.................11110000.................77776............211.....433...................................................56665..........32221...................................................776.....554............43333.................11110000.................776........211...............", "...............554........433...................1100...................77776............211.....433...................................................56665..........32221...................................................776.....554............43333...................1100...................776........211...............", "................554........433........................................77776............211.......433..................................................56665..........32221..................................................776.......554............43333........................................776........211................", "................554........433........................................77776..+.........211.......433..................................................56665..........32221..................................................776.......554.........+..43333........................................776........211................", ".................554........433......................................77776............2114........433.................................................56665..........32221.................................................776........2554............43333......................................776........211.................", ".................554........433......................................77776............2114........433.................................................56665..........32221.................................................776........2554............43333......................................776........211.................", "..................554........433....................................77776.........+..211154........433................................................56665..........32221................................................776........215554..+.........43333....................................776........211..................", "..................554........433....................................77776............211154........433................................................56665..........32221................................................776........215554............43333....................................776........211..................", "...................554........433..................................77776............21111554........433...............................................56665..........32221...............................................776........21155554............43333..................................776........211...................", "...................554........433..................................77776............21111554........433........86666666666666666666666666666666666666656665..........3222166666666666666666666666666666666666664.........776........21155554............43333..................................776........211...................", "....................554........433................................77776............21111..554........433......776122222222222222222222222222222222222256665..........322212222222222222222222222222222222222227433......776........211..55554............43333................................776........211....................", "....................554........433................................77776............21111..554........433......7761....................................56665..........32221....................................7433......776........211..55554............43333................................776........211....................", ".....................554........433..............................77776............21111....554........433....7761.....................................56665..........32221.....................................7433....776........211....55554............43333..............................776........211.....................", ".....................554........433..............................77776............21111....554........433....7761.....................................56665..........32221.....................................7433....776........211....55554............43333..............................776........211.....................", "......................554........433............................77776............21111......554........433..776666666666666665...766666666666665......56665..........32221......666666666666665...766666666666665433..776........211......55554............43333............................776........211......................", "......................554........433............................77776..+.........21111......554........433..7778222222222222243.82222222222222243.....56665..........32221.....78222222222222243.8222222222222224333..776........211......55554.........+..43333............................776........211......................", ".......................554........433..........................77776............21111........554........43377672..............480..............622....56665..........32221....672..............480..............62233776........211........55554............43333..........................776........211.......................", ".......................554........433..........................77776............21111........554........43377562...............0...............621....56665..........32221....562...............0...............62133776........211........55554............43333..........................776........211.......................", "........................554........433........................77776.........+..21111..........554........4376562...............................621....56665..........32221....562...............................6214376........211..........55554..+.........43333........................776........211........................", "........................554........433........................77776............21111..........554........4376562...............................621....56665..........32221....562...............................6214376........211..........55554............43333........................776........211........................", ".........................554........433......................77776............21111............554........761562...............................621....56665..........32221....562...............................621743........211............55554............43333......................776........211.........................", "..7755...................554........433......................77776............21111............554........761562...............................621....56665..........32221....562...............................621743........211............55554............43333......................776........211...................7755..", "77....55..................554........433....................77776............21111..............554......761.562...............................621....56665..........32221....562...............................621.743......211..............55554............43333....................776........211..................77....55", "........55................554........433....................77776............21111..............554......761.562...............................621....56665..........32221....562...............................621.743......211..............55554............43333....................776........211................77........", "..........54...............554........433..................77776............21111................554....761..562...............................621....56665..........32221....562...............................621..743....211................55554............43333..................776........211...............87..........", "...........3...............554........433..................77776............21111................554....761..562...............................621....56665..........32221....562...............................621..743....211................55554............43333..................776........211...............7...........", "............3...............554........433................77776............21111..................554..761...562...............................621....56665..........32221....562...............................621...743..211..................55554............43333................776........211...............7............", "...62.......3...............554........433................77776..+.........21111..................554..761...562...............................621....56665..........32221....562...............................621...743..211..................55554.........+..43333................776........211...............7.......62...", "...62........3...............554........433..............77776............21111....................554761....562...............................621....56665..........32221....562...............................621....743211....................55554............43333..............776........211...............7........62...", "...62........3...............554........433..............77776............21111....................554761....562...............................621....56665..........32221....562..............222..............621....743211....................55554............43333..............776........211...............7........62...", "...62.........3...............554........433............77776.........+..21111......................5761.....352...............................711....56665..........32221....352.............06664.............711.....7431......................55554..+.........43333............776........211...............7.........62...", "666666666.....3...............554........433............77776............21111......................7761.....6343.............................8002....56665..........32221....6343...........26...26...........8002.....7433......................55554............43333............776........211...............7.....666666666", "222622222.....1................554........433..........77776............21111......................7761......63762...........................62302....56665..........32221....63762..........26...26..........62302......7433......................55554............43333..........776........211................5.....222262222", "...62.........1................554........433..........77776............21111......................7761......5780.............................4431....56665..........32221....5780...........26...26...........4431......7433......................55554............43333..........776........211................5.........62...", "...62........10.................554........433........77776............21111......................7761.......672...............................632....56665..........32221....672.............42228.............632.......7433......................55554............43333........776........211.................35........62...", "...62........10.................554........433........77776............21111......................7761.......562...............................621....56665..........32221....562..............666..............621.......7433......................55554............43333........776........211.................35........62...", "...62.......100..................554........433......77776............21111......................7761........562...............................621....56665..........32221....562...............................621........7433......................55554............43333......776........211..................335.......62...", "............100..................554........433......77776............21111......................7761........562...............................6216666666666666666666666666666562...............................621........7433......................55554............43333......776........211..................335............", "...........1000...................554........433....77776............21111......................7761.........562...............................621............................562...............................621.........7433......................55554............43333....776........211...................3335...........", "..........10000...................554........433....77776..+.........21111......................7761.........562...............................621............................562...............................621.........7433......................55554.........+..43333....776........211...................33343..........", "........1100000....................554........433..77776............21111......................7761..........562...............................6212222222222222222222222222222562...............................621..........7433......................55554............43333..776........211....................3332133........", "33....1100007755...................554........433..77776............21111......................7761..........562...............................6210000000000000000000000000000562...............................621..........7433......................55554............43333..776........211...................7755211133....11", "113311000077....55..................554........43377776.........+..21111......................7761...........562...............................6210000000000000000000000000000562...............................621...........7433......................55554..+.........43333776........211..................77....551111331100", "1111000077........55................554........43377776............21111......................7752...........562...............................6210000000000000000000000000000562...............................621...........6333......................55554............43333776........211................77........5511110000", "11110087............54...............554........437776............21111......................77652...........562...............................621....56665..........32221....562...............................621...........63233......................55554............433376........211...............87............54110000", "1111007..............3...............554........437776............21111......................76652...........562...............................621....56665..........32221....562...............................621...........63223......................55554............433376........211...............7..............3110000", "111107................3...............554........4776............21111......................766652...........562...............6...............621....56665..........32221....562...............6...............621...........632223......................55554............4336........211...............7................310000", "111107.......62.......3...............554........4776............21111......................666652...........562..............844..............621....56665..........32221....562..............844..............621...........632222......................55554............4336........211...............7.......62.......310000", "11117........62........3...............554.......776............21111.......................666652...........5546666666666666704456666664..8666011....56665..........32221....5546664..8666666704456666666666666011...........632222.......................55554............433.......211...............7........62........30000", "11117........62........3...............554.......776............21111.......................666652...........3432222222222222103432222262..6222100666656665..........3222166663432262..6222222103432222222222222100...........632222.......................55554............433.......211...............7........62........30000", "1117.........62.........3...............554.....776............21111........................666652...........623222222222222210-232222262..6222102....56665..........32221....6232262..622222210-232222222222222102...........632222........................55554............433.....211...............7.........62.........3000", "1117.....6666666666.....3...............554.....776..+.........21111........................666652...........6-100000000000000-2-10000062..62000-2....56665..........32221....6-10062..62000000-2-100000000000000-2...........632222........................55554.........+..433.....211...............7.....6666666666.....3000", "1115.....2222622222.....1................554...776............21111.........................666652...........53--0----0----0--042--0---62..620--01222256665..........32221222253--062..62---0--042--0----0----0--01...........632222.........................55554............433...211................5.....2222622222.....1000", "..15.........62.........1................554...776............21111.........................666652...........3410000000000000002410000062..6200000000056665..........3222100003410062..6200000002410000000000000000...........632222.........................55554............433...211................5.........62.........1...", "...35........62........10.................554.776.........+..21111..........................666652...........3232222222222222102232222262..6222100000056665..........3222100003232262..6222222102232222222222222100...........632222..........................55554..+.........433.211.................35........62........10...", "...35........62........10.................554.776............21111..........................666652...........3210000000000000002210000062..6200000000056665..........3222100003210062..6200000002210000000000000000...........632222..........................55554............433.211.................35........62........10...", "...335.......62.......100..................55476............21111...........................666652...........621000000000000000-210000062..6200002....56665..........32221....6210062..620000000-210000000000000002...........632222...........................55554............43211..................335.......62.......100...", "...335................100..................77776............21111...........................666652...........6-66666666666666544476666662..66665-2....56665..........32221....6-66662..66666665444766666666666665-2...........632222...........................55554............43333..................335................100...", "...3335..............1000.................77776............21111............................666652...........5782222222222222434822222220..4222431....56665..........32221....5782220..4222222434822222222222222431...........632222............................55554............43333.................3335..............1000...", "...33343............10000.................77776............21111............................666652...........672..............480..............622....56665..........32221....672..............480..............622...........632222............................55554............43333.................33343............10000...", "...3332133........1100000................77776............21111.............................666652...........562...............0...............621....56665..........32221....562...............0...............621...........632222.............................55554............43333................3332133........1100000...", "...333211133....110000000................77776............21111.............................666652...........562...............................621....56665..........32221....562...............................621...........632222.............................55554............43333................333211133....110000000...", "...3332111113311000000000...............77776............21111..............................666652...........562...............................621....56665..........32221....562...............................621...........632222..............................55554............43333...............3332111113311000000000...", "...3332111111100000000000...............77776..+.........21111..............................666652...........562...............................621....56665..........32221....562...............................621...........632222..............................55554.........+..43333...............3332111111100000000000...", "...3332111111100000000000..............77776............21111...............................666652...........562...............................621....56665..........32221....562...............................621...........632222...............................55554............43333..............3332111111100000000000...", "....33211111110000000000...............77776............21111...............................666652...........562...............................621....56665..........32221....562...............................621...........632222...............................55554............43333...............33211111110000000000....", "....33211111110000000000..............77776.........+..21111................................666652...........562...............................621....56665..........32221....562...............................621...........632222................................55554..+.........43333..............33211111110000000000....", ".....321111111000000000...............77776............21111................................666652...........562...............................621....56665..........32221....562...............................621...........632222................................55554............43333...............321111111000000000.....", ".....321111111000000000..............77776............21111.................................666652...........562...............................621....56665..........32221....562...............................621...........632222.................................55554............43333..............321111111000000000.....", "......2111111100000000...............77776............21111.................................666652...........562...............................621....56665..........32221....562...............................621...........632222.................................55554............43333...............2111111100000000......", "......2111111100000000..............77776............21111..................................666652...........562...............................621....56665..........32221....562...............................621...........632222..................................55554............43333..............2111111100000000......", "........111111000000................77776............21111..................................666652...........562...............................621....56665..........32221....562...............................621...........632222..................................55554............43333................111111000000........", "..........11110000.................77776............21111...................................666652...........562..............222..............621....56665..........32221....562...............................621...........632222...................................55554............43333.................11110000..........", "............1100...................77776............21111...................................666652...........352.............06664.............711....56665..........32221....352...............................711...........632222...................................55554............43333...................1100............", "55................................77776............21111....................................666652...........6343...........26...26...........8002....56665..........32221....6343.............................8002...........632222....................................55554............43333................................77", "..55..............................77776..+.........21111....................................666652...........63762..........26...26..........62302....56665..........32221....63762...........................62302...........632222....................................55554.........+..43333..............................77..", "....54...........................77776............21111.....................................666652...........5780...........26...26...........4431....56665..........32221....5780.............................4431...........632222.....................................55554............43333...........................87....", ".....3...........................77776............21111.............7755....................666652...........672.............42228.............632....56665..........32221....672...............................632...........632222....................7755.............55554............43333...........................7.....", "......3.........................77776.........+..21111............77....55..................666652...........562..............666..............621....56665..........32221....562...............................621...........632222..................77....55............55554..+.........43333.........................7......", "......3.........................77776............21111..........77........55................666652...........562...............................621....56665..........32221....562...............................621...........632222................77........55..........55554............43333.........................7......", ".......3.......................77776............21111.........87............54..............666652...........562...............................6216666666666666666666666666666562...............................621...........632222..............87............54.........55554............43333.......................7.......", ".......3.......................77776............21111.........7..............3..............666652...........562...............................621............................562...............................621...........632222..............7..............3.........55554............43333.......................7.......", "........3.....................77776............21111.........7................3.............666652...........562...............................621............................562...............................621...........632222.............7................3.........55554............43333.....................7........", "666.....3.....................77776............21111.........7.......62.......3.............666652...........562...............................6212222222222222222222222222222562...............................621...........632222.............7.......62.......3.........55554............43333.....................7.....666", "222.....1....................77776............21111.........7........62........3............666652...........562...............................6210000000000000000000000000000562...............................621...........632222............7........62........3.........55554............43333....................5.....222", "........1....................77776............21111.........7........62........3............666652...........562...............................6210000000000000000000000000000562...............................621...........632222............7........62........3.........55554............43333....................5........", ".......10...................77776............21111.........7.........62.........3...........666652...........562...............................6210000000000000000000000000000562...............................621...........632222...........7.........62.........3.........55554............43333...................35.......", ".......10...................77776..+.........21111.........7.....6666666666.....3...........666652...........562...............................621....56665..........32221....562...............................621...........632222...........7.....6666666666.....3.........55554.........+..43333...................35.......", "......100..................77776............21111..........5.....2222622222.....1...........666652...........562...............................621....56665..........32221....562...............................621...........632222...........5.....2222622222.....1..........55554............43333..................335......", "......100..................77776............21111..........5.........62.........1...........666652...........562...............6...............621....56665..........32221....562...............6...............621...........632222...........5.........62.........1..........55554............43333..................335......", ".....1000.................77776.........+..21111...........35........62........10...........666652...........562..............844..............621....56665..........32221....562..............844..............621...........632222...........35........62........10...........55554..+.........43333.................3335.....", "....10000.................77776............21111...........35........62........10...........666652...........5546666666666666704456666666666666011....56665..........32221....5546666666666666704456666666666666011...........632222...........35........62........10...........55554............43333.................33343....", "..1100000................77776............21111............335.......62.......100...........666652...........3432222222222222103432222222222222100666656665..........3222166663432222222222222103432222222222222100...........632222...........335.......62.......100............55554............43333................3332133..", "110000000................77776............21111............335................100...........666652...........623222222222222210-232222222222222102....56665..........32221....623222222222222210-232222222222222102...........632222...........335................100............55554............43333................333211133", "000000000...............77776............21111.............3335..............1000...........666652...........6-100000000000000-2-100000000000000-2....56665..........32221....6-100000000000000-2-100000000000000-2...........632222...........3335..............1000.............55554............43333...............333211111", "000000000...............77776............21111.............33343............10000...........666652...........53--0----0----0--042--0----0----0--01222256665..........32221222253--0----0----0--042--0----0----0--01...........632222...........33343............10000.............55554............43333...............333211111", "000000000..............77776............21111..............3332133........1100000...........666652...........3410000000000000002410000000000000000000056665..........3222100003410000000000000002410000000000000000...........632222...........3332133........1100000..............55554............43333..............333211111", "00000000...............77776............21111..............333211133....110000000...........666652...........3232222222222222102232222222222222100000056665..........3222100003232222222222222102232222222222222100...........632222...........333211133....110000000..............55554............43333...............33211111", "00000000..............77776............21111...............3332111113311000000000...........666652...........3210000000000000002210000000000000000000056665..........3222100003210000000000000002210000000000000000...........632222...........3332111113311000000000...............55554............43333..............33211111", "0000000...............77776..+.........21111...............3332111111100000000000...........666652...........621000000000000000-210000000000000002....56665..........32221....621000000000000000-210000000000000002...........632222...........3332111111100000000000...............55554.........+..43333...............3211111", "0000000..............77776............21111................3332111111100000000000...........666652...........6-100000000000000-2-100000000000000-2....56665..........32221....6-100000000000000-2-100000000000000-2...........632222...........3332111111100000000000................55554............43333..............3211111", "000000...............77776............21111.................33211111110000000000............666652...........53--0----0----0--042--0----0----0--01....56665..........32221....53--0----0----0--042--0----0----0--01...........632222............33211111110000000000.................55554............43333...............211111", "000000..............77776.........+..21111..................33211111110000000000............666652...........3410000000000000002410000000000000000....56665..........32221....3410000000000000002410000000000000000...........632222............33211111110000000000..................55554..+.........43333..............211111", "0000................77776............21111...................321111111000000000.............666652...........3232222222222222102232222222222222100....56665..........32221....3232222222222222102232222222222222100...........632222.............321111111000000000...................55554............43333................1111", "00.................77776............21111....................321111111000000000.............666652...........3210000000000000002210000000000000000....56665..........32221....3210000000000000002210000000000000000...........632222.............321111111000000000....................55554............43333.................11", "...................77776............21111.....................2111111100000000..............666652...........621000000000000000-210000000000000002....56665..........32221....621000000000000000-210000000000000002...........732222..............2111111100000000.....................55554............43333...................", "..................77776............21111......................2111111100000000..............6666643..........6-100000000000000-2-100000000000000-2....56665..........32221....6-100000000000000-2-100000000000000-2..........7222222..............2111111100000000......................55554............43333..................", "..................77776............21111........................111111000000................6666643..........53--0----0----0--042--0----0----0--01....56665..........32221....53--0----0----0--042--0----0----0--01..........7222222................111111000000........................55554............43333..................", ".................77776............21111...........................11110000..................66665543.........3410000000000000002410000000000000000....56665..........32221....3410000000000000002410000000000000000.........72112222..................11110000...........................55554............43333.................", ".................77776............21111.............7755............1100....................66665543.........3232222222222222102232222222222222100....56665..........32221....3232222222222222102232222222222222100.........72112222....................1100............7755.............55554............43333.................", "................77776............21111............77....55..................................666555543........3210000000000000002210000000000000000....56665..........32221....3210000000000000002210000000000000000........721111222..................................77....55............55554............43333................", "................77776..+.........21111..........77........55................................666555543........621000000000000000-210000000000000002....56665..........32221....621000000000000000-210000000000000002........721111222................................77........55..........55554.........+..43333................", "...............77776............21111.........87............54..............................6655555543.......6-100000000000000-2-100000000000000-2....56665..........32221....6-100000000000000-2-100000000000000-2.......7211111122..............................87............54.........55554............43333...............", "...............77776............21111.........7..............3..............................6655555543.......53--0----0----0--042--766666666666665....56665..........32221....766666666666665--042--0----0----0--01.......7211111122..............................7..............3.........55554............43333...............", "..............77776.........+..21111.........7................3.............................65555555543......3410000000000000002418...............4...56665..........32221...8...............4002410000000000000000......72111111112.............................7................3.........55554..+.........43333..............", "..............77776............21111.........7.......62.......3.............................65555555543......323222222222222210227.................3..56665..........32221..7.................302232222222222222100......72111111112.............................7.......62.......3.........55554............43333..............", ".............77776............21111.........7........62........3.............................55555555543.....321000000000000000226.................2..56665..........32221..6.................202210000000000000000.....72111111111.............................7........62........3.........55554............43333.............", ".............77776............21111.........7........62........3.............................55555555543......21000000000000000.26.................2..56665..........32221..6.................20.21000000000000000......72111111111.............................7........62........3.........55554............43333.............", "............77776............21111.........7.........62.........3.............................55555555543......100000000000000...6.................2..56665..........32221..6.................2...100000000000000......72111111111.............................7.........62.........3.........55554............43333............", "............77776............21111.........7.....6666666666.....3.............................55555555543........................6.................2..56665..........32221..6.................2........................72111111111.............................7.....6666666666.....3.........55554............43333............", "...........77776............21111..........5.....2222622222.....1..............................55555555543.......................6.................2..56665..........32221..6.................2.......................72111111111..............................5.....2222622222.....1..........55554............43333...........", "...........77776............21111..........5.........62.........1..............................55555555543.......................6.................2..56665..........32221..6.................2.......................72111111111..............................5.........62.........1..........55554............43333...........", "..........77776............21111...........35........62........10...............................55555555543......................6.................2..56665..........32221..6.................2......................72111111111...............................35........62........10...........55554............43333..........", "..........77776..+.........21111...........35........62........10...............................55555555543......................6.................2..56665..........32221..6.................2......................72111111111...............................35........62........10...........55554.........+..43333..........", ".........77776............21111............335.......62.......100................................55555555543.....................6.................2..56665..........32221..6.................2.....................72111111111................................335.......62.......100............55554............43333.........", ".........77776............21111............335................100................................55555555543.....................6.................2..56665..........32221..6.................2.....................72111111111................................335................100............55554............43333.........", "........77776.........+..21111.............3335..............1000.................................55555555543....................6.................2..56665..........32221..6.................2....................72111111111.................................3335..............1000.............55554..+.........43333........", "........77776............21111.............33343............10000.................................55555555543....................6.................2..56665..........32221..6.................2....................72111111111.................................33343............10000.............55554............43333........", ".......77776............21111..............3332133........1100000..................................55555555543...................6.................2..56665..........32221..6.................2...................72111111111..................................3332133........1100000..............55554............43333.......", ".......77776............21111..............333211133....110000000..................................55555555543...................6.................2..56665..........32221..6.................2...................72111111111..................................333211133....110000000..............55554............43333.......", "......77776............21111...............3332111113311000000000...................................55555555543..................6.................2..56665..........32221..6.................2..................72111111111...................................3332111113311000000000...............55554............43333......", "......77776............21133...............3332111111100000000000...................................77555555543..........7665....6.................2..56665..........32221..6.................2....7665..........72111111133...................................3332111111100000000000...............77554............43333......", ".....77776............211.433..............3332111111100000000000..................................776.555555543........8....4...6.................2..56665..........32221..6.................2...8....4........721111111.433..................................3332111111100000000000..............776.554............43333.....", ".....77776............211.433...............33211111110000000000...................................776.555555543.......7......3..6.................2..56665..........32221..6.................2..7......3.......721111111.433...................................33211111110000000000...............776.554............43333.....", "....77776............211...433..............33211111110000000000..................................776...555555543..****6......2..6.................2..56665..........32221..6.................2..6......2......721111111...433..................................33211111110000000000..............776...554............43333....", "....77776..+.........211...433...............321111111000000000...................................776...555555543......6......2..6.................26656665..........32221666.................2..6......2......721111111...433...................................321111111000000000...............776...554.........+..43333....", "...77776............211.....433..............321111111000000000..................................776.....555555543.....5......1..6.................2..56665..........32221..6.................2..5......1.....721111111.....433..................................321111111000000000..............776.....554............43333...", "...77776............211.....433...............2111111100000000...................................776.....555555543.****34....00..6.................2..56665..........32221..6.................2..34....00.....721111111.....433...................................2111111100000000...............776.....554............43333...", "..77776.........+..211.......433..............2111111100000000..................................776.......555555543....32322100..6.................22256665..........32221226.................2..32322100....721111111.......433..................................2111111100000000..............776.......554..+.........43333..", "..77776............211.......433................111111000000....................................776.......555555543.....210000...6.................20056665..........32221006.................2...2*00*0.....721111111.......433....................................111111000000................776.......554............43333..", ".77776............2114........433.................11110000.....................................776........2555555543.....1000....6.................20056665..........32221006.................2....*00*.....7211111114........433.....................................11110000.................776........2554............43333.", ".77776............2114........433...................1100.......................................776........2555555543.............6.................20056665..........32221006.................2....*..*.....7211111114........433.......................................1100...................776........2554............43333.", "77776............211154........433............................................................776........215555555543............6.................2..56665..........32221..6.................2....*..*....721111111154........433............................................................776........215554............43333", "77776............211154........433............................................................776........215555555543............6.................2..56665..........32221..6.................2............721111111154........433............................................................776........215554............43333", "7776............21111554........433..........................................................776........21155555555543...........6.................2..56665..........32221..6.................2...........72111111111554........433..........................................................776........21155554............4333", "7776............21111554........433..........................................................776........21155555555543...........6.................2..56665..........32221..6.................2...........72111111111554........433..........................................................776........21155554............4333", "776............21111..554........433........................................................776........211..55555555543..........6.................2..56665..........32221..6.................2..........72111111111..554........433........................................................776........211..55554............433", "776..+.........21111..554........433............75555555555555555555555555555555............776........211..55555555543..........5.................1..56665..........32221..5.................1..........72111111111..554........433............75555555555555555555555555555555............776........211..55554.........+..433", "76............21111....554........433..........7766666666666666666666666666666653..........776........211....55555555543.........34...............00..56665..........32221..34...............00.........72111111111....554........433..........7766666666666666666666666666666653..........776........211....55554............43", "76............21111....554........433.........787666666666666666666666666666666523.........776........211....55555555543.........3232222222222222100..56665..........32221..3232222222222222100.........72111111111....554........433.........787666666666666666666666666666666523.........776........211....55554............43", "6.........+..21111......554........433.......78775555555555555555555555555555555343.......776........211......55555555543........3210000000000000000..56665..........32221..3210000000000000000........72111111111......554........433.......78775555555555555555555555555555555343.......776........211......55554..+.........4", "6............21111......554........433.......7765..............................3233.......776........211......55555555543........3210-----0-----0000..56665..........32221..3210-----0-----0000........72111111111......554........433.......7765..............................3233.......776........211......55554............4", "............21111........554........433......5665..............................3221......776........211........55555555543.......3210-----0-----0000..56665..........32221..3210-----0-----0000.......72111111111........554........433......5665..............................3221......776........211........55554............", "............21111........554........433......5665.............1223.............3221......776........211........55555555543.......3210000000000000000..56665..........32221..3210000000000000000.......72111111111........554........433......5665.............1223.............3221......776........211........55554............", "...........21111..........554........433.....5665.....66.....0....4.....66.....3221.....776........211..........55555555543......3210000000000000000..56665..........32221..3210000000000000000......72111111111..........554........433.....5665.....66.....0....4.....66.....3221.....776........211..........55554...........", "...........21111..........554........433.....5665....6..2...1......5...6..2....3221.....776........211..........55555555543......3210000000000000000..56665..........32221..3210000000000000000......72111111111..........554........433.....5665....6..2...1......5...6..2....3221.....776........211..........55554...........", "..........21111............554........433....5665....6..2...2......6...6..2....3221....776........211............55555555543.....3210000000000000000..56665..........32221..3210000000000000000.....72111111111............554........433....5665....6..2...2......6...6..2....3221....776........211............55554..........", "..........21111............554........433....5665....6..2...2......6...6..2....3221....776........211............55555555543.....3210000000000000000..56665..........32221..3210000000000000000.....72111111111............554........433....5665....6..2...2......6...6..2....3221....776........211............55554..........", ".........21111..............554........433...5665....6..2...2......6...6..2....3221...776........211..............55555555543....3210000000000000000..56665..........32221..3210000000000000000....72111111111..............554........433...5665....6..2...2......6...6..2....3221...776........211..............55554.........", ".........21111..............554........433...5665....6..2...2......6...6..2....3221...776........211..............55555555543....3210000000000000000..56665..........32221..3210000000000000000....72111111111..............554........433...5665....6..2...2......6...6..2....3221...776........211..............55554.........", "........21111................554........433..5665....6..2...2......6...6..2....3221..776........211................55555555543....21000000000000000...56665..........32221...21000000000000000....72111111111................554........433..5665....6..2...2......6...6..2....3221..776........211................55554........", "........21111................554........433..5665....6..2...2......6...6..2....3221..776........211................55555555543.....100000000000000....56665..........32221....100000000000000.....72111111111................554........433..5665....6..2...2......6...6..2....3221..776........211................55554........", "....+..21111..................554........433.5665....6..2...2......6...6..2....3221.776........211..................55555555543.......................56665..........32221.......................72111111111..................554........433.5665....6..2...2......6...6..2....3221.776........211..................55554..+....", ".......21111..................554........433.5665....6..2...2......6...6..2....3221.776........211..................55555555543.......................56665..........32221.......................72111111111..................554........433.5665....6..2...2......6...6..2....3221.776........211..................55554.......", "......21111....................554........4335665....6..2...2......6...6..2....3221776........211....................55555555543......................56665..........32221......................72111111111....................554........4335665....6..2...2......6...6..2....3221776........211....................55554......", "......21111....................554........4335665....6..2...2......6...6..2....3221776........211....................55555555543......................56665..........32221......................72111111111....................554........4335665....6..2...2......6...6..2....3221776........211....................55554......", ".....21111......................554........435665....6..2...2......6...6..2....322176........211......................55555555543.....................56665..........32221.....................72111111111......................554........435665....6..2...2......6...6..2....322176........211......................55554.....", ".....21111......................554........435665....6..2...2......6...6..2....322176........211......................55555555543.....................56665..........32221.....................72111111111......................554........435665....6..2...2......6...6..2....322176........211......................55554.....", "....21111........................554........45665....6..2...2......6...6..2....32216........211........................55555555543....................56665..........32221....................72111111111........................554........45665....6..2...2......6...6..2....32216........211........................55554....", "....21111........................554........45665....6..2...2......6...6..2....32216........211........................55555555543....................56665..........32221....................72111111111........................554........45665....6..2...2......6...6..2....32216........211........................55554....", "...21111..........................554........5665....6..2...2......6...6..2....3221........211..........................55555555543...................56665..........32221...................72111111111..........................554........5665....6..2...2......6...6..2....3221........211..........................55554...", "...21111..........................554........5665....6..2...2......6...6..2....3221........211..........................55555555543...................56665..........32221...................72111111111..........................554........5665....6..2...2......6...6..2....3221........211..........................55554...", "..21111............................554.......5665.....22....2......6....22.....3221.......211............................55555555543..................56665..........32221..................72111111111............................554.......5665.....22....2......6....22.....3221.......211............................55554..", "..21111............................554.......5665...........2......6...........3221.......211............................55555555543..................56665..........32221..................72111111111............................554.......5665...........2......6...........3221.......211............................55554..", ".21111..............................554......5665...........2......6...........3221......211..............................55555555543.................56665..........32221.................72111111111..............................554......5665...........2......6...........3221......211..............................55554.", ".21111..............................554......5665...........2......6...........3221......211..............................55555555543.................56665..........32221.................72111111111..............................554......5665...........2......6...........3221......211..............................55554.", "21111................................554.....5665...........2......6...........3221.....211................................55555555543................56665..........32221................72111111111................................554.....5665...........2......6...........3221.....211................................55554", "21111................................554.....5665.....66....2......6....66.....3221.....211................................55555555543................56665..........32221................72111111111................................554.....5665.....66....2......6....66.....3221.....211................................55554", "1111..................................554....5665....6..2...2......5...6..2....3221....211..................................55555555543...............56665..........32221...............72111111111..................................554....5665....6..2...2......6...6..2....3221....211..................................5555", "1111..................................554....5665....6..2...2......6...6..2....3221....211..................................55555555543...............56665..........32221...............72111111111..................................554....5665....6..2...2......6...6..2....3221....211..................................5555", "111....................................554...5665....6..2...2......6...6..2....3221...211....................................55555555543..............56665..........32221..............72111111111....................................554...5665....6..2...2......6...6..2....3221...211....................................555", "111....................................554...5665....6..2...2......6...6..2....3221...211....................................55555555543..............56665..........32221..............72111111111....................................554...5665....6..2...2......6...6..2....3221...211....................................555", "11......................................554..5665....6..2...2......6...6..2....3221..211......................................55555555543.............56665..........32221.............72111111111......................................554..5665....6..2...2......6...6..2....3221..211......................................55", "11.................7665.................554..5665....6..2...2......6...6..2....3221..211.................7665.................55555555543.............56665..........32221.............72111111111.................7665.................554..5665....6..2...2......6...6..2....3221..211.................7665.................55", "1.................8....4.................554.5665....6..2...2......6...6..2....3221.211.................8....4.................55555555543............56664333333333322221............72111111111.................8....4.................554.5665....6..2...2......6...6..2....3221.211.................8....4.................5", "1................7......3................554.5665....6..2...2......6...6..2....3221.211................7......3................55555555543............56653222222222211221............72111111111................7......3................554.5665....6..2...2......6...6..2....3221.211................7......3................5", ".................6......2.................5545665....6..2...2......6...6..2....3221211.................6......2.................55555555543...........56543222222222210121...........72111111111.................6......2.................5545665....6..2...2......6...6..2....3221211.................6......2.................", ".................6......2.................5545665....6..2...2......6...6..2....3221211.................6......2.................55555555543...........55443222222222210011...........72111111111.................6......2.................5545665....6..2...2......6...6..2....3221211.................6......2.................", ".................5......1..................555665....6..2...2......6...6..2....322111..................5......1..................55555555543..........54443222222222210001..........72111111111..................5......1..................555665....6..2...2......6...6..2....322111..................5......1.................", ".................*4....00..................555665....6..2...2......6...6..2....322111..................34....00..................55555555543..........33443222222222210000..........72111111111..................*4....00..................555665....6..2...2......6...6..2....322111..................34....0*.................", "................*32322100...................55665....6..2...2......6...6..2....32211...................32322100...................55555555543.........32343222222222210000.........72111111111..................*32322100...................55665....6..2...2......6...6..2....32211...................32322100*................", "...............*.32*00000...................55665....6..2...2......6...6..2....32211...................32*00*00...................55555555543.........32233222222222210000.........72111111111.................*.32*00000...................55665....6..2...2......6...6..2....32211...................32100*00.*...............", ".................3*100000....................5665....6..2...2......6...6..2....3221....................32*00*00....................55555555543........32223111111111110000........72111111111....................3*100000....................5665....6..2...2......6...6..2....3221....................321000*0.................", ".................*2100000....................5665....6..2...2......6...6..2....3221....................32*00*00....................55555555543........32221000000000000000........72111111111....................*2100000....................5665....6..2...2......6...6..2....3221....................3210000*.................", "..................210000.....................5665....6..2...2......6...6..2....3221.....................2*00*0......................55555555543.......32221000000000000000.......72111111111......................210000.....................5665....6..2...2......6...6..2....3221.....................210000..................", "...................1000......................5665.....22....2......6....22.....3221......................1000.......................55555555543.......32221000000000000000.......72111111111.......................1000......................5665.....22....2......6....22.....3221......................1000...................", ".............................................5665...........2......6...........3221..................................................55555555543......32221000000000000000......72111111111..................................................5665...........2......6...........3221.............................................", ".............................................5665...........2......6...........3221..................................................55555555543......32221000000000000000......72111111111..................................................5665...........2......6...........3221.............................................", ".............................................5665...........2......6...........3221...................................................55555555543.....32221000000000000000.....72111111111...................................................5665...........2......6...........3221.............................................", ".............................................5665...........2......6...........3221...................................................55555555543.....32221000000000000000.....72111111111...................................................5665...........2......6...........3221.............................................", ".............................................5665.....66....2......6....66.....3221....................................................55555555543.....222100000000000000.....72111111111....................................................5665.....66....2......6....66.....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221....................................................55555555543......2210000000000000......72111111111....................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.....................................................55555555543......21000000000000......72111111111.....................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.....................................................55555555543.......100000000000.......72111111111.....................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221......................................................55555555543........................72111111111......................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221......................................................55555555543........................72111111111......................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.......................................................55555555543......................72111111111.......................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.......................................................55555555543......................72111111111.......................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221........................................................55555555543........7665........72111111111........................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221........................................................55555555543.......8....4.......72111111111........................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.........................................................55555555543.....7......3.....72111111111.........................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.........................................................55555555543.....6......2.....72111111111.........................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221..........................................................55555555543....6......2....72111111111..........................................................5665....6..2...2......6...6..2....3221.............................................", "6666666666666666666666666666666666666666666665665....6..2...2......6...6..2....3221666666666666666666666666666666666666666666666666666666666666555555543....5......1....7211111116666666666666666666666666666666666666666666666666666666666665665....6..2...2......6...6..2....3221666666666666666666666666666666666666666666666", "5555555555555555555555555555555555555555555555665....6..2...2......6...6..2....32215555555555555555555555555555555555555555555555555555555555555555555543...34....0*...72111111115555555555555555555555555555555555555555555555555555555555555665....6..2...2......6...6..2....3221555555555555555555555555555555555555555555555", ".............................................5665....6..2...2......6...6..2....3221.............................................................555555543...32322100*..721111111.............................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...2......6...6..2....3221.............................................................5555555543...2100*0..*7211111111.............................................................5665....6..2...2......6...6..2....3221.............................................", ".............................................5665....6..2...3......7...6..2....3221..............................................................555555543....1000*...721111111..............................................................5665....6..2...3......7...6..2....3221.............................................", ".............................................5665.....22.....4....8.....22.....3221..............................................................5555555543........*.7211111111..............................................................5665.....22.....4....8.....22.....3221.............................................", ".............................................5665.............5667.............3221...............................................................5555555466666666666621111111...............................................................5665.............5667.............3221.............................................", ".............................................5665..............................3221...............................................................5555555422222222222201111111...............................................................5665..............................3221.............................................", ".............................................5665..............................3221................................................................55555542222222222220111111................................................................5665..............................3221.............................................", "33333333333333333333333333333333333333333333356642222222222222222222222222222222221333333333333333333333333333333333333333333333333333333333333333355555422222222222222011111333333333333333333333333333333333333333333333333333333333333333356642222222222222222222222222222222221333333333333333333333333333333333333333333333", "22222222222222222222222222222222222222222222256400000000000000000000000000000000121222222222222222222222222222222222222222222222222222222222222222225555422222222222222011112222222222222222222222222222222222222222222222222222222222222222256400000000000000000000000000000000121222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222254000008888880000000000008888880000011222222222222222222222222222222222222222222222222222222222222222225554222222222222222201112222222222222222222222222222222222222222222222222222222222222222254000008888880000000000008888880000011222222222222222222222222222222222222222222222", ".............................................2000088nnnnnn880000000088nnnnnn8800001................................................................55554222222222222222201111................................................................2000088nnnnnn880000000088nnnnnn8800001.............................................", ".............................................20008llmmmmmmll80000008llmmmmmmll80000.................................................................554222222222222222222011.................................................................20008llmmmmmmll80000008llmmmmmmll80000.............................................", ".............................................2008jkkllllllkkj800008jkkllllllkkj8000.................................................................554222222222222222222011.................................................................2008jkkllllllkkj800008jkkllllllkkj8000.............................................", "66......66666666666666666....................2008ijjkkkkkkjji800008ijjkkkkkkjji8000....................66666666666666666......66666666666666666......4222222222222222222220......66666666666666666......66666666666666666....................2008ijjkkkkkkjji800008ijjkkkkkkjji8000....................66666666666666666......66", "..2....6.................2...................208fhiijjjjjjiihf8008fhiijjjjjjiihf800...................6.................2....6.................2.....4222222222222222222220.....6.................2....6.................2...................208fhiijjjjjjiihf8008fhiijjjjjjiihf800...................6.................2....6..", "..2....6.................2.....23............208eghhiiiiiihhge8008eghhiiiiiihhge800............23.....6.................2....6.................2................................6.................2....6.................2.....23............208eghhiiiiiihhge8008eghhiiiiiihhge800............23.....6.................2....6..", "22......22222222222222222.....2023...........208dfgghhhhhhggfd8008dfgghhhhhhggfd800...........2023.....22222222222222222......22222222222222222..................................22222222222222222......22222222222222222.....2023...........208dfgghhhhhhggfd8008dfgghhhhhhggfd800...........2023.....22222222222222222......22", ".............................200223..........208ceffggggggffec8008ceffggggggffec800..........200223..........................................................................................................................200223..........208ceffggggggffec8008ceffggggggffec800..........200223.............................", "............................20002223.........208bdeeffffffeedb8008bdeeffffffeedb800.........20002223........................................................................................................................20002223.........208bdeeffffffeedb8008bdeeffffffeedb800.........20002223............................", "2222222222222222222222222222000 222322222222208acddeeeeeeddca8008acddeeeeeeddca800222222222000 22232222222222222222222222222222222222222222222222222222223........22222222222222222222222222222222222222222222222222222222000 222322222222208acddeeeeeeddca8008acddeeeeeeddca800222222222000 2223222222222222222222222222222", "000000000000000000000000000000 221000000000008bccddddddccb800008bccddddddccb800000000000000 22200000000000000000000000000000000000000000000000000000023......20000000000000000000000000000000000000000000000000000000000 221000000000008bccddddddccb800008bccddddddccb800000000000000 221000000000000000000000000000", "00000000000000000000000000000 21000000000008abbccccccbba800008abbccccccbba80000000000000 22000000000000000000000000000000000000000000000000000000223....20000000000000000000000000000000000000000000000000000000000 21000000000008abbccccccbba800008abbccccccbba80000000000000 21000000000000000000000000000", "0000000000000000000000000000 10000000000008aabbbbbbaa80000008aabbbbbbaa80000000000000 20000000000000000000000000000000000000000000000000000002223..20000000000000000000000000000000000000000000000000000000000 10000000000008aabbbbbbaa80000008aabbbbbbaa80000000000000 1000000000000000000000000000", " 0 0000088aaaaaa880000000088aaaaaa8800000 0 0 22232000 0 0 0000088aaaaaa880000000088aaaaaa8800000 0 ", " 0 000000888888000000000000888888000000 0 0 222000 0 0 000000888888000000000000888888000000 0 ", " 0 0000000000000000000000000000000000 0 0 2200 0 0 0000000000000000000000000000000000 0 ", " 00000000000000000000000000000000 20 00000000000000000000000000000000 ", cuyo-2.1.0/data/pics/mscNix.xpm0000644000175000017500000000144611655524154013265 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "0 0 0 0"}; cuyo-2.1.0/data/pics/baRaumschiff.xpm.gz0000644000175000017500000000056010361514436015024 00000000000000ݕJ0)lU)"oGAdYʢ{X]A|wn̟R8u:MEFwה-fljVf[6v((]Gt\ IJ5ݼ<۹*s{YW[2uuZ˿]e<%i 3gCeX)0Co1:3c8fh>11HC1s.Sw> F=cFR l͘XgZ{iRNb Yp?8?|ҸR# NSlG2(`:/jB}p!䐡i!՘UޖШ?ʫq܅L|g2Hn.uL=,b9P+\UuynȌj0~^.Lߘ9W*)kԯZ+h1(ȩa{TZ 3 K1|qdjaX~j]BP,>1Xa\=:9}Z:jg PYop9Ű Wy=Z1Tq8@|jA~a4ZgU0\f! Q*yjZq`/:UEL6A'f%,V`uPPF)CcUxBHP:v]^꠾ 4{%xEգo#(HHqz/\~1F~1F~1F~ii6ܬ?LNQ󲯞4 ` Z0[梧1rŌdjKc9tjD`LSL 9GMN# lԱ s=9tIH;B!qs4)LqӺ c/@d8>Nٶ#JݞFB VtRo 䌦ijRb¢ϓMv\Ȥ1(SOȼ:mAĚќzŪe([(g!1iD1+c[SNDQ㫌e2ʄ3RL/~ȔI)Ftg(05ȶCLH&9l7eeڢs;A*͖4=<=+QgKrQ%d\Ҵl)])t 2idzi`GvR;҄k0Cv`Vr|6QkpC L| t717 ]pc&#ܟ-8mg,.`p@f?-ρaY oI T1 XH i(V5)Ӝ4K7sa SЎf1*˜V'2v1kư9R*aJvQ)f1؎/im9#hcX]:7gL4ޙ8-'74hmYȱXE8EOk6D;W$L&%ftfpH0ԋ(){/^Ȃ/8߼f]!>cfSBs$#ctG+e5H0cI+I0.h#̬11D^LǾ!I8 3R1,wTvsEefQ2-I1[Č*:vT2f?'h1%?_wك/(j[+pJH2cPYŽ<Bh=L"ƭ8;0KrsSwTbt\1 +G#ZQ[q9_+/O꼸D2.kwy{a;ɜ9KqXse'Ϊq,hyx1_uiDŽcF!uf3.aGqy.]__glڑjOcLFrR ۪=e$gk!הNQ;p%Oiw C2c.l頻WJy,o計b1ei+Ʋ#y|8_]_PM*O.!Myݘ1ז3EP,Hr]cOa5p̌fygNH1%T"ڏR1*Ie0"Xv>9`*BgfC7e5|2ƈq pFqC0_/Վtb]9p^#fk6Uw<;n-@de:;(I\ O<1MwtwkGbufh*Lr; 2-udL) LujQ@ id\iU4zjdG,)'xphB(;xeu2_ڙ~܇IG ~ 26?;ް;ӳmWFmšig'I䌽av_lR[Hڙl7)@\d给kkW7w܌]kV%!1޵fbzH^L-i"aS7;;kˑ?#g%nm۝8HCg&֟^g-6n/&\~>eojw8#آsg/3Rּ%[~{nۗg~ة\nwO\w:/g[Z~6XԐ0hh8hm7 oւE/yAHZv-f- > "ZJ"uwi17`Tמ7BG,FOIݬ( 7Qkvხtm0\14j#)-1x[(os( 4$xʻd̚11x?_qDN3E)7h28`ot,P櫉V6ڨY14dF=0=MPt@1XS$͌cE&*#nk/K 6>RⳤXc<.3' ՙOwB`[mN]~$u-_hEߏKɐ;{0H`36|c3n8d`0}$T KZnkUm{-cF;ѐݛY=e!Fz:%*:5h5D g|3jjj߼z?Z>kcuyo-2.1.0/data/pics/mfaCabbage.xpm0000644000175000017500000001467712407360133014015 00000000000000/* XPM */ static char * mfaCabbage_xpm[] = { "96 64 9 1", " c None", ". c #000000", "+ c #37946E", "@ c #6ABE30", "# c #696A6A", "$ c #663931", "% c #595652", "& c #8F563B", "* c #4B692F", " .+@++#++$+++++++$+@++%++$ ", " #++$++++%&&$+@++%+++++++. ", " .... .... .. ... #&&$+@++%&+$+@++%&&$+@++. .... .... .. ", ". .++++. .++++. .++. .+++. .++++%+++++++%+++#++$#+++. .++++. .++++. .++. ", "+.&&.++++.&&.+@++.&&.++++*&&.++++*&&.++++%&&$+@++#&&$++++%&&$ .++++.&&.+@++.&&.++++.&& ", "+%&&$+@@+%++$+@+$#++$+@++%+&$+@++%&&$+@@+#++$+@+$#++$+@++%+&$ .+@@+%++$+@+$#++$+@++%+&$ ", "+#++++++++++$+++$++++%+++++++%+++#++++++++++$+++$++++%+++++++. .+++++++$+++$++++%+++++++. ", "$++++%&&$+@++%&&$+@++%&&$+@++%&&$++++%&&$+@++%&&$+@++%&&$+@++. #&&$+@++%&&$+@++%&&$+@++. ", "$+@++#++++@@+%++$++++#++++@+++++$+@++#++++@@+%++$++++#++++@++. #++++@@+%++$++++#++++@++. ", "++++$#+++%+++++++%&&$++++%++$+++++++$#+++%+++++++%&&$++++%++$ #+++%+++++++%&&$++++%++$ ", "+%&&$+@++%&&$+@++%&&$+@@+%&&$+@++%&&$+@++%&&$+@++%&&$+@@+%&&$ .+@++%&&$+@++%&&$+@@+%&&$ ", "++++$+@++#++$+@++%++$#++++++++++++++$+@++#++$+@++%++$#+++++++. .+@++#++$+@++%++$#+++++++. ", "$++++%++$#+++%+++++++%&+$++++%&&$++++%++$#+++%+++++++%&+$++++. #++$#+++%+++++++%&+$++++. ", "++@++#&&$+@++%&&$+@++#++++@++#++++@++#&&$+@++%&&$+@++#++++@++. #&&$+@++%&&$+@++#++++@++. ", "++++$#++$+@++#++$+++$++++%++$+++++++$#++$+@++#++$+++$++++%++$ #++$+@++#++$+++$++++%++$ ", "+#&&$+++++++$++++%++$+@++%&&$+@++#&&$+++++++$++++%++$+@++%&&$ .+++++++$++++%++$+@++%&&$ ", "$#++$+@+++++$+@++++++%++++++++@+$#++$+@+++++$+@++++++%+++++++. .+@+++++$+@++++++%+++++++. ", "$++++%++$+++++++$+@++%&&$++++%++$++++%++$+++++++$+@++%&&$++++. #++$+++++++$+@++%&&$++++. ", "$+@++%&&$+@++#&&$++++#++++@++#&&$+@++%&&$+@++#&&$++++#++++@++. #&&$+@++#&&$++++#++++@++. ", "++@++#++$+++$++++%&&$++++%++$#++++@++#++$+++$++++%&&$++++%++$ #++$+++$++++%&&$++++%++$ ", "+%++$++++%&&$++++%++$+@@+%&&$++++%++$++++%&&$++++%++$+@@+%&&$ .++++%&&$++++%++$+@@+%&&$ ", "+%&&$+@++#&&$+@++++++++++#++$+@++%&&$+@++#&&$+@++++++++++#++$ .+@++#&&$+@++++++++++#++$ ", "+#+++%++$#++++++$+@++%&&$+++++@++#+++%++$#++++++$+@++%&&$++++. #++$#++++++$+@++%&&$++++. ", "$++++%&&$++++%&&$+@++#&&$+@++%++$++++%&&$++++%&&$+@++#&&$+@++. #&&$++++%&&$+@++#&&$+@++. ", "$+@@++++$+@++#+++%++$+++$+@++%&&$+@@++++$+@++#+++%++$+++$+@++. .+++$+@++#+++%++$+++$+@++. ", "$++++++++%++$++++%&&$++++%++++++$++++++++%++$++++%&&$++++%+++. .++++%++$++++%&&$++++%+++. ", "+%&&$+@@+%&&$+@++#++++@++#&&$++++%&&$+@@+%&&$+@++#++++@++#&&$ .+@@+%&&$+@++#&&$+@++#&&$ ", "+%&&$++++#++++++$++++%++$#++++@@+++++++++#++++++$++++%++$#+++. .++++#&&$+++$#&&$#++$#&&$ ", "+.&& #&&$++++%&&$+@@+%&&$++++++++++++%&&$++++%&&$+@@+%&&$++++. .&&. && .&& && && && ", ". #++++@++%++$#+++#+&$+@@+%&&$+@++#++++@++%++$#+++#+&$+@@+. ", " .++++%+++++++%&&$++++++++#++++++$++++%+++++++%&&$++++++++. ", " .+@++%&&$+@+++++$++++%&&$++++%&&$+@++%&&$+@+++++$++++%&&$ ", " .+@++#++$+++++++$+@++%++$+@@++++$+@++#++$+++++++$+@++%++$ ", " #++$++++%&&$+@++%++++++++++++++$#++$++++%&&$+@++%+++++++. ", " #&&$+@++%&+$+@++%&&$+@++%&&$+@++%&&$+@++%&+$+@++%&&$+@++... ", " .++++%+++++++%+++#++$#++++++$++++++++%+++++++%+++#++$#++++++ ", " .++++%&&$+@++#&&$++++%&&$++++%&&$++++%&&$+@++#&&$++++%&&$+++ ", " .+@@+%++$+@+$#++$+@++%+&$+@++%&&$+@@+%++$+@+$#++$+@++%+&$+@+ ", " .+++++++$+++$++++%+++++++%+++#++++++++++$+++$++++%+++++++%++ ", " #&&$+@++%&&$+@++%&&$+@++%&&$++++%&&$+@++%&&$+@++%&&$+@++%&& ", " #++++@@+%++$++++#++++@+++++$+@++#++++@@+%++$++++#++++@+++++ ", " #+++%+++++++%&&$++++%++$+++++++$#+++%+++++++%&&$++++%++$+++ ", " .+@++%&&$+@++%&&$+@@+%&&$+@++%&&$+@++%&&$+@++%&&$+@@+%&&$+@+ ", " .+@++#++$+@++%++$#++++++++++++++$+@++#++$+@++%++$#++++++++++ ", " #++$#+++%+++++++%&+$++++%&&$++++%++$#+++%+++++++%&+$++++%&& ", " #&&$+@++%&&$+@++#++++@++#++++@++#&&$+@++%&&$+@++#++++@++#++ ", " #++$+@++#++$+++$++++%++$+++++++$#++$+@++#++$+++$++++%++$+++ ", " .+++++++$++++%++$+@++%&&$+@++#&&$+++++++$++++%++$+@++%&&$+@+ ", " .+@+++++$+@++++++%++++++++@+$#++$+@+++++$+@++++++%++++++++@+ ", " #++$+++++++$+@++%&&$++++%++$++++%++$+++++++$+@++%&&$++++%++ ", " #&&$+@++#&&$++++#++++@++#&&$+@++%&&$+@++#&&$++++#++++@++#&& ", " #++$+++$++++%&&$++++%++$#++++@++#++$+++$++++%&&$++++%++$#++ ", " .++++%&&$++++%++$+@@+%&&$++++%++$++++%&&$++++%++$+@@+%&&$+++ ", " .+@++#&&$+@++++++++++#++$+@++%&&$+@++#&&$+@++++++++++#++$+@+ ", " #++$#++++++$+@++%&&$+++++@++#+++%++$#++++++$+@++%&&$+++++@+ ", " #&&$++++%&&$+@++#&&$+@++%++$++++%&&$++++%&&$+@++#&&$+@++%++ ", " .+++$+@++#+++%++$+++$+@++%&&$+@@++++$+@++#+++%++$+++$+@++%&& ", " .++++%++$++++%&&$++++%++++++$++++++++%++$++++%&&$++++%++++++ ", " .+@@+%&&$+@++#++++@++#&&$++++%&&$+@@+%&&$+@++#&&$+@++#&&$+++ ", " .++++#++++++$++++%++$#++++@@+%&&$++++#&&$+++$#&&$#++$#&&$+@@ ", " #&&$++++%&&$+@@+%&&$++++++++.&& && && && && && &&.+++ ", " #++++@++%++$#+++#+&$+@@+.... ... ", " .++++%+++++++%&&$++++++++. ", " .+@++%&&$+@+++++$++++%&&$ "}; cuyo-2.1.0/data/pics/dnGreen3.xpm.gz0000644000175000017500000000100407550521110014062 00000000000000<dnGreen3.xpmKK@W\2Ye$m"ZЅUj$Q"r΅>.'3J2s ȗkGz~y_Wb=~?ȩ|9$<8︲7¼68 c$ilIJ0JS/IeJA2!q:}hc5%=x[esWĖg*7,P<-=PUaU1U5=1uBxϬѷ5`YP4€p.l\kaBث!jBQ d Sk7Ar#8^{ަ1s-`{5DJj9*{LbGxsn 3+ȂN2 d COxZo z}yP?5 v 1ѽ#@2/ n<-Gqz>Mc( ZjE]O@qOxBcuyo-2.1.0/data/pics/mdPlastik03.xpm.gz0000644000175000017500000001137112412223265014523 00000000000000{F)D-d͛GOHxց]g94NyJBϾUA's1ĩҐ jҰ.>o~y\ ۇFH>mOƸCXջ˻%U o {Æ>LvҺ`إ]-c^P8h uWMa9!p0u׼ ׭ICalSiZk '-iyՍ;W%ΨEJJ7i8N-ea[w8p4h0S8Xb8L{~P`8𮝒&BOv:7-jg::O)g\O)jӘ۔`ؿG_R14>ƷfSw_):d[质^Qx)ןkM/@}_RAS(t_Sx Dz mJ>]+ [ vva8 m:OG'~t=|UYћO=9鼒٧p4POf(#]c?蔍:: pocIZ?Qx g pBm '`|`8WR;f5QOGc G15uu3aRx5(l.qgH|FhRʞc8\h` &W֤5>P8 zMf2Q>}1ǻpB#9?~7777777776ڜk+y~\ {gp#}aQ_*}i2mNv-(\Iu"$ a7D\!K2Da8, Nv  +XhJ#ViֆAuB1NܞJn=SxA7FBo>8TiB2`-JufϘ3n0ܶbn[mEULv}a[^`Y,FRؾ6:" ;ExvW߷} n܀ Dnx0EaɆ'v 5gM)Q{+|TjEFf  /Ao\a'VH:6&N5r%oO.q-B-|Xuj, s!zƐb,ZQXfM 9T68zB} E ]4RBIQQ"˅uaU$z MU[O@ƙs 4WA: v!Nę\Ċz)z̃ 3J2M3ܤZ@B>^XdP,rSHؽ9v@N ffPڀs3%8ؚ[Bls÷8mچ+$\xL6mEFL+p@p|ˑ{8yX8ȅU5iڜAJIӱcVoQu2,SRCfq#aw}գzpD LƁWZ$X1ւcCaTWLetn64oU`)Aڌ&8^C 2â2 x &\Vxr6$XžWZA.*~]fd.+T % -fA=!77`UgP1;m /]x荩ssnnEְ݃i@" e: IXZ[`g"  3b7VN߫pK9F!HSn`[`Z5"Zfn ߘ۰ $X=pE49B7WSsf:|77=9+wmCݭaiMju6^`51Ѝ-+J&`F А8bgi8abcBM6wk;T $ˇJ|`59bVP` `6vm4cHl>gp[rsLh7xo Z}n{ F]Ęz0i  [$4ca墒`Y^Ig /2< )K_ -\.bah;,3xz(3T* + Z)8l,EF^8oD-eڰHa:F"e ; P pM`8&J5yl0`(.Ճs4\`ꖎh,s^D`#5 sShU0769- 棗E'5Y9N*8" k44Qt6,+rq>M ܠ&F#<6̑X  3E,\ein2xnzXLEAts5s<V huth<"XSw4 )I?bU=7zИ man:ͺMM0z\d~0 W87`07z`n `{zntnZ:Ey={1zQ`E DeVFJ^x35A!|gAp 5߭,&>^rcEJl͘I; T= ]! cZ)\ + 57Kk2\($p"47Uv@tkE `Y.JkҭPj. )G\<7mMpVQ VQ)3s3I7V_SV(MjHLzP{fyM(?G`ć\ [" Qf Dr1KkrQW!/Mi( xMi7*:6jOHTҲL?3@ʢxy2]Mpl=1P$HPte@Pf8Dty›z>*<0,\SF.! Ub QyoIZhx=z@'}<%= Qf)^7Z]bXLJ|?YAxsA vkwڐ} ؿ瓁 BV=#쿅 o7`9OX*~Cqd8BC!N5sϒO ?h8"d"Ȱ;\:4 2x7Cwݙ)CN ۠ I !,3#t&v!vr Ob/t쿋3lVȧp`Ah}|~]k84<%dwR)y8mP@H ѓq8Æ"8w<<0" gx{Yfv#>W80;C7o5qЭ6aІw!g-4<;?9]ŅwfSf8i8= !>4.k(N"ӁP!.4a( u |jPGqx (;ġ-g"$N"kw>exY E"D ?Dp4Z#06}»H"֬  ҚIѸO|r &  30A!4_*tna:]U3R&O3D Z" 7|^lAŘU\h"zLn Q` _a18m v l{ `)@"[u`Ȩ* p8> ͠r"S?0]v1$ n~MeĜ!Zq2UI M2wJ TD&НAotz"b`?/OQ^@n?XA3;^ d*C ֋[dW0phCެʚa7 B`asTF~Fyd!c˭(Tۧr_k6^zoW7Bh2-+ ;PvT~:[="^uqhKmPIDV[u3;+Q rOWXZeBcuyo-2.1.0/data/pics/isSpringerWeiss.xpm.gz0000644000175000017500000000050507550521116015570 00000000000000C|<isSpringerWeiss.xpmMK@Cv璕i[DX)H)h֒ ݙ6"8!dPA.U ˢúVz~}|  FqQ wo<?HZx5h%ěD-z*-%N.w$ꯆ_P!Rڸ!RJk6,6\&P:m   of/ Z9k-kmag)܉ lAʸG7L@BLS0JcEkE18G?GS2UC!cuyo-2.1.0/data/pics/i6Gross2.xpm.gz0000644000175000017500000000461207550521111014044 00000000000000u<i6Gross2.xpmkO"M_| iQh%4д\T5 0\|U3<;Mrx_ϥH@$il-;Π5DϦ;.Fs3?~ \?}Na,3|stw(flFlش33!laMÈ;fF!L:pʎmL6/LIC>e3"f3Pv ;3 eӲmDugf4 EJd3a'gL!`#™f;q69CQif~5(#l"ATpZJQ0ϑq椠b6`ys+M.ٸ,]c@N(a6MšQ iRijFq`YJ@`RXA[&°0ZP&$6*X:ȷ/YWm$³OjA,";~q˱a>clۑ[e(%E`saj8~52_fp4Qh9f*_.|WL\UҔP`sJg]0lڢkHAT+Y0K0߰s퐲/h_܄~tLQ;G=[u7mT U(YQըx e{%vqa;7%&]Om:N%Fֱe(\:;CN^lbNQbمp@ ya\(FױX9X,pS8R0wDBaNp3a:63m cz[Ǝ/ÄJ/a:uH,ofy5H;)Q4b$eՠhi0991e^1t:M i[Y,ιlⱟ⳪ydJ4J|6kJ6|Ѽ#)9!eå'g\lYeZ8v%(mqKe2lvqAdLqV*ʐDf% 7K*th# ? [-\>V!Z(Vjx,6`gjuH$FGDiLT=F)U~801jOs } %mrx"<%bЈ2s=aHfV*(%TZ Ï܉qrq9,y276`K1,T3v)ͤN'j\r}7ͦ qktj(bDR%]*FW.sp7F#H-.Ο˹r8L5v]vBYz9ZN}{# "RP(<\h} _]]JhZ`B 7.H/𐐋 0]=DlBL,[o ._r@l&I%$rqs؟i:KXA4䱗]]̢0@\]P$Բ^FCo)VS/y܎(LJ߿AMHܯ8FO*%bnVpmaiHU9, ɰ>պQMHp}rهI<a9D4)ee+UH(d* Zz9Óg-'y:cɏt4BPF 2~<ҝc% z@O?LF|F@ Yf ؗ?Ȗ냎P:TSIȴ:bZXc,2M=VV1 ! sҏJ2.|h[>@U6Р!gDŬP^P}=uZ)>JJcdbI?ouorob$@_=NlSuFz1x[ƧBcuyo-2.1.0/data/pics/jjHerbst3.xpm.gz0000644000175000017500000002034307550521117014271 00000000000000<jjHerbst3.xpm{}sWw j"(78F꩚r-\6\DW$9݀dzCC9$׿%?d;>=#Y.!6g|SoDO'?nZ_X-,^cb fF?Ǣċq7(co3,^^/yG^o>M![lXE#.:i9`Ѿm,9KRaҸl7g1g^z攙r̎arvg>%J9/n`#{i->P@`3OO>#(2,Pc7oi^>[~i[Mɻ`m/ƹE0M^4G#&80nZ}1G-lFE\h:n%QT]c\lx奐:F0W,@_[/ڮ@mn\M$0w]|FI.}ՖSCxqNjM)PF:7 1b+ :|\bf v[^^6@7f3ה}3 ] 畇|eO'yQqq Aӿ 1;/TԀ8>ECO4υ\easY-P#.5 ͯcܿW7 N@Q84|B t"?#]G 5O qt4SSxZrer_U-_T>X<$[90I`LAHvڞIRi7t IpjMTk2 2&)qn8\>A5MfҖB~P'}ت`-]`ح5 s O>Z̤qsBCxǹQ~uhh6c&^8dD p.}hdJ$ߏvsW;6x+1Z{$e5! 22T( nGeUHm.M(ĝŧ٘d2'$$1!y+˜{^^n%M.rkQb0 .1̵,̇J"jܶYϲCaݹXY%w Xu@%\S~tѵ~sK)f;m.hB #DH8D( c9!::2~hV7=Pi![j/1PٿR3 'ق Rmoyx!XLMS@xu+,vcqj&}O@Sϓ̤ 7j\Ef FoK%yD DmRE<̗'[Yd1V >{&)Qe^R[.AD#hLֻ2., AVJDu'gף~$I.C}g۬IvR|LIaӧVmw(`7QȗSk~8Q޳a ;@C]'1"Uϔ4\Vd0`t"s/1Zr=2[hQGN$D3{91(T!>6<$䗚$,%JX1Q=~_(Agh.;ȲEOyxܼQ'(^-tԒ?u^#KeDMt@NOb993uzrk(jߏ:Z)W:N> 7fXu!n~ .H&ZA.P1.6>}`B ێEzn:b1ͰV{~n p]o^7i岕/ksI *t`1KɄ}6sr?+ nIB^^H6l{P%iH9k5rt_!VMKajG5 OǮ s?oQoG!I tqA]zZh*.3-] J=?Xk:Na8Պ3c'(~/'D@ξM˧ewn~Jv<=NuZWS8| 6 F>Ms{,bϿ?篽8pQ4k)2?SE5ɐB U;?e 8*I #1](r^6ݱP̬ v.bHƣ[|HFJZQ~khdxS׭lf oF9⏅apIz]WqJ<俍[vL<Jyۺ$ *1?`8ϫc|쇇o0VouO.g0?`uNan=0lگ\_.>7 0>H+r-؇z tY3OyOU뺩Nl̜b(E\WAAo'=}Ӥ< ,G0_y;#{XDN^MwV qh⧉;$ˊR]*tp Q_mJ 劐\fJl Ř YEJ;w"t8E}|OqR2Dђ"׸$ʪT6h=]Hv_ʏռS7x!fB4YHUrFME.<钕"A7{MGEX 2IQ7&via&+ gOޘC)8^ m=%!XeS/''1 j#`C”Ϭ6:' o%*Tb(Εx|z}<ɕŠ ̳D03޲Q` L㭪1' iF }$"3}!T^_m)uc7Zs:M=6< gitJyy[W4W+ :*ج=6ooDz,8ffwu|a*^jSo)nTKx#0[t$ c ɬ?.$M'0J-ȂSh4e}1xbp=0q DKs2>ꅧvBLk"azc@Eֆ*)eY60S{JO RRX+{-햗{ {1G/1V gfLڎ/;$Ӳ2H! Ecl?Z{pO/iJn熿Y ,B2XTJFXo1$ӪĈ(ER30&j8m_5 Uآz½6b:uqC'i$K@}z͙)M HGm0t#ݷlDdjٝo[K`&I}mBT0O>Ⱥ,JRqT{sbJ;ې 3)l-W>" eLsr~98uG Wڭ3mۀwy;e OyQ#&,!|S6(B,ݓ7ς"a b$9dkmek2h<]H 0?1ӵ6>7\5 Ϙ6uH"7xv%/{q=*w rGc ﯪO5tpE@qj I8g+Z[URTU'eTtAm2㫉؍\s "Ú#CӴ8};ϪPjZGxeZf1@xۢ j`L wLSRhDdz}swB$O©>yw mBeqckL ȁ#u+sY D^%C+ѣiǸ&"lUD h>y ,ԊgL*Kp k]2ziWWWB |\lDh>W/sYOƥYLѼda-{cFxyHJ>!~0X uqU9=%f4Iٍw0@^\/v[Ew3?"WJȑ|P톭b> uQpF0Ԋ$ZPf..:-MsN"1l9G, xX~ if5PkxG`M+Ƴ@1lؙ*1/lryaˆa(Wy"W 8ƹy_q;JÒ_l6[Ԕ`@|慺*̵u0Bxqz?>`E +›)Uɔbj)V&H#0Ƹ0} Hh !?~|9 ÿ=pxKX&2*٣CM@i sMhkbG>|8t"_bJ\@g O)B)1}v/׵% ®cbrcf1%ELfQ ~Ãj?eg `m͈āO3Rfl3rQgg߈$P^)Jc)H0))LQLqDž ͳA*1Yk]$^6 98f2Qse&h"‹eoi :ƮI'4T2scwl\ 4]0]t+1rѺhDoP]x Z8/"f;"T0)=, 2cq͸֭L< (dĖySS qdD:iu)!VEx1&fL8zmTdɩ֓DC++dzu+I>PXe薵Ư/,@o 7!$55&sv6KV]!CNbZJ``r;2h&qD/y? +n63#t e֪z"c˿9x79 uHR{Oe!D|e߯so;~dqA"6vLbƂr:o4Moa8}8ISNJݿpWWa}vڴM!$\wϙ%;o.yO{^lWcw>/.a}CcxuO.N1 36DGcuyo-2.1.0/data/pics/ivVulkan4.xpm.gz0000644000175000017500000000163307550521116014316 00000000000000<ivVulkan4.xpmo0gWDgMVQڽxBHiBb;>>$8 7g{7^TMu{_~t}w/oU}gv.jYU{t2;T/}`ű@Od6xC V .x>l |a4й#:!07N!&a(F 1Hrl-54%qzH 4a*- WJJ43$ 841Q_v<`rҏ[hԭ~@ cj%y,!%  fz.*VOg!\ S*ěô5~,I#FO>sPl#h9bM Q2hˢA{v֖/:c@)Cѧ} B.5hk ´!A2]v P3"CM ր  xU4hAh^p}v =ۭŤAq.QxIK,̣J16P3GA[!y>Ax#h @$L9V/&`9ujD1BѠU(F1O83@HN8s¡>NZQqDv!.k@߂Aes7g ""iw t1?Π0rȐ#o7Mыcuyo-2.1.0/data/pics/mbmLangsamUhr.xpm.gz0000644000175000017500000000321411467336346015200 00000000000000[mSLίR@i4MlYIӦ U[ ADkݜiB <{(Mrvgƹiצ&oji#mZ?n]fV~kv▦YmUBX͙(PCG>(yЂ j(9P+}ZPz(G-:: =tPžrjw@" tmP Z,X|Nљk( :h?pЅr(w|(sLQzY`=f(ʃpSԺ#nt[[e:zC/\_ftd}NY^Yfc_܎9 M)~if-sf^잛NgHp}08G=Fin+91:Q}z]mz1[FV L DvjCY3;L껜<(ʃ<*Pi*rPzႈP^lO}Aޗl |%e=q~@Y=g8@/<#a~pH|kwAyPAyPnnZei"FNbH)̓ xH~p$fFދVVh@wUmn1y z~~Ct}5zb<5eoCyPAyPaP g&Xcuyo-2.1.0/data/pics/mdEgoL.xpm.gz0000644000175000017500000000220612404657517013610 00000000000000[SI# ƀ9w }I3)T B0ڭ{癯OU^tq*[vQ?lXԵɹI:X(\U~3eTiYTI 4@Uq2,7B0R)!y!PG _*%T'C_P'* }e!EuXᜡ' CgxHJ RGmTP̕j2= C CG2B1B%S) 6N 0EtfeDukb1 %T!B,a!ê h [C'G5Чb*)k 꺮ljs[7PPj6Ap0[vJJ.P2Va2ZVi Rz"Q(bW'Jdh;6LV #HF'@[Dp$OQu0l5Brρ16.î$n|׻N8{nKoQis4r ~sGLb5ƶD#"F]`m qCSJqT1;Js&> _T2U #!1>>t "|}h``_po q ;7ۭ01_ǎM㨀`:Nz^?3_Ӝ4q\oFNG8nTk'9i1}vÓs,Tj]\~ݵso6Kyz~nEs(okxuב3=0[Hc/nen0?港} YGiP*;Fy ɓۑ3lݎW泎܎Q>㈜Hη:|vN7 #g+w1g_o*|?|tkHc [V5>jkV~(أȏbs^DQC?oaaaaaaܟӿscOKGkZc?]cշܟӏOqoʼn'cuyo-2.1.0/data/pics/mjNaegel.xpm0000644000175000017500000001030511347236670013541 00000000000000/* XPM */ /* Copyright 2008 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 96 2 1", " c None", "# c #00ffff", " ", " ", " ", " ", " ", " ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " ### ### ### ### ", " ### ### ### ### ", " ### ### ### ### ", " ### ### ### ### ", " ### ### ### ### ", " ### ### ### ### ", " ######################## ", " ######################## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ## ", " ######################## ", " ######################## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/jjHerbst4.xpm.gz0000644000175000017500000000656107550521117014300 00000000000000<jjHerbst4.xpm[]s} fz=!%po[E  ۿ=#>ڄ)lH 3#ۍV~{GN^>͓n}v}}r[~u?o_sΛv2Yk势|r_ޙoga6 dcw>r6N(؝ynqw5[ 㞿0Σt67Coz8w5_$ aUi;Kc[$FUmdVN,8=? LΓv+˽dXU_Uf;a{ۨj#Z.s;a6^& r+h$&Dg_D&'Ax`/W#5M-;a/yZƁt٘ΦA_NۍF>^jp{ۍ |̚Q`¬e l̶wM8ab١16) mL,GtٔU}NiρYʅ?3 < ')r|ɪD'y&y ?E-(z?8,.GJ 壮h+}@zF'$'5Djva0y?*heeEF+#R@TqU)6v1eXpNYÓ5UL!q'b[ .P0K#KINČP慘54/YUH?IL0`t@'Lʸ̬C Mk"j{YT0t*СNZx"H!bMw1bl^!73ebb`6r*u'9 Mlc>cktf4J0Z%NNĄ!ThJ$`lnD6/bOݐ2$<81͑C` aR$BIy 򖍊8V [~0B+10[ %1'Oωe^ ,)c{P! /^,QwZ~" Ιm1qvu ,T4=` B>.zQUW Q dٙ[~:왅B p~ K1 6. 01}@jM^K@(em=.劥e\q5٥ +`ңC?}Pf?-/Pv| a;v`H|ry}j1@!Iub8aKc@YHepsr*7du_m6S-e L0E?`e8bW.WAZ51;JEGTY3Vc~Ska9B*/DNR\+ISTwBSkžl4Q<XPN |03[ԤI@C*\T9TP?hEc575`e-DiʒԌ3}<2 o{HeWĉ33t l{BRa, r|t5$Z M`6dtQpΝ0kC-9֓Al;Lg ./^d{i)Z6^64S2=rj^`B"H₨j?L^_ԢF/O=LB ؙkTX,:g1Pp[7Q\I? `M 7L6pLU:7\S8wd68r٤08{VV֒ ҭm013-f{mm) "ſ5{E,@KSoNQVju #23 U*S97vd8o@!* {-%;r*RsMU (>U ~1Gmi/J"eJ0! # /݀/n|[Ÿ_PRCY|Y!o͛#sgJ}묘%Z@yCA|]_?7Ᏻ, Xs4>&PVVnv:i''0t߉VyǑf 9CÇt ia8SOi%/jqBeN8THJ+`Ё88#@%FQrn[ !Ֆlϖf2 51 %C0ˋ8,PL҆0_둄YPI@*a|;T\-|RmSRzEEx'UB Ԏ#-RÀR*٤s,HKW/59'fHp A@=7n -F%+JP@̯ ?:& :~S'usLZO;dy+N_ 3H:?"O@ &+TxVtk^s 18wC̈́ $ٕK!XCQܮMbL}piESFJKAʟa@Wa1(c(f "<dHkS7BY\R%NlTky!zL'5EIk zg^f\r0N9Q${h080; 2q IcM+hrZy!#Exphq+d3`OjH"RׯcҾ/!dXsr5AAP * oT*ȁ{#(eYP Xf6P;=?~D}!G ~ H`#+JfϾ%ece(0"eBDAa2!G|,/1*&SQe|SU+1Y k1ۙZ^_WT5iO[XD+a8aЍd| AQm\X.񵉗 c_W\ 0_~r1߽ӹFcuyo-2.1.0/data/pics/bxBaer120.xpm.gz0000644000175000017500000001026510361553650014064 00000000000000b=bxBaer120.xpm{SڲO625H$!txDF=U!BܺzW=:ݒ_{+-Z &`<ܘ96fLr2(?|gӷ$cZ~Nff=:Df줦Yjz4'+ç/e2~aL&!*KT|aɥyZ#jiWPQ*5͌4{Z E[t;12l^Y#T9bAŢ4ncg]%իw&y欕D>5EM3#\CMTjUx225DpRmX>|_#g ѶPD`T',"ض}bDJm՞}&j\\ HߊuqRKh2dcXk}݊8ӳd{B>5%|%`[BcʋE;gdH+x#Y, ɨ)3Eb4' Oz+#&E)({oFUUٌKbiZ`G8|g/B37yKb k}!\0ޙ$wљXvbG7)RiP[|o 07Hxeȁ.aL3p imt ߎ_k!Ҋ󡎶>fA5dJHU1"Fܥgs,lW`ΏT^"Qyp!g2N1D~v .N߮##c*&X.DٝlcD⸰8ݹj@U;r3hm$̪Ғ.2wfdh,qE޵߹2&4V%.gY߽X(d:G 8Le؊nSKEQ8VPׅA5 )t'܉DAY̥ǠHw~S>(kևZʫLT .Eti/ճgch^r0~ lve%A$Dm'Ln=>ܲy#|cB@TI/ dԪٝ=XMX(5BtELy: $ұvN" Yb;e;]} 8k(shRFL5Xk يoZɤT&sh*ʱݏ=.N|/F{q1dcl*sl6lҎUxb\ŝЩ& ZS.wjݺ +D4+@5K2C$-uIf"qؘ[d&eiHk>xt 8,fs*5n{H"AP >XV+WV]qGɘ X!jνS6A'TݔNRe^NLnI cnɨYz#'hC fAN R0=%њ̀ xvH0ؐXÀd*z.z}Mc5;0ca׍;0Z1`p]헵g7suc,VqgoR"M_9 ʏKK.\4՞eoUp VoYE EZRD[2=cɇNo϶0ι"$/xg;#Ʌa<5d rȒ]lg<$ujU5 ١هHKX ț qNeԅAz5'lcz";Ut-1ې[CoO۠Ďj2[GMl99k- m'vD6g,B^ +?T H5"%T)0z=v' ~0j1AfjhyaF#QG[r$y.R DQ7]h};K&{DZۡlf 뇏__Ȧ=rWjj0c5½ݲeݳy$zIAH~b0FJH9^;^Iظi_7^,KUI/G o+J;Q cd@| ꓛmbs5ΞDr;)p2wg'1xp#IwǙw帱#>^OM/!e}8EvbIɕ=,ɓ2PWse6]vlBھ7dqަUE8 i[BIM?݌Ƈcda]W%%u u Է-Pς-:/Iyv= #x˗٭Z ՙ _Q1~Ԏ!*Fd?\Cm}8%~y"8)/>>aE{mMSc8.2˸l=(h/:Y.&'>ў/_)?C0cz"rF&]U'쭨HtIlB^d_<}{6)|XꡔF >)ϓ:N[[Fa &wKToE.ו|c4|0F#c4|0F#c4ק?d kcuyo-2.1.0/data/pics/i6Rot.xpm.gz0000644000175000017500000000162207550521111013427 00000000000000<i6Rot.xpmOo1SXn1r ҶJ{!NH*B(ۛlٞ>/l)>{#g_NKqyǷkg6_/Ŧb5>g;Z-UvvMyq[i׫n8ۋjض۫ۅn7[ҪwK%j4Q{%! A򰚆 eF0XEZLA G^I݌) FBk 'e_L' -$sRKDoρ}|@ 6|@gS=ХJ|1TJ|#J|ѓgq'JP\3L~Óp|#_zn T| D D2D_j$ÉT1>?^  ?0 }(@Ge@~djQ!cuyo-2.1.0/data/pics/border.xpm.gz0000644000175000017500000000056211043625626013713 00000000000000OK@S ґE%H)hբ9wwf76)'o3 gTv_flj0/.*X8blb^Elo9[Ŷ̧]6eczW@S8 f4"2aѼ!bVâyI(ju6c˘T1 kXˀQ{f ~:|@u<:> 2|@Jbh"f,"Ө2Ļ vTU\ bqiU#='=V;O>蹜cυ/Aӽ>a /jh_t{un\G'cuyo-2.1.0/data/pics/ithGruenBlah.xpm.gz0000755000175000017500000000071211101102052014764 00000000000000AK05asR!xDCwAyyizPDoɒv4krYi CxlwZ7$?&.#L38;&hG+yy^Su?Tr*N/ҘGsf&^4,Q舿kPGك2%ҧT 6ݦ`)ڰ%xMσ8nZ:lѕ0a{w5p{V_?kDDZRSaH!XA@Jn-@H7UMT5uR7i@4@A~ & ObR '4FWHWҰi*a4`476R̽?Ċ~ǹ|deF2-v%xQ:y=lh6H"+^2LYey&=yu"~y}Gt6cuyo-2.1.0/data/pics/msc5.xpm0000644000175000017500000013357011677631640012702 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 1280 5 1", " c None", ", c None", "# c Background", "* c Background", ". c Background", " ", " ", " ", " ", " ", " ", ",,,,,,,,,, ", " , ,,,,,,,,,,, ", " ", " ", " ", " ", " ", " *#*# ", " #*#....*# ", " *.........*#*# ", " #..............* ", " *...............#*# *#* ", " #..................*#*#...# ", " *..........................* ", " #..........................# ", " * *.........................** ", " * *#*......................#** ", " * *#*#.................#* * ", " * * * *#.....#*..#*#*#* * * ", " * ** *#*#* *#* * * ** ", " * ** * * * * *** * ", " *** * * * *** ", " ** * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ",,,,,,,,,,,, ", " ,,,,,,,,,,,,,", " ", " ", " ", " ", " ", " *#*# ", " #*#....*#* ", " *..........#*# ", " #..............*# ", " *................*# *#* ", " #..................*#*#...# ", " **..........................* ", " *#..........................# ", " * *.........................** ", " * *#*......................#** ", " * *#*#.................#* * ", " * ** *#*....#*#...#*#* * * ", " * ** *#*#* * *#* * * * ", " *** * * ** ** * * ", " ** * * * *** * ", " * * ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,, , ", " ,,,,,,,,,,,", " ", " ", " ", " ", " ", " *#*#*# ", " #*#......*# ", " *...........*#* ", " #...............#* ", " *.................# *#* ", " #..................*#*#...# ", " **..........................* ", " *#..........................# ", " **.........................* ", " **#*......................#* ", " **#*#.................#* * ", " * ** *#*#...#*#*#*#*#* * * ", " ** * * *#* * * * * * * ", " ** * * * *** * * * ", " * * * * *** * * ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,,,,,,,,, ", " , ,,,,,,,,", " ", " ", " ", " ", " ", " *#*#*# ", " #*#......*# ", " *...........*#* ", " #...............#*# ", " *..................*# *#* ", " #....................*#...# ", " *..........................* ", " #..........................# ", " *.........................* ", " *#*......................#* ", " **#*#...........#*#...#* * ", " ** * *#*#*..#*#* * *#* * * ", " ** * * *#* * ** * * * ", " * * * ** ** * * * * ", " * * * *** * * ", " * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,,,, ", " ,,,,,,,,", " ", " ", " ", " ", " ", " *#*#*# ", " #*#......*#* ", " #............#* ", " *..............#*# ", " #..................*# *#* ", " *....................*#...# ", " #..........................* ", " *..........................# ", " #..........................* ", " *#*......................#* ", " * *#*#...........#*#*..#** ", " ** * *#*#*#*#*#* * *#* ** ", " ** * * * * * * * * ** * ", " * * * *** * * * ** ", " * * *** * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,, , ", " ,,,,,,", " ", " ", " ", " ", " ", " *#*#*# ", " *#......*#*# ", " #............*# ", " *...............*# ", " #..................*#*#*#* ", " *.........................# ", " #..........................* ", " *..........................# ", " #..........................* ", " **........................#* ", " **#*#*#.......#*#*#*#*#*#** ", " * * * *#*#*#* * * * * * ** ", " * * * * * * ** * * *** ", " * * * *** * * * *** ", " * *** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,,,,,,,,, ", " , ,,,", " ", " ", " ", " ", " ", " #*#*# ", " *.....*#*#* ", " #*#...........#* ", " *................# *# ", " #..................*#*#..* ", " *.........................# ", " #..........................* ", " *..........................# ", " #..........................** ", " * *........................#** ", " * *#*..........#*#*#*#*#*#* * ", " * *#*#*#*#*#* * * * * * * * ", " * * * * * * * * * *** * ", " * * *** * * * *** * ", " * *** * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,,,, ", ",, ,,,", " ", " ", " ", " ", " ", " *#*# ", " #*#....*#*#* ", " #*............#* ", " *................#* *#* ", " #...................#*#...# ", " *..........................# ", " #..........................* ", " **..........................# ", " *#.........................#** ", " * *...............*#*....#* ** ", " * *#*..........#*#* *#*#* * * ", " * *#*#*#*#*#* * ** * * * * ", " * ** * * * * * *** * * ", " * *** * * * * * ", " *** * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,, , ", ",, , ,", " ", " ", " ", " ", " ", " *# ", " *#*#..*#*#* ", " *#...........#*# ", " #................*# *#* ", " *...................*#...# ", " #..........................* ", " *..........................# ", " #..........................* ", " **.........................#* ", " *#.................#*#...#* * ", " **#*..........#*#* * *#* * * ", " ** *#*#..*#*#* * ** * * * ", " * ** *#* * * *** * * * ", " * ** ** * * ** * * ", " ** * * * ", " * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,,,,,,,,, ", ",,,,, ", " ", " ", " ", " ", " ", " ", " *#*#*#*#*#* ", " *#...........#*# ", " #................*#*#*#* ", " *........................# ", " #..........................* ", " *..........................# ", " #..........................* ", " *.........................#* ", " #.................#*#*#.#* * ", " *............#*#* * * * * * ", " *#*#*#....*#* * ** * * * ", " ** * *#*#* * ** * * * * ", " *** * * * *** * ", " ** * * * * ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,,,, ", ",,,,,,, ", " ", " ", " ", " ", " ", " ", " *#*#*#*#* ", " #*#.........#*# #*# ", " #*...............*#*...* ", " *........................# ", " #..........................* ", " *..........................# ", " #..........................* ", " *.........................#* ", " #.................#*#*#*#** ", " *#...........#*#* * * * ** ", " * *#*#.....#* * * * * ** ", " * * * *#*#* ** * * * ** ", " ** * * * * ** * ", " * * * * ** ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,, , ", ",,,,,,, , ", " ", " ", " ", " ", " ", " ", " *#*# #* ", " *#....*#*..#*# *#* ", " #*#..............*#*#...# ", " *.........................# ", " #..........................* ", " *..........................# ", " #.........................#* ", " *.......................#* * ", " #.................#*#*#* ** ", " **.............*#* * * ** * ", " **#*..........#* * * *** ", " * *#*#*#*#*#** * * ** ", " * * * * * * ** * ", " * * * *** ", " * * *** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,,,,,,,,, ", ",,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " #*# ", " *#*...*#*#*#*# *#* ", " #*#..............*#*#...# ", " *.........................* ", " #..........................# ", " *..........................** ", " #.........................#** ", " *.......................#* * ", " #.................#*#*#* * * ", " * *..............#* * * ** ", " * *#*..........#* * *** * ", " * *#*#..*#*#* * * *** ", " * * * *#* * * * * ", " * ** ** * * ", " * *** * ", " * ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,,,,", ",,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " *#* ", " *#*#...#*#*#*# *#* ", " #*#..............*#*#...# ", " *.........................* ", " #..........................# ", " *..........................** ", " #.........................#** ", " **.......................#* * ", " *#..................*#*#* * * ", " * *...............*#* * * * ", " * *#*..........#*#* ** * * ", " * *#*#...#*#* * *** * ", " * ** *#* * * * * ", " * ** ** * * ", " *** * * ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,,,,", " ,,,,,,,,,,, , ", " ", " ", " ", " ", " ", " ", " ", " *#*#*#*#*#* *#* ", " #*#...........#*#*#*#...# ", " *.........................* ", " #..........................# ", " *..........................* ", " #.........................#* ", " **.......................#* * ", " *#...................#*#* * * ", " **................#* * * * ", " **#*..........#*#* ** * * ", " **#*#....*#* * ** * * ", " * ** *#*#* * *** ", " ** * * * * ** ", " ** * * * ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,,,,,,", " , ,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " ", " *#*#*# *#* *#* ", " #*#......*#...#*# *#...# ", " *.................*#......* ", " #..........................# ", " *..........................* ", " #.........................#* ", " *.......................#* * ", " #....................*#* * * ", " *................#*#* * * ", " *#*..........#*#* * * * * ", " **#*#......* * ** * * ", " ** * *#*#*#* ** * ", " ** * * * *** ", " * * * * * ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,,,", " ,,,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " ", " *#*#*# *#* ", " *#*#......*#*#*#*# #...# ", " #..................*#*.....* ", " *..........................# ", " #..........................* ", " *.........................#* ", " #.......................#*** ", " *....................#* *** ", " *#...............#*#* * * ", " * *#...........#* * * ** ", " * * *#*......#* * * * * ", " * * *#*#*#* ** * * ", " * * * * * ** * ", " * * * *** ", " * ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ,,,,,,", " ,,,,,,,,,,, , ", " ", " ", " ", " ", " ", " ", " ", " *#*#*#*# #* ", " *#........*#*#*#*# *..# ", " #..................*#*#....* ", " *..........................# ", " #..........................* ", " *.........................#* ", " #........................** ", " **......................#** ", " **#*..............#*#*#** ", " * *............#* * * ** ", " * * #*#.......#* * * ** ", " * * *#*#*#* * * * ** ", " * * * * ** * ", " * * *** * ", " * *** ", " ", " ", " ", " ", " ", " ", " ", " ", " , ,,,", " , ,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " ", " #*#*#*#*# ", " *.........*#*#* *#*# ", " #...............#*#*#*#....* ", " *..........................# ", " #..........................** ", " *.........................#** ", " #........................* * ", " * *......................#* * ", " * *#*...............*#*#** ", " * *#............*#* * ** ", " * * *#.......#*#* *** ", " * * *#*#*#* * * *** ", " ** * * * * * ", " * *** * * ", " *** * ", " ", " ", " ", " ", " ", " ", " ", " ", ",, ,,,", " ,,,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " *#* ", " #*#...#*# ", " *.........*#*#* *#* ", " #...............#*#*#*#...#* ", " *..........................# ", " #..........................** ", " **..........................** ", " *#.........................# * ", " * *......................#* * ", " * *#*................#*#* * ", " * *#*............#* * * * ", " * **#.......#*#* ** * * ", " * **#*#*#* * * ** * ", " ** * * * * ** ", " ** * * * * ", " ** * * ", " ", " ", " ", " ", " ", " ", " ", " ", ",, , ,", " ,,,,,,,,,,, , ", " ", " ", " ", " ", " ", " ", " *#*# ", " *#*#....*# ", " #..........*#*#* *#* ", " *...............#*# *#...# ", " #..................*#......* ", " **..........................# ", " *#..........................* ", " **........................#* ", " **#.....................#* * ", " **.................*#* * * ", " **#*#...........#*#* * * ", " ** *#.....#*#* ** * * ", " ** * *#*#* * ** * * ", " ** * * * *** ", " * * * * ** ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", ",,,,, ", " , ,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " #*#*#*#* ", " *........# ", " #..........*#*#* *#* ", " *...............#*# #...# ", " #..................*#*.....* ", " *..........................# ", " #..........................* ", " *........................#* ", " *#.....................#* * ", " **..................#* * * ", " **#*#...........#*#* * * ", " * * *#*....#*#* * * * * ", " ** * *#*#* * ** * * ", " * * * * * ** * * ", " * * * *** ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", ",,,,,,, ", " ,,,,,,,,,,,,, ", " ", " ", " ", " ", " ", " ", " #*#*#*#*# ", " *.........* ", " #...........#*#* ", " *...............#*# *#*# ", " #..................*#*#....* ", " *..........................# ", " #..........................* ", " *........................#* ", " *#*.....................** ", " * *#...................#** ", " ** *#...........#*#*#* * ", " * * *#*#*...*#* * * * * ", " * * * *#*#* * * * * ", " * * * *** * * * * ", " * * *** * ", " * ", " ", " ", " ", " ", " ", " ", " ", " ", ",,,,,,, , ", " ,,,,,,,,,,, , ", " ", " ", " ", " ", " ", " *# ", " #*#..*#*# ", " *.........*#* ", " #.............#* ", " *...............#*# *#*# ", " #..................*#*#....* ", " *..........................# ", " #..........................* ", " **........................#* ", " **#*.....................** ", " * *#*..................#** ", " * * *#...........#*#*#** ", " * * *#*#*#*#*#* * * ** ", " * * * * * * * * ** ", " * *** * * * ** ", " * *** * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ", " ########### ", " ############### ", " ###.....########## ", " #............####### ", " #................##### ", " *.....................# ", " #......................* ", " *......................# ", " #......................* ", " **....................#* ", " **#*............#*#..* * ", " * *#*......#*#* * *#* * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * ", " * * * * * * * ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ", " ########### ", " ############### ", " ###.....########## ", " #............####### ", " #................##### ", " *.....................# ", " #......................* ", " *......................# ", " #......................* ", " **....................#* ", " **#*............#*#..* * ", " * *#*......#*#* * *#* * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * ", " * * * * * * * ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ", " ########### ", " ############### ", " ###.....########## ", " #............####### ", " #................##### ", " *.....................# ", " #......................* ", " *......................# ", " #......................* ", " **....................#* ", " **#*............#*#..* * ", " * *#*......#*#* * *#* * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * ", " * * * * * * * ", " * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * * ", " *#*#*#* * * ", " *#*#......*#*#* * ", " *..............#*# * **#* ", " *#..................*#*#...#* ", " *..........................* ", " *#..........................#* ", "* *..........................* *", " *#.........................# * ", "* *......................#* *", " * #*..............#*#*#* * ", " * * #*#.......#*#* * * * * ", " * * *#*#*#* * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " *#*#*# ", " #*#......*#*#* ", " *..............#*# *#* ", " #..................*#*#...# ", " *..........................* ", " #..........................# ", " *..........................* ", " #.........................#* ", " **......................#* * ", " **#*..............#*#*#* * * ", " * *#*#.......#*#* * * * * ", " * * * *#*#*#* * * * * * * ", " * * * * * * * * * * * ", " * * * * * * * ", " * * * * ", " ", " ", " "}; cuyo-2.1.0/data/pics/bpPinguP.xpm.gz0000644000175000017500000000200511543455110014146 00000000000000dDM]k@_q檕(",N "Z w7;I|gv7$B;P99y̤qN:>]W?>]~uݷ5Y=A/Ύ.5~^M[Փzu7ԫZzuGZEzqWiaN6`+CۙCmP.E ^ "a^R\lQ97؟Ρ Yqya\A=ýP.ӡ:{ts!U;RKv9tAq .'s0]:tA);,p`8p1}ג#0U}{!do(EOc's9n(ύCU XAT;rʡAnAc(X:`bAџKT\aћk6G/Qan SPYnv`PQnEqޣX@wsY>yS׃bndy܆rpFpq`R0ڣWxFqPspysi@9n>.-eW}Y9OwC Jq"yjE9r14a :D?C `.Ę??OcC%1A'w g?pP)Js?H^ dQ`l t{z!j(..?gs-i}gT@|O[|8T2?|CQ|qTkn{2cuyo-2.1.0/data/pics/jjWinter1e.xpm.gz0000644000175000017500000000702211657577001014462 00000000000000[Mo]]׿%/4DeɆaHke#hH^({ə3sғ/}9k7/?~i_?Y??Wo?/cϋWӮ^x~ϣۛ7wzQzU~{]^=O~۫GwwwozWc1XM~ۛO7׽z߫7wo>woo?,E"~FY+o d{ qz[&u9b`g$ <y$|[ 1z*;1@(0JJbq$0A}$k7 LD0fT'V[12pСαgoW,(8&=F:C(co:Ŭ9;0(tPL%Jč0*00E7!4tȭ;b#НS|20iB$1HlkLl˥N^ -Ħ:DD Vs%Y:CPUg!O HDR)rag  5 Q04252 h+eOv \&h8cCL D9S "hksqhh ,BWh08Fa)hx;dDXoT\l bvN]'z'; O1QEhoqh&HU' rMzҦp ~*}܅3ųBh%qC>!!E]kc-I1t𠲲[P %z%*("`)T,Z|3h=ULC5D5`ӂbTtP,^g;0vr |! NjZfw`ׯWN  Е0ז.t[ZcN}k_;Q$ :11β v Ƈ=] #e & KNg s,F,bH}k@$J lnJ6}C(cÓhG00<(( 30<ѲXʚ>})kc0Chz@G-I'HSŰh\Ԙ{L;UIJ0mƈCZ.|oMP#Q\fŰ8M1Qa,2gIc [W6[f,:Hi̞_zV_P/6&(jx刈[1R!A]1 T%"jI7'-)%ap ۂՑ>oLw0GQ@*<:3!rLKގB^"7$^#6N7oVxnp 3h@*MSzQwd_! BYo.`;(MuqC Gan~k)ъA􄾓k)cHnC˯dv1 /]*-6*9USZb LT4h# Żrv/bhsD qCPRjcb<@LL ]>A{1Vp5f$|DZݦK: vS bةf V6cմkby_Tw !GMP˖Xٛ :XJ,CGvE( [QN>}UF8w&Zr 7@>*,I23)(Y#,Y^ѫ\C>hG.|=H&|^VٶQ. 0x\ ϳ0  P ٷp|CNY8Wg$ `Š)i 2,@431-A4 pϙ#~CQi=nrtGR 6 r? ra_[ b֊!0zq?-}lkrq!|oorHHDmw|lk>xJptq, Y9&o Qq?nh[ 8#ERVv64J!DeV*jäzE]&b) RɳJm|Bдd;f][bPIE aDI6"BS991brnbAJJfؘЫc;L\vwlwrrvT *UiK0`Qms]NЗQ:e]% Ag95&M]/L/{=FkȒBpf~pAZ*^xQx&hf+[y^yMI#wo^ѽPW\!G-`;YM#/s/8 = :"MW0Si2ˡ2aĒ V 33 Er<*~$ؽw.f"0`ޑ.,J ko| C5Cq, l)gl]l53X1$dyb(]#SlX)0qRтGqӻ "=󑖋4H?y($J}$\6R<ЇN6>@rʑJ` 4ax""ZZC*zf22"ZK BT2i6 -14&̅H00,R$ub*ʙt0̭،aϑ#}+R9 3b9F CB# ռ<݃̾řyΧ嗇+uAܞqobHpxH@&^߱_b~% e}] ;}8BGicK;^!}.p> _pÅ6b'b%e݅k#_W<ga_ ˯+~՟\T  /Ccuyo-2.1.0/data/pics/igWeiss.xpm.gz0000644000175000017500000000067007550521112014041 00000000000000<igWeiss.xpmݖOK@S M'FښҴAHZo7)h LRmvw&VT;%ݒz'[/WAzJND!Q.Vtϯ$&AD';,D6&;puɞgdNKY$΢y4!'A8+@_+94?~02C鳌"%mb o2jLY1l_ep5!5c*aF\ C N6 `'˂VR! g2dZ # 2n vs%!,@d^kob28]k *)>X~nsI~ y?h}||/w08 9- cuyo-2.1.0/data/pics/mdPlastik00.xpm.gz0000644000175000017500000001454412412223264014524 00000000000000i[ϯQ [An0 AE[q,"4oUu"v CM0yVɒNH1=OSa s*܏?̊%q?8>/} y kb1[ð-fe lm.&o+`0# cMe5 S6'bm He w%TC]`Ia>ek7(,X/\m*F kKJ \)`as=|??WdwHfGT`kvǥU(/؏w),E>.[\Q AT*"~0QXPp?)nZ# b,4Z`xLkB`fkRXp?&JaxFV(r1,>%ł^Q͓o*;b|M  tw@)-D\hG- k ) tǰ-6CPSʰKa$A~C92)!(TK;DeSw$onHߧ! w E>PeBmW.ҎFX8/))sEbrF~DS f7~VΔ)%9_"[R0P(rlP'rFɲ ERK(wiPStD^8vtyMQ~z*~8*+um 5Ndkr]4uwjIz(mllHw6ߵ.b[.x(1]u 5d81!lY`Ǜ( lܽڶ`}~`*y_넠q]ufAMm̂I``,i/^O [P ˲iY7&!e" 5H,dh!Y, )1eYeW08:o!VH/%YPqOxe@J Xc2?aca +,~KŊíL,KI n~` =ħP:`5>bvcLN!!x .C@0| :!` v-Q :Yˀi$@ %g!f :! c贿p$-#X!sد^QBVx, ch=\ճҠt-BoFxA ev<0u)C0`| p~ `M :O{ߋ `9&怰%"`! ]jbDw ;sz‰  VT}Rd:vеK ]` #‰@"T&Q &³P4rv}Zt.psq̂t`!)2<~π~?(?`tι.haʐMex=&_~71ؿf8zך.²pjU`8^4B51Pi._>b3eXY9f&`'hhA3@ /‚@b{e71| H<0^0NO%P2HB4q6A @ܞLP AT"*eIR4HĄ,V02-f!dAw-T9;_B`&q`! Ti͞2uݰtR (Z B"1 08cB t6,?(= MGDTaPNa>iJƕ#ռx 3X`0 ]T\`,!pؚ4XГ܉:0PZZZ% G\`"h i -C~-evтP,c\U),T".gPW0,G E`b- *IBya9n=@"y$!PEUg_~Nҵͳn"`iM^2`P& {{N`b4CT H-g\yi< =[՘W@蘔7 x3&!BghAB⨅\1,GBIe<B7`1AN|pA`l*p :wcuŵ%< Y0C$º ֏; GJ' b\B>ٜ6OA"/\AЍUؠ$¨:oB۷ YՁ8abp&w_lYHxB -pA,HDb> 'ݵ=p<,05,NgFkO] j '= 4(JFx,h.6)_-Ӟ> O&  .c'>B[ZZ )!|fͳ>}!Br*]Z3M1Z$"`;`:%,`Ddpص0`>ILԞu5IlwIDSNB/hM_ -;x1a ,"P!@: ];xn^QdL/a9mus$∀ԺkR}'.ͫ X3i.:YmN`g! v!<(|$'"׼/wqƆYPh>e ^-Cuz_㥿ZA }HW'ba[n7HD|::e :t)gÞkATB؂,\ 0vp=`XxKM#۹*:މ  a  XqQĠdtMDU_σA&³0]=ϠY-+W!lzߚ1' 3f_w-#H,@)q-u- z#Қ C>{ܯ Г[C/w¼! !3wyc"S2#DLaqBM7 ѷ} bX,m݈YH'3}|VZ01,W>SjgA" @ gY;8o{4\A"Z /4!)v1-ZZۍHD̈́7wD ^"2b,ZĔί-ƊO\H,I|,#Hj`AˑYBv}u%M^)Ne^?iս)K[h||vKc= U cJ 18Qo,{0tz8-W d}Z\N A'ef?qp˱%BžM/eo #"YI-Jl- ~"|f%UXF{ ,4_ ,d`ϓ;  |!\!ta0ɱ:, h9`_*Q3%‚\ v+ǸkMD>X0;928!S@k]3 =<$Arҵp< +M0@~A}jZKƑ W<>& @^.LsBnơQr{M܈ޏQeC"y{L5o咋d ^3% Q{Ό'Bc>?Rh~n;-B/M!ݔ˹c!W-Gejds<q-hTا-'1~CS<ꐂ$ԩ]#d 0:ڛ C<W@=%´bβx `S"Nv =kB x)$-<j.NSB)2ywt֑)pHJd)ͣ] uN ^OI4tœ{HK^dx /Lc&6;ڂT1AP% /_"~s,JBmf:d ׂ bKgB)5'|QW(-Ҙ$Ns84 %ٗ!c{?Yo*7AtLx@8Wi·SH#$#r移>,6'2-WP%k^[6H d?p'Q3 h 6+aa$ 4mM*z(R r& RH:P9. agE|@)!@s]"Y͈O $4bmCGVY[$ۄ'؊)Vq"F)`ۆ=3bam5y `xr B^jf5+' {d9A:^B0^A!ɵ`\̰wflv o[6]`!WPI^)B*R* !eE AQŰvdkSР` -Uh䇇EUlPJafp;WeFإ)7$te9O~`C!2BqIj~f/72l6IZppUT%)0 R?fx8^n BF%NՒ|8 #Ma@<p;勒[!ܣn3 /t:e8 2,a:%N&bH>Bca8qWR$IXB!X(DL1^zF5SPt=^ f1*M.Y$y %izVUc ˆ$Ė-<V:b^>éFTCQ B1cw C"\Nw FhhlDTc¹U;*FZڅVyţq&UYmaD%SU\ʓ(Jf(D :VrQ-؇_g 8Cs.-/Z96Xrh]&/B>5S6npRwCmcH5oNg9S9vWƋ]S~zɼ y4>`wv}lFZ0EAѠsXWv3NיvF s sA#ON_N1G|}}?DVcuyo-2.1.0/data/pics/mdPlastik02.xpm.gz0000644000175000017500000001007412412223265014521 00000000000000wF_+fd۱@@VI4:mtnw}q|̕GsHptP{q1}˯Mͻj}z}jW_sӮ_ƿֿV{SS0T0lVic0B8[ph/i2F#;:نTcmʜkyEpdtP6VJ7HQS,[Q* Tt#p.'::t. wأ0t;}*^5 Iȓ@!$_0X %5+Iɔfpd d8m*)MZzOjn9vuu)'wr} ֨R1=&}6 ƨ? ÔjHWt#:$?y / _0|admNKw=}"tj4ɠaI{a5&`m0mcum0 bիE];1½'z1bdh12:+;0H Mܚk`a5; aA&Eia#Ptp0+tW ʏ / D 4։QT,JI:|w Ips Bpc܉AT ) ( vAG\,ˠ 9FR4B"y/bJ;A0 jZP; «dHar{s3ncHpa@jl TUS57"|ǻXtBCsqIB U`c Dm0. tѣrFY F8NM"5 %XH2Bl$2R \ﻘ @+ax,Q>cSrb$CD^@ blȐ F@,tMR1Ą*hAckX7;,n-2qR|c 2 y/?e$;dJ()B^Դ-)$8K y5P+4a` i"h #`Ą)̀YIBHyxf-| 2$ 8`ࠚeL > ODҪDPPB@M ͝D 'ad'/ fj1 /8m:NDp=$t4 􈁮T O90kԈ+d859$ E=~` "aQ65GIG$ fU ON#P|7PY` 59B+`vX"(ʤaN.y{fkЪ`4[|H9\T&=**j`⼉p[mʕ^7AM( /ꓸT6]s29ys!V^hC^p\ÈJ*kS͖r\8[@Vya5-aLI-2cuTǤ($e8ccdxKkSD1:2'C|Rr-`*(- AM/,C^n0vNi؃yӁ WN4oNR*ad2*`4 44yS[rEQBb@@cP.L0gABU^-iZ!aN*,:oh{fd!ʇTYϥTZ甓mj\,o!S*X?r"Q0|fc[4pRA 7p7@8&* *8{iX07c5% d]{=Ʉ:* Ayi&LX&,6S =q& !*xX|@/EHmz&329Qh3`2OYR0AO 4Az&3\G!C3ɀy9 46aE5O )~zk|? aQYOZ XWʔd8[Q YC3M"x ` k5!Z3̥ E +cnhdtKJuP:Up湀U!B~wq+CZnhw]8ߦC5dHkTbUyl2,VP݁>-JA`H!cFa[g ڟǰNM,'-ϐ"< vBl0RȐDe Vy|@Y!rP;!~87BT2<auX0LÐm5-- 0co6x ö ;1fA0|$#o4oW f`w`xO67zOwX^o83 aeE,c]° fl3-k0lfH?CiaH_u0.d9)Ț 2{t*f=2Yɰ1U p}9$ 2ǐZdseɀSB6OpY)mʹW\!Ë[<'D1}s2Y$o0Џ.ǙfaXd.ugٕLV[Z0{"aˋbv2"_{x1,+|^bw9Z]z$`@flz}S`K7d_//b%D ?W72ƥ |}gJT0dzW`ҽv\3H+~?ΰ;Kwm@ L E U1noG e0WO/.=|/܏_?T1LncT1u:Z.Y" Na2݇!;!.;{`}͞|OF1'mY+ rlap %1лfz|L'𯓓qGcuyo-2.1.0/data/pics/bxBall88.xpm.gz0000644000175000017500000000475310361553650014027 00000000000000b=bxBall88.xpmSJhF`Ƞ<֎EF[߾ݧ$ܻUU3-sNwMvY2iLCLv@j@/$Ma  )T>ٖ2\VuZ Ȯ.04rDںۄ{uͽ $$Ȏ#(S"'*u2sW= 9.w,ADѥK-h s`S^>U:"7 Z%f4Q $I$ hSYv *cYEӟJtzTfAB@z") "$1<_Œ8)l"^R ]G_@*40ytͶ'IG JvQ}6t3t֢(1y;Y:R UF!BOgXjcAhbU ^YZ -c&"@|tS^Hʜy 3K!Q ң x<#aدӠ?҇3xʏZ{c ߇+QRg$ !aKjdM0I! aUCflT1P p Mo}A^ՌtшH$0mHF0P)峙=vINFǛ##><_vU:4O4B`Vnl"^53h+0$?"&ק⯭ 1aX5?yd qSVE]2TeS|=ӏodyx 0:wW$ZTd, ?UvQNth2C&D0(([.8x yqn]Qs@\CE|`n.6+ ]*cOFb?K$gC&z*82jXџ˒ܖ7² 2μriK@;^q~}.ZV"aj:3Xjֻ[2H/n[2LJ^.Iz-+fԛ ,hf{l+eFi+C1$VMf\+})[@zX>ƼĎ}o"XCƱﭭuVZܵ&[<F|M$QL]ٽ[rsY%d~8L! \U,xY㌃:VXř_Za D2 tPpٟvCՓFX!bZ}ɼ m#!!z]ҏG-ľW].F^wAVc s(b0>G~2^H}28գxEA5&@q"[K҂;fs5d6Aû;nIOcgGF^b%f:dFL(:+rY<^b C1r,Q@=VYa >>c yzQr`W?tO]?eXE8?/e)-xp~6']?EYSu)(?\ KEG%޺2Q )vQx0.6g7LAd%^?><.iyP`r5p$?B@]4C5CG N) W8Y{&|~L7_No˯otb˻tb|ͫz~u}w}7]^Nt.oosܿ>N޻ۃVF6ŃWׯLg,eE 68Hz83?4FO +҈@HFfMu3ع4Fa j1)I% 076l"@ y`q2&9."s;'D甊4΋"ZݒˢC1i`>AK jۖ!J)K亨u$\NR1@ qu)Ԑ0vewpH(,jæ-1V K0D%7|s urZv*/-d0Sd#Nqqd ܗ18aG0!CKs7[mf޾]VUcʤT3 >-7ba=FcC5 N,Àa9ƆKZopr\\!ŭoDp >\,Nj@*8J0kvNy,) ߮* Iacaf}Ev{aX}Bk81l$W OqycO  O{|068! 9ht|dE0|< z[huXZC/+tP8!t{v V @;P<d˾0҂M38}SHMҝI48CHټ5r*HtkkRV8dX̅&\1T $RW~Yq\0B&{C3gI)F#$1M|iT,7ߘI=9,"7(˘}(17A ,y39#k܄ `6%b ߌ5D[JN"[iBNaT o34Bk-LFJ@p X, *[ KrUb"BaAk&eDbȿ% C Y{dtM_HFwؚlD#LJ}L;s%ߥ?yfǐRL;3 d); !9ZÈ!e375h%7UQ+Ntu];X!ҡMe2P煯ۙҊPgB*19 Ę]Bf A}t<#Ȗ = !%%>j6@ns/tb_%dFbnI&1΂///_ i͚AIq ׋ wX0Kc_xؑ8KBj/avWW)Zۦ7"9zb[_&? a[%~9Q)^fI}n&w @oP( c麉Kuq&+a7šXP73]A` 6M3R1cEcd8;GZ0R . 5X;2x6vM,젴\l `-NnCn!&&sR#w/1fGs\NO3d &QApUX`hBUf?g1yH5? Q;vCM.Z=dD+bGkuԓ%b>)NCNr##Zk.QbpI '|!HUO q!W.w5^*H\ &<1XISd+dcm&9V†F⑾÷lUfG4&Ө%)d1b CbPf !B / f!A=ˠ߻Mm!j2i{YSR\*6|JHJ(RJ5wմ D8y4h-h-U r̭PGc;1aBn,"=˛AmB&G nHC;қEch2*%r1(]&G*/ehӛ ¶>m&FX ݳ?aU1p5088vl-\Q5-|jA߮8# /2++ó\Bcuyo-2.1.0/data/pics/msRed4.xpm.gz0000644000175000017500000000524012401656723013573 00000000000000Xk{IeYaX2W&@fu͓⊐h6 ䷿U5Ðkv>]՗* Yik“oae/7/|[LBsƟOi{-8a`M2B*E(!ym QWpд`a;AEET=L2AꬎW67p`Cy%\p`G1!AB"A8AYB(&+I \ 6 ڬ*-T`!B\f6 ªuH'V b$φKJwUY`ÀA<<4* # EO?֬d2-)[g~n{A{q 0l۶8aKe~7:?x8lDƼBqw؃d1,8XL'1Sa588?+^xQp| P25zz^K4jL\ί ^ʕ3ڽ9_Nw|b!eg j `0Bk)&@&\mKrj\Aw~pOB4՞net|mN<&(rV{LftBZy- QP,^ &_~kuNvqTz|rh2yhuDز0չ-z "mKPR=O2ګzgR)_#.tw=ZyzIH-_4-TCe`x 㬍o>θT଎i|i:l,wt1pc@ưf4.x:[50P[7L[N?{Ge5a.p<鯽럗UDt>Kl-W4;^L]Mm}vjqPc{?ySj0!8(JX_5n|pEKV=wlF3m{X\kjDtA5^;x ?GON-$S!^c6.-fR7:3Ŷ}yyj D?O%}<i<5Hm`'VotOƝ|4z%MǻVEj+|ʾzŌYSЪ@=OF,:`VXm _Pcj.X3 XD1Cz?q~hBO !7vIؐ%u}0]olְS?8~n!;~Ҡ>,Kӳ " x.oT3)xTpY<j3BS`w[jL!p76ѐ:h~߶ڶT1ANwxX1Og?੅qPp<$N^c<:@ >o+ʐw;Ng1I #.es\$ $"94o(~paof{'+ ïGoXVt҄θ3Hdu6D C*#i*92 ˑ!L_We.qoB?9q̢=eD/Fy27!qn |ltل/lHjU{Y%Bk<(o$2ڣNtcwѹZ@j>//!`i#1^JIe"Ջ_<MæNb}6S j,EǏGxS*@ZSe{:uxCh4zp |DrlIdVVuJqyhøVU7]Տ:+ Kڢx`c 5.xhox)К+[XyPۅ\fC[`ۡ=e;O=Wv<~)6vkXڢF腠A)GX V_x}ux){]h}]E5[ &AT;(yԸݢfC/s-gsl.=n eKKLѧ;xyp~w يwΡC^f#͖wǞnm{m܍=*Vh 9〞'<ᖜ@1J*?JeE4fq5Bqϗamvc[ny^ en*=Rcsӱ3[p8eV7p{HZ(>V#7[^=Bg߽'%cuyo-2.1.0/data/pics/sbSunglas.xpm.gz0000644000175000017500000000046007550521124014370 00000000000000Mnk=sbSunglas.xpmA 0s~4f%]A "LH anMw=~be|: .;u;K]=`CGoi:4\MxM^vTak(yEH4u҈&1)5'g;ua*ޕ5ޖ%Db/LE/_WywXK~ʨѨϐ!C6T> |gM3|>d,QedJC4UddcdgC-c=8FD cuyo-2.1.0/data/pics/bpFreezeSchnee.xpm.gz0000644000175000017500000000106310361461707015323 00000000000000QO0ǟݧh5c2|hb !((QLukv1d2VݏoF#nD&TL'o#x5Kq7X.Ź8>'D؛חچt{: 5jx9 GjJ[ۉPIctHC3[ԎPftߦR3=d&, \C^[IRat)|NV`tC(󣼌ÒA&21:F)̈́[1\GGKݏ 1w#Z1d䚺]~ljd,.#S: RGKJG&2YHErd]F/ 4j7k]8qZT-dʖG(z$fތ@*394P͗K#*P;aNUیShŮ Šf5dDff4QJ 0 պ JwZ=QO5&oߡ2Y!9!it.z'[6of2⯳6cuyo-2.1.0/data/pics/mdEgoR07.xpm.gz0000644000175000017500000000355112412223251013750 00000000000000mW6Sxmqx--]v$Ƈ &u?al{u^K]m?wyjQ]Χv}zRmk֩i{OjX{GS3UQ6V.6u\~Nq+,.PZVӪse.:ʺݴ\PVmjc=.e[ .P-f!!JAKRe19K1KDԶ|6h߈hnrRŕ?cLnc]V qr 1:Y.ndc#jl2`2ƨ euVg e׮Z-.m.)x!$>qPZnc}_Ikٗ\2, %#*lX5JJl ߠQEDIhK`Cƺb2kڈFs~ƕFd'S&cho"e.s4w6aw䠴i~-S¥D#92%\NPh䩨 dBYcEԗ`"m6EșXU)㯗b73µu6ågap%%MƯsv .@wݠ`[Q2ZeeaL) ~KE(b&c߲{ Kɏ'i]8Y/֒ ۇ'Mq ;&VDA?ak0B"61y.Sncu o~L2!c2!c2!c $2j Luqlu#H !Rx&$3EHf?E.! Ÿ؋3z=}t6@xMfI cF+|t ($IJ%rɤǩ?tҦK ݑ'?@|0q) )yDQeFM&,J܉$E?p#(B<@q|>/fAT>0e 8@hˆ [1@T#hބyEG  >*G?Z8# /h.=EyT'|GMnLpAΣHNƀ[)>H& ɭ  eZD\yĽH4!AG/R0 oZd~Cf }ȮM7wxAʽin FNi ?br( eIg%`]nbyx͇m4'o׃+Ko,&Ň †0~JoQ68)1ei.V"(qd- VZҨsbg.bxܑ&(YX- R {؎h,ry&2,nR1 9*¯-KR? / ϯO!I  v];FܾZJ욼%չa_}ݺ9=z~#u=mOz^hj R|۟WuE`8T 0V?bJ(LQyQV 'ws?)3ܭV3'^?gվi*ߗU[jJmbh=G*2|cWiƐ1d CƐ1d CƐ1d C?cH?G%7cuyo-2.1.0/data/pics/mdEgoH.xpm.gz0000644000175000017500000000220512404657517013603 00000000000000YS:fiHCIR6BRְ)crr̙gH'߫G 3/[Fa~}׸;m͓ƭQ0..j( M Dql0ƤC<'ԣx mK fQSDbQ I~ZCc@7s=F% CxU+G"ZX2Rr}̖S$RsH?=KڪKUiDC2* C_[9cXd<]"e0{ p@>T(Q.IQH0ƪ%6u} So,14i+LNXA_N2@_]zV'qUQJ܀b2RR RDRʓYc$r &їڗ'SVK_S !1$~COFFn*w`\#k *:cTWTQS5qr΁˿IJQ&! "n\ wB{ [j$UڨrBlΝ ߫9&ƍ tb"0'=.B(QxЍ1iT LƶR D¼RaqߪVb  OUJ& +Ab w]WG7vhv1¿wY5UП:_γ:=Gm:}cF}7џcPXȩu т|\wY19:I{˧k&a :KFJy帟ssvu>b0G6.Jt-?Z1}_V޷F;a/V48pܚryhP's^Ǣ4197CG;~j Z41WGe{|1G{y8++;SKS;qTأy_96dqwucvՍz#f9D;wbU7R(Ў?}}O`m?%waS9wz<]?Վeq/S?'cuyo-2.1.0/data/pics/itGras.xpm.gz0000644000175000017500000000666012413057374013675 00000000000000[o8ǟBnbcɗiھb0lcP vav}X ?\xXD{[bDϏP%/cr5~?{o?3J˯~>f7Io72yzɓnLgIÛ'}P9%f}[*c~3eTwR!f_na6Ce'*KGT&טο`vo䎎Swtf?nHUϘrQ9eYpx?䷘},˩E~}(9\옎01Af3~tyFJrtTkiv)0=5 W64y)Yn?NIjή)g"2?X)ʡ30z iHMGg5Y!RLb0#p R}f8DCFw(8OYE&:×X()\HBfgN3}LF,G=NZ{EbE2f|$bZ+)mԋ;Fp$ܹ6 I+Rė4ExT dtH[CwFn bKmȕawh!M5G&&豼 *"ȦJKݸ=u=A”oHHn-xo`T6gzAJxAvd59бP3լ:FF fm9NI618XHզ 끡2M m_RXkhkPK#諚?b\tI'{u߿הr2hmaK܄FiN0٥PYGZcGDh4:w\ ?p4^ Ȼ9`O葁 n},#tcԒ*1j:lՠS+nGvP|şFDh;h}Ev)d8gtZ #mސÂf? 㦉q5?acG?rwA0ҞkZz[H#| k$K[ja%FtWUθޣl_.p. :.PgĚۭ Nȃ`V P_#K^iPp)!ˏ=8S!󻑝ft'<O# W`+d~fEpcW*;ytAj&cOM'(RO՝iƓ9W:+LתvƂHJ`Vn(@7uAKDOtctbhbs\va4 2xI#䙽< 0mRΖz8gz8gz8gz8gz8gz8gb̺=JzeWgͼB!mO@Fͳf,m//`ԯ}[?Q^r7`_#QdM@XE%^alj᮴*O]@z'$ \}̲ rҮR=#I5-4}tli6bNjV lk#<'Y[s.yQϖT`A/ՄuԌd$vP/|Y95^r[wy].MprJ|}UgSkqr$S}ŃJ%:QaBrҡ:iN0pJ'?jvM%vD[d63f4Ka\+ƋA#yi)#*!,IQKR@V_;0Rt V+^.KsҦGZo<49gtZa6b4ngw=gL2.+#CaG.3ØU_,xbU3Øؽ?ZE˸x/WL]K m댸(8憋~r33U/7uX V!P_rYe4Zy ~~4CB]xF>Y9x^gSL2# W b2?"Cفљٛs%xe\n*҅8MWS|aZ:M݅ V+(_8U+:jXg AKD tk/lA7F'qO[Ķ"gdtI0Gq[<܌ѿ'qR'qR'qR'qR'qR'qR'1~I*Dz$Rq? O@Fͳf,JO+@Ė%(mȕ잃~CjLLFcy [\FfdSkw%n\|F$[*\odϺDz|V֋3 %%Insc2F֍/DjV lk#<'Y[p/&j_{Nډj;0~g}Ɉ2M ,a,5qG' |Ҕz 'GMW5; 6Ÿ'GR-'ڄbȨGs l},#tcԒvB+zb|Elkh10?'*h=T#E1szX #mޓ+B>~=4㤨5?a cG?rw^^ƲΨ](_e, cIg`H jZuS3tWUvQg,ŋ3V*Lxkq *GSJ+V_N:k!ϏbHjN`gykޗBN}J+e^&ƏL'\B̊$eFgrfojHԝ=2tR*Voe>㣱l;NՔ+?uosSlt &kJ;FcA$%0NVn(@B7u@Z?s|ЍщEg{H=5].d\7#iWx;pk9>}gy[`=y~m[h,&ЉV*? H"HGKw{1:nx" X[S#%h^Aer3W/ &"}cuyo-2.1.0/data/pics/isBrett.xpm.gz0000644000175000017500000000643407550521115014052 00000000000000}<isBrett.xpmMuS(ؓxcge `C ,!=v=}q^>Ow߼}9=m}i_~o.秩s 11bC<:NyW]:P>4-MSr/ Ұ2cF>y e9C,_3p=cX>uy°ZrSNKbSnYV [Ǟc0Lu9fYrNp4  +̇6 by 1tcCC{?1!!y 1tcC ӡ|u>sx?AtLJ]:9|kIP/kP1']4lr+A/վH !}avLoAo]3]y0?^]:_syưc8xMsJװ;}9s}C<:1!{cCC bC<)[kPoA8s0RנVҲ;r.g˞sy⚒-4pM0_r._T.kX?u9{+ 7kPyCC bC<=1!!y 1tcC 1)u |82&ap}\/1, cFfq ͇Ks p}چ隺u>K_p|lx7 '  } eK>0܆g_G1!!y 1tca^bC<:1!Aa#j K8& Ë=xޭA7\U}\ $K`zM0lFה)ean caTr~02\?-{ynó/ #!y 1tcCbC<:1!au?°48}_?Tנ?̇O1lџ#^]:sX6mt 9aӰXov Wzc0ev*bΫrAEuy}aC<:1!Oy 1tcCC bp`úpΆI;+óeie /K4D1!y 1tcCC n仄5uaֲ|_ϡu6C`X5e>1, >̙6G y?9pMaz~8~~Ű1w<`o:`5)C>u 3یyCC bC<=1!!y 1tcC u |6ٲe\A8cxykPwd^ÉBqY;ǽeÙkP侻ٳSנ·=Kϛ>٧Aӟ9嶟S0moPנ C<:1!!yz8cCC bC<cU |>YU=SadsH0 Cs0,搬|8Ge 16!y 1tcxa`ȳ/ bC<:>!y 1tcCC n5a|Koa-_VנΧ'pr!>JC { ?̗{fpQ>cY]:_f>\yo\Opưk8:ܘ:o8~X`_pd]]:_ 3k SS7\- C<:1!!yz8cCC bC< zu~ *uO{܆g_G1!!y 1tca^bC<:1!Đ*bsp*IEyEZqV\Uu |K\|[]:$]_L\S4\0w_ِzq5XJC?ҰvzC #!y 1tcaxG<:1!!y 1tc(0d}/`ϡ<õ2kP뾯_(dn@Ȍap5AُmkP^lKmkP^lHOu~Ͽ o8t]1l>ی0!ןׯ!Ͼ0tcCC b萧<:1!!y 1tc(0 S5[Sq=u qP]:p0]v9`-[ _0vpby۫ S=v5=v Xr)7kPyCC bC<=1!!y 1tcCC!9 s`NPÁyEo887 y\C bC<2Ay 1tcCC ks*cuyo-2.1.0/data/pics/mdFels01.xpm.gz0000644000175000017500000000763712412223256014015 00000000000000\k[_x-hd}|Fc4j g"IԔ_ Is[@|x.fk=ݟ7~yqxuwo_]_^l 6c&~Ǎ^H-6:ܧٌ̟nm6G{nJGfQ5ŧ6w aOVl sM۵=6a4$f܍cByqK22|`3{~f2g䳹O/D8&3dl4J{܏ceF6a~(%dL8!a&Y22~l{)Mۄ%;dXԒ9拃8HyGlؤlS_+?O]7lQ9G٧|o7yzq c>b6ك`Ȩ{vďrl+|ΦILʮٴtY8xW|vjT5Q]_\dd՛G ys>2lALG+6S:Ȭܧ̫{TC>{}jaaw|6L!=!6lbcޓ#{׍vFؿDg??_C0f7'wLgK6X^߭{Y'6fOz>'lZcQ321d`2MA`N޽ǟG 1;>qV/;\|DlT+} vۼ@f Yqf5Z*!/Cb>om}7z[/UvpO>STz{~wT G첸C\ښnoo| ~͗?|WOUt5?,P@ 1{5;yP|5f[rܬn@P.ڢxxȲqFW#8O٪wH.l7ALurHNrL8cb`,a^~7 G~LR<_VBTEnVBK=yt,/hY3̍I1`+M.o6υhM&rA'4u#) ns9ܳX]XdsNh*GW"LcD,F>,b1k/Ç o'y., :ZN)˪JvYˍ%b'OwYv'u<.Ū'Rc9A,+#1wneBtޝ8Z3=!y@ =`,`$=~N_g t]BZx&P nP*6jTAy5Q$K'tVdRsT&c;ArG9)1\3Z%2̤q {^<ٲBO-ki񨯌pUi㉡_F_THuLjkmq[LNbI|?BVa(dzPNZ9-<]b|T*< QRbpkQs6<̒3O6NZOwZ-ont%[%\uL.T\h"h`Z"5.d+* # %a$OBEmv`VkAqQu# pWFe]3i!ilqYK\%q.ر`0vh|.jgQG9.Wr/A8}#o ,BNLZ+]CN1 4 9iM8 t/e.֗k[D׏]~qIil9N1\#:>gP1 uSl6cb,7ٱl~uKI)yɣfNR 3jĈggB~'UdRv"9~{p+ûzJA!h3Jd䋳]3yɴ(#򆊖9sF MNsA$ C[aJDĺ Ԑ )\PJkb%c𔛴No.6 !wUsmCE $MBALPw),k~}:̐J#T(2r3wA  1R= <E@S^0>nu if0#$%.ʚ'w0`d[^<$"PkZи0ZuJAnDGcuyo-2.1.0/data/pics/iwaObjekte.xpm.gz0000644000175000017500000000121210213076723014507 00000000000000|,Bgimp_temp.83267.xpmKk@s)wVٖ}kPJ&9 ޝYYrնRaHۑQn\k 'vt^%y~z|`l3C||'!Y!z<_[~/!rvaAG>( 1F1d ť!CLQC`$^A\c\&QDEhWv .aa{.2 2/J$ƳGAQ-dlɸ𲢸0mEpWZ SW@ @p0 Aquid.sLneWs U6 vcc4Aƫ n uدҧP3xQPVnTKa>m3AHD誗Tk%EѬN؇HejȐC<.6[> 2 21 xlFJ(WF"5uwD@qXށYeӀ*w4݂rܑ`0Da+Clξ CAdAdAdAdAdAdAdtj\~qOM/3cuyo-2.1.0/data/pics/bxBaer72.xpm.gz0000644000175000017500000000454210361553650014013 00000000000000b=bxBaer72.xpmkW)*&nK F8VHj$AH+;fٳ>PżDO;Ñ=:(g9/;R?4D G|$|P%q;r HH.ú,Od Jd^9^|2593"ykґM>H5s0\lgd:H9r") ^`]"l P"~ ~ID)d2-@ U^b7 Re bwXIڛ%TdC YMYEC)* $Bd[4& EI .ewj>,L*!"i|\E` e 5CQ.*<rCgtQ.hq<^ t} ^TYՉtef4YHûJJguUi-ilrjmɪM.@B8Kd+4S8訬ljk%/"? /"X~?9 )p90w;_cJq@EZ^bYs7䭌J4r>u71rI+9zڶj0SIHvmқ z`@ .Dl匆wY6L.P a k[VΙٮ]9U\ϮY˭lvs[z& A X]߽,߆nXmea Ym0y˾%\sH0mԶި2OIW6) m ʼnŎX2^ a\n1jUm|b.xuTb?h1PfYuAJ!%xGI q߇=T7]YWz{-cB:6`2U% t8_ːz@ !1(¯fgˌnŤA97(Î";21Ee\yN-D32N r53(/1P,sxCV0ҋ|FːKmc]Z` ˌ^q 2׍-!Oaf:ze88obWfC"w( {d#f4.C, upseArC_tT;=Ĥѫ2#mfd7g۶ힻon 330mR*Vkp Ǘ!#S/? t e4I%Z" KWIhĢ{'Xƕ4-Aka,F}߯VDiܜZ$1&Dq}mS} eݐsE%3B'Uq0/Ҥk!"{OEPV91R| {#ɌscxDSKv djChKؐ9$VPi3@DӃi7 6d`z}iLLBNzW˞Al>DC GEZ2F$lNؤ1Ky绕96)ltE û1P[*MӯN5a,.7:b(UQGGŃCkVz|jY[m bY-1} UJHS,n7gkHkHvxRΫ#Hj9vYCz~ZlcPimq~s`}qIl ņ cla7YE&I~w5)S|I utB0g̰`U׵BL37 gh>942QZX41퉲wa}O(Kk5yc@6%GBY(ݴ1\LB$<خX3^۲$S]AĀUQEPnA!5C4 A}&~Fky>C6& BDΠ,/{NmB@1 2u<"nhb" ",49qF``)<pVAːdȠ4FW>>O =ՠAr.xKK,$: XGdM?i냿y}T}+0xۇ3Bp't`hcڽT/$SA'4UM(H #d ZFcn33t~q 344i| *];?&@v  lnT8Dz ]{_R1УvKcuyo-2.1.0/data/pics/bpPinguN.xpm.gz0000644000175000017500000000154611543455110014155 000000000000000CMkAx${Jdj=E@!7KPk vϙMy -޼vvw6__~>]~uݷ-LO_gp)<[9l>^lj7qs;2m7g]pMimiZ9L w R .v9DC9d;e(`9l00<@@JqB]Xw_(7[lssowg9qx1, ݭϓA0f: kB\)i9CcX$0+î)sB[&E )9pݡ)/?bc\'$ ܁g.mV2OEm/ϿʬqFi8r؎" 8sׂDZC))+U?( G,Sx_3bb{5(__;';63@t e^^w̡ĹcP|r@AGSGC>/.9B; hs49sT# )d(ա1'{ ^ Qa?I00iXGQHTi|qtq r/{փp@= @z}áX_p(<b}#ppQإw3"1`C~Px:P88pp2حP?vJ2cuyo-2.1.0/data/pics/isTurmWeiss.xpm.gz0000644000175000017500000000064307550521116014731 00000000000000|<isTurmWeiss.xpmKPǟ_qp['r`YVDpA܏s⌈=zٗ3]Oǡ+r:F21G3r(NngӻI$OoӇG hu[Ft25צEC^(X` (6l/!] `ÅNv?e03L1KnD&`dP3rr^`eWd=BAYS! ݅vN3'E6 g]PLVs)Ȩ\l;!թk^(3to2?V#Sr(cuyo-2.1.0/data/pics/mtRoof3.xpm.gz0000644000175000017500000000261512401656726013774 00000000000000iSK+ *0{5HPI 1 IoV3zUr>P۫n:XDwm5`}a6e8bޠkV=[eXca 뀁7'bo6^9|bvava ;!hG0{c]s-c%xvHC- a1琷ph<Ɯw[Xz!oo;Zt"}(Vhmk.,&ck.ܔs@|v,ePQ{>!s:ly]gx5uj:3Og2c4[/dAMa։*/9.~^~+%w5ŵ P(4 .Sq:ɸnD>p?Q{3HY-i^S s, :Ҩ-p*wKqk?[GIE#$01ES}XDnstO.ud+>GUsRvӺpLz7G:ǣ&cٮӍȕ8N^t#XS%lƲ'[.vv[߭UK˻ar.I 7 _WZZe)[Wu+xQ\{η%cuyo-2.1.0/data/pics/mdHolz06.xpm.gz0000644000175000017500000000464112412223263014033 00000000000000}WSq(-L2x0IX@ui[E=ZϞ=p9{]wRIf?eLvk5ލ۬5v>z][}qkDVyZ-a=Xrp1U d,0.4\ PX g.P.Fh2 yJUb4(.Y2U gPYAjgn*_ }U[9;Kq]4YV JM+[YG$ęV ѣ ΢׃%+F E0 qEhW*vT Bc4J?n3c0))l9B0N\$`q(}(0.jw1fpy)l k. Xm;E$A";(uZ]w5M]^8Eg%JPJ3RT !2PV'{61 Sgy1 ޺1w.`zҤilIȅ<%mt2WjpQd [4㔶[oq T0 )%3kUҧ310i.c+A%g XѥW!٧ Nj2xF ձ軱1(}2 6mh g]+(- ma-?$ʀrPb 4S{ '+JBqmܹ4%se2 XϨF?mK!@w p׌x~v9dQZ2ϛ~D(lQA?݉ eft؝sDww<7z]623tEm(Èڡ볫O^@VWWfYnSl(J!.=*igPcz(l-`xRcmoVЃd$iDYak4,)0-}/U RvWNJ@tl*9Կ0W20S8x 㺷 ks3 ?-h ˊ(2s C?{3c `gmr$7$ԃoAh0|빂XN˟Mq ԃRQšFW3S\0\s8%IPABY}9Oa0(-c"WA5@+0 S(]!.* RkMETEPT`P]A@9TI@I2h~  Z *b0W`$VchŐk#n2O*BB*02Drb9TdЭ4 9 ,1tN}m; Ҝs(=HsK͈ʼnj4YzpDL?y|wۓS_}z2W_O&I۪+z֓Q/TJ˺hJ.Xo𬧣^*/Z3;j@~2k߱)L>z]Mq7kp1VUX?&؟]M~W(uS?Ue7wȪXzG)ImX/X7eS 娷]a+F.ˮBj+ _6[AXt?t9+ (֫RֈM%KOյ,-7yw~^0ޞu_}ڶBgؿi|h,o.w<r{}7~0ٟ| _Ws+<7wuG;|oM=[!%[w/;W.)e+}x#P/Pe/7k$U'CJ?ؿA+l_1붮 ?=uѣoU9_-?zS+}@%뺲E{o}'ېWaGHoO[uO+!+e{;ߵ=h-B~?Y{Gx*пPՠx>'P7a̜ E֙睭:fa9W<'Z;kHd&Sr 01 ww$ꭱA``mAG_-1a#!ط0ϻ cCsIR1%)׮pT[rp?xJ!B¾CdN獓M窫 ty6w|R/xKMUYzh{"_\̿9̟?`3]7X/G<C_ |2]y͡CGyUM$๴Ah dy ϒo_K{ֳy) W ^n?~ vۄyڎa>| ~9;aڿF}>-0`,"_{t~i~'_?tls_Zwޗ]9 Oa! :`:x9<&G3i>zy~VaAAGj2C3ғǿ0jͫf*076(F0Uey s[־B sv0i'- ޷p6i,=ÜbsR5W3 Ūy_`0l,:\F4\vD{aj5?|b}I{anƄ00b s۬76 6Ka|+ hпk_(f}׻&\gIBqjh0W%0 /üoAqjxh?K/>_鴃cK۹anhk[c@K s:08?ͅfNzi~Ya` 6/a :N sOaY3i%#0*_ sOc; h3߰@ !o|5ÜVޚaLC>殡@uL!@NaQtۨS{E:,ƚaޡ8؋ | s)b[Er5PD}#an0űܷ*qP]0mчë8B8#O: 1.G_\}͆χ Up?󜶾%xۗy`.j3DPOy.-8 ܹAHx:<7Ec1sC} {W¡L]xS?Xςyni3ø8h3seB}nQ#y>%PyK㱹Gڬ  qqͷ!y?Ag|%q/C{7QoC͐kCy50?]^c>:]քϾp/\ΡR[7_] ;< LPon e_؟Àm2ьxO:!B7 vQ ֡>?lm1>sܢc}/sg3WoynB=1ϭq}wn:^sKa/~韨O?yn<-"ko#_cĬ]t9ZMp3 y>Ges?S"7c;o <̘~ϘCæ̅|цu? Gc}{ 1}`.yKv- ||1iͅ;Cvej(QT `Kd@(["D9%Ȁ(QDDr%2 J-Ql ` 2K"9q.x>@8^%|{f~~hKb<>'Fd% ͣ>/<]v<;x3%ɂI^.&hSDz$ϏIÆ1Dhzdp>r~xm$Z~t!Gh?`;"{s$}^ΑI >G}gj{&{I2?!Gh7bybj>FY}cS/[}w0` NvK!Gh?|&WęS$N}{Q;m>G Q⽗K}y) 610Eqvm?Gh-#Nz9CvX -bcݶ'y}92([ ڬǿ3CDֺ]řO=lL-{wf;>=ْ,'t{~PG|AOدyCɛ䍨vf/{k?fkKciz8;ov`~}ۋJ&l7'!ƿe{B~f7cޗi_x앴Ύ o=B)SO2>',+z~7&XNO^}=݆e^ck_4o]b@Ǟ;L>ۿ<)0m^<$KQNfrMaj s=OU8,[-iDo\\)Sϐ8i}MZ5:~[6WA1M?fl ?MWUf}u,;m{a/ >-߹BϦ`}:@(["D9%Ȁ(Q3_)M Ξ_.~_{l2E߭~jrv+? >H٩Y||mGyD>ߦ,OwMщF\fUa:Ed*Irzz1ɑkS+n_EV'HNlfۿ7wJ? Ze~v|mڿ V+.y1C2.g6)qH3Q/i9$(<|{%]'&nn#i|~ ٥mg$f Snm=JSIWm>C mُO&Uq5y)Z_PN +uu}TM'wYL^ˮ &bxqp$[c kyp#_}9O p Yd`LUroqy1 s"}79W`$, _ /vDY8W[f7@-Hhh h_;Q@4@)Ծ`3Z4?8ʇw)P ߆Ogt:2 Ghh8!H Zz>IzkE14A^')jav?GD~K\/8x>םoX2ΞLCѩ}A߇?'#z\zPki*v:s4HX>,/͂uÀ`@|ղ)@;c|4Wn?T|Gۡ/}$@ ꇚV6j`FB g\} T]e=JP"O| w(<o~"Og<|.ڕ|  \o`;{$.?o&fEx+|Q zEnD='`} = DŽ@O"?[(>l ?s'!>]?y(?Ahb+'@HuG5fmURO=CEy$@] WK`N|R@* d׸8" -q~<z  d j D^4M`a>pS6~Dc:!#O _75U5'(|/PvxO]ތ%g 6|#>$i Ldd4߿W3=b!c-pq)@Af^"DH4 f4._!a1*@S@%H;w,걓O ˟/#"@[K 2UO#:qqO xN2[|P@p y8IOeDeC!`/@x>xv ( PV@y"8/ixG@Oť+4zYFV@ 86d_ؐrNN =yC~"}i4uM1 ˌ9\F唜!(pabg&;m!M 1/ @t'(AF< 0QQF@(6$yߓ}80"Jye"֞# Hf+HbGѾ#(b,\!I&~b=4}fᎍ|P' yrx=PC X `4b^| |yM{оȗ/MS<'7Om$O- x2^@i (O eEA,?B>@D<y`8!F `Q/P 翤1( DL'`>;P $,lx-\l`betLb?*ަ9< 8@o:(b\|9B bd= (@ =OkˀW1 xXx}À8:$cǚ&Hd uz1舠:c>a(!bH9:^@ hS^=tN@ΡmC??0 FdEzX^/bd0`p@*' _yiFy)Oz `T  `^3Qm$? 83ux+q`fT4Гzdž@X1sh"bo'`v_ѫT6wEрT P",E \''@&<'Pр +xfpF &2Dw/_L^@y6EѠ2h@ԁH(ODNdHBjvg`\@dX <& aN =;'0 "C ӉH@SHZRn.mFƜ\XuqÀ(#XO*O`+"&@Dx&he9Ab7́i,i|@#k 'W+qVpU_O?n [P4b>1Z4 H@өl P"blWKĀGPE1/ P5B;;} pƘ!L,¼․B I_ H7𔢁 ƠOQ,`d g=8;4:Н{ d0/Cd8* /MÀl@,D`ͮ@`d:eWٙAM4ypB 81ˀ].@e|b~U|^[#/ϡǀ`hN`!(03']3@'sL<9ߴ'P2Y&@IS`<=w؜V#^>{q2@b_' H| .| )p)+.cp0uNpy@ Bϑ'rŠ- 0z}:P>BhJ8? *x-]Wl$"17Po+W݂.phDbo^l{r+* 0(`2DbG ,\SlMȱ v( [0^v(uüz ,dS> @8/pľ!MS Djj^ zMϢ<pQz^@Vq @(-"@," y(Qcyih&(2`4/=w)9pVXZs^lkD!П վAM!opဉ #C%$9WX<󯣕, NV@Cۿ&m1Bk)`"s17@C lj*##t$zׇg?(n6h<, "_:p) lo3FHQ`C^* (9^NSO-|<,ӚsM< f $`Jk,}c(8a T\ck?br ~翋6I䚾Gw3 $Hؿ"@hmw !w(X[ލ(`8@@vkO ]1jfw:"m!v׀7Vd :V;FbkEkl-c(70x Jh~ȝ'ЎA{U<@@oj޹!F'dWȬe!>Se+?{xl+3tlL=#{vT0nI3ta+_D=e?!߰y9{3Fd;ϐ8S` fא"@ p:{" hX3>Ҿ{@3;yϐ d"u34e!gKp)ib4 /9a3:xLeV6T/\ A?w~oLzeW_afAl*8`/p ^L>R.p<HI,\!S\dXp6{ }:~@*g+hXFv a7$_ʯ&E@8rfT }5Ԑn?|_wR^@EoQFWh-@ p_MAyi[ ^A_o!<,#N<^́$ ,P_hbu$z՚vZHOq FZ EY}e|P Mg# &`!eQ%!}:B-> ?K;-лBUdh0y$o*E]~QDP5E%oP?q_@oY(Ā#Тv-GQ$UqpRL#d> 'vSþUA3;ǑtD7UE}x Z.?`l lEtb('~ =s{+'tݬ̊']e]H7UEAP#p`7UQ(JՃ@pT5I(pWe_O"]E{XeO*Mp#ahMҟUE@m?c[!>o[[pm;߱3FJ)~KɀRJR2R (-%J)~KɀRJR2R (-%J)~KɀRJR2R (-%J)~K6d wPXnR_wAo`:/8\kj/K;%\'XT /K)#ZϞ .x_wS?Q[\!yNXt弻(KR;=ܞ99w~_59C5 [W- O\e{j*KRlю_#JDϙ~_9=1Ob^# $}vx_wNs#>/b.JRԿCqӂ7ܼbt^T=~ ׉eyPяqw{E/'Q]ӏ B\g#&xU{ ~_=UW=;%?~7n߉dN' OůB~>; K(\o1^Sމ7{i/GQW'HGWȠ/џfgo\w޿mo}qf[#- Nc3ԾYseGv/I' wq*gr/Ecq /|7oiS?F3s1=!~g8`h-gZXr>\vЖ}{_r/H?ֶWo `uJ ywKI(6XA"t~k6)+?{.|}~o_.Rņžb_?BUEv )L?F- bסkua on~~Jl|VE+nw\G9{"q@nh=̀gl9c~>y$bvkH鿶ûX-_>X[^Ov?'Fy}b(rh7?'@6ɢXϯ-L?]:}Ÿl_WWtQrso?G_n=׮j 짳vy@)o)PJ)[JRr3AV h哬~fD[lJmsl˟KgA&_t7d[|r|X|E9(_+]r>ӢsNUdI4d&aO&ծO0b\w~[O@A#v?-.ٕe/3>†j!>"bwr倘g' ]'6Ȗkq ,:`oX/?y/_w7+9,*|qkvSyr  w fwa*SWęگw-5]p/WW-9'vPh;G_K![bK ~<8fUK?G/G ZYB? |&| ^X\0e ~hrP^j\&B+=DwGh(c Fw9WX?8td?ވ $."_ ƔwU?>A#KxV߉gfBN@Я|Ց%d_~K 8@ P_F( pH!O _fbġ)_/Y$S?p|w8 u훵Tv~!_ 6=~M ~{b@8~7ľx=~JF4B?8"^JpJ?oQ~Vr8p!G UX P%TU|g(grOKO+X=ؾ;+:DpNb.a$_ݿо@ vl >{YM(A:H~ ?90n({?x[$T?t>P (& S@.Id﨎@\+g욋}`;⢃~=˯Wx#́Q}bӨ{-^|Ɩ@p7cp@W [i*&M(1 89L#O d⫖MpG!կ]@D#@{@#PR W?ޟڄxȀ`;T>xE`@ g'olW07"pFK ;`(p?7@:Բo (+c6@`쑸xs#Ƈys@O+r#X|䓢)kCM S` =_*MY'qQ}v^@aKbUM5'ʁı0>=_o(@ ld''mYE케xD'9q( duWHo4FD&FEv^B8bTq1*LXCOXI2".wr5 oI~ٷp\CA D <2``Lz,#*}IOEV xESg p7Gw/QQPe;5ذS|5܈0^[,ʖ x= cA'`>;`)Єr<Mo0DcFsOA:&5 P@1 xk` 0F pM4&2Dw/_L^@yZ"thPt4 "? =; H0 _H lKD9 ghU@:0 "C ӉH@SH(7  D X wRc ~cgE@4Zh(#0 Q@13I zV iD H3dI3@ ^ JOBiVxU_O?ndP4@Ԣ gP MG 0 NV DE Ā;R$_ i*wV (=1(;ct; 0@ JR8N'ߤگhxJHMcп'(0P2NIYc <&<cZ:} ]`f ( D4 .s}Z6bQG WؙAM4{1p@D h2`@~@=Ec^hÀ9Zۿ %X|?.CR8꩑0`0}v2pfyVfuFk9D6pN4'0ٿj2\P6`8+$(ij'?iM^#h`@#dd]#5&˹ 8 kG0,5ך+bI׆֜b1hf`/:/\/GG+\O0lr-69~ O@[_DpUu8pbA_ 9 0~@ {;o,0 *D90Y ؠAe-s }N~0<WP3 d!j Dw|y;/S9:gӹc( X0 Ld)`H(@њ`gwmF_-71+k Ԝl2c: 3]uBqW^aO39}, <ӱ`ۆ|ǕĀ(N45*97N,@1X|@.&ҳ n:!/(ęA9TNXQeFCovP*6q2 ;6ާWMi W@V>@N}+ @3N J@8/pľ`)e"K55/iv&gQ`l7/ z P  k @ (@ּ4 4p0CY}U%j!5J!C5^Pi$<iq́d2sHp8`#2wl# vAU5# ϿN{Ϭ?0n$F`˧v5hwlZ#M z h@eMF7<  ,yR$D h`S5!%Q GzU~5!֏yY ʯ&$ :[e/&)ء8u$uh)2,K8⠬9Tv~5!BL5T| ['׻Wc/eG;"sOՄqo 2ú >$hQ;iOa~5!+*\WlP^@q ]A_o_߫9$V:B-~eS$80AI5x@&ȉp8l_:B- $x:B8`H`Xk L&|_POBϒ/N#Pa#LZ!dsAzkJuz!`?^1]WH,TGjbD!k9Z'@U爫\bH!9d`N7UE9\>/^? $A 6hlM)}n~릪(ýp=@ +'` *2+tߖu1b"F*-;Zzq`|dN.>9w1QU_U}m>v>Va=?(oWTב?0KUEQOUE@m?c7;k{vuk߶mۿ]ln_wESKlNsZVHuJ<*KR.juVcW.KRn'j+:~/U:7.JRԿkq(s^>;yߥ~_E9C ܞuXWFwVT_wM?ƀAs 9ss)~_=ع[1_B_C_嵊(KRԿs^s_]b"JRԿ3.hUAt5܏=H,S_g3@_]xԿ_yq~*KWHY}*S +_c5_s&&}ADO 7Ga77u_ob^)b 1dJM qտ}C -w1Zz2A|GG{y/0B?7? ޑ+c=C@uP* < 7a:[ yW:voĞF}vvڿiX'{aHΙ7?E'} _ٗ $W{%X ׂ->o)G0RFhE_|/2*_~rvja_ zN{؁19?p5\gu rIw#VaY?d}O j8g_G3˭?®Up-O_o'HItφoٔyp|sO(7nZOCw9?H+T7C?X_ᾂHB@4X`Ÿh7Jdg⬰4'm &Dxt&O؉X%ĀK$?Ug[߶_oM v|7|Ϸň/Y졾' vl<rg9g_[jR??pz>Kt[7җsZn|RJR2R (-%J)~Kg`U۴7GoߺY>Wot߮߾Y>߶ e߶~s`[ĥ|E>)Kxba{yiO*pbp|=7k_Y YV_7 תX1Dk~-xdd?@? ۹g| [lp<.sq?`W삝OneU\x-:`b~/EEߚ]e5O?~ yhE ߅r Ru`d9F0DU?->C*?E| &ر8e,‡CĖx__g5֫ApQaiQ$ 3~tG&ȴnVh: Y fc=B6ص߱ z Nyw ֿ y<foD^T/@NO c?* ĥ?Let *X ,+NGZdsv DpN#p%RU k,K ,#N E'&#Q £"HJQ>5X=|lbPF$lBuW:}2!r;Yx>@Gq`M >b9ϵH H\?1$jך%'DnD# jw)--hѮs?33CϏ^Wz DrC_?~ `GP@$4R0C) _d~+kF _9Oz\v^C [=>31;+qP ZyYsFz O('/F [Cİ%?M} |DS3q?` )zq L'4r1Eu٠uj(hdZ8O%'|pO.ɱP) @>wyY 69x d@Eb=8")k| A!" WEM+i~E_ - _4O\ }x^ QK @4T deo=+(@@.CԙX-g| ;@.3_w>Gͤ'22ܯf EP^d`MZ4(+<f>% " gnm&(?m` e (? ĀE}^V4 "K~o`KYqI YOfdE"[ cB>?q@ %srRl D#!Od|Ÿ(: (P_f`@1* ɔā '@qEu꿆@XhK"-} okl G d yw}7`.rY4;d`#2 0@MyS ېC7@r0+KVR#x@,%a@; laj)x_LsH!0Ū<svL乩sWie9Ab7́i,i|@#kXY0ZBrxq'#0`0@Т gP MG 0 N?G P"blW*e1ੈ%:/Ph e2 hH&*$JR8N'ߤگhz; 8s ;fuFk9D6pN4'0ٿj2\P6`8+$(ij'?iM^#h`@j(yX +vטt>{jk[LL,0 Xk7-5VĒ^!P3iQ e0Z5B0Sch+ 42XN1 ~GO@[_D@4Г8?o=7lM l젲D~_ O y'~D` jTNܟ!`> 0+|i:!~^bVP`  ij1d&XGJ ߤ=bɵ& '~zP\ƕ`9k8j}YX0mmÀt>V#,Eq9pA P8q>`B2FA\7H y*'(FCovP*6q2 ;63r[Q9Ќ8`4Bp`#&ysSgyN:h\'^@`Ŋ k) L9 p(Cr, 5kX?/`W G|a^`=AHp EQF(>h`jW<ߣV !MS Djj^ zMϢ<ؚo^@Vq @(-"@," y(Qcyih&(2`4/`J$Ŷ+; x3/oCTkTDoМ9$[ N80Q]`ĻsHDCQထ|;*YKwzCioƍӇw;Yy mFȻsHHx ePDb;o&PـEͯu?"O@&"HG꥽B"_!_ 'E6U$k_G.6zA ^{m) z(^KZE0]pP0'ث3'Qud(X e{k\vyn*ZsV<1)K߱xKm_V+r,bGL]_oqw5 ~\WJ+юA=;8k}kԻ 9We" ffPUx{ ]j߀Z-|HZ#s[ @V-+& 0F!w J,JA Iy5˂H"ɮeqdg0=1-vbRΞYⓂ{F쨜`ⓒgH{9 ߗZ"p]-?kd?CWaUw ۼ3F" ȁwPR34Hc{;:(9`BjPvUU7(8}'t3)B{4+r (@ag~ y N/48Eh+~~@V%d' P]0 2! %G5ƤǑ^v_M(0< i$yAq^ |\`jBXסCƃ Ȱ .lAu5 mjB`+hXFv a7$_ʯ&E@8rfT }5 =&d3gźzH9ўjBVU U¹{:PTh$[G_%8`dǗj$IU9`N*3AI5x@&ȉp8l_:B- $x:B8`H`Xk 2*B'xE_zEzW&Sվ}ENk.O$PaY(U @۵->֑*U#wpN"uaCUC ;Eu.lE;>AgNtSSVpQudS d(T%GA@}MUQ? ?{{F@aWOATdV+bU8/* 3 `EVj+US QNp#RU8 i/P[o|Duˎ {vu࿽6onwRJR2R (-%J)~KɀRJR2R (-%J)~KɀRJR2R (-%J)~KɀRJߒ} 2N)fe_wE*/ۇ[]*,Ǻ*ﱪ]'T/K)D'8gvUTE&O]R/~ytb_tF%IFuR/~ s{Us:z^뻇R/~!EGUz*JRԿs3GL\؋]C$3#KRԿs.h6}oIllT;/Ke'+Z C_wF?ƀSyM*C_wN{!QA]坛(KR!hSWF;(K}>ĎXb5+49z R병}V;?/+Q\ݺ.{蓓84B&r껣{Oֿm/)ߤ[}u|EܑAJi~qQŴ> %@o7m7m7O_b >|c)կoS?^:qiu Rdk=ZqfCJz?;g,z7v5 ->oyXWGKVȁ;Y]G[P'+W毂 o߂Շwxb?ѯᅩZb-j˼&۝G@~/rXMR77ֿzTA|e6٣t]y/nn]Sb*@~7HK u8KHΎ7N#c|ϤK[z7ӯ?ɊB KL?@$w- 7҇ؗ*ֺ|RJR2R (-%J)~Kgi9}df |/ku|կ_|pmm~N/9o-J.9i|XmqƇxOl>,>wy^ڢ[b _h3C]_+ /@Dk8bo@z*VnLRdd?Bl-!c\aFa v8~٩? N *c`X|Єg<{ڒ9m1 @5Ùm>Bvať KMK3~kλ &k7 %Kvh<@c) |dNa~ ?90n)uz*oDXh:~m# b'@kwٟO'90We@l|/lkcA㈡ȿ={'_ 5y!‡ Oq,|>+h4Y{y,# 8ϡ&@ =oYZ1z/~0 \6e(`<`Nm_⫖M;WucK7ѡ/}$%V ZCMe+D̀`z/`Pg 2kB6&}u=JP s#C?=`0 :E"@2oÁG\ R>sw0bU \-cHS`>W=o5}{KO"}#l;?sp|9ڡ>̀A(\&_~@ o`DP?HR^#ZxG., =iɼIzVv\(գ?О@ C=7 [<`/iw=,{?āzA#G@_ >  %mꙟ 7\_KEvHX?9Q@A`W%`9q= #xHP~(* _?`Pnx? o`r,xV\>GcP #> _Oqp)>l ņsrRl $!AFV Z!U.NeF^`TN)@xע} >ǛuJ8lؒ|2`# Lgz y SP oϝ׶0dM=w#*`}/Hz `߿`⁰@F<2()Ox?<x` )}w`mm 9y,ؤq_5ܷx ąW1- 0_(6$xoyh􅏉%W1ȖsZ{R 4Ū^o:')`,b,\AS#1Ox[h?Mt40/p=`,]c~<UO^[,ʖ <x4",Oz}MGwF1( 1` N40^+Qz<P @ȉ (o18 09wUVRWÇ pM4V(]urs{n^hC?Tje !@`-ÀR 0+U>@&@@p6)2p2~:*H hXM$,fJ@2ඏ~6x*/ݓ @(yE>8e^c̐&ha^P q@֏7+i?R4p!R~dAX@8g'88"@k9 cr!_k`vɫ X`V>-]1(VWu1@3i<0@3e^AQHy'= ! R72$%_=$s l= 9Y:#p5T\~"zV"7Ӟ@^fS>gD%MMq0#g< k!C`@ V P8Oؿ d1`ŮE\ݓ־{nf^#i p "T6B0 Z!=;1` Fk"`,C1  !W hd۱p;e b@@kpm@~7'h'pbA_ 9 0~@ {;o,0 *D90yA4;쿥q@ra"A/'`J{pXd0xc O+Eq9pA PϹpb‏|"5pe.&ҳ n:!/(ęA9TNXQeFCovP*6q2 ;6ާWMi W@V>@N}+ @3^u8߼JHr@ٿ!f'\ N\4'/Gz,XC`Gr1pM?4(R OtR`ZS`ڿ&vpD~|^`.MF(>UdMŠ,9Լ9ֈי|^@Vz P  k @ (@ּ4 4p0CY}U%j`,nyc`wҀlkjgO@Łdjߠ&wU'.Z|yB$WX98pf9%F`˧v5hwlZ#M z h@eMF7<   Iy5˂H"ɮ%">So'{ϐ/D[|kJr ]iQ9'%=xKv-e?!߰yӿOGp{PsԻ/ubANV(/?7]'9C߉  i D+=Cc1 Pfؙ2{2OUhhoIE S?E!YѲ' sҡPoc4szYt< (0< i$y0Ȧ g/p ^L>R.C5!qHI,\!S\dXp6!YG__s`ש"AUhp&TѮeb!-EOORG|)>y/e tVA+cW1րQfXב@WP-s=_Z`_jB` (DҤ J8a:B-*#;EN$*TGU+4 |`:B~jM@:@Oq FZ EY}e_/Hk#!a (XGH;`PWuiQu?"3{Hׂux>铇ḎB_ B}AHBg:R^(@۵->֑*U#wpNtel0!Y!@ns׹}_"f'`H]Ń`]I6BMUHoqwTcgDv,DeAfœ.۲.F P#;+;"K8[;TOpE**UE׆jWcECaovHu9Sÿo_Ul$y@m?c7;kAkuW1RJ)[JRrd@)o)PJ)[JRrd@)o)PJ)[JRrd@)o)PJ)['eUR5UK~_}?d OźJTE='і~W=nuʒ٩N_wI?UStQ\fZ*ڥ~_MDmquI[`]MmR/~E ]R/~육>i9Y!v}n+zJ*KRP5׈b],٫IUKRԿ{sboB]eŽFR/~CQHL^Amy=~S XJ+DרdC_wJ?ƀsQJRԿs`,+PW2$JRԿsy?󆮲\PF=s~_9f*+ K+ F~L`FڻOO,+,]Ŀ?Σ_LOIx~f;5n{D# } /"B 'l DMB?v%0us۶KjA}N/~Fv?& 0`~j` a~vʔs}KF*XY V1zCߔpS۶K*u? H?vSbU<%xϖ\W Fɨ@}O* dK~?H a7ǟ|NW;*we|noQ5x.[V0a_L|Ob:B&Gʒط; $7Ӈ=bgZFnoE?`K_?wV|;}6{?G7XL 7',Zl{C *"b<폲rM|rZh9ʊկFvK[hExo>^cVO>|RJR2R (-%J)~Kg~|pJA.J&k7om[k?oϙl˟KgA&_t7d[|#b!|Ēh]6(_̧Y-qƾO빩EY=WjECVn ~תX1/1.ƻn-_' kE:n~7ŕ.Q6l[lFYwD#E;⺿q· 'v‡y{=?7|Cw~Sâ/a[wm9S9Y `;ZZ< Qx/U6†dK + k?gE9Hp;N]lv\3׽O9`⨰_\S?B&gSߕ5`Vc=29W5F5XfOŎ,#=DnN|z.}(^gpZ^W`'*?)«p?~kR>k%;pЃϑ&;XE:DwO}'$ ǖ%;-Ubym)j`5-YD?.*F B?lFF~Ygoez|DXf6#@gQ#&bxN?Aؚx^Gd?[~$/Gȥ SE_[\Ur ]<{ckU=m'K+ V5k.h`/>F[.7/(u8C ޟт7wýN<@e-Sl&]'?(ПO'pH\Z?zh8CAQkáǏ9Eݑ@uok vF=P`A\w?Ne-4F揍~ dA/pJSq4h@_?FQWy(0@"&:'ɈW-;3vrCE# $OK2c/XNdA})`FB g'ol("b Yip|D-#|dX7sm| U\Q@\?&jbCOoDF4Ht.r"@a+$s4 E| )Ve/a>?"ʉx"y$c$A "$@]~(x8PŽRQ ;/ œ KzVv^jQl}^UM rڟOU=LfXl^`@S=&;/ Π!_/C\vArP.(@ ld90;C->=ݬ怢Dv^@V nS(=#1 ^R<"# 8 WP$8oa D Q9.Ũ jLհ $je?zu@CSRj;hk +S]湩;_g`=-;o<xxH{ef+Zbl!(^d`MZ4(+<f>% " N ІYjqx@g->"NdlhD_K,ߟDQ7K9+嬸$@/;zhכt^GĮkCAf5K 9)P @Sed_R_}~9 '2o rJΐLYh O4`uJ8lؒ|K1=ACDĀi?.1`)xhIE`#NP@}nsb}7d7T }/Hz 4iv2a}1 o@±Xm P~ 1 < < 4e@%x h{о)Pр$O-@q_|U1)<0n (xlh/ B~O'DMY,j_COO^ىA'0^[,ʖ x= t<+bC'c4 4h`,=(k61@@tL(k Dfq6~l=m4Л!{V bd= (@ =OkˀW1 x[ H0`?΀GN;N h x 5 y1舠:q/ :4 lұ_ hS^=tN@Lb@ȊZ^kM 0g W 2 6HyУWbWPM!?0n# FO` 83ux+q`fT4Гzdž@X1sh"bo'`v_smMG:0 P",E&0~w=0N]8LfX10UVLd HE|Q0reH g4`:uZryMs3D/fpFFD6~cҳ*  D!.рD$)r@{` 8e^c̐&ha^P q@֏7+i?R4p!s; 0  S<c@c10 >3X7:3/CdDs.* /MÀl,o`g?[*N`<!vfP ̀ghм# ߇;N-{`Ы/H  ː|~< fNN@s@Y8*x?`1 Eo=Zl? ا| 4J `FπyZ5B&2 LOؿ d1`ŮE\j5bbb d9-:9ўe^_![+g?{ yhPD~(z8x?Z!~ ?`;nlA hm o= N,k!~bAŀ('|B?4;V8G ~00~E=CI¡@ā~Z0#x]'x4DNhǒ%adJ(0ܕRŀhړ^Mv|}BkkvG\3j ?ߵ^'q:c>\2g:L`0 BX\' H| .| )p)+.cp0uNpy@ Bϑ'rŠQv `4fu>bcA,`}zД"q d4طrq 4|yiuP`o^}% $9@3WuG]:ш߼]s[WS'6yAd?R0s"1?)Q6&XGD C 'O @|  D @?@R>?/8dFG8@d0<ѮD, c>dBO R b!ҼWz]'Y4/LPe ei^VHJ!C5^[r"ͯi8_-'Ȯ 09DU O|;7*YKw(4|;3û<ƁMZ##9z0hǡT6`d}`ݏPґ#A~Q l@/yY@/`SEu4R`C47g^rC^* (9^yKJ2jBZā#gVHUX!7 \*" hs*|E=Մ+Z 8"Asu6(/8 HگPJpȎ/H` u&,VGOrW (TGO{#O.-zbl+W_P4 _P+<"s1|H~_POB:Bﴨ:B V=º@NDT:BzkJuz!`?^1]WH,TGjbx!k9Z}#5IU:G\%*E!pdv* a_Q~񪌠O O|wAK}elMtS[l=]7UEA0{]?Q@Y C1MUQhGtw'ɮjѧzUZjūjNJGȀ+(pWe_`e1YuzXeO*Mp#vWUTWl$YU_-~ZDzB}E]ⷮ-;_yH)o)PJ)[JRrd@)o)PJ)[JRrd@)o)PJ)[JRrd@)of~oXnR_wAYEDE67-KR{jDNv\'ҩN_wI?USeOt\(.v_wS?Q[<2眐fV.KRzo:?ۜ]H;9/K;gJ? }:➖O=g]~cg5&It&"協~]7ړG5Igg~S ^jlI}~_)8^Q9k|C_wM?ƀF4'>z bпm~_w R^¹ƞXMރ8b/qKo~_5d1ڿ"rK~oRf.'Jpv(/7pxAk !m̀9AO?+QG}o7 ZAe@ٔk_PoP_k7~ց7lcqp;_F-1(hw] SAv?A֍ڏ {(п{Q 7Eq-~ZK6j[|/AZ`egt\}K_o&.(gOK! -??g7?~] fWgc`ɋnwr8=$jVOo7b/_[\Ɋ"#W~n?ӃǔU߰~UM_?}Q+/_/PJ)[JRrd@)oY_Inϳ r᏶_Y>O7YiVorD|Sݍ ׃-{A-A% e,κ>o}9f گ%P[fWnL<_q1ysm"<G2Z.0}ݿ8#l8 0[@VŎN?z-Y2gn>+Չ}|%\ͮ~SiTdo䴸bLU%]G qnF@̞F_Yy_)\h`" Xn*VV(u_w`$@~O_P7AL@uOϑk`s)=dž{drU9Xnw^ap\gOtu^WO@qe'"_ ƔwU?> o1avj Zg6_ߥ@__,$ ,ux[LP__B+o+#Nz/ x3yC (, >} Vl0_@`Yw~`K5/lC\_MMK5[ Ls~Ȓ5U:k`FԢFa@=ˮ@Oh٤'P aG| AX??Ʋ$"LQnkob-#|?C&jb6x|%` `? 2\pMQ xX?@a+7#g=KT3 r4j0@ާ$hDB#U?`Q|(R ;WdH99SBK(q䀥y=0 2$#PEF /'/?3qO=Ϋ@g)zq L'4ruـu=ipv^BaV%g/`;$ e+G@A9 >@Fv^@c0$cST=b(0A{o?{@g?Y#}y@zlVQ ;S/+}ڏx7. 3/ _a@@ijh \dg*鿃]9"F00`HO9D-1 TW O ˟/#"@[K 2UOB $U8gq)W P#&eX}l!:QGL!K-PzKhE2!@Os̲ 6>lq">c,`O gKsDD EQ~Z[~E@R΂ϲ)V 1|}ʇ` \}dh\C/ׂ})$srRl |K\ Odwl\L)́> ' ;A)O`%6@l^e8K<"@>([| @V<@@;wT>j|trY4;d`⁰@F<2()Ox 80"x)O>;EZ>/`V{! ݷFX BKkR̊Pb"׆s6> 0%(0/{W)LSb5@(c0](`! o^BM ~b8: 1 < < hOym9^I|0 !, 0z1/`>\|%G{оX?g=% /xl}F ~^O@yofXD ^&X~;P 0 ozÀM'KDŽfy1  8P ަ9< 8@oz?*Dy2;0`T`(/M6usi~m*b@ -$g@ԣ_ـ`XS@{e*&kЯ H1(0{ 1?9ȮC 5b>a(u:' αjxy)*O'sz6็)"kĺx+! VG reg R8UX7{ NM!?0n#j~P<54e[:#0{R0+fn P$Q,-L4bRE 僐jՐf@:sW}f'pM`0z` pb "d2m󃏕'f_> \i_@{\#thPt4 @d$`Sf87Azvg ,Eq9pA P8q>`1 H:'d |@jvgP9aEF AXˀ|8P@jr*ioE@3”@h`ݫ6bW`_I(7 +`nA!17/d9<9ɥD~菁k 8@ @Ϲ`.flxyJ8@|  D @?@R>?/8dFG8@d0<ϱFΤ<pC%(~K4SH鵆z^ }X k^` > ت 5w`J{3kD!П վAM!opဉ #ޝC%$WXd:9Y`HOd14k!! eQDb;o&PـEͯu?RTFHGHTg?(n6h@SM рK ^dx۟{^Q xIfNt4p {uF$j?Np,E˂?o HlH$bIZWM ؿ&;w<^?x[dW/J湱W?b}n4x`?@+Dp7J+vǠRpWb]k}kԻ 藝 D+F |^(o^GjHlH`e7Ch2 v a7$_ʯ&E@8rf(X!{ _Ō[Dz/w|]u$FD|Wh- e~5!I0SAH`P2'bu$z՚BuZOq FZPA 8P'i/Vdž4 _P+<"u #( ӲL?"C{u%o*E]~QDP5E%oP?q_ QY(Āk9Z}#5^QU8)&2C V *tSUþUA3;@J,b$!G*)t%=\ @uQÏ^Ǟz qؕxOo˺1@#BP#p`vUK(*U·E ]|E(0|Yuzhv+Erx(f'A̪jOZnzVֿ.Jӵ~+)-%J)~KɀRJR2R (-%J)~KɀRJR2R (-%J)~KɀRJR2R (- cM}RA_<?~i}_!q~d }]W?Kϩ߽~?SBo?{?Sa+툍u ~~>Zb/n^swVK"&iW?c >v z؄xRDg%먷i%72^V+M"A +l;؋[߶qa~gslE_VH]?8U#U5q&HFn_Vܬ-۟K} kϏyAr/_/PJ)[JRrd@)o̊ܦYY>?~f _.?m۲}+>Gۿm]?)|kEwcA.>G`aj%YR%7c ۯ Kq|ծO??'a##vߖuw6Ȯ|܍n`+b|De;|9ح8Cz;C5/7|Cyu^5oˁz*r ~ w fw!\A~(*r%>[|/,i^W}O߂ v\|k> %Њu~ 6. ?-K'FѮ:/ϯ pV(_H]_ fL96\##_b׮U9X'a'D7kVg (⻜+>p?ő8{]xX' ^_C U=W᾿} ĥ?tlڳn(X ,+?%k.WyRx ;1;9.#HVtoՀ5}:/|o-:64I (|O'"x~׳2,~@C",ocп`J}@(p`C\_G}DE娨lM!Op$8L.\.hWa~0b<14*a,ty !({&a> PRL_B; X N{6E=R}tԿ_Q0#~;@ vlB5Y#G'ƙ 0aΈ!ΙrQNhЩd]}LLS <۲?rO^7#`8L\VOo%M 0`Q=~}9|w9#j[x}tx| j??Su0 7&9ww2b&?i< ~0 \ _ 9ޛo|Uˎk .oHע/&=OFbArsUU#0ΞϙͷmMzF$@O0yH؂0HF; 6># U,>Hx$.rA/}51 R5KOoDs_M }$] $@EVH(=Q|߃şm|쿏dGP@$4R0Q?JD Ȏ+Y<'=`.;/ -., ('A 케]TN d )Qت~Z {9O:pT>uZ:)Y89uElȺ>E۔ȴ"q ~_KE(0`H9H케8fG|HP *Y#y@4PȞ@)k&+ 4Pp"ŨbT  N5D-1   'O%NwY禪3@dhb`?( eY*8uٿj8@P |~`CN8jz"AuVj?qj_F唜!(J0 O`%6@l^e8K<"@'o;AȊ(]lBb0}7` Ǭxd"x! dd()Ox?0,H'4Ȉ>;E^}~;6 #Ah `m(Ў(B!C|y80"Ͻ\&i9K(ÇbG3|Ȍ}1 o@2bj6@m꿄'1'xD b'- X `0^FD=ex 10=zo,*#'@^1@@}ƚS"b< @R'o!ԝP@y)+"/n (xlh/ B~O'DM96|>>?y1kk'`x<Xw x= nD X/(8 O/0k0DcFY<P @ȉ (oslz{hsD5|#8Gi}nD ۞sc_E Hx\pKy  ̀!+P@zvVH ݾ3Tf0 :G@9żx&Hkb@20 p"CR8##@"?R1Q`sg|@*0 "C ӉH@SHAaeM>dD+Nj 8 2ugpRa+bLhDP @&SD$|fȒf&yC]LCApVpU_K3ϞZ4 H@өW@b@j"`0~U='Th`"jv @N@oC1fH 0/8 E@ٛT̀zO)鹩` J)q?i32>'88"@k9 cr!_k̜Pv&ae6 X{ct[%@1@3gG{ΝuvfБ\u*hÀ9 %X|?.CR90>z; 8s ;fuFk9D6pN4'0ٿj2\P6`8+$(ij'?iM^#h`@j(yX +vט(,2T3 L`&p|k?WT kCk 43脨 ; C'c9vĀ?ڀo O@OĂr`wXa/T r7a@/l*oim#\?@H t w"Ҟ!O$PS @y\-3;'f=0%Q`Eڱ$p `0 Jolb@z 4 mF_-71+k Ԝl2c: ؓҧ3N Vʼn@ù1@ҳ*Ă Ek \Lgst2B^P> 5;3s @j#^Tl,e@v>lO@=b|V@4#9$f// ֽp`#&y(䀲CO^m(@ m/Y?bEE޵YL&@ q؞Ĺ0RUJNY Lk [0^(uüz ,5;NF(>h`ѼƇ4N)3Yr yOs+5?`kyY #7@P[ D X"DH5Q,Y4/LPe ei^{lû#9uCkmkD!ПFH@O+ w~,<#Q! EFd?, jF9DcF"_>}x8 @k;d[l H\xM4PD*h2uGZ  L&2ʗRRqſb\_ɹK8eΈRg]ęΎJ+юA=;8k}kԻ ΁B('Q53 y{ ]j߀Z-|HZ#s[ @V-+&F!wB;{% TѾ y~kE] A|gŬ޵=C|m+3t3gG=CGf@%\9~B'OfUoXߧr|cM^]#yQj j"@=CNlÞV(/ eO{/8}'t3)B{=H+r (@ag~<zVQS{/ZgC8e-!;Pi{PZ:T :mVxN{cH/ʯ& 4 <dSՄ{kHbr DYpތ8dŁ hMhgU#I]# " pM@:Bu%!{$#N#Pa#L[ "}QWX!DP5E]EHM\j' B0M? ՁByʵ-~[LTEsUI1Q2 wHVjPau.l艑Z3;@J,OUudS d(T%GA@}MUQ? ?{"2 EX~[ň!`|D{쪖}UQTW?* +A#y_Uİv>Va=?(xbn"uO*Z}SQ4?3ށZnv֠տ.Jv*{Ϊ*KR"klz]E]xR/~,P{u sNA~_=}(PWN_}~_!UՕm+/K;cQ8mr=>֥?KR{XN0U7uc +kxr\_3//KsSBsR{s ğ֟M<*wP?Vعʴs {R3;/z' siH_(=G%ȟi=*n,\ݿ?=~O< ?;CB.\>Jny?>A:~&|Ikή,8pAiPWKԾZ.<Dr-@))XIUb,wF 7l}q)._sS@@&+(/—H5;_`w RO@QzTf6xIWYپ7E'/`q'k}_!qϺ ט ',o8դ zA\w[A";O"eÝ+b,>Pup U~ȣ8wvaduK T~áW2 r}_aY1ؽ~ĀkM}`o W}#ng} Ʃ/)Q@N,g}蛴Ƿ|WjZiߣU/i~~;mMdUVn[o] Rrd@)o)PJ)[:3@N;$GF__nϲUY~|oJ.9i|Xmp== >/Ex2e,κo3 *.eUY Y#7_b9̯]=p?<~˷Ave?wۇ ̬)J\;e@N8R-^⵸wbo0\sX wEOϿ)_i16ĠƙA92/r~G R`gFn$XY WW~S;S}O`" Xn X [}Ru~#6^|z Ig(Hh˙SlϿwq g`b+n? l65rAUS5`D|Av%*_+`b`?>A#KH3 (0Vd+_K8P` r`"dE_7ňCS^}sSVA?V}Կg`9$t|_`?` P6o>1r80! 跀/^`h;JA9o~"ł 9Zh`] ªJQ CCA6DX:#ŎXQ89t֬@_ e#lDо@ vlh9E(BK-ȁqCp7tĹV86X]w9/ˇ ,`6 ޅ0c`@\+KQ`Gzk'}>~x #ŁQO=߃Q>`Y!7i ,k1pgO;1`8tȍ A MzW 0@1Jpz$fr0 yW-;1`g_׍F@D fkG`o>K rCMewX,7G}Ru GyOQMIUW*A5+_Y?~8E"kF A m%x|$f 6#q``DM̂`H WF4嗢(9&DTI̱ vw$ʧ򥘎>*#@{qDB#U?jh (O@v\#u-< s+fZ\Q@* dxp9`)@@#hd*` dFa'e%40Ht;{sz`~]Guـu=-go/Xrr `H\߃Q s|۳#>$j( Lddh (({(V1<`$[1O`1'8XHx[<m~'(@ hO3B^D`N0 xt&^/>f&@he:x$Ϛ{9ւqG~ db"X~[6Q`80b߫q(@]}`D 6LhGO!^<=yQq `^`^O(@<x o)xgj?pR y ( 0x 6 .G^| |yMu0j" 1`* Zz| u4 @?eZL^Bр<~e2(;c; @ ZRT?~ ~ hR$צ!S`@ Xhx0#cy]ā1e0 2X d2/CDk.J(_ X@WuN#[-1(VW:e.`•AC$= 8Ry[<.@g|w!00`Y)'%C? '€S&0%>ҚC=P`dN[f+^O35ߌ'Pi€|@$ l!pU`e`<0C5FY'(€`Rwc45c ɀ3[#x RX:lVH;Cd*J~xPVȬ) 3yF("7X/NԄC60sn-;p=asĀ ?@h`}6ڲ'?Ti޿cւ-|f@aum&jm\#L?@H 4 g&֞$O4P @̄X-\ lF$p`+|ρ .+Nh7$Kˀ~_` Wlf@gT,FfP%k+a> ')wg2)Q/)}Z`! X0iuˀd>@ a`,_skt> :N,8K1X|V]2`4:(^2A\&O@5j62@݀L>Ƃ> Hw qD#:H oM|āpM!`ݫ6c[W`߉o `+݂.N4"1.rPt` o "1?n(Q6O;[ U`Uv5Yh@$Fp5Ooye"K.Ͳ5]*f0 aJtD.54Q,i.0@ <+1 ><ۣϜ;T#N \ h@glFзAlD:39Fp7>F Q- 7рKMS/h `'>@S`Cb}7h4A i4~5s6hY6Cm$^H̀eNr¿H|- yc"EZRBJ+P-\6nHprGGP{)H@ę֣fuHs)݈+\H D+F |^@8m]z߀H>M$xwjE:kl-xv D`jE0/ ނmF(\r׉KcwPN)qn!k ĵ^UvĞZ[ YZ$,W,{'}ϐ/Xzhk3t蔱T=#{vtο7n񍒱g$8ȑWԝc{Fl7H\z֧73|Ucm^x8ig( 4 P{zby&{# By!g(}2 1?āNgu`!C;A NAC1 PfY{N>Ǔa47; u'~>!#k (LLv:,S >h ϘA?g~{Lig݄AGaXȃ^6d{5@$1٧\H:HIBrdcƃWTE;YE_p`"a:nB`+hXFv -c=}}N2;Rv7!gqY V& AGLճs:\42M!SNk:\gwSȜ: ;:sw x I q`>@rȮ#7r]#T㝚1PMˣvkGkX!k qUtTXBs1)׍w0?"C{# kAD/yO$:G ƿihw џ$vcBg>R^6B9(Q들o՘G~. v *Uá]A+;EW|AMGlҕkl=]+]Eվ:Pl@qK/;}b(;%^_U1` "Z*-;`ӻZzq`WwBKb/xE|+\Mї]<B_:ҷţ}AF <ҙES ӫ4C'`d$[?%[ҳ?LjjBs|ABs|1kcm}|] tta|?7 ^5d4~U~kbаq -@JE>MϪt3X??XW |? π~D 8#S__Wg -Eٷ4 xM6,;~>2Hfb`:jya?>.^)=TOΚ4 Z_uw[?WЩ.һQg}"hyB-Ҩ;ܽKŽ${~#-&f6^EJİ g-ߞ7!oN/!0ܺȞ[O'E;~皿/s=|?ԍ iЫg20g6aVĹZKt1 r1pO}~` 0k$ jIn?c%-^?"89*͞@>:H$S/S>]V-1]>8 ψf??xpVf㢍 [֟fLu~z:ZrKr߈Xwԥ[e?ORS\}(r0Ԁ{|JS9} G_'p@Kw8 A7>Ӻ'wǯ!Ȉ[|6oP`3·Io{_wlUA<׏[ԯ &n@:Z;@} riC=cl~S-&ā8'ٽ)=!{@zpZr>%?G}ǯ!YI9/kd>,H/lk O _/PH!O[ RӖ`@! KĀ]b.;pd~MT[b+@(xM+xh rYlr`R\H" f4ܳT9Ь^_AiIm` (i82#&YM_6+|JkNۿ耹qIfMvEPh;l2wSyY&t@΀2/60 {@HeD f8)p0 ̃W}L \`KDS#=ǝXRj&h`'"jv @y|7@١3$a ɘՏ%Àz(ɵ`ZtgC0#c&Wؙ2`-jN |6 P `G) (2 NgKTi;l[%_W `,ʐpe ɀa jTIĀLskDX8 gY)'%C? '€S&0%>ҚC=P`dN[f+^O35ߌ'Pi€g2Sfm~ O ]] OP>  i Xjc ɀ3[#x `*LVH;Cd*J~7c#Z8Ha F5B0 z=pB@\0rgV0 Hxm eN,6[bÀ('|<ڀMZ_3ڸF ~hp?Q@&֞$O4P @̄X-\ lF$p`+|ρ .+`7$Kˀ~_peJD6@3 y3 v p?Ղ| }O@ @'%?ߝˈ,xKX}أiֆ'%+?|A9A 8,q>`X!t#ˀxmr[NFZ?x_%L'sšP nh|@)}4BGt,`ߚSc0@&0 Wl$"190W.u[ 9uuKo DV~\!pC7Hv +:ՋYX.V G߃u D @?@R>.0kjwPKvZ8aWP2%^?f.3Er:y` "P@ ]%̺@ (@ں 7Pe$eq@PP _90EC`=$xwk-{9?s' "Se%w琬78pF'ae!Ys4wz/߄$;#0s> <+1 >LhC+_JHo 9| &&.o^pU n@Oj/R RƯG;ó:q=*VBQr~ko<aŨ]\ ͡Tk@_'XH'`NnxQ[Hz? یP>hǀwĽ: _ @o@(ObP,d-^+PBgHb,=d: jw,QpH=Y(K2 ЙB}K%lO,? 꿎- ?xƞjYu:+<ֈ43$5ر&5 tPO,/|ԉi:(`8 f7|m{Rw~=C(w݃M (@ag}J=-fVS`xg '~>!#k (LLvv7!)A([?ؠkq#6gkGi+) zVW S=8nI%X9m#Ȕxق~]W WeyGlc`zWK(D}CzŝD-|~(z -|~Qe+QQvRWVHM9*_;b6x v[|~g݅ >Y ^Mzo7yqH!B/X'vb(x[+N& BL5mG҆=tG~`~_?.uz}VmNQU Bdq t2y*ogB/~11\x $rWӏ9zn(c'o#?_ӏ=>'@`$y6zsb@{( B@'F6:=~Μ#9#mq BtI`FAQߞ_Qr<]6=ԟ~C/ Ǭ?͟񓱀]WW~$<=:ɣ6U5m#_ޜ`tv~(Kf$~'OMc_ӣ;~rmTEO 㬵4~_?v 5B$mD$g{2y0~g{E׍P+\}9UO(ݿԨ#~ ͯ/Nm dB?Ś6?ٿc~7c@eYP(B.%cwР(5~M"刺>}C x:o^&d2}ľ: ]jA%Ry F]hP#cS\W;/}1#fSTժ o_s$/e@K8Y?0| ~/_g=bDz#T90VPPWjdA ~k`vgyaAbG1?(ώb >s~%{K?Rnߤ? ^Á_1>my3%~=Q*kߵwj771L>6݁`7d"+pwr_} 5X/`rM',/fCvY'{p@“Ox jƟvآnYV-?X ȱԃ`!l$׽LPg:X>ϥ{`hA_¼?3et1ƯAsOG+̳[QK3=4'B_ `ǩ=E@L+CY{G/K/s>.U%܇C^l?q5G-_I|ogkG(o59 ~ ?-64/(- )iKB yR0B4gHpjE g_?`_3~/eb-+UHmPug WlmFySZ\Kv"*OZ*3>Zǯ7EbFZ~ rHb?:9T'2ڴ_|n[k-s>N{Z 0Ο,;-%)e7&[d xlauİ|Ka f^iAZ]FHfXj%X:dߐOKֿgj$,V@@+d%6;۱0OܠQq{ Qw߉uo_9@?2ad\MW'.@jn}Uk(FF/b(U- vʑ6v*.r?-~Y#U-}>ؑ-׏? YÏ)?%.~m0SxkRI" TԊ8lN3Y糑(qA|竎,$4 >@E\\KA_RyJ5XlbR(R%+lЯQH,ȡ/|"{pJ kD?@R3 .&sBH 0 睼;a4~MfkhY$D5:߄O33d]Au~CρKƿUe^Ue@Y&w(X|0S7Cq)4XBbP`%9mgB(> `W0 IX40Pω%یY_OAX =uDIDfsPL@nr_ٱ2Ͼ`xy ` `śWpO?O@4ښĝs 4D=; |(pwdyS~< {r̘m̿%/0yfgk\w(b{w#svo3B/NhG 4D'IH 2!r(@;,f}XT09-JAYeF$@wA7{D _ l;g}9m%x|T+?A;1R"3 \ dDK_/ĜP"`+$t0o+-]@7h[tPNCDFP@{q%GTFOS\q) 5LJ8}F@h^jyYӹSz@āUC82Ɵd{lX82&9]5AwHWm` Iܳht Q_Y X'_z^@\ '8M7@z^@;pe g@}@@z({E'bCtH'y\e`P2=/ {C~1(G@3@)hՈXGA 0'\B^o5z,%*-_DFOMX5b(@Y _GIs#g(P( (36nuLP?]ԃt2({ `wH;l>pO( S`6µ!KW}F>@'ٿ8@z:~@M9& P/ZhkHV 帜$9Q`.aPP53Hhւz9J e;&yMِ @?(G 'ОP. L%ν_Ol&s.bT664X|/*$@hDC@ lF='P;Ifk*F{:X^A"CRAy?u(+4R`±Xo^ 0~> P+C2 O)x$) y (p`)рy31'2t<xo2H{t4"/ @~ૐ9<x Y/܁I hO aEP<6v%OMǟu("־GS @{ '@WHY3@C'Q'| +NyGwR3@/Ozˀ9h`E %!JH0' L$cBYA/ GP@3 x%ړ1=Dy5B/e\#@Б6a@Db@߅ x1 \pM{ 83 xѯj@`Pɜj{K 0Au/{a< Ju9N'@%N4hBO "Y+ 6 p`(@y 9^9[W=q Àj y<*< +D:H5#1(b|EW'`v_1U|h \ "B' k켻eDg.X@G63YT`_0soHf*DA{h@T)ry(G\O$`D/$VpE l]Di $W DQdHd4}/"#PQ4;op0P "0(1`E&6QFn:v3lG 0QChQ(#)W Y2 !@ 2_W04xl$1H'#0`2le13(O@!Dg_υ><7wլ => H5;eZL^Bр<~P>{05 j!H}UKI?^Q4p)kS)0 ,P< d1<.@WD2_2!_ k`%v€/Cˀt@,DAfmVK UUN`,pe ɀa h]s 3u: )/Ӵ7dVJs\IgSϝЛ:>zzdYiM`!(0e2-3@'kLtњtdo4a3`*0O2oh0Bf `S#hk,Ha@j)@]y@V1Xda_:+ʀ%S#KBg Wj~p€;j"`,p{Bȕ̥;p=asĀ ?@{kηN>A['?kTi޿cւ-|f@aW(IkF$0 6`yٯ '8M B8683 $p=  s`K I2 qV L}%A<;{~fKjAE;C4 V }NS eD{ H`40lb -qH煉:Ăzئ'@ CehruP69-'#e23?M k Bmdݷ:h0q d@z>lT ѱ@Z>@N}A^Ps \@`ݫ6c[W`߉o `+-:шߺRVBQ%V?2;)`3DbG,Pl!PGDcs6 U`Uv5Y<c`]`:)?*!+zg}g,9TgiȟF亀,c V )1bi] YkhXG&h]`.&)+xHse׷Z`WG c$ yA^aeA\TAU &V;Ҋ93b7$cv th<$pvc97 \DaA_=>/wR^@GFaSMHZ`́X A:X4GOsʮ/o7h$v>B5~k9`Hpd9ЮkrŃ &@ge;#T/p_!k qkrCL'\}j|NE_p݈#kL># s}k;&"d&rS 1{L_!3WA/G`DN6O1uK}ʦ{ zjL#d?Tjl_^,* Qa͏"+>[?ؠkq#6AQZJ 56NxXj_6L@ %` :2%^_U1` "Z*J>bw .=ŝD-|~(z -|(2|VQQvRWVHM9J]E;b6x v}~"C[.^to_qH!Vzmz=q ~P+*D`K>c|Ow ]emǟK [b%N[^g(x0֚oBO)دqϐw.Q#xyͺD}[l ?1*f,h|C>BeE;7VY>"K@/P{ JGf?}i7xw][۷/q6x[iʤG'[}Zl;.{ ~l=- @g$?>7T9VT\02/U47~p\y'8'|QL#OYxRwP~pϑ3drL,;@԰ Q: ΃ʡLq@&"g}:?M `;"/~OECqxETDd @,}}U%찇p 'jN&i\C| $=~k?l`Hro[y?ա$`=Z3vT}A/AtSz^$hF: ,gE ~ZzdG_/0r@+NcjNM`\l?}EUFOYZE#mEY$+}/0ײDe-j5o//~voqOǯ+x??!HjQ~B7 RӖ`@!/O;dc0)-`{\Le,ou7&?"-?!EkQ;᝜oI.{̼3ٓ6i `FSj]_ajSmX VF8O`8~/Y?8w*ov9*e_Q@ދ%\=]CSrO)rFIn Q'9g&4 FP!~$֯OSLi0adߌ4? J)?,Ua͊r:l18v08fb#O$x[SNݪCKA'q) 4u>*ʉv XY" H@o<*7V9s V~?#=aY6k4LwK-f[Kxֈπ V=o-w'd7S~"/%X%ȵK5>\`E r(69=CHk1 c.dA/\mHV,0:h_/\ /㟉ED@6)^ ZrO@OLAX f<@m5e5̩Mg]d{b8QA&{0ry fJ37+`m0'삢 ~v؎4ѯ;m#B/D{9B?;l6>?{=`9QAfL^j|A+ ga!uJ3=lrRz4oҷ>K4x|U_FMƿ0%:IB .@Lߞ;Ȁ`e0)we@+35E@)(̈. xt .p/0gI0+d9ϴO ͟/#"@H ) zÎt1OF: ; שP@v=:g_DFOMX5b(@Y z#g(P(OӇY2;x@ƉTAP " L) |/z`9Y}Ѓ?rnPpv-5q(;xN8DF]|N=>qP`Y,v1~%$rLlj ?`(Rj) p)?2~]u5rd<@D970f aؖ|;df X*<<v|^ ?E`;b~7P@񍼀-sDM =xf8"x@UIt&= x;S %4ۇ'X~ɾ`9^ļ ݅@m(P)pB!ͨgx8GyiX<2`hOPB&(PWh*C±Xo^ 0~`0p" Pa>Oێ`N= (p`)рy31'2t<xo2H{t4"/ @~ૐ9<x >bVD^;9/@x iq =/*a |t(? @ ! O^<B,Ț x=<ƏEiDf~ѝ p(b 'eN40\k(}#bedL(+ h h9q6%< Fɘ^s̀ pm4t$πĀ`3 .b@'@ `/Ā- ^yX;6@2't y1 '{ͪ缼ss'O2&x~' (PzmɜՀ ^@ DV%o^kC T0g w 2 v''aF ^!hc a$fXGΊ@Z\" $z H F #_4@DU h%zRUP p]S`%1L$`E O` @$pyw=0\8lfX3:}:a~K{hV y $WpU;nЙ7.Try.I\O$`DX- %ҊD6~@H.4T,Ȑ2h^ EG '0zqz|s'#L D XQS7<Fx> (#0jQd0J_̪$\D H2d0@ ޹ OBqUpU_<6$dt0i@A2PPߧHˁ  i X kD`9gF*&6YT,5iEgx`jC+ XYRpgQPDn4^0qPUr?`''lqPmm eN,?[bÀ('|<ڀMZ_3ڸF ~h~M=Ii±@ān Z0،HV\VLP[%eXB/JD6@3 y3 v p?Ղ| }S!^i A S eD{ H`40lb -\ M}85s^Apb\ `u.F n9!/huB0M k Bmdݷ:h0q d@z>l(  &c طr`>@&0 Wl$"190W.uG]`hDbo]l{)+( :qS+$(`3DbGp(xc@9pEǝ]"X.`.{* l4P bu{ڣsblKVh] Qf P,[#ߥR`(Pfz(DwH @Hɮf] }X m]`(2`.vhZf̎!K5^[r"oOЎ́dT` pogd7%h51)pJ|;`2YMHp`vg ܳsŜ*r`ؿ!ywɺt HB xm4PF:`3us[xJ[_@ ـv(^|hE^rCRD `NdO'?i,xڿ!Z/B$1 H9o <,_Cvy?H/V+@r(ML.\ UC7$?oYĆj/R RƯ{[1J}Rj}+4,΁YS!6ss#o Z>7B" L]>5|›HNՊtZJ4(7Պ`^'9 یP>hǀwĽ: _ @o׆zUٽ{zho-dA$k_)7M{}BgHb,=9GA 7 {vtο7n񍒵g(8ȑWW'i{ |o~i_G}~A¼yOq@OgP2{p鞡(3=Cj o,;Vb;F}TC +Fd7 P`=N&݄X| 19n ðl<8bo & lMOէ9'rdcƃW|]DmMw-7n! =ל6W^2n@X-*tB i2fp >hYvH&\4wӞnBk:\gw뜣@\zX<$Ggk@>K=v]PwjH@5b.>+;Ѷ?W ]GNXаv¯̿#nDZ5EǜR٣-ω{G>BjkZ]~!`7f+u|4𲡏ʝ1>SJP692yjL#d?Tjdv[* Qa͏"+>[?ؠkq#6AQZJ 56Ձ:`T"[ ?Eg?e uYn/11JWQhhޑX?ң;ֺǎ'0Ȁ[(pe[O]E[;6W*p#_huGQٳs]EAo?COY~[q7⌑B yR0B (- )iKB yR0B (- )iKB yR0B (- )iKB yڒ})E>QZyYc3@V uahs:pa|p B,^b5<4nLV>^|M:~=E?wҎ=l#[F?B/~Co9"Nl'Qi/ Ǧgx{2yu}OD5/ZaX0g>\? mZG_k7q Yʼn&p!qD]\ MG?`KMa?|~>H~Cp%ysV fJ  Z}ڣ']a:" Qv?5Co]_.`հwC'k?<~^X~ ,߸gHTs9^{ sbJEc|$Yq``>o>h~XaHdeVVU/?|aؙsb5 )[޿w JV$D Tj]w%Q%>; <#av-Z㚩?ZlKn_ @|ѯu@B~~#_A}`P^'Կ`6|R`-i1v O"ւ@?:VkZ&|_/` 5w.^E Qz|F`!>1`}ɥ߆i'TU!ĈgE `Χ D }߂/чf {c(} ƿm ;Wiu+},/ oFRf̩ju|O}-;b'#VQ?ӯ@hy .Pj%7{Z|0>fD WX&~ԒZcr7+g'BI#Ɋ2'eB(? \/o/(- )iKB yR0B4gf2/϶NWZ˧_?T<C^B_X˟KΧ@yEi^u`>fO\/^- /eO_T*3qڵb Ȓ,-_'l=?bKQeloV&`ިS Cu"UUȞ솿6 ߲`;f|@gӟ(WŮmUj+5b_sqGE)6Z^į(~ 'w Ժ:_! զPr A*X3 z.Kv|`"X%9 Q@ދ%\=gKlw_hVh'ǟ#|#J$)N(`jdȸ*կ=O\{U<4h"Ӭ?G&{*cFPmq|H[+?lЉf@f٬!s^Q]H, -? ]n?x>7懶op] ">KOkSjwbR@F,^Wgk$@L_v3 DujU} tgS@.@O`l 'cVOO}~࿋M+T홹p*D;msh@Td&;=)\dmH7?/!RS 2c[AvK,ҿ5Ο0](1  H@/8L gA~cA@\f?v0tC%7h wߓ>f5 q) ߤ;8wyysVgl=쿓Lg@!DFP@{q< 2ΫNT} .;@? t^;; $)W@[<ٿQP<e;;@?'H PPw [5< c ;`2 aq`KGa]UW+P@s` ?=/ q~1~/Xct^M=+gwo.@ lux8}a+C,w@wh +B.#R(Iz^@2_]0 P4=/_"~1(GF q# 4?Cۡycʹuu$A2Q`=EA4g @`v0+ԈXGA $=:u`g`)Qh =" 4zoL05>1K3O-p7J;!%``spOY Dlm@6Á) | Mp}Ѓ?KuCkJ37óhOۃ|NӋ9@z:~%$rLl؊Kɪ翦(@ۿ_s@e(p2~]́#帜$7)0^P@Q@ QXQCx ۲1O`ϋ/`fC 4xOJsOQ؇ 9xrg}7xh^/  RHա6=Ĭ'%ЙKvy%+]/RไCO=@J< 1 _7s/("X 5ܧF)X𜶥Ok>?y01p#~Oz kv(4GXlLU}@t;&"'c<-< wZ<' edm`C̀CrY`/pa0hO= ?pFAGR_l@" .d 1xk h`a+~Vkdž$ƼLD.aǏJdN@\j w'ٮzmɜՀ ^@ D@V$kĆx# +9^;Az8E/0{ h n1; # PgAo4Ti]pv<ޖ_,B?7bQ0\? "OF,b M7р,D Khe¼!q2pE u$ _绗}/6/=V;w &QzϹ]<}{ <꬗\O$`D/$VpE l]Di $W*  XрH@H&To 7 6 D XQ{a@ (`=g؎`240#hTŬ :9Ab@Ā$C t> p5_W04xl$1H'#0`2le13ۧHˁӉ@b\Т#YbTW͊_Mn2 ÓwM^y|7@١3$ajB"cd\o`PWɵ`ZF(~2@@q+"@k V0/CDk.Je@DYp:Ӭ vjDJ ,pS $0aa 81`.{.@g|w!00fϧ,~?.}RY9Л:>z) hՈ`:)t\~"&D LGofpA9A 8,q>`ṻ)^Q> xmr[NF$Vqef~<wCouJa,@Ȁ|x7@=c|@G4XÁ͘D w@#[x%h@ m/@`%Xxka#l&@  8@ 1|J^pK ClapD=X]M6(1IlX#eǧ| &*Ldsw 6Ӵ+=?3EuY@E!"@," $k ͺ@ ( ZA9A p0IYCZJ4TC`-3fǐ%Y/o߷' "Se%9ϟGMŻsHĜ+ d7! ޡ0 ϿA{C`JxҀ!m179}t HB xm4PF:`3un]#?$#~fo'7>F Q- 7рKMS/h `'ýBo堇*Io}éN@`F7 N$Y6Oo r(D9ڿfrڹd $&o3]pOʗRr_1.o%@-7mܐ$R>Uks)ףfuHs)݈vJ D+F |^@8m g37?_'XH'`NnxQ[w"zC:1zx|feI',9q,Ji;=C,7Z~hZ2 љ,7 I߳sqo=C'f@-m?ү1߲yӿgüpX#tQؽfא&@=C=pl`=C B1g_6о0/lkDSlϐ ԻLe@枡(3ė~C9 ݃Qe 6o:{Pfw  )A(pu B3HG攦Hig݄AGaXȃ^6MH7XDr}6&$$+Mnj蔱zWTAU l}]hޞӮeb!-OO`/ewjQsމ&s݄qop hYvH9Jy .)&$Ѿ!́d uQ^@s y U #T8`e7ωtڠ@# y>65~k9`HpdX.uM@>Bx3q F syY}m dH0>B5uB$,&֒~]k{: s1)׍>BaI'["z|QX!]dkHٱ0O/l;߈H B xGNHQ;Ucb4O!9R$+5JWQ&@"wel~ _ߒ!X<5]3_QZJ 56Ձ:`T"[ 3 Sɩ1h(QLudO QGֺǎ'0Ȁ[(pe[O"-7f+umewU4p!l~=KC{{i]Ԓ-~+)- )iKB yR0B (- )iKB yR0B (- )iKB yR0B (- .Zw&ʅ~_?}?d (PPh]}~_?}O/q{&9ݔn {I'B/~z*svOgN~_?. au]ݞ:|%|wQcӏ3 ݻ% Bs Me) ~_?>^ט1^E'zHyi~_?:ع9K[iK*Pӏ1@HJA~_?>}/:ŔW B41} f~ B}ONP FvNoѫ3_?5~>{yk?2&~k4ĞUß{Fl6'C5`%q N GeW=[bj#ZE:ko&/%L /FGzk-WUC9Wml(FF8,0B?]W{H0;zB]l< u̱G@:`exySza/Y#k4:I&^}GZ_{>i? ?N-ϰy< ^CEp¦_/–[xMP >?Sf)_]ky*$@Q_e~S cl9 )=2zNC,IO<;?43OMxr)?(B_40?t?+vdldWζ8 G[6-z?{W9Z 6QIٽD(z&kr(XןmF/_/PH!O[ RӖ`@!dYό_NlIuYC=lkuSr<7 .>6m>\bE܉Eܪsv}?Q2"P\k 0 [inϲXmy!R;~'FHk30o)ȡ:M˒FT|dOvj aۨJ|]۪}f3;}ET~- 7Fw_5%oI.{̼3ٓ6i `FSj]ë|\m +*r-1%2b[l+.D'Ip/(hK ֚!)Kk0V#6"NrO2X5 PT8y #j WZԱR?HPͭ_at0oLӬ?)6U@޼0A[=2\OT贰B/6bp(6r4.@w`oHԭ:ۯV.`ĥ'*ld1 , Z %ξ\Ux\| 90\6ӗ#1 8(c(НM~1dgf'Ԉ陛6vTx' pO[Xi:wEGMo3@Z p]so6y0D0-nH&͓8QAfL@ ^:}C~s0 %F`Z6e)`=`gZv vo3ߥ(Rߌ%!'z#ˡ `R55E@)(̈Dk.ox _ l0+ő8c@)i =z+q b&EEI*02[횻?R x-Ħcbӹ r߂ߩ:E腙[yp;О'@z\)oU#7$RS@^mdI"B 'ҭXS;@ Xz\(kT@}V "O 8@J{82&9]$@ 7@1Az^@ )孼bv((0>|/SpHf'l8ME{` b'+p8 ({ˈ(h(p0 OO0/߂`P2=/_" /f7?C=]oH'P7yzj/]KO'|` Or)W Om5=Քs_1h =" 4zi0` ֈe`B^Èn' " ʌ飍Mp'OY TAPڤ ,n1*@/!E/;$ٿ6vO]vBQ s}Ie}Ct>ϝz:~%$b|0`)Y5\tLsDu5^`PIq P`T / |˽ 8A@'@ e;&^)b) w>n  ( dNgr( :$8|FO`?-"< 񀪂'_M&= x|.)C :X~>CY>`=^K{hgcOR 0_(6$^乽.ݯaDk!Ī&iR)`Hա˷`),i< < O)xzט>Oz!,0z1/`&C6_,h8{0zv)р$yB )djm#'"((`э|11+f<66N'3"b4Prn{ '@_ۡ^(`aXD ^@';`(pH?5]&Io0a %e%F ? PF HƄ^2@60f@!,.ƿ^_h=Y(f@e[@Бf=ǀĀ`3 .b@'@ `=Cpg@ʣ_ՀF/ڱ<9Yy]y1 6'{ٝ0q/ 灒.x~')'Ж i;߹0^/bd*3Hzd@N O Ìޢ B ΀STHXGΊ@Z\lb͠L5b+vm P$Q,py6`g Si Ͽc2(`<_45 ~whe h8`YT`_0IZ_j lH 9s7`2UG@9üx$ igw;aY_?iEP" g =T,Ȑ2h@zDC$qrx7\s.@ĀDFxۉϰ1dF " h`FF2YtrĀ+ÁI,|@#; u]( !@'F㏄ p2&-(8H0V|C8j*1 t{`92~:1:H 5ZtD061s|Uh`'"jv @y4;?+CXxi!HP1[L_2 H7K\!> `~OQ,` eO#`y]ā1e0 2X d2/C\k.J(_ X`:`@`dN2Y 0Aʠ!@к#2gt6wR^IioȬ`sdq铒? '€S&0%>ҚC=P`dN[f+R%]&0ٿ*M6uLP6*0O2oh0BƂ> Hw qD#:H oM|āpM `Ku:،IDbo]}' 4r@ۿ%a'\v zqKbo]l{)ZK`G}r\!pC7Cn)0a(pڿ!apD=X]M6(1Iu2BS>j]dN38@d0Fs㫌KH7\ lzA 0^[?I5B & &8MPs&#xP'8AI d Ԛ7 x9"vٿf'9xh $XkxnE _w}o>,4>vmcmU.RMRW뎢 ]EAo?C[.^[gRӖ`@!B/XM(:qNHP<* B1'zְ?rp:Ӻ'쉆=Ϩ/r( Bq7KgW}r>;&]~ ӓ ث$ON. B1&FT_ &uU4Mw笥B/~C=9=ׯ8=~=&&7OONE BLmM?.(-n A'SN!qr"B+Q&trkK<`6`ӻW^| x'_-C}oB xȭς@Dy)z"/ҟŔXcW)+QfQx_7 W,kÚ".4ww,Mb@7?K/'1?YՃ/sF}~'{v'  BM踤+\[]BPc~ +Z_u1x=7_> !&E}WU&=Kc_/- wS}o'c hR?o(0 PnpݒObT۷tB>] Iӿ|dm~gl%~u0?/8i|e}j~(w/~Uߎ#_& 4Z曼>O_Tو6>9|kI7f~lQ=ݚ>P8{Ξ:*?L0֏q@;gGAwwA4:/s u2(16{Qz.g[pOM]_W  wGGHc8$j;j#ݍ̻XNB},_[ӧmcЎ; _AЧ7H_7àH_Q?0Tہ3L(#ͽ_ָ{WS_38׿xKL"9 9l6n Qy^(Ǐ?hp kQwCƿ ??fF1TE/ x>u΃`}9d_7ۮ? ȁ__p)$kY_v Xs-`p'o|z@\M_OvtpD#8U5q=! KPR:!{uWeH^Ӳ,KZSP 92{?4qk=i3d5uH'?o/(- )iKB yR0B ?9?~P_?eX q,3"ߴv/Y|@mۼ~YUJb V[;j/3y&Z_eyI׍X$qEoQvw _;~'FĈ,:}ouԉlWe7; {s>`q|]۪}f3;}4]Qϟدz~w_5%벇`e7hi `FPԺ:=A8TVU`[|ͭ+m^LKTāؓyH`}G//bI=Kl m9ٷ!u 3$Xܴ_\9?7-\u&TEM E)B^*SHPͭ_i֟#|m;W}.i(Gة=fA޲VZ V_? ]n`ww.<VNO]ORoR]Q`_߁,e,aRmv%hpr{dq`-ĘNP$'͟egzJ¿ܱMqK=aT,Яl gL, ش5~/ T.@  .3A;]A8R"3 )ALD}l-]pvNXxysVP`0sQ^PNCDFP@{q%D웆U#\q)+p_ B ' ?Z}gx Dz/j(zAp1='cwd`[)0OO@0̥COoYsj9ί_KvLV.Io.@ l0;}.>؋p@S`4=/ d823 btZ ੟'|e(pD80#rD ~R 4?C=)xi$xF O XO_3:^1O< R#b)W w@``)Qvp~{6>f 1KDw;QQPfO " MQ=怡 P:e:D~DA9.'ICDs((jf( !<HmηCl< ?.ch'ag: :'P. %UL&^/ L&0OC!l< x` ҞJ@Wx #)Cuѝ}7@r0%#x@,*$@hDzD lF=gP;I@ګD'ٮ!쉟{{|O[C)0BᬰzjyU < < O)xzט6IB'0y"R dF^O bȀR h8{0~ yx@G^OA |R 'O!}8'P!D<y ?\GvlX O}}~`cЯ81{'`sks}D "+:aI1O ~<-< wZ<O`" z9&T /pa0hOz= ?pFAGR_llg ~2]ĀOz<׿r5400΀GJ{ 'x \ y1 W`^@D%]2' .h5 l:'OPNyڒ99M?(H5g,oƮ=*5(8e@N O Ìޢ B 0/0+TH ϓ'*< +D:hK\/1(`*_ 0~@ \EYBT8 3T3 kZDv|6v]O2Lx3N, D ,F. $` y $W*Dݠ3h@T  X?  \ :+H2 _K s#"hݷ:@UH2 i0 \h0@O`BF@yÀnC@ĀDFxۉϰ1dF " h'#2K 9Ab@ĀD͡ !Fw.@@\\CO$ dLZP4p`!1PSۧH`0yf(=߯~ 9̈C0(2B'aF]b X`@|ed_x) +q42 @2:X HAfmVK UUN:Y 0!ʠ!@к#2gt6wR^IioȬ`sdq铒ϡŀMaYiM`!(0e2-3@'=MK; x:~&(pH\'h74!O3~PM5B=) V-P8o7HcJX#=&< lULl,0 X25[! VĒ(`jCBZ!:0 h``8xR . Kvb9z~am@y O@[Ăg3` <wZe/ ra@;vlfx4xZ{::-.F~_ O>5$y~Ddž`&\jDN_G`3"C[!{LpIX1uB! \/JD6@3 y3 v p?Ղ|vh~2 ^sݙ:h/2'LVG)#8lb -qHº>pA9A 8,q>`X!t#ˀxmr[NF$Vqe0<;<:7x,$f'%WM>Ƃ> Hw qD#:H oM|āpM `Ku:،IDbo]}' 4r@ۿ%a'\v :шߺRVBQ%V?2;)`3Z 7p(xc@9`.X%apD=X]M6(1Iu2BS>j]dN38@d07<F /|l'+q`ؿ!ywɺ HB xm4PF:`3u-@gLD:w}fs/fy(^|h vnE^rCRD `NdO'?i,xڿ!Z/B$k,w'ݐ@ko;v)ʗRr%!:O% S\=qC;?"KC3@5юA:9VR_Z nDs`TͿ" ver>/ 6So@W &;Fb"D5R;m`jE͹^r^p}]'F/ҿwP@/r 7kC?=C= H{YT!;}H!^>Cג a߱F=#{vtο7n񍒱g$8ȑWԝ{{Fl7HǴ#~O>aH=CDvl8`]CM —NR=C B3>~F CtV~2;lPvևK?IvNb;F}TC +Fd7 P`=N&݄ B3HGoI#6P`0yx go & I'S IWx , ⢦U &VehvΞ?ً>yKN2;Rv7!gqY V&{׀Qf@WϲAtsfIv&9GýdFw x IPZ@>K=v]6Hj\}Vv8O3Ϸr PM, , & g!1"_s1Gh݈#k &Y=}k;&7qk/}n;Bg Ā }P`u(q[5&FC*K]C tphrd(_)(%Cx j?bcll_c#('Ձ:`Tʉa,DgA:ӯ˪p{VRGGlӂ>AOl ;2: \uGrKcG6F6ůoΙUU&r=@%Ȇ(;} |OyO[Ğ~ 8 Q<NᎥP_|Vj5X0^@>cި?xJl_'Z ?#L{ۼC>Y]n/^sl"McYS@_o}78}BW+ٷdxdRPGNe1~?d|2DO{d@kQ` n=g?{.'xS:{u<:%a_uǭ{Դcw!c@l{yD-*@={~E;Du. dLG+B-##6s d4L0οI= {/?e#" ױw2ũ{4$o xGּp9#Ú7 xzA.l0NxqYn |_}PКaTEͪ 5sOׯ`"Xԯ8}OL?E͊:Ub@?FK,`F`{wS?m*NZ~FE~} ):/'>>3>#yJ7זS(ݿk}|U b#󷮯 & [lmi|@LJ:(׏1rײ~?$-.y;>} -ic5q.5*ӗdo'WCt_w^+'y}M )iKB yR0B (-Y +C3㗛W?t ?+g3)y^oZ\ j#m_|mqmmAm'1/<G-_+ o@ĜQAڃ,V[H3p/q?^hI.ߨS Cu"UeUv='o8?Y?-+v*Y[ B̰36x/_kc}(+ZokMq^ߣ`qh^ZWyhê`[mViv —@V@R?H`}GG_y/s-%)2ށ}$ '-\2UG^jry #j {| [k)#{d/_ew lm,1? ڂ# k];an9[f,A-/FZ`H*ou_op] ">KO q `aPf2C⻑]C(ۣ'l_/H&3$ )=@2XN 紇P2w]vO |w@|a1(C gb@Y !VHL=%L6fcJTH Wt  >#KOD (tV'Y!-xh Dܡ>!Jy9=P\3 ƁF\ 'NI,œ@HڂZ:Ed<NO bz/j({18#_~A=!D;0)p  ̋Q9q_5?U*|!$ Z8U~I)_mj(0nŲ$̿Jaq"`_?l.>ݔဦhz^@;pe g@}@@JN+B.#R0Iz^@`8 \`KDSz x^X]v` -yi$xhu#S;g= mj/+ԈXGA $= e6B^o5z,%*-_DkۢF@6#`a.(]~]DE?tNfw_I~<1_&g]ÈV84p"Km Tm }@@_oL@y  Q_L7'2m^ P˿ q( F%?#+|!5>q@ s!V0,rKQUEQ: !3,Ɍ@D} 8: Q x@,o6 ؊yU?_P`P 5s?= d (zx hKYh(/@K3(%>5xKn \y,ͺ`4(3-C>b964X oNِ+@cDvDJ ɗR/v,ɗN x_kDE^40/ 7_@f< )g`h`PZ-ViG.O(@ \<-/`Ys3h/">R0@S`֌@ X1=7e6y&؞>xi >&n^'O!ԭ;0M ?z@аt#_(@ /`q =%/-VGSO^5^<-Xpz `'`!{b@3 P'f@ L{6y0@ S XP H5KS;pjR:(bl5B xi}Ng (@ >;Ư^stK<Ԟ@GNv\a`as~V^c91/  { = `y~' E' (Цz@ ZۊL 0g Ͽ *?rp^F@x|7@ko1@- *!ңcMjgO y3GCo J&)~dd\ O1qqD6s)E +q D0W X`xmp}_ dV̀=L~_d#f X1ˀ] P ]Hy' X!A he909>z; 8ʠh`" XY Pq\/Ӛbd;j]09~.(pH\h4 `F̀% A]# hOP> ކߎnjD`-]#=&:RYLr{C`]r@K Xyh,55:pB~T!da ?s,'NbPm ӿA4>Dy~ _a6`kbAŀ('|`Um*ק%A P\~E=KY1S X2X-1\c :D6@WUֹNhǐ&ftJJlb@hTlaۿՂ= 5S!||*.8WDL*/@3@LNM}% a@V> mCV+9а^Abe​| .X!t#̀|9VFVqef~<VKCHJAsN PpU!4@=b|@PV@4#5$3ް8׺(䀲Mf#\v :ш׺FT ʯSЙK"1?A;:l £]"XxC@uS%Q ~փ]%(1ueܱ2B)@0> (S2%{ZpH^("k] ` @( D X"DZH@Ьs]UZh&(`3`.`&j`o o%1 )jxykNOp*8s "?Uh\*xStTpb*8w-P8%A!B~mH`WZ9pp%F`x҇g;Yy &5rj)#K9\E lPґptcGafb|;P1 O Wk|l lqq?+C@/`88KQs%E'd 3MN~ "_1`ͽ<L,_&oy?Я+_MIwx0}1v~K!:g; ?"@q')$_kd&O@QU1nWR_ZnDs`+=bT R.(`v }: {[HvjEfF"(7Պ`^w'iN`x|Áh IuMÂH6#%"|"w O! ^>[|cJ#Q,>)g${ώ->)9{N}9Kv/x]e`5? 꿊5 ?LΞzD+/Ԉt3Dz Tgh8fՉv3tQ9`BjPg}?C"@=CL;Ů{&bN UCzPSYE{݃U"@l{_ ǘw ҥP ?b40"rf_ɀ%%&1P`I݄ kHcG.݄1FJ l2/XYp!{ }:́]u*+h XFv ag F'o`5IFX&v^"snB`߸7p8e ?$߰ô0P0834A*Xg hq%@=j&^=R(Đ@Tˉ8Yپ & Ż^&fA>BwSW}޲>Bo{?"C{# ɯ== / 4~8H];i_5;ϞHC -G {HMS +܄r>BsaC]C ;tpȹ}y{WF?BK:I@lR_9?+ۧsJ -=U?]EAT" 2 i.4PX?]E>boo1ϩu(0uZ;)FC O .󫎲5'X*}Nleo*󸋔vS_I*(fA|"oPW^⿷~+)- )~KB R0B (- )~KB R0B (- )~KB R0B (- ݇n$v/ ÀSCP}~_.^b؅݈܏a:U\H B]S=EtZRIVJE_~xۜWt'qsnRCS[/ L?9O,3gUU% BgaQ S B]c x(";3Έ%uo"}NE_~,88׈sDb^\F:/ O?ƀ_cO+m+̲xiB/?} 0*sKud Po$*"_#) B7O+!Zl,N%2s~_V2W د1KDD_ $ܿw'j7;(ez"nwԿ~kwO *EKTу}@}J_2?_ =H/^ehIr2;[dUkL@~_;x*U:(C0ÏrsV${ׯG@ o7>}8_=> y '#S1Tz/P/Y %|sҟ[?fGпw{/28ϸ~>B3݅@ u ;k'aF܇ϼ?o7~8?^P^"x$W@/ևORkJ՞?1f]7y^Vs\8A$wLߛ>_vJأ~)r׿^bm%34ii-q@ F< H0wO:{F>dd7<  ׿BBp p6W]dNǻהK/fŸ?~NOQIƟ^f)9 W_y\co[9~?Ũ]On_&g{1 >gyrT|X˛))܉n_ 0`YpûA:W@vƐ-T)J_[;"~V k, 3ĭWM?oQ+Zo_>~ fOIr`@!o)PH![ RA8_|oOWwү. ??{@2RN o1&;ɿϾ>Km-EY5yﵐbT>]WS9'rNlW<߀L$S}⼹WT!VJ a{RP{|K?< wp:], Vp3 >[03.T;s_y#>LJ'gdY\+Y= zY )vXPcQ}I^[;-Țֿ ZyW})}SyԳ~EUr5|(WH띃>w p4e5lTa8U>hUp . gO{֯X*n~_l[*u#6 x%yE_Y:+/{$X!vz$x8H0߇!FD}8kہ$Dx~=mٿM@~=ذd(_卷ua@x|g7ߟ" y,C=dk,{~a|>Hx `R k^ z*fL4fA?x6V9/r!u՛ '+u5OCooa|/K~I`0%Wzoɗ& | aSNJhȡD/}fz$߈߂'ț X%L()Yh1-#q tGX78"\:?Q^:~ )>$ nZj_Sģn@K<oPY~$@%nc|(\g] iEmN2~~$]R8Oܘ=CAuM^O Qb"#a`K/MoQ 0(y+ W_KC)@^ '(2֌8.2#)|7rǟb =)NrKɱ!OD_!lH3 @\=Ux|H]J=S %(Qw6rGw/#}dK "oۓ?s8yx>"CF 6CȎ+x$@E$xb(gv^@^0&V%Ċ@>h3:X9? H.@ leګOSٖ>Gj9(0*d8,"( d׎wg{]1K } Q?;/&cyNe | pAu@9H;);L5)`yY$Gh)@6CE4jg= o8w|`8)ߢ Ҟw9:y  %=" ؞5>xW 2k:v QQPE>8=i Yނ/0&ςA2(9+b ٿ9v OiO+*X^We%?#+|!݉s@S`+L-E1J'dd_f<|{66ƛԻg2(>wqPBMgkpۚ'" Pb{'Om X&`g/">R0@S'b @Oa@tyr<`{nOL=c&_ `? GTv + ʎ̚bi@`O+H۞e|mXtfX1:+ PБ!2  |;0 rH`UGAeрS=X$s 'pO8"+2$!: ҊD6~c"ҫ |H`ɀ(2`:PMDѹÔg#Q4`3;*Ý=0`1 ֭5-N}bDP O@$-`jNyU 3" P"F 3Ue nHe ' ŀYS Е*3(.o"'NhO_ P"ebB 6xM/THET=?~|7@١3bZTB V /3~ k,t9@c1l0 2X 2@Ajjae(/&fU6*xmp}_ dVy 2H3GZ$b@#) h[F`]X\F@,ϡǀ` |5%5P`3g}3@/'k|Lkua\ l!iq} $8wX,QM0!M`@ 64PHؿ d1`~"Z.ΙTV0\#X\!Pv3RB(V+ī{~:5B60V z=pB~T!da ?೉,{A `Um?D @40Xkh?O}-mPyV[:ڸFr#A/8&ͳ:qМ=@p8̺V r:b t9PQ`v lhLG=`(I(O5^`]-(S=pp Y+X3{^: uN(. :SS]0 `4c 5yHȀe"Ϙ 5*^T+\&P>)BW1 Jʗ|oe |@juPnP9aEFHJAM,a@v> v`ƹYgèA@f&``bZWP p`ݚq`hDbk]l{pu#* p Gd) L:wП g X@ fP> ݥ茵KohX.c{<..Ap ,sJOLU.p,ԺcEȟE%@P%C @HZC^bA0Z>uAXB%1 )jxykNOEm9_d\9Yx FQΡ%$9W¯ `x10xKd14T#9eS@Gr̹:Pـtu'?#A\_B"_Ĩk|ȢzU$[\/oRQጣPfsϢSR$0,373=;g|o_1`ͽ< :mP W _d[vy 2^T~XjJʶ+ƃ \{9chLky)v$_kdBfuHqݥZnDs`+=bT R.(`v }: {[HvjEfF">- D"o݉ hn>diǀs ;?JA\r0xPbIv/ 7P֜B|>o}%{N¬eI=#{vT$nI3tc)_d=x]e`5? 꿊5 ?LΞzD+/Ԉt3Dzא"@=Cñpl`!P9`BjP7 wL^X׈8 oϐE遨\Q23yZ̬@* 6ï n6@^d1C fQ/'Z40"rf_ɀ%%&P`It;oHc(1Sl1زec_xϱ H .BAu*+h XFv a F'o`5IFX&բ XB ݄qo&p sA3s*|òH!C-P0OvFHw&V>( F# hq%@:HK)TM@O}ZbHq F A X'=1 ^SVxB$,Av!<^|,,xo{?"C{p]"j|YWX!d;ME"NO}AH︯Sq)B=}@sɛpZNGH wHֱkPa'x{WH G6?ߗ!X<-Uxʠ}~~˟DA@}%y}<}x?_P=v(; SW~Ɵ]cSWWE1̮{߹7]{{۞6;kApJ[?u3F )~KB R0Bs50cuyo-2.1.0/data/pics/jsHetzbalken.xpm.gz0000644000175000017500000000056111543455110015053 00000000000000RWMMk@@ͯXF\4u'%5KKR B?mJK{C%;M&!<!c.{jXazڞw_VԷƑAM竓J]mx<#uX I̦mvAa%]JԀ 8TZ$uFJ]j !-ԁAP$&A iе=ZBi1 8Cg[tm НG iG|!iG|!XHC>Ґ4# HC>Ґ4# HC>ҐOpp߂u|O{?twd8?4 r=г ̛{ {da+SGȼq.>Ґ4# ? GݰQ$cuyo-2.1.0/data/pics/jjSommer3.xpm.gz0000644000175000017500000002771111657577001014320 00000000000000}mw9g~Crwy>uwzΓA_xD]>u7w#\zG6PxT7tg  '.+^۞ 1co%~~=\?]Bw۸nsٕ>?mgq0 ~;GƼ~Izx2~z]~w6>'i /y=wvz{6o8 goޠ>;$3Ex,>O8^w{ ڜQoO#\uc^^dlu8療@O|Kz:s1/>G7lc[%}a>~wL[&o916ʫ+O#}ύ&/m~7{~į;&0ϿSߜ@| x@Oo Oqwg{ {ޞoqZ?7`׏ʷ.w7h?q{;|~ }[:'+p׼Ə&^י}PNq} s'a>=~Bx<=|"o?/:.?=yu@^KxIg?|θhoL|~sW;&_A*OT̴ޅGe/ _m_)>kyc\t9Wj룓|ܣ6|sʣ_Nzp|NG*ѫ^?~z"||wK`@~v.vq˕ߞ+?|aO9ߧFOm~> <~|lw~|^>Ǜ绻x~'"=]OW~w?_xޘϻOO7?p}wBo^uOȯ.*TS:;Glor|}?j)c* OF}6x'oj [joUnVK7/k#~Po+^TzLhlz2F4% OnH;uE08 =GܽtC_iiYxχZw@ᅫ3)xN-oy8 mdPj$8uY#: y53+ˁμp-1"í@Uu\b'M|{;B/S]hq<{@z=B 9ړWh(o+4# =uwNf{3yY=t/ˀ m8~cP\Ztۯ>{woȗnA wq+d^h*-` 3D Gj" U.=i{7.P{ }x<(|ڻ"&<+%Tj=Pŋy u]Y|ކ 롭$]|o_sWՄiO00%hr{́uVg[7nƠDMxb+@$U 2y'c5 :$V"w="?- Z>YSbtBa^5Co|m1 /u LhR@6O\ap r}l >Ęg* ٨H, 1lz*/P~rcH%0}o\{ c{q<:@`$Yٳrt\ r-.HV>O~ 8;Ih{ׅĢp;oeiIl~1o`@e g6M$k[sBϽb8Gfj+ئ 4AsED',~[n}{pF٪ HӪ8-HHє·`560c1m/=%UZ0&qg5 XmWozr7um s#rjZMK'?=PS " @AnRNVMeo}u4׻B״Te 'JB g (tBVLmt0 0tS<'69,u 8;?5~>8(k`?b nA !_vCȈ&.]aF!8f^2: rB-߂"@^&,a@y vrW4T3 sr9rj3܊}W!Xey6[ H3A@,~" yUP)5;ʩMy m-˜#A S!ꉸ 0 B1LkWH-B E'ۅwye?ځoB o_K?YB@ZZ*''$'ale.,T9Ў!ЃmHsk)_GJ5:̽uQ\"CX,W/B.:3}P |6zK6`S 2SCԏ8=CIW1*.M'=q3&97^T`hxWvǪ^@R( HIW<7Aft G!bI—ڂ2Uu,: AպXy]%sRW~iS?-Y@a mNHc#.*6, .`t@XBƴxW\+29Uob@{ ;U (X,{xag1q~~w1vYj^PI\/T^Q/+^'9 b7Do/wpm&őBztb66d ߹o"4Wbwa ,*/vW|,/b;:F+t($Fl/+wۀ'[E|X3 bYz[ع~ /\k[GyWg-K)"7Wzb Zos |ݫ;׋`pۇy 8y-(cpf?5"rwkw} Y 5"W)#(<E܎N_%$vvz :fRTJay ђ3}g$&/־Yֳ rXo.7a yY#mzIջk^$xrD)k{8At6sjٟ!D)esb]>gbpq'] QnxFV0zJ[T{\uUV,}3<?edjt2Dk^_^{0a[h#"nm``1W?(456g%ݰ TcRRSxyUq[%Z#iG"e۴A搜JFuU zx<x}ЂP< +(aj&V>>5]Šx{8 ̰5D̰bCDsį臇/D-Fldxqu%Aa0И`|DmVp!6^C蚒yUT+^0*|Yl,W7.dMOtm)^W)7 t1A[WajL:AY&"b<xD~ RWG se cPG[ak˅@0ԾU Rz{rH9fF '5j7Xgk!?N4d%MY4UTCUEV1Umŝa^$ Gr|!=\:dyBjZua] t;W)\&*p'h-u599сm7+sjD>uY\XRܧ}4{7@Wbmk ֑{Enh"`Va0+ `}Uk>`le?n++t J6&ۏ~]0aӪAAO[[!V"nh~PqaIv`~C2 F D E[B"gW1m7&&QlMMe%ҙCjj=C.4#f4_HcQ?x.`;JNQNu!U)CddȁڊQHӸĠNio*סkDl>۸s5Hϩf2|09Ǻb'f_a45\~]^`# Yٚrc2[#dbS hL!A%ʁKd>O%Rk <鐣i0c6X_ oǕ7gՖ13kVX0^)snstML'Lی,<</vLJ9ɺ؜G֕_:˯[#LpW9a kHVI_#(B%"Hl2JA_g'{ K9ֺα9G#dl Yȷ~[`UIU懞aerrCչpM#7 2]ǻw51٘)X[F{MƉ4>iHkHziיאB."1GF3k(J 1`^Y=ΐGyh9ZՌKB +! 9սo.(0u+"0\,f\tbAU((,C+Q ` /[Ȩnd[+;` \-Prs˲mPI gqŸdŌp ͍VzUŲA V iG~=02K0TijohYV -[Ϥ@gCG~]813wz틺W"+iϑV0ʸ:$%3 X6vtDÙTꜝ5Nh!ahR"DrϹƒLDfqo#Qv#rc^R$ڪ Dn 5YZ ꡗA-?Vs8Cաg Sَ*d+0U^8cWTxt ~-] psU]Sʦc|k|E#u7cЀ\bq۱A k>N72fPW+ĠPN(Wwiq UhdZBF1G}m>EX\'r` 2nj}:ϫeov'EDb3=glwk9􇊨7AMLfٷb_Bg9z{ +sNGk-^C+t lB)s^f޴iE&FJ93zeC#>yks.~ЈSkY 9a}z$EX H~ΈwS} >jB53[c4qHTT\] Қp\ RQeJ\Z+h@GlGS]̢)j̛RT5`Pf̂']co2x҂e_[숖i-]9CfymAI~x "G>^+/z"M&:FZŠX:ν-PF_[-~JD#?Ct.tDl MXG8;jn]lˆ(b0G\)%+Wz1@9;beNnN~;L}raxQ o󑯁{6\)59E|vP 3Z*<3&@N⪣i|3ߐz2s{SDxsl18Cp }|Zjd=S,0|ZGg,k(rD $W(تI1>;I5jTGz9c^3oA{ TjgH l+Ox I4-;z!@k(_^]`dd8n5{mqCiJ hop_>a֙h_+KW]mbxK-3 YEֲW8ӫc/Rz OijIll5Gb<óU1XL[1R;)##a=i詉^ 6;(# C bZesle4[zG (X zߨRJőJ!àT=<qXm`b !/nx?p7;rK+xtTa{*q_F1J3y$U- :rC>o%=q&:OjY?mg\p1|}~gkQAAoU6{\miVdDG;ڻv>-#*3r_#R2i.9W;Nѹuʖ\܊A KecbclCyG5oiqBfD(cBϽڧ*,`9e.c_#?pjusU?H2Z sn; J$Ri5@[CPa07#f8Ap"=rMW9(i~4^*X 9իzgCJsP%(zQg k"zYH\% VL&Y-vOC1sg/jZfA.69g^e&%8ެ[1 9LNIj{Z7wvYY3 0xpb;ARQSX/;֏eQLנk{^}JVzW1Ars DU &Bڧж =VXtiyҴqa0R R ߒ:c5Yc^D1S8W8SQjP}Aeޱ@sexF/zTS!$@IV P}]iҭ  8e[Hjd~RǮF&}iŎma߀A=ZqÀo-S=F:RRMe-w_P;۱]:>"e~ F =4w-3ٮpCV9A,B@.D^c(L#ay _fs\MɌT%I]i^`0wob3:b4!Eν6{]o1BR*RқQ%ĉ4Ud>&O PVJZw,:\}1s&qha!w sY A.Ԫ5T Z6y1UʈX rwu\0X߆;Fk az(H~k:/6sv ]uUZf FzgC4F!eaPVg~ se3s1X^W5SYu1 AlSWӬEXL-Bu^jGQz$Sh [Kwa_N,)xafn€{hWҭԇ8= @4g%̋b?Cs^5c 1nv0b]z}0~RBQZNRuS_7tΝExe23`9]q/wJդ}Ƚڇ#,7ڣF JI}ZW jN0R?a,(2(yv 6~ox j{ 7:սvvN%xv?#\1V2QJ;I*T0Q`oY *sp+۷=BNu/%ƙHVnf=./+.1cܥt;(ǰo]Ag Trz,:лla=j(p gZۘo@`AW.ӚW;W|S{=ҳ̇aDvD][y@l\o e0x #O)\+'b3[b0Lg" ~nX bډQG#Swj?@ųoO<~n<>|~|'>x~)zK/?tsC =zު6pgj/lgf=,qgo/ZS6z@^ɭj˯sүW#HD*_G8[$CD(s*gx>)=~պOJM+ >Vna~ z瑶/8d@rDf@0ʍr8n[-+j g{dXSG5U-q+TI2)m5ZuRZ!m=Ԗ@^p Km[e*#lv?)R7ZtQ %zHO*#ЇHmhCb[Ck[NS{#LW~ ZT9_A=*GmI(1&-J:NQ#:HuB+,H~#9\>wEicP+#M~iG[.b*',5YѬS'&h>e$ۊɶ1y{foġz9Rvz s7|jNO+9sryiۍ棚O1yy;QJpـ:[|!DZmkׇlgϳf+Jmlv1}MzTm*"!Q$=nEp1Y<JmP Г5JQisx:.bx<^䟮(`muq`w OÖ! v@G⮗fóQD惀 t d:/$: I#7 U̧qŋM @ܻSh!( =ZAv1*c9!AQi`5NFQ_ڭ;RI"(TJ u`fP-` hA 슐5a\O_]s4oMt5PrCAƈD@X@)_S!$Σ=,A V>spa4ra[Q@$_2HpcAҜ #iiw6w38[]7A S\^)<_B~t3;J$$u"(Z&H Q°&rEiNZvbPp@>T^UgHVNj營W 4Sт!%LoCG0Nml6#\/ .N,Z+0ahg0AUvIشc]=$;1D6J.ab2&;9t? E>+JL1i0#mBh` I쌠@!RT]n䶯O}Y3ȃmabɳYffEHh1 2g >+$-GK ǜbw^gJօ@}AQPb^kP^Y=FQ5A81)"Ռ92w*,5Cq5%y; ~n!eV7P"jh{N!\ #+(#5-QbZO[,l Rg3~ R&B\>) i47) ! C" x'ɐ}M9I u>!HxH>*6k) sP!*ǫv[$GS:p~(/ @qeM x&}>=XvshR3tBH!5|TQӘ@A9@eGÕUk !uV@(04+j*'#cu!*s8N7q 2&'fS&=10pM@0'P߱AIɨg%B(QF  Ć!e i}cE;W!2+F b`r#3SV6VZA\dTv]?UQqFf@1;\绥qhRrPp-G( OGh= kUZamkj *03pp>YLuNdqWׄm9$(QegPخZ'~(vl_j0sدe cTO^V4mƃpF7T#Uk $30zU:W1cYvy+@8*jZA:`heN ;R!uHR!uHR!uHR:8jL\#&&O&*rp$.=nB$.{Xq#S^י_[AfGd,צ"wOw9VƦqs$h**:%㠓XL0>t`YVRS9`8CDgS0Z@SA/3*3}ܢq<;L&áD"6{r_ uuptj%{spj/;dpZ;΍NA nfv׈LK_;cR1j 84<3Y[~=:ؽztqr_:1h:1ﻣ_rrFI ;{~ÄRb%~|lNO_*ȹKq_ڛ3ل\;b밴|_Jk'U Q {󅳈<ƻrb&>,+]׿瞐gtwswϝAG td 3FT0@@JdH(G(ٗLw IEHٔ\,;"}"/'7?CFѩT<1Jw'P{ʟug0˛7U]dS])v~i~=I_06f˼ :IRWP]/$lVa\4:o6\t^G'~ya' _d.'Coa:Auܨ76.a7tח@a8 CI-fQFQLjr+=V%|U^L|5. k>}ڞ|e4%nXdd\۸ v09G a_=~h/GUiv'wa kG~% ,OUA8BFEǪL)}u$@gJ9HVOT&y`[l|= .3"ut{mEBfLZ6 eĎ$;°dgxr_l0x70ǒY o}P_+\ ZnHyH 2C4f,"硦ǃe* xi[pÓ[5i5 9C8Nw>N4MuWJJ #Fe,Qȫ<DZIUVt|C6e,=tf4V%˱H㧷?S8뺢jTܟi60ڻ[,QFLo1fh-NݤtrrR&S6|7C[ H|uUP(F#?1h1vN vzkҨ|WJQFeG3h~ȂKg/W01vc1vcH7԰=*cuyo-2.1.0/data/pics/mbmLangsam.xpm.gz0000644000175000017500000000434411646353247014524 00000000000000{WJm=%܃b%!XֶBjM("j5<{$d .gweO>;_J{e.[ i]:UOߥte"&ɉD%/%. S"4`mׁQ|0;$ #0?Y=L$a  up€? UpD`%, 0Y@H{&`@7a")9[!(F-dH F `$nIB!#E.3^P 5`ad*!+Fbd9jC*{!à^`PyBV [^27 UԒ;t Tc0!!%>P À)3a<"0 P0 xD-Ԩ>QZ&dr+Ԓ5> [!uh˺,G5:&dRMBd P}Yf^!ˬS YfQb0o>+NoB:S * vF<'/u)w 9qMqIi5 fa $-UA:gǸ^?K*q0ͩ8 xG40`f ~i7i^:"T`TӿErU {5VoV~U$ 5*ᮕF#,+V7+LߥѿRlI%,.^@X5T] mIҺeD2Y?=m[cShT.FׇRhw,7xW7߯]Va[/V^Vm\hPF(viv5>*j2)ZhrDr9U/,?]kۆ:XMm$"Ǖ\dת"u?ָ5 vjSe6/HR˗F]WnGj;{]kb+uPI)w+CV=snzģ!$i8<>?95z_!ݞsα$xSs ~ y F*9\\#X\C/!HgfG&z<\G 5FG? L~x(ݦ0sp͗0\$E5}ca yu)4`zr1ƴo[jL3k[6Y5]~1M+" kx*/.OXq{m2rE#o*5*e` |/T -E8޾+ >~2;KR:AKO٥W ?__ukd{togCzW'K!gx>3*8egp>3rm5a{9v/I72ш]]Pa)fݯ\Wfp48EGƋ@%0cuyo-2.1.0/data/pics/mdFels02.xpm.gz0000644000175000017500000000767212412223257014016 00000000000000[mw_A:@\OиQfXf+fqچ&Mzz~'u_8+Bңl y(YcWXMccߖƏ><4{8ۯn4nI XЛğX<9;9?&qYsC%I^CRYĿyw|~NQ0?bA>8z-[P^YosXЛDKѧUsN1>/Nj#yBbs{/g7mf{UlptΣw<*U,' ZW e鲮R:Z,v~!_UvX<w8ZbM~pc?՞3<I,Y;5Gh_,@~&qWsES[[&=|1k}"L8Y< yts8g_$fq8֣ $s=ððððððððððððððððððððððððE=z n>r^T/zvE7]TbÏ*7[E]ɍ)zTUE*eR='\XEta1}7jGTsvZzb'7ק53@\ꡳ/.^s\\y(BTJ=B567{{~q(4V,Zlno.掟aՋMea*IK4y׮_[?͟;{ifвRk%MI&TsJO8.Jc6\xRa gҥ u>%^X9c皿mLK"mhK)ATkW$O'1_`sl/aDxOIex]*35T"B(a aр OzR4& N0d@J1lzriL=ѹӦlU+L[QBBcgF0H2y TH!ڡ GԹUo'nVѾ, …S4Đ&J6-^Dl V֩i0E=DR 1@R4ɨ521Fي0@ mJ9maWJ!<~05E~U"B}ɭ[_-(JJpN6fxB;_]|-DX vJ}jj63RElG1WN M1 u99GF_Z%kFe ]W׾F`A;l4B>rs9V }]B'27J&S A77F}&wȒi&cyEeduHiBDc8+#RNDD0T0X62I.o@FS70}@,2u2Z+UB᷊lA;E:% XZz Z!l hK3t, !Xƞ>if9yhFc3ZeXU[xd(բh ,NԡRmO@\pf*2)`p@d,!"hA)&c(R ¶punu-E*DC%e4OU"׬9D6r|D+QwPLSۦn&^sJm e m*4xL2aF'4Q5<z#r/yR D*"j*? pja3M~@5,9I fK*m!ҢH mO 0Rѣi[ /JO t,iW~`T KWc0 M#Vm=1L[@'%p@TV\ I/\^eH^T 'Ruآ7j9gS1Jr~ V鯜2a,@H(h|!\KV%YƜVL~^-Q9AF61ȯ9 Ĩ,zG.=A\,HPy'W% hb0Apj] IDu3mF]Y>3B15oLYr5iJ `3_Q|(@ s& ]ʙar!.d̖WƇdBż+m/#$ ?BeiADR{84vVD⥴Șۋ=MnuP"S +Hm0Zx%\afIɑc3GU7elrD 2ݧH X5S]n>|$$hj*"& [2mRi4y9(j,&yN|]y)rJPʖ3u^jL2'c'1a&|fcjjEĺB͢kbx%Cf-L(dYNG"n 0fBl -cDʶnV8" "y}_MwzFIP~XGT"n@ o U[%\PM%_rեMef&˒|mAi0ܘ ɥ~,4S "_۷޶KLitZيL [ҥۻbuN0I(UP2[޽_'WsDs&(#{}; E*8Jq* _jj[t$d *Lϳ&%1 Xӻۗ0h1#3V1Jqk[Z֓@FN(ʲl!UiQp “LhZq`^|TM4(@r?mۄAa $ldbBmڨrP:W#`v*~߶l i'ڮlݶޞ.=]Ơ5jRvpm'i'1+% "A)):.&7e]LZk ,F(;"|S)v5W,YC,)SZ 1h6zg~~yTA )OSG$,Rc<"%bg翻}w\O6yϝoqfadʈ%ˆs:SzNzۃ OZ@?tzCi+w { _ݙd7Ͽ׆Gcuyo-2.1.0/data/pics/i3Grau.xpm.gz0000644000175000017500000000127612420650607013570 00000000000000]0_&^dlw뎣","^)^ "2 { 9i;m1Y{VțIKk&W?nva]_bWzwv[V׬^?\ك{'5@AKPj(\C ((Ϡ€RBa@ܢ,|.\ʯPGFJ :FkZ [tUK@k]pF}ga($n]YBQhF4c )iA[ X՜h9-r)KX⢀dhYBU$FBbVf5[Ն H[F3-^%83cf̌13fcE{kbD[r9j=aT?CǨ:q5`Ԯ-bbNA(<7pjrDSSFIFtℽL`LqJl^G\I7]cGQ4R2\G 7v"cOo#( DZ LȤ∱wPQ"de7 EBF@IύGBoσ;2iJǥQ%8AHHHHHHHH;0?k {"ɟ-qN׵fg$/#3?_7#Ap`|Y{)cuyo-2.1.0/data/pics/mgsSilberGold.xpm0000644000175000017500000000612211672457346014564 00000000000000/* XPM */ /* Copyright 2005,2011 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 32 7 1", " c None", "= c #ffeeaa", "# c #ccaa66", "- c #997722", "+ c #dddddd", "* c #aaaaaa", ": c #777777", " +*: ", " + +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +**: == +**: ", " == +**: ##== +**: ", " -##== +**: --##== +**: ", " --##=== +**: --##=== +**: ", " --###== ==+**: --###== ==+**: ", " -####===##***: -####===##***: ", " --#######***: --#######***: ", " --####-+***: --####-+***: ", " -##- +**: -##- +**: ", " +**: =##= +**: =##= ", " +***:=####== +***:=####== ", " +***#######== +***#######== ", " +***##---####= +***##---####= ", " +**:-- --###== +**:-- --###== ", " +**: ---##== +**: ---##== ", " +**: --##= +**: --##==", " +**: -- +**: --##", " +**: +**: --", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " +*: +*: ", " : +*: ", " +*: "}; cuyo-2.1.0/data/pics/bxKlotz32.xpm.gz0000644000175000017500000000204510361553650014235 00000000000000b=bxKlotz32.xpmiS8WcbYɘ=f8e{C̙巯]\K˃u&;bMQ^קɓxĚEq=_Oh2Y\ %w%A1*! h>4Ӗ`Ƿ9=ߘfL l6\}6a/<i -BpDŽkXTsg-i%zY̕f$tfa.gj!"lꪼ Wr.`V0{.rÑyɸy&p͹1$qpT]v6kF㥣f'+S^OT28vs7(?^i۵s5 ȕUpZ ,ڜ'|/ DN7U,w|w8~IN<}cbrT2<^ ':p80lѵNȣ69NExQ,+-VS98 {ѠU!anh3? cuyo-2.1.0/data/pics/sbOfen.xpm.gz0000644000175000017500000000150107550521124013640 00000000000000=sbOfen.xpmAo0)r +mҬ4!eS'UUEúiaҴ>h0ʃCq>} |"߯YƳ 6h^lŏ;z?=OhtJ5-(}RNIٓOtkHsZ(Pz҈{Z(M(]AQlqH h}Z W Ck  0 Ѡ10;S!i_X 4OjeM  0ClE_;C `\'%IC_ 4e eN`/tυ`hdN`/vkhKC!,ڠC40j`hi94'](!z][ 5ӂAޘﵶU_ì/½!T uMW$ q3y:=ꪒv|v&ezuN/;,bW]%Vf|&U7c甭>wih3s4f/gKsV'h,R*WWjsMs=fZk8\-_+8tmƱ֦ iOgx̌kfY>]3xƏ~>7O~##{Z+j4diqz5;s͉fƓzne3¬{4S1>f>v<] CyZߦWɎ B_rxyFUϟw=o_j9Xo_>*ժ4뵬.gW#yy{fiu;7sHf|}<Ӗ}g/'ofƯ^%k=Ϗ[m}DPȿHfH9+/Y+ّ?> 5-O]o0ۈ_ϒHKoYZּ#{5imy~}T+m;ȿ2(c{#~ #2xz~:~KSC|0)U ?R9{wxkk܏?5#CO5zYD;gqxnΞrpO[? =^w)3PC}>Pf|h}^v/9}+#[gia3cKN \gG?c_g//_K%kٿwKŃs7purx`7}\]~pwwzýX3s=s};~^FeƯyi^޼=Y|afi{:zoz?>(GN~~<[C7ima46X⍽mĿgidfe//Vњh7Fgo⫙g?38Sdu0?sȾ?FkoWIGciƥrjV9W5q/PF>tq(xc#W,?t7%=:HgO9KϘq>f0r(3ߧݑ黽>yd8o⇫Oſ#Ij;{qx|3قtd/Jg?y믥ƞˣqRuךY3ُ?N/g^~so^=}z~u'w?[z*ߴײ>3_3__ ~Z~=_{vOW#5/g<'?U9G_ ޟ\*[~6]>5738ٯ7ogOON.^)={ïC =Z3׹ڇ7qv<~"=Ď@xgC;Nydӏcϸx'~> G~⹑_v/sǺ|gR;p񰭝}^/⺹K3gON㗹9|*x?uKf3eo#oQBP1FWVO|\~:?S ~qZz 2|r$OcWᓳk`u3/3vXˊooNO#z=.yٛxz]|iON?o\>҇Ώa˫Z5,[y6G61f5ה_~2{cYncOq'5O~rWwϟ'x$_s;r6Bx^Zyz-9ٟx|sTv$n~#5O_&~]1<w/~g>Wo] a_!>nC_:q=.>xzwɎ ~u-Y|y]g?]>9;c}?7/?Fas~e̿毻uݯjc/&ⵑh>C68~hlٟ<ŭxcQ_apx(ó@xuo{}珑p+WţͿތ|G9pcܯꍔ.򱬧iW/Gqz[ K GN8uϼpכK##T<.^TG }53.M섷7_g$?zz]<:{uxzai|kWg{o0K;Fyh;xy\e<>,_j6^ۃW_O{bgVxqnmœ/碷/Y.q#7 vYּ=:}o17\=e>9v{ ?>]}wŗCk{asʂ!!~ \f\ɡb7Sdv< V?Q0ԯ/1c`?| `F_G_ǘSgpK{=vſ_ӟ~i/--xW츀_k-{?U<[򇚧WL]~߱V0x}|4K{$pw\~}#{4^z~\< |\O|o}uﯻ!q^ݿ{ ?^~>>yy\_>Ϟ|m+s#my^?w!~痽9Zګo5o=Ny-/Î_[wG}x|Cok?5!?);.x2~;49;IE^]r9qg7>|]-kO|;w8rxwݏ]xݎ;x9_Hvҏ]~W8):=>"n򭊧٣7"/|'uo?Ď N\|?zz\4qm+r7^\uz_oޞ\uz_彿zsy39{[v<Ѷ.Dxa۟GEy}o~?㲯X[%C ~?r?vT gmmƥBPyF2CTӴIkߞ'>~q*qr իPu'N?&ο]N}᧋k_6 |r>wˎqOb0ԇNj'o*%Ο~T|>?zzyoծ?Gbߞ^w~?_t4o?v_[qӎ/F5_y;~H[OH?6?z9~׋g3.a G^ZV={lqfLqlo{ 7^#}ό׏;sߞ_~sA>%;Mˣf/Ow^j۳5ϯHf͑b\~87fϟ?yB;z\#YA/TzaqhwxĎ~ύmxz~['?x<7x7o>Qǝ.|-Y8vŗ_ێs>kq/s^ze/~~)*?>auď {}˧w8Oz4[׏Ξ=E{O^C5\yy{qMowwgw~]vo=G4xKlՎгNj7;4{Ď+~?Î[#m/8ެ/gcW<蜧doq]~wi+o^W,.e|K+񬯇׼uϿ ooz'lT<|Hg,dKXleg)6`}gYfǬ&YbɾXYYq_UXvXk]>Ů ew=`G {e=냂xɦ5%l<[`xXœxV*[clo4l- :w.k='>;`3S}^)JT UvPDY&XCM?Qcj\@}>f9XVձ걺Ŀq7rȒԗʩjJ",ϔʪ a\UTU` XS*;Db5v\]sv w$?WWVQ@)vԽ:eQ=g^ԫ/ԛRT؇ @y_OTwlZHaVA)K?<$7ϖTVͲeUW+jU`MeHvbԺa jC]Mu2!iN-v ]$bS@57`WLJ- GQӊK!e8# H&2]/ @5!lJf*%۬2MoS2+ߠM7cYO-%?v},ɺc6+V%ʲ"`UYß-5![#?q_ L8IE d2kt; bt"+-[`M>Y|?uIAyEWuMOWG7.SмD`gq2З:HH \,U=ou.SD6e>, H>6Hª>0 2gE~\~K>"?5?uSO=tKCCy<,hOI\zz~ Ƥ7pSǰX-gW^LtcuH i('OU 8l)në @]tDZ;zv9v kRUvkH):MEs\)YTi-G%|)Rt3BNXqr߲@ }hc#?8g 'iIE"ǃƼ|)>rA#N<9RfX߉<+Y`epyNldzrESو.fzρu]u)R3^c]~sXU7Hj[]00o@Ny>"5GüO:,//oa7sTiX*;J>*g% g2 </zV`OtTRKVw@GEv{7}+cd+Y+~G5 ,Qa| -,*Ky&࣏8MβWȎaԂ%g9yi3vd* #6;2#_}]f}U̖ 2+|:dkupx4sYmmiYVW-76 Dn ,`)q3bLaE˒g`zlT ?gE@|<D_"6wS4ts]"?່}d0 }MAZSo a}6+2rN@t-x}PLAcu7e Bޙ =C6ŖQvWX'M} 9/|`LoE`j~+n8X[rOz 0obYq^/ł}vhVbj 4g 818 N'U"GςP_ $GA '@;r3apG=##ʅ>\BJ7}qҐ; -ȡ6gAv}oxX'E ƂG=a{Q=h4ɣ͎Yy>K|t6HA=XѰMcQL`q<&P`Cԯ`\WѯLX\M&@M T#87ސ1D1mU bKAgL-zl?OyԳ7KBW<&Wj(A5xZvT (LiFj< Fy+uTQOp΂L@[!^f\3σYړ{(C7L]="wehpUpP)-C~cX Rc6%`chFe‚١y]@*$tπ* Ҩ'F=d<<muR%fy."" ᗠh*}<@58g >K{L^Ehm".s)a9r(Wo{p kȩj#ÕMi$Q:E(a)`sgү.rsV5tzL I٩j&`Œ}}m@sA+TMv󘱎 dKIpnutBߺ>`ߡ}P=ȯTZdL>Ϳ4=s9X5QWPMvg.e7S節q 2\ =5EfI堫aYn*ʸb'Yȡ͔߰1ea }o0*e|V']a.P \ Qc}&)Ra^YELD4T}yDUT_B2y^x/`o6r>q\18MysI>[aF-D捀 j[Hj)NU܅qg`)FQl$= ʠ.K!!rS>\wQQ0yHX#+ uIbek됇ۿPGc`tVK`=!jxXTd"RIy 9"7U?Fx {1%OPOa jvyOHwq ?‚$U}pA7Oj1FO\/}yC飰R!UgME0<-̐ k_rNfɧ;.?7˿?O TLO<A UW5~hO>C곥\>^%^FdSVz PUp0Ìa) ]599hXe;%p3#8; I)\GQ%~"O`}"+a EVzQ0ZBD3#tZ !ˁSa'W7\ɝȊrIHSLvmn..e'rjXͰ"YlNvFTE,ȔA?u-BI]fSeH U %< 'P<>d_ #)J]UTd]^HomD&N1\ Rǐ"dJׇ7T\4bJ®"+뀪^F:){xcC (}sS@ĊgEIDF4eU88S5̢ރ~duG6_cUP! );RUq7bR1<L 9,^n)e@ߢDU恄O@ (b[Pc]TWAL}ƽʪ!g 7̍EC(ٔoȽzɣ 0{œe29B]e8c]_XPAR$49=b"3.{YFMy\>bpW͋Y BSHgh?[!_ Sݒ}M:J/Qf`t'=lL۾%l"#ioog$GdѓQPuVfCu+`7s'#MpTb:b+1hgv$,] L yRe'X\Kfhޤ(hRlVsOfDG84BSOCe>مo~QGj (!ǪW7|]PesY\@NۆZ0l"MpjӪ4 e~FǣS`[t4tum1R yFp}xOVЖjRΰ ~UPWeH+:u=Pe7MŃ72GxHv(Y̟2O0ea=&ڨZO}>ۺCԆ?Fi x)::=Gt2z5G^LsUio{Yc_Y GĐ,,j&U}Üw ;U/u!6VPvgn$;gҨA"*h!2MXdŨ-am N*?ozo@ >*1Z-Qgi)YE{U#:p\&cx(k z.~(@O'톈mƀ"6绸ܓȨ06Q|f奏|pA{b29azTy&>Nh,wڅD:fk$ХNR禺}Uz>e6BӉ k=DEgҨ۸.Tj+sɑ"3cEe }@{[]#sFϨ6, X ;y_<0iO.J@ūsv;Oپ> cH&i<%wÒdr١H:`UF!-Щ,I/(³ʊ!+*tayPY}dI=)Nm ٰoPCĉ}Cl p:h_ = VnlzmDaML%s ,p9/ ējءsȄM$-U/u:AAycwbYWXR z僚ഗy`yx2"l V_l-^.; 'mQ }$]d@/d9$5:W[|qkD6Jp~?^F>=YE$Vu> P'2ZL[zm}S&(^5Lwl֕dCY:?h~4N\=F}{QD"̙F7Տ=cJ^tB%as%Ϩ JɗZvKVOO/??w[kyb]MRWG]#%o2~-VJ8~ڞ:mk:}Q=hN]S_#}ԓ̽}ɄNMNZo~%\ :+u&I%W@|BiB^H_r :e1d^Q?Q2 ?Cv,'%4dUIlx42HWj2g&6'ϳT\c^ϭiNhG{!(: dԌ9IsBxA Rӡ2IBQ/3q,eyKT$ynz&%:oNn/DCy:S/oo*i"[7T͜[VWX sMLlo?N[-o=OM/LIyXܼ9USR2UBBk' Fͮ dś4O{U36NH$eCWIҟ= 6>uUgO⋽K}BW;ɸ"k1osXNJ|=U1_8րa7Ew9$9t&іdQToRݼ,+5L4dJ$DOzC ƊńvX ']Qe (b)y/BHsA^}QyL&*"8#Yͩc:tJ>ٕS> ,/C: *t+t} mz-"=еA6d`&>~j%U1r#,肘e$</iE'sjU7FaR3':UXdA^m j-23>9*X37tD}S6@L,;g:$ c4Y.*M)‹x_BS,iD.NH߀ m2KqI<ߛݬ4NpX@%/w;"cKFF-Qtk`@Zu\B3Sa =+*a^ނ,`I M̋EA'fՁw~ C>BP'!ͮy{tRzǜ*(դsZDmH\=]-ZdpNs>AfQR K_QԅuG!U*EE@^tɵ{< R dvHC%SɾZ wqeEЉ=Iۼ5 g s.Z޲Yv=8ΰGM՛\b};`C~9uN0"|x=ijjY=_Rن{rI:?8H.(_t2c1UnN"mǸ`vڟT N92K)#ǢL5~A3%~{[GażFu,̺cFԡ7l6HE'KV@M:QުjPP<@uR'oܑHS Յm[YUy @9ی%1sq+՚E>"N>[7پ9)@ kzo: 8Vrq vRQ}]E'qu99\c5dۧ}̀Ngت#??oT)ڗS j;Yg*x i;b|~G-9ߚ\S')d1\XBI;|㨱Jbu%-Sm 9q4f:tC,j*O ,' zS^mĄ $:mv7xS"?r:3N$:3 o7qfaFVt찕yht$ĨOS8;כN{ tR.VxmQ>!ׁE`o6]m#ؕ2J=ѹ39Mti*QxyH(xLo_rSkK6 K*ET` )Vћ"pOq}>CEq1|B@u wN;TU/ې??k,zv߂U3^z*l^{owjØv|DhsT$Ȕ\DH畼K:?Ë <\vYp>{.kO?|+F#֔9va =y" 55̩΀ls# KSTٰHdHrx>OzU!*#uH'ۘHDLr ӝ/N2Z!,†w4zzD"drAĿ?ƒo@n;h_37#KDt탬J\GPGx(+7ȸQ `jJ Or/2 $= 伵? sћ6{mBvUonƧUĭh)rc?]O,[R:<2g"?.?kBiCʼ摕?Ɣ]Ʈ|UR"*=T~@}=0YPJ ~.$tO֑Oj22S7Hț#sϰ(Hj޽}D ?zhM̩Y}lFr-wwսsvh#~LÖ(#E}oDldرXO6SN'I#cS?}?$N:/*n <L?MGҡ&[҉N鞗7>z'/mm}&*j:Gַ<} Dj3+&iOQ2gZQĮ7pߋ2aϓ ͼ8v#ԦџQ?P?8oSUW+j;q$i>;r~K=Z"c`Cy#lnߢ<[{YGр웯I>ڣUaKj)TD1@9~ ^n&ikD Agb *@KJmN_xx&q=ŎTG䮾EFūބ{m3_P9yN% 5 dlG_ Tቋ@ОXFB~*q[YB_+l("C}P`xf-ҷ>܂&L O__p @cuyo-2.1.0/data/pics/mdHimmel1.xpm.gz0000644000175000017500000000407112401656713014252 00000000000000YSX+L0A$Yv&1!1E!8=,a3WڌnwO-'U\R;3^w3d{ܿz],U3F%c3S^g27^i6Ѿ! a:%$٪6O){fQl0Vd=y:EbevN]{t:fIطd=p itjɹnH*?BlAe*?~Ue*]V ۔MnZQ ]"mGX&[m&WȚ6/g#_Y嬋Q6 ۰Ekdu5]OCr8w{y= !u>[8 [u8#\1ْOt"z]~ly2/nd˲!/6\~+ &kK{C㖬1Z8(G1Y/R!¿:a'ȺM^=Yɹhqd>[d&Y]A)#齯I_o"ʌh_01HSS!G#ޓ($C bųҗ>CRD" s 0x'!ABy\||$x. GbbG1|%cj `("F`9$#`dHXE^BZ ۵Z*sqeKնbB™(1‘/QQ,E (t)a0){# qF B$`@z-#YXUI b( @Iiz=`*)I#ahI0 tR,Rԙdzzzd 8JP$X#ƨOKifX> | XԉTT1HPA$!U!+(b6]:c-|%aDS('(1WQb T2F fi(:3dI0qDd?l 3)qc袰w9>LϹ%c9N[` GRaH%GJ #nP,0cDJ8 |y0j$cYDacl,cdX_H'P2cH1PM+K, öȐ*_&V!c6n EZ,ZQ((o4FZ "76fǏ cqXX&5BJN   罽=ӑ +A$ B$OFte< ]ZBO> H H"WVt?gcǃԇzn|%Ω!b 't7ׯSA>z&YB)IhzC:Ɵ@)Dߠ+g"H@$0>NH ʠZgG9 0ǿ}vsss DrvU}Fv:_QDS*`WC 1!V~Qrr(Q]k{=hp?FSx!)%Qrr}}},yvt,".0'` H̖ Rebb<,C:*.:;?&hٹĄ-eLvvt)x.)*>`x aMٹuQpuPLHgs00000^٨&cuyo-2.1.0/data/pics/mdEgoL09.xpm.gz0000644000175000017500000000242412412223247013747 00000000000000iS:+Th(d_c@ǐ4`W:]":~f:ÓstEJf:?u4=?q{׻;iMeqNLuT-F &g'&꣍1{=eZVô8hf4VV `aC eH8PEZ%J`RqqŲZ9)%@V jU%`JTȖyNkՄb:GSE H0;G r$2"Đr|(R8hYZDIJ>tpu@k&C8w5TܐQ &P-!ږ=jQhhGmRX RE8Dqx8@aQP'1u{ >/ShQhQPqqP %= !ovC.IZ _Ũa빜{"{B @{Q+:-aѲB [1; o!BZ?%)\ zDf$ ʁ.dsPy__9Ά+!e^FoW!ՐjH5R TC!ՐjH5R K+3IkIh_U: nd`\8yj|BmCC8á:,(]Pw!:c ў2 Lݞ*& ꩥ糏O<7Ir{5AUyޑ&CUv:E' HS.bcGmϭA&e-* '5on&Ӡ|'?; x'3r&X{ѳ=_)WstD8Ql[ů<ϥ?SvS75fp {O뀃1ֿ!o^Wy-fsqȪ|#1TK|o㼓P@3_Vh,4gi4_2 ?+ZS\4l95d]յ`k44o {:(MF~N֏U~YklM e֋4ĮmMc[j@} -7ν^јJ$H@7:Դ~|4ji'~|&cuyo-2.1.0/data/pics/kmBier.xpm.gz0000644000175000017500000000264011347236315013646 00000000000000JKkmBier.xpmM{W<StEڤmڂ+ "ժm[u ~Vh%.sr0w z ,2EުSupf@߭P/j^ࡌWxO=xP$!~CP ]ѺZorFm=ys}]bUUHxD`U#^+/@-xďOF;|LJSY12fa׫euluUo'ٮYSpc+](G(+AEC"adHQ7@oimhN~,eV?oqTM0J=5l(lqFsU=UzvViQ:@@P ,SBA)I!H)0Rd6[eߘAVa 4H8hC{|` ??;烌^~e ȃ)]:K/Ks_%F~@] pY@adh݀7zZQGGk)g}y^}$gH^ YS"ꢱ n@}zo_ .h4lcuyo-2.1.0/data/pics/mtr1.xpm.gz0000644000175000017500000000101411653006611013304 00000000000000AK0{?EhnAX1&"Lxc7mIt3fMo]yz7n}n۷Y.>3zz~17+˯&f26cs_d1KYc{lbZYݝEuuDY;5kYt nԂ5aTT4T .HQx цRn~J#_TsY& &$aNp?*9\USjghFP#( T(`HJOH28%"$BP!A^i 9lQ+ d ;dD?\Gfx ??d}.ш|B}O:܅M_}I/\;*0:&OfJb { ðF Lpq8j*:^H)#>P% #֯8C:eȂ3AW Lw*{έ+5[u#=lcuyo-2.1.0/data/pics/bmTisch.xpm.gz0000644000175000017500000000051007550521110014007 00000000000000<bmTisch.xpmSj@=7_1hlcaxЃ E4`+AlgE)B&vem Y/9M z V͡^/NFpN'hi'IᡆO ~Uu:-AttZ I^򍸗5֑,[iaz4#Gِ楱-] }9BajH/ Ġ/ZeYB:ܻ?a+>>~г\g5b'2͎&W#hȲ y(#I$<289A7a8v찡9w+5Vcuyo-2.1.0/data/pics/jhVoegel_ani6.xpm.gz0000644000175000017500000000252207550521117015112 00000000000000<jhVoegel_ani6.xpm[jTA];_]'(D !D4 AwUէd"6}=7û7i`4Hg_O./^:^LGpj/=9Mo.nO7ߟ>_c0=q(YgQbx(-ækZڃؘ G45F+5wjRs`z&6[ 5($2xO9>dq0GچIjA2nF6i U$1PRw~h; 6LQcbgxX.;Tyn9b2Zn7NbCmrXr>kU^1 ifT@񮈳Q#0Pt)Y823MR9z&Q٤&`Y9 8!]6y,?:)#xl6鋮0 {IZ@/Cl6}X"k36?~Tg Ŵ<ItAlOSWV8LFyH?}m^*xxએ tpTASndy9hb҄œ&ꝘBgEqdQ2Dx@wbE󲁷G=Нp$"G7-g9qUwR4v2aC9#{Fp䶸hk-N1r7~4"?bu};$|"⬀TG"Ľ?;hrx˲S~?CCH#^ ~;4;>̬~)1Eܟu4uKT (?(`Qm C㩡9#.(խSg5C7\jޗkԡ]/-fyVP1sY|*G5Jj0r1.q ETv6-D籘BZgsXb1xDѡ" #A_MP7X!o+nPv'b?VM[Bcuyo-2.1.0/data/pics/mffisch5.xpm.gz0000644000175000017500000001165711646353264014156 00000000000000]{wڸ?bC-~I uIhuضK6VlڴՌ`v>G5HHG~=|?soJroǤ8I${ @h, 7E9Z PL D7 A bNb Pq)bDyn &p1 j. b\XCVX9уh+rX4.X2/<*KX DM˥(Q$I DL¦QUnHMX(W@GVDJIQ PUmOՒrJ8F UU,*J'P Mגh*R:oTCUr9oTX" X O|n*px b 7-+UAq|@f rC+!s䰅(R+Ƙnub.xpbC0-0!0 5c!V/ȅX6YOa8gKMzCR双dR_Ts K: Kҕ.s(i3{Ue3"Z?ڼr\Ӭpr6UUeLUrxV朾HK8Wo ؁~_꼡7*f9y#nae-RkPN{KCn-GKl>Ivob~>{Un]/?8K}fnz2A߲s~{yt[MgIR rQWBGGKb^a1{;fb8VIpZ K?qqqqqqOs8Y6D ffXvEB d'J29d#DU5OԭAVlJϡ -TـCFq6یC+ԏ4\ )u84qruEƦƐxMgG@")x2\'۽P; &`Dr[#GF4x UKGnNGeA: cRG$J-iSM[wi}naG .ڞ ƶ؅}m[\a;[s=lvn '|n;|ky>o7?^(}SĨnPi%HLoDL=X Ŷ ˎY&^zހïØM98Q;;;;;%0CZ!'ȴtqhiSx:Q?^ñ6eD@'.}i.ٜC6>d>6\Fא1'L<9fL#޸J\t.s c -g69}{hrr܁;/xU"m߂qW"ـzb޽bS:`'óŧ9 ELڂ?qq[=]W1yOcN}0>)&Ƈn4Vt75v}SĨovngM[(#L/d䓳X@mcxl:f ƣ6_CaR~j.?vvvvvZ'^X=rWpVxk|Y֝rGWqoρZ{{KvOq{ /%0ٴ |`*M8 O/{9V_. MymC0`$(LNN_ Zy^Es8<,:HP{̻o@zQA?ixε",5,q*_p1yrC2xd%8ux\;*8 k^`ہ5oj@ n^<_rn=ƾ$^5qlk^Ujlp}?^u}$km9(!i x?ScL}E|a7U/q``™+V~L8pYq1  Psakߞ^y{9Zۓz;U51g7|nէo s0|/wvk<ٵlD!Y}R(d铢o±$օ|}33pE uz@S`ѡ!3a7r"#FAAt$chyAۼʼn eoaFC z|z$* 68&C":6cs#oجu9((+rU8^嶲Ŝg\;;;'ˮ;TqXv IEx]&8{||sm:>9m$&Na!rd Љe 1eL"tL&3c ~Ckf6DUgk_95 M8VrhEeHOiPi{^%)$!c2ڢ p+szÝšk8q\(E=UՁLv`K|pBG\%CW ˙./.ﺬo>)e_L'|ܧ.:%)N&|6K3ςv9)Ow-9Ps5Ï/?sP-`!m!8>9*뽶 8o{*3M Suvy߼c5=}ӈQ٘XapmqFYNb8VkhIyfJ^U='`GG4[fĽ厀o q2fMc7vsM8t.>}霖+ 5z;;.ilhf#sL8iM8*b;v"™q0-Edᤩp8lpߐsӁ}< hiW#8?iYCJ^ my*+U. NUv4-FIh~vCUx{#کۭ0z'Zk)nvN,!LUx;vKC'u~Kpml+Cn \:>-h Xu)'==p'qao>y}2O}36,u['}VX]fi( 0^pƋ1jOrkE wuaGQ^ѓmb$ e! U,B3,ǬIQf3c2U6ai'$^.R2/d6Kϛ;+ƣ&j8*ܸ-sҲovlC>!(dBDqӆ~2(POQ-\yȃ=~T{x/`c<mkK>vxHkc_BrhH(1/pQ=LY%lN尭mK/?W7D_~ϛ ygXCX [ءJ?̇jq6㖇m1Ú@sVpa[,]`=T8w5rC.lbwsq ׃\ '(I>]MH̆{mo1:!N=]:o?Q״RZJ$j)@M[]Q<]r(}<8| =y@QIף(1ٞnoU"P p0f֋(''1~']z4c=.fޯ/,8<~CgCѕ8͟WGE5Ǽ-fq T's]|Jg;qCu.6]'R9|7?KT㾙0 V}S#OǍ_<+YM}b(Ԡf2F 1!z>7>(T\s(.)FMb5C C1 |q7#gb&VOƬ9 1  W"c<8s_`:fM.Y~C"s=8^A7xWBT#l,Ǯ-gAzf`Wv@ 7oٲ!?lueUv|&$ۼDfg+120mfOqrX&6{r6Q#;2yI~F?7BfWD͎]8{.(·/eŲͯ6d:>@[ϐif.t,Mk}1lQ^:6b`ޡJZ]g3|C&mcsm3mPٚ{ٶh(`-r{0f܎?12 1n969#3AD6M9$q&ǘJQjrQ`p F$Y濉zHQR^AW{ 9rFdj|P&x%bu$.暌 Bs(N\襔D*FD>SČO#W +belFDxJXT\qddLC ьx,gzAdRF4X^P970Y&!|lDX +3r)̰u63R{Ԣ2*KaT k!F͕vdOFȝ+# QY@,g[2sU39MS52MAhR32&+V'&,f\hCed ݋]y+ׇ_!(~ԫh;Ca4ȃ]Ү, Ud0#}O+2F? Addدv&QK&w^Ndt FZv{&436pȦI b; FI `; QY F%ƚ)7(?% R` Ff#"G KR (E 6s%(tⶔQJŭ!h#t$:.&!OY^ f$G DDDƨ\G4)ى÷aq3[; B 1N5{DLI2#+۫jYU Nc׊[cm2# Ӗu 4FG9OqJ)Z]%m#'b H0UM[vM #_ W# ۲*c')[+&FV'2δE#C5β;7kD$o'32\ʦ|qjH@Qz/6@Bmr?#' fm6'{P{k=ďh47N6upy]uwIg|ʛ>FN2w٭tqqkn@պ$jLc[½`ppH{#FI2]F81CDDy8(I#(Qayg2,UF^1iW/ꖶ{> CcdDjnRye: 1#ێˑ߶~\=2ԗtϟ/-3v(n+Fv@UcCޢcUnF^0㞪,˺aXa8R)fޖ fdT88 c-^2&cQ5 .-g+"1S e~ףt&zppFF#c&/T3%N[@]8HT] 4hɌ =x#t<#GN8ӵƥ#@Gb92'kFa 8}%;ܓxl]Ry7ЇNI$և9.0QFÅ|24Q(GBd!%dd~F D*C~) ?,G<4s ę t($0!#v'<3GD5gU5Hm&џCfPӏ0ܲoY.H:C=gjC-@퐴ҩ+xI_zXH,4ƼIa/Lb9ʫSy~j9NAH8צ=?!+~XM8/h$9sKAp%>7"!<Δd dm3讚ᮜL ҉Y$Faoh-vec5FfؼS(L>bS5xEsfSZm5ò©T D7͍U0ӻMIvy.*y"\tİSK?cW /OOOTch I>  ҉v_duK#CxHl^8HǪy1{gd2(E`Ⱥ(qxmdMϗp^晨n}{!M9/! sG 0鷼j }.4oih8tXDC#wtd3:oCFX:z)A逶Zyz-%W0_t!#6.zr2&Rn9,M1 eD G45^1!#<0 79pBNʦQ, ^Ͻ 5 :s&'$~sWl Uqq{sk2' ݢd.jӯ4n7ows$ 3kKU3nG3nGy2kcuyo-2.1.0/data/pics/menupics.xpm.gz0000644000175000017500000000125610535603171014256 00000000000000-Emenupics.xpmk0w&ֺ[mq0(>+k},>+[(wCk[Q.bw7?VWFJ_Vz{%ӆӒFfƴ]-7JLOVMӖJO0]`hy)J)_tE<,@ D17 6< ]gaI#)3 7.\妌T:&_nHed߀ߤ ;Hzu f2窪Z)! 3FYtwݟ6q#ب l 0!|u66"`]=7PF!bѝP [' 4Fa`?DㆱMs{Sh+#bu3K @L a0(ho0&r3DZmzgL!!" |1; -R:!?UrG!y1C !|nBv =DkramHJuQj!&IP&@ Mb7̫xjxV/0)#$xqߴz1?4"` @ gbLAʀ&8JAP̙' ?r[u;nv`ջd> g[nzFDx![vo5l<>)nHBrV˵@SKnEtxxE-omW5jE}~6JM(}5[c=&E5WwLg0Pfk6>soiTi4c7m_2 Yb֥ړeYQ >!FSSӺa|x6I^]n6Qлunm1ɭ7BXp[eTjfr#$k2S}ݹ.q1[ZFe{^ݎ1Sk"|^%Y~=ۓhPz`yn4^AC nh'Off̍O>4L"듰Ai8d}ygJ ǁ c=Uځ\#=e̹mhM] ǻY48.u;W1Lgd}L1G'C%q}1J 0&^kL87lw9%O8GU~|\'+_m;nζ'v3__&*,+jʼp2o̫ᨩ$X48؟_Lei0ҸI5]z!7{k#3k2uK 52 (7Ҙv(dhKQ +O/hۚTc?&րmW_5 K­M28wdcJg(8%+4Nq6ɴ u#\@ A!-"XhYD_M̐ M 4w gXOWAr`i$7] )Hw!iddр󕰻4¹hIk:5|eBИ=HI49!k4[8%0cuyo-2.1.0/data/pics/mlSorte3.xpm.gz0000644000175000017500000000334411672457347014162 00000000000000NQo6)x`؆nѴ4tEkar wXx$MO?hחpt;>ꁲ: ,2`0Nn ~7|k]a؏ ,IpTa:|Q eOK߃z;Oe2Ͼ^Lo0bzn2Och*8uGI:s_P4YbfWEx}7J' בNVA$,?r08? OLF=U=Ly X)G${5<0|z*e{1^1^t4C00pq28p~P6<,CNbx"8$$( [6&Dd⟰c8PB 2Tp8-aKpPQ6xFDŽcU1T2Us1̜i Mz]#ގh]SZ׮8ԭU f]>̺>Qׄ06H]&V@` ul>V\g6?'/^áQtn˺.Υ_o:o4`5.}}0g4!v`t63U!5/%3zGm HA?΅G`Bhu^# e~֍lޕ ?PZa2:AXA#f a da|ZҿWK|e.Ee Ua|  yuzf`1Z$:j8Q4aC1 xf3]N'rp<^áQt`è: xā6w ?p|wPgd澄 juρx"`I/zj\`2va q {gp|y® \T\l=831*aЧA}I@UZl:Ec2=PGBY<`?u?A_, 6XfE0jQ{a@ o>lA_R1 C_N1 ulMOϧ:3MˌI:}`(]J B ~WA-?8?GX'lȏ8>< HaI.LC1>%ߙV r1|KDfQT-vfz@l MOͨ6ϠcqPQ=>Ox B'h }}}>dk0Wf@wN J3K]PkPu=.5cи?PF1 ztEcuyo-2.1.0/data/pics/mscGrasGrauInfo.xpm0000644000175000017500000005001012402435277015043 00000000000000/* XPM */ /* Copyright 2010,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 288 6 1", " c None", "# c black", "* c #808082", "1 c #602727", "2 c #276027", "3 c #272760", " ", " ", " ", " ", " * ", " ***** ", " * * ", " *** ", " *** ", " *** ", " *** ", " *** ", " *** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " *** ", " *** ", " *** * ", " *** *** ", " *** ***** ", " ** ****** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * * ", " ***** ***** ", " **** **** ", " ** ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " ***** ", " ****** ", " ** ** ", " ****** ", " ****** ", " ****** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ", " ****** ", " ****** ", " ****** ", " ** * ", " *** ", " *** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ** ", " **** **** ", " ****** ****** ", " ***** ***** ", " *** *** ", " * * ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " * ", " *** ", " *** ", " ** ** ", " *** ", " *** ", " *** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ** ", " *** ", " *** ", " *** ", " ** ", " ", " ", " ", " ", " ", " ", " ", " # ", " ##*## ", " # ##*****## ", " ##1## ##*********## ", " ##11111## ##*************## ", " #2##1##3# ##*******###*******## ", " # #222#333# # ##*******##*#*##*******## ", " ##1## #222#333# ##1## ##*******##***#***##*******## ", " ##11111##222#333##11111## #*##***##*****#*****##***##*# ", " #2##1111#222#333#1111##3# #***###*******#*******###***# ", " #222##11#222#333#11##333# #****#********#********#****# ", " #22222###222#333###33333# #****#******## ##******#****# ", " ##222222##22#33##333333## #****#****## ##****#****# ", " ##22##11#####11##33## #****#****# #****#****# ", " ##111111#111111## #****#****# #****#****# ", " ##111111#####111111## #****#****# #****#****# ", " ##111111##33#33##111111## #****#****## ##****#****# ", " #2##11##3333#3333##11##3# #****#**##**## ##**##**#****# ", " #222##333333#333333##333# #****###******#******###****# ", " #222#33333#####33333#333# #****##***************##****# ", " ##22#333##22#33##333#33## #******##***********##******# ", " ###3###222#333###3### ##*******##*******##*******## ", " ## #222#333# ## ##*******##***##*******## ", " #222#333# ##*******###*******## ", " ##22#33## ##******#******## ", " ##### ##****#****## ", " # ##**#**## ", " ##### ", " # ", " ", " "}; cuyo-2.1.0/data/pics/mdStein08.xpm.gz0000644000175000017500000000640512412223270014201 00000000000000Zk{_AZ,Y-RSh65j˹vb-%RP~ffI ?6h}w."f3QLL1kKvY C# A 1+:X0@9 y4ڕ`9!VܚYA5;= zdTy@b^"\D3v3?((U A3l IHIbGh' <˲ӀBE,j ::WnV0䂳ĽTh*$1QtcB1,MD pAF`ٲ (J(43T!ɑ<b^H `HPuP1C`8(,a2W" E }D]!_W1LS%4`/ Z#a [& .j,2$: *bm2.U$3@̼@Q: ԨCMpK|;X*ԛ<Cq횂N69;kkQ;ܭb2 4..;:71Tj# ڻsN4s/UFQF\2EjPQ͕XYlM6:pEa1e\ QJD n8֗{z-)q<@XU EGɡj2 D$] ի,P15IN-؆ r< Z,f2qCxomҠ7*Xb~4@=рU 1;6f(5 Rînb 12QMY ?H͋vRi`UĵBޝ*DӴ+03Ι\ iD:fYUsTk@e^:L!A(j C9X똜cvneQ$uNSZ'#3N;QyP! < Z 2,Yu $63 XCh0,$ENgTqʀ޻DP 766cδ!_)p4ҳı^b3gz@iUcyDpEqeL,PA{Wm,p6͌+[텈sѺ/M0-0j!"q^0A hcF"^0,K*T 6̫@,@BuclA`ffEgjcߛV4w@Egs*wՏxvbI4IakIu-,&Ӓ{o|@Y'+Xr}LI lON<uLV3)q+>kv1i(waFw.b{OJiST\&U*?@zȃs7[&o?~dž%ȩORK4o!M[J VԺt tM[iX'dao.ݮκ$񍯿W^ߪ w&͛%vC}<$鹛NOJ8~ ;4NTFyg{=1M&1~HnںjH]kںMdr7𭾻BOO7g gY?g%陸ƽnNI_w>L'I26'w/O]?H?Iv|O&IKccccccccccccc?Ð -"%7cuyo-2.1.0/data/pics/bxBall128.xpm.gz0000644000175000017500000000742010361553650014074 00000000000000b=bxBall128.xpmSJ"\2&$! Xй!V >f}'Q!ؽjs '#6S̗Ȥ̛#mL'U٦L{h|eLqP9KɺLNe EnL>unȒ]X̊Xv+"S~<)YC+s*)H<2RqX>!c \L9xR # >!F3 ˂OGi0E*Å?}3iu~wpGRiPk._6Y-u2 ;Cn[w_t?OC'MMS@eVI{ W4}w g[Ųk֑YippQbpB5/iD=ߐ9cd}ѻnLK>m*WOTdR-JXkU,ˮ|  N ^Eûsn 0w]ʞc;](zùs0 LNŸgS3=n9J joOq3d܌>7Oq3d܌u4͜y#]bѓ#_)u}Uڭy۽hAlҪ2:䪥^UCza}' #mݞF@Dz.ԕ!Wge㝰PdDL^rUF ݆h"Jm׻jAi}r }]9hrLΨڥYQI)3LIWZlx'dRch:('LHs0;:ʓdBDTA ~$`:ύϜHW9<=,b oafk|q[،b ]E Wv6'uud4#!Z]8i1'#Ɍ ژ{shY# |^)$m_ 4HIyWs#ϱɌŧq$d4#2## MÄzH%EAF2Aai׉'dc0J&b4&R&D|l(d#7/j.Η,kh(:ey`M&̑ጪ)-M/*N!cB3;B/؟[|W!}oi͓O|veBƓ0F1Jro;u?Wvk>w$/(ahlF}HV'I9>tF;#e`rےVֆF:0HA+4.~MI&3F7bсͬh :HXD"@/uK66ݩb}:dF<|"~hf1>~g>^?؄.YJ#` H"#6yy>ccW{2d*6yPƪiah.rWe3LXsIm|OɌ{?МasGN'%+,ᐉ##3m2ciqALG[GX$~1q~wd;A59\v}=6IphG>l_NH/9Pas-v8= =:B&J~1~+rOcg!YYpڱu=jKw|%~Neʢ}132"7G)m /Uх抐u{ǘe5H:Αk NgR+%oL&?;q|n{m¸Bm4RA%.T&Ͼ=?ִM˾'wW^V{ORa*By$vc:0ؐ%#x[V%]kH_O <pb蟬)@#7k;s)5apVÏ$a\+gw 㹸.d0o 7-Ywb3aiAq$ןusi,ŗ4SG[+'K}n"#皴Rr3yBbͷdp $lb?5Tc"J!2rK\WkFƮY 1׋Gs4)$0v:8fWTlKu~!د*FI Q/ s 7E⨯*HO ta?J˽3N+~G?+ppy=y܂_@S2ąNcb*uJX͑iocc$_BG1Rt6ďO<).AB N8-LJ5*g!&CZA\& :[&{x0G;!bO}ۓi750xmKؑf#CTK{#$ww1n_p)W^}OΨy,:,8˅ b>q''":!K2nQ块`N` sj+d' //؀8<6[cGRUF<]uՁ0}ݓ<񛴪(~M  1z3D5Ǹ %#vŗ>)թ HHT{tTz9ض> Ip[\kߌlK&nU]pS+9ɸ}2nF'fɸ}2nF'fǗ~_kcuyo-2.1.0/data/pics/ispRest.xpm.gz0000644000175000017500000000067011655275460014075 00000000000000K0+B\:ٗ7ţ 2tlm>&}KIҵ[fYyFZiZO7 YO?֫GrE>%g9,=MRr2'/ K= HTA:GҢf9 7ȇrC Ig`VicH z:;9ؠ&G؇V<RFukH!V*+` YXs +2(I@2OɭaAÆytk&85P`h8h *~ZzaC#n @ J7 ZREç{f=}BOy&ijP΀ 8:';C !- ȿh.`]\vyPFW%e]wQ X= [{lT H l 0HB촓2CC!` ?0,^{u@fB&bP#!$snsx^nn Ncj'h![mrZ !v(-0= :]s@I7~q2| j$7UfMi{HDRe'_gaI@MqhFd1ڲ5NA*N:x*[TWT>Ԙ)ȁ8.AKCH!Vg.1L cj}Š[AfDf.ta\qAz9PPY2F\&%@v h;i*=&rJ ˂a:Qŀ, cjw 끓&,E%N+?vԾ&I-R'R45̗7lHftaē">̅n8*ވ"l2a}T8XjRwRF12'Wkbnf_Xr0Ip@6<bfȼ~iw{́ZW Ȁc1*$غ)_b-0#F@XTd+,63z+ 8*y[ȫ},رyI#ϊH5nKo N34z"`q "n]Qfu ,vђqԉ,нO*nCR0>ך9ؐZ`+,D08c IXB3,Y:K;Lq>v5"9"OoEaU<-X Pʄ$j<I ( /*wyB^t/Y♳VǜٞԦ$^e#-%c РL1-42Ԯ7klz= "د+-ZueS@ d8 b&F%,Ksh[_@/ rRI-W&z$;K20@cujHbh uXa5j ma `KlN<SC^^բ丫7{Q.Y2 Q7ŕR_NkY1=asZA48-g:ހxN MNZ(|!k2T.d"5`hrz榚D/DmV/+(%6$ œ<:Q&eYr "~PTQHj99̑t9PYCqOjjZx گZ-S^zGgOorЪX"3}Yɡi YXa!uS]PzDI/^j={C'Ť&9iirtR:iݥ@&$F}'JPcׇU} W;W閸ʆah%5zW6o? +|EQm+Bh#y`h-idHe!;]>d^ˑ'8/t&V;f2Rءe` ǼB )Hs UFQv9@1!嘖 |>b&IC~>K)_N 1KRހM/ ydɻS|zi-ڳ;?`C]K V6 /P_)8nC#sN?:>\^A 5xiqK̐"toe_^C3^ĝn8T,# X_rL"~?&iTBcuyo-2.1.0/data/pics/ithOrangeH.xpm.gz0000755000175000017500000000065611101102053014450 00000000000000MK@W JH)hբ97Mf&Zp>}nfDX Dź|9ΒmKx4'AG9\??iUfb1ifijR:ԡuhk -7.`QG3S؋Y6I'-`ցOHa ] uŞæqda$9\ZsV8hWCJ-(`RXڎsP HxCd{ˈ:w؉y0Wmج%si;o~?ڸ%s*HƼ_c|CڡgKг!%l=[Ic/@0߿%}[﯀YGl?bXp؝,8>򷓀+E ^cǂcuyo-2.1.0/data/pics/blLeer.xpm.gz0000644000175000017500000000041107550521110013623 00000000000000+=blLeer.xpm; 0CZiVKTAFT93ntoF#f͏o}1czʾgez],T0Or0ԇx<dyʍqsҗkCo@)mYކ$!GGn'VPmUn,߂N+7~2>->n{}T{wӍ,z~(˧Pߤ4Q?Nw$˻`wܛ7GPێ;z=U>R"H}-{Q_ w'܀rkM(7-;kDڧw,C} 8{Pn;/~v߷WUrkB=Qa=޸ۄ;ͣۈ{=\T<{ݮO?YR {]_п򯠿mŊo`_?*>?ҟ?݇] l_:ڣ* |e+}n륽^/ƪ}}vU9>&p}%@@CoCS(z;ro3gU]'=hKUQB{zH?>q_W$C)<:y=W簣^%PnLJ |3Dz7߆۝~w7?܇jmUE|߂ϋRW&>Rna:kPvPkUw \ǽ*mMx׷ڇmeD0V"pK0\֕!/ۀLɶjr]Cj֚.$YY_w-ell0֜;Y1E.4dur )r-ˆз"Mx\Ԣc5^_ĶM,$7n[hpP5|MJ놦ߎ:dkv_pڮF wC a419!EiG{mvKM=њ kBmyGp-^\) U&lF|@2'-cf;/Z[꧴^Locղ}$nUB^ NjԄDEþ蝱/㜔`!mFttL{M5y1}ge9SČĻlSgyͻ?v(3^ ެ8f/:@7L&K63kНJWLv9zA>hm@_-{&rY2|Lq]LeFDIc*9rY6̣WDžEGJN Y09k R[chr =ά MwzŐ;(T{)B~m]TdOϹ2oR#Cײ֯-9,kmN-%\E)!gM'k\2v4\ڱZ{u/[ʲ*ɐtm+Vx&l%oM Eʪ(!vYђ3m:3l:Y˜ ȅʰ$̏!yBiM9S,!Z8n#jn|MnXOYU4EQ,{g#MhbZcײHf3\ޖerVlS[X{"ZdOb{*j~:= Ѧ:R߹>9{ ("FH~R.Ǻa¢;$#y/B+{1}~=Wљ{ԍw\6i$b\ 4}'4+-Gjo s'*LG3ɴg_x([w_/.쿟lT)=2Ձmyf蝑Wpڨ\kB})&, g۱zRTcH|\f$h|=-U۹8sDCb)(ab(Hct؟i{6EPk)4"A)=H1 ~,QB?iy-[`=i2\Ƞnޜ 5543`OC<asg*Jfsr%773VrھO3u{Z!QlVoPD P߆dռ[N^#e#$"F3|sCF?JXV2lg!Ob_wȔ9sA38,u=>æs,!ˤG)m/^:Wrŋ= (R./Q\VDDd"N|g1t#+:O_ ,i1(SK" z+aQ!8 cÑ<*]V}f,5`}cl^^90XCԌM887 'NqqkB.dERcng01;Db6䀌"= r6Y 8Y>ڄ/+͞i)߿/۸Oǻ.Zܻ`;}=1LfH?Y Aޟ[錘/̆tίW!< mFOz%ZBb 3f~'3W#+ZtmZg tvyvϢ$Ò2uj)['aZcZ`_8` /I"YkZðZ΂oS>tM;T\HzZl۲}C} v'!wwlĵs~mtFwFj!gY!4ddo(k;6&^]# E$j ^0za;LV}*^>og14ޱ@HtqQdxG*4Ѳ K1oD3[o{Q^~Flo6?cr;f߾`0xq94m2n܋ᮗC&ε!9zP2 ͞7K\πv 9;rַc~$z2(f1Ђ2?{iB1)sIct%suviu-~Tٟr1R,oC?(} ~ LF7 :Y:Z^CsI9c 4|f?WQ2+ɿu' bZ1Jah>L'1 Czn\\zH(`DBͻdbj؜h0]aU; %ь/ۉЎC(a [C՜<c}!S6͹;')E?ai3V> [giD3{NHJ{ΕDZ˞C]0=PJC+X{ݛN|;ZVtOO մ1Ee?<4Ao)❐Ǟ{Z±<>?]ӊN9 l XxkUsa<űAsv!?~D\"/Mkֺem oa`Q;)AF7?,HD6ό hgCl*bCw$4-]ؿ>fu(a:#!E`ڎf$ΡaL["%!0cG~R0dsxF1CԊQRCiǺ=3=%pz  5Hrfj<-'a iӑr^ %ь煠G=Oa_d~ER<c}!S׾6~\ h=>és4-!ˤG)mFt镜Db@)Tu GJrY c#!swy'Y]fL̉o4xzT[/QCoPMye ~K|=lop$U>xDf2N=̲aCL&ʎ]gS`?_qӈ!ք 8^SJSmaf`.dǓae l{sJfϴTH i&,Zܻd )q s0"?OS ˃i;X`Nc3b~w0W-"}?_!# ,n;KXoF#Z;Ncuyo-2.1.0/data/pics/mdPlastik01.xpm.gz0000644000175000017500000001216412412223265014522 00000000000000}WJׇ?œxh$ǛN(B=P%][ IHM{m}& uL.zaW_O^/p$O6?\Z:_zU٪j-4_IӬҊ{4kUkijDMfyYUʛIWMҶӥVoo^fMonիgߥZ1&ҪfQ^5TO4 RSAlHO4oҕJ&MKkV-4ץteKUR뵊&&ͺFSS&'5i꺮ɥҤzUhW4&ES_7(ҬͭtZԶ4ѤsͺNҥ,i:M?#M[Ҭ͖4M{'m4kk.cԑf„'4jfM:oifwakIs^Qu]oyfR髇\jG4[54`y,mV' SKFhY'SiV R,}հ+Kӄ7K=;"F]^w,M.BuYCKӤ!{!MlRWE!&!KuCzc"uJ\9oT_YSiRf(m¬hP$5"24+fHD5(r&McK'c.Ms$ғLJ甤E\ڪS![kTjYjRв45*6.f'4MpmIhkd,e#UF]t?PCӺ)+9长3|(4P/!CN <0$)c;S3c(CQEMGO;Togp]J)d2# A(hbՄJF p 23), P^`X@,zbȌ !S]}'bcK! hh] Rwxݽ J1 B)T<#=Dxd>K€0Xq X0, KBb1^ tL4ME/0, B̐#`02]%UP uF&Gc`[A W!޷P BQq7]JÙf:G\MVk ૒~>'Y4xz5/W`Z2tCed%vwO<2iuWev\rS{ c % 2K/WDB4;}#nXZ=.痫< W_#q$Ӥ"!{ $ =H }X1{£*#ieYaq meܘ7߇ =ofg`!> G y9jrн 30EZi q/[&(RU3 Q(:M6K!C?~8t%BT}VoowMIt}O$$e(hAp 73E $y{̡8by^?LZ-R$0471w. s7<\ay5L:,S EZt>9퇞$&G(ÿ0Yb`lYM#\+'ƞ> A9Cb̰<ČQtFg~2cEy*ʰgQaq G1ܒ M"Sl3r^?L6AʩBY6o7H%KVga}Q&" s6L݅j2̋2hvh%%0Pdr iW=u`$Z]1e W0d&I9Ri젪O3Y gx(jᬕ22( )?ԇ b9tOX'yz5-3 `sSPBd`"ah(N2åh4 * ';,SHƭRHʓ E &&4M( -T(D0U#b'| &[hŒn̰G ҍ"W5N@%5(/Q(LVj@ K |$B;"  i|X0+C ɼ0 Xˆy!;H 0Yã;r+/C ɳRL -u!z7x62bxHno8mcSs!$Xi`Jzh^`ajGC ,aŮ EecЩ p(D,HN-[V)"f~^I@,JԦa怠Z nʲ3j ݀ jn v&]эBgN<ea^K@}3aL rv*ǨB^.yƗtNPg P3R216nN4ygn8Pn@H H r֋ CUzNN:!$g^܁$jP(UVGMdTCYF~[-ga^ҶD7@T$=Š7|@K\t.rzV=nnp30ovܐߪNėO gf ڼ &=LN0&Vj۟pQ#uj`\:vjyřQԴD4NcM\] _0dL :4-8 o Da^m&/7a NG"-Hͣ5P&a"U)Q#K}3yxo'nf6An=-4tdhpn07TDÀ;3>]L OuPt, ^(jhljbe)pFo>@gp#_=7%!glwM>f#5 EB^@Nsy4&?J7 ?G}#>:8l9rSyQx7{7ABA^ 3琚jTIEQk!P'tJ6 }y)ȯ5˼A4z= n1/|X:9;!na(D>1 d 4EW=G+BnfbX:&mxKE\.fO,RYvPD,_37llXPw ȭOe!hUyQ\73Dn}^қ&`p!)L(/{xFr g>kHK3~V !z0Pz|zF{hů/0v=gXJΛ2C@DUQU&(8Ƽ8 +[\}(UUI{9ϢdJx#`E{.&,BV,&LJ/1a݉qr:gnQL6"F!fP"\`!H`>\CQjC][$vxN>@|(S~~_%0Q4w !/Cs5KgrܣuI,s^tcfO$!r)Ρs(Tjc[^ۛ;ID)!a`޻{zsd[0C=';06 a$yl]tRuy ƲԀEm{`pVFOw wZ ٰ7Xl31?hg]\àN E>ﰡ X͆ ^ -/7SѕAA0Q/x4*QCԌB  QeT  N >0ų}@S >hĆE׆!08-z:+)oP Aס89@ 4pk( 5Pawo1087H(O VԌŰǺa oP Ji)p%ƒ@7`:k>3I Z-E  `o^VG =Ќk Q+80,e gg1.Zv?g5As(73/;Pٿ$yp?,guP;{׽it  reMbn^W"_Z\<06}pYnsCLʱ&b:Ɩte%p tKw7.dlYu>bhZ!M0A .ous5p5q;El*(+͡r!dGyp o| G5Q7.hZ릱4)g{p F~Cwj-W,%CBe-wr-1EwJ[ȗq<0=>lB+:U23- (5u2ֽa>-lTlA'_m7;DG؅>s38wl-0HKh:# _0%J\?-ROPs˴c=;_tO-4K nK?dtnHvMp;*r!w[_9( KCpexۥAo npVsw܁P$Eb|,2c+c<$FӜ-b& s?uɄBL*ZfL&˥q6O/ښcP%$R/Hư."& Gԧ- 񨩭l"?Q1LxR]'1%=ARE"E :zlN +)UtB1¢iSaNI? b4-͸.XuBF`TZ`$jBW`P{Y:2ڌJkG(pRH>(2:t)hQ!@8yQ$z)}* K2Ra9{KIEg&Hcb]eL|ЭQM,ʌET9E.Y9s12<?90"\U FZRԕnD4ӕՖp!D5~I!QGsdhl9$K'&]8 hrD[Dcnl= 7E(z˸*ؘq*ӄaY2z2yjw !AX1tdbIua-]!.Y2e#J 1VO. K$dV:!M>Bֹsaj+%L^vqk[Qq:)i92!+sb11:RG""w6cә,53cWrDĤfz9Lj)HRB nC1.8' 1q-#[-I(*^>Eb#l@Ud~$F_%لcZ."c*_w>8qP{1&Z)L:Vb nQD }y1ZeDm2cCB2V DH/Ӏxm* r'nFv9)1]q.}n{t*1sw=vFNisxNPn13\Pcq-y9j ݨx>O/?쎃o#3*߻PuzA;֓I$F7 H{꜏xrXQhǹ㯋]K_BF&m?:6v;vL&V;D=zqR,ޟ0V_By-"czӇ֕%=x鸊#f9?l!#c&!Q_&4~bFƜ0V7m 4fƑt G)sL!_xu7?\__^SYO왘J}U}>Uќng>syyv [VXgt`xRo}pV#Ó$d.Xav}ͨVtv\}$4RvsgyxQ72Ͳ%dvQLh𶈾FՄ5ổIQV*F;Z¸峼Fi(O5!$g# vX&26!Ds`k:<#bKfA֎$| uxTm jMpqmnv8iVJ]9Yr6睌^LiJ (="Z*Q nkm\׭lK>1ӧi@q]EOxcQ]Y㕫A%u2!Mnw>c<Qɇg<|W'Q]rD4ȃ}c,[xjW@J=*ZC1n߳CڄAvV@6cRdޝQzs30VcT۳m@nr pJMEm^!k+,ětWSG5V E3Vd C~BT5~΋[\Hg|΅O"E1ed-z9wR=5y(Hpol1 cK=rFXnFE]FEledE{^(0{L]c=ǚl/[ 3cYdyߤjs!#;oF3mӿAeLqe ȊN;j"3"#Dd [mLw_}Z ro!{r+Cps"Ji; aJžA5G= `Y]-{+W5d+.HĀ*`| mMw} x QMŠXSjɑLefUsV52c+c<2coy?Skcuyo-2.1.0/data/pics/mnv6.xpm.gz0000644000175000017500000000027511611542650013321 00000000000000׿ !ݿ⡛gpDMnEc "5A]u|gዕvĥw X*ưjLDHc݅6հWXXkcc5ϊ̔3TFF/C' 4hH1^(b2ϙwZm 4he#祈q[;nClcuyo-2.1.0/data/pics/mkaRhombusKacheln.xpm.gz0000644000175000017500000000613611646353264016044 00000000000000Mo;bc̮]0ݷD9F" GJᑒg􌧧^Uղ_ha~V/O7˟6/珯?{soljs|um=lmҟßqKiy8v۴˻0||?i$/$/o=;wGZ~:/~b\ަLOZ^qKøG㖖qK?i*-'-_糐θ'nۭ }z^Vc$h`F%H c#p a4"PJeB P0k0 2aQF)J7Ǿ9}mkϵ*=((` C-dcM&Gog*@`$;hmctT+d( 3#e1JixSjã] B63, odl`f sؾ4R͎Gyu'u"mTt:\J >硆7!0h<x~  2̵l4{lhj˨jX\Qq߃B ؓƠh06ZƉa? 0 eC1`acQGa$#>؄ߝtyrMϗ&+roȂH=jdkAR BgZ*YJ(t*l Rf\\X+Kֶ 2g~('J7Ǿ9}mkϵW 2&7TGJWNJgC9W+d( 3#e1JixSjã] B63, odl`f ʹBlullo΃F1#W1w/QQNvV66NGKi<Ԑf6T{$s\ \W7sg0kd0ײ )A1.uNcUsFQ} S/ cOe deQ?10`P?aa8F`1G2_ٛ7g/goȽ! "EWIzv+ hS f)Y:B%&Jqqa,Y&ʜ¢g0+݌9}>z{P{_Q$(Z(ƚL(P)U(^9)=*N3Ў}{a7dASʵ )\n^-p axV,% Rg:]huĄZ)3..%kۄR3]Xfc_>5Zs p+ XP X *٣ %+'%سG޿(2cڑnj~4)QZîPU 7pE2PE60E3D!D6NF1#W1w/QQNvV66NGKi<Ԑf6T{$D DW7sg0kd0ײ )A1.uNcUsFQ} S/ cOe deQ?10`P?aa8F`1G2_˻?޿Y{C4EQ +|\ V:;PhR@)uӅVYgKL2ZYM(9ۅE>aV=1sn\c}>5HP Q5PR=PrR={T^3ЎXk=((` C-dcM&Gog*@`zrP+d( 3#e1JixSjã] B63, odl`f A!q%ۋCH5;f175>3֝cԉnjPfbp) 7R̆jJb=/3痃 n`א`eASfFSc\FUƪ溍2^4ƞ6E V818 ba4?(8 1p?*9(c2dW&+roȂH=jdkAR BgZ*YJ(t*l Rf\\X+Kֶ 2g~('J7Ǿ9}mkϵW 2&7TGJWNJgCV+d( 3#e1JixSjã] B63, odl`f ʵBlullA#옑~ĘX(XwbQ'f AeA#4sjHy3rV5r}r+¹35d2kh mQ:n'AѲ22N̨ fa0h(?0` 0p? #0#o^"Ctcuyo-2.1.0/data/pics/mdHolz00.xpm.gz0000644000175000017500000001301512412223262014017 00000000000000{Fր燎ڠ.#3$I۷֮eIVj tĎF 3Ϝۜmi|Z/m}k}e 5yZ_jZtn֕X=갛vVbªêoRU{2cJuSTUu}ԕC=|;jSQ aO]b@ьLz.V X=a#*z!VO9%WzKu*.]:U=x#iLJ7êRv=ɞtpʓtoȐP9{TMU*)u%5\̣ 0^P4(Ypь^@aЕ4YVK#8Utk*`'t FWC$7XِUk] dF UG`g#S)Y@XtCJݷtoWI'VWe\qX =_j<[]toN zKMٞ{#k/ ${(# FGA B̀a?;yKc*Ce@_$zl5aQ!X{A$Uk"BoQ"F5Bp o0mm"JE0a :Wm?@E >,Dܚ/ !"7]k TeIrA !V SrpY$3"ŢUmoVɄ[AtѩV ]J"2bw+yؓԻ`}AA*Wb{O@JFv!Q`ЕK<ϰݦ<2AJ  +UDBO5Ű `ղ~!81JǼ V36JIŠJA90|K|y >ı Y\CضHfBP.{ A2 TS^dx 4]I5iinK+62B=8 Sfݘ7*ɤ TE]bx/T4$!!H`INbx {`;M@h0tN)+5 Ch'Ā}дOk'A%j2-$*$M %F'&v~ԓy4z&-_gD*zUfPjy<7]\wfP0yY;I qhb#NC`m ;hFZzA A%̀ UɰDA'djչUØ`F˓G( VtYuE-ZY36%)Iʸ 񠿂;j5CQ4@Xc@0w+aHwACiafVA'954† ߸VGSL"엳7V&QņX[Gxu!)(ɬ,JBT9IoXC`?<v%0;JR[=M`8Vi/6 .O)^ `xրB։XxkדԴ +@;q{mZ~= rN;?_?YZIAGeA<2O8 Fj!3Y|chDֻ+YKB+=XYݺ*.1 ee4NDYI]_w[N*D؎Ea% pXDZ1_k7ɾri@AͰ6ςelɎ-!?!zOkD;I7V0.#ȤQH?K)ålnDZ+tU`8F)‘-[dBUo_ ܝ.]l\8(@90ldHcT wC%i35Dg7BDUAk_Àz*!q'Rwqn;gW|Ӫ,L\N~7pJ.Q^^'/b0uۜܲ WxkKT2oL=8$f6y6LTQ=zE{@7t6ǘQғh1^Zӡ\M`5q_<Li ڦi?,$IZfİ@M#vL=#(>+%mUN3IclXS[mKV/ӏQсR(`vJ؏0Uh-}³rw4xpDS(]\LC>k MVi9B")z A}ӑ?LNp~ ' 7݋X-^"h|k!0tE'2_>\ƕl/ r8H.S h04qTP*oׯ+Y=c/>[2%T9yi(dO`C~ݡ<&\{!m\r*.HNNp@?UBx>M 4>(bHebdeL*CSU5hw, 8F:yc"MhC\qy9s! QS9yݣ%x PO(ݕo)Ӵ0BotΙWWdk%ZMa_vR*BH|[4- `yoWqqGGGNsR&kRE^Cr:8nk P~y/'t/<#Ng:v@,IC= /@r'2'@h,u>ΌQnDSE8%E |n`]R}-` XPS.Cd jz/)@}Xr Lj5<^aoy_~l:Cޝ EyVƧ̊0E%H.GIr}}}A:J@&Ui9~S e_`}t;'.s X,@IEmN)pr)^ef9߁JZ\].7޳ ~bW4M]< GqпN/n g q|T@""e!Q]܀説)ёX0q{}Mϼ (EAfxvUUx*Lݕ]#E ^0q^rBw@`쵈p7Ҿ6#3EYFcؔcÇ '< |fa!ˏB=dvam-F\ɟgXzdɱrx|k* A!) Tւ{ {f,^`WQ~Gql0P`8S 1doJ01oW w1| pR8wA8Hdhf-L|%׌ƀ%y0d!h@$LD2!B(KHa`d%21`uc`6RQTPyQɠuĊU En$1V2g6- kT('cڦGcuyo-2.1.0/data/pics/mbaGrau.xpm0000644000175000017500000001034111672457346013403 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #888888", "D c #444444", "E c #888888", "F c #888888", "G c #888888", "H c #444444", "I c #888888", "J c #888888", "K c #888888", "L c #888888", "M c #444444", "N c #888888", "O c #888888", "P c #888888", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/mdGold05.xpm.gz0000644000175000017500000000326012412223261013775 00000000000000[s8)L mJ]Mr(lE6 ELNvK|6}(;cM2ttO"h>ya;>}$F2>2l>;O;w2p|׼s0h>{~'jjJH<%Jb#uRA %o$u%(Iʤk%cjl}%-01+@@=V|OS׮BJ`z7D}3)HS gWhǀQWDI$<v+ zU`&k +!d pY TI W oDXA&=L٠NEa%RR%]@%5zɸU%`\Ǖ2[Yy?trئs^@cm,=CN@l`賴LEU(>Kv{ L22d.hx@)# k~Uca,6Tc_!p6Y8 -伅݆ ^D>9Rivs Hu_ ],%!Qf;0bW|0O`."ِQ$KbК6E"2 pϒIJ!aڷ/eE$E4J „)uxP -Ք`Yq2Wq2yG#lEŧm d&FHFI8)Dܷ`GSkj[r*\>$-aVRAtpѿd1T"+NV' !Uf n0 3WݘuESbp3c'阫' O;RYEbZVn3*AN2{rV@ȯqZjf^}X$aȻW')Rֹ. E- p,"4f~]a(>W ԶM W|aȗ6צ'7lgxH'.*}A kÂŎ,1z=y¯n/jD0 w*cß5?=s N:y?(-QCX Qgx`/qf~`!L V =ޞØ?#';и޸75ZJ;#Z^Q4 Egx_Y/jދ{/o;CƐ1d Cưa/`%7cuyo-2.1.0/data/pics/ithGelbBlah.xpm.gz0000755000175000017500000000071011101102052014553 00000000000000LGQK0g)5"C&")> "c{݃ ~writ`3%hw0=gγes]jԪҷC.ݖvKde[gBFl,=C{~~??Tt]3Tu&ji&,YmɿԳgAyKqMTL>Ecr%g|.D5&,<Qi'.Z䣰 83H(&oÅdexG2:RP@̠f4eeb2$U@fB CC-4Uu܅.0Juu7EG :n+)4Z';-C100 QyBȼ4d|3к( &E/%&~:L5Ne]0ZI%ds$nw3- э` eqφ[8B5t1DQR4+Fi9{ۂg4xGak(yXJQ7jP(qɓᐢQŹPnĎ(o Uя,(&DG:~W4G'LR ebgx18zx\/d1ĶQjdq2Loǂa`X0, Â@@ö@y[/yc] ; 1r"b L8<ClndB0 8 FLauHZ}WS2a Ta`ƀ^c[8#t`Vvt$8νεw'ë1u CMdxs!8Vc۫6e;=qJ%<G9$Cb9cCdW})Nf/zPcL2l'Pd>0'] 1TI8gp h~ ]7'MCd䑛2)`? 8a i >8k1 YxOUދb^qL:!:Sywos3D,8esQt:pS4 :}2^MFppO%:&P;S^7$%uyЈs1=x?%i'@Qi ];lp q+I#:Ȱ;Erv65 g;;I5C@ϟXI|olY1DEGb _ػ8I@H0!aֺ0q'bKsȬubO:v\`꤄=hrgP*CЂO܌2&<"}w&S%0AZ&!i`WT>0`XP@*@]ЏoX*X]BʊBG#֭1ŦIMi엛eS>fY{3͆\6u[7RbfYmZ}!TY}L-o7V\neECF2̆2׏gHT3%^,[%1ps34ʓ-1,|_NRȟa/ &cuyo-2.1.0/data/pics/inRosaNasen.xpm.gz0000644000175000017500000000335207550521113014650 00000000000000<inRosaNasen.xpmOkGѧ֔吃!fr 0ć!!ݭٝ?UMeE k~;3mᗟ />^|3qp1wן6=;ao^W?jz9_^]^^$d:xGPO`8ℵ=#o:fhU@7&>2*)D5W#+p@q( `e'+q .;߁/Qu$NĜi}k , #@P6ԪⲄէɓoe-f3Z 5CHco0&tkb\ȷLM!MjDO` /<3Z ad ]fV72܀221=4.dNQTfn/FaiڡE(jlqJ~H>m`?T/yщ d9F[)񞏰dkP2}wINthm0 6oG\-ӂϰ7ԡ$~)W+ 7ly_O̰z L`3P QdHs!ioNT><2U23H֮8z* 쇵/u>v2XUIRMvRD& ,'0agw[˰")qy釾adi"TC/pp/i<^Lq|X >LQcW\P3 T8K_kQw封!))48f?*vC*i%U ~>2{ Hqh?GUIևI@ػ CLnoZQ"ߜ(d8U3yT̟p st2|>!n@9Q#L#v9C&qB0d;p& 00c1pS3qT@!zz 7j  :AMr_('j 5¨u1'GqA|>ݝ0Y1H7h{3-Pnjb5NN#>!vCCu6Ǟ=7yA9NSq}Z{ l"uz /Xm;AȖ=`bðY6$4 h wk>ѻ.+ 5dplZ8$TB_@?`۴I4?gp1} ΓhLAg10JsU4%d@5mi?dbFRa Pu`(Zx;X3pB[t3|<-gAwBcuyo-2.1.0/data/pics/i6Gelb.xpm.gz0000644000175000017500000000162407550521111013536 00000000000000<i6Gelb.xpmKk1֌VQb605jPJIMh(JۣǕtb||LŻln/o~|u? ^?bb-ӧxoy-ݲ[e˫bc7J.^>jyV͵v[_mIUrKhLYӣ ZwZt\c0mCj.=` fmi03 :%usҏa0R_c1zJ0h(bIr.Ac=<8JжGs Epg͎&)A}_8,( by <}c$8D,T ,ToicOv c s&% 8 |גq7{ |7S2#|h;%/`w=\K._YV㡪.| \|S~‚]|IGyp; .@9zXMT] \?@ JE袁|Ы"C2mzh:? h82q8dG?c?)(] <8CR^Pbh!=`>}|@GI}?ط6|@gS=ХJ|1TJ|#J|ѓgq'JP\3~ãp|#_zn T| D D2D_j$@Q*Dp\/nqnClPrA>?\2Gb|ŭ!cuyo-2.1.0/data/pics/bcBack.xpm.gz0000644000175000017500000000035707562216753013615 00000000000000=bcBack.xpm !u>v4Ѧ}2I"Pw/cz (^>tchĽ*%/ohk=njMz 9*ȩG]Zͧ箹vJwG&0lo |E'#8 0`gpeY4 6S߳1$H5 0`&OyӍdk,ނ& cacuyo-2.1.0/data/pics/mbmSterne4.xpm0000644000175000017500000001256111467336346014051 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 128 5 1", " c None", "# c #ffffff", "* c #ffff7f", "+ c #ffbf3f", "- c #ff3f3f", " # ++ ", " ### +**+ ", " # +**+ ", " ++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " -- ", " * -++-", " *#* -++-", " * -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " # ++ ", " ### +**+ ", " # +**+ ", " ++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " -- ", " * -++-", " *#* -++-", " * -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " # ++ ", " ### +**+ ", " # +**+ ", " ++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " -- ", " * -++-", " *#* -++-", " * -- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " # ++ ", " ### +**+ ", " # +**+ ", " ++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " -- ", " * -++-", " *#* -++-", " * -- "}; cuyo-2.1.0/data/pics/mffisch6.xpm.gz0000644000175000017500000001334011653006611014133 00000000000000]{{|UT- Y؈-ĉIDicH~vFs5o>o !Vi;pHLPTQ53&fUU@$m$ lfbI |eEKATaZd&k7,RTzx`o bQ@],|h"@|PqqTN'JU;@ѩb\sk, rd9D`5F)fV=XRD۴b!V GHa| WX" @?"C@ `ÿC=r${E4AհwFuZB%g .1c{ԨWmgA@MFf۵eA)&44uǮ a1:izmX`6 ID"*D⚞p .0 %k:o's08%hT&^F7Y V3t,zqiHďcO9Hz79+"S-!ƾ9}89'·{هTip)!r!tr͓O?#}ٞPv*9#j%/Az'ۘ٫_)թV] Ö*(y BoIeo ɷ~] +?`tGW\_zŶt/(ʾgNQudb[Tz,O.[YYdM}T} 9E-s4W/|%G䈱O&z eyLfVul]6waH&$4ɩ. XKfu Y190Lq P$Z2G1M0G7Hp s?vvvvvvv0\M~s~ utY0V9*U5tLf^̎iUrE avז:a?<'D׷à?-‘4moK0ز A5]OJ'EG79}e`n"OJk)U39+"Wd hH:+p/5y5~0>%Cdj"?Z\G>6,GQks:S0BN Uˆ߲K#]+S?5.`05.΂^НD fE29m^R Ǜ뛛(C5F Er! l*~CE)_٤->5 /mAYƦW:CU=!aQƆcs}!r{+u0SQzx ZSD-~zd C]#.>0Eb:0 1-X_9.P'\Aḙ ^I>Y`rjߒaoJ;L~Ԝ"+: hLsbfZ{?J>`[ -RD'd{amdl9@i3QfHus[llZh)݊Hd?ve/Ce_.jnɗQ|_JtujRgu*Z,_\\=Yp<ǛY/vr߿b5ua^~}ԷÿC}VbwnQlZVP5 9@\&jЪI3skguh[ 'ٵ8F:WZ^ G#pjkQ,cR׏jcGŁf@BXn+E!g ; t5i$M4l=snra4Xh=1jja` S%k ID|:):߃LX-a73X/r˘$H`?]6ޔN>Md t%t3FgDk'/{ɔ%'~/ۮWOɣ>oAz<`5c4j2:9c:mA\\ZL4:`*5$>~o'1֌A{2w1G055I<$UzWd &6Xy xO P}w*&W2-qQ*5wZdb1䛡0k9RQ:0L2g\/N(Vg12S0u8Pn=o_kv.{o``3Dnk2^a-:𻺌ucwg-TB<'[L_I/z/ޛ[ 2\+$a|&Cd66+m/2&PH۹鱙kgxV]^VO?ű9A<k:Y6GY>_&Q9fDyƩ֗QDb',5F-\jL`+MNq esufxf'kf׹5 mt qɪdb ێ:fꚋ/k’Luǜ~/ǰu4Ø\eJjc5@qPr pxyv2 fۡ=Ӌ'[x[O..>{Bf`|(μ.`C]o>X~E*{?Tda%Gi9%qo- y8Ē^'_79V{xSB>i3uY-^geJϴ߳ L68.eng;D3y U On fڃC> k3S424D//?C73߅$u8='wz!^1M fdW%8/y  4+^/`28N찟5Ŷwar^:L28۹`8xs}}}1&O0|&` AiMnMe *ڶ>6b 4m}DhvzD]'ӱAٶO*s:cs6v7Q!D  MɚըW-) Enʬ0!INl~ͺ]18b^SnoR / щj]A5 _a.$zܹ $0_ے-}yaa7b{/-ˋVM04ɶ$;arHH˫˗ϟ={zħϞ=gΏ/^>S'J+1iI|qQ&&:9\z\=b;n)"c;B{'?)7w膩_ş &iUsof5UjMl6]!,cMˏHwY ͅᚬ\|l۠> \۰ju,R̆Ƥt60.YkpF^$>?ny4IJӻq-t%$htH1rx"RÓ3'SՅCEA-nKP&upv;_'g'^{T$c{f{9y=œSBN6>/!e9 +B/ PhrzRL)QS#hbPԂ@<81x|so&M0c?OR ?mZz܄«8<l `H(R~{gvxV]T<`˞1>?>, 0rTaY$xU].3I'R@|ib;Ն}(qV;U68]$Y(7LyO1W.䣫`v$iǎMՐ|HS(!Ѩa%/ | Tu]x1YqN) F2cn|/}Nz\>Vyv<xY / ң{7#k 3Lbc5f%\~ku?}G}hkA_([ğd?&n-jdLpa Ƥ͠kj(:%h :|[6 M e2h uT\4F-:Je#S&>'#`(EYp<(wkfٹ5x\k"Tm`uE3_`P0hj6 ]*/"\flي.~lfK7Nmn # Klݪ5f>Ėٝ4X؛·5ڇQZoul{%*3>̦{iN}fT_NG|r ~~ <i7ӹ/xjjMjnX@.DL n-ԲHKO9?q_ι h*B+ 0;QC(')ށ\PVa9 ,NZ a"𸊻\B7/<_<…k &r1cCeD1|KQu lW2tb rwLG v `#0[Ik3"d.۪!n^gf+Y8+C1aH- (̀R7lez.2kf0ʿT̐13GYCBC!;yR_%C޵WC7Pd5PdS`Bډ!CEtvRoG @ f2?컦MYxeeH&b b(ΐyC!!<@ İ!Ojks]zY*1111c(#~(^NL !W%˘aɐ\scHa!sPMCL@ P~ b e!{_fH䉁a?yVrNgMkbH(112ss!uaH{3'4Ecuyo-2.1.0/data/pics/iaZahl.xpm.gz0000644000175000017500000000102007550521112013625 00000000000000J/=iaZahl.xpmKK@W HE(xEJ(B ۴̦,t'|v7sY/3âӯG87>g{3y{}jjO.'e\ G:1@) 2,ݏ @i(1?nԣ$la8BݢGI{n|#WuKy y84hWxi6 pc01:0-.mz\m5ܶ՜FGm%$5A7bnqA%cuyo-2.1.0/data/pics/dnGray.xpm.gz0000644000175000017500000000076107550521110013652 00000000000000<dnGray.xpmAK@W,ʖjAՓQ=Xn+6MB2KxSJK3;:N͕I"[&&1yzwowOO{I|f/7o'wmE:Mn8rsZT62 vgz?c.B"xl&R"Cir nD_`7"/1kƾ5gWN mm( B&&&BB5 vgi%#@2 @ h9Mz^Bֆ€,dbRl"(\ Q֑l7U+4*wh[ϩAO2 d COk7ArA#8ᚺD׌mkCa@x216rBY hgZ d @0n 4-Gq5uc^Bֆ€,dbRl"(\ Qʑv d`9~~%~cBcuyo-2.1.0/data/pics/ilElefant2.xpm.gz0000644000175000017500000000313107550521113014410 00000000000000=ilElefant2.xpmkG byRq 8}kcbLBiZZ?Jzw4;!.ۏo1+i7/.?.^pݿ]o?}wo/ܿg/_s.Ͽ<;w_ܻvwo?O?}}}5 W7\}5M?y'=|ˁ{OE-0Lȼn9("l90$0/oGgc`!~6fh.b@m\vsX:}˰Oː"\H Ab at 3O@̝Q0u}TA<4v! )b!sKUmK OcC !`4/f 4|>9C@q!24tWCLnXb9Q3RI>5}>#K"sM'g%zYWXۻ"}D1 2"[H^-3D'uyh z3DqN1CO%(b 'vlUZ6UӉ(ct@aH LcYQ}gt?4aLs\Uha`8ݲ1dmƼ?C0yC3dΐt?B[9CFbcuyo-2.1.0/data/pics/ibBaelle2.xpm.gz0000644000175000017500000001404407550521112014210 00000000000000<ibBaelle2.xpmgSɲ?H0xBcx#A'%oUYYUe{fΉ['>}67nGOoFGonNn_|Yy}^G gߏϋvCng`;(v-:܎mlmm7r;.zS4|m۩¥Vv*Cl`[ r jvj͚64r;7kN\}Sv_N)_B[]m vGn'嶖{v @k^[z[nw~YWF%/j[oKr[Pjԕ"/ꡔ:R BhYnN h5vmh)ݨm55QmWO0Q[KWR9wJ"`[,u=mm9_.5[U=a{ 7R/Ws~*or[3s4 %PuhRGp*Jnz*e\( pmS4?RVnZ/xUnK(~9w MuPUq?\.TնR_7+;^B!skJnl~GMTQ*fp /Ro%QW׊kro[5xc?)ڬ+6_ǯ/nZyмJmmɿv >oH3\So(#=όO~3GsssKi|iuv<|5& "v?LJRNfN<,}*{U~gc%qPv94>'5N,|*yyb< J˥akXbg'\>(_ީ:> { A˕-(1F P;dFgyᇾKŏڃփJw+ i\+[K]nV㒰y\Fk ~(-|.cp=cB9CUh|T]%\H};B÷_"A7Wcpy~JY@.-O/křy%<7KZrq'߾k, OIJPxX˗+1\hkLHr!|nuVs;ͅ ϋ58<͕بpQ,~8*u!QO=yU A.֬㳳]aM7ŭ-X%BFPYV*=H˓i\(Rp U+ڎX;;;WGGg׷[?ʻ oxGWVw$j/.8\y8ׄ j5ZKJxS!P~vtuXPKj25g\.3\?sTp;_rSn}5h*Fsi\?\<~%V oǕ 48?H~q=_X /!-GK >qt}?{aZ\VvC\. !ǧvGkX|ze%ȡ8<͕ZߗﺔƦ^eeZP\YqaOO+~OJ%eCr\y`}(۬4,VV|'J ^CuҰ |ll ^$ʕVYVwQiث$.x%W5I|wX\yp q 4/ ^!V%g4^ZtP=_kqѫ{VWwYMO<~09Y*}_L^q?c?<\T縪ղSw88 _ҡxZ*~Z4%:pqr"dTU}_>Z\8$lP^Kpy)UcI\:64W%.@BVg6"7lݷf}֥\GgDžڃߨC%9dûwwߘ}xGd{G#  Kְ~ {"x I?߫@#z7ƂR_ܕ 9qsq|F#rfr<JS ǡ⛤?B$j"H|-7E*&{[(IT7C6[r 8G _H!ǚ,bjP?9/s]?D#8ts=#$T/xf=AC?PaXNn~"c'4@ C\T>sڿ RO?G 8? Y?|'2FI~HtN$9_l/A R9O|8 ~`X~>" yG$~`X~!8ia~q~"aEa.>7\ | ʕol8V0AA9O^Eo)K-:?ᖕ3z=E7Vɍs+DBE&B G](O/vp=WA}6]/rmP>?0_ p7֌c\.i><=_/bS<%_sKn]ٝ3+CrFgQv$cwF:n$#%?GJ;?|ElRR}? '?1OX}l *y,?W c'!^G#,X>R8?!?<$#HD*?'GZ>bXH!?VOG \y|°KqG r/ Ǖ>' y4W|$?4?)ǹ?H|Bz?/06)OH2sҸl aG b a~r%s_ڈq>r[ONg44,O }07yHg%da G&Qp!X HL盛>?њۚ@Y"Cӹ5!h}ߊܛjojx"}G&]/7(W֋?ZeZ_koq7֌ce? *C+{#M _;3| k7E_v+2pATfHe\pc`84G=̒|Dsi9<3 㾇y(Nl`=5E3 ̂4;@,v>r@}G3B9zp·L>\IN7s>}d?Hk<6i<4n0\h~Od?(>#Yڿ@ﴪ| 4?ܙ u/G/E;a>r OP<:):iV ,@_Xȣ0GrgR|Ko(_`\ȝC|(WN<|~~9(Cr1߀ʕ)?  o@?d?,W/iyŏ&'?,!8O ?|v~|ڟ@nT}ڟ@N5E$ ̙M!h!|oMڂ9™-|2̏lo8?`~!op!Nx?l9?;#lHXp87 ,!Nkr>']%Fkka `-R7zp&y:1$A ?ZмMC<o!nLa\f 5?qXGH?$#o?{?.CGz#C?z2GuMX@>„" Ԛ;)S<|CH9??:g=#l!0Ϭa,G28??xxS"`~].rσ{CH}Wm5*?Zy{MG;|7 =Ϸ\?^i8? ?L|h~"QxN!$/Piy4?W`rk??dACG|?W??d#UGB;bG j~ wȘ?G|<|>~>9?(hsC?\|$!$ȱAD#ȝ2g t> u}G?d' :? *V)+ h)l{:@'!?+ h!-ܞ؞纘!+gl{s={1J|\vs=xxȔ_Xw·78C{dL?=8?!_ZpLxĆE,0-!ys2Z_ˌq-3K QcӣkϣU՗S+C._b˯.]"7fgg维!:_>]]+Ws]:Pz+r?#:_sjޥǘbfz6[/2y}Fo8MzKlb'=g^ʵZ~4X kξ.=nG>Ty5'\=[/t闼^qE['n sdO(5*oNx䙞-VHBO_% B/$~GN}bOMg=??9^?VUDWa}'|45'WVҟU^unmϘW<3]/_o'_UӗLW>|wk^7V?|:ח+/Eo__'ͪc|Bα_I/$dϲ/zFުo*_x%MwCQLהMc}"`XH?DѯV!{ ޥXz|`XHgƗyzCw;ts ]T*_y/^R<|5ʧKOλqVĿ*_E J=/)?nQIJxx't^;[_WĞY? z$Sj  ZOo&,_yIeo:_ŊWGo՞"5J]ifZz!pS̯[z^㝯Gt6W-xa:u#ot.W,s%tRH}~aLXi5O=ZM̄x"=7}<l~&`Zt=c|6ߦo w`H^ɷoUʏ&߲>e?:H8'| ~/cBSɩ2_Mz/%W+k\*/j~K}z#yRoO. F>zR}hy뷞/g}OCmߙ#\'wپ/W#W%+9+#fH=}uQ||yOw/̷w/ouCgy=4[tNWw$o#Z)w-x| sK޿W7˚oR_^k=)sV4o2~5Ldϱ=ַ-׏V~h}(s}Uy~z l?H>2]Q?oƟ_<Ϟ[91#ߟ0>t 5eOyƆx#mya%}FCbο.~ox۔moRO&dӇaR<9_V{ 䯼a?#v_+l^gytE竢ydzJ0OE!I}<͗/8R _ROsEQ+I]R|Rvj%_K,xq]R<ωv/VH /닕| =ɿTÕM'Jk0~{<[|7VsO_d/뮚I;?/ ,n~'VY`uN)ǿD+KwR?_~2Vys,oǗzEVeXz&lMuW׆36<|O;y'߼wwc[u6) O2_Y7& ?Ƃ0~ZWXP>{J eoAXÁcsHWɿA>5 U|ޡdL2&@ZaQy>Q˼&:J,NGG_rHK%|YU#a}'l yH+{}$  2}ia=%Yy#Bϓ/S.*zXo|<aJK? |>N G4h1 N3s-4. θS60>=޹Sン8x c5a(as},̒9DPH0⹓ukqg㉓>b ?gή}`6OE jp|1 \~k' *>DgOgN;,oCh8/)sݧ ΃pXsR'5N CSl(bq-|֟yrGsF5a7pwܟm=g ?yvgQj?h AP]u긪F'g='߉?J;/Z6 #y0m>{F2Yhsc%c:&tX>=e ,LW%3Xa%gճx:l6 G0X5C(Q<|VI"cWpx̐vm,??ap>w[ "nUJ.M ˏnjYI3]ڐEѿFzx) mhC6$'L!il(.ߊ{?Uù;6<1%S6҄ j<Б<ߎxzDah?$7fNG.5G/1俄qІeqZz?ϮBؐvBR6סmB,En.- ܌y6$I:nGQaL!_Qj&Ȇ4W ;fې&7nA}?sχ8^ N9}cnL%6ƫJoOrzaK?L$O3_dÉ{3;Mp mGԒLVߧ !^ͬfkZkC.EB/c48,7?XzrYj+S-gWUԆ%z@Xze~ÙدC##֣TFùuټNi|WOмu<$StOw̖ށ"ƲCl2\`lXunU>6H7euhІLj̿lX#]}؂[3|m|nzެG֍|H-aNrzHVOm}̆{n=EEg2m3{)94t笥V9$ͭG[䌗xK'{] ۉ8M Q?D|4!m~g?z;L͚I )Mx>tOylxOwOgK_? ߏ?4` MkԆo#Zg3aѽM;q޽k>hЀӁI~?7D;Յ脧7;_?}&2[.6y08z`.Y,O"7J63܎~gUtvFl3=nAӶcl_?$<É5ؐ_03^X=%g1g`}#)YyF ?Keˇqت@ǦFa v;x_{"nCb6C;9}c_u;߲ud{*""O].=zW_Ѷ*a֬BVݓ=^&13'{b?|jߛtCpvzQgq7yx{칳as5 mGvڨ6NhcΆK{egw3p#]:~F;HhõgQb=88oU1Q4`a/=sw0,ߵu{kCu`9]+9}>޴BOlܘYp=a : 9;o/ vlO3f6ܻ`͟-M);8;;>ڜpݭĿ?X7/%ۆWv.mJnNs!Hc^Wq]b+]4}*4YMܰ.6햽3 춽vMF>/suIڸk\S8wP4f .ݛa2(Þ~?fmb3kAa= k(!LBK!)6啒IlIv^`:[~ڇ!M4K6;Z k J 0bmZFR鉶@BiJlAx(]!0ɚE" fvz6QiDZCB3n -1״Bw,x(ҨNS#e^9ؔ@F)y1E5jkyZ*S{HNJ0gXBr^U ,*ISviUq6yp< Q;*D^gփ裺:_f|d0A:b_RG-1l"KVϕ_8n:@zJb|_:`9A-vo҂C=6\k 6\H.p%:psY[5wً^vxSag= u8!)_e|@9p.l&CbPcd/lᏻ!@qI:;8y*}9-;oM%šK)af .D w$xE7j)! .fc :DS^v=}f'X7pAgO?ĩaU$B1߂\:d) /ڒ?CBC^t.c. ]uk?"pC<:ځE*@;f|W5 ?|on %1p鐅+ U88ٶ–Xx\P!ڲ[‘ tȚ;i[rҍ ƚʸnވ$"0[)`Aaz]}yX smcT}K:1)^*b>բ ,<9wjb{aG`7 f]ދ<4w!tgI&1\B=aUߐiNxƳ<,[k&3I~!/;wS5J2SL8`:Lc^A2b;n]1=7+^ViF1OutZn|ybܜn-σn^'((,(Xc,#{̸_Qȃ!⯾/KRȃ!Əe`ނKQ̃xvvgG>,(;y)9=JKҟ'rT@zI97 kۛ`~Q`̿Y_+xVAoWQ1*FŨbTQ1*FQ3O Wu~Q_t|~tF~5?~ [Vu~Z1xFof;ߩ,d'cuyo-2.1.0/data/pics/bxBaer136.xpm.gz0000644000175000017500000001153710361553650014076 00000000000000b=bxBaer136.xpm{SʶO6:[LI:$ǭ733:~ȣ!(ٞsf1V"ku^!׸|zy^m=~rL7wϧ/\{ s<} 9s9dOp\D*`5b TF`uLTVX-JX="j*Iejqr-IV<9jKH0D$^{@NCz++kOjDыjLUIgzJlZJb5IcfӽaNA#YXQɊAi Ȑa&C1K %D@XU bXbUQB%UɂqrUrJO.QOZ K1^ d7X* RY =|!V)D 6^*>Cʒj R},*JuD6|oDMm[)@hUKzQU;%wi5-wlrgK;?kH?#Q3MچizmJQ2gDm+{f!z4Vωڵi-J2kDU+E^% %5.ڃb4V;KDMO6jA|I(]499#s-|C.( lݱj7{Կ5K;NȲگKZGr[CT1DQH?_B8c1/I_X}@ji/DÅoh7c41fF"`8.f3L"c! Ru߶Ԅ D喽,UVҖћr_FtԬD?GŶ=\idp( *:z)b $'Aq2L#grA|{/ƣY0BnD=KԬh ^F|@dq @h3GRi6͆*rE!}h)2 s ,0qBt ,;Gcaie9i4i~@}܇P8pH o戇Ïc<:%pyPw !s e̳c|KfM12yTiv=m(Bp֊FkuiF_*I81Ajkm0u_ "07-6S!43><< mŨ>dkFcrV8ǎ bs(#6@m<KGEcIXJ|>;/ڇ3fʼn*v,?k{W<{Wy7$zWHf> J-kHB"쒋1v$gr+];qz \>_&kHMYr2>N,:|'nLzp9Yʉ$k;å![|2:3kZ1KETBJ~@GB~Z etվ$* }VBm]J~梚t4q jMR|w _3)J-=k7F;+klVQ- OpޡΠSc H8wdRZYӵN I?Xs^u޳lȿ+MZw4 ,ec6AA)nykfIpVHWox@UމrFv5φ5`ܜҟw|zK@"ĄdyvalBkcc.wY*5 Lj`o7+70 ʓu:hm(qR<F[,HkQd[Dp`Y}uswu(6Gp#30v~&`6!2 `rTm,Jbأ F>[Z!u dٕ;=Ww8l71boy{s/6ANCǙ(r֪Z "^OܖlVfaj!wcL؜w?28GГT!D E_/nYhWKMQfZ`@J>A./#8ijTIc1.b_ӨfɁɒK~OF.1X>FQ O-qOeDc@.x['3$sM""Aq$Bdѳ+j-ĸQݨhОA2a)yݖ3u735(Af8aLCvj,2l Fq4Z9d5Hg0ƾʫ;ym[W8#+3qZ0ۓxk.!M<*NϷ9{xtbV R|s=h # d3&mՐ]9 @O#{;WZxI!vfN|@Z.ΌZq^GdD|=LpwU aD5cՑ 2#]^lxJr]QԤ5"(`I"$t5Dn# .n!l;.Vj5ꛖٌJ5dBZrb! ٬M~XB^ ؟Ԗ}w3c2Pg$p뫫s; 0*MQcՂɨU c=XX˒<;+&5OX[;ׁouNq?婴Iީ=pZUL T~/,to-Bf5KC$uO@U7C~^b@au^dDs7dЬ4W%y*.)9<9l4MmFJ:i,;dzE 9JsԐΝ-j_en;c P&4 (46Go~?³}Ga;#-`5 6XdY}kDe<)'MK"UkH SȂ fEOR\TeV`R۝?$۔(dVmV5xl wS CW N[ # 9>i}tҙ:cC# uR@I8 m[0D]zuOxD-f&9Q\+=8ͬ 5 B̝ XC@([/^;I]PqdG3Cn2_ٿŅ+Y!TVM5q<""+0fL`teH{4wϸbXx j ӯPz dijY(+X E=Nxb q`3<Rk;onv )BęܔLet@ٺ d+EgXNLsmӬFLc`g9^y㤿.7M_PJG|ͼ33yc6-蛦+]vTg68GZ$5ܣ e@e$zpd8.͗֎\ghMwEլFP=e~idqdNB2.dY(B5s!/t._}rL]R2;7f!X{ムLU͌ {f44'>JVNoC;\1{t1*7ͼ K2[#clH~2bcΝ]hyYA'_V0S{V_? g`q}>> s[\@+ޤ]BFֶ3n4H~F6t^08[B\]-$ޙM!ﲾ!e UK( N A[ I*і2Lr 2eq0 񑿹?Y!),Hn6H26D!3u@y O[MtCSjajb؝ pBG r:+ק9ʻqczl C//zp9i UZ`lJ7 IwM;caޤ=LCƦ94_q1|qx.$S9 a?}xJƷ>M@.kɾذ]9k)moٗ71,uٛ@HtcGd'3_վW`|5@Doh7c41fF_0~ܧOkcuyo-2.1.0/data/pics/jjWinter3.xpm.gz0000644000175000017500000001520707550521117014315 00000000000000<jjWinter3.xpmZ{6)P${24:NQCIf*4Gai/&:L$@FofҘ;M){o/۟n_|. sW쿞^~΅PC 7Pzm]`uqx T@m5Tju@ToWϠz.P}U]иr{qs Pl~fwz< Nq5R.-T} {z}B@6ۋK~7 Io8_o)"˫+o տcu+} Օ'fNR\a7)c P|ڐP8bCSX@W1hT/i@z8Yopsu08ڬ5ue䭽+|)o5Q~ nxvpF7%W 2vD+6n+o4RNw|{}q[9z/$se@^Ѹ+)-xSZ_/rC Y/hVL[f:컹Z|+e^ƻD!WʿH6 VW9XAu@^73%VzCjڬ4nbiGʋv7׋Gz{!$ ̓U>uccXθ`"Ril̹TJ \]u|%-*z-4PbULV|- l\fve' }^Y읶:q jsԽΧt<B99a$7H)NYpLd~fUd|Ճ3͠Sz2n9!RBW@AjzHzT*.wjE CX9+7I{`̟w>q<Tkp(R<,ӼU|5Q/3VtK3 S:p5(AEICs9%~UAXy%6\ | +Rl$ ξJ^;Ghl+0;'5[gd7e'kM1\P'sLa!i4wAWYC_jDaZR|чӦlT$63#W]8;ָ4uph{l'=FOďwd_o kH d1Ӏ!BFT}槟777o4ۅ$,7xH'GW Rce `n/x}{@ŅI3XqNKS9S]a)Ý;Ϸw,nhKHD޻'TzXXm6kQhKEU;)c mO"߸S Td(Z?Dw_ga|+'=fg0|^>SCw7 w0bLQ>OZj1_0!zA"m%?cQL&oW dLǁ=+) sj CSBo>'DaV3xzs?Ɨ.߇{l;`RF̊R kS A)LQE?Db,qycE`=ܰwEVĴC T#L'܁F@X<4Fcu˕*R&)c&y_ګcqJ c'+5c}>h :aR%Dh8uC;}$H| 6E\a?4v䗤_:~֫PV;G R6Ǚ0{(ե;;d:'$ fUlgRP(%l'g~yAz5~a;Tx5wUÛ,\->|H:O>fQ\+:cIR_0ty"0uAcM,T$= GtNOP_7 M2o\엩h5=Hu1Yc)}P(0MƇIp: 8a9B0OuT041*SseCBCbai$죠Z&Be`b$[{7Ӟ5OȰ'g7`ʆ%NZa(<#ЄQJ>kիAC-a`dM:2vt1ca:7IFl֒}Liő_T(e겡k*A2Z, mIyA~#])^Y@vm; U{ VP?6lj0{ 1`tqk9-q)se#6b54 7 :a0+7#w+<]41 : Yzƹ :5Ӏ%;).r"hLh,N=$c'9ӀGscVE5:#w::ob{T{2O׾xqnIK)Ūu?ٌ˓PܨE8|K~Еqҗ14h?p[뽣0p;~Hٴ9p8!gGL !s?Wz T:Bd%qߣpa63gR0aD! oא$ x%<.Ņ}s&q]?zXT?$䡢_YAR\/ S0IC3yAޠҺ݈j:5$aiAi*ShFi0N`и=0p.`e0aw +MCL۔9 {qS f@%,灤F1/:Z|1\ ;QbH.[ d*!DJ2n2ܫ%,ᤃ=y( I*" #Cޫb4t%cկGrXe>\Դ0}$ uy*P%Sx;JUC'>U.0mM%2eq Dt gbݠh@x\Κ _4z5P9nH R%5PCh\,j<TNpjE`s ટ 9ߛ 4zt\@٩0Ɖ[u|yW q~׿}I9=+#cN46Abah2an;gq`xy7M e^ F7j LdI4Ydm.Wbf22po V[s_\}&ɲp)uy`XW"<}*iDxCdX;*3NT,[?xu':T@pIU|"<Z7qimoͺFqFBB\[pB6}{}}.4!8 ^!GyZXces0kMdӝW8՝w]sп/W?_PVA m@}A쌼1VHZ17NPڎ EY撀ϿyZL͛JF!áNni8\J ͘^JO{"hIG߽]y#`!F8Qn֑~R+ rG0?(̘('w꾷=NWOeZIƔ,͉4AC̵WOtfpTv"Q͠P!<RJ |psG9O2=y,Ӛ|1c"*VD1A%d 1@P{f%;.<0g.| K=x2fV|,oyr@*5W`V~6(%zV&u>!\EƏqq޴Js %ItV{"EBbbg}:>B *Rw<CoU~)vYp>y#驺(B㾃 H#-A(FYFf - U;E%|o#O4 u|XL^B/ԍo0Xا1qXZ\,q4UC:YBaP'bl!@AVYrbRC qurii 1dS'M?yk؏=b)o5VQk fXyU(f@}*.gnV1A=ڹ[5NԠ+ *,bQY}a0X:0|;vEVCe1n-=n@_A@FY؃P@"@  'þ$5,!UW˙ᐴ<aצm#9~2} 灳 =` Mm!bntOH*ugUA Ab ~M*fDWo V q; "oSXwM>F8Q~fe@EI2ɒVol;Z/gTea)_RO_&;``,DIovl矄7lNM-}g34;hL#q%T@6KHtzJܹ8i5w#n3 k@Ww7jKzazYu]'`([_X`brpv]5sMH7Kce'q-࿧-r;~'Buȿ0_n_^y,- £ICݦxj%\xzVW2t}d ( m &ydˢǺm pVW!~]dt,S;Yc,muEU**ؑ(t=bpm[]أU-tObxs3S1?;cʹY/{I&JB6s֕TG<|ڇ>D/iİ%.CDGcuyo-2.1.0/data/pics/mdPlastik06.xpm.gz0000644000175000017500000000542012412223265014524 00000000000000{SFϧX l|%k9 #DŽ1Ihԑ?{9+ r;o3g벿}=Һ\z=--흍KK>;9qWܻh%S2[}Ri;FKwP. LGP>!{\&\!in\9!mFdui:&+t8$me($]c[F C34LfeM{5LOTk$;mtf؛$^G@ĵgRm H:v`F8mԳ;Av<Ҥk]e96Ium C'^Ǧ(]õEGɦk;$i~$^k:yCG7g (jS Z@soM@T 46]ۂt9D<|_='Mq4-hpHW4Hr5ݹ T&s9$ {$};[kIA$7 d2 s)bt( Dt5ͦ;EK'dm x}צk9A 2Ddl8$? @R|?ӵv`8o8IB5I~%Bv,tT45lNܜ?Fжth֑(vKUN\ |ۥ;k{Q*G^h1f`a4|k&h_nw w )ͺpGx/~[A!oػ2^cc^A[ |A:~TӼSĐ"` A۱j*ʀCOޫTAc9Cխ% t 1) 2% gY5eSr!=b` az|tn1P(+:H`iU g0@eK@#ii% mr>Ӹ >tl cb>b\.K!@2Aj!Mk, kdu-M.'UA |e<D+V sӃJ9I2֞.*ZUr>B}}rQJ!>LtZV0> p&Ǡ&  f|`*8!Fʆ>Lfav"/rk3`b4IRBWȇ X9T*"tT>+zBT WkSX*ۖ#:|P0tu*NcA+胡u>/LiD5!!aVˮcL)XSEMzլ@N )'an2CfB9PLffRz>|а``͂5 kw*ǀ5'j0.$vg>>@Ų` fJq@`raQr> apL}@Y͢-Cf-պZ!& e}5@0m|nVFON¬fI??JqE$K2(JA,|U/|Z-V=Bf @͒E!0x.99a*CeSfYQ5·Tpa 0ðfR\=?;/ų\a4d͂)I4/gq@Ă!PJqd{%v2D2{SN[aG{1zb;sEg-w+>oQ1gP3ٻ?Ǡ loy>r;r 1 m/̐..1\41s l!. ogv%.P>ϐg· |!]?lX)7:KҏZ1\ 3T&`ʠv-ԏ( W"Q/`Acnw%؏C_,CrrVa8aY횄,ʐ?1Kd,Uu;_0yGl0XR qaF!G?_ e$v=F2 p1`FAp0J$#!@*Ö$êEqʤ3<97 {EswRI261-`1&E ˰{ N$}l'~OqRZinbh?alv ;lNnf؉ǃtkTKÝPQӯJs0DFU,cTnaRTTԇa֌qM5کwgoab&;>In~DT [n%*_aebX p[t6J&?(鏒p|Nh|QW@]l[jhBF?ڌٛ_{%q<& Jv>WrZ)ȰF_+YWQwGf5:~ ndOߩVemol6˚`XyEїH/G22Ǎ%ǿȰjި>|no7Wga؏"±ٷ5no՟o>\YY~V8a% V٪zaD72ԂJxO=y\au0خ]O?vls%7cuyo-2.1.0/data/pics/ivVulkan6.xpm.gz0000644000175000017500000000166007550521116014320 00000000000000<ivVulkan6.xpmo0gWXwMVQڽxBHiBb;9>'mcɞj ~_ވ߅^o_޾3;j[YDGdz#Fzz~ujߝm9t4{owTмlMruXCsl[4;;p hfch_nOJhaM!Mw~+0k2 kIᭉ>WCM4"h );Drbt;Dj"(Fk8 úC Gaxwfl>+b<%@TG*c\.j>S5\3ᜇѐu0,(;~;D%Qg8!G& T!j %Geh,ˠiyhd{BPݭJC%"nJ)2We e!ظ},eC&!"PuyU1{ q!VsZhC4446r,b}-'bo<"ba(] v5W9 @aOq߯gE{m%c0D"**2[Yt>'rnc z}}n YaKB5"/ב@0`ʆPwWpxIl 2W?3lq[BٓmA84uGoH/УetkCyC2Gč ,~\5̄ ĥ ky7 |W̿wmzkݽmKnOa{aZ>3ϻw0}Ӈy@Qs7q ϧ mPr~}^azn=v0a~ڮ׸jXQ:=6r'S֟A\bffQgئuX!=oAE3Enf5*niOkFj{BbpF9E;.>Y0 p8EJou1FU0&QK  2ثhݜ\cPNdSQ V>p2 u!j2dm`(Sb8Sˁ=]N #Sx'ԦS4!B Dt :'iUT3G!{(>04Pñ[' S0d/awHZBCf)g%!$FdX%#&[_`81L&fm !@CZ`.#3Im*Š+d}J,Ő Dri E5D8 %"͚@HC1i#^T%,Q\RB"6*0&jp5ھiS ^5U*|p.syD"xP@daUs.g I`&=Q9o !mTG~:_#죭9mRYKf`Z+s.ZT? CO"$Щ3X\%_.3mTL4ácuyo-2.1.0/data/pics/mdBoden00.xpm.gz0000644000175000017500000001033112412223237014132 00000000000000Z]wȖ}_|-uP NTd",l'?dw.oJ]0f]3%g}X&;qcعxcdczXtv?tФ;ì tUB;-R{:MsɆ{x*2f9-6tL۫O~R:9<`zgS]a0Z̭CzqD'\g*xuH[W* $"*|Y:;rw5wzTL\irteBT!\Z+9oU'Aͤ÷]'K{*tV]ԤARMGj{TPTȿu ]M辭4עF&k}6j]'z^͆cUQBC~Ыo9T蝅wdH1uxVݞW39!AZPoLj QꭼcXVr} \lww7ź8OOO/o2WPαk~OaҽB+UK/Rb9NձUiu 9xձTG^j[T\]`Zʶ'GwaQCXi`o5y]x̫KIR(>|P任'"ϐv]8jw[N.5vo px\vWʣ UjQW$I~yY~(۫nyVU| .?Te+,5ۺꇽboo8jDxY)bzQ]$Db~̢`EqV&@E6$~|| cX* V[0yٮv@S( .!I2 ||=EЗ'2((GSb Ax#=")U-lE1_²".S.]8>OnP:drL_M/">8a]vA@[h :Lx.Nd&$2 wW`|!z?s f03! -Ѽu ֫\M>R͒)9@'q̂rOgw^QU2M.8t"Btch | 8`@ɼ,E<0Bw`#;q8'򱋜S? I r`7 ο—̟)qp`WossM4l''Y o LVwk p@^)r4%<yK>îb@xU>g!ϧ"IwnK:`~N]H'!I&B-$W"!k)c$+q dn_́!+MGaGMO /!"c@WDN'qS L~T{'K:L?Ytef2s+UDPsvFF `P(ip2&44dD ?xq|~e0!e` VdRֈ#jnVN#A%|tͦATT0N ~榽ot#>!!1L̃l)\r;90I"ٔCHbN7FC2:Kl`n|sb٤SNL\&}`aYJdnƽ'l0RIrx&H4nD!3,8eʕMAm!9F{,=jMZ%I,r\N﹭00(5K Wqr<|t DtfFwhf>Q qB&&Hߵmꍨ 5{mݱ1 9cJ[=Bcal2.؛yPb03C181`Y_fRu !SL>RCHaft'O&*+iuF6O5 ̶]@ E45 m;e7$ EhwVHpt1g|0@xBxM] B-&(<1 Ra~Jl|2SPeO00@{C>ax1d`F ``dݷ0:aOc VӲ@E&S =B=.`z`kcN8O=Zcw!gtZP> ۛԠ}+;؞F@jr(ym@\@qn-ka vht}66iB='f6|nbyE;X@Im$4 Go :]u,5dz__<|02Cc7p- b hYKnijuo]p1jBlPoc*QΣ"O{_6-g8Ό=n6t:рǖ\Lar6'}P05!6AQCЬt̑K'9H?El}kۇá aY0Ѳ=4㳳/@~v\~XMkEߦp1H,p^o66dJBk-t+ PwD__ ?/C;MEóo@atmfƛc栫:ׯ_[/G!&>+ 韪_';-&cuyo-2.1.0/data/pics/mkKolbenBlitzRot.xpm.gz0000644000175000017500000000265410555463325015701 00000000000000Mk7³x鮥@˜@ iv͕ts80tΜFw^_?n}>~Ms.{u۴I_\]t|{NKkǴ[NKf)icp0 ?ô&WL&Z*rd>ghPBW՜#{$D-: -!aʌ+|f_29>60v\颈myjJ3B0 @1v!Aܡt^ Vg >CnkmucPp},PO<~P,a&ɛvBq9cdNpIH yqm+*6rO^vBq#pRA5'DQL+FaZuPNźQ '`_:pˀarm=xTBAq!é5XЩb1ưFP j&ú)9@Ưk,qEjmP9 l0dCr$A\.X dͰō%Rg\^ 2` ;GѸq9ib.z2ba\g:wax0'g@ႌκecbqn橤7w!"wCCKLgK81;wϫ u10` Yvz!S(;6>J*LUQ.}טli-A mhG]ett@f@HbO25Smh!GU?23A8Y0sy 9;yIaqiѫ|ϜH5t]wa2Q;7!=„(\j1E]:=`ՂGDtA<( iBCE!SU1m9j8xbLk6ÏHp0 .^uJ}Bcuyo-2.1.0/data/pics/mdStein00.xpm.gz0000644000175000017500000001665012412223266014201 00000000000000{{۶藺g$ERצy%J )[l98mۉmOyw7 \ ^ `ˇW77>]77{lٰVfV-{rI>'msr.'Hz3#F|IDZ3;dOEXvWHzDӗKTUC쪪l]Du|$= U5 %ɾMB'mAᾓJn#"-TrG2bNLvkѻ~TIor=y7E~r>Hɀ#9RɠvH}G[ Q$c "99C@7HzTz ɄBC3)tD%>TUIṂLPBTz>S漣\"7gsɥ4tڒB+\`P.f5;w!90F?"ʻ?s#{w1T@ rn D.{#jTu+S؅&?"RU( ɘƜW?!rH:nB9_UA9_O?0K1F!y;xP*_H2JR>'JzH 䤿ERO-7H&^c@w I#Jx#~?::/Te鴬բTI^#QI8t]/ɲbZ,դ)y54UdF++.gԴ6b@,}1 aCL`S-I x'I y04.Z)\apW30e)(#dAo0܄ldʣ>]~dQ)쇻6@Wdk$'RTebߜ"=)ju5=M[ JYjY1qI px+ >?W3-%qSWtQ|;]5fp4BG x=*a"ڈ٫`p/Nt@ \#sŌ7׫dQ &Z|ϛu."VO[&c;p%hK>ma8.lp\! apu|Lc%S: .Vg'- H^mW 䬑@FiGֺvl; ld|4dݓٹfXNJlAˠJm^ڣ[Mw*?0-;m8 uH^4>[jD욆"Ht MBHScLŐ%]۪z{ C\3C: Q -mbLZ V-6NDUD,f0H]"=b=ީԌ5y&ĭVrW mi(ل~"Mo!vHE1Ct S!ti| C(Q95d, Ms ]qYߤݵ%"7qR's\ljMiB_&Fw~m< +.L$9v yZBȱq\xx >imybaf9S= y-8uPնp1tY4rS)s@>RD+zMc06\Bvy׬`J6A_^KS1:[W:ZTh_9d4kޒ#ʼnb]Yڗڴi):`w.^v~Pj7͍d{Y7S8RmZyҎ9\m*ip Zp9qݑO&+N TzXö:d,ȧ#[ SaH ëڅjK֜~5A @9ނ<1@eQƢ>efF~2#.3tjQ @_]|%dnxP;ICAU.%P UP]-&ksX wpPI =Ya(Gey& XLMbXAej) ZgN鸹 #hL B?g<2e5(SB/<+i(m+*cs,4㩂HfyЎa'w2e*ΡfqZm=.AI @Lt-(&<Vt7a3 !$co예Oh(Pj|X5|M1.:dcT` Ø̜b\N b^rTa2d0=a 5'Ibi\]!j<^L$7R$bYފT6jp/gHYd@8.TrmTM (Ҙ;= }Tpڭqhؼ<&=?-5;&&o^ Ñ| J^Ƣ 8~y nt[/ nW7 X%ےkiԡQs/!M' K|oǥt[ 0h{}E`2.'{[ B:Tpr}\O½ț _y]+R<|y3 ?,V$To/{ϟ;Z7o޾jO oW'ӳ(d$]5jݻw\ R~-'MB/<$1[7'b.NNoq9cְf}]5ę=b膁4Q]sǛ#'sÇ&T({ʹGK摯Gbu7;is6޵e 3:Ek 躹vNqQ4k4g>=`"T$dkaGKGG i Է -C^*-˪嬹k4(|oB]<6 Ȱ[m͗eG+^*X ALؘ$>d9x ` .* )^F۲ϒ 3+E`,p@ÐUk{-sM7s3Tk W^ W>%`F!R:}o Rv bh4NڻS߿"N(AAųPZP}EԲ9ԁVDf~ >{5,j 9 ChZ#z"w dٷm"St2bw^X!+3$F<ʜFhz {~{\5"P ay&i*G< :).z&t |q>3B$ܝN#D\)I |e'ʵS|HgԵ2ZSWbrD&'cwkp#ٝIF19 5n^u|ґ]7gV;;Fv@Ls۱o ܄pNx9pC< 2E&Ʒ lX=h Qzp%k7M7gq;MשiZ6 fkʄ00H J$lL C!̤}iCl'=]{9)+-r(ij>àmZL04PXh9R/դ`HC\ *eVBd`c0qS\ 510_oNCëc|jNQBm+`:Gx0سg%1ZW [6n.y+D`H- }gE@h cԄH0 #A 9m I_H-Зm8Ä'HTwXI a?^FQM9щh$.i(ч5!{ 0}G!Er4֚{TmPpaP m&=ACD"׭>-¨4ujV"FԌ4~Q kp@P$X3H* $ (%!2]32x$u5PAH^$jW$nN q };vEI"t-j7 ζ$m\w_[ag`jqt&dZ8O55'`K{TQqbE>0$c zA&zSZ g^a=e«SGkwe+m7E+pU'G+.@ %Рdj U=]Lx뷫IܝXy N)4kS]S2PtJ +hT*VE&ÛOS19), ^rG]1fdۆoϒ]~ʵW?uWyR$yq%+Y7, -ԡ?M-8+֍.XlSk|&Z b_$9#4oEb`REBF\p]`C~>?l] Dpfp xStc,ؓq 1IGcuyo-2.1.0/data/pics/mbaBand4.xpm0000644000175000017500000001034111672457345013434 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #000000", "D c #000000", "E c #000000", "F c #FFFFFF", "G c #FFFFFF", "H c #FFFFFF", "I c #000000", "J c #000000", "K c #000000", "L c #FFFFFF", "M c #FFFFFF", "N c #FFFFFF", "O c #000000", "P c #000000", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/mtYellowRight.xpm.gz0000644000175000017500000000444612401656727015262 00000000000000wӶI2_!r]ǥK)IXS)l@mZioJ^wʪ:~,YeIvrVc:zڸu|kfzkq1{7{%ƃr-ͳF4qyΕkvzҋfu'ӼoFN~eԎ÷@.Y;yd wjw"lǃfO [IdEy;Y?nP;87qt2MbG8n1X}k򦯠uRݨ يWTiҊ!l;㡓Kie$2G@/d 54u2NU 2Jf 3oܟ [ -{vo7*t@.%U v[[{I˷`Fi?L 4d/|9H |xd;KcPAKN>'Zቯ`bɧ mVdn?n뛵wڏlZړzb8ucHN;Ou⋑u# |)89'y:QMK=NnDC^KÞvI1K8uc(iΝx {}_btCxim~ S(d({r{lE|g,kgP*`SYo'Р9ΡFʕwWݦ (͸O z@2N"_;2y v:is/ݤyi5;/KnKdK,dax)@G@ Bu  %d(P@]Bu  %d(P@]Bu  %d(P@]$CnmnSm 7XLқF<|c-ũ B Ўi!(ؤFl )U&!𯱘 d\͐ gˍR))tr8ۛa8 O !a(Hgf\p ,Ԑ C"L5Q:Q,)igc!Cmb`C/czl2=™ Ps͡4e8# z.)u_h!*/W]P\Areqi&hh:&Q7 ,dh *DIdA.Ѿ+R ўLY1B&\ ~#CJ2\ZׂNplGK”p -a0CJh>PAPCcM;;KLRHSb\g8 v]cB\'m^e\7b9YDvh$.7`eUg'C;U"( vn>Sy=tD;HCKBq15f8P;BOGvNO%L?) ;^b7Pk'T{_ԷqX/.>u^&FJ::Zq{NW#E՟%rs*E&Q(Sŕsi=ӕhT#AT15טrl e5"*)<&E5䤠(Z'd=Ν |vXa]*]ӱCÁV - n4v`:3%vDC͠tHua3TD/ WN3IY(m}`WdeHu8Cܮ%KPY":CoU gq3TEIinxJ[$do9ٝe3*e8YZJс{ 2tΈҺ j;FT]EӲfnh? :_azHS#{C :ocE^]BOO`g^J1`+!C|{zȪ77fkx¨9!CG.?Duxv<=J󐡋3(ce'2tyHI%#WM z{З "TGccS#rY%cY( -o [B._is_q˥$nn|/dR0 v<Tբ,0dr~*7B'W d ] ? 4c nB. ~9;4 OnBg@E&YةԒSBg)- daKP7+ɩ  sŌ֫驿 l6@]Bu  %d(P@]Bu  %d(P@]Bu  Zycuyo-2.1.0/data/pics/itrVorderrand.xpm.gz0000755000175000017500000000066310244401241015253 00000000000000}Bgimp_temp.13501.xpmOK@S,sI$Ml)"*BRBEsn҄Ĥ}}; %s_$Pa ceނA^nxrւE0ep|3L9Oo&/_ Q[0rNn*=Rp -6ۀyٰM7`omئ0w6)z m() {VB e7nHݐ.!]vCtM&R')cuyo-2.1.0/data/pics/mfaCattle.xpm0000644000175000017500000001073512410527301013710 00000000000000/* XPM */ static char * mfaCattle_xpm[] = { "64 64 11 1", " c None", ". c #45283C", "+ c #D9A066", "@ c #CBDBFC", "# c #222034", "$ c #DF7126", "% c #76428A", "& c #D77BBA", "* c #4B692F", "= c #9BADB7", "- c #847E87", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .... .... ", " ..++++... ..++++... ", " .+++++++++.. .. .+++++++++.. .. ", " .++++++++++++... ...@@. .++++++++++++... ...@@. ", " .+++++++++++++++..@+++. .+++++++++++++++..@+++. ", " .++++++++++++++++.@@++. .++++++++++++++++.@@++. ", " .++++++++++++++++++#++. .++++++++++++++++++#++. ", " .+++$$$$++++++++++++++. .+++$$$$++++++++++++++. ", " .+$$%$$$$$+++++$$$+++. .+$$%$$$$$+++++$$$+++. ", " .+$&&$..$$$$+$$$$.$++. .+$&&$..$$$$+$$$$.$++. ", " .+$.+$**...$+$..$..&&. .+$.+$. ...$+$..$..&&. ", " *+$*=-****.+$$.$.**..** .+$.=-. .+$$.$. .. ", " *=-*******.+$.$$.****** .=-... .+$.$$. ", " ** **.+$*+$****** .. .+$.+$. ", " *+$*=-* *** .+$.=-. ", " *=-*** .=-... ", " ** .. ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/ithDreck3.xpm.gz0000755000175000017500000000055711101102051014236 00000000000000J@)lNY&i "lzS< "=T ̦iʹ=IH3?4o!^TP!r5tɲdt6\-0ACixpRMSfTr8-b2sj8y 98M2fe(CP2 e(͵/w3-AA&k1xHd U13Tok/1#,r Y kKFjղ[ `74;r-z ̠XA<'vVP2֥t/R=FG Ǒr߿}e(WMbcuyo-2.1.0/data/pics/mdBoden06.xpm.gz0000644000175000017500000001020412412223241014132 00000000000000ZSƖ=/%;1ƞnu 4[Rg23 O0 ߹-zzUU;2{^d^|w/.ʋg6_gh#XVOnmo76>oxaOf3=gZŒ+2#S!_=/ҙdJhLL|tkJeδڄ.*4a(츝VOV,Q%sۡS'wf 榛lQ9i7C`+EiɼCȞaֆn[۷"dd65~ҍtkdZ&oD3y**tk6ʱ!$E,$I=0'ƙmճV9ӨU}2zmuHfVgi(ҎLHkg!@gf2.){δIwIde:nd19rޑi05xb8pV:h(mhV?զ6QR* :r۾t;>gSmb gs)Jv]9Ggnreu'ϣҭF+󴆑: O q9ŭeM3ڹ T5ngL9/RSY@JC)˺VK'QdiZމGZ z\ՓmRLY:]iE.Ս ĸҸC06uUРM̑S9rP3'382qXkzr;#xl;S?O^ɩc)):qYȟyA2wm%zd/_1|W _1|W _1?0?ѓ7:v- W;ݍFk0zr h 'XFP{zGOQkPG`D/ߩ`<cr0@2FvNzџHѿ0 ˫nA E  _{} JúZa2n=Wx'TU@Ec';ۿ0!&lfsb\VzWU5vaz` Br(e$ѫ')A"͝kl`Ƿ8zyO7Uj=/ۛvRI ۶s9OPV>^pF77xAWA X駷ҭfq{yQl(-k2bRBAXE1+}&l0UyP᩵rSeH?@D/**flkk*W<ߩyhCw0n.nW^ j35Sy^"*b_*ɳQ|\#(c:WI,_NV!? c:qV ƾ}R^{'F_[ϙ7kTLiUG 9l4Z}8_ⒾIHu8mr1?X̀ ojY )AB$% ) 4J_ sI"Mf %WD܏XEUҋ0řJ^F5egB{sIy310SRT!%cU~a7ag>;f[~ZFH". k?rfC=9^/t¶|_k@Bɲ3 PCf뱍A~`6ʶ|^tju@%}ŭ9BP*Eey]^3/>:/qCF~zw:%  Ɔf4_ \ʤFqQkЏAw3ϟxd_V!Kl#PzG/~D]4VPо^~u$s=Tbs v=6)`~{Aw#D{o: '8Ĺ {s\>7J{@ 'b}9ܱNAw;ن6_#` Qs{Jiˋ4nw>B ̝qj.  Xꁼ^>ދ)36A6yz78{~xmx{o Q1q08@;yS[O^>v/\JY-Kjָt¥ZqrҏFeGfcЈӨ+@q;Y=)ݤO4pܨgq@Ӹd~ÈQk@[I(ZЛ@{q=Nh7%GA2֓,:H1T"YOa򦣇>ȴT݇R(mXQy#Ac97gVqC̙oAMqҌcG[Զ%ܨ %̷d7{Oz)6헥I 0()RoQw@)#w8:Ҧ=b%ǾKkeiWJ4zٰEwinxBfyߦ/cN$K۾ YѪ;zh22zہR 7`e%t;*Cki%85^P0AưGz:Cne`q/ӽg0-sƑ)GYn56#zlr'<)ՙPuīLa| -yRXy1[RnIXDIbmoCp]?|U Œ vm tC7rn'q=T!2DZY-E!(F6Dd}}k˦v>vGO uS{*xtq &0j衚M9#ISůs:tC [q|CÑ"D޽m*cȪ{E$9 TBO#C8C Tqσ63W)ʡ;RFp!cUy@T ]0`a/Jw4ؘlc/ 46bv2ahN+Q,0x|`"!n22s&cS bKqIN^-Os+'_O^<IP\__Q ^F1o^*s9F.BnivM^zZ^oSZD/ 8|y7^xqyXS4"-_.\]^VpR..D,KYxy~Z%&'ىxLpz)Z>F_R|Kqw*M/3o"\]1/?q+O:]#>Srj/)3"fR07rKj/յ"G0w٫K[qQ󍈗;/o.ExrJ[9{2^FND^V(G{'rx/" g-|/bNyL ] oE|^eb-E+,W&{q2ԏx}%{9``fUprNbaL31 d9&,3 |:C&sRrZ4 T"ɨ6nEVC3nuV2MKMQ#bQ!}!j)@ DTn7;[Hċ5Y"EIn.rLޒb1&a(䥛ЖlA@Ѓ~jρ:ܶ,41yJa)u}EHz*RQN0M u`֋|4"lR&PK1ţZW̟ CI+ `'!@+%XEG{DƛCӺ l>E`^C2TOāL#x$/J_N^7BPq' 7 ?RX/c)wݮA@kq% "6tXA2zj]ϊb6ʮioCw<޿0$Cg1ş"- >K]"o|co.aQU<: 5CBϢ%}3pZG1:m6#U\ bi {(%jɛXZH^HH0v 'jx9;&#QbRM3ik*4T$BG fբ2CGcd0`+"t1M- Kz[c56১7$DW%M>}RRdd]0idpXyUJyPy,CBQ8̽^$樵g"svbp٧C]Z$.O26ȃ/H %σ)U}I3!Q\7ȎcS;) _J衆iQ7OcKk#pr-#{VvFD Γb{ lDVp Anӂ* .(tIՐHd<_4ߕ=6"ɚa7`/(cz B(|3"#-9{ XGΡyAig/IpwoO1rY2yVIj zq"lYϓ8~/ͬcT!iOM9uћI;4Zį1WWi.gMMćoAIB{A,#cJ+0k4c3Jb}X}h[SW'!됖?Fe1F^C%5 4V{IbmK7C}ۺ2bUT,AX{0'|+z0HD^ V)>Y;0gGğ1;u֊Kfm?eM49Fb$nW|doʡ"AЦ?Iaķh&n"VLWfsͨ'fSP`eh0TRdUڤiQqe~5uIҐr>39Y2 ҫ*]',*FxR1hT`am'@hM6'z2aշyù8NvHfhJ։%boMݼ-Oi`[+"$]̀>B4~ /si7r=\kq.&ܮmz8fF 0T5pmL5 PL,M^5l}Ma޳r#L1[ݑ'ͨzH%Pg[n(~!Lc M#P^.~`©0[O$t !4b{&pݘA0l@%Lq[q\P>i <!T^2oG`ȅS[i=0c'+jH)P"氭^mӶ,z΂mQr:3߄=6"Cn5RXPøet %U z[pk;Q q$\ m"viCQ ۆuE\J3Ň*B n {[E bAܜեeCۚ4\o0("lIrM4?eq/=OXƙb e¡+U|v}Yb`[&Ng|+m ^ñw7ΙV$ei 4XXx[ioˁL!Mt\p훶n&?-@~mxf,$4;<~{xۓahk, HIz?NĨo~ZZiw8f߻5-`u6%s)gኺPOInݱm,LV7͍ezCs5wxKu)h /xlKDmnb-o{-Qzvi;ew(O6GS])[\4\u4DP+ۧ1I=D$&:2@n}8p_3$C|嘮mO3>RCix29䫦뺛ݐ%0rʐ4o.zftâ r"1܌n ̆=/Ϗ-}mѽ/')[W~'.iBB?{aIB^J#LYo?oͽ|y|49]ۗ {L,\1y!y-ȟpwhnPb+8&+mLwCj\Ai7w77Ġy, ^\%Bqd+w_hOc8= PPgˠ2I{i#dG6T6֔*ݖ'b }%0O|'mRᖐ`襣! x1/N9 &08n_*QH󬼓ϗ f=PX&ȥn}V qԽ?\#lu0^+tJ݂J@<O2?mdf;`>Fnvo9eMR*̕@qZ_1 0#=C 2qICy@:of4D;ZP( {5a׻N%qZ;%nzuۙg^qRJAIEahB"͡=iw!DZ C^!kOP[<9p +HC߱ʋ~UNqDe^.>t'eQ7]6LmjpRUiVpT%//bU- ፯zׇl6z,TAZp@8BRlN> w"dH:.Xp \[ 츼rI e$#\L8qϝXF>qr?t$J:2XYӡofa:0zRK^lHȫRMytIPwR-d1\\P5c`h1 Z)Z("( #'dHk ɅG.z{P| #?q(%.!n`SFȹ DEyL7>GNG3yoN3c )߳V5PL@g+f>b]^ûΏϠPt!uS@vD h`ִ4FcB26w>h7;JE g@I^'*Gcuyo-2.1.0/data/pics/mdHolz05.xpm.gz0000644000175000017500000000476012412223263014034 00000000000000iw+L;ƲIK 8,dÑ o,{? Zꧪ^&ןhtpsuRp}R|v|曵[kڢkH(r%C{KIe^? G3sn8> ÐP%Ob5|^A0KaN'D/+Rm!Ly( 0;GGpg@'Mv@[*!$ϗٌPap}ǹ4 b0@ûjXWؘ+Ydstθd!cyDStҹL2/#%W 鰿s! Cح}pyւ߱>S6A ;*+cyƬZY2ȃ a"#v +>'G)!?y.=^aSҿ) 'Hrde)ephAVTYn^ӄ4KpQDlX:gyh+R3lPH>ufnvNKBK} F!EQrj Ѱm[prA(,ݛ}L B6%#3߼lC '*ǐ竔xp}VϺod;wc(t؝;̰O(Baq`6;'t6qZ8\w(Q.W6?F=:EH7!؛5&aYU [(OFD1zOF\[eѤu9 b!! θ eС`FCK%] nՐ6k= P Cš/tI`atJc`$՛4'F(%7_95-y7Q`j~ `ғ gj`Qo>q^2|MɠCD1!{Jo[`uh9u'|0 Ç:_5a tǹ!`轀[X.4|!xd6LœFv^4k*!xOB/Z4P<Ԡb8dFo(:݀ XlGH00 kY_3hM?]\#B% 5uad{^@zJD&eP!߷vK0E!`g}pu;YQ*__Cfdp #Pr9O: Gq!%֔n$SR g ޶?>3x(̓<8tA6BXjx ň<'qH!ԒQy'QSUgT[oxI3̗~̙8NEW}vG4P @}/RqkO.!P@)-LF8o*eͰfX3 kgKՆ&{^& LYnLQt;IR?]T'['19mh%@)ųe~r L4tr *SV.S#$ %pTyƀfRJ#bAe`0GX^<°Rm 8r6a FJ53,OoI't:QKf?&w,0~fy}x_ LObФl 0 ﻢ20k!Y.c%eA82>_n@v!`5]juK2cvߛ"S*43(O c 11ZGڝ*2௄yLeP(dPP3A`hB[CDŐ|abmbvQ1\f0IVVօEȠ삘Q+ b2"äa C-<.d 0ݡ]."6!l w:&iwyW.2K/t}poo0#GaaI=F 0l#ŒgTr͠u>@1_X Vuq5d ,.28;S]VfXN6G=&gP$e]ţ0=,RJ.%e EOEoQ}ĦgKwV=..`8a0I &vaUKW'"6I-NNu F%0BOmYcQ\Ǥ[N| LīWL5; _/i0#^ }~JV>\0\ f! G8r\PLJ#O OJ'O'9I-I£Ibf`Dt.4G̥DaL&J%KJ\D>勪aVP1NP;)d,|iӿNfaU; iyl)W$ؐ9/35²b൦>>B@lP-cJ V*,@bg_NfL{BY 'igWpqv}2.:vT`ƺƁ[1{ l!X]"pa"6E=I42N2,`T2Hz)?2FV%v462Yk`E0zA[ pUs B30XaR-d.Z0P v(e vBaMVZ3@''kb07:Vb͘1C> qRPNAA)8Ph4&g!M⤾b,Ǥ=E`0`hc>  w͝{Mf8|Rޡ̥(Ejw&/Peeb_OmzgZnf 1}X,(CX<[f>66J6Byn(rG|X=" GbF+tH ZC,s}[}͘%_1f`Ú8|e}gW#~$cEZSg^^cj }Dxɷg$I0p<;y#9{ו@iÉv6¨UWGNi `WWx(nn>>>>^n~㳯>}/ čiuwȁىnr0+ј\vG{oWZJ_@/\Vy崒`>SVDMEb|'S VX Q۰jc#jvn*L0"4l[D j|"Vs^2Īʈ,QSR7Mh4#c5c fXR"Dê,:)rq\ X+cU j'Ӆ3DI-"U*3o%u%5E,)OUY5ͮOIŪ\|oP"DLMV_M*y.QaZmP 3THg:o]݉{Lr(Ic#Å'c8|2#'c8_x` A(>I^Ԇlmn>qFC|Ut}8YhM2/O+%Vwz` rZr,([GCN/#~ WҘh:F"#Fa QBDEVayVَ^&rFl!B\28#l'-#@@/t@=#Фh͖a ꚣ 3f̢tՄo uB@90;]*0T#b3v| a3rBJXɑj0%$Ԓ7 毭5]$kA\wC2L+tӌn:>LvIy8f D3^XF)`,CwLj ~ Ľ#c,+ʌˮ} g;fEȂRż%݊W6d{qH7߃--G=y!)[FADNɨͨSJdy"og܋#_lZR2"U7uy،"4g-9c'3^oP{FnOەh).%Dҿ+1ZiS1p lD"Yҍ.EEVkK,3fE҅Gؔ%o_ٛejҳZa .Bi qF.%HwN!fZ,J]]c B$56#Wt"2d& ̒ZF1yH1#mp4y1/n ®}FlOs #͌۰Z;ܾ8 rqIppi>=Yw-k{߾^}8lݭ ? F2c3AH(/! ]0#2cTjv "2FpFӥ{"ǎ[`d1V9zD<Ɨ$D2fD$+$BRFXifFluL~SMed;ˌ_^ئq*puqx xc.\-'#݌cɹp]Ř83Fuƽl dn䧮l6dz,clY G 9#3dc)"z#)eM /PgÂ3xTr##Ζo$A Fߟҋc]dXx#fvjPS42Pz7ڝMcGW*ƍQ@XE7ۛr,Y[ϙ@}wJxv9DE~Ajd3sHb).Xy28?4ʈqrsc!bơb7]_D!W7;7fgd~ȹ[J&{8Κ82%kfMr{.kPl$o $B\!i-f}^ v_v9$Dz2J9J/"}ߗJNJRG)tAfd?f޾X]gH$ƾ2Tj-hW1a4V%,3֪%z0 Lƾ0R'bC5c1Yk2P+f،ąwHLƻؕV++ڪ"'c`Դ >{1j@z3_ےGXa@z qz+&b$K_4F4mJANc6ap%2]ʩS]^7MF#NƩK3jU6Dv5'qrJ\hO1㴿dZZ7,eںNaڕN+l}i|S8R^2&hnFz4uqpmAH#1Ɵ(t⪆ۋ#[kyP+g|@V:x")9V#QrK=*5]^e$-B}k)bTWF^ Z+ƚsʘ\fx0VA!c{8lÎ靝k>73'>kUtE z52Q/٤ɕ}A7Je)uRqա8 %ᄁv*zuRkz{DFI֛]'lNUwH\"J^? \$^C%uw(bQ q*0ʌqLA1@je=n)_AC,άX)9[L.->4ߐxN: 8u=;u/?TI3ucqt1j\z2P(5^a"؛h+\ IOM3w81(Ej 񚃹FіYX_{"A.p®qbIynIbĝw,VJn=!mE7f 06gu!!1q2Y"x7X-ǔ%zq'f v߰P-׫'z2gbEmpF ggkɆ.m|V0iBR0}O`aeAyFy潗kNv阏?/P*)@ șǗ!i2LR?i=ಾ:7R.,j[t@!=\=!H˖ʁc"E8s#VbD5|cejV0}|t <:j~>Mxz\*‡ʣ'@3.`œܜQpϜOu^_-J˚QhTO?TYGϢ5P뫝sW<:=1`$%qcwZpO3HE*axE x Iյ1ݑp0WeB$$j0/&fuF!u?V8n3& p7eCV 6B90Ӯpws9V<rs dfqJ!'V8.F,M>@!\@CׇC>b$#:Q<ڪ KT4Mˡ_O$]O,a1Id G>ÑOp1d G>Ñ_7CE kcuyo-2.1.0/data/pics/mdEisen04.xpm.gz0000644000175000017500000000555712412223254014167 00000000000000os6SuЖd$Sv"6mҦ&lӦZndYncRv총軙3fH1Pj޼~Ui=\LI6vjBMt͓OWj}|xivRy{{(HF^Pr\?`Vܽ:J>lRny1Jrþۧ+ =#-A S]ʍ~ed?G(p/pʡ{(ߑ(S-}/D`g#r1ސvI} AO]أ0jC n@P=$)w PH0ҠDTZI5e mQu$ԣ$qWzP#|MvK*t_IFCKu_SCw$#T{s8CʅXcF!E0v5AHu?Q !o@]-R4EtaL caSN4d؋)d4#Ѝ(Hv½pN=$e:TBG9a?r{q[_I Iv8"E݈f҅#/&O^PhQ\'ꎨG (rh@/n7j뺋u\BvERaQ^S.8. FnH M}#}e܋hUv|5 C^Ԕf-ݘ{C#[l:6Z&d|ێ b\_N 1ɜK{0CiU>J+Z`$HɿPn[[ "K3RTsQ &,K1*BHU1d[3֪+ ePa<-bPxܜ2 EbfL'([~R[2'7L嗗HdaD:-3`i2^.l9fFsĖ~QX|߷\X`2s%n(zn#\9F j6Yn\.V1}s r$_r+"#è5.L0@ E C\An~!\Q!K*0fEB0H~ r { J3X/ ir`8/lνxXISXdU њnh4J+3\qhd33J eЬ0煜>!**C > o1Z1Ukr.]!qUkΆ! ǐW)1 wK4BMkܲ Unx0Qa&2E$5e=>:::>:>['6xx2]t^']6&K.kLr;9MD zna Dž m"_„?d˄ĝ cXM  0`G +2 mC 鼰 bsxptÀ~d `8h^j)>f 8`HdP0+h[hӳ3}y~: )R 6& ~N`B8 rLrkd \3DȐ)ôl mɄ  SbR{"FG\_:;UױC 33!M 'RQKP :ְ 0i0R}0yAE^9  @f"jCŗ X.4](12۴NGR sVÑ, J4 0\k %T 9Zt}bpwiP fXA0l#ȄK1 F6@D VJ͐cX3 9CL )0P͋ 6I}qHq'+loLlb1a]TaF)8k猉)+ၳ|:̆[)Z!eˈ1K0v`T9bAJf@!hӑvL Vo`,ELQ8Ȁ!И_2Fp ρ,p<[ѾY0YK;V+M1\xI~` A2a3Ed {  6 10 2{ ${`C2mf 0Ȑ_Y7 LiF [*=OؤeO9D?X9r))]Bs.,qqa0a3ƦG''lS0Ba!_M8ox٩G7 _GbI>@{B!&LMlgb$!Ƌ_9cPRݛ84EvNn c879ˏc edj1~kL}sИO*0xB;?@t(fwg=d8Kl*|߅& <6H,'āaMX9c^7 ߅h?ۀMO&4/Nd*1pSN%'@:p<~:\3ʪR/m{a?- *3|gAX.?m[)^zW@ݗ8ށ䕝e~(>(v,=%&|[4 7Z kO%7cuyo-2.1.0/data/pics/spPacman5.xpm.gz0000644000175000017500000000137311662241763014271 00000000000000յ=spPacman5.xpmMk1OVQ>LR)%B)ŘB{H ]I3Ih4R'fl->޽NmxzzY˛+qqZ._.N|~rmwl.nlmw]^٦no9+< Fi<8E\ ]_szDs7KMtB|08qB#F!~!PPGcEg#9'1bWC?(%K.ǿXc4Fc4Fc4=' jU0?8]-*ca1sXis0֏JYz vż=y֏}dccOϹ: 7H? v~\}#\5qkhLI\ j>tЇ$U %'n_$aƽ0ƝMu #:sX0ɬ:+FO8'F?-]2s,An2? ȏ,Fag1 b`~?2bH~ ɯ!U.A>#̯ $2@n- Wz̯55_'Xa!v9rc-X9=aej娩ϘqV8sr9X2s'9;2>;KW;d2cay Β2cuyo-2.1.0/data/pics/ispOrange.xpm.gz0000644000175000017500000000112711655275460014371 00000000000000[K0g)Ҿ,!0MQ>xA ݜv&=996[ڲOڝt>w˧X<޽xxz~]ۇhZ8_n1@銽x}ھܥ`8> Ϧ'`p0o^|6Zn؇ohN;|\S+)H>1dmIAnfZ*!"n̲vƄ 72JiLk S \۪!;1D{FJf|_5<C*V2Ao+d$VBo=:D*YAkk\JF1J{WdX֍,Ӵ{m0T4Ȥ5glfA#̈όX-z r+ƭV#ȶA7~u~ (cuyo-2.1.0/data/pics/mdEgoH04.xpm.gz0000644000175000017500000000347412412223244013741 00000000000000kWFSX.-t] iҒ68FML vg&yK`Yofvmɨf޾ꖌڳeżdn&7~]Z?{n;~)hd?yT, .(i(!ȗ!?6Tqir ]um.}/h.A=p$Aw((;hDZp=JXe ]5(@s,nu._f(mD>:J[Q2Yل&XϹ+'jriqACos3.u #uQ]$XԣVF0F%Nn }<َi4XHM](Ċ :13@*%$D =I=Fy%cIJATRх# |{D6ţV:AiS#FØK/q} #RY.:J{Ma41P&3!)]]_0. b6!""}ŕs<"̨ub\(}j D UMgmH5&v0n8)3zy1vR}Dg&؅NF$H'yWe)ĆA8>œoQy(.X<.o7?\,xh7|=f@+5aQmMtSv!b!%Q)lc&أ*L`abvc(L;QIj$!:7ex CP0 CP0 CP0 ߞal^T]sh?V1*XxZd1r_,`Eah0!E>6 iAEapoi0e+0:(2F`h'1KyL1v/63,ӿ0tk7 t&EO y=2:13< Rbr_@a B0,JJwr_!ԤCu3֚Q\ _2CY1^ C*b>ïj.1҇m;~}oޜv[;(n:ՙ`]\ {Qy!Ov3|]\Óe͡{3tΏsy'Yu˷\tNNCxvyvvsW@8:}zr~/>sJ0^P4z_`( `( cٟE0%7cuyo-2.1.0/data/pics/bxKlotz40.xpm.gz0000644000175000017500000000234610361553650014240 00000000000000b=bxKlotz40.xpmkOHW8Т* x|h!M&^-oИ[S-}}qng+y gf9g&@$vRV@ TDe.~j%)__ ci< Fh|yr4 .%߆" ‚$"C#:XH2Yu:+J(D=8Ɩ c+o·** 5yȁ%4T!zy.cUn a=d6 APSйBUzĒ eUr3_`ȵ:D*Dj!iJT=uc&|@! DMMȐQ$JMԊo1XF 1XMNxh${k4 e'@_Xƥ_GHR 16ƪd5u^4dl@8Hb͞));+{ENDأ;F@lJd2Z(9!i0_ gLřjLU0vhr]BK(Gf0kYuDw>2Df8z:EԧSY9};ۄ1EpMqKdA>bD jIN&{$ 'a&P ұ_*9HbUS,CJHx(:G&p.ѐgr#΋q齛s܉N31{~xY,W pZ>=kj=1苡(筶89<`@(`@kVB+`@A€6v| c))U憽F15CFĘaF?m_ A&qc53&yQJc\BVi A&hwgԚd']#g{xHJf\#UuF RG5\%+Hq't;"x|#[C (هd7VU12w%B׸R*dW #F_KmPFu;FHzvE3Ɣd8FZI4\>2D YII) q#%f%$ ia(Jq( Q#-M[V?4y2$iqbA6Pb "8 d3 dF4fĂlH_͍HG1jA6%X Q㷽'cuyo-2.1.0/data/pics/mdEgoV11.xpm.gz0000644000175000017500000000156212412223254013752 00000000000000Ys0FJ@0;& Ⱦw: 24gKe -}{u}N ]b2?^2' _,K RI"!2fih ZƆ C f:!3 61:gau `25i;0P(0!CK.S|H? u$<P3$5r*-Ϡ`. c"=+ E.>:wctc(Xa_P2$`_ZF*+%C>ϧma(?ha(?p ߮AM"!cuyo-2.1.0/data/pics/bddisco.xpm.gz0000644000175000017500000000226111644304537014045 00000000000000_OHşO1!;ISGi)mǕ J)jJ`>ιIΌ K9grIg?7on/ŏt:o_OXvvyQdmGd`ޑ}| {BǸ{*-.*}Ev%:\}--.Uz,,dI9,`cUJ ,==-Ž'xf48 v;;$tF{c9"F ac;Ox)4K#NS*&%M$;~!>{E'IiO^(M8ݗAaJ{0J[ aUK C*5 Brٶt^My>bX0XR݃:K-(,|vv c $(:1>3||Z9HnuG|uN9XySCJ5r3xP#/Bcޜn=7dпK=7ehO=g cA*?C5%``_"WPM~ 79փ9փ9փBgxi dddZwZɴ28z9z9z 3x+2o4cuyo-2.1.0/data/pics/iwRaute.xpm.gz0000644000175000017500000000116207550521116014050 00000000000000<iwRaute.xpmkAǟ_d{TiՊ"> E$}Qwovf&s7wg^ 3ݙ7ml;۸_v?7|t˧tK`|r~5/Ā}bD|uG| q/5^f|)Xр` +u KXH,V4]|Ŋ4RŊMr+W\Th^z)GDH6>AhB_͢8EFHh-XƳHҠ$S;ok1$tYJdqh ωR#<K1{ڈxh&UP8.o,qyi;e״H3U ͢Y?<(wgd3:M +/nGai#^g'>mx:oq?L9omrޘ3Y{7xo`MX捑i;I_˿/La\cuyo-2.1.0/data/pics/mdZiegel11.xpm.gz0000644000175000017500000000242012412223272014323 00000000000000SJH}Zy?B+jE2`-F j5 snsXa39n .k՝-m~i9r:M>ӳӣYk;5gtR%Դ5S?`u } LD'yR/"C412(UD0r hKUFu=N* B\&LF\zPu%d[,`qN:,!o@ƅ0[5F qr"g!kIY+(D ӄY!ԡd%LErSo a (BIRx(#!rn&Bp!n%8i|V<%…-g2ƍAW;*QI*=`"5i_dϢ(5WF=(( Ɓ$̈="yLB4PSVқ±B!ke*4d5NT٣20!m\d9A%iX޸0%=/*[ng#)jҮ L5Jr: rQW4U߫q*tndEJz3!A+]aRd0D {gA>rA]J&SX]FQZWQ.|ގM&a0q8LWwW6۶'<v"˴cܧ/ fBg~z~!w4V*67rx^"ff]X7j? &eglgp[\O-?ӡA/hsF.~\^?O>XܧnoT+WpU֢ v;V܊[zR)m[A[9L|y;<6Lz_qwmr[ w4 &cuyo-2.1.0/data/pics/mlGras.xpm.gz0000644000175000017500000000352111672457347013674 00000000000000NnFMkdh 7J'bǐdF ZZGDeҠ(BwǝY&QQ-`Ivfwȥxr \:zZy<=r k?Z8D~8U͂`'A.?k`Q%s:zVIˣT?KxOC,sXG+!j,8_% pvשrT*Qt-UܬS.؛os5ӘFrpiWu6{eqO61DOx ?3{?hGb VKZR7|p;|Fݹ;G:WXZgy|3zNk._Nt7rrf<#p4|}~8͇`6`*u C*əJ`̻~xgMOk:sv]?p=<ށas/I` :[_pAp[zf@у\62z`Z78\zOe0Dkjl'r|ʅK/Y$| lP .S0z@5r·L_B`yD1/:tK,:C>K f(YmlLf}8*kC*t? Icouo:ɨ/Bx18p680 `+ej_?0×>F 3H| Wz&ۂ_C3nɀgKܒ̐_wf0t.] mn'B+7]:3p <00wa`A%f&,\dlˀ \ \d쥾Υv(_}2r+嫘 SŁ?G;Zlz~!WS:WB;=aȅo|ȱ!![0X>]=-iPDS`tQm@}:0m1:5bp8N:m1PS}y 5uSзU .WfaȮY.03ށuEUSnXJz.3rVהAbWҔaKbJ:aU`5{60|%{-=νq _S 2ν|# ޶NMC^y&Mf0*9sw>RaH9'MO1mxw\aIsUIsa2 +, S#S{OS@IJ:3Lc8]`XW?ǏLK c߫=56ӆshw9 i z\cKit}Msy)6AJ:Ms;ׄo$!OCRIs')iY'e4nc\aIsUIsʹaJZaIsAxҬaXה M گ75lY|Yj6 I'IC< y4iӐ!OCq S# 50LC2 3 5PC 5PC 5ms4p # 5PC 5pY'g;GKC< y4iӐG Ǯ5PkHҐ!OC< y0Q 9K OBC~0K5L0qwq 5b]{6hJ`] 9eAUw»-Ѱ ŻR 9vw[ai֪aj%s%,;v.j3|p)iaLI cǼ\<agsY Gf8Ɣ\|Sc;zGr)iqU)iDa|%=>l>Y(SaM}0 3ӔhÖaM0?,cG?SO,0|a{l)=^'j#% '}{J M0VHj4kJC޹ ǚe8Ҕd\ Ge8ΔTÜSҲ ǙfX1%-0~dj%-p)iIA٦(jإJa+*{4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC/us*cuyo-2.1.0/data/pics/bpEis.xpm.gz0000644000175000017500000000132210361461707013473 00000000000000k1"o\r B7GAJ)G>Tރ nMf&kWAz/_{9>2?3Gǫ\}7Gz>{zyw¼4VBDCC D#.1d:$2 hJuԂEf0HKORbEgB LNf(z ?1hlkC_ڂ@ -D b`# `C7HQz0&!rFJ Q- ZԃlF-JB`@b+iOg|#б{aASR|H Ҷqb0MDGD†a5AZR Yʫ2յ IˉvP7r}NӇTjzAh ƻF85؝V pjb *6iuE.ɠoCb9 ~svϟ.wjJA1=3w3!aܣ/1?oz2żC!Z.lHR^TjzAh zaJEhGLW?<:_cbW{!cuyo-2.1.0/data/pics/jjFruehling1.xpm.gz0000644000175000017500000001726407550521117014773 00000000000000<jjFruehling1.xpm[{sD)4ZJRƲR|a:sf:)umD.Vg?euqAs]=O>ۧoӟYX_[/v?U~ʵϾ睵J~{_6ml:ӧ!6|1M=l~Թ3l>¦;:;ϼ l>C:M|8sli5SuioW%ΞfAy'9slJWy6Kl^N<|xΨ~l&r.лwq>̽p:_>6S蜞'/ՑL\&GZw2 ILq/ .Cy@C9A:]3K#_M6/9̤+̅E`sHKsz:L$ S)a1y]׻.)٥R-a)ؙy ac#H<4T-WLLB0&WD]w _Y9Ǘb Cz#k@5YC\g'Fb/v@dx>תmGer!`5 xaw1ݥJQåSUwKEHx8q2`?>X 2?C%t$b{6Pijw?pF}q]H.F`&(SpA.A^}6 wuRiBph]EIL< I͹%ƠJl)ck[0}oEYvNP @ھ[ CTP#L9m!;&`X+])>&,o@]wñbĦTvl@XRVf f &Z Ma\1Tp8Nh ,Sڈ@a1%bi-fv<`9ȑCWG.RmaK_؉XdeIE'mv^-\ 9UB֖,~}@0 %{=?L[ qV@@E\?2/1)9leTh=dؘ5eo 1DuޗoR<fİ1@` C2kӛGĸwf{`V,Cw:}* 0O34B.|SEߝo17y݉Q# ;ۺ=x/1|8z2ե7/1e3=' >w}]>/>?GGcuyo-2.1.0/data/pics/mdStein01.xpm.gz0000644000175000017500000001602612412223266014177 00000000000000[{ȑW#H2IyZ$C ͓Ś&)91U5qiK,ޮ*pxv.7㻓wo<9;yz~z;<7Oۋo=9ywrjN͉9&E Lk^|eY&X7,IJI$6rI|S<,x$$^8 u=j|y{ԶG$6,:vHG]DũS{,83X HtlG<Sǰ'$Y|eg->٤$Jaq|ew%ItM| #g>;eunxâ_jkgŭx^|eQb'G,`N%, GC,e* "hː ^`FK'PkPGݱ3 k+VW,t>dq[30o(۴ah`@(Է d`xӛlF`rtQfr(ӛy4!(bܗBtb)h/ )!Jq59#2֛9Wd/36 k E&/EHL (nՠ(.`!×k.OO #DMA@ifY,@@d/:p}z2^^H89ADy/Bx46@/ v 1"0Dgx+Ȳ՗0*Cx6hyhzCg/C9LH;{AB%Q|AȾVEJXH EbSoΉ`.YD9ypfagrg#|؞I!J>c%T\N| B0o2EU˼OǂQcc֚#]rh)_2EeEuZ$P#I^:l$0o!A(LaÄ Y kw&aZ32~+!Im"(3$FUdgnny2J2ǜeAg dH\ݕugnLdi"!ԑϛ ]3A&Kxi4M)"(wb;Fno C td&^RINFrr$-bX%m?nİ`RtFvpI\ = LGymqvA*9 Nf Ӧ"s9qF!#guJ{&F*; ^(pY 1r\wv?#y)$ܿ2@0zqu 糶},}V/ (ɗǺSTn%Ā2` iu``b(9B!'Syo7+%,zK d:hl)¢E !_ܿ g+]^=vJw}\b92i/@;@*wYaFXLA ̰( Ym'oV(>ĵ1vdHGȫxփe*mKňmTMD,e.. jCYT5/Ϳ _gj3X(0ժVVXaAH%JUpWiɘ)0Wa7Ugqmp.ltma]m=njD}= Re {X=Q{*`C 3%Ngv~`\haX2}D-a4 %<P%mݕN*FVP 4shA+Cub=X= Lb(NyfBc66`yGɜ@NQm[m1gltT&уm)mʀv*M9(/S(` ^̰#eHs3M%7GiȌ'm2k`12郾/P1Q7dX}'tޠ%qf4씦T6 L{!GPD}. i|جPa$8,X$ zsy9|C󙖁O"K ɋ]nÈYajI/.%v#:2Ts3BFQ)Ucѩuٗ&(P]| 6\ y^Uuq}?i-H 1:i& A`E VRx[eY-N- 5b * `zGKpHIrA¥%rSetKFxܤMjJ9:bumZ` wejYc-1/IU"I,82MЊPO/3%ޫM)2.2B!CWe5B1=S%ܼZʻ]G D'=?+d4$j/>*b$XݺZl3Ad aĮ4"b< UTT垵2`Imž),6GŖ=@21f8$j^S~3T\zB;װ0kpِ'Wnq-18mY\n^v6[o. {*oo!+oxU u_C⦪ny6w;\&y4u7d y8ةe#V7ƊYgNyf*+Gam]#bZbqRb\-88 CCCg)]闈-Y4g/t2I~rQ[xM"y1B홄D eIYF!b|(,V~sq2!0"ʪu,zE*!G=|`W q("NUYqTwvEN )a4?b#mضdU7fD6&lm(>o +Vښ |8nZ,i755' ڶ. 0>a0T`k;fY#뤇;x3vPE|FVY+eRfi @h ƶkm5BGZudKꐖ _톚/Q}1/y ҉Fﶉ0bh+0_B KamJ3 hE-I B(y-Zw쉭-zQBVT5CJE[mZhB~/ouII\7߼[oK25"Qp=B4zw4)p| җ\1`(o0,WzAϹ-yhK:*bp ]+Z,SU#[-iOR0u0dԺUk=G[ ASN5MQCcP[r".)B(4 !oc_ IOeTAg6*;m^/[=qϘyO;*ަNr''boqc4٤exEx> Ĺ8jާ7^ݘ3OPňKY3Xjh` B+"3O0MId }:XAbzQ AQ›EP*7N}xlPCP>C𹷡Cy[wdtA!Ryz?oJ=ڽaWj%~|U S.'?<6ۻWr͉*Y½&TA֫0,[1-@fs 2!`M]` =߹Ge*=–vx" (-4N;p=P? q&͜9S,'pUU)5>Z1l!fख़ѿgD ;`0j F?I, XLn$LH)c]D@30ryO4꠪ΰzcuZ::A򸈵Ӣ` 'h>݃;dst|y9!dA4+ZX'KR}W]Sd/ɒDY}%VN_'SA։m' #j/8IBOS`x>pLjݝv5MFu%Qؖ!r՞kÉqr}keU Y׻ـܙ wиfh2D~{Q#N¿m4fNoar2DyG؁K='kvp5 "vGн6 EgtCnZ]Ak0AP'lm[\`YE.\lY $q(ս]|50jh W >/3DRFC]m_poCư0/ҧzi3/jdDPO(`\Hm6# (c R W? ,fҽb8CVAG@B=> f^E+]]U?s3!wDAaҝ]vunD ;?IVռhQV!9$D1Ez'whzj5H#,^pX`4__|[|^S |? \K ;<Ma&o$[߈$³(2=V8˾qתrR@̉&eJ}~}NjOe"R@àxL]ZqYi+0 |"!i "yEOƒ,6j $$ þ(xstp枮fiJu-MAěɰa {CA)o^Ěx}.l%r'x"@:͡!ā">@3&x|}:d=yIZ2*çDXC Q;ïm_4aЀǓ|nZ2Sq-PEs|X Kn?04n6CjSܥR,x[19ȇ ᆐ92$,~fyPb;E!Ŋxls?7o o8aڦ:co9& Cb}иilcy^Wm緷Ե13jC(2 _NnGcuyo-2.1.0/data/pics/mdPlastik07.xpm.gz0000644000175000017500000000442412412223265014530 00000000000000}[FOV4e SBl%Qn+kU~gΙ$}\Oy9sa݆}two n'ZP..L*7o%\P;J֛r| ߯W Ͱ dMȺ!ʜ9(Ms0AfPͺQYEi[ۆ Oz,ƾC32͢܆-%]f2Ȋ, ( V/\ø`^t,AJ.VD\ֱ?Z0v@@딖1P;2/Hp[V!wբERE&Y@Y%Qiy%V@hiB84Mck1_[#u^+6H+gX -x ʙH!ZVEʂeX6Jˤ&Vyxc UQ0R$b"}^I4@3J"OҶE QXTHRmJM\(K!h ķ_0"-ͧ)b+?ck3c~IK4' % q*>sSN%g611-/P5Y|@0Pn^9֒m7f=dV$z^84$ϟ{ne/`o8@罐 *܋O[y_LSE/j yE/xL^6 ^ؔ#漯,B 0@ %šC s2O}"c ԸY֊9s>{n=D`> Gٛgx1/> !Z<28pDagU8/̪d7ـ}!yb%N͹ FB`P*3 ϷV$sAa5A:x~ e,vHeYgiM'/c(DSɗ,F-PC>zܓa?`V9/x0ߙ}؜!%/|i0$欞(ۺAo;LYsy\i|F=NUq^d×|};x 1wG\*p84z/hn0T:H#}%/(jRK ғ0$ w8Sxu <=_z 7ԡ,\4m*zR0\{26 } 2ai߂tZgyiSg Xs9?/2]ƃӽu=1q<-{睑Lppz:x^to!? 0M`aC(g<&^cIB ;:Cxf|H)h}KUu;U]Sܬ|l92}5i푻#>s:}~r9ѪQK}62ŵw'͙i_Tugv^jGgQÓ W5aH!aH!aH!a72F+8uMCaamFzj+y妆咞>A_<\E_= [4|Sx 1G ZRØ54h9a[O :Um|dɁUC0+(CSFrYP-hXAB䆞;Au{a䷍s N1iL=~7]ÖW|<KfG]V%! GkBBt|uOL,_&NXZ[zjxYiaVoc+99AXd1ցYZ<*s;LCx{n 5BvmU7#&11B5o K~2a{[5l;~` f.5TE/~105'̈́j }:&裵!TԪqhxIk$Fr)^K05uԐik<4444} ~yKr/Ï5o߳33/ßh^U"[V]K'(ȓij}K'ǶMHBQۗO4G*Iύ]${3Pd^(ejL~kX&pDR8?߉5HȪC6%L=3vGc|5ˮnZt3oO5@Zԃ/͇ILĚT~2ޤVR:EGJz8nJgw L<%XբJ.,veܑ"SOC \QGߒK؏..Mฎ^<)Cr"#twg-Rۚ0;T~2jpN{nAG΁m? jPn:?h{NY;`.@.]+1~ wUtnkp`4~2jSUʠmA.jÛlLu%؀12 >Ž0ϒwS4>W7C1o/KnޱPb4>}dː}5Q,W#/AmR/ a?_w^1~;>?fC{=JLj2޴,ˎdI`ّ`1Iˎx~옋77!,gcc.YMHˎd<Ը`)bKk=20W2}x'?,ˎi!Kk籆 EF?Xv~xcA_(_\\~3}|w>wwwww L5F->άȢ"OEN=TY5lH<,{es}NUs]ˏ~јѵ. uBtҳF>*N9ۏE[A9I٠/o4*XZf1l3۲PiJ3gLjVZk܍qm԰Р jCR[G+^ W$58=k\S^/ Y]X:_gg)DRCDr:gYcu*N7b<un>*jseи"ܢB-RMX:[^-H0r2PD?~M,Kx6-M.u4j'~U߂B&]*m:Vw}Ы4۔ԝY WQK1AB4xR@hVyFkvvMA&E~^e^<'#: aYly@2Vg$aH^s\ݩF$Gye^أ *JʐZ E!]/jFg]4"㐬kh歎_?9Qֆ =8U= pA@s00|6R=8.BG Ž 8ԏ B![e[#a9]Ͱzu5n:(Ȗ !}'%A$Wwk?<;KE% :8bX?3+JLYQyÿ !cuyo-2.1.0/data/pics/baSchuss.xpm.gz0000644000175000017500000000017410361514436014206 00000000000000RU*.I,LVHH,RRH-/I&F榦ѱ \JF @d`å bn@``"F j5zzjjZk.2cuyo-2.1.0/data/pics/maLidD.xpm.gz0000644000175000017500000000233511615032231013555 00000000000000YWHqM҉E4A( 7Q>/Tc+Hly%y#Eep.e`d,!"K"%fG$ɗMLqqDL.!&1ee8Hly0i,bڴM҄u*:I8hєI36 8h%jZԒ)B-I5(V4H(If_DXf,жjQKH &-B1mKPS0YRE)FEm@i_k-7xJ)w#lo DÊ) Eha8]qEUD+>&FP 46Rzvz&`Q X+7ZFӀDP{H UO5..״.$3=Yo"|W='YҢo"r~q5?yN~U=#a;Oռ=ql<|PC0saqsT 2ٗ&Q%z.7,2|oF1nIl/H{ӝFiC\ލOtwk뽣"5nţ:dZ{wrl>`kxnnd#g7CUzKZ/EQZ: =]r^t#ĴdmT-D_E;{d^nlTOx̐Vދ)hOx̒?ï:S%cuyo-2.1.0/data/pics/mdHolz.xpm.gz0000644000175000017500000000502412412223262013660 00000000000000YW=E&x#1 2 KpAE! BD1%syǎ&~ꫪ隐M:C;\mrwM /I޽G(ZJaAYsf) E 7eKShFaPrRdzڢI@K3EmKZR r `NӘuhda&(srdWʱJPX UK;-^¤$B ,SI$ zNά&MNjAV.IĥPUeB**МaI`$ j:vY taBsȆ$),24, +1h*!IM3XV!ɤFVG7=yR@ 9 Y 5RMCYsyf9ll-Q6 m&;B_n>Ϭ-n>f*:!3x%MMޜT,+%) g%زKGh0eнb9; Geu]VȎʐ73KtGVNXήra]7 oP)>duǞ#SIBVsdJA8bMBc2C ]Ye[ѠuIAM̳'¼͞3 mI?(te#17o M758r'撆AJ9Vu؂?! 3'U1«oF6V?׸_/SߖgUI̅ Xj)~ٛk0pCڙG_ia)`O 5okA)J=N5y'Ξlp~ǃv뇢 և̇:8 d@q؞ `ڨS=V{Ϟ:tj9綣 u0%;Ir! Xǃ[lظ(GnH]Qo9n:4^-˺0fH(l㎙vPjA'^98ӡN  [/ dmgCzcow  [ceu:nowkr{4 qǃWvbbaΈT3൰[<<*/0^tWY0Vj7vovcӶ}Xo6^‡j:N*UGTcl;Ӕ5Uܞt>܉ʛ)iu\~ zUkc˛N\ER(%ڴu9zJ(ݠ.څBnu\p|6JF}ǃWr٘ p߫Vq]KEWA}>Ymvfjj:e-SZbu}bT8z:k/sND/;nO%ߧ3|87?x7CCWʅrwEQXعc7?҂ }˽bX.. rzt?/lo~x=|}-C_/u{w]Rq1w7|<6?*<_2?5wO1iq<ޑyG|=f|~uzzrħK5|󣲘zq`O~[̏<\d X kxk̏1xZ̏y<6?|0yMȍcw{pO>恱>Ъuǃs/@4&|^x8|4,]''4ڵL&d{};MMMMMM_|+1YNjhx 'ݮE8NTOp $P<O#W0ߏmdr“!d %"a1aȄA(>lJ '04&(1X Σ (2Il9MRgucRT2: mY Im3+׳W@bWlfGFmR wRGa_Ҿ1Jy9t(A#I Bh'D" Lȫ!@1i&zRG Ȏ ʫx KH/>QvђB艜 xнCpl-"l%Crp1V.!_YI0wB,~¾:`eWߥ`PkAkDBF$gF֋АָEbFLά!+ׯ[x2ULuBC:[WDkC*diHyʁsYK:^Ik8YWOC:C%gJ[1e^uG<&+,sY22 EYx݌dGvN{~X{? $+cuyo-2.1.0/data/pics/mdEgoL01.xpm.gz0000644000175000017500000000517412412223246013743 00000000000000i{FW`[amc6"\|j"m$巿aK⼟$y:3ghdߺ%g޿z?c_dë7_cاgsy-X!{~<cBN*($ REQQJlI*UeCPH*Si \(IMWjN,?WUeJڅZ@yL"ICeJKj(YAsH2ktG(e]x'$ U%}F ^P9I*@%,Е/,ӕ%jRLP\JmM`.jyBzمF̌V(u~efit)dNWUdҹfdWWyeS,FMVRŐd5AZFQnTT3deE'7$ &3IӴ 1t [M*NҼQEa&[*͙0~!N`*Cau]d?s#YLْI78نI.JޢVxݨ\V*6t% i Ԑ %K2G$h$5[RF¢)oiӹuss[l}`&StI |{(uUJ?Q>J4}R\~@cX2wK`t}?$siQ,`C ½SE[0Q] 2AJB} ܐAR%{6D#Ñpd82 G#Ñpd82 G#Ñpd82 ;u_@z)? A]0`08ABZlv# `{wwF{1-iϓn5[m;ݝ?i|F #)L6d[ZҮu{Idca1ѳ$diYe\ "w ɲfa<»<Z$Dr !Ngomӹ~hD=3 AU&T2?2v3޶ȇ.~p̄Єlk6[ Rk5F2Y ɿJC Or9t1,ˠ T>a#,Uc{[m?:»>.{_Wb!|ŋdO-xAOH/ 蝎eq}f .. . ,e!?aaw"CX@( Q۰X^LJdk'!,,[gHgo6K6v,\9dv^DF0|X< iʤȆmO ",Pp=Ӵ  ɨm(EqU@,-f$3Py{ٮgM^ڇ,ڇf / 2Dám×!p'6aXl |P> P*e8ÂŎLuE{b[2!|ŏEXa²0 _A뺋E6zDut6 Ci$z LUkG9&kC'/]L˺5 EZc+^T7 ^cNG<5 lg5g@j/]w>  !}dA:32B>h#`KoOdhT&Na4dzхi@`ZiC`vGv{8Gz>3- D!,HrIP !| *, `Ě n;'h FQi3((hFߝ ٴw׈p2$ G {;_׺{up raTL2É2TkuX#x2+$l)8CQݮgBV+!$f5C7BC0@ 0YsK*"$CAt?"EfbDbNF(oV}Юn+1 }B%a )sH (="(58EW79N0߉'s `M e: ɰK7%`k'?H{ CpG'gBA||?ncnz=?| 2܊ !@iM)C04woVNiY0a=b|̫i0*gkbM a79UT5(kF:3@,;m{CTEp}]/A2R(}r\n7 6. 82aVۦ?8Xڹ6j4Er<'dqvmml;пϟy_>ѧ2SrMv>v9b]<4{ pt݇3@/ B~G[!LD2`f6y=hevdFv+#l#9||0H2[ H47;10gcj-cIvbf׹;cZ!uآq 0A\G09_%;i*[ U385k'3C{~Ci{'wxѸKoRyDiYc(VҁC92AU(}àB?^$%i٣~h*C\VtR,QB;a eB(̺N]T2κn2|0\. Q^w!cuyo-2.1.0/data/pics/i3Plus.xpm.gz0000644000175000017500000000264112420650607013612 00000000000000[oH7‰0`;Lˁ$o3Ǖ"vigVZo_Wc*wWc_:&M|)5|_|{^~հuqnMEg43ͳ vXPrvPPo{k(m(h~A鈇 C}ۅ=T6B9?eK|w ʛaA鋇vch ʚ,(A‚z*sP3XP>E^XPzQ|XP֡`A,"aAAx`AaAڰ|W%T#Z#Z܍/Ndcd t3rE+7dkJl(l*#\a l`^eIkaB"#׿SFViFh6uq~YFaF,FlIc7ҌyeF6dRkay%[#Pbye"m3EIF`;S~ wv0"޲y$X0!Əy~mV/y&;"a:`3q1D0$S;ps"cfkd3.Hn PuȘ?0ʝ'3q(nx#HOf$޲c[3RdRbԪrHIp0$?9I2v@y($7Q5GoϓghϮ7SH_1U1U1U1H*FIx~4fl$2l *T#2ڞZ_ν]JʨTGqFdPri:_nTCўJy9.:Doz6_#Z˛[5;tiocuyo-2.1.0/data/pics/spPacman8.xpm.gz0000644000175000017500000000107311662241764014272 00000000000000=spPacman8.xpm_K0"p7e(EЇ f0K&z&&w ~y+l//7fz߮ŵzfR {YOUuUqqqRŢMe|0pZL𞎅`3:a( U`g2ԿVdg2CL&;T^[]CL&;lss)| a3 f0 W.!H.5D[rp׼qoH o|c{.rͻD*5#}÷.O]3 f0B_;*ஊ`(}}J;7!!wЯRA b Uhγ0F2b?g(#C1ʈ`O ,R3J+=ÎkeW=++s8f02b,8)v;⮥r"ȩ)jV9)jVIhC2(z2%EgI{f0>/@62cuyo-2.1.0/data/pics/bxBuch80.xpm.gz0000644000175000017500000000555010361553650014022 00000000000000b=bxBuch80.xpmisZWp$ $ (` 2SCOwF;3uL-rOSbt6])j0Ie+gK^L~&SZ;D_?CTha)w穀 LsRKgÂؘ0 j1mRjJf) Lw0-Nr$BgyJ-3Ro2>O''VF.+jWr2#sB>7* ?c}b8+Zgݣ}e?$Dv$S$F^Rt{3GQ~62r'[!\Q w?ƒB:h#u\BV8G=yg(U `0|^Ʊ :eI^-;8qo+r0뀡;Ób(]&ת{ ő$.Wgb7ebfSztdᒹW$trBf~{QN㢙͜E*3윜iCMy33(+:&ٯ_ggi*ژ 11o%kh *uLH vsֆ V+r1k}d|;z4ҮYE;~T1FD>FzPp傑q@r:FQ\n@o16ɷ wЕC KƻZ{r; cSǞKh*j)VeYxb>v[|9KFrjB\I3~n!d[Uĺ."VN(7F`|B?^ybi -W;Fe> HI @@||>tݝ6l<{>_Ȩ`?PqdYb>@0Șc[jZ`kp:T\su֔<=<7g:cBphȠaa@]B 4S VGi#A.ac45E]YvF\+ǃ r .Vlr9 fS]~ķʲV\C6{@Pk޺QsSnPxP .Cb6t7g vu>2V>M h4Qx|2||pi+,X\mp䚅MB ؇b㽞JqFB?sk>l'+EAADLx~\-kCH+δØr{gb\Qӌ!\MUa0)M&6[tq3*tti irل1q*:"7Z@Br93l= ؆yϨ/7\}3-Vl-oPZU)aƭ0u?o4\#V+8hgo@T_&/9#wy5;CgjqNIנ<"/ͳ/96I#-%.(ʟc kߋ6^o!]_Bttryyso6]s9!J}{Qt?s7C@i ;Qms\3us$}N^ϩ, 3 Kr)m0K7Aӆap;ȣQO2cّI1O'd2˿x*cuyo-2.1.0/data/pics/baAliens.xpm.gz0000644000175000017500000000106110361514436014145 00000000000000KO0 WX㶠x q∄4U0`$g}IDuV%uvs=[/RH_gЇr5]7lZ>= |''p I҃YoǓa˺,ndwa1t  Gd@v nHdbFd@(o_ @Ec! HY,z\˸EX>BeA hzOp*9FP.B$x{$Թb0Qvz> x>Poz>?C㠙Æ Rn}-MhA0icM(?E[#({gQV0lT~ 6jߛ@)ʫlgpCuniFdF!&&A\W#ë;c U0,3;=5iKPBqQ`pK!D@y,1xm442Gbp8j~D ^1c0 Έ#0 7[pFs#.Bmaaok~_T?k!cuyo-2.1.0/data/pics/lwRolladen.xpm.gz0000644000175000017500000000236407561732241014545 00000000000000F=bwRolladen.xpmmo0_O.٦+$E\x:4H< @g'ة?\%Lvմ_\|I<y^Ius !eC0yW`y#y~r;НW rst1:?w>Kfk0inn1EdJOpLmn`|ܒS23In}㖜(Ͽ`\j 1B[#qbE3H9B`/|07mlLf *- .r~\ihk9˖>>.|B.}*||[8@3.>kHG[ 1X}d UP_TZ𑺨pF]ӯU>Ůs9 c ]\JJϚAKΞgYl0.pVۺІ Յ? Epa:w她:\%S.m߽C1Nh 'c>7l̳*yt˵YIüi m,ꂺ0j?~CN wûR A<NNrQ,Npýk81w\ [΢X/ {X5yF\ i\:}S.օj8w!ߺE=!P٤s]Zr &rg'O#0n?|h]ܻ}{nCx( ?81)'nC)!h/HwzCO?h~n A؉"0-ƻ_`sF?1NO] Ӝ'> Y~vCcuyo-2.1.0/data/pics/mziAlle.xpm.gz0000644000175000017500000000364212401656730014034 00000000000000kWL)h67HPo("T(rgvfv4%xBql7d3s#wqypy7s#c GÃӣ=a{+F`ؖ{xa䌐% 6\ 3 se@.҇ d9Zϡ̂,ĸOPeAL@VAL@d%rCi9"Yq776eT@l4Qڜma'-Ep :cbcJl;ɂ%i#`sZ"l[d8GңnTj%3C4G$[>5zVFn1yJ̕7?#i$lH r̭؍ugDkkMk7 uöi!m;|!ml$m~6e]=5|,{qdfsftsHh A-G j`e<Yn /co!xFB~n>C Gdϱև p[e](kzpvq!] Rp'Iw#Qc|x[z@?=eQ><>P?t"X~b;'ݳ,FE 90oXtoO:Rwq7.<7ߺ/)`߻ZRs;CIvWT&D'Cԟ1c |UAdzqyc ؔ=d|X#L+j%"Mg dO醉^Yd2$n8YHhį`yH~@ # ^@dTq665"-9q0 1 gfz%BV% d`!5xʗׄ?aON_KR=d^gl\g} 1{K Ca _q{UK5OOf֟#k9PjiAՐ-2Dc!%BFyJEj #R>)b`0"1"N2Jy !bg4VԘ`\ ~F6 .dTzmꁑ~fƝ[x)uk^uQ16w&J}g;pBn+{O4ޡ 'Q{;vLj>0ZCʈ쑴G'O&%֏zI)##F' (OcxB'DNS8;ʙB;S4/PtԳ#TdG9gfsf*6a6S#iyqMFԳ|O,D@3 l:M~3L<~盋S1³o0{7]Yԯ6߰ؼN^;5ƔBF4 LbLOb zq274-w&U?,:`I4#ӱݟ'~ sjBEb'43,.5B˹g9tՊ9ny,Ejs/>'}+85mˤoo335HJOvuwt]ckCiK#`Y&W.cuyo-2.1.0/data/pics/mdBoden02.xpm.gz0000644000175000017500000001020512412223240014126 00000000000000ZSȖ>LQsCݲEc˞< &DKUfv?lDVs9LΞ*}ŗtvAwZގs~}zĆ/LmIz&|gBCpτ&4G&ۣG ф>)&tmH'&& ~&zkCo޶E%qM{7 zO&-Ѳ0^ِ +̻&jn!CJp߄mumwnӄj-a*ꄬkP^KeDBEl-Q{2!ZJ#+b}%vۣ|zL(P,=AF`=ۣzZV~`@*QB3V+Oj' JMD}, o,zcW[]bC<5W +8ʞ͆W^"n뽳ajL?UQXT I=y]1xVTV]żFA *jW} FcW{ςWy9կU(z]U$yVÞA}&VZO+ӽۄ8덣;c;c;f;gi;շ7oޘby) 77HflE43ofBG0"ߎIg3/kU˼Euh9O#)O$RG\R Rj}XK;)"@/ [KyWZ[<^Xqйk$:F22:eHdcOZ^%!%KWEF7vT UlW?eb;nEAZkɥ8 e'sͯZBKΣ+ Mdy@",YbOЂ]J_hg> oc}x2/1@X v/hEqHnhs0Oձ#+Ay+%iE9wjp3|޾=>>8C:\̎`aW$!IVQbG"DƵ#+(ť6Sdi/ A njӌsD0K.ݡ1u4<9J~9JNj.0-ǜ'N JNťP'e3")T:$[0dJ   T(ο)8neY:zs<( bE0/yaƒQ8lB=jPWI#Cwq:E=!_0#TnX1U&%d\_R%!H4A04RN:q\OU~HKSB5̸H4q5'!%OGڗC `胓:\HGpi=7_"A aD n.8ЗΈ0ޤ R=AHHNyT/(Che1´w]wRp+-dqPsɕp*SCg#A ~`QF(J=u6)$6p"yY{!nb'2pC%.O'2b0 'wCPz*R5:k;t ~H3r'. YXK\e|F=Ki:،c껋 Nq8֓s,62eZ0u\}jk!#:I?$a_w3'gh!P/7s5T@vΜ8YSd˲IQhHPlدѳ0Vg4d=CϮӐomR,Blg]&€MgZ|ˀݡBnl}H ):1A~"S݄z?l:KI: S~f|S.]dn5|1U::3fitNtsHM.zYE¶_8eıS F\f( P<(1pNq4Kjvzi0- c,{=zuzB+ JPN)(c}E-W/2< CmE>AJ6tbV+|$0B4{=kIԛ^kϫ76nZ>]?N w\LPe11>P>aqk#}Zv{/b:aŚ3g^vWoVs{5x{vYmhQ `O.`^⃈Šԧ ]d]X; {ryl_f;Nk^ B,x e 6hGv s[ }Eɧ1A;H5x<;śvwߙ ۵fW'`|y_?}r;+[؀FV~Ï;;߽@F 3[oe@F|wjt%~[kl!?KV}NWXߩ#!_%~"{!~k %F}Ah4W_׼_EB+H]$#7^s+H3H/ߠ ,6}$u$0wNo s|OHȯ<%:T=okHo$<%!) _g~ =$O-$Hȿ !WI/3+o ,בHȿe|5$בp~_ ~ \7$W|k|k9.w8?M$r$H/_}NS?dj !+* \ =H? {_q}y[Hd@"M|w7Ծv[G"M:of3|w6~B""[Hd@"7~ߢ@ӣOHdo ZHd_G" fyR ~7[Hd?2`d7$\u $A'T!dE_%A"ME_0 _(zEm ’ OM*r/)FZ@\P$ d%#coꏑ=ӬjcelD֑~$tfQ1T^;7wZGӁ$8q耞[GrHzma7P.dkEwm͋A"o7>6ȃw`\m7oByw 鶅݁V${*QA^e5'Nnd/TFu` SOq?S?83WM c^aO?Ђ6ty ѶlNC ĴqX r,8sRO8X JШhyKc^>BUӖp]"Єؗ- >6 P_^/4EIj*܄[nKKxg6VUZO"3_PKR }}=BFWMUm!hQV-{=;]߿FɿYa#o 9o4mbYUFu'_.7Fš3o,|X9jQBXS.E _@+Oqs&DR>MF~Q#Y*%os! iףv+#j t1d1_:W +{j 1_(i E ~/T|Oq;|0o}w[%~!u8!>y#y> ?:Ry澶Yjʳ:RyDm<P4E i?Yۦ9872E+3Z@! #.*ĕ bǞ?U[rޘ|%Č7Qyc8ıe bxNzE_rǪi?]j-X "fC姯_c #X /TK?)JjzT)k.No x.>t/_6qot*>suwB(ĝ ߬SI_xI"peD >ȑQl:E8~AFxCXM7 HgX⥲d/칪J%WE[.h{[5^;]0ؖ=Ჸ*ވE<,em m!9&goŻȾ@_%{mDi> ?|J:ޏ*3|?JҺ9$>;EͿM Llց$ae]G2y2] nqzOz-Vu[H#-[J^I/-ֽ8H a~VaGb鎺bbw _&5FJ@'Ka00p`p8 0uvLdzA?0HLv駇駅&駇-&駅-&駇-&kbh~ -&駇A A l!9gA޹wLAZm#ᳪ;˄A49 Ӏ˽pbbav~ zS<0"LGm:V^,(f~ 륟ֹ`|Z֧X4Ca:0] iS-|Z&-}[Џ#}kIҟ zIODL/bPĐ=(bp8 08 &7V0V;awpaaP |ӑLt0!I.FQ%L182^( K'SC[EG(` GJ dZZW /sGuw*GW'eK<ԨIgT{Tq)B|$'pN'r2hfZuхԧrB{x:ڎiDU=X ςudj6;I M9&hK*TW慵0jg}&;csd!;ne uF=ܗ6c_LdHޓ6ii5Hw{=(8y&ᨨ'rtUc8UX GܢQg n>8U,ż 0]d ` `Rz0p`p8 08 ܽ0ԃXBtksId7q >i/m_7X]X٧0,p/Ihӽom?U}2>â=[hhLS?7U lf^,Ñx P݅xiXЖeށ.^@XTD즔sحe{ /Qd֖GYQ9u8+J4گZsQw5SX/bֶ@eة-ծ2\yGU)I?3?.eAE!>`B_pHy o¹".ն`Kp:Hv6/~Tİ &oRx /,Zv4 'y0S[2|׸ /A|p7+ a{<9~:1_DOha3->y;7n `8kNhNެ ή4a|gmzNw䄦 *P-A _ȲߦÐ/10mFO zow10cp?_ǵ,T;y[^AnGDDk3bK;Ӂ0<Jyp$/8 Qf8 zp p?mp8 08 0Prޡc弃 ӎA/& zػ)>bu ZM{fʋA3oӴbPM5{1Qcp0 zw1XZMNi5cu.8xvwa1& CXY?2cय़]qE_{MuzP5լۂmKVd0p\E{as j>XmVo3 oy/4e܇[0sZU>s:T)l/<u18Ȣ' OkC xsaƷ|_ޣA'p{gOoxd8y/ Wo`|o5t k|e>;Y_OCY>a_Z2/?&©1zsPfċ= 5ؤB_w:xh w-au˸q_k_?P/m@u[-/ o7}H0ZBچ+u k;}ǥpA_s>Z' G0:* oa }\ 6<[!xe;Y6ୁm-5K0/_茌1_Wn7O2&'4[NhmC_x+.E0p`p8 08 ܽ0ԃXBV*/d/D}?&!:/SǐCO'oI0)kiwɪSM cФY^F Ǵ.pjeMc鹥,~T9ث?`It|މj /l14I?!'2U{4^}4/l M>YjQf '4;w0;/m:cA/Nh"nPc3-Q=-є-Q'4NdO&'4[q M= ΋{rQT|N h sB33mfQcI0(ӀH"yp$/8 Qf8 zp p?mp8 08 0Prޡc弃 ӎ-ODdau SɸbA;`B^O1Qc~˓]ˆA-Ov/ T-4 mRnntxRQ)G[r{q4_΋"8a h^9Z`>v&)4gNⓡ+ZUr§wO\\/ w(FQzÊ: ?j:o/c}Rg9S9ʀ /^b +(KE1ܝ!QAI;ˇe o\Px/լ ┷[, 9*|ox(6w0fUX,:?PbR ^nȊѼU5-QLhX|XVr9u;ܦ>_VnkUa:÷|} ?Avr9qOw#ۀ!xr.e%B:RS>.+ZKj}i:\Tk )ʅ_mD4~Cm28>>"[CNn!F]Qeƍ5nl1xnitYR\G%Hn_z}3/- н) 9N0 âlm p2k}[s!>?9֠bЂ1ph~)6Tn}!2߂o!H7,1cQY/3K0n1|VKj3[I1˰8HpBl%M Y΋j#JKbF26V`Kr-xʹ/^S+]Bj*A:{)%S sow7!)M7!$İWa?}Lۯ=xq{{=<=VˎgqV[Y#>kg ?ƭuYg_^ۣVtnR>O*ˈ>O2t<>^1P|g|L}ߵf޲oq7kk1xmwѯ({aK|%>|K|} C-Q?D߂􇑑xE^,*$ ܣ?V"D: +[:b71j.@?pG!!W%, uxnϻݓ ݝu{( Cng:Q}5_`Y>,BX~`~&H˰uF qg@,Dm֏P/7 !>Skrf= >T9MlRQ;@M,ʹAA"(c C|t X}`- vVaFѤWb"vG۞) <Ћ*LD[3)Y,=s'F` BXS!;  2*+Ώ6~I+a;9G+WKw{Uef#!0z 6M#b$(P@8ilXIdWr䶯{VV96ĦGP'L[ioDl뚝U 9b ML2#8DW)7N}ԓn<0GH3LUI,(o .8bٵMX+֗Q;b~0;-BaJis A`؃ϚӉًdՃ#^,p9J {|un'wk}2xrAcG?8^h%/fis}0e^Ln!ǃQD'CylۍcݮOnH2A_9d^> ;+nO;Ƶ~_ ][ićxXC<,!|'C_l$:]ov.`݀W{:.Н\a 8{N+k_ {^,8CT=…zimiPa C{[a3ZJ ݀~H^gnw5vѨk[u ׇ*т^X@iKA'eD+ZH>Y`5(> S7l28Pk'b>x}g-Ǫb)NdƁVx: #x'ӥFB\l ZQm*co<>YpnrCJߌ`waؾ@ f'0UX?g. ::ǰԜvSH(+B0u6ムǙZ-36ihm͞sH^mM+&-id$`L,>5#9i̴O^YEݽ0b>GFwȷPav`Jsqf - xyCM*AaQՇ{ZG,[a\Cps&fH[^u CV=GF%fb4M"IJדģ?azZ{'VF+=tϳ6pGZYmyd3؃ژ|X;m6yƠ_ +?<{$ ^ E>ua|Pv~ox!vBۯwݼ wQmu!K|%>aćxX?OxSzl-ԓ6µZobYm;mCuP>1?? ,9,,Eh^|~!]p fj/ƚҤA8o*Y:'@-^Rr| Vq[(r>dc/8WY:oX[ \\>9Z4Ly^ nf=M^FFBWa( {A@A ൑>nFfhXM-/ hh3>tuNtۀi{mX)nj*p&Բ5q\B.9cL5܀0C1t3ܳ, ƹ/su3>u5 Qe_(;0]Fg+ȩ+F`ѿ փ{7`πۈb@$|>`4E}sB$O(k\{CL?o EĠ80'+^,v̽xGɪ_hm(6l>~6y͂XfOmuNawsEwBOvtMz9I灬]WTw7cNmL2fWksFCm׳YݶA+lԮ%li}aD=C&i9yˊrݜv:\(i}:Xg*Lf0ZnrYU!JlRo7nS 5yU|˿ӻ`'$9 E5@Oyqέr3۹o冄`}.7QEr\QYqzG,Q\a$UFq\)/!vإ ?m$Gq5q@ƣH=#GaDj QJk' XVa^st|ZBszzAK6Onwv]5#vDgu֬qA'C<,!K|%>aD=R٬UW'ͤ^WA໯/]?d;߽n6JlW6ٗAIt0\`?A4Xohs"?s*Os2xkC/.熀 rK-7%bSnǭݞ82Gd#raćxXC<,'C<|Z:R-/m̍ힿl \ ?s!=sCD-gqign87f#Ϫt92L3#Ϥi!l9b3ޟxaD A lV<&^[.{9X A_HwoaćxXC<,!O}! Oxߙ&j5 ~>U>*F1t>zGgA& ZtxH8B|wk 1]|Z \a] 1pbQ*p тi#{?QMjEBCiZ%$Lҗ6[?ӑ|̄Jj-ޱ9E_ Jki࿠,Y-P| 9H0l hӲ`"i0 7i_ AWTJho}n@,(zOb`pCzζ.x9]6hk5uWy7ZX ܘ%R!H|Sk(@˷]b 9\tNIvyo 3C8qZԄitw{ƾViCʕԈp)Un.dᤥX-&!Fì6N7ѩ<{x jR_ۻ}{,hudfjLvZLiw:q+QQv 2 j~Zja̓gF!c'cKْ'-Q{4umO5HguousaxrM&:6msb0?Lb23EKp(>~6.R&)uP.?]I<3F4>*`vZ-" $>y y+ RfrG1OT6l 9A|̓dqc lɭ ebF=@BnMQd!Q^h4 2t/ejDk3т#@YPG?XgA?an6Ⱥ5[+ͫwƶ}icR\Szfmʹ2=>u0hx>,C]O!f 񊪯mܔy,:pOK< m}7} kPQPQPQPQPQPQPQjkP@y67wA6޼>y'u.z;:/ 7=xr'wz4^zIϟ7Zwxuxuxuu_4s{^EyxQWh\!,aajEnWi>΢B,+Hgbz`!b$|V7Q6b!6Le8Wnj۩_"{N1rbphx`ǭ{{Pv^{-=Jߍ߇ˣYg_]\pmlpw3OggUuuuE|"&cuyo-2.1.0/data/pics/manGesichter3.xpm.gz0000644000175000017500000000714411646353245015141 00000000000000\{6B0;_pkm I[eK.s쯎Lk>'#KdaIǪP7_:!NwB~joxq4q-BCT`9e ,(|F ZYHh2'dlWXȱJ+'XdgAV @>!xF!(@AX$PP,(J זl#,#œyBDrd T9U"I!e)PI$+@geY#Pyh5E0 () 4U< sxJ əWV}I [3nU&P5deEkdh*|C#$ɹG /'PpT$wWMr}6$wIY8 m($(pX'xۙN (rt94H}aӉ!Ź`REP Ɓ|K F$PP<@S@x #d WRVĿK,(@E uPr(P:DHe9 ٳqpgII;ܤwggy#<2xLSn"t2֚g`=ٽs|jE>Ԟ핯#̾u_$,.:}Y"=I*#Hf 8&hU J.8͵̃wO{奾w>B{trGԊggZdrs,%i)ٵzh?hgfۜy7KMۍeA* 9C!s=9x۳0{g$qMQdn=#,u۪Q n#N1(sO>Z*G)xֺP(N)+Cc2;Mp-z]w0efcug1rai73 C #3j7-orN2, ?? QC?xPG+ß@N?XBPв լGBGa.d?cm2lܿz!9;_0^%F=o|oZjQ?["G˳zQ58x2EѢa4Ei㷣0Tq()*Z7(Y^,څ3̟[>&j?Y!0A-(r?PUmDrl)+P#B쬚f2k,Z).Ahá5J_À)0F83zXY}2s92jngh5NOP\xQJe#qFӱE%Z[,mr(g܄ib@HT0qx\].q2d<\X7rɤ0d0Wφ#YC!s9 8V!wڋqp7^wŵ j0BrdeCf8,4pjb GmF2)j|SU4klFvHhX@--u27Z[KZ1fn&㤑tTBOBTJnλ)'A lP9n5]1p}Rƾ$j9(5T TKn[X[dPfD067)K>?o\&'6λ)'s3ER.ώϳC^bRvOܜwSNC\Vem>Zq-67?&'n[Ys;+꺏q:;Nw E UBE=+?nah ]Su}S.oPԌe\)wotbJ˯VdWe]#e5?^Y0Q3󋮗Pw>Wu\Wun¶ 3j43!֗7b'fgu1 6Ϛ G]M䎺ƬYKs AmBE\bؒoR&99/y=)Um6Tq|\̭2~ fOZTCy>gwqV%6{TKYŒeJ4-YV`U-e([(#ۈ9foH;=|Txڋ:ní`ʹoԫomr9CC/2'11rLe Y$zB4~R`b,)7`뱷KȲ rvb܆ul0:<-}DB^wZv:6ZD*#Dߟe;b|{'bgD߿/ga=/a=1: Nqr}jaB >/JPY?99,Vd9-:J\<۱NI۲p*!Ķp_X0_zj T fmB@ VbiNUUdWYs* {p c e;Z չ-Ao"s9|73>hcuyo-2.1.0/data/pics/bxKlotz96.xpm.gz0000644000175000017500000000433410361553650014252 00000000000000b=bxKlotz96.xpmkSH+(/P2G e/l}O'!3${Ud[8ws`O7w+y8K0fF÷1=uFGON7EWdrafŒ8@XA*-JX^DWL`)8p8KxNrv8U..\XAX R ˯ m{uLAxC'A:*/hXfHS΃<nGr$4Rkq dhY -X*: KU RE+e9Y4,eUrH6tثK@ ǁ_ ۪XA˪Q8!23p@S$K0/^1*'m^$-[Ѝ1ɳ` yVEAP=Wp Ϸ^]HT9]=@S?BSwȶsRrMChJd"_ayH[ >i p%sG!%.Gj乫qTR8wFKT7 ](1l)<)*V99;*OZc鴼",`ٖ=i`QʈQ 4'W5{ @!߉,ѫ_Bxo6Q$>'cDBɫMl:J#D c&7CǢv"o3'['6s5wv``B47η "ٹ\D` KPV*7gggڮwza0 yažC+a> 4&ћasw)U٬d2㘵ǔV2H6=دGL8c)T)# c|Ec\zjn&0H\(OlDj4g^I=Շux=s5؈ԫml1_?2S5X;NqKI 8<@%4sr}qv+u %*F4b)F^ \ ctӦ0I|_b\R>L }6YX1Ѝ qSX񚩖]fƀѣ1^B WFr<{..,|LF7ળ.!ϤG,Y`"џk: zs}=QkP#(VB1**`0Z(=b$5 /qR8NR%W2t'G"}f.k7x+!FfRwW;f)q6Ec#iE& ><Ć|,2>w<r  p/yF ߀6+7W>$|o$W>~ZW_ׇ6N@2Y`7L+Nj1ωBΔMUxL1oDoZ-2ACٽ,9%W6aٕ=pFKV1  " ߓ<|Ae^_'LϏGdYs*HJ9XNC W2 AlrCωLw}K Ai>GgLS燗BZf )1Jӄ#G uFqF֊a?ɛU$e0[777$wڥ7(p_.(ܠpw7(p5ܯ }_4)@U:Fag>ӛ8Nv(P\oVP8C<9Bat1C8  ϫ(Lkgp^UACxE@- /P8[ j~ "Q.SkGmO3AYr>Cܯvkv0>3 z2 U^˪)|%4agM%|e+y n\U :>#6&:Fmd36#1ra76jEi`d(Q 8ۨQ A Ԋ`P*"cBʋ|RO.BmdDpBG!L F 6pB]F3*z}b[TnTF0}pu52RjTB65"FB(@)Xhh"* GP*XhaD ́&1Q#51qҎBɟJx`WB0g\ѠLH{W$BKQdB_oq•v5#o#U$BZT(OM T*X)ٻJ) cA)Qa.(ߝ+EdiC)h1Ԃv/WdB0ؓaBtzoxxa~tk hfF!KzbAj})1uX kM J@Ddb538SBa <QeSBL !F!f-R33R =5TBwQa$U(D!kQ#6 ^ BNم!B ^0 @J8h(DA0XT0#Ka}<,Q-;48z#³)k܍BbW[ 4bzP(p'kEWfyX$egl%< ӛ0arN(,Fe*5: e+O!Ÿ+ӽ-!+}CpV cQ 1#wB{!l;HOXC^4SVrֵsw􎏎xY. cuyo-2.1.0/data/pics/mfaPigs.xpm0000644000175000017500000002307412410527301013376 00000000000000/* XPM */ static char * mfaPigs_xpm[] = { "96 96 9 1", " c None", ". c #45283C", "+ c #323C39", "@ c #524B24", "# c #222034", "$ c #76428A", "% c #D77BBA", "& c #D95763", "* c #000000", " .+++@+..##.++@@. ", " .............+++ ", " ##...+++++...... ", " ...+++@@@+++.... ", " $......++.....### ", " ................. ", "$$$ $$$$$$$$ $$$$$$$$ +@@@+++..++++@@+. $$$$$$$$ ", "...$$ $$$$........$$$$$$$........$$ $+++..........++++ $$$$........$$$ ", "+....$$$.....................++++....$$.................. $...............$$ ", "+++........##.+@+++..####.++++@@+++........##.+@+++..###.$ ....##.+@+++......$ ", "....####......................++....####.................. .................... ", ".........+@@@++....@@+++.................+@@@++....@@+++.. ...+@@@++....@@+++.. ", "#.++++..++++.....+++.....++@+..##.++++..++++.....+++.....+ ..++++.....+++.....+ ", ".............##......##.....++...............##......##... .......##......##... ", "..++++....+++....++@..............++++....+++....++@..... ...+++....++@..... ", "++@@+..++..........+@++.+++....+++@@+..++..........+@++.. ++..........+@++.. ", ".............++..............................++.......... ......++.......... ", "......###.++@@+++..+++...#####........##..++@@+++..+++... ....++@@+++..+++... ", ".++@@+...........................++@@+...................$ ...................$ ", "....+++.+++.###....####....++++.....+++.+++.###....####... ..+++.###....####... ", "++.............+++......++++@@++++.............+++......++ .........+++......++ ", "......###...++++@@+++.........++......###...++++@@+++.... ###...++++@@+++.... ", ".+@@++..........+++..............+@@++..........+++...... ..........+++.... ", "..++....++@++........###.....###..++....++@++........###. ..++@++.......... ", "...............###.............................###...... ........###.... ", " ...............++++............................++++ ... ...... ", " +++@@......++++........+++......+++@@......++++.. ", " ..+++++............+++@@@@@++.....+++++......... ", " .......................++++.....................$ ", " ###.+++@@+++..###...............###.+++@@+++..### ", " ......+++...............###...........+++....... ", " ................................................ ", " .+++@+..##.++@@....++............+++@+..##.++@@. ", " .............+++....+++@@@+..................+++ ", " ##...+++++.......##.....+++++...##...+++++...... ", " ...+++@@@+++.......................+++@@@+++.... ", " ......++.....###....++................++.....###$ ", " $..................++@@++..###....................$ ", " +@@@+++..++++@@+................+@@@+++..++++@@+....$$$$ ", " +++..........++++...............+++..........+++........ ", " $.....................++++............................+++ ", " ....##.+@+++..####.++++@@+++........##.+@+++..####.++++@@ ", " ........................++....####......................++ ### ", " ...+@@@++....@@+++.................+@@@++....@@+++........ ##%%%# ", " ..++++.....+++.....++@+..##.++++..++++.....+++.....++@+..# ##%%$$$%# ", " .......##......##.....++...............##......##.....++.. ####%%%$$$%%%# ", " ...+++....++@..............++++....+++....++@............ #&&%&&%$$%%%%%# ", " ++..........+@++.+++....+++@@+..++..........+@++.+++....+ #%%%&%%%%&#&%# ", " ......++..............................++................. #%%*%%$%&###&%# ", " ....++@@+++..+++...#####........###.++@@+++..+++...#####.. #%%%%$%## #&%# ", " ...........................++@@+.......................... #&&%#&%# ## ", " ..+++.###....####....++++.....+++.+++.###....####....++++. ####&%# ", " .........+++......++++@@++++.............+++......++++@@++ ## ", " ###...++++@@+++.........++......###...++++@@+++.........++ ", " ..........+++..............+@@++..........+++............. ", " ..++@++........###.....###..++....++@++........###.....### ", " ........###.............................###.............. ", " .............++++. ....... ............. ", " +++@@......++++.. ", " ..+++++......... ", " ................$ ", " ###.+++@@+++..### ", " ......+++....... ", " ................ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ##%%%# ", " ##%%$$$%# ", " ####%%%$$$%%%# ", " #&&%&&%$$%%%%%# ", " #%%%&%%%%&#&%# ", " #%%*%%$%&## &% ", " #%%%%$%## ", " #&&%#&% ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mtRoof2.xpm.gz0000644000175000017500000000310112401656726013762 00000000000000kWJ+Z/d&VOq 7c+2 Yr/>$חc۱ějŖcAcBXEcX5k$gys/.bBsT>Ed4K U@L#:?mV0:VQFk&#L\A43D ^3_)p$`2\ @$qD }!5D PG!Id!pB DDGܠae =A<6H q9@7rsF^_@ D|llb)&5"k7óh󂅇 )tn# Alh jc J)Yi8!; ,{\'Zx? $GG,u -M5E,% K$`1 t nCVB UD@&4>#0mei9"h+Ax7݈{w#nޟ {|h󫟾꿫IRtE_zW~8eKRɨiѱxD}uzfr1ih֘; y/=hVOtX[-%LɀT'ɑK{A%O7n/> x}~J9R`~Dso~8fYC -'ڡ8Mn&1jn~q}I}VGw~AH *%x'eW=KܼnX7ԇIͺJﲑBq@G7ԮJ[j*S؝zwP(xwͲ ng#>7oc{XtB݄b$;iW|"YiuV膸k0oƣJI&]MG`^o72Q=ri]+b! DdJOoc)=t _nKEm2]'􋾧|oo}s7~'?oowoo~o¯w߰ooOmG >q}C|wț68L~ cH!FuMw_ywǞ]{)LqSu Vb~m,ٳ,'Asso^kWߎEm4-']2vյzpxEj~׹&8 e+_w!qpXgQpYC4Z H"( rMb Xa]pћ,~ݗ:zs[ybt4. DRIN 2Fse<#"}b2 Jx  Łoҵ?\p?^G~$3Tu"1hԅH8 $L  vLq tB.NQ*K q=<t=u<>w Do(<Ѐ5 pHH Ӣ2EN vi^@!ƨmګ_B$t;&eb{GdP<.&*#HMwTK &`|ؿHwM_ܻ4Y˛5T.7yBp[@b$I@~p'==DpU:NZQ8 )0&T03b6#9r[d-"Ǩu( YIkRa$moEZF~UOiP22u]Wת#4FMe&L79;j'A6j;dBmT-} _wgqLO NsMҫ@^}O 168=O/7\0i=+3ٽ<[0^pB)ɲZK]u/Z[WKċ;+\x?fruF)8|킈K.Y70mZOk_'=+r]r0{uE'uI;%_}? ã&sCiU hw8J "h5k4(:JHz'~rW\] qVB'NhA@+B LG4!W_wG6OOsC~{|-h1IYep`j >ism*D% 'WY+$1_  C+$ obORVk$7#`@4C ~^aȁ`RIe*ֶ!Ir/w$2t~@4gob(Vѥy V/+X QT^5Q;.t6 9<;M7H[ҨC4b2a<7C4eT0n33D3mePTatCoԦ0g6V̪6F7.G_GlzH1P: Ϥ(6<MMo!svR*ļOtlJW["l.5尉ޚUq,jΦks/横TPL+fɹ2 LOcwCh4ިԮ8]d݈v?'0gU=YMH+@W2 rb'gv~ $ GXG*e@fLq:܈ajGͿ nJ(Ugx% G93,h"q';3qU62IHJG<\PEQ mzeVY9\Wex2و ?u醳C ̐%Db|nB+n2TWcW(mU69@Z;AW?"@B meQfV^^fx$BZ߹v1%_vFg>sKy, ?Qɕ Hd[HMWAiiY.ͲK0ՠ*`e5aF m6w ?|`8B9dN$n Hߑ'HP7A0 ٱrDZ 4S$V0 bfy0WXṘ/1#3l;am0M0@zc!RR>C1ʋxs@ !sP(dzF~ݙRBbhMD/To$LN'^=۴ ,g1%aT6+3D82f7ҏ%B~DTJ/\Z9 7?J!.L!ĘIy""3@?:ipng#33+3Aw62gW܁B6#/$̶V!O)pWmrvdfBcb ʳ#>;FatQ8M0Y 83k"S0hLC_}6Ha:CA6jX-=@ '_cIOMewlJ?k3ݗb11D>65=Fn#1LUQb!V|mJi8зf[Uhg޹aP,|A\rW+vnƲ|?P^9n)'&k#[ʥ|߬ TD>dI\0ȔZ>5}`2XJPQ{ X{2B7n׸;P<}kYh b07Ql},maB+.w1z3 9Ό*( Ļ!];U4zWDc? MC z G ksrYss51΍*h.M־ KCsr+\bH~HK#db™!9vZM#ۊG5 ƖBp4:d:ATY6HjisTlO31g瀧 = $KpL9H~3>C>e8C%^i â.-u$Xke7&.͡di:Ǥ'ND$}UґV5X/$s|/>6G;rz8, ˤvhim_n5C( Q3Zw6b>-s?:4iCS"eGřک́$_2N Ht4fW%qr!$ׯբ;ᔝfnX8!->G?ΰGa| >[~³=mrS3NF:'os@w;pa4Ge~gjKHr4kַ3THGrKy,\u5VaO+y{OVE ͤ#т4{11W[36 n>N{lm%e8cxȎ{xl&[ْ7k!44eh7-prPTVRQ{@]Nrl;rCx7m9ԄvBMx$k_e6 !Q2 <&XÏs6NA;2#b{J$,yw1xZMԼ!{s3{gZ0K6 "R͹:VK[U=n}j=AhVl} =֥p-BK\5=օw2flHî.6[:E5^*|E ȷ۳E6[d V%8Fbd7O,}ʖ̺R/fxVvMN mÎWC80&lola(8Q9JБC]P.~aXz6C/R2a9|UangJZ~X[Vl_Ȑ{^U1ee]0|C<7R ~UlĶ:ae=O\c8krM:GW”u^zju0I3R "û/a=uuI!,;4l NPDȊ:R5j^1*B=24Xa~CYv<NO`_ӚQQ C`9N!cX-օl=>aaG97 æt / %73TWFՎ!J'Ӕt Jc 9 [af@cXD+rC`~#fuuW148PQdE6F^6V^yݝ,Zm_-{(YV `x335a"w QS׮>OD BTr`p0~t-r]d< zxPyDwcxKAe)5M^dz]鶹UӧbsY&ibdZd~v Wb( 1đFq<3- |.z^f&qnXf 9ưo8bz׮q4OyR YXbSJn*RQԽ+uǐσy:q\kPnH N4^2C)uc;((kK>_{7f(ialȋ\bxqs\ ;j$ԺB58wXBPdJ'-Z [`NU2®[@!F(|!oQ!!n:-عЙ_$F l"M<á4uIő(6#SFÔ+w bXûQĐ1vCS+=/f š=E}>`y > Vԡ48g($7Lmf?oT8 gJtel@ǐ/ za4b ɔ3 $ɹ,NT{a]n򉌮k8s 4 rWi1M(dCǝQ6# L1ؒm&hq|t,jX(άÚ#%mCp1)1)t4yu6O5Sxfx8Gb Aqce8P5EiZcZP@CLb# gD!)Q\lN5[ q;ދUU^N^ #;h{ze8 1p+K:1MkK,|O"a%e4o{|fAO3>gqd;C3\B^YNžE"v-0ʈńWO 'ML  )$I_4] #We8c 3*},J3QG&rF^&@2 Lx7m2"5(nƑa4(Cf]smNaHָ2m BbP. o8$ )KaW_Q-`Od,h7X v U7#6/YCwM` QGA B.8h0DMqaPyߒ8I.vWU#$i(IݼpN ?,ЏMfdhm#0lETY:jxQ0āpY1 h8mm-EI>\2!! eBE.` ӹ2!h0=E@s4}ԏ3êx94×[ߗ Go3R 2{LCҧ . gP=4ɂaNbC@ Y7m=ku9LP6L.1T>!q<VdxmM K9u ѡcfj4@Qsg`PLѤ z$*1M'8 3haڭЋVlJQLB 1XN rBerHNC>Pe04d+Σ!٣3(4͒v@4R;ěͬGՕqE3BɂSEH1ψg\V34N}t|CB>|h^;gA"Ӹ-Nc pa?B(`tI[rړL{!:@L`n2yZȰM^e(9/t5{ R6N:3.]EӽAb` <ӾסRR]̦4ZCDXA4mBee8ju_eX yCBhŘmhol6 &NN>?\µ^k>vcyUXw׎In3`(x`e1mʼT MÞw2t,rw72օtX6 ~xBۅ A6c؟ޑ5 Ƣ(b(1\!so6kXW4.62 ݵ}-|b)d(5X|be; *VYәi"҅[d ũW#s7pZQD%`ȰiCwq rbbP K.iz\kʆeUFf1 TA3[ :=XVIGߌ*횾gWO=|`3B*xm/~ԛ%0ڇ*려u5%H}jBR 2up'uD˶Ub8jv "[؄VL5xVEPRcefg[h`~fy]\rN^Mtqn$DNo8j=7zS B7y[uZfTw'u @U;H e uܮ9a'Ja]3[BؾWv CKe\Zpji%9{J_) M`*O|,2$)o2]bUte{ qz?~9]Ö%&{R PLjTY7,v/8<%==l"0]ZPCn^=wdQ^(f^;y(V|iWf9Æ8*DZz@R rSy2dEb\oRɛm']:9DASuØr̆aVʑ7[XX NyQn0sed&ƌU,L,CKy>*5o9 xȡ'v pnBlc  /QYȰ|,ʲvO+?k֡qǢpNte0z Tw'_ͱ9h y۔}f.eḽ w^~hJcNtǑ!<1xhxe>t'3:5͑ՅQa)3l451Ț}2O2{-@S7ia[c30Ak}Ϲ`υo2ң]+e\J_vu3*RZ5qݴE)i!*P![BC#!p@. ʜXZ`9yx֊̍K i/y~"do PSH\xH"t6JKAγ*=J;vv}ո-o3J=_+};s K va~_Gx9ez&A_ CPr<ƨ0LZTE:Jx5_!14`Y 6G(9%0d6e0Q~:04R:"*2BbCΐ|?Tnh#k0!jƎJۺ_%k a+Aq[*\SH8%f\ fKciǡ7㱐ij5rp`;^:j 5ׯ3LX9M#,K16\pRq쀣b,"JaefL †+~#xg;̧ʡ_"juC<4rړ.u]1YƘ-mbaM[#Ɛz"I\`4 򬰠|%vHφo$0̋PV\Oj4Y&kĐ7l쵺<6L(Έf 5ƌLcgamCf N ld96hA htA UUun@i5 g5g8[:' :u`H3֦as)hT`VQ-IgElPWlHe6 Mɹ/8EYuTFin(aa5%2 : 54F>b[r[n毶qT'4%ޞvbqh.˼(`'hB7"o@jaO͑*Y>"EF #:0QlFǵmL&w;<|hBb pa"ULCXe.O4n>Na`Pʩ7΢bSm0r *-pB Qz?ݤ'Yf<`FJh# ٞ\,rYkdag~U/(FЃѮmx20,v*K_6Ç DFXDrHQK4 ɜ s*Y4qY-@Cޣ{s.BbXcwnJF pV!F84J3oqTOjLԃ+b/2̡i'ЀXq?qSqޙ~ bRpM1u̞s3AdæQL:o|.*6ohbc*"Bܰm_ 'mx gEİu0w ؞//þ$9**pǔ^V7A:0ݤø'Bh@CLPTwʤjAj>+}s76UinO ̔a˽CPf$4!.ñ,X?q}ߑEabX b"dRpwG<y|p-P+Ê*8Euˌ -c 111\Mc.3A\oӲ,s,%ia2fV`*o`!1, .a64HiI$gX4]ġ Zn`֋͢&ڤ20☌D06*pQ9$'1A,KC^絤T͆ xL"=:a#*Ug!ðt洲T8C @km[ʙ(0hy;.sL&eAXz6,uHT`aI)8t<@ܼ~2lJ!0\v˯eh)CFS1( lkff|x,oB)`aѫyn\nRxx 05r܅p,CϤ~i? шaq<C87B Q|%`@c=:N,eҙfxک Y+$!Z c؄ƃ8b?Ni İoM3*yM -hM|4쓜a.ctx9l1l[SʰzdTYϐZ{VI0ܪ KKfD0gȐ i:r ; _1lz Q+:܈!F=-gxeXp6 9#`ȹ]lzFy Ɩ^ CV=mk=lO\ Qf(.RO\d` 3RGo{$kͲV w.$.6O\[/rS{TqW_uL4m_45}jlP{ 3z(Ŋ>}w3X^ f7/y-)kJf0ʌ %bv `uh{YR==0ȐΩ$Fi5*B7o 'DQcfi08ƏEYYOD/u_g<(v* <ϿPW#r_NwLFDrgx 뒶+OnlT0h!m.?>e35Ɵd~'-LTy{4af>h* TXOdlK kǷGJ3R670e&wA߉%d6x97su*T|"_bI@A͸{>,hO#]vʒςMBMf7s+o(*B1\ǐ2='..61L"+,Me±`{n eEn[p6x3@&@5JqvHv׬7IԬ E81w=<>SDwadOh;Eq+k[ +=y|u|y |UFEvq^m rvx@޳{4yW] 킭c) >,&_?l](;6XHc5RȣmWuz["vAĖheN"׌y\& .֔4n2!e?"CȈrT36gt}. #{[L 29¼v9NRWk40 *VHmS(m!"sF(^hh}X.Ֆ>E4 Wy/eMd&0mDeauvYJ"23rަqS|;Lӈ}v$g"N:\N7*m-ڄ]$ >fOaؖhj:\!?~ic>+S0)hl(r兵iRפqqڵ;n"VanpnbV#s=d͠`ޠ(VzlVVUAJTj|nSp& bF̑gbM s/H N4jG/TBʢݭmmڦєt&*Y 5^'d?NM{6*|DPqRv E!fѴ=ǥX29>7r y2 p$ .bS0#OuyuxGF%JN-ԽQV& )KcqV[IsjZ8,Қ'7ȐnPKqE ,U3Q7lo-r]E*Ib&_\X͇4:^ha3*:i3w!+-ѕ|̐g$m۔~B MY DiYN88ŚX,ʡ##.͂x Oaأwah `n%$tMYtx;BA'k rif ![ [6ٹ2ZhG %IjV.@3+Igy&\2Ux yoCnMqh@ۊ'4 Z aVjP|a&*M ߨYIsa9# }͊-u9.@ 604GM%lp%oR 43X 5C 5mt%A$a<,cz]-3xp@541?Mԩ<O]0R#Q a~(̑Fy JyٻN# Z5 BITpnC߷ Î/8}jqx(L%`EKPcS.3T v*{?ÕK C?"}Hƹǡaѱ(0*rm.&i^m{ݞ} mV"!ν9;vJ=RXlz0c{Zx*ޯ =.«N~ =9\2;#; m=Eu ai 9QBdBx1KTӬM!ڔà.w;Y:^A C=BؒBTpJ!Ce(-ZC􉛡D+bE̗V^dX"Cǿ)#R/3dk=ʔ?d6B=Ќ vrlX@wA1\.ũA6C28f6s:P=8Pq{gr͎60D9E?Tl ލ&L8%1T vVZ'E*30]j:QհȁʏA ;tB5Y6j)Nx؇Cxu6}*TUaXDdjށ1,d7\C;)a{fֹy3̃6-vͺ 9VY)^qY~NEeaS0\؃wͦTcOQV[ð0d+ՎܛRLIC}H_{r8xfSaװ3nÞ.ah,&{{r&ӡx7%-(Qa!խaU2Tӫ 69mA2 ~BE):ѤM;Ga(UTܲ7jоCqI),=a9F?!njU ,C miPf~Neh<`}u % Aŭr8:D~>j܆罺 E=4zX'6ie_иvDTe9Qss(sFʶPNf#u6 Z8.k 8HZ̦%Wϝ]n尝݌ s˺u\y[%燔7@"u=İ C~]2eZ}7{htJ;@]U yxdq jg8 fSJ/Qi s_ ғwaexwÆ3:`m. S,3:;9X^VZ:EP Do^ލ>vW&)%'\ /&^D`/w=rvvC\{̷0ǘݭ4 CջqCZҚHE?p2tj7 [DC5*C.wl*bYlv=D]CKkwa^oS%⢁&+ oDB0F0ڕujL P3f v Υgا>Hz| atS~Cq^{]9Cp0 -gO]arxaÎ%Vۣ|}AlJ!HʾapN ȰO;_T%We8 D6weQ![{R%଒1ՙlTk!Ot 3C {U+v9T ӹKcdć7^i^un2 rW z+óp'EҗCNUQ\7j{)uҀ.' m qUt2oSban̜޼|:lǥc8pk6uae☏OW јe3o> sJ'3MJimMkYق6vq=%%1!ΆqK=rΙMQiJ0\eLYڠ9}kݬiC˽c4H \yG ]w!ʜ/vS-CLy8iJMO! {Y;܈P 998i 5G+s#yWؖ bUbDW2̐BJ. b!lu 'Z('1H;MSf^ap^)FI 6%|BS!=']f}v2y\3wݜʫe-ÁtgߘW8kDa_b7g 20.Jr 61 Infxf (IY0چL C[!jVd9< rpǎMM DZ RJͦPNd=8㾖]!1|F/WvI a%t[RK [6I|nS: M- 6Do]fJon`ع3c831{vR0SIRJ] M1Bj0 urSfF;EKrx\Yy|r$w1 ʰ_˔) #T- bݶEƁY!숞}jB j!v+BXǗ~a*5F u Z D !c9avyO?|zĖ0Lðwxa_/3 QDᛕЃxRG;_yΦA(vև)}6@4޻C$Qk{uSZ&]?H6E׆:&:ؒmv ʰ;0~F`-ǡk3Y5K+7 0526 I=C^!t7G)vDzhٗv}}Mp@ "×ɐM90#W(Y6zצlΫ5vE^=/Q> 2/]2,pQ / æ ZgI;G _ AlV!# 6 Kw#g%n> a9+EX%a̸2g"'n+ރ/Y'f:AfA\4 M68âN u2e_wi JmJrxƧp_ Uܭ1-[n90,4a"ٗ`x(p&õ_`bazaQDa8G FC_{,ݭ i/3]fvS,skC ~o@ 52)xYeCH 8i* 3_P?s\PMf7zm _9H$9L"T[J} t貦U.[h\aV)AB 2laJq1N v_Y ^*9|spD '#Joc輑ƪt^tn2ZPb)3ٔ 8t3p80c 5vFj^_p!N^ׁ!u![K޽:M- x{Wzx~&БR6}a,W=uew 7é`egɳ.S 42T3r{cx{̧@`rf MC+u AN{Yu KR0;;ꂨ7+ޢTI0l(]!Ha?Gj3 mt /֤\CH"I4$\f3o 5QBߍ&gbnCO{bh2d%?$ j1I}9wwwg#/VeYo'0=/ttƄ7I҃rhBp(bܒd}_0PQ$v[xf%>5Rgl ^"a}BY鷸U4׷ћᆬ3ͷ~}~?T 51>Zbb!%N=Ȅ4FKï9Vbv>=AMǿ\< i&ʅ3|)&;-#'?I_8CaHv~FCgMwA&pVVȖOC6$l #~݁ tBO+|ϻ\ͱ!\[0B4i:#_gxb3M 8|p 3X2uCpL?`_ݍK /D֝K$&7xV5>lx7c32cE»_Le8P6?EsZy[]P+ogxSb֘ Ǥ-OgEH]Y3a̮K>}hoi ȗ7mM\Rb}u֚kUof*܁bUѳ@mϳseb)1DHn4m5o堫%"te|M\p8Q2M2Nѳ\cx|9c 3n-5gѵQoS,BKoc8BskD 2AΈmݜ}̲tf a^ч Lt>ww΢oFo8EQRqd{sn\MÄѩR40u5ϫ̰.Kx#vblk=DY .uDmY5'ʉ3<]$xl_ -T廳U_J iD)+ٕz+CޱZMt!(8a#C[ bQ5vLqZsc?`1CÙ{pjE3o5"RA禳 V߼Al ~ Mؽ!V;@fdyl'SX5qGyv%1\b^d/|ÞYv›^xޙg}#n:Sos[ǘәafu2 $ R<69g72Ԝ_:\dv7 b0M2ps YICo;~dɭ2I,1x~t [~ {&xOrmnpH"6L8|xE3=ߦJ;&uF)9v:^4$Cϰr(NþM=>C]~h!=J FjiJKaUb3{F!yߡ^3[d)-O}YL=r\: U\M6C*0LS'Ͱ80a9*B9tG'}ÛDӀt,3oxؕSnb5:]Z\?0氹GQq|0;ՎJ0ǎe҂堖ۣ15b}mǦ&w'Ov6\ @t:a/H=-m/QQO ;baWʰW!wqn<2Af\^}05Ro6^Aok y6НE$)ežCROϏG(:\=" Jg+]@c#2 ]t2chw:: 1r0CQ>HA@qEX CP0*X8d'0Ӊ+ .VF$JmSCՙaZ-Ez%ú,3 MKdҽW,4*CJD'4{N)31p*/ Sޱg!첞!Vב$v!\+sm6wQeKc2-1$9)*fD CUV̖E^aiCf3.7A97=Yw)cCލpmFF=3fP0+ER@ +$~-ɽ]upr}]ƒu#G Al 9hݔls#b+@c뎂7D/ڮCNoAdr3Ӎ C *jgǤ*?Lۈ>mr3&oa0όCfRiM_7aampa?F3p ߹"$|l`h%eχnW.N%8ٴѥJE}- `)'ncXK=u~>] CeG6n^\2! 7'ޭ=hz8z JvlnC)rja^1 x0c) v8"̼mkS+u-c̢GF?k#ޕ(FP(XMff+1|EdPf!edX plwSӍ x9e0Qٗ9[CXޗ . ~ 1NAL gަ 7=J-/stqxzƀpC?%2p4h;Z itb_8џ# ^;ne8ɡ`nsr_OxҷYU'xvf{nR.𜁟$:l~gUlh+%x,ub&,[jY+Eg)OdFtNeC kH߶v]0LwgF9"M#ބX21(Da *sR[ C۬]~<Í^y|oٛl!F=Æϲ!,%>شIH 'M oKd?ne}9>xC m*ijCkǓIQ cQ ˌBe4&vebf`,]~鮌uPHS̼ "rp _ PvR>z. vvHi ´3U67p| 3kڴ6ȮXa g6,F~'eޅгm7_xȿy.CרAWs2b.,"E/ZAp"aH 8 "@ bt[Ermޮ}p2g?>66+/lvV.#Pfoۮ@#7h%PygYP&$uXӱDHqTDa\Лi0~y>>b͒f$ =bitA;1RID{X 9zf.˼MP2-˖/ǥyqy_D/ޮ#X]m)@vL c%xR񴛂q?קOaTiKɦʐ)$ 2<39Ly-q5yYCc̄1gE%v4F0퀫_v= .~}IЈ32˘’7CEv|$xp*'2kM- k8{/CN(2l_NM-b3Tlt| :Wq n}Z\v7k]_6O8.[Xy:č?EWT(Qo\8xR~Z>.1lX^f9)2<$&ҀdM&24*<d)d#X"Lwaыϻ_V/ /ϰPrzX~ n G%=@mx=R#h?oa]1|P$#Q|ZFrA, nc8+ gI!Ch:Y3ip=s\:f^fޠ_?"\ÿF䐸^)%`N)CX6`%|[@ :=32 ?v d|M.=@0r;#C,̵@I^ ‘8eͰh ~j`"BfIm@ Uchu ۂ _ a態&岸Q;n@=VB._>bh] p B 2)}y1nd82p4܍ЌA*adb^6\f`:D"'i%_.Э4j?.sɻ%/A#?\A]AQh㇗f3AU.wIL_}A'4Zq+*CAw!1d}"ͪnVrIQ{3VJi`Vrdt7£%ۤ$#N6"ɂ_0.eh^J;O2<hVx+F!TGu=T~,3jm ]6֛x g,^9>?mnATR7c;Iqx&|Gti}/I `W% G&aSp`chfR*Raaf˧]$vBDĨ8b˳5|a2lD -]ՈBw2ē?Cܩ֎&zލ ]XeɛҙLiU1 be^|:"Kh%LaC4:+eV7FI+Vt_-5`(S%ɦd1C3,$2ÿ8E VeZfZ1V)F¦`UVIQmJ. _> O/_j4YP4_0?a#;'^>1gN-q8"N [Sn3ے+uɸ }\)ͺ2܌>1g (3sY~r7 ނ8??Pۚn;ݾ(2(*29yqo3,iO ϣj AaMZ+7_*g-?)MQm"fAPD ]X Ъx#_| ӞJ!moDؿ^f@;M 8*^}=nwZ5 - Y?ʰsUI0/u4mE8|--k! "U"BrPyyrS.ƫʬj>RWmaP9;!7eC1PI$,k֝`szbXڬQ@'Ӥ7 1T4v.F:tAIA x,a-gc2EY&.dozxaOa|xȦ>Ȉעv C~Z<;)`4 Q]|ؔ[^'z>bưJC SP48, 4K' ۿ-R*=)Бï"Gpi_/2<cć /tRLM?2*~ЌXaHQ]#C^hE=CvR/m\5 UU? p4CC0T|~TZ9*Ir/bbq4\g#MieNi=4FϦ9u"#d2QK^,V̱F>&E%aq %mzMVz[Φzr_ "&*1tὫ;Q^zhjQ$ f$l"DSx#KËJ-Mr USzH|mf$?kl  *nGE˱,"C4# ny(}Q)a ˢ; 1\YW.Czz;-*䳬s**#ʧ}1%)~/5c9, X"n̷0 OG<.롷m$14ć>L? XsRV]24fG;"0%:.muY-zx;Dd_kr9ĉ)QUn`b6.`!1̦9?谕z&4~faǦ & zC$Oy?86p.+ [bIm{4 LV eCb;1D#G#[JCMërx ĐtYahrhtM5` (n O2- {IS!ps[a>-c\+ZEV:C+1lYx|eMAE @x|z3ͱޕKk{Yn/3W!Smb!#&0L9cbqMuf ldrhkݢ d'll\h=~dCoa(ˣ$^̓ 0Tok>[dhnNm7ʍdbhWOgh~a4KX%a/rL"3_`XڇOݜs~^ ũ + ]Vlh_f/a2l PV 7̕mz8&ެ^_~;(bfւsmJNk|ێf8頄(!&oaWvbGEG[RE#9s]f1n }L킚]Zm["_$9CzC("kh'X>= ژI ʒR(!հݥg3[AO 'mP.we7 6 Wp4?RCeTÙQczT`ĖU+,V y;[>B.bO Dε A# N>*~ e{/Ʀ\I\4 T#/ɒ_l7m[3[ >|~] ߺ'޷ XD&`A0x]tLV~4|SD2 ь83Ͳ/%mђ2jT%!0mRʦiԍB$OCCJ}iG{_~_ganXp-C{$jOIQ*CKߐ!^$^޸3ALr8b}=-1JE2`bf !d!P3׌ 18Ar5nY0y3`gLaE{\IT)V c=<Ɔ8[qM J5W"/Çu=lo3 g!rN{lG]gX׎W.0'`GϣP㪘WK/0;Sv[Yf1Gb8$ZIgX-@4ȬLSmդ zC3,RܬeOlva5D!| 1uŘYYf|Km:rhBm4+xJƦ%rwt05 sp@If Qxauho>s uk!/jZgpJ[zUWJZ2\ _Pe8c-qrC2P{|ȖtP=rضx{ؔ~h$*:CX?$Cn9C `r.[!R|D<û!9|z^)~QjIw3l1_PKY^{⍍ 0L9CEQGgOa=f zejr32OxtӑXEH DRsc4q!P} o@ o%<ѦXX Cg>?ƙa ÛXFؘOOȐHZǶS)PK6;QMpH[Ñ;՘L43u{OWlE{+uR'y;z3m;>&_aPEp6JIzW+ެp:&26Ҡ0c'paUN﯇Š4 ?Gvd|d7]:jc:Ntv{ }?f π] e$9 NźָD'k&_o[2< i 2c8I\09W\ Z[w{zz n?<Ǐ3| y}{ ?A{;"z|O\<6WY>S3졃cn$a~v )/oG>Bϊ-(컣CAW" Rːo?}w}w|3rWyFx!#}<"e2 +]Cw\_>GVj#86d4acȓ87;XL#M= pD@9}!|LP$ O?>>8 3}@1&yҊX+ ǽ_SnrP|lǭo_8?3퀨Fno0i`K.zlEH(6 O_~C$ _@2 rt#ݸa6gVeGMւ2KdWd >I[yQR2s0 w,NEeWl>iYb]h([{yp`\k\IgDHV cB3?/ Ȕ庠e5iWTUR1FB kr/]dĭ9l槇g8K~gևzRWVE&ǧOay wl9Q@ 3*?诿Tt|<P={$i 4k/b'Ȑ^p˰'M<8rő3ܨ@xؗQV5I[p w=glorj/f?qH iLN(||7'u\ȰɤH[3˖ͶM ˖ |M."PPiXScp}/eG6MO!P]ƱL},CdPְT|3v35wFL<7FڰKa&|=)h<'f>2O;+UB??=3 ǣ)lqpʛfk?"3G>y/:mvg C&-Ho&I#0jeɠ>qM%m`A s? _U'].$,JRƕ*T942|>FҹnY&^$E1S3]^>q>v = &w%#sODECx2O;V0 >>U\ 0G?&/?%LΜc48KA c.Pǔ6=)2d`e/&>[>ݦȥl&8.}I.C99 -MZ]29pŹ͖v-Ug[)b'9|n -c$+/e.!|Uv<6GizCa.faM L❞a M HD &I^Qq'pŚq*ßṪfD1=s3 g,GVgh[nʼj_EDyyx~y^g2K[u6(8HF8›=I)3dPn p,Hpk4-ןp&1\"a! ȱ<1403`6E0EQˤF6*4[oZkL hl63^zn6MhqxA_f@CY H2\jr `z 0(oWyG.u b3$ fU h^mR]bh[S`4JHC,P v`X3A4w߂N/?~ndQ\OT BRq1 1S\Z*GU ;[tL ZDaoW84S0,ҷ"žeVu]G; zm~MUXnjD؈i<8B ҫ̄($kra8t%8b $B.%`PZhڏ{Uz%&q?`O?~̧ v-ṂUc쌔 ,F%qƳ,OLN9f *S9&8%Oc=&mm!:Cy1oЀY 2`f ābD H&WfźV,8~zq^[i_L#5S.1pS@g93YqNKjǾk4Sb,*n53wEWDdXG90Ŏ~ԈPh~ r&9%>c=B ^Ͽ吃 uVZC3?&̯S YCdREʟF#bnjnOɸ`hO%9lO;߮ /8:٣CIbSC03 rhÐ]Q, _jY>g?i֠qU>>~|s-2ǿ4 .VYoQ xbњpk49j*8>&Iq0כCbkSbd\88f}ݳm.2)(OEVW,NeT<> Vu 2| MH ȕ  lNEIDwυ'% gxAU]O3N1ӑCz3,]Z_l`ZOL0`x/ v3݀ ϧ9m}x|~h ʒ(4T\<Q3ϡmRA[t3'2۸>_V!..ҍ\}?~-üVb Vp `R/S+ Ӎ"%0F{>:J0;קK ё@fn~]/k RL*m 9|9gHE[_]s^K//CH^P)B1=<ګFf`b0?0a>} <}JJV)J2+Egb\D _[?cW> xؓOpK k/s{BhDOV?b|\e]z|s O|,wUx8-ս<CdYXO`WςMy&OoFCf`36##KV.C^A÷ˠ-6k:Nڪ g7 a6Ire;#ȫ8@hT߯" }dP4MnZO سaj[= ĞeMq;_y+(q|~yef tc-fOE{ }mOՄ0[r*D%coOBBϯj?lY'6^Cʱf#~>w>m.A+ByTcêðG] EYs2`et |Sy'p@bmqpS ѤC\ Ȣ#r1}aX{?!r)f\ɲ1S8=2'0y?p@c{8 ˥UX]RK rۃ9V$׃+ O0ZAݦ8>F5h]bObIŷoBCO?'X5%axh=19ʍRfKL{ؗX+E$3&Wi܋)X-i2 XOqı[X mz=!ô/~\rx/*CRO6bǟ%pWW C!V9ã3gU +jB~mfI{8(z//ߔs? pXD{ " )Nج}7mqxW"חg;.)c ۧfy_<=N93o !x|yF0N~A/1$|ֿ } 41d|#CẌY0 8CYF4( jf0s|~P4?'Džяa1ỗF2mkH9 [mnìdc Kꗧ]&?Ga΂a2O_?b*cL\,o/iPƁĆ2{b(piL 0%L7u9,.qQ+Z{ٽNM9Tvt^Y mX $}AqN2h@w#߆z3qewlqeV<'0lڴ(TdH#|~ ^ 0ۖpnᝫCjm="Ze{3 %($N!'$]m։S6̹$^,d1I^߷y;C^k#y[}9 e NTSO[Bor ׭]U }8Kp7Z5>5ڱ6:9g 銆4*"XC4Ô.޷})EqT&k Tʹ'}Xfۍ9Cd>Aܼ!mt!\1Oez^p !гA7n,싡B^ToaBi9S$qExfʀ!erӗxpk2*-'FpՔCacw p].h}s RWp`/QXb%Rvn"!l$)~KjXޚ@`;]°QlϦ1eB.5¶‚aVzu_+& m R*Cĕ4VYwV0v.)P`NJjsPC.³Y1Qrhn: V!drx@]8% Î9Ja֦ongy3 NO2PXeg5'xix2*`8ޫ [ؾAV7 UYBdXfnl+oZٞNIp{ (m) jc`8i2,He%46QyN e{3P3sxXa 9qyN/ͅw0_ Vq,pݡ>SUhhg6dRS=ݹA `xs<}$6 ]WB݋r~ZR[lʻT1 )B5H WuU. !i|@oaSd]M0x-i8g Cm#*c6<|cwzCݗrxI\BEaEy.#Y]6Ҧ ]eXaD))Z4Re^%v a3]aόےCz%Y*.N]N/ų_RaﺚV|zL:BX@&FW?cfeZ2R5%jڣ3%1 f-<]0' پiBQ{`H2t3%+ՖuYlX\TN_A|ZS|`v$^Đam k.C%kB@ 1l} ">=.wi3:N$P 2g{'qPj/"9,06 V1)' =tw,ڶ{ר~`x.La= ,5Z Wku)uMmjyXA4V"_-q#uW{yRiS:c* 5X7@(0L]4Z4^٨x!O0۩5JrH gRv"9cL&Y س(obG G&P|Q3*гROI`qs+R`\~?l@SYܵc!uqM/#T+Kp@]'b[ թ_DXgВW9sBc=  ρK@ě~w gg.[w9Tse%d T+JGlU:^TT[|#$.v0A~~ "/ [C`yFV0/Ģ;aˁMO"Gޓ3umbS(C꿣%C,I#ujN/tʐmiq"Ui<P1mv I>AZex:7l Cூ?Pk^9"$^fx(QPen$ 8Cj9H!2#vUɝ\Q") %æ*Wy#Թr\.Elkx+/`ai$1^)rP3#DBRc@*6Ă#4p+nj2l< qLv#}0GZ^,1=bJc -,XzaG2ԛ lEVQ6˽z4ON)T*Vbʆzߚ:lZġŖlSG*%!ԙ7_?fυ>v@#;a4#ؔ -[I-,Yٸ⨭A)4{8 ]קz;֜$*yD$@ a4s ;F*G,6za?ɹEi:}>qAwqr(Jw 4r.6fkTvbZS\fU;4<<4+9Dք[+8{X [LT{]fDu2 p`CĐ22{ئ=pcS .|BWHʎ* C?ys߂W$UKi\vj5`fm7=vـH0?zfzfzzR%   MakO;- wÇ#/Py]0CyfgW2䡔Rs1C,<+[ǰW3nQ!m+CCjς.f2VCk&qzY5WfffZ.` (z,#!ԨپgFdZEFShD6vr*Їr8'GN! 5`xZyΖ^qbݒ/VA<`P)aۣ"wxѸ*a}ؒ!쐒{.ddXŐ[8y}E Ϊ{6 no.bdHw;S6$ #M  GinH?=pT(P-KHiL\ H`p{KadIE2Gf:=J_& _[Ȱs bQMdA'1TdU@l;O8S&t`"n7(oG!D99X ۷,XN8C(̛H QȘ,N*&;nϥ W jV\Js7z`rߪ W@gpUno26Mp\LC>$nJ6EQbQ@* U[!! -n- ʎxB C֦lڊ͛fR3Lqu+#^/SmBdEJʮ 'JD9K⹞=rx'm[ v,4s%p#9ư2}2qJħaENnS`=^@X`|u*&+B"Zv;6V~Š]PZK><9K놚 |*`o+h&^`8>,D "}9b'2T/r5d0`h8PpV ܥȦpWd!D0Yp2zĪef-0pwWPgҸ֪Cө6eamK 0N^@AMGA,8\Vi5½z rG2 KՠCeWqxPf7~`z~)p W'öӇlh,YOÖ*WC^p)3`[ F m*tFÆxT;^Vl>J=XOz[!V`t$}$F"dXڙ0/wCE$xSIg9гdX i%P+Pǡ61,Z7bvHcQ SR@b{zc&Hu(!ƪ"nUۉs[mg(hK1BlnidIahiH^C?JHɲ 9 B5t p".~!>5Y4=N]1),˓-InsWFeװ{cuqt25ER(\IתV#% ֨O{h$ /-Zj(L15E5b 靜ZMۘ,:&&<̣ oM20IT@<9a$Ҽ^kE" T`|vuQ&5;UJb1 93XRBZ6uc1C~gx-~HZ .+|9tXmqx뾪O>pOr0|লdC̛ ]*m}ٲ>'Q Iw%4hP5 w"MT9]!\ N+3B1Y:r/SZ5̾`YS*kC'84v9' kD'tF2ϗYOWj _)ae/x7;6"`#b۫E9bRuPDU)bk"\.dOT1[Luuz,%:S׊|CVz D`О'G*}uD.E%Z|-s,>'_ =z Kq5ى'1.waZUWz^\T+ ({|O%j9J_^p<= zhz |B+@;g?!L;Y}CLo~EfY&ȧOOL^'%ĿpD$F+Hߗ E/cuyo-2.1.0/data/pics/bxBaer152.xpm.gz0000644000175000017500000001301010361553650014060 00000000000000b=bxBaer152.xpmkWJ_7k6;$D(E:nD3nx⷟$KP~8\,䡪9;Rd>];0q)Q/1w;zx~gXz$/~ܛ~Ml_O1 8Wrr\K"X*Jȳ/:VP@߈{"V%+'ȳt^ Qshb5I^l!.Q=Q]) ݟUYg}ZwL:}BE^\,7U0J]@XR+ɳMf=9 *[L_!*'K^lY< &B\&sV` W̘3pQ{}Q&|"7Q&+ezXX=Vm*RM+D%TzGTʀ\ꞨRk^k0 *̚gDijD@>^9kX} PqٮfCjG*; t }ME>t))Q9^Y%):/j)iJuHo]gE2KXMB-nD|D?[PE}0熤NT3i^\p_IH1϶ɋ{(Z la'H \O$/%}ֺ]HVS=9Qwiwoo:TVâȱ" ?X= H=?``@I|$9?\?v݌Ǎgcv^FK'`_UU]#(=%ve!]අ1rPI Qy#WRG=·ު4”2E>,a?[H*B-K&m:FȔS(/[E|c2 Aloאog*Dٕo7Hc Hg&F(6s$XFS0Ϙ(OVr$k9X@A,/w f4(ۘcF!ƘǩlV/~J UWXAZ=n e dg]q$ݏ8ۭ͏|>VڱlG#e(cvP!3lcDϐe(T 3%.o{1Xhĩ%-W,_|;xd @<@ީ'MP[ m:?v Im p ;lvpDJ$yeH T;9ZK_SCR_U4x|FwkCx~g. ԧФJ]FdG{BVVeYㅹdζݨ`̅3br_.,̘Q牯e`on/ ?$6|1JdxFTQg.kv_c0V ƍϱ-5.X0: 7\=~BXxiOoIG|@ڲV¢ݥl"U${= KyG=n1f]e=lh3XaDc%f>W0V4Qni꙱DFYE.ccdWpi1zoX|%dXb~.v{Bs`StSՌ& e&:BOeeO+eh2z}Wf̸̲b2`*}Ռ{C}_E3TfH*jaib&dR[AddGMFL E:yvNB>$xY .c(4fआlÚˏݣ)X'o(.!ufhdQv]o7|aPE*#T#L&.mK0S:`mAa *$כ6/зhx}Ѻ8.Ů4Ն5^В;MP-揷ʪY6k ?cLC>AƷoc[ȍ{3Iz3i $^!_6i)lt 3u`8noǹUi ëerD m=>s-\~ 1m E5h=pۖKHT; 7s fBeb9Y ҂"c9BJKЎ9StvmZZIRfEJ~vUЎfق/Z&>JC(Dd{Uto($]IַnԬ PJmLRH(k߉($m(BhۃAjEz<\g3 D R=0rR cg•DlFd lKѾp3rEx7#/jڠ*$F; KF!E?/mڈ Je\nxHVdR4<7)..ލaרr*/W&qv)X A}o1\0 D2P^S0nźOok#5F1OǞ$mȇajgOόisȁx`f',G ˌ>D#yAqt8_G9 i7.FL z4^ptojIŧa){PSI \`c#G4lx~ k!yʚ"Xkfmv|IvaVߞ4Ůd5yV,Jarٰ3JNgԕ ˃B FX2jџ,zrWl^ް]2a!{Jfe餂ɫ.툷3[$+6ƅmچ:uN0|J0!ĺ{~>RکЪ*b4vrφ&fD ;~A)۔;r1>DQ"v*2\x;ܟvG TpKPaNoR;FDj63tG-@RNzm3)ZpNx#F3WI艆g2K3*3$@VG <4#0ާyKaŊ1#wCnx Vц #ócMx|=B9J +zDɹ% b2sǐf.!^0>n6'E;W= =ngpT),kD6uDŽ'b g)( zasA[1v6(snÕKPD(% k~ d.> s߾. I2N gn]i 擩,z)$(IBU0#rLb (ij6KF&՘ib V$ l~h08WlO!FX֚<*7XTG#c.{3O:ĐÒ&b;!FD>sizgh}=Jb%gMX(K*^j^Ġ(s ʿOa{hEbQx 0i_xy~9@1k|^@/Tgǝ`U7󠐀+\}ssfqS6Ҍv%#҂J\'ȼ\EbMpv q:[ʛ'!Y͆@D6J[nqI?ߑ. GcoIL5SPY8o`I4<5L4\F#~P!qՌBL9])~˸OcTXWyF<]Ǜ![ \{GH,Ž1rx;[kqM)p-4Ð` ݷ0 Gph5Ru1,T?# / zuKKZU@-W0A4g21cCeNJ[t8w OB9k X5Y.[?ulM~ QX-IF&.FF4old4D# {mҷAj5IK;ukY*Hyc~wy&m|jE繥F'''Q72ގ3<@nvr_:|of̏΢H$`\QPX@nRrݘ]᫠f[6v#mW&ݘ嬜g99|7&D*bO-AutD*F3TJܘbטFEnLгAnyQ?(ucBM*̅F48=b7&)hXkx@454Jh @@7 FQ7R 7rZsqߢGkcuyo-2.1.0/data/pics/mdEgoV10.xpm.gz0000644000175000017500000000167112412223254013752 00000000000000YO0+ .<ݔ IjJ)7-G9מ#m>-M!G hA{p!QHkw$ Wj:_IDOϥ ~g@h `E XXѶөr Z,`I`q669!jΧuDY@Yg0jsLX],\̳ .`CDs<`Y`Ku%22bcG\hV5GT86}aagx 6v.qt[$E}lz+ 2hya Fynz7}yna*p"x!#6}W:p,Tcw, OmB{odž tԜ=iCiOuVԀЙ-.:ü( ոc-Xfj\c*x(7xBx Fa=:zD9й"$9Z4cjg " zKƾ + Vj-qH!qH!qH!qH5HȀC i܀@:|ɩPҌjR YBs.!YJs Ch*b!2L:CI~sZ@BQR'_f9 u8%wtҠ;*dllxw&NkZ&}CKK1ҚS!wVѠ9Ue˾6RU\7w~tdpݺH:ȴC2ǎBJL+D cA:t!aْiHv16p}mۻG`z$K?v|{Ǥ\E䞓1#BZgˀ;$V#n\XX7y "˳0 . uXXuvH :MOMXV{{\Vw\d{݅&刻K9Z.P`^$⦈+Ys"q8ſI$.q3kaY[ \XXT,49p yDWt=х3"7cP=ScqYan0{}xӠ偵ZP'Wpu.;qFqC+ !$p"AS/jC"i47,m'M3q@1,|8hLo)M>ǃg<1:WdyB.!u"MT7oW%OIVKE=sPJe"+c8-V+r GJθzndp_N '(RꡐQ gyFOiApGRriF+ve%ÆF\Z #tA02Ȑ! #_!q1RiO.Έf!΀J2 cxj 8"ņFa :.VrW52k7NH5^Z&\3P Gk^2zZhPDZ1v1vj'*qtv=+\ux[[ȥt4Ǘh8zXNO[Pf>NXۢbFmlB3bL7x7&;0 oW3NBSʱ) zoI3? RT*%"*$dc }bw6YAtL, %W(cVY| ь%g 0fO[b ;741DGȈcݝZ1WڶPBٰEb8cmX_,g2aۘdഎڭ_>̩@_c;=guk8Mrp@c /`@x͂tt31 y0Q(4~"b3;ud&L00^Mq0;<|q#WZ3O.+zhm!F0"XLʘ1ҙ]s%2۞ M@߃ I.Fd|0*_oN3޶ QYO17I)r>ޕ[`DdT$m,EHPtWN+B{Tہ(׌h~[tsӇ0z*~׬S~{甈-MkV>oF1?@]3>GckEg#]Ҫ8ߌ4&͠C?f(\ =Dn%rǯK|c׺8үiZ0nc!f/*.Ҷ^* ~T'l-s-dՅZfͼ9_t-Fsd3QGg]4[[SoT͸t#߃~6{ %a[:eo;]$+ߜQc*wY3yq"Xlκ^Gl29SGљ,־:=0:QQz~T?jPU0@U2j=ʁ޺BG*nGS"ֱX+ XI|*,ƕc(e!8w1`FaJ%U!NJyʊ.+Bja a(K{1|zuzJw܈8)rSqXEU2^k#b$q׌ PB<LNIu8Ǚj!SD{:*fS/f 9{qjuCծ lXE$BfY׋(-YۇkUl2* Ƅ:3^Ƿ( IOGʘŸujLbxpL:FQ1J-Ӟf{,N:GEmzE̘Qӌ8j!U-K»q'1u]F1}c]ұbBW'5#řVvTNE1hlec$ X)Wt$FR&C򑜉.+HSdRA_)u~2lRFq$Y JҨju`\*p`>)sQS"2>EZ \ae 8FU ;<\s3]X|6H]>W%.:{zwl~3dd/T~GA?}e1Ԃf l sl J]~ݿnԿP2 %CdW%7cuyo-2.1.0/data/pics/bpPinguFall.xpm.gz0000644000175000017500000000215311543455110014631 00000000000000AMQk0ǟݧKD0oCt0 m&=99礷74ד4mzsJ}zVןӏ_޾S/կgST?>:Vwݱl6j\u㋫tWձqvAUE(ƘHzom;OaxC ~;"FZ.34~h2Df U>l9/ kb X2xmР|.<{  \PYcQc1T,Kbj~ &KM?sd`Qo2%@54(g@iD-bb(.ɉLq  Sண s$oBRG@A@lˠ& #L6(50X.D#@AQ1 LIBmQUhv! #; `]-R,ߛBUN,,Geez +<c1K'I_+ Co`lcoc#({d?V0abP{`=S).4fp|@BY'`ebsf2Qz$iɐ^j;-i83]d\bߢ x1?/{fe)4l*>.z1` QCK y(%9y bg8l}lǐӧFz^^SL3- \WtUJ_y 1XP`-YX]VVc@/AQ ]g9E%혇zEt|i$NHӚ\Hqy(^D)|~J E,]:)c:2 BDbҵ0njg<aeXVaeX3/BM42cuyo-2.1.0/data/pics/mbmSchnell.xpm.gz0000644000175000017500000000430611660562124014520 00000000000000{W易lD]B?N (gsr^3`y[v[h@uf$̝Q>\[\Jwrd1wTY*S}?֧5Ygl>1f#duL9}w~,crTJ`cqKpOg,1Eԩ;="ҝBa+e^:*J\U9,=x !O$6?qZ` CeQ_CU1}/OXye}wTy;uo?,QE<<Xz`>a,?F1߃OFszɄ4?qxD΃ _`L)g0!ox=ڌϨ x<+m4ƌ;,+/3sˡbeQ,E=:*"ʺ0\ogf`#G5c}<1^aO#e6UOz`}cQo,x1Yyg <^Y9z㱵Y=Y=h-}cV)*cV쯈 hpŰ?`)]!]ݏd206Vb Sƾm2;f f=yfu9?a}£u; ,1U" 2 7*f|WWa# p0{˹ j?H\B`|?G;'xC8^|3g~vνK us4 luR]kp2#Lu d ezD?bU,D3PӘIu$-ƠV^uo  kdzHa*0 _}6ug ,ʀ_3$a~gx~$ï!LyaX}\ļCgaa C^mF ,{H;C׀ l&1~ǐdR=O}2Fw9#'<=N]WV71|0VϿ'#p>5S[c$qgwFZ22 )&cuyo-2.1.0/data/pics/bxBuch128.xpm.gz0000644000175000017500000001274110361553650014105 00000000000000b=bxBuch128.xpmisXPHtA f alWr[!B0^RDo̼W j㉷?8Yos$D&{Л$2{Pgw?0MLFS\&Sz4؟do~Z/v1{"'.sutAp9G{`]\tC+Rκ= LҲ_M\Jb-MK<\E?e0 UZ&32b4e\S}>..͞i=yP0Dғm\ZZ.uzozz-n ]KE%l\ ǤQ}"~# 8%V'k$_ bӒuu^)]fp٧ך]fGУϸeOF,}Wi?m7GM#}@ӷ ѓ=睒tNoԣ7JI7e6kQ^Iҏ]b햌{e.h O?]}@, 4 .PuiY4LJ&eVH=%ӈ}_3r~8Ggɦ7*Z]e˒aPUMhUqQȲ#Z&Oa3-ހ/ĥϺ|NPh)yL̚/|A+zmɷ,JE#vDj48g{y˽&p׶-͞Y"ar%!A}'w?`y:zOI!8_^/5r70FQV6A$Yqzo37XPmcbbIPq6ؚK"wmv~+v/_!32F8q0G5'Y+Wxocp|*&㵐au$6t(4@<5}ttϕ/_Xl|3&*eyQmSͧW=G1&f!:uU{̈|s9W(#[ _PWNF~~ M&>bo^ =kԺdw`bffe"яs A/~qU7"QuׯXo^pυ^S NoauV\~ '(=Jź=Ζ^Gp,Z: vnnީ_Dm 6:9dne 8>g*|+B/rgd4=uL'q6;IzEʶ^M ˰ M>"뻻Yi:؈˸$ytl z[бZa(x}zc8 7༰gޣ6TN!9SϾpKe tUqY\F#\nQѹle<\ݔ[t:!^z;뒎37 "zhu`yrSL`;0.lj?_l 0>?ʧ#IFI^np0Ԫ7%H/^wWu鉂d~BWk`c@B͍+ =tڐl$ܟB?dQꪭ6A(^r"#65↌$Ўvhѣj?xY)á8:Τb3soDAB)7En.bf\H7˳M#Ƕ(}gwʬlct$@ %$QW(=)(o*ipu*5X|fDȅf;JDDDy+b_}t|||DLiM:MeDpYk\չ+( gttQm7v?>!"0>>GQTEڢӆn e2=/'X^~\m u| 4%#0yMmI2xl"G4:c3ߘSQAydfMq~ "xVH4d"~,2x=~qE?搰ѾyR\BL9#^dm"; :fjL0"ژ3-z=G%x|BJ.5CYސBϔ߬g_#S3=q5sm8xF^?93ۏ b]; uBa?es!D"1Д8X]{qN;cq-K` u4%-8MRrѕ.&c8סӀI)k38AJ^&JpFG>Q!k uuu/t9IH6^C?(E:!TIm=t 3S&,ǜ/˚X/BZ.dD /%{QtbX蘊͘-!@ Bb(X(ь _?jRG߂6L ܜNC<Tde:1d9U m∈ ]i$WB#:N@LjXe4PQO Oc䄢14͜q'F ݐYӏ;k]ŅMvRyGT\FGcAz;ԚGӄtxA?.1^Y&#I`8`̤R,=#Og^W..BN9)Q?cV͞<#MI<'Q7׹Ņ*KeZkjBjRr=P0eǝɤ2KIVBn[Q$LxT2 s EUK]\|A>|9[~yx؟=T"KЪu_򨪚JV\G/3$HEg]DJE*ȖYMk.n>q~\xi '5bPJn8QTtwoeYp+;Qk_mȤfeUOTٕRXK͗=]P [qܚ(ױ5;T8Wn,]h>j:íj$b8Lx+FQ٤ atST0 ۬@h L*Օz>o%iQx8}`9q__wd\GN.B1WpI0s Oc_ ƾ3)yc818d`|lr溮7ݫυqfN4$[ش}%4>n$)=RJX3et޸GXjVt$waq߳\T٭y\UZ%6p=[W3-f^R2\*{۩ ېUfV)Ha},$â^UKL*VJ R1?^%V^XXNjp wS!nʋ?;c?<"?q?OSs*FJ>E ƣgB+=UA iAߘc+ 5/z]nȥ{GoB .i[?wM.<ǣOX yn~Z=m#`=g/?O:c1sYǭWcS6G0dıO8-wb' g@~B$?fp!njn~ⱛA { L5ف6>>Ük!SٰaVÞQ-egwIyV:ItJS>%w+/Sr9ʼ+z`}c^۲fyf89ߣ)gpGƏ"' +{h}=Yx-X-3_Y?ixYQ򬜽xL1imkZI1?fwǼ 5: CGnYApeЗ<}Ϟ2 ~igyna-F?A83q:m+k('Per84* 4_ʙ鮌W>ܟh<ݲ7YfFGs6_ٌ͎^؋['O7BBٕRRW|J\rTXjԉVu;ЪWZ:Nzԋe*v`Qa\Ғ~ND$hVp_B2!H _/B&IHW0&c` qGP=%a{RAK{JAK {JAK {X=ĵ7sq]ńw)sUY34C@n9zʵ7k9:U< z1\{J- =3#t`0/|mO?c8C"p׺d`C 6u:&G4!&C끼T瞪Ѓ<j?U Tg%0{JuVs\E(Jh^EA0 l``?ۛDZ:+_i WY8z W C"u_=A+' 022q {à@>}e` /eK8ɀ΁s2s UP1H7 #eXMǑoN[؟،ޮ"%ۃSwp ["n? q~6%B h @Lh A'H'1~+!M2cuyo-2.1.0/data/pics/ithGruenH.xpm.gz0000755000175000017500000000106711101102052014311 00000000000000MK1W LlixDDhd6YWQڝ7>Itv1n۫'rsm_F`8|Yߟ_=Oan ;+8y|kם JsG1 ].yC J3xp:pt4~@@Ee"K ;+N3nO`<5 tazPe8-VD ;E<>M 3bQ]Ge> 0*NfrsK6ga^f C*ޫ Ôu Ym sz" Z[ M C0\Wag#?_: ==:*2úYfTSd\*O4EHHv[2YaRe}eUd:&2#T&TYai]VFfȲ\Yar#PE@EHOLdaп*:YaVdu?EJz6cuyo-2.1.0/data/pics/jjWinter2.xpm.gz0000644000175000017500000001073407550521117014314 00000000000000<jjWinter2.xpm[ms *NBnV7z6I7,rq,˩,=dJOK$ HO?b>~{}i.=~c ?_z_K}aW_'&W_?]_ ?oON^ڐeoG(d7Cv4{enA|2Cvò7ض=0{ٓ7 oH.iٛl7<-gwAnq9EF=c2G#Sd:"1f]B :㲇s38jC`e'vE80f0;>v5{3j sN?mIȞ&1_r<Ӑ=^#0@4,d5̞G=# tyP,=Y-!0c 5ԎQ_t ol:BbfFŞboB7 ;Td=߆`\ {w:NBwT_q1d'^&=IyV6N!{<(K{0ƽ8d!{0`vy &g1/@v23F;0iu=}r^mmO}kG)} ;>Ş>D=#N`ړkPi"kv'Q\ӎ%W DIqTNw4yLa *+~e7ppt4wJ6JEC}5s9|HN+fJFx~נkoI'ڹDX@D}ӆps}ӽV^5>WmIG'50TX!E+c|vuB" HTĚq|-SUU"RäMB&x: JaHݹ&mm1w-N ]Mv MZ!vRJ`DLZ\Bщ[<.d8a ɞZe"5i/dubpS@ibc0Bhi^~CԠTmo,=\)3 4i>v8mL OC͇lA׶40|P|'e~ϥdZXu)kfR F&t1-eyhlA,O"sQx/SK~r1gLڒ%TPeqC/!Vd` 5uѢal{9=r13Xq hIl߲MEwIeۙ޵s9.?KEsl\Ŋ`Nι U٥|Kx01f(&U+S8Ǵ"#°ڈ_u崮(2*# I(A674p3%/b?ZMwXJH3~^Sv wUxw!nŘ첰釐P44A`dw(C28씳>8CR˵aXz~(Z[I:꬀(b&_۟eAf '@n3VR>n\wt}^iQ&t,o0o g FN|xgczZ/O\t ţۆәkчmq,<u'"7e~\|*wۑ[gM{ s*-اq;䳝-Csr''^[']3Q7M69#]Bo]3CD BB+,8KPG~$pcHDv;v][uE}Y/6^jyD]7p4q'{qI iCg4ȵz8̺=)8ց5bъpwssrzz@-6x+^;ZtW(0$[gp{S3b-k| nbA %+6GJD+,c|qbiT. 4VP 9 jirMLPsAzFkŪ]OocX' AzMn.:Ȗ,>NsB9yRRY12R: +'qTBp/2xW14L( Ȁ֜3܎7.|"5(b$_t& {l1;GBctlbiGs}w"fy]$@_w&L}^ABCnm>OiM<\O?gS(\)uĜ)"RloU_)t[5P s$ڮ[ C^:)L^z13?~:k߬a D͒Z.۫)5Tܠ}V;;&VNγ[1O*z^5MyȌ ܴ.uXFt,C V n_"0@*;+Y,`aUd:8dµ0U!⢓Mm#xɺȆisu{q{wry8m b)nK ( LQ;9("1OYeV.^]MmbPq'[(nl !ˡwy^'X`c Dq ZcGu.C K)I& Ez4|]إ+ }Ι"pvwf" [˗=[/S4= mL۾h"{ԇ;6Yj1/Xiͯ+Z F0*|Bnpk7۶i[h:m{ڶNvEpՆA6ċz<~ óO68f~-w[h+l+Fv˖/1?h)?Z}ó(CZ +O.4WF *Gcuyo-2.1.0/data/pics/ma2.xpm.gz0000644000175000017500000001500611615032230013100 00000000000000]k{DίpH|isE؉dKn@/~z1v-M)iάVޛ TxK3svf_GoM߽fϧ?^<<*K_|kn,~y/KYi} vۻ6;fUw/xzxn!=^C vGo>\|> ~C~fr凣'O.>ܿ~fhWóÓ?O^\O.F?xqiϺO?grѓ:pKvO'S}ËۥoNٗTs=/_i|KpOdZt0I^C?f>i:a:\=ه adU5_ĩOJpr. :Lt чx 1"Nٿ NÏ0'aRiiKz+x]>,|7B} Ċ{%xĬOhdũ[Bk?TM݇+藐R*UB_}8čRpJ׭xn{! ?x=x)3݇#`L#yi>k|kI}O=?[S|q?[D]Owpjw jq퓻l{(=]ɾ8i}/ oz&!_wu4oO?_:0O|i>l)E?y>;V+|+LBYjv1h%L)D\[TD@v/Cp ~H1qR) 91 wnXBPE$go͇7"fg!8,.21d#&B7tx!@, Ü^^A~}aiR_#{D!B BPf&DqԷ́Fv Xޯ4*#?~H5u5( gzX/XCDLP{ͥ1WN0&Ed"" `Շ B&)BcQ^AHP"I B]&I #w V,.͇**) } -"96"gMA" kQ PKvkQ<ȕD3fJBC-!XڦAEQ`Ŭ,f" ũ뷛哥>?Vh %} @晌CM6^Ҽ"E->aPP􇋷f~].["~o[ ?! a=/dr/A[Ġz>U$,u7Eu>|ve#WxbBE`!(*̧z!O M~DUltl*~̘j źZtSi/1&/ v }gbjQ3Fy"l\WUgPAo1*/&ī @pTD%p|* >&}"? |)Z'Sc[9pZ  &[YxIHܝ$ojMob7+kk n( ~ey(h }!T&f"y ?HBȇ> a‡|XC>!V !ߪ?t}:ur8c-_;m8NU&U9WxW>%Dĩ!Q@IrE ŇsYqZ0"@E8u"ޏbj)+g|u'XLR\Q9oN5~>txʘYM)ʣ e˹eljT:P.%P%Ĝ:̘$P%|+>"-:)F ,_\^D6 :_)x? a‡|XC>!V+||?>p~;ǣȎGǝN[cGmqgt a‡|XC>C>pYqq.wF g_Oq|Ģ_p?S֝?=d'Q:{M$DHFMOmd2ICP$׉CH2U["6EVm 6DnGwu`e! 5FN3Qrҫk Z+DU%˪Z1=سf MVΑM#z͞ȵQ;l].ʬ}v s8VpKj@{ R5V԰a.ZZh2kyeK%fiexi5 ^52kedKvܲ!MYnUV[OcO5nZ#pUcn7:(9̵Ty~Bȇ> a‡|XC>!V !TikLN:;;=~~ۧ _W/4G6ox{&ǻ3WGd,_)J}&˙oW$G3%sW97gR:J+emln?gkf}Pٞ)g޸F3Jeq gUg&3VShkœZg.R ]5o(86۔ro^?^9L_bSuf0?sg3SNwD2OO3n<prvCgX/- 8Lghg-MDd8~Hi"ggeN,wR'u~2Ȍ3Δ<^iK@!lV)t<_k 3=8ڃR FI,IH#n`>aa]ORXA/*i‡|XC>!VO}! /|1aWt2^p>;}t:wFƭ=oXE'Flɉ? cz$s=P=GX$ás"[*4}/I_^q" )nEdI0@g%@q\cI{ quJUnuΟ!aRI dK"d5byS 7=*@"Qa-MJ&\G*qKvT+#9"*TMTzJrkM)Ťi,~uP̉^3tA~")-wxi D1qO30 RLG22Ss*)Y>`!LE zS?y!15νS?lUk\в fN֏1E;OTZ41 W!/E=d>=t)>|kQOܧτF.0児tл( %FL$I7zSDl#Hlc[̆<\ɱ WqIŘz%$ՠP$`RNh]h8^ ~p0ȁk,8ZVRx9Ѹ5LQOM&*0j:a'JJV| .'ē&xg}h a\޹?5 _'l6~d‡|XC>!V+|ȇC>B׀wd~_;+q'z~|zUAIW7W&.sOm)XqϟNF@x<'w??_|?};O|ſ?_||߇?wB7G?zo o6tx?n|?Ǡ'??Lx[mlAoOGoɛ8i__9w+gܰ&os|A]8k]/ 0/Tvv׿1IyP_ڋO}zatJ^߈% }?(N\ δ!U J^#3}AϢ$ ZL'`n4E `;S{x;9.n'?܃.W-lиÿk܅OϤBタ?c;O]W.UwA7&oy :״"ո׊=!lOPsz78r  U}@NRO/hoLKv=Ƨѕ~_> b,ݽd| Oh&ƃ~% WŃxw{ Vtς_ſLY,|؝o,X ;sdۺ[ &pz7{on#2E`um/%mkv GplLiČB;9$#d=\SgNi.pґ[kn.[>Θ{Ƥ8c2Κ|8&|f?s:Ξ}⛜=[z oɯ7G4G'sM%Oqҿ2G*ޒ72z"Ľ৺S.ūg&ɳgAEOWhɳ-.N0㚤K5|&lNKg @E։w#r?q&Eވw [  8nkyC.NdhH':ߖ{8 {D|K?" |cZ3oߔ_C~SLj;M7 pV@ƃC/b8ĵ-!~-׫t4cF~3t4cFlųK('hQ"nq3v[%c; y;&رخEqPC2D"mx{7r8~9$㨏90s8?/?#U>V=f.ٱ\2 :]r9r0\אSZM(<4sJ 'k87En_{?f?0?0FQ`a^jhcF5hdШ?fok7\uVc{_CɈ1YugwϤ䐸$]0k&ʾ\`?g/%]GN~s 5C\J;sJMybKo͜ߝ3 ގUr>?2h3/چ|Coq @n1HdۓcQ9&3.po?~S>[gL W 8Hl|Ѵx SQ5˫Y ߩߵΚg 6KZ,S]ԯK=NO1. OmS?əS5H꽝~|ՁOKX+'xKIώYvݘ fa=5蒠SI۹E{aB+ݭ7~sx'S^pk5QjxwI 'VJ֊wп?G.tEnhuצ{4=+@NN~?PRժN lr5>jպQzԬG;,wٌyiuB5)tV#|1gLYql9gNq|Ԡ5(F- ~gעĚpԤZyUԆۛYuԈܛ97+j݈ш!9$#l䒹SgNN+29#|rvJ%r}Ϙ@'j?c2Κ|M)8sϜ{=?ܰs^9jP<2vԢxzY`ʟIhٿD(S~ԤvIu"(?+>j?Ԧ3Wj!"h\W]CBp=|Co;֨4(|Ԫ}j!1|Ԭ~5+C.]kצ_O;,.wpi~wZ0F>¨?Ϙ?PtgNGQ`FQ`FQ`F'YzЬ?`UhcFuC䧻yܨg3;v\oS]qS=رv:c{|>W r-_%M<@'r8jdQ%ҿNN3z)bGujsՙS \7qߚ9y[_Cur7+]_oTǿOD^"~`{2 |e3+5'h{N ?'k@g@'_[{a- IsZR^B%gNU'.@-uVnp;Gw{:pfDRApC.o7B6[-OՈ`@[޵{g4|A %[#c%;]| vA_#WhZ>PB|Mq.Дo󷜠Cɠ_H>@-QRjRQZ:AgY4ֻa­ yδ֨MNl_NVw 5uKZ5*t5*^hkp/W֪\VY=jVvlw< Zi5G[nHNu]sxgLFQ`?3?0?0?0?^q'ZYmČFhĎGx䐌KsFN9Puґ[kn?]"|3K8/3..5Θ@'j5Κ6%;.tg,&^Z?@c|3 ?Sz&cN@Δ")EgN'-<)q| 4k趿rxM‰r<8@[Nay]F?Β/xy rx`ҽG~.Žp <= ~,ȷZ1bUyMX.*8_qR-`|M~jF RUԦe-o-nX9%ʒNdh4.+]}~.{8\5}k՘t ly9eoV+v ~:C?8Uk[}k֚ݵh j!1| ͘0qT:oČ/Yƌv7Nx6EalWOv}mE_;,uV!75|M -C#lٛ:psJ\NQ=r_/ïcy[n y)$v%q1~>I_s~댉4M+1#y/O~dznjrVlQ'>k@~%NΚCqvg>;qB1-n'yo˙TCޝ:gFKK)y1ƙS5 %g.p8'Fv뷝$) g.pҸe?|L1vIa~`ip O([KHhH$xeHt2%fq"_u~~? W1<_t!bTp8iupԈ0jЯb'㖼_ǎ!Ď!NO-aA$u*sH{_pUp0Uy)$g{\.\\m\{=>=q.ׯr4r*Kدr0] 0p\Lėq#x˱M{&C)PNC9;{@Pq1g\.r/pqOeX5PIYް{{WqIpoOx|pF Θ_1$xO$xO.*ro5fw I\Pw;R$qyTg$^_^{_̩۹۹۹@ѝ=FQ)۱wĚ^bCk>Urh_V5W}M7d_k|c-wC/HT{U_wK_bo{DR?o%^oÿrMIֳh=jޣ{@{)=W+/ݫW1#soČ;hRuf1b`N\ފݮ;Į+b| K~Sv_+09,4#DLwMKrHœVA;C V\| <9&Q<)˹d|K;sJ.˛Z9s:5'h5~O&~/u|rz/-T]pŷ:rw=%?\򑿥?;vCُ:k6;5_4R {ۊLCΚ9<ÙJ5Μnvs6ǢpN< kYgϷ:OUϾ§IAO񖼉?;Gp~|jh%ƏWk>ؖi N3%o>2Ih3M߫$᧺S?ųH֟j(< 0zTOmy|KsGt"Ru"CR"O Np`5|73Kp>Yt?_ɋKm:T:Tw#Ls K?Ym6n+ykC}7[]w79>9?OjT=ԉl#!hwQɋ=<%iqu|K?+M:0ݩ+xU 2BWJos^mKqU"f0|S$'1T1| 5N&MrdG%/bFIތYꗓYnjB̧UqA}G` !ۣI +v:/4j׳?vK`(q"/Wxql臱ĉNܳ)9DŽ9;B$~+Vɴ>sX&~Qs82Cگr8{rɸ\ㄛ\:] ( ?|<*s*);bp_?wkzݨ?p|FQ`FQ`F ţ;,GQ`G3doXV؈FUbF40HK"%eٸF̆/pe>!v\4;>b9in-zp_]7&sPln~'rH*9N怠JDZs@F3ӄȘVrXj9 G9$G99 !<\23J炡\sZfY1lď*_B^ُ]~W\0^mҜsivtvJ9KD6{ƊL?tr|P<,sn޹;;ݿ;NrÅ!O'I~ -Zrv8a[NK3.%a}?Pr<5c]Y=ϺWq9XO+y1@3W89̫!m~0b\˟h?_ɋsv6]&; H6>/!Nc-y3 ޒ79$p<ЍfvĿ4_@IʻI"My ?@ׂh4?y5'[k__\Y؉(S奓)rH 0/D[ 5t^یߘ$ ٚА'5l5lyMhۯ@ ߥ:/b]N]d&[Bdxٟ vbO%q?ٓNZ&&?Tx@O?Tp@)~%j§Nߝz,X[",ľr _cY.l?ǯ5!$|:hv ?Μb3ƚ԰?4^@cp}\<}Wߍ϶G:}g3wW,Y d.ע{q9ϳ`}Y~/ a<_}ք_}O ?#~k/)žֻ9?!|+ܣI ({4=t'{T4=sG=hm{&^xž^-9{~ߑ=b6&NHg'0>} ۣ:o<9>qOر]+<~CQGo@دPNsH29, (_M~#o4drue74ͯ󞡬Ҙ -~vNf9B9r Uut[?o8Eo&??r Żly/wYQzqd3& qlfnScJ>k6Μ>3g)sf"d~P_ouoi NxKנ s -yh\FB‚N5p,YP?{5,0_s~RJtQtjRPPԄj2~&_ք-$YlT6@M:qnD[gL W 8H,|Ѵ?kW{~Sk5 ΚAy/ĵXḥg8d3~0b\˟I3~yd3jTju@&NZű kP.e9I,g)_sR{h(5{ T"|ՍHxd/4ξƷY/qu߇*"?V81ĕ= 4.bBpX,9}?‰<_♿?7л7cSN#Nj$x[Blǧ6V~_?_~RߊQ@$o؟rszu?G<i%әG7x+`3e:i+'>5'y?qzW|zhwؿ#Gd} ݾ>:< Ƚ|V">^,Xք|/kF'2n5Y>Ӛp}5 Wh~7[{wC48nw/~7܀="G?@hV#B{TNx`M>s6_qՖNZ^1ޫNW}}N{~K>OqW.M313131=`̈}Ab˘Nc:vK^ vcŎ '!^;bhF*v s8zrXBH$bi̅o8!a DK'0%,m&.V*3>3̸UKg.Y0FN9䔎]s݁>W.[>Θ{Ƥ8c2Κ|֌H)8sϜ{=h[kL׬1B~_՘h3jш{ᚵ`zjPU\kfD̟S[?]F< _RFuQt"|M`)(jRa 5aK?p5Xȿ&"DYj?"wÖ$rOR>Z^Ѝt?=҉N8. N*ϦU>yX|/!)_w&r5&8? ƿG^f=H16b6PU͘Q~8?@G19aLG3_jOMVyYXj+-pVG 0@ab->At/a߁pACph9HѨگ']6%;J\2R1R1(Krو\6].@Ku~u Ҷ9xaJQ?7soGQ`FQ`FQ`FQ`FQ`ءK^3ix0njt&,΋ِgY1|n1&V8+;ۥcv:]l9ٲO+៝Cr8R?87_d=?^ԡ9 !f@?rH@s67eI%ib?gwla\\o,bf唚~ߚ9;gi䖯}>eqN=mC>ߡ߷VnxGo $\ɐל@?0EmxaY\R>[gL W 8H,|Ѵ?kW_Sk5 ΚAy/ĵXh_g{5 b\˟I3~yd3jTjus1%I;3%iGQ8KIZ&P0 oSV.m+)|@! L^ %(l&P]Xh:e8vPж&`7Xa t]%p)sz0Pzv=R) / a`5o08:@BBN:! 0lBmvAX!4IK(P>, 瀺|O1| >HԎ<먄:yP4}BĠ%z@_t Mk\EV'7 BA'.}G O g5_42h#\c0@ P3YU_daA7IR@#v08٤8){EUUX6?ٔX@Mspp7fn=) K7I{^ӇkA !<An?ýB3gl-lFŭmtpn5FcEpq{ʸ[ sl&C||]'IـdVBq{̍cz7Ư(}ڟ]ܟϛ|S3cIzERG/pY?Q,p$AݽE ]nr݈2>оbzyy8IavM9w=df,bLqx[IGIp59Es^goe[~6?+sgw_z{嫠 )rX*,*a/s/;Y<\|OLAe$}6>ñ#Z^K(R0ų;E&~h ^&l5<(~t7ŏ87qz8eI㱲|}m5j6s$3;H2uUg9Lc"E_B"(%icE6(1],P' B~R +b}ZB}s^G_")g몆CR]AR?B}!&ϼEBHR"}!CdmM?:zEERpB1A"? X_L?BduHT[#1Y_*3B_Bp^pV6zE}it>($n߲31I>ɞQ^ѐd>ZhF2Iwc;)'1ݧTp{^;\>)EEHQOw❸ٝ,jݾ6(?uLj>ɑ6"}///fN~C@Li?ΏWɏWˏW̏W̏?Ikj}^Z'-?I }fJ'?>i#!6*Ḹ7T$+cuyo-2.1.0/data/pics/mdEisen09.xpm.gz0000644000175000017500000000320312412223255014157 00000000000000kWL)Gzhl]o bO[EEPٟٙMjMhs|Ӆfv ]YbyebYt/X ҙ(D9+,\bO<;uH|)sLɢD9-#YYrdNdY_ƹ +$qwHfPR{$2}YU-$K"}-odA)?*ʊ7C8"Y}5cU2H|Z(TL9`nd>f%U2Hd>`DI,֒UMQ2/$1v>WjT-kad듬(IKi$RkHJꡖ*K#9,  ɒq5qhCI*M0FzR8Qhƪ|*PR^7 mQ(kTdE*nzHEna;#su#M{ 2T}.R\gR$ѤJ9 ȟBI,s FJQqv UӸ±yEO F^Q{$֯&Q _H8ڝk.;tFy^3J_fir?+rm p4@ÉDlI^ s*^Fxu3x{a0GVL:T DE @6t:{Dg;ZpbX+_@t}XF&_ڵf#[cV7c ]grq6>"ls:Jua$;}6f9 23281 efBf7b faAk14Dc!d,1w3 {%>D<cfe?p;~_qJ7- cNyJzt$$<>.@'!a/~ٌ݇#ϡ9<$=?^kL=t?@zmx9[$: ÏĠ  [=XMEwKBI^κmqquhSnu ̈́Q8W} p`-fnf-ӅY_@VRxAqج\j?gR/_.-[%>c3i{: s9l,&cuyo-2.1.0/data/pics/ibwWellen.xpm.gz0000644000175000017500000000260007550521112014352 00000000000000M<ibwWellen.xpm[5_a8ypvMB"iVyBVR)*g.gqԦ>rfZ`5n'˻?`?#;nn^߳Vlu-}gy|Wovon#,>uY䲸_7kY_ڹjV,nLJ,dqať,~T;9CC<9CC<9CC<9CC<9CC<9CC<8\Ԕ> 8lV$L> &*W%qjá(s6 HL8i㟃geI3S/]b"3!p8W; sp!W.|1'=Zװ!?/? !&LDr8 {Cu6ejVw5f^ ].QljMLJ9 w!+DpM檧2g/<Pm N0e !(+"x*Hv|ah5o+% rhTغaaMs1?ި3}O6;"Dbsx1򩜕'G,95G1\xΑHnEN5Y=Qﴻ:cw. bAr_F:-9tJcF 'tg\ }a"jOGP/[ϨWR8CO#>6RB: g]Zk^:*V'nO8u&ƙyc*}IQ'1q.1:ҦƜ ִ1`5x bH,Q8@zV[[aQ]B`6"ۨ;2e4zX=Y"q۹j[ jH9ќ+>#Sv⪺rؐA#MkO38<ѩ7L^s aWeXhc{8 :@O阎¸HvA&N=8rdH \B-ZopBȚ0Ӱ=־ԃuoZ<+T|^sUȚOֺψ>VW;t?:=괫EG8'֖T}_!_"4ΗZgOu3V)K8u,}5t2gcnX2C=x}`(q\.ƘC֥ s9@:k:Z9'!;<+:j١IJ^$9;\f}||7^ 9CC<9CC<~yL ^zcuyo-2.1.0/data/pics/ithRosaL.xpm.gz0000755000175000017500000000065111101102053014140 00000000000000LGMK@EW<⮕TJfDJ)EBIɽI؅[3Cɠ'7WD,_e8{<,Wiؼ'zuw/㑜e$(`.O M0e}.&YffIRt7#jj`()mСJ`P' ?[ Mkwv4Сn^1s?+Qց1qlQЕa찧 FBv4бI0Yr!l7GyQM9lD!Y?ر{GpkG[ p[tu埾[VڊCh_緟%9ܷ6+@0t#X[1qN[Y #w cuyo-2.1.0/data/pics/msc3Info.xpm0000644000175000017500000004344312402435276013505 00000000000000/* XPM */ /* Copyright 2010,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 480 8 1", " c None", "1 c #808082", "2 c #808082", "3 c #808082", "4 c #808082", "5 c #808082", "6 c #808082", "# c #808082", " ", " ", " ", " ", " #### ", " ####1111### ", " ##11111111111## ", " #111111111111111# ", " #11111111111111111# ", " #111111111111111111# ", " #1111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111# ", " #11111111111111111111# ", " #1111111111111111111# ", " ##11111111111111111# ", " ##11111111111111# ", " ###111111111## ", " ####111## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### #### ", " ##222## ##3333## ", " #2222222#33333333# ", " #22222222#333333333# ", " #22222222#333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #222222222#33333333333# ", " #222222222#3333333333# ", " #222222222#3333333333# ", " #22222222#3333333333# ", " #22222222#333333333# ", " #2222222#333333333# ", " #222222#33333333# ", " ##222# ##3333## ", " ### #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ##### ", " ##2222## ##33333## ", " #22222222#333333333# ", " #222222222#3333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #22222222222#333333333333# ", " #2222222222#33333333333# ", " #2222222222#33333333333# ", " #222222222#3333333333# ", " #22222222#333333333# ", " ##2222## ##33333## ", " #### ##### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###### ", " ###### ##333333## ", " ##222222## #3333333333# ", " #2222222222##333333333333# ", " #222222222222#3333333333333# ", " #222222222222#3333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #2222222222222#33333333333333# ", " #222222222222#3333333333333# ", " #222222222222#3333333333333# ", " #2222222222##333333333333# ", " ##222222## #3333333333# ", " ###### ##333333## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ##### ", " ##11111## ", " ###### ##111111111# ", " ##222222## #111111111111# ", " #2222222222##1111111111111# ", " #222222222222#11111111111111# ", " #222222222222#11111111111111# ", " #2222222222222#11111111111111# ", " #2222222222222#1111111111111# ", " #2222222222222############## ", " #2222222222222#4444444444444# ", " #2222222222222#44444444444444# ", " #2222222222222#44444444444444# ", " #222222222222#44444444444444# ", " #222222222222#44444444444444# ", " #2222222222##4444444444444# ", " ##222222## #444444444444# ", " ###### ##444444444# ", " ##44444## ", " ##### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##1111111## ", " #11111111111# ", " #11111111111# ", " ###### #1111111111111# ", " ##222222###1111111111111# ", " #2222222222#1111111111111# ", " #22222222222#1111111111111# ", " #22222222222#1111111111111# ", " #2222222222222#11111111111# ", " #2222222222222#11111111111# ", " #22222222222222########### ", " #2222222222222#44444444444# ", " #2222222222222#44444444444# ", " #222222222222#4444444444444# ", " #22222222222#4444444444444# ", " #22222222222#4444444444444# ", " #222222222#44444444444444# ", " ##222222##44444444444444# ", " ###### #444444444444# ", " #444444444444# ", " #4444444444# ", " ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##1111111## ", " #11111111111# ", " ##### #11111111111# ", " ##33333### #1111111111111# ", " #3333333333##1111111111111# ", " #33333333333#1111111111111# ", " #333333333333#1111111111111# ", " #333333333333#1111111111111# ", " #3333333333333#11111111111# ", " #3333333333333#11111111111# ", " #3333333333333########### ", " #############44444444444# ", " #555555555555#44444444444# ", " #55555555555#4444444444444# ", " #555555555555#4444444444444# ", " #555555555555#4444444444444# ", " #55555555555#44444444444444# ", " #555555555##44444444444444# ", " ##5555### #444444444444# ", " #### #444444444444# ", " #4444444444# ", " ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##### ##1111111## ", " ##33333## #11111111111# ", " #333333333##11111111111# ", " #333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #33333333333#111111111111# ", " #33333333333#11111111111# ", " #3333333333#11111111111# ", " #3333333333############ ", " ###########44444444444# ", " #555555555#444444444444# ", " #555555555#4444444444444# ", " #5555555555#4444444444444# ", " #5555555555#4444444444444# ", " #555555555#44444444444444# ", " #555555555#44444444444444# ", " #55555555#4444444444444# ", " #55555555##444444444444# ", " ##5555## #4444444444# ", " #### ##444444## ", " ###### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " ##### ##1111111## ", " ##33333## #11111111111# ", " #333333333##11111111111# ", " #333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #3333333333#1111111111111# ", " #33333333333#111111111111# ", " #33333333333#11111111111# ", " #3333333333#11111111111# ", " #3333333333############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ####### ", " #### ##1111111## ", " #4444##11111111111# ", " #44444##11111111111# ", " #44444#1111111111111# ", " ##444444#1111111111111# ", " #66##4444#1111111111111# ", " #66666##44#1111111111111# ", " #6666666##4#111111111111# ", " #666666666##11111111111# ", " #6666666666#11111111111# ", " #666666666############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333##### ", " #4444#33333#555## ", " #44444#33333#55555# ", " #44444#33333#555555# ", " ##444444#3333#5555555# ", " #66##4444#3333#55555555# ", " #66666##44#3333#55555555# ", " #6666666##4#333#55555555# ", " #666666666##33#55555555# ", " #6666666666#33#55555555# ", " #666666666############ ", " ###########2222#666666# ", " #555555555#22222#666666# ", " #555555555#22222#6666666# ", " #5555555555#222222#666666# ", " #5555555555#222222#666666# ", " #555555555#2222222#66666# ", " #555555555#2222222#66666# ", " #55555555#22222222#666# ", " #55555555#22222222#### ", " ##5555## #2222222# ", " #### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333##### ", " #4444#33333#555## ", " #44444#33333#55555# ", " #44444#33333#555555# ", " ##444444#3333#5555555# ", " #66##4444#3333#55555555# ", " #66666##44#3333#55555555# ", " #6666666##4#333#55555555# ", " #666666666##33#55555555# ", " #6666666666#33#55555555# ", " #666666666############ ", " ############2222#666666# ", " #111111111#22222#666666# ", " #111111111#22222#6666666# ", " #111111111#222222#666666# ", " #111111###222222#666666# ", " #1111##3#2222222#66666# ", " #11##333#2222222#66666# ", " ##33333#22222222#666# ", " #3333#22222222#### ", " ##33##2222222# ", " ### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######333### ", " #4444#33333#1## ", " #44444#33333#111# ", " #44444#33333#1111# ", " ##444444#3333#111111# ", " #66##4444#3333#111111# ", " #66666##44#3333#1111111# ", " #6666666##4#333#111111## ", " #666666666##33#11111##44# ", " #6666666666#33#111##4444# ", " #666666666#######66#444# ", " ############2222#6666### ", " #111111111#22222#666666# ", " #111111111#22222#6666666# ", " #111111111#222222#666666# ", " #111111###222222#666666# ", " #1111##3#2222222#66666# ", " #11##333#2222222#66666# ", " ##33333#22222222#666# ", " #3333#22222222#### ", " ##33##2222222# ", " ### ##222## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ### ", " ######111### ", " #111111111111## ", " #111111111111111# ", " #1111111111111111# ", " ##111111111111111111# ", " #11111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " ##111111111111111111# ", " ##1111111111111### ", " ###111111111# ", " ####111## ", " ### ", " ", " ", " ", " ", " ", " ", " ", " ", " #### ", " ####1111### ", " ##11111111111## ", " #111111111111111# ", " #11111111111111111# ", " #111111111111111111# ", " #1111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #1111111111111111111111# ", " #11111111111111111111111# ", " #11111111111111111111111# ", " #1111111111111111111111# ", " #111111111111111111111# ", " #111111111111111111111# ", " ##111111111111111111# ", " ##1111111111111### ", " ###111111111# ", " ####111## ", " ### ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mdBoden04.xpm.gz0000644000175000017500000001040012412223240014125 00000000000000Z]sʲ}߿X`e4H,4Ɏc0#2&9}9U֩{n fԽzi|spm}ʮ?|)=8:vj>@=e6KSliTMx q˸\=M&Kh78Ҩ28q5 MHp5D6IՁUEZSH:WoKaRqiTv: QL\Bq,{MeڎeF)";i32}=3TX{~L`/M|OHı>+7GBhToKTITV\%*HK!cy_JdP_DUw"z()U7֫h̟4H!yiI9%?ExY8Oի_Nt6>e yF˟Kof̕6<.oZ9ǑWZ*EeUdPߵhjS\dSh3fӊuA7 ʵ ?J5-esQ^Ӽ7eX2}!cCiJ[@O(Ja&Wەd rL2e\F$hT'?7O_~a_~a_c Ϟ`z?=>{6Ki߷0<{3=:'vݴ 0-=렓c2v]'pdaY]?0-3Q IQ*6n_qUQ`'' 0^F=brSFA'p˧{ ȁd`G38rr6SE~Lɿ@q0-jGfrl2`^c1y|)ZSR̤LaPuRa:n/&{egYe*ok侶jtv/]66FhR O(Q*RT)| GD-}2΀>Lm8j?%AjM ΨC)BcdoI'9Ñ$yt//>Npd5OZ-K^'JX?C d[Xـ30j5Qkk$,J!K!Ro@8Yg <$o~Lu`uW<ђG8b`$R~M QV,u$DP2Y&Q>j6ʒ]j 4t?G}!}jw$rC۽RƯeQZ,oS6I8%*,A)w(Z-'h:LcPg_(AQRe89W@Cݳ/*etuūj'~ɞ ~ ii!Bt_0 `p=! keBٵ C v"NOg|)$^|*`¸|Ĺ'̯\sϟSHX"{]9s[O_> ̕^йR`z4ѿ׿tv3v`%s+(a* 1PVR9g|%> B.f. >X > =: ^պdV3دm$x׹9bHQ}6P2-|hApe>`"a;>Hø.(So+ p4k.XPsX@v쓐Vh #ݦo(%V/+TiMz6+ϕ#'HpH M'B͕=E@uX@;#QAZ/ \6fŨXV:kGpIv#`B[u[멏GB,ZIjVٰLZ%ߥ+2Y:DۃÆi6El ҞYpst4Ac^uk!6EzÇG8O0fɻmu{fhƃuh6jVU}?$-=k*mR O`x[c:M2B~Ou[ B]1úIW7pGH@,<4Mdn? V.0HѮΪdfE-Rok5􁂠s)01j]-+ jQ!~#RƄAV+! 2lfR iUmͣjnb6^bbҕ򶺻[aW?0i0 {sFm7Z~֬b*6fBɃu:C F:3gG*m(200f9[!JJj؄ |@&cuyo-2.1.0/data/pics/manGesichter1.xpm.gz0000644000175000017500000000715111646353245015135 00000000000000\i{_1M 2ڗR$,''(4N[Ua #W<6z9; 3K_^7&hEfW[SrHmoC XA-P, &cF U`8ֈUxH` `Ly0G*$ ṕ,(% E¶9Q*,s 'ëaz"L K`[X Pcd,O*2,!0D($$$%y%Id% tJa #dYh/9c$$EPx2EXvl<xB bxF`9I D^,ӋsŠ(|I` Pae%.|Ē"l *V=J#E<T# t -Qё‘6G0$P:8u#2Grc 8BrB8BVS)6lxFb9yN`%`Gh󄳇ۛ)\&io+L_{J"50_cQ K[#Ƃ|C mɠ' ;m'* @{?E R<(a7P$"(+ɣL/,3#T_x /[" dA"PMPZ  aϘ s~=7\\W+է2XLDc<'sp񺔔q=h398I51\eb=MUoW'"'ɞCO9+mFKTp0_#tVnx^|Dn>՞uQA7WQW7h|ao}=ktUN0{D/_Oŋ=R<k\֣ie<oqqNWy5El3DLL{kYi3jf\\-ܵ{=+N)<|tFF% R'_uw~_kJ~N TONONGIlVRK'}x\yqqiW/*NпߔvwwwKo &uØ:yvB%[./K-w8]K2Jóv0Ns2Y潽a ߃cDzy+HPp(8,Q9 WR:QtĦh]j`z#%6,r:+9)".c8L:!G).%{ ekF8L)A\l\Ki)A,R9߈AX1TXT/bM(U t?ס?tzu?|;` W ?hys_E+oAjkCjukhZ>1/SAPC{Vmc2Gj 9ځ9^8qP3ߣIG'doJzӾo.۝N]0 f j]!0]Yb8%jc>www߾apsf5R~[ҙؒnP })2T3ޓ]1V |M6aw{W fR7᪒^%(uH%T=$~c}=_/e^' C+s,;˽sxeenII#^NJAnKj=ֳ.l@QelCzr %#R.6OHqLZq{( 9di>=bR_Wyi9Xf|w >Hy_KnԪav?j"~b]N-` AbEAF*֣Czzf !xV $; aM#׶tb)/) E:dU~)SeΞnVv"8`iZv2kT*HW\WQ^Ӥ?XF<^O|? Coamj/aanbRa+\geI té *gqX4KaĒ݈<.,f$h9Ȱ];8iCMggrnqsDڵI2DOտd1#6\OF":K=ē7 su= ]w <'RP-?AnOPI) b~|xZ? O榲$C^آ}GO<{'!n¸OKngx ٴ~!* OxÃI_{@ ~0^a^O'|:bB2|j>{ئio. CPp)N7g95SR~R\ErlJW"ٚ\vƬ5m~+pNZ]4UlҸ,o/e\r̩BQ.߾?}ԯ07wK[J9ƣ M3Fa; V-!y[>j ƠMH vzÐ;/kԒPC+sI] q-`XӴ}IоՆV{0h>qwYbC!)k?<Ð;>Be72B5_img5Y^jZ%eY^n\s4FYPՅ>o헧{be[8[eyR Dg7R.=ṫc, hUSsbdԨV{en;YǗ@wi eG&vgCWgG.@zoןҸx%7i6$uke6>,,Lq-bϳX!m kf7}`uXϖ,}vzfvp&]d&&cgI:`t3˙wm CMWܦ.zYݝ` 4C&&& q~j{N->Ȓ56u:<Ӏ#(]kHe4++'#8= χ잓ٟ|MT /T;a=T9 /VJ|MT:KrHnD7Vul,udG2q]6)U0'Lb耑nWfT:+$ Nv)u %:hi-TjڃG8L\T3#*õ,2zI[?o. ÷տH,ަhcuyo-2.1.0/data/pics/moOctopus5.xpm.gz0000644000175000017500000000343310766714573014526 00000000000000Zi[LίTq:VY*k͜LLIKN{fN9 K7/ť㟛foPZ{[k|溩K"uߞ.IlF,K?>E@~(EױàaQPM5%Hļ$Tmhm =@i yeSp8 yUSpt ӤX&Fv .t- 8*6 nBv-3ʮ xt@\2u4Nֻ~ߥ &0;Quzl{X67$kQE윟Pw|9_s˧2> >\k1?5?;{2H_c ZcIz$e>G>>ЇoQ?'H2Kgs5~X 7oޠ5wD<EI=a/ΐw óM_\=cwpa.Ok3j5ߦ8WzUgg|g|'g‹Q 3w_Ͽ?>g?GV*jMI||8 븥9oH'm/}x.3s9A:>Ӽ𗐰}O9n3z!RH94)2 2  -`;l)?O2O-i|¡gcٽUjF/X&_ZYe$M8+u Gq/g%$M8{b>/pY&ub>E-EIQw"cTDR'(QI\BDR֕X_4")O@_4"OhBR?EBLREBdcMCL?`"QcM"BdBD_I@4"YCQ/DV/~'YawXu>O2}<I>>o0.I>ɾ}Ř$5{YH g8&3P+އ`.ϛdW'ŽwlqO].ɋڠOs"6>H;wcfj# ǕGꏫ4W8CL|>=':';'S<'S=('=('=i4?Dd"}2MCQ%3$+cuyo-2.1.0/data/pics/lreAlle.xpm.gz0000644000175000017500000000743412401656666014032 00000000000000W_+Bd̓`xE' 8DQьDDv{={_RSU=Uy;ߋ8o.c{zui?f^]Sb9Mib,{cئV7A `UQMQ[PSU9+4Tb2`uWŦ VYEﰚd-49,ZSVp YX=UnTURL8܆&5*V74 2XME3j,XjMnb5ռ& V!"MJpqCsyX5Ut*J"b&BXq@+пFQ[3$A>A"2Ih1'ܳHI!Fש4Ɓkǔ]ƠD ו)t7FA*ʍfrc,KPvS"nLK~I"ZgWa>#CϨ;NVYj 5G m  ;We&pM(N!==BR37""|=-T4l,ehgHQ~ XӖv?LIpoceO>/C{>o)xbOYa28avS4lÕ٘`IDOflĢ%h?9݌kyO$+gZAqg A5G!\DwyZ 9Ry10q,0{֦hHwér'NŦ3 #)ώ0Vbaj2R8[{HcJ0scb "ǝ?D6͇d^MM bH.*xdLYRa|p!-TF%_ǨD3>"**NnV^N0t(vQ cQ+"؍_1n,0w~ 0'+ EJAC{`:o;i- v#.W}?}\0=N=e$=Ht U8ZATm#Ox!(ݴ?) ?QvUA"- ZՂrYRV+z{8P 0#ìP޼Y_/ƿ('>þcuE&fS,?\d2b-}1*F/[W&L='(M*nB?>De0*Bb#Wppme(tja+4fFG GJE*)^`D,T2x!AsJFd9pe05'!sPk^ý3r,qݨr,91f͝#T'ei9n4ږ5?y?BnYn-c%׍&5{+7R1Z-pb̈Xb\GnXWpsIeYېeM6ެAw U >BLjnhc T+5~MV\Uo4*_E+(mjj޽N`xl= Zs7QaQx}i 7,;Gfgw΀aV<=x_/ƿHt} 0ǤPDM6K5d?QtCq=}b \OGMxO?n K\:raD1ϸT̐iJ]d~ЯY =T&cޞ'2.ߺ<_۶\Ans7/=o.#} n |#y}dˌSe׫Pp0ytq>mw6k2?VipD}<)g ;q?^c{|NZ72K5.KdϤv P>Ue2Яme{\/ڋ}|4ug Pcuyo-2.1.0/data/pics/mtGreyLeft.xpm.gz0000644000175000017500000000440312401656725014521 00000000000000\[w7}W8Pb68&BRЖr+|>3+$hK9f[sF+o=}Yًo7ǯzx^C_F6Iu֕ƳƵt9[ˎ^s4kџq?NQasMƉ?Ɲ=8 \#Um+I'Yu'GA2LA{ h?3{NΒn;zh'@ %Hv@8j,9@WӬ4N}@iFmt]5S89 9fЄwN4=iKceJNYa'w},K!rلauh޲_l7tjyrJi?K G@0k;:jTԖ]:߱edRrڄm6s [e>sa/q{åvt՚* l)\jMG} ?|waOةRSGy܎mƃ  q[Nf- W JJ 'MK&vҟlM=dCm;&9A5}W@Ӥ/h?gPh6s蜿}iڎVZׁoo'-lJSCZ :_(]pTZ)Xw8zRҎK/A{ݞ96T2mFj]w8j'[pQhG)P=K7_?j x(."x(."x(."x(."x(."x(.ꢂ߯iUO`=GBNXӑb=HҤR؀3CМRID#t#F9eVh2Q$T5`硩T.HGc#!D V|o5r:,M'AeׁлBECFjVC r"y!VLBIBk{"҆>^u~/(";p5ooGqF Ҁ9 . kj'1Zb5ooWQ"" ÊHb~7@yh7)> d2Lmqړ1#`@&$Aj-&00!Z( 4>y;(AM\‹95V() 7Hw]:;@t T)7Op6џ#Nܗv9#iw vV^ 9@>Ďcn | -0|@81]گ9؟૤O`?02;Tԃ[ 8*CEun%P\ C H1A$ 3wW5n*0ڲl)zΆ:#.GGJ1aF,H[aDrZ0vig`?|ռocde|w(qYU^J1X A>/Nbx If,+jLWaewR}wuF\ȕ1(z˾z׹g_Gen=7t^?~R+\+>y.w{QT`/KU+ \'؄ (a, 0e A |%$kTa)^@Q.Ss$A0U X) Ta "* P4T(r Rf)E !IJaX aXAb!,rAbJ[AbVm3H0HP&Ա҈C|MP!؄FPaT`j0]@ MA4yE?4`[ p<DgQT *iO%* UaTPhQ );A?;!Ҡ $vBXAb/$e/A%/JjG!"+i o' RA0o R O< ( 0xxk*HބT4!4HjA\g,dLR>TKkǞ7|TvwTEQuljʤ*K~&QrqT~[a*kUD:4}CZ7ǯ)N%7Iiֺm^ɽEQ`7g䵵ZTx`X{[roMW?;99{_$G4V9pVU&R* v8_j V1f:$RUkCM5样?]]W"Uc ǫLoY݁Ѫ4WBQiuwPciY{6Zۻ=TT݋1/yOƇMtcOropTս}duu1੤hqXm[VhL𩤴:&W[Tt;/&uC].?S'}pUnIo55r(<>:V\A07ENP k* .;%I~cYmfg"ٚW9#676+ͬ}9Ϭ}R;;u3{Pك֒bXAY^G'#XJgÙ(E;fRhxj)bi|TcjےY4>vVuMPtxZlI}cc{i_yn>6luͱ>:/柘i|tm2mEbͥOǓ<GGVԿH|oB6R ix"}F x2^.$N/cޗ4%uǮt(U\$_mIt h,T:屧R*!X~ⱟN뫬kqrvs)(]sw'ObO )4? Q jGz<`\sAy躵:FkK<`H-ȗ_?;Qr@ XrcbǡEdǀ{a:Xb@)sU0y<8zBեAY `:+CSU$xx+`qcn,TB*Uj72U.7Tp^,d x 07\Rf0bW92eg")p, ,#̲O0y3YmjYan3;UlN3cpEhGp"XJ|ksJ٥{.-^UJk>s͡tqAN9qQ9ȡN:w®\ .FȍNÿ.wq#t9)go8Qs.ă ؁)͊ lt`罵 ƧR69(Uor[ SitPsjEm)~pbh@Exzr[hGbjHb#".U clDwq8?*C|{8s I}ݬcϢ,a I1;VVOQ_(Ε;[Ra߹ql>wLڎcQ=ǎ[?$Y?Hs{_X}u?QD cuyo-2.1.0/data/pics/mdEisen06.xpm.gz0000644000175000017500000000602012412223255014154 00000000000000kSFSnm0Ų5lPJ=v%Mg9gm ϓVg6oiw7)w6㣍wxbx>{376wu! )6ow(6Xo {% }?5CgqoH|J^BA0 ɓQ<47р:!9QM 7!g&NB>G9*_K9<MtoHaDzk݈eҍeDմx&QKS/:響$xd$;g&UGGƢO2$u]ssznDC2da*8,@Xu|Y\g0_7W;ۇN0R !nEuP@پV;5!L0e0ޘgUUeN4 U`z? !©j ?U98H < B&wyffǐ3Kɏcre۩dUi[}˳O-/Yܚ^\LR=-Gxlz1ӎ_ *A=g[ah .ln6[mKXw0@3KȠTTL,Df~> V|ΰ&?;>E~@ Z`rڎ``Tt/tnPĐ:g\bKuw3X-8ԆovCqC#CISTQ:?ft6·=hyٴ79N`d͐ >jps1 mpt:5i?/)72\w.Kk_ zd085&t6L"Ra_` 5a ]g b} C1"u>!GA KX{ЭW s..8 ?$4I¿E^!C|K˯bZ3xkƣb'p\16d P!d(1xu0'ïe(/^C:D=?tYp(굕Tvҙ-*Zt>Sa SQIq\6 k 0!?s x޴`>?'Zy2e0'8d mJ2㇈: \y2[lj35C^1(|2yZ s^)~=^|\Tr 9t c(TYf 1'NFFenC@iQ>1^6fh>gaJh4/ߧMt k̥c§A2/0\޼3||mŧINɠX"l:Z`XO8>uNN&EԐb|,iY"J(Q~Nʓ|tKEy|ҳjZKY5l^}j 2@;5 lJ[rZ@,l=`L#zG AjfitTQ`k6 ,嫛P.q .< dŤq3o )>GG}"gOܹ#k0uG}_\#ş{Y$&;4fZ8N?ߋR}Kѽ,O73<>WYmdO~Ѻeeeeeeeeeҿʿ+%7cuyo-2.1.0/data/pics/ieOben.xpm.gz0000644000175000017500000000167107550521112013632 00000000000000<ieOben.xpm]o0鯰4 beLBK$Ш* ] !;ة?cevr&M=7o34iw&?%뻛9|E˟?}&/l/Ȟ<]>^,ɣy?i~{ci+,,|~XZt˃%_]nXt۝bt-quOLÚG*1y)]3!E1{1{,VtG_G07Izϣ$>ra(7~s?C9 tq""!sԨ#EDC * 1x%V]k@=,AEhpUL xx\  %`]M#gj"L?3)kTl ʵ*[̤kFHxW-gR9XxG**q=*cj^2q=*cj^j"j;z*ekThxCEcP gy}idH s{?C81y;?a䥇zW1 = aT>C`4(YhxaKa p1fp=>xKSG#3OxMEUhJ"*PCI5jE-=AjT+փ'N+J}NgoƕCWhB6s𙟡|jL>\=y}=W'&Nh^T#Wywxׇ0W5/ L3Bk蝢4}w)_3xAߢ Cfy岕[`eqj" 8. 3@0H2\"xd" -RϐpX3 2<a}4L)Ȑy`e6ɋ]0^b"pL" ` u3,W%ͦ)lj9f (im*@6d}ULѴm͌LEdEr=$5ffj7B ĀfӁ(Y4'PjÅ7\AzuH~gh .mN3>! ՗Had3ܰm{v2UaCyv<዁fiN̙v ӏl6^aކ0Ë~{:}Ϯϧ=9 ã_A 3i}^pz:ΞH8xvo{ GqkpkLWS=?80 ߞb8N,/Ɠה5"_d(Jd(J ރ?xmE%7cuyo-2.1.0/data/pics/ispBeige.xpm.gz0000644000175000017500000000112211655275457014172 00000000000000KA+ōS+%з "BzCxgΞ ='.D_دa?C*V2Ao+d$Bo=:D*YA+k\JFZ%<@i5>,%#ȸ.Y)Cΐe4(jJ]VF}cj),!#C &6zT6F )#&j"cJ2H NAVA!!fy$p' y$&8qsH`RTS"8&^&# 8CX@gũ%OH, ⢼lz|/NhHGq<L8+J54V0 Y/3H-(I %Y$p8GE+cHwq87C6F⸻U i2=qQ=$Ez$Kl|B0Lܱœ\ܓ⸗ $f@nrhoi3ikR Hx, i9[]kcHq$Yz0m5b8\f%^q)ʵBPv9\箺\ z3zl- j]i\X2}tv}Ri#t:5+nCa,nZ2ԆOs*Oޭwx 6ݦ8(ҷ W/KP&U-TS<}@.޹ bL2^ž~jⲧ<҅{349vvoyg- otYn$9=ѝϬPsd,/tgw zv{Ô˪w.g<ƃ`<3(z]_nZ?xndtF"tc!v#TzxJG*42?}&uj+؏a?C*V2Ao+d$Bo=:D*YAkk\JF1JxU: Ʀi%fY9Cr DWWPJj2d Vֆ e$HQ`1I1w\&1$${Di%dbFKs|%dbYMI) q#%fPDeY8c.(1J HH F U"O4-'Fd 5 2'BhY+Yh݈;3A3#dGnD܊q +qVݍ'3(cuyo-2.1.0/data/pics/mdEgoR02.xpm.gz0000644000175000017500000000525612412223250013746 00000000000000k{S@ @]/Ү qIcC]33+sF{o;%ow_]~RE*.Wԟ/^Vv |e*Kp t 4*VK3r}[-kV%l A\׶l7c-Q(Yk& &_)W%FZSe4z#K[u4t3\sb5>.utOnED,Y[uA~}ߣ5p[7+Y&@ 2utMr ˷ȵu&k-edJ؆MپM.({5& 1&)٢o0Vp7& CѰ1"Suf}Ct:T 2tT(te%>t.ks?J .pQahPi4րa"ƝYg;J>J;ff#><.94* QH;;;BS`X>SW MtG(Ni, dWPp< Q"G+1<<2DFnM%J"! (xt6B)})+Ƹi3_y`h gJύ@ST5(utK>dn4vKYuU$B.M ªPAh­@FF@vJ ! 1x/0lw u wksrsԞdͦ{o1:,~ub-@nO|o^D exdP:.vU9!Oଥ i[@p7sKvxNE)ߜsj`ͫZ! *Blu|ed(T&Y8ܔ146 ޮ3d0_5W`r* C ֵnc j}Ǘ<^nnTgjo\w@ ߗw B0h\,V:zt!=_b=+v HT9cY ĐAX(M=%]x LK w^/!+΃) Sf X;ts{* [}_ jy)S%\/* "`laٚ٠Cr[a?#F|-⦨9sl6s|!\Y?|ZV0ɤr{S*Kq9.-^u(QYa_倡B q{!I01Bt8<^-y cSjV`D#3JvX ~d:}9|F>ŕN%m3yow^;Lx&aTߓ:>]u9s^GN)E[׋z@jO-3Ӷ'o o0u;h?n`~wS0@uԴ_y;@@: ĩm} C'[к8iű,HY,*V?: ",1<+cuyo-2.1.0/data/pics/mdBoden10.xpm.gz0000644000175000017500000001023412412223242014131 00000000000000ZmsH>=rl<%A4Ub&" clL#A< >"uí9:yss29{vtw5>zvGoѳ'Q8rY-O Zƴ)j [~g @x|W~W~5,쉡Iora{%^X*)g5t+Au2gmn c!)(wmf7{آ}RحarWepR*@ uO&TL} =՛jm3־p3f`}g`0eL`3<8>͡91 ՗/oaoao{1|C^/_enx ;\y0U?߂ᰳЩujEK:5@i ]Mi`_0M|z@x]ks t5jyG?~ iP]"Hϩ'_=߼y9m{3 j'~1&UTv] ן+B_<|~V:6bWn[n6+Njbv~_3vPJbi#˯bm;mjknQԊvS]-7.*A \UYTb=P%I_chvRK][m-$=+EdyR"lWۜ͊$)@Td$Lڇwȓy:Th|IN:w^WKE.r9rfqiޖ*Vx]j+ia hY3l ^Zѽi_v/KZ[TBgWf%fy*kA& НơJX@ny7/cҭ r[bTOE vg:7,M{ u BuUJ]_]_*p*U!b, r#7EvJ]]/KxW U $*v;f 6IӧOEtJoYW~BHn"x=X_IZe!hH*L|0u7L{5jyS @+7p^Pp2,7wz/wQJ\Qil ,Ȳ,Sh@~YwiSW4ju3WWHNyr]D (vm\E>9ӢDž?NMc(MtxD%MKZwHըU)@Ȁ޹jAnY?A h@#x+aAzCyj Ѓ*QI}QJAŴ,EBD%(xX1`}˫w a-i WSʫ~*\0S“S?}I$tN///{#> yDH&0 S e1B)J6M,ޤxtM^dz=$s@ݥ މgI3bsb\x>..룠X BĈMQeqMpsŋ50 G*'"eİ[=R{AG %gܣܦϟq`:RK/}\SgKF~g01GhrC:(B?EQf Qrϼ.mqFpV'6/ xFā#ȅQY:@ 0)YD@ a_D VJ)>w)1n֒,OM-n}g/!K">NˑKj+d;>RYK}T ,HF䖀.d8} ,u9IEϟ?d 9;u8(|NJmU]H)#1dٰIPd{3BGM!ns,nqgnY1 iy ,gu>zSfW*0#&QZKP S?oma!Ta#ko׭3"n >m[bE[J]HLuAhSLK.JA˴>MaJv]b;}jє,߂ 0F0e=?х`9[z&S 9L7-NO%%ep/..D`a0HݍD08(&P~:<#tv`ld6;eprƺ`yk3~uyBU-O4G8pޖFaEK:]8KŐ6Ylgkiߧ{$g- dC{ow.0H}Ɋ̡Tzt 1:/)F衳t`Yu"!Ҷ {vKHGwi1nw}fwt}oY- 3 y}r.ψA2CfnzuNUF)̙o.-NN@t" v/ֱ?daC{]Un6 Em}pDiO"&hʁXҖ1lY]C~A ٌ,yZ6 }m&M=flP#9؊NHFI0E >zt+'Dbv$3luf[- u%jssi[b{裹g%.[4 pZ }C濅&#tvuR 2jg,wa{djX q?fc`>cfƻ(%)R nw f,%  >xU.| -Qd:uz[>Ben#Ǭ{m471Ě_z(qrPժ3>]fz2E7/~#Pج v&o#Hau: Nٞho rq}ޭsCt), g}G&cuyo-2.1.0/data/pics/msc1B.xpm0000644000175000017500000002430611545155530012765 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 2 1", " c None", "# c Background", " # ", " # ", " ## ", " # ", " # # ", " # ## ", " ## # ", " # ## ", " ## # ", " # ## ## ", " # ### # ", " ## ## ## ", " ### ### ## ", " ### ### ### ", " ### ### ### ", " #### #### #### ", " #### #### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###", " ### #### ", " ### #### ### ", " ##### #### #### ", " ###### ##### ##### ", " ####### ###### ###### ", " ###### ###### ##### ", " #### #### #### ", " ## ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ######## ############## #################", " ############ ########### ############ ", " ####### ###### ###### ", " ### ## ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/mihStein.xpm0000644000175000017500000000372211653610754013603 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 32 3 1", " c None", ". c #5f5f5f", "# c #000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ###### ", " #####......## ", " ####.............# ", " ###..................# ", " ##.....................# ", " #........................# ", " #.........................# ", " #..........................# ", " #...........................# ", " #...........................# ", " #............................# ", " #............................# ", " #...........................# ", " ##........####..........### ", " ######### ########## ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/ithOrangeR.xpm.gz0000755000175000017500000000064011101102053014453 00000000000000AK0S gs;2;:ԡuCGsmXr0mk.{d# `/a֥c0iEGe6/FH8}s2psq<e(,;t{qGeG;݉eG=8vs1'[ۉ;zq#"w*AcAUo?S:CkK_!Gim֖Z[F0r`A^!eG}~Yÿp{+b-G İ8> :icuyo-2.1.0/data/pics/dnBlack.xpm.gz0000644000175000017500000000107307550521110013761 00000000000000<dnBlack.xpmMK@W MҕUDEgţ "% ZE{n666mu'&Û>~N3 G|: )|~Аgg/NLHi2uAѹ;G\ ;׮b@".;.Y60 b~F/]wqVbH2RJҳ ]YÔa(ʕ0g J?Ęa|:_zAμw0q86Z_8>alr8,֬^)"nZ'Qg.d`0t1i98z]60ph Z֙,֬dgKK1꽫 R,F̪Ȁ0 `CG b]$f1 'B|RA$wBmn _fACu[,ԉH_Va1 ԇòK?$$?l `Qk7C,כ:Xmn-C:ŚEJǓg8- 8=jBcuyo-2.1.0/data/pics/bxBall80.xpm.gz0000644000175000017500000000420510361553650014007 00000000000000b=bxBall80.xpmkS+2Rr0b@QE1U!/ fr$Ξ5VMz=.t'=;e ٳ<ƚ2۾5kT7J~'3f:a:Ίδ8zsW]aП&1ם c3 KK^%N² RCd,^a8Xnc)H\UD,3pu 8MEtA@fAMձ,DrlQ"WQe.\Ue,*sRYr<$A߰UHKEl4l< # XJ0R42 KUNRW *\E4p%J tRA68^Ѡ(OpU>}us%arJ.}zm/W s! c UP{`+X $H`ZJ҇pFWY;lY:$~_.Ȝ;|# lI٤6O<@`Rn߃DWNJ):'kD@E*Oƪ<deS"E-Cg)Q_YTCp%MWaβf HUw<9k~@ZA:՟ ["_4$uՆiXڀHD M݈Iw' \!#r@:C792dwA-pld|2>a&2n۩2?`Y6 2_25:S`=mQ !$J"=5vY@`K$0-R*fTZ18xFP[,Q{UplfrH|uS)޾-2ՇX(=OLJb1![[m ;?"NY  ;ͨr9_W}'6 D0$_ ޢn(FS*["b+Fm +\s ]=H=ɭlYvf%!u3kĪr~'#jxV8o#^_L<F.W&tr2aoKTSF $ѻXvj"81=bRN0؞q_/ֵ1YH@;.!%0:f?;fSU0Zuim d{}U-qmza4b19d rvTA 2l5A;Q!Ź轔˶!sл.}Q<9M ,;_@qRnL4c eOi26%CnzzŸG *+~gBJ "w1>*ǍU6sɮWF3vݽju@8IAw< 0.C( ֋xˌ\RC(}UyuyZi md>ngy2/3߉JNLFq]a(dDEcH{om%Zhuce<` j"s+ O;S 0HסV){ øl%0I'_ -Q7+%R/~>W /5#Ae *Pׅ$O}@{Eǔg٩-}c"kK )59T7nեO5pZ]%J+ 39L! )>t^ zVZe6)2VmAF1d|2b?Qʘ*cuyo-2.1.0/data/pics/i3Dreieck.xpm.gz0000644000175000017500000000274612420650607014243 00000000000000OFǟ_@p.q!! Drǽc*B*C{{=2xwfw6FwaĽN??߾|{~ 5矾>=?= dL`GO?3)#.w@8[&#)@B8\̇s;Nk/ӳm,p@8R@;q ܖ 9/J9 |0az@^z'p@ؓZ /P 8 'UW%Eaݞ$r"_HBKmqQV})aEc(E0FHt)-@ #tQ=F8#kVU*WEFhRqFaz%U E"(.uUeir';I~NqaV})a~" 7'@;Oc(T# $oƨ hSgtg;Ԩx)8~* R񻄦S%#߁~2# F`5*2TGҿwF&맽?c$T~f>K2{DɲKR5Ȧ5  pPUtgdT)!'א6@ı #_Qg7Hgp~Q\#}Un7bd/hU-͘,"_[01_lk[U9~+F]&#sƴtgdQ Z Ć ͪhɈڽ\&V~u,1z& -2Z2kFjFkUѫ!YɍD??XU:7 \??Xeָ6?2,""#c~2}D #S~ 3Jq\adUe7VUƨRG;fG~"*e5RVG~3F? =VG~*?#?ګ#b}N^aY]Q TC3F֫* MP~_èDՌpՌpՌpFۏmh~?pc ~?p H~40iЄ`_Cn M8F54#:ݫskFX FEχTϭa .D\PK?w$8aӪ۷W}h^WW{rmwBKF YVw~g_sKkF Yfwrvmw'wNJ?ocuyo-2.1.0/data/pics/mlSorte5.xpm.gz0000644000175000017500000000422611672457347014164 00000000000000|N՛Qo6)x؆nѴ4tVjar cw-y?JS r(vtH^]]Jӌxs;?t0D(w,qD$a'=תlxJh=E1J~4&_4hg4:Uq84ċ,YDqF|rUn|O4wE }Qjy7)GEDf1&37) :KU)=k::XPR0[çfD[2\nOͯibj^؊g1mle~| ޞ:ݚfpHgi@WOk<|%Fk( }U&( b[ӹ 74|L'46_}VY27)4O}Kcsd\_nn^N)Y86}:\-:6Yd_^ z~IWEf,i< S:| 4^^ hLA/?֗]sỵg>wXgG`տ(@7"Dl~dԯgCN }/@COgڷ *>=!C "b 6we -Y ҿkDLvf>^o``( CڲƷPW6?h Lfت/HkL5&u U5~?/{q3hzq3rx u6 ҿ4U0)96rdAr½N[Byc0-\oˠ hsGAl@K!C'p֫;B~7Nr&[aWTF '路/e}_g*"vGߟ؟_O TЭa OuOBVca `vd  Vip m' g C e~f귗Y}zw jO_}B97+:4@ȀN_,^ ~cWaZ9 #J_h,WzuvR?5!5?@7C8 p5"514C3@ zP>K!WT2; l<|cc@"A>0 nc]Qמ_`U| imdpۧ =15 a]ƿ`ߙ5=I?JhI1<5- WB2v =1Ao=?R ]kAxꋒ A7O_g~ uE/ kTg7ȿƠ0ʠ+w?H5vze[} M1Ret6{,1tg~ng~SNLݚ361C_ Rh g@zA p|}Ƀ >\??0[ND*VWOp6__0|g\_/[H7K=_p@d~v}TkP7HFvы `mg`+GcR ^}3Ԍm6c7(@!M揪d2/ҿkۏj4p yT67 Ao/ @}>{ A>յƀ ?]a0_aN \gC0 zݶ^z(uM'3"~=zDq,*}#~8Tk~iPF1?!$CnG!e ק>.0@aWGBy_NU?P_PA:C[{_;=YܙEcuyo-2.1.0/data/pics/mdZiegel02.xpm.gz0000644000175000017500000001030212412223270014317 00000000000000m{SȕRуyZq$KBĩW|;iMb%g?3 @^Ck k/=o^Enj7>o~zY>}m:|[v 1urnu ]]9]={팜}t}dO]qZnn 5\ 7t rpC'rpC`6k2] rdzCtw9`tk;8gt#ו)EK.l6;hEMLMMGzGjtȣ!\.ew&Fu1;p)o=y#܎79LZMiǠgt +!;+:@<:x&HzGGؑn%ՙ w0?)-/\&ä-܃ģ|NХMMuöѥ<7 ?Ȏ„do(1~&Wz#յLJHqZZ'F3 &T-; PQnc¯+}/;to2Gy pOl~ 7dSۅs O rn&lo{ҍ.W `tB7nƴw2caBM\fh$"Hoܖ?j1]ww4i}Kp`:ޠ=p櫗t"7 O>?Cl0z+2t_˰`ժ@o+Ι]+*Y}{09ӭ zb֦18fhMV9w Hr>&DtX0aӁ؂BiPObQ!w${?jaɰڂMz:W3P'PZHj+$BNEےZ՚B8ZBA =Rtp*?k -ukC%7A#cUC~hWKOgl:giB,<_B1^w5mhVۭF c.|ss-0}j`þW3yuOs`N4 .r9ٝ0 Bt^`}]VX0-@`D|· aBŰz%2p $yCòQl0\3ԾV0AtN@m0j \1N=r]S\0LodLkz }1t*t@ \F5!%0ɥ0U:0_q!cNr<"Xkv99:b_+  NC-OK>10uath6D`agު0 01fžQ8 (9J0s<250Z-a,aPZnOLif92!;C!`ָA>S$fh~y>@ Ӄ0aRj62jpatj7rS~)QϹi ֭B}Cƞ^P1ؚG".P 1"¦ h5b `ؗ5b~hjnl@e +bRʇ; :Г =U,`BwbGC=/aa?EDl02l`Zi(2`mWC[P02dU0 am09X`!fE8Mv P'̜ M婚F `a %B/O&PAXs'5Y8w}gqZXM05d椵z~XV V(ʚ&CeZhr\ ~!33 NFQV :hObQOKUbQ|apk85zj՚A.fn`14rPu,z:P PӀu0|ïҡ3}a>#F3/z$9,= WN+F&.MXY2r+Zج!pety\Q͊`}͏-32AZ L,0竆YO@zm8"Em eP=FECk4vRz)DV2'mZ% W]wsyaG [ C`oX(kwpw !2}PУ9:ZdkAN­/L{ `\[Vo04ZE(Tm ߹,)n&r' )^r_^`=p`HpPf{ &n@83:s~ P" YD@ir2 %//u~EQtT"BX1@@| {)MPK1 k7B? be,d d _)1&A-=G_ A^N MZ rD\ _ cDX>Z~N0m po-3E; 0XWk kP<Z.-b)'r=RCT0$wa>ë́1NY/&6 L٭x} T"7Jsͳ% A#\˚$1a|8Ehߗ5cO}P8R2R 2X^x+_o=ƝN~GE;X5\0``1Gq up-~yDѐI8EĠD.f)Ȑ[ٵwECȰ9GPqooX1)CEO ;ٓSE;(ԙC tCc42a2)Ko1{r}j;1XZW: lq-܌d8'תf?NdWe `??z۳[y1)@78*ٹyd CGqm@9\v:g%dD~ݔ֐Bz?N a$. h}]$y,cafo?;1tӋه3Ι|8@gVb[+& )/=/IW@N]ӊJŘhiM=x,͈/=Xq~ʰY.K2 Ϟks/ß#w鐸*2ȧx7HtorGcuyo-2.1.0/data/pics/mmBlau.xpm0000644000175000017500000002275711672457347013261 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "64 128 9 1", " c None", "# c #000000", ". c #6060ff", "1 c #8080ff", "2 c #5080ff", "3 c #6040ff", "4 c #8090e0", "5 c #4040ff", "6 c #9070ff", " ", " ## ## ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #...# #...# ", " #...# #...# ", " #.# #.# ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " ## ## ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #.# ## #.# ", " #.# #33# #..# ", " #.# #333#333# ", " #.# ## #3333333# ", " #.# #11# ## #3333333# ", " #.##1111# #22# #333333333# ", " #111111# #222#2233333333# ", " #111111# ##2222233333333# ", " #111111# #22222233333333## ", " #1111111.## #222222223333333..### ", " #####1111111##..### #..2222222##33333##...#### ", " ####.....111111# ##...### ..##222222# #333# ###.... ", " ....#####11111# ###... .# #22222# #...## #### ", " #### #111# ### # #22222# ##...## ", " #.# #22222# ##...## ", " #.# #2222.# ##...# ", " #.# #..##..# ##.# ", " #.# #.# #..# # ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# ## ", " #.# #.# ", " ", " ", " ", " # ", " #.# ## ", " #..# #44# ", " #..# #44# #.# ## ", " #..#4444#..# #66# ### ", " #.444444.# #66# ##..# ", " #444444# #66#..## ", " #44444# ##666.## ", " #44444# ##..666# ", " #4444# ##..##6666# ", " #44444# #..## #666# ", " #44444# ### #666# ", " #..444# #66666# ", " #..#..# ## #.666.# ", " #.##..# #55# #..##.# ", " #..##..# #55# #.# #..# ", " ..# #######5555# #.## #..# ", " .# #.....55555####..# #.. ", " # ######55555..#.## ## ", " #.# #55555###.# ", " #.# #5555# #.# ", " ## #5555# ## ", " #.555# ", " ##..##.# ", " ##..## #.# ", " #..## #.# ", " ## #.# ", " #.# ", " #.# ", " ", " ", " "}; cuyo-2.1.0/data/pics/i6Gross1.xpm.gz0000644000175000017500000000251207550521111014040 00000000000000<i6Gross1.xpmRXǧmcbBN; 6;6.R FQA>jz1Us1,ַ m[+lkkÇC4e[鰃pnjgJ^yYdnk+'另Rwod '厔saJ,,J!e“3bVʔ#&6F* JW@.O^.$BBf -^ }TȒ2 sbuHwd S*4y6V!]jO\xT垈WȐzIcSx]ؕrǀلWP0̮BJ{ũ,v^&te$ʓuaٙWpۀ7t8l^&R:c/kP*bu{Dl6.jֆad13boEż=H.2ۗvUl1pإ&=`tr2ACH k6c(4tmH^y2>kY]4}HmFRZ6Y I^\^,ZDŸgK0l`֤C`#)Mn2 :tM \l'$Q۬gFlYJCLSxjf^{# /@?μžw.;1rF%祌^GMwvQ Zj&QӒ\__Sd-](^^^RF={Kg_RM4*U($3V=}=dd6}t:Pdf6iooTj&1nԶrgg&k.1-~5Lr$Fekjuii=t[^ɦyk\\\S#y5ÐԅfD~8& ˕ZF>zӹ$5ft{ ]z^1jݻ!j%0^y<3f3vvnK3όɤw<8zz~Il2ј~OD<ᐨ3l 4O ^FD L# OM%0ǥxx(Ba7||tR2zҒԏ-)+DŽItZ* ADIOiRDQ̑%2jR-ܠDU@YRY?1guΟQjTGV0J4`9TE~~lxF-aRQy #[H9Z`f<򽀶hPѲ~zY%":-ӽ[\3cuyo-2.1.0/data/pics/bxBuch48.xpm.gz0000644000175000017500000000343310361553650014024 00000000000000b=bxBuch48.xpmkS"Y+ QԽ P@D@F+]Xfqfb힩R F|}}ݨ G;N`̈́}{y /;G3~~l6G1iě}3vbj M`_w#E*iLb#&)ʲLbkꀤ.k2G]Uisy"&3 D[i*Q&I$(eUqT)JՖ%D'\ʒ(0e$[h* *kdA"ֶ%唢AkK<:BgtVẠ|U#G+/+YpLy`Pa-Zul<$]aKHu,FGUGB@E_n[2€oKm~X52mfK~Amѡ!C4uV$\&i[GIʣ1$!XbhD栬4dUo;t6;'2%HtnQs (ZB{[yA%L4KCV (WjF*J[eMC٠ͮk0^fѢ͚ԹC|O7kl2iHoG67+Ui@X}1` ,V@{<3hsߥ(K"P~Yp~9}B~#FĈ#bD1"FĈ>W! =>#pwSf>-7C{hO!?b|jOǿ"}}N.r7_Q T` #U=>V8|$u[{f,IhX֥J}խ4Z)W{{&p~J^;<B>=`{ K:#vFcj41}TO,dV ܍=Z kh1Q1 VǠ'2tXW7 i%I@#+G| bd[j<^?1[FyU9$$x_ 4 aT 1ޤUjquAb4gLuN7Yz @ԫCV0Z?d #zyyyI@y׬TAFӷtad =̩j0;p0cDq5 K=B>V0sS}!YbĈ"B[FBfe.zy}0d<{%1| 9B\`1Z(a(VRhZtj&~a@$r~+Tᢣ"A_3zάo}ӟx"BI &25D@hZc (Qum2O3(n bsf,VcDV9%y lf _9tC.pFPP5L?=YC3^Ih|$')uCt+ n6v'dovoPS>kaXLK_a`ѭ.:'y 0""gnJGY?d,TǛR lA v=4.z"6bm,٠:+V\nE.]G( eX/(:a5ɆY{e\+I3tGդw9H S XEgZ|<6+-b.F8CK|1Y[B9ꚁ~pボ6qZϔ-kه j1H:u$^i)6> A k_Pw08>0,V0mO.cFʀ:N#^0KI6f(G5d@ZgRs}iL3),`>F)hm1   NVI]'?{ Ea:4&ƒZ>;(p4)/ئ> 5Q[؍(w!ħ!qDw^Πkl*Vn "MPwQCɶ}hqԨs Ltkyn(&%IA*Dcϑ1;C[I\ԪX9vVE3h\"0C5a3` *:O!tEb+~λL7f0C ?"tBcuyo-2.1.0/data/pics/spPacman10.xpm.gz0000644000175000017500000000062611662241763014345 00000000000000=spPacman10.xpmAK0H9D(rSvDA ebHߖVSS^4i_2~yK(kIKN1m7ˢ\tY=<5}|J.( σJ{[?de:T2sӜNB/dzxN 0~36=y~T~U H%A2cuyo-2.1.0/data/pics/itLeer.xpm.gz0000644000175000017500000000146707550521116013664 00000000000000=itLeer.xpmOAMev xQ%܃Xsn2d{jCݮ1I֤]-‡ojss]՗7_?~^߳uXxl»ֻf6O(L\Fiv("qc| i̦Ht$q;:3sЈ Ј Ј Ј Ј ЈET1T/'F?b?xs00c`1hbd*#ZĄFLhĄFLhĄFLhĄFLhĄFLhĄFLhĄI?Xmdcz9<4Xgdcd3GGG #?V#&4bB#&4bB#&4bB#&4bB#&4bB#&4b2rjc{cuyo-2.1.0/data/pics/mjZeug6.xpm.gz0000644000175000017500000000242711043161242013754 00000000000000KG )`L>,9d߂*=R1YH]ү$C=3wۯ_H_;zz~z';z57nn=|jgѱm|i` 9g B`XyʀV-`f24 +Ud`ϠPoe.5?Lӓ1= 4 'setY2"͑ؾ4FFČ$aPQ:hڏk2RqÊc B7V3&BϏ1"eKfƊ%"Dv2)E=fCF8wwD{I0=#[ y53*Zβ Y;b)da1zZt'Ӳ2„ L9eppuyPg481|<] vĩa'atq0LJ6ek}#FMȐ*C#J32@u1AMRe3,=hPQ Ͱ JͰHXl nO fg qYt6;aCmg| Fd uV>3r3}_Ǭk ?1iƊwcctg"l@<ő0 )2 ɳ _ŵ$ҭha2X2Z=uA;+hnk:yJݚڂGԍ> ^bllHGBƑ yA~#a͗i FhFqѐ#Dr{$CȰnS  !h]ki`0o$8/٭1b"2Zol2p/&Hثӑ e~oWF!5F> F2w {haH #9&3F01"@~A*5s5Yh1 3Bc0B s XRk0` g c;4 kr^mg`:7v)F0FRc<ȧ?ku'G/2u-#;%a 4󿥦PH)[Jd|5uFGhfDPOtbj8‹NX~~cFcuyo-2.1.0/data/pics/mdZiegel03.xpm.gz0000644000175000017500000001051612412223271014330 000000000000008m[qNB͞N''u%[iw1rv;3.~syp;.Ru]<=k?۾[{uv}s|ه>8Y}~vp;G }t}t6nȝ^]\SCr-ȝ mrns]tx@T_{` r|@2q亓}rI0 {Q0\GMډ&7\.:NknpH7neputqp0PM\fk45YJ e~N&ےJW˥D` 2΍7:ivdYa\^r>_TeY~ݽz%fb CfAF۱;bȖ d[xF=8t:Is6-aPBB`IK!8O`LS%hvNCtaKJ`@-3A b(5tj`n Acè>0d`T0ׅ]  fqB0,B0$Hkx't)R %BT:Ds N4L'M C&%EĢ]2:C3P*(!XgPшy)_1h60<(3UBç:@9N+]`1փ<:0nXK1X<`ou 8 98>0;X|_"n2vڼ1D8\58O%K3m3?ow#FlCaá`nw+󇉫,H2`\.43@Hˋg%95+j0\,]\|,7zSZKK s9vn⊷c|֬bxqb¡\Kc0uh+V9lwXKF\` V)f R;U,M[2:H!\Y3֧ubpjrLI; 9[>I8Q~a4ʣH2$CۋEA ;ςW(( m8Nns \0C9] `y3lm=tC)AI5| |3O0= _3d:AMvur61+FbmSH.ftm]$` htys$~\@S6Эu6 bl:Ӳ-^?%xŸ6{JkqO/Zasaat4ӉaɫMl|NA=¶Ðf081x3\ '>~iG FMx :^1Svt66ژF`N0W 1Xibؤkbԗ f,mnCW)'tkY-iaZ2XCGcW)h5ZsYw'd`(d@ /< :0gpɳ]iɀg  Z6v E\c00)@0brI@Hű [w=9 1h߸='1 %(sKԍ-.,Y98gKńtӋ ?# d4SQ՝ f7C-(,\ e抁Z%gې{ aB]B8RG1ś4kbo`vǐXu cap,b@%:tM ZR7dV:̫?(U:W=Ig,p @pi aCeAGp38 J E9^mXts=*3iPDg8J懳Y850Y]0>ԡ(j| f0lRa:K]A(J'./M E73:T 0˥O"-.=_E8˲f18q2#l'!'^d[,\|vqu,i]~1Sή'pqC~ VRY e߀ ʙhS iF<Ol!`ЬHE/~y+qo H #^kbxBcPr[bX:TS4OA`e٦醄Ƿlbǿ 3Mbym4vRGXˢe{њ aQ ܨ[er͢tĩYm{A:DuF+n^q=谊D- *cqr)}o1TPJPFOaiWu 0׫wSaϔE4dH/#눽dx>BV t!<90@,~>'/R\2T Tbmsmކq|( ǰ͹KI'`Xg8l ?$+[$tc_[9~A0v+?X-u&[VM?~o}"`pRk`̣f3ZEv>o~ +6|fًj`?͞ kh;e`DR1qblL46^|{M{Õq`dJ$5,[`:l7 F\/b d>PEbفA\]R&?42{$[%ΐJBbաbXO*:N @Dǯu&dQ%vMA*T`J_F/iLvA%XH^ \>]÷fz!pa _ ˋJo>z Gg߫!Vx G'Yÿ× {i:Ӻ[2{98nq=>qɫJ?*w-~dkZ+574zD:B|+F*V^d؈LnPE)l6ы:<d)Q)Y6&YOd :N1_GNI#5*n;4 M/S8:EZ*9覜ǣ.p0Gcuyo-2.1.0/data/pics/m6Grau.xpm.gz0000644000175000017500000000143311672457345013606 00000000000000 N]o0ǯxUh.ҮtH-E|])Bwl!vB~sχI߆7hN5]JǹƧϝvoW+0w|ŕnH4OXr,d$f"dZ$EsJ"O8GYl qן|N qF`r%Z%J]_e,(4XWz{*dp9w;Ba0/hx;<$mWW?jՎ&@&ܬ=Z{֌lŚ֌thȆg֌I:lNEæktW٬PeÌE,3R[ƫ23lf:Іb@q6{EwV2)3(1 #떡e]܂r L.6SBr/*^[q*&{Ϭ]uUˉ;"Rz;Uu̸(q&Se9'eznŬLͨq*2p=Ww1èU *FE9C0\gK շb.C1Ta.*q#R1.*U#K P O?j0 u uWB< 0i<҃2a<b09&_K*FaTJ5=(Ѓa&oX94]T#|:őT\ڪ1U躨Sl[hsQ蹿8bͲTfr0!VC$ *KOKK 1Wo[++[Sy5tН^UXW.J tЩl4 V}sΙf;ڸ?05hTAנq` r:I t_ C5YYƛǖ_ {뒦eYk%^;1ɠF߫q.VʅϒI5YtǪi\U7xq_YJ>\Ct[5=.bM]]/m*vu#ַ!~3NU31j5F>2C9WjWs./G@%@??ػXNr ໩[wSߑf}WZz>F\o!?{V?%D_muH=- bmț6ژD#a+v!MPRGuw*}4lġ)'|p=(>i#' ?Px|2 (Sj( 65T+S9'/'ܜvܦsNQw~} x3%s-)5?'i \3<>j T&iP|5-|59B^y½agQ}=*y*zi(?=ۚp~a_9g,Y5p2WfY5Zy: 5Vgא$aΩ4%aΩ4I5]ǒ!1H.4&mZ(<.K5VV98=]CgFI/ϲG=^9}zјDo[j<k[m)41_5|φN;x9pK3x;feZ];{k97&(.{O%ō_ C}(+}1/cÜ [2|(c#jx>۱wN_P!ep>3Go +{>3tlBP҅wIs2؅ _cڟ5|eB Ϛ=~2#/h xx_q̾!{j^__0d~}yvSg 3ÀCjyS HiIhdfh7&=V;!dcA2xsH !1NEL)#lJ&Đ"Dl8 y4)1(#ek)T]e|$$ @a P1RiD0.W<r]rM>s?1Y<|q.Mk$AܜC]? +jxO;Lg 3t/˼),鴊DfXwJ`߆a^ {3d &ITR٬HQ2DA&dJtԒ(k0KJ𳃷HKG?!T y;2J1r"FQ! X!nUU%̐#!at!4c\|f=A@5B:j ? P4h1PD`Sh 4FD?$XO(CXz il>C/b}k6˶E_ HT!גdE]h\IM X1>J`cվɐ}9rː:y#eIfإ;7>Zm B[zY1^=zk݈a~X 2z_*\Ay2!9i }Vz- D]` eyb5)W2CY X1p 27=V;]Ә& ֦-&$Nlo  6_΀ oY(_ >ÀS Ô* cmÉ}ǰ|z72v m{<1kb0dPGsNP\`. r0p D5, π'0av{ >@_{hDp&G1JQiR]?-i B:￿0 O 9.Bcuyo-2.1.0/data/pics/bxKlotz80.xpm.gz0000644000175000017500000000357110361553650014245 00000000000000b=bxKlotz80.xpmySHSīXB!rqzoU QY>}N',!@2JLG>vҿ~鄦MX8e6ٕVjی}g2^ik`Xa7y4-ykp^[xrk|߫=A7t!/Mbo+f8 Iɜ RuNV^^[[@ 6/"r [+K1!#-3 ڒB!<0,@t`Ԃ!!E d 2 Q!r*[ !2TF&( w)mC8 F}ќf4Sɼ‡e's O_r fPiT;4D?- #1ɵ&,>5EfٕmF xQx, :,.WΆ=D3=WU@A(LK==WL7,ˆb0^8Ri$ qCJB0b;dۀ`㗯W]?ha+96UtQ:!D(Fc`{|x{Clxӹ:UTй7؉"0e|P㳟Qd8{kFrc0_|=Bh}F0Zb23~J*1^>:Fbbob۟ɀmا\1ׇ?(#ܝ FHKa\xbH^$bp#=3\>T"ͦ`,hٌᇖqzh;LPg16G=xF^Q Jo31)JvghRWZ% n {$l65S\,RnƖ 5erCqHO>K@#F֠ŷ&6e>N~}xE?LƋTf,l^U^e,Ԭ5˸P2Yէ0Xe3^+@,9W)6tFt,y|BF0m0 M:88fn8|Ҳ]U:a^J4%a-t0Sa8ݏ*Ce# Ar&7m~8#`+C~Fb괏yI޿|?~E}ޭd޽ݯO+>޷\}9 "r@D9r "@Dȁ9 "r@D9r "@Dȁ9 "r@D9r "@Dȁ9 "r@D9r "@Dȁ9 "rPE=<WWw-J!VS?:}ruC8X[|L\=΍U+ZOa"zƈc9XW!O1bx`CċUz?Ѫ:@XWcѯ`9rx0#=Wrxp ؋w>A}֘uuc_FUA w>ky!-^An^}Gsr0NmT9;Jso쥹9Gx}jD{L'Jѻ3ZYYm)>@5=,arޑ2(/GB;r^%{Hm9Ehh#l:^XT[gc+|>[/b~@D@ qyX7S tm4Xrdk}uoԠޱm ֑zZgg[A C\,9R4gPGi+-_@+}T1,g{TUW[sSzPGt`UOAݏҥȩsqz"';5}p]Gߜ ~ٴ%nVѿx`m ?lڒ_7l-rsW^[H9环Fs{~g Fs{~g G4h޾#@DȁDŐZqJZZ⪴L?pooAbn-W8%-|qUZ&T7߹M.|}IG" p kחDq$N_*=YذԺ z$cҾذԺ z$cҞ8ӏ>tC"/sEw[e'+3C7y!2WtU2 v(ZA1vPFy!~ңPx<(0. U ǵ[ȏ9h]TE*9@v+1 UwQeWe 9z+}/# s1^mˁV~p;H4wڽA~p;H0A4L&L# SoMA.QVoMA.QVSpP*ϑW?GרCAq0js@ qe* \}wIg_X"ĕ!(p%+*́ΟlYr4{dv2 J! iQ gm<49=?ۛ>G=}Կ[}dGEK>X5:OD͖gP{[riJqv`Ӕȑȑ9r "@> "r@D9r "@Dȁ9 "r@D9r "@Dȁ9 "r@D9r "@Dȁ9 "r@D.?3[Ycuyo-2.1.0/data/pics/msc1A.xpm0000644000175000017500000002430611545155530012764 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 2 1", " c None", "# c Background", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### ### #### ", " ### #### #### ", " #### ### ### ", " ### ### ### ", " ### ### ### ", " ### ### ### ", " ### ### ### ", " # ### ## ", " ### ### ", " ### ## ", " ## ## ", " # ## ", " ## ", " # ", " # ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### #### #### ", " #### #### #### ", " #### #### ## ", " #### ### ## ", " ### ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ## ", " ## ## ", " ## ## ", " ## ## ", " ## ", " ## ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ## ## ", " #### #### #### ", " #### #### #### ", " #### #### ### ", " ### #### ### ", " ### #### ### ", " ### ### ## ", " ### ### ## ", " ### ### ## ", " ## ### ## ", " # ### ## ", " ### ## ", " ## ## ", " ## ## ", " # ## ", " ## ", " ## ", " # "}; cuyo-2.1.0/data/pics/sbBlitz.xpm.gz0000644000175000017500000000054607550521121014042 00000000000000?t=sbBlitz.xpmK0gWOu+CA"2Aw{׭X^PzIiKG)n!Ez^/+wHaxZ֟owp_Q<9&( n^_:k\rZb:Rb*0-d!)M0˱1-e)7Xߡ.`4p0]!@.r|ҴU@iJ\h/) 'A|/[Sx[l+.|Գ6}L]}@CH:M$$ȯL=U4iCZ UO7lz'; CC\(;6 ġ !A@*㖵Aʖx;(r(ґH>. 5U츇ҁReYA(HX o9z܏ 3i8(=%:s OM~*_P ?ߏb, U Av {zkBi蚁۷2C x }H\kAxpPK#Fz(rZ-LKШ5 ~nQZ^x&,dpD>ᰕ7E>峄ɟLJǏf+U*$7#,3ڬ8PW;ߟ_|_KةleW$G=r͝k?)cdGk4J%e-cgrqkkiQʈݛG& VF|E3({V<3ϬB}fe>+gw<Xddo仜 <ƒ <"\'y8o@<.OrJ`/XZ 4 [& ӳcz_e! *'+?, <ƒ <~@Chø00k? C挡\C]? 18x{;Zvv9p9K[}?Obqé'm3U?pa3.~pLYY]N UvҹX.'<ƒ <Ń?@Ch\pxzWip R9aͤt¾F'"Oc <ƒ <7Coi?&&Xcuyo-2.1.0/data/pics/kmMuell.xpm.gz0000644000175000017500000000240111347236315014036 00000000000000&KKkmMuell.xpmkwLWV%\ \^*ZʥjN^k~2ð[^=Zݍ5t*lvtzU~nl2j?,{Ʀe -N&+@Q| H8@e^D#Wmfsλ@nپ?CրYwFQ8oQJ`cwR#%OrK .EG )00##5 LE#(d̠SCn!v5ˠW1tV>gCA - y48gy ha?ϫ2.9N3 b ǦDCva/P1%"P9~4(I~6ؒ&za8SyPI($gĨ (rp@,}K`(\Fq(;A_ [y:([ޑ#\<;P9*50 s-PnP.޽J* '0RD"=53`+ԧ 19p6("X54>;yjIFIoui|U4鷳h^TM;9x8W*WNڬ44ogV}ye ډ?JʝINҧW˿5RK bZ惃4pZO_BY*ǧ}{|8zZFn80;H/4j4VqdkR+dr>t}RsYnoTGj5NXHp]#j¤7,(J$hbva2tIbrÇa?tű KޚFTTh8$\?Y6K%2ezYo4WE;Ӭ0̿5W4MYǗuCC-I$VtB}N4Oz }tbPM;3Q0I|TrfO ;wޢitR"h$^6M0D7/ڇ5FMM.^GS$ cuyo-2.1.0/data/pics/lwGreen.xpm.gz0000644000175000017500000000257207561732241014046 00000000000000^P<bwGreen.xpmo0ǟ_-iIbkZgӭ2Y=YZf.i{"^Ų=Sf4BUIJfl]]:҆Lԕ U"um JwŘ. W6bLo"ad1Ӆs%l^@6_љk *R۳慯FĆq1A󂭤}ƾ_ zל /ҽFԆQ" HO  bEb ?/p<(/ÊӼ@PH+Na}}@L@z2:+T5}!{$&P[;bϕs AuΆؚgB9y7CLU+38v1V\]=< `w.sfy1(؉"7"|Lߣ9-(;c:^;l^DL}E5ӧM?_h?7uoD7 x `?!/5s^M:60U?߀ކ:+ Exо(yAm@y8 ya0MAǃ5As'=p}az?A607|Aroc+]a'7̼TZdȕ0.v?Q=}"5`@x1?3a_.88nؒ?z?H'Ą9-_|A&0ӭd FH? ֦ ؀ۯ O$3il@ycO|Ƌ!_HhXaM_$il@av>ӭ"q<@__./|`^ÖpXq'P> }W@nS̼ O|b*E/z> Ol|bb>igG?.Cs0!l0I밬k/밬8+_ؘn>Ԙ!/}?>YCA_ň>wY9E.?8_6Ef2Bcuyo-2.1.0/data/pics/mtRoof4.xpm.gz0000644000175000017500000000315612401656727013777 00000000000000iWZ+8 Ɍz5Sgj[h&M m8o9;)= .,O<} 6ָƥiI.;nG}^B rr+5ו:<[M!TTT=,RE.[@x[)އZ#RxU&Db0zъNv1/T& gDS#Bk@-"0yQ|4r (MFP'|1-[z޿?ΞqƍJQdYw1/48΋ޗ%zUy?Nlglu˛E=rm1].v,qJ=>c~+1՟&ٴoԯ4ˢV8V.NJ=/yMAt@>o!moVDـi5_W| xpҿZ%"cuyo-2.1.0/data/pics/mdHolz07.xpm.gz0000644000175000017500000000501012412223264014024 00000000000000YkWI_ћl3 !;v5KDDBEH !ojP9'~OPUO=U}1ToWo$h7#uyu~rJސ)2B_mfhdul1BLa51K YlD;h͍ zV3Y݌]7cU$+hiC.ZU_&>--]cę1$9@Wm#qS~*ʌ>!mtJ(KgaFC\J x'+E\A+*V&XqXqXqXqsp|KYlz1LԐ_8B 1!E0\#'tB8!T$azDP.239*!̸JB*R鸋Pkh3k+c\l 9,Zȁ\CI@ݣK%QxA !VCyn)(hAy Xx3kvd9v9Z5z<8p89s8||NO8[<<uQ>-WN#Z7 k.%~"V! E/g4eE+@K=Bzkġ1z3}޲75Vx0, (< Ce< +T zۣh94V~t]GD5'j1"12p"CO97!/ьNMqeuѿiujy6& QbG|8}'8\F=~j!CJg?HGMgԎNotD5-Bz{5)OCHڜ3v[zfd*ϑ EQ^n*J4Ea;x[D$ݰ|ϡ"T2{^rx̴W]v7~6nX*zڵ_/Lp͡rV+OCE]_Z5{n0ݕďҡn7LK5+zp&tС [Pd-9E -BN'Z2n.4A-h6oJ i+TכR]*RJo gOD3C')<<_<\NCUjUT67^WcU4_95E  QrYcC /p!g{Q8 EҦN!6KqVݛj '@ dOhm 廉=*A{4UҚǴMgMԲ?^*UyuCgq^Ԭ5=Hg1uv@uh*J}ȇ\r9'?1p+_\;8=|FKb>GǕ u]wtJ./Ĝ4 ߱ik؁RF܇ϬWCWdt3BLJ{s5Rgcױ&ܛ}y7 Z*#42 c:$2}_k˙2˂KiqwX%9{L obstbJ%Fr/I|s dРcḐAi7S;̈¸^47D;ͳSfW"$X79?LJ7܅%94F# J3)~bKrh69'_C3Q)Z e9$C(CÒZ:v-p~*)F̡R: )Ʊ]'[CNQDnw9 ZZ|IT㒵h&2$vNp$'IvbO/ᢝJp\?N\Tt^%'w9]tkJ2>^ R:ZS:.UTb-)q=~qHB$/ Qd;y/VVVVVVVVVVVVVVVVVVVJU !%7cuyo-2.1.0/data/pics/mfaWater.xpm0000644000175000017500000001467512407470146013577 00000000000000/* XPM */ static char * mfaWater_xpm[] = { "96 64 9 1", " c None", ". c #663931", "+ c #306082", "@ c #5B6EE1", "# c #3F3F74", "$ c #8F563B", "% c #99E550", "& c #639BFF", "* c #323C39", " .++@++++####++@@.$% ", " .@@@@+++####++@@.$$% ", " .@@@+++##++@@&&&.$$% ", " %%% %%%%%% %.@@@+@+++++@@&&&..$$ ", " %%$$%%%%$%$$%$%%% $.&&&@@++++#+++@@@@.$ %%%%%% ", "% %$$$$$$%$$$$$$$%$$%%%%%%%%$.&&@++######++@@@@@.%% %%%$$%$%$%%%% ", "$%% %%%$$...$$$$......$$$$$$%$$%$.@@@@++######+++@@@@.$$% %$%$$$$$$$$$%$%%%% ", "$%$%%%%$%$$.@@@....++++++...$$$$$$$$.@@@+++##########+++.$$$ %$$$$......$$$$$%$$% ", ".$$$%$$$$$.@@@@@@@@@@+++++++........@@@@++########+++#+++..$% $$...@@@@@@....$$$$$% ", "+..$$$$...@@@@@@@@@@@@@@@+++++++++++@@@+++########++++@@@++.$% $.@@@@@@@@@@@@@....$$% ", "@@@....@@@@@@@&&@@@@@@@@@@@@@+++@@@@@@@+++####++###++++@@@@.$% %.@@@@@@@&&@@@@@@@@@.$$% ", "@@@&&&&&&&&&&&&&&&&&++++@@@@@@@@@@@&&&@@@@++++++++++++++@@@@.% $.&&&&&&&&&&&&&@@@@@@.$% ", "@@@@@@@@@&&&&@@@@@@@@@@@@@@&@@@@@@@@+++++++++++++++++@@@@&&&.% $.@@&&@@@@@@@@@&&&&&&&.% ", "+@@@@@@@@@@++++@@@@+++++++++++++++++++++#######++++##++++@@@. .@@@@+++++@@@@++++@@@@.% ", "++@@@@++++++++++#######++++++++++++++###############+++++@@@. .@@@+++++++###+++++@@@. ", "*#####++++++###############***********##############++++@@@. .@@@+++++######++++@@@. ", "**************##########**********************######+++++++. .+++####*#####++++++++. ", "*****###########################*****##############+++++@@@. .@@@+++#####++++@@@@. ", "##################++++############################@@@@+@@@. .@@@++++####@@@&@@@. ", "++++######+++++++++++++++++++++###########++++++++@@@@@&&&. .@@@@@@@@++@@@&&&.. ", "++++++#++++++++++++++++++++############++++++++++@@@@@&&&&. .&&&@@@@@@@@&&&. ", "++++++++#########+++#############################@@@+@@@.. .@@@@@++++@&&@. ", "###++++++++##################******##############++++@@@. .@@@@@@@@@@@@. ", "+########+++##############***************########+++@@@. ..@@@@@@@@@. ", "@@@+++++++++#######************##################++#+++. ......... ", "@@@@+++++++++###################################++++@@. ", "..@@&@@@@@@@@+++####################+++++++++++++++@@@. ", " .&&&@@@@@@@+++++++++++++++#####+++++++++++++++@@@&&&. ", " .@@@+++@@@@++++++++####################+++++++@@&&&. ", " .@@@+++++####################################++@@@. ", " .@@+++++##################***###############++@@. ", " .+++#+++#########********************#######++@@.% ", " .++@++++#################**********#########++@@.% ", " $.@@@++++###################***##############++@@.% ", " $.@@+++++##+++++++++++#####################++@@&&.% ", " .@@@+++@@@++++++++#####################++++++@@&&.% ", " .&&&@@@@@@++#####################+++++++++++#++@@.$% ", " .&&&@+++++#################++++++++++########++@@.$$%% %% ", " .@@@+++++++##################################++@@@.$%$%%%%%$% ", " .@@@+++++++###*********######################+##+++.$$$%$%$$$ ", " .@@@@++++++#######*********##################+++@@++..$$$$$.. ", " .@@@++++++###########***********#############+++@@@@@.....++ ", " .@@@++++++++#############***##############++#++++@@@@@@@@+++ ", " .&&&&@@@@@++++++###############++++++++++++++@@@++@@@@@@@@@@ ", " .@@@@@@@@++++++++++++++#############++++++++@@@@@@&&&&&@@@@ ", " .@@@+++++#++++############################+++@++++++@@@@@++ ", " .@@@+++++######################################++++++++++++ ", " .@@@+++++#############***********#####################*###* ", " .+++####*##########**********************##########******** ", " .@@@+++########+++++######*****################++++++##### ", " .@@@+++#####+@@@++++++++######+++++#########@@@@+++++++++# ", " .@@@@@@+++++@@@@@@@@@@@@@+++++++++++@@+++++@@@&&&&&&&@@@@+ ", " .&&&@@@++++@@@@@@@@@@++++++++++++@@@@@@@@@@@&&&&&&&&&@@@++ ", " .@@@+++####@@@+++++++++++++++++++++++++++++&&&@@....@@@@@+ ", " $.@@@+++####+++++++++@@@++++##+++++++@@@@@@@@@... ...+++ ", " $.++@+++####+++++++@@++++++++++####+@@@@@@@@.. ..+ ", " .@@@@+++###+++####++++.....@@@@@@@@@@@@..... . ", " .@@@+++####++++@@@@@@. ...@@@@@@... ", " .&&&@@@+++++++@@@@@.. ...... ", " $.&&&@@@++++@@@&&&.. ", " $.@@+@@@++++@@&&&. ", " .@@@++++####++@@@. ", " .@@@++++####++@@. ", " .+++#+++####++@@.% "}; cuyo-2.1.0/data/pics/mffisch3.xpm.gz0000644000175000017500000001226011646353264014143 00000000000000]is8B3|-\N(5 @N2d `;UHU[cuKj-&Zz 2 :dA$? giGqXV Zn\R[?zބ!6Cf=P>\/w\`a^=21BFv0!Iqa k-ZVx"~ !liÖBDųHTͳ&7[²,8_EXNҬ/|o4Y7}я4!(I~'2xp nY^x5s9J(w$r5Z"︪(8ӌ:U.+Jf6NJ6Ӆ%6XEO]a^+R61,SEk.&4B>&Y_0\B~H6y' cZG5".'"|PyM>iFCxa Y{q[ sO?ލcoIa6>!kR$Ț?ܸ^koHSSSSSSiiTXrC08JNF琴ϟ +T7 9Y;^C/]JN5yntj%/gfW+)\Y=LZ^,3q%D9VqõגH'1!"<*20f4`nQsT7I,L¡ JozdͼJM0&9&<^Jаx"9Jqx4C+!8y6$CCp |f1&ӅA`]lJuѱQ7&I;ls2Y/Jdc*ucӞN1 ("C't9ʞS/,UKްbҹ-7IM.F_/.]9\|=F?~s::WC>ÔÔÔÔÈ~2GpWt]wW?K_^ Wg7;?[W_ZODH:m39\XD}zt3/S`mX9[YZEe{m-sX^9&z}]c~*!s sH3fSIq6~Ճa!)Q32s(pr|'-e ɕ9 Gmw%9BKsg(|dNEۼVdf427J)O(c Y:ymr5J.Գ<Hk.f[MqWiZ^ceٻ6Ɋ>>ù &yz61llYm!'M{fin`KP横*Xxaz9Ypt"$/h#\K, a8ì|94000_' 3䃇a8O`ځx/jPCpBOп.rXi%AuWo/ETiE j%,B^.\w})ppgنX 9Y^؇qK3;qb {0uQ!㕏O^K; X3b !k4򵄈zaup*(bHL'>y;7M:²g[V o$Z*,l%LJ-qyBrVkQP^<0'Vp4(:Z?djzo8Y}b%7rWl2k}xT8Qj4 #n\ՍJe;V84`#Gryw  =\8m6=~0X/pһ.5ę0r:8A RUu]7TIQ0.6=tI٫ &7Yo?*iIl蚉"cސ$I7=m PVc3"88=CoE(cl?69YpQ$VlkQ{=E898lٸfQ\ s}o/s5t7Sz[kzQB\nu2pwJa0$ˡ 0M?ff3 .-sQvq0ܟ_mSa}400_p;(^ys !&`66*2?6!hjxl:sTR!0s:<_zdjF^1Kd>\NdVAζΚScc-^]kV_].XеA׬ӁzFsjf_ˍZjVÿKsXտs709\F͌_37ן3DVsW{n[Xs"u1cݳcJFӵ9_:%U=z7vH\YBg_W;Ԏ21^jyHHm빼c`LȡmKhume )4?N*]E;5+>%x9$Jy ۣր]q.jWp`SI7 itX0F4d$U#"q>$/|8H{{Oo2gWaU%) h#j/\z݆KRCFTH#/&hu<piF^28">c;wз`]Z߸+ήVԨc*ؚ|aW0lʻ}"MJchf]4C" cs$ֺ٨T@Al*n02Afƾ~]Ʀ3GS"ȏsb:wjլ?bE߉rFf̹ㆁm&:Y@rsՔ2kV^|{fCג&ngd U*r_antq6o)N7q_iaѐax; Y[]x¢0InÎ;?new*=Xvp2{|gnBOwNicPs8!WÂ.7 ُ.Gxp|Ơx7hy{p{[/㎽p<Z ;.!pr+?bw^-][nٗm{n~#x2L] ܂84lM nxo1 t,S٬+i|c鼣CK7gt ˪QD)Y'O%( #Dt9*sKփÉl%6ޜ-KMm~ rlsKa{Β'~2QRD>8㣛MK5 )r`ݍEJYjCšߤΉ@7{LR&k~ң xYC؍dluэg".&e1Ad\Ө 5zlRR.J5g=Cgj5,?Sc.DmsdQO(?>m-56OǦ3G/1{!9 Zv[mh#9*;\sTgrjS&}pƅxCao>x=s1#a8sug͂unz(,n8^x^z֬~Y$1pm8[?AHo?|wP}88Toj?[}~pGi}N~4 [ېeaa nʣ1)ycuyo-2.1.0/data/pics/i6Grau.xpm.gz0000644000175000017500000000227007550521111013561 00000000000000<i6Grau.xpmkOJ?FnZm:1L)JO'!Hxo38 Y]w-_'r]w%F6vOV;QI|ZBPvLJW}ɟļDt7%V%@]b9K%a N)c.f%2%16s<aD:3 ˈQt|nK<rW bzLb2y|F\W rvmr%%R6aΩbሑ:1jQGuhDBsҰj 1M$-Q9:R9"$2Nу8(ʶt-AS2MvM&\j[U1c^IQ>% pea!o$ 8*.VD5GqefIg-*>.X)b&#E |D nh&z5qϰ 9%!_sPi\"A0V}Vp7Xy9Dk,rfqsx̀.-D 5İE7VbUͩ1h,x gU`,t78@Q7h,BD8C|gі]bVj\E38l1~hFQj5+l4rX>>.W곽Vm4JZ.|!ͬ:CjW*%4K5}k-LVzHgrYiʖF)v 㠐Y-}VK2eK҅t:fJ4O7.wjժ$$tfZYe_BQ.on?Uzu:Oh9V]QK}V鿎͒vR_ߚɲ]*R{4gAC{^qF%d<=].YoLgy61ĘLAպɥnki1 t6{:|ƞMŠ31΅$ R${d>=!I3Nc/ߩp*]Q/O?oj3~M/*WLgr:_*~iߨy|t 5A͓o3iw~$-j]LOɅ3Ps⹞ͯd׮Qkj:'ΙL4䦞Is)8#j>uw~s5I&L^{19o/j!wpEԴyziL+uW<8Gȓ+0b|d^P}A͒u+Au +X^Zyd]dCM<}F͟9A]ssr9?ҹ/zw%H}rVGkܝ DGf #/DQ`L&pHgM@T<7OA`ɕw_&ayF&oyr$ԘZ:_rS-7Gyēy< |^Q-9DIp'gTFKp'#^[n: a a/xf%8q/zw^ {wmaOn7w0t:;no^={xPUz̍CP hƀf1>vIox2e$xӧOE+_`|ng`ҁP6uU`_j_eC!`10úC3i*N2ќ\#90髯b2] 1 CZw0lf⠼~+!NQsYJ6bX8D`ᥨ?Qt5OaQbbZdP֜+I+Y ޚZë` Ӆ,.wc ~NXU`LŠ+vTU {_^Cu0x߬Hh2g[ehe2a +>.鍔FDaJ`iԃp62cFGw,чJ$H LZ+5Tg y2STXv'}HKzDLIе#EM%Ck,1 QO8S!  @ᬆ5X/Ҩӧ,4ұ_+=ĂQ $S"j.w9y2jC51MNʶ &HB%j_؋$id!G&3냨ltX#XaPH}!e_,B֓ "짆E1:'"0,Q *wE*.C@-gKnB( #vû 1P8&Z\B pd\_)Q-*WWA<ơK#Ǫ$d9J!XHa2q\Z$GmvA׭arrDQaC a,hH{3ƒV 620KM1I8&7 4^nȋɝ射 1$Z $p!uo?XCyZhK +{WĽ0پx}9b~j9oGqbg <_^q32^rߐ7c ؋ţ~=A9 A$;*Z ^te |9duJS-yѣDq4'A]5)B]S!6Ύ 3P)<61kk1iWbw |$x bbr\&.BdTajr\nܧe@0h Aq^GCJF_y0EW<׬Ky W+iE#$mƬ֦AS>0@QndQ!b,劺"$9 _ yYX0D) VT -I)|S0Oa@=q)L9:)C2ۧ+RD <)z[0z85``@IXJzk MAk 1%XjHBp 0/q9zKm26b0@2Dt gw`pmPUEĬvYӶ^ŹOK;*^(cC$ҍ?@ pg.tN#i]Nt+( WgkR*T6Pdo(*eoq]vC_;-,9#sUQIFElJqtM+*R'[+9؇1}QA\淣F% Gkzės̫ZFR'O;w9*K3U)cn@QLj1Aufla8BƋ!Z!4#AͶ\KmD]GR4^޹/ _0oaG*~] :fR 5q`ۇy>Enk(ay°ڣZLKL+Y6]GN빪pu~ x^߂ h/ 2EH?/X״2J[Wﴨf3(|!jv4P[ wQ[`yqCM!i-Ǔet߅CM5xh #OU(]XPBSB®-͉z\6Ĭ (KU2tm>fJ~TWۡI kEu2= 'Q]Y&[⦦8䨠{Ye&#>Zf)TڣC i>Wnϝ pλPŝ<_J1jܥS%3aة00*갱N= N#h]4En1PI;}NY,l$Ě_,FB˸ӳpX/2ms =Ÿ=6=4\Uow -8 bYG"I97Xd:-Z\Oi:kLia':4rY(]ѡ0`"/9rMōAȔNV|. 4qT V އ1# ێG9ASb|^C[LAt(bNKqkDs€ywU=r'BSI$5UڤisNi=${) ޾:6?Y%~LyA&rt'~6ıj0dSo!G:,~`痿۲6__oC b4"yF;1 cQ")tϕqa$tp _3kP]qZ!.N8I'KFHⰅEP{˙.`Ν J8, ^VyiB#d8%uLW+hҸ:r\1E_<'7mb BU|h 镉1 =4oea*rQfps=]KvpŢP,l3r@ Sn\Qr;Udc+]L 1Z:لAB`p0Rڮe1S4 b9KfV6KR{9/Y ; q>wss$Aˇ<\F|ϜG@9:-mΉq%3lleٛ\nlTl*)$+i2@k2W=ۢ@n1Z9wϣ0g7I?(:@= NX00f^>cJaY U0*vc+'ɗ$蠨Ss1ɸ<7 Hh/ljc!9}P=:gz67VS*btz )?tZ"fO%h;w{mO*7 [[ c5ټy) puchDlI\&)6a} Wa3p_ =\[$n(jd׊NG;uԐ` ؁!\g탽Xmh^D [0yzzF+ ,\U,R 5R\.i\,ZLas)5_5c̃r %/c J<(W(MG+*YlQjB)jٯ7,X J@ =j Fc.jy12z cLQYdU9 8'7 <*(I5la H~ ic&+ ;q QtвI[$dd @ AK$KI;a\zU2b8h7A0xC"^/Mkjy 5>+)t>Bqмay~A13.y. Sy.`ckY9G8ˡG 1uCQ+vcNrh1ud @ߓweJU*N`HXRW.\bi"6#n-(|4\.q}/I.S (6 Ď8Ǥ÷\th)liw0k 7TQ+)yAN{(2Sd.XR[W0t-׼ֺZ:lexC‡.?T8&ݮԕؤ*HBm)*f6UE55[:C¤З/E9zmVFWtP"TzpL9>Zih*ōGќ 7:#wg-̘.|@_N΅О .y'A+Ld%jSlmtv>kAvm{WN'tlu(t6ť)֊kN5Õq@*@hǩ}$]=^ѝnюoJ@TC͛rZX5hKZ=84vvl.d_Zơ9i>U|CªyK'n2Y^{QuvqsUma3.^#'x9/鴞PT=K7kXpa =Y\&VUcZЦӏxtSj_l \aYn1Om~Kn>_I}U{@읋n/a8Û0"v<ܽ'6џ>O|(t퍎߻~| ~^}}ѷP?E ~r/QaVDGcuyo-2.1.0/data/pics/bxBall96.xpm.gz0000644000175000017500000000515310361553650014021 00000000000000b=bxBall96.xpm{SLS,ɍ$ /pUZ0( 8輵g $ 0)~EOsҌn0i`ԗc9|^误_fJ_\1f邙V ,f<ȾYKVP_718% /a?,gΛe ~5ł2e2)E8xsyy9O>]=ϟ="=Í1rw 9WJ~|bK 3|`/{0]|rn՜T'|aPR0M֚2w)4k4kλ*5Ȱ *Qr ! fkmfB&hb/F Oϱ ΠZy"'m4ͱaY>1p# sw#CDnv*gȭK5j0MunC\ Ñ{-a1疮R1qD2(ԚK6$%غ> HlՃS멛Y5 A,fp^hZU#=ݸTD !B-o.V M!(·c]K3CU!9;f5 % i׈v<*"{=== ݩ,ac+ 7܆!|}?,:@ |dlz7ؒw陝JplXzac#b͠53ld K'7\[&>VtoT!u4Klma5%eT;I4@5h0>#f` ʒA56;r dDdW?!x-Rk 5G -&R[ʖ-S;PD pw>PbKס\/n%*7e"jc`rJwC=f>򚁦5L\VaAjޭ oJ*d +AF}p44憡Ti}dZ[,; 2A c4ZE hfNB!; #IƁN*K/0/a Q~1@ER{zzAϴiAbE8K~!h(~/{XZ4i^KFMݤ,6Ae/=q䧺PҚ6&Q1S}]_X8xFˈ­D z [٫JmN.+Jo= bO`23ӶODzA (pVdi+sv.mk~q;,]|u@X{.,oxta"a C6űL6i;Kbq}(šAamٽZAA QW-};FWmA˚2tNyAG-#sCɖTZ3xKs 0+";|F2ט" ΋A 2n<ꦗbW]0`c ւIǠc\b[!yGj VpDzOk490iCwņBմ^1Ý{? 9D<“Bcuyo-2.1.0/data/pics/sbBroetchenS.xpm.gz0000644000175000017500000000637307550521124015021 00000000000000=sbBroetchenS.xpmKohYfX ڲ[`c`˪bHdw4GͶlyӗoSolO_>}?^ؽnൻh.^v/^6?!|>~y{~ wwϯo!;Avw~ S~8}su3݇7]A-d^|[Ⱦ{w}s~YsL!{{}q% {|x/ *\_^a6A{T3d_./z{Ⱦ*|꿺x}WN?!;CNSzv6 3VGs!BJ]ڶH #B)g)WnZmNcd`Bm+A;ķ /sp6,am%e&@P&hH2@ ɕ#+O(Bz!8!~Dq$@DyN|J,?eGZu &a|4roI;g/~:KwL[`:ǷDqh`0* ![SG E[&_\\vA:9z_C{Ka0L9 S4g)QÌ^` ]Nm*Z,1xL!E{Y>uVE }UZ ːApT+3Лeh4BHDV} 5Jt)z_0O44^z!Bߵ,OOiYf.sbq3Kvx6Dv\k =;-\ _x:ǎ5T ˫,u>t}xHet#D߁}U&iOe8=k'KKrD㫬À "! Q 0A>&5ȫ" CHWw/Eh#1#Y̫A7/|M/(g ?cv>"cp Z Fx3Ÿ$:)D!$Bk}B`b LY|% g'd`^~}۳+#ilLy|BeޅĬY䒏#"aL%j 4f=fA#d>(/@ݧ5D3h#ϢB)@xe3`h:JvzYFH[HO^G2>fCl}0%2@TY? j*%.5v}Z4 tO4KuЅ dqU3(9j5Cq JnhLd NyB.=B. Yr59X?"7Q\|HDZCU=r$1T rU*5@_k_+P_acmܶ w~۟)cyNw#l"z8Z9wiS<_ |DaXe 9xo Q}$]ѿCl5'·x11 .ڢ`0#*)C8vLSA)ЎXwj Y j k%ف4f?,̀Y~`hQ|2Ǧ~hF=Oy{39'Sl!rF?w{/7[5ve8X?ib ׸7pb\ 9E S!mUvsXJeG@# |ƓCBHZ*߿RWL,?Hڽ:LTZ-l"3$[MrC7$֣\:CeH+[XӤM}`52Q'?, i3bNJ, 5/:ME!-;! ~stqGԫ>18}&i mQKz`x=A<~e@Ob.3C"HފAHy<O] {ON˄z ]HcLاYIyqlo:kmw0mHj: bXI`,<.\@wNFܷ;(%mFJ:Ip/x2KJw=bAYApXvf#VPTŷUrƔu%/>zݹ cuyo-2.1.0/data/pics/mdFels05.xpm.gz0000644000175000017500000000476112412223257014015 00000000000000ks۶W(i6Xۺ` Ur:LӴM:-Ii o?KPsƂ2gE$wvv/4veݛƛ^Շ 0N{Bcx8p A:J>dgwܪdݫܮJ>Z;TRP=h{Aޱr l/@TUrSɞ mo`{wC~3vVpP˯wN_wNwT?+}vmokpoUL]zE~_=ۻ;\BYKFw(v8c kȮFѯ!~mQԵN.d:Q%#EyǶ5~\ɣGn~ڒaƷ] <;v}tV::Q7n׽jk[}3+cQcLIkw:vE?X9& k'zae{,v /ҧl0XQ{8/r4jՃKxc%٪8jJ-kIª}kVODSE}HZdKKfD$?*Iz;_-帎v0MTGΟz%eee u-9>텡T^E] FeDhwr포˔0y]`z*}z7_Njڑ}ӧݦ!-GZڒS~Trfe;j׃ck JZI^{Oe_n Æaða0l6  ÆŐaݒ1P&hP|ChqBn5?4fg0BxH5Jcjf}z;m[8_Q!u!LF늭Z]bbUf&Das-pf 0,W赶deb.pqP"Y S4AǠPd@A3@Js 0 l(pGAà 2c+ PrHg0yeQ).$cM;ZuaF34bZMm@ H;#LbaW=w,R4X`TV" ˝.j-;㌅2g|&M) atf@ni*qgI:=a_dPZi/sʠA(S&>*A}+ y/i+g;\m%ptdƐ&/fb8o '3:9 qC4͵aRɹZn0hctX„8'k{!31b[Bi7uNMT욬E H B̊0E>VR@JBJ- ֱTt^u_̹3AŜ nځ61ijsKkVL@:3$ BEHFL唭gp*t_@׭cϓI+чg&h:n@N'7ݚz2|'/ Æaða0l6  ep?A%7cuyo-2.1.0/data/pics/borderh.xpm.gz0000644000175000017500000000030711052300554014046 00000000000000A 0sYT- Fz+:""D=C dN2>{UOv}94'Mwߝ/& a"P&5qsY68al9ә$Jhq8he!,#C`$FG!эEFtMnV?NGcuyo-2.1.0/data/pics/mmGrasgrau.xpm0000644000175000017500000000610111672457347014132 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "64 32 6 1", " c None", "# c #000000", ". c #80ff80", "1 c #40e040", "2 c #50f050", "3 c #30ff50", " ", " ", " ", " ", " #### ", " ##.33.## ", " ##...33...## ", " #....3333....# ############ ", " #.....3333.....# #22222..11111# ", " #.....3333.....# #222222..111111# ", " #.....333333.....# #222222..111111# ", " #.....333333.....# #222222..111111# ", " #......333333......# #222222..111111# ", " #.###.33####33.###.# #222222..111111# ", " ## #3# # #3# ## ####................#### ", " # # # # # #........................# ", " # #..........................# ", " # #..........................# ", " # #..........................# ", " # #..........................# ", " # #..........................# ", " # #.....1111........2222.....# ", " # # ####.1111.######.2222.#### ", " ## #1111# #2222# ", " #1111# #2222# ", " #### #### ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/m6Dick.xpm.gz0000644000175000017500000000223111672457345013557 000000000000004N[oF+>7-=Ut/iEJ4zCmU{?<ün~QlӬ??[-?0 dEr66iI0̳Ni4K h|J3rALI-H^X~<,)9!Pd%IV0Ĵ(s, 4W\1٥J ȦsIJ01Ј]=SHLVTEbQ@7f6shȦ z]~ CxIXn3>F Mx$,t4Yd A0:8e* jX x=S7~i@7_FнB`8]Mn! &`D*a e[+2IyI M}F\I>ZvN!&4e&Y& o1u"0HhY5\^)+jmjz05)Jl 9v?7f ~z^i: Qz[vhp8݃ 8Nd8`G`8+ Py6 >/5<SyPA qN׆&pPZT S/RH M9j,JMT18(4SB`t-J+`Ph;+ k 8BfK3m T4 A`1*$˼F!Xm ;x)7HUCo߳$ߟhbzJm eiA:Z18?H8a`G]AA  _54H'6H'5k4|P~4s=b2z;kF:+|~/ӧp2(Ap4H[$z i:}w+A5xh0Bc d} `f`ʛ uj;^ Z$cuyo-2.1.0/data/pics/bxKlotz152.xpm.gz0000644000175000017500000000756210361553650014331 00000000000000b=bxKlotz152.xpmsZ\;1(*w)3uuk9 qdk>_[u[EZ>~p!\]P!5+R毬 p6L)3;3|sOr`s <E ):]g`g |ynMn&3=y9n[cإd!vf,quHpsh v?aЗ'"?T>s U { 0y9aB\\G,vy^w,"@.S$,*SYd +b7fFXQ<'r{`QKV#2<,,Y! aO_Ȣ>?/7/9XbE }=(}X3 HO!,jBtΌ0>[Xr+Ns $di" Ϗs]jnahH-HYjnga#|?@ |A~P`EfGB~X w j.ٻ-Pnt,)&vE`!n }cjr5sT S;n0b$a֛+ Կ l_$SaG aE@0ᐸ *ሸ+⎴%3nL{@܉?{9{EM$4 ;n0coHu:Ty;F鈥loH][1RLt,7b:|*&ȷa41dqKʷ`NA2|-OZ,V$Z02 qkt cge▐q3ڪ%&x荸d샸 dEx%o #c1/xJHgjn)+)m#} Ju{1R"B7R> DD`HdT8X8!c`j-dpoHѧΜ[d2RM]Ͷ$;iwoA57 *jxGj'dl #@n苈dȭu=Ӱ[0=\,JIr3$L-P&dk *1cl-"l:wJud0bݫ)c1SZj*VG!cHDAA=zxp&bcD֥ݝErs`Z+1ooxH$ Li{jYѳ"V{uBCs,ezHD#5NnCMgWǣh*rr GGy炔*({zƌH$l bX7c#"hf8/-9695A[2ި>k2kD9jcXSgssC+vm]* kFD:F~z} DRn{{Fj #?I}lRvÌto`DMHf^%4%Oo7ELRT+ʵY. #R׳WK`~]hJ%ҭihYi+b|`!b3b{>3gN>㲧'UX}gKKX'r:Owwwd2_&׎8?o4,FM=i=h$rbNl߱}'<:IVQYXE SrZZN Rʼ:ZUc̪:|qI|i)uϪANWɧzAGDILgѶaoT.6975Q҈-U'zQRH1]5ck=FGňTHUQnhyUU f:.K=@#j8WBp|8qiANЖ:BWIicEHZZLa\a"HRnɨkuz L k(=c1hu*#U|AFK=^ 4Đ:=\bPgl%VF[=LPk W*T i w^+nTB3Jk}PqbLe5qǛjc+k bċ1K>edlg; ^0&c:ǚ[Jkpy+aau\>÷o_}AvyiroapЃL﬙ Cq ˷ǵ65/c:kR4`?_"&XwxRR^j>!-kn_)3ٷHl HWH%Mb؟ MG(J5w*%6Ymz0R|'r/Fl*3ӏ;4^WhF-֓a^cXMg'#ÐD$u&#qRZpwS%N1ONg_hKqQ̂gnZstiX#I{Y AlG=)ZGoLߕ&Gt#ˢ5E0bg$bhs]t-z=gr}Rćћz8Nϯ_k̫mW>Re]_Ѽo|(f/V+Lz,꼂F+J4VF*i[T k?rG 4,q0x||Mr0REP+M{}nz>6:-ɪʪ8sA=##e=˵T4+T$46F`'b>,{gt4cL]bk!{Hc"յ,V5e;G]a#9FnGܩXF}o6GgB2SRy 9G͸z+Flvid*YhvB;B$(FhF|U׫fP`=Й+pmX؊fCF4%k\|#ĕ ༤C_>(C% pg#Y([wiC^JMkDg:j赽vmg6b,$,pm/,l4Ĕޗw3x2ʵ-܌+HrF< gƘ2 fR26$:OO߬)HFK~ %_lc+:|6Hc!}rVUD# F )\M!]m3#3J|M!n{6P3C}݄V߾BW2T%1em}qXKBFt#Ѿ{o ƺdZ*v5XKD;nATܱ=FvFbb,45F/zh|, "f:NGbQߖ4~ZW4F>2UbQv$1_?k }KcM+dɐRpP (e`eCߍZwX.\Gұ'F\3e^IV CHMԡ膽 Df5H(Ֆ劥MUQgk]I31J]j6{yA*cEUI0SX{PfhOsBXF B/=ۛaԋknۣDYZ V c<῟>| kcuyo-2.1.0/data/pics/spPacman2.xpm.gz0000644000175000017500000000207111662241763014262 00000000000000L=spPacman2.xpmK1ί>mI."xDd=캸{{:JUt@Iw<*٩8=<=o8O_>7Z\\ߓb'xjy zצMߗ4ի?kePpY+CPvX..dA32Erc]371,wv>cLIB܄:1d(53]Hvarfuc Rg1 jҸ8FBJQFprN,dd\J? 3=` њ'Q89E=#3";!$ R%xg|SkG "˴Ψa ('WqFg2ee2`pWRo=.y'> d.F>km)^>;{FD]R0n=d`=dIV 7Ɂ~ D^B*iF{dDҗXe3_{N! 8Ɖז{jܛH"B>1e$ n\!l!4/aҼo.SVHob3b(SAɆf P9 s-Twv ;D(uuLu)gx M0$g S<Ǧy8t.r,ǚ*T3|EkP1^RmS (n߃٦?}IhԚ؂n0bq8؏=cv-R Ta"^MIYJ 4HBۿ;N]du?πQ.gQg )FuA1J3 y2MDx ~1f:fn Ś7{ܗ,gTE iõEmB/qZ-rw]F;&wKMȒųKw-^[!w-z J2cuyo-2.1.0/data/pics/inOrangeNasen2.xpm.gz0000644000175000017500000000346507550521113015246 00000000000000<inOrangeNasen2.xpm_DşOƷԺ,GADaXQvAISΩJru ;U]K'Sjg>^|w3z~}w/~~yv鿯_\\ o~>Ͽ|8W毧˗?>$L ýuf1vX3ah! c'F!*b3nAPV11AX1A'Ȏ46Iw,[K35R˂ϡ٥IGwYdYffh t z2!Ux/F>57f`?Z,<33sB Vύ 7 p!# V8jh\lb ͹'B*9j3g1nP,ແ@'Z? \1kG?`4aE0(zҋ9mדkz'U7 n]C8S$+ZvF_ˆTp8́Id^8zkǬ8Լ3<>Mn<=ҭdlVVSV⽨?9rs%wZVo|A| {N{0ap(N A/(zaD'`ڟJCf@>-x;@34oCQ)HM:"7_O0O8KvJ~0~jjcצ^ O']!=VmTG~&vB+G!?o^1\fWhV[BT x!?})\0LsBG: h BI}3:LSaoW U9:L n0ƭrkZ93GͰ.\3Pעe͔$)0Bn;?֋¿+$v0C,=p $Օ)QyT)*ݝķu$Rž:h2WhcHuب9V;&a h()B3*eAU0j(YUipF!nC ^+9F jfo~Ѕ\k+KDq ۥZ؟ٿr1/#IzFb@?ƍ/VwOzɁ:hio >wՖ7_ :zBcuyo-2.1.0/data/pics/itrBlau.xpm.gz0000644000175000017500000000366312420650610014034 00000000000000[O8WJ[HiKۮq%viVbotA3Ù:j; YQ|v/Q}~rӿ}^i4ϣ"W`}k3ۤW(pϮ(\j\tr~Qx;~PFh3JS\GWC(G~KxȫS% GIx>GaC|) QxH ~VJ z QxFQ8Ln) /8;|x|t|3 |Nl=sGoz1}ϸ''(A9oQw0qx=LS Z3v*ި#cc`W V6c3+c+ʬ ,8F`ªe3WfEkPնc18YQ4FEe Xy՘… }2b]Kz^:I"(PA2WCPJ)ВGW B-_CkJ$_ҕ*F?/ }/#KR$ YHYP@"T6jB!B #1X 3Qy0虉H;ze{+`R{>!daՂ0: SRZ!+!(:!$qIַ*]e-Q](6*q(ݳI g̩Q.2a,{Df!+: 8Ɉ0 N{K0 n{d6v~0?Fw{4kthX#dȅV;_|0Fۺo "}Q’@W!( q%#e I\{] (3)qz!V[0ò)ɱB)VƄqQ FRRef8 N SZI 3B֢5t xwbA̹BSh %{ &(( Q(q>D,A `콑T4 7\|W[ 4Pfb ڇ {Ln (%ZS#Rp{67[6xv/8jPj*. )쒪b}%U@9}3JjINyXN/)*fTe#gy}ClEo 0!^m' 6aUwAq%U$WEjsVlh:DVW$P*~+A_3F!`|v !'i H+47nÞ UTഷ덥oD6vG1Wm1$2|r"Ƚc5TA_X v1Wp`[.-(n~)A c_v4WB;ArW,oTX;B+_W@s!_=m *z b~OCe}Udt tk2:1 !U`JfD!xipscuyo-2.1.0/data/pics/spPacman11.xpm.gz0000644000175000017500000000037511662241763014347 00000000000000N=spPacman11.xpm? @9_Ńm9H-nc5hA3&ʉ=g9sd9䤯H:Iuᖧnً@?_=l$dwi|z6Wo x00000000000u3~7C x00000000z2@c5ZC:͑ƃa F%lnax,'zBQW2cuyo-2.1.0/data/pics/ltSky.xpm0000644000175000017500000002536611034741202013123 00000000000000/* XPM */ static char * ltCannon_xpm[] = { "64 160 4 1", " c #000000", ". c #FC54FC", "+ c #54FCFC", "@ c #FCFCFC", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ++++ ", " ++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++ ", " ++++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ++++ ", " ++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++ ", " ++++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ++++ ", " ++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++ ", " ++++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ++++ ", " ++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++++ ", " ++++++ ", " ++++ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/bxLok120.xpm.gz0000644000175000017500000000656010361553650013743 00000000000000b=bxLok120.xpm{SۺPc꼟 $;L^ծ$[vrg&eZvb:i~=}%-;O߉d_&Ew1t;rk=ށba;cп5WOl+!?>.Yj:j!OA@MxT,laTDu5H t<Oj>d~5PĽD:Ug*lr2y<@5 Ĉ:Ȧq3H(O?L'DSI~l.ǦPM$9J'SV9!FMFtNX#j&G{ R%8V.x޶#٬`\>N}-x9+$;–au-a +g`uMmj[#]8Wrj=YLտ%3?ᕳmxj>rl;zzX# Xs k9}BU =T-z83;;1635b ms5C|j\jmLj\5QZ d;#mUNOޮ:݌{j//Pzn7UcT1^0F5g/kGu[y@ZJj H3&;L7.eɨFjdɨFjdɨFjdɨFjdɨF^8 2H!W$r5A !Jmq^qӴH$6)31YB43#^~F>*a>cFCv CX 5 6JFLA2M2zSbjZ(R!# Ƹe@YdV22F2q?1ǵZM'TX,Rms351_SF>t1𙛱.-8C\^ yⴏP?5igC]0?k.Bz5g~F\خ>ƣ0"89xaܕ״c>{WvIk};1 dƉ>{}߼3,Q};3M1FR4ucah3:b3c{+/4YW%y}J.G{g(~}r}rŌvv*L67˴kc\Wr9eaft7V.o~z=<\0 yqAKZ Z\xB%NYBbLhn5`>TDsM T *B@Zɇ#q'jTɂoa$WG,PF AƬgc_ђ< gco̒ե"e$ީˇ&rn|ܑO&FrtqȅxzǸ_VAтlɊ#T !#d h6\`C%mƽ7h)I[dlJ.Axlzv@C&}2:w퓒le%$e,>'}^w#^>=4<.ݔ\}bq# t><̵KeW6g&">eq8\{s3>D$9)UK١Tu֨uC_ʿWթ[7eGhǎ?cTM\Gibxhs"%uo-F\M_{3brm]w{T.z:{J{{PzPLj,;FѵˀAHFP.JLCUxU`sfJϦ<ֺs@4㌪-Cֻ2s8{κss:`I]"E3weIzmx9K R*)&z83|W1$LVTwIwS Sr5i$ƔULLu&#ϻ(¸Zxa~Gz4s ͨO0Cvm2z#u7 ci8*2= #m'9Y-K:Y<( }1㈳fbt?&4cӇq(GzNFH`4E@ꆿ;blڌC hU뀕|D[4i"ж1uob+̇H%Cw %+;h >33#DN)LXnӃ*FvIو>4s!-g]:<# 5VIޔjzG\hYS1…6d(clk23fxs@(FW͒">7]fm iSMxC@X$KF5dT#KF5dT#KF5dT#KF5dT#KF5޽ukcuyo-2.1.0/data/pics/msc2.xpm0000644000175000017500000002577511545155530012677 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 288 5 1", " c None", "1 c Background", "2 c Background", "3 c Background", "# c Background", " 11111 ", " 1111111111 ", " 11111111111### ", " 1111111111###### ", " 11111111######## ", " 111111########## ", " 111111########## ", " 1111############ ", " 111############ ", " 11############## ", " 1############## ", " 1############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ############### ", " ############## ", " ############## ", " ############ ", " ############ ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " ", " ", " 111 ", " 11111111 ### ", " 11111111###### ", " 111111######## ", " 11111########## ", " 1111########## ", " 111############ ", " 11############ ", " 1############## ", " 1############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " 2############### ", " 22############## ", " 22############## ", " 22############ ", " 22############ ", " 22########## ", " ########## ", " ########2 ", " ######22 ", " ###22 ", " ", " ", " ", " ", " 111 ### ", " 111111###### ", " 11111######## ", " 1111########## ", " 111########## ", " 11############ ", " 11############ ", " 1############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " 2############### ", " 22############### ", " 22############### ", " 222############## ", " 22############## ", " 222############ ", " 22############ ", " 22########## ", " 2########## ", " ########22 ", " ######222 ", " ###222 ", " ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ############### ", " ############### ", " ################ ", " 22############### ", " 222############### ", " 222############### ", " 2222############## ", "2222############## ", "2222############ ", "222############ ", "222########## ", " 2##########2 ", " 2########222 ", " ######2222 ", " ###22222 ", " 2222 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################ ", " ###############3 ", " ###############3 ", " ################3 ", " ###############3 ", " ###############33 ", " 2###############33 ", " 222##############33 ", " 222##############33 ", "2222############33 ", "222############3 ", "222########## ", " 2########## ", " 2########22 ", " ######222 ", " ###2222 ", " 222 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ############### ", " ###############3 ", " ################3 ", " ###############3 ", " ###############33 ", " ################33 ", " ###############33 ", " ###############333 ", " ###############333 ", " ##############333 ", " ##############333 ", " 22############3333 ", " 22############333 ", " 22##########33 ", " 2########## ", " ######## ", " ######22 ", " ###222 ", " 22 ", " ", " ", " ", " ### ", " ###### ", " ######## ", " ########## ", " ########## ", " ############ ", " ############ ", " ############## ", " ############## ", " ############### ", " ###############3 ", " ###############33 ", " ################3 ", " ###############33 ", " ###############333 ", " ################33 ", " ###############333 ", " ###############333 ", " ###############3333 ", " ##############3333 ", " ##############3333 ", " ############33333 ", " ############3333 ", " ##########333 ", " ##########3 ", " ######## ", " ###### ", " ### ", " ", " ", " ", " ", " 1111### ", " 1111###### ", " 1111######## ", " 111########## ", " 111########## ", " 11############ ", " 11############ ", " 1############## ", " ############## ", " ############### ", " ############### ", " ############### ", " ################3 ", " ###############33 ", " ###############333 ", " ################33 ", " ###############33 ", " ###############333 ", " ###############333 ", " ##############3333 ", " ##############3333 ", " ############33333 ", " ############ 333 ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " ", " ", " 1111 ", " 1111111### ", " 1111111###### ", " 111111######## ", " 11111########## ", " 11111########## ", " 111############ ", " 111############ ", " 1############## ", " 1############## ", " 1############### ", " ############### ", " ############### ", " ################ ", " ###############3 ", " ###############33 ", " ################3 ", " ###############33 ", " ###############33 ", " ###############333 ", " ##############333 ", " ##############333 ", " ############3333 ", " ############ ", " ########## ", " ########## ", " ######## ", " ###### ", " ### ", " ", " "}; cuyo-2.1.0/data/pics/mdEgoR05.xpm.gz0000644000175000017500000000372112412223251013745 00000000000000mSFS v? I`H Xr%L[H NKp޽=CIvc: ml?iwOʛA_٬>^L3e6^)En哧誢7ӭ'OegZS((NtM-|.F-U#\~ϥDWln&^fV*J[oG/P2kGNjĨ%,\r }SUMxqGeYx k2o Gu4q%Jbu︔i6Jj3rM>i(8cT"i .WZ(bLorTVp) WSD6U4q,Ab4l56lYxGlbRLdlGn#4ژ^ S`4^ v(&Lhe1Ec#Ѻr KIy 1F2^os3>Oiܕb}' |AiNeP.DpX,7"YaحIwg<<.tP=rLE%I Juz2=xxnF Vj_FcЌ]CT"x'q4f3x\=UÀ&?CU*8*3@b0''PU# "Y 9xw>q`@((͎>]I1TJ1Tf5/֓TnWl)R0vϦg IG8Nrq6H2D|/mSat|fTir*1C%Z \.^^ϏK 3(QGR`߫ǻUU*2_ZF'Wqs`^Ǧ\!{ՒcorHj՟R, 1jk 56U8EUx+p9Qh5㋋F Tg̱Zk$5ͷ5IZєLJYqNo CP0 ?y%7cuyo-2.1.0/data/pics/mscVerbind.xpm.gz0000644000175000017500000000766112401656724014543 00000000000000M,7x!A" H%HVatWw|>eo__߾}>vxw~ǿԵ 0ñ ePe(æ.cZzCT1>^mzo?DCC^> i\ӻBJ>0|X]0 0 0poQg>cpӮ=0} +ڃc,>>b*D@?~-?? u%is`pT 0 0O!|@hsߓχsy P*]FD><* 0 0 6,]d)sT]DD4g_yt_(Ar-cybVO3Ibx,O1M/P?8\ǟ< )/iCa>6ΐ!C997.p]U&]`rPiMbϣ2 j)w >Lu\sB$x| r=!`xPu+ݝY7t(/yڜ49ss% 0 0 0 dßl{?UyBL_(Y߼:\z-aPmfm 0 0Wy*鶮 ރZ?,}eFm~x |#eM#K_(a]^/}q%S3bz], ł#% 241Cц}mwn {A/1`"CRyY=h,>FS?C{?, AΛ8e=OyAch }%˽Aϟ```a/‚?0꯯*L 0 0 0pMckw{~eKU!%CTM6ZeWW"-yp:HI$dX1aIO;/cs-χɑ!az)*p8hCR9=z.)+S뺙wO>A-iUtsmТa(2?"a|I!KM?,r3?Uf;G60κṌ?lΊ N9if  EՃj```89ø0zX݇χ^e!b$F9 5F X?ڨ>({F _ 0 0{*a]&VU,mY-)P9|y?~ee9n p߭+ X?(-v"K.2 jD{\{GR DN? Ӄ>zN0dff3j(/?2bZsK_m@wo (/qh t:Êʀ'5y[`mp<`8Uq)b}k C6}(ܚUߕo)ennODޏemnpo~0 5gvѵ֡s052': 2Lfn ɛ#Ǚ0df^Q.ѝ kع˩Hҝ@T=6B*ma[߿ʀ'5y[`mp<`8ڣM"zZ~gPW=//0 0 0pvE=Oo{^an_dsAq`A[0 0 0p9}e=v8,al/`AJ`>iDAfEZڇnɸ%[bM` g:5ߏ352 ߗئbA$f`,)%e2CKjl<5" nKM_{ZVrfDiW}=DZ X/ e1W?ю@4,dF``~ D=k_nI0|]/ރheP=ZZp$B`ṫŴmMիvIS`` {ֵߕĈ#? 5tgna3X(k =!2r2Lj1̏q잨 s,o0~瑭#?9y@R^0)· k|im/z!W`hp~y_NTun} vMVa,hOBJLJ a/#u$P1$VDbsrn\Cdhy7]cO+mǯ T|LG3=```ΰxTæAH|B>p=̅@n f}A&/z=zţ1{]0 0 0pv@t^W.-tav1rh?_yZce ϡ sa cKOt,YO?A\ј9Y&ڧ뽠^jG= r +"| +Pe쏊ғ`0WbTcuyo-2.1.0/data/pics/mdEgoV05.xpm.gz0000644000175000017500000000364212412223253013755 00000000000000}sڸ-l/R-bIݗ]&jZ'+Av.;{IG9#Mϐrtou\}`t<g{k7y'~71kfTT4M4͆YgIK5UfR7-7pZ ::m#HnU'jlؖմ4m09Vۮ[@%CkͶl`âcAAm͆`ޟ`<_%C+':fFl\ADu&U6UƤ{nUөb6a<t|bc cBg[&a҂VB۴txRCac$TBG0oy~QlDO SA ʗ0z&Ts Xdk7`>a ޙP䘧0`8;ba0oyU\ҌDSaLCjy2-^+@3t/@[hmb;|/-g5>0 W䘗o٤PyfkP}䞱nA~Ϸ$Y$k(XlQy$IOΚ q6JxgDz!69 L~iA$Tt7V | ‷b8&J!V]o8$aiZ϶50,ݼrI`( `( `( `WR?4KStkAf#69po-dQPlIH3~1~^YAp84c@nâfެ7cʆȘ@]i;R BnLz777axslqYaexk{= u0ȽlL0 w0Ѝ^h8lNEePBcbɳL+w1`Vǀf=f /2‡ 7C(7g5PiY^>=Sf"M]i~ܙu-nn_0" }QW@@v`@h>dNҩWrJmeG}Aac5;g)tgS!} F;t]K6pkB'>Sw2geaB=0pCàS9g60zy1 Ae2DACyH8w= w³92S`5,tci2KSh"B_C0ɐFfD00H2$X˞!w?}9e`;YL4bIPf"j_ԟd[4 ieOawŀqd4;.yV7KXҙfk/B"'q?G/ LZ?l6gFZz3D(Bڷ/$E8l iJ3?/+I,/:"C1,Vɂz$i-Iq0PβSU|\Ey>>%)(E&Ngޡ6SeE({PZHxQƐTJ|8;J(֥h]2rT*q#.^JkBq&NҩR$J!2-Β ZAQDFLJ Mi18wZYT0:Vٛk*'çdXAHB{b0LR~/Э5ߩ?R=?T_oLk{_Uu>Gg&0`6 G7O$-~cu}`:k֟Yoj^-ծc@o>?oZCf BZ?7vTAM;SlnE87ÿlCP0 CP0 Cpcp; %7cuyo-2.1.0/data/pics/mtWall.xpm.gz0000644000175000017500000000046212401656727013702 00000000000000Kk@CLDW1b^BRD.B]WgSf1n>g [o;DqT5YFEfHcVm y&ݓ^kI*xZXiXEѤ ҕ4;^LՇ;R{Q'!EVRkβ -YmT%9\Q+9_eZHg "u)ZZjAA|wd&G9=[7`u~y};X/n>=_naϖOKxrn&zݮ⢺QA]Ņnu7U'u{u!=DkOkח㋎!A@cӊ=#Ǥ? =TyzFN=e!Á9A`F911M0<3F9SPtx{ֱWaptSb`+3 zHIy+sjA2u of 1%-DybWkvX敿nj$LJ`jlO CNWs4=3;\Mˆ:BMר:`f (L@sM6 L^ކA6.'Pcah QoF-}cI Pohț[4jedC  xpsHFO# M[ՠrsLۭz'wW$j׹oa3L:ghט|2#hthtf ־okn>Š߾c{mZ#t _hgo>xEf~\. cuyo-2.1.0/data/pics/mjPlattform.xpm0000644000175000017500000000770311347236670014326 00000000000000/* XPM */ /* Copyright 2008 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 32 2 1", " c None", "# c #00ffff", " ######################################################################################## ", " ### ## ## ## ## ## ### ", " ## ## ## ## ## ## ## ", " ## ## ## ## ## ## ## ", " ### ## ## ## ## ## ### ", " ######################################################################################## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; cuyo-2.1.0/data/pics/jjSommer1.xpm.gz0000644000175000017500000002333707550521117014310 00000000000000<jjSommer1.xpm|}SH~ 8(#2AXV骧jk2%2j`|߹-ɾ)X^Nso&x_O\z^zjqo{oO_{/KvݓhF'Q_hwp*^+wExB=}3{v_NC/ݵ{{B[;u׾rJݵ'$ܣ_hޱ8]v_sOPiw/|=wݎ:Y)ݠ98.w=>sN;{$x߼:;9:~݁dy ߻EnPDwkwm"D'7nw?o#wCv[!;9CtN7oNVO!8Y{ v;vi}+^Kw7crƇN (tw6䝭$?;tϝuF88v1nuiOMľsCnu'gdש܀݈ž{:w*rbp}[[~㳻բ`qЉ}U} ޹E]N؏'a]g#&4U%t#6bC9,Ss^ U+<^0vLsڶ)U$.sw7״.΀ƾYHF&6w`:~V骚v;md0f*%b9 GAʶ`j j%A r|if'1 6<ꜜ" >qjV AĨS(N$#G_ƈ!OeΥ]B?Z2͍1@QW¹pbYm0.׍D`!c\j n:+5ffRxMetgNx xGOJCon7̤r 9bN@k:)̕P! 6Jái .ԓ#@"ah=0؁⶞!q% : eϰ cx[AG__*f`PW?IDhKs['1B0X DCTwKNi31M`Eq152ŵElm*jS ŖRCB0ÉUNxU|60oUE8OhjfϺ}]pq{"$+jx˝X"SPA?ф&hSr\e(%|yCaੌsVOhIxiڳ3[W@شef #.)Ɇ @^Rռ!hQ Rjㆌ|wTྛשJ{̻:6:ju6 t65.ƅnnط\̻߿?`݃Ȣw1|} ¦&:<ʘ~Z*G="dZqY/Fl#ce$W Ej-4S 66JbD,\fo7`>9>h1Ble2݌ 7.Fd;FjLQZ-i$9_1s%*~vd*k"JL6o07js? q;6Yl5ʧ #7ġͧ`4Mс߿Xͱg6E-37[թ~z ΂`B^ ^5E=o1 !f1`X,gTj.NK^[bg9޻S[[PzAn*6 S^Fet VŰ v b0ke\fͨC% Չ㪕GGހz q ɯ&#,`$E +r A$-QLAsC(dqfBLC] ~>cj(\ۨ}BU;/5kQ[#okll:1dBW~C2vi5q G&߈YZkKpkq$\5ze1I=GHuNУ 9m&t49l5lT:[[U ohLN[bdZ5QB5Wg.S4)tAo'xZÀZA| 1BY2KXQ>$5Z%jo_d ^]Í)5Uv8 a@9THI20SPeV~ǦQ CcY2 /_X=nZ-A!]q89JZR'&u ͲB)2bxG'P(Lg+NAs b3C#)ZKGlC SZVsI8y'Rܷ1 'ATWfv&|rmLQCS"媰(d!ၾkXYG ̊96)ֶ`4٘a8Zk1ysK &:^澙iS˔FU L[XJ9)*Ԓ%baTbNS;?Zdf]8hDz 024RLGw;FO۶΀-hB& :pslQFTy(IY)To48.bZ0#[츨yx8mQt2)m:XL/`p|ZeMXS1Sja x+_60ѥ)}?YTQb(*VE>YzAr(c^#B#܆Z!ftѴGp !!WׇFA90ٮ? q2X}E s ÊĘ]-IV<1 B'mvݣlцR.jT"SDn8KuL„n+AQܫGڍf)W˥R89^hԈ; ̹c )9QUveL x2UImF>/BOhdX¡ΪlڵF Bdn\S } :űCD]Kbaȶ.j_˜tyj9W:Pmsa_5M HkvG`̔IrL><`r2pg8$9 'U%_{.RHSվ˂1+4]i0gMø|͉(kꠀ}jKpoHq|Eqٺ^1PmFDZ"ZaEQ0QCT rr{E0pMlXR:!JOl4/@&8JM%Hɕ.BU7('ɢZ Hm0;A Ӎo0\{hjxH~7050(T.V_8&׶;w.mo!T6ÏMy!zs貕7md78ا@ `ȑLshy[y a"hFi`ೀV4 IIvvo 0J=LU" A]m\t]Puve0ww%D"0ȶΣ6 RfHj0&vq?Nf1$Rbc48ػ:<<\;|?m_x˨f\3y/%OEkX='̛b 2pps 8_NV}#-n-O޽{҆0v KP(P'e95jE'dݒWp¶&A RztxHBOpJÌð~E T$a.Uj:#Y>\Z"H 0Ú# OKA YnI?{=0Fc=eh +j)|yY[r#|#oknN?N~?Qtb8x|ɤs4ɻŀwD}_GK~a(y6e ' jJpnDaݭÐY@ݤԶP{0 R{šGq >Tg*9,E+"\_/_B4.QGzR@d\T#Zx(76hŦz&Bqv'T|^#0xiZri/߾4E`<Vg$2H Bͷt8M0d,kH*sjj#(3.h)2t+0੝1^ Kd pb:%vh}e-M#$IavCݟ{= 5>z*fיrs} ʉ[᧷o R-MsD(o7sd-Ť0*[IzmOp0Ai5\Gis [Pϣ}v|[ĆxH$(wP?hh:B|oejzH ޶dӱd t0ܥFuS<)i @m7ejY W Vmr~O3wLU-uaȫŒyPj%IbԔO Wq1P`H\4m?P]@FĨZq^kX} 5Pbg8;{hM8muݳ9I,.kv,4 )Z.۔t)$)*H,_ۮwE >H%M4PE=6K) cExn0kݺXxu2ۺ(&%Z/YF~Af \u /M >nyx~PO,I)b2Mh6Z* I@/@(ݬȞMaTq1kTi46tQԊQ2>I^i4\|oJ5ddq8[*o3١nfEk@ 88Ӵ&/.Ie%){8#>Ű|߯VDa-'EnrK{W:S]~s)\a,=bF!,RJ`Lȣ{z?Û9(DQיQNoo%YdzbWyۨ\ KZNǭ~~^,]3Y⓱k $Mz  ;o8 fpؗ*h.Kس [sn&Q6(( 4#`;\Ʒ`Zс#ߛ* ZpZi ]\702J )/G')U6 нi2efoQ T t Y,fh$ޭ1*-)KQfʇ -.{Ai#Rev]ajxɵ[*Et }Z7@ 0\ܙke (XQ Q# l_(z-5\(u N)ܻ!(ehưL]Ê^S("Zal>x@ IѸN>8tyiRۋVZ ͡&o j5} uv!h0ɋ]nKGZE^ow9t!?UV[h(2dLa$U*K-jz R^\ X~h>FaS`3PaT[G dͨ7A7 b/0d(f44ͩĽ n>E!r4]źLcj@7gY R^oʽaINaz7Y6/-̚llzLjʡ|SL1|m9Y2Qѽ$sT^mG =YT] G?6n !SxLƈ1YG1GStafDLSy#[trM OaARFQ~[#6)%S=ѫb1Zw{y߻+xrآ{T*gĔ^ eKVrFתc1[<ٛ9s$n@Qr3-i]D[9ueI@ٵ=;SuKzF"6+};29,nrL f5Ne)6H(#ZՓ מ71=yi^Qm=Q%7"ii'7Y'?e][yeOR2t {^bx&wٛݫ 4A|"ƨ~)-45$Ͽps5oޮ^N}QcX. DGcuyo-2.1.0/data/pics/iwBaum.xpm.gz0000644000175000017500000000351107550521116013654 00000000000000<iwBaum.xpmݛOoESF9@B\B#BȲ! $wnw{zg #řu]o]=ݛWǻ_U{Nj_/}yi{q}p߾o?yy7w3 .0<:9Nq-ryIK`&R~vS)BkXi=T M?cY+D`tJj(l;/'!ͧc{s2dV6`8A5SuwrTgB,ÊHDqkށ(e2č(O7y AKo7ѶYOdWΧJ>#cQn[m'EĖȚܽBa}yQgj+%CRd@aHӜYk< )}D0\9Uei޸֒Ma=LK%s2Hs+ Z"&7e :ZGnǘG@B%/Q»߱:g}AL45nv+yFv-o DױPh6ՅjW nJA(C,w* BTw ? dH- sJ2@0<Ď}\tO4"4~Fci'á8!enBXV {!\ XH X UT# WŦ8Eb07ŭwAESso)YZ"vubP\'R҈|ts߱bJ"[&'8{^zCM050;.Л#,BȒCsy<2UD]Bhm/nn}{oK W;1?cBcuyo-2.1.0/data/pics/bpPinguI.xpm.gz0000644000175000017500000000165110361232217014143 00000000000000`CbpPinguI.xpm1xsjzX = "=. v{t6|Iͣgkzg_7;}Ik|wusOHby :_>],ɎҼ߯gTMSm*mS-mJS]9j+K//mX9޴"zM.Dd,ypMk]rqg=S8s !ժn^v܎[[2ރAK>P6YtG׈yNsb4*LUB=^no>nm|WQӷ|mՑx|ѯ+Z8lt󋫫WufӪRw7Zwߝff~n4ݭ͡. [Us04DѧR. .Y.HxT!E;BI2yQI2+3~^cVT^A>iwq+V]AUdhahYR1<4dv(FJo̧wbcx^UtX ah/+%_O1`W0\}Fz,˺ DZ2[Ay"(43C!R !`UQ-ZuwFJg(Rˠ P_iUFhghIJ e4qKǠ4 p9s?tt `CҫQhC[y`ZW?p?(?(????8@1 @q nc@lݛaqC TTTTT`ƥSGfᾥCnj34Ss-C^Gw3Mo/{^Ǎw28H2q; 98A Jt 3w2~wj]0&Ρn!T(G=0p1( ?8# p1@dO !?ich8?͟{ XA4‡!?᳇˟bOx%E'~{jq :'>W}ìÀ?gh lܭi7G!00X ԅc P!H"3@ |)@70 L 0 /`$ FA 0x V|/CX!8oAc8B Ӎpd~;Bcuyo-2.1.0/data/pics/itTop.xpm.gz0000644000175000017500000000056212412360134013524 00000000000000)TitTop.xpmj@S.G% Hta͢P5':I挻9&Ȍ2X|}@6J.P6g`_Ώ\ ~4aCtR{[_1 5F"[hj7ѢC:m*Z/wbv[5ffvA{x+F|-·hvvf ӯ5% ӗugF3k{9|C+ǡ sDpp Q5C>gvr(Μ]0]yrT:ait68~;AeiVeZʃGQigpv?;Ww< 6ԪW$mw.NRѰF<ƺ; w64G{7 Kih 5&I!tn-6\p4 6Av KkK.tBTڐORK.!@Z r)οL5CãKkh9>SN?54NK裦= $iKU?hqЧ)I-| =iuupku`*` :lxm* nzP &#_o 1܄hOtAQOGF ;Ĺ݇o~M<#X}Mr \8P^轰X bXNFS>] KlK4A_>H+]PQ T&С5O=:iiۤjL*CMRa@Zç -x3 CPp(8 KOg]\%a;㷊9̷حb-};üEwqHq}^2 f+AS&owa80[!9zl0#gUKc$f9HDfJ2œ9) ~:<=5mҤ-,c[d`$"}7s ,aLSvi<Ȍ6Hd Q 1H21): vB~<'LNӐ?9'y,y(pN\@,(㜥*} 6Nq 8!lcJM6NHً8M5}Œd`32`߱TP^xB~9HH;JI!0"LN$gIS Uɥ/"Ѓ'1<6OC:9+24B l40 qzȁa_I"qPJ@es!=PFF6v&L*?Q %j.e5d394'H$O!оXCQP@@+c.T4BDEC/a3S, `D0b[8yPXֆqw;e,evK,猔ܓ%[Lt&POT82U`ΣpaU^1`L&PmhdZπHuOxp&^pxTX &"nj2:Lg#(DW9Fl$$LPG-8ФN,(!݉ UN L2)c8H(ptE*8/.p܁X8v*Fȱ6cQ+,®K}80zpxiлT!"ƽeoqxB-8MR∀TQzls81XȉR})7~#)돆a1u3qrl匂8`SpA U"{g9#vB%"</YLIAk0%axnTd_匨% Y&BpPOdlyCP./X4`8 ,\qH21 d?roPq.C'MiyR,Sh\hp֪+Ju?:{n{<ݜ qyzPԮ;C9I0x2( Ҋ:<ֻLnFoQeKqi^wgu~̈ʃI0$eV{⼲bǒtm>ZoһR˝fkbu7^Y_[6+//e0y nkyjY[-7D8uյ'_L+;;횵 :@sX='eʛiAZy|zuqEuǪ|PdgZ2`3n\9 pܻu0 sK;20ϲxObpcѽ` sA*:'&~2/n/كy,; &q_L$lfnzwބ_aD c:ZZMI кl۟W/Q&}OxsC#Bw~?f ~]$tϙ*^i8t,[h6"N!N#'c2*Gؙ8؆`3QP0pD}/EU# BJ@]ߩ7bϨ̨#zQFyҖ&g>FU (ze 炪RDVsb1FG]VEb`uRSKڀd|`߷ e,gSUM[jD2tsSY6hSWdFJ+4ſ !8!'n(E{a7${*V( ![ܢܮfn*M&v5V(R0ljjTbX P>ӽpõQ 55〵=|q^= P@6b}:GG!1,qe%_QE6%~cFC%tA2JWQ0T4 |0lC:@ >]B :A1P/T.A@hU>'e߉<{2j(cuyo-2.1.0/data/pics/kmPizza.xpm.gz0000644000175000017500000000554011347236315014064 000000000000003KKkmPizza.xpmXs=D x18f%$`xx}$" b;!FX3]^=Uhf_lr~e٣/Wie!L*[2 c>zl[1:ƣǕʴ򤥴- '(V[CnWeP;rGEg2E]n\vK3Z;Lf4QUY nEV@VVE>ivܶDN>%Qʭ.6`~-̸E逑$ʴYn}[~G6mJ\YGV4`ES}MlY:2EAͺjpQ'NU(R A"U@$ZJM:"\.*"P]:"U*+h+(UCG@_>ObK 7.*zTNbks R.񧰹(& tݿx"r:$ G䠢*quL9'f(!!P|˭T9H .DEԽ'EwJi|DCIxN[Hʉ5됇(HX EWUW`F)ddDlAAye:<,M‰IlYE}[inhsܯ+d.]F`|4>KQʣ81f{28N Roʂhc6,F ԍzѣ'B{iW cgemoo&h& ^ĈhWiN ۍPa̔#֟u(XݓEf=&ƶ [2_{^uKDrЗ4&kD0&Lb>ѵF%]˜ILiK7M3OLc=@Dlwb3#כLItF qOe}[Xo0֙ZlNc=B->H&kLeI7" dDzI F)m@$\gAn1&8FC $>F\\,cᔙOڛ@jBnImGh:ˣÿN~ !Ril m NMHaX/e?K||9u!n!T3 G@JOl+"F| CtJ=p}`w2)X=X`qz 5^5QK1BBH6G }1hODxs5]8:m7LjY|4ΏcDIlg>)_zZ#Ά %'VQPՠ^r?7?XX`ܑzP @'f FJT9bZS$ǸU쁹Ax2]՛zD`DkiOZ~xCK3`YP%`*yjm1\9)h83$VDU`n;ҍ0f@돎T#c |P!4z/;>ǹ?~:yF]ùek#YM|!n^ OR8_qD:򾃧& hfbw!!i-SyYC%4Č6~s0N#! <1Mr7`%4ܿdhԓ|_rPN&Mћ()CcǔK9s n/̓lv`|vNyobF˲'4H@L[\}:Mzu (cp?N-f4~e D%<Oq[e{&4p.S)baWr/Gy»Lzy"噸**c!*"{::b/^g}u VL,,G>b^Q9=3HțY&t B<8`>vdn:,ZE aeHȉlt bK+fCظ(HlZObb. ۛ 4=XrɤruYRұ+  nʸyi {48{?&Lcuyo-2.1.0/data/pics/jhDrachensteigen.xpm.gz0000644000175000017500000000526407550521116015704 00000000000000<jhDrachensteigen.xpm[[\7~^ ᙚe?솦y%1f8!C #.u8xܧ*}*HU?w+l?? o޽-l^ͻ}|/_gϞ 9(1_>~wU{\#Ǧ66/_@Uz/ǯ^/D S@x!)0ħaSTҁR 1ABg`q $?F26}C+jЛt 1@Z o1ĸ;%yXbV0A>Snt>C0xĐ 7NʔhI BcPɪ,@R@5 {07qCb0@;RM1]Àf9ScaĀy[$ gZC%`h+%QmKb{u! AƐ8y]IT,ʛ?7#wEa6lw8:m voBL̇+˾q'08lU.Cpa1a.؏N.uAq`5-?CPEIP p ʱCb]U G ~jy:u0K5׷u]T(R?0@0 M=,$~=[u0@ܺMՃU9 Sěx_|!)\R"k,CvHy[  auFL, %0tςP/a70 L|+=ff0;mMHc80;w:oV@bwdqN1ܪz6J&O1*G'X)]rfq wt*tT!o8pj+yXx$Oޡ$rr,ހ-)hBmހ.Itĺs7b%JA^Xc༁Hnl6;w}P.ȠgMX+@ bR\q~>|olS9bMݿ}h`8V*N%dotbI+@_dO>)ot+ih _c(Y7XcSDGoۍ]gp@ Z~g,#fb@h[>)a'-; ^ٹ=rc861tFCFtenECxq7p6Jfdϑ;OVzZ^ j~ϾvjE͓ܵ!VõİdI  FZa/UreKoOS -a y=hϝnrwLE}ܺ݋aZ!Ly ݊A^k4gA a97 AYRwk|75WUG4i+c]TଇfN6ľ@Iy?9<O `AIT3 #yK '_bugu\Dl-1M{9f3IC712 MA^^חe~F# ?Ecmz@qgy.:[I@sQbkv`C쀃׀smg{<bMqYF?YDv.UK:w#1 ><g5C3%lzqك!;SUb<bru~@.BPyn.77%Pq  ui&r]kO`HcQ [ח \2`x,KE78 *wh\@-8f #+&!p1 )zNct~`;Ϊ Mq_Pi3WwyL$漧}3>lqP"w~t_}k^|L? Ec$&?w!  a># 8@?@!0Ppiڸ8/cJL!L0^0B0̃ᵊ %,VHְr . 8W08@r`~mFfFFcx880 ``%B"7 )(# r`#!>ת*`KqߜѣP8Ռ Qa<$%p ,"TC$w+ cUB %2d8A}J8F`p$c*F²"U;xP g5j$`3I}UlX$b1d$B9b$ت8*86 pv@x 0!!^Kq2f^b3nfp28[J 8/8{YP/wWla 08'{~C ۏh#̂<(b0=䰑|Db ,|'Oq~F(!("DøM:& 9[9ncD*T8RHvaQ#hz؎4&nXX>dK % Q> ܜ1[&ǭo 푾A')p 'V „#.;WM q9ZXv1mY bCc/ !<I׸3.:+SX׼7¡ďZw(8xE_cb{bP<ȅFN779ٓ=ʓrŞmmSJ\9mífʹ\pԜzD?󍗋`]7(5EsxL?dF{04# k{ZqM?:>vup?Eaɺ2,/Ll9jslؿބ|ƆQ/G)xq q?꩞o­dgJ[ͫ9[eޖ8bKD}ݞ{QSF\ͤ|euyb#&Z݊{Q"e3PVv?gˌewm*ZrRushdrH4 +{r7u;n}:5K@p!n_lˏ\|T}󗉡0YL<c?&Fpĭ(3O.GEJO?*癪9Z$gQ);4Z0IP4!t|A?r3Q| v/ڌeI?j%MHEsxWF?Fh2ʧ7T1暻P6tc;k0kh_0{̴C菧BZ֪EO]2^Di2~Y 3kJ֕ߩ?V/c?;`c?,b$A،-SizT}aoFyG?դ?lV,b3i#!iwy/g͜?Vb?V/h0E>93eHe9G/Q$?ƣ ]Yj~X!e*u2-GįsL\/.7)'曮\pQ:\ f%|Q`oV/ck_~q|̥Icuyo-2.1.0/data/pics/spPacman7.xpm.gz0000644000175000017500000000121111662241763014262 00000000000000ݻ=spPacman7.xpmMK1WnOl*MQR=ۃ w7K L6iP>M2^WDWl7rXO?7'q#ZX W"ݾlRܿ_4QֿMl Ǻt3mT8&9&`VFEYo#EJ5rdP\IYX?fcǬGc@[Z%?ҟ"0f0`oԻNW0b{nCE3OFt:j4WYjfl-##^^^^SuOʺq q`s=$Ty@NB PP '(*N# ψfE^4s QeQw(;'eq&HL!,D<1p5B伺ƒFYXECrXEjlXSejt]hFuR:aN=j3`NJ9E"y6FLEp3KSsPX0Ei 1h lU8do55AhV;#{FFs>,-QGU^'Ӝq.Jl5`QhoKJng%I _ )@-EuY!1S(gpLNGx,*w3#!mf<_Y 5PqԜZXUXS: J{fL!c͸_hDV(z J FRR"~^ϾAAɈ%ݷKR!uHR!uˁ_%;?ws6I;w~l ~;7kTzumɧ[u\PUb-k-6CfKFiXlrضqv,M,̍[sh6PC6CW;lTg̯? Y WEz?2Jh°]}ѹ>>|eF0ZtqAf¡bVrJ'Zp-a6{ܓ*Arr|n?Ife:Utx =n,/і|K?Řss89|S6=|Z:0; !8CH=0x9A; ^9 j0>gá݉8\ uY:| A say6[H[]QpnpC>Pșd,cy?D?n] tWgjWx[^ޛݗ+鑮,Ptв*PtOm,"hZu6/Gܻ@JuHė̫glbցs {jK# ggǞZ;0v||Wn:C{8ϥ&cuyo-2.1.0/data/pics/mlGrau.xpm.gz0000644000175000017500000000337511672457347013705 00000000000000No6Wʗ-; Yܢi4i`;aL)F}NxvW_r=~ȻH K8:u@af9w'pK?>ʅL.0eǁdN$)UT3 |D>(yi)YC|J{Po%3X$sR9 < 湄0?'jEH}8'2-ezA2-^[ԏz~g|5l&' p/)F%'sPKOUW(TU` ſ7fV7!\ ?x#4OR VMn G&9ᣂ!P=?JOE&gN!N.|NChĞBn.ϿX\_i~0MMA+mr|ˠzhduSZoEt@Օ5 D;e5~1l{ !ZKɃnFz b6-rl0 #@3K]jBS}@=h1nQӌŏ碚ǪqI π pغ( qnA;3c ]7T@01X~l{Tq.6-|>3PWFA7NG]04)Cgvϰy)|c ^poMgʰ1\À p:̀ _'i>T=#(beB ) z6b(Pw4 B bp^PF1=ht9qIPAcO Fk V]c&v&-K5w1TP-28󠿲sQ9 `ц3j\`>`׃<`_ s]?zb$kҪ[ ~`:ג`ue\z0P<:o<50X"`8m䡵:wߧ}=`/GFEcuyo-2.1.0/data/pics/mtGreyOut.xpm.gz0000644000175000017500000000343312401656726014401 00000000000000Y[G"J(5swHuQ(#$\ۈVi+Jޙ٣3"Җ>{{ы|e,ܪ&I*JpJe2eإ`iCp؀I^eֆհJp`k b֘v<`<:Vm7FF04a7@M`MBhvu˖1-a; /`~oU`[c3k!Xe k>x=hO!le6)'`ă[6Q\6D hBa 8O?cvwE̶yc`%; cO iAv}TQQ0R k .,3L0jN;à ˰k;WVX8W2L}m3kлӇcaզ{nH 'z*j<&JEVdV_H{a mTKx&Jǃݘf% {)<&a'e;0 k)8/ċ3b]q0l۶`~g&P,]9CK߁o<kŲt3"dW/*Cʧ݈}̓|#ei~5kҷb2יڧ@AǞzQC祇`Ξ\D|1Ž sѻwG7(\9?QVfyhĽ!h4/Y#D2 hlF1%ҙkPzJDx>yey;b))^"*5 /QF2;;=cW2VEzG 5B(҆kO$%Fq4·F,-*ǎg**л6Gi~O5;pMчE3X#8Zq۷'8mJVd%B!ܦ@FZ8I+4JsCaVvQ&HM(DX&%:T(IrrAhA`_͊:r=мl&H!ļ8Pܚ:ޒCHp-OeP51e=I\='Ml*'qWJӍ|q Kf戈_> 6KfBwӃHj}xP%7!ӉllB E MNHre.v$QMhT˩!I[N/o}Mh/SYE:uG#{dzpsiڄF|q^wH@{3<MhƬ鈲'06wFѝ<ś{i٤Fs+~ M~Λ}tqQ Խ c;o<څFۅFۅF3*V%*cuyo-2.1.0/data/pics/ipRunter.xpm.gz0000644000175000017500000000116107550521113014234 00000000000000<ipRunter.xpmIK1\:U)"b)I)=7kf_YN]]Nmy|+볇NwfNmy0dx ښ-1lKq DJkk:›7~)(YkR& $,ci TRXW>4Dhߍ5Ac,-sy nEV?6`0- RrfM5e|v+cuyo-2.1.0/data/pics/isTurmSchwarz.xpm.gz0000644000175000017500000000064407550521116015261 00000000000000A}<isTurmSchwarz.xpm[K@ͯC"FSH RADJڇELTDllv.܎/d9!NpayMm|9!ؘۀqb%u\3,iv&Al`Ɇ9Wk-GGٖN+t _.{vǟ;!.4a BW@,PU)#jQ T%ʠ P52@ݥjF-m!U!U3 jȆIr\MYV=ЊP7(*R/U@RVUPSTAuT= TBUAMS5j&,UK@5@R5G*C0H#!Zr˔UQߟܧNC`VclӂvYҨP5QARu?ch^ϳzC?0Է wT݇!-w?١M~V:vgU6юE@̀z4ŽJ+EMYhA4+܎N#Pz4m\~_4Qξoj¬3A5@퀚jT4j =Pik/J <u߀ꐨ_zZ ϴ,POi@= zN MC -uP/JԯPGD-ŏ/>Ϙ2Ysj)1?(1 R (4P/g[,iWeUJgh U :PuYAl5Z }-Z~)K=NU zpp`Ь~R OU!VWyP?g~nxkua JZ*ɡ xC[ G},>τ/<678;mp-(spMU6KXwDԿ70-"$k'(|hi2BbD\U4k|8jli ?>xy/%> 'Kj轱<>!!;Ms2‰]'9b-x0nƎx4b꒥DÞnI>civ|mgc3&fFcs k~lMAu7KFдk* T穵:FudTgz"b8;o71"Зё<3Dp3Uظ?U),?;}CtULpzu/E^5^u8ˏ,KnȖ6'O>sx3߉CXMo>.hAcOb{fOv^*Ń_]p+HVg2Î% vF8Rc}{,ӆ1=/,>;Cߴ "8veG0,7nuqȾߐxKYq WU8q\f} +1v9+a8vX7YzVojc撀A;2p $)"ՀΆDb(mжd`R v}r66NKꯚNx9QN+8EB#o?hҺM-'bvB؜%aزwV qf[ 0g uw,wN^w;niq[]vh"-uBɞE;Zb8QHU+H{o3gKHrΓAw)+$k!JAP8Fg{Rh4kA {gsroo8q@›8^WW MR^en-Q^HSR\(VĩBpMh])&ۧ/.>nOPBD-!!v0wnZP|VR[՟̑EVE %82IfyYxː\C水Anj>mb b`Qqc}.wvjD߃C-IFZc[_ q7]O^ͭ)b$E$5kU&qKiyM6jf(7:*E8BjV9kNʧq =bVOd-s\p}v(v6ٶºs3^ͽ_>y9AĨ^;sh¿_ xCmG*$~,k3kԏy?U+ tV;|0/rΎWwǜ&np'9 4a[p{@m\tuQl>Q1+2 1vKs ^|_`(x=!}m\©03DT48܈n3Ȋ*y 4Q8Hj3Y]7[f( ݉l   2##p"]OϮ*8` )r# IT3&-9%4%woNLMk95Μe8aE<8wcL:L{xE-/gL>-/F7-c6A HUaՃcqñM#[x bSa_ xCA}%nHiЫ< +MQFҒl9.#xdVsC3|rA~Z{R:׽`uVmt\|1agL90/6X|`zy<=uƕNDp}vCA{az<06YAXmj{}^ }nl6ԴqEH歍"p*8uUWQZ2RxZ.LFV7s"֊P s܍=xsݞZ(1ن.`yxŹ:eRCMUI&HNN+Ɋ> QŗJkΡ:F%a>Y[ٹ0,.r6H8?oʸ&D;7Z~ v)Jq&04JҭSIpSڵr:$rɲ %&̑, %ݾ$]L/r#:k~,$#m8d(C# + l5g*_GqU='b#dE\GK͖҅thevPp8n8tJ KUčR `мu0J69+ߋ-z`8OH?'kw6슗/^ب[[(Pפ[rbo,I(^u=k OI8Z欛eJɋSl EvN/Z=aܔW!b7MA IIjbg >̐rN%+.ǧ9n ͚ +dStU\ \ Mm].lSvZ[ܢq<][+o~/C^$dc$ĖyK?QW@^H]f=y~% E ]ao )+=kw7 z࠽b|}ow~~I-.<x#9/rȈK3˹k.wrAּt9w7/r/þ:L].8[8Md=I=ݴ8?EKWrPdKHF:^ttٶfz=Qz=Ffle-q(;*}Hd٥nPQt2cÇga(+%X>5:]YGOQ8YVm{ڙ]fngN?Se$E"nH8 IAL]QݔqQ8 ꊉ?-O-B{ "&g(W2Mkq ) 'bX)|Yfkn^e'Ӣݺl-*&[c9eTK6'Ȓ|hlbY=1eKpږN{K[bUqUdY4+.{[e/,{g0f{uyZ=Lu4Vc00/Sj[45i-={y޴Y%dlE't<Y/bgiJm \SDt<!xUt+/r)[x"JlcuWeO[xKa-n>Ykc'NJ OXWxq+ nɄgaA<4 ?[{)ycuyo-2.1.0/data/pics/mdPlastik08.xpm.gz0000644000175000017500000000501012412223266014522 00000000000000wUP[@8[S 9J--)E|{/z~w0;ϝ{zz`E7p6H=N]>sÃaRJU ʃT7_~[!ʟIGeЊ.)(,j)JR~%Y7E>PըEV_($ |QgM;JMuOԹeZF2V'-E^/|F5MN C]()ԾY| seR匌 Z1UQAYiY!fZ .hIZi eX塄4,z Y0M9:IahZ5B2ZCkPnIQV[NH&>'7KJˏ\ {A#Qڛr\C(rKBn2{Ne(uUߗf UPN^S/hDu*%PNV%IszKyeA d&H4\%ddO[B~G fY=>-s.S-Յ̆jGy e9?@bW­1~c!GYB`,>6uɮ w.ʁï)P*r?\6!\!৒B^k>7wtXa|+FPUq309Y8uwvΝyk>q zTqrbvx, l8\<\ ,p. !2ò\md7^>sx9͕Kb$`x zYzL Pk\(^ ."N87/9@ykAV& 0,/ ' %B~<0 JgUMBS?Uxav\>@2z!ǠK+t]1 g#/nzXn'y1 /N X:B?? !ߋBۉ1*yQ<@db^SPܹàz]Rz o'dvߐJarP?C]\>@.SU 5fiwpykצŘwd/+3d`$ EOI p~n%^d ߮&y{T{X 1 ϝ&m.R<.{aFHm酂u[/y"Xss%/n+ `^P=EGg59?UЋź^77n 5Tf۫`i`C+Iwnp3phs&Da'0^pRk@Mse=u $zA5 57s8+vɍ`ȄHZArsVnM>D_kg0J/q7ʐ|}3g}R] =;e3@!{3 1Ŀ}0# YĀOq7[2? `.1ľ/Cg&σ!b ,െfha$mxt C3a ̛yG0ٛqoy=o=Ì|^^t"'k,=+b a12GSOx굽lS/*r n{{=jb,x,[ymq/H`|M{=ןZEt_;<3 @ްf,8>9oK=oơJ=@/xxzg{4ۖ^[B qS(U~SXM[<]uxvz~ۻ43سLSf'en6z=kD~cu qUUY]b BMϢfXevU h5-k{+%;1b k]‹zG_z?~ַby(=~Reta+]*4myƍy;<!qoyo{=mLt]5}6Պ_t!ڧR͗ -U-$7,ۛڭfoB }ֹh|h~ޚʋrVH?Ub1jTQ}Q|R,OuPcu߲50 Æaða0l6  Æaða ڃ&@ %7cuyo-2.1.0/data/pics/inSchwarz.xpm.gz0000644000175000017500000000121007550521113014367 00000000000000<inSchwarz.xpmKK@W\DDA>E;tyA3\(t8'_ӄ$f{r|jyӌE1|{sLO_t0ݝLiח~_}=xyzxYD/K^^ѱ[,j=}@jdhR)`hE;lskeٚDNjŖ?G1B r1X_1+U)х^D7l١j3MΣ6BDB"(S"zJ`'D  1<7!`Fwhzw F91xLD$y/{A}pos{1l1=g^0ðcrf?0j?!_?:3dpn1HnVA}Ƞ=4KX>ʒ !b( _"@`L cynC@gkDI,Q8$![ G? 5΂@G<F?#1C,DIg?\bzTBcuyo-2.1.0/data/pics/jhVoegel_ani4.xpm.gz0000644000175000017500000000246507550521117015116 00000000000000<jhVoegel_ani4.xpm[]k1}Pߊ ?AIRJڊAwə9nLf$Lfoçy8<÷ˏ_/On^6' <;oo.]ۑXM醄=19 >8\lCDTCґ%-^e*=:E!XKils38lKltٌl:_)$+}r, lj^_ UkpԈ!꽞r1b7,Η^gKOfޥl D[hMfjj>f|a`P sGP1,h_9x:쩘'o*Ađ/nH˼ZLH҂xԁ=0oAbs!C  6O]@p%_P=1Kc!W td.k"E|sS R"7/: X=d@ LB5ɲxv@(X ¥18C|K]*0Tq8~ȣ -X,10Xj">LUI331 O7 1Y8kÚpr =pK8PxZԃV]=bU C4\"qkch80}Mf%YIz ~j%90<|H.8{V| Tٯۃ,|1d16ɯ0A:`eCD #a6Cf32;4&tH,t Qs ?}:RCS Ӊ˂ǽ Ai5sՓ E!oޭΑ\53ݻӱ {)VpI .zݟ׊ bq͋X_Cؽh)[Bcuyo-2.1.0/data/pics/iwaNix.xpm.gz0000644000175000017500000010120512420650611013661 00000000000000:.>*dlKβTr%sι[~sS]c4%$Ryl _o'7g䕙d{0YVtk̭W ߌŌpfތVf?3:W-)u-ft[et]-V3zYgtkjV J}F|VfPޯz֌*JqFP_Vf@WkjƼDy@@JBj [mWG@jaFA~z砼%jSڌnftw![-dM3SzLw*g+]љ_V*]"~O*gWq֟**]o-+Jɷ'﬿zoUN*J qjɻW yg^a}.wM2~o2]lx[Fߑ>~ݓz ϒGrS תn%FW>WAߩj6>P^ ZM\}zRUT/W3y?OO?@>z/B-gf[ y<ɾ+`K5e“6 J>jYk 䳎{ 7Q>B| 3o?ӏ? tQg&=ON q@ϷCKyD1s; RD@wE tT,g8n9{^uէ9:t/ Ur%ǧV@?BEOpp<ϒH}Oз2S_3 W5h! y@Mx8yt>f7@@O. }ѿA-ѿL((}]8ڠ{oft _#WпpF? O?*_JӚ7 D8?.ɷA~}G?v/QQ?=Kjk:G ~m-%M@?vڠ@9_'*ɻx֡J [Uˀ' xJ3/sɣ5+uY77ηn97?yfs^{WV~;eo*/B3G,>4Lo#>!^}-__įoxUy܇/GElQPmҧ:kB2}]+rAUH|` w%eegQhd6~~?rloO߈7lzc]|"6GBaM#푾Ao8: !<_dkB33+y7нR!~OEhvޱsHWS{hۣ1hoB\gFG-x sȈ/Uy?!~ѭ +M@F}>2wۧU`s ,.c܀gb]o (ZH~5<ҴɈ}cy5i򬽡x;џMd#]Q} f ?*<:0*?*g_Gg󅬿uy2 ^ ωQ8Q1yFsgK_e[.3y^S}-FFtNxiWe f o7uOL~bQpX~d=z+G~?JF{ʻ%\k ʿϛ|kO;b?f+zw`-1P?)[*se%@E2ǣL?F?PCXA{*[Y6MR~ W7_iXTzU/<_({* ˪BxTS/0>\W~:'o%V,~Cy{:%3 흓|[ %wjoOO+ϭx;/ 'P^^xա/}zgPgCl'گ@_P^7W xԯ [Z_&{:ХK|OA>g sA#*ԷD?-%x~O?Q{d__S?!^ /ZoR&}6ɫxC4vIOHP ? |!G1=27g'=o}G@h~)wUh_Q񧪨.蟖-wCooe7?KeP^t\*? ?5_ U߄X%񤑊뭼xTԿ g ȣ, '(Q#䟨s̞beMa<п~B * hKD|fT\̎p2+%k*[⧐B_?Z)ɯo{F $+zפugԏ[KY{w*=JPޣ#O*2gyͿ^/ߨ-w>Ig_*I^ ~t%{ kxUЗ6;Կ2OS$>-/s䷈M%o\/xסَf0>}YϨok+f0oֿ 1˿|qq/ .}dX-@$ Ņvg+ 5h/zxF0Rd [**(iq_qb}!uy: _4G渚s,*_!^ߌ4*~G=K9q>f#_yֿ!ɣ9TA'T?]~(񬤡vW\TP>4j._P0>_оq?n|17o/З$/+/Wn4߸sKc~꫐/ෆ ?R9Hޘ/Lxq /uJYޠJ@(CC', O47W Oho7:_p> cmM>k2kv2*~U ?k&6:5?O'&cԯS/:h1{ssn~\sd Yٳ u'mP}_I-z]v˘c.(~t@߄G4pLt/_;j23=dl?R9i@3c\O||`xP^ Y~ SjadX`=)sz;,;@{|x\[*B`.7ゼ'(*? ŇkW_R0{ ?O! ~aU=Kr[qBtӌ]@꟭/2} }˿П"\s<}'L* %?H-Oԟ"v/P$ 'Iz_4>}.+_iU?HD~O0`&'˷.~v;I{T?ƟI| ~ w0./Q~e FE}]]lwq2[z65K8k߄ l7F|ڷ8F{>6ݮ gӰq?4m#`~_1k#T=_^1Wɷb/ĿQf+ v$.οmȷ9Q?q?g$oܟ9p\|~5xڛB۞9w/}xOp(W>g?]L>$/zG{| ڛ C| Ͽ_|=y=k#^UZ@(?MVw0K݅wFE҇/+_{i< %z /= ſI8P}w7>6Hk$?Dvǻڅw}{$??A}TWPi?Hc||(~p=ȯѳAT-껖徘f> .}w!Qo@ԐByAso~|*ϔBe`|b}!7M}ď2̇&>?ߡ\Q5t~LC+ w&*__s<ߝ!rPޣ7_dg>Wya8CՁK壿57{ t.~< w[m[4h_1݁.#v|~KZ|J-淇x~[`~17[d"?]El3ԧ(D R+J?҈.}>ş|C_oCo] Q^. o:x? P t_F!sK.Dc7>oI07 qP&$}Eim_I̟vhΧd7Cxx1~vʳV~ i0$?hot(˅2_ovDƟc![YhϘ/ cy P/1_Uq?GPx>P0dO?B}C}3A,j_a|ް@|+P?^Gc Qx_Lf~c}_>&~p۰Pp۴-67w(^1rUP1R}~(Q9,*7GV/W-@nЯ /:^Ni<ȫJQ ݇sa!a%d (/Z`{r tw4x%#g I 3&y#B|@{~O'~Y5ܿ$|3Zs",m ut>*`̯] ExLn{^?fC >=@yNa~@`i=O>Մ>eP}E@y_X<3r=} јOʁyHG»^Q7 4S]}Y6?[GC-ox>zv?q}]DGXiL4HGچDx{82ok:op~;7?12A(H 57t7x ߢpj].Y}2h:#Ab>97d |K7 %ǻQ?n_O_~=IGj?Q1>񬣿ʋMG|P^|z˟:+Gf7O\xd/."0}u.,=7^k*7ײ]|KP^ Y> _EU?xqNx g(_? "P~Cy[%};ηI1ׇP^=_Wf9Ŀ3:_OJ%8sgݮO /_5 ]1sm }6 g淺Շ2}ܿUP_iFwgy?yKcoG@{|!ȷj!S/_1!"@{<%7/+Wu!Z%_yى W?+;~:uW]Kx_.b˭ϗA{53~?Eʧ+ _>xC_YD=o7_y;g'p"!AOAL׬sB ԥDx瑞E3}(b7ߘy g3{oQS6>wGy;M@~,:oOPf~5Y[ _sAI< zteK /;9?ׅ ?>ߣNQ)(` +?mg "kK] oc+?[hO_Mށt. #Xޟ@x~葄xcħ*'3)d 賒=U5Eyb>{xltn?p,<_|O1?6%ؿLQ?0>16$ )οg!~ϗ0>~Ktw=%Hq|0t);]$y'/ERthB Dcxq+yB[3+Etv";oge~M?8xZ_r /އ=N7; /+3M>1^4Pf >cMx3KT U/U;3w2P^ ?}OIg_}$A<e$?̗J0_:n?t-屮V oi [z^Ȟ_dnI>@ޮ8Ŀi~į }C}$B~v -ϴwx.ߪ{Q{x_Iw[zAwxd/xkk0^7}CF㤌xOHY~w&$ǫ <ogyO 9[?㓽@yP>s7;F4g6~dEos~G|R?x0f:OB[˧U*|.W]=W1!Wџx ;Fޑ>a|gs c)Fs/O߯~|nwZ:Op7_yԷ*}c{uǗK<_0^27щ /Y~,M(_(p%'-OVVUH1f o4AM[Tۤ ƯJ)=>GCW9"uL]_0GQ>lŝ?櫇<W[.<#M Dt*97'F#ܟS><_?Yt[YMx~>+<%oyvI_:D)a -'9?_ _EzT볳?퇝gע ?%ךeg=B<<C483Bݓ>7GQiп g 'P^7{O>Yz7 _yʈ-{$6h?!}{П Ph<0_cK#{\,xў<O?_ר8\`nǟ$>-7MSh_v z{~r?Eap~ʽgFU`E1 ,m tEi@{rF\*y'ʗR <[奙G`2T} 8x¢0Ul 'yدG<+)$yKFXNyOE?S{8?i#<#^ U믡l.oЇ*o3ܯ}Qw=Op? :~;x_<#󈷘t[U]W{ 9rIc'vM[7o_O`'otǿx!3s~!7^qol|sG<_d?o_?C;O]M.;9م*둾~c[t}K-S}o[!!(uGM/ܢmϬ8e^UݥK_Lm>H1Ec?ϔs߿z1AeZc7oxn߰ ~?![k}<)Tb'?A2ў1'OA}1 _aC13ƫ~=F@輖7Fƈx?J1*@WK1?ZSa>z{'|O;>3k?}cx]+?NjenH8~cߑa|t~. {<7}jSgFgt0 I?09Fk<ǣli| 0_*7[V]>_BF tDZ+/2Z"~xQxc)P~oy?oO G= <` 0^y)~1o8 ě: o`}HG}ݧ+K*xCh1 =p~^3: S.|j cN= 'b՟6?/ؘ_` cTGgCGC o?QŃY>!ڥ2}@?aݘ78Cc>l[Nh9'^"\ag~'wOH_Z0>O?};@J}'B,ڃKƗHx?7=_Cbx?mC,_6>.=ʿO_JfD4>=eWB[]%} /q~F~ 6n6I޸^笽m`;>c=#Ŀs@!}Qq{e̷fMOcD~@MP?<6D|d&'~.H<_ʑ|0sLX.QͿ&^C5O Rok gU_( ' (/hI6xoh ڧ F_祮i|qooI>;/rOD9~ǧ&~/ѯT&?;W~+Ŀ/> A;d8-g_/Ŀ{PM(_%O[&yW@\_AFgkY4 {ʫt?]ah[P_G,!+x8}?Wq.u+Q~1f7d=ۥ  ʗ o~L?dtIb~T(! 13: @XvFW*0ApC}mˀTtmbګy t~s@g7Hg f5H^mB}H@,BE(.G_%-ݣmޟݟ C~?1ߪNLʋ_{.ݧpJH_갞? =D.}_:x=D{Qn@\:u;G&;܏k?CFV /ۦMh4~vǓg߃]:zշtDe'> <_ = h<|4( [i o 3~#/ڥ>=Կ )^zB/:x՟}wgdSg9S= >E|Bho_Ux >MqM=)sٞc?E{ }C3Zx>;cV!M=ӹ +%*'J/U<-~nJϓ0?<}"^OSē9/4^b/~C}&-o}}yO"}~b~/Nx SOm6_ sMpM}bˤ2EDtP?F<]'{In@5$[Sc`)WaCx%@~{Ox|.G4c_C/L.Vis<\1.ʇy Ty =O/߮+ubog 2!i<E 'p/{0G`W ^ O`=AmQ1?jxGٝ/ y@ϣ'}b~?pӀP~s@zv_f-E/ݯ_a>]_D}K}V TpO/JOJP_Q/"2Ѕ ~CjO#y"cƫQD&<_y"o\LsW,}""GxC@wq3~>O*EUK}B:O"Ns 5:wF`|xGO(oҷ7?ӡ]Ɨ%ץ-I_1^Q3_Hx?kq` (}/W+̿?u}ﻈ?@Ͼ'/ɾ<_QD`~/7;O㸨x=E]_oE|bE{ʚ[.X?l]O܏?_\?̏ԁQ>yT_ 7R>}O{䢾cyEEɡh}1v=52z`M Ο]~)WeN\Ϧݷ/6sߖ@J.ʣ~`BiU|k4^x_cq逿:tE ]O^ݥ]"\-V G[O~WCyࢿ2I?.=&{スO"}x(/~=?ak}ѯ?~o+H?/Y?yh;s{t]ڃb> o(}o E[B|e't1}? <:?Axޛ?~ofE<$o_q.oo^Q)!;iZ/xo|\k:~?CiPP0~fz7/x>ǥn7/xG-=_<̯M=3D)Ӈ|/罹aMP?hftoϦ>7'P_H,zʥϗ)ߺLgC*5Ա]~NIp=~F|^~i|uv:ojПc~oetྖ><_mi8~5~7YW ?䗾K/]1nF~_` ܆O!|v}k}#!Ipk8Xi^&?GI;%#HF)%SU-pZ X3g+ycM>l']Se^Ut|)~G3~/%;~-Ù.?',__g//o6OvtyS?Kl/%W*57&|=!?lGQ$GJFZdFAdG~FhI QQ 睏|tj<Թ獨 )0&Q1r#/*EuY5E'i9.BUt݈F!'=EQD:ޣS+9OvԉQ/j~-FKg9ZVA|#ڌ~Ʒh'ڍD/#aѡQt,Ñ"/ˊ?&d[Pd]p:̐%IeIXy9'农: W"%][ኢ*b*rd[P]1ITI(VFJ^)+ 7TnE~l;ꮺ@=tUK9RCiF,\EɚZdfjfk;5 5K5CjCW#Qڳ2ڊr洱ȏNCrSjq$SOV\2;%'lUV-hUN]hڙvBԮkQvU[NGI[WU{޵S-~7~_zZ_kugA[ԖeX^ 5m][ڦmk;ڻ+[t^=m_ԗsri2?1%|PRGD΅L30_mfhZb)y$fl}7O՜{laMsh:Ssbs)%lXxՆ(Sha5 i0 ACu/8SJA97AWM48 ΃v!޻ V`OTiʺ|w|8Σ"G </kPqm?澜SghODnߨ~Dkb~v,~,KA:Ѿ+`-5׃92 ~`; ~Z< >^./n|G˰َm *ylQl.犠U[M{'2 lô#13 em~gBKu۰%TS;c{dx,y{GcaS5shS{b;敢FRLsm/{C-+Jyge;2+vծ٧jImg1!`اvW3cuȏvjo] qtm{]sGQ׹-%S%߁+껚~% c}.;&WuՅ0\[ǧ~jv-F#_w~ ?{otJ(j΢Ue_/ vg;?/Kߋv[Ώ-,<1+O"jio~UF|?D>/;~}?~WBS{~?;,K}=ZWUJk~ﰑguï8Ŷ[}RQUr|s,bFXBm99Jx,fjf(AhWyx0o֝+Y!ĥPBc&aF፟yN;lȹp6fȆaMÑ6 bӲ%/B0k G];Sҏix6Xb\g-!5Ux ԷJ BÇREx},x B_2߄|.]5s{~_|g~?hfq Xۼ'k΅6k5W9{!\ MV%!oRaEϖÕp5 Ao,ChqUYp^n?6pl;nQ:00V7: C;bcq+`\(X#eM4˴eᲘmV%eYYlz IVj%Vl:c#+o77xúTXS!hCuhF0^يGsb-=LY JWwM1ebUnJߜo:6o`6wo(gֹua-֕rNU ۹n2ZU~gm*փՊΧڊ>UXVhBO7{ڑ#)/֫ެEnmYG|OU5ַϏ_k=8ZVe]x(s,)o-XV,Y֊ja>o5KVmXVökݲ;CG?؞%<5?olzW,1ޢX~|]#cﲣ L=?b#GGe7_eUu"Uxyn~Ŋx[SZBG_e6-<իѥ韫ĢdN^Y+K1kxsoTq=zSOM ,C]YuCU]`Y^$Xp:Tl疱9.ft;)X? O-7s::,O5!]JJ_cgżх_7z$fʽxʞE`[nS?O1 ◾% ;koG_O+s;zWߕ{q ?DlY1}[Wu]}1JMkmhKhh.qS6ugKu w􆽫k t2%抝>"x~6}@HڑFE?-EuB9< fT}aS U**JXbդP}Qi\(>1˶|[vhhet.~smؾNgaݒZsU+1jbChbsy#4u1'/Z1sh&Vj ;1}z?E1Y}6׸rRԝ /_4(eQըuCQO`_V؍7'FN;5vErf$shGζ]we0e^ƍqk| 0z?yq S>_bWv9uݱOx Y}6boj+7rޅ_cT>/1~2~]Ct(љߓ{l򂐁g΢,u1?O/ msu1V'vUW?+8U׌uq cӸRm@;Ɲݲv[a?{wdghʱC86T&mۢ'^H \z5֜|E,(U鉯ȪIb#R]Pډ5KҥTnf0XYC i;PeI ^ٷm;I|i҃('ByEzѱ=Q+ʇXڛ$.ҧ/[*~C+hI읇-]9QIXƙ֎ޅБtWºR^I}iAڑKgIҊTWҚ.)w67£oH[M)$%3[oK saGȻR!R$UޗCIڞc7 طP3Xx]] xr$GCoLGy i/N;\߂0fVF*s?&iҎ5\iUY\:N~ xjخ]ҵ6;iNIxK/G'z5IBzM,=Vz^WP.ӫ:g~ަwip>b=u9;/^s5 zM1E{Q6H? v7"u+m _,-;]׫?ࡕN;i7t!}P̌4Kl)mKB#}Ik}9݋`Sq4$YU36PLV#5Z<`ْ2fn%DruX\2=m1$`7SxPg^Mjɀד$YbI$_y\&ߖX;؟U2MJcCeeKmw}1|hfd<'/)xM-Qq2GK__;Ifx*VuNԜc}^H3_IrƷ ip#q[5Wۜ-GIw%r`L+Ms'^pt09J$8y4ɳx1rba- w˱1OU٥ nXGpɎ8C%Q>i*ROƻOSĬ*q 8^NeQ3̧v-]ūJ1v㆘9/V9`{q).Vf[>i/*o8}eͻ4ғo)6{_6sF=eON߄Ěo{< M.)kS gVF8/_VV[7Zop5~h7[uF|l 6w!X ӵ$vx/ޏ˳xIqx=irq`!wFCu_GѨ"!ati^[b/,vRM+YXMs~ Ԯ05nF-Gj X\uD;Z41Ǒ5ZQNΏـc$>O1ﲜ|~Cf223^>Nd(V"1 +ʖvI<{#QqtTm ؑX#oTJZ OʨJPhW^-[ Gq;ze+^_±]B9WH~\kbt92\zXx-͑я]*'(ž~tjD\ F귶bDYGyoA|c^Go#4Sm_5]uya!{ G=mn_bLGWNE-* XVK䞼;#~G p)T>-JM툵*8ǣ%I&S=2! T'gTOQ>˱4sb&k^~&0fMW?5ay-j+4,fK@p}з /΃ȾyG.<❓u n?(67!mviWOGwj~K_tĤgyц;V'0䋨wx0>}8/ok#vD;u;i v"G;d|/56f~=U]ʋنU&Vp7؊KA4O,Yē|*L4+Rs-Hb^2uدZq<|֦]/ KrrU5T <7MO % }{W}e$OG,ʅXqqG_yXicYy#ʷY]x(F7q#G>?KYeu:C1K^u5"!3&F-gJʿfʢ?Ẃo۴%滎dA'3&K~/K8'Vr/?QZHdI_˯sڏם]-&'#tMQno?=k(ӥ{?q47˿(OqAϏГjF ?68y3`5(~4]SN+MNE|VUDsWΪfsQ.QdAN>Gɩ7Vsy-w5UEُZisCܓǑ,+anfYC4VN&\NrbR?s?zE^O|9MƹHu*$lEuFWm*v-|7̉ic47)\(&_=!7=[|dYGv劣IV+rGs{Xbzh0I U1 圥Wr\\Fv-waǭ\p$w^L e.r?\s FMx+6W&[4NJrbƪ /Brcybb3OАk={ɭ drSrȽ]-* 䴏g+߹\U#+kԖSf3Yw= V5?džnp΢;̷Xq79pJ:Ǖqd 'bl?=xt-[jmԘzkD=0(1a|FU[;`g7Z]˱ŬjTn FHZW#PcAsu*w#'[0~1a+~ ߤ+B2Ƨm4UB>ahE-hW{چV_Ƈ^ЄclZ9#JGx٪?ٜAxUeSLwYckӱ'<sbrILQwvXos^E+1G':菟Z_EU+my2x0^N?79?of*4i{\Q'sg Xjx/{O-VwuY6F{ѳ dwr1>?ߟƇ;h|֍] /^t<^pR>=WN-f 1ۡ6do??ԥ_K'o|ELMP5lFy#h,ǩ*ٍN7هA6(q(FCTjGIc&qcXL$_ע=ikN;>ˢR; j6d6lLE,Jqke(6܆|đ{iQMʍJMje77T8ilU|7"Ŏ~.m|KF);fGwǃCIƆ1JBCw{bcE^jD$bL}bG5J4f<<6 #.EX=hDhKwVc[hNnc)W5*56яAb]/Ua ? QcӶm>Ƭk:<7 8EMFDp;ڗ^DƯݑX} Oi|vMEastFSj*ܨqڔ0i*ɞD#H97P|/7r%fh4K^l̺R.g8_KKQAZU~cqT)r͵hڜ4v"{RԢJQmڑ՚YRZo"GDpp緼`Мl^k֛!?($셛#ܗfsk]3Z,Ɏ".Ċſvl^,5/ImM9Asûl tV6caN)5Om<;XÌrCѣp2,OLܡ7, ^tQyX2ju;>ֶ6 Þr2\;~:܋Άy>m\L^iz֓#VE!/ߛjKYi,zeY2_.{q[P,Aycr> #MF9{xbw@ԆΧ}m tQ8y|gi?Fmiw(ֵOűv0GhvOִF<1ăaLiM鹺05>ox7c=ly\ȩ:=Vi`f%+P(ԟpN0K ًr׼>X9ڔ:1= 9VUcYE\qf'ke[oXox3JVZp.ykӇh$z8b5ecpiDqƛS[NL 6鳰1oZKi#w,Qp>wiVQmF#<ߑ֕W>{L/0=bQ켱k>50ғIkL{J(l/ӈIJ>?2VNgkEc+_q _?^L|r\M/SzU#kLN丝s{qz=M7GzgHӂ:5Qe5~^U=\NNߦ_sdIzZo4_752?ߊ|~NŷZK?M텭g1:Q9(=kONZSqtgS{P-eδEN7%>5J?c,Lϵ7Yc1q]y#0S5ϫi,MS>|`![銱2f թƷ&ߘel0]J^1fp=ܜi]3wQ{+|!Qi~L(;WWh*xjl2FLѥ'&<ӖCK;h u9-4j89mx/\*[qZiR.kIGbs=*U&l)yu;IԄD0> M~29آO!Fwv69NcɆ|9&lWG͆Z~|3dَG?݊9Np?y-{h-3ٳzČ0y4e(-}1{Q}NL6jk$}h.-i3 )RwaYkR2ۓc;}Nkܗ{p w\8+dC5 Yƶ5^ ]PWM6;svdmO>X_U7'[x{_v&]§k>v'79 =v#ڟwfLNI8\M5' 'q?eŽhNQ}F ^?A/1ޏb;փk5l9λ\_8^h3lҊS > $d$ʍZԓfƟUX=*{YL( )#f\W*RXuY9?]]IL[^sT>[QJZbg΃"x`.{j8f/4o8*拹bَڸf̚Q h])(EjX⣩hZԌ+]̙$w~=7S @EZwhN-nMX*+ QYԾ8x*Xzsq1jҝ9.EЯ&k3~eoE }9R'glb?'1Ge܀-;_ODž{o){Cy%o5Ԁvp, b+oHZvQ3oPQqcm->ib_[2'b͞76TY):r-9y=:PĚ#O?֠XsyhC]iōfq]|6!1nΫb+D @Yؽf7 MlvAk<[ISyPź!|;b;:3GQƪbo=thK]Y1CiHwy6Gݎ󩘕ũ#Ui-4ǶT/F枥Wn+hԆ+枈qk3nPnXKzKs۰B9 w}Җr}r3 /Oty=-zbGcSQ)rU%q%:g,xf+Q?v5;.+sc(Eci0`jd6PwFFĂ_ÅiOn?؍z^cV0Ǔa%Ѿ,^}sW<|_nU.=: =QbۋqO>꿁 /\:J 䯫׷AtZ.b&: ݻя/Gc_vWn[c1*cDs? 7tMʯ\Fo%dmnawW "1 Rr/[f'jM^u^jO6X縗+^|+? XGkX+5`ng^qϖse[U39q\m XH |7PW,Fkږ$lw,4w';=-|kbqyi·y5GaK̪lr2:Uw\]>39,oW9 ɺGW];5G{o$Jr$Z㱷/ǁs;g4ň7M&G)fF#UW߉|ox'-NF ꕿ(VF\ݗGk զ+ںV =1|8a-F\*bPi'Sysb=L^ s_y9߯aލ秡=Cpk+S|U{r;KڭTQ* =f>u<;Tb>Z*@}r5?꽲#'1߼y>{.W=|_[}{ʏf^G^qg IQ%U庲*zP<5 <巤9^E$j lzwXycu s֎~v߫Yoa;QtVQE1G}7uUGf\Z%O~~M5uBWo.Ψd;QDF3(l/5h"K+wX\iG34yaA֌|Η\ /mօ ˰`qiN%ҙFNtl>(Z>F-^5ZK,EDwRi-Z)<эteDWQ^erҡt(Jҡt(Jҡt(Jҡtx~`ӽ&wm8೧'㳣>>5>|߾>{̉)A%3j0 2*Xɵ|PUc&D0BMXp5*\Bnq op50 A(4/f _M80bԻ41 2PP*"cd1='vddG`݀`Ŀ4m6v f ig&T>Fa6deV2Ah-z =RaSiƈ1_0|C C[i!F@K[8V}b\>I&}[T7z݌ZW0c{Y1 3KFf]5c=F9eX0;!eĀ )SݯfR;;~J CFI+'̇>'$_>/X"#/F&ԾH (/F&T,tj(SÇp213Y^e9F 3[1a+FguiL1cgGշl30]r1b!`t ]G^ڔ8D~((/- aFX9`! "Ђ%Yc(,#@ 5Y#mʮfq G\.!w吰ECW. Xx)}m+"Hm}Ĉ KGu3lCђM}vyԎGK^4dGq{+,o^2Vʋ>A]0.A% :Ǩ*Dc3*C62VC?hP H@<.{ Q%1tF]T9Dt fQ%MƂE% -b4tM2.3R%;]CR%3ںd籚 _KtXtF㜣(^%jP?h/|6b3׌9Gקl7+ &cuyo-2.1.0/data/pics/inSchwarz2.xpm.gz0000644000175000017500000000055407550521113014463 00000000000000<inSchwarz2.xpmMk@ͯ[FVҫB/ AЃZThikCMaawd mo wyhn~xBԣ|zucu?ŏ?%A9`0ԨdB BVumm %_BkQQ|00A`0 `f~jc\9}½YоgP HۆN攟 8a1޶"=i]|DoӾKϨ,՝{^34XkoEO*~50HU`a?bf!cuyo-2.1.0/data/pics/ihBlau.xpm.gz0000644000175000017500000000044207550521112013630 00000000000000F=ihBlau.xpm 0}zke*""XpMj7֦Ńs$ӯfit2U7'{V`f6GWrBӬ&*ƻ풷] 'Ol!g,rG}W>* <[<RTlJ39+gcr I8[,)DW\8V|oqP⋾+v8}Ž_ TٯD ->ᏅiOSagaG?__ e(_pP(B OnƣfßEh{~;YEO&d@krBT_Th5(t[Qt3v1 ?uBhBӜF 5q/(ګh:ѓ?CMVb? mie<`9E$4A߬c4 bZ$I AJUUl!֛疖]I!7 _ wq;awMxu6iv1+mfT{Pƫ-HQD8l5`6w|M&3lǖڑ-h iÔ(B 0D Kz Q5]SU _ouԭe,zv{˷ft˕/ xfad=;P4ME2*?uP;䉞{Y)nncK@7e7d6] AT=nPZ6VGDOJq8+KT-tfi w:krٞ( #:cK:=W2wOmkVGHD,^OD̂fN JF6{5k3" xuT;e\1 =lX}'h " 17MM%{^5}"1G UPC9עA=^tԍVﮧ$S{'ٶͮDveeT|8ʏ~9|@1t߮$Ä]tog#NR"wyceZX ڪBWy gGa{W{h[C/R-w+@ AEhw`Ǚ0ہ҂:Iبwsh`u&;``߾Ym iow(V\m 1$, 5DZ1F[^{  }6=`oRkq܅n5d҅>"bAZ:C9zJv|V[Pd3^OlkxїrauYKÍB׫7 ATT&J!LqHMZ X'b ꩰ63ch8[.Z^Wrb4WQ|y6F!<d1;p (&^s6J $Yߝ>8_I3`CCt"Eg/zAވnБx0ݎNpD?F?J/}a!ZnN\zK43ԄO~ '%L/`:jw>LCT! AYy ]Xf74 DG9n+zaeͯ!p,)oYyoE<!Txv6 G$/u ?ވ1n[V0ϸQ>(^6ٍɎ`Y:[ GKq=.>G13fg*Q^e;9[rňa׫KP{eɿc}&|aAj[aկWrEp<$V$ZZ7{GX2 O<y 4VT919gŁ?"j>Wg b̴AXƚYRSEYOY@Ie:V5 a\1 ?C_?v؇Q<N{71i)n]iK]_RjwcWZᒠkY&| W=ۙ>퀓`h ctzcޔgYR'jV~tTC1z&ՓhdLVtj6SmQq8B,B<@uzV{dHJJ (ֱ' @g! 9N@>U\v;F ڈ=\SC>=gFŹA9h(0Ё@NЈ</H4}q/XDȟ;KL%{"Ӕ#C89=P`BTl,s|3""$c똇mP-.dž/ w\DFӫ b?ix12Xc55?c+JvwyGU;+G|N4T Wio2u;rTL>4yҺn7aseU|nQߕ:A5s R 86ɼ\Z_^ "!R*~$<+51Nn#oۀk"z O@ BNl,mƇ8,R@[?1,(sHus=n|@ELlqQJIaytCAhδe<"cWaQVARó{((?AJ%o&59 oL 9ʓhdOWHw Mrc 䅕q31|Sn7FGGk8ra wq9dYG9vCW,% ð[duN t ˾lv^)_΢xϗ$aU$axb[\O1цC vd"6g՟ y9?KE dzib ǗQ'?ZṴ0NͰa31kZplNYHLa |Lm/DC(XNiP d_nUiZk E<ФV )U̍zgDb cQg7TD[mZN,IZ~˛zEM0",CJAKHK:YIhA0Eü(x--:u_Z~evRnp"!cN1䦪7O$IәI#F!Nާ$;SUE+{e!~Ls}Q CF]1;Oy[&ppr3tiW\Yj7;1qz;=N X{9rXՐnQQXS3ٵVW/ _q]ZC N.ks]ȁO6, ~xQU(!=W_Fu`1Nahωn̓ lSwV5[jxCMr 'ef;'x9b Ez|x&P쓹mS__9 ߒW2)/5 eb;+ͰKK X.ߦ|ʊ: Dlm9tvtz  ^[Wp!8WP̮thU|,ENXzm9_9)wc鹛WTK2,K>y?ɘGGcuyo-2.1.0/data/pics/ibwPlankton.xpm.gz0000644000175000017500000000324307550521112014716 00000000000000<ibwPlankton.xpmM7+k@ǘHHXdo=Q*gͶTzT-8ݽ_H]#=^ɀ+F/ʢMr 3K5"`AHkQ 3d*.Z| s!B1eXkq65[dXcz"!% l"Z Z73~Sygo0 mfH<2&Oz;-C'Ix;CGP !`l!e`Bs-Ő3_ 6%Ym ^KD$B0-p VD J[v|h4ťjX#JO-\2G<'Bo l2 3Ӿ[XK0e G* 2(h\N39a"ޣ=( (@U}2PTIB/K00=ŽBY3R)bIR#b}2ȴ3x0Qz<̰wI\ˮK=WaM@PʾoˣM`7Y7HH1C\4YRĽ0EYW9S*EI?c## mw00%aVIuUq]i{,D[[ۇ zV.Gl8a*b/@Daj Xz8|G픳!YwS/ku4 -1Wq6|w^`N(w y :Is:߭j]}3/BJAmֻb2qN>OJjq'EMo߭w(]o9eMhu߾ۓxDjw1G3C^%M# !28qKF8.v$Q?`=m_FRayTE2ںyk )_%]a|3tW1 >DZ8[s.Z8! ;F;d2!+;ƫ# s`RV[xo0gA"@]rX!w1H?OyÀj˚dg8F &ŠE~.Č&|a n  --A/M3{*3k5WOeIjjv~? -sY( 0cíLo$R8.7t`W!WA-+-(tZ+C'aaC`0l;@{^w7^mBcuyo-2.1.0/data/pics/mbmLangUhr.xpm.gz0000644000175000017500000000322211646353247014474 00000000000000[kSLί4Iob6iPڡRZ@@RZ/ݜg-Ӥ.+yf(=I͙!9YvZڔv|r8ڭmjiiFV)͸?=q_vn@}N45(Чt< " 4 *@gA t4K}K@Q"  @R)j@e5Σ@P< T: : $%hTh:V 4K [DH@'š%Ӹ̧+'ǻ%4GIKQ}JȿQ^PD 5&O@y(rpeV *[DV(5D YKA%_ n|N[P ;P7YZ^ΧԸ Zru_r ݢ)4%|ܴ/Fg]̥9i&YQW-:A5P4Pz,g>}M_GSc*9'DN!_(`_Ɇs-"I-@q\L-2'RW]:i-}Lg@xch뜺^&7L>I3:;aKOj\r-Qc I]*%rUഔ.)cc<(W_TVcn[yFkV"?uAeZmQGzh}~FlP7;FZݫ.c}AvnP C2g?Snwo+1[8 3&/h>nu Tb<,??H:+[nz ymn2a}Cٿz0if:kbzЮ=|lu}ĤEkζZɺv2&}, Ӊ^/atrvi]IsGZ-=|Iݫ~X3Y%D>G<;>bS. 1^NyPAyP1d(np(QA\(QA\ť^<9_"KܶcC@ AeyGo(֙c@0? u/cluxǜ?sêDAyP{P8%Ƙ?\b%Ƙ?\B}^g>c}I2Jt,Tt@pDTDga[6%:+KtEQ~@$:c%:co[D'Bݟ虵&|LJt?7{0ս<(ʃ<*P8Tq|D_./ b8?`عAWg%>I.FoBp${'D"<<0?]DVv<(ʃ<(ƕ?6 +yx.p zE=\)?D" 1x13'~Ú(3Byat`fE}B%"$mC4 $B^H R(mihoX)40 m_#۱d'y[ˇY]#-[:zy O~xywcf%c (VʔLm-C~3wl Y,VHXb"i+tuU|E-IV.5(nյxڮ*>zCq/%l"/&[\kϏX-OXX/aUw 9UT,*ŎVS"jG9HQIU,haq]m(ŵ&!U(X6kP>%uqEJVW1rK5TC6ʪċkU-UUXZbjEUa7UbknmU`T'7WŞO5݉İvsMjnT[jfMꉺ~xVuST;k8Խ::Qu#y:vcU5wcljKP|UVIr_6k2?Fy jU.cCBUmB;Fz/Ou767ZN1jSϡTz(l/ަKXX =W7++x]H,ZxqvC@MĸF>)܇#VUM(~†֛ ۟UdRnXc7*V k(۵ !֒ SVYtc^+n`o!ѪVvݮl]k<9K*twq&l*09>R7 ݓ~UۏoÛoެ~?:{o~w?ߖo pަ{+ڼG]c#[{k oeO7W3 i=MVq*X;͇WW3~+^VTrUFb~ům ]X'̡nT}Xm|SéRҁ绍UGl1n/bĖp:6q4LonI"p`6 qڽkA]Z/9}",MR]3.E J5 3]:\8d wf!NiŬpٍ`Lvr!>n6ƅe,E$~A0kTr*pF42P[&6P8 g\V𬀁0qK^Q}8 vRk0nyȤ2 pm.q[窍q4έg< w#֓xi9;>Ô򘹄ҹӹc_>~gOƉ3Nϸ9[]}g'<Kpڻ%|7;;\'wE|;27{9!+ ysᆱ iߵ~wwԷ$-gcԇ>$R~K}H>$~!8gA5onsXH(6N #@%p3m g`p'K) t8Dhǂpd^u(n FJNK#ɀ8'2d+ I4*۟@ 0p7e9eQpoR! !p1Ӈ(grHd-dž E煀Qd#tr0FK~ۆ[TN8 P=@rȶIW JFJ [Pbԍ  8AxN>ȡ({9?;D&jgcn>dŹ%AdqHP"DH͒lU6|WQ۪*2u", pզZ+ǎwHSm F;6] t 6{gD(kSK4F0sakW5˖hao+Ġ$ Ae/i,dk5L[\V? J|(lWotBz1layZ .=!/|ܔR$k!D\]<2Kԉ3d b ?cP7L۶,s>Z\ƉK^?lޖN8 <|,5bN ;Ae#~'@pV֒)ܳ 05䈲Cp!!$)z=PO_\jl7t}fIz^(f&~z^fYS_y>l|9)S[1+pտg_iɰԇdXC2,! |HC2TH?}?(DgQa8N |tg{x?judE' ܾ59tHe67|T5(頾5gv^._uXx3xV)a5Fz?Bfk|)xgę)VMd7'䉼 Oaà#o߳v@5(8Kf8 6!5 sl=4@d0%)t Aߘ.9L Oae]u@}|2ljqK߃cyD+8U,"ڬ [DpzT\x hާ|јA Ts?tm JvбlEmH20W41jxhSD3a$p$m=ajE<"wX3J;-҂6NC.|'lYxqjqi hB+sħr}u%+>A=V$hsLT;ܣE{c0CveNmNתwt?]Zt:~_n|?74gb.7xvś⪙? K}H>$RaɰԇdXC2,C2T8b|qzf/,D eè05s/ W>:6qG[6!cp0jФ0PD\QI>A Vi;"xl :LBv VH;Nħ,G1E$~BJ'6^ZD ȽIXx{I2 җDs#2&lZG0r|9WTO\e8ygص91jQ(脁oA11CgS\ .X\@WǏ!ufL(0 Dx&`qaC *:<ڲvzz=[7sȦi\l k>xI\JDqۃ2\h61B0N4e3#/%<9T>q<)n/J]bbwdfek60ƚ 4% zH{q܌*p)烵)VqQKaq|DVk}4S\9_.䌥}_K> !;cު`ჶ@X&=D,L naE< ϘD`_t]<77'Dc =~ XDҡ0U#O1o?Q rPjsظsW9Ǔ@j)>n3Lې o.]ϸk.8Sv'KJv_Lj;ϾpuLb-ggs)X.t?jy^]rOo"c⍆C2,! K}H>$RaɰTHCc _(oZ.}4^D{bSVW]ߋ#ֻj?>Jd-έݾNw\l]_ NA\8d3%ōH,q;1rdS#pTWGDZptC`v +83+E(,!lc988s g4}.!n:zqq}ʇ #VP4#4.%s)FKբ\--ҲbZڭM/ (MBM1N\iokjj,iRmy'775x$RaɰTH\~qqu} O8U~yXxƣv: .%ފ/\n=o\\t7u{`M '?Aie7͜/ | d*'\[<7D|n@/m3c{15l9:9>bs9FL&9J|ZRVrzqsŰ\1[Y V8G伉˙rh9{v{B'.s>r'I{8XhG *.Tl%94l^brq%Ƶ\bӴ,{h9bs-veKry,MrrEֻ9n#c0nuƑ>C^ uph~?x?$RaɰԇdXC2,! Kd BF qA\1Ο}!P?>$RaɰԇdXC2!B1~Xl0%޻~__])y>fNu|se3pnw@L۴o_086悲hs3S hf6<*~C%}m(^'2AAaAf|ǜ*)OOeC1ʞ xC~fsap"Kx=j4D} Кj9Yȱ2Qo0-*9>< hEj5ڪAw1n`r1z|}0O*=O9,^LGcx񸨏7r&CsS6%7gkq5΋0 v^Iќf ͜__hNyXWhV\)JEQO4aL u!u؋b|>^l$+Dh?}1[6C!|uŀ)|.L]LK" A̽ûdIaCgvfP{MlJBw9 CP\yNM)bLb螟Du 0$ goE ԳgS 2`(]3'9 )SyN0+ Id Cl8̅Ȱ#P T z1".<24\vhS6N?F"g~ DO\NԢ]j5@Eb,V˷xPo-OVFk, rZp`,$,,3LSBWB?/?3/'p3= s词xnA6/;=@NtKBà:=F" y |J1;1L'\fh0N9 uApbg 3Lj`8Z<кCPUUp^yBJ )1CbH !1$Đ?f}Prb8/oT8<u !%ݔzCbH !1$Đ2y5 oM2cuyo-2.1.0/data/pics/ieUnten.xpm.gz0000644000175000017500000000061707550521112014037 00000000000000F=ieUnten.xpmAK@W [ZRmU"7A)%ڃQ4Afmdwˆ3/Rh:IIQ-uj *+gcM NqQײ77$!ʌo[VM3GZ6ڌCoκ=c-CzZ2z wah[ܔXl~a|aoAhpqȜ;KH[ jqT A\~a-!- o?B;2w|}G)cuyo-2.1.0/data/pics/jhVoegel_ani2.xpm.gz0000644000175000017500000000244507550521117015112 00000000000000<jhVoegel_ani2.xpm[k1="Է" 'DJ)Vl+Az.e7{<Jw7̗l23mOoeQW__ݜ~syS~N^Y9=z:*.˻uwlZ"%"0;RuAb nY:mupez+@0mFgRrC3 1W_fq{)6[ #vU0"1C&l/DN&Ӆ(Cfj5WQa7*xSfX c&оWw1meX%Qa2&EH͟ 0`P8JSɖgAg :La|Wݫ#&^[$גjȰ!e=J5l㱽!e0#`3Dn:_jfX ߦ7C;mXź li 6#uB" vZN˶uܚbضgCDq8> |N_l h\ |.΂ '<1LNưCPדP(TR?lC!Oz^fMA [ /?N|Tkc, Vx!/fP^hy :*CwL[ Yc:_<1<2iPch ౅ 24bz+ƥ% 'T rs7\hk~k6eXա3#5{2z55d-ej%YPG{4 ,ːHd7$`ds @Yr>̬PETmd|(dD̄P$`ނDxzgTҷEAr8@kr@.j'd%Eɋi^A)c0:YwJaˁe3Po<uZ*R } @}$w?X"}r s szZF;@@߇="߳Ϛ4ajk' s8D@'4!GbQ1\|*& AG G%sS;oI`2s qm®ƊAHcGˬYNjN zfGdj#KbRU["vC T 41V?$W\w@ *w䊙rD:rm/[Bcuyo-2.1.0/data/pics/ivDrachen.xpm.gz0000644000175000017500000000461007550521116014334 00000000000000<ivDrachen.xpm[6Dy$YB!ݷ>J)a $MKJגft]l˻e}F3tc~?ӛOowo>:|7{py|=ުmS-jwRϮ_]>%j﯍V/_~\J{} }ŕ=]%;gNPAg%4j,0L6emAPEsS]? >5C3D<0}0ܣ6g011" 8,XЏ@CL,2]Kg f !P@~#Ϡ4! oݶHX[g B P"7=Um j Ԍ@wS6a5Aཌྷ4 W,)'B$0H|!jfp0d-,XdHkaWî ==(G Փ!3CA0,d 2̓ZW(3 UpZţ13#r>6 F)c L2@5z#YЅ@e2 myPf`0aQ#!*E=&!apwVU CVRue}'4 @߃!N.#Uwa65Ca?$C*CW܁-.3.{3@n4`nU> f,X u %ΰ4tgXͰ掐c5_ =dXŰg?**s?d1pg LH`{ӵ;8Wƻ&U:^F߼, mTOՋ =A/!\,c!61 gCAA(o_2CEHmaoq$EE&<@N}b 8 ka8EcZ]Mt`8>c\~"/&6D1L"tgEQu60u .`x߅!rO udV`sO\`NM1} X).DL 7x22U\P*C F 3~Tt-A~epzO§K⸏{;ܣe(2KXO<1CNK \+}"lo:|~ d` A ښ ,CZG-w=UT1]lpg*CS3藾u;ܝgc;Cw??}*vV319yej]W1C8 {h;&@`!bM;м;VspV΀N]lmw0nW3܅ Cp;r2,K @*,_ȭJ~a=@iKV՞aH/Y{dLP/( pR5MF oU)VAOd#i0? e1<HЎBmhuUhxa^b!=>Z''U>j'+ '"+;!Ac;?@X.͸Y=Aiv٧ܛ$LaCaҵ|H<]J'gAiGIDI)KyDʤ(04˨#oEBBAB"=0-Fyb{àjVkvznz}d=I3&'9¶`Zcmh.<^5q6p_ę~,3lx܏a y19w_bDV$]&t&(]Ƽ}. w}wb[7Ƽ[ce/5|\~c㖍+k j Tdqz{9G0Q f*1VՍ*֖зbQ~0!0`,cg>0S.t0N6d$zN'ltl`v@ƥbqE8_f,?0S E{53rMԽi|plwژ+۫v9A hռ7M8;q4' yfP9=0WS3i-mLCs( A0EtQJǸhD&2ucjr}/o/LQ1tcuyo-2.1.0/data/pics/itGruen.xpm.gz0000644000175000017500000000552212411636424014052 00000000000000k6'TitGruen.xpmߏFǟbt1]=F < !" q=3k%H=o\U]v;q׿x~_qw}w?ڝw~ݛ/_; mqˏow?櫧'WTp7{݇~ >~|~w>S}Œ4QBbSZptBhJX5D/g$bpW Mk]@9%!|ߪ=6*F]:$,䵿4W)kF#pk,Yڂ" H]x9`mD2ʲ[Z>jhLIlp91:YHId娬ŠTݼowW1fC+kX/UȈJ(24FRKk&.3ڒf,~Ȍd_ oA{~-V-;h3-V<㼓bmDlH3R̵y:^ rtn-#(^21Ywf8˨Fҁvq`xs컐~zJBG ytgN=k O҉jI;+aD!`9Q1 #1#]6oUxF{U%?FfWrF+9/84{cuyo-2.1.0/data/pics/mlSorte6.xpm.gz0000644000175000017500000000356611672457347014173 00000000000000 NZmo6_qȾl.ܢi$i`;a9R )a}D9N*;{ E`8?~6YiIu:ݶӣ%I-UQiV,E8I\y6^ѳլr(Y,s[5oT1oUGtN7EIN hO/qi/(3*8Ez(% /V\V"ZTIyvAUxF狫YIl(kFS50+A)G+5 :ʵJCRt}/ئ. |AjfqYύj=ǔf쩶_ٌ-j+>>|Q>Ps\Sd7T֊qV.5;?.tt<:{7?8bpq."0UIpyRJ[r8ת_j5٘NNTzŔsmyH鄲lӗ"ASgwt%Q~FJI,NOW:mziv?v_u~![:{楖P2 ڿ T?Z{ޯnEwZuIwLWm7H ,c5FjQ}5  R&a6D4}lA`0C< X&ƽ-dqRE ļ@NōRvlfJk f>[mםJ>1W=Bb`?Ha /X01lEJ*>òap 4d/_ nmbpQ }vN٠Ne=#2h{<MJ 9Cc2yNCȐ"IO [ 0Zmbx7 u/4Zv0,:k_Df5KcWpb_jͺ}!ZSm,&Dq0p´AH1 O#E2&Ic j!3jxs+R ۊMz(jª7b ŒVrK5džD#&`jsOgG$]q 8}A!P^:&PybE -%륣7=>p![šsa$Jqa҃.ɲX?<_@k?_H=:x@qU:zon.=_dΫ Ms'ƙ<>k3 My}& 0G ؚ} V s͛}|r_$!+6q o}ǶK k C±$? +ČO<ݎc]Y^>AgIϰݰCO}4clclw}><_j_pt>3vޥ i.ж ַY!ɲ7ORH eՊ63ke-4Ϛ+}m/vOm]?<`2S/V|! $5ds[7" O[99ݖ'(@\+7^5O=[//Q+5!XRsǩ1nև >cMZ~3fF@n)gr7˗3x_> z]$;y PyUz.|}ٻ'Er[R~|!,bbXߑFdnG{%}lA29!.HH*2ИCR2\3VARƲ(cOM@A22+[LH <:W`  O9V5kSUXEv; ɖ/<*X@~WEJ=t%%dK*0HVp uƍoݧc ?\p_cYaS ;RQazf8 Rd,+ki\ep-½+PA%lq|06 c?3hA7 ,VsE鹃bNIʠˍ+MnNXP\BX$ Zp(ý)[Ϡ5Vnel-4:F0Gh2y]8 #,ߙ&(v9&_  E^wN e8Yh'q I3 a2>L3_y Ǩfзs#|%!&^$!"3kxU5M"8z'cŌLx eŠ*O{V 1(}F+^_v8kX[ vd3pkd$iyET(H3BfPq~}6!v6P|#!3T:FFȌrh6Cӧ!3LHfl!Q |q* PyѬWJ_9PYDY?u0z Wm=suB 4b$#I^"CȤK=RvO0Rۭd 9u'rG ja}x_>#^Δ< nPS#JuFݬY :걌# |hZ.n-62hΐC ͸]m@ Qk1]88+Z"HI8DKl n&>8MjF2htZp -tNz=:$p̨-C0 d9İenΈ6 'fV ,̉b&--3Ù^Bl8Q)RQ1]&x5zmC;gyYtm+ihyOaJJgiSj&G]3|ㅔ,7 J"/bKigRjE1wEDM:=ڙ{Hb>_ܖ"o2_{ac@ظuwdR:[\}B>/maC}Ԩ.OX qdIn>VFnvP~uI^MiטH@qoʭ'㾝0"UXxa]VYt2; c06 cc럯[[\>u*cuyo-2.1.0/data/pics/inRosaNasen1.xpm.gz0000644000175000017500000000343307550521113014731 00000000000000<inRosaNasen1.xpmAoDWXqX !BBQ{ xmWzUvv=`)TugW/.ݽ{s?vp5yݫ7?2|3}qyajr~xZ^~}:ۗo?>>I_#w(' Oq>n8Mak<5@3(cHeAÉ502q`Au1AdDBX؉`32;1'j}k AP־ԢshvY Ɋ@Lf{A$ 7Ä2n ~X|kjrnR3!}$Fs86bw!2V0 2JZAu~bh\2/y'kD0sS2 &ۉQ[dW[$;';8[I ms G[E嚨.ԧQ=E JVK;?*ZڿM66=C@ *[z؉@zyF8R(4r =V ψ! B9 D |r^`ahdAp!"ݸ ԳU!B^i+sYGnzpJ^Q2?,a= Ge*[k.E2tCpـ ) 3 ?-}O. m=ˀr=@pvs++q\qȮ]B3l aދ.c7 A ߑr!?Sbp!-i!bAOb>҃k iY]Yř{GtbT'01| |s@/rwQL}n`>NM #^P\Dõ)0)x6C^W&3G)MAi\!4; ͚0Q8 ZoA %f A{@/Ct92lAsȓ= SRiL@GeZ"$E{b7\m3`PzOqo)_\SP]gF ķ4.Pk vJ!0|0 j1ّ!0T)>*,{ңeHߣai^ Rd R C'oSͽE94]y Ħ2@,A7xۿ0 qб}uw@4k! COUp>6KAt˃b*F2c*ꃵ& Ox|?C FBr8`?`+ըiؓC`Gn%T~f0 WU,%f@uuBDžR;k 41 h5>tr-8~_dCRh1lR!, ?-៯/\xBcuyo-2.1.0/data/pics/jhGraueWolken.xpm.gz0000644000175000017500000001510307550521116015175 00000000000000<jhGraueWolken.xpm[[ϫʑ} n`@Μ$o3 E2d4HYgaQ]]VUoۿG?/{?Ow~'?ia?~s~o >pE9O2xrxaʓó cZ2Lxrhsɡ/_䰑aɓPMa+Ü'5OCOɡ)xr<9/xrOp[]yr0ɡ+Â'a%yrX0a'Ä' ˓ç*a,_0 20Ó\%O2LyrXPa)OƬہѧkItWc,Aq|`X(ևY;x `r]8ٽ4"H5Dl1ȍX>]镝?jMa[y^lKӄ7C*C 5rLD/NG~ۤi.u 1ZSdⅷW̍X*`:cǰ8`RZ55S 3Aƾ_(,^殦~m(ס %#¶  ; ;yZ]uǃq N:Y'q{pVgA+S}.+1mF v_ktӦ.@IK# |noӵKV* = m@[79a3~y]~,O#~X/}__4T|/GbИ)כ UEX~I!زEyK+.͠`=bi1~?" zPșT2yAXlOirp@W':({XW ՉE /*LPc@A>}|j;gIb8 J,Ky ʔ1 Riko rP31%֌NW"@T ^a ,`F\ 3#ϞcEqTdVV7y]X``/ӿqkǹXeX,m΢y|%@_{'4k(Q{qݚ+ViV (d ĉ If-ȥ9_Hh EWmU^tH(V!xGLt!6Hx3%JKߏmQ1BD9eCxk  Bd bW&KIEʷXԤZQBxdPm3AY͡GMx!jORjՔ6EkAapX4\SZQ޵hUċξpX<a4doSiRS:nqe+%A8k,,pa9bFP7)MuVcc\^d$uP"Jċ("3֬H$K y ׌"K$B0T4iuF4*nA I6aЅ* 0W@n1*˫WY\Л&iV/K=>3b/aR.݁2Ӡa K"wzdnA"-R.bQCu] +>=DMJjb d$Av{˜:4r.<+Z%3MjkU GAՆk+YO{0Ԭ$v)$PqfE/`.5`ҭ+KB0 t0 b3hAᩫO<̶|/*OuN2,AeD0!F,BeQwjEMD]y>Lj;0lbPueYb)y!Y.7dM~Wr${&=i,hڋXLMӀ`nQ3~:f *cRp< Km1We<*.ObP!"v>΅]7 vMI[u">uff[òn  6kDonl9뷾.2]p59}>ԕ^]?EߵE.&4C&rשUڴEx$H,MAJy[poթMߩ)+izT`n QW]r->IjFrT e6*iݵvSUuh#rqSFBuʢ0UveG%oFu1@~[BFsRni_F` $%sg ҥ֦PY_Due,DBEp]tݭ^ iv3_ `F0yc C t:<$vU9WT$oSvI*_Aʱӎv:VOի5QT9"ˉ@('-lrq d. AbO&K_-FA Qa*E%wp(]aKc)s.Ȧ.4x^ú.-<Cw KR%(۸-23{Y[@(9Xu@6fU "FҞVYBQ;Uy#jሐdfc'%a*UΫ*}b2#w7\n. g[ E$vvzzu)쇲q+Kf(~30(13c(k>qoCo9m4%Hen&T0 QZ͂26-/J Xc KN ݍT  ҡ`|$.;(Q.^T >y4:X^}Ơ+Rx#7LC@Y˭Dr: WJiǐZUPW* 㤉tp)f(t`ـ&; [YPlC8KnOfȍ.^-{g&0ᶈ%3y-ոS(96`!:;ނm]P{aVB3pcN! WtjA.\kM)X R6[^\+ *e0tPJ gj՜a[ .)uFL ]Y T)VDt?B*a[D7johaWm'^$GhZlhk6UCƐ@!,!s-ыXoW4ǠA7<t3nVLa*;s2%‚s;պld(lY @|r2\Št7ifO7VuEU>nǺ7Y6^-ELpmU`ė[AٲNLNK7~$Q|SWCɈuc6~m *>?TXOoV#1|s{(tkp@ ƶ2fwQ:%1r7fq:8i.%XүzQ&sV;FBބ2Wmɚ>nx`d#36l!;ov!Qn̮;gh UIYʬJ#jC #fī3~/DfM"ٿ+(jESD7])7/V§9}Lkk¢B;o:uZϻn{%fW+)JE]7(QTyo:SΠ1s%{[+jT5:rQd`\v*YRd 5%;tGu Ԫk .Y7~gC/<\i-;eLޭ c[R.-lKl2lF?D>%g <)W{Do7sGĭ 42bEөEzw0\؝x̼d\2!nZ8B>[L&z!l̒O[m!ZKAbzڒ$yB'iܯ.5qgNZtUeNQ9wTQo%E~_p(J!~NԽ}XqBf& -7-̛arEo%U3F-*܈kD@~z?|9)AΊ<9P&Ϳo8/L#@f_^P>ԩ9'}=250#V])٠ N)Xyͫ?.VŽ0%?%sЩI~fdt<ɼ 5BrOR .ڨ\a1] 2 ቀÆ ujvr+V_[Bw_lE CXJjLFzhH=,fJE~޼Kө%/0oE\<FV4!F0iMBq+jr0ө)iNdZ+V2mw"`vډ \,UXn,ļO1 j9B tIFƲc:8*"l@7H}pN%`%lܺ l~ 'y j٠2Gw'|"A1Z$}JϬrՆUHYUE Рt ≰B UNL<, uRcRCS+I1ݢWuXHKh\z6uX1-WH~ͦT*v7U)X UA*/D5V`B5qzs˫e +1u#TirߤXftib@HՎlMrx)}#tR{?he- m$16Rk&ت[@/=$':>}Yׂ-X5VF e<߷_dDcuyo-2.1.0/data/pics/itBlau.xpm.gz0000644000175000017500000000500412411636423013647 000000000000007'TitBlau.xpm[4ǟX5pRZUG$PU!MP$$w'cI|#qM?/u|4у޿}ӻzN߿߿4|ǧ<<}?}ka>\~孹|'wwOo|\4sӧ>}"߻'w速>~r2O嵹|ٛ7xy1=yv0"#|5 914UF0#4a*{`o$Z@bˆjVƑЫV)1WTԧBJ)a)A*s1|V#sC wpn Btu+eD;.5x39X=]Y31lQUkk:&mnaWzU/K5A+?^R%BehvH vY:̰Vbtu}2GmjB0Mca g*hM,E߉*1C( sJJh#XmGc3^q)܊{/.CSJF7Io ~xe.#]+& {pB@$5ޓV9tBig=̧%P(ؓrBȅ{D&#)ƒ> b̂,aU"ˆѶ2zYЫW*Wq]i[Sۿz:ioEu|nk0 {[ؕ+)7 V]#܀bVbڭuh]nbfۉM/"t;[(vcj{Y@@ȭnXBAڴslok_@,&w̓Zc'ܼ;oje&ƨHNOxGl&vyD`n/û?fDӝ/%7QpqF3mn|p]JJcH+ͤwԈwE_c Ͷr@>5AW#%B/\^篼2JF^eXT8u`ԱQF;u`ԱQF;u`ԱQF;u?WIk؞U'Dy ؒh@@NkWR?FfoW2Wl%}J˪x+pfz&u2[E|^%}2U—CXl&3_)tzdzә NWo~n:3Q4[STfIuu2чo?[uvgs9$7ʌ-H鱪+TmuQ3f*BߩCiya>7ܨLnfXVr5'p%~Guh6xYOJgݩSߔ3}ͩ=/pqqFp嬢YSoyVf^Ba^R.^7?_p2;ٜ>0^t~F>_9GuT.Jg*E8|y s??K/+>ڀ9hyE9*iԌ?uqzƥ5֦qŁڜX^[[Nd\If3^jZU12?_T^Jeyڿk4Ӹ ;c?#gGNѳcm!ŁFh}OKf3?tlbcZ*ꩃRi FFIp3HGƏ;o-O<?0W>?ޘ=Clxm]h3 ŐgpU8?a<*W?NN*=p13o"_Sq|&w(~׈foiWlW)9b]C*5v P B*5rĂ<Inype@)ʘ j'a?}AW=7:5w hǟB:z!-w18f ?tkT&Gux,wsie7)Aks ku>/=,|*倪z@[a`9 JiPxA_ 07ZB^ ⾁@6r@}b˫AqAr@` ':; bġ"rbG+$Gq<@Vͯrr Yq(dE\$ǁ(|jBՄ ?y-@Ҁ* @Ҁ2 d0g .S:|. C x2~݀f ?3wuBl4ȯ))K,Sܧ8pFs M\|P@4&<~$4xI%: S px9S!\ r@BNp-ʁدP|gP|<Zp%tM/5!^kB&`נq0x5Z!&?5{s&4MNH<{o <~=P:EXWk:1=sK U^*UvvwwFvwwwS}2!URħa* Z%U@&JwrV>p;Z:bX!gT9 2<X!gT9 < ˁy~E3#ݣyfD<3ό3!}D HkU?+,0u;ebi@C--$>oi {8tV$8Tg=^ZsNj,QxAs'4?0_r L9'2P\H~.$q?kA'LZP }-`\ dMBrU|,cHc{岮(cxk"! ttM$DSi@3J 4 O @b._xG Lޚ +K _28h/p|_xא?^ (|Հ >40Pa.Pk[ ~~Oe2/QxM?AukpOoiUX}{5"T:s}JW <^qu"͜GX+}M{V@R*uA~MUEcC'ti\O:>X!X!X!WIr@R0Yr/U\{]u<#}FIrqy9 .׈ _] (LW SK<ߎ_&)~;Ǐp"ԙ3gΜxxj|OFLg! }f#^jU! Z }f#F*a!&*?\?k4xŽGq+~l^4?[QB|o4~+lK?7e J/O:? p?Aq cOhP?cвz ZVh'>?)O̅LP9Ui|KmAxQ"o5JF ~Ȑ`ڃ$qĵ6ޭ?0 ?PԃA@: PCJVď?7kLxAkOT ?H@$f/RT?&OQ9SxE?OD fB=8 +$?BMBMbfe?FS#RxUǏ)|XǏ!J' ˲MxeVI] һ~:~:O&?x8tqbӍlj}O7D@|I@> '? >$`Nǫb*V1v+'9_pxQ)MMJ?`R Oᇚu IK)t {~|9SGߗeMJ?@LkxUG4 H9城A5 i\pZ&T6ӵFEf3]G|L> (|'w|5ԵS|jL_9p`3Հ™j@L5OQeu)J?f ~f ރ?CIlK_I,sy4I.?p3SL] 'V677"=D&-l>jFjUzՌû;bbgwxdG=k yK+ה'AEՒ< ZU)ʓX佑O-{#Z.WF?\8ޖ7D /1? o_cT@LǨ!*)HA xJ ϫA֕fLgɔfL'૵^@| Hz 8xhrDi6i9".h9"˓($05 @M=P@!A ( x|ǐ`!^yyF:#G.#G롚z&I kh;VP`'{IP&y1߫? O'ȓ`Ip0, ?l 0$$PFjhjh?~6?W %uw!!@RaiL&)32:) G0 Gw:0 w %<F`3:~&T35 U<ܐY9"$~Ȩo"swlMD{d"oswlMzs j;ߡ?Nxu#Ϭ~}O7}r}VOT"*AaH@IP@"eDoIGnT.iAOT}8ZX!X!X! 4I@@ѠӀ(Ӏ(Otti\O:>?P2RH4_+0׊L"|mՀgj@[t5m'Hfy<ۼn Υ4x<~?cN`{qsq3gNoS|Q{lK܁Ns@{ɮ| |;>O)0cOm ˵ɼd,se^|>{JS~@[MuMC xAĻ6\qB?x[dz,Hǂu R k&õ L)@)|Q#OSj8l[>Ȇx{dE~<o7\ԖBݰJm) G-*k-=C=@5p ta%?>sPܒ@qK~H׃A-HDwhA"@ jѴ|P&}PC_|T0|U.B`hX9"99"99"Y95sŀ8P ~M*$j4p J9D?6];e( yxA{Pj5m:_bbbF ^J/)@l֟e^ASz٬7)@>JCo0x.u8Z~JV+Z@ZkR:% Zz)tV/?Vߠ? ?5tZk6Q|?4)BAk6P|?4Ns[,I+68%VlpR^lqP;C|)1ObA=7"{Zd99"89"rrD_W.+   >3P/|)p^$5ËDcxx /aXP@ S@&ZHUè]M>]6`}\9/t}9)/4倦pDWd +2oO'x˄,3o6Kyk@,/'X<@9w]ϩ3g9Cn5˰g.Y0fW,\9k4xŽp;~ l^4?1=ư?` {hư?`xh݃s8瞛s8ga=jg k5V;cXC[[|ҬqUz[=VmZeT 0A+Р^wlxh+%FS>j5F}>jdHS $\mH@-Wt-WGB!p@J Vo5  >/3333G3@qhqhqhq?‚ B ( `I@Ka" 40 |AX{‚C@?86 ‚CxaX{‚j8:0. D i`8 MA@ MA@8nDri@'V`KSP[ MA@m)49pi@': D@A)- Rh rKaK4K400?Pʁ :|90h-si pi~A@ SP)r ^ @?ĕ `r ^xa\ax2 ߵ8.W@hυkXtZڇZ9j݆ƈA.]o8a  ޭj8xNJp@t9 ]肀.b@0a";D@     ˁ L":M":M":M" ;Pp Pp Pp PPPc1`0j (9. 8@89pc(X]$]:]: t:z _(. Dpi$N`8 + (r.MMF05?`j2J`K&0\0<X?G`e(`xw@ 7C"`4?ǥ@ /I@'M4t"ӀN@ עW+O> H $ )`4& 2C5A`)  pi 0i @9w]ϩ3g98sp8q3gX\o/Cߎkk{VP+s6I]~lWީle2e߸p, `Zhmo2oa_Eo{>2ϑG0=7oR?k43tRAFIn=6<^냿dq0ɀԊ?G،/0; H[j?D ؞wVyoYtC| ߮`j4O<=ZY8EXܱ9p^|)uk4DDsX^gr^^"Rj$~xȰWG[ x.⫡{8}䏟]kMy&y.ThMOljɅ777wƝq3_gggggy,*,fh]8_T<>~xG8ٗ?ޅXɀ\ $6" p.l$~$$^݊įpR,*|x';п__Ư?/Wvǯ/R2u!Ip/_SĠ_8"t _)8"2z,bAuh9_GC e7ɀH%9/Wī%>ߕů9p)?LW:d9;$^.|!WkA~du+|A2@_;/4K?GOM31=ߛ\ QC࿞M &:*k77os.krKos.ـos.wos.W"G'#Hɗ#QP 9Q^AfZ o~w礠&Qҗ«FsR ߝ*&Wv΁jK#Ֆj;Fj?%sO+<?TW ՀDoM(yPQ<UL/kFͯQ| PSE;yMڨIa-hj_j~jASeܪMmT '4Qxo&YF&/Y0ja&h2 UQ\惓yHG#J#ee ,ap͂/YJE,O#\P % &F}]cnoC(>G?o+XqC"Eϋ1oN( :&wn]$7x4cHm v|xߊ3o /tCCr )vCS)u*\R̯^{:ǯ^{:ᵇ^ lsόgFsp8q3g98sp8q3g98spE% ?Ms{B˹%r_ބ4gO(;WqemonSMf=aSM {J'9q~_GO{WRBd[` X{zԃ||G`?)!6cf,r|T:IGtZ,0=&SHc"HmPU4~1#L|WX\>}^fblWcS=f&AOxV CLtv?wxIZI͉u!6oRbegg'糳ggC"яCqhUqQY!͋alaY,^HJ봘Ui$6>G#^ӈѽf/{_ݎ?Ύ7U;zzNSk7? |h$G~Oɹ͐eO>Ax^ IPމOŐP^//U*< {|>[+/`%^/s_x!d?!A=_GOB{CO㫫ISY@OBɷ>>>l[>>],⃠qP Ci?b4ThWQAOT&r)32䑓8XGN"eENœc'>9>A0 >fF?H}D8 OPP=NDb@}-M$=DDžx9Zp!r&Wlpb2A3Ң3ăL lI<2ăL0Ԅ&=5a& #5AXA)šHlOaDrz &pSukIuT($HB&DI5ZBqL9!ߡ$x煍qXk-713gF>+q{+{|[ܻ|r[[~h--سrkob濄qI>=&K}zL1 h4Hf?p_1T F#+~WX>=&}zLlD濇@d{8@}Vrz-쵒ka^P!H>@$~@ πb?a,!7-G$?D_ 5w2( `f&jY?P|a  mpxp8!$BCH   92`0wppw-p599WR4n .3_Ky>Ann/Gs<^X ! ޞBx{ 9r) EmK,Z:d{:~%u4{9憽`?,G_#q?7 "D5QU>-6>r-3S Sf $jDABg4> >܇_7;eǟ=w~\ِ_'e282YK2rG`?ړNC_ O'~G?#?JXc{Uc*w L !`]lcQe!D\.cxA9^(cxG9 bDnz ?4h\ſr@r@r@s\[i_-=rxi` >{8.1x>zDr >&'+vɊҀOW&~6?ObO" 'Q/q)Spq(^Ruzn~'z=۟࿑&txK ; bIy zRr sx~~倬4SUVC8~X(jPkY\Dr@"z@2+^!#ZO}- n s}- n }- n }- o Z Y,dMB5 ]r@$TAOMX{.jyiڞjIl}J$vkО/I&|{ xZ{E{߃{w$ǽQnlnnOmlnb3|>?ij^_}%`.4{OX 9QA( yktAI`ߔ%yz ֈaA_OaI㣰VY">Uo3c?3;/na<ܭ;0#X%NS_%as)R$9@ws5j"q .A|?Fy>OFIOЀ?tN<I=u@< BÍ {=-zꁽ̿9Znln+̳xTg) H U$_hAHI0_ĩJpXPׂ k_!u-8' eg?]7ܽq(TM&"pY,TM8Oøk„OWYOW-OW 埮 n z~Zj ?z K Ҁ?Mմ«:'Ț8{/3=^$_xA\0既 5"5]S S A'AkDWcZi {ZJj<\+ NVJ_ZďW~xE&~"}<3i` [s̤m*lg&%lSarbM>3JlDX4 `A❉Hޚzg)|Uߢm]xz0N٦yv:V@|o0 Mf$ Yނ/^{ Sdt:U g5]\տ?"8\&#e&8\&_>$I`V@gN@%S3{T^2?7y໴mc!$WBPA2N c{$3 Y01k?-Gh:x:~ٹyvgyIy_xeĵHHۜL?0TI`8?_I܏֫?p#Otᐎ91?p&᳚&߫Ip/AHɯ?%D+7I'H∿Wg8o6g8Tz'?0&AOIj˚Fa{HLkUM֠=/F4 XP@WjJ yzSי28Ͳ!gqڐ8nĐ:WZe8 z5'A:p 7h35!gjK֞k|H4$@JO ؄A`7^!xRzi^!?3?3??3?oess#-+eQ3(^׷ UWQ|xwwgBL {~7' 4 4 '=׃L] 0u1ム?CQTCCPSCJ*URZ!/tH {#7)Y0uo$rF f!׺x8s1cT+VH@ CK*t^uY'Su2Y'S$y|b?? |P'kи&?3(@g@+͵CQlRO#@ G65 (&$5 )|W?3C培*P' $N$!sB$ "#`UYK?4 S|I@ yg?So.g&??p!J'.H4}dqZIPOj3=33܁F3@ GR?}+OC> ԁO|i'B bY';:gɎ?\?'5^IM?c> QI@q$ n:ESx`݆ 9 _pKu!z@lજ H\$+:= 4Ӹoq!VďMIc⧄H??H04L@1 B@g+sy~S:wA~i?~??0)M)P$^m[P/KQ^?lK[@[@{0@瞰X @qK-=Noc#oc#oc#ox5(A ~ eV< ]WYA/HVk;v =\۱癶AТrDMJAPorDߵQqT0W ,k;gX?cgڎA(2"L$+2j]m vWێ>¼8Sdqh$H>Z8fJh59SGߗ5*Jh |n{uǀk /R{jMM3k*||v߫? O5;+>w>Ͷ%??9N nj%VqP;Cx)-k-6n ZU?ukk'@AЧ } NSzt;,K_J? (|Տ+WWcq9\ *?P`[2r 6孲(քZ-#nd12@%Aɧ*Y L>(A"oCcUi|KmAxE+D?^$S ~z?bbeŏ-eŏ-+~(o?~g;/ot|O Śf3B6xUUPm(>R )埞CƵq}<N@3jAPC sc.Kkϵ<?Ωq?ٽ將k7=\!! anS$O>HH%.$p&I=!=$>szEw( ]gtw? HP A@DiKDiKA( }S$7&T3\c jf z _01\܅Zk uǪyݱj8d^wr?$?ttN pa,{;{u1 zڃa 7zxQƤmTnV2O J*;'1ZLY/j,) p]Zϒ@c9=gϒfszr G >^/.ߟbqdb [~_yzǫ[,>?MZh4S惛h>!*ip~.t9<4889$ NNd>x7܉kw77݆q!ȞOӼq S]ԎGGGh]8?.*;;ΧPʏ_oj/~:|˫e3 u.VW;^[W?~ e  4~yl/OϬ70F?8p/piRǺ<N.͡!J(N,Mw(JVB1.y^GA>6㿩 /c3=ؐ /Dm iR_\W/`A؀|2%|XY?9`>)s2%|-.uO*SU'^iؿ)dJn18ˁ_/sA.Te.X ?{Q2,e]0s&p`2L9a7˳ׅ/"\>.LñE@ñE@ñE@ñ,9/s9/NzQ?á  ~;5Rbͮ .Dw91W»sP)%/Dw9|Ŀ>~crYԿg<_?'."P_A6"Pp?TP*,Ԅ9,kZOM`;_ԄUY ^޵aY ?^JOMU ڨ U ڨu&]J_pW-k#p 7Um|kׄ:Y&T]PƏ֝ wUmgׄOwV͞NJ=Z{?_Ԅ?S~=~Gy>grg^+ е"y=:bg{7.x~<.:ѷd@:?| C%`B𭚒 Z'Ruo P{l3*W8531xM1X3v%k}pyJjc.m.xfhv2J!^MmFJ]oOD5vo-%_,9 nk]ZqY+^r7# ^+>G,|w_K'^=3sό;o7g98sp8q3g98sp8q3gn/K=bS*$TCvO/=Ϟп)DϞߎ[qXM\i!_$JqB] xw歽2t\o9[."-\?-"B!{ç#n K4cY:)xIR{LK^οcb{DC,^8?9zLdAo $b[zLu!^w@A Y\gqƃbg.E`ZL\J> zJ'9եXbnN߯ qIp=pvyRL~>; 1{ IpQ;ڒptP8:Zbr- Ő~wLmo ~?P$k7fc#-ZHGV?^E!y4-|m6gD.EdyZt\ -|v.]0 =a! z$BI($ o??7 ?7 H|oρޓشyIU>ޓ[$vU>8Կ5kP ,StCxQl' OL k` 9ue$rGNb@9P/md$$0 ɨ B2DL4(B2e& gb@:r9HMpQD&D&BBBBEwpwwx-˻o? ?;7~S'ks,zwͅ'e܃VÓx0ރW“VD澻0D1x]-VG݅a+bqwak:9I&v̮ U U`w*|KM]_hM*5 {&\ݎ?Ύ7U; hlvׂ45 (wE:JQ`WkA)so(iso(m:+so(so(Q9.ۜdZ+4jAXa`2T&50=tk1K&1 սbTV4*;F廨F i ;ʴ }j'- +~o^+NZ+e[6ӫ?PjVp@Z//S*'@?=3?98sp8q3g98sp8q3gd`n/Sno1q=&]Ssz]ӠpNi8M*I6ӨtNiպgF?98sp8q3g98sp8q3gd`n/m??P?P}>xSfldm|@Tl^>{B}Z4~<?PzF- m6n#,ͥ @ `z1Xmah#x8Фy8Py8Py=&%Ǥ]c"n#=&2ӠD,EJ $Jyxd,^+mxM<8@ .{"{k͐^+$Z1$kֈ?5kFX",z͊dMdK%dEd"88ǿoA}ԿoA}ԿoA}ԿozN7```Op %y9ԭjmxEq"*eMnQPxL &CiޙXf_p^ E`T~/D?qapΛx P2>Bsτ45FkQQ첅G1 H_ɏ8/.{(U㼆(%?% C0$ C0$ C0$ ?! x#tE^X,dN(DR0")nԀd`A&||7j2 FɤRz^ϰ$#rsm{xL}cGw]kj8 aje 0Tj`$H;.̟"b*PT"E W '9C4z礡=7j\+` Q["uڸvۑ`Ѐi29_vjm$24!xsx>- *%V*BDWWW'"@VFcm=$C/#ɣm}ʘ>:T[Y?> zQ'p53jjN! ;;3@wX ]X`l v(0tg8ڋB 1]fpv7~p?tz&0Rw6cz$ G/9n`yy p\:0C6jVQR qOs0BT)~C sN? þJy{΁l=T^RJ_q$Eje>~v-`^=ӇMJh?cu[*<rǗɤ +녷D {=&@ WJk FuicxGr1~/o& C0$ cX_x|%7cuyo-2.1.0/data/pics/dnRed1.xpm.gz0000644000175000017500000000100607550521110013534 00000000000000<dnRed1.xpmKK@W\2Yu$Tъ՝")mAV.񿛉Tf 9 BÙ~e2s p 7W2zoq& d^̣;9ϏFc=mϗ\>/}W;c̱mjfl'I6m3J R5Mi[2 NCԦYY0QAiWzA̰P CaTnS=PT" CTu"(~f3_ >[Gq'TM0ԍ0 kao"Qg5DB݂aZ 2 d :~0^"x{b[7€аvVC4^$nWoq1Ft2 d :~0^"x{b[7€аvVC,-F^ d @0< AX֍0 ?49 ᷋ 2 z_;Bcuyo-2.1.0/data/pics/mdEgoH11.xpm.gz0000644000175000017500000000222212412223246013727 00000000000000W0WDe ^U `@r6s&=útgG~{νI{fcvlٱVuGWd_7dt3Α8!{vq~ ?ON٭8+rS@* _"ȳNQ+˘J\ZNE`9zKV %f3 LtKbXa%̬r @Jt iv1PBrq:Q;&/MzsRC=xa a{Cy0Zq Þ0HNz@ 7vc:?зpr-7w;@/=C_1MzQ|0p t<įOl. 1us/q;`҇:=M魹W6&!6!gҎsm)zn%ڷ+my_nUy3d&25HR}5n vȍv?ȡ;7l07&cuyo-2.1.0/data/pics/bxBaer112.xpm.gz0000644000175000017500000000773210361553650014072 00000000000000b=bxBaer112.xpmyWLO>}]2,M4rTb *K"z1a1‏\>%`Kqf)/UU}P-߬WG4o]hA4 )oAX``,ll ~xke&#I%AorDH+Z*ED57D(ڌĈz@hTƉzFٕChHTMD4E0=YI{TM>UX'ZQd,Nl?zLx #MU>dwth|,55(=UHBzTUF܊a z4O&ٕZ5Z`x3JHDFN$5L"oaDF"^hѓcxՒHTm&Qjؕ FނHDAOI=A] !DOֈ3ZTM$(=S/lSO-<1Fg[M0Qd^ۥ*JjhMeC坝4voR$kD"6ѐ؈mPQA-vG}Ɛ"}#-c'_צZTm16TT*Pl?+;G+DmS:A*GUFyoU5>Ոze_9ؐ㐞|K&5]꒪-|%Z@qOT#ŨDmE6shCvwhcDT3!*>Ԋ:*VTS¿z#BɃɃX6^țJCEcPp2#[`dl-c0e FȖ12#[`dVbp،xk+B!ja#(j\v"^ ܔ0rBC5C>h I:lEm*faQ""ch|CjiF-K,x{_*]leg˧m6]Ne-i?hp!8҇{۵F{TUGa  ]$f6rU3}3PAn*xB8MZ-%9:a4K1MtnP 鹬W0dYοNu#"]!d$9#RU AB՗B9 v9\kՁi=~!=8RvQ^L?ȵ94 QDg aEX0lYX[5F,=geYKc;p*@#Čw9/51J2c[ȼ+ I1M4y Go0P^,JBj*᧠=k:A4~|bZap2e,p':i?F0{:7 k3>NgSo~G@9sC/T4l3l_l;6dN8:956gZ''qAdƐ\g.es380ҿ]%(ob%O(&7x|Hf1r=Cؤƹ#jۢ gL4#o6jga*Ԏ|t>P1 FO܌b@bȳu)sumGnČ>Nk+>>yMrQ࿺GGd2c9jxauWBcʳ2㉝FM!阂9UTxS: ,[tGat;TU0}!x TYʲȫ1`'*l=]28"/H@•ZrڬmLe{;O)*x%[dyg4LC2RH=g4"wH/zF6*Ҳ&l,giF#2>K>]^`9ذ]4r#M-mI[a[%A[s fUݍ}! ,3CRQ5_9:d>V[;t.j29c;ļ!Wb[H|S <DO~Uu ,g02=S`ǟq'=[aݦE?1Gx剧e+ "8z:JoGC=~na{WFɌv,INÙ,_qZHmnOmHʓJZ;?'Bi1sӕ̖HC5tI!g7v2'xΥh==<$mᜱdAVA$bN *5!p~pQ(قwG~y07Os;h2kX|| I:t"OxLo-c:"|+$({ۯp(e-{ڋ #s p-䮜c4p jw~ˤ#1$quibr!aNqڇ` #Et=Rx_qvvތ~4A&Ob/M{xlg(ʏx]A.@|w]0Xp->m3vyYjz8}wW?hD]hRvLS!\$1w9tʔ1m8Pcvqq<ЎLe͚^ܻ 6%i}! + S}933a>MBF8P;>X|./z*;xd<2GFX9=0*ܤew̜骎לs6#geHviXto{f|+F9e%_ڌlMDq{8غ9y!VԈX,uȊq~.#8t@@^޳H0Fȑ D^m-ѭ5/R;^۲[ðdsxqN 7e0Sh{] .gǾ$=jz zW;?BGm0f+3YJa|gNþY c;';ʥg}ɹ_qI >|X񳌜_R1@׌MHkM˻O~Gr|՛5u?x:kH3qLM|!ֳaZ{~,> m",;i9Gé{)(P)11j;CK`c|Z2#[`dl-c0e FȖ12#[`dO}?lkcuyo-2.1.0/data/pics/mdBoden15.xpm.gz0000644000175000017500000001033612412223243014142 00000000000000ZmSH>r'V ,'c '.A<0(doN<5VmnFƶ{W?dd9ިo\y1?OG g7O?ollԄߎ5kloI2KcJ.ڢm̺ uIZ&maLeͤCc~[oLa[1*G ;Z$6f(f[sǚ~ک]`Ům8!kHH;1cCUv4CU[֑c2&B+qP˭NnZq1[֌,u*HbZWĶ-mNhێh"+3LZsKǁ[T$Ѧ&T[:~3f 6}cvrʘl*1Xו)%]!Vf۵)l$oWLc>mn[2ätJٍt֑G&~ު0~yvr-OI$Οd,X=mn\: V9'Q7VkuҪFS6bOdՑ}QQڥ5}B ʂ~Y[Uԝ[muye^X'1mkҪ +;Ae^Q[Ǝ[U]d ?numDȨݵ lDAҊmDhW]ckQU~fp&ʜU[iߘjZM0ߵQk;n>V0حFDqfa3dwګvV ?0 ?0 /1<0zz阷o1]GOndh8{;P+ -0`uc1,sc4 <3ڱ S1?Ν#t~֙ݍ;f8tf#< h hH||M,~6pn񯅙wg6nZmeyY|O n0oŤ}qѬ1+Ac2 WhX`R>۵[cѬSfx6+eYӲ]wg(mTwp]׻OkyEo0XscdRK1. R'9&E'w:-Mn<BuIiRS쁍'&Wc;ݿKzfAbd<]A.O7Tw׺r(rbBkF`s^wC;ΐ6+ Wlj .I9^z5^R=ej0]M0bKw "hgh` Lat)g;ݙB m\GGOs@ EqS6G K#IEII0oQICa?KDV`к^=:˕4ap] d ַG 1 V ִ[5%6C2 3jy)_\,YqҔh4@pL<=ғt\LP,( z5bL:{+2h6_LqWzF|Oϖ_)ҏtFK"҄sYMx1(pnۢM T~-P883LUu~ O5{uDYE,E+i8ì7o~)Zk1Xr/wwh i^ݼr_e!bGQt!yKy~]d8N5fBGKdvj]܅B٠y!an^nʍ `Jpe `9qo̍H$v`hyʗg`b5OUb]SH wwȼSBFЮviM+E |,IE4'}]U<9Yyԏ| x \$=쾹乛o(陦k1Y! =X<]y-!H/ “ѱGa$as4+}!#YF2CRIy@Czv BNSe?v~} +5m$x ؋BiH/JzWQ4%+˨)#n9J (dievMl/r $01@,“\2,dER*zIO&rH$ vN"TFz:i%rtTn wF4@>cš(Kc9}N Y[_K{%{K1f$Y@g8B._[-tr׿iqs H I( +O g2y^W^|Y\nj$G'V8 u7KB2VjWn6`mRο$7!RXLR.$3NC$"w,..se>I<9T!)D$@2}ebY#I)]ru~" LJFYsE #g/^=x@EnsCϢ L/xY俤{"Jn([K؆&' P]Ak dʜkN@m)Z$B_\_ +e">)YrHAQ/zmUD?|f^.Sďq-P'DUOOk<<T^{FnbgY>3?r(qDaj:FWWڵ0Rܛ@e'y~_t2aH:/s@y=#;!E;Jx%e0eLLÃWC!yj!_r4hvNxHQ]Rԗc9UL@^4z`m*bVCP*J)KEkD6t>@Y)){0]2pNUS %I,obm>z ( j B hˋ#p%0$ԧ^" )K-؜؟ +\~C}*mAtz=ix5Z5ă`"uy9W~-b6SSSAJd$CMh'HngGp ]W bFglfJls|󺠵xFڴ'^nN Ri[J#V-$C.d/PX.q/v B@s_(?۵><8ʣ1~A)7ԋ)d3H?V^+_+B,WMЅ9*6Jک9j8? 'zuD_ζ#|Pbz;ǡT]l{P3L95(#* B(]m<\d1`{B  xgoi8uzo9;t!P!Dۣw6  1EJM0;ɱ72(A<јPϤ0Ak.Cyԫ q}q_ZHk{ۊ b0`C>3rL)d`(B]g`/[1ȠN-psjqV6asoPyԐyXݎـBR\ȰAn2|RC)фHQI `i7*0$LpC gGԜmcq^4xY5PW琉|BS C*iT#a[jTCtx6lZ^wCs;oyhTnv:J⊝x}Eʔ`10ܐ$ I2mPpNrjmV{&?sV{_ E? : 0(SC0eAd( gKԦujyky[:NYoku4\x@y='B_ ^ ;:$&kz Jn׭ohzyN7;ZMo*m-n!O}8O(&cuyo-2.1.0/data/pics/bxBall48.xpm.gz0000644000175000017500000000313210361553650014011 00000000000000b=bxBall48.xpmmSH)*duRwqAAY:ez& IۭJo5Ig lBi۳zr.Tv ?D_ rnM=D>t~w]AO!-`DAje"M"U!eA$ lt.`Q rHt^'rF1v$%wVEA\QMr0 E3HWEuxו=ґ}%#"y"ڄQYQ%]#RDW|&YX¢FHbI TU!2H^i %U¨$p5v u-xbņi6[@Zd=>U'rȪ0)cϗFށ+^lQ.bx R5lA\P^Ep%^,G]4lGsqhb:gWam<]*O EKŰZKaΏDZ6xx&V1H͑%*-°D@D+KyHGyQ_M"$1P3ϳ@`ucWWyb8UNS+I,#0Np>bWqJ`SD9=>>~\ cWb3A'" !FB.f1beQ_#{;Y|wvc,U\}̸1{zzՉو 2U3v6֞|vWݹp?B٨Vc@M_A"c=Xf$Q}zAtFӝWt>}Wr\ANr0F3fp,h\1FgwF,_1.hvB rI`d::@ѣ 0SL7`lN!Vu0&bf2`vW3cs퐬ͨoS^I c4;U zgyTfĞaQw-c;ń~caJj\'tq !qGqa$ޘlS"F۹'hi|=T@G\f9H~D~0!!=F7[ K<ړJe7xLu,.|` rev|{NwwFF0p0⽦4^b..i@k)?R\]\v^RWE~Y#cd12?-vn*cuyo-2.1.0/data/pics/mbmUnunterscheidbar.xpm.gz0000644000175000017500000000374511646353250016445 00000000000000kSHϯhGk" "/8::߾9/BIGUxNߒfv7qwdcWWĺ>KQ,aOk %4a P_ 30@KP> Y&@ ip H Y#AmBJ:aAK{T%`/1YQ9OxJ-`&aiP/e0  R]0" 5a4n(sP7:__{T ,]_o~vz#/?|'!!?ihA9~wiĥ!? x@3p:s.& ΄us^yC8Vq[,VcA}([ѽRphjaMp휔Ug+21op^e*ۻ;0=vuWeB~}z)޶T26W%΃՝։0=.:[-( RJ=ab=7j;;uH3[JJe=!$}viO|%sFRZt KZseaܬI y%?`+G1%/m?iEăɯ :HF[%ÒI%B #-Dqk;l/-LyN 'hF uX[y_rܒKƜ1egwmcߘ,9A\we&?-srXu.ƭk}:ydĽnKnq~+(_op[=;qU K_u5莪9Juk]U9qpnU{|]'kA|b,ڦ8woT<7{XEۭI>1/gE1K|6 ǜ[c~?>dm+Y-?ZLL(۟M_ l*3r&}V/8<4ǯQzk(ԥ(zya7KBozU:ߝNҝ(zWfk=wQ]rP>h낊kD8^O?<c۟X-0'V =t գyb1g?^,,G=~԰ௌ1,Mwn B/@nA|o2ȞV q-5}&"Rp 2jsDž n^<[hqy0"cy0z3̓?bNt_ z%cq2/UhȨ!M7:-:[:uAy0U#@[/Q砸TztP(B%F' oՔ^B)]N(R}l%бCz8)C8[BRu(n&b+?urVcuyo-2.1.0/data/pics/mdStein02.xpm.gz0000644000175000017500000001233412412223267014177 00000000000000ZkwƵ_!DxDI,`RıZ74NME={\u?udK8} N/ǟכ/};;?9}Ý;Gh~t.30<>;>z`0L9<9 Oc[xaó e'g.ON>xdaΡ1b89/V<{(? c'r9/> C7abr<Ѕ+Hz3/ƴ'\&4<;7 \ sAy- /uy÷ř=' )]O;iА~PT|r>~`BNiår$giW\BPUhde洍ЈqW\dԋ?-̹^+ JA.  5p}2O=[ T5?1cp={ 1cp=.ȁ0n6*=\tR ]Ȇ{Eqe+KW䱄&3e@D&KdCht TGW$ٔ#A x$p<z%.d=<ݣbi'ԙKZ]̈ \JsB֖#DY8eCLIܶIF^oB+X<~k$ e.&J&%\Rrb ?gTiJ J=rVC"d.H9+d2MH[!m5sc$=|~ S).Y˫PN]4y~UIZl+މXIPO\?Uwb4ym :ZV rHl0GXg6/qf1sH/jqJ+%EZŴD,seZybCOCKpD ȷj;!f(ZB rk7ޜK{ƨ6(tѡB(aQ!$Ċ!e؞t1t=gkNSd]T >eY_21@6Crܣ Yk̠nkS+ 'IaZ+Ǡ'|hZ/E}>$! 3HPayS ،(/A+ ݴn&- 2x&!tE,J_t&._Qpƌ\~b6  KӖ. < p@9 TA0_6]}  CWv1p7m:, :B}!'gE90e)@efG4w4o:+ݾYݒ5Qb`wb 쳇6(7Pct ~R73b6!}ӃAMEn $11T<(4? DLUM!1!xa@hWㄦKVRgU r.Б/ri<MNZlލJҀ' C a`f5@2YuwAc)Ctp}/:$ ,H !3Qy<͡ ;j=™ ɇ.#)`Sq.H!v)U"< i{Ak3.Ң%;*^!oVQ!Z?RDYDG@x08KoMAǰlEL(Ή- qftcGr !Jވ.@K*+&A䳇3sw#MgYϭhGYSz[H !!+.b_J٬8͐ψ]t``h[끐?( m[a@|-ne^ڤ`!C 1Dӂ8̠A&E' ؿCi$a:ظQ[zUW mZ!͝Z8~}5kvO MPok_S]2T<sgU= P x#Wꏯ$V{0d-,z-h q/odNlbD`gZ ׳E&bǥSă\*T%9HZq"q./@XQA_2Rt6S:[\>7 ol:gD[tNMGcxrgq`%,D)zz 4YVzJL6> ng(~Pn;XtY%R@b+*H,xia:1RnQ^}/mR0JF}ף(O3J7PJM! rXCĩ$ʰ0Y 4ogY5>JK3eND(q \4kV;YJ =B1hB`N<f[9(O#yu5J  +OΔ*M';2J/W{*-j[P'A*־lTeEbM8;Z=3?ϭGZhaF¬s)yA66ګ}8a & XjHUMQ K4 $"І VEڎ=tMɑr%2a?b7صCN\ei7]EYYKB}G* []dTl˩B~+X7MÀ5Mq[Ypa؈s7е*(?CTy}b(ấ2rO`ƾD!y32w4rk&ҬC]aQa½R$CcWZuZu?cCm.%,r01$S w;}וJ%Yߨ" FH6kO5QFC`ߠ۾)2وך67nOM@e(ܬ7/ϧ;0B Lt޿X13|̎ qP; N. ȁW#o q_-k.6u-zkG{Dbh%]B\;);UuRk=JRe(}y~H#RvUGC$8ĊL7MT _enaG5԰}J(6͉"ըz- `/p H[w*Zw"T!ٔ2)c('%0QcXUW@8@E˃OZ<a3E(d4dv%<,_}ït7Z.G/^&OZBI蛉 A<1O=~<>V4RLC96YW߾W\uh|`zes/zT>9!1"kfyG.G)𾽰.MGUd7q")'/>=rAp,EID3]!*X)7ˋ9%jS4q[T99Mx&"!"0-< UW||q|nz`<=Z{@!ѝ1P(2EwoJK&@-V=0T: 6^'<(㯣}`G󹅿-r1Ikމѳ|fP bp(/?q)@&֝;KSU80g @#>~_޼Gcuyo-2.1.0/data/pics/ibkWolkig.xpm.gz0000644000175000017500000002134010403644574014357 00000000000000iW϶_hN@ DEFdȤ"v#羸k]eI ٻ$C?}?y[4}:9:!^JՃ۫h:_jTjWh[)\^kn=bՄ'zZ4;n=Zj^\/׊ XDs^nTCjhi\o5&[M>Bhu`lq}^T0>^k5^On}_^lzꋷzZ3U}|QkL>QmwQWOZnmA~3~A7G7UX@ZZQEjV8>^j+gՙi[(Oz9_E=cZz} ?뵉w^m+~2_NߩP|JR6۵ <'] SXtjm؞/RE^gz pNR_.?ba?YopќD}%>$7^oIP7^.JDi"~dխQ4uU'b lǫRo+6(l_'6;,sf%X^ߗ=^ƚz czoJ5+KVu:%7{SNt5X_EV ۝zɭ+v 7p{;cjlJgx>=qÿ?Zg Y-H/c(~9hT#8f͘ǧazL#qh`oz(x2GZx ^[Տ yR?D ~9771M&L@0:@O C6r;H8;aָٺ~ek9q40%$X7ߪw1mz3}z" G}<'>kX@wSHgJDAx'6WA/{ȁ_+G|$9%d0Dl.gP`moU;'v_] HQR}2 '04y޿I\Lj \>GBvhzLP J+C/ \Q./mO{%g҆ҜFiZ5zpӐZxf R2 AUtp@c4KOty Pi\E@ L[NM{ֵ"dkA|{@ۀU6+ 4a`gϣ[l/Q 8`@XYcH3>ȉ BuQPv@h 5zɸ!R#\cxW {ڏt v:~ cMQ}z$KW13<4?TCr#) &r@a(ZAB P80z2cR@QI EC dZU?<7Jz/EAR:-} t3cQ>A+2"zDۃ :J2罋B0UsQI /L'86NȵCj%P6 se3v1UP"}g*#S}pg~29H~bЗDžCuAvBZ>dlx:HrpN @1e`'G;i3r{ElAdEy4/퉟ƍtl= zlAHu{)KoJ0jh.>!@[:*lz/ zb7<\('0Jlp0-&{"hMaP{Pcaqr|TSfmg\`AMRtӯspTP`\>'8-s/ 507.(e3d{^.yY 0:908"&&O8!|7Ղ_5kWV& 9"yYWDq Z~S-4^0^GXaz`E%J3 B<ƇPH̐ ѱ![BMaxbzߒO Ha{Y"%VDF!9.}țqTo t;qXdkqÙBQr0D.xA xv>D (>  |d&Ѭϗ:" AHW>ʦ k7fu{)5qLfH}4~͐`O(qdnhLH `€8A jIgn$ac'Ag8EA89a1C;1,K ,G\ە<Q}jg <*>1)!m+yrg^.)|VKPQp%Q E|x/e=H Dq42Ha0«Ò3>9 ߝq 9§P!' J9}> "Tw zluFj.eld"m'>)zn>j|1REP Ǟ mF.gYْDQ'[&PF!26M-x7 ` : |`dQ{ƍB{8N=N(j|P4^j^|pFN@ɌBΣNO0k[A6g >fp?vlH5'X0L3x^u18ý/D8C7vq!etEWqϒ xhZU={Z#07d%:7ʓ j[#E{٠>pN}rpp U!Ϩa!^r%8DtcpQXZ pEN@7 |0#> X ~ oC$9$+Bw`M@z:(Lc埃Գ\㴌삼x|3!{||&@?72pNp~J6Sr23.8N4gzJk ߁ʹtA-%: i\pn 1Y 341#CΠ*Ȼ}7`sQ ~Z~pKs0\p fc%7RwQhEtcRweXy8·DpoGF%qx0z0f)Q8L Q8'AZ=FGX/f5Gdi\\Zp'3`'')1(`s@ꂻ j`kk*1 nS]p-אZ oc:&όrgUʠ U]o4x AE̓ GtA=3d,{>3pAX0KB}`9o &~jpP= D&sּ ώl=΅o~dp Hykqh=% uC0Ie`P`s`\#1?\H GпI]~Sv .`fhфP SxAAƄy m|cH?t5H}m9"&ЉQ͈kI q3%nNMV>`/ 1%-$p-T+QRx?.h>&NȦ9p i~~6V ~б4%5Pk`p}x /.aτ˸!1ߤ#|DLܤNIV3pX_{pWҢNK b Z`-9B xTM |( /@kh@]JvBoqWax;)?O|!:';_B4i0WT:GIkA 38gU`\#ǏL87 \^Jc﨟It<ݳ R܆啡0`>)@?'^ ?k;Ou@=ാc_,J&-hu1 D$€9Wm;XJ`| prn.H:f-ZŊR&H(:㦟gZLoGc6A>V{92z]Z\WEx V.:wD ,0E1 *3y11[*I}#Hr mU fd́9 İܲF< z}Zη^v[⁗a \As6 kV M*#XG`5`0'hHHx{aPrsp֓Na|W@x]c&XJ!tp$'1ln5NqW@g2x ;q,XWwoSgo܌-aOp"# ;Ώ%XZ.us&aZJdbTZ19a]`0>Xl&x>=1NPwKf:G}" BZ=꿂咧UQRpJ&&{;%:GC"5ѺqZOvәMz*1~[źH24_iϰ-h[[ [*nGߕ! 0 + iV.(GRHwVBF)-s]Po@/x5A}н,/ѡ-"Mk:Zݡ}2~!`uJ{>4F 6c(؆#x\}`?~ouiM˔C]6Rk.ra|yi((CJȸMe[Ӆ2;TסΡveol| })$0ܫn9>x% U=jeC!q Ju} yuAZ=H G¶l֯G{ ]\ UZbKVI[/ 3x N"g]+.x.xHMd<~ `|I_#t\*=Zc :ڣ1؈xlGZa'f"ߞq[a9yơ8aEhx6uA@L_K}rt۔ vf]#F?B~<~A,6X XY{9I~=Z]Ϩi(pf9̵Hbr3ѧdߑ,A2)sEpbjI Q4'pGd9&?QHq+8,~{ʟe`hXt+8oQђhUqww?.( "rtjuz}RE6 L#ˎ8m||u]4zD#T`/#krǦ=gB6%[༰,p!5tL-`bc"5q|A{y^kKr|Kun-/>aˁL!9g^:aF`f `ZH%cЂ+pY2g%w6!NbpD+,yZxShoZf>*m޷E|{A=]osgHR{mwzew{>nW $x?K^ޢ wcb|-,fָ!;ۺgh[2oEx]Σ^wcߡ6zTweihG@I KZ|;g\~ q}>yȁxJ9ʁW1[?^q6竿7g˟u~/igwqEdoЊcus:s< K1 [tFmZe ).@^8Yt?EYR^XA{W0>j]0%@W{vk53n~>۬CRY#L7}t6])9,p>EW`kx4Gn_*3_X}"~ɽ<5%#v!N$+iDxW9olV-476*F{s浜{q4)o?wYۛ.rټcV𧤄 gqmwd})~sA4^&z^S?L r DgiK~9~3ğyM~Y8@` ;({Q>"z~ xOӅ`=`?4w WoBo/Pz0? \>퟿1~?P>=m/tcu,;O6WC{} o~? p)1@yF1~^d_IO'dc㙉>^]׶Q7>R^ ꕂ~;*?ʀ?^w># Ow7]?y?d/o Nwx9D JJG=&O&I:!Tk1ajbSǟ# 1t~¹2;?@>Oھ3ힴ=r~ RdKK|S%*it;iTcoE Oo*Ocι:/jWYL+`+vXx:F ,tL^8u%9QR!V]:FFms%ljƑFhXfBH|bUI5}ǛƩH~Ԉ}҈4,X&X= (ZsX;F=mz0u=@G;f1V~h@5ԐCfENDj0@N;ïctfMzT?L3vs3I؜*DjV 7cq„dr#"/!/9yf{VBb;8&o#LlϟUt +dsE$gV 9Bɭ \'`(^kC Y)\k[7ZPYP${ˠ?g@X&(O`# 3uPx ` @5_A/aEPXg+ V,&(@@"b0 ٣qo ;L빚>C+·S q&8ȭZrH!an}ɘ#q:j'p9ڑ`d9Le-yɼM]oǵð^SoT*՗ڣpPϏhǡSu}(f9l9N=O5uo/Gp.SGlWQ]y~= @Ib /G\ U=)7z'RDQ kCQ+ G3Fz'=(q:uy}@o-BW C׺|^ԗLjYtg‘uY?iM^eHSJ^/c?d;X@"A+8Y-Y=9o^77eL#ǻefyx#Lc*7Vd bңcEtk<-]$G˅B"3y7p1j?1u݌b1Cr{~a; FHGlB<D=i9M}23@jyO]5C0zOK׺|Wߴ[f- y_Y m0M{0EzktӢu?Xu\AgpDڕ@/br|Ak/~SBg?8CpÏo^?G3p?bȾ;F`z!Lj*J$Qpk&p{ʮ0zդkbu̇[p&L$ݹ⢓>2Q?'Dx|R᠚tP*%{alaVB'F {i8zPsbC!@ e\l\=ϝY_3g/Ǽݺ:7B +~ZƖaXTO(6NWQjɞ`(;p ,mzˤ⁵I=.qR#/|b8Z'<E^_>b1C_aryH06u0Ս@6S(\2lΓD ''*zPD.âj5eKo-yIQ$>?銢&'#_d={/b1C!s(i[{9vsX) aVQzpx 2́;[w$KPY5q|j ٢& 4+ ]pzst|(2;^ >ݒyzn{fzw,!ͻĪcawM>⠋g.'ܽ15~{ Baߩ߫~Aw6U'DhZV{\e#d9 tIJ3Cp38O} &ЈY$~fSY s[z˲c)UkNbStNbٷhd{yɲk˾K5u?j,+5ӿl %q uk>I\ |,p{g 5A$o$xC|F]ۯ} p]fm*_? 5K<R22B!7Y3@V+- =AB9h&kƫ+ VcX'ِ9ˢWra;jzRu0l1 f#莁d83n O nyAՂ*0"On"ہUj= }E6M:(&).Qv[';^B˩ox7c1C!fv^"s7 :LxVmw^ LvfW4DQqʢ2i+XL+~˺͡=>3Xax"#m+5C;;3G lq0 /X^%>|JXwcgx_`q/Փ=u/=a{C5 T ٽ/]pOw>wŲz_8.|}V+DAc1t.*~nMC of"B-+iı6CeEM1m=z+N%YD[v[±EdY(]k evy"znSom]ķkk0pY@?('{s9Цhcuyo-2.1.0/data/pics/ithBlauH.xpm.gz0000755000175000017500000000065611101102051014116 00000000000000LGMK@W JH)hբ97Mf&Zp>}nfDX Dź|9ΒmKx4'AG9\??iUf|XifijR:ԡuhk -7.`QG3S؋Y6I'-`ցOHa ] uŞæqda$9\ZsV8hWCJ-(`RXڎsP HxCd{ˈ:w؉y0Wmج%si;o~?ڸ%s*HƼ_c|CڡgKг!%l=[Ic/@0߿%}[﯀YGl?bXp؝,8>򷓀+E zcuyo-2.1.0/data/pics/mdFels03.xpm.gz0000644000175000017500000000756212412223257014015 00000000000000Y]w}ϯDS]c!yDщS7nXM]YHږ]/dC_ݙ;_~۽H}vzދދ^=w/O]}y{>{gXڋA,7AzF^~yAXE~y $ʋA,'%O1Ve'X3/‡I={xw>Uj:$^Kᩞ^I߻ bS/*Hp@ ///;MvUl9X^L8Y4.pa4<<2jn^,//NY2|8fU\n[Up,˺<̋A,e@e: >Z=⬜fṏao;KV$ V?T;$͒̓_t'^[04wj?8mf ϝCUx/^*@Z/V_^g'Yw_AA.ς8^[w,0 Mp:" Xˋk/r bUqσO4U <2ܝVye u4)M < w {D YN T0@xyˋ_{ C߽:{?_; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; c1(ܻk{kt zޭO׬luqD u{s'h0٥[}w;1]oNzm,q-bsbhە[==YoM{ZOp:Yͻ͗cXf 6+ӝp[{Y݇{^>Kw_n%m`]]m6lz6SglN϶p4w8zeƵGAӕVsv''Hm3_߷sqdm \Ut Z[Ͷ %9nj[m\Kqa6ΦYVLbo0GֺPUՐFU[7QQq  %y,LLAC!DcjXBf0TF+a;cmAKQIH3$"c[فHy;9X*)p`㈏5LVv0Qq*nSeh,8EE%tU`X BIݾ1sAk#JKKm0xAv B5[O4K ġ=]@AsG>PHCx\Y5Z 1Z(F(4"7/%ԣ(B&u)cP%ҒQdq e*sD24:XEZq! -`H &3Y8'E-=TȬƲJ%-"$Sz(RrG0$hx >(*AN#@C1ReL_ rV )aV$hֽՏ!0JUX)U3CF7G!vE&B$h<%4R%Y ` c9s@?W<B'?pm[c_IF勷Lјb)+ǂYp~8b mi\. N2ik,Z.LJb`RdնF/hbZ9}"ԁ<@ f?ʳVh%ZbTmbJ&G>Ѐ 2?4hcH+Qa6#fT-\*9=W(eUB""cFpLԑ$x{## z.zS<sMN۳w/]q> I ;J4$=sR/=(jSns230.2D46cCLG8t@ *̡jyl']xze B?M1h* 6ǽ^ KJ0@s"b1Ճi_IPȧUf{V/gr,`pęA5f`3g@3_x2&5\tUP%GAF xbicY]KtMBӠ$(0p"E"ں|wR H@َc2˵e3`VI x$Ő&b h`rA)|mŠadqXbR1ff}G2FoY?Gc %ܤlZ*KSYb0ͅWW)Yb0h@`FcU)MA 8p"SVSr} F‹1]JH ^8ֺȹTԾقn}Z tċY(|jUf1Ҥ,-|A̾FDTF>EQ;EQTriAv_w얆> (lP4HI*ߴ޼FbEΤ(% _ k"0s&)!=&_οU>.ODՀR(Y~>XF }T3p'QNۦ$4qmV)RQdHaM4r6qƿJ ,b[ѵo +0;BRٰ3H96*MYZc/є-4Sz3[`Z!:bYިR6:`E! H54$fp`uH?& Y5<4B`Ij!AJU*2]z˛=rX<1{aat9^ |VɵL*JIܘ& J~SCm1vR:*{Mo,XkĿRO@xS>B;͒Ӄa±McQR#1^Y?_ &c¬ ?| `ydǢj3Fq T-U(ݍEò5b1TNA`˂'pӏc [g2slldo|Gg1.@XìN('Yȶ hF2WM}}v(M)g3.ndӨH+oBa*yZ=fqeMpE^эz 2=Y7&/egYo^;;(y5 mHY(8$ܔvy6p- 76%aT BJC<1,6v *OPL^6yzᇛђJ^a~w1Ԕ~k@)_PO@ cot=G1 ZKؐNHOO>/rCh0&&PhR55Q{TX( o6],ye*_ O55:5}T06)2G`*U ?N}" Q|;r}4.ȡaCܦT Hs{b~~ՓQi==!oׯ>y#uGcuyo-2.1.0/data/pics/bxLok80.xpm.gz0000644000175000017500000000422410361553650013663 00000000000000b=bxLok80.xpmSR lJ &x[wxi6 9ggf:Jse馎 h=>u&z~cszwFO.r@г62be .=YJSϗ1kQ -cɂQވR9>e;`6}=L#hy(>jBW}uD%)" y)ds;(τ,t!;<BO Km>,ed$[OPZYv>γ3˱b+9 cnd!^^ zRfȀ H~.w%@> &tS6HǸn!77AH \Fί`b{| !ⵑ W^6YhkM (Sɴ9yLT-ʈ*\K/14k̚9;1|7FFl;>źQT#ܸ:8He0Ukeav*bi ?2e-tËf LU@[f602`'^Z?^4ǏOX?8>88-q^,Iè/㌵Vu6=W^XݧIcjdC {<ߣD5'MyWT8\ajwPWggI;Pdr=?O>jON>nB[8WNϪADȇwV7U wصz٬j D0G d¬Yg X'C9-dփq%2V]Q _|{30\=iM~5 ShVlj|zp`2a5r5fW3zo?-x?g4ZZV对Y@]fo;yaʵ-qn6b{W(oq50"/1p6:`+۬7YE{0hvՁLӈfe{SCNixwm3AU1t-X 6bop{WJo_;% C.j6{ ڏ4-8 "8pdXKvМ(,H;TϷ4*\=гw3p63X?,Ks2GsGM-)iwԑP;ffYY@*cuyo-2.1.0/data/pics/inOrangeNasen.xpm.gz0000644000175000017500000000335207550521113015157 00000000000000<inOrangeNasen.xpmOkGѧ6L  1BB8>D Ly{,+:dXUۙ~o{]M?too߮MWۻ]߽}}׿_樂/.t鳛wǿϿ<ǗW^af 'l}a hVTtc3(BTsU@1J8 7 61|, "QA"D)ۯqYڷ0a[O -.k8aP}/ a}< pʀ5HGQ~k15ͺ:金eo}Tɋ{JJ Zr-c_x'ðή$~&Jc.kͦ3N=W[힊`sjK&;IAyΰڿC:kHم|5\ՅzW\&[GHKw 0Dkpo!dy;2 0l|м &K[f#+zbAerüg"C I{s֩AuԳU!e@Tee?l}J0Mڔ*nsz'BN,0c^ϋ)/")qy釾adil"TC/pp/iQnfqQGg\pAo%%UIy_&{nr &o'g㋏[/'gw/?I.'Gޝ%SSdn2>It:~GG䰟Ü^l/gŰ~vE|pB~+e9u{jS {b8ɇp\> ŵΤ>SRgZ O.wIܹޜo#'2{EIwymԞ|PGQbؕүpO}+>b8tfpJ :i5upF gyYuґvAVLxQ g&go꧛;]R;3%.;R$LwWfM5TX*y=G3) i7sSckᆼޒes#w'G û/ܑSrW>.dW6\[=PťT3bK rg[V$ߗRշ[6&s_)S mlTwI.OM/ow;ZZt`[ϋ=1\ʇopq)å|/+Ŝ:JVù RW(5WS\4b ? Q>7}I:SrbY1ϬT#jUTc0P?B1|.՘̪SRv2gԯ}{$)JB K5:#OpA|Ԫ+>b8/Hz{#|g=4Ix^T ﮵d\{*sHf¦ˏuAc9t5˲Ԇկb m0Ou||ٱmHFҦQ:!Ǩ@fWhV:"9$8weP.r< ԇ#Cy "HQ#bC|VHA:Vt\y{!\Z?% u'ѥC=0a/Iv|:PqEz~þm@IKU YHmJ{g8Hg>#]"-$w-EmrB/-sD:f~͇k_)~&)Ou)U}(P!^m/S{!))P{Eӽ} roqzF枱F̳'gݜ*=^~w71CX7ЂCĘ71/^n/^F;OG5`4r~X9KC+VX/ʁ#ujpj)*qH5!85-xkڢF8BF!vV ]kgΡA ֚ꆫ@מ:jhA5nZfd-6QSg؇LVWۗY/.?\*HBo@GNԆN=zܑM6\j Ҧ *搜9\ϧ HeFEHR)6djIZGG7q. g^ 1gD]\\aήɪ0rR8θsp qpR]v- AR`s h.Nڟs h'%",(]9(6&9(河@A8O|F Bcum0^$2A8ůs-a+ "(pd9"r(dp*?JjCg|ltsh35?d:e=S҆+mbG$w8eN85mķXT>AB>@ߵDRN苲%xΙH4q5|6WJjvq}PECɍ%LJ*A 4$ NAe{h @[uolN(Ƚ}+=c{gEOϺ9gv_pcŞ/bO3WpK3Z?ċz.qbh9r4y:Z +WqYqXWܱ_G.bA,e8_j5NmFmQ#fF ]3P bkSWCZd AZ B{PS{F?l=pΫի>WW__auGbkmҖrT @N-l*uC Ǧ+`^T񂲩dq z׏NsY'.rJC#eSP+ pÖQ)m"P'lj4]aծW@f'aۮ׫zy.H@.dWa Y,xT}E\\jՖ}#1q",x?8ͮ,NW)YqpR@kJqb '+@Y*Piv .pںab3Hd0;Šhݟx͹+:Om(Rۦ#?-}ݐ.t-<"6rY{d@ͦ'V{ \Z?f{U)N``8+sx[++/L|׎/hW6VBJ-bղ||+@ߵDRN葲%xΙHsY3H?z%q׾RMRx?U}(P!^m/S{!Ɡ))P*>bQ|g| Y7 n̡E)cX` c`Bx1]o0c9.^l܀-^F;OG5`4r~X9K=+ ;KrV:L?Я"Մ ԴCڢF8BF!tΜC [3ynbkO]jhA*-50 Zl!@M9&Wq/p3gw.nnn>pqAzEPf6%O`36C4'p$WMbmVqdq ـ˦t*1FʦL5*0?7*e6 \M-."P3vvYEzU0 E&jmn>>s".`ww]K͇_1K*˾ّh5KNk9Kt3sbrp8@C\PfW_9(B"b .4@hc&+6D"0}oEó2HцB*ppD4PnȓQ#b#5ynxRlpqrou{̃- L'v^+p&qtkGfS޻aCIOU YMn߈X]Hh뇿R]eK3h r]~͇k_)~&)<\ՇKfCܽ@C^&'kf{QFto1(3V׈yVsyf7P"N|{1,o0cpe%K3Zr3&] hrht\VL-rXc=+9ĪE@"Մ ԴTqjs 0j15R5^}Z5 t9f]he@מBЂ kajAdCrdM3^aoݽ@7&|&.I/ *Å}{ gx¦Rz_f5l*0 pU읣r(jb lJCoj$lj|$<1(>?]v?mj7Ą]r( vb6; E ' vjʞw".Pw# Z5qݾa8.Y*P1A.pR}ٷ;`qp8@&(Yqp8 ~ȁPf1K t . f@; VV@hc+6x[Iqy- Ք0̎A!z{'+v_xuC@GF.ܮם>=hjSeCAIA:֏ؔ^'0nZy9xM2X0]9xMzo%6%g8Hg]Hh뇿RNhWAB>CFwT-$V)'tK"WƒC{ NAe{h @NuolN(Ƚ}+=c{gEOϺ9gv_pcŞ/bO3WpK3Z?ċz.qbh9r4y:Z +WqYqXWܱ_Gb" RT|jBpjZ89Eq)/SCZ5 t9f]heir&i=u?A2 k5 Ț_gĽb}9{_pc?;b L c`Bx1]o0c9.^l܀-^F;OG5`4r~X9ׁ~m VX/ʁ#sUSKQE Ai[@`5bj 0jLеjZ;s%l њ X=u?A2 k5 Ț..\cuyo-2.1.0/data/pics/mbaBand5.xpm0000644000175000017500000001034111672457345013435 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #7777FF", "D c #6F6FEE", "E c #7777FF", "F c #6666DD", "G c #5E5ECC", "H c #6666DD", "I c #7777FF", "J c #6F6FEE", "K c #7777FF", "L c #5555BB", "M c #4D4DAA", "N c #5555BB", "O c #444499", "P c #3C3C88", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/mmGelb.xpm0000644000175000017500000002275711672457347013247 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "64 128 9 1", " c None", "# c #000000", ". c #e0e060", "1 c #ffff80", "2 c #f0e060", "3 c #e0f040", "4 c #ffd070", "5 c #ffff60", "6 c #d0ff50", " ", " ## ## ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #...# #...# ", " #...# #...# ", " #.# #.# ", " #.# #.# ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ## ", " ## ##..## ## ", " #. ...... .# ", " # ##..## # ", " ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " #.# #.# ", " ## ## ", " ", " ", " ", " ", " #.# #.# ", " #.# #.# ", " #.# ## #.# ", " #.# #33# #..# ", " #.# #333#333# ", " #.# ## #3333333# ", " #.# #11# ## #3333333# ", " #.##1111# #22# #333333333# ", " #111111# #222#2233333333# ", " #111111# ##2222233333333# ", " #111111# #22222233333333## ", " #1111111.## #222222223333333..### ", " #####1111111##..### #..2222222##33333##...#### ", " ####.....111111# ##...### ..##222222# #333# ###.... ", " ....#####11111# ###... .# #22222# #...## #### ", " #### #111# ### # #22222# ##...## ", " #.# #22222# ##...## ", " #.# #2222.# ##...# ", " #.# #..##..# ##.# ", " #.# #.# #..# # ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# #.# ", " #.# #.# #..# ", " #.# #.# ## ", " #.# #.# ", " ", " ", " ", " # ", " #.# ## ", " #..# #44# ", " #..# #44# #.# ## ", " #..#4444#..# #66# ### ", " #.444444.# #66# ##..# ", " #444444# #66#..## ", " #44444# ##666.## ", " #44444# ##..666# ", " #4444# ##..##6666# ", " #44444# #..## #666# ", " #44444# ### #666# ", " #..444# #66666# ", " #..#..# ## #.666.# ", " #.##..# #55# #..##.# ", " #..##..# #55# #.# #..# ", " ..# #######5555# #.## #..# ", " .# #.....55555####..# #.. ", " # ######55555..#.## ## ", " #.# #55555###.# ", " #.# #5555# #.# ", " ## #5555# ## ", " #.555# ", " ##..##.# ", " ##..## #.# ", " #..## #.# ", " ## #.# ", " #.# ", " #.# ", " ", " ", " "}; cuyo-2.1.0/data/pics/ivFeuer5.xpm.gz0000644000175000017500000000536107550521116014127 00000000000000<ivFeuer5.xpm[[|~ŠyS %1B0B&y6>IVSۗg/ڟgw?/˿翴ߵ>{7_E{Ϟ_n?cWy4||_~O;~˯qaC`g!AfCf ڽ5x Y1,$; &"c3"Wc Xe$䊳찙?Cb'!LO @\!Owq?$#r,l X0 "1$aLuE#m MEffCi!AH" ť2&O鋆,;\Z7!-i_1&!%$ubL"-`$,OYumݔ+\`WbQb@HZ5xI]0Ym,w*u^nnU?W$Hq%/ y5Of6n!&/2 KoV0zdj *C|]zb$qOzZpYdxӤ/OnO7+lLhb9<dւL k368&~1fM~'Q# İCuKn0Vs 蚲zl:Fp#!{ H`Xdf@ E; X7G1C c?} cmIPH5]ǯE6Z0=FU1}?Yn31tXb g^7|@ 1q3jn"ZU6u(?10n*Jd墮@Bl}ŠV{Ee}X#TA(M[!q{"@ A &_j`H]참(Fc~BkHm_HjDHZNO;En0V`T4[1s ]. Ĥ?`3F]*Z&hx BN7Xm9֑"R74)W)k\r)t)%\ oJTހH!P̂haʺ(@/wY؜SwruAY7z03Ep;p|Ly{CixXV.!v,ks9lP4`E=m/9EAڭ|=B}8{A6i+:$|RljUCQL2xJ nwF04*ŏ&ճ#x8A.Ѯ@ہ(1tWŖz$֠ZZ!cR$M6&XtU:!;bĤQU ~Cjz "[y%ʑ$tzY:;fb j+.AϩB/6d(0A (6>rqr0t7.+lJMiv}IS $WYF }:Z>6?QrC sil`CԹ@!7T76Y|688Hgqh0 hNh<}0FV<޳/"d-_'VN W< s^u~jνzfa=S;LUgӿ>;EN^V~*J_Tzg/jcƸe$%K^"vy/ m:/ .{B$Vʮ*uEۭT gC.ͪHĉ?y~<ϻGwo_?~>C0Wyu^+(\^oJ2]0:6 JVu$$ޢQ6fS(suZge2DWq[+m*^Ƕͬ6FIC5QپeUUufGM2rDVmS5(ηC%YFMfS9KF=׋ } a)v(CAuudȱ@Ruo+$2u(.tRR D/swF!:>,d,T' Eap11e쌁) F 4qBOM 0q{lgL`[?J¤(2Nbh`m阔hRgFz@Lg:fDJp2m pܨs6GaՅ(ɦ92\r wK@2y=D&FSi }Pi6!ٻDc !x7#qC9|HC3FCB4mX2= t֚xR?pG4,:}W+>@\܃}ރ|Ox%cuyo-2.1.0/data/pics/mkaFuenfeckRahmen.xpm.gz0000644000175000017500000000473710517212246016013 00000000000000]YOH~W!ŕBIjFvvFڝeKscwk2?%wRI~&U67\|K~>߮j#EAj* 5TwQJQP}Gu3EAu գ 6STQwPPvj;+ K2RTݸT5QPuRT oP]wժ;j Zպ-T7-ǨjՍ: FjBAozQPmOjoqk([(; TO}TOeO3G}*; mT/ ~+wkDAnJToݸDw7%_F?{Ƿ#@A>& (k>Dɾ5jW`{.쪏'k;+?OK+uzK 0[e8UEb?%j )@$&1? ͭ@Sܫpdjoٍhcko!oP'[s{}njop9X\,^&볓^&;^&\^ 4'Tǁ9`qqLk$=XkMZњ_g3Aj{QnLpP648tH-ӈ&̵)[x73>iϱc|*~ #ˁ_wWrRc7~q`|faaqiI!ٮ G87/ٷQUGHSx}F;85tL[=4Os[]A!]i?:~hNvqpvz(l*kV=8¹ BR_(|׾;eO5=p(cf{KDAV|y+&<(n?4~wΧX_'5q48N9[v]#RA;oƖxsFi{㠱¡ w*hAc[ļ@}oZT`51?k-&sZp+٧=AJߡC%M,k..3ā kN`N9āknhn?ZLFBsQ`eu{XkvT6.5 '㠧a9 ["&[K+P`t)Xmm0HƘf_Y 8}e`Շ_XRp0ƴ11^`+[cI8bOK\Xpė%7,,`ȟ( CDy8'A?Qaڜ@POm?(sCAc>P*b I<6DhH'  ʟ(?k?֬n`Vm$bNXWe9Z9n(Э(2X AqSbdL !FlAX1VVhźY܏z#8D9 ?57BCPr >s4!zL 8Y )䎅r Tr)trZôr 4sC`tsC`k0O=T$>ҧı>6ʻ5wq0!@`?P_AZ_]5@05zkj) ?Xk9ZS59GڦLȻA%ku1<~Y\+XUɺC͚KV_u7D/dݿ! K7DW7yf/Yo_*dݿ!\&R)/kcQukKq;\i7Ĵ9 / Qm?KCT\R._*:hkM&C݇ؿ\xeX}T)=~(?aM?"2:Dqt0>|b)bsOi?,(2_DXǸӸX̘܄zpsubr~g9S9Xܵ0va<ֹ?Sa(49 VɁ1w~̭E5z#1s%ukMylM/_j.H8m+2ۋ%k09mL[ iMXciۼ6;3e{lcuyo-2.1.0/data/pics/dnRed3.xpm.gz0000644000175000017500000000100607550521110013536 00000000000000<dnRed3.xpmKK@W\2Yu$ZRwD]XEn&ҚG5dI8+{nh{_Os?d rq|w/Xc"7Ҿj<1LmSȘ6c<&sTy06f" P8 D1Z>JőeJҳ ZeJpg r# qg8?8A3+|56lŝP7P7€.IpF!9 !w i)@2 d(C x9OjZ5o ZC:Y j{m^KK^ӟā^rvw9@2 d(C x9OjZ5o ZC:Y r x{92 d ~0^"x{b[7€аvVC,.~/@2u}\ Bcuyo-2.1.0/data/pics/ilVogelL.xpm.gz0000644000175000017500000000340307562250351014150 00000000000000o6=gimp_temp.2234512.xpmn6S%âCAvٵ@QY Z/ }\Hx /Bd<~^>Cq~>ޜSۇ?*/??|lsrzfw7٥wZf JX_LWiwF3AM՘F9pHw9$T/xK ;3L0_3d /RȤ|q=G/JoMӴ>-^ݭu]-SU]Ϭog.X=GmB2gpwW_ !Hsn@ewawp#?DV/ ge0O} 3X;ctY}V71[zV0 5ѝE@Fnt잺 ;xz'7 Ӥ[pGtuUYl]էk[‡bxKXڦGWM04.Z`a׻a]q`+j`6~& tl=Q\ Mpޑ*#vFo]ޝ+2IKI\:M D4`x^:?Z3O3H\}>>5JK)hxz4$#[#t[IApt@ŀ 3 #ÂS(i9 cf1%5҇093Ő:|0 !s(kf2/>Y }{@Nr;l  u`6CpvixS9|0pN-b2eH"y`<5$Yΐi7N#R,1;'-_tX@ V.c(M=1 S.R;5r1y'g^^OX C paЭjKSa8= c FI&@!,1#l3:0ЌS R+ K}2cuyo-2.1.0/data/pics/ibwBlaeschen.xpm.gz0000644000175000017500000000111407550521112015007 00000000000000`~<ibwBlaeschen.xpmKK@W\ꮑ)mEq#؝R -h[PIcyۘ6"d3.^S-,d:~.͞>.ǓE2?^肾NpF'4~(AB7Iv/Ѫd8Gëʹ24AhnA Xb(CrX bH8&OjvGP'@ph*CA>̠Xedf4e 2ƀC![ zFݡWuC^k\2 90 lVCY<J́eܣqf7 $N C9`wF=`hmŠ3O? -C{ y~F?5`TY/. Qa(NnALF@T!80 âZBnleB*OV̡71X)o b E3>_aseh"C?`nޜofqUs ZBSxIm1i"Gu헖<T#h!cuyo-2.1.0/data/pics/jjFruehling3.xpm.gz0000644000175000017500000002341507550521117014770 00000000000000<jjFruehling3.xpm|}W:| gJ4N0NƊ4\:ZZ^S/bn$LM}җ;/CAcm}Yw^/]9n=/Mfj_E?+_7~_8u_Qu{Bݮ9G}A]7tg3.uݷG=3ߩ ?tfc:G}dk̸gGo mKV݁͌`x0<0ݕy0o/A}ǏO;͸6݃ ̾wp{}c~#H28uf\kh s͓{fmVsG}lt;ktO)rnַ0=,'Nסni`TQL߬gs3O4 e5kp썑7l]Wp@j=A9zm3ߣkspw̛͢?rqf~3{Í̓73j;0]G g ̸ifQn謙Bm>}k;f C#ۀ  lӃ$fܣA Qu527èg$pFc]Ѕy}fFۃFFoYom򟍬+8f~;aqR[a~ f:,~ɞOݯ?uma bvA&֗#VJ eĹAjf3 0hXBk_`;v0ot BKKٳNs%e1ٌC_d|ȢHWZKZ !xis-?`(ԑ:<\aZ+%xe ЯX5 ͊3pje*͹_n0_YCR Rr _aU!G{bV2ѫӢpO^*+I]~Y*~]US%;ݯ/opyu>Ӈ[,KV\YQ*٘{?<B^p8,m1.)c{ؿtZ_LD.i1Ż[@_UrI'4.V,0  Pv:@Y1f.*}yu#HHTfb2 [R |`n//'҆ؒ"7Kr2,H޳q"[J|뽱 <09||<R"U7 |bX6a؟=yI 5jL"L)J}űz:4Y\ `W;`x/*b15K!9~$wyqd, AZc1wa8IrY,g'0B[]%SN&j^âdi%O^ ~9SZs<@(eRX%X6\a\PC&" <~uŮN8sl1Upp-$umVKp.˸>IXISM )pTKtDG%y]6m^(l9r;Gb݁gfN+((,)[XԽ YiD 걖 "NkiU-4r$Xd ݁jPV\7] 7`Pz5\5+\/r.#D?qϭ\>P(o}%DSQZ1r$77v"rwP4^&h4ADW}k^ö*v髰^ sWĥ|DZ3`XUI օ̞ xbBGt:Eq{Ъ:ϴAfDeU<;(''J&hΩpưZUM4+,+J~6< @y[ܳku,{Us32yI,Ns+yG(k0Ru_A8{"_1 eCvʩ0 TE Պ/$ Uq $,W?Rbz[9f)ƫHXA_TUC ~]!2 nwǑC+sE5YDxXT )gep㪊]•uQ!< ߤU=>*}ǷZw2yZe0{=?2XhY2R!Ry Ԡɣ:xT(p4@VH]s^afNFu Ėw;aBahSR̡j&}+[s&)_'\.h2ƀ4Q eŴ2,8~6E}X3`mBEHAe:Y s^YhTZ G)%ZCuAcHd`2 [˘ ?Tn)'cu>TVQY>#/*b$טv0ձCe)v+*Rf]$#]EB Y* @3Ujd '&9$EP,p;Ri7  vYAk0zCȄA` 2 H a_-Z*&AcG@6J'W̺JxN %ϾaQԹ|`zw#Dk{aeoe< N`/#(T/|@n9f( K//oWg,UwUh}v;3ߏUXEnC).g0MA; F$RKߤoD5_.X,xDuKu{ 9F>jk ']u3c/.ܼzu66ir]MkQ6__`E}f5Oﮎ5-\VV3+]w#o*ͯ^Z|jȑ8mTi#Bx2}IR5FnnAYyF) 0EN|1yy[RAUh M bHX $]҉F}H- $ 32ROpadW罃!W(7Z”Rʲ/E ,{?J%Cul%"[᫘`_]]^헺3s P8=M 1dW,W4 ijuPK*p$apAaKr?r#))~,b߇c,C[,Ǘ32v5ʗk -݅8^.q?H/FS@ίM pEdL'}0pU2 p"ALj2%:ݲ)KK1bcR,GYjnjLڻC ltGQ\J7xx2y<($}5Iu}% g/,a-0FƐXPa.HaO= Q wfRakjhC:s $ j@p3mE(fRn(DSXh-b6""pKX'[vMWc9dMT &!W`P4LSAi(@9 UE,VR0Fv'|uH9" :χ!O*mj N)7ia-` _fO;ϓO1W77JVxB*DKl8lt@VB^@P7$O%֢Ʌh#Z/>Z10-f_^w`'?';Bͬ:Ⱥ!Y]3w((xDZkNiˣNG8R[1'w.򒶱)"KȿrfҰ?gzJUmDe#aGuOv $6xST'ADNOO.oK"A$`p6h֟e ]4; AQ!`gC6J&3b ^Z@gYXײ,ߝ^vЦ cFsxn#s:'1# b]{KV9eۢYUBO+^ߔΖӓ/ap Z#a+v*MݛJ}tY>c(~M$}"ZS>+I' AQxK =d׿XNL.V]L:EaR}UpYlڦZo2x H#\,5-xtG&P-S䜒%/K\][婄ʏzvD)]$Nd/n.b9' ׏i9/?7' J̯nN+ښ`ޚܱk~ԄVp۩d;j z1oOI6^o_TJX۾}xh.1$+]^f0J'B1: ^E43@>D6P7EC|Rb1]ȡǃ:LʢIbBK'p>뗯 n |P ~⋜@b-LRn.EDD@vVdQuBEe7'"R71/7FH\C ;Md8?c9B mjMt.Ѹ*P:<;N|t UGS~j_p˗NI8sD wW! zFIDdgiuRXs,,W멓ʑto.eu%Xg6&߂gx|l0 H$KOHqmGUHb'"˕=V V߿݌yᇘAyDbL16 R7b:ܪHt h,LsM@Ɓ_ӹ=l:ؿu6)D-r_\%n]ɚ 8[TШ%tA4Q#~}PRXfNC0/>QD ِCQ#5AJۚtL# |8\cN||pB )ixZsuip@>cX3'B۰?`yrS)d"e4Ѿj|LgՂ <)SdL8¸ۨv 0*->%·1!ܨ_(|F-"KsDžw`j{!0CkuK 1N#*m:05`6i G¨sǏLP 7W}Cx42I .IBuEW02J1A{k-q=blw':aTď# |0oh?QE3KmWjD?!mC$A:GTΡ5LQ@q̘QN`#1 <4WȬ<ՊaA4T<Te>i$Y3T,IFтĮe'SI^EG8P\f4m:zJttj*syX54c<)rCeM KcsC^T+0f+ sxB­DiX BT TeTE*Ƥ}Tǭo~{E/dʳ|Ye,CBM VegC[ k* ;^'wTa|%fq9%uR.xڇK_ʭaHlU >!!0͛ゎGSJȆ3ۮ`8$psĚ<\^%}o[dR( >IKp!rVGWҰPRJفBts ܹR[e^^(@yg9BHr@Fy0Pz"X!J+3ñ;k˅\{,\jI#"!mmsixL(/ Rol6"9u߼ٱh5 q? n DL + 1C>DaeJK ߒC٣N ]?8&TV./%*F,{Ь+:J\-* ,hI4#*逫%&MN- G'\.+pӫN.5NJ5@הTB2k ^_Jһ)UEKsEgNGz>VDnnˢr=, =ZMF,Ъ.PJM+ ;kSWWNʅ1HBA89Sa)\5 h.Dh=SqW`44>$OK:4:n`8rA@,xM:\/֬R屔bP6m}Eu7TK:4pL"H\13%c Õ(zm6zFFNRI07B80f$uZam'ZVw[] 9l$ja`|# tELKG`(^Ok;ʳz.R$^Ś*k[li,-h]9n:Z-KR%&U$ 2!Rr@*OSA,^,0k" ;2: ^°Nz9Hy޼yk LyE_|,8 BxW66et\Ft!Nta[rteM@O1,ʈy7˲)ճ֋֋7 62"4VQJMTI3~*%w}Zuz>U#} -re _8tLp-Gb9zHҜMg$ɵXơ,[en6ǟ1ӏO'Ho6|^уJ$nK7%㦾 0k'H'ʐ$ܼ\uq7{[̛p08{iR7c+*-GXD /xGےt">GRήԞ0LzM۷@97ܣcdD&zH=mZ۔+K̒,("}XᎦ?ay .jկû* o!Kz'GDX7Ar>Ӻ9k0@&?tJ:dF%/Ȗ/F'H(7 !;u6"윥Ǔh0k dҜ~&/.rPF -2z;LdRй- ߋQmS}tB71~[v0.0xT'D{4,wϲ&O}&D_~޵p8]/r %@'T_3R"Mm1: O; qVwEj!NVwQ`Kwlßy_EGRW @*k!~q1&/.ִ]ktu7O`8?<5J_?Ŕ᧷+W.(p^)÷ֻGGcuyo-2.1.0/data/pics/ithRotH.xpm.gz0000755000175000017500000000106611101102054013776 00000000000000LGMK12ÖEЛQ)RzA|̺*HPw}$i6~|/?8=?\]g>L` nց?=.u7ʒaQ9ͩ<5ʂUTǾR9~ْ#9#9#9́ĜfeYV6jA\]`1eh^Xګ3(:bJ"YD ie$|x5sPG?j ,8jIq{[.w(ޡYap;lᰴ> XpJcޡMe,:TPO!+j]@OY  #ܴCFi-~ɠ:VqKIc7NmC;j wjO4o3;9?8r]:[e:[ְ%yse0 >b7g)ne,8(!qϡfAx3fHO1P:WJA;&,8w,·]Gтu|f6cuyo-2.1.0/data/pics/maLidB.xpm.gz0000644000175000017500000000314011615032231013546 00000000000000WJHP[/VB$`F[[o3{(W{Ts;?&;fo V@򯝹u)4OCaK]ia2J ;k/)I4u ;B qPCCFT"hըTrQ4߄q4D?a C$5R]RA#TP+&We6h/5D}I/ T9$̠!rX j9L^R!K1-c\b@CLƱ:bwfm3<+!ʄ4DPACTQ6]tCPEC'?!~" !~/fJ1Kh:a *%). rD+dHD^YT-G<"Af,JrL9b24Tk`y!6yEްg<22 +@_bmOyYo<[%V;OπLwM @;.ȲD %5`<[)1`Ah2Nu>c&Q,Ԕ%Uh3qj=ʄI5VjFb9 EBM˳g bwfE{~_S[,z8VT-TtYԐWl|{X0֏}yֻu7;lIZ D@7 ]\`BvqF7?\C386z߯fYp]XZnxe+۽ x54RX?o'ya**&cuyo-2.1.0/data/pics/jhVoegel_ani1.xpm.gz0000644000175000017500000000243107550521116015103 00000000000000<jhVoegel_ani1.xpmjAݧhֻ +A|+DBDL" A|w=CL6 OUյQ}9:^?(WQ~右듳??o|-MywZN|||_^U= !|Z@PQ}:89)6Ez^~`!L!m |&gk\fosAB95; M4ZQ#Y? FG6ʛF4MU Q|T k n+Nq}I!*i=e_{{&:߲nߐC T N1_15xwq8pΙ\!Xι\q}3T݋ſB-[[Bcuyo-2.1.0/data/pics/ibkRahmen.xpm.gz0000644000175000017500000000054510362016024014324 00000000000000ŖOK0S4VQ!"xD(CwAI3,_ɡd_wн.?fWtʹ_3\w_`z yYo+tA,Y9jZ^"{6mYB0J08 D(#`:'6N{A㺘O3\[ bD 3 IABL#%Z90yeNМP"qw_$·q."}Dђv*SZP =́sQzDXLtP̦*%f`q/p0㡑.!F(>P\ᒪ3%Db#1DI[*. %ؤzB}n`Czh[BN!p3;)Ȉ3wIUnhl PP.LL80V$)|)~\v\h 5cAMw7C}܌x hF6\"YiO\WDK)lR*\7 5Bb.C!0Xv8nCZf< 5".Y\ᲙeZfflFtabTyKS[x}C )N6ZP V-.XK~)02 7Gke2._#ry=%:]"$njEoh5!-d!Y$Uvg3Mm4?r[TOO&lr¤'3QHĿu1n ֨j語`_R]pWC7Nf\bGoCuH}Ge\k!8 P*a] ae9;7}3jy&-+^Exz쫌R)_$7<`Rˬ߁ XzM \Xb\:S=t4Odf&s=}1ٝ?;uiDK \f|=t7~ UO-љ{莠hb~IT3CwY*sy}{*q*g~{z8um=q=lKJ3S=qM/::@C1QJΕ{y\dPCe=QCe=QCe=QCe=QCe=QCeq_5cuyo-2.1.0/data/pics/bpPinguL.xpm.gz0000644000175000017500000000166110361232217014147 00000000000000`CbpPinguL.xpmOAS4INiu=,T(n݃+w7󧻫^$iX6_͛Jd1g+[~>\?nr7Ww_~ۇ3?^^ w>:'[u{lFzc7-G-^tlT1>|Uyoh[MV(/JHG xy Mzz1N n>t&vY{қdquy: dٹa"3b3"zI'5jC}Ay:!qB#pOZot &%kS q>$'0B NN{=k5-3S1!7ynr! K[c|.r蜟mI($擇̃(QT"5tEJFY= *^DiyES晇8(wK\i8[oָi(5oU=|@k6{ W/$gZ wo4`P}'ل@xyCXmjwF}#<y/swas#h~@ IEM)hrNK<ĢsƕNŀrQ8UrZY$.$&QM?d<ͻa؜y%HԺ{0nLmÔ?`q8QOrNÉx8,Cl\FIFAn@ 7 R(­F n=EXd|nW f&3"H@ɖT+mmI:V&50ܾlY7f85]mc%Y3f'6^JR U5lR7Bɕ|y06WTn_)YюL -*V@USco?AuSy*S1=96zA+K[uЫOUF\Cisk P6T{*g+f9t{%&Euv8UF=46=^Qq5V*Ta'!g^[N[F>Ǐc;c;?axg~~鿎ݻ*u>`_a>Z\,9ECO0UUucw:b0^?U^\w:ܗ:°Xu [߁%p 7aмoDOG_<{bK(~w*Z49J?'O(ya/"GԲ\ nra+F*ED_1 ʿ›0sxmhB#Bnr65H<څDse2=d ohaTrW;]`-I.v@RGEE?oygSn6x4)D.*٢&78aXߺmgH 9FeME;t̳'yw,Z(sw*I<5* ZWun[µ.~#m't6FYvWuT;\N7P|+v哾P$l(UoηqJ]0 P,CȍR*B82bWˆBJ].]v*.11C#Eyqox/6-|9Jh JP`) q6:F5''uBeC\Ra,v҈`_pbhQn*͉:l(Η0)Z\V.j\d.Psf >@t症kR|[$fZ;߄*TTBE!ޝ''o=TaHmhcyX_/..^(.`;tx~ƪv?67Rb$<ZơZxrb:Ee_"5Fo1c4hy;Ġ~P(EJb׿7$ y%ebBPƫٍj&C"L'QX|Uá\on'vk1/x%opA6.s+ Na2XL:+BKOpd2ftD 3 ļV:ų'yc=Ɂ<&܄oL&υ1 L1IXz= A(dʂQʰ62X bumDCsSKuƈ)Oq|L+_ⶀ䒸DF|O+9!;Oy*f8EfocyaNee C:7aRI =)<|MV[_ȒSFa|pRM( AFfBM 0s3/yWwmM5PD,gg!o?Ä8 H􌓄_5NFI1.Hl ˣIsdpKY.PKL> F/%Dp9C`Ab65Qש'mϽ#'rg(yiq<$ԝi"M쵹gՉm{|!%@/1JGf3!{d6&c I#Ø:(6|؉&O?z?YIJȊhbM&vOR>9sѺM9pmЫ///_ް@0)hK]1w`Aۯغ!10P^z~=iQnOډC,ИE]=< 5?c»1 b¤T=lC ~ja2q OhY-DI>֒ٵf~8]Zʈ,>Xn[aZh 9}{|c0@USI: Ut@e(h׮$Q $I"?$by Wgq$=.>29=58~RjbHv׵tmSnGQͶu{vNۖD`=@u nԝj}_N2A= 5SvLG̲Ks']FvZcmc.?m&kN[mFilhh_OS$iˎi`PNi n}tI=[EtOpo.inH)n2n&qQ9kom;GM<ܠlҽmly  ۴eX;>6$Zm@!~Cf%Mp5}KNqw n;hiSǬn!OpONްRw{ [uS,=M(,)?FpC O;n=C2' j {4 gk׷mGjC zcphH?LعWlڑ!TD' qCc"D%ePPvx" z*xxO`BTI&23\t0Dl 4b.4ޅ0q`8+al MR[# B 'ҹd0><% C` S(zŐupn,n>'!A>Q@!# z- Qd:(ge$QVjjle+  #aaEy3"Y*v jP.lz BY:4A[A_aJT88UeqAeLS8 '.G 蜡$ATA>JE.Oa1j=janR `[ali ^g1&Ab`5˨=Xr re jĈR4\*lPh([à D˘ ^a E@C5nMɾT 3gRjUFR&|3ɾep][FCeJu]DSz2Ó3o+_85kAz[*Ty|7/a ~Ž8F[X^੶['flraڑae` j!T!v Cw.ES3[f%d伭d'm`U].2]ɽ$7d^ޕˎK&#'m<4{'ZgU;H,kbCEb3 ֖N1 0oRĀp0J"`1M6bY=QGk"4\`Q0\e C>AdX-)%ա?Dj34'e"(C8&] yd : ^FcD -a>0&w9Q&h+`#;,9ʰ\,H.,j@D7, XB+l%[I1Y-& (,] Oa&/G$pnCf׃|ap ~[E%}f2ǐZL]`8ʠփC+ PVd/Za2(z2wh@N80萗lj DB6\`ȅ. MADRB\2cCr\Q!CH/(|]2X2 e`sE-;a2 L:MPC<񉩷W۱/ IK~)1c2,h`=Ot|"tsM*vy-T#'ok)yCLϚ` y上`2%A!\x ]8Hx)Ș2 D&/\*ل"rc&!lk}x-CPEICV!f2lL\ZյABy&û0ٜa.WK(CQՅoqx=(-cU!3Z*>>G) QG~ݬ~ݙpCs=.I7ϴc/wɷѽ] 128@Od00,cVHrŬٚP: !d|7ʲ u 7EPz*21AqQ*C|h!leX!M/a #CTL )Dŕ 5i IC=<"^$I¾Rbp:T/LTƇZϺ8` 煔!600`ph,AeH \:Z`?l Sg"e8^2_Nk2(:|>'SQ>b PWAT$1w-opy6^8fhBm@ A`sט(r}~ X v@lm&Q !Sy3!3TjWI2dyh{A3v-U:6l:۞ۆaҨY$S&.{%ava\uE2|?ƅa"xf'ee1<^-$/ rLC︬p۰)[;Y ~)̑l)d[.I;K_>DO7X255ǩ?x|5]]]M֮?zÏvGQD_~5؍n{77n^;|ȗ Û)oL_Kƈ FFۍ:瓍 8oN$[ αWKҟvLBC|0~5NM dbȋa^Dٞ5Є=x0ƒ9BN,85gh:,9"uJܩlkr%Exp4 XbJAw\Hp56tsdO3O[4+ 1RD !(öMTߥ)L" ݙ:Ȑ ȅN%@`hakIU0t 7uHLw6b(H1F6O =gAAxQN)ɵa4Yo8=2SQF G N>t240 1x:V8qAi&TA]HBF O]"N䜡-6R2trU02L ggɫ#q"Rp`d!U 5/D VtbfM S7IAC#t[EQ -ID.g\fR::*P$Zur\|> L̐*Nd )iElr]&hyv-fSo B;5ۨU Rݦ"A\t8; T1Q`t$Lb9QU/&L !|G~,.wOb0d5":8݂v: D"C0R08iBrBQF1&p 0Tпy"K»DLb-Y2n6z; !rGcuyo-2.1.0/data/pics/mfqualle.xpm.gz0000644000175000017500000000342510766714571014256 00000000000000VWXh+A0_CQP,JjVm-isN z&-sfgɐN{L?6gS6=0]]_/O!+sCe o={ؔ  )n)hMEF.:ECtD0GQ/ex!G F@'hݦ0-uJoڒ.AU$D(WeG@؊"4E"[7() !h(UO\U\@ꪡաJ%RfID$%[T2Me["T^(" " Mv$K$^$DdZYZuɑhlZ*$#t⵪.f&cx!4d]o)H2mw:AatqIQMsu"ChzU#kFТ]76AnueClNߡɮ[$(6(To`0hR9nScAƞZ"}kEM ZP M-t)BSEW]4ڂI$JdGj+S#tuhaR5C5ٕ *@Mim^]T9^Q*hnJ*}m׵IJCT,[~#X\JS۔x5W鐹#^um}&nJlpJ*4lIɯɺ|OwupWUG /!k0h !evBX^+N?5EKǽĽ;悾BXckZ+5wܗ۟(9De͛i/^.嘔}۞>脏 oX6.(?*t:VNZoݵ&Mec4P zNȃN-mnnR0^ @-ΤdMhq3'gI[^6SY! Rf"\R\#`d wtu$^a#Wdq[-9JwN{~?8=v6QS$C E̝gglqD[ $uW.V˗3ںm*q)߹Ol-)E*DR3/_}ōWuc"2gh#5ʋJמz3U" v=dŕ~:ořYY ‡ͭpk5kDm 3&Oi`vyɱ|e-q_3gz+93HصU2ֵwF'px| ~L$g\ lxa 9rd_[u%*{{_a$cuyo-2.1.0/data/pics/jsGrauLoch.xpm.gz0000644000175000017500000000325207761455266014513 00000000000000+Y?jsGrauLoch.xpmk7_!U&MH!-!Bдq*vW#͗~I#Ʌkw/޺7܅n߳^e==}w|}*aXr=W/^>[rx}}}yu(o A~b3 c-H[ۖh2[:޺f9$PO`:\hIsm PҴKh¶)2[R,2EC1L/@ԉ_s2]Ra?PbB0D%YƔHw3C3(+O3ojr[XQan-b9K[gT%pF `@?hЕB_9xͰB٢|4%B_= $m E^>}pt?C\@ : uՐ.A+3/ỎÓ12rd[`|1xedwŴ%6Je6}q=I0t#CGb0̛ƶ$S>El϶cg(.$8G6:1N kX,ڰCRn?`2jCy&C\#a w`/:5PxNO[P0@ dcraTJ¤R 9aʐ [>0$9t.7m $ċ}1Q`2Q-1[!͖=$藄!1 wp[d-M n̵S9>e'E;iO͌OϿ-h/U 1 ۳wXRM@ҧ0&t.,*hb-& Cp&յh?X9M*)'yk")3zBPk(ow;膬=hde))`˖[`.z# ~E5kCL!˺_C}AZ\@`~!DE} r<^O4%|L  9H1] ̚?WK6KQl &ɇ-ka@o3h{ƔX_~8a G*dšBp׮{ /b|nW ˦h&rg 9דarbxD t?Y*Bcuyo-2.1.0/data/pics/sbBroetchenB.xpm.gz0000644000175000017500000000565207550521124014777 00000000000000L=sbBroetchenB.xpmo{t˅Z'do-X0p@ФHQ吜 9v}Iݢ~ EC7O}/_Oͧ5>Ϗ y=I 4)-N+CFfY9\9ᄴR0,iwRkqtWg0ߔ_L 6R ,RYV:e:޽ ;rSe%|HyH;a~E{0l*U>0?ˊ{`^JC|Htt8 hm|3<s;aa &(8Ch N ; dMeRsD#!3CpДޡ.0n K,4C*b!pkd3PβC1&pF]ݪ YVfH?bA!<600@@Z!Ba56\\g@#z51 Ce{cF=Ef.pR7ގStJӤI !I,7j laRG2|Ӓ}9j ^B ?lbC0!n9&A;s X?<ɘQZ?h pb9}9H:fԫI`Hg  {6/ b`{V=>q4t9ry.>A)A2'ACso4 V V =B5b$(ˏqd>kDg2 q/8%ΪEyjhHP H9k/mP,8 BΜʛ%C:E_f*rj//C_$Yʩ1tC&g4ʂ^Wvm ѥ2"@!3 @ *C'ק !&WX34zx?.@p&`2tzU`ㅟjWJn#OY Cpc+sTж F`Zr&жPĀ‘GK.v.W١w-}#.W1tenO`HNq!z9WRT(? D@ Qqz:n Z!!DjgBu"0Y|<?"ds5S"BQ qhPgPP1Bb DU$Y|@ )R"1j~dl[/LhXr}RFd:Yq7FZûa PAJKa>u)BGk y7}PpoHӧ0M Rvbv( Lt䅱Pdd>@0ǖ1(CW^GKi T&"@?s`+r=/ J|@Ck |gC/\ 3l1?9r;,z'$`rpP?hZOLzjx 9{8DϠSE)jȷp0(VY9Qf`< y_S1 M_+Pۗ]0m־ Z۶p1mAye,qem +,m܏kc7A(Z38Tb!  hH2#Dk1n'w,R;:D[ bߞ 3Aw,L,5ch3Jw`anȢ!|=aqn!@8fpOl}%-L쁭i ~wCet23ִID@cnON?CCÄ#P_ !]?dOhPgBтD_=9I= $8(eH+[؄c(=Ũʐ0C?r=ηV 92B73#ofɠu8B}H^K3pnCf4W>͞əݲQ BOC1hh ac4/5ly:h>*9Xse0:hH1+A2Z<`< ء Y6$mH{3%꺴d(~!>Q PFM:98d`#bQ"œlQzS x zҐc/ſo iCcuyo-2.1.0/data/pics/itGelb.xpm.gz0000644000175000017500000000470412411636423013643 000000000000006'TitGelb.xpmYo7ǟO!e- Ҫ\u ;ݧ},PEh^hP?{9ṇx݉䟿$3L|דUs߽dsq:9=lM>{3_w!W' XC* 81%gNU.sv/0 vTު I}Nmw-I]F^˳9*b%b:?SĴOqwUv>(峋m fww'ryQȏP1 1JYQOU2u |J0ƈ"F0!ҤLdU/#Xy@ND 0Vjp!3X 2cRg ,ĥꊏQZ:)TJ40~u^*3LF$uVT'crgĮ]{w+AqP*\,iFQkRO+)x`t+7 WJ+ɨDłHXxۭɨ*h3Z"`O[#4FS-q:~DŽ p] Bq0zQ4+}8b8;3jsnJ6DvJhFllF)1}aep)Mi%2Z+ Y (ƭW?+owJvp ]0 HSCL|1z|>ø^: זozQaУ$#>#b֚smU[Ψ1j5yICA|h0 ҋo0(F1%G !GF;8qE^w"%_HRp)ö,C㈖.rF-> )Y¨3k'HDa)H?(ϸuD`NV1:R+lFgz=Uꢳ[`.6^S1^$Q8<~(~YX)Dj$2%f 1csI#Qk#cya\,u] ˷h?.F =@9J2A1+f9Q}rFݯPpV5i,q }lf;jF}DzQmQ`Lh'|@̩B i~&,c4ۚ`S\ !"#ZelrQQ9gԧ6yt:Qs c޹[X9"@c!S~>-urftVS*ctvxNzx$F3R-B+Zw]F˘ɤ1?c##<62c##<62c##<62\?.VQi.41TbdzZ|MDHa?tK\]4T0yDo!NehS c!h3:Ήd *e:2KcفF3bGBqSS=Sh^b?G>Gs"%4#i/l (%{i]ֈ XIȢ`ᯔT wJvo)z(`,1ۇ b # ji}&i.B5mǦ(0RQ_1l,Juu6#0CmPZ bh>3OF}DzQmQ`Lh'|@T|~zm\Q Q=d>ayEL-as}NqJ2SO0'Y/] 벅FxhjS 8wR qFbN`yJ N/B A fe#ӹ\ a|cn' =yR|M}(8zY.Y_Y9(DXBfdb)C!OO 0q%129LJ_,  1,UoiX.AsѩI/XR )FSZA[kHaFjȲԑ7CS?@:p@JCenX,O ,79 ɝ <0[\.ٍ!Eu$pv7[ JXn8 ɒܑ7f y !jSR>z73Ak+Ð"7~az˃pI =.3#ˍCow^N1|};\/:)ӱiڳY; yW5Xaݳ" ֮}UaP,^}a6!^[/)MGf(]x/^m8@a?Jd(JÐXOY%7cuyo-2.1.0/data/pics/ieGelb.xpm.gz0000644000175000017500000000264607550521112013623 00000000000000x=ieGelb.xpmKkGѧh4;{͌WkK 'O >BĐwUώP-۪Wյz֩~g}xzݟS<ӏ?pn꠮.?T=o>T7X/P@־-To_T;:_C_` ]C{,9v;-afC=I߶ <91 X^($8U?1v8%hddH=A}3VH˴A8? GTF,fV+rz@ܨ]k1"%nC[ _oaV?Lލtt=]FOn `{Q4 {KLpaLCSDz08lL Y ffHGh赗`z1zMˬXϋ]{,>"}]b D5CqaeXZ\#"CS (E uAZSx#c,GxE_uU_zw C|7S5$hϬ>^^38*9߷C%(`x"̐[c2`nD<|eY|yD|߆ֻ(h Ǡpq|A3yѯ&6bYTGA61CG!z,Y} U! $CEc?0 lc? T|@>ð8@ Jhe|0oH_D%VW2 D2`!Θ6? g? g?8||$`l1'r*y $E>m7u :lX:n X^6 !lZHusl ۏTX]5m&s#m>e7Ëh{Oۏ+s%Qjھ' cA[p?=caP\1Qc_w=mﱣcrn6mķ7oX*uܚ܋.n,D I1}nva Ɖ_ء#C>Pt#=N.TS<cX|@۠QΛPc({Cd7k3$ﱎE5Pj]K0[F̲ &KmC6H0/4#XUzҲþ(+YBaaaaaaaaaaaaaaaaZkScuyo-2.1.0/data/pics/mdBoden13.xpm.gz0000644000175000017500000001026212412223242014135 00000000000000ZkwH޿´p3]ĥDA6$ Q%dӄŽ>Y>殻]ǶqgS2ėO|\}^&_~탖{q쟛?|p0=dIL2lnu¶11}!73#Î fցw2;٪Ff@<2 }2Ѱ;fmӌjL|Lf4fr'h51 8AGw!P-Efݘ:T-3Z3\%2 Gfi 1MNi;dƯLaV`vxU;0k*L^El2k[ZWd5uE{lD4t1DHVfZPe:ZwLDmic2UFo`hcbrxBjjS2#Ugd-9x02f+1Ui Tߘ.L;0^0l,<7[yJV){a̾RsWh320V lU~cFQeRW00٬}kDcxgւ 1C,6~'vLƯ@ycL,Çf+F}hf&;Ds3ٯ`&kͫ~ߪr`5TTe.ͨh2a'#$/lUڌzQ27ƌι" d~keٚ\$̀UDfxȑT&AQޘ\ܨ2\]U#;4'2b_˵/PDׇ\m&&Vn*TnP[_?0 ?0 ?0wa^g^0 ǽמqK~ׯBא%q|ƿ 71 hb՗/_"Z=?WWnO;EaciZ︑v v؏'dmE n_1/𣸿_ L(3aLC~>da{r^$-vx: ⤸Wq {@cUU嗈^f;}%EQQQ4r[ln-0} Y`<ĕk?`'>Ld~[z (tc6۫-m)GGQ6W^ w_mmh][]olz$X{-]4]숾qq\T,UUJI1x 2x|k춋K ה 8ZI{鹳-)9OsB JBgM͔rt6uXQ7R<}iVf #Rv@,3kgU@7@djm+:NS.R" 3˜)n qgșVIO>sܥw@-4J37 TSD{9Ph5Hɐ9EʠbDAm kJYSy0HM1#LBmotv;*ѝoU&@dT&%+tG̀^D A⢪y-*RTMAh-T΀0 "Tll!*dJ1**o`Aݩ^lp"[#d4t4bįDIJ2,g`e2A Y&? H"zM g#>AN3![= 7MGi@?TD;*Q$Ld ^@îE^ vd̑[;<]@OO/)I4'¼׍ ̣* A iE(ĔqIr!l D6ϸ2e<2 2JZ 4@ $LV4YB|@&p 2߉ RI8b?MYOq6|$ $ p5R$4Kczuj) D7O*7[5{?WD@;oH7ag"d쑟 L8^&28 M%K69c2Ϙj ]EdNSg5h83`pڢQyp~~"# m {'<Ϥ1 Idl <.9Dž䅔MRKh3ORuw^vGBZhf>RmGJ2ig!>c,ep&6I·|eyD5a q)y>l%>偃Lt[!^|Dw8Y>UfY)9H^.je˾ Olu9;;;=7@0f@6 GA G%? 'U%:wT8?|p/cɚR.#\z?~[~0 P"C3\oy˚>JRY̧c#~Qh4y y`rz08ygÖded,WUY \)ۙ<;}fM}60g td*FoH&a&/8elpze66rl*@ /_2(TZ~onxo/  ^BDHD\J*k@arѕ%Gס#N٣G>>ь0Lmi{%%}~刺Y3egޥd#ֵha#ϲd$:<;`@g @ /e _vKisVM$Z=ݦ͹U/;G$xi9+2Aeֵ 8  p.h5,4)\/E3~U6˚A*>X1.٫:թZ[ni1ϳ]b#hrJeBϲk:וsiz@_}m9y3a|*k=+˦XV]ΎJfYCZ^3.gzY~ dj~'D֯8 ۩QL"s']g%j~) -%z%[Q?ʲ炂Z[.J*kkǥ_Y>%Х> c|ɆoX?NE 5)EXWwT}2F1ۆ$LVH%˚.-?JV龋1ϪkV黏=zS2Z,Yq oqc8$\2 0%_.71^`ݲ^ߥUk[/kuݲsj[s-}r$K~C{>Ƙ_+Wk< < EU ]! Hq @^fce u[ubv\CM^GNڱm밬[J-k4yM?~s׍Ѵjۊ@lp(-7<ѐp&1 -|^n6~ZO<ү{C 9խ7u Efku(݀6K4'sVܮ6|6!*pɆ1~P\=d,en#dι8a׬uV5G5ԇA/qtf͗Guak5ol'*4ceK,Ze|WxfG+;G{u뽻>/r>[hq+힮rݸgJ!U7j}}Bυ Lυ \aԧzvS>#w3{/lƁHڒ7ֹ晌EV9)=`$>F:ff,|+ufFPu:'ILĿbp/\Oq?߄,U˯R5q¨:._#Q5A_#5A_#5d`aHk= cW#kR_S2vq?tiICԁdPu)TxJUAև'daiC`d}X329L:1%chKbQ? ,d|cs&d:QTXR ߘ;:u1 &:u~16$g?Gkg?Gkad3`|dcBglL''!+d n> '3cuyo-2.1.0/data/pics/bxLok32.xpm.gz0000644000175000017500000000173210361553650013661 00000000000000b=bxLok32.xpmNH%"o`%K^8dҙ$a]݌V>)O{]P>o|? wڇ/W[-lI=Yכhr2 wP¡Mhv3D'YNF;7dG nxr;#CD7hPv Ѥ'ey>b_;5Ɛ'dU;OxN#َMD}LjovбC91x] !z$!bg5Ƃsj@ذ*MXf@/+ B SY7 0iSe˨hS4T\!kh%) $*kFRܨ|_|= /) +yIYi&ѷkV/k.#l8ӆBevJ>"x\)bQgᖲLl / eK#õDGj}u3Ħ8"l7H qx 1"'4 1xW2 +aKwB`0ljԹ8I8q$L&7{c6˲[ +N|X٢mdü1T/گ&c40q}>j,LÇ4,) \5fGXmj{UDk1 1ZifCmZ.yvCcv+WYӾfvelМ B=4Nt4VU(iDjy^M?wN'#] n= \=g\l!\r.Nps}I9c!Nq] Oh++?&cuyo-2.1.0/data/pics/mbaHinter.xpm0000644000175000017500000001034111672457346013736 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #AACCEE", "D c #FFFFFF", "E c #FFFFFF", "F c #FFFFFF", "G c #FFFFFF", "H c #FFFFFF", "I c #FFFFFF", "J c #FFFFFF", "K c #FFFFFF", "L c #FFFFFF", "M c #FFFFFF", "N c #FFFFFF", "O c #FFFFFF", "P c #FFFFFF", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/sbKaeseB.xpm.gz0000644000175000017500000000155207550521124014111 00000000000000mk=sbKaeseB.xpmKk1RZ ihr)-=J(1>s(~zz^9dHZY?|xV6_ֿ`o>KX=9-OKxw?oڧ^\wνͫڽ846f`f`: r^xAY;QDרp}*e(0~U RAʫ(jwCϠd7gizO!Y_i*F02! H8rd8oͳ& C?1i  D"a0@(_EBNE8OB@S~tD}q5 ݕ9 9naa1B9/W<&4X#$H=PT*CMH1ac@ DCAII?hND\UB` y+3*XC2c0 7dca0 T} 2A`h? ;S*‡3(u؀P1 b?$?~U HPj~0@?:eY Ȫބ;^:BgYzAyA?!hdaF!'efѤ"4aP;hՖ@-e;!ϛМ/%C016pz8fʣr3{ӹ?&G8nRlIpJ_\F3Y / _T3f`f0\rBcuyo-2.1.0/data/pics/bxBaer144.xpm.gz0000644000175000017500000001230310361553650014065 00000000000000b=bxBaer144.xpmysʲϧXVf@bIlab[lloUi/I[B|߮OFύ'!yCçw^'##vx;2'PU* @ T2TRT|15OՀP jPE&5Ȏ15PQ;9K350>2 UcÁPa(R_ U?j$Ȏƨ9hPSBTմ`Sa_~LTUj2Uc'7Tt!0 Q5T!hP5Q {Qv*j(6LmjaD64m!SZ1>[Z4ФmBEFC~'*;=V !դj$_l|GT4V-jZ 173 h>2qHQ-'!'3SpOۮ_*hT5#ܯL'bФj[YT5eWnD8b S&w  b[aF4 RyEm71ST5H3'44S %S(P#&b~ej8ڄ:ST>oM^rdܰ=SC0b+Q  SL%䏽G6-S#F17QˆٌԏZc*nER/FAk/>(f*j7& ˑpaq?q?q?~F@Ȼ%"cBeT"ZH TȖNFp<ʦRգ>FHHٌ˻NP*ܔ&w1V[]/˩")!FZX#%u.cY774X>Y'\&Genno}Zb@!5Iv"H&=6_yE73:E cPC-gSW͌}@E_ J i)U 2N8堓*\hay3lPQgg~g/Ϙ0C?nPC]ݨte3fXWT&3J wwf!Ύup4ax}:4~7cʊ1hPD捤9?>e߮Hĩ)Vs+{p&0 6c)QDqψ\8d$'n7V<\`8! 6D8j>Eή{ʩo](ciQ6ZQ^@ ?oܙ<ͻt,W(Q аNA*b GL0Aش=knl]|`X(_t õ(ɚ#/w53#8b~_.vd ycI0Q*hGdv{5*Qo46J(M T`NQ+(7&܅(~SKꗝ2e~|]s7V&f J7UgLq]2Jw)ں\MVYhҲԼE7j3Ķ ,>yQ gǩ+vJdN!.zsGn]-TlȌT.!r@fG]8آJ-{B h7,Y[XA_w4E&<ʨnFwׄ'¦6:3:;aՎ>o3 ‚ aC;[])!w1F5FǽEV+씥osIBq Aϯ]gkXߋºmǣ<n*eK[_pTU@< <\nf՛˹\VlgbF%s#ξeXP~W ~0"g[uZÎՖ![' 챟nᇵYV#/3ӂ YD !c,G49?9uPB{fv19:@fT2ڍcL8X^*s5SԭIFPeZXĘ c_ădz3k` Nz4yd86έ[RzS|Az:Qll;kI^y2 ?X|+>@oQ;LlQ<s1;3 1jٻ/UJ79Jp?z=,{"|N.!2ܣ|{:G 9fuìt5*lsn1X1#ZH~vWY,j^9cUڹk\!hezw W~\tY^Y$ gHy͹-5%R cRۀX _W0B 3m8&}mUg^E4 )Hzk177.?. VhTXmjuI||}5䲍[1Ȕ$9jQFIq[-8A-fFߛzg0\t9گ&yh,PYV 2oΖ&vŊY,fohW4q4+ҋ/YE]L;NO$k(w$L\R^w;ZY1pvW&{^,'R!"mu)vQf {"D'ðzp<?;™ًK; 9kmVƾ!}/$wV|c꽭~3aTCa\Wm6~tI{78<;vJϓ O^{Vy{iHԆ+Hb(p,=@?A9 jIofT"^덐 yt}ev;{oyd\F`bGO'Va,N>`aW=)˫򶓼67}?v}{J} Z1֕G坌u%2_y^Liwy/cBᗗA( \2ӟMcMW0q?q?q?_|'*kcuyo-2.1.0/data/pics/ithRosaBlah.xpm.gz0000755000175000017500000000056611101102053014620 00000000000000LGK0+[;ǘxD(CwAwdyhA0MQPvٮh^Pz]+>٤.>',?&PgY' ܽ!R&Һ.˺\׳@]< LB c2J,!ǰQK5e]tGg"`a0+Iܘ{32{2C}apoF6)}^3W^ȿ/+an cuyo-2.1.0/data/pics/kmTasse.xpm.gz0000644000175000017500000000635011347236315014046 00000000000000OKKkmTasse.xpm[iwίp $@40+1L@FK(ulYݖm; 8'Eխ^Uyv_NޟkjW'Zߺ Z {ZԛfM`q`")Vm@ -ж7E]4ϛ&KŦ`qܴxpe)ȂG *$5 *@ b"QQ.77`M)X Ī ]@vԕl+mUJSWb%К@d,JI__|*XTd~Ji`uUOn+^j m-`\I  rGVUURWXE@X@̧a? E$Y;EE8;`˨ G JW~ X]9ճ]ESz@RxBĶ ;(Tu>z ƂbIએEMA"{Vn+MUaIH0)v:)x 4m3,M}:bgIDUe mew@CMߧ+i*#" "Ce|0 SQ|Mi |Tqշ³{>B# [Ad } S-vBMBEh0HPh%AD8X"k񓞪$I}$A{p0dR>bROsXQd~8̟x E|w+8,'#"|/0 }ڵ ;E\&Bͦç +t&*S"{4vCgpO؜ՎK9zy#ϱ9˫^,K=b 87}qOɽoY219rngwV>^p0tWq@}b-s|ߵݬ/;[O]_5&pIE4|Ki>&-j89rlbf.߇÷hQضqw F=!h*䵚frXX7/8- 8,819crzIfTE? 6≜oa_Mz@HI-4QOh돳Axtm ~8tJ^2`m;P`+{"QEKU\=He|qG8ft ð6v_pq%k 9c.LP#9>z87p,0Tk ڻA0<7j`2@LxmT@e5A<35F|q $]֫@?sk ru{ڲUy75/ įl.pTxol6=]s0uRON>(a\8pgo q@a<ۋA%W94cMoVXy~ǜA:qXhD|R8Cs+-q@_8ۙm3Vvëxo"zRR8Wz2}Ry|oҟjIԓB{DԓTY #zԳWo,-rQ#eGbawWoFsQ+ \SrYo0|a(kx(#}˰(ף5BuFWy[r^0kClDz_@v.Y?H9ZwQUH:EwQ10ЍmoyJ/x3|K"r)Y;jOn# {;aLI&  |jd9,pލM ~շ,>F|&F4qohDjF?=Cò__^3\-2`8냑w}rD$0ۏ 7?=ﱏZdp,TUyyBJwYO/o.߿HA|b7$)WӿN~Aѭj*Gcuyo-2.1.0/data/pics/mdGold.xpm.gz0000644000175000017500000000311012404657520013634 00000000000000aSL)C- IH.( IPb jA+ Bږ?wQ}AL9/ę2Ӭ 99; GG)+B HtV7VV 9!k**캃ʥt.eU \*䈀qYW\T) (S .)-eK]ReQrb˗\T+܄fkAT$.ӰRS{k:U.S 5j&ϸ4eMCW@ZT5.g 6"e*jc6d: vQjKG1d< )J$EiI8.!A&Mp&6 fQ` ]6lFxTiP" W! u(ځ*Tp`CU|P@A:N-.PA0)x WM#ڄ 𰂆Cwj %Lo6ul@j f %âJS}6 .ڨ:UAa3hR2)cbC# @DxUOtdմFPdznCHi `Q.!%FXPDc̤a&b65i9?^ Kv {Y#!2ڡUرCD' ِk]=Ǯc6@ڎC kX y~G( .(-v쁔Xw,½&Q>J #a$>q õS!umek+5YډXGkG12f[=:c!!~YFqNt+xdX38M"0=d4|ߥҖ{Z?Ys̮-Ec|>n:f֜Z}1Zz>~ O{TS-OǰTOK} [T߯7akyBcrnnjڎo`>wru8l^tw!=Q?.۸u'֭힮B{!?[_`ܻpyMC_!a$0FH #a$0FH?8?m~>/-o2|t+槭'OߖK=?}x #a$B>B} 0 *èd-STע#a,'A<I*J!=O9UJ3 !Y#q뒫V6F}|{Qb6(P!G=j.E! ;d]H,F%vI&*@{\XHeaX8 Rl>[Fb1R%2duH=2U`W`6*+LQ\vKK>EkGFPΔٻ*D|/\%0cuyo-2.1.0/data/pics/mdStein06.xpm.gz0000644000175000017500000000626612412223267014212 00000000000000Yks6_!T AŕmIփM$I;[OSK6SOfgvgv [Aqs{//ooΎ?47._ntGp{W_xh3ah?,CLlxb/z,nA̒df1ܣ>c0 0rw CL 1N!ŤߘI<4!c0cn|aRֺXrUDETQJjGv-7DP &H5|)"F ޤOM,<XT em!hveD錀V$ūNQHa|R"Vśc^#V i}N30x*r H 6IY|)+c^!G w ܔlP?0zF^zpק =U#G!/Q *@)WTH4ד_Kv!0>@qBIiz \91T8ah]P'ϯ!AS q@!D<( zQU|%ʙ'mAIưgAPg sp(}S[#i7l]_G 4'.qMG=?u2!K3o,ZE³*w(]EU)Ie ő S\3`7!c\1p.EaY`ʥlTOl(皖Y[T_:d1J&_?\T-@bQg C֦'U6anäl-a\~86UcȐ2%6LRdp jKEcSVg-I҂\Oq@5I~vYI|eF*sk> *"Ve: ҂Oi/?,\1-iY[T¸,+UM[ 1_\SP [ $mN+. Fua1M-@JP(lQ*6oLV4ŰU!oJQwp *F1 8KsHScs|8rhď䏋׭utT\WLW[ &#i(j4;ܡxPat° %k[%PbO["NWjBQb]R`\^ar8{=DaΙBpxR},c|Q~sa2{ϢYilUuyd.e\,1t0vD/u~}z]kqƼr.tar'|rz\\)J7yyXRFt^WdyWXSM}KNK\~&ӓ9;)Fg(g$E|^Y_~$Ɏ}$ىIt}ջ*/zW/jyRWΗu0'%Dw7[qҗ)tc~EupչZjU7/GXGRwަYmr*WO̟UuKޏq|yn%: &` |,/V˃?|Wew[9$7[c~wM1L3[&y&7'0O_fk0ى~vzIg~<?mh+O'y2|t>?C[4?HjEʊFQ;fInl'd6ݜ;dӍpNmNW?wNmۻݯϿ|I]?[\=QgGWGѵz ߛon Kl{ t.1jnot t/.m۪h_4:մ>Tk`yCX%Kp']E (@g0w@fHR@uwi \#*M*ww1@`E^o$( ٹg ۄzF(2hwlC,~ǟ K 75GJK:Нo~wS걕H^ M+@CFpt&p=2Щwhmtք<\o OwG9") wd)2ζh,7 ANod¤P?(?p"YCެʐ,b!yF;)B YdHm>B=B,*{ YopFd$1 AA'/2z°w l`mv(/ܟ,Ò?DKT.G ;ƆA R0[fÌc1 a2̗?%X%`CwyYnQ{/U°0, {0di|gaM66DYP A ` (@b {鋪 쀳C$*RxRAr2$棃ePeRQ "zEWS^);[(P`,C=Uk_0gbHgnL2cuyo-2.1.0/data/pics/ihGrau.xpm.gz0000644000175000017500000000064407550521112013647 00000000000000<ihGrau.xpm]O0ݯ(tca/If N㥉1^dn`KO͕r5[yX>-f_w"Ut[8GɌd}x#>a@ 1O`A-*F.fwS0ξ;)ut:N bYr*cuyo-2.1.0/data/pics/mdGold11.xpm.gz0000644000175000017500000000167212412223262014000 00000000000000kWJ+"Ҧw.QF T֊ Z̼s9Ź5Oggy$9M'77qv>?8v96[Βs11YjNԋNarvbq:V;ߧJ^X1FsjBOe55Kc 'q #:?ɋjXBT8"wX7B&Fy4KFHtXx`]c`w#G# ,) eqF[*@FYU" vk@ǯ $V@D :G`!Ñv\,0b)X x9|U0 ܈ CMnKKYm8 ?P3zG'#J&zavazβ-4"o[Ί蝜]eג|h0#5X"1=1O Rš5xz #)]@^Ea(g73`kB\a~UpU:TJbZaxk&>"̨@k"!$(hua׎ "~S9lʼnM1v}$oeu:X`u:X`u:|3>_#$p5k$I-/Uc_pOOWVo!gZI}n;pq9 8ϓۚo=n?%gnY"鬯&gwR.Z?ѳԳw?jvz/5NvkaF(o_|p6G'AI}3Wvo+_Sw~.TֽpL9nwgzPȵ.΍t[4tYhaW~&cuyo-2.1.0/data/pics/i3Stern.xpm.gz0000644000175000017500000000272312420650607013763 00000000000000QoFǟON0Y;#%5o*RdStRꚇJev!v=`~,bdb[eO}z˶]iik׺c_5^\!\;>?xK^{g 7B80繏~pa@xΓ o!O=:^qA88 A>la.+,. E ,NDE@x,>s#,~pf@8۽Z\v@>¿NRup1bU^0bl<I׭ҌT8/?Ɖ.Fw\+ߧRa)ԗ3".%F*A$ͿšGUEFHhBQ۫c!mT-WbT(ԡPT8ԇW6:qPH匲4G~K ~ΨHێ I%cnRU~"#86&c4)43"+a4p0zF4# ;cS#飥 eDk2JrDBH|T3SC' WR*_9ego(VTgTdFd9$m;:Ui X/11ʜ0GEwQ^F[;˙5hn}<mv"FUxF5uDFeGFQ1 M(~#eGp)UdDh˽yΨ7_k;FLdwpupupup2MFLH?"({7fרTڟ]YCe;>uJ+k(lQL+Qٕ5(?$n׫Qٕ5QcDQUo\7(Q2(QH}$jJCT%j?U~5F]QuG ?;TodQ3%FmթoVTL?[&-V`T8*Xu ե62BO[ c'e(,%++F#фV0ϯ -`0?'Oh!2&Q ٽ _C}cχU1hBju1 F5LqA`Q$|~ Koړ U(>%T¨/#C{ >%TH~Ȅϯa ՜Hu{ͯa U0#hBcOݕ*%T%/O {=2ڴݢ O?E0SwUKF0zzZG`1*za n5lqx2ϩ݇W2JS $4\1ڽNb$Mh*7f~]|FRm=:F7G[ocuyo-2.1.0/data/pics/mkaViereckKacheln.xpm.gz0000644000175000017500000001074012412604560015777 00000000000000]VMSM +(K"[Q<7]3z)bcLTߺ]]Ha=] 잼govEvh~_T+jVϺclƛs^(VxR"|)+мΛfЬ.oނf>CWJoVJfɛyh+eiÃr0ZiRoz +b7wOoCRpWqxF8r`7y.o7f7jk˝r70Yƭr pծzif T y6 sNo6ọF Ё~וJƛ=hʥ<܇Z7Wn Jn{3X-Uϱos] n]݃Okai%Ûo@k>ux[t˼>4:}coBE^Rolz͕Z hCi֠my_çOOGOG.[ƛN|Λ 1vy?t7O+ګݴU>oxs^y%k wK]f.n7v3..p#[=hAsuoTv}SPn7FDŽ/޸_};͎<\`J5@.}y3<  */ix~ ^5r`n977TssqPn'*j+PWޤ T @xY眶G'xbg!c,؛oxصwQbdG`onDx8ZovHKDqޖP"b,' a亓4 x' ѥ%atDQhCteh-ˠ2GDBwaJ]v# 4b}l?gwCcv2o0R1~Vo.2` 0kS=scXg>?(=W#ajiF{ZOO*1O!OodGr'ʗJOzq "[@wr0: NK0-?0Ic|g@/'!Mvc[FKV;a* HFa@C1c?Z*j':E3Dc՟ ʻja?Ǧ'6aӴbN`Z kDbtwY0R-bTc>'\SCAI$fplV O$fEJ"@"B!'E"G!GJ"L!gof!#qIn;Z5$jg( PGWL 9fgiB̐ Nb- 7u`ǥpVx&7g. gW9 9)= 9Rf 9{3wfF];M w$)* Q;CD-80.f~ތLoյYFnV0Abb\\"-1f(FDZ"b&l1Yv#-0 Ǡ%F&Qf!`~tQqu*9 b/3DKKnR3T--=HY7;D=k}M/B  &g/ FC3:c-(#ήBs`T QLwqKh16Ȳg|bbza;QKu/K֍O^wH HK13UNwy1>4Wإyr> RqIFKFk)a&R0zm8кpE zɄJqSdE!|CS_Ħ'6a/Ҵ=ZJVsGBZJ1ZB3ĨSJbLђ4F sM!fHh 'RS؛R8+8sQ8ȥPIQȑ5Sٛ?03wH$HiR&qNVD 5H$j(đ-̢kߐcmܜea`qQb*-11mHKٕ̽ͨM8"ƛ Úpij$F,x5 x!ˆBK1D8 e֖ANJ0~dhr.wYۍԍS嶵9RIlnQsE;O#<1n?'F-fz"u8JMIToL 0]8]4ac0x}9CvQ?s)V݉RRNR97YABa ~`6S،cl+2 qch8%d3pB= AJb4 S4:)`$DZwXc;k cn;MKyMv.eZ l\wB" 1 h)8!FEoPc1Rk 1CB{(h8žތYęٕDD.BNDnBDB݇C"qGN0;v $j>HPA"QE&Dm!O#r<31Yj\ m{g{Qã%"彄=C!ij$F,' ѥ%Ƅޮ# -rO1dc`uĽc:80I=AhTvҝ Rx8jsl9;D=ȵp{6\3S^d`0H1X,4 v`T[2F Lwq4ac;4*F !F\Oɸ^wX(@K%(b:IR;DdHQ jDi滠fX !soňHKD; [Cpij$F3vV Ǡ%FGOxvZH0"̷FDŽ B1Id 0&;J!#E0&&n4ɎT_; 82 F_RH18FS;Y5wqb0ht'bH&@Em;leiqgIM^w~ɲ4 %Ƙh'uI ^wptU8k0,O[Z/Ʃj>3'r x=(=](02F;Z38dv1f %}YQgh)(n8TPFB^'Pe㍖@:UJ*ub-$ԡ4F sM!fHh 'RS؛R8+8sQ8ȥPIQȑ5Sٛ?03wH$HiR&qNVD 5H$j(đ-n1c۸ essfY{.JT;v`DSC%lǎڄ#bt%!%CKBD!#|cRR3m1܍YR=FCzG^ r&0Z&&1Lfbݨǂ2|c1qsd qvj0Bh9H1")f Nsl;q pKy%zUWb͠vXB9q4O0&$`EVMS|$&DH"]ʇ55DCRQ!FBQ3Eooь!8NBm?̉z: KR^hn0ő0IiZJ1:B3Ĩ-L˨K#3$X ))HHq)H(]IHR(H(HI)};$wq$4) cP@D $\j.K+4)$cuyo-2.1.0/data/pics/sbBlitzer.xpm.gz0000644000175000017500000000062207550521121014364 00000000000000ܜx=sbBlitzer.xpmKK@C{ش-!e[uoGADj(XE(~w3yֆк5,ofҧpuy-i< .n0fח]Ӈ>{\{È0g>3^޸y4Lao˕15ydd8cƛ{_n3Ax|ͽgݾ; p䌝 o!;s !ld]SwK|>Z٬|G;`[B@8`k׻ؖ|!K'Àpw5 OX8z. ؖ0 \i,`#%fK3¥Ҍped+7J(,,V5RIQbfSF8I2ؔ/T2%~VT.@b?msIOǨUȨݶLLY1 '3• nWrUUSk\tF~*#l)3bOcU%HfQz 3\ui~QA0(I2~1#\0z=6U<5R5ʬ(,γ_O"2JGjWUPbdERjZU~Cє(?FU75X:_ʤ"2"*cWъH_9FVX$#rDF 1k0d"2J׌piF4#\.#V_vF647w{ۇȎ?xBюJTbF+)7TRFvJʨTGee$z{*kmnHmZ3)?rQz?GHtQ2*iQΪdQΪdQΪdQΪdQΪdQ*vUe*=H3¥ҌpiF4#\.fgܱ#;濍% / ( ! G{&tx&#Z`%hFf$1BS-+LTP4@Fp%6k E1>XB6B a`_ e>_`_7hL`ʂ .UT%ɶgVujP}TT FWWK uW3JrYß$/*%`;tXxFrj?ў/f3S6TL:GtiF4#\?2Nocuyo-2.1.0/data/pics/msRed3.xpm.gz0000644000175000017500000000532612401656723013577 00000000000000Xk[X_.% +r nۮVVHP+ X;3Ɂ/̹d&"iqʫhz6só Wnnoή/?Wźɜ5ǝsyA` l"5%B%? DGt,+*}&HlAS U:z_ʂ!y T@(="{8GAAWJ5?ĺXG(fC$ HQ JHɕ\2RUreHqkIHd`WR+T@42jٙ&PP ^>$Ahʂ)]{Ъ( JMЄb#P\A@]. =k@U`eƧu ]!DS)MrX[KUAH*M$u)O}&(#h5D*Hd!,#hwqmC"َJ{/ӡ|4 #ζh "aC5P?um#:CpUxeo/(ȇl2@Ἣ©a'0"k72"d9̧ƣyJKHc4{Ώoa}hkqr?ymwpO6Wa65{5pmo35 o9`|YT_^v~SZ۴o_eonٛ5_ASzÿy'{ir7/۰J _4LԸF㟯=nqvfL{bW}H9??HG.~x7?1ß^]~~7]Ҙ*p=l+0~cb>a"w<'Ey/N!P|Ƕ 9an@3xoᵺ?'/p-.='orߧ4n msCx9>]ޤ?>M?z?S+bO=ܳn۫mެpȞUE1MXl=϶N_!Sxi:^~m?AI*u,Mo_#^6O5Dܖgk9}x5M==/|ʫ{E^`G`s/^xp0`DOyȱ >2,#9`Ũ<)-(0zBx A4wx˓]Zh$mZpC? BUmxJwn̲4Ƀ& n*bTHcbomxj:| V8 ֖$ݵ55>Ak( Ty[޾a>eSBk1ѕ! 9if%ʆ"T\CۃZ/YjeMOvF"ݓ!S]px uh!lߡ` 1bԏ<\pj  |g˃LWW6-+шQ$ |t*I[~tOa"S =}׋>^&CpOo?/ߛZXJU5+ڪ^`r&V{]y\Էe/6Ǧ)KZW)达YW>ܵ%U-x ƻl:Wmܬ~=_e :fUIEnY]3VyFqEAhU7) >adkqM\Qk շkF(A7 Sl_x7bj%ݭʫ~g#w{z7=;\?:Jc7EMǁ5Ų7oQgq9z{FS:]|==˳ӷ/yVv0_uS#9/ۢZC'w-t]|*$SW,_~:+Ţ^~{<ꊖuO*&M[ݧ,?ET题9=[[x`~W)d2v^U-hv]4fq^7mϽ'i&O7kH^߿ReBп~"*6 f@RT< 3l1FQZ4Z_bjc1cbpvH;YP@ 2p.He!Ŏa"8 aPEl8f6 1A0gKIB;B3;NY8 V̾FbJT1 ?ZElZvw qVmS;;X<-`jvc I=}I_QrL q$JQg}n"Ȱ:멡rA@m4XݬG`k7 Q8 K!fAMFcE=ɣ4yn]bz3p_-g8M6\Z2?x9Ғ[ݎLaX=`q8l%}ϜOe@)˟GUzT×-k؞l ö8ckusÀN7܄i٭?I%23f>y^m}\qҘEMBp_h\7/]Gۃc-ﺳk!;; aw: ]?oH&(Q aȇbk@0qwp0:mddM0@u@aPpJ \&=!MZRզ }ޝ/P N0c~~a`U Иtgi~\CF!A#1[".@*ZdAjaTM Pb4) 6]&`H3ئeA6( % J=sJF֎8]M気)>8A/ma7f_x0#) A(^/q1 V;  ̱00=1AuvawMӅ5[?͂0I? i`_Gpd]?z]?2e=-61!gu_--9F^hUcQG%|ʅ  Q Y(^ +#|rtR)7!6CfتЃDHr +$[? dݠT|Ѝ-q¹hFB0,g\%q  <>9lJA(W pNs $A%a5Iۮ=rY"F461ANrwcn?C?rg!(A]%$r և#͜5k[<䤈P@y*h UT'蘿((!K*l t]$?r8uww1Rs9\ ./g<\xpUNLHW7BH !5AC^6<@C#uRAC Vc56Uo)he^ j'"Z2 )c==9$S@FȮozp~ =ʾP9(cuyo-2.1.0/data/pics/bxBaer64.xpm.gz0000644000175000017500000000415110361553650014010 00000000000000b=bxBaer64.xpmmW)U\YJ A +$D 6I (oej;gϞ!M^CG=zf#k=`u?E诽?{>z,t, 23"+k Et DKsi3tKM]2 ]$.yedݿHْ}m,$wu i$A&Av7$4"[X^ <2\/"P[|1vcecw@reczѨjPSzv^SцZR|g dFԑ% r 2.+ø2J%ץ1m95Uq`:TxӵH/5è z0v$k̆np~3Y3_pLmNb.T`e3@.zB fx-186زPQƛD> %h|Q)mB|0h_K+-^e.lMoھsgmJ.^솳aD gQČ\"3q2YL2AP (|~>X<.?iʝIEXs[W{ok9#eR RWDcŲԝy*vqzHU[YugH U0Gdj};JEY8 hzU.hƸ!R;_TO,وo3a{5opk{)HY Jӝv>HK_}ňHiKxu\ßg$H71P.2kjg9j򞲘ј;\<͌~yȿ3z1!qjA0cO/}_UFMk@:AIӢ1| B}v7ۃѮ3I_&ct:6jȵEEkQ nTo,{&\F ŬK 431(R'EƯ?L{ev*_^E,ju,kINn'ƌ|0 #ZP nn| o/ Tf]rdy1K-v8кwny=BxZmh٧iꕜ0 pJ^ajV{+ƬjLiVl=kLT&g)#x[B,4_2uLbko|}Zʺ5c5RwċԤk8: 9;hg$p-H5.zӵreCНc*&|o^n_kKf7LK gG}m7eЏ)2c{ADrߏn y;N-<"> H[kІK!M_o?7}yZ m1vcdeoq*cuyo-2.1.0/data/pics/msGreen.xpm.gz0000644000175000017500000000533712401656722014043 00000000000000Xm[_S8b yi US!KԠXEZP={^5{͚=IdƓmt/FLy?\bCaBB¢LaB@!8,eXBEx@:D`Dk+W@AP-כQ/d%MPʠR\y@Vx@cED JA LJI+Sye"@WPflCg*U Z2hR֊YJY*)]pZvtlC]S\q 09>B*P B4 Gm`19UlUrB[0Nse[4W!Br & EVDcE~Eh[6&D"fCp$N;&S:WNYץB)VЪP֍+d +`DXt*ڸFh9r(,4O{PsdXpT+w8*dq0D\\}ngץy"tlWD#̋6-QjyQr$ GcJn*&bϐ]Q#\Ey31RM'XT\(.ȘM?**>U\B @ X :19?W>B_ YFc:Wb^'˳z">VQe#G/|=>L}&)pBhȪ٘F/,KӅU|wV(Q<:>C?l$Ci\zLIe'0pCHl> EjQ:Z^VУxۑt'pK_Dl _ef5AyTr%Dz,es%* [%Wټ ؊GY:~6ՉE0d2ln뫐c/ś/@ppe5[Lan;^_B3ϟ=6]u i430&hyQѼjPM3 &-q LѳxH,Cq3i<~Ix ~ ~u2iM%   7#ЀVnh@ֿ[6c:Z,k1iz;\Go0s~ tzK4 c>uZϭTw[,iq.}exprvۙ4IQfM^؀+yVh2u|煵W;Td~zPӽ?OOϡxH(hyڏMz&"/G^s˛uMS /ylj7d~=A.2}Rx:~NكDAӖD,fO%Uo:.'wUO۳?=?O! 0Ċ'%-oW-%8u ir5k}5̏WpN?E AȫZG^UU sNXj$Jp@I~[x#pIaĶ1| 7Dz4k> S5in *ILc3%-^'wXI)̢lz i·WMʭw7\Ӣ6G^H-#o{tٲN[44䒛~Oax}cvi?I"Z8XM'&ҮAC v\FM22vI~KAju4kzpN|/PGҶBϚg#tY=p;K[5@Yz569[n32N݈yFh_Ƭ=VG=s8 H<.)O%A.d]x[p46W<pQz]zSh pAI1|)%td_~aɱі>F;7y]#Z8htjtcњo6-j[񡯁/G<)TvF=zPWGa?a C-%~)ɷuqH }n#O IZjrvG^5 M#b7&aZroȐg+1#OFi%cuyo-2.1.0/data/pics/dnRed2.xpm.gz0000644000175000017500000000100707550521110013536 00000000000000<dnRed2.xpmKK@W\2Yu$ ") "-*څ w3P /A^~!݌^>T?u};TRF@3֚ (cuyo-2.1.0/data/pics/spInkey.xpm.gz0000644000175000017500000000176511662241762014070 00000000000000O=spInkey.xpmk1"4w^O,Ċ }P|D"b]&3ˁJt.Cfg&9ٻY}4{x~|n>]g5{r?\9[.=aoݪo<_uNBYw6R^\vʕzzԹR/NB//jԮ[RϺWZmz|:Y 0!{ 6ϵͳ(ŵϳ"`k3 \k3¶aLFZAB g0ԒUU8˳ 䪪ڶY6`Hy+0,;l20 cHKCJ[f(?xz c0[}fɴ C#W:h~(oMFz7)(#}IȞP=%=%=%UĞCڛja9*ެ֡o 8l=\ڛ_;z*vwA!kOExQc4 X3l{Jñ/\k%1Dԩ0 0 BRR{JCrf8T8Pq(Y q( 2}FF|{9@s0 lonP|1:+_ g9._) YP|M8 (22k$ޟp z 0v;^~痬=pd@9cWc9 nAF=˰yza v]{aWAF=00 [|32& p#!??87?YE|K 2DJ>5~'J;mJAXX ?) A'H'2~?iy2cuyo-2.1.0/data/pics/mzZahn.xpm.gz0000644000175000017500000000535512401656727013717 00000000000000[Jƿ֢f_j&@Z)*epL8{һs$a[N{u#+Vfd⥩E$ÈrD|z2UHQ4DrXHAR[p\/7AzE'$%ME(51 x?0PQE ɷ`Io )ˢ%IHŌ#0ȌHa"+Ece[2BR%IIa*K F" $ʢ dm$FRGYi J76^m5A:HZHz3!i4d]i$uQ6()( 2*@e[eX_J>bpQv4TESaAJVL+VU|I ܄ -Rg0}Ḱ4tC_˾o;*fh*\cD 7g _W$-o@CWtKS9H۰cKp: &:\2H[p*Hڲ'aUyV`+Kh/+j 4͗M1`-'k.06{W;$306,_1 V}4]3㟜{XjJT Rý)Y4-S[oX`v($&@˻tz7Cn}2kg?6- `Y#KC;YP-XòVy# s~Ƀ2܃{nOo`zZB9F&>#0<2~ n[FnW+#^iVBb y7ⷅTS~>\>sɵy7]hr;wn>9$nLfgnOzK9hP vNȃi ;'x3%3=zwMvNx dp f(={W4~C\[nzj3_׵FZ\|zW(?T'g]8>aP)5ӵ/=yeS|]$`$<{[c:{xCckGfPCNvủ*\U+(? "F8>wOJ{{y g<擰%O FH>8c5=jA/9?ʦmZ?xs<\1cO=E/9Z%Wjq/9?P/9?U;?5?uE!8?PTP`x9Z98,ˑGxH|?,GC:e9\S'=C&Y<) 9xf/LJUW;1|,Ň_f.Z1t0m|2|{r_ SmjbK%eI(܎ 1Ik4o__Ε? q2>LFA|Ҡ]a~>͐| _wvO>)cv$ɒ>C:4h0뻽Ah>SC 7%8Sxu4yF/Ç{ͮZdTb >P! o{GX|cWTDdح+ ]>!"lH`7])&Ȃ$]1&bW %)>"?ldAja7vFLpEARL!BQ(R17ztDx%mDc(v%F )c7+H*1YD:a8m$|UTʒ V%(C+=/rq iۨqP+1a=Yy;SxzT0|Y{XC⯞9uA t<~ciz4}}X\xs1}f? kZu tݓek3H(1)?/j|L g|dXOM)?A;@۩{EQQn\CNfk}+A6{3glMW=s)`X/5 hoalM͔QX[G"b^3o:=:NKt1B:|n/3kx 4<(h98Foц5#]wNqX<~fxCQu,i:bᘠ2ǩbZБ+O?뛨LcuŧcZ~7&6z|䟚Tѭ6aF38_XbdfVX|j;s^GPXfN>bͣ<2ns=t.Wl':OyćmˌkxOuтR'wDǓKXN޵ -ˉK"1$>ٱv2s#߄QIaP)hsnc' bi~[V>ּKxȘ(|-1>hk3K '[h˖ym0r`xZ~]_"Ƶ'o)tFSZc9Z+ۇuf|a;zdo>#o^hnF-˨!I|#% Ge:k3r 4}}s3/X6/Ռy6Cgl>ÌZT ֎572]BUk\# rti82LU!+{:1饠Fz2?)H=YS/~G #WS>|GGGσx<,9Z1,34i*2adca&xgTlCu+V'sЛEFm1":;8c`GuGJfwX71:Na@c.;F:;켊oEX='QFsMF6c1;$Mc|8]1=OUӯV:N.aFhs¨u -~qqV_lhڌR^raT(oq`D8v=lcgU˥&zW.R4C8|)̶QWMnZHto׬PT!y.QWU%_'3XGVeD,ce<[fd[ƟaG!ߣ] ik華͸fc*eER!^r \_s(Q~(w aH6c?>˨ٵ:jb2{Vd2fF~t)YNMOk00o uh =9&:[]38&Sƨw[8ȴ|yp˨be8c~aF=.g)4XWބίQKe8W(f K{i6c4b2:VhI 7b/؜1\o5ka5eXDz4ߌ1-W4ne U> Δwlllllll?|kVnkcuyo-2.1.0/data/pics/itrGrau.xpm.gz0000644000175000017500000000442412420650610014043 00000000000000[S8S IIKS <> J/P-PRe],˒#]>iljX=a盓://o/?[~'XZ5447~i}mtntto@ZC:"#HH@ҧ!B!HHcm^t6(#>t>1#cڹ@tctKJ;iut#C]{JWHRJt@F@NitZ@IRC#P/#viU} . 5+JԒ}7&[j>;t6:{JwH/ٻұaH?ҧ]O#^Rцμ@zMN3y} }@>#~#hڪ@Z6?}@:@KC=@)S:F SJ7%oQX;0.c" Y1$XF`°gJzј7+ ԇyưaV$XQK|]/D;VgJ5p.* -+ݖEH$ ECP$" zI+z7+w$8a[LyQa{d ډ%-W )L1bE+  d„L!V06 <f"xTƢXreVY =N> y& Ú1Qqˇn%e.2*”d |K\GRauL7T2zhb&jcQ [F!EdȰ  3s-0 9kL1BZdbMFVQZ[ `Fg_xd+h61\ˊ_#Tŧ z40Jiz)7uY”1l#bDBg`㸍$E=F|Jk^a(șF}"lg)0Ra0.pJ3VhpE6c_b":gv pM# ـ 4Fو0pd0VeP_Fq=/Fcڭ2*71? 8*;dgvP ֊;bidJ2LgP4:\%:ZM뚌p]2V }_^%u<;KѸ{^w|Č3?'\ݭ;9+\r05?-x\BNSa\k CG9;Mi|qYq\c \ fe̢f糸wg38g,xbX;9,>b.XASi-8Mvzg޳G s=3]Dy|p#|PӬ7ee-Re쏅$& \Ifm)5r][W_Fr&k}Ygf;W!g.o-5}m8oQPeSBFpwl:=ܲx[l[d{س:ԡ/w]t_ o\ݻ}w>N0~:RQQտ1W6FU% RտJPտ3_>/ԿR+]O[*R[\}nb.&-UhKYMi 6"NSp~NQ; NQ{ˇ!_r% S[y1V͇TZZ݇Wjzj_= 3WE A\*.@Pl"%URhF*J+4UeW"տ  3s!`/G+ve'X$ΰ֖lcKnyFzå:J2:åш+h ;g0 /!)J"}n-ɠGUZ? S+vkq .EQj:J%]GI__eԿuʬů5W.\ -RZUR I <P4&r[mVqE'w+TtUJUWf~0tcuyo-2.1.0/data/pics/inGelb1.xpm.gz0000644000175000017500000000366107550521113013714 00000000000000<inGelb1.xpm[M7=gERِ!6!c !8iRU$L.xe<~/_L?_||vzۛӋ~ww?߫/_My?ޅa}[\wkǰy6ta۵aֆs =EZ+~\rXRsq<U#9TrDd.NRH PEv3xYbp{Uc?#^?_\&%V!Mwf&"V;;8- _8`T6Y8rvᠻgr{' "¸7]a?ii"cݍQcjK;n4?1*Lk]/d-# lk.P3 & Vb &>n 'k¥Ϊݤ8/3! ׆pq*ЇCVGH NILS4N6Ay %Q) P[VEHXCH v?DQ.DkIh0!$ї8␠z-NOVb.m(6MZȁ)X]78.9.UIpjBBO#(a%E/biBnڠ(9P 8FB4y^Xp: kprQȄǫ8/F+@-fCYfB&~EBd+ @!c,!QCB6W5_qd0K(CmU l}U}A }coM-\ Mh&z:/?S]M#mg{ #)r*%.+?7pfG-'}3)ίp5g5h/2|̧{j08lzGWȁsʏ@" '( YGO&a/89P  !&wbs.DQϯ-כ*?k((݇j;9'/A秧d1q%B+ YVVZQ=2oh+#ksП~kr _:pQ[Bмm!eރּoIP;q[o>a?p?4í鬇YGyBS|W bBcuyo-2.1.0/data/pics/sbKaeseS.xpm.gz0000644000175000017500000000375607550521124014142 00000000000000fVo=sbKaeseS.xpm[\E_Qd_RDhE!//<wRsMeN_˜>UsCۯᣫ^5՟ի7o߼?~zɧo񃏯G{Ŝ}ų'Os6/o׭rPool/np0\. !] [5°ܩFTR sj1&\{Grjb|2k12I}߇\51Jmt8,^Aw Fǐ&&~1\_;!x8*@QQ쩉=V)e1XyE֔ =~2^42UOS^Z Sְ"pתJo벓Rb#n$ L.F:jO ^ Ua)5Ts$-;! ^6n=AKA-hf2 !XPL|23o9R5DyC C` 7J!"#yeq@!V%MTa!錼ų܅pa0\. p GŴ(MeXg E+2Jpf751rCLY/l'ύ?|eİ5υ!-YXD/ ?LCﭨg5̅Armdf?V8 b0,quy=? Iv֨G-4ALX z COHCF:5fI5r}R#u|!G$R> 7O6 Mv[B&kgq/SVvlM'pC.yirCoװ̪!@]\VK!B6aA:BR2 3?1x <S3 Re]V1eem g} ]0 s1"Ærc>ϰ&cգ7W[&;bضfUTA5Ũ(Of4zr c~+\t =$ڲ h}kJ0THS:2SVej$), 4҆&.?`yt)L^Уv>z؞ȀH? ;\vf<ݛ$c09-P\ ȿ8 Bc!Jg c3L 4WUAt#I1@aX rLeJX|ij 2 $!CU:L `+uƩh,T Jj $$79bЍ-VSœm(<%nS4Ĭܮ)$כGw R"Hv):̗kA$ 6u2QR|"1;/A5%l)>(4PsgvƲb(IlWSOt}**.7cS!Y0mk(QEǀǨC2v]2Jv<oH\z&|J$G%`l0W4mv]?ļA00{j)`}r7pAGAk70AL]a g0Af=p3DnƖF3&(9ռ;@ԻHax9[r'v`:NPq0z#˰z"֡Ȗb b|$z)Ez 7 D, ᠽtUhp} =l ƃO'@>`Q}\$V4dK{l.Kխ6i A4X<_!]_@k[3SO_@=Ё+?nb =!Y g `RbaKi";s_>4?] KBcuyo-2.1.0/data/pics/mnv3.xpm.gz0000644000175000017500000000027711611542650013320 00000000000000׽ 0=OqH B)8Pl7m!oH--T)ь {67(ޙkwHheРA 1ƫ%!&+_hРA_F9ì,c-̯իlcuyo-2.1.0/data/pics/ipLinksRechts.xpm.gz0000644000175000017500000000143607550521113015213 00000000000000<ipLinksRechts.xpmAk0+Dd]6M-KO[; F%ƺ0ӓ%S4 KbI/=?hmlpMa[gl9gl:~=Wkv>槦AWBw9_M н^=.M Wttgӥ3` . bCC>80,2j U.3^dH4k^hBC6JEB.i1 QqYf51Nypn/yF4l0> h)_;1עj-\ . |џ"2oqI7Y Yw=661GGX?LoGAk2Y/dQϑSHH Gv|?JBn ? 7#o 2x0oHn3, !6<`l͡a:y(˭_ӈe"b=͠ET/9aS?~#|iq2!iJ_?FZ7e5|c"eJ `{oN# x <}( Dh`CJ"DJun̨LjШ"Dr1nve#k}'hOBbh"-B&e%Ϸkˌ1Eea8f H$cuyo-2.1.0/data/pics/mdPlastik09.xpm.gz0000644000175000017500000000267712412223266014543 00000000000000}WJSi+ukFD=JT^~vwfZ{Ϲم3yvv'ʒZ[Z~>uamgԞi{LQsZ)-Ӵ9JKLqL|2/2fc%3 ,~`b J]JʻdSϚ6 WQUlQ")RfL>Sʊ&(w޳Vɹ2-%DM4PiȀY#RYV9$FSdnr,2+2< Ry(,p1r0D UVd,I-DI ,H+HJ.%Q*9|gհpܲW48. %%BuE7(U^iKW%ѻz+6iE0Any30Ar<eA~B(L % (S=Vg0A5Z, Y'KoI5A&Rv"1'R-^ \C_o=^I,]×7Q0(M ٕ;b!fb!fM3%&4[x1 d!Ϸ.N[p1tրk aE)ID(ka+`PC!2 &<b(cN @?Vm ~0(6cy 08b\ܝ \!L:ĥnա?sG5z#:TwB'qop~}9a{Sue,w=ΠdoZ}o5թ a*b D .3 h^X_|ľ؉2;BFI},>^]rsJ_qoàe7/tE9:-m*Ft_Svs%EXo~qrw~pA"Y]ƷڙP^cnC9x{6. {}6 оhC_|@8f#vb!fb3C`Hn ~{wl |dR}.ua0\ɏZhЦp'2pCQ~2qAu֘S#[,V,F,# =L~ICB4,*ՙYY^|}TaoKjÎkP4ƒO0:v:qS+Yq۳J˅ɴZJku=vmG1DyhZ}N+p^l~fVR[DQZIcPrA vujcHd׌K֊w1bn%ۥ&cuyo-2.1.0/data/pics/blTop.xpm.gz0000644000175000017500000001055511647365001013517 00000000000000NMܸ%-ǟk^۷9  "C =$R>ȢVK0mEElV;yN~߿߾}w~O]yg_zyg~7?/˗^~_ׯ?_~z_|5_?|}6_߽+Uo>*Oo?~\_]sBxRuŨׯ_z{_4Ux0J?~!iNӗL?~A{f3CeI?Nhl.,%5F%!D%ƙ4C%ʨ D**U Ӆ3jU2h( ' erZkmPt RnYK$UQ[J@c?a %.Mѕ(PXMEm݀a Kҗ1&NBe 1^rc}i -TϦưRڧ&ʰT{)17N@O2at6sDνTF3V>ZB  2dXNzʰws'q,آh OxB4d1'شecc^u,5yGU{f3Cܞ93 q1C\3 q1C\3 q1C\3 q1C\3 q1C\3 q˸=s!n q1á3(~r/r\|@ Y($rdp0W3cpWPy>1Jv'` {sJ,{l.â8IwRPJa"C#tea *]CQ8ZU; A?"5p`>f`y&.u`a.%M%f=0tOa,"L1JelD)GE^ >Ե@{`$g}5moլ]q0ܾ'3i\pחfkUwD}ئm1`< ѱ}<N%1g8} &[]|Cu2iC4ϓ{R.CiaţrjJ+fv6'nBedL>_9!JQS+}zv@gY8PE~n3"tX;heXOjCk9Tˠ.3 eP?{M32odw+`h_׬P٪)9S]0a.zt7(0W uDzLR)pR8uqB,eP04 d;]ʦ!K2,[ʬ,%5Q|H_t)=3!np{ob!.fb!.fb!.fb!.fb!.fb3!$ó]1t0EQs.QBN`3ABNA oWB[1oNg=ki{[C\MWI Er `y&9))-P࠶gXdU sONJ t7Vu9=ۇq~YYk0,.DE0?MLE8(r|ǗuU] MA`0Ti!2q {/0,ŕ'm:ݍ %OBF*Q 0N/W1]+&s^XXJ %mt7J Zs4w0W hA܏Π3a w˖0y"]$( Ӽw=:Vz<"` zaۜ#rSzgi3"+Z @wô8nڡtW&n-ax:7xa<.RyF 1?sm.e>z=e7#)T]abmDҧA^<}ғojl۞- oewfz~7ӌ#c񹝦|?-/@=-QE4xb b!.fb!.fb!.fb!.fb!.fb!.fb!.fJdi왴vkJ1LxK[;U\!3<.6&MRi!cs"89v֗|9CT*ANm& Y1 J\E&}p.B# vhs2l!:E}[ImH3F#1,c bDL 9!d쀡0smP&2<] h3}!EN ;bhS_aV7"loe`؇B$'f]4@!3B*-2,"RXtU@J{e&B2م.09eR&<&o@ꊡCثiL3]YerIER r0#dMʚdIMVdIa $@$3y$wO) g>fR]ɒd/ƞTM D04l0)ÙI&D2_,@#C8*r$ugsk]Oģӑ gRA5Hߕ1#h Rtt%n ]ݓeX oa;? bxux솁!jC8exBY A @jg؋u;Ɋ9\@74μIsȇ+ ]ĕ wFL:j) {Ƥ{k`AVèG&}IR{d`?U9B @%x, |]7@T_ao9]hr &_1!~; C_=n! ACbcv ]%PL~cC{ \q ;7 $OraoBO"td0y@tZ>c < )#e2RFH)#eQQn2odL1ʵv6,?QF J3FTkCu'NFJRkw S4ziM\Z.1^ݴ,+%zF9jW: 2ݗ) z%bD5Z; Vmx%qT5{m&Z{gQN[ 2lƌq,a٬=ΝL :tNƛ1-%2lQ|8=/ܲypN8ubHf0G1UQcdeĹxi2ʨT%%d'q0X, ~Q"햎#%ʘSF/}]&a4&~,׋* gd0 zTn}X1(ajW5 hKϽG10 2Tk-滏J-u14J˚ ay_J䣺$S;k_k}.ik07~B|\*Y3Xpb~fU,tl-+2RFH)#e2RFHdoo!*cuyo-2.1.0/data/pics/mbSchmelz3.xpm.gz0000644000175000017500000045766212401656667014476 00000000000000sE8q%{YmGB\R!"Oo9xVhntg*Xw&;?m?woܜɧMQN'~ɧdgmds_a]sWZ.,ˮ-XOYoYXojSc^+]a+)"4 몊}%ӬJ[~Q}X?jY_U%cބ”󬻢,XU^b=9E] u.eїw5m zͺiWg禜Sx[ q?:oj_C7~_5޷SؾeD= vy+o`o){!?A6D>zd)/-f9/޶%6C<~}+ ]ݎϛh= ?u)mzWGk0?󼥂yVM~$'௬q/+c:OhBr^<{ =Qg-ć;07 ΨˏfVUh5Bq8^ X;izv?~~݅M@檒C0U]r0;G7ym"L5ܨK0wԭGs涔!aNh)žN?07607R)> ͒fv1}K40vn0mZ0)~ ޷EaFaoc~E`aײa.t5.şeI3}ACća)bnh>59eЌkf s׷!t-C0}_'%Yx4a8;Ցu\`-63aNq(J/*_0̻P/ 9Mq䀳8Wυ+zs*z``[c@s*_f"2}i"x-ԋL <z!M0{i,%E>v#P`Wsm =V.6g.w:O9ֿ꫸_Uc;yOW/ԯ`{14qz |C<ÿ`q_iyTχs_~Q`<.h<4yN݃5o;|?yDK?^<=}>`oiqsKW0VhgX-s;Ƈ?'qu:\Q5vޗ}oecsZD >NsѼ9uLIy=LWz|0*>SGyatbLyn؈=c# 2Wޢ~-rY X <џSa [&#sE@?wǹ[+eXp=;y#^s׆gؕe?sc=w7/󼫬_c|kП[ob?/{sSi~1UM'{#c1!ď)& aY|.o^sO"zΣ~zyn>x z ynz͘t8 <}kBD1ϝ|d /ce2ǔl/c0k7>/k‹~a?{Xֿeʖ?bE>bC޽ڿ̀l#[Fq"VS/k v)~{#ogg !>+K'ҩggY>q$[Yd8;@#~ tK6)zAZ,C9a_>/Ot#Ȗ>91zKOYHZ&lc^{gUYU?:MN֛K(/$7YO\d1$Ga c,×&-qU<4CvdP\g?KBҧn /e9IIQvRKY~U_܁{os?̀CLĞ|I_W &\gb(+o`$ƠXÇߘ H<\eRAןf?Kl⓯RV?=:]gemA hs0Lʼnk$p ?|NѭfOd= XJkͻ{;FQp8MW$so b7J<ѯt2 =&0čؼnyZA }%}_?y'~2ŀ}O,#\8'^-V?o1`ڬOKC~ÿ/ 7XJOG <kst;ɱY Hf8|/8P,wO e&>`Kd\#nOXO$ dP'cJإ@Aߤ 6s~څ'7%}ϖgXvoD8Gr&>Y~&HwsoXqO_ ,sg9sH9? GELnv-eo{^qft-9ɌPrT1kL/'#weAψz(M`rPו>c5D>CKG^Syj(b@lj~ǀ/_56Q}o&ϖяZ1+Q`,h!]@GUTE4a/@BU`tF{myڵĥe%Hcw[^?PXY-]|`}Hs)L/g QOZ6M'ø}'eeZheNңʷx")" y9 =Y*1#q+! Db@kc@4LԖW84Ћ)de ʥ@}ݖr,  -L T{zĀǵ_<+`3Q!G|==_nD{@`<Hp(^Qdҭ>h+`=t1/v~ܛ$\am3$-mC{cub 0mO3@ݖO 0 GoݘX{=<#/oF'}ߞQ<7rf[j5fȃt0x` ~y;GgV]8n?\[L*ʀ{/e߇R _xE98}Ā`9f-=) V^6(;%x5D+Yzuf{c-X+>g@5~b &q\11 ?ی*e[\[[]iR4g}1ed sA߆sKk@ab#@q!p}9R߾G1+d 4'1o9CgsMN2(_j\/?`h;V{~F;wmdPUCuPA t߇~^e=DxoX??^!ʶvv?`Ӿ%yƓDa%PYuzZ+ba{b-yKe3*/ p W- L~z:? $c/czP.N1+2C]w{.ɟ .Ncw)6 /H-<kK(U,GQ J36";~S4 ~3%n#X~7t"$[T 0' S$˲$ i% )7΋4#ฏhV{sT ?u%JO Rx)ǀyQ ex#%|(PE.1,ז@7 K@Hkgj [`$О A 8qwD{p:+( v@*wo}*Դ V%hw3`nva(ж?w[ AvCCd@営)fjם hcTXA _ȋB;V@z|k~iO`cQ&A[0Fs<b`@p=0No?0 Ho@- \P _ޣ]x@*y9)rA_ H3@KT' _uM>6k' nYx{cg ,p 96 => m *Vd h̲ :νF1f@ oG|)` 59mO{w)$1㧪820&a]]_'^!|bvHHd \Ccn!b@\PL59`0}qG  Č ɵ*.o$?Y2mFM:A;$ `c70`)Qya,y+M4pD 7J_^ g (:_#lIB6ta@UU $c6kTaz]0!?,,%&>"[~ݲM,O;w?tߔoMpكO_o`Z|`XY \t%Og[eI*s3g֓oK΀MYfw1@\`f_}ۉ&@@Ҕ/LS>}3eKˡfIccō'2`Y!` c0рwL4LY Ph"_T?0qkA{&"0_g0 DoB[cg@\O qe<%gY3t.āV=Kno%7&` :@;>PߡAc=.C5l82l=;W^qolM1d _#;Aъq)= 0gTW ](.Xd_إKf}`#>pG X .4g&8bWf瓛|wAi>+{̺J,Opک| Em4oC` Wu%pGFы`ѸhD w$2 xZxGEgbz[`=Ops'lۿqA,_Fw>kzaܑ%@MYY PL 8r'x3■I6d Dめh7h}1$1[Ѹ Ha<=`rP|WW;˄:`;OS Tn8)Xx`_|%0CaD;F`WwH5Ym lG9B˟0 9BDS (È,2h!gGmYt]]0% 1'7/wo#ּ[ܩ"_ɘ  X1 FPËn*RMzከ15Hq cBGG Dv8C+(A7(#%~ ̍ Dwb,'{4GQ\Dh zU"}^PXoWkc  G̊;FLDw|! X5َ X6Be 1?m9T @'T \ o,a n!Ym{~MkQ}G_Ȁ@DvhEbwhoAa-8g_\:F0$1vaޣ$ 7=ٌ[t y~q" л6eCv~#;W$wב!Z3'$rBXP"v@-qXPϔD@Q 5ռl:q@Gs+h5D1bVi6MxW0IW7(w<0zX%(~wӛ,?#+3@Sbwx|F( Hy׌%O8Kv@;F{I w (V1O 66KXٱiFp2 tz;w {sxHJh 珎*yJkD $'̀ ǀ}( ⻕y:e.K! ,ʪE wM;[(oof0xMc1#9Ҍ2 pZwR9"?g+\ů3{mV˯ S<玐%gj"v@F%ujo;F̹=#'w0&d K> &=hЪ ubPhLN+|'XhWUN,)zj$8;Fr,pج}Lȧ:a3;V>M#`4떘CZ5rğ.؄`~{k;@}Dw4k[X | zBLP#L'<8@X:&cd+$M9 rף[0`Dsh݋P`cư%&XKuvh @;J;bEUS_`&C5 c` (@ 08TS_zئ]O6Y$ `;xrh8CMPM C?.?6TK! lKwf;Ȅ75cv8'G u":?3:kƇi9lm+W}r Jf~; d9 i 8Pqu6} ;HzA`/,q'-QDP`TkBn >D ̋A-@\ Հ`|F§+tJ>}%y>93-'GH6L\ȏ{OQ[0S `QhN݌P ,>ldYRe\{R6,TLc@_,?r@R{EGa֨6`2]buA*`~1~+FĩF> +w6+XsjZ@w9) +y iLR$XzuV0)O /9@x۟ŜP~ BoS1hst-Gc?49? m 0ܮЦ_}w7h{bŐH_J}#!բT BsrXg0f`Y }z|eEs;G~A蓿\+gj_5&w#* P{5;4 HyoxF>U݋[RŘxpbmd4gwsr wܜ&_%ۿJwKoc@Y@tE: cr@KOEs~@)V3Dѯ($\SWjiuϕ|R|w&ĀL2d $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKg)!3x7hptO)N䝂1^n~3Lҏ2)?<$> Pd,f}Y_#]߃O+m~TϡOQGwHOu[4lFoEo,~olڪw]>7e1f㭻TjwA'Nd9;v{J=@0S#l7 ?Q{?P~黅lF+5Ɂ蓯8F~350˘6F[{w1`_G=>9dQ Cj}% _"ܗ)o=?@c诪[eO??u{o?Y'.n9[+PnA/% gϿ S-zЍ~hŘ6 S)ty[Ї:){]i=orNwG?/&-avky.$k >RoE1p<0U۽?1;\Џakz=UAQCHhNI О@Tc߅~-v`M1E.rq];]iV`a;c7m _І92@-AoR3B= # HP`}>nS~wo ~X?_8u`MguWK^ ]Zz-Hmؖf]=?1`([M$IZ0mHdP6m H Sb(=n{/|[l"ʀXuzáMӪ I?XáuT{$4{a?OC(HY)8( 3Ů= (Qh`R?yhXlј`j 0I1z,oʷoXbE (p孪}8 1tT"v-CNYyH@FE?Tͮ[\ M`@Ţ}fe _+ntPeRVw,4*6 i{Ģ_w=jLd[}o#Ph}[HVƚ\v N$pIsGyCZ5ǧڄqUaE3u^VExԿ1 emvgi?쀭%ߖ'$zB؎ zKfdQ`}jO]>-"Q@^?e@yHneQO׵ TG;`ijU)vOOU7 ɈL(G0 .>RWh=f/t ;Ā.Od vO ~%C'нzOS&QOo'cKx=!'w5TbMzzTi [Pz;|4v(Fx~RM3ߣ-"SíY|ϙhE Pv. FҎ\j ', dyLb}P\0Xc(Hbʥ?߻.?|Ltj/bs= 5?[c`<0SʙuΚ_\`%=u]>̽|Ew-5ҏk}:HV&`r2.WXnk}\A.?Y-1H>U' ?{B֘~2r8 o`L!.w%~v\lן ^-!|dE75;?yPH`UjugcЀ? bGlՊ ULqS1!?"y.ɉ!>@b}a@^ ؁0v9T6~r@qCϖZU)VtK<0FߍJPc<&)e@ s0`STFеDYC$,̀4*?Rz }"2`+q ص|pf^Z6y&>b1` Κ&vԀ)fobĽOP O#ߕa+ Q!%էA(m]CzP'@o X h{To#/gݙESס?N5)3יF ]Fy'S&HCmw=Ā\Q|1,CQMrH6Yj(k.1<%6:8k!RYA@V%0HtCx~2k 3?G pCi'U46h tS{7 XOzf_c[͇Hg+ӝ03v7~7{fwyt; XL4 c0M黬 6ɖd,T#vhmsQ^ i׷3@2`/(@Z7;,4HIfb6fFrw0i%gw yI}3)ѧh@΍ :JG+V1{sx;0Q!n u '&y~}N̎:20BkXC @,;)p)x2D>MAL#b@Z}w[ ? uhy.V{AeQqF`+-̛lFJˀϔgXO+q˦j*L<@c=t ,=R_3 ifwԥ,8}NꜲ1Rla0o" Dt{qe }Z ?¾3`v`D?lg7 (*8N_]Du_0e^o ֚y>ЃEH 8Gw P9lc@dt @NT,n~ǔ%ܑG+z"8юcl:);`ud#l-% Ϊ$o[@?x 9.dIbE V؁A`M,%> `'2ODC(茒-PV, Ps:*b6|ևq },ue7p'Muh\+d>mɖ嫔-0Ys'@р})!5lC" ,m%4ޣ_LqI(G1 ^2V8?k`4w [*lp]8Pcs hgņ1c$/ 6?W 8h5c"6\7hMz2x. CmY}К@X0_ +F@ x_b,/ ހ|?θ\ox/18F?&d@3@z 80kb 2V!KOg@ ~1@X禘}7{l޵Ĉउ{e ^% mYuW- \OQY L `@%b5m h8Ub[p^Xk<F۴mm!DwV@8& pڀME0&96L7A,fM@cAa2,?z/y 01A bpڀx0/@ϯF@ހ}m xAHWg=$ >-1E וh?` Xア2`S1(/pD'`ޞ&Lf=j77 '?xCvk3 R߉U&\!%` _Z؏DYf1@[eH?Q7" q@K@̰iXc'C#9B eM<%MyT5@>.PV?#x[\Y?ﮫA @  bNw]`F=_t{ p-K\==5}1f,˾!/:e^9-o}`rV=v Y1Fg "rG*:$BA! w%Wj>+  8;]%(0IB;> r=Pv)@r?ghM0Xگx`}ĀOk?;F bZ0q"̀v`,=^pt&[~m繅RAD9e{`zabpmr`.\HnH/hf@4.茳#Յ8 <Ā@yt Rhcиy3˳i%cL2`؄lHUa@ uLpɣYѸ /-h\0VhX` DN0g4| Aԛx`<&0}h  `*tP;Fț!k6-_g]΁.l`́7 KPࣶ,qe J}*!K,Oa|`oh "O2E 78^A&,jhĀ36o@\B^☀10O,v}v:erfm P9@k߼<0 У[1X x/3{yr 6}9X5  e\熁Ti,n0Kw;f^!uAbkmgiYk 8-ZuEߵJĂ A,gb,-'tV5Z =TA$'f+߷H-%fbmYD7t~icT)o1DyB3NX:sEsfa }-g;.o\\ T{=Y~.bVqݏ݁/60əEN03.]1 ;􉔣`faSݪ6}=I*ڎ#{@@`>[.>EX<*+>i14 |' !+H*w?^!Џ P9@$0cs9;@f րq}:itPgākZg ϬwD '=˹3SCozaWAH g;o}"Xt%rt(xkw 2!&砧C$ 13oy8,ޡ~YM5Aٟp*0ԭp`o{Ѡm\3 M |]M|nD7] hP + =y9yLR$HD|9 q AN1| 7n4~ vB+S -GT{ x?~A> Šsbޠ!ƂO]~Q*X0qVcsc @L]{  P@ARc8Kʣ3_4_5&wso2hm+?˯; HyoxF>~^<:%K. /$d1WS߾z S #>ѷ1 ,E}#nџH/Xғ>u7}_k&;B13b΄{nD_gX/Us~ʯYR/thO廳7$dI&%c@&RHgO䗢/'?{pZ>b2H:1C+0fwSb̃w)2>w߹ޟZv>v>v?ŧ,{,JZ]eSD_9~nOU~Ze{UPO }g83 3Xq"uF"|n%c( ɷV̩7[ ߍ?/  }I`@}ri?x|]Զoc0}}GSۇ꨽] } (QY}wG^'?}Wb@D;e`5؉0lSUA'0'E}muS4l>@C0/鞿Ǻ4ǟA]3=؅'uB5;;yB#Ɵ\?Țpbgy\ƟE@Fjڱ1ϱ׷߯O0G=Id#󟀜(2S=X9e7v08 (0/{?U|yxfc@q`a@*[d쥝оfM|uQ+jWmX? [28^GС>0]鷢x}聑8tS>2 I_~B9sĀf/т?_h>30-`@d>X!e'iR_^CCÀhLТ?*It6Gc*tghL/f@4&׮o-9 kEʗE/``+_~βp0`O-5 vn?A>`-z?ԭt ގS?Cv&wOVʠ:v?hш 2u2) :,!hlF3U,>cLL.[ss@S̗*/ʗAU]5h;q@ `@tmsZX^"𩒖1)cƟHz'@yV /O#l?! [H4"@(uԣ@'c8B{2 aʫpW` Fh]AW{h;A,8}Au\ 3Va2oF  c8j?@*n4 jG쎝D= PWT㏶]TEv R$+?`' ܀=~3S=R>̰ -n|f'O|*p V};4iMg5&X۞+,&H["p똠 гdjDnɲJ8,$e ~]YmI1HpY~\X]'8pjCOsfy ^~Pm/Kz~%|R|5(Gsr+e`>ol`o!,3Ї`poU!Wu@ ַ@D$Z_[}-,z*Wj? + *d ]94@M'Y XJ'k8j5V?:_B{5.n<{1H{!0>D5,wV@^}"d 0uX#ٴ c@'GA'Q%_R7J@|`*J?GE'ԇ[z`'r B/RV+ngdYۢ,,H?[Y=%1R4Ծ&СSF~ f໖)x 0 c0Nzp<d: h? 0;Mծ|Ja.z7F#uUW /<K d@P#e^4 H=sQ u3k?g ygV įG13΋l]Jр 0G|}r =Bp >+ud@V ؐ$Q~+'2JܹSٿeВ '{]1@;@3={c3A}A)Oh_2 \~hg1R0ܙ A}yg{c x{S0![8ĉ3L 0;Hԝ~KnLC)`hMPb>cA 3d\o'z t`g; P~U>Z쀳 paZƿ,c@h dBtO!Kzp /}">~`ǀ잯3P&")`)?R꿒3rY+|de@tUy K 9 VDh(5~~'i5`pO[`Glgv}< ?Kxѯ;#+.0p|=?D o{dX?) _xe_;PhC`탻AÀDKm!0VV Uų, x1)gw FN_ot\1`4Nzp$.`)zg@>*0d0(8uQ$3@VK\.o0"إsGrbR| ;ĄoP/a4̄ ZHˣy`[x*=ոC+@@; Aà םbd< $'08e♮Z:OPXc/: 8eߗ c: 7+rϳءR{ p]QyZ}&V|dM_sR_UY0`gx2>?$1?$UUO~d,,^Op@{%OA 1˳`O m٬ 7xO>k,}|}c#'`g@bO1'f`,xo?)z#Ed'_S>/d^Ӗ@|Dșz 8 הC ~IHԴ+%3rdo>xK]6o rkIL'1@騠:=]*Ā#L}ZlQ5% aoP6Tr*mQ2:蟀'PL >O03=P[&_ {u _0 h ܌G 0ƶ`'`gi;0=.y;F  !!Щvŧ@<0)4(WDg%`9O-P+諪y`@K'@ ~1b[7w>Ԉ `x9>s(d mYt(2 hpd 1JG(G^` D\3 [~75\hfRA?;cf} Q-#2`V]_`(EHwGF"wu04{P.[CWd {4 hh`nL {0-_wFQ%zR Dy+ ུ'r/L(Yo`} nז@#1y* Y7'0}wK;0`)v˅$|w귺' >x@{` vmCBPR1BXh)ME`oxy~7tLjˀ@0 -@ϤL#[+B@o rϓ'  [1:x8w# `1 >gc@'; mDx`7P7 Ld7;F@gakYk1'5SM 6 `M]dr~|, h?GAhw$q-}`)`-K()cz]nbN*>){=XpxC_ o0N8Y0 G\Dd-`Kd?1^>4P 890 0xߏ6=@maeeByxj EYÀ d-svwPS8Pu;F6>>Wׂ@?`5_4 a~_,II{$> 4 hؘ }DFdVBbZxq߶' Cs0w*$0,}펑s,9qrh별l1A>o0h>;MzHZ#$8HpC`hmlr!{]ā# sX '{[ RL0sxzc `<2~8{`h&8dGp@ P0"bcN]Th~4Y?_0"*:Pa d Byip'ś8ò MPېԂL=(n;ajd›}ұ;%3ONx/X}\qCaknX4hY i}8 &:>L?*Bօ$[ ʜ\P[ZL˳C&Ѐk L3! g6p`cA;13<_C\HM. B"}cuY@v_]bxNsAX&DdžC2`F-F"m"w(yVh=;bHԒ؂EuV[`Ğ"YbN?7OHL~)$N (}f &N ѽkxg+}ʟڗ'$eN:,CsB)R^ڿt|BzSsrXCQ!NѮ=?8Pc#u{6!"CN1~> `>' ^s\,h~1$RRH#0g5:c8:`> 1Wu`A GUˢshɱ7ZtY¯)Zݦ ̀ ~A}8*vԌxsJY:f`ޫy5)//hX.Wxpb-P/fݜ\ CoXy?_h̀x"ȾuOB@z,_hIsΕ}ӯQ @ZIV3^Ȭ^^-Uʯ+ݷ7[u}=ބI&d%c@&CϽZ&|cOoBA9H:_Ipf^b7Z /wwvJ}bH O&O){i-=?$e_/ 6-5~-gVG; *Nj\JvîOg3KA 9"?cjDݷ}N%S ҂i XG} gU~N̩o?R~E=`M oo'F/ VWbOZ8qWdXށҧ MnЧԎZTuHeƻ#m7@َSkN]}=S>w~ ?d7]GOjZn %V|7FAY -R~{t>dU\[6gC5|>łX?Ƿa'1cGO`{`rWŶb2X62|c_,GFA ^_!@h㯣>=P@3@D]d,c@GbطS" ࿈ j86L[]Y>0@ i3c`'AR|WN$+v/tE Fqh:+m|3@~Xecs듪-daa@C nog@(*,)Ā} aDWjX0MxR?bʟAqeP`_W}S=Z#LX%Q<0@@^-(ݵS0f_ @Ԑ(#Lf4G-?ӵ/(C_w Z[`q"m$1A 'g*?@X_Z^gAA^vWS< 堘ϯ]Dcy%0`0,w4U]?Q֛amp5|N [`Ho쁹5A\ tϋ` N.16E_7Z\u·",!TӇ|WM س] >"僽^]Hmߥտ  ^tY~] JDb<K,ΊSZi}Kξڟl+ ҽ~{jԌEsRˌ0CVܴN ͱ}k@G>t͏kચb v-pX#KC!j0 ØE>Bl%5l)uSTb+w0 |c*}d@E <'OGIy^ktk`-KUaR0*ol:}an?[0%"r hI=u.?F:!r36m@&@VOO6KTo#|}ݖg{(2 с?l!xF PvZ@A:ze@-?Mg Ār%Opɋ =26fe0Gܻ"t,=WX{c:`Dȇ.ʯWA3c5(.w4C,Zgg?x׆@!~ǓSS'oNi!ZM(?wݷU[ `w>A}S"qH=/]?>C%Wn1[8O{)^G`PoSu# Ow*b(~&JUVIn{xSmj_g]`@A~w{ௐ@(9%`>knj_qW7`b#x};˷!R3AM5C q:S|w;B%1iOLUcM@O/{嗞G Ȟ۞z\%w_Qs9^;_wPv9檹Q-I@ FM*.1u ?ab~Ā`ǯRΈ^$oʏgzǁfv?zbPkmЎn0XD=sdT{/} F @ `v@#puĎ >yGjNnjኛolXKgg?Y,_&-%'w6 ӵ:F? eh 0 S3WzEMS3!y8@,G7Ůx-I0..)y{2PNՆmJLVYȀǔJAνI?)y5,%ksȚLS> q}2P`R3-k_pAFb/?t{ D$"'v'gL|1 ( HG!2GU:wc`Qk}v+&:/+w_#+8/ug#_ ip2S<@l;(Ȁ+Zzu(Hy(?)͹dtǧ0&+|KZ!AqG6?8w<Piωrzg!X;Āޙwꎃ K(:Cr@ +c(bPřt&{pf]@7VYoCWԿ;}yI` ]/ex ȪxK|GSOف`@ց#/7K6€ؕ%7Xf-vNYu}yB Oiu+|J? su~kZd ¬Թr+Mڠx#WAg3F%k`:>=1?H~@D#Ftfu2{0/ f 7dY8n@~~OX_ 1BQߩWah  }쮣~AV@<]@|y"_ƀ3[muGOw#Y6Kb $W82@A~6hcMꝢu5z4`&-JX= ,A)p Lb~@`L;eU [~;fX3 TTmt`}hY8S1F -I~M쨸>敿pyN9\14.:6T ~l-G-n*_{;'PMyNfa<!'v@-מw!3ޓo yIO}ŝ?e`W_PgE6ӏJ'Ա\'%{ LAo@ x} ~90@騠:ͷ 1ekƞ-zSTfgq1,8ˀC fu^F+(70P!oCb'(5l'F&3{E x/Q%-`E_ !1@  8i=;cL/rJ's(µ5|ZL 殒{lqǘN6N7|a%yزS7d0@{V@KĀm ԝ渱,V_x hcd'ǀ :"N_3`#c۞)bLP]S Y1fN^pglB ^3E~ӱƅiM X"Hvr 8V DPg1fh+%x+S<$5`_dIc>+ %Kw Lc}GkCw4A7"xf@ܱpҁh \R;:`e3yvo,k:6)?9ҷ|I(Bހ%.H[AOێz<y p$N@`@zY&;ȟo wG_ _8ٓg :R 4"9l:;`0^$;#w`#!H[\U ЪKV{;FD l(d@yBj1%`H!r0 p/'XtxDUs4 .d w`D01,b@Y˿r` \&,f@~-oz}в|a 1W|=kqw'P یz$1br@`zb,61g_eGO`ž nPA8c[O\%| XO` hJ&qL.^SXopf@ݙW]3@T` `$T<;Fn;{$ˀ}}v5e \Dbsz#^W쌝$1'Y߬ ~aWǑ1p`fkx,`4<XNM ̒ ADOD-@:XY2Пl#D6c}%1 SZ6xܵ՜#75 ! \\o@tn/ `TJ҉k QK#+E.<` .,'"g#~"!hoB S@".9Tu#n= -n ЉtqwE@L";C$|_ۮ?« ,9sĂ2e_#lw}P> s >pg~Edlh hk8  3N o-mc#OPHhk- ː%Zf`|WjIԗݡ{/^ǀ6e_w'v卸s>(s9FYd"^lP GqĚ6-q56-l" Sd#iM\GQzlay&;Mr-3]\q@QsHkPL%m/"w~ e5\aM^\k< `7XEg[M;N¾%#@XA1v~/u,_0ow 2!&; $|HpY9g&zӚ=gS[+$AAy ,?$ ,@5y^Sbr&L?ǵÄߙ^}Μ,-BA 21b9^.;_kYLlL ą*,a1.R7hI(*6vB@Sd1 GOj5s_m?_}w1(7h{bb Ax=)R|$ĂXf1>S)(1|ia.\*8 p-794$ -4%xkLGҕG95Rv FDk\Oy.,ۇo+$ y?ckz S #>3ƀAtE: cr@KOEs~r*&&`)p&ޛUJḓN]}ڣ~C~{>C>褿 @.k<l̽|0o+oh1>Pp ;Pb  vuo٭; ؝m"M!?Un>7}욏Yds.g/ M6Ggb'z`'}HoOX˯ʻGOA۾9ڹUgKձ~$[繣 p3O`w]ӪI_SKsm{dĀi?~6;#u_g5T|!`=3zTՇf/MD>!#TaGW)k&^R1忍诛7`oU4A(BMo: 6 F­pAQH:<1ZM_ }m%n5x-,P`yx41Aht[V`aNH>/as%厼{B 8`4u?sp=NX}09Z\Ob#   ʅhb$M q'ȀA_;8 Q}|UUՉ( %~_P_Dp wj?}B 6D =gF350`[}O{`Wa D0(5yD3^fl[ML 3LDQ'}俈)/5dǕ_삝%`K`)0`(pSҷ2>X03){ٟh (ϏWBN0 A|*HW^_>r=yuH%1Ԝn\"8~"cɎh]N/_I|o8˿W))EU1VE, KI H`=?2x6H6)Y_c5;u#GـûПUQ,"V1jN?ĀXQWz36^" Lg( [ֽ~O 87 #W Nh1O(_XcӖ%sKF~tdoe] N|B]viTnNRnGψZ(M`aETr{F< ,f*}ǐRo]0}0 v6OO=Kq/ tп `7r7Є9s7PbWr#/F%2 /2؆6O?Hߖ'sv)cPh@R ` h ݊w:w_ @\;EY| Կ*nK.Y_QO#H8=K Įޘ%om@,E^ `~AGY9D:6EE]HdDLb0 })j X0 Q?:vA}e ųε7g@rx 03z+1 `ɦئu#ڿ |E ɮҍ7 (Ɩ!0k_+qk,{/E%П![ PD>€Q_wv@>P|V<.z}fE.Ar7ҁD}u`x|~Am5~:VO*Y$0> VʀEKpu/u$=8}A XX⫘s|]W- T<['B₇QA:~YL#t@ V?˨iה~}& w`vUTiTx`g}>"bFF|sb)Oy.])Ч!8oG0`]h<ӯn`7\AKY?wXg nIϰǣ\i#>b@j}e Vj}wꯄ rb6^߮ހV~l(2 YQ?Y󃢉V|ANVb$6"%XOqop0ग़gx`ce įD<0`F<o;y?`1 A?hp|'[h8-Pg`7ϣ@_jRpJYB/{V7 9Vf'N{9B X>0OΪ3ێ3Lu s";%wԴAr+wR*}ߺ7oh?1G8?{&a>/Ev.:0w% [bu'X8iOdM {m8L鐾ˀSYa@ըY)a$?*1 p{-\\ /~Tt hӿΤ#EXWf܂ Ҍ*+( 'ó?SݩfP` 0 x_ew1@rў*[BQd v⊷sKb$ŞxƀF'pPz`{U#. )ڻ c@!ro,|c#@)ޢx@Ow+v"V@U:2g <GJ^w(=T;y`ACOv |Iŀ | 'B9};fϐ*,"@zHӗc~P }hpw!}.W`2ȢuFV!(@@D?ʗ$󏨿U/ 0"x wnSZx: [1w<$T%A@>mu" ^ƟKg>aSL#A߲.I Xp֜:|sV =dٹ{~I(%`31RS~؆Pr aN{Iս @}tXpq0'/?P2 yg@2 !`@^ r=k'fDO1@ =O^>s^9*( ,;aMco 9 P D+3O~S e RxuVOXb ?ȀgDi5-9 }w 'pK P]{))χ<%3&iuк[k?\Eqc0 '0CрF@=) g跟-n<Xsy 7 xa<)*cX2PWſ_( 1HV>˼$ Q Nß͞b_ ((OоHWWWd l-z~$@wtfĀo UdRӴ;mz__<;{CHg HCG>x~xj s~wҹ/4 m c`x/C_/Љ®ƀ5c%ZluAbk ֈ]?&bw@@?:xр; J7 (N{`@YW28F?&dFX <drNA1W,_* <3BkF5,{>/ƚjZ6OyEghqާܱ[P}k\c Xy-`sBN%>% =;1Z1kfC\9& ~qO666O ȀMdyjk+0`̏i h6a>nC-gnrh]h]܏P_uMU|û_ʒ,@ހ= a sc`"d D10hKEzg<[\# 3 7zG,qA/g;w?W<BEÀS3 7h@:*,}9B''ǀZõ{=?Վsrw~ßY74`7d< b6 @YvqC<X 9U@;@l{o ؒ0Op%02vLj< \1w$ȓI'9Y:`cK3{\%2$X1@/R0 N"  h X, 1 :g '@VT@pǀˀ4[?+Qې&w>A;l{16  Xx!<+ ̀'2*U(Qx` @%h/o];1fz= K| ;#m st\'Am@#ǀ+О_ YĀh@j#f kK@iB1 3ॾc0@Ssp7%SH 0Qoc *1)0 vx 1lI ^[9 `ii\ӲtT3| h G2䔽VX?7lw- ["YO . A`*Pw #9m w  K & $25=^ w`80kR7  |6{;B@4GB;cD\M"ˆ+E7W0e@OCѯcr5P\O{džsjV)R`g*lmk-#hio@5#7a0зU WK>O0>r {ϼOgg/1C@Z(NsGyD5u;< 07|e?gHAq+#8w#p}~Lj@Yv i)!'#׈|Aw,I~L;" 7C{qdO\v 6hx{nʇgX|W<;k;6Ϫ^O2߳MT Xˁ_5L`"¶Y6f_Y`+19BHw| .l3'[~«rus(Phcc=y[A7ܐYrL\(7P`H rx!@8#d ͬ ELLpS1:M48Gt2@EƐɒ!%ȕ23x:K(sC74dqbJe 0wxgT?tP#:6&~-"sЏ'<0m%C_{Y}%|oPJߔm9.~d}w?er~b@L `nkQd>@ :_1 1BW\Mǟ%-瑝"g##dlenl {a~_,II]EwvY0ј<0OR52sCy<}4̓^?ȥY53/_ A@LcxTa"3NC MA`4LA7>{(L.]NMk%) "@M1M+VZ3D6Հ`|Fֿ./ ZEqlbo&ԙ]K(`80"'gykcT)X9&BsU ӱlqufԥ͵D %4ReϮl=hzA,{RHNOE'1yrf; wi9.Ȁ+߷HTh;C weY@8,-mM+>J` 3a'cs}o<' =?iՈ8K“P~* Y `_&9$X[3 ŵ@U5 `لUpp`cAoMϚ,!/ YgZ 2'ڄǍ O?GLtxc!9oa2i}ClͳBhpy,cnWFEhж Pb X?φ8Owh?&<_eSӦߙ-YrI'+ 2ic H^HD|X~b@\}k q7A.| 7t MഽA+8XH]|џV6 j[ 91+Dx] T?,yP?dޖ-_smr6, cS^Ձ :UNFG M%~A`;h-Jo}̀ #Yĩ;^!9'] HwYO_wց/a_wļ'  y%J/8Ew#pg?oc@Y F:ݢ?^ |9'"9WzOf+=3 VLx7yF&+@gD?)__:e}ay#_^ўwgoBI $LKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ld $-2iKƀL2yڒ1 Ltf2L?/w#H!P4ޫ=.n񮄔oOuS pV鞤v17g_'%^,Kx?~||Y{bHŸsfsMzև ţS|./$/KWe^} #cw埱S_/^YY}b3섏YWbX &̡}bY~C~SbA,_(,#c˷>?`@_ )9OoW喸}TM2| DfqovNW9}7rY,7T3jWաDz4;žsw~A'c˷=,H=~^9>Gwd ?C`-nA+% eI]9u6#m .")'|? 5gym-~y ?| U=~\|~n?J=^&-UCe9)>7 _=_JsFFk[@B$}"U6Av{mт?\}|c1 XISPl'n ʯ?E{ o/1 Hl?x!s 2{?s +  h^ ᔘD B4IG0 P ?< OZ-VQ[vkUoglfmo~Cs`"eqÿmqq_8&hz )}8Nd \{ O #ј @ O[v}'+fm-?+oſVQbܺ{Ӗ9-tgv[/7F?Լ<밂4YԿy~(]N9/$X7Q.q0j*~?7BkDU\lF3@Х;R`G!rn0c/;@_1"5ֿ|#o3lX}9d{N=T>|}9@ t_W p0 @Ψ3J XfYІz /#OA섬̀'} 8y𥌾W "ߍ1HG[&,ߪQ@|(w?@ߪ-5ClUK3pOy|0I2oϏNݩ91'~ |@fa6ap >z@$LKOWhy~6g?߮/N,| QFs#1@Tl5 <0`(⑄pi"2(0B:P_!Pl۟Gۯtcr_<9Y#/#WqN ؖf{w]emxtH0&]K3 ("8`@4Qb@ XP3:q)L8G%@;@ by\>! N$K5_qV no]E&O_|{o;Ʈ; 0gxeeU`"\%4I<F'Ȁz s<%!wB12 1`֐~#=IHH$7IN$@ùwe)^wH@'Qv]],K9f s1S-,Rve?Dyd.؜1" `` 9ɹ_<_B߽ՅId,,Cz.02![?awŀew)І4TD1Pʹ p L dL0N4F5R09`m +`=1{b3u>H/r H@N!=T_[%vF:Νu$σvt|M\[:858 n"K:.ٌhg+ X"۴O`O\|1 (vi `Uo?&;:(? HpTS'_*50_X1K/`C 8 ^ -X<X}uV ?E XG?P{d@y忣)q=7s iڏuK`/_}2hs;`,u\q$S~zJx- & %&쓋)h ю:(-Z|q&I`aˀ ! (9UPF?a}O{`ȱ nS \R,𧣈 Xڃ_A(0W{-_lc@{Dڠ3 c0X"@~P3@ = #G]>,0Y;GO@ ˋn lahG!~e9e<C[@ ! 7rx@e,: [^dpQ!GV@`/`b2`M%/x ؠ\V,J\׫#X3@N c+'dM;Vq_G1`p_oo{ *2)SpSD }7?oV}hwyG7@ËQA}^__w%~}s_6r>N'+H,xc⺉]W{A 撽` q!3 )u*Ā37/P&+`$`$-Gg:b!6άG|^8 3`0 K[61Ѳ6р; J1 D \`L6q5 6X,|) $/]ѾA;)}Kl'(/}? 0 zl,{+}85;sVoD h`.'>n<==`Ҍk/t= ["gx.'R^{ʍ 2';%` _rK("8%pY`!AbK\Й0'yW{y\\&0 \%` x ~0 X& Ux΀_#+]2 |'xiЀv]Os{&O禘 f wDVqY.0'['N'ԡ^ ز _ͼ4 "5<;gc#$q Yv} #qUPL˦ GpEW,s؍)\g Of?Vh^W5R1Bg;z9[}aqŚ3mO݃6}} ',;Fx!xA=C  r + ntwL໿I#\abQ`(A0p%1 y&m-i],_ԱT΄ Dhio z !nlߙm@V5䛀5D מO9PN5ρ `-.-|qEd))۬h m' S9Ǩ]1wRvƚ3o8@5 s O# um'_Nc{¬v8sʆ iK׻YD+CQ[0 zߠH"}>Ai2%95gHINw3RgDQM͂%wE#1zGVOyzqda9O0$0,8pk|̙r[QE/ʾ>s\}K\ǔE4OoK˜#O {9"zߡ޲:y~֑x.f2RpY@yb8fuczeyџ"G`c E кHK?<`} o8Pr=dؘ ݈폋 BkPwe 3h~z߻aDTl1t85@sٵ&jZO 3ܳEܿ?1@LMPېԂL1:U'' śLyVA X5 >Ac˟a8I4?XXY>Ej쏤7o)Cߑ ":?)KNqD,(#4!aj Љ"@iofa?#f9ig9KY~>& J+ LA[&o374q!?>EdW{x_u9A,1Ѡ  ޞ+"lʎ gJlH.H.ۄ~*VG_ߓEvVT0@( *(6-ʙEN3t_>4PTil( W`7nƩRD 漾v|=PMт5&w#f*pE +?i$ Ly5v>cYO_wUd;_yOAм155 xO`x|7oc@Y F:ݢ?^ |9'"yWzOF9bup&ޛ: [C]y\x}}.|PwC{96H%_pəw^Y-A@wm>IMcno"co?gȯy oyc?!#~bc`sVfr+a sk_~8Jsq \C px!u?S9J]ն:FX ux,HUo.K+|mſK& 5y!}Y`@(jgFЃ,˕W&-oOrb@AO d)C[}S _ȧw_A1s9хG `wSw5P# [L3@r*{;~%`LT_#5Ĥ!Pl- 0\u*}J8P55>! /:Um:w2` >aO|=_35RX j$ : x>5mkTH~@9GV192h(R'?LπA~YDAmCjfi->ԡ幜"`4`iOv}Pq[OSe9Nȉ|z}nq ?_C(n6ɦt~2tD]#TzB  Ibk 91!@30YB;-O/{~@>q v}dj @9~2H 8} 丱 H*?<1Wl|`Ǟ?~t1 O2B`(t ٪/Ĩkh~zU]qh~c\}(|M'0›? Y,{ȵϣc(Eaetߩz_ ZsL[l p& ?_3XrmM` " l-Nbʮ]hN篗O^@>7̉:٧99!ʏ"3۷t}yfŕ%'m-*:-R6*f+φȀ=>C ?0&vz/o0㿬WK:݉+y?A ('0yPyJ|tW{}|Ye\' La;>cշ^#~JAQmMT$J3  1b@0+f61T~4ߙ~I{$탮m-{d= q+xEH>x[~a:[8oeH?D,w_/ĝCjY'80ZCZ'd} 34qKOl6`}ID>y&o~I}xkO04'RwFmot"/K{Fu4h?D E - &IH34i:Y?: zqk% =!*ie2[뙠vopfCU KݪnׁyY姝/}Gb&背c-p _qq)iq-;~~b!GpC=B{dÀ~Kg3+H HCh_ձF ;-~^ZvЃ΍d/ǀ{$G( bKLuc'&O@ޔ -W@ RH y, A}ClJb2 Hҧ>7laf@'?/E l%ꏊQ||J> i~`@z}0>&WU%6N7g6ok}|`~xyNF`V}q#{^.y)d|5~砳Ay;cUL&؏{G(j?wXN ~^uuW__W+EptV M-"1žT([0"N4FWu`w o P\W[ؖo:/ lKϳ_wʯ2W-z0?ʣ"&w'PpQʀ4GZ[@sĢNU`zH \+qaHr"?IZ x bۧA@'Gmw: b#^' P??OoNk?B;=hMsVq'( l-eB<IH}gM6Ɏ({GC$J@W*eEjr"qmsQ|gЉTS UJL*Abٱ_⿁Z{]m`]hOe@tX Jm?_|\3Id`Ξ2ئKE-9k`(9 7.?<$O07'`ѯL1@UXʼnO.` #SĀʀ~e> xxjyJ \9CdHm`P`$2@D7,|i3p}v@;>NGĊĀZj7Q:o{'{n>aI;{~_H=ks_8pF n_v3Y8( 3c>j_ \|+ hǀ ڢ_\7TQ1@GN$kg b}}&fT:] ,a@k=7;a@?P:d/ =Dk#jl[B0.!@Hq ,F3@JQ>;u̧L~2 i !bOIɀ>D0ڹAJ <Ȁ67{e`π!2ڼ')) X- my>2`e@UA 2 ܆(f9}8DN?@O>e \Dv XQ{ dU@n*lɾ>jxZ $f&|Kb\o立bgI?|}{`^~@u}4 (;22sb]T[:C( Z]3P/(ͼ^0a1=8;n^\ɦzl$??/4xer]|2^ˀ316f+`@!}Q`'N>e`tV~}3 xg{}}k 81j;=$ry/~ X6Q'_Uuž;??q 2+R*a h`e)J}XTp8?:k{ 9!=_hcsV1T_,HȀ&0‹xXg:#yUA@4+HHIPF ehjh/89~%0OUwFP>x 1w@A/Ff@+Z23eV#x 2 q}@"}ktР| x/Q$`gP|!/ nwc0+Dxc+W] G1ORRK [_7 pO&ϯ{ 8Cw $RWe1 w   衳PŶG]ˏ)˿UgckO !#Ѵ"7! 1 yHXQh?Y( \P$0Dkr"a\ Bɀ>}5 |+b-h=[( u:l5lPJ~An2&=O_rCeEsܲӄgAs= Xc2 1@B_5N_^grWlt4/@ư59AD8}=}qp0_V/ 2F;N"@땔_z"jz0{EZ) 8,'^1+ 䫁 = \e9CbNaL(gooivo?p2 zqsfNz+obOC"'PO ~`0E 0sfhNΨ31ri~6@ >5*?b'7+77@w=1 l0O /0Ɨ BiޔITC_b $ m#ךb EH O.)S߹΢^DO0Frg< {__g@yH@s _`NJA7|u~NwKWG) Ĝ^>f5/HQ'Αр%/E@(~xgAߐ5/ 2=s?#` >~E7;M| ~0 ZzS/80,yA/+6@$`H&ۇ}^3<gAS~ ?6=c?x`?Gڵ/{\'`<=;P#뿌kCOR(z 0^ IHscۿnn&u)%/Ƿqs'`fp 1mb@9 LX_1 x0`0 $13` b 2r]A/``)~W+M$X$@8`%:\@тC@™H4y;KA;EOc/;}a[4 {5-#=o1b3`[%f@)ԃA>~#lfԛ b9WH`9; 9}sD&Hsr+ :!أ]yia@t Hmȋ@,c,>tb2F>'Bg&`<CxkOz0YARxcNnzf;{o aK$ǀ&F|'czx_hv \kl pu  wDqfHǿ![` w`;Fܵi@|@6f@RrbʲmVh?[a: 8ZxVW9ARNp 5 {V\ UW4z;F|oa`hˀPFpC<90鎑Nwsݳ+?3c8@^/w2`xX7@4PVzm-Rokh?4 Dv\aM)IFNq,;F\["y@ wT=(!=]q 5 (G( ĆD.v X05|tDLFX[j)I"8<c~klA4}c=zcN/dҿogc`~b>[O`W'1036ӔQ$x3lbp`cA0hsQpEH  :/ ZW P0fcZ πvwDΣJB>m'ɇ- La *.Dd #(X0e Nc:P@p @4oYN9 B0/fCLe;F]-'#X6X1?Ms>'.~9秸W="5wD>Arn?|  =:1~e@`'1rAg$5sAfF#1SNU9v3 %F;-wL1{G9 c\\b[y>ק1?t]ͨOQӈo4Xs)bSgdx6ԯ$  g}Zub϶B=L^1"^@v뜠s>1a(Ecg^`  6<ñ9A`QpMf[HG"GXV :5ѭGQb[jtu®i߄$}wF;JȈ75zcEO$~A97'H3N)p~>Y_#m]7R,+ݜ:_h 8P siĔ؊U |H .rwY2/X]O>5Kfd-5 '=㌢o<5&#Xi?5PlDL/`{@Á%sٴ]$~4LDFUԙ #{#ā[WjgAceF3oV׺^@Zlp)v1rNr"Sҵlje;L-*cwċ|'i (tA˾vhQ XB[NЫζ.h_@P s:M n.Q`1yZ!V8nG:/8e7PԸ !+y^ȕ5d#iM "+cx'CHoO@W\ (PN %& dR§fPnȞG9rČS `qr(-bhчH_fKZD@AXFD/A}ZXV?ǹ@>Ci#Yr?A_~ę?5#GHЕQZ!8 AK NiHl?)EW~JŴO.7xpv T$pYHrϙE\}Vl+<զw&REY@<j< )?藽R|0ĂANoה?!,\oǀZU-奲sohӸ'OY"37?)୯0b&q0UPWM xc_RIcW`࿯0Oa hN+'?- t _-sgr#e~՜F)_>\wk)x %XnSد ;ߪ?Y>ySw%gڽqzX/_ly$,wѪ񟨿)WzC p'B{ϡg`32)8;L}OclW^M_/_)`@/$s M rM7 9򧶿_gkC?%OWΫKcREg3>~ &e2ǀz7 >d?/=t= D2=)OoHm=r ; DU_y/r'9FTA z- gQfe?2 }z4FR5vz_tY|}s-aUs6";ԿkcPW$ } 0by-`ZP :/vM0Oa3(΀Ǿ>? Oo/侙(y$X@fߦ/j!V<[)B< EΊ ^NS?K<M6Ee`8Ba7_?W#0}PV 0uQ= ؁ӹ{o`3}_6ObyVmbYdĀt??= _l٤>7)}C#Ys Cypd}g۠ ^O#U)G6ʊlFpG(RVџ:ğgStom X6gTp PD`bNt..ȁ(0\_s՜G\K-tn?A}mcZ(P/ן.~U}T#C@^)OuNZ؞܁~'5H-ҁḴVeU®q yvGZ u]S|"HoY'x.XjNhFdmA+R 1Md1$A$bVQ~[)uBno?"? PcD(`V8}1;0"ůP֨f?94 о:~%!x%9%P`hF}Oj+`3Oip$Y'O@SbO pf`~~elc|$O> 8j !۶H <CV/ԇOO ,UJ]?PS yZSl9:Vl6qd_0`Oj+9 X`\8a8ӊ.xbBZZ G7Hn 5 p .B9nWM~\N<Z`8}MwfCַp'~]l3nG|$2lƭum)G>3Ib>:1r=`UHou#bZ\m8A=C>sFC 0@j}?3| 9= 1mʾC=iPy @tbm@U@tP;9K[C33_jܳvRWs*]S~\v=EߢmFyd)EO<~Oi[OUPs/v/v5 *62@uZ, l|HAC 6Hvy|NMW ]ا(fPO}I0(]O;_bb1QaBOVlA;ڇ~W#h/șwG/2 B9ā9Ç Hx@W0/N yJ~*~JV ԟYI\1,[Nzz`Yߐɠ~ DTPB|P } `@ˁ} s@b$@o|/~tf߻5B/>E/vY'_ |q(BB$`-?W7 W=?3ykyA]?elK=ӈ  DV%<(a3DOвJL?CљHâ 0p)N?XA/ؿ ?˿ -_S> 1/z+<@?R܀fSr( DۇwȜ3r`@M+ ǕfgR gEWȥ{fcl8#EVO x0 ـk`@d`K4;fkcpكfоxv}b_i@;E/}y 60ݥ`[":H^܇ j!~MN)SmlR6 l@{`& u6g^5G}_YM`Fp!n?+D1 ͏UL6 wѯã 0{G3켒/bx/$|O % w@b `,x(HY CˁE5 lrPzNq1`YM>`,pBW?-oL̀++#~&(`ѹZ, DO%jI/6'A`d0`_ɕZsrt ˠˀ|^"oAniLl2@D.}Y!%( 6}1*} @ݙ|^C2]>@px@sG&h-vXwϏRt@u> 8P'ǰ|?3<pO9\}xÀĜ8=㇜|%'@{ΔVLؙ /މ(Ā߁ͶGZ&0`Y0 ss"$u f7u() Nl mE X@ y5Wo`_ƹA** pxٟS;{-0s8%ѐ'X40?Ξ_]fvUcN  =J͚KW@wiyWo\eUW9fB l>a~sf 0`csц:3 (2@" _NJ ŸjG%gx՜5ba@]R4,bǀ>=~F^MVR?ib:F`sFqO(n#V`@Gꁎ:}F@Z+6›}Ln 'b7l)y}H` =9}N_S;_/p"@9E5/֍7W%Y%cEP'p 0)IFD@܏ Cį3р ,9p]CW3.#F20\i${F 5#D:!bI:Sp/R$dH&H1'la@[}7(yYE?p/G=}>"v Oxu(>PHmAoØ:=r 9@'`-@c`bT3ON  o?_zrDHD׿Ϣ ?he@DS4+ʀi ъ !na0=O5+`]?CCz~^{: 0'ؗF/%d_Y%`RS_/kn"2nF}~,^*6q^  8W3hԍ}Qޝ)8` c&h zmd &_vS?wHVs_]#^ಳbtW :hWKAI~yd!>@SNW(iⰒ_){D] Fߝ|c@9V'0IHRU4h2W(j:EZpec@=/ ~t4` 09K >yhmWžpKN~Y /` "ԗ&1`x>ӌ0T?P ̀@= o*1W(8N av0E Xc hݚ3$<t~Pr;Y=ɸghSv71W[ٍ@ DK$d(2-p3 QPcC(=)յ% s 0 xά׌bDA*Z8nn@N}%Bx_W{x P>pZu7-[ DRP6ȏ=+KDO 4E#E)x+l} )H ' '{&Ԗ30^Gϗw9|&:O X@i= ܛu;"T ( }CfuaxW hĀ1[]3`B<T;#6~F}}hL+C&/1`.ӣ?05F1H$x ZTޣp:@CS !\YN1X',#t,`u~G07>, 7g FȂ3bpF'^myu ~=@Xe\ (7 P`U{$k4uLd0gK`ax0WBor1V\ cDiMkv@,g??Hu գj<\ȀJ4툸z.ʀ!n$be@{.vC?|X=C<x;)Ӗ1y5L93X#Sǿ&fh$ wo'U+*|~Խ>l9BlX`5 D}jxyyL( rg1?kxn8V@]{l?rWD7 =E1l(?B̰s@{P0 $r N7 uof%~z99U8x˂Jpv `7g*xŽ%' WgyrI?zlFwW4 @ N1 c#`94ψkNԜ(8OЕ}!f-99;>\v;.J1@[#'؟[Mg O:0Mȁ-Z8K`d3fl^T†Xr;O)r[)KD̀\p3`pqį[) Ø 1R*DYzghi|NNvI.dIN_ób<'fs az,E_9e^ ;4A}enr`߄$ٗ"vokHǦϋ?*4ԉ~55\اo?yuq!t٣{G987:x/4(a> mPHPs@GeJAOigoDDlKfdM"D́ofnV_s<ѫ0P#lP`pIe Bo4y:#h9{^_kZ%EI2+lq(Ŝ9y*xJ\ZQ@X|&lYxtZ<9`|qzD@_YB~|x"s^}[θtAǟ}LQ@ Y!Ucr %2w xS'AL^]d ǜ nbcǝBĂ  !+w aF7v b"f;@HB9774Vۿn7 .`V BgAȞl3'fQtX!BOԦu59 O4_LwTig6zkE0P•N$G菫>D*> O81oVZXs_ҟJX< wt+>| =g0+?y i<o$ l7v ~Q?О~_%xF1mqP΀V _`(}}/QŃo OAи4eҔN©S48F=%Q}2om-F.^-]/Vߕ~VLNڱ~Zo$mѯ,~ =]د+/~ΒzWve I&/2yKƀL2yޒ1 Ld $-2yKƀL2yޒ1 Ld $-2yKƀL2yޒ1 Ld $-2yKƀL2yޒ1 Ld $-2yKƀL2yޒ1 Ld $-2yKƀL2yҞxS,d~Y+RhKʓ[]}QOeSt{+,NTF?e_~y\$s<,|}'Q_<+zʿRQMj[;S{{gͽ0? Gޛ{ نW;ޢ~solI_l{u 8A>Χ RĴ_y~S{trNܽ~Mk:R[|)D~ ՇNVD8 X_pw.[^}4~R~ǏrPSqQ)LvQkD[ϔ?>@0 Q@#N#SsDl`.'b BZ۠!f.ąk)I~L7-!7ĸ "B`A΢ 뛧OeF$J?A0`#/Sb4@}_g2ٟR ȀWЏQ( f@hʀ$, 0Cxgv)#}k+P''OXf%la:_0@AsN.:O&ŃrL\>`ScTi<;_SUOm k€~uI~@;j > ]Xڹ~׀c-@G1`":#C[XMSN~GE0 @6Ԏg >0&F.c}[0ߣ-J|&nyE: d AG<劬h?fNȚ\Qb | 4<XЮ|fX)Mw~ZmQT:e)]3@}R/=% Ro ~)|D%'(;'lt 7D3 /(%g5g?/ʫ<JG@>D }y`%SΒ15 #z! ?MwaY BGscA9ej-OqΣQ},C{X@}s1R s48 ɬ3 *j2)JJ gaV KdS֞,!^w ̊dI%6(p`ԼM_N R8Pyyfگh ]CrFR? ^t`Cb&aۿ/8_Ğe^ kѾ/@OZ}G@#`F)+ ~=~@H Pb'JUi( HA Oc.th_.E1H_sk:A;a_7ު/kg"Um z+m/&ȃ]*X x_bQ~=h$@Z'1DVki  |/,feov@O,ĭyB{}]/gc433`Eǭ|O?)yEw`ԟ=xH>Nt$k?O A&?@dM>jw~Q f_?8_*K2N_f]O5 w=1\%/໘ӇU+=+,[ 99D` 1\J1t zha #o!B LO/p~+YM*輎he@SlO:_0!(~rI p))"bq_>0@2;d5iD 8mO?3@~P I3 O`Y0Spx#fzUQA[:# !5wxw^a^P@;oAÀJ eˇx˚.D_``؄_;11O1 H(21! 2ξ_Δ!,&N_Kz}gK&HB>0VBY_G~?'WCwj?l@OWgP{+| ('nE`gǝ+k! ez[i/wXlmA6N8 d#Ă(zW/{>ij?C@ 8a gpPtuPP0bl@J'% DWyY6rjÏDN6'TyX!2 ?zZ4d;b?BXo5#O噼R=?ؗ9Fq˟sA|U".yb*mYQn!L`u5|5ϐC\˂XGvxB0VG+(!U/U;B[ḵjfM,@09I!0cf#4 b7b"B|$@'ǀ@w^a00 1 }VZw zAhe9-fϐA*&ŵ '!~n>ž%#f&/g &H* yҳѲ)oĀ9g6%i=QaߊqŧL^ړ+ r0Uq/qfqO}`VF@_#\9#ﯖAWhHwp/>1U Rئ[ڟ˸HA TXk1 Ā)[%MCRwID$]젟=h~,6"f'2!b-мF2)řw'.R[D{u/zh~rVr#- ~h Hنw౿%!O v^0*wWWYҞ@z21&T p?@ ?g R3`0 M'ft@ـ )xzyH=e3o z¸ r] ̬yv2"gcY199H m5;h-@gDL_fF0zzHH@ x'CsDwJLy$T<|ߠm51EbNˏ^=l{À6 =A `t0ξ<0`<̀)٭d)/e=ȀdQg}p};&bsm8d .)pqט'TRP_Ѽu Gy6S6={7%W t'0)eW@ E51>YѲ(>mB˕L2f n /YbQ Gt[)q} T  & }iЍaR6 h\ }D$oγ? mda2 a`(y 8@ol%0+, О}վp{Aj~$Ff<}x^ingVtZ{!G"t2,ɾ1Hy@ߗ; }hnjˀh"1f" Ӫ5™UHlЮb/0!e0`2=/u/#xXF7GTY%CwsuA3@=kaR lkG€Q˱(*=hbKAx*|@@~lڀ`$)QNxAܳjW0u[:^@@I{iN@u U#4~SXaEs1yw൝ShfJ!O P# F V< ^7'2@{ :;x@pbpNncS0XX`eP g>[kW'077@seuJ@ 0y$xVO 3@QwPion h>7 `Fp4Q`O-mʳafQ@]9Mo:=)@&#`7M$d 0g}$O 6#hvb6oRĴ^/Lрun@p[7}!?47b~|+ZOt{5aFY~@@3qFBc 0 ZѼ<k F9-W<ߪ=O2^/'w[J=˷1 @ 5/hn$ 07wX x 8! M-gqPpI0  X& :# 8R;"Nir˼a@L^ʲj¶ nY|@zUv98_[qnǥ@fh p08Im!N!3;{ !Kр#'D`>0Xa\ɽ;G=ihPFg& ,yAg[!h\O`S};O0D&;l79ex1/@L^)xM2Jj L\E \ 󂴂B:Y#d@K4 :0o.7H pcp4` a5>]Qd Y\2^ž `_.cߐ0ܢ=o1HC<5sֳœ @ xY{ ZU;2 @O9@=|(fvcWA$6 |PO*zdB0%8YAՂd}o B xa9GL uBHG^>`8pXOA##(3(2DW j@ /4սfe[넕^x0s@_[`z4D 6gx [\siNp[P2 |TSԥG JH_E;.ڛ?;/"р~X?'^''$;U-z~Q3'К {Ls"iNPNpHxSЂg31/ĜEiNe@53cǬ0Ac=A$B +w=@ضcD'm &3~m!/P/ߵaP@r^_"`$:K(9~}M:yuC5 D ,4 4Ӎ4Q?=Cc||o ݭG0HfWh[ vE?y7=J5Ǎ $^A X=?#6g ^oЛ\uQA aϘ ~71 j3>=Мda:=ǂ`$p+#we#f xn+!_:I+G1>L XV_y@ π& >O,+FoSWr0Cz~ \! t,0/[v Gp [jqwa|f;#&" `tDʯeCeV) ɚ5˽5DhIO1Υf p0aj7R1?da7(pD xh?2zElqÂys" 9%F{G*AW,wL^^%}À9Ui\NAoop8C>ڲv NC?@؜ /( -'hYp~ޚ3֚[$p,9h h)'hy~DW/֝SXwТ_qU0P~.M?>R8?Ooi:U]6l2z}m ؟w4Ѡ`Sд:(`u~?PD8J`C߄BJSin$0+D#w( V('T k T0" \i{`1F=C5((V9sbFl"$P$[ $ l-,ۅDx^s+!G1Q?Y{~ڟ?D\5YE9AKSh 9I,7{6,`B`!B#D_FܟaOz M 9O07"AWF f |I)M }lWN^~^DoZ%,!JHnoPvjPhoH?z~}8XH?g aPm~g"~<n!qbޠE?ϵ`DM?!:! b<J_}l:<5O>4P_aY6 P@@.S7g6%n؁QI=S/[_3`M*T{hxĀ78%4+% 7<_al /~i쿒eoӲ A}aX" 1F0~#6en[ҶXҍ~1 ]ڗZҟ6s;}_{U:POםF݈~dt> cR+~HwkTQ:+MĀL2I&[2dd%c@&6P 9gYNeע/ nj?Wҏ2{x8ˉY>ao V{Yb;l=:f[O_8lϷ߿_;WOǑrpeԎڡcͭI:ixW?~g솭+Y)9|O3:ۊ/(96ˆh{uy̛!ŨaSs&cx$wr2zЎzնXۢx5h[t ~@|br{-ViwO5 $}Is욕=Se0xχ?Oz%_òYemWD7 ]IӴggݕ~NKuȥ,[Oﴖ?ĀqV[q; $u29l>)p3)胯oak?1!-y`elO/@__Nň~AI>~5ۑdoK'/%9+>/l[}v&"lκ Iאʟ,!AEvsstu:ׯ~MqL["P D>$Ā2SOȣ(~>_/0'()oFwȍuFA+TAcח%xs\B:/&n[{ pcWbSl;!؋TWv՝8[3"/?<"@5(Y;J:b@U,|G)C_ѳF0=;<w87 &/2?ym>M~N<Om1NR`o壉H'2)efSl=~oĀ)ztߦRh7 ; O߆Op*qΌuo 0X_oծ: ̇y|$_H `^P`i-% 0"En." Ry9=[ ѾĀ &=R' 2N sl|fP/j}xd>FiԜ 9oX ~e*3}uNm.9?2u &'rHn^r8ŊZ4'(ף&CO,)Y (|B /V 9(IZW@*EcDQeg`/ /j);1 'Q`!0O:߾'&)_zȀ{Ybwa`UzVs? ϬP^t/=Pv }yk{ѕ23. $1`k9@+$ڇ^g-X{9/sN#MK-B"Ȇ[HW~z(0[  ' Wxx"T}Q*>.؅R?̀W027gמE5^#x6 ! iYI5 x[ "WD`~b? VhO`}h}@c1)#Qo>žG#X`kΠ\ӶH #Wl~$Y'`06Px\ CA'q H ?πJu ]_wVm |iOs p@?xu[(g@4@8; ʦ_R7}?oLFz6--;)Ƽ}.=!Gj޴8vo-ZF0 pbiwfy@ʏs\?DϱO=/"~A $x18+7k: pf'"+HQ{>'_-x'[;(ex AF(3_^,de=\^8nf|Lh`\*I~ʏy x F+ӵz5N`ּ:ѷ? PIi E /ڷ>0xLE ~N#^dj˕ =*;ՠNt00 XYsQ0|_1 TB@f AHmc\}JFyQ`@ۅ^P~p~qm?qrS|p%^Ô `lhPgZgy|+M`x;Rg{ u~1Vec @'xUhퟆc޳|f?=!> *z1s.JЂ:);S@( ^R'VcxOn;pK}F eV 'Ha,5lSHuqy&xog_'߰+D3֐>cF:zHJ3(;FREeaYrOxom[`Dr"KπSO˯v76czó)E{9}`0=Ԁ*O]uu,w-e X1uxـ _dR2 HVF8t@z%D?`y-3n,4O{. @v ^3&D#1 ~6,!=",`@N @+OA K! c9]  h_!*~_35z` 4ԩC8fE]Ҷp/Iܝ:#ꏤly$cN XIŀ R% Л|&-Ώcw1 ^NX7$/ B #؇6ߣ_!Ȝ"KΉCP.g WÀỲ,[N~?yv *ߓPjc_꠷Q*y]0 Q>OQyF>.s2G fz5 /3c0>0}JsB޶!KkjdH#̇Qk('S^S`K@IE+w&)k-;f XԱ}}PbA_p= w`πPC 7@e v h fM&1&ĀB*N|w=@u3|6B'8`^s+@;^ :ͼ> x`|k6d2Csx\rY.1h}<[A}mŭs_N[<5x`P_/5<1Em@x>Cg%@oo 0,+t41ߵ7{//oyb@{},|>+?wR{W)_k@?нpDOiSp^VPY5G@OXfTK#^$a/92@|N,BY+qD2=)!p0N$4'z.gS O@.K9ߒ%hWDWNe0>?$q}@#`*MHeks1 /=2NI~6@оf.0wÖk{Ā۴aA QSͰ58?a2 &h f'hPwzU(T'p@PS&j]m@^@I+X$o/LV1޾9Svhy@K ߆"̀kb@Sav@d@0@y  v~s~@ |#jWq@WA h@K:|y`=@uʿOрt?P3|U6cɏjĀ@ߴNV %ן1w X=w6?_mIY5y r j7T^/Cs `eR`% PNtΔۢlt02b쯐2 {𔡘6,SE4A;9J.:/྅k- `gV2@z hx /̆vivpEiLN)@b1^7'PW/ Z}`bV("R =7Xա'B->Brxqs W'077`H(jnD&@xn"h X[[ZIcOn77@'- dX9  ARz^-dd aw~(Ԛ0 8cs } D zas!04/~ i~H{)LӪ*w'fuP %PV՛hg?JTb0)0aЈ?,t6 @\^ـ(\Or9GhVnOO hmxxǭ>ZSO=G(hPD0L'E^ zcFA@9Z U9>+x>N pR/d5/hwD)pf@fR Hx+]O`;<`F<̀'`;O L4=yn%d W @ ܠ5/Y%f@S=N7 /aKS?=PK1 h Xh4 F#̀VdS8l#<=suP0 cdQnO`]7~hoDo[/3b D%;V-/3! XŏC\ EX~x oz˴znVr݃7"n+a"n4sD'HExiw$|RbAޱ.-B#\ P,v؆.tФAsBx_h{C˶ p + xC~V#/@w.D ves ,; hG#W<3?ha{@pE0isdž$1}Ѝ T4A hCp'_AoAO8F/3+[Ġ~ZfN~!YBVMu~MLz-nnPl@6t:7`b6,Ьʊ7]O1~hk|T-/(%Q~mAwǐKd.0`[F掑h$B Xp>:yuC5N( {ţ Jc@o`}Xfܱ 1㝣tLj_p)ƾ^16 P`U{$z| }vx H;pdOc'?i+_7!@og9. WĬ\pxwYOIfzy01 GGf/un냡}wtX`N$`]Okq.oF0{,a^4πH,@~U*H٠i"P`A;F1&B|坚h e@`'1raw7B3?.&JO/W OKIrnX &lK%Pt]al ,ƌ3"0@Fs:DE/8NSt`E'fHǿ&yi+p ZG6ԯ!۸Y>'#y>Ap@> B[k l4\%M[c[!bsy ` W sl89@^;~D 9A05dC5zyrrDc0=/ʢ^9r;<[ o RVp:"e0m/ZTԧэ#Zb)G:6}^H̜e܌~pgۅI~FwS u#ewܳ!h~<kE²]eG9 ͝&#m+w 13hz)9<Z#3;/ڿ.rlC;h8_39djZvō-G ZܝCz>#[8 =^UdwRFw[OFYKZY'($F0wHI.Z k!zaˡq3df*v‡7yN |9HNS[.uΏr_?}kXȈEfk{{Oڀ8<+k|h9x }~CK>JDiP?c뿇;"\Sl07l (0q=Z!+R(QxMPN %X(@C+ 4+aX G83\ʙ3(:u$S$C;j14_wθ9y =HD':+J$h3$p %`|UQ/teV¤6GwKL:|BLqN`OB%z*a1ļ=@,ǃckeF L@Tp@ N¹}<k}C)/b泀x@wI:1oV0qGzSOH`0g1>@'>R>P_3OF_jU XCB8~&Q`KI"-}h^15F1"NenjyI×j@{FLNEQ5hOM2Di ?R*߷1,K Fږݢ?nҾҕ9W忧_5uN ̀X3HwO4' vaѳ؅ya-1[[MĀL2I&[2dd%c@&gF wS'0揂Ncg0o{7{b#ۢϢ_xӽ>E[P ~?MCgNn˟P+vgϧ9cy&:e[T{'O~_|wnwo/]C뾇v;O>tmm>CR߼ج?X?KLYQ+4pk@-8K2,4z!}yo;hM =־W Cx _߰:)?0`R@@=SgO?fSvžYrwTCm )?P`CN,9._wǔ_ GHyuoﻷ߶w#%nOdrf4v}+esvJTb1y$Pe7d2ccbPE3)F >EW5?F'[(ɋ|=~81<)O7=ju߶ <bIlw"$}[  r\A <bShw7֓-Ю04]{Bk[6FX]qUu@5R"ނi>oS- 8vjQ'R>d3$zpŷ&|/`_s @xϏ!h@1@LdrDWMh+P#s1kv`4 Rh/5k|}(πD:'egp~5m(x+l#٫8_@{>$2Ӡ'#;irā.S Z7&0` Z/6 J^WHH`@A=?0B obWey !"ޣ]ڏ-?q҇ȹc} ̛k?صJakYB 'bbg_]xoOqk-3JxyIO|}oĠ`{& f պ/Bd7ʪ@l͒3;OM  ?y~^%9 H) +> xA(Ȳ |~G] m >G]*6T%'F}~Bǁԗ 5(w s _~6?e*V5gPĤtJB):^>"Āex(дې &I"7#zl϶R3AY:$7(@湨}OΫ+" #)VNklb@01`_QPxP%᧶_@Qqz.ݷhʿ!յ~Wa_'p`dعWp H :?9K I>aHB G_a@k=|)C$]S@ } ~'0۝>@(Ps䲼h$9 {i~ A$Ȇ0|GH*[hrz57@ѧsj3i,2@%hxc":OhMy3#}HGL!#%9&y~ ƿ P L͔_#?g@d@;fW~ sjJg@tN,(r H n?xivErҰ{?€Le/ 0t\P•h@ mV?M z:BQr<_/w CEW2^U!8/QxQuZ,XKř~8~% cβإg09Asisp?HOF r_kPR:N߷/k)`? h> ip<f5UOR4N_4 cwо Ӫ1/Bk?Sn-M>CrIԖLx %bEX8U6 C _t0UbC g絨S C{>:@c~6Gpl>,> nx..{^p./= 'p1 :'>~šS/Ջt v"in})oUyo$]GPέ|l ~X3X&p$\"g??' R2 8t@ rF=`N~2اh -fHY?q'r^VSn'Q^tĀ^_Wx 8oiF` =0`B S0@:@M DIC<dGW p]:d@P)#*_{÷$_-~2s>y>_e@vI`<M&ߊ{jC =A /H[TLa}#r@hJ5g?jn <Is  (Ka忊9=/& 07v'U矧O@I"9P&/?/idCqs\.ԜVj:1F/Z?[ HXWOHxUS\{G'j_?IYEL)u/oyAKE^_8?&oIXX`_U];3hѯ9=:",w h I$ph2yF?wF)zGig$1`~qN/|r{߀/ЛyPJݼ@Słoɋ{؞Z_ c"8i<1g &e_SNTHh&(`ͳy0}u=k;#=.3 `_` ;GO5S+!!?2`~ZoEA`}>m Fw \Lh i~|6Q`v鬰ohuot4%^B%o#I'f- ؋Z7@onx  Aߠ ǀ8@/^6`0|JݿA_ |/̅5F?8'dZ y}1@>`RT@G#dڦz[ً'±Ƥ87|f:3rޛe{4'PW0Wi1xGwħ xBE/G@_O@O"nn 5\O`2nn ̰9+u/h " ,r`%<1p ~O~hl7~u,{^<<[ @ L9We~5H' b]ٶaJ9-o! O#/`4r--p)Pc}C[e@;;!:#  v_HW5{jWu)Q Xv)`rNԦPcУ09~M$ О$8c d@0 DrцHQ =m ^$Jt՟Ohx0#ȁ.AX#,B%^.XRԞt pЏY0@SLB+*b Zk, |`؏0 "[2B?v@ف*U5C@ R8Koy tW x`ʖ/Βq5DC\  83E&c8R@#qe0m+0 DV P>3neO D~Ghs;FAֶ;:N=0H=Z!P'&?`7t؆uš B$6?c$Vʀu˜t pm(Oc9__`-(2~ˀ#:awmf&1B |}-1@p5NJ05ـK΀^/h_#?#X6k݈`GG]1y~hۊf@1VDG _5s 9er:4(0sa ,EA#nnPLcd3xh 1< }?f̯x1Bi-_3`}D'x.Ai@ y(D²yCIl+Iߜg{K`۟U4R@syz udtU5 __P`J^,w^)h{V=@0?ed!` e8hx#|gC{LQFz? Fl\Tĭխ{=ZdN 6;{Fc <9HNq ,"{8DFFFӋ`|/5Y8YKqˁyAUS`gĬ2kcPHJO8/xO_ԋr%O`k Lh F\A43d%?!45B9774Vإ𷤮H&IV&eP |#d&Č l"$P${߲]-!}/%l|¥ sS}qfWF4"AHx!dA@ro$Oϱm6Ê-G?Mo$ǻh6p :?lseC$Yvퟠ3kċ罽" #/H^!{07"AWFՌsk%u, Z'Oȗ(*۟V i'ߦވP6z@`(r@ˑ:4=qYm Bc_m~'v> ' j_\ vxNCFB*x߆Y0߁J"}`Ah7k矐jX@4P_? @ULe8~&Q`N*؁1@=|y_[FF#AVr# G85WNn/QŃo OAи4e_?_@j7oc@Y&@-E< ҥ}٫+}|ҝ/=YsgםbnIwO4' vaѳ;%J@:?_0ҝ}}+j+MĀL2I&[2dd%c@&b6ơ:@IowXn؎o$'ȕQnޛÎ"K}x/XϘc;۩}>VBq'14c월mOqP_y^tSjAAu.v4qܽЂ72ϮTMu^?~N6b[rnnײ+IWP K@xs8v_W[f_~'C?tt.{H$@K}! qnk)xNAǝ_ԩ`(rj<Կetxf'|-nڿeK6ƶgӉ~0aȚjz|} }:E.@c}%2@ˆ|/OgWȟw #S%;E|)X^2< րN:@Pkҟ;ȝ=MglW_nC#z?my%^ -S DMT9gOy~ IkD;=濉%hgKvg?A`,1Hj}+ Jk>Bd5ԇz2 N_^eq6 rN &҇zv+&:")jIHQp>1jFN9b_n%ye9i`tp߹~b]] .jA'8YHoqzӗq @/˫HlCnjLo7[s}!"~9— }eĴvP^$/zoV ?*OQZ?Ā61 '( |€"D>(ƻW 6ߍ*jZM&|mcHTgrK|C;1!&ؑM!iއ ,|22?jE_~_ j#w) Ux |Yu$_OԈD_ Ӳ }ϟPȀ-muHN[St*$&A}kX >RBy`@$Ɵawgľ|\K c3UX_ty}uR_;$ꌛϸS'͏DrbNE ľ F7^v(?CohVHЪԣ%eUKNʮZtM_3c:}À'9;!|T_}? 0&8?㺤wTp-yV6ۆ0u9ДOGrOwuMg;O*ˀ}"wc^:?RIg"י~x)ϝYgA|U;j_qEo5x2l (&뛹ٟ}*ߌC2y%@)xKy ~ 2'>b xlҦ/PVJAߕHξ 4H J;෢GƉatWa^W м {tȼ.)z@)|oDl&Q_**yu> hP:`92+\` ߥԯc#&"8Kzqk5[m / #VTF?>F;Hs\R՟Pxn>wG7ـ⽅/`O5 l M1sݴS>N' Ⱦ 4' ꫆DS$o3$!Xw=lTԤ&ZWrVQi*!B¿ĎM5@#GX}kH>mH ?_j/j(>24 0tۇ>oe qLq5yK%RMR՟OWlmG8cx_g{bA[_bN0i/@6h ` `y._{9 dGC@)? '&- "@w9@CC̀>ylckXljk@=/pES/c^'9zCnTmm\L@^   ) iW:/hpjcq5UUU/y@y@# yl>2^/3@`hdw`K#YV 94ۯI <cD^H2;X%`AJ@y}ĀK3=XUbP`Zb<DŽ|ЛH P7w2.hWs|`} xrVܸ{>{}/'X죕} `.V Cb#ƨh`)pB+H9ܻq嶡|iMH n6x뙁)#ɑ@> 3DrY&' ~ih _1OP5Mِ6 O`[|y:_;|=/#PqD߀PhO|(X9&?RY JB$ <0;7 pۏN 0M8C + R(1NuG8Nr߳娾 a|g ťEjO| ?KwxcLșWđ퀄ؒ`vDؼc8@&-~Jv/궁{?|̼wn-OWJ%ծDz9/$;αm~FJg>$4=$_ª)pJ@ئNJ/MT?1__`^HD޿$ ha~+61?T6auhg_/1 sjgז iz~0ڐc/ɟv ' es|iwIW\Wd`Gmc^p/q]zr 0.@ v*|YUEȪQY1!7ɢ7 UPF 1Oʿ!( o %CðAI"ȀT%/YBxv >6ކa`K3; b'рpˎ ?~?/A(+B9<_ՏfS ,O \ݩXK8QQ(0{w1T?ug6,:-{ybe5:e!]PMy~߄ UzF6ߩؑ bǧ#V ́!կSL-w 83I8o` i0eG[71 |=` n xf#ڇ?^?jx+ 9 Be%?:b@F| ȇ\gPhգfA _a`V}1Ā3b@[d~?g's]vxO#Aƍ%πt^hc  @x!ύbk@|ǀx倐~́5"?c,,`whXIDv~ Ȥ (~(΂rל7]Z?)2vC~rHi2cޙG??RO }rV&`Aoiw#~WTE*`m֛GEjx4ͱ/F #P(=*0-b,ŲAY+DHe*ѧzNT;lN}[FrV%h1 ^9+DaaOLfYh-sEP(k|(˶M7a# S(%ZT7`@.x뜃e7`/BD`ƣ?7v^6SoqoF`/>Vfdj&{˂ju:r8P=(VBҹ)yOrLeY0 -BK7yPTOqc2}2iP]ח` xbxUb YȀ5$kr3..eIXoPe6ߦ)@+;crN+uz?-Xoc{i''=2`^)?`'5? >~=t>CVNZDzgٽMQ>䂜# i>H_ 0`0@v!~_5=j=ONvmzk A`@ O.!YʠI,'e;'jBxFu'~T̀<51>{l4xFDo њ3Ry`'izFPEUm8'O+ xnS15}ISXvD9€դyw@ $eUd)o1i{5Y2/em`1;C'{0zz0`R?yaD ҘK(#l,0O1TmHw=,)XQ VikhNH5Si zX Z ("x6M -F0U2 9!#qRYȀQ ˆU`20b3|ILZ=XaYycVIM?' oB%4|_#Z@yJsy ^SA p<гX?$q `OGL9 eW)Ch ZC0ʣ"A>7h?€ D [ p/(0z@ |[|-&ц(4GJq~ /7{A/ń7 0@v[?fA~pO Ȁd 8IU7'0J;ējm<˰ɤUү SeaY=D-FWoye !ao@- FANlWdH?K}+&tRŀ%܀3^ja`x2fWSe}rEa[Gᾣ 00K:3 b+/῎'0 @ebR $1VEĒo7#;ZdO6}Vw xOD is'y= 7cvYĀ%K­8% ' k9PAKB^!πz'`/1hC\pgkAF bgY&U-<0`N ,a]Ar01AO+TU ;.g1w)؃TAb(0:1`: 7YD g+ ^WlN  a}ц 0v@wlVo 0x#c "[leAK {SC~ьQb|i7"AO1KĀ ?o ҞG$T=qj2u1IccޱQvZ `?N\w B! J=ہ# {ʀL!3vC=5ԊVUFNZ$1ɯ-5R_^E%I<&(wm < ߳~JCX}=X Dxkn$L$QQuDPYX.!ՅmXNcj -A/ NXhd2+~[s00Uz> m$e#h2~H(YW`KlKowϋvĘ 7wy2X&&;9&B@7lmi}{;{͉xr O0c81&* &lX&G؁5ˁ0<1&o"=`dAX+ <Gp/zEdk9F㋭,HU EQ5SK҇/A!/CR ;2ԪTGioUKjI!7*ԸǮI@zrC7KO̊eZ':FGThvwUb_ρ}AKlPca?2dlpRmoC6,Oːq H KS "mP`p5k ,BE;@ QLBONb$@}~riX e-챭Z+pςrni< %{r7]fXxDu՟ĺX+-<#g |%/?g#di,=F"]"~i?6,Y' E~MBjJ⟧_5΂0)S}y{f 7M`?O~q`V'c!8A!A@&)O|Rlp oqXX[,ælZ~ktn0xI,0wU=՟Qxu1&;=wăߢ_/h}13l}OJM3,կRGlo>:|I9Hw  |;k3wgqG 2Y³D'k w1 . u+mݡ?>#Oҟ9[OJ1 rTR6 `5R_]<}<1hd{74t+]_ JW^tЕl2+]ye@WˀteK]˖.ҕ-]t+/[ JW^tЕl2+]ye@WˀteK]˖.ҕ-]t+/[ JW^tЕl2+]ye@WˀteK]˖ xJe~WE]޴ݳݲM;n_?]~qo\;Z;2몒~Al<}~E6 WaYg[O}=FC x?6#ԠX3r] ޷Һwt*A1g_3woa,nXTCI?3Çt<S!}_\{C˳N (*5+׹Vn_n `) /GkG|d?t?_9q/_{i\olb /߱hĭcԟc 5ݤǏc?Ā!VEAPVBCH*r` >m+'+OjG~uʋv؟n_N;d2m,xKlLN2/@;-o>/mʛ? >4}^s0_;Ǐdގ |E~; /EA9~Z~IG? w~ZK[ ;Ga8'gta!s %$;sY>._~#DL_ ,9~,Znyy^s| 5,gWp(U?ƀU #I'+GN d r샞t}z#(C:js}>o l?پ;=q2#bU ӝシ,}X($2`A?ĀX՛K߈YdR@ouwFTsK!;1}z5ג/.*2"Ӳeq/zU|(=wa;z b <7 E=)Tq>x~d.C]X7 Ճh!EB{G~f|#Zy^9|00QBYl_ΰˀ)WJee ! cۯ0˥Gb(0`IY^~]]*%y >k{^<U:>@O0Ξ>p .70('d<#xp3y6(5',DhIdB_`YK<0Rd4E/(p.! 7o+\$ՂO_}vZIE_~A#`$ ۾xV@ }ĕX5?yS}/SgqNj_o"=rR #}_w>Z--c"xgF*}*^8<n¨V@TpU{2J h[EN{vHKaRկkNK~u yX>gDc3#@pcЇ_|#4~U~h eo'@Gˀ;-| l{}A+FFrd>xh >:d?k߇Z_p"Mq>Xd0c} K`G*` ؤ 2`S>1KuTh Y1ob#@;}X;+`Dk~91VzXO8[zOy =#K-,E~x @ IoY*~A ','=?iq)x^'K`9fE>,H(ο"00A)>Yb&)S,̀%0g0`QOQD`JO_T`)=9 YS6/I 8CaĀ;gD1" ؍ 0is|_ۏ 6VLl"+)%@Yd=}!yjP啊Ͽ_GxC& + Th<=?Vٓ_IVg &Rj64~267}.R2#rPO>_]G'(;92Gb2J.;W@#ZaA?50^n@ 0QQ=:,AG<0-_Jگ?}w%ot_<z~hwWOBU 0cyV{~.X'?s|I_QТ&GUq?PJŧ_ ='5*$ƃ< $؄xr𢽾7@1 ˀaH?ȇ*=}x Q@_eAK7#ˀ(ӺO3Bo`d = kwpP0-+B t?y0"/'ꯚLc-7dp< ̈UW (?ULi`lYkcIQHq~Bvv o5}HH[ހhÀ^^V^k~p Xb'3 9d=xXMlz`̉sV?Z%Ѓb?N+` b 3,x7Lg]S>K@` wnXN/PCT՝7o:`,ng_ ip1@Y6iFlp\9X~IFHg"|w?wP_X3F _:;O`r2 oT0h+x H$}E 8X4BHJ#R/NSM2W~Q15&6̷7}/y15A}db9d1]K 0;Ȁe,9xiCFٵޮ}Ke+xZ`īqJ3C k" HM }g9-**?-vYQk!͂y } [ }m/[ h3o x^mJC 0%.CB x0ߐ!@XkTXy"V8 0`E~ &m b2/>sgi#J  o i'Y7- j)> Ā;Vq[5RĀ<dhUPeM%ܲfxCj~XbW-E~=5Vžrf{k.}O Oa'5?-s=%r9KᅣorԶ+ r9p^~ߦ)>O'k*ʀ,"Tj~@g1B IMΖ& 1`IIsp0@w3_QќA\ X;j1 xv: o='e 1{4rA2>-@Y/b@Q{@z?iw?`,x-J*IGytb`[od Y*qwu߫Yi;Z"o S<%URs'yfAހ#GٱI@`di;?Z[.}nj%B xb M&1_Y?e'x>'#~7[ZOc0 xv003._B@B"OE _Xo,ՆNl_7|ZhUl3ѓhQ(pGQ`XQhd\o`߱"0"a _,a?@-f -U4祴|bclE6cWbधa"1`Zρ0Cd \'0jy& G?€ $1L\&= i`&_`xĀ>`Kj`\_- WleV4 Ȁvh3 Y.@ F 8pC{Axk`In+¬0 z Mh .U# XB(A1WҞX ̇,%pTq }b@[K N@T! @ %<~hJS XQyk %  _%<@K`*ioJ5u?"  e޻"٢ #j@:c+\s'~ 0JAxpU#6þـ.6;03mg#1~x  foH1~Sk|cꁸFx/K|2EGG]HD (G*.Gдm ]uA hpRh"  ya= ky=Ljǀ?&x8 175xxq??mUPd!韃2؊ǀH$Pu+| 05s W}]-v:_ E=FwM ǝ" jY8c_W8f |3Z%_]}Q`) &2)E,#/榉q@>`s (! lZ.whl^U @ 2Tg_k`| m H ~ "!,Y@ mcHԉ} 4Q=߮BYK\1L_=)yB?Z@$Љ:aM+c ^m ߀\(8x _7o ?I1bS 0G|V>Йy+2Yrq' &zAG=Z U+Vj!hދ>I`*Wۚa|x Q`;@w^Qi%͘%>sha6/`V@$Vc]v6CA26<0W|2:ym<d} /<+]*V(X|Ț/ >cFM@`OxXcw@o  p~ƽSk)d*$P`%W#^K w?΀=侓g cv | >nAQ6Љ>zYZ0k|I5^NH'!o޿e#*#dQ&^@p_ L!71"R Uv8ijöLjw9}o]#Ty'o+(A7c=$GFqAY܈?eVN:p<8v{{ƫP`b'||@@"I%@@ (Om6?o ¯ٽCv rrg.7XJ%@E"@xЪe@<8\BZ3vf( X8v>GHiGbMğab7`۾f5yd6 <L2Us> * WMItD<'cfw=W :? >D,2yg†^ȓC9@p)rv $8kGVpoi72WZ+$ [T" XXj{L+?[_c_ER`8`/c.PNuM;RB ,>mbM0 bFi/YSk(R80`@C=yx "!Zm7$״`ڟAG4f|jЛy\8V,x;~^o?1@dsCMo!  *'oGY)o sCy/ߣr;Û3E0z"K_w +5xX醫Du (p 0cBfҏV 6p)>sD*oky۵RoSpgx@QHP@  >ёPي`w4Jr΋-᯸_ Q`ĐBLhV :? Ua sN3& `Dy b2؊t QZzY"Nc[ i*>a9M *if?z/9s^-g\z|PrhfRL+Ű)TjsC  zqaqpf Q 8,,ʥRO+kƣ$zIF߲7F, B"Uwc 9!&\ $<#w<ݥ<▏w8s?JMow \?._ 4˿-dݱπD}Y_w޿A)xs\qO~^醸UӪLhRi:%s!g^5_`[LSZU uz`~E][犃eݤ=]? w<<˲&Wӽ,ve@^fEy(pHqM_!Lc,nXU9`<_l+}$pzzs n AmWϤyb $zDe`?>8"&c|F'^'arH b }3`~XgWr?үȚuxΖ|Y][^=T#DI!;?]?D7Ct?+Cdh ϧ'Q9Ϳ2'ŢPaw}E"s;pd W[aރUzT|(9G=/I=M% _>EPF8 ɏ{kvy}O:I '\B7CxFο9g D3T.wyyv ]cAbD2b?0+?/W`Ac^?ƀ 6hKDuOECu<gGb^d)Dd^$h7hT)a_)*G 9 H.؅Ռ){g!{]0Q*R@6 G7)p* ]]>e_?k?&c*%0@ezfp1߂ߟEgP>bW`:lUʇ]uYa8 ȁ9x h ` Z,ʂ?]_?;\"ƃ}?H.x_nxB< x5EKIω Hk]]LI h2c +:eg@UCܕ.^to?\ԗ5A Q_|BƮaԯl]rx:-r"C(ȱ<ꫪ)[ ~%"C jFd8=hX8]YT{<x"仞FǀxM$nՆCv]꿃32 y:0rvǶqR? ,-~' ( _C{?N_jL0nPe))8r]+8_qvnԐвtJbclؔU$dA1o 5rp@s94jH}xXPB<8z^,ZOP_ ^j>wݿ9 1_cMwHI5*|5Zt!a[l hnp]W;7X `(}Z 8onEF^YwFp};"Y? pV GzOjϱ#w&@WG L$#^?=;B@YVy :۟߀+ĀsvR~_ ^8 [4K\i_XlG:uq0#!\b@E"юodO0olwe@̠;l`i3lF"*Q 9#~c@FPKpE]è!oC'b_S gd?ϿHſ"p_~Y5ں|[.>Jc8+ā Q`VE A Hsf>0~ FL _₭ gFA3 깚M=3"k&|"?xUa$ bA:< W}&Eן#M +ɞg2I׽}?dj ,όH,% &zH3G>Ox ?WI^|@qJw2ES⾍NqQ X {B?Q6@).}VN8u-À M _s#@57Ͽ-0~pt>H1 m gӯu~b$?ʾp C@ ذG G5c[?Sˆ"&wdGkH iAvQI?; qEfj%1e-\H. |u$r_+,9a]?=?*l`>Xn@D_-U 7u|bb [5'' Z 8(p쌒72v> k"xk0IahF,iZ|lÀOb@}`M?$Vp0)e|oL w0DyHhPc{;ڀ60 ^>qNvl} P``Zˆ]PPГ|u %*.HIi@KOкfQX߶xOހf,ef>02ta-FzW[<ӯM0Ok]]׀u]o`$[:w0,#.âf)13okA#\٣>Y<p`zO >e0(% (ķ FArhgm-#H %=ypJx`P@'=i:45`z_@K=_J`@r;_-bE#Z| o\R` g# tZ!@2;v=}o0Ps]?ĶX{~Ac K;XKא7A(HvG<ٿ#a}LԾ\߁{ 0(1@ _ 7d,;>FQ@2_a#x?YV 3=WJ&?(cx=Z<?fHPT#%G1WH3`ZϏ"{D o'YSO{ȀߠdF-2 SƠ1J刬Q~Ih׷YԜY-sr\_?Ǩ- @cxcPd 7I-@8?;83_0}0p` {%hxe shв@e]g~C`&\!QӔ D3_0" (y^pͫ׵'J f%0z xM-Yǟ)6@n%ib~7ێѐ~=}Q hl/I1 x@ɳ-@2ނ>\[uٰ'1@;(`|x#3ՙ:u@b@-;7(prr W|J=- 0MBv,_ZXOcB o?dl%2Fik(m6 [(_g?`8pQ1p7> t?݇ˀW |޽ʉ p3{Q3޿f3Ȁ `<R_21@+` :5B!{~+',5D؅13@}J?AP@<ݲF?g܃ QvkEj[X#* b ZTeEV;~~#Ɗ 1@C_ ,d344<Y xđD @; !??>ރe~&S`rq3@yCyF#kP!Ȁu#Kl-S (;`S^B= h_ӱ@ XVo喷WJLOi"W-x+ kF-Ā1GYqC`T쳥zAP߭DU4`1]l. ?+`_<x5] <`Vۭ \S,0d k^+`Oeci+ Y\'1jߵcm%HRea@j@=p]`?U <  3h52/}4y9KXZ2 Yk!oѺmf 1|gV_n຀ Xikp`@m h JRYt'3`֙U7X[>*hI1]p'HX3M;Cîڶ? V~d+Ok@ o5Oߔq (9:gH`P-I}aBy`.}=!6UYjH];'p 7  6_w\׃CNY/-y0O 5'R`$ X|]WU'euQ`g.W1<@ocA:KFLvVk43[_s MĀmyI XKi% hfں}*hbx-(F(-Ìurn SG #À[I̾[o_ '>% Ў#@p)|늖ְƛ |9H;1׷!O<+=%?p]IL9m $AOgJ0`lѾAv''2Q'aЊ7,z3N){茗(;ΘA2=O`R  ~g8Hlx.1K0xJ" x9i2UaU'#4S3YUO̷ 5 Pjg9 K`n ]'kc-@~9"&LXM6C XoG`>P`UՠcXc[js" &R_? TB Xt5s0VQp"^SUTK",z |\K@# <8j eQVOcNA*߉ʙWQd5(b_IQQ&ccZBm Ǫw@fSC?R-^ =M&&kH..FՈ%ٰ@k?_q73HWO? C~7$śZOY hce;g k@V@Ff\$qqd v@#h l`vx'2ހk # O lԜXl3dikheЏ & lG" lo_m  y`@ KfH2C 0 X& KaE}Jq@baR`ڋ4UM^nXթWߘ]C|a[\Vl j[d.d Xac ~w`=Q= Ol#d8΁6_ߋ{gS؎~<~\1K젭Xܬ.1/HPmj}밤@N\}\GX?rƈA![=5 1 dD,x\Na8yIKfg,22 xR wzI RE4F1!o^O0o K\l'PW<ᥐnYu r-`+`2w$<`Lmހ|þW FKG,gz5%O,ז@b=Ue@]1O >8 1#{kZ4~X 1`7ހFQ @a_9zG hc^ hz Ƹ`|(pAKdWUH+bQ_Ƴ74 52Ga~#~ Zy l]h1IZ,:l>| ز<h|7qo@}!ͲSwaK\tꔄyܔ{1)`D"ȀaUvo2B3DH9cd% |1 Խ%} Y.iUEC٧ؘ4X0_>зȀqy@TW4('/=gH>'a YOo% RJ9qk[`;s,; RrlB}3v l3Ɯ8hLP*w-6vwHS pPvX.[L7Z\w ;|v@ge'DII( pkȠ40D!;%1~ U;9 ,@ ^ /Pn ܊yXH`@W3F"D/i; /<^Wg>0>3Fҟ#[ff}P(`b۪f9#7xթtAO$X=;cd)4=OW@WĈ! PKʀp!S= 7UB|~2jaրk8(ꇬoߒ@B[mzXMa'A=c$1" `}d&1RgT21n@}P} .b4霡 ș]C>qw0[Y1ra$lkLdM' z, 7sFKȤ9 E gL,0\OP oz Y%hF?Y~]x\S|I>L?4 #^n/ڀmlsw `,쬫 #bvln`A3̘&cd@}?LJSUdx ? <2)A5o"B@=tso`]19_ xv$ N bv@#6.1 B  9V W0*[tۛ.Dz6QޭL?AgkX2<<5ߡ & e ^G|6(hE?Zs6}鐕_َR62峵" -|~ݣkDK0[ ?D9#CO:GDc1' p ,L tR`_Ta+եg0"h 55](GE]auGkIe_'6xUv%4R+OXK$SD0 U776+\v\Fs;烂?I'ʣpK &\A?QxܢKll_"E&xK_2'U)JBVYVt=h65aKqMbyI0FpGhqa$`rD=N'ܢ`3T8 *6 px^Q9ij14l_a毁sxfIJy^sAH$T7y6B$  FXA୧>gňOk`=ĜrrJV&Ug~O8hϸtuAt z)sl_q:̉~/|v*߾rT<~\}?eӾ z#3}'Έ[uh֪_Sى:SGAȳc^0w>gKv| /JvmMO/:;x?շ*Dʿ=r9]֗uv.sծ,,g"'|~I˖m T~_ u;f~hg~RNۯ}J|]]һ ! ?O?/>8 -:y)gCo'`ѭ~W]ÝPxڴ3 4TOr?]2F#1Nx`O'y$"/i_I|qܔ;t^^ @  Fɚ5f[Yu CN~7? &)v~ASx1qԩ.o$~t߶}u.@?!jϨ{'lEvlb[gDTűA<^]$}є_4nڇ޽4 r ?仿~OQA}B]u},u~h+P,폪`<;](lP;%`/ȏ1&֩xR򥮮MjK `~`@~ԟE!b}8Cu+!;k:uO۵?VRu௮חy^|ƀ,io;U@M`]]?$+}1 Mg2A_?, \0kX!?D7׉~jΣHE`Uy䋄9%H`x_$FD.b fj>XGH߀y>tp~^aN`$cC5O/PSp5#/#D 7ĀT1} d>0`%09҉~(Pj,3pcGx]*b0@`:qgp.mF?s#2jJwuu)(0nPtJm$D XiO>7.ٟLqs ~gop@z۟~Sr#O'dZ<_ĕg: ]_0,tbs8Btb@Ih - S\Ѳ6Mw1@ٰ#p-wΦ<1ZH0m?q2 Pp-7a+9b@~=@e/'Τ# /ׯM]kΈ,?vyr.ˠoڧ3NY"ckfݽEU)N,*KO7b9Q?0'(RS|)t{g3`h+`ܳX%Oo {Io`ÛZ`^bO=%9<1^H_tBM_{K>@ľǣ=Kutԡ(DUn,GH``ܒgp 4@&No w䓼SfIO^ Y ;|rd:ĀvOo.~lv7Af!1!ⱩvS1x3d DqExy>gOd wyBl PO82::Տ0&]K@r$)^L1)Wэm:0pjj7)@ak;Fφ7@}txu '^1+`XE>ỳ* qgսae {W|n`bc ;̂Bd ߩ/|<Ѥ\ $C'€*`<=sUt3ųG G4VB'#&~WN!h h_@@M-lc4I&גI K(f`Hwf@'@XZ51`U9)ރ%0 n<_, (hd=ZC+^t:k%0 s1o">Z%f@~`%}[o?Fdѥ~7[Y Q&+ G] (xLӯy{x's)i<,ВwNqA2 h ̀Ϡe"@0f@Kv oEÀe*!LԶ ~/9gEV$oBp;0Y*hខ΢_vX@'߱~,À-E-Y+!|+ûj} *9iPlに0";*ƛY߲wx@8 Y}9J*@V6W$Ǹ0` ɀ2 > PJ%`2[ ^}oIN.Q-PLP3 jD.9|vYH`WM6n:ÿa`,BX}01@ B/[it3oȻ~*y7 (òͺ`P;`z 8cfW}}0` g$g|:Tx25F9܃0{Oi`rEאKbސ׵Գ,A:&Pفu dw&Ku2Ȫt~4=e/`n'x* `c@}.]Eu!( О:|^Vn ؾ!5G}6yOAJוD#0g laN 2@g@|y=$ a7}h,A?#3f ~'VE462%+=r`c~x᫱cK(GAQ~p`Ўˊ|#@CZu *ǁ[],j0` mBv>?^G3-(bSU똅5bU ؀f5΁$m7ձ:Ut\z5UXՙwi7V Ѵ&OjFݕXA}b{lO8S>=} Oџn 7&8~@Xg,&O b.ʀkZ\51 !;yl"ihP O[}vkO ~w=p59Gf ;\Oe#ĀvzRˀc3_`mܓ;`!iK@I߭"/@=d N`w]TAހ(OWO (RfoVZ&@m @o`S}M`=+`@׽.fe%/ba`$G||N x#|"Q._Ӻ̢1P#xY~tH9+`A \ LڀSڷ=y_!1Kg# Ğ!\7fWH!~!?#p'GAM3j$gpooG>#ȀYS9d澖UOSĀ$v ֽ"ݓcqܖUq\v)b 0 OÒ( GMƀ-f_v1fi$I H9]eU~ʀTґz=R`O 0O@#7XL70La[Y}xViFÙq =4g,-~?Yӡ>cvޠz0@s5;I!ú ̀_Px2 >@潞`"1!MÀ3Fv VBU3-KeܦULDg|Y6l#A0odg|n5Th/!`$XVBg9bYL#uf 0(߀<76{3=cV$p+XH9d(PBZ6g#IϘ)RhC` 1r-g xR60iɴhc_eAĘ `EQ+z$Α^@|j VZb teQ8~ pU뼬I@ՄFu0a{$&B 1WOЗ|  ~p8 z c A`b80X 0Il"[HzXIvb/<}:~)s .<@ޡ/Kܜ<)ա{kB>R|_v@0 +r f2/K:gW'GB!:f_Ӊ#37=Yxk˜ Z4OB?lk+yItmQ"Xb~6ώx:y\,q*;,R_Ch{_O:EvNs{T.\W\bOTk)mXG HДCA7\M~,WeY>E0Fc")E?_xfE0B|.OvKrd8𕢁O:GD ?KX)ɦu7@hY3eu}|\*U`[k hk8L"ahmqGN9k^Hhk;$W$D=F S$#R CV(F }b#i(˅E@r|@Wp@P߅!1WYsZ~2, P{j{RHUKll_"EYk x|ĔBY3B E Wl0i"$jxQbBn\h].Tn5Y@KEb~'mo s:`> ԙjT M-C_D#܁ EqsbCGcG୯0n_08S}@:oxUO '0 We^ YƘxr2gv̘~Cp%>`,4vT@/)B&ܷ'ߧ_5ف:&xD~zo؍M@]굟bQ`Y鳶aQGC ſ~P ٻπ}|Xw07_urHQRG]>ԓY=9ֳ^-zܪD})&$EEο;j}nHIZ ϯ%~ş?^?b@,9NE|l> sUߎ^Cd;_B;!15v,9ΆEQܵV_B9CT_fD/dy%NrLH'&υ??QD[>mrk߈%\su>@wrPK+)gz~MЍOF?B%|9!=uS3P?($kHԟ7E;jݨ83ű(m @ٌWߛtEhIux:՗#E>ԗ9>&G`@z ;;Z?M_<>S>Q9 G-Ӈ뾺LO%L">t?"srFlv`,Rl 1\y9?NNYiB_Ru: $2@v**J5xBvc_Cd@K)J<', h/?g9K K` &œ.~yE69r@{7anu\̀4Ÿǀ7o@.TaTDO|}"p[2fdm? PE |U~QdLksddS] X _k{FXo;З;R`k{ma>gp4_?|L/!dA̩oos5H-|cC3m 8wz.w~gĴKyLq; SG8B:n(d-Q" h=; _ ?]1Xg '$gb7"`&a balpT`co#w\*NpMV@"8[De Y8KuLϰ>!e[wU/p6#>`]ii&E|7~@{`+2"ŃxB'cTHb)s)[Q;NcQ}>[&xzo_,#19yx8`jگF˪i\Y7%G 8njdb-&`ς as2O%[ {kx2G A٬Z^o>0]`I9`,=Qs7ɟ. >v2ZFk|]׿ɚu_>bC/ĀUQugW@3X?; Lן4#~?o/e8۷o!V6/WrV=+Ħ h3bG \Md9Y0@ /C[1@ި7U@Q@\GW̃.F z{8# |_W&e&>g$€>9Oem[_$OP[@obNNو*{#b] ,J?a5vjP$2)oklY2%n @`=v%C̀'  l~K-Po +s0PV8سrBX' U|ZgiP`@@'/s4Z K@;~t-,Xx4 + K[̋&~xzX[|s z|==T{{^3b1V@~EWʡ7f,[l`RgX D?*:+K'0y' 1k0uL,c}UO'ޣ` > ~DV4\8ɎE{wVe} c<%k,F_ P 1`b/gRM@cPۖ5>\2 N[2 GV;Ҷ}}P~|`ՊNbW D}qǮBv2X` 50h 9qA~@W7ᝌL7Ϗ֘¾_Sq3KQퟃ"h__?xw@a/i\9c}K}G  x"Cr]$Yڷ<(|{E "X$\ >7@G_rb0RE,ILA鷯.x;@7PL ,vV HVIJ;M\(RZeU} q<|Ex t 6v+AJ~; <l8E )Gpg1IEv&#Hf7'w>8o"-9X3]o}~WhIbE+%u*V4(;H ']D߃p E^'N&ƃb=SqÀ%K4(-Sܘf5   xL0cdK5Gs87 )ggNA_ 'iljG+`8ggh]GMTf<,os**X[2l?!>g>L⁖aҾY43u-fŬQs >RR[,6A PXH%H>j kHJ4x} gghUc-ZyDoᚊm?!0!K>0LvXIIe~ xUfZpSY,$xrw[L}4p#'ySW?ɞ@>*|}O`)_  w~0 Q=$X 2`?_;sq2eN-exvQH f{I }aێ~C?\Do@ x<Xc{z Y- HPle2@(شUg 2߰-1^b؁?{Ϗ3kiр;uۦ"@dZ΂(gqvN)*pzμf3=?UނoY{EX)f>USMhLxhyQA txm`ľ=߆>€"1# W32 jHq@ L 1`3P&> q[m о @`h,^J1H:=/ wb6_ד2 Q>ז꘽'C& ,8h=dAQ0@E/>?Bj;Jlߌ(P_5VO ) 0^ 3{įhQTm ̀@ K`NP~G =쓯ؖ.IF8lЖx/ PjˀÄnbx/%) ^{ ~XzUFbzR|@l `5 ]uw+* Ġ8h:AP7 (+s̀sCKm8SΔ* XYIxc_D@__,sF‘MYga\#v؎ @>d[$ =~G,([ߠ/`"g\9Ϟ9<R_V H gӒCԉS11(>"_WaEqs1> +b9wmH?>sב1OMn0`']_~dydO_<#;E_F}0AA|75}s@5A kTm1 qer=8`n{2q`eXAӴkOnm~`:=X2^h. ?+`/-0bwye\gUNϙ}.`ɲc0+d πx1V\Y%K`/Lo'+`5#2`;m?x5=b zk77 HT%7>LH1[HorpdLlMv E_1w0CdF2@q710gv>[WΐkFG?z~o؆qVwx526}8eQ, 1 2 0uRB X#`V 0c}:{ h;`GG}Rj~C x2Ze^:biT9@3dg0u-7bb&We#}vf緣h]Nj~vFqbx ehկ6׿Ȇ% h7pY{xad ^yS묈k8~a`6ucχ!&?yӞ€4kҙbGqBĠ#Qo h LaRI oC XKi!8ߝ 4M0z֤|M*y!;ϲ3ן@CwLZC }ONk$G9:"Gnnπu]}HWkmJ xO XOl]=mC) YOe wh(Y!K#_u*58[ }\+Ҏߟ|vx?sހE_=hgX|` 7φpgL1=ĀSf*=O`R{QPv'ϙh|wj(AbSr֑<_hUp a";gcĉׯ=TMߓ@~`UY &.<TzBit#{%窮8O`̳T _5 ((@ mVdo hr&1#+_C%ҵn ,{(up?b|um IY)0Nd5yز3 N`,9Khob 'P]1 eNy}Kk b>/3=) a]X/01;Ik;`O骾86@a<] !K amiq. ثY[Vk>fy䆜f& XuGIZHh5m'TG7V@^Dt Q {` 8cp]lx~[Ā{ ހ%.T%q).-.@)OV.{b߯oR_@risy. ϘbpNU߂5CSU:4bi%)PG + X Xq2X3a$/Ā'eF[<-䡱@RG7ǣ\K=?[hX KRG(MD ` Xらcm'X̊=-/l :X?}B@l0)랔bmgz2= Aŝ̓O Fhgl% o(E)cbVDʡRo[$<]ZoqAs tMc XTA$Z[mߌc 񦭞%r r6_= % ?gaK ?lGO/ҺV C_*=:{x:OxGA]^&VwUwpKm~oڣ'/p2 b Yh`y O{}+3F\&SpU/` $U A/lHu1' [GfxK?* {zJ Xi.=>&>0&0hЖu#p"@? o+h407&x/9X'-ygX %`ʊ%chošdG)#nl#X1(2vA2@Рy㜯xߵx_3`pN 8\ < 1r In퀄3F{CkA>9|ͰJoy`,wPiL`ep`P =aֵe8ҜegL>j`%0 t`1&1O) 3=-oWOG{ P~ɧQ@ &00 3}f}ś? @,3(CFL-Qh`3F&X39}&p*QH0 $3 P=8% lAm&/ f Wyshў;C5ğj,0x?1 Z=d=6{1Rѱ\xTS^ gbc@lSS:](?`9)eg)X_`IÀ.|/kÇd濙; >d9B4 ?U~%lV v@og* X8Ps`$B?u8#voКPCqqLǂO v+.x,Xr]\+>o=##wZ|x>;#0yY 3F"PIlV tUifXZN-x.1f4qY\ZUz 'A>G(`tsK0'$ +( Q8'-A W x@#dž9)%f cM haaZLP3O[)0azL*\{m߭,|HM>¼Se1w̧=ֵ,k5zyrbv fkX2ֳAՂy ]HA9[th~i{ߜ0"";\KdAPgt !PP~.g%,j )gH~owG]V}p@[+bn%X hEcʪZh'xnvQD;BVEXYS4EsLDl Vqר!K}}ПH- x6!Pp^4@cx6uFE"t~$OF3 (6(b#KvHH#B?ɹT)ƓEJIYpݏ=ߗ,6G\xr 8rQ=櫻<dE ./:K0u5=AP}iKd B/:?Y` C)Y+fY `gL 7D#WP_Ń-^adbBuomh15WXS@׏@4 h5`dpIr$sl*%ɉyao1M?pF 3x8, ϱ}6ϊѳ\oCYbb"j_?%R؀S})WhH˸s\;LiuG;x Z\Sr] 0}R@g "םo{?.NosN>}迺UEQsw F毥0~4,BբF ZJ}R,l]1$/>~ﳀxp/E/T 8yIZ*X0qV3UgZ3 ӀlR5`Ar:% (o$qSl}a[_3`}%`qlw8 ,$ 7<[gxgJko:cIxG4gWsr goP :yTNoLƀL4vT@/-]J+ߧ_5ف:&ZЪ_wƽo?vceD/U.گ+??l`~5UMi?=IOK=˖4aj50cuyo-2.1.0/data/pics/bpFreezePingu.xpm.gz0000644000175000017500000000161510361461707015203 00000000000000QO0WMME4U*7=N&x`Cَۗ R.GBGWwϷw7,[˟w?\Yz,ol%fx0oŻo_o<σ,=;?44[d L HWժ4tm3Lǐr\/4d ii:ON1]5t^t{=4FFUVN ~ =ějti5O+HueKHw:-OqfHT6"|P|}}3&I?2Eя ~xL $(%QJ<8xpD)1ʃ g4uh9WFY?%eL0䛦zIv]ffnb;5G%y>lk B.Jn>;.h 5J]QvKxQ$G陪?Qmތ1R>ƽ~Ɔ5(gxcL:Q_nOA՝}O֗8B5yNyw%AXX`@`P <"XPG$'eP< 3)~xf;(s/H> / $Wan|M`pG @Ĥ[:"0p] s@EB!.(X$lcRc ֱ }LJa@`C8 `CIl " UQ$soHkð](|K;!_ ;HP$(bR7A#*|O6(?Ho A~ G3$ p$Ax/$E2($&gI" g3w@ja^ƒs9/AhGoR{ҫ ˬs6^rKY8(=t}zzuʗJ/g0@W 4`/j+4,<]j7^]"3~ڳp4GmIIIŗڳpF00&QHζboJ&/e  C)ab*fdחu6vsl!cksMp6H6Z~qOWu|Vqu{|~UB>ggZL,URI~\saorHĻ.[n2}Vy(Gvz8[n6 zfJixZ9;>>rf)m.#7,EA*o 9C!sGrp"ZK%bHGlXXՇ i9VSJ dV],8>eyENƥmJTSǞ7 V MlEa)eeu$Nax@,''pw?_QEA?D`]>ܿMh۝^%B'?l#me?xy=+~H?[{hZ{uYGA3A@3PVC{p=W?۬d^jʺg+r1Mj_Ib6w4aIq6#BpZ( ãEFOkmeTQO\pٳc~<&weSFް%˭7RĸzDהpxh햬-jF.UO"RMNJ|$|e#f2L\ڻQuwzW).lF[/N&6NJa_O .FR/kɜC!sVke8I'.FaּK#>3|)1~+e(rCJIπ;vI[ɋu2xQ] ^'SJEF:EdDX~{Ѝ⥑x{8$IlR$)eznb~lg2`Ve:lUS6sXp81؉]_ek45VMiWAs,&>+Ϲd֏S?ڦiw}IxA2c͠8xN(bJdAȪNs:V,z!^+OJaf2⦻&ZB NK(hwf:Y'89r9C7ơgaok{5Yg- 5]4g혢^K08US;=8XW9!>Ö5f6$ႤKּ϶̡Б0hd !>eg.݂H?$aO tP#X[ē@sYZciy.ź}`]vCDPA "<# H%"æ,^i?~~MX '!&R$ >#OyI;Z~bnO \Jڳ'z1Y~bnO /'?|B0>5̖\4c{0mw0-HqH[P_iշ'0ʡSyrC񘍧<尜Zx;sݘWax<2%^ et= #8} x^Of ?hyO]''CΊyt9C!s9dKxCGpSv - =8C KH`~YʷiX"S%=H>I[AEΙL+wNEa╠7EP*yA<|l1[ÈiMo?jޭoi~|;m1'4-vp;qܭ5vʴN>*,3rCWdK2\Cf]|ˏ:?bSj^iܞF~6̑6,Lh$Vw&95:T[ rATp]XtmEk & HSRm6_7`Ѯ˜&ã Оx](.ZxFŒRwq' +ь^*f Kz,,:lQz)YI1Aoǽu2oUrRj)?9C!soq"}0{|mr-mKӞ\LL\dr@}V>G26bz!uyAbY(nHq$jDz %<B1,+3$D'hBJtİGO=ٚψ!YWOv:{/-\\$xE~%x{h7\|u_LOw:{~C~bv"ғ$2]?Qx{y'C׶L0-Mi:*Ԥ.Z; ezCDYa!CQIDS1}G`Ti⹘SUDRW=Vy"!dة?[qV\FK3C2o9|g9Cj24Nhcuyo-2.1.0/data/pics/mzZahnGras.xpm.gz0000644000175000017500000000525512401656730014525 00000000000000o{H)RJU /.֐Wi(b@Z&` L"5fMΝLdn{2iݾj哀 ,JAZ+c2/EQr*+9Ei| V݅R(IpVw QଲP9pl-+`Jim.ARR$ET@WVחyր R_C4dl@e)/pΥ$el*Ll* Va&m|Y_U`_,Ko%Y* uY'v- rK}$8%$\j)@_!Y%#Y,߃̫蒱,e>U[c?b嵼Ol I2cfOϯFǪ AH[i*p>DnhdY/+p-, ɐRm%`Yʗ*d$*,M5܅{.I m;ñ@-ᬾ9߀TdE4dÀ  nhdV0 `)< @Q-_z UE-gÄ;i+ Fi%|6H3J=F?@*zñjXp p,/&abճ6@ ?p=~5Ӹ#G2BQtk<&F6K[K62z7Tko:-GCFák癮g?~^HP^߫jgQzT)&C|u*6;ϛ”8,asqvY/yHTqܻy_LqlZl4N{koC'A{0C;(9,N&;=aw{KXφp:`wҼq=Ybo|k/77nڍ%Zidd܃{p=e13'=*]NcWOjsb_b ^w7r6e l4QWף׳"cI8;fH5gQqңЬMjs;bwm!W"ky '59qwJf/Z4R{WNKIZ`LJ59? z_;_( (?[Q5p?xJ=yXNh.;'ģc$@C$gt4/Ήpbk=v/' kߗoo>!K|qTۿ} DrZ3ဒa[E,ūչ1Ky 82> }6%bP~?f|?ޜ.p_4?OL=0.֞uG^,rNp./5&s^:5/1蕲dlk; ,LdnBDB>J ^tkYvZ@[Ll:_GqLFM{њs7L'˱ܮDwu9ث1NH)r?V<?̜|*:_s2@TL`Dx5t{1"'p4?xdi vNm vN蟊~Tt`dOE vN|yX:p/9%(#?E S|1 vNYTD`d;'Ǵ)2_s2c;'O vN?:&_s"hF?xd8y|Ήa|b;'?/9?S#蟊|1 vN揅)j`dOQ;P%_0sJO??7f"%vcuyo-2.1.0/data/pics/bpPinguB.xpm.gz0000644000175000017500000000132110361232217014126 00000000000000`CbpPinguB.xpmk@ƟbӍlHDM "탵hA߽dowggg6i.}µI/nΝm[؞~_a'lo>#p.|t'{xKnк]vݮmzyvW!o@hOe99BH2`Nc ޠ#&3Ϗ6ƀ)'4T/MM9f8 vD#B۶j'p0>B(1}S B2D"%5 @ uTM %0 PQg'3ToÄ5c=_Ufz֫AHk|gEa+0R>G3fՏ y 1= [12LA[v"C;1F Ǹ\Y(5!c~}?-R?8U][z5x!̀t%=]&ਏ?>BxO(}4KD|6k*w1Y7\5׻e w׺cM_{rSs|!cuyo-2.1.0/data/pics/bcEmpty2.xpm.gz0000644000175000017500000000542607562216753014137 00000000000000=bcEmpty2.xpmO\G@5-Kb"6%KK$P@d C-;OU{k]U8=ӟ7?~77W?|_oo˟/?}'/^~Oz߯ !OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4nsdH #jӐ!OCÑk. OӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y7ݢ`*ƞaܩ^ aajse!4m% ,f؋m[]j]A 4l +^m% /~فJ|YӰN6+j؊WU6Ř^#FmTB1n҆c=v7 Ӑ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OCI9ߐ 1HCüy409GHC8|4f!/'!j6'80⍨dmϰ,û kCdaR ^Acx@2 Ǯ N1<}h 0|p G N0lzx .qr|'vly 6~:K7z*fˁIg :}v?g  0:[ُo;0px~#5{.`y^ -C2 /-ްm21 Clxnᆭ1 vxnц07 :@aͳl3\X0|q k7ZX0ey j;XYô HB4.iQ#Cs4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< y4iӐ!OC< yIUZ1|7hxēu ›k4i0g$,gx!OiF{~ÀS L0 y_{nxa 9{w r?\ΦbxU勗&r̙ '|%}r$ƒ0G` Tg0PV,19*Q^B0H jU-Y{`p7Rj,WM۾ [$=wEΟJTȇ v4]#lٛ7x (B>Ɲ8+]+;q5#e>fq TW;ᆓtR}Kw"!U#Wl?ڋKF-t4ZCפvw_JRqbgPqI>}^&[|j9=x= \p]S O4^"K4/ӚvxxUؙ3qu}.*>Ycg4|d'Bw#M'hZ^GiZYQ>pVf2K'yjh{O#MwI1NՄvV%˷M~Ŏ-9z־i_ҥ'1)b85a]~pmæT$kEi~|_؝&GAы\3zw8<ذ-rGmkbz*]iۘIǞ]:40| >}~(-Y5Al&+<%?si9>"J'ynKBr,)lIq^5蕙hC |tӧx\gۖJs}Ok$vϡ<;.|$*ih:i~?<`NbS+lMUf嘖 >ڱk 5A'rv9xq O/||mxabT .oNvQa2oNgは5pe^J4= ^UZ?%}m!S"z%0$d҇t9bCe\4]^}{,Eێ7`=)Dt۩hWx{:=l&#nXD4bi]?VAdnwF؃P@:XkAH#|CMڏƮhjtBo"Lʸ DaBAcoz(XnpڝNI;6:NnwMvT9Pݛ)Տ abÙr#h@]o2D[|t#舠 71.P7mW jRYqc[$Տ+L5=:hp&fYC39_ Z fmpڅl%^T7O*1)k{,@Fs _}GG5< AC Q#ҧV`P>l͂[x& УU1鯡Ǘ(_}.7?=) 6-jZzcVZP,kc0h1ܞ=tӥR4/T\tf0O{wxU,| _/ثȬ=RyU-n܍=~%L5,^=MzXA%oÇ'4ɕnoG{k}}RyKn_X@',2ھc崇E1Mng8AMzs׮qb05_v@ C%3+h;~r jD/e+m'W;&v1 ] ~eM殱j;=bGOF~j'V;?œ?Y }~2o肩y W 4\mw/\1WL-fzX1W "  gV3]6@BĢ%+Tœ[]7"j(ڭ j,sP{BM >lNl 1J. ~6PP?U`5l^QN3&'LW\c<1#oc<1##Ѵ49_91T4 ?hGc[2fv< eCïGwcdFl%>E:MZ"0/A.ŨkQ1[#"9%( oP.OX#A1EH$;Y4e2*#1)iD򡪈7>730ieѸMY&v\XELHt2g><^crAF/#`NhS_9YzM!2c :]Mΐrb{qϨ9񂏭=ff<]Q#% pc_^N4HeP2"O 0495Z1:z5B~QgHJe+[-[FI$u &3Zvo8W)c0'10і=SǨv^#BC*P %$ꢌAOԨcǩ$!m5 Z Ed;1$pMaǸv3ZKر\{TćIvQ2?q1^M񲱷l|6c`LQ{%7_{4fnU6/<,XxsbiG@KC/ɍy-i8L|a!rߥ려W]1nGH2h D%(b<^1&;ڷ"0dq/.;B8\dqx5bq fsy\^%%~ƭ4fi߁1_ah83[bB(0'X_g/qk ;hVmdı^KYFz'Tzesyf2яB7J Ir|rh4NJxt9^b\~510^hxŮ/'XoWٌ2_1^qG!<νkAUy}nj^혱\ 46Usù~踳&1 ٌvr&Mh7B>s>|vֻS Wϫ눌zp]~mWgwFy}{/vF|8:?o%n.Mt)1!fUdʸ ,pyԿQ;^ 11?0z֕(st@F7d># y%y!#Gd2vUk dK$ K8;iG<Ӕd\؎^Sb𻳾<㰀\Zf$<5r*䐘n.Y]?ZBg75qQ;If tb47gJqpbl1&H0 eH}$ "'-ےga";|d*5ϞKK~\o֨[,(wYriJp|?v"ېSe6.x.@a}sY^f."v'}&zcB9> 7<1G?*W:FwZ|rf9? ;;?ɎtFd)מ \N^: UF6L?gK8fZkyvނm?$ug/g*FQq2qJlyYd:vd_8(Ґ|J=4+( 2xNZϐNZF@4Z~w8q1 LZдdRG^7FayoΪfX '^Fuy2o򁡪܄/E`$zh9ǰ>W7MFba?%Cߧg~~mMbCW q $0GKov4tǖDц=;5C{HOWh°Z2 ﻎ_FFјTqRUɿ](3:D0t1մ2PْjadܱjPe3曑T?^ƑdGMȆ'.Y|g.Qk.VF-W .C?A$ `O FݝS<*Qw5β"55N4YDDάlg|Mf3|w>!Zt-ĩH ZnCQa_uVHbdf W~LǶ6C Wɰ_N.Llg \hKRt$ =hR~*X-G F6ycG7x1ycG7xw+θkcuyo-2.1.0/data/pics/mkaSechseckKacheln.xpm.gz0000644000175000017500000000511012412604557016140 00000000000000kWJ+r&iDJ=TtYE^ o?=)d&+I7_ܝdf?.˅Y֦6pѾMՎO>_iK-54èjoҴ}vDZ *݊CYQ#tIX&^% l$4jha>4`y8YuB[EnUmk iAJdz4hX*. gdlz =xc848V 5MBꚮꑃ& VIh] ͦp]ik Zf:pc9ՅVg&\$نD$$AB&9H ';vpvtLh5|$\ m]zvk\4n$|9H؃FnA% +$܁EzLG=-,$|Jî.\@ 츦'?grnu]z ~h:psݨThrvm݅!U}Vi^lv@jǃCWcᣓCc$qnکBJmِgvZ1 [Jt@4/0nڤ8_g?a l&uk-N>:)UirE38਩~@kQC6)z7A»n] f<.FV<Á [D!d: Y^9Wn4+۴k/ *iJ'Rΰj FB1PNaH%ZV#:dw8)з"%/c!7YFK1 ID{¦lbܓ$TXn=ZDnҾ9}p_ 6:9I় !I/9(4x' ܔaL!r҆yV rIB8'm@?Y( A$M1$7(kKis+w57=u 5 AmE CEEWK~BzWNH%ZZ?:0;n!?g,B&_=ψNe!j3T0?ctSAN~87ik$6sGݤ s6Rv3_78' ܔ!9i+_4I7gS'1ĻiIkO He:sd Iﵠ4Z0`g܊ab͇bab/:}]BM`BPAQ#PDQ3FQ{RUS[)3PPRGaX|hQIûFa^DRAؑM5Q ALn*I8禜x'qMګ0WYj3!I R]XOc$pS^B oi n09i<+OPOc9w$ @!֡,@ tAOi`% 4;ZŚ^t6FVfvaU> TS[)3PˠB0'z^O2z"?.0ХKz4DzzaW6D1 w$馂 <3pne^yV8&EӋ,B|,'4\0pN)/CH!rҲ? x6Hc$pS~1IL0Hc9w$ @!W_FT87MƐ^xg" F1xaXkXX{c؋N_PfP0*QԌQ10~<^áj sP9ba ja(uȔko { {j Z%q!7Z"l&cuyo-2.1.0/data/pics/jjFruehling4.xpm.gz0000644000175000017500000002353507550521117014774 00000000000000<jjFruehling4.xpm|ms6gu6Ø(mZP0&'2dJ"KH,K^7;M.=x~.>T'?o~y~|ɳ~O>mJ)~4>s:ݣN|5FtbƜN|:~A;t:}~4/t̎2:N9C:Cjz{|1^{1>{q̇ )t::=ϋ?ߜǫp!@>C͟=^ YM/|t|<*xO36x΋v?w'/N'h3u5ϻd?0?yga?]͟=Ot|5|hy14su<<>{O'~atz4=su|:ܢ7_mmxsh ^'^tșYNr8017o>: C}Wө+cc>=~>;d|z0~hЋ7?r9dxA)wO1G0>F~{zxҒwExs(M#og 7!nHDr[a.30T]du|CǮi Ls\uux2fa0K\fmXLkFiopdV9|45#(_DxwZC杘Ag6s=',uLFaȺ ֜t,aMpss]bZIj>`al $yuV\,w)pʹrIలc O- …pm1&`J.2ZkLvܒs-)` Lv]+Jo1|~_on~!S;l̀At8p/ NډVH W~yĂpAX]`:x߂l uн SÔ/^ؑd"z"8p;DXw\=w{qq4v`xx:Ȣ72얤f)cFL|kԇ7; ?=~q(wob^=v0ll) NNn-Ҽ3X0=q{v&M{9sExFK״YMh,T>} \!LRVuWJ({ݽ-Jԇ{}UU5CdI]aKd>b5YRHy4F%[.SMILu%*z%8dW*乬L0r"Z׫4{A;NhSݢ3CeoDuެsGE8O[tڄ]ޚBiYnUC8^jU-\^/Til|]&mPr6^W&~CAbw4"&0Enx?a(#v (@SMcGIQ: CeD>u;HNn3ҷR=EyFm A"b0y޷)&E:VV˂eF+ %TPDu·\ aHX|92׽s oPDϥPF -N09@Ng:WؓniDHPeN\wCVɜcifbAsTKG.4Hbv͸iE_Xe. 0yz 93=&UM 5,{[-bX^.CZ~ 7Lz؅1H#cTv*}Ol]_ ™p"Sۺf㛫k߼t)ZʸWr .3W+ Ӗ> KbE޲>W(P4)xP_Gmj@h(ۮsшjG=I6`lN$WwZWJNףMƵw|T0N|/bm qK R-M6y.b\ZrJ2Y"v5 :ˁ"} vF1eTN ('ױp%[CMZؤW p韴p`]Dal8r\tXwq5naRҧ[ʝQlP 6prxTj- eߓ3Z8\A($oY؋_&\q~H4@bGܷͣ' p@xਂI(M[b9J4}Oo6MlSp|F=& _s9=JB )6WQkE]!pZR#zG yvLz4pC}NBZxpVp%4cPCUi%U{5S6(B s@p uf 9v\f\GFI+JN%9P"J`qB a nR`ȲۜѴf'Oi<ײÐ!"S9\+-2x%GEKdިssL׫ك_+Q{Pu>wv@َ#T6g^P) u"3z~U2 Ndn!=gM֙Z `H{LOa-' 81hR5QeRh&~ߋq"s\"6m`".lZRe:Zb!U{(o:T6x j5>aXaJ&#|`) wL(xPmHoڮIYWp̀}/U+ѽ_,FO>"8ڶ`4 ԙO*6QgR:Z_<` 9$q;iiKd@d qǏ08Ax/6\L MZ-f#%4 @ 2/MzZC4ykXGI-?ӻӋO8?|TR`I-k AƑ?/J.˃u6QQ!=R}8@ߟ^#TFԐK`(.vtȺLdtMA,0h`vhd ٩S̛7 /ZE2RFUpj-rNQ^*UuԚ:'ZEEΩD(@&0 lh8:!{;>1`%TG<өڤ묨MUm}v y\.Ay26W}&[|L8 CEf"g]6E*b07PY(2 "usX}@,{y'J5mUhgb4C5Œ<͹)ҧ\ H9 AD`0eKTꄳ>`Â'={86 fdldrr%a ŴNiK_D>e 2%[#zqFza~/gN@$z+Q1)YrO0q㢥wY{:@~a Rpε2 q=zUi!ydHt^e忴&^r|PLAji/͇EfOO15 ,dV]"#=}s~&B4&2j/K@ڥA<5DiEv#bўcߟ\6"zJWHÂKSXջ?BbMnI i1OTne;G_(JAtY$0?AnۈDW&od !fS]%F"QLbt|82h,ǾttDo.e:;y)l62{f0Ajd-DKP3ܜPsq^EDߎh:/Q-#b#e5IUq)bQ7c)mM«JZ`Oq!A MC;4:3K $QϾ=.'*6wAȯDe<#zK+LkD;F|쨫7B.^HOlP$jGנd`$=Q| U¹հe@O[y۴5RqɪhK}2EC sLEQ 3tLF dvG6t|D6ԍh[úJS}Ӣ29 5CYO ATp=nT両EѕѦd +#ND~W Fd18FE3<" H"Z=x#ێ~hHN۪[;(uDcnw(_a@V:_ m&vhl*VVy: ȗԨ e$u=mQ`9=8k]_z7HM2rv?)m==4؈@ ԫPRs<$8dQ]ZԀ18:Qc吤Ll^PКԔ곦cp$%@EJ50}tmG'L%9xlҲ((XJ=qe_;B\Er,ubxJ1·(U O 7L2:i lHT`(4z@m6z.mv@a2Q`Dz_ BBM` R{cm2<-?m ߐHE!>mN|EkѰJhAP7(5!1 {r Ss T-ݰ;ú(&S^y#)ʱn!AS69Lh=TFVH`yC>!v0A3W0OO߽Cmƨ_ƋB\AhjROFDHiUB-U:Ch.ё$0EF !J1#+N..>6oUh+uŋ$"6*Zd$dբA^SL+t 7. CN\U?u*^&Rxxݛl([ p^)i3RC#\)51 #q߈=GccXj7^N pAA_Z*( Czj/_?~_)Qi]%Dc 0zdi7ӏ4`TnPA߾]Um7"钎TS]N=ɥR6҃$Pyo$b)4d/'1QQ"]1iEg0]U>컔Y//ָ]eG; _V]zWF(diCk%}"P,#ܔ!b* PhD2 R zo 77.w}7XWɉ&I@\P@U_"Fbj/;$"KǏoh+n]7Ԩ'T]NpLKh~3$TݮPl>[ ʠ:&@&|j| wق2;X)hѡNTEblMп^5G`b-(ˡ84V(g`PM  ^ qZ ޓëݻ5}z ]Hځ !A1UPJm|0X>).m!jm|&^t?~߇+CD0\8<Z²gzvZ֬4_Hn1}p~7ob|CNPs \Ӛ 5HptŃJ4栙4%a·/g vn_Wob|C2֙vnp(z@U#+<\Wࣕt6nb{z OsGw 1L6(4df}`ᨒ_,cM>7賽w?$nmp Gu݈ݥoa6< لej] Lg[9JöG~"4hk:</|_}>b;jx_' ݚ/w_K _Xxb`g`u1Zc>|s_`o<%*E_WoW^DYQNGGcuyo-2.1.0/data/pics/mdBoden09.xpm.gz0000644000175000017500000001031712412223242014143 00000000000000ZmsH>$vӱǨ{:v$mP_N Ä`'ؒ9{eOMnVa[{WukgW݊ [[/t~o~%5zE[ TJN]ߍɨCmjYwͷl5wfUPVn>fCfChЦZզmX{}:MmwR7ÉmU1mn ShMW82kmzz`1v͏l; VfM!Mg_t(5 kff\y}nV|qЪ CNUsMNIQs-u[ߗ0fn[luKMz&nITm=LÕ( 5ՖJ1t 5l|2]1O̪Ӯڶ1C!cvY6{lXӀZfQkU83f͢sYx/y4 k+lv_k @Eoh3U/oF%9B4q խ1߷ݦlUlF6k]5|bX9~<'<\q׃, Z271GX>?>ȆY1ek4 9CPt%LC:V aU>l q}d0צv9 ϒz6:A|x|xHk&_r @< GiD;z0|(S&U' lVGyzxxX*[P$0MVhC`P^a^tl6@ih|-J*I{Hqj\6F#="e WGIX0( Ex%]ɥY˴h $]-tf  aM`Z,`X]&#̀N;Hn1e/T},>M5,~i\kt XVeM3 2mDf:[!jlVQ0ZU#ݏWK:O~ Ilu6R.Tc%a>L+iF@׹HL$a qSA4I"r M'UH0hL)1,yȲejHpt~4hӋ<}t#M= J4Zni誥b^M49cV=z,V(]Fq3o2(R(~|Gxh mJta t +ӷA3 <3MFd.VxOu~MB%'}O"_ȉ?Џ$DJN}(DS"db?`%:i%+ݼHK7(h1MH+ \ S)Y~l#HD( T+ߩ$:vU LdA@R(X^m|aGꂒR-1qTJJT?>pb}_)O H.Դ8,PЕn5$=lJ 5&=pWhHhM62"D(Uϗ_}/ƊJdBK^\et FbP=hh0?uڂʰ!:+KS$28υzXN␃ &ȿt޿H(V<~:0\ͨAt:A$χ 0)!Q+G4 P\hHjD}}3}r[9 5}1Dď&q.b+4 #\|dr%=Nܹ g@,f3 |T\3rl8Q~< [k 8OEޛ?/H> IrT+fy)?!ᖫP($ Do P<#덥MnU{&1K0?PUY Y4":G5B5sQ y>%B8dA+<qîSIkd ^anzDc/ZrQ!҃#v2 }^|˲F\Jy*HE.o\IupǩD섌`+\+—3FCƓIr0_O`MCҽ2 L<9v+L@1%]I2!z9; ʐ` <4 (OhdJ߾wA\p*D9cw="ЮG8i2)NLTN ͗"u}}k"PO]u1ߏ$Ӆ *?V J!FB;aWc3.|披sy;! <,aC}@ PŁ 00|56WQ`}i)syKqfܣysʨ?E.kU,*,f39JA4Lhviq dbꪌ1 b#tU%sNN'%H@_ַkw=!r:ڴ ܐ;Y|0%D]`/1/$Z(8) 0y;3Xx"zj^a^ۮ=7rXzWȪ篬U/y\1Y#g& @PWl=iKD\x%Z5j{Ή'KцRlֆ+{ͺ D,uxlpCVhx#PλZ{D-B/ ^ܻdN"=Ҧ A lF'Jv!kS=(Y BE a7u>zSwzPaoztQZ(Pp=n6Meo4[.Nl})_-F}0dĘ=E%pˈucFBU b˩wvZ6noS;WPu܂@E`3laF.(T*WTl{Q50b+oIQ퍡Aֆ@ixw~ݪ۵]bۄP%-I>tpJa#Ƶ,_#;^=axk0p *ԪU}h`ϭ$(`w  ػ"q:-@W!y6$WZ{[#<ĊXoe;p!9*Vk;F45|k{wצeQS%{) IZ8C>S$p>QҧvŸp1KG~w n;.nC=.lTis z\\Ay}~k+fS1wa:\߆xxe-8n킀yК-E1 ϻl:eq#N u8nyyÏO$pa;jz{Lry~7UKJ&cuyo-2.1.0/data/pics/ibKegelPink.xpm.gz0000644000175000017500000000076407550521112014617 00000000000000<ibKegelPink.xpmKK@Kws@.xDJ-E 񿻏$l*E34ٙIv'g?H^bFfw'~puMN{;8#dOzdoFΟ3tB\QVLsPT*e2-/ TH3 *Wa*R@ h EV3!ZԄ1 1"o(K b)$"1PaJANqk"a`- e ekʤddIkÂY&QuM2fwy^wu qbjen̰fX㧛?nvvn0- Nb4r 侩k/u\\5Y;7f`F= (J:sgq3?ob6gXm-׃ 1Cuw\6=Mlv8>Oiv_cuyo-2.1.0/data/pics/manKoepfe6.xpm.gz0000644000175000017500000000536311613522350014426 00000000000000[WLZ*`mKF@" jm򷿙In0;w9{|;;;$=~P"~tz;!QkL޽ GHB&Oc4JZ$B;YFn"8** # cip'8ShkypuU4b'1!i"LYNKKx6B>. B1s#NEȤYAʄDX`a``< p0x8I 3/of~(o"ËTXu8{s`Ci/1p q8,8^ `#qtp;q>c0  a'L  e x\.Yu,(HtR3,kሥrj:TL1xt W,:x]y(J(.vhX X]XP[K/0tQWiܪ"ǭknqb1ʬN(nK&$\L- ў7C [(cq"Ṋ9D;YN Gj#5BGktz}W~*O9b I3mۧ۝pb,ԁu CYE[+Z_?~o=w<3s2B^½9zXnwfWxեdG4Qˉ<_2]Lg# Kԑ:vb%ַL@>A35KU#d,Ւ|8XD?¿^:p//lΫiz@qK.cNpV5ai[6pHvB[?rm6tt쿡l{{PtU!GXVVJǧ&O,tT1]fT1͛e1Fmd^ B^&;96Q}x~pH)]k.yg-ҴkX{>JE⻕CFoC]ZPCبzM^0[5ّ=ʑΉ=lep < ņs\|yte1w`9$?7DGgq_epv蚺LJ 8)2oF+I&b#}$(dŜע/y9^ <Qrxz}MU~k$ID_!w?~K%awHvvTnjW|^K?ϡ߶'OyKMQ5s~}**MnTC ?|V5ʏuƛ9'\Swa3idO_,S%B1x89cTctQt2|reM?F!WE$rjV$LJQOr)s}ϪؘM}(ל%Rp3wohR?AJOm+q  ydۨZM^4;5ّ=ʑΉ=a?x[Ϭ9Yqîh'磪][bDC>yϺQ}3Aoprbjh WjziGy}ڳ}<9ݴ~`@?eţ:qMs5S#}:j-o5.j8Vc_Hz$G;K.P a1cbĜ:Y_m0U_f"Em4 >kds,<NJaZLrt?aPCu?O_Ԛ?L&K8Ӱ 2p@0Y|Ύ0C:U{cq?{lǝWmҶ0[[A|4dHk?J8` %tD9֔WKLRA =t5ډ7Sh|&\-nNK8h1*ObY-dKkP)8j*Hqӭ~=pԥIcuyo-2.1.0/data/pics/manKoepfe2.xpm.gz0000644000175000017500000000536411646353246014437 00000000000000Z{WNb-HUD%BhTOAڊ~_f.`74={9alWHpx^wR]?j7$/> b\`a<ʱ\4=aYp?0(8g|t/qpf^Y@p .c 8"8WYpV!̀Je+^0̄ݔzT J7so8$`-] p0alۃfSg!e J t>G9}mT}èE1ޞ:r\~)^2"s)6ЀQ/MQ) )q~zo!|fqY) C!M`n `yf0 [I3'*?s@R(0~qcc~kΗG R+/5ýU'=^y9CѭrzHͱNor'W)rLoÏX|Sևc?&m?8os1j{S_+~ܫW|yfP4+D6]6}xl3 2Z]BW78~ .먕p,d8:5,7!=:eup#VZjIQWSbâX,Նj|W:8N[1"XlY>tvcV?__Gx<Ց_/Q"2ֈ,pZț4ԧ+Bykh8,^|.ɶkՓeB~\أoU,N31^qǺan9^Z6͓/纖8?=_5T>Xsm7ki`+“|~$'vjWpcg u k!NCCj 5yqZS@v%/-//ֈ'F7=O9fY]9 onڝxZ)q9S%Je.zX`SzeT3 /# s1{Gw?ne<菖5ݥ&y>_QAP7YݺtZ 1%ˑj!,3C] G|pHn(;,-[gODg^fvanc~ҷ1kZ*^pk|Djy|a5QY:&Mo8qo;qo81!aoB"pCBvU8pڽ^=!h( IL ncs3ͱm)uFfh2ȔLr \IYLHVФHܜp ־f0wY~Z%Z垣.:n_Ϝn|=MʥIcuyo-2.1.0/data/pics/mffisch2.xpm.gz0000644000175000017500000001373711646353264014154 00000000000000\k[F_ I: IĎDlH}!Ւ-I@(ofVKdLB.~a콧ٓ ˰O6Oޜ#Ax]oAðg{ I٘aB6@V`71!+ t@ z ن`MLrdP3YYsSLGty &d}w[0!{kƄ}JB„ d!+j/T=L^ ibBV1! U;5uLLȚ" YK|lj%v^:6mySmݳȺB#Oh4oS  ȻcMQ' wSm*1!BLr71![S`B\Lvu71!Es1!C6lmA}"=d["3`g(4ĄsQ Ⱦl/E&d_RtL,Jq1! o8},-tEFmkۮPFnBy,m{5DӞҼ5VfjmcChY劼ok;W UE%'W=p[4`Bi`B`CL~1cBnbB.s'BՑ`[D`>mkZKh>D~ltZb 'ZNK4ݩۢFgݶ`-krϑ1 ע&dL>ML X-KzU00!`=L>4L6+H L+ + + + a8\qП_(G {Ȓb*:J.H2:{7b5tM(E)J祼}z^ntMd%i4#[V% FFq: Q3{TT@dqnz9A Qp>ZT&HKCF͵\7RgSG^%"SK3S?L=yyÞΞ^Beehf(W#D63*/R1@)_ut*_^J b'#/JBVJDyʘԓ.@쥉MR*b;ay#7ˢ1v G W8 g1i*ĵf0X |MP\Zћ b_pY -e}3u,P}Q$cj8(nRs0`z\3c.B>?79anFjneTWo]쿸u3P^_m(ZdjŠ5><8k_ NiQWȔkx|o<8aӓfPe1h)i5O<ƾ4cC/:#}cǤ {cW Jo7ĸ8&#(`ssSu$t-.H)q Un6DD]z,\٨gZXeKɱ0֟`:J>b7]CW>kc400000| C\0PC>[gM%Ć2Y(,eK srgvt׼3 ?D ð &t<b`v;0 mE֫?m"0csm0Da3u'ƶȭ 5w3Xc,+Τg|C`'³HAd=JY:H9WUch䐺`CGKoIL!|޼wMݟ;$*~/}}Z 9>{CDэ% b ӷgIP=0j1t-vzKdTPEUߙLvOOY͆V-cǙAq+ISUtZ)ύaH'pơjCJaVh}1 wvCeL0?y_.)hێg]A VɚL%p29-XhAs3d(Չi(cmȍTcGm8ɲVw@)jI{8E[ jYA q{KApg>*|Yw7fbWi4000000 !^ ]>$N%.H-{lRD- "~VҌ%RT(bnwY4TVAR²EVWȋ5@ 80KlY $PGc[WQ_ǑcM>aME,O1C,;$:Q-}$%9T+@%;#.גuK%pB~GoۗK>B3)j( +4Sߞ np.ȯ1(ye[7!3n6_x~vLOA墜H>sgKUفJqͫb&o+>Q/ޗ}W6}hd7&DΑEځT~밳OJ qȶ,<7ꊉqP>N#ɧyA}i_3\uFzQ=b(REiKGTvnCA}'>,s42V<0] }I Wڊaꊢwb_x%Of*ž%&JT$ uDh_˧c2"m uQ8@;}ߟU1_tć) }i6չ}yy%MzyH1TS\U9waAGrNV&C9IT*|i6+77a>LI#001d&Dy\) SbyQ!J I#D!QXܲqDmIrXVyLZ\0,<w#4Z^Y}N^׀JJ>Z3|R E1{=-0 P\"Jbtu{hh3vL/2uDܨꭏaM\"mb8oKھxraaaa}W?q2gӭ+~OlϾ*Mn^ydS=;bt ܍FHܭ=%+kYآ>;S'f'!bai;N!=J݃xȪluT`Aͨ9aw.-vhA@2֣KSXXqPw"1dX@ %(3 CۏfX*l"I~0_nyK$jsE{Su4L9v - 7Gl\HR`_ c/^ݾ2zxxU ҿg̞FE C2>:;4˟s7QA~j:?;-bZǐ5~%S2ԛn)KA+~ ,vn2S&E Encg 'Dž3%0#I^J5L%r_|@ݡLԬ/`LZkӃeJ]Dc5?HPU3&anC"y{e߈J.Ccxy$5sl؆ֈ$kWW/n $A2F*HF[-[53j4I^gZz@V~(uY=]+i$8[.Uv ]Egiz,k(a|Mbu>']׎i[X|iZaXa `͍Ֆn02KopJ.,_}~^m'Ai!EװLl6x*vF54w 7:^hB+cy^M\w2Ew }3'NƵ D e{A}'̭+ml;~i3" 1 M%R\|1^#OL>Q4By0zՒ(8XQI*.[׽}WiTLTuJ_'dsѻ-@V@;o[l On{yrb D5azIdOTqږb;j^cSڲ֗[^G~wj5_fWlUc"[#]fϻ#I*4udm]ئ;>cUk1R?ᩚk\9,9h'yKTb!pgeWB'Dvmg0mwAWBܷ~+\TZK Ýb3fa3fħAA@k_ ??i;JЖ LW)g^e;L&?P뢱:N6z}}X5Q'ˮCe@7;9umP3Gy5.+ <J6q e;9q WXB2<iz~MEa%LE-=U< 3i/{ hSUUnMJ€pk!I >{\O/%B*}8s?GuM&]@ 7r$tZǐ$Pu)m} f$؅%# %wy ƫC XYu\rS:!P]].,FAhNt, ܁߾߬$[? =xuL;#ՊFI?GA|L3equ!i9q\;,v=}q6xeH<==._ E:?߭(C,:qpc$^}9vc{Ч3=f|%|0 \/ k.|Wt+ƕ[ԐN~ƛڈeq9s3a((pgCc÷渺 Ujj;0D-2Xj* ,Cf_}s[h pqq OӱG,¹-&k |-lÃ:=s[Cqq7NJO}Oml7[#E <1S'a/yNP6m0:89;#]ؾ|46[b!Mv(#c7DiNVأY)X!\+I4X-PtCn6pr[>ITM:{HO SB '}Pn>GE/ Smprnİ (v*e8TY-&k Sjc@aƮ:l)v,4<o>p ]ufLtp/Yg8Ytyת4, }I;YE =nKMNgyl:ݦk@QTܟt&w8l}&]}ņ9=f,6 fWvu'eE-Wдm˫Ckrw5FIӦvHr+/We߮?2 /6cq)ycuyo-2.1.0/data/pics/mtYellowBounce.xpm.gz0000644000175000017500000000360312401656727015412 00000000000000Y[{F}W ;5,ȷ4IC> $$)Tuۻ;+BSp3;;Efni0GW~P, OSzZ=MȥR?{P*4Sqv9uEQjnl  Uz>QڊS-PoXeuɪBWU]C>hj:!RZ79ܸauuC!>j w'@E(5z[."Y5TCE$ Uy5af( A9Pل&U'lخf*]-`-U@o Zm X0QG86ʚ@E35ß4K6ֵ~R56_yuK%`è0vGTM.U@(b骰}`G70e>QGqPcɚX#uK,ob5S&_4tY<( bɡ&JRzKB_b ƾz CLt*2q 9@ '^0Xn2@ѥ X+3 T̀6>T Ïev S1`pzp}).7`{r}a` rPLUerhu)@ 8n1-٪ 4<9صdöʓ=& ʓ+$Olz;O4:y +;%``'n^yp ΣqhyGWW=ŬƏ"ۣn@i*{KM↽|P/Mq][ݮu]nGbۤmtwtCB~DX_ч*MZ )0 $Bw(#$ǿ\Rg@?AxܮGc˶3:͘ Ӹty=,MVWVY}⋄V mB +ӫW?{>~LK|hܑh&x/v>":;hx%}_ѳHT[A= :$D|rhhpn:?&(#XzHXΣ=B3iw6ϯ;Q1y=qLO0~a5L_&X3B),"ib1}q؝Շx&bG_.2s (ɯl~ m&|~R#z /=R#)0 Py:+vm?9$z1+i?"=+o>8*ia-rSy^Lo~?W ϥ>߇ᔾ~m6@WR6s`ߕv(i {?10G~yx^"^ 3m'YVA8NDFCF),. d}!PG;~n~>ư?xu=l7ͰY_~wsqfؼ]|fem 꺫6|~O5ɰ ZdQ SzTvukUàvtaO{YH[5< F GئaF4ECDP4$ =AP35C3 -@E A$MC&XDV-8Dߢ1H"k@ &x b`G 5-׋#2l| "#a2dfd 8{?q vn =7pH]x>w#tɑ8r-J>Tq4M,[9yDa;N,oQ *"6!P%~Vi4Px"t&C"6010$ F7 o01z m# t-۬kKHFB¬k[Ańc6b614 rǮmtĘmlw\![8ȡ:B.B;"!ͮK ]ޙivod̐5@HC&,odQvLr:'Ao*fp7"!E.ivXvvNIǞ־b;s#7ֆ!I<^4GO4Da!D,3HaE bA+k#†bAQ-m8!mRpy 5S+N` 3 $V1Z㱎a@x 29 [iC!(a0BTN0e1vd*'06n3VTzIrב0Ĕ0 AN4!la s !(I0CP̉7Dc|Ή5ktDig.'-Re lNϩ x(i;vUF4띚 >v(!NAƖ z w$ JNA Pxj0FiH\o1\.g .ߚ]o5 ևa bĠԇ z@Շ N遪1 X d}+PqУ 4aX*4E]Sf2\>^)`ׇ,20nrTk_ZlLW :Xiaϑԯ 2~)Q榽? Q੿"W%0/aJF72#IrCm&3{Vb>v_#/Yk|x2l#Nbcuyo-2.1.0/data/pics/i6Oben.xpm.gz0000644000175000017500000000032007550521111013540 00000000000000<i6Oben.xpmл 0!h>, ٧O[}cuyo-2.1.0/data/pics/ihRot.xpm.gz0000644000175000017500000000043607550521113013515 00000000000000F=ihRot.xpmK @snci])@e vJ[thN?`^f(ȍ<߽ raEM2:RTx GF:m&IwL"Y!CoAȤAAZ820b$V11fΔ4(RR0y8#r oDԨ iJ`O%OBIW.I9R\q6E;x6HQj+/Dcuyo-2.1.0/data/pics/mlTop.xpm.gz0000644000175000017500000001352511672457347013547 00000000000000No[Wr?EKz ~14(#1QY4(9Q%Wg̕-SϠ3g晹{HY?}͝o׷ݟ|w|~iqZ0[ΏgLJpvXtYew>.Gɝu˷jjf5w'7Vpvܭ'/Nⴛf:q-;?֥Nw'zקΏQ/Gdg}kg]{w/U[)rx[sYn,?vGm`{ZmϫCydݵF~|{Gϟ?z}eS?Z{[͎O??>_|mt|݋wg|=zMZQ$_Og['}{GC>/~뛛uo2;Z>zax/Ov9]^}ӽ=9>߻Ӽ{v4;g <9=Qܿw=8{ѝsr+vogw_ݟՃݿA;_up=]C1(^ ?b)s:[WVeeeeeee 6{pqlzXb(f>f>}güJ+Gsۗ ElC1ʼnzL y?CG:{kC-6]{Yz<۲yE)Clb(L1V1V1V/+;!w.0'B]cx˼u<}ЧSCNm_ }:}1ЧSCNme@vDs"ogD{}K/Z1f}1|}1|}1|}ˢ}GB>y[~tn(ӗM Ő/|=1CO-1\ss>ۯ7U>7+g=b(<1>ĐϳC>C 1}|zP=V׻ܷ0'bC1ԾM Q|51n'59s3vZW'81խʼnn-N }ukqlK9a>}4>[Xr_ c}1/0VXr_ c}5gX".9֚{u>skP\/ma-^ 0п sk.86؟s޸>{~oWŐkʼn!׊CN'^+N 9Vrz8zVOѸ|gq<,ze#a>_ b|0bHGhbz(>ۿ>=Oz=1CFG гL eĐ<+c5dz᾵tƪYLbC>C>C>C>C>w1Ds2V[zcgY}8^/mCgիŰmbhz5M >PU5Y鮱sG:}^-O1_ mC1!! U˫g{bsehy=sΐƮƮƮƮƮƮ߆x΅F:z.8yٚٵb_a~-;/y^]emy3灩헩'_ b诇tC=b߬y !.['ڇ`89E޾k1S0OX?Z ck1S0Oe+~Pt~%bsյX1bh~1Xy_ 'bzMy;_Yqo{{^:ã/91L_tP 3}><׳֜P]}>s?üu0+y]1a^kŮ-h_TG8v=HCֵ/u&~=+O 0ճf30߇|bDc!o0rȮ+>{N|0'<1a>9ZWvnBX֬(>~[먱9G5?[O Ű'0ob71ۍfIVy뽯Ÿ=}fϏXVyC1CcM O yb|0} ;'Zq욝ϲ`8ͮ~l_/0/0/0/0/0/0/ߏmG/oXs~ש9_}!ןC1x눡x#_&kԼzV񮭺:{}dy`79,bi!W+\ruZbi!WK塟cu{EH79=/VeAs/bꊡz!Au렺_<7g<ߧis=Ɖ!61È_ Űg{C1l14+;z=Xغ-9 =L 5kbhYC{͚k^&Cz^ַA>opͪo3^@_bp'jીC 7o!;gsoQw-f_V Cõ|Yƞtw]dGkN6Br58xl'C p*Pd8C+_m_z?l gexyuG?1yQp:^^<\Xy~쿣:rߪ#b8F0;ύC} `=yeժ+8/b[Z ~K\aok1l-r-m_c04E90{p\:>V~MO zbü0'y秠x+Au =I Ah9bG a1#~0C4y5ˬ^Xy뢸i)5ZQc_Ox1Nja>^ b|~{+X?wNw=_>gc@~oYL5x1lk0b`Űċa[ ˊG~+xpj~1:b틡1ЎGzaz{uz\ tNp?8+߬8VI)I}TϞpRnoz^~enGd8)ha9ߝfx1k_<1|%Že8|d,ae/<9)wڽz\_n86t}V_a8j8WtX0׼ZyVfy|IN&{eUï)p;ɍp#3,vj6Bw{0տu KfHOٸ%=|%泆}_OG]Nbѩ]}z0N6#ɾ:b߾=:aC\ǚt]X"Ò:{z]1剡z9zN?ޣ{pBYbLYe(Һ~lMs:vdxo%/-b詻5`CN'bX[_?ݯ+bu]ᕫwdz{uyOQXq{p0p2F :o'CNn!?-Őϟ f05Zq?_H^\':.o0D>/oJWDFХtu9}`89l[m|#G_Wt3V~S׫b(YP71̛M ={7-cuyo-2.1.0/data/pics/mbmKurz.xpm.gz0000644000175000017500000000426111646353247014073 00000000000000kWJWЪxjm IY eKmXϼ;dH<뜳<̞kf|z2<3NZVZ }S? ]?yH(#Ϟ?y B 8 R#LkX\'/R|C=}E_q9a|Md Ba`Ji \$€O U-0`0rN€y# CzoΕqNٹbHMrLb a 5MJ<3(,q*,qʆJȲXi%yBeY6"!FS"hZQ&TR6I*'oܱ%`]B~* OeP`C X!e4ŪJbX,ViUU]!UrդXe-B,eMȪLu.! L;&4-G Gy3\2)`o9a)!SVD}4ـY<~5 ^I(ÀCBHS9%`sj  xA/0g-;~4a]4Z?a0*?X]` VYNÑ 7i EQEq=]7@5VWfWhL=oUY7c3=+w^3~6%|SYP۟> mW%I5N Dcd~7;~$IoM%^94gBEo+de IRsY_w~Ѽ~Ԉq[`TኄvNI+ z̡bZ9)(DsmQS\f][a2Ո zxKB8dT5 _N5 Zn}]h;͉D<F嫉FT*xY;gm=rhHie!𛍱uOVӨZKɑ2 w{cQ0 RT0'Aa"M5{DKn EׄuO.J)K$Q ?-KhRN_,,1Eb4֕yM~ۛz:0X,rmFDmlLLog)kVL's*k'^?XgOI.|]}A2vjLM8y1u}vzzpƺT }1y#%c\,.s%[%UQK˕Nz-ӓPwkC%op٭Ri(~NZ˪"ܫ5ح2b?_jU+e[m$|c*suۭ5W>~Ufs21? ƫ w9P>כKq_]*|ot}!&ߦz˂~ϗN*vnzfn_=}p$ _3iԿ P=<֤9$ Ea5)雳hd|!^T$y*^::^|y?_ 'Na[=a>w{ !w${}2e{ eOd=5, 5 {9/6G9n޷ߞgy};sa׍94kd?Ŕ?+@ba_ư_ɘsd}Z8o1W87l~sTSq%JWwgd0#/3kǀ 8_ ߦ K0t̬.gpWrLܵwqddn {$XYӇ[~Zk`#7j`#C 0G=\y1m{[jj^6ǬS޵,Ǭi_+fYV(lc[f4}Bܡb?1cir>XXKbugMgG|5I3cOon4 lݜL|_pk:RY']8_q ^+ x ̢̢Y4:E9ҿFc/%J%0cuyo-2.1.0/data/pics/jjSommer2.xpm.gz0000644000175000017500000002311507550521117014303 00000000000000<jjSommer2.xpm|s6w r7m̆L`ɱW6 n;ñ:rŠ]9 e;ݏLm" <889;՟~__OmӼ)o3$'>Żj?//5 :h2MԝN/t컫7tz:N燇NÃC\S55ƌN'vD'i|8tz>w ']eZgCȁ41k(ft1{r7>b1ӳg7}RGs7gKjz]=;>Z>8~Oo^fot2NJNgSvFgtu=xr_I9rϞLQ!)sbRNӡ[wzNV81<{7`> W;gj~]S:gTpʝLJÈ '1Tkj=J:ی@F`،{#>bCS988w ~;l-NQztc;dя0F :(k̍Ё|3ԝrK&nA1xz:u 7OŨ9f30_Ff|+F[8&jp*gdU t9luNztvƛ7;7f9sV}POO8'a웾=OhYvy5}ҘW. ;؝=K%CWOB<50˾O]oE*>˙e_3\TKf3O} y[{W)0X H:avEYxt:yF@b^trAV S57w},ooу@/oo"~-ַ ~ҿ=a޾x1ܠ]G7Ś[ۨ|Ap^y]EOm ys! d7秘OV7*Lq:y SpG $6H8%@,oeX `8>렗74P4+NKt ј4Z$ ;?%٨r%DIK8ucږ[Su,*Cy2m nӛ7CW2Isca~ jk6tTj1Kà_]h`61! *')k19e!oX51 f5S qzYd "Єa@c5P XP6+302y|s={v];W4)`%Il%9!zhM t0σk4BHԠmGZ; eFg6<(7(xpD6T'p8e:jD"a誀̉C| MCZ1T=9b=r@pݽM*FjyOɴϫh** bx]ܬBEϞk8㛶vн!z&bRpT-3F:Fض!gQg#A࿠Muډ#obޥ+a\< ykٹGZzs#6>o㯻6>WXdp3w2o6(bR9|S|İ7PKkVu$A`p}r{{AkM%U i{\bh;>]i6P^sxë aUiZHDPC~3qh R6* Ӵ;皆xRk7OC}UZf2KeQQ~HЇA{k#s!X9/0}Ge sFeR9~ʪ̐v+4`~n 5Kï &f,ZeYF]#ˌjAWPKUjbYz[P*WTERDD k9JC.Ri4 :iG Bًq.@tȐ]I+.b-ψ bsA ,+ܒ$O"*oLcQР@parR>l5N$ Pe$֕,kDr!L\Uj89B k®iT*θ}T `B"!AY:%.J֏j/.`_D:hU\72eOyO2cʶ{M%!!MG,C k*@D8NΑlӌwOYm[7k^ nĥ6;*gZ'8Tr p6HѦQ#g]Cߋkñy9tQUc='o6V0dZmUx9'TddQh7`I۠Ƅ]KrSNIȒ oޗu@l&@ $f uC<++n^o=S1]77 O6K˽FWi-Jx,nAn#BO'e1v{=7=^my q|{fn^<ł4ÀJM]ZvS^ff6{[0*裰\֕uC*QKX\P>ʪWjgm.xj҇A;XV!ͮg[1/77|$q/iu(`TJFaUKFec\6Fx1oGsFͫ5Լ9 Zr:rjA;85ZP~pp6ْmyV3WMM@[5iTP׹PVXWМ\la?#-Em~IP}1y3rU^ e0p!kû%ep"⤝ӂ&.flnHoacz0sAt“'3A`zG-dڼxC~!s>+t2‚ -0 M3'Q]L/^un veD"_G!ly,s~fŻQ|ٸm%@L"z˒\ j5fpi}ܼyAL N ?Ww8; c\g|Q,ڡxyxM4QS{ܦD}ܳC@T7k+ﭪԓay"_ .^^^ ElNA^. dY`Z#a1BL%gTҺ^`pֻa VO ȱ,jzj#0Wٔ|5CoCj8v Iqv\ V엩nW/&L9O08xĬ]?l_WCѫT5 cIմF95]ux||*-6 HJQMN"޸nv[f֚Őc]\m[}^Re`7Z)R\,DX|yxS*5 J.0baa>S\>n_;22E?I&%)fYhDmjOЂh_B/_hi` (_Ա/IҽZ cPH #O`7AIRRea99{7n̩R N{ֻ91!]M"2 l خً ? ~$ rCs{n>=``TM-I2vmĭF?nxiA޾̔`ՙnN9#\j&:u[=;6@P^׊V0^eYSgՔa\mޞxt>}}P <ƪ}A u|%8@ 8Xp1!=&$ag ޾=<2kq4ZC\kx{⤡~,RtxvEb"0i:83^)|Iz]Sw!۷Gg/Ry컍1G;h/  [lS2v:[o׆&[xE+x1$QǔO4@?m1!y& e-}AKOUWTIj~3\2q2 #(1KK_7ADPz }䕦SpM˷Wrx"b;H۷!xK8YP(Tb]*x̳m`, nP{3|F%7&Yv{[D>r,^T}7! C|[!]; [w.j2å;Y7C0PMHZM߆@fIDHPJ8qA:,{dPml&VS jk\!),U d䃃tf23Z2>en(z nNSh{9?rxEö,3ہ;91ZI#%(lVꥢ},OsNeC^ y3TI՛)OQʶBJr%O 0;b\wL^5 /L, ƺ\=3U$$=BhyӏTp\rPT0EEp涁Zl.b^7-n:([p2'b.IKK7UUirK$n{2DŽ@+hEܸU> 7///7KZD']oQ'K}B `%Їm$[ L&A[ؠT:dU4rE3dQU: \f>Y=,! Te1EY.6z\%㢝[aO$#WBEGr G8.Z?.Sb3 _/T0A#)egnK ,-ShVӦY.2GQ\pMMf.iMa}p$`+1P1ۑKr-[U(g%2Za+$|6"Bo5bx ͎@l}=EZn S?*n:n䂶]\zJ:Zi>ZB}[fsb- h Bw6ٰ@`nﱷ  TZȈjYZub+ֱA4 fCb CI[["ԒVK¯i_·c:DWea-ʌquLJv$uj@=Ÿ {qXj%6q6T2ȩt&pu%=\OTZ`2(k0ڋ}'Vzⷪr )֑I fhRG0euwwG) #!Jmс[W݆R[JVK+k|C)`O [G.r 1d1a/w߿99UkR_1ob`R#.[_L 7 v@C gM"`56MaAt2wK,HuIMkrؖЯ2A,!h^]JNWxn_aʤ$2v=' $ &͉.i7'ъ*+܆rq7lm!JLgRѻg tgTjŢ ׯs{0._xRs*F S:D[[p6WU5YȩRVJ/ 0-_k STZr RE,Y]w>4!`&Jej)[j HD{ NRք5y<[v!MK?@.頉6ۮsZVpkg ,pihmG'7bӂm;(Ldi)K n[l#u*aNVg``<4-as*Hey{©ȪN z (& ihDDIh́FO2 )4Ĵ|X$7gb(ⱻb8& 9F^h5#,&2M <2mTrwE2j1,w71^@xۣDl,R!b"ԛq( %T5{.-KZے>]>Ŷ,{ | 6* >q|D02~@Z@nOTvͰvEQUCw/YҖ4s_LQItI-@KƮ}F$*z+C_2Z5N1!PjEKFt[w򤄃O00*2$M/, bh݂c #A;66OT=Н< ~zy/KrUVk Vt--t~mW_.=ڐuo8&m׳"kϏDBfF- t( 'ki_Z\ J =/R&5RysIJW# EKӭV7\jFM;reY4%̣l-+uCj\s5]Ù_44䲀ֲn8s4hYMlZ(̪!-K=d6(֡`N2[:.5J5.©x2P@ZV b PSlrYFY,e%%.( ƥau:ʺQ0JlKhu BYu :V(XkepGgE2GtF'(Y_wAV%,_toUřVQPK+bs+ʕ- '"f`6ދ&4ItD hp銒kk&s顳a&jo]11*ibSZi!ZP@^l:JMP#a55U3y,z'۴Gk9PBAEfgzn4"UT.PEb@ـ-]fK5Kb7(kf]9Z[ X%(!W6j1j+5h-q SX~e*\P6-BgE4Eh qk&`݀He/, FKdx )Cʐ2 )Cʐ2 )Cʐ2 #K"'N(J {$C3EePmCB'==ϣӃN'b/9AAty2&9<`߶|``m;o{IUa !zPL֣q6 < pR H~EM>zMBlL$; Pz}QCa2ۮw;~'|ǖ1Q haGP JOyGNn8):! tƗ.Fxv]2 K0VxA 6M!8~v@Wi@BhS 4Gv^2Ѯ|}2@2)ʐ'\LɃ\ڞ |Bܧ /|fܹ.bseM G'x0';K2CŀDgV~gwO)tq{No;vn-oby<\Z1 ʖA!\y973Kxݞƛh<1 f4([g|\RM$fm:ᒿo!F1W7'p=y?u1Fs 1`vEmp?&ܜ[pbc" ocҥ8iv#<]xgD wԴr`' YW ߱. d!x!  iF.!l/€͂f=rZԮk: q˄t)ۍVDW$bzhr̰I )1.Kz"9GdQ vH1ʋr:d㋣'\|[&i<>O94eHR!eHR!eHR!e3=O4%7cuyo-2.1.0/data/pics/ivVulkan7.xpm.gz0000644000175000017500000000174707550521116014327 00000000000000<ivVulkan7.xpmn1SX ^IV-4+*$* ( x<{|6Ԭ=y<}śW/~:ppw+n?|Zz}yN]j)3ўNNē[7v<~~X;G b j w ^ ܫ]+p5~w[[Ƞ]>sWwj)WsG%5<0oL|6 |\F5!G0C$:R<ɹQs&͉Q@ ؍SbpZAы ! )5tRJ ௠i| F ѐnfg!b g τOo@>f8OmU姵}~PAJZ lviamFă{LY 6G0ȾVjCa(Mjh`!,R*3d6 O?c>2H Q`G3)G # A-)*"{C%qQQYc"eFA) zNT- ewe ;9@xQKݴ*f@z!*T]0cP)1as`B- 2OZٽǮC! xY8cCy! ]`!3d9 , 8Ud0z:c`0KUB F#̏[*qۭIrAsÿ.IxH%V" Z3C׼(v~}0 U2Jف \^ #P i @t;Į$vEڃW3BA 1*YDu3wӷh8m^:4 @Y殘GlL4Qbny/E@`aTC avpRlcuyo-2.1.0/data/pics/mdEisen03.xpm.gz0000644000175000017500000001257712412223254014166 00000000000000[wȖ+1]d(@#i,$|T(-|ܗt o{q5%BO.*ɱwoK駟>Kp4C/y߾vZ%J_J{zfEު`vS0aA*m#!0kumztrKj~CQkPDؠM:7TNGh61QT?) j_m :?a(;eFl'R [){D?0m;/U:mb TpFRC%!/(+ BUvD٠}RapR`*fDpBPkwTSʶºkarFUE0[UUhw;*ƒf( ;Q. O *QxDUS 2EA^Q9t.T;uUsNs)[?ʳ.f죎=*l^[k )˲~d,snW*]HJ/A,*+R\@H ɬU`fH8ÞXaЬ8&kM.o_KOʧǭ$7肁ׇ/aIԴ48% Rr]/ >!f܃IĤ 7\ŭ4Հ}K/ `xqf{nmFc 7w;aa/u}KngW775ͮgLu:ẃ[ٌc ލo"<`;W//a>}foyWks]>4a ~u|}s}M˫ۛ_cSe~q1߼5ofojpD&AbB+|W敻7o.ofWo!._T6۲l|Ե1,!yy[&fпHhl7vEWzsk_aoϲg:d^QHӵ x j6$lJE+M [ dE?CjzZZUQWhu}"APҀp.QwJ=bk`͆;,HOC T`E5o/mh m:$qQJSsL_prM;|:<.НY Li8Lڡ5%e?x؁=؉;BT"w)=wL ae3  *j  hϱ=^.ā=ġ*O 0= cAgK^UFBןtÎQKԧ0k/`lxzAp秿0a;_$ BnhܠͽgU4jh om6 HgUvCb8Z!odZ+40hh`;gC'p^3/ 8_`V '0ȝ H:/ z_Ll؂% ' n UeASN'deamCBSnHƝ ,7$p{KEL*PE_hSOW 4qJ l] X,5x`$g2@}8fci+bp^5[ <:FV7 @bУV{'8/lo3$ 4 48==<)1vz|?Igo3nv,M`7+N| l8K{KR7 Ky’ jJSz[1^3ᔳy{RҔʐlǜdڥ>ܐ6 Ma0/FW gvԽSe 67mM KCչq7 qbx~ q` ީM!DgV8HM0?hpK&O|ϣBWaf.U ^틠'p6Bq| e?M7PB ټ(ijG5pF&8Gi%CCOע 07;b lqWi\q{o0Hꋙ/|9ܬߟ3*tܯ]>c2.8WNZ\:~~ޏ?glƛw6ၱ{C?sާ `>jhO`x?|?hC:u9O7~NǕ y?}@(AfG4@9d8]?>>,u ~J+72,0g?_>NH._sl>a??s0?n$7~3 . ,#~mW &;> c#g~C8\2t HDZ s `]WR/ g߇3F?-?>4 M͟WAJh =݀xͿғ+E=z0pOEbsCz淿ü+iRhۙ_Of6 }>lFKF:*à 10lZ,Dr}/ivt$~0!QN?uw, nRmZ%Ut<\;AKti o"m%8KQY;[##uqJ9\yNdϬVf݂a֑iodۺnU'v`NzC"\J0#[!:Zou{{WSC9L^9ghE4ZBh_CUbCz;ؤ"rK)7r|Jr3~`qIMz}ɤTu.3\^/KX+VU@!KǗǜ뎌m (AqGC&\L`.%RJ;1X 3PR(P%ͨ,k. |l}( I*d;Xti 7 *f 0 (ڼH 9V.XL,v+!eProOawY"%RޤFH94Z1 HmEFNe?jțdOcAk03[ڦڱ9:Ux`vEd p_׵=;y|@_4kKԹN*dm 0>:Ä >P:D&o_Υ3̴+5 s^8ӯ;jO3_÷dO?~ºwiӲ]l0άJi6~zh@MP.h@A}mh{tVȆzށ} : :l[6[A_@PKK<NtkYgC |pˇ \|YCpxt|r0X\<% _Ǽ:q"br>Mu>~$"Nh\M//J=̡|Z2wAFsQ7q+4kOYd*ݞ(6:(̜DsP;Wkt[b.6sT/t͊u$IY е;eR/tkFQ\q>]~8+[=oq{[\SZ{cq|N :)YD)&ޢK,"~Ar !ɛtЃ\o Pr^, ~eúxXǿf5/dyn}AsdBEG50CXìB-5m}D:^S/Ǒn{%=β{=X-5?y?rS UM$cuyo-2.1.0/data/pics/bxKlotz64.xpm.gz0000644000175000017500000000317210361553650014244 00000000000000b=bxKlotz64.xpmmSJ)bEAM6A)BFEsV{ݳ7w89$FpV+{s8OupG"d87~w{[.w{_i> GMO[+8BNg,IbS v`p[E(c@y9a"멚(QYbQYR`f1"De,RiP #$AyQJεTڊ4*5*UGXtp GWD~190ozgù>Ht߁_WT5Xr}RۓE 5_K oAƲ6̬aP6\ [PYrA#)z0VAVsXQ̗P"pXU: UaCSFu岬Eyd3{3;~]7lQ4AۻkTԵ$w[}$('a R=xn.8d,Kƒd,mm=ŭ"㶒}CqFۏ8scQP"9+g29`jgfƽ=qWZtZFе 0~XF@#O ^(HXo24j#F1xԆ, 9:>>ߜRj6K㵩nikwKZ͗J?Wp*uL*PX,#$#\֪E3 a B{X׫V-p=^A6&s\b^>Jk[6FRbrd2fUkh[aa>5^Q #Icn2+dیY|ʦa/im,>0a>dͱ}-B0pGf>@ZQ+fuaRYzv8ͨpWyW !gL8VG^El+ݨkoc+(~\y~9%cX2!cߝS*cuyo-2.1.0/data/pics/lwBroken.xpm.gz0000644000175000017500000000100307561732241014212 00000000000000F=bwBroken.xpmS]O@|n~őCpHl+:d[*Tۻ8hdz;3{eF?^n_Yus>~R^L?T:Z]?=c}kZUn-b. ,+7sR%@:C.K#p*r hV=`]-\^#\ts p-i.Bǀ qw"UUY x8+ʺ*B򲜉SkB$7dÐݺInvGYl[X W@༡E=- 5:<ȗp,a!m_ܴ/'{sژ|&p<6{h߫5^H.pBZ$ګϟ/Ql cuyo-2.1.0/data/pics/bxBaer104.xpm.gz0000644000175000017500000000723210361553650014066 00000000000000b=bxBaer104.xpm}WHOQ/gF1 ҭ5B(Ȟe%n:Beٷ^$!"HXfG ͋D^zjJ7x"I`Gޢ{[d~vJ)!;ȾwT'ܣLM"l%SPوNd oPDɾ(J!bRb')V9HM7-)*T7)Y2J1 ԱHQL)"%*B*NO!N$@JtSL7y'PP z'"qiRZ/QYOl$&ۛ2n5`aϦ`*RJP`U*0uJ F=/EqXOFL :J<ݛ!%DjDҒ:u #]:Gt/rޜb-;r#>[o60R6 ^HL־e*7}6Be)-"_4ªF%VLƨ4Z6wlDI_)/zو#HxC䀎wss0cplmñ c8a 6؆10cplmñ c8# #8ȚVY(0q?,8S28e!0r^. ն@dS qZt~s.Ʌ¨ VgB9>ŰE ml+0íZb3֊P0bc#\*(Qe]WtF\ r`a*FVӲh`qsc"Հ99`)u8A.c_pse?Dc9K0uQWd mǐu+TE+# 'nr0!$By%?qN08g0MHVG!o qQp7Zz 'f'qAF.,2 mPYHap bSKx>bp$ABۺCFQީ\)No8ygcsxLbtv<|#83cFQCilpqD(36aqofNGįVhS#.񚝡HRN1퐍c1sF,d_Fp.$;j3e\833L2Fdt׵Z,VÁY ܥm;]9 Zhbgvrfpt$2 8ewWۮ|$3ȬV{}ìUT4eTF`^vu?N3P%7}u1r= c@Qt}g=5Nmk6Xg;2raք یڕe=G[;$w+` 9a 诤 R*baFnw(,csy ^<5RUe2bkfHVʈ׽ xrAmًudI |ݚ1>F\q! i]m߾ǎ#a3z4q|f}E}-ڋsZbM[ 0[K9ZAߓRͭ%Ko jI[0\2Y/(z̍(JQSnv,vFg6 l˸-!}]( 7oq6'Z^c_":Nca4|#bh hw "RFa|E1*;MqL{ٶd>d{60Cג+8pA=ƿz $.?c@f B!h$ٙPF8{Vg[.8w93U m0=.;ښHv d^ʌdkqW^LO RwOsop fIfh>QGl,hn[.F+^ ffr;NZ~7k؝2O<ِ3[*eCnL?V7|vvd_&T7%iV{J BZi2z%B!|7T܈̀1y!Hbf+ 0a<[?v>nӬ..{}&B-)}7X`N1x_;=A|x{F dַ,WbZ dwajTQȡv kAK$E$s%ӇΩw躛c4}Z|5@nF{K-] ]}rI6#m5| Yɺq bCkG E!rn{IHͼ.k~9x/fbs (# mXԑ@wwς+j&D+(g]dh3G*ŋxwrہʼnxbȻ܏3r|R.y.btrcK*;f c,f8]"@H!O:e4{s j0V !hք:ᄘ^H<}1m NJ,)̯Kw/|ǘ]'uyL|9y^hN.G\ٽ~%2Xuw:yAƥwZzeF0CKv}%SվT/Owh> f& &Wm b?.pi~qMT  tNDo_# TWf۾YM5TP XyW~^E-_S~x9F|ys`:?|m ^(ee7 +vn SX چ10cplmñ c8a 6؆10cplmñ_˗-Ikcuyo-2.1.0/data/pics/manGrau.xpm.gz0000644000175000017500000000215611613766736014044 00000000000000WS\{E숢B!+uPQP:vcP!q93^^ݾBp)si}.\!ېRZɖi]jMz$ybalBr28I"$8/V]FuV}MpI"!Cv *Ek23"I DQC\/.^I d="2^F@H? `F@Uj2Q1P0Np Em2; O ..Ƀ &H?&EL*1,rEgw$+ O 6J  6I>*a|%#&ox?H7~ ΒWdd82*$xɅfH ׸PI[oł+rZbX=Őn:Z-G3vuS}GmףZfpV`z+?Ի=*>4ҮJONtx:KFӺ{,^!Jܰ 1-{roOo.x<`Q=vzT\K*[ҶuwQG}69bU[Oξ=E%2I뫛6uGJK"IA¦y3J2 '_Vt}e2 bz[f88 kq]Ϭ76f7r|gڕD{2=lZƤü+Gkj]o=σdg-lFcxƾt8GRXjqe_71g_sSκιknw|pnv5g\S;n*3|a z܃{Ņ XXtGtA{MC^8{rⴸ6φϨ<8'^2(ek:c;sC}}0?MG>ϠWğcuyo-2.1.0/data/pics/mbaGras.xpm0000644000175000017500000001034111672457345013400 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #000000", "D c #000000", "E c #FF0000", "F c #FF0000", "G c #000000", "H c #000000", "I c #000000", "J c #000000", "K c #000000", "L c #000000", "M c #FF0000", "N c #FF0000", "O c #000000", "P c #000000", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/mdEgoV08.xpm.gz0000644000175000017500000000362012412223253013754 00000000000000WkWJ_>(ۈ@ 4dfh|Q۬ШVD09e&xu{3,W}9s2%m͖VZ~p9jj%bp?=xR1f]kVG<ҴCm{pqĿ?B+MB&%j:.KK8|РK-A vY:-Rq)ϐ9|І9'?EXf8!)<@)|ʮ:cn[aaY`RUVu1 BI %hT6D `u\[!ra:+i&rDh2JhbD]]/ D5Kqêm0i6ۚͳm8r@b|mvpʙm{nF[&Fز),T&i{>;^Lnn f,JV3`M޽ '}rcVcV k0'žEמ:M5۔x@v`ꃊAtt)i\ǡ2R4\>v(LQuuy\ c^6&krWmڦ84&&8Γ5{ Ju~n1+IT)SIa܃WN~?`-wEX:AJ5|y-i+].9aop0y'w׆=ބgs4?(oEIԻc5S[_֥GS\S'QOťF!y j=13Q[mq4wo3xcy5vx ZM^ ړ hshG0֟Zln؛hN|\S+)H>1dMIAfZ *!"n̲fƄ w2JiLku S5\۪ ;1Z Dckl[ kR1۪H$X ݣd2nqKod+ArB(yxJva)AƍUaK̲Lr(AF5n le4Ȉ:FR22 ib]Gƨ2$eĄqYŌ1%$AąNAVA!!f<$ BlmVARJ"HH YIdI(ADZX3ʬRe.(1J HH Fo D iZ{m04Ȥ,?BlF<  Ws#^{ZM4ւln>o:(cuyo-2.1.0/data/pics/bcSechseck.xpm.gz0000644000175000017500000000031007562216753014472 00000000000000=bcSechseck.xpmRU*.I,LVHH,RRHJ NM(NMΎ(ȍUUR26R!C%.%dT[V6Wus30ps$J] \mE "`*+"E 6%0E$x5@ZZP-~JDybN@W5\Jcuyo-2.1.0/data/pics/mdBoden11.xpm.gz0000644000175000017500000001022112412223242014126 00000000000000ZmsH>™Y"iF-:;tqhh@!5~Úd(4G}n{nVmݪ[%ysserfP9[zvwMf^s/ӽ?TE[ɘRduu6hեͷt^6qViMj-VU֮hH#jf'Ge`N[w['k1mucV[ՖJvKv:|*:uڬ;<~3cfN΂u[Ƭ=ܠr 98)Q>:ӦknQݘlX4)k-fW&`mdw\~ǰrnIn[=3O]B]& N[fLi`&;ѾV&!8;#f/vN;,nbj-Șuh"R/f˨nlvn 'lwSmNMu)ad+Jmf'V1fU RnIp(Z&e517~326jQg'mCgcҢ/<cnkjj#Kftisܮoyհbiˍڿ%jFScҗiDnԹ Wܩ YUrhKra#l;mƵ;uav i m@oҜN_F•6/\N>/_1|w 1|w 1|Pi{0yx 34πJ*G_Fd+g+*ssWWx`̭y,ʴG=dDʙ5?3xտ%_chJIsGh0UWiDN{k49>տqe^&حQ1.neQvqUYn#&T" 卆^tpVT?G /itPv;z4Ycm< jYϷvM+eQc{c%ŠM,Ƌ!̯5w+`giD$lY%jD🁰?4U; 3:)5ktR )R "+n63fe[m%,2Xm7֠Zhq=K]) /2ncUtT♥FvN4sX m*&%1kr $_U>ՖFYba Y&kT4Fd–@hk 3a lԃVC )7 ֶJ#QP 1cIi[- bCr<ND7ПB鮆<_WPlB*!=In曲 @&@ B"r.S3BsO *{D B9BTS.HHs"ztM44_2GC(DUO#r^78.A #ˆB@WzEU | '^&S4G?NR>At]~4"4],rJ%g/('Ő}:>ᄐ%KFjB.:z ppC)GavKt^~{ L]6{( ^𩼈}aAG=bGi.I zF/&rP@*'72ażp.>wMU hm:lraC q,RS+JŃ0Cb2'dDJTah9e3[}N?kFmَ0'mHΧ.9_ruS(×cU7EJuRO^Au!j-:%Kϩ&ͶK^.˚wWk䂓 eD#w'xHOFN>:ynz*3᰺_@ynfHRuvAAC;HօM4~YޛOސܳtRj)lp,I*H!7goiTQASzx j$C=&̧wvWo2XAFDݬ+W{e]b!2Nzg;N !E* coxHqJJ7H&Ѹ !9V9\ux y6y1PF?srW!S|ML<΁D(nq>.+v#ңї[w.bk Bv&E>rlnqi{mipYup2HIӽo-`L \ _20.!QV_#[ (m_b-\r臣k{QiJڅk٭VauѾd=O<Փӏz? w%&cuyo-2.1.0/data/pics/mkaSechseckRahmen.xpm.gz0000644000175000017500000000101010517212246015772 00000000000000Kk@~M4_!`B)""*J0$۝ٗח'vgi&Avy{'~+aOgDUy9- ҄M=ҕ!|!.dK҂SEȊ&pȥl9!됣68k͘ a4E2=آ~6e1$Tz*,`"G)=HL$ɰ $^{1"DqRSXKj4A$qFz:"hԱF MvpEϣV q^"搞1' ݜ"nng)rK9ϲTOt(&{ڱ@Mԋ *G1 F=[yv|,alX\?(皜0s )s!h3.۳ Wgpҧ,cˑc,~;?Vn#)%TE0cuyo-2.1.0/data/pics/bpPinguO.xpm.gz0000644000175000017500000000117311543455110014152 00000000000000CMKAǟЌ  "L|Ȥ u5wr;4 ~~ػݻangWv>6r;q=[?o֯wp ߝg0QӅ\A7!(b0a.UbS4gRLuF}e(Lb uD5IM]1 -F5u1B %^/t^q^jZLu<7bC M["^Q$ -`O"nshl(aYHpG.]W*>fӲKMmȷsxuF^L1,΀2lF^(;?~/㠗qꮇ2ދHg᡼{܅q%Op!vb!v#pQ}ءqRƼc/RٺSZŷ+[E0дܮ.֛}/SITjgfٌ՗2Wծ c,d{8,vRd־^[4MK4l;_X2ܫ>9מg /esU`jy.^|->vdv`={7C_Y ô}h&cuyo-2.1.0/data/pics/mkKolbenBlitzBlau.xpm.gz0000644000175000017500000000265410552021505016003 00000000000000Mk7³x鮥@˜@ iv͕ts80tΜFw^_?n}>~Ms.{u۴I_\]t|{NKKǴ[NKf)icp0 ?ô&WL&Z*rd>ghPBW՜#{$D-: -!aʌ+|f_29>60v\颈myjJ3B0 @1v!Aܡt^ Vg >CnkmucPp},PO<~P,a&ɛvBq9cdNpIH yqm+*6rO^vBq#pRA5'DQL+FaZuPNźQ '`_:pˀarm=xTBAq!é5XЩb1ưFP j&ú)9@Ưk,qEjmP9 l0dCr$A\.X dͰō%Rg\^ 2` ;GѸq9ib.z2ba\g:wax0'g@ႌκecbqn橤7w!"wCCKLgK81;wϫ u10` Yvz!S(;6>J*LUQ.}טli-A mhG]ett@f@HbO25Smh!GU?23A8Y0sy 9;yIaqiѫ|ϜH5t]wa2Q;7!=„(\j1E]:=`ՂGDtA<( iBCE!SU1m9j8xbLk6ÏHp0 .^ }Bcuyo-2.1.0/data/pics/bxKlotz104.xpm.gz0000644000175000017500000000531410361553650014317 00000000000000b=bxKlotz104.xpm{SJS4Zc&ZekeH/#ǭoIҀG: [ <$%Dqк\}]uո~%_F?K:~;O{D} ~|hv7n^worTB/EKQX++$=I šURCj6*YE.j0XU(P$Z( sUY:XK4چ %dUݤjEmM*IVLa;U߁*l(EV,,[n8 ̵TE҈UanS+FlԒZPƼu`$`a]i07sEN@ MV z L@/07i5d/ vd%ڔ`a]]t7݅Ca]A@tQ)>mJ:lb+ +NVjŕZ`eU^AQ Yaknڲڂ ŕ(]l]I JTFZ6nMomh@ZP֠Eu`$v`zBh4E!63;A]QW`taږDJl<*)k*m9%bqTYzw`.úYb(44b1w]Fµ&Mo"ks! K8M+'bԞ\,jO`nԵ?tj+@p_ѴZԆ`mǩ}CuI!"x=j:T:UOl;r C?\ (`䣀F> (`䣀F> (`䣀F> 7FT(*'F$SOf$}aD y>I(%@I|`DAH-BrgDQ,b3$_Fև9@e !y2"5o!y20Qb%ih!qSͲ c3$ɍMdV9CubK$/CrbDdB_nNఘl\%S˿ܻ0j@Y&dKIr`FR$3!_QH1d=3c8$2C+XRX@sa<"@Zs>?f<U8Orchgk5Z7C0VCq#F<5_n[^&l^cH CݓH$C]p~:"M︘MTDR `XяW[e}f=6/EK#sތHh}ڞZ$}Ƴn%Gayeueuu6leKQ]: 'ooO#;KH:t #>0~te=Cu))oJY)~KT@Fb]je^ԯݳS(i"S#yX=,zww{{{}}psM_!,+G$>+O%f\''yNOs]BHZcDPcϣ^1ݭ^u%A&d>fDfȱ_/٢G{cx;cwLȋߏeS'vww]iG^^6pB`FF~|o?G`ExQ9YW'$ӻf/ Z&SSwq"98"2VuơpkŏZcK=^s-`]*GP:5ϘM0|rc O;5 uMv|~Mյ3(gcK8]8&^?23Ƙ~ǟ̗),Og8Ȝ͌\͗ԔW|ͪ7)|MrS6iپkƺ9|z1af$D*A4Snq1Dcgx|h4:Ps,Ac4pucr&e)]׷G6cVB<.m98FԶ{cT)?c^ٕ=1[uKaveh̥_W3-[vr4ui ľ@2H7GC +0e/$F~Ρ=d1%?2; λshye { ̛!*cel6FV-hh B*//~)L&3>E#q-DVB풛_/Sc&tT%{dO0QM7Եθ (`䣀F> (`䣀F> (`䣀F> q[KKi,B8kcuyo-2.1.0/data/pics/mtRoof1.xpm.gz0000644000175000017500000000265512401656726013776 00000000000000kSI+01sQfI4l.HAGn Q@qX뮻@xz{ \[|ͬ-߈2Q=eV2N;<G22ԌhuQ&ekj C]LgtUU>b?ghHDl/1%%$3\*) _H*TUugȼMF)a B*!y72$>"Jb$W:T" T PNثp54@@͔td&8T@ oeS7& a@[!Csnٱ=4; 7DvVE4uThAeS24:RCڦ"CivLB3Z>?L4ߺy_G'4~%~V7ט}~#7u~f̾SyԶ ?-wQAOiE*fV"?4͊ seZfլP+~߮U-U^~P5yps͚d亣sD;G׍jƘ*fC&j1n!#Wx F7@K›4ܹt(˯e?ݷnciՄFtͶj֙{/yL_eVhN{r# O4}Z[kyMs~o9);ԛ± }WݘQںzǘ[M w]hދXъwXRUUi0LfSᡌ[/v2αB_ gJUf[o뼄.?m4u@x#c76Z:4CaLC}py6fGLXj0DzMdDd8:IiUl(Cqgݬ8l7;M_5l/=w)CQ70Xd`Egh|dK~jR: ?cZirm~5j57%%D?<(;PF@ԗӾ-xWІA&P3=^z%CZ@x 6Sf7%>ֽp}//@c%?fI2Mv`#0t' T C%k!ގ]$>n^iA0NLO1Ez#-1'dEE߷4ox:}F(G߬Yח.PUZПgɂ1~W vo a3 `<1A DoNqhC 1=y.+ɹ'c` $ mu[s}k-=3 4)D;S D0A1 1:mb!-x{AԶ-cVљp띟TC7$DVXM3` vLBnTFaH[ Kr~$ aexL f''A{KTt[,T (#;Ao($jEu0$OZ JhnRE^<%@t0gm&0 t #ʂ` +o %IB y['F}-Cm$fEV yoE {*yxX; `/{dcW9@4hC X~a & ĵ[=pqj!=։X:&dӭaOa̓n"Kj1\$aPtr+`xԎ-o!!!2бGd-761F^hLh̒wF pY`& >.!r%oR,!%a&#*6ȶMӑOe x蝒a-R9?,pGʄAph~JJ HKY_IsNh =D?.h[i3Y\D G1LG>*jdǤICMDY-.Kj־a3"V-ft`* CfvK1aHK9h9NنfCq mnNcYNӂh.嵳ۯaKtqg8NHOܻ'Ps8%a_ǏǏCӓi %w2-pY[IgiEΑf14;;;|O^맞T~0T)4)mȞLɒWJDp1b Q^aڋ} ͮsd]" }@=+^`^mhw/勤5]ə3s CQ X`w|KaQG*>26G䐷MA?|88s: `\IfQ)0t4 \Cn nY Y鵒&uYs; ջ]N8 =;ڀ@KNs cxQVGyYL+SH^ 8 %$9aq6xyuX0H8l!<סGy 2q9&#f(  N=wzE&$1 5 8@61G[axZqI\N>+9J8 zAp{^!,[ZnO50\wʚB(򚓳 r|4Wc96iPNxN4[MXB'.*p>_ʚ;Z"(jT8w BofCa֦XV,7Ar'p@  P64}CJ9yȉԑ s ϙȶŽ-f<Ұh77_J1 Xl;C Ǩ YNQc,ݴr ca/4Kx4q\qFؚ-PItl>|qCGve99y}Z,fj#WleQ(_ؙ,b;~5I1A^R2 _:O*t6ҕZV>!kE}DKއS V+8Hfx6NQO+t>_0겍>9*YV5&`wgs7%ot~bxF" F[ahr4fݧUP&8sb<8/>hx;0HrDRUGPGS+'ɑb#&$9mnqF1+d(YX91N>+ߎ[^7v&;4$ZՄ[1Q9HU۲zT-r:%,0CA_P {I]pA`I:: SA2y/rCq_' "KM~wF$;cp:eԻ$M)* ` fi2  C°xYE*+>֒M-EUr<7֠)nwava@Y d*ϊAu(,[&'Mm ~vI:3vj k p|~ `A!\`8ol,-* _hhRep"p8V>=1rj5" rDQ8u`rȾ7a"Zv rҋ{jx'Yg:` &n%x,<>`Z%cY0xޘc)G|:=ΕJa-g-e[E0ӈ‡E2ۚ՚uR-{NYĮpB r>.:& '&`(5V˩=Bs IM;&+!b2/} /NhZ.)3mP4lthC[JuD= H v2et_ʏXHr'K$5ni)8'R6SUcH{ ?7<.x#ERKbR`$X>*wlo4D##xٹnR# v[=>i&*x.txuu[B Hqg q~ Y`;D+D\̉\ݻ_h ~z_Mh(YF[3 u$ґV$;+9-0Ьxv !tXg 8 ڍ^`<]͙aEX l8kk\?[]-K/Hցϼ`! q*!!UCŧEMH чCv͌G%iݿ$㟢 U q<tb$Jb,;"g6;(2 DIh@7oϟugp,U&n@"HЖJ^Ϸ:6Î04q|xI|3B۷o`5޾ F,Ev4FU4bE.h-2m`>#yt Ȧ"'ޗq޻w?}?}MZ TKMa'(t1ʐ'%RJ$Qa{72K}9axd@*rukE^^TX#QiVRsb{ahoV[ X$_g? wE 0BzA)lArqjXU4+Zّ4ѐ$3x"` kd@p(Ή5$E J'+ىh'I)?z_+yr!k ]Xv(UJȒ|Ba 3;x$C9a9]Ez^/wxU \g l)Jzb<=}(լވQMQ"94ʄ7p e ;N``p\C Z"62;J]XDW #{82TG_gm` ʛP\(Qa.9.fIfiĵI@d\~%OtX27/`cm".À,kEcNCX #uFto@}VO08H9 .f4 葞VNz G{a$]lfzfp0 3 ԼO1d¶AQl9/m)) ;77wl\!k~ 0Mn]??dpԪd\6Z?䇞N5CГjV/1ȸș#a=e#in&.Ba0խ;py[%I>|5 YCO0'8>Y9sE/4ñ<^c+qQې0h[۠"W=.Eyܦ]ni}F V6afzESg ۈ$؁ ov^_Nw"G8t(\c\]VRsr9H)zn[*9Ha)~.lKE)K8 "2s戓N5 s7\X\CʏzţP3>}[hy uD0DYyunl @a쁒y^J!' m:ˑseӇ|b GjDe B+r[`ejՒ.n 9Ȓ.CppI{fGܷb+1Q>^98ZT)=]#%Ek:i2IP{28enh nƎ:Vɉ\2MGY ><ʨJeCxvR>o2î>ZX=7Ӷ>s;^1iiyQ/lϟ-}w6;0yNm$tm8߁ 10^Ztf7tut#o˝sYE_Y1W2X) ?xX HM ЄS@fN_&Y[RAd&PL*%mz`S;(V%Z&|}P&9t8L78ZiTaׯWf>WaBnPobG17埝rBnH?8ݸI#9Nx|ugܼ@Y"*c_7O^J8)o܂[`bsےl޻/0_K |^9?n{{l-U[eu80 JTLAa.t_b w6A)ŽYHԹOɴiaorF|x}BMrOKWnrFy(r z3{q/1^]fA*͞N9n`JVހ! J;_|& A]O M Ha6b.Ku-_bqMA'GYxəM}1d1ykulū7ntteaOz+ϧ[ r\ g-tSo/nR{<~Lv썿KWnyȯ ?w ~?RGGcuyo-2.1.0/data/pics/mdBoden03.xpm.gz0000644000175000017500000001016112412223240014130 00000000000000ZSH>{cb*YFR q`@eMk{ػ؍lK|[%:y'{N;WO;vn&w߿~itv~gfRvvSQBhyNa9ju(˰疡CaߑmI^PpކnjrnSVuʼ:=&<{6˰jsE- u*P)ޑ= n!W8-.P1j-ׇ^)mOxUb[r>,;.}uVZ7}m3˵seU'Y#F:gTZ?s"!;C^s•*QI/κQc^ZƼz^7:fIW۪_VW{Z_(Oao4p2;gƫR;_v)\Wz˫GY6ΒaWct~)6u'ߗ}ɴ?jKiɫrUGO|PȤ&v8\sKr J ʸp*B6Cׂ>oې-ɍԁb>0G7+H[^6|maU |~kvyj|sy 7 0| 7 0| / ?1Z.\#oa|MA?~P8Pap)nY[*j|PQ]T'[rD_0t_*)sޙo8ts^knw74 3FW5 ]&ǔ/kyD<'|ǔ*.s٭< :ӧ2m7y<2ü(pB~Mmk&tL},m^d,)d'z $lĀ4mo>}8g)=orVWÖtë%s8-`|]j,V ,eW궊7Ռ 04(﨤K^!vB{֝L'E>/y2f&M38ʊI٦4[g }eٖxڐsTFwO&niiϙǥݐZMqVQE%j0ϐ:nuۍzl4+)xg[:j' m.GN $`IH $bgv`ܭ ,d4eD-2lR~Cnc@rҌO+mMr+FDEՆR-2Ag"и<²&V̅Uj⌇W AjF.חUa[76Ug3XΑ`9;f 2f>'.\FQ59nF!,d7^5 Vqy@F$smD5[c͗ Q fahBv9ؙ8(mkíBܦiQ/<`m%Û@@ cy&YnDoL`XrKF[ݮ#6%?}mb6VcFyֻݡZZVٴpPX,<훷aF "3=1Kܶo=Ͽjy)?ڇETr݅fȲB̴x*L'`p^S{37nP'=5p}!zٸI<c>][OEC$X;OP!z !yWixĻ==qx3R[hFQ 9lK`&ULx (.x]QzA $<T,V-/,pbxa-0mY[7qV@lR̃\Dqt'pu ;ڍĆx4tQV/qZm) ﹖uǡy! FN7t_nn'/t01@y |K)p`EK`WfHR8 ׆Ly24wƝ3n-Xف(Sb"z)h\(r!YX>DоFc>J^XbEg#aؑήC{! 4*1ud"*_yZKb!..FPp1 5Po i1a%N/|ʵ^>FѾ稙`c/^\`Ik13cU+bBjX KL-gT@|,8/ 7m`lL;R\pHӱcK! u*#tj< lC3,1$Pӛ!&9zױ^L !tS_V2H1jx~^d>ضظzR^t@Tc]1xqiS#{/G] .^_W?`s,wl2>_:}{"lkW\]A=#}k+ T0*㋿caёay 1o,GV ]$wm{ڶwNciѸr~*<*P OB ՝5-J@}OM7[ĕ#5Fē+3@/ g/GekxpXb'efݞF|@~€ 0}=qEʒd7;H98Gۧgv]{+vB#, C^̪('% SduFB@{h;!Nε/wmkם=C6GJޫ>H]1]AՍ̊ SOxBK  3 %J~߅(pF_4";.;=9/4lq"޵]?A D;J @ O}! 8CJ%0t&cuyo-2.1.0/data/pics/itrBraun.xpm.gz0000644000175000017500000000371012420650610014211 00000000000000[o6W(ql'*UmIևuCOtċx(75iN$IY\oW'|}9xK~~yywe` Fg>߷n7] ~1G~Ga |?9 (f::rhhPBx7L7Fa .{po^p) '7\|p㽷>`h3+|U3t!(t4G.x6E|n<^d{?YLCtw5vi%x?ݢnx;LQ8B&x1 n%S\0>x{c|U< 績Ź |b{pK!.j a o1Еѫk k kV+J FRQnZjιZ^uG F0"2xQ)VdU*VVh(bN(#$(%SƠNhvFBC`kJܝF?/VFJIBHF@`*FJP( T6oBPÈVGeI=z %}^:j+C|;u˅9(Ըˆ:%eE"j"|#,)p]iyk"UE)?51P}P"dj*%3;D\P;XцRЬ1Ԃv-WdB0Xa֖Bt|oxxn5kthfF&K#ZlAjm)1@@:B%%Q"2rF6ʚ)La M (2)q.zyKQ\B+A}B03JJ!$IvwF1X  AF (05 #N'/1:g: 1`œ) o-o%Q 0o'FaBzc @F1oXyFSp7~`e mdC?۪fb9CN`>!<ԝ6\ (ќ.wvk [)V%Uba˽kJ^4C?|tets=raݼwbFT, TchҌ#CU"0BWJi??VNz2G{At2ꡚ :TdG>_x{YOǹQ3l`Õ Q9XuAtzx˜6k\"vl̐7khX8D[q3xg!2~x?qwW@QsP3k7QuZd*= XG C6-BkK/\lJr'+횥Dk|ͬ!%77Jӆ o|/P.*A,=غCm5KAp:~o? o_>_W)>QJg_A7f_}>o)䖪bd7ᖪfRUHK!S]Fr"өfPy䖪l$L$OQ`kp5qdʉ̄J6 Cs(_|ٙ$UUJf_ QX*RTD忂CI sA\(T%P'H%hWP X k2"2LPn{#ߋ_a{GQ<Ȱɽ4L2"} .pTѮWb ȵ5dȭECP忂[0lǕ ףWE=ԣW_4-M"yE_ B-4RZ$UR $9rl$!m?ժ3:z2: >U ef>xMNcqscuyo-2.1.0/data/pics/ithOrangeV.xpm.gz0000755000175000017500000000066011101102053014461 00000000000000J@)xKej% H)hբ9⻛ddv3DZpd$5_/f[lrNo=\{g)L3HaD1i]XVQ2g3fMᇡ e(CPƯ1@c lvAfj^e`܂28[YFunAfhZ=cuyo-2.1.0/data/pics/mdSchwarz.xpm0000644000175000017500000000153411672457346013773 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 32 1 0", " c #000000", "", // omitting the other 31 lines ... cuyo-2.1.0/data/pics/mdFels10.xpm.gz0000644000175000017500000000167712412223260014006 00000000000000iSA+PhMvw@ Tp*;Δht Vm OuOӝ)`2!WEbr~HVUmVkbFEϊRFF&Fhv?GLz%nj~:i~0#3x)?8Ry)=$'B}(ɜ_f|4)m0`J-y9[zaaXVQTV>&G0)edLh 03Y +s@i0FX{5-1ʔB-}+@5=4{ m1g-AmThż vgh.tꁣةRݡaj=Mȍ|[q8q硫IN=xzfgn}2BI;[.W[ڶCGןdk&vCgj&cuyo-2.1.0/data/pics/mbmGrauJoker.xpm.gz0000644000175000017500000000421711653006610015015 00000000000000ZksF_v-T'@$$AҼ$MV#ł c #{ - wp.g߻ZJ~Sq>O*;VU7nJERŊ.W{7nV*NeKl()" +F` )R/Ex a{d6d?j$# aBx!b yKr"6 >KfmdWAG)U[X H[eHDe5 -KF(c)ӖT0߾eX&VA,P|MRq4d52 -,] Ezk`;w1#M{V=BSMt2˽>ҤP-T5U!2YxTԆnSxLa_6`kVk 2daz}9AJKʬb/#+Z [@Ҏ"mMav~EYI賯)KF% A*#| L3j-:Bph#J- t} 8.BY'-5r5 I˰8)$>aF0%? PJ+#!*4#Z_Hr c,d, wT 1:ِ(pNnNK0L{rrDg!1O3=NvPjWiyxV= hT o)΂8yjr?*;q݉ 9ϗ$9~d` @ywQ%năTϧϞ[oQ"<>շd9-;wh?Sfs;mqN}kNrpxf97m{mB{ܜs6bOٵOɝ :c|zoNg[2Vħ5)hg5xf `L¬D!hTa폚Ug4FGF( օVׅϳm/.,M<۷O[>ό18Ecgdžwzsz^\\u??Buɽ;a*Ji#~G}W̮NA'shp4Svf6Հ^AHk#F9$70Z `+Xa` Ɋ{CgQ&{{ihϞ+W;er@X=f&pRV>+Հoe5HA֓j<,}#Ƴ'58v̪H.2K}78?VҠ? 2ݗke6ebUnVyQ^cݥ1q{ԕ۵*}ZUXYoe5X<$}ɜ;j| "h_Jb5%&MHBN㫢>?Ni=R1 [z-_/V|ᎱxE~в%Am$+fr>H:_3wN%JW|&f%SO,D3 Qd5n34S`̜ܫ1s2+izdVcr wJvΟq*l`7%0cuyo-2.1.0/data/pics/blFeld.xpm.gz0000644000175000017500000001004507550521110013612 00000000000000+=blFeld.xpmMѯ E ֐r[A(@C =ᐻ^=]ũ٧FU϶Eɛo͛O^o?͛㯿旛z~O_O>n߾;~8_??<?8<;<_p{x?px;<*o!Cfa : aA! 30a0̠t0Cfa : aA! 30te8<>w9qpw5YNI>0d8 &~.&˩? -)?߳~0g1F;>#á>?ǻH__C6 AXw":U3T2Q\1Ca}]PJٹ~Fk}w ?؇Sb-=Zz:3Tac73CUzJzlkBzlza &ǦǦj;oR>kglۋI'0Ti8cp|1>8f=XW:>MT,&_<i?3M'S@p^}]>w|`x5|vݘ0t0|hV޺1JwFuٜOdZJj+fg_wq=LHmr6Xu_S9=======6=Cfs1w^Õ1;[Lu1MnO`r@O߬7n2}7Oޖ.(a8O ֊ a؞`` E` U.C6gd0amUor?zfe0fGmGmGmGezF 9õ1C>8>:k-{|}4+oG]Ÿq}_ׇa:}P8.aQOpV}A!  ͟D ńR3T%Z_3tHصJϱWg`Ho a{Sc[cc!&L^?Cz5`n ֊z;E>0fXMb# Dԛ1,3mc0NH'ފѷG'*]1& 4MF}W.շe8qv͍a8aÐq `(vcx5D>):ۧgcXr/f>_сa?C@0E6Z5f >ݥce7)*6=;1 vGm'Ǧf]OŐFs3TСu'a `z_0tC.t8(NTzQsup3|H0ga: aA! 30a0̠t0Cfa : aA! 370LZ>; [2Lq P 8wᅵ_0SPuc>E +1C_ݜOdXAZ%5C|C U3t>zzuMt.a3m؇|\]tc>E +1C_ݜƞ۞}hE7! ]t`|>oÐs|ǶaK|?ej)CCfa : aA! 30a0̠t0Cfa 3mgl AL0 1,6 ͪexg0a0a0a0\fOρPr0ܟae( 2l>4Է v~]Go ` {豗Locv0te8<>w9q}\߇$z2SW?wg&0CGpzzp|t6`PˠЧ{0y:8>Sd T Ra#>_ R0\baٟT߁0kHPcXjh}-3Taڇ͟waoR6Sv!a>߷礌tm豃ȰwaHݙ*a=%=5!=6=0ycccwcyvmZןsvυ-=.a.ZEWן'Շ&7fOS< Xizv?>Q_R§ygz4gΰSA<;>kgX}<` ,vn?~7bfY2Mp cccc/uަ` ` ` \~:bK=|U0lUt Y0%0a0̠t0Cfa : aA! 30a0̠pr;>; [2N%&I`ؐnw*y=˓U C>>G}dэ`CK`(p }us>bi  +WI%Оaez6a aW7磷Ƕcq=vэ`CK`(p }us>z{>zl{>=Czlݘ0taaE C>q۞-æ ' aA! 30a0̠t0Cfa : aA! 3 KjQ\-E>0fX b#9 ,|`̰|[6sWΝM9; ' {[:*>0! O: B2ieg(0 `n ::[k<:0 b("(uYdeXj 2ê]:az^n*6=;1 vGm'Ǧf]OŐFs3TСu'an&Ru0nQwc8Qbݞ=MéV;1F;84.we>Wg =?m}~$RӬ{MZc7cXCw/`ah~J;E>0gh]GglȰ4`&=R ńR3T%Z_3tHصJϱWg`Ho a{Sc[cc!&L^?Cz5` g0 9[l kiN3d Gg?/kk hy}xߥFp[-ɳ/(և! /<40` Z0% ]2la(&CC}_ap60`Hݿ{6=f z5mqV]o"P+Mn(ԏҵ o:x\r~O:L}x߅V}Ÿ:_y2 ?g`6gz:c(eH iՍ U3|"C UR3t'0tX!5C|>pvC>ajFnGop v]t0px|rȰt[0OFM'a8=u5cXM#ÙUБ01,6֏|>Og|{g{J P?g9>n' |nc8lbNa6-a9ah1~!HG9žW2Q\1Ca}]PJٹ{osUzʮ:$Z/b&gxF_oE:6Ud؇ 0Pۚq< m1L1 0Zx*cuyo-2.1.0/data/pics/mbaBand2.xpm0000644000175000017500000001034111672457345013432 00000000000000/* XPM */ /* Copyright 2005 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * noname[] = { "96 32 17 1", " c None", "A c None", "B c None", "C c #00FF00", "D c #00CC00", "E c #00FF00", "F c #004400", "G c #004400", "H c #004400", "I c #008800", "J c #004400", "K c #004400", "L c #004400", "M c #004400", "N c #008800", "O c #004400", "P c #004400", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA ABCDEFGHIJKLMNOONMLKJIHGFEDCBA ", "BCDEFGHIJKLMNOPOOPONMLKJIHGFEDCB ABCDEFGHIJKLMNNMLKJIHGFEDCBA A A", "CDEFGHIJKLMNOPONNOPONMLKJIHGFEDC ABCDEFGHIJKLMMLKJIHGFEDCBA BA AB", "DEFGHIJKLMNOPONMMNOPONMLKJIHGFED ABCDEFGHIJKLLKJIHGFEDCBA CBA ABC", "EFGHIJKLMNOPONMLLMNOPONMLKJIHGFE ABCDEFGHIJKKJIHGFEDCBA DCBA ABCD", "FGHIJKLMNOPONMLKKLMNOPONMLKJIHGF ABCDEFGHIJJIHGFEDCBA EDCBA ABCDE", "GHIJKLMNOPONMLKJJKLMNOPONMLKJIHG ABCDEFGHIIHGFEDCBA FEDCBA ABCDEF", "HIJKLMNOPONMLKJIIJKLMNOPONMLKJIH ABCDEFGHHGFEDCBA GFEDCBA ABCDEFG", "IJKLMNOPONMLKJIHHIJKLMNOPONMLKJI ABCDEFGGFEDCBA HGFEDCBA ABCDEFGH", "JKLMNOPONMLKJIHGGHIJKLMNOPONMLKJ ABCDEFFEDCBA IHGFEDCBA ABCDEFGHI", "KLMNOPONMLKJIHGFFGHIJKLMNOPONMLK ABCDEEDCBA JIHGFEDCBA ABCDEFGHIJ", "LMNOPONMLKJIHGFEEFGHIJKLMNOPONML ABCDDCBA KJIHGFEDCBA ABCDEFGHIJK", "MNOPONMLKJIHGFEDDEFGHIJKLMNOPONM ABCCBA LKJIHGFEDCBA ABCDEFGHIJKL", "NOPONMLKJIHGFEDCCDEFGHIJKLMNOPON ABBA MLKJIHGFEDCBA ABCDEFGHIJKLM", "OPONMLKJIHGFEDCBBCDEFGHIJKLMNOPO AA NMLKJIHGFEDCBA ABCDEFGHIJKLMN", "PONMLKJIHGFEDCBAABCDEFGHIJKLMNOP ONMLKJIHGFEDCBA ABCDEFGHIJKLMNO"}; cuyo-2.1.0/data/pics/spEyes.xpm.gz0000644000175000017500000000073711662241762013714 00000000000000=spEyes.xpmQK0ǟ8eSt"ćMQQE6Tr#]wFdC4ygcrs 8(שNovVJBW+;.\x0\,;*7ް_X 1 )ҕK_׸Oc)OjcqƐRrkcq΁qAD b 1A bʰU-7 gRڬeo~QEQlmc>B 1q%C1NW& C0ʄaHYVK!dYi,Mk^7_1ߍn wc2.Ü_2.Ü_-Ø_-߇10vA b Dy N4 `Q( B_џch+9<a.1ŘS;~ 2cuyo-2.1.0/data/pics/mdEgoV01.xpm.gz0000644000175000017500000000666112412223252013754 00000000000000iwW(0 I6#a焰$ߪjx&ss@r}TOF*ߣijJeyÇij컂ZLߒ*|RiDuG/{B.3Tn]2tCE7Mnp  Y0\t了kPSt T 5oɭE"稳ez&=f \fC5#i)SRt]ܒX " )p4u+, eseQ=u,Y[E*k"%V_ҊY'W/EJAgC"PrK[/tKWl8\ױJ.k8NNVUJُݒCTQ1:VwMzFh=%h|x0>WC锾o a؇Ju溎CuY=j6B1VH ӰIxfBIa-Q*$W߃]ܼCȇgK$hSPd *|c.@PۃGw79У LDvG`Vּib:ZmEp!LfaL>k;aجcȠ۷p޶B-3դ Z/٪.'CX.kM%H*S\̂Z yyV x`[g*dt>yIJQ,4#Yn q] 2'''l6V4S˜| ry :͖!,f*daKO&JyJ4d, "dP5o#@KA!HfÛ7Jo!~_0I Ne$p;J!0~*q z"nOR)r9 ĉ߭ +Nֶ #^D2;7TD"uH\a|@X@8%`dza62dGi #pidqM@I Biϋ3@L >2qBO<(giVI|jRt8j;zf"8 P"IR š OdՑ)m`*̧pAu@m"Ȣg4Ui ؂˥"`l@%\5ewLִ qxZג6Yk~@1h@jkVFc I&4(L DZ"$ xuBp1:V56b\gk4WYDǓO<:ݤlmˀWK K@fPLgqm/3XLL(D׬,eBX.Dc@lldc ' c @bS} v4D 3Vju'\`F0~ 10"`prX-35'fjfT=?eb$O h117sAԘ3bUVo77jmF-6"DUڻC(hUԺ 5V/7v8û+xvyyaַ"X~U!gv2݆Fӎdy5.x6F|܍!¨;Ch>_^4 7Zɘڷs5GW1~e4noAh8pfjP(׈"H |>01roTd6~r!f~Ti#T #EG-C)T߬ *)~wPP0?r lc~W*U>*ЪPV8VJRE7 p"x{C96"hkac瘇@b8D$*˱ K1%"'jRM1cp!aMӨ !p@pC5AHjðMY KJDH`( ˘2nT/o* (yΐT?G8SU83) >1ʷ Vr@J!)<߇InǰS}1$D~ VۀDs$>KQ eH gP (I82v [\W0@$ ,h+Pϊb2("w=YK6yFbM%nDnBP`]21|Dq`=0u0Ӈ>>o([}|lGCxW!x`0^Znc%'UW ;#f< pjg!W0>Z"a)WEU>s{7{ P?:C#rx;ޏ?~6`*1lW3lM_˘a>TQì\* $ z0?uFbLFv5{x~̀& m?H f+9i)jX?AϣnWuGp}%EbD.S_aZ;|.~{s5]9VgZ_f'Ӳr▂.w D$mGcuyo-2.1.0/data/pics/baYellow.xpm.gz0000644000175000017500000000036510361514436014213 00000000000000M @Eͯx8;'ƏʈBwE BD\XR.jޅ̹O L\HcL8YIy焷9>nbn]ë{swû'}z?OO^wum7Ǐ!?>ćOМ}eؙs c Z QتwL0A(a3p9B;18{8"~ 38{.A ~¦arpD4NqY40)°A [Fڦp:a SƔ t1PDM)Xr젋\Cl2'm1;A($!0L)\Ơ{zm ,ote ,.aH3PKZVS7ⱃ2~ \\۽Pv¸{H`8W Myn{D@B UN5K YwG,&LVEN; Qj"xE0'+\'61EFA-ZRiT >8U=& xQJrP`!9&| 2$R1%J3'6^ִ&y/ik,pwT,.I#C2N!ͣLBLLʓ1kNA a0y6DkC2Z!jGyGtoC5s'm&,#4T[_bpiB2;BN\Cv %KT븋2d} Cc´eX4pA`Ef(!}z(֔]Tx X_A4T[#CT 26̲ծ?rp .q {AB,9rYZN DMc4yMm\wv(D>.Jaf~ e! hPi9_ vZ! ͺB(o) ձE~ Mӡ5ڸ243@y9pA[ ,bw*ٰ ` <$Em+=c_YAۊgg=Rb]/ !T nv9{0àZb⃇r+ηݡQu1)+մ7!ٟLve-C^|w-R=d RcC E1B{7-Yr.REÒ ¼p@]v1p9 cб=s!Ysa @43SGNё dN  <$}]$32}08VM"콕)`@O(n׃8Wq}H= 0 Cy3| 4nr.C8:a䰻+KaaD sBcuyo-2.1.0/data/pics/mdZiegel01.xpm.gz0000644000175000017500000001112712412223270014324 00000000000000w1)r9T#h'M] K/v2@8{s&/teGheuM՗&ԾjN~l5Z~ծj2[ ,U`a٣r*-K&ް쫚c)at^oX6t8my`f$#2] 7d=ۓb k$IƉ. {lcn9S;[wZz P/cbIE CpwOáfH5GD3좹YAf ?1H]A.B|1ɗsn5eϊYbq`PCoUp1b/8[ -[ 94GPU  46sX`A SEBqˡ!oH)}w-1(߳fD $ ygݔ,˯_(@bH{G4egr1)A/ G[p`9؁/>M@ѻeC_l;=Pp5dats6[A ٘\o֙C>P>ᢚbF87/GYgigV+;qgP"8;_9# q2I28Q\:^n9'c O[cd>[ D-eu?f[rHh=6BdpHE?G ][ -4BuDnXAn_Z D 0͔9|BCy =Ԇz9Q2E8卢}Y6L&^S $u^0M)7(8>>0/b dHA+߮de>GC<rn d0eMЊv4{at  Bd6mhopjsh(@7W橹X?^ͣyKӮvqޢ閼mov_7ݢ^]>yq]8B6\jk*@<LHR;Jnʫ51ʲ}4¢ kł&mLU5aGQb#xO55Aɫ]?yLORm͖G<cIytN47%P#"ƣ!!х4[|{TyxDO#k(8 ɎSq辎5]:p_i1, SӬ46A1 imLlcd@ب+e0Ng"M ({u@ڨSA*R#.eGJGĦY>5INln~Q٧jT<^ Gn$ؤy\އ0 5 >xܧ1+& Z|08}> C}P `>(P|J|pH0Ռ`C`CP0l| @c a @Axa `&(3 FKCCgxsŇGG | -@\Vy(6AjAM4N> =LfmPf} jXg0Y(ςpm(1<+gij#߱&Y.(1&]-}ؿ̃° @|_`G eP(k (/&(]G( kX@!E C:(6P/1`W7CA:{:v섴JdjP{*ReO<g\wdrH?ܞP!!=n=ޘ%SطqXF;faĝ\(KxqnM豶Sp7v]ۗJNT{ڻ]ŮvmvEj4(npҧp.ʉ^;QvI8Si8f]I\yΌ}= wk}x= o$[&"lZIٗ9NN|M-D7qbӁRxc:p|#Ɉ4Ȑ?69YݼAJn3>Z/~]Z6.W2%@WO'JkeH +Jԍwoޝ_(s~h4fßxə$mRrpqӨ7p 39 $]C ͙;#'YnD@2C!u9 CGrpV?15ooa Il)C$P 5#<̊ir˩ĭoO0uQEujkj_5OlY)WѯaDo(罭=)S(yh p8lGZu|TF%*Z5)QTeDQ\Rm$EEVs!Ьw5GB$#@cst_ v;u:;ӻ~Aw|h ^+ D wVmԄPυhȄmjb%^^B{_zU j5&~w+կ%ޓC!9-kp&* { 0)S)>!2 WPW]푚4ta;ҹѩb an 3eB=m.@ @.\ҽ@jdŞC6!l÷m[% Ŵ/@&rV=(MP#$D5BygxwvUwkεkΊCQ =JOiXb694GpB,,QIhШAAլ˵fk-0z6x Ywo/z=)BE<m4$q8d2:Ce~0cc~x1d< $d#w`\>\8?.y>`ġڮv{= Ga,y4TA% #gy==f 6|Isq8d2CJ:)}t4lnjKy"gyiḰ}mYf`-xVjgmͳkFOwU_TtfB=H)6:.k.$ӻe8̨^/-/]{ԽfEJ. q)ʇ֪7q0x⋢\scvN. { 7tvQ\˟bA!b)+.BB*Jٹ'T^1հY^53T;YrCl])˚e~P^T~@lN\V^Q #/| 2(G"RGU|n0!OA;֯/ !Id2DF0i|Wt|ݮƦk2oSڬih9b; e*4Lk$6Tw):yT=uRP*yǘoh6ļmL66 &`jm7L)Tu]ӣ"θq2MJw<3zQLn2CqKo>C'phcuyo-2.1.0/data/pics/iaBefehl.xpm.gz0000644000175000017500000000112507550521111014121 00000000000000J/=iaBefehl.xpmYK0~16p_&MQ1& ݃ +I.6Rqad%|I] 7,Vz>]>-WϏ_/pIgr gǝ y{]f~>]]Φe/<&vd0+{M]cVFs1p c̊[qr.IoĎpH+<ģ"Ut3*WmyՄG *QgbtP P P hAYMu6_ լҦ:Y/syAEn Ok *pXZDSlhډ 珇 Q)&M"znW>1+ZUE1C1C1` IHcKnD뼈$!e/EC8%jЗ}:Q8%jЗ}:+Bx0Wc۔yU^{xl=IFt{H'G~ ~0!Iχ$9I%܈Wxӄ6$[1͢{s%cuyo-2.1.0/data/pics/mbmOctiUhr.xpm.gz0000644000175000017500000000312511467336346014515 00000000000000{SLSD)x mnMi.JTX*ހ"Aߜ4!Vsf,4l67f2=3;l~(eZuۻ[k3t~AWlM)4v_Q:x 8JUFE{(gI(7P6Iel] `&1xL3iL"Yf͓I6TeFTq 0l7ظ:ʢE2iƪ[4T&hZD-سi :Dv e]08duTci evQ@Q$jb\eYFHFuQVF!,BdeX[FصP. l:Vho:4JFd!(x4 hM K}K(ߑI-[(t|X$=llFٌ:Dulخlj1ٌ>Q~ (? I5Z$r(ib@CF`q`ů}&6>64Q,c:MS%zLV^#?Ɔ6IT7,l0>O}| -~>ȓIdu?OgwJ($}lkt9(zQQh]lt%=H<:Z$PVꍥOv= \%qVo|mHX iȈBkqK;9YPkKad2ʈǮM8V=/ʈQ0:Jazʆ'Օh4-^ O>"ʂyvW*gw|;L{ɀr҃ =H҃p<8|Aćyn~pS>ua0iAV|CRȊIR򃋺m7R>R~e~ LJ\7?ZS=m̈2q?H҃ =H V2`?.jE0% =tz𞀃p-CO-8'[멀COڴxՂÚQGD^}ເ=NAT.~vG'򇖀&Y껜 =H҃ =2`%V2`%V7|zkb}@Oak轺+`ϣ:_rQYpxa`Wfn?5 ; =H҃ =HwCCm7i/uVïy/?XDJgf,@'0x;&W` (#Wp;<*퟼}vcA0<o =H҃ =HwCv?Sw&Xcuyo-2.1.0/data/pics/ieRot.xpm.gz0000644000175000017500000000264407550521112013514 00000000000000!x=ieRot.xpmMkGѯh4;{Ɍڵ} 9BFCqb[5o3Y];ߩ݋><}zT~Sԧ?|~?~guR\]oFo۫kͣzy>7T;wXÇ TnڢVWP?TwP}?Tݿ{ :,9t]e2clҶg۶S>=p04a> ŀ')A'#C@ CA E 7 ._IPX=25f%0#魗fOsv9ƈ nf(|eb [xB0y7^Q@#gtݵxB޻./G(]/1~!71!O <ಝJJ01 Df-daY#^Rq5EY^(bY}04Ed0A"m"k&:x)4D1nG0=EF@Q;z='QGXX/2xL1ET|A i]_z{ }ċ>,AnjeI|A5ўY}H,/hfqqTroK$Q|LE!=߷^!Ee|݈x ˲ 'I5wQѮ fA{g_1Ml 6X?vCm|c#͇Bx3;#X(@ȫt$K1?(.<ѯ?Le~e0B:3\01l...p ? ? ?(?H$cLA"U.,17>~o?>xx|?oˇ>y_<|ɋ>z'O~Ջ}|xy׏痏~gOϯ߼zW~/?{~q??>n<wa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 L} aaSa8,l2>,MY>ԇrx㰰)ԇ@o6eP¦,S9qXؔeC}X 7 ̧œ,:*cuyo-2.1.0/data/pics/mkaRhombusVerbind.xpm0000644000175000017500000000637312401423720015435 00000000000000/* XPM */ static char * mkaRhombusVerbind_xpm[] = { "96 32 4 1", " c None", ". c #000000", "+ c #E8E8E9", "@ c #8F8F91", " ", " ", " .. .. .. .. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@..+@. ", " .+@. .+@. .+@..+@. ", " .+@. .+@. .+@+@. ", " ............+@.............. ..............+@............ .+@+@. ", " .++++++++++++++++++++++++++++. .++++++++++++++++++++++++++++. .+@. ", " .@@@@@@@@@@@@@+@@@@@@@@@@@@@@. .@@@@@@@@@@@@@+@@@@@@@@@@@@@@. @.+@. ", " ..............+@............ ............+@.............. .+@+@. ", " .+@. .+@. .+@+@. ", " .+@. .+@. .+@..+@. ", " .+@. .+@. .+@..+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .+@. .+@. .+@. .+@. ", " .. .. .. .. ", " ", " "}; cuyo-2.1.0/data/pics/ipRechts.xpm.gz0000644000175000017500000000123707550521113014211 00000000000000<ipRechts.xpmKk1s+%]Eq^S {k(=J)CP(HZ{H`紃֟/l~g׿=~9~~Gfڮ_]|c&R VGH9vWbHj@ޜR śN 6!F"wJHae[DMiplmb[3[dhd aC JCAh.H0N,9wDdKo\䆈3`mFF ?&c27xOG^GXQQG9'DCóH8#lӏG1?*(TQc 7$rc}9/{{ɨ1KW x@ԠLLM00 "WyaK2a'(uc 07EP2<"V[?Cc  quՑ!\eaSLܱy$iPB#N1oDoX3rP _)#q WW25 ;RC#$z#T! `3Hʂw;r ""ohMRL*9'5hF+x6wڒcuyo-2.1.0/data/pics/bxBuch160.xpm.gz0000644000175000017500000001616410361553650014104 00000000000000b=bxBuch160.xpmmSʺ_.ӨbfxXH@ePQvt'|9>{} 4 |Vtg"̛݋lio޿( G臓_>^`O{{:z &6/ )okMHSRrc}cc=[쭗pr^^ĥ7rB_pKRW¥EoU,=\iJ\fpY6?2˭rupYZ/ڸ, ~a*=/. 2(U*pC/=k Y.;Ae^<ؤ^6#DŲHmҋK^9(ҳ[|f޹LˠY*>l\g+ hI_bH$] qyOJT$%g,{tgRﱒs.76ʸŠAJNA- =P +t"޹X{$΀fN4$rЧff;%0u7DZⲲ=\ '-=[,Vٿp y<:9. 9{г~QhyK\z^irP$5Ztqr萨G:o^\[^6p #2s6w+"SӳA J]V 'e!-h\dhyr@/ S 7GpE%!x< ьsy8mzwXhx#\@Ǔ};xr qrr [wU4k8S1M26U48ozir=͘Fo.)XKUN&"fYp1Y,Mnx^/c]%9*^gԛ28Qʍw@E04ލ> (L/u#g.$&c[ur3ecvնwL{O[yit(CS$1`(![mw9-- q:x}m@:asf9lPKK2*0̡<ܛN3$(f6 SԱX7-uBvѮsf+R&LbCq(>i!ťpT] Ⱦ䙱+uo6N᫭ьLZi>2&jfOو+Fh\ftl4"k_1'{5mBt~xu{AM-ՉAROg}splI O{ͳpqfZc˹R{dY$k6ѥv }c.yf; #5tmt|R\T 2do0枌rFz0m?^Fxj|^mg#J&1{nw8'ޯCV{H#2BuLd@Ƕ^jZ;#9om(dHDd< )drٴzl6M8З=E%(nAZ@*<(D% [{0jcKCD< @}S=VC/SY驯D ^=fvfNxբ.^mAUəԠ 1ˮ: xaƭ~N?<.{$%R͌ZQ}9i)2l7WuEӚ4ⅎs|+N k8=zϩQ\k3кT++ۭ^"DM#pjnZ; ҭ\piWzcGr1eLUy n7®hnZ}+JR1*C85^+N.2r{\3?y5GD0g@Koûbb=1 ^ LF >bU]C>ar,]XpX;珐{j5>CDczXG1o1Xt_.2uT>_iP*שޢ:(Pu=ܬq2`[zknDW]u{Vޙj9wV)8*|3-GɸIGTc\nuk̘sm.}Iu>z4{j+W\f] 9t\'h)[V:ybx,RJnz:?tLy/Rcw;TQ9R4~>mlntA]{ԑ~!`T3X5{"Z.B0;뎃Yyq^WH w]3z Re]q-£p[5񣜡pz'&CSixH\P"v##؁M:kԱBJ{O-"%9 ?AgmWXA@֖(!!G#K"hR»<DZ}[HG edF :kP*rvױ0Ϯ|qυ9HXv8nƵ2|WGoE)uiNn 3rD2pyj P!(#DV8jÄA=+f2m6+)$H*F`6{]KzJZ5%ZxbQC7!URȾV+]`܏*|Zya YrMGA4`os]m/|/sZIJ:-H^#gFF6|"91jx"gXR=땘̾#c0P||%qBѬ4t;zu[EOr xx& 9ˤ#Y㑜׀9„J_(9@@YiȨX g:j0~~͗q>3rz6"# :9TD^ "P3ITz k2txV>3 @,0{ l=䣰FqvΡ`q6ҕ?º6$c{tL+q?{5T0]D4*{(HG݊q^/{-x5}>kF<v0zn[IE"|P^9: f*g}XH" @Ǚ:b D}jMFe< y x@|x23BZajRs>izG#V j&"k#LOWֱT3,X;JLΚG^:rh^^3">쭌td/d2(J0gs}azJ(!AG`H:|kSGJl^|mURktTsMoaijyQLFqK-Z F]")He6d$Pӻjx}fnھ5Cfo{1-mG|DA"(yK;S%uDp&h#cv=[5B$na]1{ѩ@6\/p< #X\0e3׽,Q)!%>؎Z&9 b-PׅY9`BcK PK#좬Y 2b>b]^tq5W*kTBEZ25QN?B ˽ۥ -dmK jYW4Y3Y?:~6$cA,aFUfCFR>>qMXPSN`4ʷRIֵQ"64+] snm#aP&4U;+MP{bػ 21*o0ɇm, ;~'lc ᐡ>&kj ᛉ#x#' -m>ݔeXغg.8ؓ@ȤEC tVKjR8:{=XX%!>kA(!Cٕ`3 œ)FSw5\[G ':Y8jf-0kDĔdP_B7HѝVVstc^CͰ^9-Ld\.=w(;@qhĨ Ä  Vǐԟf]{f6xvΘ ˬ""/%hTo, /7` 3$;aQLzN[AFtj&W!s p.%K.F*vG?)9ڬQ;׷&iQoeq}9۵u#6+Nu=}v7Ba`.nK5T൨NAm BIб!cQdUNQf%2v%.`9[yx|C>׳$ 9 D-]7i3ё.C:h1eɪ_PGv+'PMxmEC;|3H]Y7$DDTUHVs^QtYYN7_oljQuq}@X4g1A^_{| ^FJ!}n>5Y4{uZffE>~?{JIk(PZ!#${>E*vo}VYm;(icf/B4Fh_>ЯPBO-2n:? cv٢ j&|~PG|q2` 4Mq-2@YlP4CF4bo-f"y/ǽu)#E? q'-|xZ_Z+Hd [^_YzB\:F>,iƶUf[?rxf|Ij%}|O/ksO0 'EIY8/|L0p\ :{[ &nϧ0J!+XtiR x`BA9)/QGSm=zOtD'4#0t 3Vx4NЇt2àT.^mNP>$m0xf2>ŝ;S-A4]^{V>/a%Yo綳L@vp\C9g\;g5U ŞbaxN Ku`mq@^K=%es<)bM)~*ςNρ8lxBp-FJX`E8vy6/yU~>,1҇D#'R<0z?>aE4C'N9\CcgPE(%EM0X95ʹӊ~o-$ X9i.i{Dˣ LQ}TOăJŁ5ɲ:ѡV  Ղ?替s\],~Pcx;i^_Cx{Y~]x}xIoL?ݏQ}x{^OiyH}]GK].Z #_E SwNo~#?ut:\wCfG?`RG_>*5~ίs9(,١=>͉`6W'λDy,wkY$짣?=Kͫ”˹ D#Qa}Mq@t;1Io}o>gĎ`*-@Maq >=)%n8]EYBL(t_ |0'b]l}lD+ۀ'!ÕZ7+O崱}'>v]M8cߺtB/y #PtDfKx{wPb >qh=>t~1PŽwheS4m;.zZ6%VZ|b(}/ԯ|~~ j_=Vw鲒ZMtrWNDI ˏP.y}мb)辤}~h]x*Z~G i4^܈~cn~wH``h3xWC(Q>3U<.HEe$RR^H^N7#%-t$zuf 9XICG:w}DZ/ci=Pғ .Cd`pg}HE0dcT{q[W|W2^iS;}$d}E,* \$t6U? 7`8`_];5ϫ6?+tҞ8ҿDrp̺d=y6yYп[Etdٵ hDegjfẗ?T. a#TT]DCJ G )4{@$͒e ^ Sl< R`[ƒQ\>~YR"_zǢT^3Vxd9M8j?/%O#B(CO.0ާ}.`lG&ڱDP ?Fa+rj; y/W ^khvM+ؑJyI`7޾#? ԌP)- A'bV`vv*ZdMO˦H5jGR;,Oюkzc)#yB<'O2b?eZ~_hBGB_#!W(FƿpԼnh pze/PJV{h VKl;P+|>wr*=OEY>at +|;> ǒ> @7h0df Ҿ?JgыI_]߷ z}h=P\Omę.|پ91s">@ ^L a)R?xO/\0`ihtk` `KV7K<I@5/x%  #hx$Jh.piFBwW7k׾ʦ3xLF &g8A/H1ӯ 8@WR8V_?/LO%3F6||y}-(?=T$| )!O,3sv=Vk77YZt/R o-uZ|Oy4# > [SF{1Gܙt~~=A+>#ƀTܙ{MR<*V>+<bD=~,PX!j]SfD̕tF:u]z=8)fBqs:pBϱ"hH$u Gp6?"Y*F \ñP*G3?=t<8> q, _ ìOShnEBO 8 `//g~?xob _@^xz);ϝ.#; ~A Ώ.;ŬO(V>X΃'[#h"­^t$N_A ?>' +E9j ^M_{No+tʞqބ?ES|Z_h=|DiРWވH}G]o Fe{b^)&f:h,T1Y֞D Z|Ǝ_%~A>(x-Bp=_t|!l&(JU }*U7Nz#CIM|@=c #O@: "څ_:f,L/<guPa $qaYҦ/%%WYLD<>9M_x_ K@`Sy_{rl+"`] )1y޷_x|/ Yǂ?2R99>ДA|m-|`✊5_-B܀Y(toο/XtҘ:7Mkj'"j|8A@in؉V_ y$6sxa,4_нMyJl  (?0#l|/H x9)>/Oх I_^m'<&=ʯZ/_(#'r=70 6_XAP7`+z1B[Z` A>nL^P:/2=Ae%{Q,33'Gjw u߀QY#(-iyzFF{!B[m1" OovamQ&ŏ4Ӆ 0Nm<Al9SpIɿR*G_hm*kc ϣ.o7 tCZSs|*-xh:}IeO?ԉw pLnLN \=g{h?`tg%N;NuF_.ᅰ|.%_uAK4m`?9uN k`{oR?@GFԛҪCxIk]օ#bn/0,\X~x/` [+ !qGAePaw9sczy(}?u|IS:=_._ qЖ*rg1="yD!?Z䘲REdAٛE+"__xh#O/`~ /Do}O +o'ck̿pq ^ 1|;g^3oˆ 'Ъ,_0o q!&_:'οЊ?w2),ӧ֭(WxFVkHocg(L.6ȿϡl ~kqާ~>CaOB^o)N<4l= Xir~>C9y: cA8ўwl @A5;)mG YodO!Y`kZH-R<`D"O; ˺z% ҺP 0IψkbgOcy~6^/mXh+נ&Xօuhަ`XS] m~1|ڀ2 kꠋg$-he,YǂGׅu!mڗ;ωp]PD˺׆?hv]K*;;/Hؒ+ٖF!h#Qsxɫf;;"xEJ$7 Lv~F3xHO{}~B/0 PyoxGDLv=cdt:4Bskf:O ?8A8bIw2v~,CA<2E9G<_>$NBO;nGڼ~]zm#`!upck ?(/y XAp;*~Pȯ@Vl%P\շ|`S*A=V9 cDOݴļH|A^Tnw{kChs>{{ _ ER' M.-:ۧij} v8.NhpzGRL~&uJϥ  >aU6APm5 +\c Op}7?/.+ Hv\v"A?f_S57TzLWYl@}< ہ=A|ݝ?S$0( -gA)j/cR"*kх]Gќ_95.? \W3aaz#o0¼ h 2.Z?#:1wˍE Њ1EotBѥU//!zvB+?ӕ Oy8jd%h]Iӻ/_ĽzL+ ;yZ'OjdAFҘt\޺7oI>}0A&:9_W@Y A> 8R?1cW~E4-Q _Xc7Hp=O@}w)1ߩLp1M\\|𜝅!p3(L!i#sbZ?/ӓ,4d?QJȞ ւVc/%Di~7z@Ls wCZKΨ7*;BΗ~݈?-جxt56e#YLQaC67LFwЅ: ͵ F/m[,! i 6)+p_XzCPj|6tj oUmO)&UNnSQe]X?r?A E?Qs7@ۄ@ "}kO f0ͯ C! LTNUtgP,|D'^[uϹ8zƍ#A:ZÅƓɏtt&:;d'8Gϟ@K2#YsG v$uQ'xX)\?ƭVE`m"hC#/@=dz_ȫI%hY>y y7?Y#: ^$?ȏ0ӥij7 KhHb|2^Zѓ[$?0@>^~篺{%cuyo-2.1.0/data/pics/mdPlastik10.xpm.gz0000644000175000017500000000224112412223266014516 00000000000000WM XY`g4CKC@~7]ciϙ;>sg=-/:[\YvYU;oV,ngf#KX`٥YlՄsVT(k@a\DT0_`pRKDK&`^k>bB/#FeA`W11%;8MĂNii={6OB*TS=ELk &-8:!*h̆2, 0B*BQ <(4FQ@LJ!€IڑQWŶ`K$Z`wCP7,uCؙ4+-TRhv^hv2+AʰRr!*UR#@Y7qm\5? ucIck3GOief;N],#JgY,Q8a D`df MĤSWļh1ȞQ"׌2Q]sPP2kwF{mR{e7VkD bL%)s 2D}VQN0Q7j92[ f y}huow sթW`{q?C8C88p}c#,$1MXadz_HL>ax4,5.2{vίS8Tr?|]ɡ:*gs!#FgNB79¡:bDDߋ~ûCկ>4Nٟ^և Oq/s |{q{{!29xw{Q[b137:asTȘ>A+dy1;j9~|!p!pə!uчc%zp.'+0nfL0C9|Z Tͽfp~vp:;&0;:"uNJ{q@1p:Ö(< OZo=;8MNJNGHՋ%*Nd8mkzyHG˞ #0 /bY#n·\%}&9tg,ԜMݻjuo YgíXhtnfksNubFP8)b's)M9`{eپ7ێlcжټZp^ձ9o75 "RJAb+7'LN.MfΌ=ٝ\6lO8{5'wˏ?9݃lg#vR& >5L@@[H_ H;HR*HؼHO!ݛ07LDٵdL(} -j 汶^ͻq_Lf@jƕ/dvRм$bW7ؾ ĕi_od\9l8Ook+ƙL(dJUsu),AU6(r6X–g=5RP7Nn`z*-yH$l6|r2w^&+dͣ@V_f:|k5RH<šPHMߨOdN.X2<-5Sb%)(gh>#EϩhMPa`a ɬ[-dȫUd)cnu_4q{.GoټSA/ ƒcuxJZ OI뱣v&k}:`wJ}nehQVӨp8{7LQ'AN}d8+q,a4q9{1p۶ì1cҍY׹^m}z7h)1u <ƶv\iVdki˰2$),kl7E١\u|iaPp(_`mК.s k(][eY[u?$咬Y3_Y5.];X mYS$SsXcCǖγaa !TsY?JɮOtRͰB*ePI|Nb1m?+U$ǐKE(Pҳ@:=Po^eÃO_>̀Sa^ѰR φY*IX;s-QJʸ:6Ӡ Q$![edAs&!}]Cv8sA9!!CRvA8烪2h3P;b Dww@7Pw0j|GVC;7w@h>dBFw@:[];W8/@pm tcuyo-2.1.0/data/pics/mbmPunkte.xpm.gz0000644000175000017500000000415711646353247014412 00000000000000yW6mj%aH@IU=GK?&@vQ u>jhs5۫.EZ -<==zx8k^BЛp|C?0*Pa@)060j00* 5p aM Ga#B |%-!`aeyr)ʝ&T`0.l$J Q0`0@]W0Pq0'siq0+RQh6&D*7`̮JZ,mL-8RiT%38`.FؘȪ8%`BDfeJg U_ipPq+ac07, Hmj0Rj" X'a_ `VOc0)e!Y8D0%#^a+nf{cV(M U頜rn9h A$6f%$;:l̅;Ө$(T+ u`. *0{B <&`C |JpPl.ّr8 * ::mAK4 (Ib8~V#|zݾz} nԙj uS=Jߥ!9=y(FDrk ME55$\FRg?'i*1j͛ZVFl>#kݫKni_~WMU|ںJ0|6s~e?ZE6^ =!ݛ: ݛϽG?tXx>HLq7Q7:lw/g҈ ncW!x^Y}>,/s2gi 5kܘsiz`  hL3Q2W^4fxlkVcf MCA5pd>pf3fpqWw0<~޿_6$]x[wb{9h_]֭}bMI>4F/6Äh޴}BRwYa|?Cy +W &i܆ȳöAyԖ~fXgWa3k)뵧Oz4gxa5fxϮA+3j4Epտ '%0cuyo-2.1.0/data/pics/sbBroetchenSB.xpm.gz0000644000175000017500000000635107550521124015117 00000000000000p=sbBroetchenSB.xpmݏbeI};>;~kQ/s҇&EBog3!IN'f CC?9|~wq>59={⦁?'<7nn/!B}Hon!;A dQ+nwB7Wo H=Pͫ|?Qz`Di+m'_o6Px@:D \4 ;yK(|K^>{\g`B~89%"CgTQܲ:e)ښ51=8F( څ֡5.$:l[ d)mw9Kfbk/tzo[Vre)k0@>f=VY "2Uj AAz0 IȂdusIi+O!)dXo8%E9ׅAeJy!^b7ʙaIPl8BfX7o%͞yQ g7^xaȺK{yOcX`g9t} dlXիĀ2<+?2դ]xnS򖡛xԓ5stuMQlGȠJ)*2#f5! QW] ]4@pw7Du;4p>Bנ/GD"2g+928_bGdWnT_R_P~|D4CA *"g?I~pRBH >6Q}%6Kά/O( T5gWFlˬ/T#qK 0Sǽ Y%FE˜6J^iz¿7-,Gi}P^O;(fE!S7 f 1T5u(.☼0d|&#`Jdρ9(?~xTJ\j#Ki**CkGi %?1 @A&>^fPr"k(~ ͋$(Qہɐw(,\zl\.jr0=CE. =oXb!CP?{eL!cz媜QAkr)$VO€ m2qN%3h䒞$2#gNR'FeGϐ ʔI/P=oV7yZH!-3dy=>O//;>YyCcuyo-2.1.0/data/pics/mnv4.xpm.gz0000644000175000017500000000027511611542650013317 000000000000001 0=lAh"GAB(` m,U'Ȑ#]gwEh6ָ+0 s=Sص{3MJ,X.͐Xt*9dm2lbhРAcjEY3ؕi| 4hРfzسlcuyo-2.1.0/data/pics/spClyde.xpm.gz0000644000175000017500000000176611662241762014052 00000000000000=spClyde.xpmKo1WXq5&}J+7G$P*ģ=uMxH<Y#Ό_7_ztpiVo]~/o߱l~ps6?ٳ{˃lTԓѥVR/'ZJ].δ:RZ:?WjU%JO*u6;iuOdKaF#d'vy6vyCpCpy&ᖀ+qy&CضB\;l:VI?Ha Zvgyv<\UU۶8˳ Y6a~e3ܓ0÷CFaiI`HiID$X3dC!L+|f4RT ۺķMFz3)(#}IȞP=%=%=%UĞCڛvj)sUY3tC@~xr rko>.)sUuHx|bZzg^?zS{J>öX1{J!ek]RCtMB5IU[4!n.C끼T瞪ЃYJJ`8ꬄ縊P>##| dga ? 977cuV(XpD,(WN_`|ed5p؆AmJa /eK8ɀ΁s2s x UP1H7 #eXMǑoN؟،ެ"%ۃSwp ["n? q~6%B h @Lhҿ'0/FR2cuyo-2.1.0/data/pics/maeSchema.xpm.gz0000644000175000017500000000247112401656666014331 00000000000000kSjPQ[@VCK(JAm@ !9g|]3{#!$︵.4KEa}kھ9sjurpi_t>~v$_zB_l.GXLpL :)# kRE@d! |KM4pL# 2cREi H'-Li"FKPp@&)!G$xEL#wW ޒd&"-\y+)!gWK|ExGZxDD#5|`pr44e&CJzT:([ z^rXztfHxqZMna˅\JWCfVRHigȢt[_^ Ώ4da}2clzݦgdF{ +җ\ˤIu+5[!uIoLfzsiM K5sRx=_|-nA*wX<V'32G65%ۻAR5;:-웻ޯ}bqFust5 ab F:{?e9;x_NN?n'gXe|^5w˕zU /TZzNN7 MUU-;!rF)Kxlld"O-+J]_Qnte0Cꊴ3Gt]K6M[e[Y >?gZ&Ep:qܛq=MuꜸS7# hT8NgG,?=&̕n۩e UUfQuϳr/fey9'LWU2}fNk$~[auLУ#au'*gս3Ǟkwi6`?kݷZho3!!}zv=ە| W ՟z,xƲawo4{#H])d߈Eu"Nz,allF'+~n]o/acuyo-2.1.0/data/pics/titel.xpm.gz0000644000175000017500000004151510535603171013556 00000000000000[JEtitel.xpm|iS9;BLfPD EU6`7*#UyʈyѣHd_Z`\\\ÝsfG_nN7XNc?c_O `k0v)aw\hA:MnzYP5q8(#np_؉7 +ipg ±y7J8 <\&eI'IVO"ʨ/hp%+h<2 z~ ^Q[])ϵ~NTz\D0)3 ?yd-wZƛo0Lh> 'qIO$0(/5Bf2Y5|l/}yvϣRςDAWdϯ %璶z8>ҟ7<[F6}Qz,= k|Va{x8>@ߥ{kڮoϗyԞ 'YBc}Lŀ?z+gp~M򷀓ҭ6ws9$ͼŷ7 =%nIߨDž襤Fp߉ 8{# -Ma1I8vbG ߸_nc#+:*vkI }v㢽Pۓ,_WvI^TGMGIHt{%ڳ>oۚ]eA>=?i>*|;m/ʈڅ -?^GBߠ<q,>BW`//_Q{?'a{IϥP-A>p15pTﻞ?u>[7Ȣ ~(|xuNg|exE1MG* ,!Kr K_ =y][Ct`4oW?UPtg}joؕ'lv&8? N!? ,k* Ir=ߏjJEW4?SCG74ө"&5_ID=;Oz?l4_%|+HL~:O~s >jw|SBr@tHI?wI}$aǚO-*`a={ !_*>9p'yz%agcQ?IURN70]k πk'~>jaYa<_G~7 (sЇH+_b?7?_&!olW@l%׶s|9NSoc @5,kͱz[VZ߮B?dC>zxF 1c1?^ߔ0> ƋPO3 zoΛ7'e>hP[=co^5 җ)s>1h*%,g=@GmШ'”_'socϦx;7It xE8*uk ֧_.Kyz~#͏zbNϫzE74ڗ#mS >{ʿui 5U/}K{"&|:B{_6S}7aGx&!S$Ɣ<~!7O[릚_UOz4~9'h_O2?1yc>´@퇦?WC?Ǵ| mHvG%L"OaIp:~|y<]M2ߠ峩%d'/^zz?++u}+u=\ϷؿŨ^Aszm߾R'7C>࿁]]3U<_i!ѿϦKǗگ?A#אɧԻC?%77Ϡ/ ڞ Ӣu %-/7x cb*A}k|5><+~z*z[ C5S AP5G_vsorKLOAI8)z²|< o[=ž/>5/O o, ӷ?V yD|B>'[X*OO#ؿ<\ 1wo gp섊1yj=5??|C#֭|~b OA|D|i>\SK =K!ya{8lF?iz>/S"^ِ7q;]Ϳ`9>z=t~ CgǨ~~y1w7 R+3:#~'||UAP|K@/-s/k_~]ُ^y=mZ2; oR|#?W Afpb|WMK64/-9g-sO0s~_7 ,YxH򾆼#/[koH?YʿE[]EI^ #>hPkoJaϥLiE7/SiKӖ/įCeⷅCm@_.P?ib=94{A2Ra~FZޱb"w}P`0SɖW!/c<5𯨟`_O&B8šonh 7Ks@k)#7?z B{~Xk/!R#Iv'^Ow~w`Կ[*/-/sO.0|E>ΟQ9ߙo4C$!ǩӖW= ira_4ߟC<~5-oϯ\;5ޏ?kPnHOu񖺞L٧Gz >zW*T;C__xC's-y=_j}[‹@Gx;ӗ0>/TךOߠf{KFo꿨"T*7oCmB绬M| ׺ SK?0{2|a/o"L|0w$zh/ps: ޗ>"'yPO;VFſ9Cy+I{T$VYo7rwnC>ﱅzx %]*n[o+}!O{_Y/7/uC^hS/YE94?#n+U={?4_;vsW%}Afp~h>?;N~VڇE_)po|m+Q#~LևtV. LOQ?]ѕ?k<|~RHws7H7=Z_ oIO\S'?~x >=}~zfYr쯿u~8u4<ϼO b[WuP࿵=װO7Z~Y?~y2 +*Ƿk߷WG||З5m>΃o7?_3S傏A٧у~}~iC3#&{DH?j|oah_ȿuv5߬x,8K/C=5%LM_vG&;ʟF`G ZevG٧#,q8t;[oC_&:{;CLC~_k#ǓO=7AQ껛xM{,(QpSO;?)>lQ?ί=t~O7y? Q|T4OsOgп3C[!~P~z+|~C w}m?~>ۧ9?MjD }=|W3dߴZ|]hqUqj ko$_navow=1_9Ez*3%p8}t|5Ϣ~0  F9FApZ.`|tyW| DN B5NzwJ! xRhRþ|=Շ*^ Y#5AoA^M8 f yl"Lk  jyϵvw}e1?LǁCAtU1GxQ}x}/D9U頿oq J)‰/L4p'8yC}q-/#v=>ς]eQW2دUCU?A"?؃~ź|}#-?@{M} tpsUGz箲osI/J ݟZ_vfЗ9_oZ]9x9~E_j{`W{[Կ_(]# F~X|UE|ͻ_j4[h*x$_ y"]3;g~e|_vcχA}>rK/`K="a翡O?KCFy=毀#Y|7/;m6+z{U-38_Ih? 6pfyi G߄}Oǟ0}Og{&agI_g>7tqDoγt+9qF S WBWxCоkU| 7ʞS$:هzz daoېS_M*=W$R{ơ7;h|>u}3 \}?%W]|G?w_Kp߅'==j?#|E!_4ԋq6HC_="8nS}W'=>?UT|+Q<Ofלx9ߐe Kw<ڿfdxZ?9oAxQJz f oߟ~6g%w%p9Lxk-P?Q};.@z۾'˲~>z ̯+לB7|PKCOgm O} '' k7xAħ9){ԟ51h78o_O_Nx/}W~~?_'Fо'Wy\߆Dcph!_&-1z/O2xo1࿁m=鯋m?v /jO+"WϑƸ!+l+~ {ho5?i#?Bmg˟_SRf0Yjwqؕ\el=gdlm_~`oZrs<泀Ϯ,a6al}::`mO}a'T+;{v}c]+5n-sYJVͰYdsl^*+^7-[f [eه9>`{m+,0DKKnG~CyK;b_K.sŧx)4_;}ƻ}G< 1_壬{JOR>dU\OdSW7~//C.xůy_j$\|煌)R\/ [~G\g</yk>g忽/ Z//k~˗;W{op.x$3ݞ2)OyzD\_45KnfjN{i'3(=q_ #SzNAt2K#j_bVFY>C &17R? YH3Qb|I*KNz) 1OOa^Fz:ȗ$ҿkzoRyzzrx.S+u]3qݤ]_Bw7Gi.Jt&bV"V|L;bZ WR{)bi\.شSV} 2|Ht跙Z0č0@ߛ2pa1~Z2e-mc=ch׾ekHr=-&m1j܈ #Ɠ1; KߐMcm1i}:fl{ʘM֟a/9ƺh`87&vɔ }O3pebo2_72C6K#ql_B2juj|5Όo2N忌 T_3ƍqkUƩ1JkQ1.R|pڨƌQ4nڙ5^MuKc73cO8d1%F[[tNVJX! wUcM',>kƶ(Z4\FM Ӵ-i=Y9kdo`m}ioÜ0/`:07ᛁ9+ƌDqS7x"}γ:=OC'1w,v 3/kY|Io󓜡QVL\;֊yw>_a_M{yko&*V?գ\fd,wWqF4ykwo\/RjsV)_3-5ӥ}a4hw1ͅ)ys+sB$b|m1ߚ;s9{Szms paY_u:ŭu'T4jXaZfۦ%m~-XQі1nz!%#{VǺ4sv>]o{ZWZ9nXO?|l{kڴ"7Kzfkڲ\M`NYֲX-֮X:kyRZrOvYh`*E;ݳ>Zo}@ΟǚL9>Yyz0ޥ'#wYVXH?uw:ZiάoH|6Ĺua]Z?N`glWaeL_[-hO[zdgiS̤Vȭ z{O*.6+5^X>Y]:kK99kdF`-Z%dt"^YK $뭵I[dLz,Z q냵fm[{M!ZM;Fk3}>f |[V+|Z V(-Uj/#}Pb!'Gf5Ѻg$h;toAS뾵llbF [VΗKLd]X+xȷZktizuFmf]={OCi5ݖfJn鷢洩'3hUsQHOպ4nqqWl0yZ3vz3vk5*v|βSBf՝yS*^EeAIPc"p徠 k: #)@3owXw&ڳ 懬!2 +sďBe+ h6EJ0}MS?"~NZQSDetQ3`f?P̈uyE z.Jjy*f7`bbdlOa-<<;6( awg9UE\c%uIQ%lX||c?CEMuzx"зo{3ƻh3n[b34f6Ц?€7ɲYNVa:d#x=G_?M<ϖXUy* 6nA8vkoY#B8njE^G}g8|, eݝ7[:Fv^c'h݀goc[xވ_CADx < 'iTz愍λ?P}YI%9d|z#^#a~fm|y+DW 8<&!^~)~<#աV7LjbN(m:%|Fc rؒuв8ѹJ/6+\+~Ex#zӺ^ cou8;k?EY@+FqTԹg6ÃA|ϫ){> UYyi9)XyTFfxDA}Y^SIA*˦3׎u~Qȏ$%_x y[e4o/g2U>]'Tk?n@;+yA *MZZ1roӬR5M0Gđe QXZ3 j(΃Zy!RIJQx>$3}z)7ƌ%z@_^|Yí[f>uof@r+{Vم35%6 ]md >`r"!,~ZԶ3 gl ʭXiܠĩ%n=[Š5 C .fԈ0qx5YjCfX "]uݲ^`I+mX/ 4lY=Q<Ô9֭ fF :bF͐An]Gb8O}l[Csd/<N@} KUZ6Odzfl@ZslbB3k|'.*%Udq|g¾BPCcT11>'#"f][KL oJC{^7X3*C+ϒ66=jW[j6+P8|S@lU3 I]M*^Ƴ6].~W2p- S*NXXhmٙkr6 qgՆEѓ&n2YenTE|XU$)]E s2Kl\RQ #rT@#ԮB tnTϭ=qaYr8/v,"dxOMyZA2 ã>#Mo<f Gyɏd`r \X>3feo$1(^۹NV^pdfHD~0QT{+!šu{&E`¹br8x%{*M{@y+t!%ƗrGf{4x+xPTwq󘙤aZ#W*<"lFsܟُ{p ~?؏<kL~F<ʴJL-;*[TH VxJAvYg/ޤ=oOȊȊ@9N/'唬kP@I O7MMX:[U=[`9HP9msk6?-D o Ȭ|rN\#yGNEU$|}AU`C+`A|a6*'I3S/ 2̻ݎy6nZh{i? ϻJ_u=^~E@k2AAp(."MOw;K8-;V)PWj^)Ky+CH+]̪YVR)H8t!;qV%ԠX_^@Y{Ae\-:C(dqU@͉DѡW+2HBڟ ٨eL's{,'D2 H:(C&Y3A0ǯ[j҄uRF4nW,{;s.K 5>}:PVԡF'( w<ЖjY֯ל)4wNaUl06t䓞A#[{P߂l7d^?{׮7Ս*`e{ e<'q=NvWqֲ若[%[>{$ iQ%Cd7;5p $vׯ@&jTCh!ޠG{tU.чtKޣuZWA;:pΡ;փ'D$&<1ۚu?noQKr ۹yQƖpZhk؛Z(DC|qGħ `L?}[>,@Cȝ7SŁ/rwpho&,A(c\O#9RSSEì+]}&嵾ѷ&wz]($AuM?%>EG~XxAo)F"G(rG'ÁSHV3oQѴ‘p~&ǟqvRQk<{j = ĝq7Q MgSДEAna*-v S{]"Gxtv'YY^5uN(r^XgтΠA;>*4zw: 5{N6(%) ڵ͢y4 9x~<]+7ۖrv=Vx@͂G`.XPR sXw*ٕ5 z.ozHC];m+(ʧɳo5/ ೋ3y`-k:Q'Zc|f^xo"OЖG9&ŀSH4W7Q،Rmq4eU؏Bnzy1.p[wa}ivܭ=JΧ@_2ك'+o& @$AbGERd<CD<۞.{iTD8K^[T)d62w$«vA_@ƮA|k3;jd+Vo7[*dI~4 )Z;xr_։)?揫$MjXsK&Ϡи/b m;b=w.9ـ"͖QhKО_MWv{PgID8h\agGXM?iNԠuqr ȕmBhDϫ4![=rȱc8'^}CivORG7Bvweq4LH9$ S4P3kD3c/޿*Gˢ`՞r,BUmug6 PA苶*2➦g0s/Wn-qfUγ@uvMԯx̏uLGĔH˟}}‘6ng GAg.Ĺ5UEh[4o#}2c Qq Zc'(e]U.c\n=!{oy_ȴaҏxWk?*S$k =ʜ9./ O+9h1MIxF:x^9?ۇǬk#>a==X݈:'ZYcoNk^Cn 1m ?ު<2}#~!fAԒ4i;];%TްUlDH73!0v ]cAFZͭP%x= &`KV]iq6ghm7pp_ׯ?>oeX7FEaMҢ ߎ0?j |]nEөN~L{_KB=JlYA,tWuƶϸ<x6i!ai1h{0'Zw;#$0f+ 3UQtG7eTxl?|HO\z.7z[O_l4y~VI2NoR# df @Fr<8 *8-,LU>@r0PyVE 0*B(yYxPT8eYpPPb yo 0!L ̃8@  Ȝ'$2 A?gf8TY,8@o Iaa&9# !rqyF":VN?"̈Cm><82K=XC^JpxaV9Uj * 8_"8oۿ9To]B*51v!;~0qPfx= I)v]IPʱ<#B-': ;J" a^XPpi8+h/&\:ם&|/3&~F8-HuE"D8r]1"QGzU"O2̺>!1}ݵG399mҸr[SV|p)^>84XVsPwGG]:2++w׹!#7f0ئIsqf#spƼe5'] ":?e\g qs:8#vDPk e8hK}؆cazs.F %kv| \Qey\Q\ԍ:R9C óξ>('F[B6[k?m?8õgPka+@y*ԵkTn!ͨncմf_6[ l;=ré?iF"W8K 3h_O⍕VMS`k!Th8N_~3OV+?h8I,[Q.ɖԱUBעC;+{d[YY!߮r]@7ʕrkowkBsRp-}tXַN,3BV4O1@ՖA2>杷M-c쒑FhM cno3b}8ԕo9=M;s?|r:R"2 d.1}Bvl (@.) CYBYBY+ka`sk%/U}O[=wFer h8hjQ&9nS Qk-OQe`rё>0 ivChroӳyso54Avh'_kK9 t/Ч9*"y>˫~ Ȍn?lzbV/,];&dF:KU/Ǿr!k'Hmwu,V}Ox^߲7ukˏkr^Sp= #䬖 s4aRqmaTmqtQ;Z;oXlvM[tԍ\AwrpegRƺ;[pu`(p7HqOQ~)7CMJ=dể=f  r3 ~pQ\i CYBYBY+ka`cda?9絠#;TܧiI=ҝ&s1fª2SCcl\ 7w?mx|€^tY'it#ӞA?H<9l(cVs<`؉V+>s?hΩCLoRSAGGpcq-)ce.hy_FfpR.1)T3V|^?{(F5+E$he2#z5] WN_1Ln_kg6Nk~1X+y`n۝l ߜFz Nwd|eR9_d2s%TID}6@tY9L?:~>Gf𳢬|VjbK"A?҄|Sk Z. l A?F}=X5|N卦?:N˕JTxIkOէczFnl'ǚDyKE/\BČDy~T>Ҫ 5bgE$!iG%#̯?@.Nqlep@r#:I0usvX3߿uK:x,ZQχ`?<֨)1!L)(7Bx푹RZaq;/c2dm-2! ?QzN1֓M~cfƥzќڰGT4c8M;cNd3sP&o(Nn$nHG6s09~Ě9rXu4o܉U4XulXup`څu1kpT_$~bÑꎴc(w8Yu:kP;[i;<K\Gyh6"s"¢jk8aPfmՖMՖ4wbA^!-#хQ.B>b n'`pHn' U -cuyo-2.1.0/data/pics/bxBall56.xpm.gz0000644000175000017500000000337110361553650014015 00000000000000b=bxBall56.xpmiSH) S#&{` l-9$ٷ!8;U[[c eWaDMOwR=FP f1f2$Ij0SQ HXq3ЍVk (B&YH?b3"-T3XH23nu~Qz?ON բ+ogܢgteefJK}/y &Qo<8'׿BX{pHJaIao-9J)CP]/FR6hƒoh%\Vll~xlo7wg~&>\b)l_w7淮u?2ë:=7 Z֍4Ë:4 i.;dZ8*kQҳq.=C6#6Ω7hn,s8vwSG 9tYG 9Mqސl0+G8Jo4(GABl9Ec(=vpQzSlЃb 6έDbΩw>d̑92GxX]ȵ ș<&#d̑9q},ў1%C!Qf9tx_Pmл98TvE|pWǡgu8WGMQKhpZgM9E)YӀWͼXod:ܬ芾x:)MhE1t4}.Iph&0YC:CP:q4-KaMMN,:7Xtt?kN1v42#Q]$p>:c8lq<e ۉ,;tsqGjeG3݊e {~c幘.|m-ap=w;Gaݪ?S:CkKW!Gim֖Z[0r`AN!e#{pl7VĢ>[G`ߗcuyo-2.1.0/data/summary.in0000644000175000017500000001537712410615551012365 00000000000000# # Copyright 2006 by Immanuel Halupczok # Modified 2006,2008,2011 by Immanuel Halupczok # Modified 2006,2008,2010,2011 by Mark Weyer # Modified 2012,2014 by the cuyo developers # Maintenance modifications 2006,2008,2010-2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # This file is read by genSummary.pl to generate summary.ld # Commands: # - file xxx.ld # reads information out of level file xxx.ld # - verbatim # xxx # end # # puts a verbatim copy of xxx into summary.ld # # even including blank lines and comments # Immi file nasenkugeln.ld file pfeile.ld file hexkugeln.ld file viecher.ld file unterwasser.ld file kunst.ld file baelle.ld file hormone.ld file hecken.ld file ebene.ld file schach.ld file wachsen.ld file ascii.ld file tiere.ld file 3d.ld file doors.ld file walls.ld file wuerfel.ld file theater.ld # Berni file antarctic.ld file bonus.ld file letters.ld file tetris.ld file memory.ld file colorshape.ld file disco.ld file aliens.ld # Berni und Jela file xtradick.ld # Mark file kolben.ld file unmoeglich.ld file maze.ld file tennis.ld file slime.ld file silbergold.ld file gold.ld file zahn.ld file bunt.ld file labskaus.ld file baender.ld file ziehlen.ld file maennchen.ld file rechnen.ld file go2.ld file kacheln6.ld file kacheln4.ld file kacheln5.ld file kachelnR.ld file puzzle.ld file dungeon.ld file secret.ld file rollenspiel.ld file jump.ld file octopi.ld file aehnlich.ld file augen.ld file trees.ld file schemen.ld file bonimali.ld file fische.ld file novips.ld file angst.ld file flechtwerk.ld file farming.ld # Jela file himmel.ld file jahreszeiten.ld file embroidery.ld # brl file elemente.ld file wohnungen.ld file darken.ld file rohre.ld file pressure.ld file explosive.ld file reversi_brl.ld file paratroopers.ld # brl und Immi file springer.ld # Simon file baggis.ld file pacman.ld # Konrad file mfs.ld # Austin file fractals.ld verbatim level[all]= # easy Nasenkugeln, # First level at all Farming, # Introduces that levels are rather different Embroidery, Maennchen, # First level with weight<>1 Octopi, # Introduces neighbours_eight Springer, # Introduces neighbours_knight and (somehow) single player greys Kacheln_Sechseck, # First level with hex mode and neighbours_hex6 # medium Tiere, # Introduces chaingrass=1 Baender, # Introduces neighbours_diagonal HexKugeln, # First level with randomgreys Schemen, Bonus,Pfeile,Fische,Theater,Rechnen, Jahreszeiten,Disco,Wohnungen,Baggis,Tetris, Kacheln_Viereck, Rollenspiel, # First level with different numexplodes Himmel, # Introduces mirror=1 Kolben,Baelle,Aliens, Labyrinth,Unmoeglich,Elemente,Slime,Hormone,Flechtwerk, # hard Explosive,Puzzle,Letters,SilberGold,Gold,DreiD,Zahn,Kunst,Augen,Doors,Bunt, Antarctic,Rohre,BoniMali2,Darken,Kacheln_Fuenfeck,Ebene,Dungeon, ColorShape,Jump,Viecher,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, # very hard Angst,Labskaus2,Walls,Kacheln_azyklisch,Trees2,Wuerfel,NoVIPs,Wachsen,GoII level[main]= Nasenkugeln,Farming,Embroidery,Maennchen,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus,Pfeile,Fische,Theater, Jahreszeiten,Disco,Wohnungen,Baggis, Kacheln_Viereck,Rollenspiel,Himmel,Baelle, Labyrinth,Elemente,Hormone, Explosive,Puzzle,Letters,SilberGold,Zahn,Doors,Bunt, BoniMali2,Darken,Kacheln_Fuenfeck,Ebene,Dungeon, ColorShape,Viecher,Memory,Schach,Aehnlich, Tennis, Angst,Labskaus2,Walls,Wuerfel,Wachsen level[main,easy]= Nasenkugeln,Farming,Embroidery,Maennchen,Kacheln_Sechseck, Bonus,Pfeile,Fische,Theater, Kacheln_Viereck,Kolben, Labyrinth,Unmoeglich, Puzzle,SilberGold,DreiD,Bunt, BoniMali2,Kacheln_Fuenfeck,Dungeon, Aehnlich, Tennis, Angst,Kacheln_azyklisch,Trees2,Wuerfel level[main,hard]= Maennchen,Springer, Fische,Theater,Rechnen, Aliens, Slime, Explosive,Puzzle,Gold, BoniMali2,Darken,Dungeon, Memory,Fractals,Aehnlich, Tennis, Angst,Labskaus2,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[game]= Springer, Tetris, Rollenspiel,Aliens, Puzzle,Letters, BoniMali2,Dungeon, Jump,Memory,Schach,ReversiBRL, Tennis, GoII level[extreme]= Bonus, # 1+2 Sorten, numexplode=1, toptime=4 Theater, # 84 Stueck Gras Slime, # 1+1 Sorten Explosive, # 1+2 Sorten Puzzle, # 1+0 Sorten Gold, # 1+0 Sorten Zahn, # 1+0/1 Sorten (1+0 oder 1+1, wie man's nimmt) Bunt, # 136 Sorten, numexplode=2 Rohre, # 2+2 Sorten, numexplode=20/18 BoniMali2, # 14 Sorten Memory, # 13 Sorten, numexplode=2 Aehnlich, # 2^omega Sorten Trees2, # numexplode=0 GoII # numexplode=0 level[nofx]= Nasenkugeln,Farming,Embroidery,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus, Jahreszeiten,Wohnungen, Kacheln_Viereck,Himmel, Labyrinth,Unmoeglich,Elemente,Hormone, Ebene level[nofx,easy]= Nasenkugeln,Farming,Embroidery,Octopi,Springer,Kacheln_Sechseck, Tiere,Baender,HexKugeln,Bonus, Jahreszeiten,Wohnungen, Kacheln_Viereck,Himmel, Labyrinth,Unmoeglich,Elemente,Hormone, Ebene,Angst level[weird]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Angst,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[weird,hard]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Angst,Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII,Secret level[weird,easy]= Schemen,Bonus,Fische,Rechnen, Disco,Baggis,Tetris, Rollenspiel,Kolben,Baelle,Aliens, Slime,Flechtwerk, Explosive,Gold,Zahn,Doors,Bunt, Rohre,BoniMali2,Darken,Dungeon, ColorShape,Jump,Memory,Fractals,Schach,Aehnlich,ReversiBRL, Go,Tennis, Walls,Kacheln_azyklisch,Trees2,NoVIPs,Wachsen,GoII level[contrib]=ASCII,Xtradick,Pressure,mfs,ParatroopersInvers,Ziehlen,Pacman ordered[contrib]=0 globals=globals.ld end # verbatim cuyo-2.1.0/data/doors.ld0000644000175000017500000004350212422400336011772 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ilBlase.xpm[.gz], ilDing.xpm[.gz], ilElefant2.xpm[.gz], ilElefant.xpm[.gz], # ilKlavier.xpm[.gz], ilRolefant2.xpm[.gz], ilRolefant.xpm[.gz], # ilTuer.xpm[.gz], ilVogelL.xpm[.gz], ilVogelR.xpm[.gz] # Doors = { name="Doors" author="Immi" description="It was late and I was tired" numexplode=6 # elefant, rolefant und bilefant mssen in dieser Reihenfolge # beisammen bleiben, damit der Vogel sie fressen kann # Auerdem muss die Reihenfolge der Dinge der Reihenfolge # der pics bei der Tr entsprechen. pics=blase,ding,elefant,rolefant,bilefant startpic=tuer startdist="AB......AB", "AB......AB", "AB......AB", "AB-....-AB" startdist[1]="AB..AB..AB", "AB..AB..AB", "AB..AB..AB", "AB-.AB.-AB" greypic=vogel emptypic=leer bgcolor=45,45,80 topcolor=45,45,80 chaingrass=0 randomgreys[1]=100 toptime=40 toppic=ilKlavier.xpm topoverlap=10 << var tuer_li, tuer_mi, tuer_re, flutschri; # fressen: # - bei Elefanten: wenn der Elefant gefressen wird # - bei Vgeln: Was er am Fressen ist # - bei Blasen: Wenn sie einen Vogel gefressen hat # - bei leer, wenn blubber = 1: Wenn ein Vogel in der Blase ist var fressen; var zw; # Fr ding. Wird aber auch von vogel gebraucht # Und von tuer var ding_hier = -1, ding_ob = -1, ding_li = -1; # Fr Vogel. Wird aber auch von Ding abgefragt. var beschaeftigt; # 0: Links, 1: Rechts var vogel_seite; var li, re; var blubber; var aufblas_blase; var platz; var stueck; # Initialisiert alle Variablen, die fr ein neu erzeugtes # Objekt initialisiert sein sollten. init_alles_l = { # Fr diverses fressen@(-1,0) = 0; # Fr Blase platz@(-1,0) = 0; stueck@(-1,0) = 0; aufblas_blase@(-1,0) = 0; blubber@(-1,0) = 0; # Fr Ding ding_ob@(-1,0) = -1; ding_li@(-1,0) = -1; }; init_alles_r = { # Fr diverses fressen@(1,0) = 0; # Fr Blase platz@(1,0) = 0; stueck@(1,0) = 0; aufblas_blase@(1,0) = 0; blubber@(1,0) = 0; # Fr Ding ding_ob@(1,0) = -1; ding_li@(1,0) = -1; }; init_alles_o = { # Fr diverses fressen@(0,-1) = 0; # Fr Blase platz@(0,-1) = 0; stueck@(0,-1) = 0; aufblas_blase@(0,-1) = 0; blubber@(0,-1) = 0; # Fr Ding ding_ob@(0,-1) = -1; ding_li@(0,-1) = -1; }; semiglobal={ # Dinge drfen nur abwechselnd links oder rechts # flutschen, damit es keine Kollisionen gibt flutschri = 0, flutschri = 1; tuer_li = 0; tuer_mi = 0; tuer_re = 0; switch { 1:150 => { B, B, C, C, D, E, D, D, D, D, D, D, C, C, B, B; tuer_li = 2 * pos; }; }; switch { 1:150 => { B, B, C, C, D, E, D, D, D, D, D, D, C, C, B, B; tuer_mi = 2 * pos; }; }; switch { 1:50 => { B, B, C, C, D, E, D, D, D, D, D, D, C, C, B, B; tuer_re = 2 * pos; }; }; }; fant_blink={ switch { falling_fast -> 2; 1:200 => 2,2,1,1,1,2,2; -> 1; }; }; fant={ fant_blink; schema16; }; fant_rutsch={ switch { # Links-Rutsch testen 1:2 -> switch { kind@(0,1) == blase && kind@(-1,0) == nothing && kind@(-1,1) == nothing -> { kind@(-1,0) = kind; init_alles_l; kind = nothing; }; }; # Ende von Linksrutsch # Rechts-Rutsch testen -> switch { kind@(0,1) == blase && kind@(1,0) == nothing && kind@(1,1) == nothing -> { kind@(1,0) = kind; init_alles_r; kind = nothing; }; }; # Ende von Rechtsrutsch }; # Ende von switch }; fant_blas={ switch { 0?1?0?0? && kind@(0,-1) == nothing && 1:50 => { { kind@(0,-1) = blase; init_alles_o; aufblas_blase@(0,-1) = 1; 0L* }, 0L*, 0L*, 0R*, 0R*, 0R*, 0R*, 0R*, 0R* }; }; }; gesamt_fant={ switch { # Gefressen werden? fressen => { [qu=Q_TL_BL] 1*; [qu=Q_TR_BR] 1*; {}, {kind=nothing}; }; # Zu Bilefant werden? (Wenn drunter noch eine fant-paarung # ist, die Bilefant werden kann, dann werden wir nicht zum # Bilefant.) kind@(0,1) == elefant + rolefant - kind && kind@(0,2) != kind -> { { 1*; }, { [qu = Q_TL_BL] 1*; [qu = Q_TR_BR] 1*; kind@(0,1) = bilefant; kind@(0,0) = nothing; } }; # Nicht zu Bilefant werden -> { fant; fant_blas; fant_rutsch; }; # Ende von nicht zu Bilefant werden }; # Ende von switch }; # Ende von gesamt_fant >> leer={ pics=ilBlase.xpm,ilVogelL.xpm,ilVogelR.xpm << leer= if blubber => { zw = 0; { switch {fressen => { file = vogel_seite + 1; [qu=Q_TL_BL] *; [qu=Q_TR_BR] *; 0; }; }; [qu=Q_TL_BL] *; [qu=Q_TR_BR] *; }, { zw = 1; if fressen => { file = vogel_seite + 1; *; 0 }; *; blubber@(0,-1) = 1; fressen@(0,-1) = fressen; vogel_seite@(0,-1) = vogel_seite; }, { zw = 1; switch {fressen => { file = vogel_seite + 1; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; 0; }; }; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; blubber = 0; }; switch { kind@(0,-1) != leer && kind@(0,-1) != outside && fressen -> { # Obendrber kommt was. Dann lieber unseren Vogel freilassen. fressen = 0; kind = vogel; }; kind@(0,-1) == vogel && !fressen -> { # Oben ein Vogel, und wir haben hunger... fressen = 1; vogel_seite = vogel_seite@(0,-1); kind@(0,-1) = nothing; if zw -> { # Das obendran muss auch wissen, dass es gefressen hat fressen@(0,-1) = 1; # Und berhaupt:Vielleicht hat der Vogel das Blop obendran # kaputt gemacht. Dann mssen wir ihm neu mitteilen, dass # es blubbert blubber@(0,-1) = 1; }; }; }; }; >> } tuer={ pics=ilTuer.xpm, ilBlase.xpm, ilDing.xpm, ilElefant.xpm, ilRolefant.xpm << var komm_raus; var komm_was; var geh_weg; # Der Elefant, der aus der Tr kommt, wird wirklich # zum Elefant. werde_echt = { kind = komm_was; }; # Setzt file und pos auf das, was aus der Tr kommt setz_komm_fp = { file = komm_was + 1; if (komm_was == ding) -> pos = ding_hier else A; }; tuer = { if informational -> { if 1:150 => { B, B, C, C, D, D, D, D, D, D, D, D, C, C, B, B; } else -> {A}; pos += 32; *; } else if version == 2 -> { {}, { setz_komm_fp; [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; werde_echt; } } else if version == 3 -> { { setz_komm_fp; [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; werde_echt; } } else => { switch { ????0??? -> Y; 0??????? -> A; kind@(0,2) != tuer -> Q; -> I; }; switch { loc_x >= 7 -> zw = tuer_re@@; loc_x >= 4 -> zw = tuer_mi@@; -> zw = tuer_li@@; }; if zw == 8 -> pos += 6 else -> pos += zw; pos += version; *; if zw == 8 && ??111??? && version == 0 && (kind@(0,2) != tuer || kind@(1,2) != tuer) -> { komm_raus@(0,0) = 1; komm_raus@(1,0) = 1; komm_was = rnd(4); ding_hier = rnd(6); komm_was@(1,0) = komm_was; ding_hier@(1,0) = ding_hier; geh_weg@(0,0) = 0; geh_weg@(1,0) = 0; }; # Alles, was jetzt noch gemalt wird, ist das, was rauskommt. # Dafr file und pos setzen. setz_komm_fp; if komm_raus => { komm_raus = 0; switch { version == 0 => { {}, { [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; }, { [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; }, { if kind@(-1,0) == nothing => { { [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; kind@(-1,0) = tuer; behaviour@(-1,0) .-= goalblob; # damit nicht kurzzeitig mehr Gras angezeigt wird init_alles_l; version@(-1,0) = 2; komm_was@(-1,0) = komm_was; ding_hier@(-1,0) = ding_hier; # Nicht zurck in die Tr gehen oder # zur anderen Seite raus: geh_weg@(1,0) = -1; }, { * }, {[qu=Q_TR_TL] *; [qu=Q_BR_BL] *; } } else => { # Nach rechts. (Entweder in die Tr oder abhauen.) [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; }; } }; # version == 0 version == 1 => { { [qu=Q_TL_TL] *; [qu=Q_BL_BL] *; }, { [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; }, { [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; }, { [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; }, { if geh_weg == 0 => { # Elefant haut nicht nach links ab if kind@(1,0) == nothing => { { kind@(1,0) = tuer; behaviour@(1,0) .-= goalblob; # damit nicht kurzzeitig mehr Gras angezeigt wird init_alles_r; version@(1,0) = 3; komm_was@(1,0) = komm_was; ding_hier@(1,0) = ding_hier; *; }, { [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; } } else => { # Zurck in die Tr [qu=Q_TL_TL] *; [qu=Q_BL_BL] *; }; }; } }; # version == 1 }; # switch }; # Ende von komm_raus }; # Ende von version == 0 oder 1 }; >> } # tuer elefant={ pics=ilBlase.xpm,ilElefant.xpm,ilElefant2.xpm << elefant=gesamt_fant; >> } rolefant={ pics=ilBlase.xpm,ilRolefant.xpm,ilRolefant2.xpm << rolefant=gesamt_fant; >> } bilefant={ pics=ilBlase.xpm,ilElefant.xpm,ilElefant2.xpm,ilRolefant.xpm,ilRolefant2.xpm << # Von oben sollen keine bilefanten kommen. Aber ein bisschen mehr # Dinge knnten wir brauchen. bilefant.init={ kind = ding; ding_hier = rnd(6); }; bilefant={ switch { fressen => { [qu=Q_TL_BL] 1*; [qu=Q_TR_BR] 3*; {}, {kind=nothing}; }; -> { switch { 0?0?0?0? -> A; 0?1?0?0? -> B; 0?1?0?1? -> C; 0?0?0?1? -> D; 0?0?1?0? -> E; 0?1?1?0? -> F; 0?1?1?1? -> G; 0?0?1?1? -> H; 1?0?1?0? -> I; 1?1?1?0? -> J; 1?1?1?1? -> K; 1?0?1?1? -> L; 1?0?0?0? -> M; 1?1?0?0? -> N; 1?1?0?1? -> O; 1?0?0?1? -> P; }; fant_blink; [qu=Q_TL] *; [qu=Q_BR] *; file += 2; [qu=Q_TR] *; [qu=Q_BL] *; fant_blas; fant_rutsch; }; }; }; >> } # bilefant blase={ pics=ilBlase.xpm, ilVogelL.xpm, ilVogelR.xpm << var ki; blase={ # Befindet sich ein Vogel in uns? if !aufblas_blase && fressen && !blubber -> { file=vogel_seite + 1; A*; 0 }; switch { aufblas_blase => { { aufblas_blase = 0 }, {}, O*, O*, O*, U*, U*, U*; }; platz -> { F,L,F, { L; switch { fressen -> kind@(0,0)=vogel; -> kind@(0,0)=nothing; }; }; pos += platz;*; }; blubber -> { if fressen -> { file = vogel_seite + 1; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; 0; }; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; blubber = 0; kind = nothing; }; -> { pos = stueck; *; ki = 0; switch { stueck == 2 -> ki = kind@(-1,0) == blase && stueck@(-1,0) == 1; stueck == 5 -> ki = kind@(-1,0) == blase && stueck@(-1,0) == 4; stueck == 6 -> ki = kind@(0,-1) == blase && stueck@(0,-1) == 3; stueck == 7 -> ki = kind@(0,-1) == blase && stueck@(0,-1) == 4; stueck == 8 -> ki = kind@(-1,-1) == blase && stueck@(-1,-1) == 4; stueck == 4 && 1:150 -> { platz@(0,0) = 4; platz@(1,0) = 5; platz@(0,1) = 7; platz@(1,1) = 8; }; stueck == 0 && !falling && 1:100 && kind@(0,-1) == nothing -> { blubber@(0,-1) = 1; fressen@(0,-1) = fressen; vogel_seite@(0,-1) = vogel_seite; blubber = 1; }; }; switch { !ki -> { switch { ??0?0??? -> {stueck = 0;}; ??111??? -> {stueck = 4; stueck@(1,0) = 5; stueck@(0,1) = 7; stueck@(1,1) = 8;}; ??1?0??? -> {stueck = 1; stueck@(1,0) = 2;}; ????1??? -> {stueck = 3; stueck@(0,1) = 6;}; } }; }; }; # ende von: nicht platzend }; # Wollen wir uns einen Vogel unter uns einverleiben? switch { kind@(0,1) == vogel && !fressen && !platz && !blubber -> { fressen = 1; kind@(0,1) = nothing; vogel_seite = vogel_seite@(0,1); }; }; }; >> } # blase ding={ pics=ilDing.xpm numexplode=9 << ding.init={ ding_hier = rnd(6); }; ding={ # Malen: hier if ding_hier != -1 -> { pos=ding_hier; *; }; # Malen: oben if ding_ob != -1 -> { pos=ding_ob; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; }; # Malen: unten if (kind@(0,1) == ding || kind@(0,1) == vogel) && ding_ob@(0,1) != -1 -> { pos=ding_ob@(0,1); [qu=Q_TL_BL] *; [qu=Q_TR_BR] *; }; # Malen: links if ding_li != -1 -> { pos=ding_li; [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; }; # Malen: rechts if (kind@(1,0) == ding || kind@(1,0) == vogel) && ding_li@(1,0) != -1 -> { pos=ding_li@(1,0); [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; }; # Wenn ich nix mehr bin, dann bin ich nicht mehr if ding_hier == -1 && ding_ob == -1 && ding_li == -1 && (kind@(1,0) != ding && kind@(1,0) != vogel || ding_li@(1,0) == -1) && (kind@(0,1) != ding && kind@(0,1) != vogel || ding_ob@(0,1) == -1) -> kind = nothing; # Nach unten rausfallen if ding_hier != -1 && ding_ob@(0,1) == -1 && ( kind@(0,1) == ding || kind@(0,1) == vogel && !beschaeftigt@(0,1) ) -> { ding_ob@(0,1) = ding_hier; ding_hier = -1; # Wenn wir einen Vogel fuettern, muessen wir das weight behalten. if kind@(0,1) != vogel -> { weight@(0,1) += 1; weight@(0,0) -= 1; }; }; # Von oben reinfallen: if ding_hier == -1 -> { ding_hier = ding_ob; ding_ob = -1; }; # flutschen (schrg) (schrg geflutscht wird nur, wenn beide # Dinge auf dem boden liegen.) if ding_ob != -1 && kind@(0,1) != nothing -> { # nach links flutschen if flutschri@@ && ding_li == -1 && kind@(-1,1) != nothing && ( kind@(-1,0) == ding || kind@(-1,0) == vogel && !beschaeftigt@(-1,0) ) -> { ding_li = ding_ob; ding_ob = -1; }; # nach rechts flutschen if !flutschri@@ && ding_li@(1,0) == -1 && kind@(1,1) != nothing && ( kind@(1,0) == ding || kind@(1,0) == vogel && !beschaeftigt@(1,0) ) -> { ding_li@(1,0) = ding_ob; ding_ob = -1; # Wenn wir einen Vogel fuettern, muessen wir das weight behalten. if kind@(1,0) != vogel -> { weight@(1,0) += 1; weight@(0,0) -= 1; }; }; }; # Halbe Dinge abschneiden if kind@(0,-1) != ding && ding_ob != -1 -> { ding_ob = -1; weight -= 1; }; if kind@(-1,0) != ding && kind@(-1,0) != vogel && ding_li != -1 -> { ding_li = -1; weight -= 1; }; }; >> } # ding vogel={ pics=ilVogelL.xpm,ilVogelR.xpm,ilDing.xpm << vogel.init={ vogel_seite = rnd(2); }; vogel={ switch { ding_ob != -1 -> { # Vogel wird von oben bedrngt beschaeftigt = 1; ding_li = -1; ding_li@(1,0) = -1; 2; pos=ding_ob; [qu=Q_BL_TL] *; [qu=Q_BR_TR] *; file = vogel_seite; K*; }; ding_li != -1 -> { # Vogel wird von links bedrngt beschaeftigt = 1; vogel_seite = 0; ding_ob = -1; ding_li@(1,0) = -1; 2; pos=ding_li; [qu=Q_TR_TL] *; [qu=Q_BR_BL] *; 0I*; }; kind@(1,0) == ding && ding_li@(1,0) != -1 -> { # Vogel wird von rechts bedrngt beschaeftigt = 1; vogel_seite = 1; ding_ob = -1; ding_li = -1; 2; pos=ding_li@(1,0); [qu=Q_TL_TR] *; [qu=Q_BL_BR] *; 1I*; }; kind@(0,-1) >= elefant && kind@(0,-1) <= bilefant => { beschaeftigt = 1; file = vogel_seite; B*, B*, C*, C*, { D*; fressen@(0,-1) = 1; fressen = kind@(0,-1) }, { E, E, F, F; switch { fressen == elefant -> *; fressen == rolefant -> {pos += 2; *}; -> { # Pos E soll zu G werden; F soll bleiben: pos = 10 - pos; [qu=Q_TL] *; [qu=Q_BR] *; # G (6) -> E (4), F (5) -> H (7) pos = 22 - 3 * pos; [qu=Q_TR] *; [qu=Q_BL] *; }; } }, C*, C*, B*, B*, A*, A*; }; -> { file = vogel_seite; beschaeftigt = 0; A*; }; }; # Halbe Dinge abschneiden if kind@(0,-1) != ding -> { ding_ob = -1; }; if kind@(-1,0) != ding && kind@(-1,0) != vogel -> { ding_li = -1; }; }; >> } # vogel } cuyo-2.1.0/data/trees.ld0000644000175000017500000000566412415051252011776 00000000000000# # Copyright 2010-2012 by Mark Weyer # Maintenance modifications 2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Trees2 = { name = "Holes" # TRANSLATORS: "singly connected", or simply connected is a term from # mathematics, more specifically topology name[geek] = "Singly connected" author = "Mark Weyer" description = "Groups with holes explode." # TRANSLATORS: "complex", "nonpositive" and "Euler characteristic" are terms # from mathematics. "Complex" is here used in the sense of simplicial # complexes or CW complexes. description[geek] = "Complexes with nonpositive Euler characteristic explode." anzahl[easy] = 3 anzahl = 4 anzahl[hard] = 5 w_loch[easy] = 1000000 w_loch = 100 w_loch[hard] = 50 pics = Graph * startpic = mtrGras.xpm greypic = mtrGrau.xpm neighbours = startdist[easy] = "..**..*...","****..***." startdist = "......*...","..**..***.","****..****" startdist[hard] = "..**..*...","****..***.","****..****" numexplode = 0 << var doppel; semiglobal = { if doppel -> { message("Multiple holes"); bonus(300); }; doppel=0; }; >> Graph = { pics = mtr1.xpm, mtr2.xpm, mtr3.xpm, mtr4.xpm, mtr5.xpm << Graph = { if exploding==1 && size>0 -> doppel@@=1; weight = 1????? + ?1???? + ?????1 - 1 - 11???? - 1????1; file = kind-Graph; switch { 1???11 -> F; 1???01 -> E; 1????0 -> D; 0???11 -> B; 0???01 -> C; 0????0 -> A; }; if pos%3==1 -> qu=Q_BL_TL else -> qu=Q_TL; *; switch { 111??? -> D; 110??? -> E; 10???? -> F; 011??? -> B; 010??? -> A; 00???? -> C; }; if pos%3==1 -> qu=Q_BR_TR else -> qu=Q_TR; *; switch { ???111 -> E; ???110 -> C; ???10? -> A; ???011 -> F; ???010 -> B; ???00? -> D; }; if pos%3==1 -> qu=Q_TL_BL else -> qu=Q_BL; *; switch { ?111?? -> E; ?011?? -> A; ??01?? -> C; ?110?? -> D; ?010?? -> B; ??00?? -> F; }; if pos%3==1 -> qu=Q_TR_BR else -> qu=Q_BR; *; }; >> } } cuyo-2.1.0/data/aliens.ld0000644000175000017500000002323012407511572012123 00000000000000# # Copyright 2006 by Bernhard Seckinger # Modified 2011 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # baAliens.xpm[.gz], baAnzeige.xpm[.gz], baBlue.xpm[.gz], baGreen.xpm[.gz], # baPower.xpm[.gz], baRaumschiff.xpm[.gz], baRed.xpm[.gz], baSchuss.xpm[.gz], # baWarnship.xpm[.gz], baYellow.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # FS Alarm-Alien ist noch etwas langweilig # FK Diverse Gadgets zum Einsammeln fehlen noch # BK Bei Explosionen sperrt die Tastatur fr kurze Zeit # FS Feinjustierung # BS Synchrones Ansteigen im 2er-Modus, y-Korrektur bei Zeilenwechsel Aliens = { name = "Aliens" author = "Berni" greypic = bpStein.xpm startpic = Alien pics = Red,Green,Blue,Yellow,Empty startdist = "DAAAAAAAAD","DCCBBBBCCD" mirror = 1 numexplode = 4 chaingrass = 1 textcolor = 160,160,160 bgcolor = 0,0,0 topcolor = 192,192,192 topoverlap = 0 toptime = 50 p_shoot = 500 p_shoot[hard] = 150 << var xc = 4; var yc = 1; var shoot = 1; var lives = 3; var next1 = -1; var next2 = -1; var pot, row, col; var ashoot0 = 0; var ashoot1 = 0; var ashoot2 = 0; var ashoot3 = 0; var ashoot4 = 0; var ashoot5 = 0; var ashoot6 = 0; var ashoot7 = 0; var ashoot8 = 0; var ashoot9 = 0; var ich_bin_counter = 0; var alienclock = 0; var aliengymnastics = 0; var aliendir = 0; # 0 = links, 1 = rechts var exploschiff = 0; var counter = 1350; var alarm = 0; var ac = 0; init_all = { kind = Empty; if loc_x==4 -> { ich_bin_counter = 1; yc@@ = loc_y+1; } else ich_bin_counter = 0; }; Empty.init = init_all; Red.init = init_all; Blue.init = init_all; Green.init = init_all; Yellow.init = init_all; schuss = { if 18-loc_y!=yc@@ -> 0A* else kind@(0,0) = nothing; }; get = { switch { col == 0 -> row = ashoot0@@; col == 1 -> row = ashoot1@@; col == 2 -> row = ashoot2@@; col == 3 -> row = ashoot3@@; col == 4 -> row = ashoot4@@; col == 5 -> row = ashoot5@@; col == 6 -> row = ashoot6@@; col == 7 -> row = ashoot7@@; col == 8 -> row = ashoot8@@; col == 9 -> row = ashoot9@@; }; }; set = { switch { col == 0 -> ashoot0@@ = row; col == 1 -> ashoot1@@ = row; col == 2 -> ashoot2@@ = row; col == 3 -> ashoot3@@ = row; col == 4 -> ashoot4@@ = row; col == 5 -> ashoot5@@ = row; col == 6 -> ashoot6@@ = row; col == 7 -> ashoot7@@ = row; col == 8 -> ashoot8@@ = row; col == 9 -> ashoot9@@ = row; }; }; >> semiglobal = { pics = baRaumschiff.xpm,baAnzeige.xpm,baPower.xpm, baRed.xpm,baGreen.xpm,baBlue.xpm,baYellow.xpm, baSchuss.xpm,explosion.xpm,baWarnship.xpm << aliens = { # max = kgv(10,100) if alienclock@@==999 -> { alienclock@@ = 0; } else alienclock@@+=1; aliengymnastics@@ = (alienclock@@%10)/5; aliendir@@ = (alienclock@@%100)/50; }; alienshoot = { get; if row!=0 -> { 7A*@@(col,row); row-=1; set; if row==yc@@+1 && (col==xc@@ || col==xc@@+1) -> exploschiff@@ = 1; } }; ashooting = { [ col = 0 ] alienshoot; [ col = 1 ] alienshoot; [ col = 2 ] alienshoot; [ col = 3 ] alienshoot; [ col = 4 ] alienshoot; [ col = 5 ] alienshoot; [ col = 6 ] alienshoot; [ col = 7 ] alienshoot; [ col = 8 ] alienshoot; [ col = 9 ] alienshoot; }; shooting = { if next1@@ == -1 -> next1@@ = rnd(4); if next2@@ == -1 -> next2@@ = rnd(4); if shoot@@==0 -> { if kind@@(xc@@,yc@@+1)==nothing && kind@@(xc@@,yc@@+2)==nothing && kind@@(xc@@+1,yc@@+1)==nothing && kind@@(xc@@+1,yc@@+2)==nothing && next1@@ != -1 && next2@@ != -1 -> { kind@@(xc@@,yc@@+1) = Red+next1@@; kind@@(xc@@+1,yc@@+1) = Red+next2@@; next1@@ = -1; next2@@ = -1; }; shoot@@ = 10; }; if shoot@@>1 -> shoot@@-=1; }; semiglobal = { if counter@@<=0 -> { alarm@@ = 1; counter@@=1550; message("Hurry up!!!");} else counter@@ -= 1; if alarm@@ -> { 9; A*@@(alarm@@-3,yc@@+5); B*@@(alarm@@-2,yc@@+5); C*@@(alarm@@-1,yc@@+5); D*@@(alarm@@-3,yc@@+4); E*@@(alarm@@-2,yc@@+4); F*@@(alarm@@-1,yc@@+4); if ac@@>=3 -> { alarm@@+=1; ac@@ = 0; } else { ac@@ += 1; }; }; aliens; ashooting; shooting; # Raumschiff Zeichnen 0A;*@@(xc@@,yc@@+1); 0B;*@@(xc@@+1,yc@@+1); if exploschiff@@ => { 8;A,B,C,D,E,F,G, {H;exploschiff@@ = 0;xc@@=4;lives@@-=1; if !lives@@ -> lose}; *@@(xc@@,yc@@+1);*@@(xc@@+1,yc@@+1); }; # Armaturenbrett 1A; *@@(0,yc@@); *@@(1,yc@@); *@@(2,yc@@); *@@(3,yc@@); *@@(4,yc@@); *@@(5,yc@@); *@@(6,yc@@); *@@(7,yc@@); *@@(8,yc@@); *@@(9,yc@@); # Power-Anzeige 2; pos = shoot@@*3; *@@(0,yc@@); pos = shoot@@*3+1; *@@(1,yc@@); pos = shoot@@*3+2; *@@(2,yc@@); # Lives-Anzeige 1C; if lives@@>=1 -> *@@(9,yc@@); if lives@@>=2 -> *@@(8,yc@@); if lives@@>=3 -> *@@(7,yc@@); # Naechste Schuesse-Anzeige if next1@@ != -1 -> { file=3+next1@@;B; qu=Q_TR;*@@(4,yc@@); qu=Q_BR;*@@(4,yc@@); }; if next2@@ != -1 -> { file=3+next2@@;B; qu=Q_TL;*@@(5,yc@@); qu=Q_BL;*@@(5,yc@@); }; qu = Q_ALL; # Vorhang 1B; *@@(0,yc@@-1); *@@(1,yc@@-1); *@@(2,yc@@-1); *@@(3,yc@@-1); *@@(4,yc@@-1); *@@(5,yc@@-1); *@@(6,yc@@-1); *@@(7,yc@@-1); *@@(8,yc@@-1); *@@(9,yc@@-1); *@@(0,yc@@-2); *@@(1,yc@@-2); *@@(2,yc@@-2); *@@(3,yc@@-2); *@@(4,yc@@-2); *@@(5,yc@@-2); *@@(6,yc@@-2); *@@(7,yc@@-2); *@@(8,yc@@-2); *@@(9,yc@@-2); }; >> } Alien = { pics = baAliens.xpm versions = 3 << var moving = 7; var movingnext = 0; Alien.init = { if version==3 -> kind = Empty; }; Alien = { pos=version*2+aliengymnastics@@;*; if informational -> { if 1:5 => {,,,,,version=rnd(3)}; } else { if movingnext || movingnext@(0,1) || movingnext@(0,-1) -> { movingnext = 0; if aliendir@@==0 -> { # Nach links! if kind@(-1,0)==Empty || kind@(-1,0)==nothing -> { kind@(-1,0)=Alien; version@(-1,0) = version; kind@(0,0)=kind@(-1,0); } } else { # Nach rechts! if kind@(1,0)==Empty || kind@(1,0)==nothing -> { kind@(1,0)=Alien; version@(1,0) = version; kind@(0,0)=kind@(1,0); } }; } else { if 1:p_shoot -> { [ col = 9-loc_x ] get; if row==0 -> { [ col = 9-loc_x ] [ row = 18-loc_y ] set; }; }; }; moving-=1; if moving<0 -> { moving = 5+rnd(10); movingnext = 1; }; # out1 = counter@@; # out2 = loc_y; # out1 = alienclock@@; # out2 = aliengymnastics@@; }; }; >> } Red = { pics = baRed.xpm << Red = schuss; >> } Blue = { pics = baBlue.xpm << Blue = schuss; >> } Green = { pics = baGreen.xpm << Green = schuss; >> } Yellow = { pics = baYellow.xpm << Yellow = schuss; >> } Empty = { pics = bpPingu.xpm neighbours = << Empty.keyleft = { if ich_bin_counter && xc@@>0 -> xc@@ -= 1; }; Empty.keyright = { if ich_bin_counter && xc@@<8 -> xc@@ += 1; }; Empty.keyfall = { if ich_bin_counter && shoot@@==1 -> shoot@@ = 0; }; Empty.keyturn = { next1@@ = next2@@; next2@@ = next1@@; }; Empty.land = { kind@(0,0) = nothing; }; Empty = { }; >> } } cuyo-2.1.0/data/rechnen.ld0000644000175000017500000000654712421656325012310 00000000000000# # Copyright 2005,2006,2008,2014 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Rechnen = { name = "Calculations" author = "Mark Weyer" pics = zahl*3 greypic = grau startpic = gras startdist = "**********","-*%&" chaingrass[hard] = 1 << semiglobal = weight = 1; semiglobal.init={falling_speed=4;}; >> zahl = { pics = mreZahl1.xpm,mreZahl2.xpm,mreZahl3.xpm << var value,operator,operatorart; zahl.init = { if 1:3 -> {operator = 1; operatorart=rnd(2); value=0;} else {value = rnd(11)}; }; zahl.land = weight@@ = 0; zahl.connect = weight = value*weight@@; zahl = { if kind@(0,1)==nothing && !informational -> weight@@ = 0; if operator -> { if ??1???1? && !operator@(1,0) && !operator@(-1,0) -> { operator=0; if operatorart==0 # Addition -> value=value@(1,0)+value@(-1,0) else value=value@(1,0)*value@(-1,0); kind@(1,0)=nothing; kind@(-1,0)=nothing; weight@@ = 0; } else if 1???1??? && !operator@(0,1) && !operator@(0,-1) -> { operator=0; if operatorart==0 # Addition -> value=value@(0,1)+value@(0,-1) else value=value@(0,1)*value@(0,-1); kind@(0,1)=nothing; kind@(0,-1)=nothing; weight@@ = 0; }; }; file=kind-zahl; schema4; switch { operator -> {pos=operatorart+24; *;}; value<10 -> {pos=5+2*value; *;}; -> { pos=4+2*((value/10)%10); qu=Q_TL; *; qu=Q_BL; *; pos=4+2*(value%10); qu=Q_TR; *; qu=Q_BR; *; }; }; }; >> numexplode = 100 } grau = { pics = mreGrasgrau.xpm, mreZahl1.xpm, mreZahl2.xpm, mreZahl3.xpm << var farbe; grau.init = { if kind@(0,1)==nothing && !informational -> weight@@ = 0; if informational -> farbe=0 else { farbe = rnd(10); if farbe>3 -> farbe=0; }; }; bunt_grau = { file=farbe; if farbe==0 -> A* else F*; }; grau=switch { kind@(0,-1)==grau && kind@(0,1)!=grau && kind@(0,1)!=nothing -> {bunt_grau; kind=nothing;}; kind@(0,1)==grau || kind@(0,1)==nothing -> bunt_grau; -> {farbe=0; A*}; }; >> } gras = { pics = mreGrasgrau.xpm << gras = { if kind@(0,1)==nothing && !informational -> weight@@ = 0; B*; }; >> } } cuyo-2.1.0/data/rollenspiel.ld0000644000175000017500000000315412402113364013173 00000000000000# # Copyright 2006 by Mark Weyer # Maintenance modifications 2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Rollenspiel = { name = "Fantasy role playing" author="Mark Weyer" # pics = Wuerfel * 6 pics = Fee, Kobold, Mensch, Zwerg, Elf, Troll greypic = Grau startpic = mrpAlle.xpm startdist = "..HH..HH..",".HHH..HHH.","-H%&" chaingrass = 1 nogreyprob = 1 # Wuerfel = { # pics = mrpAlle.xpm # numexplode = <1+kind-Wuerfel> # # << Wuerfel = {pos=numexplode;*;}; >> # } Grau = { pics = mrpAlle.xpm << Grau=*; >>} Fee = {pics = mrpAlle.xpm numexplode = 1 << Fee=B*; >>} Kobold = {pics = mrpAlle.xpm numexplode = 2 << Kobold=C*; >>} Mensch = {pics = mrpAlle.xpm numexplode = 3 << Mensch=D*; >>} Zwerg = {pics = mrpAlle.xpm numexplode = 4 << Zwerg=E*; >>} Elf = {pics = mrpAlle.xpm numexplode = 5 << Elf=F*; >>} Troll = {pics = mrpAlle.xpm numexplode = 6 << Troll=G*; >>} } cuyo-2.1.0/data/elemente.ld0000644000175000017500000000261711672457343012464 00000000000000# # Copyright <=2004 by Bernhard R. Link # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # elBlack.xpm.gz, elBlue.xpm.gz, elGray.xpm.gz, elGreen.xpm.gz, elRed.xpm.gz, # elYellow.xpm.gz # Elemente={ name="Elements" author="brl" numexplode=9 chaingrass=1 pics=elBlue.xpm,elRed.xpm,elYellow.xpm,elGreen.xpm bgcolor=0,0,0 topcolor=10,10,10 textcolor=50,60,50 toptime=90 greypic=elGray.xpm startpic=elBlack.xpm startdist[1]="A........A","A...A....A","A..AAA...A","A..AAA...A","A..AAAA..A" startdist="A........A","A...-....A","A..---...A","A..---...A","A..----..A" << elBlack=schema16; >> } cuyo-2.1.0/data/sounds/0000755000175000017500000000000012422656731011726 500000000000000cuyo-2.1.0/data/sounds/leftright.wav0000644000175000017500000000167210505474656014367 00000000000000RIFFWAVEfmt "VDdata -  "      '   : # &.+                           պ *89;3 $*       cuyo-2.1.0/data/sounds/menuscroll.wav0000644000175000017500000000557010505474656014563 00000000000000RIFFp WAVEfmt "VDdataL PjP`(qcmY?rP=5ZLDr( zAAY yu$,ATOU{o{6Wu !|nQ+zHF03(XS3ZGfHS-3l_lTO9''~ |+6[N/2')~z7#5| !i<xLI VjN\j6b^!gK+d(T7s,'P T{+NKZ'm },6op-;YS0Y~Uz+EO3S(u!&Su 5Ok{ &LyJ@Ag>KN yP f ku p4,Xhq>O4aM k_ (p"uJ|  *j;lz2)i&xa Am d| 1g uV ^BU$%O; j F B#t`-"'">}D,&wi  Wjkk~HF8H*bIO Xk, L< ~%K 9K fZ/rj  +$ h8~ [ 7~ & e!Y X j;\9za{3( " p Do \|_!   (^1Ps 5Yv N/  2LdnO T-lxc M B4 } +n2Y;P~DZ 9Q qf7 sp U7#${t8 48't y t k?=c NB oSR/dlN@fW0E3 *a5FO+KH.D1e/z*]"`gN 3 HfH7[lR LQ}cm g_vq.aO Gag B"6x\PuO>N \dDO 1 ,U@ ;`y 'V{ x9 :R+h|lt5x tQ`?Ci  zkm h L-P^EO/o7y#J]%M"[KK3N}qG]*o_O-Ui $a~4odvKGzG{,T# J&$]_&l"-hewI,$3 )jnx^K,mP S"B&$cuyo-2.1.0/data/sounds/slime1.wav0000644000175000017500000002346710516677306013576 00000000000000RIFF/'WAVEfmt "V"Vdata '~~~}{zz|~~~~~~~~~~~~~~~~~}}|{{zywvusqomkigfdddegilpv||zywwwxyxyywusqmifc_]\[]_chnu}~~{wsnic]XTQOOQU[bkt~~wof^WPLIHJNT\eozwlbXPIEDEIPXbmxvi]RIC@ADJR\fpzqdXOJHINT\emtz}~~{xtqoorwľ}ocZUSTW]cjosuusojeb``dktxohdcdgjnpqpnic^XUSUYbmzþ{vsrqrrqokfaZTPMMOU^iv|wrle^WQLHGGKQYbmxvmcZQIC?>?BGNWalwÿvj_UNHECEHLQW_hr}znbXOGB?>?CHOXbmyþyl`ULD?==AGQ\ivugYMB:5349@JWet»{l^QF?::IWfwŽraSG>868>FR`o~ú~m]NB:558@KYizƾo]NA7103:EScutbRE;659BO_qʾr]K;0)'+4BSg}ɻkVD6,')0=Nbz°kT@0% "+9Md|ͼv^H5)!!(5H^wɷoWB1%!$.>Slνu]F5(#%/?TlʷmT?/&$*6H`yͼu]H7-*.9J`x±mWF:46>L`vĴs]K=67>K\qúo[LB>AJYkĽwdSG??DO^qvg\TRV]iw|nbZVV[dp}|pga^_ckt~ytpoqtzyrlhgimryzwuvw{|ywwxz~~zwuttvx{~}|{zz{|~}|{z{|}~}|{{{{{|}~~|{{|}~}{zyxyz{}~~}|||}~~{ywvvwy{~~|yxxxz|}zxwwwxz}}{yxxyz|~}{zyyz{|~|{zz{|~~}{{{|}}|||}~}||}~~~~~~~~~~~~~~~~}}~}}}~~~~~}}}~~~~~~~~~~~~~~}z|z|z}|}}~~~~~}}}}}}}}~~~~}|||{{zxxwvvwwxwwwwwwvttw|zqgfuplv~z|~~{|~||~||~}zxz}~~}|||{{zzzz{{|}}~~~~}}}}|||||{{{|}~~}}~~~}|||{{{{{{{{||}}}~~~}}||{{{{{{z{{{{{||}}~~~~~}|{{{zzzzzzzzz{{{{{|}}~~}}|{{{zzzzzzzzz{{||}}~~}|{{{zzzyyyyzz{||}~~}|{zzyyyyyz{||}~~}|{{zyyyyyyyzz{{|}~~}||{{{zz{{{|}~~~}}|{{{{{{{||}~~~}||{zzzzzz{{|}~}|{zzyyyzz{{|}~~}|{zzyyyyzz{|~}|{zyyxxxyyz{}~}{zyxwwwwxyz{|~}{yxwvvvwxyz|~}{ywvuuuuvxz|~}zwutsrrstvxz}~{xvussstuwy|{xusqpppqsvy|~zwtrqpqrsvy}{xurpooprtw{~{xurqppqsuy||xurpooprux|zvrpnmnoruz~{wsomllnqtx}{wromlmorv{{vqnkkkmptyzupmkjknqv|}wrolkknqv{{upmkjknrw|ytpmklmqv|ytpmllnrv|}xtqonprv{{wsqqrtw{zvsrrsuy}}yvtstux{|yvuuvx{}zxwwxy|}zyxxyz}}{zyz{|~~}|||}~~~~~~~~~~~}}}}}}}}}}~~~~cuyo-2.1.0/data/sounds/levelwin.wav0000644000175000017500000026475610505474656014242 00000000000000RIFFiWAVEfmt "VDdatai/rL{o Mk!#"c t\2- D^gF%{?wv Zs@ H  D7ý?%]ѹG( 8ADFHBLQ WXTK.A%<80Q"K jB>݇Ǝ-WDԯlTeW%/KT]\aS RZ ; #>5'* )$ApZ'?-)*Z}1KK[ډʫB% o q!-6j9|3^'h=!%>&& FONs?  2X]PϊӐ} BM-EEp;b%2>DCA@#A@d;,/ ?ufӠʛůTzۺ }i H jQ0&"? =(X` | ' s#.6<=;3*%% 6GéLӦu9ܥ**8DLKDOQlOMOU6_`:UAY)c Ƃ />ȯfaa%&h#!$(1Z2D,I#Rb|pݷCvgP $&;(8*-/566/*J-0u.%N޶˳j*LfêI'mr );kN`ikns=urmbPK=+݋E=.l8g}z ak9"M+14S5/"Tae#̺^x C.HaQ^Zdowyuh8S=O- 3+af}|Ѕǂ͝-q eI*,ΪƈZ ݡA+&1<,JWb"ltzy|}zIv:qejM- _U @;N0XU񑟡м8цP &/8~DQYyVMCI: 4T0)SPSw3LHY  CXd#l0H蘶yж=śc%4>S=bglppuw}|q]JE5Sͣ^FaCş%ܞ_59/Y  &/2.%| wT1o!S'1>pH NQPH<1+)(#XE7򫈛Љ;gwIܭ<:}@}1@P"`=p*}X|rekXMCu4Z H ؎ͺ49Aӥ)T#r_v' >aݴыJ^ v߁X* J+5@JP-anyn{ijV@L'hYq@* Ԁ/9U-7l."R2B)Q]e*cZPsIB@2i!:\wh6 )R2}2czƸҩ,r\ͦSO"0 U):LnX^8d:mw~y#fQ= ?Њ֭㇐`Q òʽH'ЌީI 4!E4*ElS^j^xt}tYcP_<$ "DXֿ󱠷q3D# V[G4ّydO R(28[ENCT=VfUgUXPZT0J@@6,)g_>!.ފ,9Te=s '*ZA Uz_ek|ovn2h^SH?N6,+6!  +16w'U  y5!A.̬$M^{s&z2o>FN\)p~~v}k_:NP:%V*̢͊Ѕ ؿ=!W (%'1:1C\HIJHA[5(d<X  NdEKz B 1TC;򶆯nȝPVѼ9! a$3.a;IDXdGnx~[taOM58 ftͬ%! S@b.ÑQ' J#%'&X `L ! #:1<8C0EEDEGFFGGbB,7x)GE~&܈Ȍ*^Z5| #X0 ?'MX_aOdf,gd_WM@.w! "QN-Σaee.ĊɊw-&1:DQA^hqww|tojcGZL;d(؛\䌌#χ𧞵ů.{-#{0>KKUZWQeNSJ@4+$#kDd]W  [Us][c4i̹|xxU"4cNh(5CQQ%_j#v~zpfWQD1 Nޒks7k桉/Wƀr 5K y(+I'[! xd^  dID# *,+_(%&(=,/B/f)$L# 4avp['?a-^ڞ^ȨVå3^$:12;#HV`e"krMx%y!uk\I5l#F XۅXxĿ[˫ғޮk7&Is!T4<( 44㾠HU7$sm$uקF/v~c)2:u@wEGE1C;AH=B5-(%n H 0 0 `x2!Y9-6Vx黂 6#d  .>CO[bef$il+oljf_U_EU.L*կa_ϟXl8]LY@p P%5+\.*J!y 4( i 7"B#$'(& $:""2$#xrqWVίpcP|ʪ:۷RP˦ҳ|TfG j".;EL[\cRgjmnj_-Ny?-4' t?o˶J9G 9I@G^(P $ .1$1,) "2CH !$d,1B5K;DiJJMOQRPsKCg;74Z(fڑ@r[婋̳#˓Ч~H4",(,2=[JUPMG Br:|1+o'K"Ia zbmB.|u:&O|N`ԺT]ʒ˞pպRNb  dH_)1R:CNY_S_]`Fcl_8UBG5f | #(+Dקި7qǗ9 ܖ u_i&)<)(#4oC<a!$%%$u!$vP=.ѹ5nAݧX )~8vAGYQ\4fln-lcW0K0?3%v7 Z DLE;x t J[u@w Ln"t',/Z/28-<:8513m0--'3q/VݗYD0dt=ZB7X  9$/:ENVYVV%PKGA@66<,=## SB9ѼR6.8vSc[J5]^:نz !'*3j=!FLQTeV+WX?XPD7d*Aݫ3 ˸=qV }> +00/y//.)#Y#_)> k B9R%`HUǿ&@ ɇA } -8@VF*P\ejoh?bYPGP:W,c)Q`ԲsS޼R \ʁύ| `7_yZZ RvOU#$y%&'w-4+73[-k*?*)G&xj(Yrgݱ2^ԑߩ;.M#{1d@KNOR5U1SgMF;-  V/8پ'ͺܛ4nfI<%܄e *G.8`9G)y1.6(89n=^EM%PKHF@6|)- V1G޺to8֮֮*o!huy"*3787630V*%4!u?)3v2F` qe?3"E# P6!ܧ}ϠΝ o(q 3"(2|=VFK`QVYXdUPJ@04 ݼϷ⽳OZ2is GW ;I *u*k"$a!w])  d wmmŃd&Yڶ#O| dm(24K@bIMNQSQ?KC:/!#,18+>ʲјԧӽ{Ӎ?]  ,>b5* <$(,`04#7b9=4BC=>7/)&2ސǗ'9HD廳]Tޑ*% .J"e)2J:>dAh@%;J43-0& FC r  .i7P( R)hM=փeֈ)KZv] .{#,+6GAFvI L;NPRN)F9a)jUP{q`0ܽmd:<ϸݲ-Nv} "#H$"d~ WQ7~p.lv3<>ّն|QvDg?}( "++j3; C#J NOPsOI`A 9B1&'p,\U-з̞XΙxˉ +[g  7.-FQ ]e!"$}(-<342#-(r$ a+ &ӾijȺ+yħ-؀L4\c $I+3=CTDOA=9u3o)t/G8)V#<+p>sީ0h3ygt-"l'+p19@DxFFEMA8V-" `<ə[x•1Q%TP #o d!!#l&%!d/] S S@rs}/Q`wQ||>بҤԾWwݠo%WF8.=8t1R%V_B/ \sXt 4V,;>ݾZD %!/N@N=94.*N*h*7&;^nذz=ĄX,ع! sgVE4 4f $i%,4>EGF5CZ:*@ r"(#Ũd`[H מ>MN)[[)T1UoѺ{5n~ &z,-)%(,%'ѓֶݨy5b;T@-?Q#exC~SxgxO1'ƒl%ɛp߿*u<4EIrQWYUgL8JVB])kn F+7NCEPSXVS3W\[TF/bɠT =vƲ١,<@@GWUtert,k@ZD5.Dľ%&<ĵJȵbL.R+y"+35- "ٍԺİԯ&`<,BP$ZIafkqmmmYhXB2/4 g{)[~^ޢNTΥ<k7#+"2!6u44*v%3Q߾{$L3r=6A??=_,?~_]]! %}jވůŦgց hGQ!,7=-?CBLkSTeN!Bv4';ÏʼnUU۰O;qU$e*D):S5u ſ[ !-[90BIMJD[BxCCC@D5"#'v H=ܑߧ^o I+^.-.n/3<ED;O25* ]գդoPL  o+2270j,)*)%sC`#W&D+˻L>8A+BS^-cekSqomia S>-R!sߘ]s%4E0aʥs~_&C*1J9< <]6v)Ap'qݯζvOT+tn4IDX`ht{}_}8v\bG/! r}̎ֈ g」b: $0?NYbqfbWI<1!? XK~ʪw3՗bq(- c< "(.w4z==DQC;~0%>׮џ{{Ԭgإ!d1y@O{^mvunhcCV>&R9O|9 NW׋Ew.:?<@9 9(5p(%i^KcAi ݆֭?";0A9d?EP^ge[UPvG 8X&tH=RnI7Ի4Ǿ 7p-5v5~7: 5-" ; G6fIG W9! )OH mƯ"džͣUFeYw'=H-KMPPL$G-@8. %>9 Ьֆ8dFL8Pl zp݀3r,N Z7*7AHNRRP"K@3_%=M)DZʼ^~֐O.lOr. y[#a/8ZAFD?= >:Y3)} z@b4ܿd9Q0O I!Vlq s w[(˕Һq '!(4XBLaRUVTRPI :'v ݹx{.rUղmZ!)/44q333.I$y M7ָ%Z3 =;X&077Y/V'k[^,2 u"4DO'W[[\VME(B<,E5ݡލ2)ϠaX+vr u#C+h0 5 7 2(D!#p ,~Iȭ'Q #+:HSSH]g-nLl%f^Q:"" $޸>`p'-S P!.8$:<:d=<-4 &6߈޵  #&-10P/0"/)&5k= űX .Xe[b+47;jDKMZKE{rBEGFC;1V$ Pb̞I8Z:χڴ3qw%NP#e] 2 yw/!&)($7"4 pJװїt}.ҥTڑ-( /BQ$M+Y/d/'/z/*Xr"naeUKx#  k _ԑ`yunl$e),18=?AC>?4# ר'j<]J P 1O{'V }/o;ԗֵ),  "^$)0g7:; 9+2)!m%+zѠ Ӳ߱ɷ,;'0ix,' $$-1 1$.-.,"?AGXN JoAJWXn]! ˤĖD-ƛѸD &1;CGIKOV1XPSB2 YZyW ˺Ս܊xJ )%"#b*_.m+P$x MMIyКQkK,C $1z?4FVD@@?;4I)=.[t-K.&փN@ v!,7>:@e?W;2\( $\ @f("^!%&"/)EIOɆ ՜b5?#u-8ERXVWN*Cu9.aYfы0IׅY-4kv\ c']"&#Fd2yu'OTix> p+#b)x,-/1342*7" =+7Ҽ"-ӨXwԹWߎ lNV^%'f"VH0Y=&M d >m1 )w ,<X<8*֛`Ov "-B5764.&BN 9" pߤJ ?uY_ -ޅ%\^g xH0!%'(.6e<;O5,#O"a#7d)q>֬ۍjYAqI$} 8ok*~Z k|BK  Mh~ț(¯?ըmWh)#y(-?/. 0H2/n)#(wG.9 xc=hGI !p ՟҂6+|Z" }f$,2b9CN1PKF=18%XLЈk4ƭǎR5ԏ7BU :#)*,/h/*5$E O-EL rg4#8+---&+%8v ֲdc=6*LS.׶ڠ}~'Uk s#@%#*!z*zȶnW8?K"T. 2R/,/R5=:71A/,(!#8Xsv6qXTx Om5  m "n5eF*h-[&bbK֐gƔņd|hik(.A1?0S1[S"FU>:;2'{J8VG\Z# L%tWVA:;̰" ` ;&p",K pfk rEO ?{  h O  =KtN(I#<0T-$9+ua>Q;PْMQ E 3EP2P R^,c9[I+ zy$)Vcs l-g7H>6ըPɵEckT*Zg-!s2o1'k#x$H'%A'j#MJKr(/.@ SWPGk@>$8'gA{؈̠꺄×bPz8M^W\Cceknk ^fC& }=ƶʔ aP(2H7 = FLNTvRBF.7gmNOE!(.5GDMH>Q3(!B) xK6:|%) vr&̺"Xi^x%!Vk(TQʟ0XP m*;GR}[WNMFA97)PK6f#[KûN8 A":H NVDdom]FL-LneQȟU ' -'2<6NVNB-3!s_.($*˄lR#.@9MKA@4&+{( Nc),)Y&~4!)-p)!Woش^z:ݝBg!3  "$-~379$// IT6̥ۼw4"3 )y3=BDlB=X?=3h&cwnMC4!'ZZ$'8ѲnM͐-ߩw  l(j3BG@f<"8,T` LM-F;$V["%+-=H(J,KID?,#Zܷħ7+Uô(*%<FOdX.]\TH9p#C :21ٺ3ӰْR#-376/Y(a? ~hG̼Me;Lv ZX8(,A* &V> ;{G Se ٥3ڰ ɮx'  "(2q<>?`BG@8. 6uc 4ԀNݰO] o!x6-H&T[\WM;V%~n>!Fwȡ˰pnBK~#:2=IUYZ$VILJ>L+F G$!{xiGf Y  g$))!g 7uۣٞcj5M$Z-2/$c:%foG' dBKS cŁQbx1( vt'1U8:c;P6,u(";KUVڅT'f >(4;<"><5/>$ Vz9ʺD-#kGuc+7< GJMK=,L og\Ir@D j!t'&'(U  ,ʑ!*0;< 'Q-,/30(IbQzVM"w!O tQɴeէH>l k"gWAf[ MJ-:mzw $v(-F230+${ˣгXed~K`" #1>zGKKJE<*u PҪcߩd 8k {),.v1111%$'<ܖ>e` 8οծo  !,w37;X7D*J} ?_p !<*/k2 8; Օ}^qb Y^+`HW!&f*K+.0H+a# Kϑaݮ~n)q"3BZJLMORIb4v *#FߜT܊ޢMF| X"z+2?:F<,$8 u{\ʗñ @J&^9$+++*($"c">sci2{S!9| h )R4ޘ,TC@ r>tCX c  ^= $)x0d0,Y,,\&? sNitX2@'"!*6?CD ?1" '+L(`A %(/4l5M.mڑӿ7xq' d$D  #5o 0).*9$W L H JkJ 2 r+j%B$@_7@?<9'F*S"bZ:y{67 $SH UϣȌpO5% "|';+381z' (/Tk ".9e:3)# xb б   f k%/2S2]3}3+7!F}> 6SE ``'-)3Z >$ 03XXq d8 # hEC  q HV~eDוрϑTA0?l#,/+5)L$Pb٦[k&29[97`2/& 'EԿC{ |+7e?d@?D>6(].XwM1[ 4~ S;~o M 4A pf 3 eET$> Z J= t}NQ9c΂ }J mj%(3**'""!U _hhEQ&/9d>y;780!a0Mv'/*b+0j%/786j0&X k@ n01!X]0 b'#H.7| jgO '7 Fx r G U g [Xl + pҪ3[7!.d q^&#_)E+S%6i7j>: $ &+$..,'&GEيJ΢Ԥc9|w0 {)265.#eXbgJ |~5 R`@K ۝FsW 'gh:5 LV { M ~ @P v D ؆۞#7O hbT< V& a!q+ <\,"E!- "d)+u'! R Wx-/ՉnyY{K)*46U0("6 CT Tuir63)!*X Wޏ ّh}'? _ Ndbx_ w;=Mg !]o)߯WEV B u &=9a EL&)%.w Wuz e۶.nСέhL{ݘjY@ ,15441/-$<8M6^O>Z& =`$=( %2~"/l[3) '*7 wl$!wyut Q޵ߜc50lg ? :D hmo^:j5 ? i 18L%P{YMtT]M z H  f/!۱G0ާgcZ u %# MYi_{ p"&"nc Qؖ׿Տf/qtK a7l!:&%"P  xl L, :_dG E{Qbv4 C==#iۖSYotE#U #!oC nP~ N *4"%# u ) یoߏM9|n Ub r#$$z H- zsy]iM2Rs Iro&37O$T r|1U j9 ,/ >=u / ސ51 `i8 lzD tQ:y  G{u>EW ?$Gvu@q/#'0)T$<K 'D0+3rj<# , A]pZdp} ` )1- !TH A <}z V U&/ ]3R_ +l U <V"q| |u  8,L kx25RW3 "c)+4*e%m8IS\U$< ec cTk 4/2`Y0 YN== 1 . F h]|e c[1  #pF!#$z f[$j J8!at]NY&+a+A$ j 'es +  vke/re? 6Wu9.Yێۢز$|U # +.L2c79609!ZkhE #-$wDb mB{Po׀۠YoU!$T#'-a(A\[&K,2< ?.ae*0AƆì©kqh+:k9%&[ ]_ۋZ$d1*-/ Psۤuݠ--d@; ?۔p R)0n354 8>3Hؓeq>1V o '"WS+1u&gMD@C;?0>/ng֋~ɵwۇYc 0P?Dh?>@I;*e.-*Ӥz}0I~]Jb$e hbOL0h ҕH(]@I OoYIc eV7 X%y4S0Ǟ{/NU#-'/;G9ME0!o Fzr "A6'368@<{A>D(=& 'b9׼5˦t! #.358:79"G |޾װ\|նLWf#g/}5QGg=($#<#kUa f$8AB|>?_DA@.xK߱B٩"ȼY'=KVc#mHiUH>% 5}[%/$ )/N;KQB)Gȶûə. '9.JLE 7 {ԖT(gC*:BF[NXXL8f" UӗƧȫ զL ")7o@>4# ۼ=-Vc] )):)$ \܏`& $38e>?<93"׀)@nC 4iE,k4:7q5-"/ 6oֶn^i ^I0e<CFIMFH>Q2}ƔrKOG'0R32++vIђD?:sƂ7҈E b*6?pHG<|/3=iv̖̔>Vز+?iJP&PG??05v.kʷ;#K9]LTSUNCA2 ?~\OɟɲDAC !C*0672x&}jAڣyZӁ߷%='S$]ZC6V,5Vpp%@ R,2:585e+f :iڐWDXnI +")37 :V7..i(HǺɻd c##T#$H$@GB6^ ~'046>3) #Ӵ֑X0+"7H9ש@P 0{s :jf&,141.'v(v<ݴT'+*u( )<% mtپУM6 ()c2i<>;:H4#fwaVLܒH}QL#,012/B+t 69ޢFl.*/a36_2"3 Օ a'4>O%/0[54942H#I SԺ6ߛdo y!.-" vOszr j%-&%,_+U k 35U}v| 9GKC^޼!ۂA >](/I,-0.)u޸RdcLlY#*[+&yV,8Z0N %"*#..z) GAmr&gi>&-0.G!= lب j X*"t)07< 8)&_vݩ،7,5LCi .!+`47k1)?$ W<ڡjyanZ+  NV'H0P>J!:$+-)1\0X;ًޝO+Z''d';2!X!-22.%[MPw[Kl=hIV  s9ΧӽQ $o087.l&OGV .8n70+#TWGщ΂ІҘVly q-3,643+!il6Ip  4z%%#4%!Qitb۝pNCb2"7FCB&N'*C*[-+U# 9JBR[9?wu/ޯ9~_ A6 cF#'w'0%cIsxSLj dEq*ޟv C&-303},'!Fdr+oZ+yh#(]*.-!' ik.jD| $<*.0* zfs$| 6@" f&0&zmܤ0.x\gOE!80U6Jg56 ")++&uJ^plZ+rH M  s-> ^ C# I[$3*+%"f u ,.޼#بrׇ_f!>%()*$)|2h="5$`^ wE.h7J~ &-.%,/= t a$),&e u ݑNB8G!1 oc : LC5 avX;zg;~cP- NU "*)$!5 O/0 u ]qx 9= vb&& &o;  Wt ~k"$#1 9@ M>[Bרڻ +#4),X*!\8AueM)o3 $.& 9Dn Hxuz {Q0'  &( $Q]S q_^l1R-8"&(:#L|'u>2Yn2]xaL|v&g<$v_& WB- [{Y\ GG( )0|7:<=7*&0D}GY*d]I KZ #;BȪ6̙GW"[3@;A2"% BA7D: @ ؈ӏR C! Im5@ ?e,"r')u$ \@A7 Uͯa~-0M=p9WO Hiy!(,*3 yNf("mwH "g:Pېt8qtKp n %"1XA LoK/D=~4&Sn$o=F  5*IT6yՎ('߰ *.S*"*az 6s v01AJ|ܼPϐS:ܬ f0k5p t ]"-1340&;e _muG:ٽrκVBͮ-uI}g1r  N !%u.;F KL;KE;9g$D;*"+QUx$d\w_]ٯL#(4x[/-=vFLQTRG:2e/u,+*#& ?zCIMPW__VcJ:)F4ߞ ڸٰ֯OYͫI\5hÔmڰ 4!C@LUC^1a]]U L~D@?t?C@,>P733/ %sei6?׾޸6Q xQ3ԹQ_U,Dh#(1&9dмϽձtbÝi=DRB $ 2l@,LNCKLE<41'0,()/X:BaB=:831-V&pb -;ż 487ي?V # R !''(-6;:86S8e>FPUZcafWgb`+SyB-w2"c٦AƄӷcǿXdݸ8ӡ2(څ@;3(s4QBHNU\a3b(]P?/" N ߄۞΍(%w˰J#](͚B0ޜ5j hp.v{>;u4*R1ٴ}+uÐb7͌ӮMb,*߬ޠPxz3$-5;61,('-%O  o έӨKƩ%8W^I; DL +eB#)(o-K6ATLJWo``YCQGI=c1#x9c.z߶Ÿu%Qβ>ٵ&͡X<1zb$D,5>DEF*KQvURKD=C7f3.{& '' RY2ߺzhL ϠeѤM\%H4 .%)-,( &&,$4;BMHIGFF,ECC@:=6n,e ^@Vtvizf.˽qőρ)`b5$,6hDQZ^_0aU`]\XxM=G,)7]P{~O7ogSسw#1 9W9y:*?CE0FrELDXFmJEMyNJB80)";~yvYǯ:ͩR ^ZkXhX p "+o3%9=B/GIsLNQ4UTMBf;5-#޲p󽔷8@m ˨ %ՠ0t? q!)4X@eHM-R^U[X^[WM@S4( a- y'%njɁÙڱ7b筭2½LXͲҡ,+Q, I &,3 8,9}85n3378=D@PA@{=82*$%&+,\(Bx"M̭׫sD%ir0[$ՁA&<TY  jl/%*,038AM#Y_~_{\YU?OFQ=0ITStѳ7P۲&EctԡҾ;JޤXi ':9'.E24`9v@xFJKIFB><:853),\ ! Oo a+αk@<6_34>9=*=9U4Y-%Y%3F<Ɏ;fXwxߧh~5]IoS HH 0>G N Q7P>NoMJB/8M-l$q #ӀѨҔTՕӝdL֌,S͋ VrD<7 O{%+]0h5@8788/6f44441+~#q*ElPWĨAұϷαeX 1 r "'R.,/-/38>KDDC`DA3;1%\i Z,uFhHė ʲVLޙf߸ݐ ڥ0S|yo'4&.5:?{DD?7:763%/)%$r#; ?q܏אt΁.wÎ9~.;դM^( 2Z c2 U$*/~/-+(7)M+R,.d/-'!"D։:VdJVXz1Ěxթ8Ek@d2K #+/2v6,:>QBEDA*;<4-'s ?jhqWK ֺӫӜպڥAЀLbQ7r 3 P"*.57677>9;,DIJIWHE=34E(0o~͢tByϑ=ڬ:!&koLd(h= /&-C6=SCGFBH@>>861K+&"-D֏ؤҙЫЀk"À+]EJ#'*-F0Y23358;&09>@2BBBB>:752.q)"Ur G+YEo}ӷxv"\ŒhfKFղ|d tv I* $+(,13S211010z/-/34R1)  e؁UGXPSĿʛ1 BB2BQ@<7D1,'O" (CO԰|q{֒ӋAl[3< L%g*-X00-+m,-/P21_/.-*k&"^8 j;P 5/^-ŻH|-(y| I #@ %,I0"131S2<46862n-'B>3.=Pȉ̛8̮ϟ۷V^Dl H]l `4G$c.6>CC.A=7a361].*(-#qR<ݳ1l}TC`H g%%U7%&ao]  q #&)+,+#*(()y(% $$# B* Q+"˿oEjݰf"p6= m>) "$;&)f,/u1223m.A%i U@LKݵݦ]ܱMݪ-.'nQMRNQ $+815530-*)+*,'! 5 )HPOvnU0y1%~$u @  ~ 0 k!#"$M'&%'p(*+*!)(>'L" y8(i;+ѹͮ!]Ѕ٘p+|jxvm4 |Oq#%v(-3652, 'F&&%~! IG ߓ!o{ FF/je ""y K$&%6&&&%%# II c;+aϓ79Iڧ)/8D4 n +k %+--n0367995,?!G=ߛ ס1aԭ_5h bTM*"60 - ^(06861--oULN:p@ضZٴۨږٹ S$v ' F$(*s,--4,+D.01.'7 Eswwcظүm, Ҳٵߔ&  nZ *M"|'*-y0c4)9C?LB>6,"g 9r^t<)؞pԚ2rG>ܨ@ #+..-'+((*++B--( ; 902(laҼeӻN!#ICFq1e, ) 7{2 FA^jXhjlvcFJ*tŕ7ҵ|CûX"5!'"xծQ5M"<GOX[KQ2EJl1 6-F]Wg^a#b^/J!A.NɈ s'%i uݣJ@_2AIIN1Y\"J3$8Z 0$m:EHFE9KA s<_ԮÎ0%Uu򵡩uJDŽ+V4ILV^o+{~oV<@$ 67r"..084#aڛ} (:?&v8Y:+c D8˖݅85+GW|apGxq `nIH60BݼEXm _!*t-"p wOҘv$e~D 1$4<79&B۵)ERWYgty:lR=p!f=i:!f*Z)Z"m ޚѰQؠ ?.BU[Y]J<( . ؐdP1>zGwP[ f7]K< !na ỶƆרo!,,!aٷ=nƤ}$]/G;BNTHOLMA)%1"-y6;HXQB2EO(3fT{5(((!9J๖tc/&DTV[_VD.;H i %243[-sUV?u 8V& * '0qϠӺ8 ":HJTsZVKT7DrK7.%;"$.oI8Iߺ 4'59$7P*(~HзӅ2Pi,CGVeWlh ^J40\ChԾ]$h!I&?zMfPLIU&2>7K7z.$ VlM'3?uNYX!\VEe2XL͢>wRޙuGmb_T>Au"/O;@:5'&{| Iy)<;IOWTPwF ;! eŨƏ͝d  ^ZpΤ \m3!2><;R>9+3b 1 "~+3|5*w#࿤Ʈyx  ҔѾ$Z*&!0:L)SJbBY9'e5z'La x 9hҜxپt̵]٨T0"F ,d^ M% .5FPP&LDy9(q V S -ŭ*˴ԢzZ &$(*%Rw )n5, *_4b<|JOK>F\9+w}ͅH>wazD CF NsLݜDD# *00,%P\ljc5k(!"%71N7:8. "$HZ&Ҟф[^X3YOQB)jb|#/554,wQz`QJj ?"A&(" TAn͚ΩXq& h:lވىNd|i 9 k-3c8?>F6). v&5 T $u{tϵΜ٫5}{Q pI;Tg [-6(=jCA8'd $|#0 R 9U/ '06 %,2f4X77>*D}qYߐ1<9, pJ6X2s %+'C Ik \$(U) ./6%2] ra_U_vN^a^ 9o Hh %&M'"( r' ,:nJHWJC;Ԝۭ޻- S< = ;"r.3[2>)A!Mu| Pf|1 8(ҭ$8# z)n8h?sT_ kKy#e0;>7`1,a ^sCXr}N^hbi!x! AJ Zj 4 #n*~/-%'Hƈ쳀> dU'9X@3)%~Cv3@CJLxEDA8%<b ~^9wD* +Ҳ2vF|ң$j݁^"592y9c?b/i"$"F!& O4@M[]`a|E$M d/fd% sðܥgC,ac}T+0 P$  6 m$/,HU3QS+VE;7$A##G4)&*Rz6呟!Ʃn \ v3?%1QhFoJvxqKj?±* ">G\kr|rH;Pʶ?Ó8Z  VƘf`P=#;4?uNLW+)T9 2DC2INWUQ2QY L2.52.G'Vښ9H&7=jA <ȿHrg#wPlkx4^vM#Wد! D(;_;97;FCq74Bvڠ2qi^h6z؛ME#4<LNO0CWFL'")Q)~ʬ'Й¬Ӯ'+I]sqN.l׌ۊ q  **4GOB.9FF2H)& ӫO˒ %>U Q=V* 6Pٳe2$ORiJ6^TA3A5XwvS|<].z(Ǚ~ x$98^-OIõ "=.X߿mAp 3Ā$Y *x6+AOJQzMG52D*fX.73+'/5-֣{1,'SoebC5Ѫⶲ2 i,|Ncdpp^!=r7;`(3l$-#ܽy>x;nH.G3[yisnmi3U7#f%P*+,*u -mNPA/Zl& 96X˳kw )7@#D@*$R.CCW"iRuuʵזckA 'Ӫ`ώ BIK?4/(#)&5AE@ 9*4575j22F&}EʄӜӀjy>SRʿtRm)#0AD4"fr1 "A07Jd,rztvV8ynXF( # Ī6,:2m*s% G)0;KMF;+d!b[<\U)&& ɴ^ûVՄhmJ 3/Źڸ(çЇ#5N^\P:!~ g,)?5:>CDJ=U.SG5~xĖ:'!78ϯ[ P 0TjT .:@CT:c*bYjK3`MJu  $ 縝5&a)S? A>k#O>WO)?R\0ddjZGk4$ 0X@ i%(}%hv͊A:eɁ-:'վǷx[G9sS(`3<:){qx1+T:BODVgROOKKA4-"C 'KbӝDUվҥ߰@=&c*k/&%Q!*:N-^Hh;n)gTv@))ns{lӵ̺I˚Գ{ځҲF\+ f'P/5?D >q3#$ }&'$z'188721*)L3!Cγɂ.O[n鯶ݮ[ !^22>2;;@L>277:9772'O $x*+0U/t&L!F0fԡ*НmMme8qW#.a:KVY]ZRE-  z`L# ZT;ıpĔ0xFةA) xJe}!81BP+]a&UB80Z*m*/-'E#%ru^KʴAvcl _z[3p)2q95(~"$&%*-))G.//6OCKNEK};n$ IRݗܙ"ԓ9$ ߥ ~sg$-3ۻ'd @Lfm O 0u&-?9HY^WPRC.e!@eP)  $Cm=͘QB7p1#?T ("82?=;+3%0"#&-S1D4 8=7K31K31(KF}qIъН@:eu]vu Pi 5 .t,X%t+!,=2T?#GFBR9#*`qjkԤ]8uoϰνϮ9)}wG&zݼ` 0&&-;D II@n1$MS5 -#UJקTo;֙Ӹזsڒd$3$><7@3.*f%4#%$ ')&%--2u/s/*?_*Ev]!ڑؐڌ߈6<ϒO[4;т5pB ]&lO4 r$-148B?FFIGF;+[ "SN^~ {i~y@D O= C ;OlF/-b!cL*68-BD=/4Y. ,*" e_0 LvTۏܠ0k6CSҭKw_, !H'j% " b *Z+ -3:BoDw>2#K UAG&;9crˉˤ߳Z8F' ."+k5B>CCK<1'!K >rתփη?RgԘؓ;ہ՞] p*^5::Y7)0T+)P#5) " (.+1 4;97o7ߌnV XܭԽH6""J /R 7F_H#$$%*.3N8t97-8 A z; EBwI.Vƿ4̐"*"X#nMHk*;J5RO`C=5G.%/A S p`yy؃ԷEK$b1۟5 *-,,'-)m##((&Y$####%l(#(9 #cb>:y{S1Б/Qc ` 8d \<"$d+C9DA90\&IC7:_r9ELfKhNlk& &4}<7o1/,%'p +=# ]мӂm10ITzqڹ^ql n*-.#1-$<gLr1%--(% c>c p%?)S(=6#tv9 i!##'+/7/:Y62,( /2swe)0̥p?-wS'/!E:\Bi+37;=47*"MD ,?=ڷ0Xߞ1U7 \(!%q#p'/00.+_)~ Lnp x@ٖj?c99bhNnTwF"JB(.Z1453Q.%%  6enr);޳b-;"ߛَ`>Vc= $*,,a'c7bY((;c ي2R7+!_ E8rz !o&*-(.c*" bL UA_sr۾yk5O]##tUf o_D#,N0./0/(+ DO + [vը2ۺ&:ߓ hs)$%:"0=G!R Uov S9|CW+N'*`@iާs/UIu < g (06:7+  Ou) d1SY' j^>$Z oL#'+,&"]#" 3U < } <ܚ=LF=׮ڑSX !X!n  9! 2"O#}$%'"(o M6ߙPwN*q#Cxt$~"Y)064 +!=1 .hl` V1trB/NtNY x"$**w)*<''Uk J@>!EZK X0y7$TfJ$&# '#'&7&]'"[< kW{m"UL_p^P}9iuS  y= ~"-^356R6/$ &g'It< pCg+O:Kl<$ 7l!j#nx #"dcQ:y0>]۽A!`Q k9 t  D O6_d #&h&#  5#k;f]p5MHm9 x 9.!A :-"!R$)*(!jX!s 2Or!^ߙցԜ7G"*'_.6.Qa fKk#w#! ߵʉvڌZe`֣rt ( 20 :3B"$B'p`}#0O2892;w1t1),{zR\BN"2+(Y# to "\9lE@@=fzϵvgT%.!3G>:e<2$۴'+308!AHҴ]kz:6>7FsI].$ٴE -*,9t=D?=F>#(͇t/vA_AC;A""ҡ`*4`4<9մ>S$3 9+n:AZH;9݇ĴC6D##8BP/YsH3$5.¬eNA+NYXVXQ-{;vۄpf {O g,ִՠqΖ7xEP_Y}>F&8YJ)SH^=gYpqU]+lfƛ,UUz# 5-3%z"=Jǻ ,*?;" ԺSm T.Ogv{}{\9es]*]E7' (\zҹG ֯^m d:h)OY?>Yw\nHr pZ555Tc2eh`@'z(C棱齬Aݩ7m:I;jlŊt[k,dDG@>0B&&.@pY?kyzGjF/-}D+P}V Mjҡ7TPלu/jo e a݄1!}9 O ]nyp_H/A S$b(/=FKQJ380 haۢ}ɞ?߉պɛ`/GMKhC5)#"$s+.%6,FcR_qujS3uݑz3(TٶtkݷǞwVR 8B+Ko0#0tCLWAisv\ulZE6,&\ OL z+v=ذ`:WŋY 4N&^1eif^NA=>FNPVXUX`^zZ&LA8޾] ĭǬCԦ"۶((b/%3(Ib+%>05BLP"^p~)w[?% (5NxUōσNHTa $SD׎ N,13|&L%.4P<HPWYeu5}E{hR8B 'bU 9ɚͲ]?֣ۦf}mLoN  jW*O$0ApTaq3StN^p8N;?AEID@F^I[KsQ}O:B* ֑΄Gг< x zBd𷖺T۫$=$nNX# #X(3CMyU`Qc]+R(<}(h:}Qɥ;Qtܳ :wMaE4"*\5&EQZ[.K9 0&!%&+8+5,Q+% %`'(M${މΞv'lL˿=_mOV5ƬO,89t/=&D#d%+'*2: F NR$SE7-l4=ߒӭ݆>Үǃ̸eE u s5).38AKI/=0%R 0uwEZ=xL"ڑܡ/J6^n] UD-COJq?3Z%\ |L> ƣɠ;Yָ-t.Dۖ@0vg$NV#R)-936T8=yB:(~`VD9%+ELbȇIYh=LS|F,n(,/>:$JNHoAX4"( h0!_[t  /A2 !19MFG=D7&# %*,*(.3&+ ! hmٖ0W x &r, )$5g} 1$*.n2=GVGzAp83&q<`PSL쿐ʥ8cݑW8P*,fr%!P j bSz "''U0?HWN\NB3%L_Y U!σگb8RDo5 H6 C{'=IP-RH+:q.r)9**c+.2/+/41+ NܥI™fc7~k %!Ɠҽ`$*c'""%+d15x?W4Uc/:<8# n2 gu#42;=M=V67@H1 +k`' թ+`':$(//*eoƒN,^ny4pU[nz~Al,B$&8F]!l0<92H,W@CퟺOpׯA3 (*J&/V85 iÈރzG#5Q\U`eBmorW2&D mdT?S 5"I(0#*6·&4FL@ ʨ r ~=%*}% jϚЪא?0#0PHi}/,qQ, -ن{ʥKb 0Ѕ Ti*So'K' 'i%*[^DŽ Ũ>H׷{ l!# *W -DT]_TIF[3f}Ո"צ{&R )Adפ^v&Gٙp L%+14>&  x7\|+7A'GC@1 ˻uǴ ܔ!+)$%׃Mj*9=?G@0< "NAx{ 9 9罄 :!K~ Y${+4^+)%ۺGaX 2FdQ>LIHo9! c؟ؖߥP  .;Ԋ!'.,! OX'4*6s-[1c3S a i*25=@6TTMܱ) ˜;NN?TE^]p^  a&*1 ٞ㯳hpÆe_ &68(C/ADh> 4AEHjNCTL:&- <)ٸHؤ. wMfR˦΅V iy)uANJES :#s/6@I>@. TmF.Φ|٭[)a3=MVpVUM=k-B*iQ   krv֨|q'AΣ|Q1053LI#h4BFeKW#^\WIY8U$? 3fD[wۑvJq=l$C%U24V$(b),'i"ܹmԸL ޷w#A p|۠9 ,48H>KEA6.4 Cy@u OxS͈ɖh˃^ޑ$' P + 'DmE)338d6U8)=5(Q U~D"2=#/7n72"~(D X%  %8= N~)%E ,##)2S5634)l_F  bPMզسC1AQa+e p" [F j#h"%+p*(9$iׯԮאن Gf  <\!ܜ߹G7v;'x.H1<.#[ | .-z4> p iϺDqn&  CY'b| AO")2R; ;/;%v F޵b\6 Af+c+I6!I!35oq}B EVd #&* -%3d4"ϸfٜ-KB z ZGq)|<p Rq(6=D7j/;'y w%rqMw V"k7ٿQ2Ha)= OH&GtA  (j]6%"3<=9/o#f!7lM3PDj s rŲbHڛ( 1'&.0,($JV i"))*@/ 0+!+yEZΉͩBҀ-V[(o8T`Y* ? -'9BD3=5/"M6 e  uPˆ0ϽjP T !%'(.$7DLHB(9).U FKQm1t'b9҆ȁȏɵlD}boB C1Z!*120$-f+/1~-($:f߳ר>3ͩ^K%sbY02 D&Mi (F/0/[/* )(X}*kwaa މՎς $({:ҶJ߅ `LsQ8J>e >=2*@F2IIA2;'$f `t=N = oT2L͒ϑS}" jA!"%"v)O6j@BCB58{&B!:Wݒ6R<B:nׂX-(ye>M 6 q~>""5#!P"-Dڧ^L?An b-B(_^1WW=#(042L-$ r ?gzj\M nަ6oa7;4 1 w0~S  Z 5J"*/X-b%OY gP` Oj G}Yp7ٺԫW ! - tNR3 S ?(^ bf^(CKf:  0/hiCmF "l(*(  2o/S?,W \u  4+/CY+X VAx%  I#Y$! TW]C#s}>x |Chg-*r]g\C0}  - Cl J}vtyY(Ѥq)i| `UsF -" }i]3 !(,+$wJ `#V`+vL@$H*mPoWG 6o 9qWS- O!!&T%Z*CIDFgaawWmt< #&~%e a[  c \j gCoJ߮#EќּߖiA Vj> +V Qw"$k*02F-& `sF 7UN[r+ܲT7q| #o$.!iv Va [J #%'0,*/&m}jK׮3%<BpQ Io ()'%'&t!oIp  b Cڒճհ\؎ܝfq7 id|%/78540$ 3^r0QS3bٍُܪvopK c PA > Y $~%f(*/K52M*$ Fs9ڬ۴%b?9wt '+(#!]!bF u io:6 $z70פ ۙ |;gfQ( +5,368V8~2'[D1 W j:"eOYگm]cF R DfVw J{P+3H40*g& xC23yB6@Qv @&&  4'  yFED`iZJjTC50?t [o"!/m([ sd+"gLlZ T/:{ ] XHeD=3 o S< )&,8id?`$laG EC c s3Rqc  K\6D~b0Cl;QRh& ]x)"i!W O#Ga!D%UߖYerRH) 8p !9"$=&P# >9)7v U$%#QZM6()0  # VL }p?L{x(ʚ Rp6D5hW5~BgEدؗ` K#1H_b`(@"l}m/"=*1'8REGk #&Q&!:%," 9%-f015327.Q)I#M,0[9<ڦӱgɪȤƯ@ڥXZOZ Y &I09j@EFID@;o1(#y "  > 5s 7byQ9 Sr m .b- LߜDIђYҲՃݕZtں+|YV \$)}/&33200Y39431 -)a&r""!"p$3%g'**i%7< G`u @c15q 1+U.1;>E3BJY+o҉Nr#nڇ9td/^k~NQ"e%w$#r%+(*-,,X..o..,.K10/1/1.(!asY !]"'" f""'[? p۴s^;c`!E2p~]ҿgÚPͶq֥J߅ofo0Av![W&+zCk#(0;;tC+H?KLLKD;2'-=*%"}"V##"#`'9-0}356t62,}#' c@  3b`yf!3PV*5!"cEcH6G:#(5Ch&3/7>CEzBACQGIoFEBK?Z991x,);&"( &#<(-r.+*k(&r$@ };O& S-9g&ߡ?ۮR$Kۈ)DZ붰аX[6-VƚͨRo]Lߍ* I8 (01"247<@NC GIIHFEDE FgEE=HF>!95|331-+O)$N x~Q" (Xtb'?jߔܨ6ҁ޼1డ9DrֽTyz 6h/GiB# *W  %*/v4.:`?FOU[djke[SLMC=<;9899*:;;6u321y-%+W :*2ߦ_@Qr,,צ6lO=}$csqea9νl2ϦR]QnT<\ 0 (/9EQ[2_beMecR^YUgQoN"JDOCB1>C;<@|EFDjA<84D0 -(`$J ` +f^,ݡی޾pߗܖwh ַϘyÊ!O4ͳŴ¶1CɲPӹ3?Ѷuۃx?A3 $\'&+5118?FKMSV/UU6XYGXT5SSS'T=T>RNIEB8>:8q4.*-(P%!F"%%  zCۦ9R:ҭ\ۿ1؆ д*Lɒ'qBcF{jں}d5maηK2$`!+4r=BeGLRX![ZhYzVSSP'ONFKGFMGHGD@<:q9631[,'4 LQ_H*`e&'[ahҗ ̃ʮVuԣנ\Ժ w̝`ɜűrݑ =@ n'1f::BHMQ QHQ$SFT>SOLKIH~HHK^QUFWVYRMG?:08o75/*&!Ky3HGT۩џ͐[пМ\uɻ¸ƿ-^'ɺ̬ЬKp{KIݭfy B#(,q/2`6777^9G>@U??2@AE(H2I7JeIG<(=94;2/,*$iAjY>ۮ&>y˅ =7% W8)Iʍ!vܧn3F"M +'0f6|;AF LNO>O'MuJFiB>y;x99727C98 50,B**J-(1444/)c& #h aZדJ`-ZɖH.Ii5"t[g"eNdF &.09?FK[MMxNxQbS/PKH5D?bn hǰʼnÌƽBw_ůLmmѧؒݎ'  hA'.3;59>g@?@CFLIJKIQHqIJLOJQRTOJIHE@BFWJcLhIAC>:86g67k9;>N>96z3"1.-.R.)V#,Z c$Ts'*:l|od^N ,wםҚvlɯȺ_yrŏd.uпtff2ͱ֎0|ޮ6J k!#+6?DI9NRDUTNRMIhHHHuH3HIKJKONcNLH%D'@<'9s61-)#X *L! m{ܣՌ:oнvM1ƊW­ Vz Ӌ̢yԬOc $&,3;BFHWHGFFFHKNQRFRkQ%QOHB>U:"62.i+% Sv:r b-V6q{ܻؗ#6ԻDD_ƋA(K Vy̫ǀbāź\R[vҸlܼ S  I@#;)-16k=DJeMNNN*PPOQRTVURsQ4OLmIED,Bq> :%51/+&g!f6 r8c׹ˤPȅ!;&©BƷƮƧU73)^EO^̄ѯ܄ rzo& !p,6-?FZOURXWXUR?R?S VfY]mdj&nuq uxzzvqElfa]Y0VQPK+D;1)8D *&z/߿WŌعyNI"ѨƢT,흓-ϖ>LC2M?ǂYo_ '06;m?bCsGXJVNRW]acgjjkknrvz}$A}wqpkf aZUQ\LYE.>84/*#2L )Ҥ̶ŢG{H`igC:7ovhƝgF3&=G6+30z/00w.>*i%p F @ la5ݓէú4̮rGڱL1b6LjX,oK;:8840 ,]% &}ږ!}uTѦYWtڂ܇ۏז\И'͂m""A}%7a Q$(-c25976Y66z3[10016 <@)CmEGE@9&582$.P(#}? L(lxW:ZM3K6<}$d0֕ӸoaPמFk)I3ڎ][9 Y> !!H!"##! "(&D)%-27677V67889.:h:98q7(633210/-(5#a RMaZJJ_b,F::e:9Q8 64?1g+w%- <Tߵ[ӝi+6P7xr #۰ 7!uތ+I3 Ǣg0 XԯQߓ7Z xB *3;BxIM3Q1Vy\@dkqsx~{}Iw[q]mJj gad}baa`b]X(SLD:/&< df:f4̻gbiu)Uǚu؜ϝp#I ۲}"q޼P$ȂVyv `Fx"1*19@iFSLhRV9Z]`bgRjkVosxe}zpe`ZOE;y2)["L} [[!I͟ƨ̴*?L橮oӻYÜF ӀTg$j +q!_"#D&*f/J4[:wAHNRUXXWSVXUUWWVhUS-QMiG:BG<4=-;& e  \ ? CFmtǎj˽)`,Q.01^46/8d9e95!0p+2&bf   \-cUSQ!06Yiv|xOvnۗוzTG4,th"K+ ]O;/a~`<^#860<^/DS WZ6^Ke Mk:vutDg : 7 { ~YP'}i^5f  w; YWg}2ֳVfҭhвn8͖%{ɿ|BɃʎɌ̣7y>IT i@,L$ =$&*.279t;=>AkDEHJMMLIF B=9520.;-0+u)_(%""!K ,qh _P`զ ⸩y W,P``/ߔ̒)-䌎` čǣ(Оؒ4K a&/,/37:Z>9ABEeJOT6XZ^nb c)babOlLUKJHGFDT@:l6t2*O!-z;;b@ ٱ-.Zw̅όuA]ѷ&ǡХ{۩\*&-%4GNU}\4eKn}v)}6|up^jd^'UKoCH;3,&"X8fRL67?0تї{ٖy Ҙܝ%w 𵸸G-t)Bë̮`7h "%(,/136a;}?CGlMT[G`c6gijhfdgb_\XTQ1NJ2GVCZ@,;43e,&A~ K "ǗʵGŢ4{㷖uTNVE '9]vT/33:1 vP. $(i+,/3G7989<;9a76240-+);'&5&H&&d'&#T }2sR0 }@ZjnIAJrH;Eb6,^7lJ؝ծѫΑL<̪Cբۋ)DUi}C #z H?f z 'Y4b=Rm&%~tt.vDLbN/ qY= >y Tmk } G \ #E? VC 3 Eda߹ـgٿ~UéKFc k%>M T h   ^ E % ,;1)56556/7l8887r75E2b0.!+c&#O!a / ~ !'####s!G 0ַׅڵqep`K dXb\18p,. Z 2M \#%'&,15}8;?CHLSQSUWDVTyTTTTTUXXX.YPYWXfUQPKD>J7.'v0 gCmKjߏڞfϐ@b vk^ʀځӄˇˎUitѫղLCѬ/ڮ6uNY&I.49?EKRW:\w`cbee etdmd=dTdegjjk lnJru#vsoplgaZSMG?k6-%V m@ۇӌ01)˨Ӛ;rhډ{u> 򲥴\3v(x &.6>GNtV\_acfik&nbruxV|{wsmokehbZ|SpMuF>4+#w 1}_эG e ƝR#gqעz?YR-zHjQ:`e  $)0/5<DRM7WK^cjZqvz{P}Y~~|5zzw2smd\VPK5H EAC>:93-%!avN%Ǽ˵Z!x ,DVSZ--NOFfcްU.wǪ]*PWG, &p!,)D.159=A7FKRYP_ecegbiRgbJ^ \ZYYZZXUOI@7Z.k$ . wJ?ܤϧɁB;G̿Ƹi4fuҸ.ڼL_ XFֿtypHq AEj 0"%*-0T345d54310E.*@)Y)-*+f-k//220-*'$! B _/V~E߃ݴQٸף֏aCء-d3TLEu /  )$).10.*^&*!i??w G/<7I:TZI|?wTajk^b%O- E E T9|+ t s  @$  aO'W&{oԱЪɠ1Öpɴ+[ԋ k]G_p * hR$(,<0220/6/.-,,+})Z'2$ u !4#&l*8-024?41.a+&"* 4z> P.$ ړٵ֕]Ʒ?(^а[/߫įi/ ͅL}hs wa$ W" &*{AEHLMNVMPLKKLvL=MNOP)QONDKEF@d:4 /*&%:$#m!rGQ}W H/QA'#9Jsܚ˛1㟯r")Рᣑt ˰&X׮ni~$s*/0376f889T;"=?^BCFQHK[NQV\B`hbbcjc2b`^>]ZW5S3OK3E@>6,u%K Mr wދ"ìIJeϣ>9:YJ/З./YǰgŗxB{[I==!S%A+U15:n?ZDJ_O9TX[_2dfhjlml1kjzijfqc`_\YOUJP'LInDA>_82K+#cV5OCiDɻrvGئGE#{UHӡ]dѮVпµj)иce" 305'0C9B&LMTYf]faefhFjkmFn%mkiZgda\Y"WT`PKHE@:4I.&(E uyVDh$5&a`C~@IqE6wŴY+]RZpi q$L*/391?CIOU>Z\_udgjl ltidf4b ]WS"ROKG}B= 8Y1+y&z2 A&yn,f+.Lz[úH,bc_ fGp^gTxe ֝X>@ߜ>6z4 BZ#&r'*4-./t0x124H5%79<?)@ABDEDA@=D:7 5S1, '  y=>YQneukߤKd)W=>0XKrԔ޻EJ17,  to?EEQr o OyY&w1Mp/r=8;-axyVaz>3RjYA/@_8q a/G| \ m3v55ݸ>خՎԭ[WݐB^N030N :tbp= LtU ##$~%$"T3- 2x@|VG`rZVb+ڽ?DS #X$Q+TF_]R  dEi"%v&t(*-2256.9O;;===r=v<:987Q7655576543 2/Q,c)&"E"|B hsҋɃ6=oJ!?/#Ƨ,ѴM- e  #.$$q%}%#!#(.5=TDJMP{S=U|VaX~YkYX ;72-w)$yhZO :`ܪdůЪ@=AFg([0j*гh5 (Aft1/eWX[@]7!8(/6;@CEFGPItLO;SWYl\^_`beEfbd`] ZtW{TPLM^I/C/<4-([#I5 v`A=ß;I-E})٭ŮQ'Lx„"S;61+n$ .*ߡFQuwȮŴnʴ󱸱.CST䯀Z$1 Pi̜rҚj{ݏQxa #e)X. 3*7P:==AHEKQfVY\_a_]Z-WSqOKIH}G6GECA=60)##03X΢̮Fʢ5Kǖav!ӻÓƩʳBϿ̀I˒IпӰH۔P*%  @ +s{#x(:+|,-}.s/P00258; ?3B1FHtH Ec?9i2+&$1"F kOv 4.MT37ܗDՊм̜GͱӾAfЉpv-޺nW!% $7 4 ~h&  ,!9!""5 lb^w>5=uF}:p$ T4~+vsYW?/ G?52BT-e!Q&6 ? '&mfFlC4jgC 4 31|Z4߳ݪۂޒqrzx<8k|d  ^ %@x ^p V`5I7 LS2 Tm^ 4 h Qc " 4^:a&HϕHMŒ6ZUxEAѕEݱ?e@Y T!d%&&H'c'f''&'b(s''()++*)*;**,a,:,*'$c 4D\`r 9L GjQݱ+.˻ -]ǓC&Ȅ˺ړMp q #'+/,4 8L;?DGJKMP1PNMKI=HF&DA?<:862/*[$  rA&448 ȹíL0WozF ⶕ!Y߽ҾK9ɄvxНԆ~u.%iG"#%e'>)-,(/h2<7=CJyMP`SUVW@WVUTSdQ%O2M3IDiA>_:"5 0,(1$(,U6;ۂԯ Cę4)[!󫊫ષʫ毌7¼L˶g2֬O٠I=V #k 0"x)0"8=@BCEMH,JL0OPtSWV}XiZ[r]][[FY'WRLE?!<8\3/_,l($E 8SӴ,ֿcp\:=Iʸ?@пg¶mŮ?jTPx,:-#f% '"(-726Y:d>BEGIPKMMMM@MMN[OP$RRPLPGB>9M4-& $d 14o790=@(DEE=F FDVBs?<9B62/+(&#|V/\ %_amܰzr/ۙ/I`Uҵlغ'߂9"#6h3C/c .  jM r!.B! Y 7!?"! &9FQ  R 4 iKAbB x$Q<<|K8d}s*KH[a\m\ n GQF:bw)<  <w ] hfI < nL# V 1 q 6)F t{ .RZ  Fc 'X:fJcہةՅacPmҡԯW B:%JzFy Mfl!!~ ' IG&6|!X"B! k  5   l  .8CvS(*1`ԚAηdɷǩ)Â_EÍ7lpr ܓN `2)w #'j))*.P12m45d79;<=>?@%@ ?}>L=/A4DGKJOdQNRR$RZP4M"J6HEB>9406*A%P!O2  $I{iB*]* \ZǏϞХ^ѲRεHOφvRԂbJu}}jM0 V9f y v%)-c13}454-5@79g:R:`9!97c41/-0+'%$" ' 0J u7';.5p٬בWmTah[ڸUՙ a&] V*qp47s    _ ($'))&Y"ryy)]g8i 7  +2E.Ig*ds-fnN"Am]@55Z;cc>U` 5 rgav  )b%48cPb5r"|<\R u ! D-  J^dk6xMX] jt jO b4W]$ t*^-Bݑuڕ!ߤb7v 5 &AA%]Y7S1*`jS#^xjR :aBi_"c( 1? aW۔էѾ{KϹt0˃;́̚\ʜ*)H]4k yWwD#m(@,b049=@BFHJJ5KKKLNPR?ROKGHD[A=:8 51+$ T NvށؓmWV!I[UxǘϘ}æ]%zVƂRbs+!""a$;'3,3:nA HL_Q%VGZ^Pbc~cAdefSfe*dao_{\Y.YXVS;NHB6:1(u D EqCXEİq_ܞƜ=[աCF3԰ᵞ;|3> Rt pl 0T ks& %C()A))('W'n(*,-+//0B48;>@@A>u94.)G%w k e j)HYsY-! S˧ykɲ΂ypbڶڙ1t=ԞוۺCO)w-HUW /N}"&+- .2.~--90^387h;?AAbAKA,A@>U:50)#8 TPe 7Moy'((O^K̕ɏ~ǕuȦzǥ^;<%Ϳ40=Lƹe_Wi6p!*17c=CHLZO]QR SdSWUlX&[-]H_`aa_[UM"E=354.U)%"$ W ߳؇ңei&ģUUX]ݳ 7[igʳw eUB%  a"2(/4^:?#BODDB>a80f*=$oBf*?k7^gb] 1Qx%GJqHh A # ~ a/ l!b$f%z$"6 D9"R N޺܋ߥ[fSnAxtTtv]9#e'),-..//-L-.-,+++f+(#4 0^4[0ؽֆ+Dןդ՗mޅX?^A{/6`i,'Zif hu|#&)E+++)E&=#Y )5k^P- + ԥ֗۔ߦO%&3Gh r#'z+W,++(+++9+*)(~%*!yOj L #9kP͜Ţ1@sƼMe3CdIw~Xwn!,&B),037=pC4KRX[]0`aaQa~^=[WZRNLKJJJHBD?g;50)!8@ M "'Ы \!3\\ŇEFIZTќ xGܼQ…=Oo##.w8 CK.RXai3pszvOyF|yzmtAmcZWDJ_=g0#< ys4gI B8~]?XBߛ!֢ۦ"Y)ܕe9B  '%,04"894}0-+,$+%)/%  $-'&EոԵ[Ƞjɼ`dW/2wgjрXd.&] q cia~#h'P)**)++R,,*$*i(#'Eb_- -e&b14nAb%L ^hT*n7!9$B&c'1&"2C  v#YoA HQqOȵM DZƓźeÓz!R+*պ[_ъ֒!ZM_L',a15%9=o;E7P1) YPԨhǣ鼵ɯ ga Sk0ْz盲RשiĩȵԱYe p'2>=FOWe]$bfilpuz~xonh_S`G:U- ؈y˵G.і**ؓȝ-Ǩ;fÙ˩@ h *3h!%O**: *ݫEӄΛXǤ!ōeνfXdW@ŻM3ٞ:aC ApT%+0 58:F;d:Y9863X1J."*% o : 8&{bDFv@?yny^BkGrW/nM\J <Fkc 4 fSh"#$#;"j_ _yXAe1 ԵIݴ䴹Q!&E;d}3%IM( 5 "&&1+%03698q88M8a9@:Z; =>@ADGMKNmP|QOpLtG@H91)! !pڽp,m59:Dq%HݜǢ°a8~YԂ y48#)/369i<>AvEHKMsOOOO{PR1SSETiRNID>600*#F` ePO\߽'ħ⺛)Zb` )Œ)>\=̓!Uft[l !,#q).r379;F?CIOU[`bb^YKSLK B962+&"x* }T-ޖ @U#覘ͧ!ӭj~̽zDZʪb x.^k Rp dl~e"]&),i/26:>yCAH:NS'WWVS,PKFAI=97,64~1-&? YLs  ͺ| H㦣jdٙ.cZ¿=8ز&zyK m<l$*G049E=AZGLQVW\&adfQh iMgd`K]YVoS`OIB^:81(z!tn C~ޓ|7ǵGx)󿌾Y{Ͷэ"ٙmonDv \o`&F/7=@BBC(B3A@AOA'AJ@_>;`950+(%<#mZ "+H%?D-B ,*ighfr }1i*A: 1x )m @ F lnV"ۚ +ßãVOӐOݖuVJT s~#B).37;1=\=<96I420.-,+,-////.*U')# K b!lf(ʿó񨍧.B\1lNl0!#_N5هX'+a l '-2v8_=@*EKS;]uebl]rvx6zlzy*yxrw[tp#kwd[RH%?5+t!uM.#ћӮ٣lÕٖmĞϡǧc7Ǿ,hǵ0H tS. x Z E&.4w:$?CHMQVo[^acefyfda^CZ VRmOLCJE>6Z.%  N07EӨ.z<ƑfɸƷ߶;)嵘L|H۷\Hq t;"]'I+,/G368:=@AA@s>s;'85t3%2421/@,'#u i3 M$y'6.4$݀+G^_gF4, 8_"#|%r%}$##")!7d+T  iֳӟNXy>ߌ,W:@] d_  c g$(-148~;>@1BBrB3A#@">:e863/*%g3y iAtBfBRA?(;73T0,)&# x a TVؿc̺TɼѾ~ ¶eƖR͸Ѱ ع"JN+_ -d!^6T":%(,197@=BlGJ~MOP3P$O9MJPH0FCA\>:60*]$bloo;ޯɹ+)ͨpͣɡϢ}ۨѬ©[*(/G; ?#i+2u9@GMQ2TVpYM[]_pahbbaT`]ZWSMHC!>95}2-\'y AQбY)VҸ roeVij*O$MLˆCm5ݢ8g]-&Kc!$'+/F4?8i;{>M@@f@l?=s;{97655Q52.{)M$ L1 ]p$vAj ߧߗ`ݜpًؒI1e >Jj`2 tQ%t}@ _ t2Vg7]ۨs8nf-*@ ?"r$%m'2('^'_&$"1 mw%]` C b 2 ,~ 98:Ns0*OޙmwH gÈĹĄĴ%ˎy9 ( $>).3 9R>DKPZU/XYhZgZYXVUUTQ(NCJE%A<84&0*4$ !&^MU€ԷNl˲1H#/0v籮R[vq|j1YK L'G/49i>*CyH>MDQ UUWW&UR:PNLKWJHD}@X;5/ *1$-%G K,1(( IbY=:Ą4]Y"$/Ϋ?Ժ5% Z qI!$($+C,-/1S46[9W;<<;_9.631J.p)$4h؜(Ԭ{?-(fS;ӋX5I~[Rc H X#4%''t&$! P!"&$ %.%$f#6!}c q#GVi)4Cd+Vݞ֍\۠T;αȆCT箔ű[: SA‚l˾rٛ܁$#Vc1 dE""*06<"BTGKN;QRHTVY@\]^a_7_^^_]\ZWRJAr8/$\&$'&_OA =M^]ϱ{O~/͔_Rb|f? b#k $A)~,.01d2.3q469:;;:9876541.l+?(%K#> 5Up GsU \߭ݑ֡Ѷ[SwՠAvd&fuB dvDI $r1}&5H.ytq+$ TzU`  p 2 & $? l  Y/e; jFLrT۪6xнo.zq.R|/hM1#y߶ (K ]~.!,&)-5148:=>? @?&?> <`9k643Z211 0~.+'" fwuύǓµ#"J$Íʭֳ Fމvti p!j#X(-V3I8;>?c@@@@&?u=:7l5*4W456653O@@?<803>-'! ` .Ѧ$ǃĮkƕdvԭطzM4ߋ36lyXxU 3~S !8"""""E!9!?"\$&2(('%#!y hV "gJ߂ؘi;NԆԖԖ ҟБxwяXեvAzsvgC[8P "=(+.X/001358;>@AA@J>;61,*&Hb %@om"~&)(+H-DnR_Og]y ")/4.9=@B7D EE;DB Ao?x=:N60*$AgBe. 23܇-WF֞SӑҲvӞԱ;i7h܍߼,~oiV ~xj ?P@&J9 Qm@A4m+'xvfW:HI"4es4zh  7 84HVH  ]sTBdГ&џ.غ`:c&XP ? H8 #%(+.1=4d55W41q.*'O$! t TFXYׂԡяm+ʕuafIͪLDXf r']r i!"######$##y$7$#H!-.u$q FbXU>@*hZJ@S[*t;wt "@q"%(t+f.0^22210R/Q.C-+@*'$ _ n_"\FѳQ? W=wϙqԃFףCbۚ4w# \ .!v9Qp#d(-297:F=V>=<:86|4e2o0g.,)&"bH g{- 'Խʂʲ"Xʥs˲*+Ώ"Ӟݪv g ; $)S/49>ACGE&EC}A4?l=F<;;`;:9852-)l$} |1>j6UֵXұ*ϊ 40#aшx2*)[)~X y)th7Q `#k%9&%$!H-#s[ :i)C"*3mS<zB 86vn0FYo1>o DJ8;D_ X}O8eٯg,ޙ%YH XF "$R'c*F-w/0X1V0u.),)-'$"!!&"##$# "lA7r ~ 9ƌ,NZ=Ü+]A@Ծ$ b ~Eޥ dG e"$&)[-049@F&MdRU4WCWV*TuR QOMKG`D?:%4 .'!7 OD[/ޑث VTAiIˆïØYmElҥ2m7fAxhyD &@*-7136+81:<=|>b?@B@B@,@ @?>E=D:6I1+%3r Q_au+"ZݐM0cOSd٤ۏ"?|%F]OZ   > , :L "$%&'#('%" #>] }'V*cuyo-2.1.0/data/sounds/land.wav0000644000175000017500000001246210505474656013314 00000000000000RIFF*WAVEfmt "VDdata* 19;c_go0cyM .LJz:76{Qva@i > e x- K (l KS Lo:|SW~%y9f[Lv E   [ N7w80g}iou y%C >^P4-lzFO{߰\G+bZJ)syH2(9qa}$ez}phQ_*SO L { :Kq?{k}&K0?XS`VLQj%wzB6hB2)XMmN  ,7B6^H1I,MWn? k / * u eu$[#Ma,%k?\\1f1iGei|r5%~|6q%~R0XߑX^Hu߸ߺߖ߉ߗ߲߱ߞߗߢ߶ߴߏ\79soqrG eQ0~Q{E JgY8qdbs,R?bKB 0# p " R @ j   x 0U[|i .#=WIC`+0V0jJZ(\57n3 640PP?BM! \Z%A= r K q j j ^ lS-<)x]T}nA4>1,D[ 59A*GVk@cAQ9!Mt]SGp 6:1O'+Mwbd[?@IKC>Mxp3'CZcaT=X* 9`rSN@rU=L1c>RdaT!o5$(+/0(e0|5|L0Sm!y A*4qBt\_EE c:JgH=AzQD 8  e m D Dw<N FG2n"yg73A1t4.^$VG  a1v-ju6:h} k {8k0F   a  @ q 2#s)JfnVn4sKJ^NM!=K~U`^'6i%)*|   1d >4z Ar1KsB)My DaAAJ>!\Nw%Q&U+mB8jS'`(a B4[v*Uu4d!(0Eh + B G ? 5 . , 0 6 < ? < 5 + % * > ] } u Q /   , A O J 0 cN>,}V- s\H3x^F1 [9{aF/!mI0" pVA.lR6|V:-/8@A8*  8XieR@;7469==8316CUhv~}yustx}~wnkrvu{~zz   &6DLNMNUaq  ,CU^_YSPRTUSPNNPTWWVTRQOOR[iy|z|vkbYSOMORVYZYXVUUUVVVUSQQSVWSI;-!veWLD?>@GORN>(  ||~{xvvvx{~~|ywvw|zjT>-&)3@JQRPIA7108HZgj_M:/2AVhqodVLKTbrwrrv}wru ys    cuyo-2.1.0/data/sounds/menuclick.wav0000644000175000017500000000201210505474656014336 00000000000000RIFFWAVEfmt "VDdataQw{A!Ll>j7- ?n[ " Us  9Y>$j7Vn    O s~x }mt | \ i,%vDs9?3)(|AY&]Z)d bbccb(rt:9\Oh |Y p?IEO  j i h i k J`X .NH<}d (  X b dAu!..(#n]prtNF|Z/5ry>au+jM9bLO]8FA-K`wCo 4\}e>f>" ~`;T(mYG7& |i\H5( cuyo-2.1.0/data/sounds/levelloose.wav0000644000175000017500000047267210505474656014564 00000000000000RIFFuWAVEfmt "VDdatau          9B-T= b^/ B:!B*+:alJ0d db-d6]Yeec[K',_ߣ u FKGE DB)hfۀ/7eǓ"09F799##>.'79*n WN.@2 $6TQ۪/ L}P38Qm6bI]C"ܶ.e3K&]Ճٚڟ{ݠݬxvAO(\/.=DdE/?}4"`4A4D X4?tݞn& NO9@RݐlD6msHި =aMIOA:c<AA6` L3D D?v;D]@Յ2'ݕ/K5X ۧa(Z<CbDB:4.v%aՃܣBM> ۬Ӭػ׺ھۃܭ:ݭJ9>ݝi(EI}9ܽ 9FHRFDZB;( [գjV8kA2auֽ֙.K)8P޴a&bHF@ HYt0/";?[>8,oչO/GM0bO؝ھْPzm(H=gW L XcW|%7BED>D4qH C؝2E?,04ܡ\ޱJDG0߮s19<5R+MUڑۻyܳu_CC_$|3(dPߍu ?H?*M ݖ@=<^2l"1$8+;4( bsߐܰ8-ID:QW4ߌyAEKO.55n[c %y1}7@5+yQEn-3J=ݵS L'nHA6 +JaORA%~*([`&IC$hU}>rL3;:KY&|.0(6fdA(DIO7;q:5<!.FaBwߺ~h}JQ.^bQGT: pvH.J23zCe(?ef2:KDwI%Q)&% o 43KG{2 s1$3FAE ޹o<BLަ))FP9S(C9Mq=eT5IH~&vo  7Y7BLDZ/XJfD6C[=%ہ܄'2G6 uC. 0<=LB'ZzA~ r0FI0O)n i,O30bH[KDA.n) &,8A9B ..ܩFO@}3}o)#J`|0K2$H(D/ *HY)@RG%7 =^A(I u @@TD+0$ve!G-9Z=41a7=R e2= ݸ93?K u_)@CET55eo$;D:tߦSqk0S4{KQ'Be9)eAdIFu=3],&*,N3::q1^gׇ'ٮ!>'`ܐiݗߪ [+!=D9"1) 6hB<^ | d#T+4ECHTE>7m44a8<93.Dzw۰ 9g54 4}=^0?J7B=)g~AZ{bm2?<(Sn*W& ZUB^9z{"9C?GDl?b<;;1<6*(gJޚz/:";ڵ=Z3@?0Wf3/.-=<}-; IeAM0F u*c:6CECA>=<4' Xަ޹";;1 oT:1*K6.=@A6#C q/G*9;10icvݭ7Y|9Jag|g)T/N.Q:AAXA?$=:02$ !BX78 Agae[dq!/ ):@9G*R6>z'6:A2;f,$5)s5 s4l!/8|=E>n=:6n.4! N|*/;/ +DjV%7?J{=3D%k""0L7-3G$1Tߍ߄AeNh1V"d,2A3<2P.%;p@\4Y"P7;A. hyCw6wa1\< >)7+ };Z=!-252&)^m6߁ ts=Z{#X(Fyj ,(J++'l uE 0=j6!MyrT3qvL.:>9/" H+2!2'r[6ܼީ0P.q :kLc$j"#?!g R6Bm6&4;;- ,qz6OG+A83=:I3'zT@ 1 $)01 )tD9]ލߞ4NP7gsS5 0}[w6>63#[ 7Uu#)5;8;b5+~  { Z'P.~0*"ޟ]j$:th0) TG,ze/?=<~.2_t\~i_'z39:6.$  ]&|,.Q*L :ބ& H=H@L- D%1Ss R)'p9'>}6$,0K/2$088c:7\1(# @&$*3-*Mtv߫Uwݿ޲dkt?[ZCT cFM{~b%4=<.( 0$2NaIh".62972+^#q%#(U+w)V }mڀ-;nB6H>yPYH=MH!OK.N;=6'3gtt +!3662,c%9z]"~<!&[)9( qfJ/ݘ;5q9o%~!i*[cV{0[w^ %m6=9.JMpc_)0452-' !2afo.!%(p'p!WF?|ݢus) Y45n.DV\P5u=:-0:i;3s' UL Y&-2Z31-(P"FeT\#%%k 3h^kܘFX"q7p!$b&BNLDFz2z6^(5q:6N- 0a66#U*.0/,>("_D!#+#zp- qCהٶajyV! n,bgMv&4/ HzZ!/77]1A'Bl)_x #'+.-+'Z#!p!H0 c+ؠ׉KުQ+Fn#nMs)#/*\474j,! KFL;+$('++)&"_ Gyj ujֻ9فڕ_~R<"s>x'*h0HUUf_a;#/55/m' *+ E!&()(&"&h%yj, ma0ݹޡnDW rlLz5MIAa|W*241Y+" ye 1 9$&''%"bGg  (LzzKJL&sHKbZ5Whkp_!F%/32Q.\'kE|  [gB"$#&%$Z"z#77rBQR5[3+)ߴn@ N_GjY=~I*]12.0*#i J !#j$$#!G(C8c0R ׻ܼݦޑgEy9_`:r-;;3&.11~-'!sIT8A.&T!#m#"1!oxCZ `eE-&y׾؁ڧ۴ܪ݅uM+r6io\&DVeB)b w*/0.*$ Y$;\)% u!!t!U hrE?Q{ {ڶۤܭ݈yS*n.] dBp()k B&;-/'/!,'"(FL x!.!C ':eh?'tؚٷۣܴݍsY/ n4ej Gv 3AE)*f!'*<. /b-){%  q Etcyo [֤حًۚܧݒua4~BgtX5<;-5_O,t& ,.-2+_'O#k& sfXji-.RI#1 /؜& ޮߔd8e!3+k,FKKLRy2xh "e),-,D)%("j8;II;^bH  [#٢ܧݲމsP'[;\gbd\[Z\9&*},%,*1'$ Ya"B);(3 I#H.w &/kܝnE=f.1n7x.7Nt aF!""(*+*F(%" bJo3kxA^ J]߂xڪc܈N;OH^T.XtZo P%%T)+*,)&;$!i| D}Sno,% i%\ۖݠ|tC P87x;U`\N?.km=!f^"*')7*\)'R%" vB@da3hz2'y| ܮa #&\]c>m  |VH^,=@F$';) )'%#![U]W[N>x(Iyy63r- K"uqWHt,BLF2R,%g Jj!$&&&e%#[" s|ZTL>r A t݂T!"G 6:Em ydHoL# #U"=%;&6&m%($"5!'3 `WETP -_ݧov1 Zz%xRz &&i:}9t8L #%%-%@$ #!` 3'M z`Y^o&" +Mo ?Dc8_k S;RQN=]"Hk Du!#$$?$M#" 1`{Uh  WWae CM-Xt zeE~; GV&"#J$#"! P;FH9 4P!hx(akV2CB4kAd/]| 3 "q##"! ,m5La0:  c2|hFOBz,EOC1\MVCB Z !! "!  !$/Te<:i 4I@mEF Ss nQ6 x8Sd>c1 LK%!`!2!  'DU|SDL~o 3/Tc v]3`t ~hII] A- F.e e  3T73&| d `j|&;o*5t:, ~L =JI;2y &?UU RvJ]drUO V  "SoY)Ys}{lHU~543l=( 8S@lY f $ ].RPE^2k" ~j8j)y,~*qCGkMM .%IW<i<e~}8 *j}=(Qlw}sY<H hvmX-0 vf8*v+MdY  Cz<X4 9+Y}b7e"4/lTD 2 4pr7"[:z&1&c s]}+ 5-hF\otfY6 o':<3| V:G5 1}1'>w)*1$kC|js kt"g6Q\Z^K8"i4R \\?{\ ,&8iVoN> 7 D"3QM'*.@gt=#J;]+&&mHW[W[YVP}C.JfbIٕىڵR7Dfu@c<+"?;)C/qJ$L9\M`r_[8TF&Z+Cd+@Q97*G #ƕ$2=[:GiɶMˏΐQ!@8ˋʉR̭8o)lƪș˒Ȑ7?+ <ohe =4,U_; b#7Y7='C="#XN?@|/ټ?ǘq3HɖΩ4!= ӻTλЏ(B>>) UD2q y8W U#9OD6>&5[3׉&p'c^.`%kC )@nX_Y^U\PMLJ_C0)@,]32Ìw47ƌƿ2>;ܦe ̈ξ +y/k۹Z p*`.-( Ԍּ880FQ8E3% Zj'##Im\L N2V ]]W%8OCwYR]?% Rx n)16c, JYȆɐ=s:/3L ͷBI֤֘G L3D@Ԫ׬y+3)W?CMTWWUL ?w)T3)3.MZHZwR+'ݡC֫g9"=%xNˇ8آ? # MSR3?B<%6 23137E:4$T#N&iˁ$ͻ,1;,CYGR99V\JqNJ1IT 5A]FTEB=6+\qQZ\[I[-ZXUJ7=E)T4Z <:OHO-Hv31[qׂձQY̍OP z'72M"diԹ / ,3;5@4V1+x qDͥqrNҫh1/>6i fZ&DL]X,;*"'VL'7>z? =82((${, nI.@05&NޱrεS _@su'L&l=@.&Մ7a?q" 6WC(KMwL3H?2wCF!)LEWQLb1C Rdo.yݓ!ڹ3}35UA=z';!e=sOa՜^`!-,01.'{L >Vg 82Au<()QaW79#T"^|U5& wm+3T52-#P̓Ρ}-0ӏVw3-<432CҴel׬g?'<@O( ^E ;=*Z>O9.%GL-@ POc=uTVCF(/s$ KרT֪F *::'z.Vӊ֑ ڰfX "@&%! oJ+وMk܏ZU1&>D<)i`4 A g)E{X\K d7:WIGo{(jY ]ٟnp*٠u4_@:%2؆ٲ=ۙ@E߶߾& *?F;kL JwTq#.7:=93)&RL,T CTYbP=&BSl#2$68*F;og@.8CՑؘ|;cNq3DH<'" -\,kI!=AS^vZF"` TdyZ T*;ټUܭܜ +;HA:,> x+=9;1֥';7$ޡ"xI15#>HJ30;PEXGQ=#7mRl_hٿ)93Z(c!+o91GLRTJ2 @y? M?&?a߄=(~ۧaT.;<0g1]sI"߻ vu(Q:A;(gm+Hi?=X*#_)7r0rFcR{U9PF:.$yF#J*.u-$ p͏ЅϾ߫ o,Y/!'s 5ԛ՚ֲ}ؐpA*ܵݛ36j );kB> 2Q l[4Llfa q$9YKU TF -[bf#K:wd!يY3+Nu4V.M;?="80)$"[">%*50e44y+0-vr#510!x[4}0ePz2FONhB/{Ae)ݫa !y$15 .~!ԠFJ݃d_u4q{ dC(."4B&JK[JFD3BBCGTKKMKQC3S ;v0G?MFE94~߽0ړ+%ԾջָLQ%$48r3'zUyG)c=h&3:7C*0#`ݍQ[2{ 88fSIw($g2@@JnMLIC>:7"6Q41+,@!_\αА-&<c--W~@>e'ڽۋNފߎB $"5q==7+. DYcvi'q8"F[NND]2Rk} .,ݕT*#ݻދ)=rcK*52:%<;A:876 604F0'"Xi )51QKYf+BbP .?I{KE9x)RFpݪhkx",0+h֓G#1ܝ`.ߎS eBG "2=D:IOK5LlLLuK4INE=r0}e"C/+-ALE9!l.O|H`ݐݠ"G06I5S."6[g&$/>54)5ڒrs )ri?@{6CF_n.(*4;4*=5? *i6@GG@25" SjIK۳ڐ|J1z?0p!).1o2 20-' 8`4qޚ.y8X6(L\[J,!ho-#3;&5 `< _!(+(Q ލװغٓhHݗVCMGlnuYI%l)28<>>S=93:)w ?Q2AUE;)x\q߯[,$R?i1e!-3Q51*  /&0#Q8$,0/';۩ؤ"H` ( t^;#8(|**)=% DNܧdݗ#'23(~-%,IQXx@"'/6:;82*R"J  s g\$7-6=AAAO3r*_L( .d:(BERE@9@0%2hk!j%}'$g B=׮جoK ܬi&ߟR[3_zjT4B9!$.&$!/SG+#8^CE>]0dUCF0R0!Z+Y132i.'0  jbc %#(k+J*$ جAXBp EJu>f \ ${ (^>,5 6.!/O)ZIz[ R#X-379!950+%@L5",(.49<}<>8^/!c+-(x(JtxpfE6*ڶڮsJޮq+E LY11w3yE %F'A6H>=@7+XU- Az4( O$3/8s>AeB @E;4,$C6 {. s Q0U! # \Ԧ֖חp<ۣ`ޞT jj Hv{ 8 TE Z P^nhEUQ*9BDP?4&bG__ !D).;1p1D/Y+7&\ 4 s O0!X%'%! [?v9޲.561(*x@XZD >`U")/"35k65a2.*&I#"! " & *0.c25F762+h Lo%&NN~ߍާݦܰۤ۝m1޲h+zNw6:;*?:2( xV Dk(-BF O%-P479'<=;8.4.q(7"7 p Yr8JWԯծvm;ڢl$ݠV h`Bbo!2*\6h{i9~RuO=D+7?@-=5+9x&$(l+B,[+ )%!zpv&_ !% H ZcլuٴQޑ, Ie^8 mY_ E?~oFw +C2n30c*!! o = 6D%X)I,.k0l06/:-*'t%#`"!"E$}&(+,.00/!,&(0Wb3Pwݾ+aڇٳٞk?ݍFng Gq )7=??*Uq> @*5:L<94-%'Z xj  |$).C24m542/+@'" -0}kOP CTДћӦԋyK0ٓ\%ܮt.ߚIF7^s &M,gUq " })309:8Y3+"3n{Hk2Ry# W!$ %$#!2J[ 2ַmְp݃ߘs>q MK8>^cF:Io~EP\ew2(../.{*$Z 9Y{uAo Yg"$/')))('&$[#"z""#$`&()**-)& RUBݵA\ܾ#rڻ Q؏׊cCڣm+ݡ[jbGw?cr ~pvwm'| N)c279850E+X%^1:?#&)E,-.0.,*'$ _d[SDx +GdҠ1 խ֋a2ٷ|Aܲ`mcSvq9zTX\Z_j (&8/3540k+$q j#Ou =n h[yGHW6%sBK qԸ׼(1&x^cAwK+R6XuKy#Mx(GZ&+>-,{*&!  8 s 8Lri ""#%x%a%$$T#"6"!""0##$%%g%# C %ܣuܱ:Cکه׿ׂl@۰q2ީ`rf9j$.*DI+(=05k77522/+'^#8 Bv@ "%'()))(&$."sDO[7nrs ~Z ս֊pFڮo3ݺt+=4v$h=+>5a]' I+4@>$++>/1~0.3*f%rLm i  L + l.Il>x:-o: b4yp7xMdo۞eM|mt YFL{8h0} "M#[(**)0'#S Dy47oiZ? !"""h""!!!!"""R##L#p" x Gz3=o ܳ9Fڱ:٨` ڕ`)ݹy1UO,]5;;9"mbw",'-`2454*30-*1(%$"!X!b!!"#}$Y%&o&^&%%#" GIQ fSԐӸՖ։`3 ڡg'ݤcqe9ojOXze'sVG"H(+-}-+W)%z!L%kj_"4l\-m/?5c mK܍ֆݲm"&|#n *YHdFf0F`ZQk wJ"&](.)(D',%" Sw( v> X !,!6! ! xa Ts\ݎo<+܉6uۤ"fP"ܵz>߳gi Cq%rV1j< %+/L2q3f3k20.,+,)'U&a%$q$\$g$$$$$m$#"!\ !>qwh a z 1r>JK=װؐX.܇B߾r)0sGZm4}Aw~2;gz\ qK $'a))(&;$B!Lz>ea>Uqky7 ^_ Uz]YyY1 J+yFSe 91{*_[yxt~<q N#%&&-&$&#Q!+$C3W\E@OOiW- G! 'q^^}ބn-ݨKܙ8p۠c*ޭe,sTw+>GJ2 kL$\8o I$)H-/1k11#0.N-+7*(n'&%&%$O$###"! 6/~YJy' v߯֯yn6ۗYބ81z>`tW{W//#eJeS. !Y$%-&%H$c" Nnlh AF+>M  7e{ژ`4Oec EZxDHegIwJll.b*Z  K!w#$ %$#"!6 >zJ&( }lJr:.&"%*+%z%e%O\AD- 6|RB$P2U52a!%yU~r/ %s4-j3agy12e$? =UX{U>PMBLI?n*5 -$&б֫ɦr%򨩬JֱA R ӱm,GCm.Ծmc7 B +ߤ!(eMbVBS,%5 H!RM5Il0~ޗr2j'p4W)wظ=15ͳ ӻ1ńYcv /RGJ%ʅ3;h+9aLID=6Q4pɼ\ә@6TLyIE% ;}t++Fkh rJqDx 6bnSlebIfReZB0>Lhހ3#/NV 2 ׶+ߺƗe.%bϵ :2"i&'}28dȧ:VL  wԔаҒsԍ?0[)`>} ;9>SZXG%; | }clf|A5 j3%=^?kMq&-!I[:]B;+-5AλpYV3$,2Ñ%L,G!!" E3-[<Ez3 Z؞Iݶދ%`Gs@jY.K EpkR5! %31L_ga&?S[V4BeP4VdS$#3Z,.8X m80;$7p/*a+0c2M+ ]_Ѐ3o+SU4I42f3,YcA y;R\_^k[iQ@a:s i \PO$.G)kο!J,+mPi|T+ؽx8 "-?0.,W,%G"si“,1)ѩm9˜ͯ͏Ы]l*K=J+ݧjdR,DO`=ii5g^yO2 ,/ L gW+5E/,/WL1ABbWԱϻfM!!KV r0¹ :'5 yľ4WÀ6|Mw̲ei!92VM }X]'2f75- Q ]2 2 ?K}: T[,C6@Vc(\#f&=8b=/v /DKMIHQ2/\=qc41BsIH>*9M9cmX7 QJyPB^c Jp+ }!  aAbJƳ,!;TʬĔWUqW0,D6`%42іѕ<D,3 ټ;ܼ&HL:uVB+  #>K^i\r}b4 D^AJ0;#A@7)\_U4NO[?!+#5eդj& "!ʩ<ƐŠ%.e֊: ̶̖f>+֘״JܪaY=Af1c݇jX*C:G? /Umg,:696,W' +R`b_JO7!25JUO(T_K)F!ߗ(֏mcoͲω3! a0:o0׷٩{%݀ s,;8ՙRש״ׇyިGF6@@6{*".0BTU]V3uqJ\7cwzQFU*O\QU>NmBH{)*GǑ.&^a'Y+,T-O C8*1 PbJ*Syum-iڀVϢ#'%$Rp@e.ͦЪv )Y&*ϔ7 לdۦB# N9r*6Q<=@DxGJPM!J`J>+-   v&ʌ̹6i҆Ӟ԰ո׭ٻt3TelP)g3788753+iܨ߂$%7.ـ݄5f[i-XFTX*Q{B/ :1 W/n?JK@3)ol-~)wI/>\KրԠUڃ:#+.//,5)?!;v"P +},gةҤXՄչN֐0וAoڻۑ,j3z/ $ d6c<*<JOGH6m/s 'ww5  @acH10=FJJH^D=1" .3 ҉7n#%oL8k?CΎ3Վg11 $,+"xnO %*B%x܂-ֺ\|ݘ)`u&cn 8 wq)n,=H9P3SSPKA4!; E9y6H;ER3P2 !YuS[Bܐ"#(k5 !!"cj̟-ў ֎ ڠ`ު.+ %2i= J%'%p"*W 2VM|SI3>sS'lm D2AK|MH>{1# 8/ &*)#~(ƯɱͯCf6s׷ܾݦK \d zB _|GMޯO#/i-;A1P~ވ|om3DPWUSLgB6[+/"4$.Q9BnH*H>.a5+I"vU1פP֩M hVUVo',"(VسYHܘ,cjX ,]11+#s{ s'a4y=Ay=1fD*3]GjM`M_O*O  4h'hI0z$!yX7$)db v#)*F' r %!'7)G$LEkھX ^v.sN6O B7 n p $>JKLB911um`]~"%%":B ! ~ !0|ւпe֎!מi'w^ۺܖݛOa.9?(4UH(9gLSPPD3Z!N)<3 .;bFLON.I2 J/ BLPKB|6T)i 7: v3!&*+*& [a 4> ! uWȸZs Tq҉ӥԸռֺ׿ؼ٪ڒ~g>߿QANK@G63EMNjJ'B7-#uu.x$,l39?xBCB?;50+g'$ #"P$#&''(,&  3>0ϯΤ<˧ɵƿ$Tʚ<\{єҨӷط٠ډkO+ o&n3gEf(1Z41). ? t/6!l ( :(.2455/41.,G+g*q*+-5023x3S0)2bm\,@@3 r>i]9gO}ۢEܥ9^BS [J',+& Qbo\fj $)]; l di{ 1{E c&xA|dqFc~P^2pS3a ).-'a ~^y DZ < h $ e | / 1 q59΍Ϻ%BOcjkkdۏފe?rcf ~ 2  m Q cy0X;6<2-)&$y##\#$$%&%%#!6l]  =n%; ,z*5LZ;/؄=m~gݼGށGSUH+eV; o $,J133S2N0?.U,+|*|*%+^,-/e123^4W4321p/-a,+(*)(;(9'g%"|A \؁)iӄHJLJC:)݆ܲ^-4\h!{8 $b%$_"p#}h8_}LC w= "#$%%$O"  wzG 8=S^ /3&PU'up+"[O|-)j'z o>FO;- 3H |!n 5l ?ԟ]ֱ7YU1mtFvuFW=lua,* M x'X+,*,) &!m!s# R   K I N = u Wp=q5%xsѦM0aebtf_K5ݳގe2I wGPtgGUK |o *$3A9<>M><:742/-q,c+*)*)4)('P&$" o [  } GB MϑДܬ݉a3_??-St!}7BJT !t%(*P+k+*+*}*]**S+,--.s////(/{.-,+*)( (&u%q# }89 02"ܕZ |~XA&ݟh2o0GI',rv~  N! 9xB5/Zri-lj2`tvp$p IB*%U|?|8C<Aq|E4yt <SeV81f W ~ ? W  #@kpRZ*nVw}+G LL!!!"#g$$%)&&b' ((z))Q*x*|*^**)=)($(k'&x%#!Q[ {B LJ09,AFݍv5{7K=x"SVxh-v #yss$N>!*^QL-0UA)j#   =PU6sL?\0N~c56&` p{7HV=q!Y~ <  H 9 ^$hA}/_/޿ߍhp)&E8 M8:&QK,XvxCXA- /T!%(*!+*)'%.# S  o  f  uoDJ :n Ti'ph.`z{T#;"IbW-.V9CX `0/[v4'[d    ~ ),rܼvS4Efu,-_ m!X$&(p))('w&$" `2\. )EHL/ipz\ۆٚڑ_X!ߥv4j }3o4BTRC1o@,3m"&U*,./'0+0/H/.-,+*)('&h%I$*#! L-hQ LQݿ5Qڌ7ۼܕ_,߽z8PY8d&i ,Q, a/m-W: b u  d]5u zrM?\YZ?!NKs#-39 `(DNYFMA 3 x'0*X(rglL G a d .  f&#dSC_4 L=;>ekjw c  (YX&<7<& E H 7 w  6[,KI\a7/yBt[B>U\Ed^={q Z$ &#[%&''''&$U#! 5U^aSNM7 ZjKDܐܳbM c#>'m1NVYZC(jBdO = #&()*[+++F+*N*))N('&%$$O#"! H Ks9 j/$"WOy&=20$կ$تBڕک;K{QQQOJB2YIYһKBs5%*XRkpjSc=a_9kX5x>]im mjJd:XF=Y[; 4*ވĂ$=)t' o5?995 `οJñ q Ӡw(R7C/ڎá 0(3Qk؆Iy?xTd^^o\YWVVUPH+9#Q =Ք к˰)0'*"ȑl;/}!5=&PI!вL!ֻׯةv@Py3BjH:)ҟ;'29aϳfC=j -(YNY[WTTUDSG/i# ٕ/O+,֙YԢP 1CIB25!MY@>7 ,BЯ˲jѵ`IB[ĺ ̱d@aA1X@6G.MI;o0@x)RPii<"bB31$Uzj iO0 Zҭςp̃ʷʤ1;Ի40 L'4 ӷ/;2i^ƃɁ*h;>B2ˤȌhUܤtk"G n9k*|\c'+<m6 /Wiold^d[YXR;D#̡GKν =/@%2 JFx7'&v^%x$b/krE5G=A3̫Ҏ'0HEU. '6;Ta[Bj/oH$%*0) 5jp< ܽقd88L;>b?8">t"V'5#fӈӿ >6V7A ˵'N7γ=Ծ=Ov>skX-dCl[`J|1(QWFZ"FrEWM5͠5x3"9`>-du/2١( Q"/8;:5L)#l,|WDO";j 2pM[,,(uQ;2%CMBk5C|? #+jD\Un_vdffeaXJ`4B/t 9BB]Z>:RYx[rݭLؿҤΒ]T!1ƻ0Y0**CO̙x.9:b5/+_*,:03E23'%~ië@7ȘԷA+7 +$ ܓi>{5=-^DkcAUkk.COT1TQAMlF=3/^IĮnƟ~[T,p,2{(PĘŦZM81!8?]bϺ3+};(}εQq|'BP1WX"XWVUTRH8JF+4*guB"PG!,"edS3ܣٰי#ؤ4,4C?$Iנ<}ڇڊ*49Z:85/$kHV˿˔\i%3o,T ϨZ@ޑvl=UW49V;;}i:2M;=U/>HbM[NKE<9-3G}s2KOf@$^޴OenSִؚA0.+, 43*EѦ*Й> W&+,S+&PQ_WԒٷm߃ߨ**9KK'I7a<z`=gXgeQ*Bk&[&H.0.)%!vB=?īQȋt$"11[0ysIcMIҳN@/0;3 jԒZ 6:4)qNG4c/$;@~A=4&4gJ .SddR7l8K6h~BnuY-.=i=D- OvҌn0Wҙѵ܆+"~+ӹ֍ֳ)5>A8&Qr?^w &?@TYM)}<!FT>GEMfW Mj/MXD5GLKm>& ;;1`^0@_Aw3֡զ]iݒdlDC)w021I,"UQt@['WDRUU`K9D$dvK߲4&0/!ʬG]@47 0' cc+ݏ,h^YW9~w;:LQJH5[YC=M.0EaTVcJv1k w/:&n r A cA+ҭӷ;5׬Pܨda/{:{:I1".tIQW!b0o84Z#Mܐj=ٻܭܻTd?@(A[PS'g88) /*7IZ_sW D* ! ܰؖՒHW. 3*Da5KѭjՖj$Bll߇e5+2<CAPj=82w-W)'X(w+06 <>:"/,l3(?>*;l!!&Ho]JrO )B.?HFx<+Pd߽SrEٵ՛IU =Q)/*N*ЎTѷJ ($؋~ڦS{Es:P.^36BMLeQkRPNL;L=MOSWYYORD..\ Y0%KwO:i4)jC#iB:܋} 1q0!] )Aܺ4Uj^P&{!=#3@I0OKRSTS5S!ROGK;D7T'2 7':>\4Y< ڢָؑOӮЬѽ~fդzr"-N1.p'F=J(AٶRْؕݐ l$-2|0'`;٤&ޖ~)<0`s,>J#1;BLFGFD@~<71(OebPΦwx+)t&-nҀzԅ~w8- ڦc|ޢ()376\2*  7,n:  $#0R;^DIIHM@1X Awe~-\>xu@g9 81#)-0;0;/T-)f$`7Չ)pS!. 1'y-e`e/} 3u,Y:KCF#E>5)uf{j "*/h/( hl=ߨc@29{vjBz-'U.356m65 2y,$F} BN4.?=B+;*ov<ܗ>تٸYܷۚ "+,0f1-&j9 0U(h%\3#.-48717%ox>@ks%Mk`,jAXdt '6yqyb #$C$!)V3'U"ד}n%-.,!N3f}I۷ܕ_1߬hU (168850)#cnMx"*3SFKKWIC<2-)S' !v { c '\-H0/M)Uu)!ڎ۱)9\djhYE/۬z^۹|Aݺpt*kd !y?! rdb5M3s?C?3#TO[=2DH+3g9;r:6 1*"eY J&,02P1+!&ݭۈۨݰ}X>x~;yo&<A`jmM)CZ1i_ R ngl.ݣވ"XI**2z2+;A?62i z%Y("3:k?A B@N={82-(D$A!!$(-#38=KAuBP@:0^"G{f^1fܯ &Բա֊kF$ۡiC޽o=) *kx&+|PH+6:8c2'2pZ9P^#^ $%&0o:BILMKGA_:P2&*S"Qx C W r 4W !LG8 ӽԨ{O$ٖYܖQ߱^R-6$RmIuHUT:|[(9DRI;G?4& 'R9N[Y#+2268740+%anGO y | ,^-{қԯ&,e^:XV3f,=4Ni/;W}.+ct?Jm,m'{4"= :5/y)"#o L D" M+G 5DlC̙3vYAR ս֙e)ڊK ݁8ߙIL:_}yzH 0>p= C e D 22>GJI3D[;e0I$2 tGbBW/P%!!6$%%@$!m*~ ; [ f_r'9 bЃ)p%@P<6s /`{b"Q}9j>yqDt</5(28:71)  [@'F rV #%&'(('H&9$!FT 2!#i&)p+-\- ,l(i"dM޹ޅM7޵a<ܞSrؕ׹ץ؆W{ ߄u.s @%Fz 6t%1X:r>>;6s/^'EA6 BU3 #(K,.)0$0.,[)d%.!I D  B ./ L>=ӗǴNm>=,Փ_4ٕVۆޑm+t /1Vqa2Qm\fPb (2 9;:6)0'a -6v /^%L"4}_CH& 4ڧVE}dڿ[fuC\~h+\$Qak`1jW!HKOVBYtc#(g*%)r% \ 9F - K"#$x$#"! K L!"$'&'y(@(&#Qo߽Hr=IKK$p7IbnbEXuW ~R.j% #+02E2/+&i!< X01Dp#&R)!+#,G,+ *'$!2yD < ~!5Ry*֠)ل1z޷~HHbHFl~i|+)w |C X y7o'-11/+&S a *'[% \)=;YUBuU NX}ޚilL :M@laqYI5t߷[fQc8 B}$')(&#'p 9nk @q< z!"<""|!! ] < c !#$i&'(('`%!90 \(.k -7߰߈Q6e dE@F7ep$+0332&0,P)%"3F e%,B!h#d%&((( (& %"q  YjLk X4bf<؋;7۲mݐߋLV6Ws7gm4za 15y%*.4/8.+'M#.|p n } jp$mmd0.Ar/5)i -Iܘ۰}j&Beu-4"Uu6\ \PO I7` 1#&'w'%N#- |dRs$c6hzL^ G!"$%&I'l'''',(())b**L+w+0+A*(%!} epnw!% ؠ[dGՌտ6׽ؐ\.۱v5ޚQJ6u 1P\]khoZD#^*/1321/E-*.(%#"!!^"/#Z$%D'(0*c+Z,, -,,+)'%#!@<?5  'P"Ҩ:ԩ.hՕ#Hyײ؉S۟Y qe&kZRtLH< E#'*E,+t*'$p!)}x:Cbz !/! !  +WJQjA@h 5Si׊Pݚ,P^K fk#\[6;$RvI4,*j#&1)#*)(x'%#!#  ?*. !!"D##$%%B&{&u&I&%%x%-%$$}$7$#!#" LNONI GN7هع؝b"י9m֣G՟ՕqBٶڌT ݍIfO-^%, hRr) A='-~2578n87T64N31I0/.V-,,,,,,,},,z+*L)'%$!WmHc= l b <mRD<Ιk_T9!ձ|G٣bܝT ߱^_9;q dd }uU h "'P,d/0;10.},)&# NafMe6D#r'a  Y Q n۲@ӊ{vn"ނ %T_[Fh[Q~c>b |bVZ+vD# m$(+Z-.-,f+)'%#!r JCxX-:M5T"2+%0"m$F!U'a:H4% x*.Œõnng.?? {ݼ}06 tL̕+AEgG2B7ɴ̼< ;7yUց5QbMXhJo%ko & 4[37Q"}Ynu;qE`l0NUݬdzb*wҽT 1CfʺɹPгw$η$ C- sʌc.D3?hl5PCWBKeAa.ku?q#]qh,Y~5.\2kj5e`qbVd`BKrrSF-L%@pN˅%%RLѵ^)'"Tڥ2 ĐLɒx-(<:9xЧђxm 3 5vSPE`z7b]S j&`E*TV!Q=BJ2 NoW&-LsZVJhIiI1{ST$?ڔE6+\d5(˽^1R%x,meV7ؒ\.!'=&U y!-[Ǹ 74֌̃Bцӧ%$iG)$'օ'A H&;~:79E4),$((-/(mݾ=rC5WV> z *0~@2]!Z*.yE 3M;Y^t]\KVI*5 [X?QLcR2CNNM>++&+Q¼(14"300," ߏ<^M m.'eúð@PǛ>#g)7'6ݚ4AX:eihd7[\K./ ^E/6`^b1G\4O:JV,pW RH67֤״Ա"O##n$'# a0K .9Op0&ɸˡ΃еz79 ~Ӭձ(U%G/1371*6\ ӓҁԻA%XHM:N2' P"NWbMjc6D`9nQu8EGKKE9&{s-L5H+ٰkÆnȍ͒SG-:3/rؿ !*,)=!eoѯ  20Jr3 /Y .(pB%2AHdG>/z]ZW &SFaT5 j  ;Ii&Nef\K~S$=&!a a+̐qS̈̃:-_+]/ŽȞɚ:V(-E5NQə*%m;ʅ̛32!nq8rU؂}ؖ!cGOBP% Q [(C$If#rhA|\UP& gI4=2CB:._DD;DVDTA}%` nG.m "*Zö;Ա-X;sƕZNJHT޾sXж̀΋ϚE/M.= 8 UBSH B .BCa/6k]+hp,6;:2m$.]#d?C*O`WaS?4*V& o s)@RuZ:R$,FVzDU1/OC"ԨЎaVҺ yd48,+<XFm y}Uݵ/918ӗo3ub}SyZrPR + <C>3) -&|3CU]WY?w 2+]WWb/wb;V) 3U"cs^0I*{ FTݾHЏ9()CQɸoJWҎ̯pҍӜ$T24-,"[  %+))yɩ8̈PX0z#,3ۚ*K U Q`+QhnydfNd3{n"`=&?tSZRS8 5@ ,7^ʀ>+PȌKB\Hl'*&H2W^$"KUΥyzɐ ,yϤl өխGQ\y+kO_/k=<$.>O&p 9N^F`)Rw2 1TN6i *.bOm1uFPmSME46J76540)wn4N:,{ 7 r&KtTv]8MY2\rT\Fk4!]#:'h!1 @I:Ha<%zcv[ 0wؚչdΓWѰMԜ8"9),,[,w*E' Sjղ԰s3u,*>OY-ra֢i}Hp\v.6]5,+4cx% j2COPVQBK) ]a`%Kxj shR.m;IDHpI(HrDE>:5W(^fͯc | ,*%A˛+Ѿӎy '*&ZCS^x N%---*$]4ܢ\!F ?:<sK fw1(9D,MPQ;PRLF;m.ra#+(%?RFF=&^aD(W&ލ܇* t +KޝnZ `WRӺ ݕB`Mctw(pY])&%*4+y)H' $*J.pw:NQF\0RX,;^?/M>kHKGs?3&?. "%!oTʷY˘̋Ц7ӑ6n؟_ܻGKfD2"jhz ,.ga~rs#123%@ Xe}e2q-?>K R.SNF+<0&l'Y!)3/=DuFAE5"uuag\KJxYnaA[8ԥ3\QHJ3ݴ %.-# vܬ>5Dm ?'/2x1+",#' -7>@:.XL$+]4fkouS :# ES,Yw{du{/dMU۩ "XnՊiكL?b'-L/{,x&l` O _'&+,' ޤت`ܐܻ܁ݞQb ?C JV xuj.9#@ZNض$ً,GY^`RB% ڬܐDn$3IWd1@b `0GFgQR K=0, qA+U nN'Y4?HMNLG3A9R2+&#"#;&) .1$31V*E e?˦QFϼv ї Ң ٳ}<ܜm $Ir@UP='/-%$y3] \)7 CKPQ6PLF@:63_224r8y<@CC@8+NVYs2Y=L2pe8%TJ$t.5ߙKg8d_?).!+!TnD71&s,4 K!(<-.-*% gG|$ 'L%nH*~/>cKw's1l5^x\vvXe<5t#q+,&TS]zfH]";')).'"  M O  T t"E̬ͨ"#45%,yN>'Q. |Fj @xnhq"9GqPQLCx8x,!4o  $U!]'",.h/-)#rn ky?  q>pã S)Cs͖η ٽڗvHޜ^DF*v ( #8F-OSPfLDU;11'Z &.O5;.ADaFF D~@;6A2-*S(J'l'(*+Y,*&;]f%cFы[ͬWɘǤǶȚwc6͑HϬRё8a" ٨~ۑށ=$`*!?#-!21+#Eg+j R&F-W2}5664S2O/,+**!,>.03w564F0(4k@%syfO7jiI"Y'cmer2.s-n&!C*,*%* yVrl zHMh 0 %+-5b{q Tz]h]!97s }%}39!)-;,&w#u df!tJA K<{ 6 v d M Zt -/35·υлطٮڑۦ/އߘr6L N Z N { %.  }/;kDiHHqD>l66.\&e<@PWV """=!o 2lAWI !<Q+R1e{ΫӦVnNܪ4ij7[O/@fd fA-\7<83.Y)I%"r & ">%(,u/2K56k7753R1.>,*Z(>'&~&&&&$w!P /UϾ.Jϫ?ҿ4՛0nڏۣܧݘޅc,I]c{)Mgu<" %$/"Mpo ~# :B)l"$o&!'}''',(()+p,-.`.-*$ht7+~TY ==frFRcE+C;meݸ+A\Rz + K9y h*q,g3F/UA : ld[wߐh'pVngwnl#%l3{#g x &('$! "Q d ?}8    u  " yG:ж!sSuڃ}lU#ߧQ_ t8KyD e2*67!S-|6;{72.*']%#""1##$_%%t%$ # ^\ , RA2 uџҦԴ՟|Mr۝!ܞv(ވ Tߎ T|FepAHR 4# +Z0F3463u1/-,+**j+,-e/0\2Z3343210/.--,{,,+3+)'#acl|(]ם՜aҰR_Hո!֎֝דrV6 ܶz:߸mS2I ,8""j!5Y^@W !Q_a\Q!"^$&'\)*+T,+/*&"C cZLKd5 oUޛHJ~t #7R$wTxtngE2OA[$& D)FWhZ+v<(kAn0{j0t!.(Y;B A%)*j*Y(%!Ee Z: Xmr , Flޥ jщ҄e5*پڠzW3ߏ]#SyUr,}JX'/6:P=s>M> =;86s42'10H/..q..-,+s*(&z$"k Lr6 ukn9?eȜ Ea͘ιڹےgF߽~8o&1uNz?EO$(8,Y.//000/[0012v3:44=5\5454321y0I/.,+Q*(Z'U%"$f4;[߇ޖݔuK׋%պԕՎlZ=ۛd/޻p'Ub eN\Ip }!)$%$#" pL;. {6_kB@ oxL|#>#8&B9_Lkm_tkEkeRV\|tpl7KR `/F4lM K  F 5 ]J uנأٛuuܟq61}E&Vy}[!lV"DNSD)D8) q#'o*+o++*(`%J" ^, J 0 | # f{cD}(Aލ ٯڕpI޼߉N}9@!P 9F(l+-jif!)/g479:^:|918642^1/.a-[,a+m*t)n(M'&$#!PmsS nd HVݵ*qgЂјҖӤԔՑ~cY=ܒb-߯j*FF"Qo&8AoT Gz Q!"[#x$/%%i&''W(()E**Q+++++g++**~)((>'!&$"` I,f~@ r^~IݏKݧm,VU4a$Se3HAX\ %dD:Bqs1/+ yU&Wfa5! CRK_[J9{ x$nx5G^> &!}K ,UHg z  ! c MP2-l5n6f޻uAfsjM"oj$`F(NWIvs 90"$Q'())((&%'#7! hE$ `B++fS؍ٙP9ݤp3j#6&PvsV6emI O\G#v'*x-E/{0"1D1 1007/'.:-c,g+k*w)y(r'f&R%3$#! 7K3 DS(ۚڹ\٥}Pݡi*<@(f:CRH;Y/] si$-58,+ K!~!!!!!7! 8W "F8emNX](1='-)E{<)C:.15ܣ@(߷U(L`ak3prjsarTm*b.PY8Swjf8Wga;%)"VM*Jq،[tɠ;Њ=7C-H;I IE<*k<_4ѺFWvs#3#ʚ(a*_5%~5c˶~ @`9gV)ʼn28F=eH4T^\8}f|-E3]0HCVV=aN#USPL2IrGEC>6^)Jɹcm7.\ܭmsƳ,϶2p.02/o ^pȧǓM>HA,yQԺղ׃ ';{ޣ>D'e9::p_5Y3'h'WCab!E*QRjNIGFF[?J/׸&íJ} -ȪAN'X'dI2Bs%%X3 5ʽ'GĔoɄT5^|h(Lg/UQeop9\?E@Ao;r,v o/қ {7 k˻u -ܽuŅ-o+V͘oCĒ>ؗ0WaJo*5-TK^Q4tm?QM;:o7^.A)H<" 8hm%ģʀS0fm  ީWg6,/&MR88vP}[j%++$AjCd>,.K@^-\ [VJ?2UlLF]Ln+0=KG10E|H4oE01ffĘ| b[˵lϴϵѤ .CE4sh*,8?A@;0#s&uVJ#nLrq[h+2 ] :I"FzM30ˍŐA$26-_ %%36* Vdʄ7[7+#~mK͌E.Ӿ T#Kg)rhHG ngu(CTL`befSfb]mTE2XSNhPݱ"h71'SWX$H}Š\ŕţNj|yy$7+9͓nͱB 9*!GBV*9Q?<7205;B IJC1;3F-~0POUD,"H+4#,4R$\*FRI+cfҋc+o)r6=?c?B>b;6y. }*̵̎˷z*03!Vm([wȝɳ\fdדW@SQHOTY/YRar?.;~K SdTSP;NBLbID:)}kɭ!ʽY +=# ʎ\ˡνлԖnܗޓqw9JJ5 ^ߖ2v8 Q/9Y>3?=~:73)fyY!?q>QOe;ZPk) L>H8(rХИ@ -\6+vcGB#"H,[0120,w&KB [ƺɞ˚WC3A=(> ں7|)QF= !?8LWuj1m]<v< B&=8CJLmLHcA8++aSld8ݞg("% ~'¹Y_sd.+6'MPDA63 ݭӄ{ՙ߳R"+046I50' [VE|5}YifhV<;pX8u@G " 0ѝhЎѴ=Q +( IE48cά0j171/MR ;/޿6LRDYFQ!NZpCle k.^7:/:-6 - (+-e /AE8!A3[ZV2.,>Ef<~%0֖R։րծfԅܼIzXDV^IpUXob,gIXYZOJ<$ a4ZE704"eڭGCdbZ#7r<&;D޵A\mX 3l= z  1Rf.nhV?2#( Ts-wTn&)5<6-%V#q/#ͳ~ߟ   <.=OHV%D%7?=x4&+{A. !3CJG6$@v(R`V4- EK=$}U>'l|GKkv4d. Y5)?I=0B!KO&ԝcԷ\W*66^6*4C՘s9)ڄݛ) d ( _rvUn3JXF]*ZQE9,*"SV )5AIJKA-I VA!/ ^7B7!7hݪuWDR S -b(XR 3>>4#gOԫԹ՛֤2Pm#1DPCSJ7D$%K9N$~/@y I V"I(bC(߻bE &3-7354/&xn"+a49O9/+3HFL;B5wbp}~2Yu8 D/lDPPR?J<;<<=32! Bn֨;΅. H# fʵn͢ξϴУѯҌ~d.׭،bfۑy(14{2+K!:@2c )6AGfHlBQ5#p gWuo+RV:in9Rybw({/3?66R6530,{') ev~HIѭј,9zP+9, umP~AD&_h ",35A:JMLF=1$2y sFdn .'.202+y x޲ר=V["$T3As7_*XCzA(-c1 33230-X)%  +:jYg2AGA:2up>a:o ',-4)%"Bc~gba9o7%<.'45D2( v0+]G7PuoH2qwQOwyuz |#o,37=9j9O8\63\/ )y a=ݰqpsF P-((m'zx\=Ֆ֟}z8ۜkz &( %.!4P52,$KFYl''2e=eFLN*L?D6&F5A+\GYm Lj`B te+r)ߗmڝmٓ%yJy (6פ3گ'S݌݂߅ Q!.1,< Fr=H%"2E#)!a05g2\+M\ާI0ޞޕޱުޮޑy^ި:I~4GL7 !!3P<.&9 x o+i.)O'܌q߆QMjM!,5(<??=39*3C,%  1"q*\29@DXFD%?15*'f182]rݡf)؄&mI2ۧJ9Kv<A6w'lg{n|#00659."6HWN#l!.:EMSVeV4TOIB~;;4r-e'{"P!$a(+|./E.*"f7k/(͛͝ΓςmT;ճ֋[%ٯz?ܼqs(Uq3n|5jh+z V A 3AIKH@`4&}o vk 5A N'.47874/F*$/ j h{;!c$$"v== ӑr=vBOvbr7w8j=jo3"'%nGT%1661(pU?=h#+27:;:83.(#lN F2#(,/;10 ,%[|}*x NnHݦܕZh٦f0ܻg|(D_*g  w1Nbnm+8?A>Y8/$ PxX XXm#, 5 )F4:x;#9n3^+! % ~0R/wYB59 $&''3&#)!FAK HBr"&)U+X+_)%G( 4T lv)O+ ڻڀJ.0)`Ep*AZ 9 8$m2o=aE?IIF9A90Y'q 8~[W3S J4D ^   WaT72 //ҡӆV)ֹoXVYX#%@%#{ #[ uNN[ ~-)^L Ic >V !"@"  <v1(/FG,:pi<_ =E[s|{mh[9]"!FtGD. " ')n*I)&"xGC1y?C #&)+p-k...-,*(&$" ~ W[LWS ճG5heZT*ݺn?>X=\wnQ9e69S?VBk']/47875;2-&)&$J   = E  # ;!@L]+A  @&/I\1c}߸5-y:* { JSL*l XYlDVoS7K"$%%<# =   ~ 9P|{+CB "$>&'T(('<&W#: ~F8"y-$;ݗ1[f;ٔRܸe޻Yߌ"Hmz|F"$q')-)(&g#!Nx h d">%'*,.0!111z10/l.-+b*)('0&f%$#"!-Z Ӷ`Ԡ)uH~ָ $Bq׊׏ם׳اv:ڻr,ݗBߊ'k*^jT!v~;pzi:ac$+0F46P6=5#3J0,)&%h!zZ82&n gP")2&G3FM fdDޑԚՙ&Um֎֪֡`׷#ߐC^[~oDI7D}N$aO: A8 ' #$%$Q#!B<3qx )m !"]#####c"! StW3 !""!}  @~Q0)U-]6<6&߫[ ߯DPLܷ'ۍږR ݹr(s\/Ry&%2*x_#'*3,,P,+P+**q)((_(s(()j*{+,-/001A2x2[21+1$0.s-+"*](&$Y#! o$^Ku  l&<؀Љ ֫ܤ9Ks7 ']Ї=!}?HJIKF?/ DŽʤ\~FՐ$IMTh0k<:3&b0: hPy/uVLZ9o4A+@:FG= X9f5L B\5iװ"BB`!Ѿ NbB1%yVq:򼼽kc ; X2<^ܕ®lĎƊF94|VdIXE \=X q 6ieq!qi/ffaS,3eY&`A]b7O];TA~,30%4DNHLôj9H'ʱ÷UȔ>(.:Ҵ6}]W'²JP__xnEpNͬ,αз1 QNYa 4mrU0yqpf0M+h5uVo_R5 ,o/%3bCW`h6xI)IC]C;.m%9 au=[j' x̩ ϶t᷂]ؾm…n(5*ȺŨ 9="Vwؔ#jH2|MYT2@y B Y(5GNM4A(yB g ;\U,Pag5oTAu0!p4[] 7YbLD-Ic7:FsNwOkM[Io? 0;PLFX#}۴G 7ṄW}!bxR%%wV^,6A;:9C4'A" Yo"m@6/՝%@2-SڝtF%+57}3& | : : U8aZbV9D' HYXA6Q)p2#='i%_Gǟj˜/2Q'ע ^ ?E z$8~?/uײ5ڙ%7<gW ؁JqB)67[1zm9d/'f'C]5SemgoU-yNr o_-356;3j+aw ( = S5S`^PL=) t ](8A> (YI˒ϼ} 5iMIϥ%ЕЯЮУx,,жϰHѝЌڌX"r1.ͺ`YͬйTOӡ(4153( пOenv؜&' !$~#gh B y  L2NViojR]M>3-L,1Cـd=ɦbӣ*',?ncɫ-7ZΩ !A)/$E͂~ϏpٵL2;5B8FE@5}*~"!%.f:HU\zXNF7 /tVW8O xT0B_Kv/;; [ at7%MZbdc a]D['YIWgTpL?)F u%}#tFPE'+u?[Jf=߄܆?Ь&(<6-ӫ"zKJہ- *)-Қ1ԇI&*ٕ4XQݯLvsZcH &&-00%0:/-M,,l)b .D2M !HZWC q k4Jz@ yN8KUDWPuD_4g#. 5)Q3(84s% ;pqɀʌ2̙Ζ ~+Џ^Zѹ`҄S#G&&H&$!4αяҀz$'Z* d ۵Zmo I&AVmcgndZL=0/"ey"-B;HT[\ER8@$O!Z:'OC #TڛEѕ{nɰh (}Qdʢ͛$l ǑNрaӐ`vT؅9޸s&s3{86/$ +(I$5^EPlUPtC-D_U,/sbP7[Cuu#.^75<=u=:5P.#7Un[ {zŚż3 ͻψ8Քړ) +l10* f^y/ !(a* $Dү`ՠ$w٫3*TL I&4>EvIJ I?E>4&&}WOg6HLhBz.fot%V!)+(P!Lc- PR p Eam*=ž Ʌʐ˾ :ԭ&׍Kۇ7)TFz N =k)7cA:eS^*\KN:X#c <, 3 '%]6>DN*TxTOGb=1&#qd|%+R/.'@-^itC&cƏǽ )?<2-#`L'Ujii \$I Նhy{TYmF۰ `,3.)"M$.I$.464&/l'~n /z* h$0*+&f )Zmgd.f$[1,ti L+:pZ Be.{4U0K#܌dؐZڏ۾޺Sad"%%I!@b ?>  Wo! C!ԉնwxٖ6rݓ ޏ@vA t M ]$\0W 7JiUWP D3K"5 %:HeD'\T z&)/*-'D!+u,5B" $l LTͼeʯ+ Џ^Յ֫׶۶ܤwMc8T\1^_.WBu+'d":QJiR6QxI=/  ovX; cP [+h5{=\C$ !l$~%_$!?Yf m S  Fڧ_ 8q]1zj-luU]y27"#,0<.&Dp.Zݚ3O/r _!!^!j7K t { U  P47VϿ ?Ԭz1XojYIy4_IY`Ixe8vh ,3?VGHE>)5* .& '%*.00.+-&Z M#c ]; > q saӇH ўҭעo%dj[݌ݹz(Rm߉ߨS"1w'q4S;@=4;5/' 9tPW %,1C7;=>?X?=;730,*( (( *y, /11!1-b'kf}qߥݸۦ^נիՌ6sbپ L~ڡڻڿڳڜڈn>٬e1ۭcܦ݊"߉~#%"bW3M#9gJ E^E!%(C))$)(()E*+5.0368!:971i)7`#./}||a(nQG Ni9&ٚEkAE ,c#-46-50Y) [dEC51 ?2OOw ` ] +] 3 Wvvn̹|x#ѧҞ q*ԉ:Վյ֭ה؋iP)9"dC]DTnr 0-9RCHJIF@:4.)%K#!!4#N%(&+N.:13I55541.*&"r9 i { RSohǹKlu*@]nΈύЏё҂r`J2٨ځHݲ{>>P$$Xr(.22`1.+2)S'F&&&=(U*S-048?4 Po.%J x @ XuS]Z|(<9  ] M!"ڵϲ| o}.C!VP$$. n3KTZJ'o"`")N7Z4'.3652.)$$  {A  =f > k r~gwAN^RN-ȦɭR{}МѩҭӴԧ՝֓v[L`ۘ3@[VC: |PH F+)7a@GKLhL|J!GB>:73l1l/.6-,,l,I,+P+?*(&J$!q qmNVܿ"ɷR])hʮ ֿנqJ+ܞZ"ߢT h2`yZJ 3 '6-40123g32100//D0 1&2W3y4e5666$6A53[20e/-,g+?*M)o('&C%<#p |' sj@߳߰G[޸ ٻt֪;My[ڹ Nގ =: ( =4X#%E%W$Z"mGQ =VC'S-P`_F *c"o K(_*]JDv !t|7m_ ?-%9YnJD\fUf#  E ]L^7S 2 ' X 8 ' v B&Oיrڒ[F!& ZfV>  2 : ; 0  , ',3 $p ',/w1-1/,!)% IT 0 s,GQ~CCY$?,:ܡs͇ #אgeߜ(($}6u X<3QVGj#b[#;+169e;;;H:t8H6#420a.B-Y,+;+**B*)!)M(G'&$5#!'jYv \kaǔɔXΌҐhWڐ;;PA],\'i, # xqx5 F!="#$E&')C*T+6,,-0- -,I,++**w)((&{%# _E 74b&j~lI^lND]suH:1Z$?/ ^N-wPZ/JAkdU6uQ{8 : za1 ?X]]X\`*`|C2By^ #pno}A/$0QQ<! _ I D w 2 F~]ڬ-v-b`h w/Tx kBavF!{%),S.._.(-Y+-)&$x!y hP. [Ztg+HLרwj.۴Tޤ,ߺ>uf*X+b4q 5v}!#l "Pb i'8-15;7d88,8[7'64R3 20/.}-,+ +G*l)('Y'&%*%L$`#a"E! # c q\OҬvKԯT֌؉sBڛXۢE܇݉Co$|%iBa7DFH b,[aL*=<HvV !#2%&K()*+f,,8-^-_-k-V- -,+*0))'_$ r =Fqw*4devl];ߌUl۹x>ޱh u$gId6~# 1TP_)B2aA LZj ( U.TFhz1=OYw5PijjoN"|-J# A wqw5^6$o-(a  [ tMI<T'/ٱ `۝p6ޫd% v5F u'9}a Bb"&*-j/s000/;.,/+b)'%#!q5K & iBS_ۋ;a9٠y<݇@߮cpY-Tpu gb;+'Dz )$y)-02K45N5-543 392P1j0/.-,,8+C*#)$(''&$#"SWN="k,NBz)Gu ; 5!H7O$K t71Jk I>  I W Ub*Of'PZP:INi41/& {:t.]`wg\!g /BRB>?R x / x  ] *  _x]C8[{> ݖZ ?:{Tz5ueyZ44 S  >!((- 0.,l,,g:C4/+23,)B*".%B)WK%, ^ (2m!=$M\WRDD4J#8uY'ʢͱg!4l@DPGGMGrFEB=5*1 Qޘ.ɷʅ˗MNϲ`=ҫyԶڧY#:I|NSD6* %-e*}^'   < o9VUbijukyWzy_x!uMp!j=]Is,jM;V8ª"6:)Mъ9 !!N^M0wjX$Z&S/"Ե?%!.9kvH7Jba TZ ;s]N/ V=Oa+6"V.8- 3ۄٹ0r-U6D7U2D-L++i-^02 3)/#E1ԯф+Ԡ.՛;}]ס(dؘ90F0٭^h#:B5ɾEYdڲҴt(5* OŤ#fGpv1a. 790ȏ+Ю1zE$q_'M5+[ozQ%fP7cn-(JC%B8R U5*PjTp>o 2bDֲƬ-70i% 8v'Ŏ6R8 ((S/Y-(2P++ س`ˬ 4T$T)ܫѼ .d,  !0+1Qj[=c9%yJNvɡT+. ?&pZ!,5>>1z׾1˗˚Λz~ׯt@ Y8^ !0^},yaeNv8%@-<ġ٘()5XJ)kV\ s8_ԡCT9@w7M%Fh~kV'75ށ69: !4ESK(/&DSXQD>D]GJC<0zh'5#9LrCu*11ӻ5Է (U@P4J'j׻ɗ ۢٞ޸AХ> pFvmGgNˬҰcj7ZUPs1T_r"%'a(&#v|-?FD&,jZ @u~yOS#_ӁS#C>,TA8t] x}鵰3 CdH{HΠ#:*/6+A(PaqvlDH u :?5d\rV+浰5%c*W8 Q nVs,[!&VJoYtf& a(-H.,F&6¶t2dQj(zխկ5Źlir , kUNT"1mO{?Qcv  <.Qa[3/gļԺ弌/UNnRA~}Cxf.Aqv}^-P%;Xk^ۭ7HprYX>)z 80  F =ʥ(Fh`tnGHT ՅF&"$"!&  }C!ƜY%Vjb&E1,NCþx´`IJՂ&ALV3~}rx,HY^ZMx9A LmClԺ!>R]ISNäIU4Fʩȭ _~M1  1)C& &,"12CJpj9܆U-HDG> /1")|5:)=m>->=I;73-{#&LVfUiX6%ƨ)㪥NۻSwpvD7cҫ쮃ӱ&Z!FNles[- R G:^HL_d¤֙+:*75 7:z4$h04$| P- 6 3НЗЮϗJn|EnE#b~22®yM;V s7 SzCL2nWWj[gPf+<Ѳ|'-ǽ/Mp'.\  +$2RD{LЎ hEuѓѰaaixnft$4<9 +y,3&| D|= (< 㽻˵9jcF#JX PX(o' v0x9ʹχц`%;]szlB1[՞oS03 Mפaݻ_3Fd8h*8>>4!^3ѠғUӠ#6Q\lmhS5`m84˫G;gu{ƪs+Q#"3!X'h-(U >܋M@M*É583eW}~nN'2 #6E ^5o]H=2$A.G8; rs[ u] EEDU^ҼϬ$kM  |.  0~nlືÿѿ #q171f("#D33FOd$y),%zut<J/)ATgvzq2V'/O>^=&kn&iA%7(B FC;/\yPԋC$"Xn'h#^ ܙ  TüOHmfN:A׼ݱ(۞Ƶ¿|9VeAc':4u72*!-'61_8q@.ML8075.N*=]2Q[ʮ˫ʋ~9a}ҽv (3Advsf^i6 P ʨ̘`_s1M,Z:S]WCB@dŪɒaD͝ƢǶʻ %f4;tLhT{|lp{_N=1T+)s.7ALPN@''&\(%T ō&k,AmᲙq KQ֢(.zƩ̄XP,1)~L*$462D) NĚGĔÂ"0 k6c{Cݷ3Y|ѳʞUgYvj-%h S%.0,i%I  +-O-:@<0Nqw 1#L *8 9APhs0%F[OvID8L*8ACB>o:s7v5432-"Dǂ"͛ aJ j U=.ǯQj<,/Nҫg+Ua1wF{V _N\Mj/ > S|7Ҹԥܶ-.d k  gl ?e%F!2?wFrHH.FCA@`>G[V\Z0J4^-!-M' r1MESH{. {U C$K- {oO<;TZO4tV'p*`ݵI .S !SφѾw;٦C+fK *Q7 >?;)3'V}u!X&/' &# <«ah"Gkhv_hEXq?ÚEq˜̗ͤ|?Yьщ90>B<.YuI}˗"ȜY1z!'&h'(5#W.l3 6r53]/+&"n@6 $'p+-v.+ &^| 0̜   :>LPE* ն1糺͜F sзỦ̗n~~,f'5yXpk}whT>K'pbD%S053'`Ew1 E$ -m2/3.%/pʨ[ɔɱAǃk݋i)E6, KF[iE}=XFe , #~$#|!vbRJ.G\lu)vopc3P7XCa.E" ';q[et{2sQX2Rv؄اسyzӉъƵHL_'ߥ /t.>ImNK@x-cǛ+Ƹ"RR]&e 1 pu{4"!/ s9{b' -)r37f4'c rܙ7xߔߊ ޴geS}#)-/0.-*,9GQYk_8bc`ZP?u) =mH  p,I &c2m7/ Y Gŭ(Ԯ`'*((#laZ n$/AYQjssgqe!O0g t{~,i#}Tt =#(G*&T&^($ ;(-&;#ԟx`!("|$O |]ђבg۬+|!)'QDZkjsnvtysW >7+AHN :4C#‚9-A"X-.'V-ѲO%./^)r&(D9U *r?RQ`]jopk&cVvG7& i] 45"*u.r. *-" tljY!Ùx|ɨʮˣ̠uA h ҜӓW՛ٶ^ݠx;Ri2<4,+ AP+WWRJHAa7.+,n,+r*q(L% "m%[&R%! m e U+ !`'&(=MU?V N{=%I-:TYٿ30$ ͟\Ӊ;ցaڏ_'18<?i?;5/(5!. x>Q )@-Q\8aa\fU@LA*6)DɷIoBw NaOd:=t93D/-ɥ҃n!P 3E<P uv5.1]|dr/aGf^zVwcdIb,x M@ohdx۝b ~<C  24&7U+)3=iFL6QRLPHJ?@;2 ) eɂB4Un[1 ` fهы}w׸ {ߞj$ypw (@+("{Y blXۧ]܂%&Vc8+9@EMSVIWUURMHB=,82;-&}eo(HWѨ|*0\DW F"zL܅ݖޗ߁UM,9/Au &Y,p.`3BnRc[^4\SXG7&m_ A%"3Q@]LMVs]TaaD^0WLw?/, '0H  g8ɨrп'.dŝ˙crlًHG8&ݦQ߿5 ( ElR 9#;ީ@W.87?Ac@;4*  =T)QV W/Vj -~")h-/u0K/,(O$ M6]%f %6 ! TڍQm^Ͼ1Nx^"~ޙۮ99ڥ?7  l ix0a B!#{#\ ~CyW4h5;03:# FUm+C 9-t5983+ !*Y'֨ՒPըյ j} O=2#' +w.146O89+:9<9752(/e+S'#{[!R&i,3;WB}GJ1I{Dv;-);<1%ĬŹ˜Mn<Ѷjw>`eX9ԏ V֡'+ ߠbrh5B)!7@^DDA<=5,h"^t&8/0 & Mb *9E@NnS0USNmG}=[1F#_:6̞͖њTӀkeܪZ?+GMRQST Cpw 57-+@.N5X]\/W@Me?.D $\OJ u b N (    L Bݠ{in]ˇ*VlfWMK@ +K˿7?FOLUWP1#ӟRאmG#& &$"n3%K'&#!yP .Zh PW ,7BL=T7[`ehiHjihfch`i\WORKD;1&1 `/{_ * <(D2L*t&wĹRȾEoÉğũƴ͑Ω[Бly S1'k Ld=./9o#m')*O)'u$Qwu` *h,\x oU 7 "#! :زЀʦ4SHΨ Uϲ-xЮ##v 95;  &.36|8K8642X0!//1~36:=BErH:JeJHE(?.70-!,4\ D,>ˁD7۽gLʿCŌɎ]ͩ*OuwsiHةQW ޞ[}7)Z^Sߐށ%z )Q%3]@IJ'RWY)Z(XITO IIB;3,&?Dx?mc}F 8 b ( % E !" : tXpk:@8)wS9 :p .l|F 33TJ ԒB־ָױdT7 ,?4m, s `  2 ~ = c zgpHx+QJPl'f®?^ȄɎʚ̈ђ\}@B`zx>~5ڰ+ݥP@&]~(k:yJlXckquv[u+sokg1bU]XeTyPLJGAECBA@?:?>B>==Y=<(<0;96'3.4'uS|^x}7:*QMʼEq(ԉ0^Ք=N:ڈE0  ((./1261\.N*% 3 [ D WF_"M%(r,C03;79<$>?@@ @><:I741.+5)&$" C?X9 g=NA]5^3ǫ°+3)ʿӝA#pܴۧݚk.SNijvL$lL`0sC Z'o RBH6= eZ F v Fjw Sq :[@$q(,.>123383(2y0e.+f)&#>!C%/-39> BCD6EDC?A>94/j*#gA 3K."ChIX#C?q7`$8WKŅ$Yv}pR!g:ޗg+hs9w*3*j+HZ ] g1?mKSY]^]ZVPJC=n60G*%k ~;qpb@dr #%$(f*+#,<+M)% !/ !*S/TOL  U- iKu̟BfΘήΑi"͛c͘͝}TU&8g $ 0tTMx1m`))$4Nv6mڢ!ma  J 9$-q4-:q>3AVBWBgA?h=:E85k310000i1q23"567899;9#8#693a/f*v$: +=ogw+Z'ə$jͯϼРoӬ/ԓCQC;Ԁ"ԽU1C?;* Ҭy8ѡRѮЦѡvkG׌8!NE ] /8 D m j a<#,5;{A5E`G'H}GEB>:5 1i,E(J$ BE Q /`a( ! } 4!,! vanONSn W  +}"sM6ޛ_BLֳJ`[t)Q3 (Cq[oD)o.5s)Mt|iOjW1E]QB5R". , "$%%j$H"l'l  S 9v!%)+,.0124j567899%:99876>5321S100//......3.-A,\*'#,h ] ~@~n0hv8{3H]aY`X˜YȢ>K?ѝJՉֽ  ߙU*t)0  $Zuce Y f V  S | i u ) '.368[740*#>J| r Zi lS6^\C$   M { &E  I _ XL,&6,0Y4H66533N/*#y }eH {H|PFU63B(ۀR[GhĬ /Lazʀy~ue\N;Ը՘g-ػّ]܉Bޘ4"h>H=&0`9.@EOHI2J?IGE5DgBT@K>x<:98878K889;k<=q?@mBCE FF"G2GFE7DBi?;73-'!H Oso>:I,!w&3ص@cCAȾ߿"37363*! ̺͖w4)[ 8fot~ +TmhcohO$ Y   y o [ < p (^J/ڵվԵm5WR ,s  v *]RB1RV 2fu!'0,]04&7v9>;<~=>e>~>>S>>=7=dD;n73/2,(%|"}+  Q8dH'Co- b r R*_%ܬ6GܪK  U C  !  ]ViYV^EVb\Xa4%k" eۍדV :8PIOF.%Խ՛p9َgާ; E 89RwW+=7N;U!Z(p.>49f>uBEHJSL,MZMM[L7KIGEC`A>|<:74h20-+)?(Q'n&%$#Y" 0  7Ìxj.nü0H`~ÁvłƇxhVI5&|L#ԡDtAޒ1:*]ytqJ-  fSX > ! <  +  t!(P-1 5Q7887e5M2h.)#* zM]^*E`vu2M4PI |  .01l `fFv~CD ` u4 `%c]{ cix(4F P: :J@6!R ׬y]Ƞ*7*|9Y?@A? >:4*yjg!JƄĝ{}W͊=8( +-BMF 'V:Y :TztEH!@C7?O`BuB]|w}lRYp8$6&Zܫ‰Ǹ ӷG<Ђ~$`a 4C{eMgy5UU O>GsX(:,cHT+'Ob9jZjQfb8`__[cP)=9&7PU+UjyU lK8:U_\MO=* Z g y X4ʢ,\ȕ蓛ꕝ ҟq˦ 64"w۲:*&Q٫g,ҹ9qؤ!+-kո1))pY5@BX)Wh1HC<qZu t#{.3 Pig,}r %_CO>6-q)TCJYA1 j4C"IIYHJlS+O}vN/EG<* hq߂5*5"/ƞihk:߽߲ ֍hH^6r?y=ޞ8,xtGaRH>-mKUzEi袾L|F@@N~UT)tRX4(  g㰵 ;=aQ*1ݜiPWJ5Xv.c~rC(m$H zj{Y ,rD&+_@OSE#m]E]I{`:.-;CA>R_I]U@*/k[>-;KD ]11@Y:%)tkf=u{ Y8Pr,0u~ y^2D-RшfT,đ"o%{/ <-K* 7}gP )0Y~_ +hj;ſ^W]l[?%6\d""غ.Â6)`%@w˝#G0 ϒ7j+߼}4XGk;a߈WC{dLh+[TwtWRʻξP$ĶN/^%&+/Gy_cjb?(8޳Ky ag ١2 FxY "Nfca2ڸŖ)4M.]]غ$'^LwsX<1+j6 X϶ƢAwrX(7=<7,/>A6l CElIEk}~`@.;><82'3%*7$"%"c?ټ(6v@WѦ ː9BݤwgU)LNSA0Ob<()k5V}Пk꧅1>AL<-RX2׵^JJ)$  &͏H-3|,g͇Ώ>];QJE*GIy=5c~s\NL1w#axI=֜, ҭܥLHtmzt[:35Xʐ2=0)4&e3Y'51K0`Lf!U"~{=bϓi%6RHRP k($BqXeg?t4|U\/qq a*;TK&VfWZb\gOKA#S߈ 54> :L{#b ѻ$`g<ƗNz B!2<@;',Wj}+ް qβ̴e-!""8'ۮɜ̑-уuգ,x.bJf"pe4O0Hmb?؇L7V!P:OfreOJJA?5;& #*,Y4;AC?k:;6& w: (=a8~wU Q&46,~ѤQѭ0+gϯVM . u,.Q'ZK>}QœƐ&Y! ߇V%P!I%|A%M: ƮVA3f|}Њ:¯ÑKƐ?^#SYtsp]ED+=,*rAVb`5M%0Ժ^$@9/K1HG8C U4R(k ,FxSSF1 i(8@?5n*U)-K.,.)]ј҆ӍJX4EILF4ByOV 㯎EʃU?#J)F' 'U B!0t骡]'E^Pqe? #n ="Xp B  5Լn8\k&L 4 qL=!%u[Ncؠ)f@Ln $N?OTV/QQIAA3".73@uDB=6Y9jESdvrQI ~b`/xU/A:ka_aIJaGnʸh>žٺ4eR_-^O:!=bb%Z ^&O<+LPE'd+R"O^.Ɓnƫ{ʪ氎溺s ( -Q/AM:gw[{oT0w~yq".EeODo''W% [ .=HPPBJu;& qx9&@35."*U3 j+g2. {бΐ ja!" ,FiR`|}jQ̡h(=e-M#dmi2ZwAB# a[mؼHe7¼ī߱)9#Rrʄ))? / "ʽ p/&pJߢu @y $%ҘNYWkؔvQ;3j6:` p}!6 "tBRh~~oSA ?=5*  ,d81 G$̩s~jM)9ѡݳ˨դҶ6P*W?LQK9NǮ{N2DPD U4+ȍy˴ 8Lru %U,/H11@111u/)! 0 bۻn^1 p/'GL/B1[$w'39=>=<;:Y9_87653&/( IG*&- ,%FX J/%,S("#$T#lcgǾƖĩ\9`ە @>nn} qE!&%/7@3GJI@-6 \o#uP'ߣŨ㭌[>?ĸ1Ѥ  8 TMf-x$,~5@N]\jqMrLiTI6~LsL߃PCI@"=RNTAO@,2n& .A9@qDHFE:DAG<5g,X" h!+\..J(V -+)'C 8cHөoV")6kųye|pܮ< K ($ߙ W?̀Р6^ O!')q.1}3&4331/,%(!j v4)J& sA K.08==?3LS̺dhqĝci##*g$޸p2s".6|;Z;@MgW\n\WNkB3\$1S ~ -@=TffvgyeGP!.@dW&٩3ՋҼϱXʲ Ƀ(l/?_$$f#%   >/#3z D 2b/dk|ɰٶ̐[ % uQքv6 U7>)^:Jݎj &@K[r~~>t$]B0*"s @FJEX O!"*2: AEGrD=26"3?20A; sP aWp׻Y|T!ٻ7B% SF,k|"-z 0A _Aa 6Ho= %>jRC]_nYJd5JEx ŪUEȈxxץJ"E WJMw G9D.de ""7MC &+L1:-G"Km{{9_5u{g*4<@@*>9n2M+#$76d#1P?MHZfqouxumN_3Kw1J6}Ӯ3ǏĽũC}gݟ˥\aʬe հ2ܹrs   #67LlWYBRC.;ݖې܌_D y Y(3r9^:5%+N #}y"!6g1$ByA FN 268 n8CVS+i(,%38n81!,&"G 3!#3'+-3_>GSLLG =-h- HK1ϻ1' Ӌ=KURrqο"DK]ӾָȺc1sۿmp CI0#HYkbbqYH0'5I=s_U U _%"t*04A7752-C(5" "S"% :!$'( */6kDIsG*=C+NX7 ̫i!iidC}-. !X te). + 9 x̀ǧ6½Æ4ơDE !g[n uP P5iɂu˔̉͂Ίsrҍ֜'p (Q4Fczw}o^OA6,&$$?&)0g9CNYd ntxw$s)j\KY8b#V ]*;$ ,D {GY„ JO-9AbE,EA;3p+ #"7  ^ <a:U"% )j)'%3# FO.vJ#CZrJ7 , eŷʴF۵Lc}U 3;jU * &~ ^ le @1N@JNQMF}9( 1ܻPʠ,̯ Eڸ$@2 !}:#{Qh@yHrI.5 ZHusVVH #&2>$FJLJE?T7.<&  lf F?g';KX6adc^VKa?1$$Ll %*-/,.*'% ;kיVۦݹߒj85-ȯڤЫBܮ@߱aºüswpjݶ*@79TwAy"E; 28{Q cnPt\tQph]QC6a*E ` M S !)19AHSOTXF[w\U\f[yYVSPrMPJdGDB@b>;84/)n!C82a5*>kߛF[wη])>XBǷRNɨ-1ɪZȒȀ?Ƥ>Ž'0VݝlQbq;GUA.:C IKIPF@:o2*";` P> *J= q"+(-03555i420.S,+*+({&F%x$#$B$$%&'(((O),($qhb)6ZҒўпσaӦ7=y Gs;ElT?u)4o3Y]  ;UEP} K  Z|xH 8!2AM`V[]#\VNqD7) J%/P =&%~j6- k tz %jluԿԓI_]XϪ;̿4ɇPF8ǍGHCmǵ}עk%@?^G߸ܭ/C MD E'22:?BC?CA=951-$*'$h#""#,% '0)+-/h1}2 32}10..+& /s 0W ,sQ^:Ԭ>ܫ7ߟRKK xq$`Br n)z&99@!}~ 1}@KRU,UQqKqC_:0+'( QGl b l!&)z-0367w9:E;;Y;k:863/E+z%NC~N,`ؐUˬ,yzXiRξ0j’ù@ɑۤ/&Me2"'+-,.b-+')&.$! Qe+z!#V&(*,*..707CNPX`meijjifAb] XRpKGD<947+ "+ ^Jey_{vjF GQI$7?_S2Dƛ곫ö VBҏP1Q-NZg(ca\)8U? \ r 5 R [ 8 *  9 \c^n ߗ? 1 !! BPBV N 9lw? N v*A#2 ca7"+2`8<>=;8c4K.&5$ bl#=Dd p%]*H,ˇ޸&DZ ZzSѷ.x˻jRÇĵ-:OIUM1dт>\\5K/.z:Q?W"-8C MU@[(`cYfgAh%hgf/ec`b`M_]\[ZY$YNXWWLVqUoTVS!RPN9LSIEA;5-$z/%;Nh9ѯx*wа=>ŸI#Ll‘ò  ѳҟӅ-ٜbPMe25*6@HNRTfUTRPLjIE B>;96q42D101/m.----(.|..&//.3.U--,+)&/#LogNt)W aWz +*֢{/٣Qۏݠ3ޯ߇"/7oF.s N O{W( ! $b(*,,I+i($gtQ"yUaKfprBuMc ot2XT aEhZq]JT?>v=:~7[3.(\"M t#ZrEda1A!ՓZϵ׶t ݆Gi0SyzQp^$h!(.257B87641O.*+R'$',-1 58B:;d<,<2;975k2`/|,*Q)'K&$#s!(sFob&g}{ JۤϨH}`ų(Ϸe Yjéѽy(Bڪ Xހ߇zL]l^u5@{X$(+-..138?E3K]OR#U;WwXXBXW]UfS QyNK`IFDtBv@>=<;>;::Y:9;9Z87.52/e+z& ?7  $ $&v:TFvf(LþpǬΆ?{~Sӗ##u=Յ>3l4sk5V8pr +eq} u!',0110 -(#^p3!#l$%v&''''{'!'&2&%%$#"#""!  z[ <Ь|i+Q$ 8CjA~7FE)M X[,Kʸu$4&ҿӚ'HyvHPI>sn} [ b i q 8o\yj%v,28}=ADFHIIIHGEC@m=9b50+2%  /RwLi Zw'mEnO#N_`Tj]F̈́ !+#ҭo՟+ֱr׽9Yj~؀tP\gbmvVB +!:!&)e,.H0142i2q222191000/=/...-,X,+**E)n('&%7%$#"!:!\ !f2v$M6#ߝ~NuJG,)pYGt!jm&Be@8B5DOs!:&/*/-n/01110/6.,+p)'U&$#"""""i"! 1. !BqE2D`uJ[9mVX—˿->1ˉ+-֜-Vkt2K 5kc\<  >X?`$Ko:Q>r".&(1*N*')&H#N * } 9Z#n46d`By^F>jWۘڣ۝R /L\dW;%#/JLuPf>-5_ ]iK@;[SC?X E`vam 0 >!"m##.#"! YNE3>vA6!#%'s((('&G%r#"L!^ I^ B" z"j}#֩Ȃt;~Kȅȩ0PзјnG. ֤q3ٳ1ܝTާ߷ pd#;*~29?=EILOO+QIRR SR1RQQQQjQ7QQPPWP PO)ONNYMvLKJsI:HFETDBAB?+=:G8:51-2)#9)0$Gb.]uRFKHҷJ6UmuÁđŖƑljȀ{pW8ϼЖd2Ԗa(׳j8ڵ"l( .  R8 +&+x04n8r;=l?U@@@+@8?><:864210.-$+(d&#+ VA  2 3 ` D 3cl\ } j\>riܬ>މ?ZhtzgCފ[޴ u#K+;dFZPG6j*sc#ZOLxGOD %(v2mV*C+rTBHFRfxP/p%AFSmy V2z f + 0  % ~ lfuNtXM } B  '#kRj:+3܅נҧI.Ζ===p<;:9|80754W2\0-g+(}%"v { p.z\e]CtןvoV~15ˑṆ̡ϐmӾJh؆ٖڞ۔vN߂;#+s V3@[':'NUEiUttm%Y c&KQT $dC9^ .FG0 <!{Gir܉ه > \fqW/U xpחO҃'d`4ם1zخ 8Zeuكهٍُِٔكٺo4ۓAݜ;߃#Us0mg";=X_ &|$#*/p4~8;>}ACE!FFG%GFFED0DCSCBLBA@@5??>@=!<:P97/6O4F20-+($I!m ^CxiQ} ~΄˼ŵn[e_`M3!θψb> ӪrDװn-٢IۢP݉?߹Gnruwhrb44P h B {  $ u _4 #%') **r*)('%#a!L4P=c 4m3~{x@l?Mq ` & Kze sy-<)"ޭz#ݍY-WJqAeprT V-zC[`JC3RI.r .Y@ۺޓ/?q?W/ r s ] G 6 $  W ( @ _ b beHo`""!%#$X&'(K)l),)D(&)%*# &I>&3Utx A IF9pv?p5FcփՍӓX ӭTҜ[ѽє[Աo,תg~1܌)q : z F 2  QA #b%j'6)*+,-1.k.}..t.).-D-,+8+L*=)"(&%C$" 6lo?e ZrwH51Q1ߌ#9LC-3=$(|U&7B3%`'* Hh+cDY6<> `TV!C$&n()/+,,,,_,+H+v*l)L(''%s$#!#h~s 8F||l4vZf%@q}_L6׈ԯҩk3ր2ٷ^vv@Ieso]15 khL !!!!!![! H lq?v X/Kgk J P2 Yt33;F==5#6|O41NNWWejn+n)V)_N1B&oA><.<# =X]Ju X6PBih;M<C{e$,X^#vebL A 0 #SO"_nn#CB)t@s^*{\߳'m~+{bךLڼff ީDߏN YpuGP/G[ ><O y f"$U%&),/Q24v6!8{9q:!;;;;;k;:C:h9Z8Q7"6 5V43210/.-K,*^)'&$"yb RR(7d֯YG1Цs>sϫt= ҒL(]ַDuܸۚy?pCR)j'HN{VHn  n,{Qic4-w ]H`K- ) _ ) < L F ;  1 m c  z^8G mQGi' ^ G 9VEJ7_  E >U% m8.cOo 5qn J _ 8 f g . MV  S #Y`.> WY5c0r5pKV?<{`JX &Lm/kP9[j-\ Z  2WTOc9Uc8jG<BZS9C  %pyifHݟ۰|.ޘ+K"EI}.#_CT W ZA|.j"$1'<)*~,-./'0n0}0o0'0/. .d-,+*)#(&$" $` J=MgxW!"j}  #Ek 4 .znT{8^3>y %(6 pq}IB\t h76)$ hgwCh4D:ti,lf064=H@1!)O/TM(Zu u N N'uNVC!"$%'(()*<*J*$*))x('0'K&-%#\" Yp  %_F\exNm4 >vܦ=2[g١Bڎ/j ި@q.6?.b; s^OQ 5cC7!"8$R%I&''.(i((((t(/('x'&`&%$ $#" $9NQX  ,*R wFI8RA iR?]ggrpgU0Kv%T{M+NRrz$ B^]7z  B?4u`f [ ae65>>3=% w vz >mayU@]]k4  >F2oGXgAOt  A,>|xB]~d W  vP}+bEp I&A5i|H7DD<7pWn0@NkgJ~.X_FoE?$I* (_b"`nO`W \zZ%>&6z\J#?c \ @4P`bU"N' #$ߪޅc-۪1ۉ7f߸El#)44 x[1r6C2K&u**a Y?!$'j*,/0y2345L666x6!65 5Y43h2!1/.7-+9*(&y%$" BHa  4.{$Tߌ)Kv<֝Z٨[۠J܋$޺OmuJYPYY"s7^^*i8:a/#[ Hsn?>p~SiMUQLj.~!IdnE'z$S E 9Y4Mcu]I^le"k.gC_GR*gS0KM?3oOI5opM'tsSk::1$ h  ` =o'$,4)k /f| i NF [ USAti9%s'Dj72Q kHk*5_rQ~ '  K u [  y +MW<0mg + 3{87K x+% &L#!e_"=Y\(/n4Y~%{7  8T)=G5l6]  1y[.3SFyoMS>J1e,e.B}V _ JsntOWmE  *, u,0 ]  kb 4  !^u  1IE8'3\8/3&"NkLJ*)'M:3CH1UQ?z&JUNO;_ DTS}4i^ Q w L}CQbcHMUOi@  4 K q lE,d1=|F1?4li.[!~F&Ldy}\d0+u)MppbgdS N O_X=073 #"}#$%&'8((0)p)))))4)(2(~'&%$s#1" I/ "IL1F%~$o,OH;O`tlGyK u/WRnu)l:br* n@]MaM r=P ! 95  z 5 zs?! }1 :4:HME=5%n5 }9J8b}{tJ+2aoU]bXXQM5HO i5dwRBu1'U<Vr 'R0Qq6=K1 \r. = 0 x yRmj]CY p 4  L xn>\X[Rp*9/ '@{g=1O_,xlq3UDvf'.]&D7^!0@A8(]5C3fz}],bG p-0(YOn 8D4  S 0!! Y/@ + pT( s?g|)/'?  i(`Qxm#8 # s #q {!"#$%)&&&'"' '&r&%L%$#"!l $5Rsyh P ) p"xLOY)jI39n6I go|)x&s1DNR;i`/KZ`Q9P0XL!l W  " iF >g{l<+KKV {!aNP#Pe{K+>KE(VCHevzeE%pSU Z+H[r\oxuB[al!^^"y } p9!*G|^%41(3(Rq  Z N:FZfeF#D(qkx*( q0Y~4X ] [Y=dgh. b0"( lJ2S*;8'DT_W{ { n K 9?})e Vc#b# `0CpmQ&X%Q /61+q K {Lm1p|Z[D+ 4  W kH4C*9mpP4ZX3UYVr 0>Cix|l> k W & I \ ixkEVQ6,9!;%j^d!':5$l:PR?[sq\I+ z'fx3 c4`w~fP;x:W"K;ibZ3NbOzc?Q-| fvRV=5 Q 9 `w ("2!OTF$~ t+@C.} QUBcR$z!i=NY.Uo%yu m _3wSSDX%uv* Z $fxGC !"#$-%%$&k&&&w&S&&%!%x$##*"?!: )%| ?~@B7m];;% IT/GV<+ P(k%e 92[pKw +2 /-+7$:F6kK &S9A@6^ '  c  *7H:O[([;o4r69L?};@4QOf q)~a(;fn+{wMJsvH# @&Y+@PVAa B-<5@.,`% * U } a  % &/uK?<62k$p()~#{V #KADw1 c;g 0 e 8 t ^ WKJG#df&X1T(3?"J0m:\ux]B)b+i#;2m#$y@ & LQ(+#*>XH +  9Q5>} @gHdg[!~>N\_T>dJ.LA7k +Aim W <  % CZVL/hI?cM@F&BA< b  77P.uU/2(94g-A[wJ bXJ5uvl &j<ZedU?!)QbiY 2 > R HmhI 7CfvhQ@YH 8 $ v ; wuFc%AGPDG e(oGhp> C~!8K:c0\ aW'`" ]Vh^iU   k  [ a " J n  B 7  Nxh]hK*agK0f1+R p@ GQG>k`"9[xv;N a T  2 OA_ j >  < b}mVO%b }>9+m5gKD^u b!;7p#p6]k|[Cx& <  c & : N O E & n * T V iSEfuygL'Q~YG,d  {J4A->.|D)q$0{ xX1S.!Z,^|!g _$X V20x-cy3 r   g 0 X r w ] =  K t  Y? 1Swgc [{S cq{Y5 QQ@[fep)q>~9oI!QJr%Z1eBMjVb7RlwgTA%EfMcp}sZ>=7p q58P,/UlnhM"d IY` L=U\i}u=2l,e)_K@as{V(<6w(c$>JSM5NQ Z=!!K 5Xy Glk<]@Sd7r1[{~gK.wH \^,4b"nO M 9hAq )Y!RvX;1 /-E]d L ( [ yQ(HB JN b ~ S G {t{N1BIIDCA/\4 rBUVz*T nQ!O IS<}B6!b<.1mh1Is{pCiM!]r#Ip{}\9zJ sAGs i7OHL#D#?xXn:c H@z'S8bq3Z2;%>8XspV3W%V|c:mG* q/1 :j2|)WxpJ!yD)e)Y4Sah{vrwmf\I\{!GQ17w02/#Sk6V;Y F0C)%w):BR_\2y!z$pQ;2mT%_.] Rz 6a4Zhs_U'W[r]ZlP  J y G VBxh P zGm}|sJ@A:@6KS P1w!Q&YKu"PBnlBcH&-j*CRfaK|]5 @ e N + X h ? 8  0 _ p t w m U < @ ( 8 ;Q;_|FI{L }r9> /*[>|!),qE FSCX*cr-Pr `uZk6_L8x     u/C)Do&n"2@@'v,$16_T'e.`3i4qT(a/^P={JY R}>-s@evT  J y = ; B*I*Q7sr\;' xF e&\(G`roV>&k6cZ~9]|4O OSW$r # ) t { ; 4 D 9AAa{)u^@#!P} ;_Dh$3'k*6'lKHxi=8pZ'4=d~~meO(_AaDqNxk=a(1o;RbjcaOB2+eHz/+da0x>{'.09xH +>INSQA,v@ V VIPtwA 4 ^ o <  u  a d*B$l.o0TqyxrbN7u2S \8`w_>QBQQTRUIw)Ox4Y%Hfx-/f$ ; h n ? J`_9f}Q~ /7  T#ICRuslNi(jO-n >x@Tt|dP5N'S"13.%T 7]ty^A>]u`9It)DD#gv$^|C(m\(C)WJ+n0*~$sR[6m:l}Dd^*2"B<p)?L]gi_R@ x:g~W%q(u!IV;? ;by^7t? M'AUf}rbN2Y;gCk@3 L;GS sTb7 B r | O  ;d](9F`z)J[K,m C|?mAi B$&iBp+(tG"H&PeD9&  3 c U I`4N i M  V /`xK] ]K?cIGr,Sr :_| 1Xo75NbG1Z\R\:n)[sf(i;Tq w % r   - @ C ; , O e  3><w%zD-i'It =[4]eZ4` V5UusU/ {<8it181Xu!BUo`-1"Z@prT  a  B k g G *  9 \ { y ` 3 k  e iTa5g_uV]kidbJ<4N,{n 2C\v00,*d+2/, a$[T| JgsJi!tAON=w^DU%s2r;RU5S}Cf#@d?b*b^R6HhQ b 5 K lZ\|1 - ]  F s{\;#h!X&_Ko%K{@f$Hm6Y|1Ik' s9;T#NTW Yxh # o  D V j w n m C % > { | k H # 4 . f {rk>PYC`kEIv:Y$y&>]x:Tl,A_v+BVgv6`oul-:W ,KYemhg_`=Xq|z{u`G+J;7s /PZhU;#tLb-Vc'm5J2Lg}&i!>Zy*D]} (AXf)F]n B `!wnX2p"ZA[ >SR5E  N y t F < )RrrbDt,6U'_=T!Qs:^-C_s 1@Oh&6APfy'8PakNbQDhuf 3 / t  8 E A J @  U  w ! k  ("i&95#s!gR#b69[t5Un!7IZx+CZi*3CTatduzkP'5!c5Yr]$Qgx{cG#W2)Xu !-&mggVDE@\<k; sE Z(~Ctf*9HUcu)<)4)Xd KAp d1_GTyW.j8 g;PO=b$129@B?.  gF#T%d/_u5V"t^r CP[G(T]/s&Fcx~kM0PL m!qo;tEwE *:] c$/~m@Bx#Qz #E_kztcK4oCgGx;Q\s~pZO;L} %&! c1Jw/F6xV,eA ;Rl %=Uh~2IZd~ZS XFWJ{ 9e0>OXsQp[9ctT-V xY#,4c a N4~ ` P/Gh8So0G`{ -CVf},6E^p/>|+ug8T X#7X O  7 L Y i l g a J & v 4 C 'Jc\V/b+M cs7>BXs +Ro?Rd,L[h $6@IXdkr}5& F"|!v Z[;r/x2]   {L[oX!?HWO9zdJ*}P.U)c1j9x|8FYr*BYo /@dD-T).}\"T [/sTMLD5'Z0W[h~.E`tthP8"e?m6 |OMK->M]v^0_hR8g ",494+^7[Vrx!kO5y(i9VMN:g#[,]#IcwpP3}]6{R"zHn .IZqM2^%,5>2$ FH6X ^a _PN1GVbu &3CMbp|aT1S I(\ *Ut   9I)j8^~nM%ZD?zX\fCQ\ ORU7Kg.BWo .J_n'?Mbvz!1@S0{_-nNFeZZ': B x [ - d$gS#|T=S:8 ,=P_s+3>GNY^cnv} %+4AJPW`P-ZeQ&_#Kg|bCX!i*H^ YS<+{# '8KXjy&5ALZahu~(3:DPWakuR$PdLSAfoS-|E Y>HJ@/x m#3GT_u %+4DWds~#-8?DPWZ][]fhisyzK\U+r V5DWmuy{tpfS>& t? e)ax+1)~(vo#0@Q_r)8@HT^kx} ).1;DHQ[^gry^*K\< J 0SoeC W!x9d|-.*{#pi $3EVev):EOWarz #.5;FMTakr}Bu2/| M2d$3?EHOOD>6!i:p3;f->@;F.DQ^q,:FS]fmx !+.:?AMUY`hpuy~'Q[ W,iNw,@LVbfhf[RE0wM"I >^jsppt"#3BP^jx '5?FSbjq| '1<@?IUZblqyY1/[ An2K_nv|vm[K7QzAo(AMSUS]'9HTgz)4?QY^p'+8DHPU_hjr|h-%n6vIw $0768=6'pJ\"eHe!7DPc#*@O_p~!*8@JZaky &-27?KUX[dmw~}z:B,u=|Fu 2=<::8.  W1 q<@m$4ACCL %/:ELYaky'6AN_js  *2:CQ]`gtz:NO4Ax?i eC$],t3j6Vew)9):L_rz,:HWaly$.:=CORZjonu}Xe ^>7v;a tZ<U"s5i$Ac|0NmQ_r~!299@ENX]cjow|+2d#U:[yoN&T t9s+Y~2Il WP_l| ,=IUbl"&-49:?B@BEJSRV^[]bcceoonwxy~LJ=ZD|$Fb|nO2b4\ YIk?cS]q|#.2>MXcmx&(*3@GORUfrqqz^e V2u*[:ZxrQ4h4RT=e2c~gn|"-6BMXdq+5@IUbhq} n[5~>p0\.=LR[cd`YOC2mAIf![>c$Nm} (5Tn"cuyo-2.1.0/data/sounds/explode.wav0000644000175000017500000065660010505474656014046 00000000000000RIFFx]WAVEfmt "VDdataT]xG$'[ ~c%lU e^S:j R R  $ 8`Cs0Lw7 X < PzMl3q* '[$ + +-^*#  _9'Md <P6g:ߗ~/r 3$(u*)H& Rd*RԤFտߩ.").10-b'#4 :ߌӄ|GCe5#L),-K.v,'`  :>բ/Πy+&/5f997R2Z)aƁ0^{ծv*8CLPoOvJA5' = DP ub)5>3DE{C=M4 ($ V,ʸqơҜL~{c$1;BED`>=5) k<ӯC:KAܛ# v*6}?C3D@91/"aʭλ۹;Gʝև$h*8nCoJEMKE@;-% #@'0QMڶ[֤k T,g:yEgL`NK_E ;5-= 6AKƈ#:1<DgGsFA8, |(OC8ߛ*=.9BH$JF?^5(:P4e,ǔӋ33&=4?FI8ID%18"xpݪ nrʍ؎' D,_9BGHgE#>q3%<H;UljŶ{շH)7BILJD;;?. ٵ˕pE!m _.D G E>h5( u6sd=$7*Pr$b3?HDMMIA5&J'špۺ0ť#Bs)7BILK*F3DECF=3%,_%p3>MGKK:G>2>$;B+ĶIvԼ(6@8GIGTB8+D [kϵÚkG6"C18=EJ>J&F'>2W$]/ҴeɸAnɮDd yu**8BHKHB8+wa ٦x Y-ݡG'"02$p -ӷfB!^XL)6 AG"JGA8D+I a$1zٻY7Ђޝ{X".1?DFEb@J7* |^R'Pr/+x-L9AF)GdC;1I$Մ{&4׏e&3 >ADFD?6y* D&cZй54`ݯw4<-8AEFaC]r^whGz|,ĭy*+: ~ <,QMgsmTx,?熙Q$*}"S?,7;.\rxxjHMߐ4b״(}(k w,lLf8AU_jsvfD)m}?]+B* np \*YJcmoiQ*AŪ- #  9V@^qKtucAK&F!==0(%Te +LwfrlS+yꊫ:hh&*!# 3!%:Yumpa@/ +74q)k&B o)JVe-qjwR*QvDĄڏ2F%)& Hlp@9XXlEp`P@p_lyOBZK($e1kA3T7(Hc~oiQ +61C'ε_$(0Z3Ot98Uim^m?@̹{ iߌl\'(%v*'GfanhuQ,ϊАE"H' 8lUhl"_>@^HBJ0& %dt%('|Ga0m h)Qf++В ,"@'g @,k#c>97=Uh`l^?%Pj+*&;$r~&5F`lLg1Q+2І^ Om,gy"&{806Sg k ]>輘7| AHg%$v &>E_^jeO+$ &C{ a&X)o5R gWl^`A]]a܉8(% %La2%Dv]jg1Q:,"t‘#zʃ:"%("% 43Pzd8ja^ A^5N/2%#$JU_#Bv\di)f Q-#vղx_ !&;  On11Och\A)˜:*$#1Da#AZheQ/|f}WʎS N%9.S1MNb~h\ Ad؏ڎȝYt#U#}"@cZgd#Q.]װk7ʉ +%tHrK14N|bhX]A)2Z¹z[l$G$j!@@Y:gdQ.9@8Ϊ S%j'fJ 0L`7gV\BAߑ' "#un >XIebP.nF#Sr` $:G2;/L#`7f[A{BYQEڰ!!V$2$K/.iJ^d)[AԔWEڛ' !3hgh*EMY`GYA)vß(zL! s;,2!~7 )DW_XAҮb+! z7!O ^y^N1 }F[-ǮAo N- d(CW_WA/կŖ=gNh | +R'6LN\z]=Nv1d ߤ+=ˬPǮ9 - 'BUW^WAFОL F+yA zB75MA\1]9N1 /6!;6"y*! 'BU]VA`+ӣӹ6׃ & _+ 44VLZ[M`2* -oܭXD &@Tw\UD@$ pҡ{x¹n֙ Hp _x$h3JYZ"L0[ 4<:7r,wsG9 $>QZ;T?4ӊ_[˻O2 WF1HWX[K^0 Þ3Utt "XecՀ` ؾE MC  h'h5.?ENTVH/) ;c.!X[Z;m8LUaPO=ifhfz!@ MD*AP/xs*>IG9x C_0 &:+ ? %yd65D`IA- D)v! <Ipo *=HG82 c~[s;C "a41DI@,Ҵh0ԯ'LQ]H),_C/9(:DCs6B[鲫  Q_k0?EQ>+$0%OTb+lK `C,B5xj4ֹ'p  |/#0>C=#+Qb׌ѵ]40ja"R%8BB 6Aɢߴ s| ;i/F>C<+UEx4X(-H@%B7AA5'ߵϺ=;$ 5 ,o0/;=B;*Ia{%ԧx U7/P%6TA@4e6~IΌawyO 7 !GeH.b>D3x ,ʤ`^ AJ\ G2.]m-r;t@%:)Wɹø՛'UC6?$$86X@?3H1ؼSp [ ~> t, ;8@,:*eɻY՞b Po>Ux#M4>>*3;V!q߹,X'9B `>,9>8q)k6߻=)FBt'#3g==2-{@³8X̀)> rg^+ 9=8e)ɌđD-vg[^GtlP#3=e@T!+8-'KnԔm<:# \ ?/ &,* a#Mα߸S, 1,o ),&U77άA[be vw^V P& ,P* /$oЪөޠs iu@m(+.&A/z%(uA he6 c$+)e = )W #fOI')$`w c/ 3{ $*(FݣӄӧL LGd'*S%UoB7o l S#,)'%>0މ\Ֆ?  ] p'*$LO&Ҿڕ x !Wz C6#('1,Kkֆuet d2KVQ&l(#j)C(5 \( 'JQ j"'u&4-D@_\' :maWm%'*#, tegԔ0  ;` xL"&% 7zEӮM {US]A6#H%!% 9܂)H   gv U $#+D@#ّ`  Yx6 /#$\ )eׂׄ  CI>j b $n#,bWإ 2 8 gg"$0 W#דq 6  Sh{W Tu#y"F4j1i h t_@!#TTw$e-^d݇ }H Xk0S 3"!/Uoh  Y z4 m#_E!Y&ؿ݃ 5  + "w!7fF3 <wXl<! k!iG P py I!G!^"p A K5g "ayi&ْر @ ^ @}I "![t۸  3reqXK"{5+ތ5X m-#h ! E8D؃KBK 8 h,B']V!|F`uT S؇ V # ~ % p!j$'ܼ@, ` ? |3B"3r!p+ tZpx  NYٟe 0@# 6 #h6\یڽ 1 ]ny K$20ޜWQ w 7f|Qh%7QrX v y\f!H1  H! AFl :=4ܮۤj) s '$/G6n)) ~w ^]! x2.cMy d lE!m%QQ<!Z/8 hc4 u2^ bt޴'5L Mj6eU[, ݌޼> <''C> GHCQHݶE~e UU{Bf&JuJc7 `p `x{t + : r~ 6e ߸q % =%9r iIwXM}xC$ Ss!|5v P_ZE 5@ Y "\tA 6yHqN  ^vS * $e3:1  sg ?BSCI /  U+{ 2F ~ !.=p zSZ Mo 5 1hZ ߘ70g ! !E'(QN - pu[? # %:7 - G_k} c 7u5V Kp<e;h? 0C fP dPp k r{"JHhP ~} 8Y} rz w gYW  Lu\Dk{l K(|9 |U&6 [ -&% k a aR5wnL^A \^ )r- Y9q2 ~H ~QsqB9+ *a 1t -@3CqW $*fcweDL* o'6 i/%a 2w *Q$ ,KR( XtZs^t /&7S 5 `[G| F "o> 6"A @ZLm EQ HTA l O i+sE 2 @ 2=nKU !+f '?5B}MjxHB1|an) "hys2Zb- o $0$nBlux|5S,7A lG@\- JR O\:iP%Q t6 ; u=Ys s U! 1Lz4H  w'0-I`u XZ#rDd6 8E^J( | +, 9LrCy W Fa:cq2krBl !A im6Eh H?3 =z#j B!qbl9?3p _X&m.1I  C 1 UEo  ]%o4 4^ yJY&+W2 oT mI#Vc~& pkHFVm?&j[n t7 ZrW" 3. - y8wf?%Y'E% xG3 h t&]$?",V i:AGM tP #zFS0>_ zE '"$v\cMk=s hy :8sfVb}R yS D'Aa3h? p/I @>%`Rv T7 pf8!ud,{] / /6S=. : 0][I . ^ MxKC;b7mzK CP f@+0u{y C  0Jqy %rks jK 1Q,DG$Ey z = 9AwU38 &m 2F3` "#Ix R J gV EX$T/5] 8 2)C~]D<,cV 4 H5%4>idw1|<$ O )6 nw!f W x ~1cXSB TZ- b 7:q'm@Lp  \  C@q=(3*Z c]Un2J @ -?9hi7V*;*?t x 1{s AKwWI-u= ' o%G7.WXl!^tg KPNTo a  [%|+q gq ".UWa@an;l1h . 3 `<fyF4<DP v 1 /BU wP1TPA9u5Q~z #;v{*YA( Snu5( e /6KK],D" O$<FC5P D D ' R%s> r$a]T< z f@_8(VF  4btV B @~4Qp172 P Z2?GH*b  ( 9 L~6q !n+ 2Xs~W ^0{9dJ T bWv$y skmOp}APAB  Yy\M5<;0wcfHn  AQK. X$ejDqo8J.Ov_hzd b73$nJ9bLr2v`dY^E2-M Jfc"<;2K0mkGD!Kj_%e }S$)'1R~|ZmnWc8wvsTF,u@[Fy2J@B ]`D ldAx|E?~S`>F)(| jB@U '4S) Dl`eJ8|.:,~< $NT EMM)/VM|4`noPGX>G aQ8qr+|Yg\8 'PNq^{`nr Na+? _^/ 0f[  xWK`A;je+q>@XM\RiU @pjV&z [sj$m%F_8Fii vE/zA8(u& ~@*45avpB K;V7 Vpj xz%}OVr|'1M(h;cnO:* 1 <3wUCxKM/f}={  mpm`c`5YzzCS u}&_"ehP8%*!{K~= x._'n fmomRBd }GSQb)q1q=P0V+ s:ko13z(. Eq z/xL Y){i~`J2*QF`@C\ttOj0%1MRp};waa!t%*_^Ys-7=O%i,'zI^`Cs >S`;Gzf/yu}1E38iyIp+_"0xdF C\0POG n:>"\/6 U56 _i8_,u#)^wN0{TJwX[NkY#$37l%r]#.ZpH!`B+wm [C'GFH`2yAa|Pr/ M0AiDu )hYV('O]} b)0<w vo&sX NC)R"'9ZGo~<Ea_q'W@?S ?_2:$v+n`9CcI6ANb80BR\7E FcM`{GnTTRL!?:p6n;p$;v g!&VmO:\yG\"%.MX+!yAum!g ~4 olzH@] Ot <}dP) ] Gg*"/vv;{DVRP!>nhP"z85\Kw: ndCu;k_{KgObCY#$*_x6E`ZS9j fM#z8gw6 fpq>\',q{IgObBZ"&)in?~:dZQ"01 a~~ p$_C y{xnKxe4|CeW~h.{PZ\U{#,]0I+ YEmMXb1$px$9: ;}XLe^w_E^3wXo: X5H'$|B0_p%n[Wuvl,xCaQTwl=B^q4 &ri}H fvs{ RXtvl/t O|uT&5tWq9$si|lpF2Y~ Rr{|kHp 4ks-2uO ]CxxkxQ~D/et+ #Z+Q1c}gLo 7ON[&h.T w=GT*TD4|~%Roh+7SF>@/fG-Q\gjC1VswJ4Fk(MYd-8MN"R=1#CCx_bw0H86==81$H3 QKU1B(R>6J,I)P Vco4N*A5W/=?.P_zj&L.I-?8!P1G(PBan&J3F#YA6B=,O uq{m"M2F$U>7H,H*P r{ij+H1I+D4 JA(M _z~j&K.J-@9!R1E)T ]lg,J1F#YA6B>+O uqzn#L0F%U>7I,H+P r{ij*H0J+D4!KA'M `zj&L.I.@8!Q0D*U ]mg+J1F$YA6A=+O uqzn!M2F%T>6I,H+Q s|hj+G1J,D3!KA)M _zj&K.J-?9 Q1F(PB_n'J3F#YA6C>+O tq{m"M2F%U>6I-G*P s{ij+H0J,D4!KA)N `zj&K-J.?8 P0F(PC`m'J3F#XB6B>,O uq{m"L2G$U=6I,G+P q|ij+G0J+C4!KB'M `mc'J94@4S1E+K vq{n#M2G#XA6B=+P uxif)N5,UC2J,F.K _z~i&K0J+C4 KA(N _nd'K84A5S0E+K uq{n#M2F#YA6B=,O uxif(O5+VB3J-F.L _{j&K.I,C4 KC(M `nd'J84@5R1E+Lur{m"L2F#XA6B>,Puyjf)N4,VB3J,F.K _{~j%L.J.?8!R0D)T\me&K84@4S0D-K trzm!M1E$XB6B>+O uxif(N4,VC3J,F-L _zj&J.J-@9 R0D)T \md&K94?4R0E,K tr{m"M3E$V=6I-H*Q r{hg'G78G =9H(I _z~j&J/K-@9!R0E)T \mh+J0F$YB6B=+P uq{n"L2F$V=6I,H,Q r{hg'H79G=9I)I _z~i&J.J-?8!P0F(PB`j#I;5?4R0D,K uq{n"M2F$XA6B=,P vzig&H89G=:I(I `z~j&K/J,C4 JA*M ?`m&J3E#YA6B>+O tr{m#N1F$U=6J+H,P r{ig&H78H=9H(J _zj%L/J-@8!R1E(S hf&J95?4S1D,L uq{m"M1F$U>6I,F-Ncuyo-2.1.0/data/sounds/turn.wav0000644000175000017500000000210210505474656013354 00000000000000RIFF:WAVEfmt "VDdata ([Pe O 1oV,7b&oU_#"%\  1=j U T Y? Do *OI&b %\ u %$4r !13l :=p  uEDv wAdL e 2 z "]C@V(i[23VmB2JbX4cvU  qMl'e1R QssAN ay- G sձ!~~W|]gW y 6cGBL x] %Co.tW z)Oo.K #$> = R\l F 3-bCh Z :q 5- V:U,m& &Y8"   2! cuyo-2.1.0/data/sounds/down.wav0000644000175000017500000000227010505474656013341 00000000000000RIFFWAVEfmt "VDdata ^4 B@>$< WTqS!:*{"G &%r{i1g  Q  cY8 / u BdHcA\w", $%m I =Z AC'$~e  h# ;':@W2  %g. gH5J  sK9A8@v=>z\1brgd@}=" Y <| lP &EbA; URt  ACD~Y Z )_"8cB!A^r ixWUv[  I4L8= | TX$~%p Ty+rP=3' s&; h$'-F'&g4x^ B QhW"k,-5< 0l%$P  .2cuyo-2.1.0/data/sounds/cuyo.it0000644000175000017500000066514010505474656013203 00000000000000IMPM  P0}@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!KK7Yffg hh1iiIMPIXXXXXXXX.YYY0/home/immi/instrumente/al~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw@@IMPIXXXXXXXX.YYY0/home/immi/instrumente/au~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw@@IMPSXXXXXXXX.YYY@@/home/immi/c/cuyo/data/so 1"V4\dBǚ5SU=!/%ܽ:grVءAa[3ţ6RK(DN5а(UcIԩLaP 幩>O?ܶ,PW=˟2^hLԥ)RZ@ լ/UW8Э1UV3ɨ ѫ.UZ<Ω1VZ9̩4WX7ɨ6YX4Ƨ9YV2Ŧ:YU/æ=ZS+ >YQ)񿥭 @ZP'ᆭBYM$콦DZM!鹣G]M!蹥FZJ工J\IᴣK\HതKZE޳!MYB۱%OZAذ'PY? ְ)PW< ԰+QW9ѭ.SV8Ϭ1TU5ͫ3TT3ʫ5US0Ȫ8VR.Ʃ:WQ+ĩ XN&@XL#AWK 꽨BWH軨EVG滩EVD㸩GVCḪIVA߷ IU>ܵ#JT=ٴ%LT; س(MS9ղ*MR6Ӳ-NQ4ѱ.OP1ϰ1PP0˭5TR0ʭ4RN,ɭ8TN)ū ;UM(ī ;TK%ë=SI"@TH 뿫@TF龫ASD罬CTB们ESA⺫ES?ອGR=޸!GQ: ۷$IP9 ٶ&IP7׵(JO4յ*KN2Ӵ-MN0ѳ.LK.ϳ1MK+Ͳ2NJ)˱5NI'ɱ7OG$Ȱ 8OF"ư:ODİK:?K8@J7῵AI6 ߿ AI3 ޽"CH2ۼ#CG0ڼ&CG.ػ'DF,ֻ)DE*պ*ED(Ӻ,DB%һ.EA$й/FA"Ϻ0E> κ 2F>̹ 4F<ʸ7G;ȸ8G:ǹ9F8Ƹ;G8ĸE0 ?D."?C,ۿ$@C+ۿ%@A)ؿ'A@'׾(A@&־*A?#Ծ+A>!Ҿ-B= Ѿ.B;н 0B:Ͻ 1B8̽3C8̽4B6ʽ6B4ɽ7B3Ƚ7A1ǽ9A0 ƾ9A. ž:@,ſ;@+ ;>(";='$<<%&=;#'=;!(>:)=9+=8 ,=6 -=4 .=40=30=22=/29z&$ (|*"+:*%( %  f  :K  f D `05UDހWا՘"eѡԙ/܆\ $:lmS cW '%%),/24 65b4v20r/.--. 1/4y7':;R94-$J q}!ܺ׾/i:҆7[JxÓ[F8_+ L 8&,1]7;*?nAB%CCJBA?=<AfEH J IJE>6-W$,i 5ՌҡT {Owk4mOh)ʞ ~Pܣ lbu%-/7?G3LOOZONNOQSUWYqZ[b\\[ YTN+G4>4(TG +jSNEV?şp`ӑ X9?ǢʋΒsg(2;AEGeHHI0KLWNOQtS~UWnYZ[[Y WRMF=3m)= r +7{E;F ثЬʮĴںuǑʆϠf y! ?Z$N.27z>CGJLaNO0Q@R-S@TUWY[]_`_f^[WRKB7+y $s{u.%uH.i2Oȿ{DĈHʹjcݧ2NVkk#d*05R:=@BDFHAJK$NPSaV0XYZ[[ZWRIKAQ6* m2tu݆ ͧſ⸖USƣDܪs $44’Ět߹1#p`Xr'.k4a9=@(CBEGGIKaNZPQRS UVOYE\_/aan`\VSOF=4L*v O5Y_ؖјbԾ˴(󫐨X᧰8$Ѷi̺+caKԌݫ[<%" ,%-44:}>BbEHpKMOP3QQRnSUMY?]`bXcb5_ZT0MD;2(a &ۿ=)X4򯠰ֱDVņ$4|Y^/f: %) .258O999:=@CHcL"PRSxS RNOJD=4],#,: *41T mĺ೔]Y'l_ֱ,s ǼNы9(~޺wti 5$w*0@62;$? BCD;E FGJNSsW[__bcctb_jZ/SJAB9r10*# D;Wm48v|(u:nP`fT"ƵɮՋڽo   .'-2568W:Q;3<=@tC]GcKMOSVY[\ZV QI1B:n3,%Z+@l)<τ`PGCåiWťOLIr iU~R  - ~(.476:C{@CE ILPU}Z_bdec%_YTNHA:-3 +"{: Yxeuw>kfϪVHIYަn{]%ǘ L ԌhT#Z j^"(U.2{69<1?bACF9INM9RW']ad-fec_[VQ#LHE=3+"x BtSWDռܶRtêͧ ߦ짔֮NT6^Ńɼ[qEh/{%V+n049<]? AFBC9FIMRX\`dbbb`^/\qXSmME=4+$ c.H(.וͺձDsPg٣)ZQ庋ſ@OȏAӁ.<!e . %*-/<1\2~448C=CH0NRU'XYZG[ [{Y3VQcJzB:2*$NH m6Lfʨ͹uZ)MuŕZRNѹ*eQɾ̪3FF) e5#])[-01359=CSINSVY]`bdXecZ`[TMF?9D4&/A*3%wLI0 өaO]pu#л[]i.عgL 0k"3(Y,/12v58'=AFKNQUXQ\`cdWd1bX^"YRKzD=7W2h-(j#:8 57gp\dڦƤ<3Vʬh~}ŕ/p"~d b W#S&*Y.2>7(;>BF)KOsTX\^\_]Z^VP>JC=8C4S0),\'d!(~8}lټěOïFʢ梛Cɮ ɺY Ȉ(%+ N{ u#'+/w36:>AC5H MQ VY0\\1[XSNH.B<85]2f.)!`:݇h:* 9߼MfRF_M* r~!%)N-14d8=<@EJPUZ_*bcb#`[W$RMtJGzEB>7/&| O›ٶǩpv EG0“ȫ]-;۔ P k $4(+:/26X;b@FDL{RAX] `-a`] YTpQN4MK/IEZ@9y2*k" vX*XDBL۫2ޭfص*QϧZip> F $'3,1;8c?F)MRT|8e2+$1hJOMbP|t2Ú×Ɠ?iE4vD dK*"&:-4<DFJHNOONN}M-MML1LJG:D@;608*#q IH͠﵊²?LN0ĭĢ:Ǣy0,z '$,4;HB,G"J_KKKlL9MMMGMLgJHEqA2=D82 ,%R DPّ5ɿāx2ش]q}')ŠJ0Ͽ(pK_4y ug$,4;NAOE%H4JKVMNPP7QPON>M KGCg>82,& 6  O(/.Nʺė+Zf^ ȼQ~)#;:@9/ B H(/6^;?@C EFH-JKLdKdIF5C?;=8o470"+$xpd 'b?`irϹo> eѾξ¡OǩɼͤБ3QMS !'-i3B8;> ALCENHJLMMLJGaEB%@=[949/(5!q ?4ѡ'B!H9󽒾㿢kVȖPRZg^Zh /| '9-2m7M;>A>EHLOQRRQPYNLJHEA<6/(!@ PnՃŠge a@ȼ/# z=ĝ,4Wqچ$q.Qe W9F!7'M,04Q8 <@@DqH7LOPoQ?QPONM#LIFJB=$70*\$} ! ^ن=˞ƾe߿U=”x)f-=9ӝp:1c|[vX _z B%%),04)9`= ACFnG-HrHHHHHgFC2@7<72 -"'*!5 SSRލ!ĦKF.߸L'kZ V#{ǵ̍Ҭޮ)Xp LSU$w(,05k:>-B|D.FGKIJKCL"LFKILGCD@'< 71+t& !:ZE6 ̗:/RF(ı~4å=лչ۶\#S . J$).37~;>A.CFEJG IhJ7KnKJIGEhA'=P8!3->)$O G+ S̽ĆVOdR3OAxפݓj)@ca7\ b %*.36):@ CME[GHIHEBa?;86;5$3/g*l#C~ t^I԰_ɃDŽIƌƦĄ qIJ)\Xi]MEU O#',/C3/68;]>pADGxI|IGVEBK@>=ٯmߢ@L6$3 E$i(++.0h36:>1BzD"EDAv?=<<<< :662,M& mv?lpO$U̓QɊx8^İǨˑb#e6 HN  ]!!$&*L.Q3o8 =;p;z;;;}:^850m+% v IFiղЈ^w˪ˇ˞ʒȊB¶*#|  4{@] wd!%n* 05s:=?@@E@??p@AKA@?k=@:k6+2u-(!~G]>&N\1G^Ԋ(үЫG)Ąʼn #qӬ֦DܔޣuP2  F+$*/48;I==,>>9?*@@ A@?><5:6h2-(A#xW 1|w~<)k=֨p|Zl+Xłœ^ʲכ?F8B 6-P} 1 w q&+/l2456w7t8^9W:b;C<<<;;9P7 40+:'"nH 2o%gM~vةֺׂJҁϨ ..vΈa؄ۼ5|noz0z+p M P `Ru"m'+h/*2Q4"679':;;<===<:=84K1-)%!2 DHܸ0&wʹʂǟČ£dß=ͅӉ`GxqI~  $(F,I/13&5o679:d>=m<:8h7P653/*$"H =&.D h'a`ӋW$ȀȀVPS j:7^%zb tiX!$F')+-02{5 89t:8:^9I8q77:777H63D0Y+j%%a so5yӏ~  $Aȡb.]?3 ޽ރߧm# K`ca~ b_9"B%'P*,/2h6p9m;%<;+;::::::u9f74T/i)j"q  `@|c"յQϳ˸/ȶǣTB؉ڇe܊޲2{7LB qI!#&k*\.146888899:;;;;:z96>2!,$} 5tLR HL:jξ˒ņl %J]KBC \#B#*(A,/l264A55W66T77789j::=9:6t1+q#g@ LuM6]*ܧٯDӟ S#!ɾy>A<\1^M hdr-F R Z[ $'b+_.1@34k555\6789; =&=l;7[2+4$6b x$z~ճ(n BjCӌ!3فAܥއ6!% eNc!O%(;,2/V1s222235579t<%>>;_71+%- ~eڙ!ч˰}9ʧˁ͉(M իՙ-+4M f Nu 6 !t0">&),.//h//1y47;;=>=;7l2-(#<h( :kkpO͋Wοk2{֤jجڨ(Z@j` z\{ $(3*)+I+4++k-_047:Q<pػi6$tN$Ss>]h sft;@u "g$&1)+;.0G3579 ::8l62- (0"t sdF~ ݏ,ѫЛlюrօ٭'}ޮ- jl"-k 83 ";%'*-/2H579V;;:83.)4$|3- T9%=akԫӸ5\AU1ݴs^Rr\I} P <#%(+o- 02 6'9;="><[94/-+&#[3 P }ٟۙו\[ σ$\?oـ.{8'tR' eZ-X* j"$}&(+d/r3$79;:8|5w1d-)Q&2# >Z ߵ neLR|πӀ1G* ׌ڿqFNO[|wG NW>2!#&*x/37::J:R8v562/+(%["lrp }P]M)j+R~Uт<4чӶթӄlf[n&>~#1k1 Y nr!%*0479:e:69_75e2i/Y,w)& $ L 5?bk[Vڌ kӄԞ+VqOڳ!Q8)A\ Y2Tqle)" H$N~#(-p2?649G;Q<2<;)9742V/,S*'*%!:  '  WX&ڮrs֑;o Ե$<غ]CJJ="{~ 3 )Q"w'n,047r9::9853f1[/|-+])-&!fl ;"ڟ!N/kәAvӻ[ یݓfp=XM .R |;) K%)l.L2_5788753N2 1/{.,) & !!> 4qq&aةvՊԚӕ҇шб:ed+t׉un cclW[  QFs"}'n,035965432+211`0#.*D&r! 31rՈ#ЖUѠMֳ} Iޮ@|f*-SG62 _ jw!&+/233,32233321(.*& #R$ jAڲy=ҙ vV0ֽ,*3wPH)2(JF  x Yi %c*-M//0X00 2333t1+/t,v)_&X# ` R8PߘSK^OӢӬVׂ}ف`:Y=xjFuB A 4 K ^"&?*i,-//0y12^4554/30.M,*}'$!3"  4zݑnoׯؗkJ@6z!8Z-kXN { rE#a&[( *+-/123_32%1q/-+)'h%#- ^xa ]ܸרծ՗Ցը֪ۭ89k\Yx9h M X`` "%~')+x-.b/^/.Y-+k*)'& %"  U%TE L۠Tգ,*&׈ۺ (1-K.{6 ga/ "%6(*,....- ,+d*)W)W(O&"fR Vi[(ncڳzסբfנkj_fP0Cs|WkK ;l"%o(+2-../..b--D----W,)f&!Q S \qS=:_ښUZJEY$=;B;)bNq L 85+#!$'*6,--,0,*,,-..2.,)<&!L z)(.xYE2ِ8 %5`\?'R;9!nC* 1 |N: $''2)1*r*Y*>*r*'+p,-./.+')%t"3wb 9PFc@}=n٭xl8֡lK."N$HfuN S; tH/Il & _$ '(*)*)-))*,8./0/.,*'*%!9c  kI;L܀1P'Ԗ\ٰ߮b ߘ(~AgA1h:D"$ ? We`f!_#v$%%&')+-.Q.-)-,*)&# )X * sA]׍ՙLh2މ4Fܨۘ[ވ~0x>A,ZC b 8 N"#%')*t++',g,E,i+)'#V r6) q1e}׿`>Yvۉ1E49c%:! bZ+D "%'()>+,-//R0/0O/-X+(%j":* 9lGZ6N߁ڛ*ߥ}j NL?{{>$wK &cCz!7#-%&V()G+-.,01$10/W.,*($  Qj^'4ܽޗdߌoqX܎dId r CyI N"#%')5+R,,,,,+*(O&"` $^_4߱sُؾmMfݸܨۮ9cBۮ܎~#e|-#x}O _ [|!#%'()9**b+++7+)&"- J2>{Npܓڢڗۑ?s T)"c[.gl<0W >!!$%P'Z([)*,-..B.t,)%*&"`;=Id E8UHߢ/ޖަޏC7j{;j9.^/ \ Yic 9"l$&U)+-`-t,i*'[$ i.K'!M b;)o.\&Fd߶ #?t6^ ? *^7!$'B*h,-- -+[(9%"4gy `|XKIi{YmFE!'+&A /m(f z' =!$')-+;+5*B(%"  ("#8E L{et*_K!Y n ) ( 4_ _$k')*W*(&$"'!T g_BWx?q% g'^cx( e~d "Q#&(( (s&$|#"P"!7! ?6jMgN%{Y8|Sߨߗ3oUr(^?ygC:Dqq  F G 4RMP"%(9) )>(6'&m&&&`&#%"4 '1X( }jG߈:cw D 7 m!J #&%%%%u%%e&&'Z&$~"JS AOj|s)v_.aM}v:H-?  3 po*" !""@#$$%i&&~&%$" v V 1THojJ1 DTO8t%`}i N eb(} ! #6$%%%&%%$#!J/ ^ }Tb K4E[2$Ur  nTh Mk+q' !"$$%T&&&9&$"7 M;4 V-m vXgysOZ;|aHZ i [GAKRQRa "$% ''-'%"ak `tz!;2s% #=ft)FW:PJ M :   2 "%A'(y)(&#[3Knt A lNFaMxduhr.x\.[ 1j:5 N (fC}<f!$&_((e'>%k"c~Gl  SnTB}Q" 4kTB_x !s!!T$&'4'%+$'" ** %' G_"sj3{iphQ : l2/*>nz  c "$t%C%y$e#/" =ZGj W0.F: F\>U1)oG$I>ry=QBk\  L~!G#$+$###)" hW'Z 7 e+P}eIi9q%#!5~ GB(,qr Ir PP)@$ivfP7"]k( Y j~o2 "D$x%'&-&v%$!)l  + ^M-\ @;3bWrY] hs:ui6.,FEr yU !0 !]#`$$e$ # mkI  8H%  S3Sdo(S5Lf(4 * q'!"@$$q$# ZP H ]zpkK"$=%%%#V"k ]^fb% b F#IUmVtKi"J^rKi!La m;T, Q"#B$#"!_2 I%- eC&bre/l!"#X#V" E<2ST N%:W yH7[9g+~Q+,><KrtA B )!"#"! s1?l _ %:)R08Bz`!+waiRf\[W 0!E"~"-"!+! N (7;': H }L(=Z`X:)FTw&p_,YB321.B'uD }_<M !!T!~!q!!! "wj1 xEo=A\DZ[M0srW~Maf> t2q_ !!8"q"9"!x VMjj ;I~I "qy@ B}:RQz$oa &XM !-!  E@kL `W  bna0 !K>R=u> dIc6^A [ZF{_4v  lh0#N\>[u@2dF"r(kT]6CnIVo D=7he (gK>VBPA`5? =elPE$7U/t`6$ eB!8o+~h $~ c 8ml8o2N}@( 8r9Zs ~ f;$ !!! 7A= .V|/K;v%"uC>Vi8?W= ~qOd" 2VU u ?!!!  t&'!?2E!8)0,2;3F RL/g O ]W^K[j I!!e!$ 9l>C2 !,4ZXV/ @dOc d=L) b+<D_ Z!!7!A 0#5 @ QR5 #jdJ;uM)CAr1pJ\e(F5 l!OI r B8 b={& i/f2/Ynm\VT Y X@*'C O U v  nIC)l-c`N T}#ys|p4iu %1Z7h M ( F Y 4i@v :~B1EW +RjhW>KF!w=,b'+ k) Jrk w  Xt~>/4 wv> |_kqtI mUj%7hJN z =#0m(Rt8 e a =;|/ 6!V;fNE~iQ$Eg~R&u Fs5rz.` S NL%ZS #D!>UZOJWw#TV  n 4=9 NC T-Hb_N (uk}VVP,M-;&<0b*]| slN1 F 7U=CD (xmrhA*%4\R+pwqoB+$@d WQ f&j<]n S pWHvpqE6BE.: N:9K[WuT[ # *wNRiJi6>= hT/1C.#dv O 6 <fW\.1|U~t V<X\Vmp:Gp6ne>Xk"A18/!  -i)="!PiS 8 Z}gcl ";g'8&W! }Jh`E|[H1  7N;<(L(u,/:i HmWec{ZE-Q  r -B5L4(',6 + ?Xx> ' )psHU_aE)/{8 X-XFHm J*rgx kxJtQC=@{p#J)foH:$n ~ p"Y+ h9w@=Gt8DIKTu!DpDro4 E |?><y&Y nC@(nD?Hfv CaUGJz5wiT  hrD2Rx_Dv71  w VjtM;)5*q{-=A3a U . y;t | okR!AS%wN^u-5.3{ #WN*mw2 y08U$R*%p}A.fYqP }G(AljB  =H)]hRV}& ` k /&X.-6y^*Kt75c;j$2n6^E4~ = uesAN  }  U I\ g$_:Ok_L? K!OmrnhsyT  >'fyo 0k  W : s c ]]V`OLF &jEkxs/m{1$pV) _ md$ wKVJ~ ? ,M WF(r{q'9]~Bp kIbg 9Vc'Lk`*)K n 1 / 9<kn~rsW#7sKzf%QZ vJ_B C4Cs' e   $ z2!A+ ?'Fle!eX:@BY4CD A$%fDm   =)"A`cS 4#pj}!b_JC v==Y? eGM; &  ux]\Xs%.^V (iKr7YBb u ^<;*b~,~ g o$]GI`xw1/B'+c>\R$!pm RM^o3a<F} L K \<A f*Yej +OE1t!gdV  m >)r#[ HZu p ~ IxZmpkr`/7!f4#htr6}J[4 # WbCobV}j#/  =9ZVpIIUhv+:)Bmv OR'6 'BX n P(<M@ SP;\O [E2/4DWuX _`"vM.CH " *,!GnF/W+xN/_j)IJ8' 1a!=6. [RU^dF%Cx'Z  wB^J{h\&X%newu7gD 0R-`5:QF p 6jehxX|=u>+NHdeWd D'WBE> V("v%R hY$qybP]cN$izlXr%k4/@ lb_}NCt{Ml *  K'm(?w4 HX=ZF;M.B_% E (@bRPQPF=9 g s h@}dfz"b#T)*dfb_d#I'Z v oTu KP%2Qe<1 X R ?:EM4s >+)|y0o&Z9BEJWEZ| "'^ |t^:K !7 |pm},c )?Nn#;[T@dn# +%oNC~Zu B s3p-L9R]GpZ O i9sw&- X 5 [{VK&*"! 4 ?oV=}:w.[)GR1p  # WTL<!  $ |qG8i\mn9Oy~W{,t]E &AtZ\tb9>$ ' - -DN Bl SM [B)'IScQa+Sq%lj'L @ B OCk ]o5 l|!fe: 93v~PzD-d ' J ^?&AJ"Z<d 2 U4um 1WcdR,g `j@5bIm#VX  U 4 utV )DYS Y9 q7 f>|>NxSLpPNnb+ IQ(!r=a) t 8 UA8v1 &  u &m=R$xP/<$~S1/`aV  % </c3oj/  1yXUFoP)0x:NE4ref*%9PG@x  $ ^ ty]N' l/hMn59>)~ {C,"i>xhOQ@,l 1  3 v R ")8 ^*# @5x{t g6&-q6RS/vWE\9| : r   Q Z ]FnqJr$|F(-[wtZaqtZnWtM#/ 9 aN-,pc-5  U8mR|v5*YAQJW2}D>"#A 12A:Z< ? C & #QK$ g V m||[H3 &p<6H B!u/I ;fsVi"A<-%'4 7    GB  0 ^H^[mg`wSpg|$-fb5yC+Lft\L . r G F l%. l Fg`u^J^j9S yv5.4 : <r_Kl )h:V B p I|_YlyW\0]:hI tVN@2v ]Ag70<(K 5 Z O{qzJn % eA^dnJ oWp0@Qk ip__ z  n 6o5$B  L+ V#5NGmI'd,p8<~':^K;L y ByJq9 +rY;JFv @dOF/_cBu2[.&i+ '^~s|   ! . 2 Fh6EfsY%upo6QV6O@ T { W4,S M Y |b4~4"WQq$.j7D{aR`R!, t X Wx2 T Ui,e\Cs %I/aBv _ X y* V3ukBT,#.,Tb-6-n[ ou=Z]57G X AhJl(I   = ^K"~ WH%VjLBJ+C[y#o"gYrc?N 0 uu7dH   W oI;BS`-~aF~AM>%\C`ZC  {_xYrrov , z sFYj h %}f|!;iU ]rDU]  j$! ! }@p1A _ j _I:OTqX W5>Np~Y:/9W~ZN%*~ } R q4 $ 5  jRS4%u6 ;$Y -Z9qWItO(1 ?  ;tY{T 5 _ | R^Yi+*ht[!UFt$|d'!uV GcGh0  jk1n 2 s K TQw`Znl 8F:uO&*& *9rzV["`) h=J[>  B`aAs -  h Y5`:Ix2%d>~0V/%3.R.4I[ 2 + Vc9K J " qM{tZM>cw,bZYY>v00(MS+|  M ^ 7e n ( h T ^ //* o*EY7SdHE;D0-jyV'ZO@P?9v/ !RS 50! c  h f Pztbr<W3||AK1C>D^tz%$q^i G Z ! 2>+ Y  ^ 4>KzI [;~f"1J`%QAh)5DtHw 3 a DeY- x 1 /  bH?PGk@kw"OlXl^:c4  M t q r $ 5;Ux/Ky+ru6FMx?IO|\h 2 ? P  ;  P R  u Nr|#D=w>>XqiVkM2<d }  & J X  J j]Wvb/liX2Pk9/&h V A u   ( j ' b MDqvfrt]DI%"6t%#,R!~Wfv@ E 4 a p m `  ? $ 8CvUHcuL*9FWE7Ai3%2&Bv^P$T}It l I x J w < + x0+nXx90hiSLez`b.d/a#5Z] \  % v Z <   5 61<)=OuL\gF2;r?D.^ 6d Y C n z % Q_ W _vS?sPooQ|G/pLA(>_cK Z3 2 ~ u A $ cx2 G 4_bfH7Gw^ CHmqc+{tDT~nOQu*J % Bj C ^ L  F6~@[8l nt;8t #(:l{X{ jP Vp8 m { E GpXk o . m=czHR_? P (.UmJqeM( &f? (  j 3- R D+KRv{5}&QF \|oQ{c]gX)(lG { n U  # 7 d W iI'e'hIJ>u15~PD9Jymh bxK   1 * f @ C 7 07Pu6:p}/t(.%' >OF.,WdN{Njn\%g ( G W [ M  X 3h oNOF WDlam|_#J0D| 4vD=_ g g  ` # g Y Jnp*/~22t(MLX |6A^>GqN-Yuo C !   0]F]?%}j9U}mWrp9spwkM9 *(=rq!8{ # k  8    hExD-PE(AH-oE i`YUI1pk`6p l . H  X07|uv#Ey"Fsb`[UE1x1"Xjoxh-] . # 9 G  {Nc` & : | r bzzoBp+y0_82Zb7EinBo VACXUr \ ? C n = ABQ\$gS!4^TJ&g Ef.R N M l A * NG/^#W${iRJHDe)H7oK\0nG4;\ Vb  F I.tEESHMUI"}heT&JS/dN2q.Bl p m % ] oF/)2JFv.2C*:?'&L..s,gT=N %  / p u M  mUV}b *p \uhZ/`? r4@Fb/G(Vq d u  | a7OzROYW,Hv OFhQ@7^FZJqmXhzI: o N ` o83Z^wg*|7 ckK0`Jk%M5mCt `  k N i/\Z^InW)E@uWOWW4|hb&4>RxU,z@P m l j   ! ;K~$m~RQi{pEqm_?;?;,"(DjF,DKa$."@ 5 =  F OTRacUzSnzrm\M*;KQ&  ]   Be>vg Dr't8 $Ll%,r-GMB>aR+K-#gr G 7 q EHjyc;\"I;ja3Yo@#E%;e7w h } eDNf!}>k h;g{tBl4VnTjE\b_BWx~CWZ . _  u { d Yu"5v>&EU :ol.~k4o[}^zPqcuUyzzmwC> . ? F ~ "v< H(_ 84]WjAg?,- }zG &I,&l:1xA - U ! I4+S@,m~doHAvvM{.eo&MKZ\-Xi:V$j&pSc]qgW~^gc*s`NxS)7a8 1K-q ^TJ7M]eD0X@yI9`0; p;cUf2x(wJx% /mo KwyQa kT70Awo>P8 '=|"fu:  CY j0'Q#Yq tUGJx$ {6lM IS,Y8P'cdd;VXG=z3`?fu&'c[Cc@D ]CxB\cZbz*x_qHG9 G4b/KLyh2.+PB6cWKX;r(9K,Ftd;LW Z v_Xa?K|S 4QGuCyiF^#&<}xlG+c-g5S[J^/Tj_isc;4["j+f2knZI-\U=JJ6DL~nQ}^VQ(tN$i2v%5=<KRH&akcbzB,+,$E+)W'mR+9tv%s4`.u<r'KY5BJNaxbO+ 0$,Uo*|N#(6/ fL*5n[BzU<&3r_\?XZ^n$n 5~Y#^oGR~r\Ybpqa,mQ8I@LT:^Q&VguhZ pb7 y5 lNcs 3i KEe0Ms9> TJS'qyLFO]aR04:#9Z Di}lF8,H&A ffn%C,=?{VQQC~CkGO*VMm+%GfSW(fP].&xgX5%XT%6O ^mE2fm%>~:d y<H@8`2 G6TaS!wp; h` lWMD0YZC) ZFu8_R[{/AI4Xg\4y-T#jAF!&?E ${k'9:U($dO|s.iJ%>cBRwk zz(H!. BNXzuXqc\nJ= 3SrrX&vdO#R;,z2\qW mqAY%ia 7:>`ag3$5NqyIT( l, Rc x@s]_rNh{UCAD7mA n$i~\49Mr\$2@u >! ],n8ds h%`yh Z.pK"l!}e$Jon:+xi;J37i0n@+=^1fND wFlI- It6,kYc(G,EOoYZ y}a@/^#L;7a&h"qs/ e5|h`0+@ObNYP68<3^cLq(I} daPkm!!=OK@>Quf_"L0:MO.Arf0B?H;D#$E``+9^5GI ~mk[`aYC('kn y ~ 2"^w^>Ms[wT"eok?TzS cvM(|u<KS\[^{5Mo$-A@EM(&jL#T(-=YmLC]UF;&|wR1QoU@^=O 'U!8 y|lS t c!oFL 0PC 2QmoWoc#  )(Q TW3X1F%=+^%uXWHBhGBntDd4Y-"+=5KN,^GS^ #VD5* zc%4&]leY`z0a|M~xA\=`ik&S+CUH f$wbBDnLZ6@g*CSOo42dTP`<SkVSJ4v%omdciD>mw7C?-jLi*b?7>?-s|D %7#{y <JIW @tz ,aE&c *E@.C|#6JT|05{ndyA8Rz]+9ppu+|S_+|K//>F3Njk5K.MZ@e1*?(Fpu 6-euc-rA(,?QN.&\Z8`gs |OlSRIqC';+P[>5J\fOc {C~ zfdGu!S&2e N]QFH^Od A_+ cA $DF!~{VDB@;+eYrNy!/K#N0A$`jJ\7]=&0T`Jg tptkG kw.#1o&nff9to *%Mhd@>]t Uf s!Myx,fi2 /5_,%4$~=i=4PJT.&)O"D@Wm-B^v~NQb@07J]ZC~H21LekK ~1rZm]|ehkYfKe[ BV .xu]cD)## !6TjjNaFM[vv/#u3q!`V &_q&Fa G]eN9'4~"KddQ%mI=Il:@4@ V*Q.C`&7pK@(P>u+Te_B`B>_ 7Gz`; [?7>G=fK%6jX_PyI-oUV1QicG p60V9C u1Gh[dmiDFy/ ?| -KR!VoPiKk\aA.L-ed|O1bGu36n'~rH/!vVaR q: qc<gc'w- B5^\'_XTJ 39_1;s,1 de"RFc 'DV4AxBN$>"8tSb>]ZdX# !2n`./ Z?)j_L^,{~XA 4%W/;l:ND t@ /w\!,M[J |kM.v$y62x{{IZ'oe.H"yORw Y.*Crx{_ h?Kv6,V em}_8NzrO,9h sLiyOEj^R{E%*9i?O54qS$Uh6e<sb#<[0{XJn!HZrw]B'n4]J.uSlH3#q 5lBEk+i61p0I/AOM4ZI {O#Rr I$/=>* s e+c=Tn Q7ouDH0[Q]owqOad7 ATMjtcfdR(;I{^ T,B;$[7O:ueLIVbcL)_?/uZL&q=blG-Gd*(XbC-?Pj-9[qG2#>+el~c07qBo* f$h":J $cacAjsWW@uyT33tWa6'&)j,gur2nwM wsb8xt#:!7|g z-dz.yS$ v1303Sfn`FDAT!(c,S,U^`5 ;Fk jMP=C\qf/L>f]mg.'6#oS?00jUtp2I7h+Sph|2HP}x:*aKif#TEa3iqph|-1 iZRG!+E\V; BQp]/Ld+V F #sIL:**o!+p}*oL!W&^"wpEehen~b r~+ w$Si+1xL#9iL\RNg-88VvF>7XP)%p,{=$+Fvt1X{H! MHTGm=/fk 8Yi E ] f0&Gyj1l8~+'S !b${B4x']-M@{j7Y8tr5 (Y~Nk)^8}$Nai8s@li?rw=*xP|$G#%Lx^G8'TJXU|@eG`(>k}=9NU5GKvR5&%/;L[]O2 lKss(_x=pE:H[jPBK[quY/ A]R cT 'BC/m-B66Q<(Wpu|M F doO70GUEv~ 0@zDU+Ujdh~y25zb]pT!@WU$F4bPUu2l}cE@R{o'4Qt Us8=tq, S Di7v}7YXC77Z;<iT?v=BdnA(/InBjRf|<z) CVETs`qYi*k8+/CSdqxslh`iw0G*_pqBY!R~{5D:VTW%h~@t~YFGQeuw~|wkn{"8b)L.~I<u{1p2c[1zL< ^cgxl= =\B,spSi5X>Dla*5s O]BKK"Mmqgc]i} h~:"Gy2"uit\_ 7>+ y#P| %65* Z's} /l-]U*?:  w@p {T5kf'Q^(Co+'|wfphNn)Rvk3&un&J B;9{"ypvFnK;TCT"6Z%%i0.z8(( P*OmgHD_Z@7g2} Uou0SQ}2&+! t"ZjF9@Q]bX.} S03Nenf?CZZJ'}Y:\)WRo;-B{X c DT+!0MglK'f<2>HD+ !("xLFhr(RPai09h9lI+b+)Mjv^RiRONA"+q>+F0iXisS, ,Gj$cq)pXY|iPn@Oga4lVl!H^e{5nb]nG~ +=18E~#e=tM);ub$'$C&kz[LKWvD6D2# ar:n6oBh`8syT\bLlq^F- +7HiO66.W#b#p>pi|7ehJf]hPq||j\UW`cc[e( VlPAvoeS> m'Y=5{Q,* xh`E_fcehnqhO2/qZ,UGE {yzsME,J'FF)uSDHl ['873*R znqsnS#S+pq $'oI53V,i @hmAuAn0Oh^<7EXcaU;*$+9K[aaWAqWfcGh&qw@M n U/'5HG*O !+5wfRA==>I[ky}kE o9.SS#wPSaL& h4T+!9LH"C$73JnmbJ:#/SrrL\%,T%i;3" `QW?brP$8MC O%#AWT-;9iSD/2io%]EEJWn7~X)+tY//AWN(e=,6Kdo_0F_^' J`xmegu>0(E")a/3_r;uW$-Z?*Q(ag:}fdzC)/Y&G\NFr,orE^8ofO6}XJGTss;S6[gn~ Z{i?~Wa,H@ )PmrdP0 dTICN}k;IJ",K}=esqiN'Z}V_hJEQcwZ8qD,BK_W, 4a'Y4`y~oL ?dDrVICHTjtdTD$t%_E 3(;Xp|*_Ogd?   c?(\CT50B_uyrnlnkb>@|:%6ANcwR;goP nL(tdSVdrtmlsax7BY0@L]s eQeW.3-qC\7swtZECb;/QZ:PXWOHPpl1% qCP}tP#4}r| O_,T{;C>)%d*  ItH k0? 8fH.x"r+W6_jT* HS  >UkHp!%jJ6(gId ?J0T>p$SV4 =IB N!F5#:'#bFf,PLTuBFp$S/h+"?\|lJ >x >e9\V0V$|%?o60d%3 jhmummx"fFtCk{%4'>X`F~hU6;S? "E?6cnZNZ5 b"[)-5Hl)nwBI1 {P K\w,)fJl> 4p.6c_dVBW|\#X?\-+R|U9!Q=-bz{ DqMcNZ~v{Mri0_@9Ig6I~ Fesebs3qeev lJ^nH35K1DbdSM]$32!OA}iSMO]w 3D3USp2x>8_+%/H{ ' 6w Ot~fODQg=n}Ql]m;s&z: 1h%,j @6]vugP2")=_pUFP `zaCkz6Z: 3~Ico`T 1@;(:bm@ SDppK aJQ +%Gk%<}-S?w$m 5;& !RxOH2ewzf8FyhC" &T}2H #Dt6u S;=- 6lU&>{5dWXN ]_V$G >fr\\q-|0^qlI9w)OiZ(*_k9w`b4s9Opc? `0vR8Dp|(i #KuA\X7zO$@M9 jOLZj|~{kR&`< H;@O9Tv Xn: DxN7BZ T$=YBZ=)Ov/B\eN :N^s$o|$I{%jF.#ua7@p+Ohx*Lp/1j}nF 4*pjHq&hRFKL9M]Mb+C\wTFAc`D60qy'IC#nizV<~$G_ou;qyj}f79($u$om/}iS1OB9JMPYv#^xWGQ8 #x>\Pt7Ga +53.0NWsqZ9&+SH$i^j\;cdBLJ] M&FH,*c5f  Y2(Cd6doP"s2AVFe.e9g  S|j p%@ [D S[W'1NYN"o mhkc? A K|=\y?n}^\4Z1FM7l%H-QmkG/<`9R f.-RjRXwj01{X:# R ^ >j<> U/$&4>@AG`n?stO_?0( ~aI5$-a  CzNZ7B-~~pU8&6j7Wlc> s\G3$l_aka;`(& +`(Z }MiE3;0q[K>. khvg%ZY:-(@du{~yscVTkkLy?Q ytg]R9w^`xY+y\A (Jf{x\>+1]L80~8 Wkh,X&1^\=5ThSwK_U+X$Q\X Z]%U-9sNV^8r5X]KQQWgWj&h3Fp8*l1ei0RZB;[7fq|";  m1t<}B:zg6 Bs8sa7WaKt(<{#9U{'[0   s5c= vQijM)6SwH=1TU/7Kx0wi?F V :|:>*2Ouc4?TG g' @UZ^mCpP/&*|I% x ,9CE9. *7K\reV1fd8}b\\\URBE^JsK$ 1MQ;{fccV*k7-8AA;,"&-8@IMUfi|-C,~fK3+8^Dxf9'FekY,=p^.!.=AFB:/"#*;NSG0A kL;>Pn IzL04Li~d9 U"gLCCO\`\F;25LexrX+<'%}hN=8EXJtN=C[vfB N*kYWV]VE/$Gk~vO7"9s{_@*'TQ_=3;Sm{b: #" Q#||oV6 $Nq~[Ck Sk:bV~oS>6EdzkC 0>D1W7rD )Ouc&455uI /CRI5+2He|sW65XjmQQfD%U" &R~yC b}Cl pP*B]srT+ ,\OKxK l, GpmF{mFD4u /S1Pcvzu`2"Zx6_3 XW(-Kgv}lK#khPN6aAj,Or\)0kGy6zqktwByP-\ 'a43Rp9gn< 2ly[C' A{%ywaxt$NbLkA&B^qy{-b["I{rmcT=5.x|~8ofBjD($7I\gdebt[m;+V|sD oV 9$PjODBPcqujTKMuWvJ,#:Vrh0-Z ^1 zl}k^+ocKAETgrhI%$f:UR7+6ALWhv^+u#[2 tH%3k1*'A=,"$6OfkY/1|  -=Q^nyIf9#n^PB6P,#8rML%$-Df~M-m##$$"%-9IUhtx prg[:w\= F3xbP 9lh7 M~# +:OQIBHd // U-{Y0kAX vZ@h:vg7>f+0& "W3#4}<rM#F%0H1xU~[9-Ms,=8% 0 8?#DyEh8Qr#_ NpQu~ygT9% )R+73F#<2Wb:b%(_#4dYk5Vgk`L*:e.>; b($Tb*6*CAj_9+,2BXxAO MfjZ;6\z)?9&n"2(kJ) LJ":bi&pvZC88Lu3@5_kcM7$-OvBTT=617!uNKVK]Wy0T4#$8S|M24$ :Zhc[JEQq,* }0S r`g~l;=V6( .N,w2NWPB2.5Qv &pez@RpX&^}V:%-f4p;U[ZL:0-?^">4u[bY)%>y,o:s5o<fG Dh4@C:,H+3 zRQlATQYn 3:"CJw<d5iq4%Nt*8<+W6*^Zq%F{.FC%Qe0yCb O#q])Z.6, o($hau B/EE'^wH-*-.hU9T ? JR(;<V  L 4MN3g ogcW?i.x Q=pBv1)+t2q/KN/KkI"Dg/%K{I; W3 ]qd0j7W. U'w<"2Oi _>otOvmho~$KK5}X;K($(s;cRTdfd^a{fyx5crh|X AYVA Tx[RU\kne>8[ hO4Am/n|kr-VrzW;<aY""! JhPDKWmwj:z SV#A!:94,2E[{"BP^dmz`.C2vi0rC27Rod!ZnE qK!z "2Jk+47@Uyi0IP?oRTlp k&v(gim 4V'CmW$&V<i 6rkadJ&3Z *ob:k -^Y.4Z/P}'A7&T_'.O)Y1M]hlw(mdLABFG>6),HXA<qP>78/  m8ofnan&] 4?FK\|'sx_YZ\Q:(Y`MD:0G[Y{| G .V%ownq|~g? 9fuf\K: `lA+h  x718KgK H`bK@VE~ku!Tot\NIY Hq;{;zFDv=Gi|{d8h"c_KbfWD@Q}*Sl dBJyGc,:bl8W#4P$;5($J}"9WBn;Rcu QTFn|T'a8K!&Mx8jX c (5@_eH 9a{|`F,,.V   Cl6Bq.4rKW A\`XE925?; hA' #E^monvf7o3 K:}[ -;?0*!*>ZjX.rgH. .HTQG@Im zNjF*\eQ)!:ITL7,-BgR%ae>,HTJ7".b%ZyeM>2&t1{bE01FX]SC/!&<e]AML7H>#]/9cw|vk^SJC8"||+\e\E4-5BNK>" 8kNDn9L %3%P~ 9O\]Z[[_]L-__72:428GZd_P/IJbr6Q 0=4Tw%;LUbri.iVnT#;Mapq`E )`MxGZI:JB%^s5W|o jt"b *Jj{^5 F^!g&x_-&:Pc[E\U%aNEgEdnmW2;wi=t-^\<59fz{{|Q\(Ax6hPrG I?D, <JKRWgz`Qn#eE |+bx~mS6C)" $0=K^zx'KB,)01i&K-ekXH3# %z 10/::=L`D\~ue8l6N!PhprlgeV=}@  'J~ Kc!a?* |ju1`2@O\eiY;`Xn:{M$ t e2 _o[G.iWb.N 2Z|l5ho Q6DBqhP*z<yQ%ZIU2&`9qd$~iuV9,U]*j0RQ0+IfV6ptG m`sVn+, pI. S[4v,]HPrEzRH|Kpu#NmuroplgnkI+ A|V7.(ZqKAIf.qz*_xqF fQ^{ &.)(/J~}PCUlvcJ.EuhfZ0I}_PV`tMw,aqc5g`x +\ ]DDc(lxgH5uCYslgiq4 {3fpQ$ E {UDW9kz7\.g{8{ss4#TzwX%>|c_rMxx0wR?7-r!V#eLLeLiSJA._\/yI% 7yJcLM_ 6U~bgDN wISA#  !fx`]i#N  XpFPho/:d{ychfjPFN\n2rn?sC\9(SBw&Hh tPJa.hhWRUhrz|wsFX3  g)ZDZ/y(vCq'4/t^nP~xt}xprav_QGD8j437YBMH &( oPKa ;YfaZX_gopm_M=38Kp9x}`PNMME$u@ F0d)X#r_8'2_+3;EP]ed[G+6b4y{f]cpxmNoRKW`\>2/l<1=[|@9 `MLf*:M`ulS6#'J\k.:WOuu},LdXdz 5Pg}w`A :|Tv{pn}I7DY|sd[^um8v]PR]t )He|kK @ /:BIVnw<  GZ<nNBKqGslimz1]n:+g#,<Xn2;L= V~WpE6Ez/@p~{| <n{H ?u(UO8TW6E8l";&_q+J]a_[\epxyvsvBytD>jPe) 4WeY.Hp,1o$"^Q/7z#GB"!BqT*Gdv{tgO=8Mt;onK" *E[eecj;rB"+Kol? P G]Y3-GU2To}ziN-$E~PusX50DTYYPNUzelF9D_~dB%9p}dFGb3\5]wxgH#BA\\I)/<:/ "XV]7(/Gcw|p_Q>,KmhcENgC{0TaX< E,=8$ 7A;* `nkVMQZju}qeZQJB/ { z tr|3t4QT<Q1@@*gTsyr\I99?GS]dbYPEFLRRD" ystv~d1* ]-DF/&| 8NVPF<>HO\dhf^TMM\sY-+m(yx34<)P -Utzd3R<Q\[[^iuxg]es8Wp t7zO-% *f(UxrKR)/8BQfr~zfT;:Gh'R*A{YXoJ4c=atlLG /E[otmX;&&Jz0pgVgIOpO>^mlhoKnzjB O@e}iN1 $CmK]\dj(t*BIJITd9m}{b7(Qw+WvnQ1"HzY<yw]r6tsou'$+L7\i_B&9NiEck`D EwW(`tbf&>IF<9AX|5s*MO< DmBSR9P~c62 } 4;833?Y~H"NbY>'TGel^> 'OzZj3G (8?:54=Uu!f0RWK0F4IH5 MyeS+]' ;dR4v:Xgqq}eG3T?6) Am|mv UD2OZ\]fGS8qzmU6;its)r  _1BHC9:Q HmqJ ^n>9csci7p  sx^(% A$`zI;\_-:cmUBAUzGnwSCZ Gr}%tUo^*wXx/]$JrhL:3;X} 3Sl+2"eLMlF^efiu7:lze2F]pt>'&9ZeNADWt)Dc8IF'\Wp%;BGQdGDin`1l*I*]LSls]FEN_ $Hv(LW@tbo *>_~vN2V^G!]s 6xmxx]C79Kc*j-G=qo,]`_zW'=A/F>}eK75E]: KrM;C^ Cw4R]V2<T`>. wYSV`kphW8G9{h]dJe>"'Hs 6c?RO1&HzX?$vWMS]jibF#4*k_HAZT\D43?Z}(T;gTC}2V#Q!!d>pcQZw<}eQHMWwL^fZtDu3zB4u5Yk~fG7Ft7izaK@>ETftg^{DW d(^~H.k4E_|e:%&Bp)Slof\L<9?HS]aeq d[e/g4NYs2 8m %P~~M)$EsDSXNE=>FNPH=54GjaUnoM%p?mj7 ",&q5)Sw*_ Y:1Bh0HQVVV^fji`R>,'>p/[lcJ-}<$nbadfW2uB ,Hf~2ppI./Dn )8AS[gmcJ-[s$0+!8w {uvtjJP( !.=DO]y\rE)&Bh+F[fcL*H`$#5pO \6% "#!($&7X]d@23?XzIk}lHhW-FVR;N@h#iTF@:1($H#n|V;07I[oyEm}nLYFkDWR28P1RfRI:# 0u[zW?1.8AKPMT_zEeaKMAu1Zq_25|]I8%_ nO3B+kxaZX_`_[OJNh Ly{Y :nV6z`{:S#r@ ^25s_}gSKSw:ppC;Xu9>w~L N$TZ= s> _-SmoomtxycE" &VIWJ.;jaC`\@^4f0qZD(O R'8E[uz_>\<?/ YgGbY> z\A$Vj9e 7u#B^|f8 6|+" Ee/?9kO(Hx9B1`|"Nxl9=/V# l=T/A; 4Icx,bX!T2UPoULF:FS*)1=Gc@~EFzz<LS xh=EqL9/'%#@u W_/ &Ms (% dZe$"] @IR}_J0<~ `k@ -Op!48+ {`Vm1Dl $/ |>O_$T%?$W}oM"-JVjs.1Z:9S`(J{ \/ AtBy>:@XUF( ,;FP_w.>9yK8<\U B~&Z80155']#d,R#h3Ud\I7&  ,9?DFPb}0PZK!yXPa~@i>*,qdchd[=U*VZ >4LSJ;4++38==>9hB!~~t\5 oR'[K 9z $!!#**!0^@L>`RVg}!j p|}~w`<mC ]@ L $,.&$[47p\X]emtqy a`|`A!t3oT$2W'/7*-o0-q_VdpVvbA* RwH48Qn$?D@' 3y kI5/Awh2Qcq}uS6#$.1!_*eSXg%?MMC#V ^9"&Hf,DXmhK89AS^aLyB}z3Q_\:)dl= F U%Ikx\HAJ`tg3'a)NedM$;o[/E:f 6leNAHTn{A/w2rq =]fW0@]wz>=w 3V*[aH429[~w8+L|_KQe2H@!3FWkS 6b+aOvaC1&/DjIJX%\OY+IG0 )>Ut%"\5;\}=yEzx]MO_}r&Scwv/OYM- !,89MI6>ls_@S1piXL9/#&O2 )0$ )\s</a  E|jR?* &QF  (V}k>{5 CxxgL* &y/~9Udoty_*I  x8e]4>H5Mcrw" 3emS8 ,=A7'Qj1\>i9IMPWi+173oH% %;C<+ =dJ[5Qcw !'9Z :9:Y {M!0CH<Dat;!a %CgH&;0E<K%jf6"Gs7HW`cpO?ceD\0}D f8FwwC9_ $%!/P:$<:jE.|9[/xy9ke-5L^m| 6}8 mT/y3~[2 |phn|)[T)9AO]t(x8vB~DmM*wkr$_Y*%*+6C_ -FXhH2qM'{w0qU8%!" !?g,-jYkQ9%}V2 vnr9zaI?62'"Jx{8?f]+cI6%oH&j[d~A~tl]N>"Jvu@N| R!mZE0nN!gWgR~saL.LhZ`!RRk8 x_M3mAT43M~(Vm{{{tueK(=whM?;NlEy0fe9fK2xCwM69Y(Mamyb46pve_hxS J {X2uXD;:6%~:|*Oi|[!J'[ N#(c@zjcdeT?8(?Kdd7^rk`aak| A|<uhEkUPRXQ@Uur};he"$CZouskf_TNKJPb{[2me1sH p V[# -I`q|yqeZQPNVcoJRzZ(sBaYsA3DYdfb\QIGCEEAE[~50Vw^%Mt>2wxL$3Ofv~yyztpmf^UMThM3_ I ^b>U]8)E\epss|~xs]K?:B_6v>l q2WuE wfo;md=%/;FPbglj]N7 pgA!   (/APhw|kZ>'"5R{.\F]A:AQYUE(yY,x/SmL3* $&5JawnS:* $6Py1eDsUKMRWVJ2s>k$| An}^I0" $AS_c\P<$DYr^fwX?6:CIB2f4atkx 8cvxiXH:) %?T`i\J- 1COVgp+p|nkhoqhXD3&x4B.UryiXD, +Fbw|mT;&%5?E<8;Py4iukXI;4-( VT 3SmvfO>& =\siO<46CJPKA0%&D}2%Rl}o^TNNLF8*uc":\nlS9<`svkWB/+/:FH@!_ [ -E\jvxl^TD:<?JOI.g `1H`mz|wn\>=R[RA,! *Qh}{]8:PVN>.*/=UgjZ>O!e$:Pk{weODFPeg1Dd4 )?W|}W. "?MOH8)%*CWlqjN(7y9v@`vr]G85AXqs=TzI(  !8_~mA 4AA6$$=VsfI#&$)8ENM<+ )@]ujK&5n8j<ZihZI7*(2Cd~Fv/p<KuvO1&10* ")#c V+?Qg d b_:^s+f Sm1vg^_do~oL- #9Q^c`XND=5+{jnGEf>w+qI( kL1!'?Sduxwsmorsm_<w E|?k E|9nM+iG,#7DRZWRS]nxxlS#mn~HvNj{vkil]Sc=|qnxoN- #,22119F\spH|,jDgqqfZVZs'goAj5jR@dGmN}KjH.nYMHIKP[j_wks=fy{lhm$>aL]2rQ4 {hWK?423;PtIq_`x*CMG@@EUl)^:ub>vS=)"(& |jXG3*&5TxSvet(7857=Lg!dAz~\3 hI2-((/,)y`:# 5\~Knj| !6Qhu| P!YmJmWF==?>@8, ~Z9%"*AdU $7Ogtzzx|QVd4uea][SIC;1-$`D-&,?aF&@Vabd__gy>?qr?znaRHA=<;4'Y69] {6+=E@>639LmU <g~S#p\H935220+ vG#Y[*'.1*# 7W<~MzZ;q`RNOPUNMC7Y+ N|Q1+8:94- #%9^1mQlH*yh_VX\\bg\N.G 0a~]>! (,('Hl0q.b{cF#lZPEEJNYgfX1i0Asz]5+:A=3$+@[u3|?uxX2~ttg!dHKa fF%7EMO?7**%,3>Of)n,\rW7o^[d}}?rN;@UsoH&  6b c 1OgloeS=-vN3(1JlTZ:,2BZyi?  1[P5WloqnlfVA`IPde)k][j`5 "%+--#  #@gX9]pe2lbjl5}moxc=!&,$:m/u2LfxnB iQReRqc]aeqrK.#!!X U%Ny}H}qtl8aK5!(28. Az2cJ~e+[0 dE-!'+17994*.dAt+bg3j?l`h{iF&  3Y7|FqtKmK zf`eykI0 (16/ -Lo9`_*Z!s\J9.#!,BUaWL+ 8RlD4wd8i8 $ rXA,,DZefW;%;Zs\`= d2 bA"'E )<C=,  O  W7#)7HPNF4og!)&"R _C4)3*2/nVAFQbpvsfS=*#$/27+ cP" .HWYM/a>$ -9D@2v`Y^myt[G942=HJC*t{:/q 4C=,Z7*4-{dW[ahqnbG4$",3@DA/gZWot H"58,_7 )=@6~pouz|rcL8+&06BLLF6|ZII_ V^(.+ nB:G<-{qfP?6.-3@NSZTH,xZHI^9| M'2.(Z3=XYO4yiYSJLR\myxdGk\at2x\,=EH?7&{O #BYa]F* p[SMU_n~nHqa]g}h L~ +;:<7+s<<UbcT>%|bTDCH[uf>jO_orZ5uYI?AEKRTVM:+rYGADO[gvc9[6"s +Odtwtqu-Xo|q[8xy~~teXTW]bgcXF) ynjksn;}K+)8W%R|+K[aYXXd}'NhpkW4|o_UNKPW^b\O7m^T[o}r:lA#2MtP,7612;PkHengO)p^PKJOVZ^^VG6d[ZXaqf(^7!(:Uv2n 1Pw>T]M6yi]VOORZ^b`[NF,t_UNUgaqP73/5Ea5n +R"JWVM6yrtxz|dL+{heiw9bN?9Fa2h&U'COK?0xpxv~fN/eWTcw? ]@,)7OxQ;t)*' |oe`flv~uaO8qSFMdP [9&!7^;k5m zha`ks{yvpl^J'fNH\{i7pH,#8\=l1^  }vtwi:wik{S!W6%$:a@etwxy 9c p7wrg2T.JRSZcDn }omq~`0~QT1"0O{#3AFM\d{Bq",'|qttB k$aD'Lr"?\z o= :a}lJ_:5Z4\ o6;^lgT5f3!IgM   ?%LehiZI1~O",N^sW#*>&@R^b_S8Q)}z '3Hf5f-0j(/BT_^T7h@xnn|&^8khRR` 6Sae\K2~N%*H]oyvpeZH3 xP"ts .V~IvtW;-4Hj"8@A9"^- 1FOTYYSI7(uEmablw*U2avR4# +<\ (<A;#Q- -8ELRPNA5&{I}ijip}@v1gmT:1/:Qk)Oip`?cNA><GQ^ltuqj\TSQF6e>"A} Gww`QIKQ\n?jpP#e[ST`kx|{tokrvvnX3z]J2')j-Wuusi\OG=45>Tx ;_mocF"}gXRW`hoplf`djxzfL#cQ8& }}}|wstW>S]_\YK;+%Ck1Tei`G$pebeilf]WT[iy{eEz]L4xma_qU'@T[_WH6?g,N_icJ&yqf\ST]n|kL-x]@"hR<4,*6T{N5B?0 %K|(TehU7tddbn{{Y?' [5x[@3/X7t'&I#;JJJ;4) yt~xhZN9mH6+$dH3+&/InZ >w .233.%xqmqwogU>oTA8. }^A$3`6k/b %&|lbhswxyxmV6 r^O@1\: 0Pz$i'V$/2)uueAxdRC5,b@&'@f%l-Y&8?F=$pO+xlaYM2~^C0"&Ag-m*Qw5KYWJ,lK$x_A!pM* *X#c:[v 0EIC* }y|yZ4 ~mT;f:DMx.Pz':>2eBzaK5k:DClBt &/. oN6t_DJ!!SInK %& dJ7" fJ}@E*M^dinx6k xpsmWB( v\5}@D~ #8KXlzz1f u\=Z Q1c3Ng{|jhl!R gH._@4Qs9RbkjbWPKUk3] cD% `z> $:To.GSVSMA:l   yP809KXa_K+Y"V8&"):Us!*& "9Vq?o #uXFISamneQ. k2^9* 0Is +AVp(V  "jUSTagli`S<};f>!(Ck  /EZwJz*&{ihhkptvq_H$^"pA"%Gn "7Og Bw$,)z{|u_AKY8,/A` *5B]zK2;2 u[<j!gI=CUm %:]/Su  }y|ngU9RV911 I4Vs '+" i8~9~2r0N`t|  *&TRxw+g,Jbq"5=2d(h1i\Xd|@|!9Laq{}wv~!0)g(j8 }jYT^s9q7Umztz#?D;'#-83"[mI.pkwIvAg{{ll~0=A5   ,52$_bD!cUQ[q;e!I]g]VE@Jg '1.W!lC|^G;=E^}@v6EF>5-6Ge  7B=%o;]0 m]T^du G!8@>644@[v :NTK1e: }S%tuqps|N/24008G]|  !9INB.wKQvi^RLOc-p 'B`}''#oGDvbM;48Os*j6Rm  "5>@>4Uk1s[H?G`9o+A\v -3+ !6CJD7"t8n:_D-(1KpV}&;Odx ZU$ iI) 3Z1[v%5Lg   y5]@,]9#+Nv;[v#-C\~  *,""!()0:CHA/NfL3 Y6!+In6Vt#Df0@G<GdD# ^5 3Sx 5Us'Lt  !=VdaR4i5zR/ (!h@&%9Ut6Xx*U "@^xuQ.l: W8# *FSb~ 2Sq!Q   AZnrobF rCuH(&6C@0pM1 "5Mj&E[jv|-c7PahdT=SpB&#3AE?/sT<)*<]8O]bem4h(HcpwqiR;" CgLEFP_jg[D* tP;1((3Fa"=MV^[k Bj4Lcvytm_R>"K q^WW_ddcZI. wX=.$6Pt+153>Qs.Rr 'ASaabeaZN4 Syg[\[__ZS>$mK,5_0Z'D^v.:DQZdjcW;Rmb_b``^P< W37f3\#9Ro"0>RetqQ(k-xkV@#oE+XyaSvG!f;\6 ,8FPW]ep+Ee!P{@mX'h= vMrN>9;55:CRi 8g)MkJqw\3Q}KvcOA1,%/=Tn~.^@Zp&Po~Uf4 W(mV<,&-8K^r{L~5Qj9]rW]) ]0 iG/"&4CT_jqsrz7k:\4Qnn0qD*!!z[9wXA31:FS_eihmlot/[ 3\#Bdw=aJ<=<92!{Y2 iQJ?IMYcge`Z]dt%Hk*V}1Xt7rbXRF:. f:lVB??LXZTMF=?H\t=^ ?lDue*}lZOB5$oEhXLNU[ZZPE4/0IZmAq9^x#\]. vdXK>3(yE|m`N@:>FVh|&]#F\ov|| [hCuf[TLD4Qt[L@>?LXeozN &?Ocpo_]dzM}[<nYUPKF:( s: x`F/"!&).7;2#.UF{ ! 1Q8kxkaWH7'vL!~dJ+yja]WOB.!H~0d  Dp0cyncWI1  }V-uW7{tnf^O7AzLq 9n Fgy}xl^O:$g> yS't]<Dq1] .b 4Sdst_L3!  qK-|Q$lR,)R}-XQ.G^mxvfS@* pV>(V+sK) 'KpKO}8Wp{{sgP=,!  ! q]I1a=}U/ !>ZJ9f -Nguxn`K8)$"$'+- s]C!gF,}T.,ChD| 2X/UlsdQF979?DD=+^6 |\F3& zX5-R;q Fm&Jdtxuj[M@;BFNTH?/uD{kXL;!dJ3!Dw3g;e&KhuzsfYNKQX__dXJ4#R"{kS6}`I3,fHnN|<\fd_UKIJPW\XOC/m8u\AnT<G#EYcmnsqv{}'^6:=732;@NPQMB/  xK#z^:gD!.c+I^nu~<s *=EIJPWcn{{vh]K<1.48;4' h@& iF& {N!$V8Rdr{{.g(149BQ_ioleTC5/,-4:7/ dH4fH3}KH{1Odtttkgcer"]/>P]iieWJ6,,/6BMI;%fQ8#|aQ:$ V$Gr3McpwsmaZ\m'`!5J_nrqeWE867CKRXPD'xdG$s`N8W'2['JakkeUIDJXEn +CWfe\I5(''09ISM=) ~bCxhW>SCl7JNQD4)#1Or-On":IPND3)#$)7EPOF9#qR-t\6_*8`6LPG<-!$6U|!Bb *GVVOC2-.3@OUZXN@. d<yT!yJ"0[">JIB/&%/@_2Sw7LURKC;;>LYckjcZM?5* yM+k7i>,^053' 9Vx3Z (:<=8259AKX_fa\ZM@:.*V7uEX/)X"  5SmM{! !$.7AMRTLEC>995+  wT:# xFY/J(;Mcv0c,8<=953366=;1$ sVD4'W)h3?t!.;J\r"[.5841424=EIME3lYMF9'yL!~A P} !(3FcJx $133./33=JV^YN8tdQ@)|Pa'9;6:HTbovn_B& ubL8#g,_$=\|  8V?e(344/.5=Lao{~reL.oZG2#Ek3 !>Un $Kx-Nk#$!*:M\kstjXA(hU@3+#Ed0 1CNav 3c>Yy&:QZ`\WK:%zeXPKIC0X ~P3!*4BRas .[,Ln%9LV\XRE8) zc[\^_YD[ Z=%"&0;Rh /Vt?i(:MVVVOF=6+xnlsx{qX-l%_E70)-3?Ng ,Nl@k*9JTX\XXYWSJ2j<|7vS<* $4Lk4Sp 5a.>IPVX`gmlbWF"wDOhJ.1Ki2Uu)Rw.59AHP_hljY=|Og2mK2 3Mh&Dh$Nm %/6:HWhw|jG!]*RV5""(>Sj~%Ky 5Pi{,=PbqwjP/wQ#Vn@ &;Scrvy{|{5d1Qf{2KezuY8nGGeG65;K^r!P%?[u 4TpqO.Y-t1l\]em~Ev $Gg &Hi}`?  V'n)}aPNQV^bhflmvAf;c2Yry]A(s? ~:uh`^cbaadgtzw0Sv8`~9[qyxgV=( d"Qunldbjnyw"Ac6\|!Fiz~vfXE8(! Bp6 {pjmp|{{y&Ek(Ol{~|3O_gc_RI:/%  z;y@{paX`js~ulebht!J~1JW[[^f~&?PXXSMF85* Uf6 rmio{qoquL1GOUXan .FV_b^_XNI=1" *<A@1r:`4 ~|xT.AFNO^l $9MT[]__VNC1  3@HB0KuCxpout|~3l !)2CVq ,:FQWQL>0 .?C:) T"Jvportvwtrnjl*a !4Kl #2FR_]Q>(&9HIA0sA ^*~tprrvvxui_WSXjLw )B^u1IS\ZS;*   +>JTTP>& h3|F|~naOHSiMz0Iby:Pbd`R?.%4HV\^UI5IT"pbP@?CZ| :].BXo +BKRI:'/<GMPLF:( Rh;o\K;9CSz$Gh}(;Oh+DNNE5&)9ALMVUTP?) k+X;mO<20@Vx2Ts (=Su +?IJD0!%3:<FQV[[P9s9wS.~fL:..>Uu"Ei 4Lm (8@>6( &*5>JUajg`F!MjD u[F2%-7Mj 3Ty "<c2641*  ! (*5AOct{xkP/f4]4y_I<4:DUf+Ps4] +)&#%'$#" #*7I]pwY6 sBj8 hP=1**2ASk;a~Es  $""2AYm}`;d<Kv_K?98;BPb~7YqLu "&%#!2MezmN/f;_4 raPDA@@KZq5Sky<c  )C]tycE!oAW+ s^N=0%!!$7Rs1CKWfs=^)E[ntn`I5zH _2~eRF6%0Ry &2@Pay8]~  &C_tzpdUF6t8a<' s[F1% '=] !/@N^w2[}  1Pjy~ytmeSA!T}^G8, gF4$#1De&6Kas$Df)CWelmpolhdWF%YjUD4&wY<&!2On+?Vq%Ir &7ES[`honqpeS4 j0pTD, fH3&%2H] 1B^w,T(8JR\isxtT*KmQ=.#fG3&*/@Vl,CXn3_ )1:GSbt}zcD~O{[A0% wT8!&:Pf~ !8Kb{Nv '4E_p{}v_@h: rWH=?;5*jM8//5?Nbv#0ATl 9c $0?UkhG!n9 und]YI8iSFCEJUdr(:Wu&Np)B^uz^B%k3|h\ZSI;$uZF7/26>K[j 5X=\q}>Vk{uiM-xC|qnjbR5oZJ<65Shwu]9m7t\D$_F3(!$.?Vp=k-Ibz &;Qj|c7\/|eI, yaL;37?UkcH4/8F\s6Vz;Zr 2D]yl>|S4xZ=|S7%&0AR^hjhe_jw /Py<[p !6StqIeE'nU2 ]G=BFValkkcbbhw"Fg4Mcv0PsX-yY># c@hNJOTZ\aa]\[bju>^1Lcs|*Msc7sR9|Ntb\[]\]]YXVY]dr)Kj5FV_nz=aa;zZ6 ~Pwmec]]\WWQSWao9a $<IZky<cmO,eC. a0wqlea^XTRWdp 2Y-BVfx /_~e@uYM>4/&zN#vnc^Z[ckx)Ry$=Pbs0WwlK |gZNJ?4U+}jaUSTXbflr?`+CXjywuv|Ee{uM qe`UK9&b6 ~nc^VZ[]_bgq} )Np7Rly|ysjlir1OozQ'|rl^M6gA}pa\ZYXUWX^cq7Xv ,J^noibWY^n}%Gg}V0~s_I+_@"zsle]ZTORY[kz-Kj 1J]ge`\XYaq:dd=uW5_=xpkfaZXW^dy3Pm'>OUVRKMPZcq4]e>\;lH&sk`UME?=BPcz-Ow)4>@@ACFOR[fIp`<dC!rN( ~vmbWKCDN\s +U'4>EIKKNMOZi$N{nQ3 kK+}V2oaUMQ[j,X'9EPQSSRWX_l$Rs\D1$wX:[2q\HADFQ_nw7_ -1346:67;GYy:dr\J6(kO1{S, rWA2,.3:DKNYcw8a#&%$ *@_-XwueQ@-hJ+ d@!|dRG@@BEGKQ^i|[q}zzwph_RA3!}S(dG)xi\NKFDDHDEMYm2Z&# -Q~7OftwzzzvoeQ<(  nI) mL(xgd_]UPJLSbv,U"&" +N{#AVhswwgZC2& lL.sT0 umaZPH>>CIWfxEx>i &@Tiu~{q_MA3,++$dC' e?uk`TIBDHIT]i~3b -W|&>Sdgi^L>1/-*'!eG-nH!ypdUUQSTU]gy2f :Xx,H]fhf`RJA?>;60"gO1[7tibZUUQWX]l|$X !>Xz7JPUSQIEA;:96/( u\E%lI) toc_VQJJJQYlM-Qz0CKTSTOKJGHIG<3%vY@a?"zsh`[UPJHN^yP@g2>HIED@AHJMI@0$_DoM) xof]QA819KlEt7Z#25877<A?FDA:- nH) tT3~vj^G4%'@i5^'Ix (.28=GLONF@5&hH$vS0ybI1)Eo'PuFo #06@GKPMGD6+# sS2c@wW;"&?a=e;e!/<FMNUQNJ@:0% lH. oH"wV7%!'<\2Vs/Uy,8AGINKA:2) lU=gAjI0 #60.*(! nO,uO5! nO2"=\+Qp7Wv'6?CHGGC@>D?=.tLrYG7'_C*&>Z~!Jo6St+;BIJHJMRVWTI8'W*kVG6& _@' -Ca9Zr~zz1He#*.44<EMNK@3& Z,weRC.aE+5Z| 3Uky{zz0Gd '04@KXaccWQF>:42.&|L"{nY=~_E2""7V 2Piw~{y} "<Vy .;IRYWPG=866961%M kU6}[< 7^ +GT[[VVW]l6Z|%2>AB84.//01/,#wIrV6`A$ .Q~$?LSROR^ix;^z#1<@??:7569>CDD>*`<lS4xR5 /U ';DKOS[ekv| .Le~#.20.**'*2<BOND/mH*x^<}W3@o".8CMYbfks 8Nh",1.,%&)0<NYaaT>gJ/|^<xO+5\!5CTboty{,DWs$4<@;7248IXhw{xkT9kN7{_<a5,Ln.FWajnmsx-E]u ")6K]ikfYE' cG2z\9N% 2Nk2@GILPT_gu1Hg*=KUWTK8cG-hFsB 3Kg)06:>AMZh|?\(=P]dbXG2lH,n9b?,)=Vr!/9BEGP[k~ %Jk#:SgvywiYG.bB+ N|\@/$#+;Rs,7;AEN[k{>a/GZaea[J5(uV<)! ObE-#&0D`"(-5ANbr(Nn)@NTYVQKD7# y^L?4-])iI.!+;Tn+=O`nw~!Hk(;DLPSZYSG. rdYND1yC[@+$ +LZcippvEdx )3G]nzxp^AwkWCr@ }X:*'3A\r#7HRX\\Y`j{3Qeow} #<UhpvfU9!xiQ4 X"cG:4;IZo'8ISXZYTYe|8N\it2Nfx~tcJ1fJ(r:oVF?CL\j| (;JQTNDBH\y0>M_p&F\nwvq^H,}lT8G ~cSLLU]jx-@IIB749C]|":K]r&H^s~yiO9 nO/]"taSRTYdkv|#/2/& (;To5G]huz0Mbll`P?/tY5 b(r^SPPSSUT\k .E_x,>O]isy5NaigeXI<(qN"{>zpkb[ROMWj   /BWm #7DPYbhly,HWcc_XN@/ `8Mxh[KCHWk!(@Qg %9HQTY_gw (=P]ddaWK:'Td-jRDAI\z  $4AUg| 6AFGJQ[k2GU^b[UF7%^%rEaJ:;IZz"-7FYm-89<=DPd{(@S[^XQK;* m5nJ+mYJMSi &,2AL_s !-76:AJXj|/AU^ddaYG4  v= h>nTIHTe~ ",AWx ")5EXs 4@KMJ?/^3o?aF=?H[o 6Uw ".AYr3CRXSA*yV/ e0ycWU[ix%&  "jD&s;i_]anz5No&8I^t3NXTE2 '-* a@Pslhmp|.Jh +9HXr/@G>1 "-0+ ~b<d,spqt*Ee !*9Nm.?>4&(,261#wPp< }pnu~.Kl (Ch#-.% 04:50!e.T#potx?Wr &S &,,&p> e7xrou!4I\s$P '*0' T%W%zxy(5LeBq!  h7g7uu|&?\zKu !*./-+((*1552)e1l8 *De!Mt #%(%&&%,05>B?9*zLH>aA_|!!#'-6>BD>-`5N)Rt (CYn%155.k;I%Jn}w{/H]s   !.=GHE@2!j*l; 5\}{|,@Wn  +<FKOGC<7-" };~N) :_z}z~1G_v!/8A@@?>?@=0Bg?! 8Xny~{zy{~*C\w!.:>BCFKRZ][M2 `#hC!Yu9Qbkjf]UJ5XsQ8.)#"~u{*DXjmmmomr~ $<Vu &>S`jnmnnhY>t3s\PKJ?,-FTbec_cfp{0Mp "3BKU^fkfV<p0tc[UH84>IJNLOW^l};\z (9KXblmcK&x6~vdK+ "3=FIIOT^lyDe#2CXk|rLRyZ7 /5;=BIR`r{!C\ltv| /F^tj=LkK) zvv #)/:HVbjpjhlw-AQY_gmu $BczKnC% aD&}~ (8L`lqroiku3HUdkt~8^_(oR8{\D0  2DYgmslebfp,=JQ^gt-X}S!`@"cL2vsz&:JTZUQMKP]m#-8BQ`r(VxQ(vT2 |gM- .@OTZTQJHN[s %/?Tj3ddAnF"iD3ITVVNHAALXp '=Yt7hiM0vP. lA#5??;1,')2G`y (Hasvpg\V\qGg{n[B) hAb5.76-$$4H_y2LbrofUOLVqAcw{q`F'`I0zO%5CHC<321WmpW, t_H, c@ux %#!!+7I[ekkku+DWZVK?46BWs<Zwb;iI%bA&x{'5HX`feefm|3MXTN@73:J_w<bpN1[1 vZC) ~y!/>IPZXTNRYl *:@93+%&1=K`v JmqW>$ X2 }dK. yhkw -8>>7/'+9T{ (5BVj=`ypY?- jClI{ />EE@4($/Fg !!)15?QlDgveTE4'V0Z)(AGI?0".Gg &8T{ 2Slxysg[PC<2"yU8 [%+0'2Qt3\8IWYWOHC?;3uX@0U! ('2Rp9b!ATaeeehmmm^J+|mU;H+994' -Gb{>i%>P[bhsmS7b7[/.22(! 1B[m  8e 0CTfvpS2l= gB)  ,>SkJy2H^s}ykU8h7wX;$  5Lf%Nr5UnpW;  n9nR0 4No7Ur%Gdsyo`F, p?d?%Hp4Ph :_ut^K8.+-2-`8[+:^ !7L`{Iks_UKKOQMF1aD#q?  ,R+A[C^ltk`TNPS[ZVG.wY3 wE#Kv?l,BPNIC=DJSZYM9!`=x? Ls0c3844:CMW`^YN7  zT)~HJk&` #*8DMQQN?-b/T% Dex%Z,>KW^[UG7' MyR,9XqAl%9N`u}xnaTH>82&r< [9 &&$A[jt} 8^/GVgoof]OG?><8,r@_6*:EQ_r?\y/CQXVKF=8;=>:)yMh6 +:Pm{/Oe7JSURLHFHNTUNC-qFM % +=Z|!6Oo,=CECA@FKRVXRD*X*K  $Firhes$Fk !%!"'1=FKI?-b3? Ag}pidht9e)2DS^^ZOD0 f*`/## ;d$Lu$)5BQ`itxug[P@4'AsH-"#'-*#81.+! 4Uoyyxx%Ms%<IMMJCCCEOTL36iRIB:,+Ias{zxux{~~ztqs}Ik.>IJC>@FRbnpfJM}m[N7%2Requ{zuu}!Ed|5?B?86>Tg|{Z%^!mV<* 0HWdnuwjcep+FYo).)%'->Wq`.v?tU<) 0BR^iwrdWNOcz !6Lj    6Us|W"S(tW>/%#()&%8GXix~jWNGN_~:b>c]0zP$fPFAAED7* 0F\qfWNQat<gBk^7g6 m]TQQOJ7$4Nk~xbQC@KViz1^Cfv\?M}nefeaU@' 5VwudXSXaky Bo1YzvbF#j5{iS3 Dhsf]_elty}}Fq 7XtpW7 s9|eI)>]vuk]XU\bfgd`Z[g3Wo} B\n{r^As8 cC$ =Yiplf[VZ^ekjg\RIM^-N`hjkq5RiwwW+P gL+ q!=QctkBxrk\C%lQ:$@Vfe`XIA7320,'$'.>Ru/c3Pjg= }p`I'w_H57IXYUNED?>80)&;V~ 9d6^yP'nN'{`B2HW``a]^]WRI<+,Km3Xz+XrO-nK)g@+:?FFMPQPE7" 6Xx*B^ ;frT2~_? h9,4CSY\O=)%Hf2SwCpcL7% }`E. Q"%9K\kspaI,9Wn~z>i @jq]I:,yaI7)N*AWijbM19P`kpooqy$O2Zvxi\MD</"n^OE/N3PivsaF% -ARY_egns}M,Qjsuqlf\WQD1xodL(Z0Abwzq\?) /CR[cknsxL%F]gllmmmgaVC) d:nJ)-QlyvhP8$%5?JPV^bku4m"9GPU[adeaN9a5xV;&G[a[H3 %.7;;DKZl{{wu%` 1BN\ipqgQ4k= {\98O^aXJ5'"$).0427BN`t~qmmxS4McswqcI*nCi; /BMJD8,#!$'**')+4ATi}|od][jDr+I`nsiT:vX6}G5CJF>820-+--*'"&+6K]txhXPUi 5[~+NgvsbM2   oW>O &7BD@;978:;81,# #-?TgxbUQZr%Hi 6Vozs^J5'#%&# bAY!%47<;==@@><9,% 'FPY`hkw H'/9@C@:*zAX5 (5ALMIA0=Yowtj[NHCFKQRRNNXs<k%6BD?/  J jJ2! (7CPTN<%/H_kqm^UPPUX[UJA;?Oq4d8IRNB3  )/,b$nP;0 $6KZa^P: &?T^g][STZaeaYJ?2/4Dc#Kl7GHC2"2;7%j0z[C+!;P\^R;& ,?IOPLLOU]aa\P<,9X+Id&26, *9=6%n9 cC% '=NVO;" %/57::ALS^b_R>)/R{(Kt&0/% %5IPM>\2Z2 ,E[e\L6" '046;@HQ^m{yq_D-&@b)Q~5=9+  &:Oag`J*^4kC%"5L^ecXC2$#(.3247=I^p~mT>)-E_x>n(*(-EZhg[D)vJd=,&1AS\[PB4&"&'!#4I_qwxmZC*&8H]n(X ,AWa]O=$SgE86>IRTPE8+! -F]otp^L6$ %.;I\uM5KUWQI@7-bz]QOVZ[XNC5/,,.,'  '6,'# 'Gs)` .>RafcJ!k1zhYH@87=AG>5"1FR[]_TH>5/+%# ]y!Ind>uHysxwzsfVD,.@FC;760O &2=HZo ;UokB a;&x\L@CC?8+1H_jml`SE8.Ev#-=Ld2TsuG{aM?3 m\^Z`VH/!;Scmmgd`\WK8'S}#0?Qj6`UygU>ugP40H[hlnsyz}xbC# .U{ !-@Te{1bS$kGhN2%8HPZfqhI'*Px "3G\hu7k~V.uR*lM*  -5kNnzk^PD;,oH*rWG3' "5[1m1ARdsrU3gN4|cM8"(EerS5 .W-b-GcwmO,kT>%pX@% 'ImlU>/#+Y3_2RqwbL3s[E,qU2@b~q^O@/-^#Cc Fbr|~yl]E*rX>%f>4Tj~{qdWF:' Lstnmu8\)DXerodU?)qY?'[1 5Qhx{{yrlfaP>! 9`zzvu}:d2Rk{teO;% lYKA7# Y60HbuoD=`yAj;\wudTB(~ph_K8X8!"0HXhnvwyT#7IV_gjjpry/Y*CV`bb[UM<% ui`YK6b6 -7>CJTex^-/@ADMd~d0"3EPW]^adhny :h %=O]jrrhW;jC~^HD?:6/&%.IkT0):ELPSUZ^gns|(\)B]oywoY<wI|n`QA+ %9Vz[3 4BFPZ^chmnps~.X4StoP/X(z^C."#.LojE$"/9@RXaeic_`erHl*QofF!W. vO- #Gi^9$6@IPOMG@CGVo<a8a|lK,  yT3oB# ,Jm^8'7CKMIH@;=I[q .R|Gmz`F1"%/0%{fM+ T4%+?WuiH,#5FNSPOHBBBK\q<jJkvvdN=1058;6'jBY8$3Rtv]@+ *3661(!&0DTl|>~&?B<.$$/3, b=yO,2PuxbM6)42.&  )7IYhsyF173./5<EJF9) h7cB-)5Pl{bG+!08<:1)$&-:LX^^^evI$/9GSTPJ@3&~NqL;:K^wnT;$ +;=>5,&*4DPZ[YPMQhR )8ER\_ZSMB6," e)fWW]juY> &*%!/>ED5&'Fx&V,7?B>92*  Wz[JBIVgyjL(  &7?9+;l6`$0=>@71$$*(h0vb\]jzyV4  !8KSPA, $Gr4Z,>IMF>4.02>HQN=OwyY9')$ 1EOPC17_?c !367/&&3@MPMB&Zztu|nK0% '*(&?MPF6#0Z&Ks !,0,&# *7DVejj\<n6{t\OIGFA4!,?RVUH9&2U{6_(=P_fgS5 o< ziiuu^SJIE7($/21**Ik9k 7QeieS8Stip}tlicRA) "4BGF8%1IhAt1KgyzhN- }E xfN0!6GSTK=) #7Pu9g8Uiv|zmZE&I ~fR5 !2AJE:) 7ZR/GYacihbO.:{]A% -897+ "DrHt,<O]mz}kJGyV6 +=LQPGA9)" AoPq ,>Tma"f1Z; %1;DHGC<6,# *_ 0Nau  CgVg=kL/  &/6;84,%L 8Oi 8buFj>_A% (/1.*&"M1OkKwd.oS8#~cO>738>BIHE@;=@DD@.!Ks 2SlO{b2lR8|aJ;0/4466/*'-:BEB5"In4FRRRZe{/_jDcF$nRA8230+%!,>JJC- 5d/<BBCIVp6atU0 f@ wic^XSD:31;L_svo]@) @p":BCCGL^}Q~qW<Y6)," |jWF9:@Sht|~m`C/1` $;\4ZvuhS6~R'gN5(&*9I[adcVI4&M!IB^rwyqfW@%Z2 dJ6.1?EISX`eigcWC,Fn)Z-DTdswvrZ0cE-'#%"  k]QJJKRZckrusogP8Fh!P7Mf{j<|aOH>6+!"'%o_XX[\ejq{}iIA`vBrBja6xeXF5%!&)*&}k^VPLLRYftd<4Ocqxuv{:]}Owg=fO@51238;;;0" rg]VTVdsm?0L\ca[^i}6X|Mx|`A#mVC7//37:;80o[OFBI]u\3 &9B?=AJ\s 2_?eu_I.w`PE:9>GMME8+}bQEFWjh=$00.4;Jdy$\;bx{lW<!}eQA@>AFDD>4&lO<9@Ug\. +CZit DA^psshWB* j[PJNPQUPIA4)pZLIRei<-AWfotzFE_w}o[B$ujhgfb]ZWRQK?+zcTPUfb0 2FQW^`fr6p 7Wm~zhP0zrh]XUUWYWNC+ wYOLViY'!199>?BLbH1M`imi[<}rcUJHMNRSRH8 dG89IhkB'*''&.6Om2j?ZoslZ>qdZ[aekkleZ< uWLSl_?) ",/10/)4T^V>vlq^8s]J8'!',4;@?6/)!.U&QuBawmS-zZ<! {_D0 "%),,*#>n5b(EYZM+yw{]H* |aC)  Dg0j5IJ6w}~gJ(eI4  !%'=[|0n%FYVE&sJ&jVF7-#")8EKB8*D^y8{6`miQ+_: kVB1%!"-@OTRD-';Qq`!FMD*|X6y]B( '6@A6%9iA {Z:uU5 !1;A@3 !ZA oN+ aA,!#*9AGLE4" U2w  kD& |X=,%$.9FHE<,9RoJ/ ~bI<4;ANVYQ@.  =~ J cK:)()!pZIKTajmi\J7'#%(/s>| $ cN7# %169/yf^bksxtjSA4.*0760N!Z  uY:$ $,.! i__dhmi_G6'$)-351 58iwXA*!2<:*vswxxoaN<0)/19><4% ymq cHw_B)0@D8%~wncPA81.09ABE>2uhmH8npQ4  7L[VH- wh[TJKMR\ch^L3z D Et mF2!%4F[ii_G+s`YRW]foxznZ9/r6b  \9' +?ZjpkYA(|gYLIJWiv}{lQ.l`fx N5Upz  lH/$/CRWYP?- jS@47>Qeqsk[C#u]NO`5y3K[bejnzlN<8=IW]_[TE4%sYJIO`p}q]E'eXWg3s2J[`is~3<6l^\eluz}ynaO>.# yh_`fp{uZ<m\^m&j,>Pbn '7;+me`aeimlj`L<+ }fVOPW`hqw|}kO+rVB>KcE|/HZeikko}&%qdbeiszsgWI<54//&wh^Z\dm{dBcIDOn Br"FXhkgegw"6B;+ylfcdcb[O<!wqquyX+dKKXs)Sz=MTNMMXl/63% ujb]]^`]UF.wh_cr{Z)~ZB?Ph%S !-.*,3DZ{(2.uhb^_a__\QA/oecagr}PrQ?>FUm8o +Ee %}tngedgge_WJ?'lc[`m}PhROLR`y_ tYR\r&0;BN^r#AXn~rlu~Y2ZiQKPe #-E]<ZyxpwtF k*wml~"4LoAh|wI k)yin| "@`z 3V{{tryjE&$s5yoy6J_s!HezuteB#(62E0ATk"F_ra?1@:$C)Cc $BZrveema75C={C>b%9Vo}~W)AYgW3d<9Z}0Idn@.OffT4Z7&Eg 'Jln: 0NXS@#a22Wr>lE !BVXXH9!zN%>^mJwF%9GRTOC) Q, /9DWs*Tw ! n1)8GPNC'd>~ "7KlFk2=:{F/HX^ZJ3yR+ .FjDl 2KP="X- 5H[b_RC({U72Qv3Yyqnv .?@8Z- *=LR\U@(}\B/ yv/WC[nyxcW\k0AE=!lB  ,AVejcM*kX> 1]9Um~lhm"CXZN6~V: !5MhvviQ- mP*&V5RtwdVV`|8GS>&`A  ?VjwlZF( vR0 'T .Qv}g^Zi*IZ]M7X4(C`uylXA*oK+ #Jg(XycQRa)ERWM?'T.,FYgoleZP@+qJ;^ 8`gP9-6Lk,45.d6  3DLORRLB3#pA{ru6\"Mm{gH/#!->]161Z8!"08CHMKI=0" xHx{{"I{$UtwaK4..9QjD\bU6jVIDBJR\hnpkcXOMJ?-d>#!J6c~xhUHDHNZk2[pqbDj_XX`itwyunieknmcL*w\H1&2nEabbYPD?723>Tv/Q^bV<m^W\bhmnic\`fryq]CbO6% \ /CLPNLA4%&Cj&FW\S=tiefikd[TRXfs}r\=w[H1wwY0DJOJ=. >e @Q[U?ype\SSZkwzcE'tZ=!ygSMVn2h'480 *P}7RXS;}k[PQ[fv|{bD#hH'oSCDPjR)43% %JyFW[I.tedbmytR:#Y4lSIFTkA}"))# Gy!BNNF4#uqvgN7)d;iUKJLVn=vG}0>?A3,#zs|q`RF1jG3' qXG@. jK0#!0Gc+k&R} (+$vv|^;waO@2)mO7,+/;Rw*n)T} 06>5iI' tg]SH-iQ@3,9Rx1m&Mp ,BPNA%eE rZ={[9'%=i)d6Wp(<A;$}z|tU0 yhP9qF  'SPy,Mv37+~a@v]G3uG"$T Fm@p''kJ3o[BU0 1aKoGzaH4zbFJR-O_einx4f wor|jS?% qX2J Q';LYl||0crY:X Z) >n6Ph{}lknOz~dE,^I# ?\|;TckjdXRMXm2Y|`B" ]F$"/D^w0HUXTND=>EZt&RuhE( {.}]LB@CMfC>8,"-Hi>`qE"%23)j-`8!1Nq!$  1Oq;k wO7/7HT\ZE&Y#]?-*0A[y#,) %;Wr<l   sXEHP^ij`L)j3c?/"&6Ox ,CWr'SiTST_dje\N7|;jC&.Ho "2F[yHx'#zhgginqsn[D"^#rE(*Kr $9Pi Au"*&~yyzr\=K\<03Ed +6D_|I} 080sY:k#jL@GYp &<^.Qt  |x~{neS7SY<53>RhzHv"Bc oU+enSGDQar"P{ 4c)0# Y"M rnu4U{9h xj]RI@>:9863-$0<$!7(+00!+00:!'<:!+!.757#&<$7(+00+000!-00<$!7(+00!+00:!'<:!+!.757#&4$0(+(0$00!$0!203'+.!.003002!.52!2!5.000/0!)!-!0-0)00+!$0!(!+0000!203'+.!.003002!.5!2!5:0000!;)!<-09<><*><:+<:!.7$$(0(>!<.0>!+0(<>.<>$<+?(>.<8$7+50)!02-50cuyo-2.1.0/data/sounds/slime2.wav0000644000175000017500000002341310516677306013566 00000000000000RIFF'WAVEfmt "V"Vdata&~~~~~}}||||{{{{|~~~~}~~~}|{zyyz{|{yy{}}{zzyy{{||}~~~}{z|~~~~~~}}||||}}}}|||}~~~}}|{{{zzyxwvvtsssqqqrrsttvyz{|~~~~~~}}~~~}||||}}~~~}}||||||}}}~~~~~~}}|{zzyyyyyyz{|~~}|{zyxxxxxyyz{|}~~~~}}}}}}~~~}|{{{{||}~~}}||{{||}~~}|{{{{|}~~}|{zzzz{|~~|{{z{{|~~~}|||}}zxwvwxz}}yvtssuwz~{xvuuwz}}zyyz|}{{|~~}}~~~~~}|{||~~}|{{{|}~~~~~~~~}}||{yxwvvtssssrsuvwy{}}{zyxwvvwxyz|}~~}}}~~~}|{{z{{||~~}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}|||||||{zyxvtroliea\XTSUZbjs{vnjgeb_[VQNLLOSY^adddegkr{yoe]VPMJHFEEDEHLQW^elrx~yrkc\UNJGEEEFHJMQV\dlu}yqkd^XRMIFEFGJNSX]cjqyxphaZTOKHFEDEGKPU\cjrz|tme_YUQNLLLNPTY^ekry|umf_YUQOMLMNPTY^elsz{tmf`[WSQOOOPSX]bhov}xqke_[WTRRSTW[`flszxpib\WSPNMNPSW]cipx{ske^YTQONOQUY_fmu~~umf_XSOLKLNQV\dlu~yqib\VSPOPSW]ckt}zqiaZTOLJJLOU\dnxyof]VOKHGGJOU]gq|zod[SMHEDFJOW_juwlaWOHDBBEJQZdp|wj^SJC?=?BHP[fsvgXMC;51028@L[k|~o`RE=:;?GQ]jxvdSE;5226=HVh{ȼs`N>2+'(.8FXkĵ|hUD8/+-4?ObwŲmVB1%#/?Tky`G2"!1F_z˴}`E. /GbȮqR8" &>[zǫjJ. 'AaѶvU8  'AaϴrQ4  ,GhƩgH.*CaçiL4"!2HcȳeM9,&(2BXpϿzbM=316AShʽ~gRB724=L_uɿubRGAAGSbtveVLFFKTbr{maYTTX`lyzmbZVVY_hs{rjecdgmu}yqkfccdgkpuy}~{yxwwxy|~{xtqnkihgghjlorux|}{yxwvutsrqppppppqrstvxz}}{xvusrrqqrrssuvwxz{}~~|zxwvuuuttttttuuuvwyz}~}{zxwvuutttttuvwxy{|~~|zxvutttttuvvwxy{|~~|zxwuttssstuvxz|~~|zxvutsrqqrsuwz~zvronmmnoqrsttttttuwy|~{xuspomlllmnoqsvx{}}zwtqomkjiijkmosw{~{wtqomlkjkklnpsw{~{wtqnlkkklmorux{~zvspnlkjjklnqtw{{vrolihhhilorvz~yuqnkigfffhjmqvz{vroljhgghjloruy}xojhgfedb_\[_hr{wnklorqmgegnw|xvsokhfhknprtw}|wpjfdcdeegint{}yvspnllmpswzzuojfdddfgjnrx~}wqmifedehlqw}{upligghkosyzuokgdccegkou|ysmifddfimszzrlgcbbdhmt|yphb^[[]`fnvwogb_^_choxvlc]XVW[air}{pg^XUUX^fo{zoe]XUVZakv}pe\VSTX`jwwj^UPOQXan{wj^UPORYdqsg\USU[dq}ocYTRU\fsuh]URSYbn|ymb[XY]ep}yogbabgnw}tmheegkqx~{skd^YUSSVZ`gp{}rmms~z_C,#7Oi|qllsƼ}vmcYQLJLRZcltz~~}|~xoifdegjlmmkgc_\[\ahs{qg`[XWY[]`acdefimsy{uqmjgd`\YWVX\bjr{|tle_ZWUVWZ^bglpu{{tnhb^ZXXY[_dipwvme_YVUUWY]agmu|xpic^ZXVVX\agow~voha\XVVX\agnv}{tnhc_\ZZ\_djqy|tle^ZWVWZ_fmu~~woic^[Z[^aflsz~voic`^^_cgmt{|tle`\Z[]`flt|{skea^]^afls{woic`^^`bfkqx|vpmkjjklorw}|xurpmjihkpxzwsolhffjow~{tnjfeddfkqx|xtrrrstwz~~yusqqrsuw{}yvrppprtwy}}zwuttuwz}|zxvvwy{~~{ywvuuuwy|}|zyyyy{|}|||||}~}|{{{||}~~~}}~~~~}}||}}~~~~}}|{{{|}}~~~~~~}}}}~cuyo-2.1.0/data/tennis.ld0000644000175000017500000001026511671742020012150 00000000000000# # Copyright 2002,2005,2006,2011 by Mark Weyer # Maintenance modifications 2006,2008,2010,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Tennis={ name="Tennis" author="Mark Weyer" description="Don't be confused by extra balls." numexplode[1]=6 numexplode[2]=5 numexplode[1,easy]=4 numexplode[2,easy]=4 speed=6 speed[easy]=4 toptime=200 pics=Yellow,Green,Grey,Blue greypic=mtWall.xpm startpic=Start startdist="**********","**********","**********" startdist[easy]="**********","**********" emptypic=Hinter bgcolor=0,153,255 chaingrass=0 topcolor=255,128,0 textcolor=0,0,0 neighbours= << var time_,shorttime,part,rack01,rack10,colour; global={ time_=time%18; shorttime=time_%9; part=time_/9; }; semiglobal.init={falling_speed=speed;}; Racket={ switch { ???1???? -> rack01=0; ?1?????? -> rack01=0; ?0?0???? -> rack01=1; }; switch { ???????1 -> rack10=2; ?????1?? -> rack10=2; ?????0?0 -> rack10=1; }; switch { time_@== .. 3 -> pos=rack10; time_@== 4 -> if rack10==rack01 -> pos=rack01 else B; time_@== 5..12 -> pos=rack01; time_@==13 -> if rack10==rack01 -> pos=rack01 else B; time_@==13.. -> pos=rack10; }; }; RandomColour={colour=1+rnd(4)}; Start.init={RandomColour;}; Start={B*; if shorttime@==0 && 1:3 -> RandomColour; pos=shorttime@; file=colour; *; }; RoofA={0;{A,B,C,D,E};*}; RoofB={1;{A,B,C,D,E,F,G};*}; RoofC={2;{A,B,C,D,E};*}; RoofD={3;{A,B,C,D,E,F,G};*}; Hinter= { switch { ??0?0?0? -> &RoofA; ??110?0? -> &RoofA; ??11011? -> &RoofA; ??0?011? -> &RoofA; ??100?0? -> &RoofB; ??10011? -> &RoofB; ??10001? -> &RoofC; ??0?001? -> &RoofD; ??11001? -> &RoofD; }; }; Blob={ Racket;*; 1A*; if part@==0 -> { switch { ?0?1?1?? || ?0???1?0 -> {5;pos=8-shorttime@;*}; ?1???0?1 || ?1?0?0?? -> {5;pos=shorttime@;*}; }; if ?????1?? -> { 2;pos=2*shorttime@; *@(-1,0); pos+=1; *; pos+=17; *@(-1,1); pos+=1; *@(0,1); }; if ?0???0?? -> {4;pos=shorttime@;*}; } else { switch { ???1?1?0 || ?0?1???0 -> {5;pos=8-shorttime@;*}; ?1?0???1 || ???0?0?1 -> {5;pos=shorttime@;*}; -> {1A*}; }; if ???1???? -> { 3;pos=2*shorttime@; *; pos+=1; *@(1,0); pos+=17; *@(0,1); pos+=1; *@(1,1); }; if ???0???0 -> {4;pos=shorttime@;*}; }; }; Yellow=Blob; Green=Blob; Grey=Blob; Blue=Blob; >> Yellow={pics= mtRacket.xpm, mtSource.xpm, mtYellowLeft.xpm, mtYellowRight.xpm, mtYellowBounce.xpm, mtYellowOut.xpm } Green={pics= mtRacket.xpm, mtSource.xpm, mtGreenLeft.xpm, mtGreenRight.xpm, mtGreenBounce.xpm, mtGreenOut.xpm } Grey={pics= mtRacket.xpm, mtSource.xpm, mtGreyLeft.xpm, mtGreyRight.xpm, mtGreyBounce.xpm, mtGreyOut.xpm } Blue={pics= mtRacket.xpm, mtSource.xpm, mtBlueLeft.xpm, mtBlueRight.xpm, mtBlueBounce.xpm, mtBlueOut.xpm } Start={pics= mtRacket.xpm, mtYellowBounce.xpm, mtGreyBounce.xpm, mtBlueBounce.xpm, mtGreenBounce.xpm } Hinter={pics= mtRoof1.xpm, mtRoof2.xpm, mtRoof3.xpm, mtRoof4.xpm } } cuyo-2.1.0/data/schemen.ld0000644000175000017500000001407212407360132012270 00000000000000# # Copyright 2010-2012,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Schemen = { name = "Silhouettes" author = "Mark Weyer" pics = Fuehler, Herz, Zellen, Drachen, Qualle greypic = Grau startpic = Gras startdist = "**********" numexplode[1] = 6 numexplode[2] = 4 bgpic = mscHinter.xpm bgpic[eco] = "mscNix.xpm" bgcolor = 48,55,50 bgcolor[eco] = 255,255,255 textcolor = 128,128,128 toppic = mscHetz.xpm topoverlap = 0 explosionpic=ithDreckExpl.xpm emptypic = Leer << var ausgleich; semiglobal.row_up = ausgleich+=1; semiglobal.row_down = ausgleich-=1; leer = { pos = (loc_y+ausgleich@@)%20*10+loc_x; *; }; sorte = { if !falling -> { leer; 1; switch { 0?0?0?0? -> A; 0?1?0?0? -> B; 0?1?0?1? -> C; 0?0?0?1? -> D; 0?0?1?0? -> E; 0?1?1?0? -> F; 0?1?1?1? -> G; 0?0?1?1? -> H; 1?0?1?0? -> I; 1?1?1?0? -> J; 1?1?1?1? -> K; 1?0?1?1? -> L; 1?0?0?0? -> M; 1?1?0?0? -> N; 1?1?0?1? -> O; 1?0?0?1? -> P; }; pos += 16 * ((time + 2*kind) % 10 + 1); *; }; if informational -> 3 else 2; }; >> Leer = { pics = mscLeer.xpm << Leer = leer; >> } Fuehler = { pics = mscLeer.xpm, mscVerbind.xpm, msc1A.xpm, msc1B.xpm, msc1C.xpm, msc1AInfo.xpm, msc1BInfo.xpm, msc1CInfo.xpm << EinFuehler = { { if 1:10 => {A,B,C,B,A} else => A, if 1:10 => {D,E,F,E,D} else => D, if 1:10 => {G,H,I,H,G} else => G, if 1:10 => {D,E,F,E,D} else => D }; *; }; Fuehler = { sorte; if informational -> 5 else 2; EinFuehler; if informational -> 6 else 3; EinFuehler; if informational -> 7 else 4; EinFuehler; }; Fuehler[eco]={ if !falling -> leer; 1;schema16; if informational -> 5 else 2; D*; if informational -> 6 else 3; D*; if informational -> 7 else 4; D*; }; >> } Herz = { pics = mscLeer.xpm, mscVerbind.xpm, msc2.xpm, msc2Info.xpm << Herz = { sorte; A,B,C,D,E,F,G,H,I; *; }; Herz[eco]={ if !falling -> leer; 1;schema16; if informational -> 3 else 2; A*; }; >> } Zellen = { pics = mscLeer.xpm, mscVerbind.xpm, msc3.xpm, msc3Info.xpm << Zellen = { sorte; {if 1:2 => {A,A} else => A}, {if 1:2 => {A,A,A} else => A}, {if 1:2 => {A,A,A,A,A} else => A}, B,C,D,D, {if 1:2 => {D,D} else => D}, {if 1:2 => {D,D,D} else => D}, E,F, {if 1:2 => {F,F} else => F}, G,H, {if 1:2 => {H,H} else => H}, {if 1:2 => {I,I} else => I}, {if 1:2 => {J,J} else => J}, K,L,M,N,O, A,A,A; *; }; Zellen[eco]={ if !falling -> leer; 1;schema16; if informational -> 3 else 2; I*; }; >> } Drachen = { pics = mscLeer.xpm, mscVerbind.xpm, msc4.xpm, msc4Info.xpm << Drachen = { sorte; {E,F,G,H, if 1:2 => {I,J,K,L,M,N,O,P,A,B,C,D} else => {Q,R,S,T,U}}; *; }; Drachen[eco]={ if !falling -> leer; 1;schema16; if informational -> 3 else 2; L*; }; >> } Qualle = { pics = mscLeer.xpm, mscVerbind.xpm, msc5.xpm, msc5Info.xpm << var duempel; Qualle = { sorte; if 1:30 => { Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m } else -> { pos = duempel%24; duempel += 1; }; *; }; Qualle[eco]={ if !falling -> leer; 1;schema16; if informational -> 3 else 2; m*; }; >> } Gras = { pics = mscLeer.xpm, mscGrasGrau.xpm, mscGrasGrauInfo.xpm << flacker = { {if 1:2 => {{},{}} else => {}}, {if 1:2 => {{},,{}} else => {}}, {if 1:2 => {{},,,,{}} else => {}}, {if 1:2 => {{},,,,,,,,{}} else => {}}, {if 1:2 => {{},,,,,,,,,,,,,,,,{}} else => {}}, {if 1:2 => {{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{}} else => {}}, {if 1:2 => {{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{}} else => {}}, *,*,{},{},*,*,{},{}, *,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*, {if 1:2 => {*,*,*,*,*,*} else => *}, {},{},*,*,{},{},*,*, {},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{} }; Gras = { if informational -> 2Q* else {leer; 1S*}; if kind@(0,-1)!=Gras -> {Q; *@(0,-1);}; if kind@(1,0)!=Gras -> {T; *@(1,0);}; A; flacker; B; flacker; C; flacker; D; flacker; E; flacker; F; flacker; G; flacker; H; flacker; I; flacker; J; flacker; K; flacker; L; flacker; M; flacker; N; flacker; O; flacker; }; Gras[eco] = if informational -> 2Q* else {leer; 1S*}; >> } Grau = { pics = mscLeer.xpm, mscGrasGrau.xpm, mscGrasGrauInfo.xpm << Grau = if informational -> 2R* else { leer; 1R* }; >> } } cuyo-2.1.0/data/wohnungen.ld0000644000175000017500000000345611672457344012701 00000000000000# # Copyright <=2004 by Bernhard R. Link # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # lwBroken.xpm[.gz], lwDach.xpm[.gz], lwGray.xpm[.gz], lwGreen.xpm[.gz], # lwRed.xpm[.gz], lwRolladen.xpm[.gz] # Wohnungen={ description="Build a nicer neighborhood" name="Housing" author="brl" #numexplode=9 numexplode=5 chaingrass=1 pics=lwRed.xpm,lwGreen.xpm,lwRolladen.xpm greypic="lwGray.xpm" startpic=lwBroken.xpm startdist="AAAAAAAAAA","AAAAAAAAAA" # Zum lwDach testen: #startdist="....AA....","AAAAA..AAA","A...A.A...","..A..A..AA", # "A.A.A.A.A.","AAAAAAAAAA" toptime=100 bgcolor=56,120,120 topcolor=0,0,0 textcolor=50,50,50 randomgreys[1]=50 emptypic=lwDach lwDach={ connecttoborder=lt pics=lwDach.xpm << lwDach={ switch { 11111111 -> ; 1???0?10 -> S*; ????1010 -> U*; ????1011 -> R*; 1???011? -> Q*; 001?0??1 -> B*; 01??0?10 -> D*; ????110? -> T*; -> schema16; }; }; >> } } cuyo-2.1.0/data/baelle.ld0000644000175000017500000000516012402113362012064 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ibBaelle2.xpm[.gz], ibBaelle.xpm[.gz], ibGrauball.xpm[.gz], # ibKegelGelb.xpm[.gz], ibKegelPink.xpm[.gz] # # referenced from labskaus.ld Baelle={ name="Rotating Balls" author="Immi" numexplode=4 chaingrass=0 pics=Baelle1,Baelle3,Baelle5,Baelle6,ibBaelle.xpm bgcolor=255,255,255 topcolor=200,200,200 toptime=50 startpic=ibKegel #Die folgende Zeile ist fr Geschwindigkeit-Hrte-Tests... #startdist="++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","ABABBAABAB","ABABBAABAB" startdist="ABABBAABAB","ABABBAABAB","-A%&&%B-" startdist[1]= "A........B","AB......AB","ABAB..ABAB","ABABBAABAB","ABABBAABAB","-A%&" greypic=ibGrauball.xpm description="Well, all balls look the same, don't they?" << var drehpos; global={ drehpos = (drehpos + 1) % 12; }; >> ibKegel={ pics=ibKegelPink.xpm,ibKegelGelb.xpm << ibKegel={ switch { 0???1??? -> A; 1???1??? -> B; 1???0??? -> C; 0???0??? -> D; }; file=version; *; }; >> } Baelle1={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle1={schema16;pos=drehpos@;1*}; >> } Baelle2={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle2={schema16;pos=11;pos-=drehpos@;1*}; >> } Baelle3={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle3={schema16;pos=12;pos+=drehpos@;1*}; >> } Baelle4={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle4={schema16;pos=23;pos-=drehpos@;1*}; >> } Baelle5={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle5={schema16;pos=24;pos+=drehpos@;1*}; >> } Baelle6={ pics=ibBaelle.xpm,ibBaelle2.xpm << Baelle6={schema16;pos=35;pos-=drehpos@;1*}; >> } } cuyo-2.1.0/data/dungeon.ld0000644000175000017500000006120112405235606012306 00000000000000# # Copyright 2006,2008,2010,2011,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Dungeon = { farben = 5 # Zhlt nur die normalen Farben rand = gold = ego = # Es werden vier Werte gebraucht leer = dateien = 12 # Genauer: Dateien pro Farbe linksoben = 1 rechtsoben = 2 linksunten = 4 rechtsunten = 8 sgrad[easy] = -1 sgrad = 0 sgrad[hard] = 1 name = "Treasure hunt" author = "Mark Weyer" description = "Collect gold for extra points" pics = Wand * greypic = Gold emptypic = Leer startpic = Bildschirm startdist = "...****...","...****...","...****...","...****..." numexplode = 5 neighbours = randomgreys[1] = 300 randomfallpos = 1 bgcolor = 169,222,161 # Durchschnittsfarbe in mdBoden.xpm topcolor = 255,255,255 toppic = mdFog.xpm << var farbe=rand; var besetzt=15; # Bitfeld mit Mauerinformation var xp,yp,xv,yv,xr,yr; # p: Position. # v und r: Vektor nach vorne und nach rechts lies_feld = { # Rein: xp und yp # Raus: farbe if xp<20 || players<2 -> if besetzt@@(xp/2,yp/2;<).((1+(xp%2))*(1+3*(yp%2))) -> farbe = farbe@@(xp/2,yp/2;<) else -> farbe = leer else if besetzt@@(xp/2-10,yp/2;>).((1+(xp%2))*(1+3*(yp%2))) -> farbe = farbe@@(xp/2-10,yp/2;>) else -> farbe = leer; if farbe==leer && players>1 # Oder vielleicht doch ein Ego? -> switch { xp==xp@@(;<) && yp==yp@@(;<) -> switch { xv@@(;>)==-xv@@(;<) && yv@@(;>)==-yv@@(;<) -> farbe = ego; # entgegengesetze Richtung: Wir sehen ihn von vorne xv@@(;>)==xv@@(;<) && yv@@(;>)==yv@@(;<) -> farbe = ego+1; # gleiche Richtung: Wir sehen ihn von hinten xv@@(;>)==xr@@(;<) && yv@@(;>)==yr@@(;<) -> farbe = ego+2; # unser vorne ist sein rechts: Wir sehen ihn von links -> farbe = ego+3; }; xp==xp@@(;>) && yp==yp@@(;>) -> switch { xv@@(;<)==-xv@@(;>) && yv@@(;<)==-yv@@(;>) -> farbe = ego; # entgegengesetze Richtung: Wir sehen ihn von vorne xv@@(;<)==xv@@(;>) && yv@@(;<)==yv@@(;>) -> farbe = ego+1; # gleiche Richtung: Wir sehen ihn von hinten xv@@(;<)==xr@@(;>) && yv@@(;<)==yr@@(;>) -> farbe = ego+2; # unser vorne ist sein rechts: Wir sehen ihn von links -> farbe = ego+3; }; }; }; besetzt_gold_test = { # Rein: xp und yp # Raus: farbe (nach eventuellem Nehmen von Gold) # Nimmt Gold, wenn's welches gibt lies_feld; if farbe==gold -> { # Wir knnen doch hin und wir rumen das Gold ab farbe = leer; if xp<20 -> besetzt@@(xp/2,yp/2;<) = 0 else besetzt@@(xp/2-10,yp/2;>) = 0; bonus(20); }; }; Leer_T = { # Draws the ground, the above border, and egos in the top row. # pics = Boden, Plastik, EgoV, EgoH, EgoL, EgoR, ... if loc_y==0 -> {0A*; 1E*}; 0A; @(0,1)*; if sgrad<0 -> { if (loc_x+10*(loc_p-1) == xp@@(;<)/2) && (2*loc_y == yp@@(;<)) -> { switch { yv@@(;<)==1 -> 2; yv@@(;<)==-1 -> 3; xv@@(;<)==-1 -> 4; xv@@(;<)==1 -> 5; }; pos = xp@@(;<)%2; *; pos += 2; @(0,1)*; }; if (players==2) && (loc_x+10*(loc_p-1) == xp@@(;>)/2) && (2*loc_y == yp@@(;>)) -> { switch { yv@@(;>)==1 -> 2; yv@@(;>)==-1 -> 3; xv@@(;>)==-1 -> 4; xv@@(;>)==1 -> 5; }; pos = xp@@(;>)%2; *; pos += 2; @(0,1)*; }; }; }; Leer_B = { # Draw egos in the bottom row. # pics = Boden, Plastik, EgoV, EgoH, EgoL, EgoR, ... if sgrad<0 -> { if (loc_x+10*(loc_p-1) == xp@@(;<)/2) && (2*loc_y+1 == yp@@(;<)) -> { switch { yv@@(;<)==1 -> 2; yv@@(;<)==-1 -> 3; xv@@(;<)==-1 -> 4; xv@@(;<)==1 -> 5; }; pos = 4+xp@@(;<)%2; *; pos += 2; @(0,1)*; }; if (players==2) && (loc_x+10*(loc_p-1) == xp@@(;>)/2) && (2*loc_y+1 == yp@@(;>)) -> { switch { yv@@(;>)==1 -> 2; yv@@(;>)==-1 -> 3; xv@@(;>)==-1 -> 4; xv@@(;>)==1 -> 5; }; pos = 4+xp@@(;>)%2; *; pos += 2; @(0,1)*; }; }; }; >> semiglobal = { << sinus = { # Rein: xp # Raus: yp=sin(xp*pi/2) yp = (1-((xp/2)%2)*2)*(xp%2); }; semiglobal.init = { falling_speed=3; if sgrad>0 -> { # Position und Ausrichtung zufllig xp = rnd(4); sinus; xr=yp; xp+=1; sinus; xv=yp; yr=yp; xp+=1; sinus; yv=yp; xp = rnd(20*players); yp = rnd(32); # nicht ins Gras, also lieber nicht zu tief } else -> { xp=29*loc_p-24; yp=39; xv=0; yv=-1; xr=1; yr=0; }; }; semiglobal.keyleft = {xv@@=-xr; yv@@=-yr; xr@@=xv; yr@@=yv;}; semiglobal.keyright = {xv@@=xr; yv@@=yr; xr@@=-xv; yr@@=-yv;}; semiglobal.keyturn = { xp+=xv; yp+=yv; besetzt_gold_test; if farbe!=leer -> {xp-=xv; yp-=yv;}; }; semiglobal.keyfall = { xp-=xv; yp-=yv; besetzt_gold_test; if farbe!=leer -> {xp+=xv; yp+=yv;}; }; >> } Wand = { pics = mdBoden.xpm, mdPlastik.xpm, mdEgoV.xpm, mdEgoH.xpm, mdEgoL.xpm, mdEgoR.xpm, mdZiegel.xpm, mdStein.xpm, mdHolz.xpm, mdFels.xpm, mdEisen.xpm versions = 3 << Wand.init = { farbe = kind-Wand; switch { version==0 -> { besetzt = linksoben+linksunten; inhibit = DIR_R+DIR_UR+DIR_DR; }; version==1 -> { besetzt = linksoben+rechtsoben; inhibit = DIR_D+DIR_DR+DIR_DL; }; version==2 -> { besetzt = rechtsoben+rechtsunten; inhibit = DIR_L+DIR_UL+DIR_DL; }; }; }; Wand = { if !falling -> Leer_T; file = kind-Wand+6; pos = version; if falling -> {pos+=6; *} else { *; pos+=3; @(0,1)*; }; if !falling -> Leer_B; }; >> } Gold = { pics = mdBoden.xpm, mdPlastik.xpm, mdEgoV.xpm, mdEgoH.xpm, mdEgoL.xpm, mdEgoR.xpm, mdGold.xpm versions = 4 << Gold.init = { farbe = gold; switch { version==0 -> {besetzt = linksoben;}; version==1 -> {besetzt = rechtsoben;}; version==2 -> {besetzt = linksunten;}; version==3 -> {besetzt = rechtsunten;}; }; }; Gold = { if informational -> 6I* else { Leer_T; 6; switch { besetzt!=0 -> { pos=version; if pos>1 -> pos+=2; *; pos+=2; @(0,1)*; }; (loc_x+10*(loc_p-1) != xp@@(;<)/2 || loc_y!=yp@@(;<)/2) && (players<2 || loc_x+10*(loc_p-1) != xp@@(;>)/2 || loc_y!=yp@@(;>)/2) -> kind=Leer; }; Leer_B; }; }; >> } Leer = { pics = mdBoden.xpm,mdPlastik.xpm, mdEgoV.xpm, mdEgoH.xpm, mdEgoL.xpm, mdEgoR.xpm << default besetzt=0:reapply; Leer = { Leer_T; Leer_B; }; >> } Bildschirm = { pics[eco] = mdPlastik.xpm, mdSchwarz.xpm pics = mdPlastik.xpm, mdZiegel00.xpm, mdZiegel01.xpm, mdZiegel02.xpm, mdZiegel03.xpm, mdZiegel04.xpm, mdZiegel05.xpm, mdZiegel06.xpm, mdZiegel07.xpm, mdZiegel08.xpm, mdZiegel09.xpm, mdZiegel10.xpm, mdZiegel11.xpm, mdStein00.xpm, mdStein01.xpm, mdStein02.xpm, mdStein03.xpm, mdStein04.xpm, mdStein05.xpm, mdStein06.xpm, mdStein07.xpm, mdStein08.xpm, mdStein09.xpm, mdStein10.xpm, mdStein11.xpm, mdHolz00.xpm, mdHolz01.xpm, mdHolz02.xpm, mdHolz03.xpm, mdHolz04.xpm, mdHolz05.xpm, mdHolz06.xpm, mdHolz07.xpm, mdHolz08.xpm, mdHolz09.xpm, mdHolz10.xpm, mdHolz11.xpm, mdFels00.xpm, mdFels01.xpm, mdFels02.xpm, mdFels03.xpm, mdFels04.xpm, mdFels05.xpm, mdFels06.xpm, mdFels07.xpm, mdFels08.xpm, mdFels09.xpm, mdFels10.xpm, mdFels11.xpm, mdEisen00.xpm, mdEisen01.xpm, mdEisen02.xpm, mdEisen03.xpm, mdEisen04.xpm, mdEisen05.xpm, mdEisen06.xpm, mdEisen07.xpm, mdEisen08.xpm, mdEisen09.xpm, mdEisen10.xpm, mdEisen11.xpm, mdPlastik00.xpm, mdPlastik01.xpm, mdPlastik02.xpm, mdPlastik03.xpm, mdPlastik04.xpm, mdPlastik05.xpm, mdPlastik06.xpm, mdPlastik07.xpm, mdPlastik08.xpm, mdPlastik09.xpm, mdPlastik10.xpm, mdPlastik11.xpm, mdGold00.xpm, mdGold01.xpm, mdGold02.xpm, mdGold03.xpm, mdGold04.xpm, mdGold05.xpm, mdGold06.xpm, mdGold07.xpm, mdGold08.xpm, mdGold09.xpm, mdGold10.xpm, mdGold11.xpm, mdEgoV00.xpm, mdEgoV01.xpm, mdEgoV02.xpm, mdEgoV03.xpm, mdEgoV04.xpm, mdEgoV05.xpm, mdEgoV06.xpm, mdEgoV07.xpm, mdEgoV08.xpm, mdEgoV09.xpm, mdEgoV10.xpm, mdEgoV11.xpm, mdEgoH00.xpm, mdEgoH01.xpm, mdEgoH02.xpm, mdEgoH03.xpm, mdEgoH04.xpm, mdEgoH05.xpm, mdEgoH06.xpm, mdEgoH07.xpm, mdEgoH08.xpm, mdEgoH09.xpm, mdEgoH10.xpm, mdEgoH11.xpm, mdEgoL00.xpm, mdEgoL01.xpm, mdEgoL02.xpm, mdEgoL03.xpm, mdEgoL04.xpm, mdEgoL05.xpm, mdEgoL06.xpm, mdEgoL07.xpm, mdEgoL08.xpm, mdEgoL09.xpm, mdEgoL10.xpm, mdEgoL11.xpm, mdEgoR00.xpm, mdEgoR01.xpm, mdEgoR02.xpm, mdEgoR03.xpm, mdEgoR04.xpm, mdEgoR05.xpm, mdEgoR06.xpm, mdEgoR07.xpm, mdEgoR08.xpm, mdEgoR09.xpm, mdEgoR10.xpm, mdEgoR11.xpm, mdBoden00.xpm, mdBoden01.xpm, mdBoden02.xpm, mdBoden03.xpm, mdBoden04.xpm, mdBoden05.xpm, mdBoden06.xpm, mdBoden07.xpm, mdBoden08.xpm, mdBoden09.xpm, mdBoden10.xpm, mdBoden11.xpm, mdBoden12.xpm, mdBoden13.xpm, mdBoden14.xpm, mdBoden15.xpm, mdHimmel0.xpm, mdHimmel1.xpm, mdHimmel2.xpm, mdHimmel3.xpm << var xx,yy; Rahmen = { file=0; if kind@(0,1)!=kind -> {E;@(0,1)*}; if kind@(0,-1)!=kind -> {F;*@(0,-1)}; qu=Q_TL; if kind@(-1,0)==kind -> if kind@(0,-1)==kind -> {if kind@(-1,-1)!=kind -> D*;} else B* else if kind@(0,-1)==kind -> C* else A*; qu=Q_TR; if kind@(1,0)==kind -> if kind@(0,-1)==kind -> {if kind@(1,-1)!=kind -> C*;} else A* else if kind@(0,-1)==kind -> D* else B*; qu=Q_BL; if kind@(-1,0)==kind -> if kind@(0,1)==kind -> {if kind@(-1,1)!=kind -> B*;} else D* else if kind@(0,1)==kind -> A* else C*; qu=Q_BR; if kind@(1,0)==kind -> if kind@(0,1)==kind -> {if kind@(1,1)!=kind -> A*;} else C* else if kind@(0,1)==kind -> B* else D*; }; Bildschirm[eco] = {1A*; Rahmen;}; Bildschirm = if informational -> { # Himmel file = (farben+6)*dateien + 18 + xv@@ + yv@@ + (xv@@!=0); qu=Q_BR_TL; F*; qu=Q_BL_TR; G*; # Boden file = 5+(farben+6)*dateien + xp@@%2 - 2*(1-yp@@%2) + 2*(xv@@-xr@@) + 8*(xv@@!=0); qu=Q_TR_BL; B*; qu=Q_TL_BR; C*; # Reihe 5 xp=xp@@+xv@@*5-xr@@; yp=yp@@+yv@@*5-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+11; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; }; xp+=2*xr@@; yp+=2*yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+12; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; # Reihe 4 xp=xp@@+xv@@*4-xr@@; yp=yp@@+yv@@*4-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; }; xp+=2*xr@@; yp+=2*yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; # Reihe 3 xp=xp@@+xv@@*3-xr@@; yp=yp@@+yv@@*3-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+7; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; }; xp+=2*xr@@; yp+=2*yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+6; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+5; qu=Q_BR_TL; B*; qu=Q_TR_BL; F*; qu=Q_BL_TR; C*; qu=Q_TL_BR; G*; }; # Reihe 2 xp=xp@@+xv@@*2-xr@@; yp=yp@@+yv@@*2-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; qu=Q_BR_TL; F*; qu=Q_TR_BL; J*; }; xp+=2*xr@@; yp+=2*yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; qu=Q_BL_TR; G*; qu=Q_TL_BR; K*; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+3; qu=Q_BR_TL; F*; qu=Q_TR_BL; J*; qu=Q_BL_TR; G*; qu=Q_TL_BR; K*; }; # Reihe 1 xp=xp@@+xv@@; yp=yp@@+yv@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+1; qu=Q_BR_TL; F*; qu=Q_TR_BL; J*; qu=Q_BL_TR; G*; qu=Q_TL_BR; K*; }; # Rahmen 0; qu=Q_TL; A*; qu=Q_TR; B*; qu=Q_BL; C*; qu=Q_BR; D*; } else -> { xx = (loc_x-3)%4; yy = loc_y%4; if yy<2 -> { # Himmel pos = xx+4*yy; file = (farben+6)*dateien + 18 + xv@@ + yv@@ + (xv@@!=0); *; }; if yy>=2 -> { # Boden pos = xx+4*yy-8; file = 5+(farben+6)*dateien + xp@@%2 - 2*(1-yp@@%2) + 2*(xv@@-xr@@) + 8*(xv@@!=0); *; }; if yy>=1 -> { pos=xx+4*yy-4; if yy<3 -> switch { # Reihe 5 xx==0 -> { xp=xp@@+xv@@*5-xr@@*5; yp=yp@@+yv@@*5-yr@@*5; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TL] *; [qu=Q_BL] *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+11; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+12; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TR] *; [qu=Q_BR] *; }; }; xx==1 -> { xp=xp@@+xv@@*5-xr@@*2; yp=yp@@+yv@@*5-yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TL] *; [qu=Q_BL] *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+11; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TR] *; [qu=Q_BR] *; }; }; xx==2 -> { xp=xp@@+xv@@*5+xr@@*2; yp=yp@@+yv@@*5+yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TR] *; [qu=Q_BR] *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+12; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TL] *; [qu=Q_BL] *; }; }; xx==3 -> { xp=xp@@+xv@@*5+xr@@*5; yp=yp@@+yv@@*5+yr@@*5; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TR] *; [qu=Q_BR] *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+12; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+11; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+10; [qu=Q_TL] *; [qu=Q_BL] *; }; }; }; switch { # Reihen 4 und 3 xx==0 -> { xp=xp@@+xv@@*4-xr@@*4; yp=yp@@+yv@@*4-yr@@*4; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TL] *; [qu=Q_BL] *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TR] *; [qu=Q_BR] *; }; xp=xp@@+xv@@*3-xr@@*3; yp=yp@@+yv@@*3-yr@@*3; lies_feld; if farbe!=leer -> { file=farbe*dateien+5; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+6; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+7; *; }; }; xx==1 -> { xp=xp@@+xv@@*4-xr@@*2; yp=yp@@+yv@@*4-yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TL] *; [qu=Q_BL] *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TR] *; [qu=Q_BR] *; }; xp=xp@@+xv@@*3-xr@@*2; yp=yp@@+yv@@*3-yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+6; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+7; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+5; *; }; }; xx==2 -> { xp=xp@@+xv@@*4+xr@@*2; yp=yp@@+yv@@*4+yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TR] *; [qu=Q_BR] *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TL] *; [qu=Q_BL] *; }; xp=xp@@+xv@@*3+xr@@*2; yp=yp@@+yv@@*3+yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+7; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+6; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+5; *; }; }; xx==3 -> { xp=xp@@+xv@@*4+xr@@*4; yp=yp@@+yv@@*4+yr@@*4; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TR] *; [qu=Q_BR] *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+9; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+8; [qu=Q_TL] *; [qu=Q_BL] *; }; xp=xp@@+xv@@*3+xr@@*3; yp=yp@@+yv@@*3+yr@@*3; lies_feld; if farbe!=leer -> { file=farbe*dateien+5; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+7; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+6; *; }; }; }; }; pos=xx+4*yy; switch { # Reihen 2 und 1 xx==0 -> { xp=xp@@+xv@@*2-xr@@*2; yp=yp@@+yv@@*2-yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+3; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; *; }; xp=xp@@+xv@@-xr@@; yp=yp@@+yv@@-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+2; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+1; *; }; }; xx==1 -> { xp=xp@@+xv@@*2-xr@@; yp=yp@@+yv@@*2-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+3; *; }; xp=xp@@+xv@@-xr@@; yp=yp@@+yv@@-yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+2; *; }; xp+=xr@@; yp+=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+1; *; }; }; xx==2 -> { xp=xp@@+xv@@*2+xr@@; yp=yp@@+yv@@*2+yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+3; *; }; xp=xp@@+xv@@+xr@@; yp=yp@@+yv@@+yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+2; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+1; *; }; }; xx==3 -> { xp=xp@@+xv@@*2+xr@@*2; yp=yp@@+yv@@*2+yr@@*2; lies_feld; if farbe!=leer -> { file=farbe*dateien+3; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+4; *; }; xp=xp@@+xv@@+xr@@; yp=yp@@+yv@@+yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+2; *; }; xp-=xr@@; yp-=yr@@; lies_feld; if farbe!=leer -> { file=farbe*dateien+1; *; }; }; }; farbe = rand; Rahmen; }; >> } } cuyo-2.1.0/data/jump.ld0000644000175000017500000001601012417277707011633 00000000000000# # Copyright 2008 by Mark Weyer # Modified 2010,2011 by Mark Weyer # Maintenance modifications 2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Jump = { # TRANSLATORS: "Jump" is as in the computer game genre jump-and-run, only # without the run name = "Jump" author = "Mark Weyer" # TRANSLATORS: "8 bit" refers to an era of computer games description[geek] = "8 bit nostalgia" farben = 5 pics = Avatar, Gift * startpic = Naegel emptypic = Luft startdist = ".*...*..**",".*****..**",".******.**","**********" numexplode[easy] = 3 numexplode = 4 numexplode[hard] = 5 bgcolor = 0,0,0 nogreyprob = 1 quelle_dauer = 125 << var gesch, tot, y_soll, y_ist, steht; var pf1_x, pf1_y, pf1_d, pf1_v, pf1_l, pf1_z; var pf2_x, pf2_y, pf2_d, pf2_v, pf2_l, pf2_z; var qu_x, qu_y, qu_f1, qu_f2, qu_zeit; var farbe = farben : reapply; quelle_neu = { qu_x = -1; }; tropf = { if farbe@@0 != farben -> { farbe@@(loc_x@@0, loc_y@@0) = farbe@@0; farbe@@(loc_x@@1, loc_y@@1) = farbe@@1; }; }; semiglobal.init = { bonus(100); pf1_y = -10; pf2_y = -10; quelle_neu; }; semiglobal = { if loc_yy@@0 > loc_yy@@1 -> y_ist = loc_yy@@0 else -> y_ist = loc_yy@@1; # Quelle if qu_x==-1 -> { # Keine Quelle vorhanden, also neue suchen qu_x = 1+rnd(8); qu_y = 3+rnd(7); if (kind@@(qu_x,qu_y) == Luft) && (qu_y >= time/32/50) -> { qu_f1 = rnd(farben); qu_f2 = rnd(farben); qu_zeit = quelle_dauer + 10; } else -> qu_x=-1; } else -> # Es gibt eine Quelle if qu_zeit==0 -> quelle_neu else qu_zeit-=1; # Bewegung Plattform 1 if pf1_d==0 -> { pf1_y = rnd(6)+5; pf1_l = 3+rnd(3); pf1_v = 5+rnd(10); pf1_z = pf1_v; if 1:2 -> {pf1_d = 1; pf1_x = -pf1_l;} else -> {pf1_d = -1; pf1_x = 10;}; } else -> { pf1_z -=1; if pf1_z==0 -> { pf1_x+=pf1_d; pf1_z=pf1_v; if ((pf1_d==1) && (pf1_x==10)) || ((pf1_d==-1) && (pf1_x==-pf1_l)) -> pf1_d=0; }; }; # Bewegung Plattform 2 if pf2_d==0 -> { pf2_y = rnd(6)+5; pf2_l = 3+rnd(3); pf2_v = 5+rnd(10); pf2_z = pf2_v; if 1:2 -> {pf2_d = 1; pf2_x = -pf2_l;} else -> {pf2_d = -1; pf2_x = 10;}; } else -> { pf2_z -=1; if pf2_z==0 -> { pf2_x+=pf2_d; pf2_z=pf2_v; if ((pf2_d==1) && (pf2_x==10)) || ((pf2_d==-1) && (pf2_x==-pf2_l)) -> pf2_d=0; }; }; # Interaktion Plattformen-Spieler steht = 0; if ((pf1_x<=loc_x@@0) && (pf1_x+pf1_l>loc_x@@0) || (pf1_x<=loc_x@@1) && (pf1_x+pf1_l>loc_x@@1)) && (y_soll >= pf1_y*32) && (y_soll <= pf1_y*32+gesch) -> {y_soll = pf1_y*32; steht+=1;}; if ((pf2_x<=loc_x@@0) && (pf2_x+pf2_l>loc_x@@0) || (pf2_x<=loc_x@@1) && (pf2_x+pf2_l>loc_x@@1)) && (y_soll >= pf2_y*32) && (y_soll <= pf2_y*32+gesch) -> {y_soll = pf2_y*32; steht+=2;}; if (steht==3) && (pf2_y>pf1_y) -> y_soll = pf1_y*32; if steht>0 -> {gesch=0; steht=1;}; #Interaktion Quelle-Spieler if (qu_zeit<=quelle_dauer) && (((loc_x@@0==qu_x) && (loc_y@@0==qu_y)) || ((loc_x@@1==qu_x) && (loc_y@@1==qu_y))) -> { if farbe@@0 != farben -> tropf; farbe@@0 = qu_f1; farbe@@1 = qu_f2; quelle_neu; }; # Bewegung Spieler if !steht -> { y_soll = y_soll + gesch; gesch += 3; if gesch>64 -> gesch=64; }; falling_speed = y_soll-y_ist; falling_fast_speed = y_soll-y_ist; if tot -> falling_fast_speed = 32; }; semiglobal.keyturn = { if steht -> gesch=-30; }; semiglobal.keyfall = { tropf; if steht && (((loc_x@@0==qu_x) && (loc_y@@0==qu_y-1)) || ((loc_x@@1==qu_x) && (loc_y@@1==qu_y-1))) -> { farbe@@0 = qu_f1; farbe@@1 = qu_f2; quelle_neu; } else -> { farbe@@0 = farben; farbe@@1 = farben; }; }; sprites = { if (loc_x==qu_x@@) && (loc_y==qu_y@@) && ((qu_zeit@@ % 2) || (qu_zeit@@ == 25..quelle_dauer)) -> { M; file = qu_f1@@; qu=Q_TL; *; qu=Q_BR; *; file = qu_f2@@; qu=Q_TR; *; qu=Q_BL; *; qu=Q_ALL; }; file = farben; if loc_y==pf1_y@@+1 -> switch { loc_x==pf1_x@@ -> A*; loc_x==pf1_x@@+pf1_l@@-1 -> C*; loc_x-pf1_x@@ == 1..pf1_l@@-2 -> B*; }; if loc_y==pf2_y@@+1 -> switch { loc_x==pf2_x@@ -> A*; loc_x==pf2_x@@+pf2_l@@-1 -> C*; loc_x-pf2_x@@ == 1..pf2_l@@-2 -> B*; }; }; var avricht; Avatar.init = { weight = 0; # (Zur Sicherheit) if loc_x==4 -> avricht=0 else -> avricht=2; y_soll@@ = loc_yy; falling_speed@@ = 0; falling_fast_speed@@ = 0; gesch@@ = 0; tot@@=0; }; Avatar = { file = farbe; pos=3*avricht+turn; *; }; Avatar.turn = { avricht = (avricht+1)%4; }; Avatar.land = {bonus(-5); explode; tot@@=1}; Gift = { weight = 1; file = kind-Gift; O*; sprites; }; Naegel = { file = farben+1; if kind@(0,-1)==kind -> {C*; B; *@(0,-1)} else -> A*; sprites; }; Luft = { if farbe != farben -> { file = farbe; N*; if kind@(0,1) == Luft -> { if farbe@(0,1) == farben -> { farbe@(0,1) = farbe; farbe = farben; }; } else -> { kind = Gift+farbe; }; }; sprites; }; >> Avatar = { pics = mjZeug1.xpm, mjZeug2.xpm, mjZeug3.xpm, mjZeug4.xpm, mjZeug5.xpm, mjZeug6.xpm } Gift = { pics = mjZeug1.xpm, mjZeug2.xpm, mjZeug3.xpm, mjZeug4.xpm, mjZeug5.xpm, mjPlattform.xpm colourprob = 0 } Naegel = { pics = mjZeug1.xpm, mjZeug2.xpm, mjZeug3.xpm, mjZeug4.xpm, mjZeug5.xpm, mjPlattform.xpm, mjNaegel.xpm } Luft = { pics = mjZeug1.xpm, mjZeug2.xpm, mjZeug3.xpm, mjZeug4.xpm, mjZeug5.xpm, mjPlattform.xpm } } cuyo-2.1.0/data/Makefile.in0000644000175000017500000003763312422656610012410 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright 2001 by the cuyo developers # Modified 2002,2003,2006-2008,2014 by the cuyo developers # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Nicht angeben, weil da kein Makefile.am drin ist. (Wird nicht bentigt, da # die Bilder von hier aus installiert werden.) # SUBDIRS = pics VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in # Alle .ld-Dateien, die in main.ld erwhnt werden (main.ld erwhnt sich # selbst). Aus irgendeinem Grund wird das mehrfach ausgefhrt. Wenn es # nur um make und nicht um automake ginge, knnte man hier ?= statt := # verwenden und wahrscheinlich wre alles gut. Das kann mal jemand # beheben, der mehr von automake versteht. leveldateien := $(shell ./used_levels.sh) lddateien := $(leveldateien) summary.ld globals.ld example.ld # levels gehren zur Distribution. Und die used-Skripte auch. EXTRA_DIST = $(lddateien) used_images.sh used_sounds.sh used_levels.sh genSummary.pl summary.in # levels in das pkgdata-Verzeichnis installieren pkgdata_DATA = $(lddateien) @HASLIBZ_FALSE@unzip = gunzip $(DESTDIR)$(pkgdatadir)/pics/*.gz # Wenn keine Libz existiert, sollen die Bilder beim installieren entpackt # werden: @HASLIBZ_TRUE@unzip = all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic dist-hook \ distclean distclean-generic distdir dvi dvi-am html html-am \ info info-am install install-am install-data install-data-am \ install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgdataDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-pkgdataDATA # Beim installieren (von prozessorunabhngem) auerdem die Bilder und sounds kopieren: install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pics $(INSTALL_DATA) $(srcdir)/pics/*.png $(DESTDIR)$(pkgdatadir)/pics/ || true $(INSTALL_DATA) $(srcdir)/pics/*.xpm $(DESTDIR)$(pkgdatadir)/pics/ || true $(INSTALL_DATA) $(srcdir)/pics/*.xpm.gz $(DESTDIR)$(pkgdatadir)/pics/ || true $(unzip) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/sounds $(INSTALL_DATA) $(srcdir)/sounds/*.wav $(DESTDIR)$(pkgdatadir)/sounds/ || true $(INSTALL_DATA) $(srcdir)/sounds/*.it $(DESTDIR)$(pkgdatadir)/sounds/ || true # Ach, was soll's: Ich geh davon aus, dass jemand, der Cuyo installiert, # eh nur Bilder hat, die installiert werden sollen. Also braucht nicht # extra nochmal das langsame Bild-Test-Skript gestartet zu werden. (Ansonsten # msste man obige Zeile durch die nachfolgende ersetzen.) # $(INSTALL_DATA) `cat used_images` $(DESTDIR)$(pkgdatadir)/pics/ # Die Bilder sollen auch in die Distribution: Und die Sounds auch dist-hook: used_images used_sounds mkdir $(distdir)/pics cp -p `cat used_images` $(distdir)/pics/ mkdir $(distdir)/sounds cp -p `cat used_sounds` $(distdir)/sounds/ # Ein paar spezielle Make-Regeln: summary.ld: genSummary.pl $(leveldateien) summary.in perl -w genSummary.pl used_levels: summary.ld echo $(leveldateien) > used_levels # Die Bild-Dateien nicht alle einzeln aufzhlen, sondern automatisch # diejenigen nehmen, die in den levels stehen. # Das tut das Skript used_images.sh # Es findet brigens auch die .xpm.gz-Bilder. used_images: used_images.sh summary.in $(lddateien) pics ./used_images.sh $(srcdir) '$(lddateien)' > used_images # Entsprechend die Sounds used_sounds: used_sounds.sh summary.in $(lddateien) sounds ./used_sounds.sh $(srcdir) '$(lddateien)' > used_sounds # Wenn beim Erzeugen einer Datei ein Fehler passiert, soll, falls # trotzdem schon eine halbe Datei erzeugt wurde, diese halbe Datei # geloescht werden. Ist fuer genSummary.pl notwendig (und sollte # eigentlich sowieso der default sein.) .DELETE_ON_ERROR: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/data/ziehlen.ld0000644000175000017500000000706312402074041012302 00000000000000# # Copyright 2005,2006,2010 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Ziehlen={ name = "Target practice" author = "Mark Weyer" pics = gruen,rot emptypic = nichts startpic = gras startdist[1] = "EEEEEEEEEE" toptime[1] = 30 toptime[1,hard] = 15 numexplode[1] = 100 startdist[2] = ".........AB.........","EEEEEEEEEE" toptime[2] = 36 toptime[2,hard] = 18 numexplode[2] = 200 randomfallpos = 1 loch_y = 6 loch_breite = 7 # loch-x-Angaben alle in halben Blops loch_breite[hard] = 5 loch_x_min = <4-loch_breite> loch_x_max = 16 nogreyprob = 1 << var loch_x=(loch_x_max+loch_x_min)/2, verbinder, verloren; semiglobal = { if 1:4 -> switch { (loch_x-loch_x_min+2*(loch_x_max-loch_x_min)) : 5*(loch_x_max-loch_x_min) -> loch_x-=1; -> loch_x+=1; }; if loch_x loch_x=loch_x_min; if loch_x>loch_x_max -> loch_x=loch_x_max; if (!(loc_x@@0*2 == loch_x..loch_x+loch_breite-2) || !(loc_x@@1*2 == loch_x..loch_x+loch_breite-2)) && ((loc_y@@0==loch_y) || (loc_y@@1==loch_y)) -> { kind@@0 = rot; kind@@1 = rot; }; }; >> gruen = { pics = mziAlle.xpm << gruen.init = { if loc_y>=loch_y -> { # Bin ich etwa erst unter dem Loch entstanden? kind=rot; kind@1=rot; # Achtung! Historisch verbrgt: # Die erste Verwendung relativer Adressierung # bei fallenden Blops falling_speed@@ = 64; falling_fast_speed@@ = 64; verloren=1; weight=0; }; }; gruen = { if verbinder>0 -> { if verbinder==1 -> { B; weight=size@(-9,0;>)-weight@(-9,0;>)+2; }; if verbinder==2 -> { C; weight=size@(9,0;<)-weight@(9,0;<)+2; }; }; *; if (!falling) && (loc_y<=loch_y) -> kind@(0,0)=rot; }; >> } rot = { pics = mziAlle.xpm colourprob = 0 << rot = { D*; if !falling && !verloren -> kind@(0,0)=nothing; }; >> } gras = { pics = mziAlle.xpm << gras.init = switch { informational -> version=4; version==0 -> {kind=gruen; verbinder=1;}; version==1 -> {kind=gruen; verbinder=2;}; }; >> } nichts = { pics = mziAlle.xpm << nichts = { if loc_y==loch_y -> { loch_x = 2*loc_x-loch_x@@;; switch { ! (loch_x == -2..loch_breite) -> I*; loch_x == 0..loch_breite-2 -> ; loch_x==-2 -> G*; loch_x==-1 -> J*; loch_x==loch_breite-1 -> H*; loch_x==loch_breite -> F*; }; }; }; >> } } cuyo-2.1.0/data/example.ld0000644000175000017500000001757411671742013012317 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005-2007,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # This is an example file to show how to write your own cuyo # levels. It's still under construction, but probably it's already # useful to get started. To experiment with it, do the following: # mkdir my_cuyo_levels # cd my_cuyo_levels # Put a copy of this file into my_cuyo_levels. Then # mkdir pics # The pics directory is the place where you can put images # for your own levels (xpm files). Cuyo will find them there. # However, you don't need to put any images there for this # example, because it uses images of existing levels. # Type # cuyo example.ld # to try this level; then read this file to see how it was done. # If you wrote a cuyo level and you think it's worth being included # in the normal cuyo distribution, you may send it to cuyo@karimmi.de. # Before we start with this level, just one more comment on the # organization of the level description files: # When started, cuyo looks for an .ld file called "summary.ld". # That file is generated from a file called "summary.in" and includes # all the other .ld files. # Most other ld files simply describe one level, but there's also # one called "globals.ld", which contains some definitions useful # in many different levels. # "example" is the internal name of this level. (When you # win a level, it's the internal name of the level that cuyo # remembers.) example = { # Name of the level which is displayed on screen. name = "Example Level" # The author of the level. Insert your own name. author = "Immi" # The description which appears at the beginning. description = "Where do I know all these icons from...?" # The different kinds of blobs that exist in the level. # In simple cases, it's enough to specify the name of an # xpm file. For more elaborate kinds, you have to create # an own section for the kind (inside the section of the # level) and specify the name of the section. # In this example, there are two simple kinds: # igGo.xpm and inGruen.xpm. # Look at the corresponding xpm files: # - igGo.xpm is a 32x32 image. That image is used to draw the blobs. # - inGruen.xpm is a 128x128 xpm. Cuyo always cuts big # imagess in 32x32 parts, so inGruen.xpm consists of 16 # small icons. Now, which of the 16 different 32x32 icons # is drawn depends on the neighbours of the blob. For example, # if a blob shall be drawn which has another blob of the same # kind on top of it, the bottom left icon is drawn. # - For the kind "my_special", we want to do more elaborate # things, so it has its own section (see below) pics=igGo.xpm,inGruen.xpm,my_special # How many blob have to be put together to make them explode: numexplode = 5 # In one-player-mode, we want to make it a bit more difficult. # So here, numexplode shall be 6. (You can add a "[1]" to any # of these keywords to specify a difference in one-player-mode. # Alternatively, you can add a "[2]" to specify a difference in # two-player-mode. If you do both, you should delete the base # version, because it is never used anyway.) numexplode[1] = 6 # That's the stuff that has to be removed to win the level. (I'll # call it "grass" because it's grass in the first level.) # Here too, we can choose between specifying an xpm file # or a section. However, when we specify a "big" xpm file # (with several 32x32 icons), this has a different meaning # than for the normal blob kinds. Which of the icons is # drawn does not depend on the neighbours, but... startpic=ipStart.xpm # ... on startdist. Here we can specify which of the # icons are where at the beginning of the level. startdist # has to be a list of strings, each 10 characters long. # Each string stands for one row. (The last one for the # bottom row of the level.) A letter stands for a icon # from the startpic, where "A" is the top left icon, # "B" the one to the right of it, etc. "." means that # there shall be nothing at that place. startdist=".AF....AF.","BCDE..BCDE" # The "grey blobs" that appear when the other player # makes explosions. (This works like the normal blob kinds.) greypic=inSchwarz.xpm # OK, now everything is ready except for the blob # kind "my_special". So let's describe that now. my_special = { # It uses several xpm files: pics=ihBlau.xpm,inSchwarz2.xpm # For this blob, being neighbours is diagonal. # (See existing levels or the cual man page for possible values # of this constant.) # This constant only specifies when blobs explode, and not # how they are drawn. So we still have to specify how the # graphics shall look like separately. neighbours= # The stuff inside <<>>-brackets is "cual code". Cual (= Cuyo # animation language) is an (almost) complete language which # makes it easy to program animations, etc. Try "man cual" # for details. # Note that the graphics of the simple blob kinds (where we # only specified a xpm file) is done by cual code, too: the # default definitions of the file "global.ld" are used. << # That's the main procedure for drawing our "my_special" blob. my_special={ # First, we draw the normal blob (with its diagonal connections). # There's a procedure called "schemaDiag2" defined in global.ld, # which draws the diagonal connections just in the way we want it: # It will build up the icon of different parts of an image file. # However, before we call it, we have to set the variable "file", # so that the right xpm file is taken. (Well, in fact, this would # not really be necessary, because file is automatically initialized # to 0, but let's do it anyway.) file = 0; # 0 = ihBlau.xpm, 1 = inSchwarz2.xpm schemaDiag2; # OK, up to now, our blob looks and behaves exactly like the blue # blobs in the level "hormones". Now let's add a bit of animation. # Start the animation with probability of 1:80. # (This if does not exactly the same as the if in other languages: # Once the expression "1:80" is true, the stuff after the arrow # will be executed in each step until the animation has terminated. # See "man cual" for details.) if 1:80 => { # This time, we'll take icons out of the second xpm file. # (inSchwarz2.xpm). Because it's so often necessary to set # the file variable, "1" is a shortcut for "file = 1" 1; # Now, choose which 32x32 icon to draw. This is done by setting # the variable pos. (pos = 0 is the top left icon,...) # There's a shortcut here, too: "A" sets pos to 0, "B" sets pos # to 1, etc. A, B, C, D, E, F, G, H, G, F, E, D, C, B, A; # Now, what does it make for a sense to set the value of # pos 15 times in a row? Note that there are commas between # the letters, not semicolons. That means that only *one* # of these assignments is executed: on the first time, the # first one, on the second time the second one, etc. # OK, now the file and the pos are set, and we are ready # to really draw the icon: (The drawing command is very short.) *; }; }; >> } } cuyo-2.1.0/data/maze.ld0000644000175000017500000000417512402113364011603 00000000000000# # Copyright 2002,2004-2006,2014 by Mark Weyer # Modified 2010 by Mark Weyer # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Labyrinth={ name="Maze" description="Collect all treasures. Finding the exit is optional." author="Mark Weyer" numexplode=4 chaingrass=0 sorten = 6 sorten[easy] = 4 pics=Sorte * bgcolor=255,255,255 toppic=mlTop.xpm topoverlap=0 topcolor=255,255,255 toptime[1]=80 toptime[2]=200 startpic=Gras startdist[1]= "**********","**********","**********","**********","**********","yz%&" startdist[2]="**********","**********","**********","**********","yz%&" startdist[1,easy]="**********","**********","**********","yz%&" startdist[2,easy]="**********","**********","yz%&" emptypic=mlHinter.xpm greypic=Grau nogreyprob=<2*sorten> << Gras.init = { if kind@(0,1)!=outside && 2:3 -> switch { 2:3 -> kind@(0,0)=Sorte+rnd(sorten); -> kind@(0,0)=Grau; }; }; Sorte = {file=kind-Sorte; schema16;}; Grau = schema16; Gras = schema16; mlHinter = switch { 1?1?1?1? -> ; -> schema16; }; >> Sorte = { pics = mlSorte2.xpm, mlSorte4.xpm, mlSorte5.xpm, mlSorte6.xpm, mlSorte1.xpm, mlSorte3.xpm greyprob = 4 } Gras = { pics = mlGras.xpm distkey = "z" } Grau = { pics = mlGrau.xpm distkey = "y" greyprob = <3*sorten> } } cuyo-2.1.0/data/used_sounds.sh0000755000175000017500000000253311672203520013216 00000000000000#! /bin/sh # # Copyright 2007 by the cuyo developers # Maintenance modifications 2007,2011 by the cuyo developers # Based on used_images.sh which, at that time, was # Copyright <=2002 by the cuyo developers # Modified 2007 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Gibt alle Namen von Dateien aus, in im # Verzeichnis $1/sounds liegen und in einer der Dateien # aus $2 erwhnt werden. # Gibt auerdem ein paar Systemsounds aus. # Beispiel: used_sounds cuyo/sounds "summary.ld bla.ld" cd $1/sounds for i in *.wav *.it do if test `cd ..;cat $2 | grep -c $i` != 0 then echo $1/sounds/$i else echo "Not included:" $1/sounds/$i >&2 fi done cuyo-2.1.0/data/hexkugeln.ld0000644000175000017500000001536212417277704012660 00000000000000# # Copyright <=2004,2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # i6Blau.xpm[.gz], i6Gelb.xpm[.gz], i6Grau.xpm[.gz], i6Gross1.xpm[.gz], # i6Gross2.xpm[.gz], i6Gross3.xpm[.gz], i6Hintergrund.xpm[.gz], # i6Lila.xpm[.gz], i6Oben.xpm[.gz], i6Rot.xpm[.gz], i6Weiss.xpm[.gz] # # referenced from memory.ld HexKugeln={ name="Balls & Rods" author="Immi" numexplode=5 chaingrass=1 pics=i6Weiss,i6Gelb,i6Rot,i6Blau,i6Lila bgcolor=200,200,155 #bgpic=i6Hintergrund.xpm topcolor=0,0,0 toppic=i6Oben.xpm topoverlap=13 toptime=50 startpic=i6Gross startdist="..D.ADG......D.ADG..",".AEGCEI.....AEGCEI..",".CFI-F-.....CFI-F-..","-A%&&%A-" startdist[1]="D.........","EG........","FID.ADG.D.","-AEGCEIAEG","-CFI-F-CFI","-A%&" greypic=i6Grau emptypic=i6Empty textcolor=0,100,0 neighbours= hexflip=2 randomgreys[1]=100 description="Most dense packing of spheres" << var my_exploding; var anz1 = 7, anz2 = 7, anz3 = 7, anz4 = 7; mal_wellen={ if !falling && kind@(0,1) == outside -> { if (loc_x & 1 == 1) == (loc_p == 2) -> { A*; } else { qu=Q_BL_TL; B*@(0,1); qu=Q_BR_TR; B*@(0,1); }; }; }; bunt={ if exploding != 0 -> my_exploding@ = exploding; schemaHex8; 1; mal_wellen; }; global={ my_exploding=0; }; >> i6Empty={ pics=i6Hintergrund.xpm << i6Empty={0; mal_wellen;}; >> } i6Grau={ pics=i6Grau.xpm,i6Hintergrund.xpm << i6Grau={0A*; 1; mal_wellen;}; >> } i6Weiss={ pics=i6Weiss.xpm,i6Hintergrund.xpm << i6Weiss=bunt; >> } i6Gelb={ pics=i6Gelb.xpm,i6Hintergrund.xpm << i6Gelb=bunt; >> } i6Rot={ pics=i6Rot.xpm,i6Hintergrund.xpm << i6Rot=bunt; >> } i6Blau={ pics=i6Blau.xpm,i6Hintergrund.xpm << i6Blau=bunt; >> } i6Lila={ pics=i6Lila.xpm,i6Hintergrund.xpm << i6Lila=bunt; >> } i6Gross={ pics=i6Hintergrund.xpm,i6Gross.xpm << var basis; var anz=7; var kugelnr; get_anz={ switch { kugelnr == 1 -> anz = anz1@; kugelnr == 2 -> anz = anz2@; kugelnr == 3 -> anz = anz3@; kugelnr == 4 -> anz = anz4@; }; }; dec_anz={ switch { kugelnr == 1 -> anz1@ -= 1; kugelnr == 2 -> anz2@ -= 1; kugelnr == 3 -> anz3@ -= 1; kugelnr == 4 -> anz4@ -= 1; }; }; mal_kugel = { basis = 2 * (anz - 1) - (anz == 2..5) + (anz == 7); basis *= 3; qu=Q_ALL; pos=basis+1; @(0,0)*; if anz >= 2 -> { qu=Q_ALL; pos=basis+4; @(0,1)*; qu=Q_BR_TR; pos=basis; @(-1,1)*; qu=Q_BR_TR; pos=basis+3; @(-1,2)*; qu=Q_BL_TL; pos=basis+2; @(1,1)*; qu=Q_BL_TL; pos=basis+5; @(1,2)*; qu=Q_TR_BR; pos=basis; @(-1,0)*; qu=Q_TR_BR; pos=basis+3; @(-1,1)*; qu=Q_TL_BL; pos=basis+2; @(1,0)*; qu=Q_TL_BL; pos=basis+5; @(1,1)*; if anz >= 5 -> { qu=Q_ALL; pos=basis+7; @(0,2)*; qu=Q_BR_TR; pos=basis+6; @(-1,3)*; qu=Q_BL_TL; pos=basis+8; @(1,3)*; qu=Q_TR_BR; pos=basis+6; @(-1,2)*; qu=Q_TL_BL; pos=basis+8; @(1,2)*; qu=Q_BL_TL; pos=basis; @(-1,1)*; qu=Q_BL_TL; pos=basis+3; @(-1,2)*; qu=Q_BL_TL; pos=basis+6; @(-1,3)*; qu=Q_BR_TR; pos=basis+2; @(1,1)*; qu=Q_BR_TR; pos=basis+5; @(1,2)*; qu=Q_BR_TR; pos=basis+8; @(1,3)*; qu=Q_TL_BL; pos=basis; @(-1,0)*; qu=Q_TL_BL; pos=basis+3; @(-1,1)*; qu=Q_TL_BL; pos=basis+6; @(-1,2)*; qu=Q_TR_BR; pos=basis+2; @(1,0)*; qu=Q_TR_BR; pos=basis+5; @(1,1)*; qu=Q_TR_BR; pos=basis+8; @(1,2)*; }; }; qu=Q_ALL; }; i6Gross.init={ behaviour .+= floats; switch { loc_p == 1 && loc_x == 7..9 -> kugelnr = 3; # nur 1-sp-modus loc_p == 1 && loc_x == 0..1 && loc_y <= 17 -> kugelnr = 4; # nur 1-sp-modus loc_p == 1 && loc_x == 1..3 -> kugelnr = 1; loc_p == 1 && loc_x == 4..6 -> kugelnr = 2; loc_p == 2 && loc_x == 2..4 -> kugelnr = 3; loc_p == 2 && loc_x == 5..7 -> kugelnr = 4; }; }; var richtige_seite; var version_oben; i6Gross={ 1; if informational -> B* else { if exploding != 0 -> my_exploding@ = exploding; behaviour .+= floats; get_anz; #out1=anz; out2=kugelnr; switch { version==0 && anz < 5 -> kind = nothing; version==2 && anz < 3 -> kind = nothing; version==3 && anz < 5 -> kind = nothing; version==4 && anz < 2 -> kind = nothing; version==5 && anz < 1 -> kind = nothing; version==6 && anz < 5 -> kind = nothing; version==8 && anz < 3 -> kind = nothing; }; if kind != nothing -> { richtige_seite = players == 1 || (kugelnr >= 3) == (loc_p == 2); version_oben = 5 - (anz+1)/3; # Der oberste Blop der Kugel ist für das Malen zuständig: if richtige_seite && version==version_oben || !richtige_seite && version==5 -> mal_kugel; # Der underste Blop der Kugel ist für das Fallen zuständig: if my_exploding@ == 0 -> { if richtige_seite && version==5 || !richtige_seite && version==version_oben -> { # Sind die Felder unter der Kugel frei? # Im 1-sp-Modus könnte die linke Spalte außerhalb des Spielfelds sein; # deshalb dort auch "outside" erlauben. if kind@(0,1)==nothing && (anz<=2 || (kind@(-1,.5)==nothing || kind@(-1,.5) == outside) && kind@(1,.5)==nothing) -> { behaviour@(0,0) .-= floats; if anz >= 2 -> behaviour@(0,-1) .-= floats; if anz >= 3 -> behaviour@(-1,-.5) .-= floats; if anz >= 3 -> behaviour@(1,-.5) .-= floats; if anz >= 5 -> behaviour@(-1,-1.5) .-= floats; if anz >= 5 -> behaviour@(0,-2) .-= floats; if anz >= 5 -> behaviour@(1,-1.5) .-= floats; }; }; }; if exploding == 8 -> { kind@(0,0) = i6Gross; behaviour@(0,0) .+= floats; dec_anz; }; }; # (Achtung: Die blopart könnte auch empty geworden sein) 0; mal_wellen; }; }; >> } } cuyo-2.1.0/data/colorshape.ld0000644000175000017500000000654511672457342013030 00000000000000# # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2003,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bcBack.xpm[.gz], bcEmpty1.xpm[.gz], bcEmpty2.xpm[.gz], bcOrange.xpm[.gz], # bcSechseck.xpm[.gz], bcShapes.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. ColorShape = { #------------------------------------# # Allgemeine Beschreibung des Levels # #------------------------------------# name = "Shape and Color" author = "Berni" description = "An explosion changes the way, they connect..." pics = All*4 greypic = Grey startpic = Start emptypic = Empty startdist = "A.........","A.........","A.........","A........A", "AA.......A","AA.......A","AAA....AAA", "AAAA.AAAAA" startdist[1] = "A.........","A.........","A.........","A........A","A........A", "AA.......A","AA.......A","AA.......A","AAA....AAA", "AAAA..AAAA","AAAA.AAAAA" numexplode = 4 chaingrass = 1 bgcolor = 0,0,0 topcolor = 0,0,0 topoverlap = 0 toptime = 80 textcolor = 200,200,200 randomgreys[1] = 40 << var farbe, form; var modus = 0, wechsel = 0, explobum = 0, counter = 0; semiglobal = { wechsel=0; switch { explobum==1 -> { counter=9; explobum=0; }; counter > 0 -> { switch { counter == 9 -> { modus=1-modus; wechsel=1; }; }; counter-=1; }; }; }; bg = { if !falling && loc_x == 0..9 && loc_y == 0..19 -> { file = modus@@; pos = loc_x+10*loc_y;*; }; }; >> Start = { pics = bcEmpty1.xpm,bcEmpty2.xpm,bcOrange.xpm << Start = { bg; 2;schema5; }; >> } Grey = { pics = bcEmpty1.xpm,bcEmpty2.xpm,bcBack.xpm,bcSechseck.xpm << Grey = { bg; 2;schema5; 3A*; }; >> } Empty = { pics = bcEmpty1.xpm,bcEmpty2.xpm << Empty = { bg; }; >> } All = { pics = bcEmpty1.xpm,bcEmpty2.xpm,bcBack.xpm,bcShapes.xpm << All.init = { switch { modus@@ == 0 -> {farbe = kind; form = rnd(4)}; modus@@ == 1 -> {farbe = rnd(4); form = kind}; }; }; All.changeside = { switch { modus@@==0 -> kind=farbe; modus@@==1 -> kind=form; }; }; All = { bg; if size>=4 -> explobum@@ = 1; if wechsel@@==1 -> switch { modus@@==0 -> kind=farbe; modus@@==1 -> kind=form; }; 2;schema5; 3;pos=4*form+farbe;*; }; >> } } # End of ColorShape cuyo-2.1.0/data/viecher.ld0000644000175000017500000002003111672457344012302 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ivBerge.xpm[.gz], ivDrachen.xpm[.gz], ivElefant.xpm[.gz], ivFeuer1.xpm[.gz], # ivFeuer2.xpm[.gz], ivFeuer3.xpm[.gz], ivFeuer4.xpm[.gz], ivFeuer5.xpm[.gz], # ivFeuer6.xpm[.gz], ivFeuer7.xpm[.gz], ivFeuer8.xpm[.gz], ivStein.xpm[.gz], # ivTintenfisch.xpm[.gz], ivVulkan2.xpm[.gz], ivVulkan3.xpm[.gz], # ivVulkan4.xpm[.gz], ivVulkan5.xpm[.gz], ivVulkan6.xpm[.gz], # ivVulkan7.xpm[.gz], ivVulkan8.xpm[.gz], ivVulkan9.xpm[.gz], # ivVulkan.xpm[.gz] # # referenced from labskaus.ld, memory.ld Viecher={ name="Beasts" author="Immi" numexplode=6 numexplode[1]=9 chaingrass=1 pics=ivDrachen,ivElefant,ivTintenfisch bgcolor=255,255,255 bgpic=ivBerge.xpm topcolor=60,60,60 toptime=50 startpic=ivVulkan startdist="....AA....","...AAAA...","..AAAAAA.." startdist[1]="....AA....","...AAAA...","..AAAAAA..",".AAAAAAAA." greypic=ivStein description="Warning! Fire hazard!" emptypic=ivNix << var ausbruch,brennt; # ba = 1 bedeutet, dass sich das Feld mit Feuer verbindet. var ba; var alter_kind; global={switch { 1:100 => 1,2,3,4,5,6,7,8; -> 0; };ausbruch=file}; feuer=switch { brennt==1 => { ba=1; 0,1,2,3,4,{5;kind=ivStein},6,{7;brennt=0;ba=0}; # Das Diag16-Schema, manuell implementiert [qu=Q_TL] {switch { ba@(-1,0) && ba@(-1,-1) && ba@(0,-1) -> K; ba@(-1,-1) && ba@(0,-1) -> J; ba@(-1,0) && ba@(-1,-1) -> L; ba@(-1,-1) -> C; ba@(-1,0) && ba@(0,-1) -> G; ba@(0,-1) -> N; ba@(-1,0) -> F; -> E; };*}; [qu=Q_TR] {switch { ba@(0,-1) && ba@(1,-1) && ba@(1,0) -> J; ba@(1,-1) && ba@(1,0) -> F; ba@(0,-1) && ba@(1,-1) -> N; ba@(1,-1) -> L; ba@(0,-1) && ba@(1,0) -> K; ba@(1,0) -> E; ba@(0,-1) -> G; -> C; };*}; [qu=Q_BL] {switch { ba@(0,1) && ba@(-1,1) && ba@(-1,0) -> G; ba@(-1,1) && ba@(-1,0) -> K; ba@(0,1) && ba@(-1,1) -> C; ba@(-1,1) -> E; ba@(0,1) && ba@(-1,0) -> F; ba@(-1,0) -> L; ba@(0,1) -> J; -> N; };*}; [qu=Q_BR] {switch { ba@(1,0) && ba@(1,1) && ba@(0,1) -> F; ba@(1,1) && ba@(0,1) -> G; ba@(1,0) && ba@(1,1) -> E; ba@(1,1) -> N; ba@(1,0) && ba@(0,1) -> J; ba@(0,1) -> C; ba@(1,0) -> K; -> L; };*}; }; }; # Fr Blops, die nicht verbrennen knnen: feuerfest={alter_kind=kind;feuer;kind=alter_kind}; >> ivStein={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm,ivStein.xpm << ivStein={8*;feuerfest}; >> } ivNix={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm << ivNix=feuerfest; >> } ivTintenfisch={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm, ivTintenfisch.xpm << ivTintenfisch={8;schema16;feuer}; >> } ivDrachen={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm, ivDrachen.xpm << var fp; ivDrachen={ 8; switch { 0?1?0?0? -> { switch { 1:100 => switch { players==1 => { U,{W;ba=1},Y,{a;brennt@(-1,0)=1},{Y;brennt@(-2,0)=1}, a,{Y;brennt@(-3,0)=1},{a;brennt@(-2,-1)=1}, {W;brennt@(-3,-1)=1;ba=0},U }; players==2 => { U,{W;ba=1},Y,{a;brennt@(-1,0)=1},Y, {a;brennt@(-2,0)=1},Y,a,{W;ba=0},U }; }; -> B; }; * }; 0?0?0?1?->{ switch { 1:100 => { switch { players==1 => { V,{X;ba=1},Z,{b;brennt@(1,0)=1},{Z;brennt@(2,0)=1}, b,{Z;brennt@(3,0)=1},{b;brennt@(2,-1)=1}, {X;brennt@(3,-1)=1;ba=0},V }; players==2 => { V,{X;ba=1},Z,{b;brennt@(1,0)=1},Z, {b;brennt@(2,0)=1},Z,b,{X;ba=0},V }; }; }; -> D; }; * }; -> schema16; }; switch { 1:100 => { B,C,D,C,B,A,B,C,D,C,B,A,B,C,D,C,B,A,B,C,D,C,B }; 1:100 => { B,C,D,D,D,D,D,D,D,D,D,C,B }; => A; }; fp=pos; switch { 1?????11 -> [qu=Q_BR_TL] {Q;pos+=fp@(0,0);*}; }; switch { 111????? -> [qu=Q_BL_TR] {Q;pos+=fp@(1,0);*}; }; switch { ????111? -> [qu=Q_TR_BL] {Q;pos+=fp@(0,1);*}; }; switch { ??111??? -> [qu=Q_TL_BR] {Q;pos+=fp@(1,1);*}; }; feuer; }; >> } ivElefant={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm, ivElefant.xpm << ivElefant={ 8; switch { 0?0?0?0? -> {{A,Y,a};*;brennt=0}; 0?1?0?0? -> {{B,U,W};*;brennt=0}; 1?1?1?0? -> {{J,R,T};*;brennt=0}; 1?0?0?0? -> {{M,Q,S};*;brennt=0}; 1?1?0?1? -> {{O,V,X};*;brennt=0}; -> { schema16; # Wasser-Elefanten brennen nicht. Also nur hier Feuer # aufrufen. feuer; }; } }; >> } ivVulkan={ pics=ivFeuer1.xpm,ivFeuer2.xpm,ivFeuer3.xpm,ivFeuer4.xpm, ivFeuer5.xpm,ivFeuer6.xpm,ivFeuer7.xpm,ivFeuer8.xpm, ivVulkan.xpm,ivVulkan2.xpm,ivVulkan3.xpm,ivVulkan4.xpm, ivVulkan5.xpm,ivVulkan6.xpm,ivVulkan7.xpm,ivVulkan8.xpm, ivVulkan9.xpm << ivVulkan={ switch { 001???0? -> A; 0?0???10 -> C; 001???11 -> E; 001???10 -> B; 011???10 -> F; 011???11 -> G; 0?0???0? -> D; 011???0? -> H; 1?1???1? -> I; 0?0???11 -> J; 1?1???0? -> K; 1?0???1? -> L; 1?0???0? -> M; }; 8; switch { pos==0..3 -> file+=ausbruch@; }; switch { players==1 -> switch { file==9 -> { brennt@(0,-1)=1; ba=1;}; file==11 -> brennt@(0,-2)=1; file==12 -> { brennt@(-1,-2)=1; brennt@(1,-2)=1; }; file==13 -> brennt@(0,-3)=1; file==14 -> { brennt@(-1,-3)=1; brennt@(1,-3)=1; }; file==15 -> ba=0; }; players==2 -> switch { file==9 -> { brennt@(0,-1)=1; ba=1;}; file==13 -> brennt@(0,-2)=1; file==15 -> ba=0; }; }; *; feuerfest; }; >> } } cuyo-2.1.0/data/bonus.ld0000644000175000017500000000351112402113363011765 00000000000000# # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bbBonus.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. Bonus={ name="Bonus" author="Berni" numexplode=1 chaingrass=0 pics=bbBonus bgcolor=127,127,255 toptime=4 startpic=bbGeld startdist="BCBBCBBCBB","BCBCBBCBCB","BCBCBCBBCB","BCBCBBCBCB","BCBBCBCCBB", "-C%&&%B-" greypic=bbSchein randomgreys[1]=20 description="Hurry up, get bonus points!" bbGeld={ pics=bbBonus.xpm << bbGeld={ pos=version; *; switch { 1:500 && version==1 => { E*, E*, F*, F*, G*, G*, H*, H*, H*, G*, G*, F*, F*, E*, E*; }; 1:500 && version==2 => { I*, I*, J*, J*, K*, K*, L*, L*, L*, K*, K*, J*, J*, I*, I*; }; }; }; >> animations="[t=500,v=B]E+E+F+F+G+G+H+H+H+G+G+F+F+E+E+;[t=500,v=C]I+I+J+J+K+K+L+L+L+K+K+J+J+I+I+" } bbBonus={ pics=bbBonus.xpm << bbBonus=A*; >> } bbSchein={ pics=bbBonus.xpm << bbSchein=D*; >> } } cuyo-2.1.0/data/octopi.ld0000644000175000017500000000525311671742016012153 00000000000000# # Copyright 2008 by Mark Weyer # Modified 2010 by Mark Weyer # Maintenance modifications 2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Octopi = { name = "Octopi" author = "Mark Weyer" description = "Octopi connect in eight directions. They also remove the anemones that way." sorten = 5 pics = octopus* greypic = moFisch.xpm startpic = anemone startdist = "***.......","*****...**","******.***" numexplode = 8 neighbours = anemone = { pics = moAnemone.xpm << anemone.init = {version=rnd(4);}; anemone = {pos=version; *;}; >> } octopus = { pics = moOctopus1.xpm, moOctopus2.xpm, moOctopus3.xpm, moOctopus4.xpm, moOctopus5.xpm << octopus = { file = kind-octopus; qu = Q_TL; switch { 0?????00 -> C; 0?????01 -> H; 0?????10 -> I; 0?????11 -> D; 1?????00 -> A; 1?????01 -> F; 1?????10 -> G; 1?????11 -> B; }; *; if kind==kind@(-1,1) -> E*@(0,1); qu = Q_TR; switch { 000????? -> I; 001????? -> C; 010????? -> D; 011????? -> H; 100????? -> G; 101????? -> A; 110????? -> B; 111????? -> F; }; *; if kind==kind@(-1,-1) -> E@(-1,0)*; qu = Q_BL; switch { ????000? -> A; ????001? -> G; ????010? -> F; ????011? -> B; ????100? -> C; ????101? -> I; ????110? -> H; ????111? -> D; }; *; if kind==kind@(1,1) -> E@(1,0)*; qu = Q_BR; switch { ??000??? -> G; ??001??? -> I; ??010??? -> B; ??011??? -> D; ??100??? -> A; ??101??? -> C; ??110??? -> F; ??111??? -> H; }; *; if kind==kind@(1,-1) -> E*@(0,-1); }; >> } } cuyo-2.1.0/data/wachsen.ld0000644000175000017500000001457511672457344012325 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # iwBaum2.xpm[.gz], iwBaum.xpm[.gz], iwErde.xpm[.gz], iwKreis.xpm[.gz], # iwQuadrat.xpm[.gz], iwRaute.xpm[.gz] # Wachsen={ name="Growing" author="Immi" numexplode=4 numexplode[1]=5 chaingrass[1]=1 chaingrass=0 pics=iwKreis.xpm,iwQuadrat.xpm,iwRaute.xpm startpic=Erde startdist="AAAAAAAAAA","AAAAAAAAAA" toptime=50 greypic=Baum emptypic=Nichts randomgreys[1]=100 << var neu, richtung; var li, re, ob, un; var frucht, reif; var frei; # lscht die li, re, ob, un Variablen, wenn sie beim # zugehrigen Nachbarfeld nicht gesetzt sind. wegbrechen = { switch {!un@(0,-1) -> ob=0;}; switch {!ob@(0,1) -> un=0;}; switch {!re@(-1,0) -> li=0;}; switch {!li@(1,0) -> re=0;}; }; # Wachsen... w_hoch = {ob=1; un@(0,-1)=1;}; w_runter = {un=1; ob@(0,1)=1;}; w_links = {li=1; re@(-1,0)=1;}; w_rechts = {re=1; li@(1,0)=1;}; iwKreis = schema4; iwQuadrat = schema4; iwRaute = schema4; >> Erde={ pics=iwErde.xpm << Erde={ wegbrechen; switch { # Untere Erde (andere Erde drber kind@(0,-1) == Erde -> { E* }; # Baum da ob -> { D* }; # Baum entsteht frei@(0,-1) && 1:600 => { B*, B*, B*, B*, { kind@(0,-1)=Baum; neu@(0,-1)=1; richtung@(0,-1)=2; w_hoch; C* }, C*, C*, C* }; # Kein Baum -> { A*; }; }; }; >> } Nichts={ pics=iwBaum2.xpm << Nichts={ frei = !frucht; switch { frucht && reif -> { X*; # Frucht fllt runter? if frei@(0,1) -> { frucht@(0,1)=frucht; reif@(0,1)=1; frucht=0; reif=0; } else { # Aufgekommen. Also sprieen. kind=Baum; neu=1; richtung=5; frucht=0; reif=0; }; }; frucht && !reif -> { D, D, D, D, C, C, C, C, B, B, B, B, A, A, A, {A, reif=1}; pos *= 6; pos += frucht; 0* }; -> { li = 0; re = 0; ob = 0; un = 0; }; }; }; >> } Baum={ pics=iwBaum.xpm,iwBaum2.xpm << Baum.init={ # Wird ausgefhrt fr neue Graue, die einem der Gegner schickt: # Dann sind wir erst mal ein Obst neu=1; richtung=5; }; Baum={ frei=0; wegbrechen; switch { # Neuer Trieb? neu => { { neu=0; D; # Wenn wir in der Luft sind, dann erst mal nicht ausschlpfen # bzw. nicht wachsen switch { kind@(0,1) == nothing -> busy; }; }, D, D, D, C, C, C, C, B, B, B, B, A, A, A, A; pos *= 6; pos += richtung; 1* }; # Alter Baum -> { # Malen switch { li && re && ob && un -> K; li && re && ob -> O; li && re && un -> G; li && re -> C; li && ob && un -> L; li && ob -> P; li && un -> H; li -> D; re && ob && un -> J; re && ob -> N; re && un -> F; re -> B; ob && un -> I; ob -> M; un -> E; -> A; }; *; switch { kind@(0,1) != nothing -> { # Weiterwachsen? (Nicht, wenn wir am fallen sind.) switch { # Hoch wachsen frei@(0,-1) && 1:300 -> { kind@(0,-1)=Baum; neu@(0,-1)=1; richtung@(0,-1)=2; w_hoch; }; # Nach links fruchten frei@(-1,0) && kind@(-1,1) == nothing && 1:200 -> { frucht@(-1,0)=3; reif@(-1,0)=0; w_links; }; # Nach links wachsen frei@(-1,0) && kind@(-1,1) != nothing && 1:400 -> { kind@(-1,0)=Baum; neu@(-1,0)=1; richtung@(-1,0)=0; w_links; }; # Nach rechts fruchten frei@(1,0) && kind@(1,1) == nothing && 1:200 -> { frucht@(1,0)=4; reif@(1,0)=0; w_rechts; }; # Nach rechts wachsen frei@(1,0) && kind@(1,1) != nothing && 1:400 -> { kind@(1,0)=Baum; neu@(1,0)=1; richtung@(1,0)=1; w_rechts; }; # Hoch verbinden kind@(0,-1) == Baum && 1:500 => { w_hoch; }; # Nach links verbinden kind@(-1,0) == Baum && 1:500 => { w_links; }; # Nach rechts verbinden kind@(1,0) == Baum && 1:500 => { w_rechts; }; # Runter verbinden (Wurzeln schlagen) kind@(0,1) == Erde && 1:500 => { w_rechts; }; } };} # switch untendrunter ist was }; } }; >> } } cuyo-2.1.0/data/darken.ld0000644000175000017500000000371212402113363012106 00000000000000# # Copyright <=2004 by Bernhard R. Link # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # dnBlack2.xpm[.gz], dnBlack.xpm[.gz], dnBlue2.xpm[.gz], dnBlue3.xpm[.gz], # dnBlue.xpm[.gz], dnGray.xpm[.gz], dnGreen1.xpm[.gz], dnGreen2.xpm[.gz], # dnGreen3.xpm[.gz], dnRed1.xpm[.gz], dnRed2.xpm[.gz], dnRed3.xpm[.gz] # Darken={ name="Darken" author="brl" description="The less you know..." numexplode=6 chaingrass=1 pics=dnGreen,dnRed,dnBlue bgcolor=35,35,35 topcolor=90,90,90 textcolor=255,255,255 toptime=90 greypic=dnGray.xpm startpic=dnStart startdist="AAAAAAAAAA","AAAAAAAAAA","-A%&" dnStart={ pics=dnBlack2.xpm pics[1]=dnBlack.xpm schema=0 } #dnGray={ #pics="dnGray.xpm" #schema=0 #} << darken={ switch { size == ..1 -> 0; size == 2 -> 1; size == 3 -> 2; size == 4.. -> 3; }; schema16; }; >> dnGreen={ pics=dnGreen1.xpm,dnGreen2.xpm,dnGreen3.xpm,dnBlack.xpm << dnGreen=darken; >> } dnBlue={ pics="dnBlue.xpm",dnBlue2.xpm,dnBlue3.xpm,dnBlack.xpm << dnBlue=darken; >> } dnRed={ pics=dnRed1.xpm,dnRed2.xpm,dnRed3.xpm,dnBlack.xpm << dnRed=darken; >> } } cuyo-2.1.0/data/embroidery.ld0000644000175000017500000000470512415051251013007 00000000000000# # Copyright <=2004 by Daniela Lipps # Modified 2011 by Immanuel Halupczok # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # jsBgStoff.xpm[.gz], jsGelbFlach.xpm[.gz], jsGrauLoch.xpm[.gz], # jsGruenGras.xpm[.gz], jsHetzbalken.xpm[.gz], jsOrangeKetten_5.xpm[.gz], # jsOrangeKreuz_2.xpm[.gz], jsRotHexen_2.xpm[.gz] # Embroidery={ name="Embroidery" author="Jela" numexplode=6 numexplode[1]=8 chaingrass=0 pics=jsOrangeKreuz,jsGelbFlach.xpm,jsRotHexen,jsOrangeKetten bgcolor=225,209,176 bgpic=jsBgStoff.xpm topcolor=0,0,0 toptime=50 toppic=jsHetzbalken.xpm topoverlap=28 startpic=jsGruenGras startdist="..*.......",".**.....*.",".***..*.*.","**********" greypic=jsGrauLoch.xpm description="Do you like doing some Needlework?" jsGruenGras={ pics=jsGruenGras.xpm versions=6 } << var dy = 0; semiglobal.row_up = { dy+=1; }; semiglobal.row_down = { dy-=1; }; >> jsRotHexen={ pics=jsRotHexen_2.xpm << var po; jsRotHexen={ if falling -> po = 0 else -> po = 2 * ((dy@@ + loc_y) % 2); pos = po; if kind@(-1,0) == kind -> pos += 1; [qu=Q_TL] *; [qu=Q_BL] *; pos = po; if kind@(1,0) != kind -> pos += 1; [qu=Q_TR] *; [qu=Q_BR]*; }; >> } jsOrangeKetten={ pics=jsOrangeKetten_5.xpm << jsOrangeKetten=schema5; >> } jsOrangeKreuz={ pics=jsOrangeKreuz_2.xpm << jsOrangeKreuz={ if 1?????11 -> [qu=Q_BR_TL] B* else -> [qu=Q_TL] A*; if 111????? -> [qu=Q_BL_TR] B* else -> [qu=Q_TR] A*; if ??111??? -> [qu=Q_TL_BR] B* else -> [qu=Q_BR] A*; if ????111? -> [qu=Q_TR_BL] B* else -> [qu=Q_BL] A*; }; >> } } cuyo-2.1.0/data/unmoeglich.ld0000644000175000017500000000346212402326334013002 00000000000000# # Copyright 2002,2005,2006,2010,2012 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Unmoeglich={ name="impossible" author="Mark Weyer" numexplode=7 numexplode[easy]=5 pics=Sorte * 3 toppic=m6Top.xpm topoverlap=0 topcolor=170,170,170 toptime=200 bgpic=m6Hintergrund.xpm startpic=m6Gras startdist="I.....A...","I.A...AEI.","I.AEI.AEI.","I.AEI.AEI.", "I.AEI.AEI.","I.AEI.AEI.","-A%&" greypic=m6Grau.xpm bgcolor=0,0,0 neighbours= randomgreys[1]=150 randomgreys[1,easy]=-1 Sorte={ pics=m6Dick.xpm,m6Duenn.xpm,m6Ganzduenn.xpm << Sorte = {file=kind-Sorte; schemaHex8;}; >> } m6Gras = { pics = m6Gras.xpm << m6Gras = if informational -> {L*} else { pos = version; if pos<8 -> switch { ???0?? -> pos+=3; 1????? -> pos+= 1 + (kind==kind@(0,-2)); -> pos+= 1 - (kind==kind@(0,2)); } else switch { ???0?? -> pos+=2; 1????? -> pos+=1; }; *; }; >> } } cuyo-2.1.0/data/fische.ld0000644000175000017500000001455412415051251012112 00000000000000# # Copyright 2006,2011,2014 by Mark Weyer # Modified 2010 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Fische = { name="Fish" author="Mark Weyer" zuckrate = 20 maxgroesse = 3 anzahlsorten[easy] = 4 anzahlsorten = 5 anzahlsorten[hard] = 6 pics = fisch* greypic = qualle startpic = muschel startdist = "...*....*.","..***...**",".*****.***" numexplode[easy] = 8 numexplode = 9 numexplode[hard] = 10 numexplode[2,easy] = 7 numexplode[2] = 8 numexplode[2,hard] = 9 muschel = { pics = mfmuschel.xpm << var offen,bedroht; muschel.init = {offen=rnd(2);}; muschel = { bedroht = basekind@(-1,0)==fisch || basekind@(1,0)==fisch; if offen -> if bedroht => {D,C,B,{offen=0; A}} else -> E else => if 1:50 => {F,F,F,G,G,G,if bedroht => A else => {A,B,C,D,{offen=1; E}}} else -> A; *; }; >> } qualle = { pics = mfqualle.xpm << qualle = { switch { 1:70 => {B,B,B}; 1:69 => {C,C,C}; -> A; }; *; }; >> } fisch = { pics = mffisch1.xpm, mffisch2.xpm, mffisch3.xpm, mffisch4.xpm, mffisch5.xpm, mffisch6.xpm << var richtung, fressend; fisch.init = {richtung=rnd(2)*2-1;}; fisch = { # Wichtiger Spezialfall im Automaten: # Wenn ich einen Fisch fressen will, der sich gleichzeitig auch # dazu entscheidet, dann tun wir das beide erstmal, aber ich # merke spter daran, da er fressend ist, da ich ihn nicht # fressen kann und wachse nicht. file = kind-fisch; pos = 12*(weight-1); if richtung==-1 -> pos+=3; switch { # Gibt's Happi? weight { # Fressen! { # Phase 1: ranschwimmen fressend=1; pos=pos+4; *; pos=pos+richtung; *@(richtung,0); }, { # Phase 2: zuschnappen, wachsen und hier verschwinden pos=pos+8; *; pos=pos+richtung; *@(richtung,0); kind@(richtung,0)=kind; kind=nothing; if fressend@(richtung,0) -> weight@(richtung,0)=weight # Der leckere Fisch ist abgehauen: doch nicht wachsen else weight@(richtung,0)=weight+1; richtung@(richtung,0)=richtung; fressend=0; }, { # Phase 3: ankommen *; } }; # Nervse Zuckung, wenn der Fall vorbeikommt !falling && 1:4 && weight {{pos=pos+8; *; pos=pos+richtung; *@(richtung,0)},*,*,*}; # Ab jetzt: Abwarten und vielleicht auch mal Zucken kind==fisch+1 # Krake -> switch { 1:(2*zuckrate) -> { # Je nach Richtung Paddeln oder Blinzeln qu=Q_TL; *; qu=Q_BL; *; pos+=richtung; qu=Q_TR; *; qu=Q_BR; *; }; 1:(2*zuckrate-1) -> { # Das andere qu=Q_TR; *; qu=Q_BR; *; pos+=richtung; qu=Q_TL; *; qu=Q_BL; *; }; -> *; }; kind==fisch+3 # Seepferdchen -> switch { 1:(2*zuckrate) -> { # Schwanzrollen qu=Q_TL; *; qu=Q_TR; *; pos+=richtung; qu=Q_BL; *; qu=Q_BR; *; }; 1:(2*zuckrate-1) -> { # Blinzeln qu=Q_BL; *; qu=Q_BR; *; pos+=richtung; qu=Q_TL; *; qu=Q_TR; *; }; -> *; }; # Hai und Zierfisch -> switch { 1:(3*zuckrate) -> # Schwanzzucken if richtung==1 -> { qu=Q_TR; *; qu=Q_BR; *; pos=pos+1; qu=Q_TL; *; qu=Q_BL; *; } else { qu=Q_TL; *; qu=Q_BL; *; pos=pos-1; qu=Q_TR; *; qu=Q_BR; *; }; 1:(3*zuckrate-1) -> # Paddeln if richtung==1 -> { qu=Q_TL; *; qu=Q_TR; *; qu=Q_BL; *; pos=pos+1; qu=Q_BR; *; } else { qu=Q_TL; *; qu=Q_TR; *; qu=Q_BR; *; pos=pos-1; qu=Q_BL; *; }; 1:(3*zuckrate-2) -> # Blinzeln if richtung==1 -> { qu=Q_TL; *;qu=Q_BL; *; qu=Q_BR; *; pos=pos+1; qu=Q_TR; *; } else { qu=Q_TR; *;qu=Q_BL; *; qu=Q_BR; *; pos=pos-1; qu=Q_TL; *; }; -> *; }; }; }; >> } } cuyo-2.1.0/data/wuerfel.ld0000644000175000017500000004221012420653541012316 00000000000000# # Copyright 2005 by Immanuel Halupczok # Modified 2006,2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # itrBlau.xpm[.gz], itrBraun.xpm[.gz], itrGrau.xpm[.gz], itrGruen.xpm[.gz], # itrLila.xpm[.gz], itrVorderrand.xpm[.gz], # itrAlle.xcf # Wuerfel={ name="Cubes" author="Immi" numexplode=7 numexplode[2]=6 numexplode[easy]=5 numexplode[2,easy]=4 chaingrass=0 toptime=100 pics=wuerfel * 4 greypic=wuerfel bgcolor=50,50,70 startpic=start_dummy startdist="....A.....","..CaAaD...","..ccBdd...","..CCbDD...", "..acBda...","aAaAaAaAa." neighbours= description="Will they land in front of or behind the others?" emptypic=nix bgpic=itrVorderrand.xpm vorderrand_file = 5 start_dummy = { } nix = { pics="itrBraun.xpm", "itrBlau.xpm", "itrGruen.xpm", "itrLila.xpm", "itrGrau.xpm", "itrVorderrand.xpm" } wuerfel = { pics="itrBraun.xpm", "itrBlau.xpm", "itrGruen.xpm", "itrLila.xpm", "itrGrau.xpm", "itrVorderrand.xpm" } << # kind_ = kind - wuerfel + 10 * (bin_goalblop) var kind_; # 1, wenn schon festgelegt ist, wo wie ich vorne/hinten bin var definiert; # Fr alle Pfeile gilt: # 1 = gute Richtung # 0 = schlechte Richtung # Bei lu und ru ist gut, wenn ich weiter hinten bin, # bei u ist gut, wenn ich weiter vorne bin # Speiche = Pfeil von mir aus weg; fr die Grogeschriebenen # haben wir die Verantwortung. var Speiche_lu, Speiche_u, Speiche_ru; var speiche_lo, speiche_o, speiche_ro; # Welche Nachbarn existieren? var ex_lu, ex_u, ex_ru, ex_lo, ex_ro, ex_o; # Rad = Pfeil um mich rum var rad_lu, rad_ru, rad_l, rad_r, rad_lo, rad_ro; # Fr's Rad: # gut/schlecht = beide Wrfel existieren und das Radsegment # ist gut/schlecht var rad_g_lu, rad_g_ru, rad_g_l, rad_g_r, rad_g_lo, rad_g_ro; var rad_s_lu, rad_s_ru, rad_s_l, rad_s_r, rad_s_lo, rad_s_ro; # Ich mchte mich in die folgenden Richtungen verbinden: var verb_u = 0, verb_lo = 0, verb_ro = 0; var verdeck_gefahr; # unten = unterste Zeile; ganz_unten = tiefere Hlfte der untersten Zeile var unten, ganz_unten; # ICH # lu/ | \ru # LI u| RE # lu\ | /ru # UN start_dummy.init = { kind = rnd(2); if version >= 26 -> { kind += 2; version -= 26; }; kind_ = kind - wuerfel + 10; behaviour .+= goalblob; switch { version == 0 -> { # Oberseite; hinter allem Speiche_lu = 1; Speiche_ru = 1; }; version == 1 -> { # Vorderkante: Auf dem drunter Speiche_u = 1; }; version == 2 -> { # Linke Seite: Auf dem drunter aber hinter dem rechts Speiche_u = 1; Speiche_ru = 1; }; version == 3 -> { # Rechte Seite: Auf dem drunter aber hinter dem links Speiche_u = 1; Speiche_lu = 1; }; }; definiert = 1; }; get_nachbarn={ unten = kind@(0,1) == outside; ganz_unten = unten && loc_x % 2 == 0; # Welche Nachbarn existieren? ex_lu = kind@(-1,.5) >= wuerfel; ex_ru = kind@(1,.5) >= wuerfel; ex_u = kind@(0,1) >= wuerfel; ex_lo = kind@(-1,-.5) >= wuerfel; ex_ro = kind@(1,-.5) >= wuerfel; ex_o = kind@(0,-1) >= wuerfel; # Pfeile von Nachbarn zu mir (Speichen-Pfeile) speiche_lo = Speiche_ru@(-1,-.5); speiche_o = Speiche_u@(0,-1); speiche_ro = Speiche_lu@(1,-.5); # Pfeile um mich rum (Rad-Pfeile) rad_lu = Speiche_ru@(-1,.5); rad_ru = Speiche_lu@(1,.5); rad_l = Speiche_u@(-1,-.5); rad_r = Speiche_u@(1,-.5); rad_lo = Speiche_lu@(0,-1); rad_ro = Speiche_ru@(0,-1); }; get_gutschlecht={ rad_g_lo = ex_o && ex_lo && rad_lo; rad_g_ro = ex_o && ex_ro && rad_ro; rad_g_lu = ex_u && ex_lu && rad_lu; rad_g_ru = ex_u && ex_ru && rad_ru; rad_g_l = ex_lo && ex_lu && rad_l; rad_g_r = ex_ro && ex_ru && rad_r; rad_s_lo = ex_o && ex_lo && !rad_lo; rad_s_ro = ex_o && ex_ro && !rad_ro; rad_s_lu = ex_u && ex_lu && !rad_lu; rad_s_ru = ex_u && ex_ru && !rad_ru; rad_s_l = ex_lo && ex_lu && !rad_l; rad_s_r = ex_ro && ex_ru && !rad_r; }; berechne_verbindungen = { verb_u = ex_u && Speiche_u && (Speiche_lu || !rad_s_lu) && (Speiche_ru || !rad_s_ru); #v_u_lu = ex_u && Speiche_u && (Speiche_lu || !rad_s_lu); #v_u_ru = ex_u && Speiche_u && (Speiche_ru || !rad_s_ru); verb_lo = ex_lo && speiche_lo && (Speiche_lu || !rad_s_l) && (speiche_o || !rad_s_lo); #v_lo_lu = ex_lo && speiche_lo && (Speiche_lu || !rad_s_l); #v_lo_o = ex_lo && speiche_lo && (speiche_o || !rad_s_lo); verb_ro = ex_ro && speiche_ro && (Speiche_ru || !rad_s_r) && (speiche_o || !rad_s_ro); #v_ro_ru = ex_ro && speiche_ro && (Speiche_ru || !rad_s_r); #v_ro_o = ex_ro && speiche_ro && (speiche_o || !rad_s_ro); #out1 = verb_lo * 100 + verb_u * 10 + verb_ro + 111; }; # Wie *, beachtet aber Goalblop-andersaussehen stern = { if file >= 10 -> { file = file - 10; if pos < 9 -> { pos += 18; }; }; *; }; mal_o = {if ex_o -> {file=kind_@(0,-1);H;stern;};}; mal_lo = {if ex_lo -> {file=kind_@(-1,-.5);F;stern;};}; mal_ro = {if ex_ro -> {file=kind_@(1,-.5);D;stern;};}; mal_lu = {if ex_lu -> {file=kind_@(-1,.5);C;stern;};}; mal_ru = {if ex_ru -> {file=kind_@(1,.5);A;stern;};}; mal_u = {if ex_u -> {file=kind_@(0,1);B;stern;};}; mal_nachbarn={ # Malen: Unten links [qu=Q_BL] { if !rad_l -> mal_lo; if !rad_lu -> mal_u; mal_lu; if rad_l -> mal_lo; if rad_lu -> mal_u; }; # Malen: Unten rechts [qu=Q_BR] { if !rad_r -> mal_ro; if !rad_ru -> mal_u; mal_ru; if rad_r -> mal_ro; if rad_ru -> mal_u; }; # Malen: Oben links [qu=Q_TL] { if rad_l -> mal_lu; if rad_lo -> mal_o; mal_lo; if !rad_l -> mal_lu; if !rad_lo -> mal_o; }; # Malen: Oben rechts [qu=Q_TR] { if rad_r -> mal_ru; if rad_ro -> mal_o; mal_ro; if !rad_r -> mal_ru; if !rad_ro -> mal_o; }; if unten -> { file = vorderrand_file; if ganz_unten -> { A*; } else -> { [qu=Q_TL_BL] B*; [qu=Q_TR_BR] B*; }; }; }; mal_extrakanten = { if (!ex_lo || speiche_lo) -> { if (!ex_o || !speiche_o) -> { # lo-Kante sichtbar if !verb_lo -> { [qu=Q_BR_TR] J*@(-1,-.5); [qu=Q_BL] K*@(0,-1); }; if (verb_ro@(-1,.5) && verb_ro@(-2,0) && !verb_lo@(-1,.5)) -> [qu=Q_BL_TR] J*@(-1,-.5); if (verb_ro@(0,0) && verb_ro@(-1,-.5) && !verb_lo@(1,-.5)) -> [qu=Q_TL_BL] K*@(0,-1); }; if (!ex_lu || !Speiche_lu) && !ganz_unten -> { # l-Kante sichtbar if !verb_lo -> { [qu=Q_TR_BR] M*@(-1,-.5); [qu=Q_BR_TR] M*@(-1,.5); }; if (verb_u@(0,-1) && verb_u@(-1,-1.5) && !verb_lo@(0,-1)) -> [qu=Q_TL_BR] M*@(-1,-.5); if (verb_u@(0,0) && verb_u@(-1,-.5) && !verb_lo@(0,1)) -> [qu=Q_BL_TR] M*@(-1,.5); }; }; if (!ex_ro || speiche_ro) -> { if (!ex_o || !speiche_o) -> { # ro-Kante sichtbar if !verb_ro -> { [qu=Q_BL_TL] L*@(1,-.5); [qu=Q_BR] K*@(0,-1); }; if (verb_lo@(1,.5) && verb_lo@(2,0) && !verb_ro@(1,.5)) -> [qu=Q_BR_TL] L*@(1,-.5); if (verb_lo@(0,0) && verb_lo@(1,-.5) && !verb_ro@(-1,-.5)) -> [qu=Q_TR_BR] K*@(0,-1); }; if (!ex_ru || !Speiche_ru) && !ganz_unten -> { # r-Kante sichtbar if !verb_ro -> { [qu=Q_TL_BL] O*@(1,-.5); [qu=Q_BL_TL] O*@(1,.5); }; if (verb_u@(0,-1) && verb_u@(1,-1.5) && !verb_ro@(0,-1)) -> [qu=Q_TR_BL] O*@(1,-.5); if (verb_u@(0,0) && verb_u@(1,-.5) && !verb_ro@(0,1)) -> [qu=Q_BR_TL] O*@(1,.5); }; }; if (!ex_u || Speiche_u) && !unten -> { if (!ex_lu || !Speiche_lu) -> { # lu-Kante sichtbar if !verb_u -> { [qu=Q_TL] Q*@(0,1); [qu=Q_TR_BR] P*@(-1,.5); }; if (verb_lo@(1,.5) && verb_lo@(1,1.5) && !verb_u@(1,.5)) -> [qu=Q_BL_TL] Q*@(0,1); if (verb_lo@(0,0) && verb_lo@(0,-1) && !verb_u@(-1,-.5)) -> [qu=Q_TL_BR] P*@(-1,.5); }; if (!ex_ru || !Speiche_ru) -> { # ru-Kante sichtbar if !verb_u -> { [qu=Q_TR] Q*@(0,1); [qu=Q_TL_BL] R*@(1,.5); }; if (verb_ro@(-1,.5) && verb_ro@(-1,1.5) && !verb_u@(-1,.5)) -> [qu=Q_BR_TR] Q*@(0,1); if (verb_ro@(0,0) && verb_ro@(0,-1) && !verb_u@(1,-.5)) -> [qu=Q_TR_BL] R*@(1,.5); }; }; }; mal_extrakanten_alt = { # Wenn zwei Blops verbunden sind, dann die entsprechenden # Trennkanten heller bermalen (aber nur wenn sie sichtbar # sind) # Dabei noch eine Sonderfall-Entescherung: Wenn vier Blops # zusammen eine Flche bilden, die auf einer Seite geschlitzt # ist, dann Schlitz noch um einen halben Blop verlngern. if verb_u -> { if !rad_s_lu -> { # lu if !(verb_lo@(1,.5) && verb_lo@(1,1.5) && !verb_u@(1,.5)) -> [qu=Q_TL] Q*@(0,1); if !(verb_lo@(0,0) && verb_lo@(0,-1) && !verb_u@(-1,-.5)) -> [qu=Q_BR] M*@(-1,.5); # Zugriff mit @(0,0), damit nicht eine der Verbindungen frher # bemerkt wird als die anderen; das fhrt zu kurzzeitigen # Inkonsistenzen, die zum Aufflackern eines Strichs fhren. }; if !rad_s_ru -> { # ru if !(verb_ro@(-1,.5) && verb_ro@(-1,1.5) && !verb_u@(-1,.5)) -> [qu=Q_TR] Q*@(0,1); if !(verb_ro@(0,0) && verb_ro@(0,-1) && !verb_u@(1,-.5)) -> [qu=Q_BL] O*@(1,.5); }; }; if verb_lo -> { if !rad_s_l -> { # l if !(verb_u@(0,-1) && verb_u@(-1,-1.5) && !verb_lo@(0,-1)) -> [qu=Q_BR] J*@(-1,-.5); if !(verb_u@(0,0) && verb_u@(-1,-.5) && !verb_lo@(0,1)) -> [qu=Q_TR] M*@(-1,.5); }; if !rad_s_lo -> { # lo if !(verb_ro@(-1,.5) && verb_ro@(-2,0) && !verb_lo@(-1,.5)) -> [qu=Q_TR] J*@(-1,-.5); if !(verb_ro@(0,0) && verb_ro@(-1,-.5) && !verb_lo@(1,-.5)) -> [qu=Q_BL] K*@(0,-1); }; }; if verb_ro -> { if !rad_s_r -> { # r if !(verb_u@(0,-1) && verb_u@(1,-1.5) && !verb_ro@(0,-1)) -> [qu=Q_BL] L*@(1,-.5); if !(verb_u@(0,0) && verb_u@(1,-.5) && !verb_ro@(0,1)) -> [qu=Q_TL] O*@(1,.5); }; if !rad_s_ro -> { # ro if !(verb_lo@(1,.5) && verb_lo@(2,0) && !verb_ro@(1,.5)) -> [qu=Q_TL] L*@(1,-.5); if !(verb_lo@(0,0) && verb_lo@(1,-.5) && !verb_ro@(-1,-.5)) -> [qu=Q_BR] K*@(0,-1); }; }; #out1 = 100 * v_lo_lu + 10 * v_lo_o + verb_lo + 111; #if v_lo_lu && !rad_s_l -> {[qu=Q_BR] S*@(-1,-.5); [qu=Q_TR] V*@(-1,.5);}; # l #if v_lo_o && !rad_s_lo -> {[qu=Q_TR] S*@(-1,-.5); [qu=Q_BL] T*@(0,-1);}; # lo }; berechne_pfeile={ # Folgende Invarianten sollen immer gelten (bzw. maximal # fr einen Zeitraum der Lnge \epsilon verletzt sein): # - Keine ggg-/sss-Dreiecke: (g = gut, s = schlecht) # = zyklische Dreiecke; fhren zu Grafikfehler # - Kein Dreieck mit oberer und unterer Kante beide schlecht: # Fhren dazu, dass ein Blop "in der Luft hngt" # Ansonsten wird noch optimiert auf: # - mglichst wenig ssg-Dreiecke # - Neue Blops nicht vllig verdeckt if !definiert -> { # Pfeil nach unten bestimmen: #Speiche_u = rnd(2); # Erst mal zufllig Speiche_u = 0; # Erst mal mglichst flach ### In welchen Fllen *muss* Speiche_u == 1 (gut) sein # Wenn unten ein schlechter Pfeil ist, knnen wir # ein ssg-Dreieck vermeiden if rad_s_lu || rad_s_ru -> Speiche_u = 1; # Oben und nicht hinten anbauen, wenn ich hinten alleine wre # (gar nicht mit dem Rest verbunden). if !rad_g_lu && !rad_g_ru -> Speiche_u = 1; # Blop nicht vllig verdecken... unter Zusatzbedingungen: # - Verdeckende Blops sind schon alt (d. h. definiert) # - Nach vorne holen verletzt keine Invariante # Verdeckt ist der Blop, wenn er hinter den beiden oberen ist und: # - hinter dem unteren oder # - hinter den beiden lu und ru # Hinter den oberen kann mit unserem Algorithmus nur bei # rad_g_l && rad_g_r passieren verdeck_gefahr = rad_g_l && rad_g_r && definiert@(-1,-.5) && definiert@(1,-.5); if verdeck_gefahr -> Speiche_u = 1; # Wenn der untere Blop gar nicht existiert, knnen wir immer noch # verdeckt werden. Deshalb wird verdeck_gefahr weiter unten nochmal # verwendet. ### In welchen Fllen *muss* Speiche_u == 0 (schlecht) sein # Ist unntig, wenn man sowieso ganz am Anfang mit default # Speiche_u = 0 startet. Ist deshalb auskommentiert # Wenn sonst oben ein vermeidbarer Fehler wre: # (Nur wenn der obere Blop schon lter ist.) #if definiert@(-1,-.5) && # rad_g_lu && rad_s_l && !rad_s_ru -> Speiche_u = 0; #if definiert@(1,-.5) && # rad_g_ru && rad_s_r && !rad_s_lu -> Speiche_u = 0; ### Ende von Speiche_u bestimmen # Jetzt die restlichen Pfeile: # Default gut; schlecht nur, wenn am Dreieck darunter # bereits zwei gute Kanten sind Speiche_lu = !(rad_g_lu && Speiche_u); Speiche_ru = !(rad_g_ru && Speiche_u); if verdeck_gefahr -> { # Noch besteht Gefahr, den Blop durch lu, ru, lo, ro # zu verdecken. Wenn wir das ohne berhang vermeiden # knnen, tun wir's. (Auf einer Seite wrde reichen, # aber es soll symmetrisch sein.) if !rad_s_lu -> Speiche_lu = 0; if !rad_s_ru -> Speiche_ru = 0; }; # Wenn die Blops links und rechts ber mir schon lnger existieren, # dann auch deren Pfeile setzen; dabei auch gleich meine eigenen # entsprechenden Variablen setzen, damit weniger Zeitverzgerung # entsteht if ex_lo -> { speiche_lo = !(rad_g_l && Speiche_lu); Speiche_ru@(-1,-.5) = speiche_lo; }; if ex_ro -> { speiche_ro = !(rad_g_r && Speiche_ru); Speiche_lu@(1,-.5) = speiche_ro; }; # Wir entscheiden uns erst dann entgltig fr unsere Pfeile, wenn # a) sich alle unsere Unterkltze entschieden haben und # b) wir nicht in der Luft hngen. definiert = (!ex_lu || definiert@(-1,.5)) && (!ex_u || definiert@(0,1)) && (!ex_ru || definiert@(1,.5)) && (ex_u || kind@(0,1) == outside) } else if loc_y < 19 || kind@(0,1) == outside -> { # Eigentlich sind die Pfeile berechnet. Aber vielleicht # mssen verletzte Invarianten repariert werden. # Allerdings nur, wenn unter uns nicht grad eine Reihe # langrutscht; bei langrutschenden Reihen warten wir erst # mal. if rad_g_lu && Speiche_lu && Speiche_u -> Speiche_lu = 0; if rad_s_lu && !Speiche_lu -> Speiche_lu = 1; if rad_g_ru && Speiche_ru && Speiche_u -> Speiche_ru = 0; if rad_s_ru && !Speiche_ru -> Speiche_ru = 1; if rad_s_lu && rad_s_ru -> Speiche_u = 1 }; #out2 = Speiche_lu * 100 + Speiche_u * 10 + Speiche_ru + 111; }; wuerfel.init={ kind_ = kind - wuerfel; }; wuerfel.land={ get_nachbarn; get_gutschlecht; berechne_pfeile; }; wuerfel.connect={ if !falling -> { get_nachbarn; get_gutschlecht; berechne_pfeile; berechne_verbindungen; #if !definiert -> { # inhibit = DIR_U + DIR_D + DIR_UL + DIR_UR + DIR_DL + DIR_DR; #} else -> { inhibit = DIR_D * (!verb_u) + DIR_UL * (!verb_lo) + DIR_UR * (!verb_ro); #}; }; }; wuerfel={ file = kind_; if !falling && !informational -> { get_nachbarn; get_gutschlecht; berechne_pfeile; berechne_verbindungen; # Malen: Ich selbst E; stern; mal_extrakanten; # Fr's Nachbarn-malen zhlen die, die hinter mir sind, # einfach als nicht da. ex_lu = ex_lu && Speiche_lu; ex_ru = ex_ru && Speiche_ru; ex_u = ex_u && !Speiche_u; ex_lo = ex_lo && !speiche_lo; ex_ro = ex_ro && !speiche_ro; ex_o = ex_o && speiche_o; mal_nachbarn; #if verb_u -> {3; [qu=Q_BL] B*@(0,0); [qu=Q_TL] B*@(0,1); }; #if verb_lo -> {3; [qu=Q_TL] C*@(0,0); [qu=Q_BR] C*@(-1,-.5); }; #if verb_ro -> {3; [qu=Q_TR] A*@(0,0); [qu=Q_BL] A*@(1,-.5); }; } else -> { G; stern; }; #out1 = verb_lo * 100 + verb_u * 10 + verb_ro + 111; #out1 = definiert; #out2 = Speiche_lu * 100 + Speiche_u * 10 + Speiche_ru + 111; }; nix={ get_nachbarn; mal_nachbarn; verb_lo = 0; verb_ro = 0; verb_u = 0; }; >> } cuyo-2.1.0/data/3d.ld0000644000175000017500000001050312420653541011153 00000000000000# # Copyright <=2004,2014 by Immanuel Halupczok # Modified 2005,2006 by Immanuel Halupczok # Modified 2006 by Mark Weyer # Maintenance modifications 2006,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # i3Dreieck.xpm.gz, i3Grau.xpm.gz, i3Plus.xpm.gz, i3Stern.xpm.gz # i3Gitter.xpm.gz, i3Kreis.xpm.gz, i3Quadrat.xpm.gz, # i3Bunt.xcf, i3Grau.xcf # DreiD={ name="3D" author="Immi" description="Well, just a little bit 3D." neighbours= greypic=Box startpic=Gitter pics=Quadrat,Dreieck,Kreis,Stern,Plus numexplode=7 numexplode[easy]=5 startdist[1]="AA......AA", "AA......AA", "AA......AA", "AA......AA", "AA......AA", "AAAAAAAAAA" startdist="AA......AA", "AA......AA", "AA......AA", "AA......AA", "AAAAAAAAAA" bgcolor=30,30,30 textcolor=50,50,50 #chaingrass=1 #chaingrass[easy]=0 randomgreys[1]=40 randomgreys[2]=120 << var basis, oo, uu, ll, rr, hi; var fall_richtung; # Wie rum ist das Fall (relativ zu mir): # 0 = ich bin links, 1 = ich bin oben; etc. Objekt_init = { if loc_x == 4 -> fall_richtung = 0 else fall_richtung = 2; }; Objekt_turn = { fall_richtung = (fall_richtung + 1) % 4; }; Objekt={ hi = loc_x % 2; if falling -> { # Fallend if turn == 0 && !hi && fall_richtung == 0 -> { V*; W*@(1); } else if hi && turn==0 && fall_richtung == 2 -> { Z*; Y@(1)*; } else if hi -> a* else -> U*; #out1 = fall_richtung; } else { if hi -> basis = 5 else basis = 1; oo = kind@(0,-1) == kind; uu = kind@(0,1) == kind; ll = kind@(-2,0) == kind; rr = kind@(2,0) == kind; pos=basis+2*ll +9*oo ; [qu=Q_TL] *; pos-=1; [qu=Q_TR_BR] if hi -> @(-1,-.5)* else *@(-1,-.5); pos=basis+2*(1-rr)+9*oo ; [qu=Q_TR] *; pos+=1; [qu=Q_TL_BL] if hi -> @(1,-.5)* else *@(1,-.5); pos=basis+2*ll +9*(1-uu); [qu=Q_BL] *; pos-=1; [qu=Q_BR_TR] if hi -> @(-1,.5)* else *@(-1,.5); pos=basis+2*(1-rr)+9*(1-uu); [qu=Q_BR] *; pos+=1; [qu=Q_BL_TL] if hi -> @(1,.5)* else *@(1,.5); if hi && kind@(-1,.5) == kind -> { [qu=Q_BL] X*; if kind == Gitter -> [qu=Q_BR_TR] W@(-1,.5)*; }; }; # Nicht fallend }; # Objekt >> Box={ pics=i3Grau.xpm << Box={ if informational -> A* else if loc_x % 2 -> { [qu=Q_TR_BR] C@(-1,-.5)*; [qu=Q_BR_TR] C@(-1,.5)*; [qu=Q_TR_BR] H@(-1,.5)*; D*; I@(0,1)*; [qu=Q_TL_BL] E@(1,-.5)*; [qu=Q_BL_TL] E@(1,.5)*; [qu=Q_TL_BL] J@(1,.5)*; } else { [qu=Q_TR_BR] F*@(-1,-.5); [qu=Q_BR_TR] F*@(-1,.5); B*@(0,-1); G*; [qu=Q_BL_TL] C*@(1,-.5); [qu=Q_TL_BL] H*@(1,-.5); [qu=Q_BL_TL] H*@(1,.5); }; }; >> } Gitter={ pics=i3Gitter.xpm << Gitter=Objekt; >> } Quadrat={ pics=i3Quadrat.xpm << Quadrat=Objekt; Quadrat.init=Objekt_init; Quadrat.turn=Objekt_turn; >> } Kreis={ pics=i3Kreis.xpm << Kreis=Objekt; Kreis.init=Objekt_init; Kreis.turn=Objekt_turn; >> } Dreieck={ pics=i3Dreieck.xpm << Dreieck=Objekt; Dreieck.init=Objekt_init; Dreieck.turn=Objekt_turn; >> } Stern={ pics=i3Stern.xpm << Stern=Objekt; Stern.init=Objekt_init; Stern.turn=Objekt_turn; >> } Plus={ pics=i3Plus.xpm << Plus=Objekt; Plus.init=Objekt_init; Plus.turn=Objekt_turn; >> } } cuyo-2.1.0/data/secret.ld0000644000175000017500000001015112402160040012114 00000000000000# # Copyright 2011,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Secret = { name = " " author = "Mark Weyer" description = "Congratulations, you found the secret level" pics = Two,Three,Four,Five greypic = Grey startpic = Start emptypic = Empty startdist = "**********","**********","**********","**********","..%&" neighbours = randomfallpos = 1 << var kind_channel,start_channel,kind_perm,connect_perm; var start_val = 0 : reapply; var channel,perm; var pos_; var val0,val1,val2,val3; random_perm = { val0 = rnd(4); val1 = rnd(3); val2 = rnd(2); if val1>=val0 -> val1+=1; if val2>=val0 -> val2+=1; if val2>=val1 -> {val2+=1; if val2==val0 -> val2+=1;}; val3 = 6-val0-val1-val2; perm = val0+4*val1+16*val2+64*val3; }; random_channel = { channel = 1; if 1:2 -> channel*=4; if 1:2 -> channel*=16; }; do_perm = { # applies perm to val0 channel = 1; if val0%2 -> channel*=4; if val0>1 -> channel*=16; val0 = perm/channel%4; }; global.init = { random_channel; kind_channel = channel; random_perm; kind_perm = perm; random_perm; connect_perm = perm; random_channel; start_channel = channel; start_val = rnd(4); }; draw = {pos=pos_; *;}; Kind_init = { val0 = kind-Two; perm=kind_perm@; do_perm; pos_ = (rnd(256).-(3*kind_channel@))+val0*kind_channel@; }; Kind = draw; Kind_connect = { val0 = kind-Two; perm=connect_perm@; do_perm; switch { val0==0 -> inhibit=DIR_U+DIR_D+DIR_UL+DIR_DL+DIR_UR+DIR_DR; val0==1 -> inhibit=DIR_L+DIR_R+DIR_U+DIR_D; val0==2 -> inhibit=DIR_UL+DIR_DL+DIR_UR+DIR_DR; val0==3 -> inhibit=DIR_L+DIR_R+DIR_UL+DIR_DL+DIR_UR+DIR_DR; }; }; Start.init = { random_perm; behaviour .+= floats; }; Start = { if !time -> { val0 = 19-loc_y; perm = perm@@(loc_x,19); do_perm; pos_ = val0; val0 = 19-loc_y; perm = perm@@(loc_x,18); do_perm; pos_ += 4*val0; val0 = 19-loc_y; perm = perm@@(loc_x,17); do_perm; pos_ += 16*val0; val0 = 19-loc_y; perm = perm@@(loc_x,16); do_perm; pos_ += 64*val0; if pos_/start_channel@%4 != start_val@ -> {kind=Empty; start_val=1;}; }; draw; }; Grey.init = { pos_ = rnd(256).-(3*start_channel@); val0 = rnd(3); if val0>=start_val@ -> val0+=1; pos_ += val0*start_channel@; }; Grey = draw; Empty = { if start_val -> draw; }; Two.init = Kind_init; Three.init = Kind_init; Four.init = Kind_init; Five.init = Kind_init; Two = Kind; Three = Kind; Four = Kind; Five = Kind; Two.connect = Kind_connect; Three.connect = Kind_connect; Four.connect = Kind_connect; Five.connect = Kind_connect; info = { if version==0 -> A* else { E,E,E,E,E,E,E,E,E, F,F,F,F,F,F,F,F,F, M,M,M,M,M,M,M,M,M, N,N,N,N,N,N,N,N,N }; * }; >> Start = { pics = mseGG.xpm } Grey = { pics = mseGG.xpm } Empty = { pics = mseGG.xpm } Two = { pics = mseKind.xpm numexplode = 2 } Three = { pics = mseKind.xpm numexplode = 3 } Four = { pics = mseKind.xpm numexplode = 4 } Five = { pics = mseKind.xpm numexplode = 5 } info = { pics = infoicons.xpm } } cuyo-2.1.0/data/rohre.ld0000644000175000017500000001776112420653541012001 00000000000000# # Copyright <=2004 by Bernhard R. Link # Maintenance modifications 2005,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # lrEis.xpm[.gz], lrKamin.xpm[.gz], lrOfen.xpm[.gz], lrWasserH.xpm[.gz], # lrWasserRH.xpm[.gz], lrWasser.xpm[.gz], # lrKamin.xcf, lrWasser.xcf # # Hochschornstein reparieren Rohre={ name="Heating" author="brl" numexplode=18 numexplode[1]=20 chaingrass=1 pics=lrKamin,lrEisFallend,lrWasser bgcolor=22,222,244 startpic=lrOfen startdist="..A....A..","..AA..AA.." greypic=lrEis topcolor=227,227,227 toptime=50 randomgreys[1]=100 << var rauch=0; var hitze=0; var temp,ou1,ou2,ki,ofen_an; var al, ar, ao, au; var freio, freim, freiu; tradeheat_1 = { #switch{ ki == lrWasser || ((ki == lrOfen || ki == lrEis) && ki != kind) -> { if ki == lrWasser || ki == lrOfen || (ki == lrEis && ki != kind) -> { temp=(temp-hitze@(0,0)+2)/5; ou1 += temp; }; }; tradeheat = { ou1=hitze; ki = kind@( 0, 1); temp = hitze@( 0, 1); tradeheat_1; ki = kind@( 0,-1); temp = hitze@( 0,-1); tradeheat_1; ki = kind@( 1, 0); temp = hitze@( 1, 0); tradeheat_1; ki = kind@(-1, 0); temp = hitze@(-1, 0); tradeheat_1; }; coolslow = { ou1 -= 1; if ou1 <= 0 -> ou1 = 0; hitze@(0,0) = ou1; }; coolfast = { ou1 -= 5 + ou1/6; if ou1 <= 0 -> ou1 = 0; hitze@(0,0) = ou1; }; >> lrWasser={ pics=lrWasser.xpm,lrWasserH.xpm,lrWasserRH.xpm << lrWasser={ switch{ hitze >= 150 -> 2; hitze >= 10 -> 1; -> 0; }; tradeheat; coolslow; ao = kind@(0,-1) == lrWasser || kind@(0,-1) == lrOfen; ar = kind@( 1,0) == lrWasser || kind@( 1,0) == lrOfen; au = kind@( 0,1) == lrWasser || kind@( 0,1) == lrOfen; al = kind@(-1,0) == lrWasser || kind@(-1,0) == lrOfen; switch { falling -> Z; kind@(0,-1) == nothing || kind@(0,-1) == lrEis -> { switch { !ar && !au && !al -> a; ar && !au && !al -> R; ar && !au && al -> S; !ar && !au && al -> T; !ar && au && !al -> Q; ar && au && !al -> V; ar && au && al -> W; !ar && au && al -> X; }; }; -> { switch { !ao && !ar && !au && !al -> A; !ao && ar && !au && !al -> B; !ao && ar && !au && al -> C; !ao && !ar && !au && al -> D; !ao && !ar && au && !al -> E; !ao && ar && au && !al -> F; !ao && ar && au && al -> G; !ao && !ar && au && al -> H; ao && !ar && au && !al -> I; ao && ar && au && !al -> J; ao && ar && au && al -> K; ao && !ar && au && al -> L; ao && !ar && !au && !al -> M; ao && ar && !au && !al -> N; ao && ar && !au && al -> O; ao && !ar && !au && al -> P; }; }; }; *}; >> } lrEisFallend={ pics=lrEis.xpm << lrEisFallend.land={ hitze=0; kind=lrEis; }; lrEisFallend={ 0;A;* }; >> } lrEis={ pics=lrEis.xpm << var status; lrEis={ tradeheat; #if ou1 >= 5 -> status += ou1; status += ou1; coolfast; switch { status >= 400 -> { E*; kind=nothing }; -> { pos=status/100+1; *}; }; }; lrEis.init={ status=-1; hitze=0; }; lrEis.land={ status=0; }; >> } lrKamin={ pics=lrKamin.xpm << lrKamin={ ao = kind@( 0,-1) == lrKamin || kind@( 0,-1) == lrOfen; ar = kind@( 1, 0) == lrKamin || kind@( 1, 0) == lrOfen; au = kind@( 0, 1) == lrKamin || kind@( 0, 1) == lrOfen; al = kind@(-1, 0) == lrKamin || kind@(-1, 0) == lrOfen; freio = (kind@(-1,-1) == nothing || kind@(-1,-1) == lrEis) && (kind@(1,-1) == nothing || kind@(1,-1) == lrEis); freim = (kind@(-1,0) == nothing || kind@(-1,0) == lrEis) && (kind@(1,0) == nothing || kind@(1,0) == lrEis); freiu = (kind@(-1,1) == nothing || kind@(-1,1) == lrEis) && (kind@(1,1) == nothing || kind@(1,1) == lrEis); switch { falling -> Z; kind@(0,-1) == nothing || kind@(0,-1) == lrEis -> { switch { au && freim && freiu && kind@(0,1) == lrKamin -> U; !ar && !au && !al -> a; ar && !au && !al -> R; ar && !au && al -> S; !ar && !au && al -> T; !ar && au && !al -> Q; ar && au && !al -> V; ar && au && al -> W; !ar && au && al -> X; }; switch { rauch > 0 && ofen_an < 24 -> ofen_an += 12; rauch == 0 && ofen_an > 0 -> ofen_an -= 12; }; switch { pos == 20 -> rauch -= 3; pos != 18 -> rauch -= 1; }; switch { rauch < 0 -> rauch = 0; }; pos += ofen_an; }; -> { switch { ao && au && freio && freim -> { switch { freiu && kind@(0,1) == lrKamin -> b; -> Y; }; }; !ao && !ar && !au && !al -> A; !ao && ar && !au && !al -> B; !ao && ar && !au && al -> C; !ao && !ar && !au && al -> D; !ao && !ar && au && !al -> E; !ao && ar && au && !al -> F; !ao && ar && au && al -> G; !ao && !ar && au && al -> H; ao && !ar && au && !al -> I; ao && ar && au && !al -> J; ao && ar && au && al -> K; ao && !ar && au && al -> L; ao && !ar && !au && !al -> M; ao && ar && !au && !al -> N; ao && ar && !au && al -> O; ao && !ar && !au && al -> P; }; }; }; switch{ rauch@(0,0) <= -1 || rauch@(0,1) <= -1 || rauch@(1,0) <= -1 -> { rauch@(0,0)=0;}; -> { if kind@(0,1) == lrKamin -> { # switch{ rauch@(0,1) >= rauch@(0,0) ->{temp=(2*(- rauch@(0,0) + rauch@(0,1) )+2)/3;};->{temp=(- rauch@(0,0)+rauch@(0,1) +2)/3;};}; switch{ rauch@(0,1) >= rauch@(0,0) ->{ temp= rauch@(0,1); temp-=rauch@(0,0); temp*=2; temp+=2; temp/=3; };->{ temp=rauch@(0,1)+2; temp -= rauch@(0,0); temp /= 3; }; }; rauch@(0,1) -= temp; rauch@(0,0) += temp; }; if kind@(1,0) == lrKamin -> { temp=rauch@(1,0)+2; temp -= rauch@(0,0); temp /= 3; # temp=(-rauch@(0,0)+rauch@(1,0)+2)/3; rauch@(1,0) -= temp; rauch@(0,0) += temp; }; };}; ou2=rauch; *; }; >> } lrOfen={ pics=lrOfen.xpm << heating={ pos = 3; hitze+=100; switch{ hitze >= 900 -> hitze=900; }; }; lrOfen={ # Pos wird missbraucht als Zielwert fr ofen_an pos = hitze / 200; switch { pos > 1 -> pos = 1; }; switch { kind@(0,-1) == lrKamin && rauch@(0,-1) <= 30 -> { heating; rauch@(0,-1) += 2;}; }; switch { 1:2 ->{ if kind@(1,0) == lrKamin && rauch@(1,0) <= 30 -> {heating; rauch@(1,0) += 2 }; if kind@(-1,0) == lrKamin && rauch@(-1,0) <= 30 -> {heating; rauch@(-1,0) += 2 }; }; ->{ if kind@(-1,0) == lrKamin && rauch@(-1,0) <= 30 -> {heating; rauch@(-1,0) += 2 }; if kind@(1,0) == lrKamin && rauch@(1,0) <= 30 -> {heating; rauch@(1,0) += 2 }; }; }; if kind@(0,1) == lrKamin && rauch@(0,1) <= 30 -> {heating; rauch@(0,1) += 2 }; # Heat water-pipes: tradeheat; coolfast; switch { ofen_an < pos -> ofen_an += 1; ofen_an > pos -> ofen_an -= 1; }; pos = ofen_an; *; }; >> } } cuyo-2.1.0/data/ascii.ld0000644000175000017500000000766212374110104011740 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # iaApple.xpm[.gz], iaAusdruck.xpm[.gz], iaBefehl.xpm[.gz], iaError.xpm[.gz], # iaGrau.xpm[.gz], iaSchrift.xpm[.gz], iaString.xpm[.gz], iaZahl.xpm[.gz], # iaZeug.xpm[.gz] # ASCII={ name="ASCII" author="Immi" numexplode=6 chaingrass=0 pics=iaBefehl,iaAusdruck,iaString,iaZahl bgcolor=0,0,0 textcolor=239,206,139 topcolor=0,0,0 toppic=iaApple.xpm toptime=50 startpic=iaError.xpm greypic=iaGrau.xpm startdist="ABCDEFGHIJ" # TRANSLATORS: "basic" is a pun on the programming language BASIC. description="A very basic level" << # links / rechts sagt, wie viele weiter Blobs links / rechts # von einem Blob von der gleichen Sorte sind. # Wird etwas verzgert berechnet. var links, rechts; calc_li_re={ switch { ??????0? -> links = 0; ??????1? -> {links = links@(-1,0); links += 1}; }; switch { ??0????? -> rechts = 0; ??1????? -> {rechts = rechts@(1,0); rechts += 1}; }; }; unterstrich=[file=1] { #switch { # ????1??? -> A*; #}; schema5; switch { loc_x == 0 -> F*; }; }; ############### iaBefehl={ # TO # INPUT # NEXT:END #:GOTO 340 calc_li_re; unterstrich; rechts %= 3; switch { links == 0 && rechts == 0 -> A; links == 0 && rechts == 1 -> B; links == 1 && rechts == 0 -> C; links == 0 && rechts == 2 -> D; links == 1 && rechts == 1 -> E; links == 2 && rechts == 0 -> F; rechts == 2 -> G; rechts == 1 -> H; rechts == 0 -> I; }; *; }; # Ende Befehl iaString={ # "" # "yes" # "type n" # y, a, c, calc_li_re; unterstrich; # rechts: 0, 1, 2, 3, 4, 2, 3, 4, 2, 3 switch { rechts >= 5 -> rechts -= 3; }; switch { ??0???0? -> A; links == 0 && rechts == 1 -> B; links == 1 && rechts == 0 -> C; links == 0 -> D; links == 1 -> E; rechts == 0 -> F; rechts == 1 || rechts == 4 -> G; rechts == 2 -> H; rechts == 3 -> I; }; *; }; # Ende String iaAusdruck={ # ?N # ?Y+DY # ?TAB(X1) #;A$(P-Q0) calc_li_re; unterstrich; rechts %= 3; switch { links == 0 && rechts == 0 -> A; links == 0 && rechts == 1 -> B; links == 1 && rechts == 0 -> C; links == 0 && rechts == 2 -> D; links == 1 && rechts == 1 -> E; links == 2 && rechts == 0 -> F; rechts == 2 -> G; rechts == 1 -> H; rechts == 0 -> I; }; *; }; # Ende Ausdruck iaZahl={ # 42 # -4096 # 7380.1E12 calc_li_re; unterstrich; switch { links == 0 && rechts == 0 -> A; links == 0 -> B; links == 1 && rechts == 0 -> C; rechts == 0 -> F; links == rechts || links == rechts + 1 -> E; links % 2 == 0 -> C; -> D; }; *; }; # Ende Zahl >> iaBefehl={ pics=iaBefehl.xpm,iaZeug.xpm } iaAusdruck={ pics=iaAusdruck.xpm,iaZeug.xpm } iaString={ pics=iaString.xpm,iaZeug.xpm } iaZahl={ pics=iaZahl.xpm,iaZeug.xpm } } cuyo-2.1.0/data/zahn.ld0000644000175000017500000001255411671742021011614 00000000000000# # Copyright 2005,2010 by Mark Weyer # Modified 2006 by Mark Weyer # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Zahn={ name="Teeth" author="Mark Weyer" numexplode=6 toptime=100 pics=Zahn greypic=Grau startpic=Start startdist="**********","**********","**********" bgcolor=0,0,0 chaingrass=0 topcolor=255,255,170 textcolor=204,204,136 randomgreys[1]=100 neighbours= << var oben,unten,links,rechts,obenlinks, untenlinks,obenrechts,untenrechts, zwischenablage; Drehen = { zwischenablage = oben; oben = obenlinks; obenlinks = links; links = untenlinks; untenlinks = unten; unten = untenrechts; untenrechts = rechts; rechts = obenrechts; obenrechts = zwischenablage; }; Dreh_vor = {Drehen; Drehen;}; Dreh_zufaellig = { if 1:2 -> {Dreh_vor; Dreh_vor;}; if 1:2 -> Dreh_vor; if 1:2 -> Drehen; }; Zahn = { switch { turn==0 -> { file = 2*behaviour.goalblob; qu=Q_TL; if links -> if ??????1? && rechts@(-1,0) -> pos=2 else pos=1 else pos=0; if oben -> {if 1??????? && unten@(0,-1) -> pos+=6 else pos+=3;}; if obenlinks -> {if ???????1 && untenrechts@(-1,-1) -> pos+=18 else pos+=9;}; *; qu=Q_TR; if rechts -> if ??1????? && links@(1,0) -> pos=2 else pos=1 else pos=0; if oben -> {if 1??????? && unten@(0,-1) -> pos+=6 else pos+=3;}; if obenrechts -> {if ?1?????? && untenlinks@(1,-1) -> pos+=18 else pos+=9;}; *; qu=Q_BL; if links -> if ??????1? && rechts@(-1,0) -> pos=2 else pos=1 else pos=0; if unten -> {if ????1??? && oben@(0,1) -> pos+=6 else pos+=3;}; if untenlinks -> {if ?????1?? && obenrechts@(-1,1) -> pos+=18 else pos+=9;}; *; qu=Q_BR; if rechts -> if ??1????? && links@(1,0) -> pos=2 else pos=1 else pos=0; if unten -> {if ????1??? && oben@(0,1) -> pos+=6 else pos+=3;}; if untenrechts -> {if ???1???? && obenlinks@(1,1) -> pos+=18 else pos+=9;}; *; }; turn==1 -> { file=1; qu=Q_TL; if rechts -> pos=1 else pos=0; if obenrechts -> pos+=2; if obenlinks -> pos+=4; if oben -> pos+=8; *; qu=Q_TR; if rechts -> pos=1 else pos=0; if obenrechts -> pos+=2; if untenrechts -> pos+=4; if unten -> pos+=8; *; qu=Q_BL; if links -> pos=1 else pos=0; if untenlinks -> pos+=2; if obenlinks -> pos+=4; if oben -> pos+=8; *; qu=Q_BR; if links -> pos=1 else pos=0; if untenlinks -> pos+=2; if untenrechts -> pos+=4; if unten -> pos+=8; *; }; turn==2 -> { file=1; qu=Q_TL; if links -> pos=17 else pos=16; if obenrechts -> pos+=2; if obenlinks -> pos+=4; if oben -> pos+=8; *; qu=Q_TR; if rechts -> pos=17 else pos=16; if obenrechts -> pos+=2; if untenrechts -> pos+=4; if oben -> pos+=8; *; qu=Q_BL; if links -> pos=17 else pos=16; if untenlinks -> pos+=2; if obenlinks -> pos+=4; if unten -> pos+=8; *; qu=Q_BR; if rechts -> pos=17 else pos=16; if untenlinks -> pos+=2; if untenrechts -> pos+=4; if unten -> pos+=8; *; }; }; }; Zahn.turn = {Dreh_vor;}; Zahn.connect = { inhibit=0; if !links -> inhibit+=DIR_L; if !rechts -> inhibit+=DIR_R; if !oben -> inhibit+=DIR_U; if !unten -> inhibit+=DIR_D; if !obenlinks -> inhibit+=DIR_UL; if !obenrechts -> inhibit+=DIR_UR; if !untenlinks -> inhibit+=DIR_DL; if !untenrechts -> inhibit+=DIR_DR; }; Init_drei = { oben=1; links=1; untenrechts=1; Dreh_zufaellig; }; Start.init = { kind=Zahn; behaviour.+=goalblob; Init_drei; }; Zahn.init = { oben = 1; Dreh_zufaellig; oben = 1; Dreh_zufaellig; oben = 1; Dreh_zufaellig; oben = 1; Dreh_zufaellig; }; Grau.init = { kind=Zahn; Init_drei; }; >> Zahn = {pics=mzZahn.xpm, mzZahnDreh.xpm, mzZahnGras.xpm} Grau = {} Start = {} } cuyo-2.1.0/data/xtradick.ld0000644000175000017500000001446711672457345012507 00000000000000# # Copyright 2006 by Bernhard Seckinger, Bilder: Daniela Lipps # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bxBaer104.xpm[.gz], bxBaer112.xpm[.gz], bxBaer120.xpm[.gz], # bxBaer128.xpm[.gz], bxBaer136.xpm[.gz], bxBaer144.xpm[.gz], # bxBaer152.xpm[.gz], bxBaer160.xpm[.gz], bxBaer32.xpm[.gz], # bxBaer40.xpm[.gz], bxBaer48.xpm[.gz], bxBaer56.xpm[.gz], bxBaer64.xpm[.gz], # bxBaer72.xpm[.gz], bxBaer80.xpm[.gz], bxBaer88.xpm[.gz], bxBaer96.xpm[.gz], # bxBall104.xpm[.gz], bxBall112.xpm[.gz], bxBall120.xpm[.gz], # bxBall128.xpm[.gz], bxBall136.xpm[.gz], bxBall144.xpm[.gz], # bxBall152.xpm[.gz], bxBall160.xpm[.gz], bxBall32.xpm[.gz] # bxBall40.xpm[.gz], bxBall48.xpm[.gz], bxBall56.xpm[.gz], bxBall64.xpm[.gz], # bxBall72.xpm[.gz], bxBall80.xpm[.gz], bxBall88.xpm[.gz], bxBall96.xpm[.gz], # bxBuch104.xpm[.gz], bxBuch112.xpm[.gz], bxBuch120.xpm[.gz], # bxBuch128.xpm[.gz], bxBuch136.xpm[.gz], bxBuch144.xpm[.gz], # bxBuch152.xpm[.gz], bxBuch160.xpm[.gz], bxBuch32.xpm[.gz], # bxBuch40.xpm[.gz], bxBuch48.xpm[.gz], bxBuch56.xpm[.gz], bxBuch64.xpm[.gz], # bxBuch72.xpm[.gz], bxBuch80.xpm[.gz], bxBuch88.xpm[.gz], bxBuch96.xpm[.gz], # bxKlotz104.xpm[.gz], bxKlotz112.xpm[.gz], bxKlotz120.xpm[.gz], # bxKlotz128.xpm[.gz], bxKlotz136.xpm[.gz], bxKlotz144.xpm[.gz], # bxKlotz152.xpm[.gz], bxKlotz160.xpm[.gz], bxKlotz32.xpm[.gz], # bxKlotz40.xpm[.gz], bxKlotz48.xpm[.gz], bxKlotz56.xpm[.gz], # bxKlotz64.xpm[.gz], bxKlotz72.xpm[.gz], bxKlotz80.xpm[.gz], # bxKlotz88.xpm[.gz], bxKlotz96.xpm[.gz], bxLok104.xpm[.gz], # bxLok112.xpm[.gz], bxLok120.xpm[.gz], bxLok128.xpm[.gz], bxLok136.xpm[.gz], # bxLok144.xpm[.gz], bxLok152.xpm[.gz], bxLok160.xpm[.gz], bxLok32.xpm[.gz], # bxLok40.xpm[.gz], bxLok48.xpm[.gz], bxLok56.xpm[.gz], bxLok64.xpm[.gz], # bxLok72.xpm[.gz], bxLok80.xpm[.gz], bxLok88.xpm[.gz], bxLok96.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # FS: Bildchen fr Graue: Messer und Gabel # FS: Bildchen fr Gras: Armee-Spielzeug # FS: Hintergrundfarben und Feinjustierung Xtradick = { #------------------------------------# # Allgemeine Beschreibung des Levels # #------------------------------------# name = "Extra fat toys" author = "Berni/Jela" description = "What do they do?" pics = All * 5 greypic = Buchstabe startpic = blFragezeichen.xpm startdist = "AAAAAAAAAA" numexplode = 4 chaingrass = 1 bgcolor = 201,183,128 topcolor = 0,0,0 topoverlap = 0 toptime = 30 randomgreys[1] = 50 << var size = 0, animated = 0, step = 0, xx,yy; semiglobal = { switch { 1:5 -> { xx = rnd(10); yy = rnd(20); }; -> { xx = -1; yy = -1; }; }; }; >> All = { pics = bxBaer32.xpm,bxBaer40.xpm,bxBaer48.xpm,bxBaer56.xpm,bxBaer64.xpm,bxBaer72.xpm, bxBaer80.xpm,bxBaer88.xpm,bxBaer96.xpm,bxBaer104.xpm,bxBaer112.xpm,bxBaer120.xpm, bxBaer128.xpm,bxBaer136.xpm,bxBaer144.xpm,bxBaer152.xpm,bxBaer160.xpm, bxBall32.xpm,bxBall40.xpm,bxBall48.xpm,bxBall56.xpm,bxBall64.xpm,bxBall72.xpm, bxBall80.xpm,bxBall88.xpm,bxBall96.xpm,bxBall104.xpm,bxBall112.xpm,bxBall120.xpm, bxBall128.xpm,bxBall136.xpm,bxBall144.xpm,bxBall152.xpm,bxBall160.xpm, bxBuch32.xpm,bxBuch40.xpm,bxBuch48.xpm,bxBuch56.xpm,bxBuch64.xpm,bxBuch72.xpm, bxBuch80.xpm,bxBuch88.xpm,bxBuch96.xpm,bxBuch104.xpm,bxBuch112.xpm,bxBuch120.xpm, bxBuch128.xpm,bxBuch136.xpm,bxBuch144.xpm,bxBuch152.xpm,bxBuch160.xpm, bxLok32.xpm,bxLok40.xpm,bxLok48.xpm,bxLok56.xpm,bxLok64.xpm,bxLok72.xpm, bxLok80.xpm,bxLok88.xpm,bxLok96.xpm,bxLok104.xpm,bxLok112.xpm,bxLok120.xpm, bxLok128.xpm,bxLok136.xpm,bxLok144.xpm,bxLok152.xpm,bxLok160.xpm, bxKlotz32.xpm,bxKlotz40.xpm,bxKlotz48.xpm,bxKlotz56.xpm,bxKlotz64.xpm,bxKlotz72.xpm, bxKlotz80.xpm,bxKlotz88.xpm,bxKlotz96.xpm,bxKlotz104.xpm,bxKlotz112.xpm,bxKlotz120.xpm, bxKlotz128.xpm,bxKlotz136.xpm,bxKlotz144.xpm,bxKlotz152.xpm,bxKlotz160.xpm << startanimation = { step = 1; animated=1; }; stepper = { switch { step == 1..16 -> {size = step; step +=1; }; ## 1..16 step == 17..26 -> {size = 16; step +=1; }; ## 16 step == 27..32 -> {size = 42-step; step +=1; }; ## 15..10 step == 33..38 -> {size = step-22; step +=1; }; ## 11..16 step == 39..53 -> {size = 54-step; step +=1; }; ## 15..1 step >= 54 -> {size = 0; step = 0; animated=0;}; ## 0 }; }; All = { switch { falling -> {file = kind*17;A*;}; -> { file = kind*17+size; switch { size == 0 -> A*; size == 1..8 -> { A*@(-1,-1); B*@( 0,-1); C*@( 1,-1); D*@(-1, 0); E*@( 0, 0); F*@( 1, 0); G*@(-1, 1); H*@( 0, 1); I*@( 1, 1); }; size > 8 -> { A*@(-2,-2); B*@(-1,-2); C*@( 0,-2); D*@( 1,-2); E*@( 2,-2); F*@(-2,-1); G*@(-1,-1); H*@( 0,-1); I*@( 1,-1); J*@( 2,-1); K*@(-2, 0); L*@(-1, 0); M*@( 0, 0); N*@( 1, 0); O*@( 2, 0); P*@(-2, 1); Q*@(-1, 1); R*@( 0, 1); S*@( 1, 1); T*@( 2, 1); U*@(-2, 2); V*@(-1, 2); W*@( 0, 2); X*@( 1, 2); Y*@( 2, 2); }; }; if loc_x==xx@@ && loc_y==yy@@ -> startanimation; stepper; }; }; }; >> } Buchstabe = {pics = blBuchstabe.xpm <>} } # End of Xtradick cuyo-2.1.0/data/silbergold.ld0000644000175000017500000000777412402326334013010 00000000000000# # Copyright 2005,2006,2011,2014 by Mark Weyer # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SilberGold={ name="Silver and Gold" author="Mark Weyer" numexplode=4 numexplode[easy]=3 chaingrass=0 pics=silber,gold,silbergold,goldsilber bgcolor=0,0,0 topcolor=255,255,255 textcolor=255,0,0 toptime=200 startpic=mgsWeiss.xpm startdist=".**.**.**.","**********","**********" startdist[easy]=".**.**.**.","**********" neighbours= speed=6 speed[easy]=3 << semiglobal.init = {falling_speed=speed;}; # Bei den 8 Malroutinen muss vorher file auf die Farbe gesetzt sein. llo = { qu=Q_TL; if kind==kind@(-2,-1) -> {B*; [file=0]{ C;@(-1,0)*; D;*@(-1,0); qu=Q_TR; C;@(-1,0)*; D;*@(-1,0); }} else A*; }; loo = { qu=Q_TL; if kind==kind@(-1,-2) -> {B*; [file=1]{ C;@(0,-1)*; D;*@(0,-1); qu=Q_BL; C;@(0,-1)*; D;*@(0,-1); }} else A*; }; roo = { qu=Q_TR; if kind==kind@(1,-2) -> {B*; [file=1]{ A;@(0,-1)*; B;*@(0,-1); qu=Q_BR; A;@(0,-1)*; B;*@(0,-1); }} else A*; }; rro = { qu=Q_TR; if kind==kind@(2,-1) -> {B*; [file=0]{ A;@(1,0)*; B;*@(1,0); qu=Q_TL; A;@(1,0)*; B;*@(1,0); }} else A*; }; rru = { qu=Q_BR; if kind==kind@(2,1) -> {B*; [file=0]{ C;@(1,0)*; D;*@(1,0); qu=Q_BL; C;@(1,0)*; D;*@(1,0); }} else A*; }; ruu = { qu=Q_BR; if kind==kind@(1,2) -> {B*; [file=1]{ C;@(0,1)*; D;*@(0,1); qu=Q_TR; C;@(0,1)*; D;*@(0,1); }} else A*; }; luu = { qu=Q_BL; if kind==kind@(-1,2) -> {B*; [file=1]{ A;@(0,1)*; B;*@(0,1); qu=Q_TL; A;@(0,1)*; B;*@(0,1); }} else A*; }; llu = { qu=Q_BL; if kind==kind@(-2,1) -> {B*; [file=0]{ A;@(-1,0)*; B;*@(-1,0); qu=Q_BR; A;@(-1,0)*; B;*@(-1,0); }} else A*; }; >> silber = { pics = mgsSilber.xpm, mgsSilberVerbind.xpm greyprob=1 << default inhibit = DIR_LLU+DIR_LLD+DIR_RRD+DIR_RRU : reapply; silber = { 0; loo; roo; ruu; luu; if informational && 1:5 => {,,,,,kind=silber+rnd(4)}; }; >> } gold = { pics = mgsGoldVerbind.xpm, mgsGold.xpm greyprob=1 << default inhibit = DIR_UUL+DIR_DDL+DIR_DDR+DIR_UUR : reapply; gold = { 1; llo; rro; rru; llu; if informational && 1:5 => {,,,,,kind=silber+rnd(4)}; }; >> } silbergold = { pics = mgsGoldVerbind.xpm, mgsSilberVerbind.xpm, mgsSilberGold.xpm greyprob=1 << default inhibit = DIR_UUL+DIR_LLD+DIR_DDR+DIR_RRU : reapply; silbergold = { 2; llo; roo; rru; luu; if informational && 1:5 => {,,,,,kind=silber+rnd(4)}; }; >> } goldsilber = { pics = mgsGoldVerbind.xpm, mgsSilberVerbind.xpm, mgsGoldSilber.xpm greyprob=1 << default inhibit = DIR_LLU+DIR_DDL+DIR_RRD+DIR_UUR : reapply; goldsilber = { 2; loo; rro; ruu; llu; if informational && 1:5 => {,,,,,kind=silber+rnd(4)}; }; >> } } cuyo-2.1.0/data/mfs.ld0000644000175000017500000000632412402160024011425 00000000000000# # Copyright 2009 by Konrad Voelkel # Modified 2011 by Mark Weyer # Maintenance modifications 2010,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # kmBier.xpm[.gz], kmHetzstapel.xpm[.gz], kmMuell.xpm[.gz], kmPizza.xpm[.gz], # kmSofa.xpm[.gz], kmTafelgrund.xpm[.gz], kmTasse.xpm[.gz] # mfs={ name="mfs" author="Konrad" numexplode=5 chaingrass=0 pics=pizza,bier,sofa bgcolor=29,48,53 bgpic=kmTafelgrund.xpm topcolor=0,0,0 toptime=50 toppic=kmHetzstapel.xpm topoverlap=0 startpic=muell startdist="A.........", "A....A....", "AA...AA..A","-*%&" greypic=tasse description="Who cleans the room?" << # standard fr sofas: schemahoriz={ switch { ??0???0? -> A; ??1???0? -> B; ??1???1? -> C; ??0???1? -> D; }; * }; # wenn sofas mit verbindungsstreben gewnscht sind: schemasofaspezial={ switch { 0?0???0? -> A; 0?1???0? -> B; 0?1???1? -> C; 0?0???1? -> D; 1?0?1?0? -> E; 1?1?1?0? -> F; 1?1?1?1? -> G; 1?0?1?1? -> H; 1?0?0?0? -> I; 1?1?0?0? -> J; 1?1?0?1? -> K; 1?0?0?1? -> L; }; * }; # standard fr tassen: schemavertx={ switch { 0???0??? -> A; 0???1??? -> E; 1???1??? -> I; 1???0??? -> M; }; pos += version; * }; >> tasse={ pics=kmTasse.xpm numexplode=4 neighbours= << tasse.init = {if rnd(5)==0 -> version = rnd(4) else version = 0;}; default behaviour = calculate_size+explodes_on_size+explodes_on_explosion : reapply; tasse=schemavertx; >> } pizza={ # still not working properly: # neighbours already explode if they are not merged! # that makes the level much easier. pics=kmPizza.xpm numexplode=7 << pizza.init = {weight = 1;}; default inhibit = DIR_L + DIR_R + DIR_U + DIR_D : reapply; pizza={ if kind@(0,-1)==pizza && weight<4 && weight@(0,-1)>0 -> { weight += 1; weight@(0,-1) -= 1; } else { # explosiv werden: inhibit = DIR_UL + DIR_UR + DIR_DR + DIR_DL; }; if falling -> {A*;} else { pos=weight; if weight==0 -> kind=nothing else *; } }; >> } sofa={ pics=kmSofa.xpm neighbours= << sofa=schemahoriz; >> } bier={ pics=kmBier.xpm << bier=*; >> } muell={ pics=kmMuell.xpm << muell=*; >> } info={ pics=infoicons.xpm << info={ if version==0 -> A else { E,E,E,E,E,E,E,E,E, M,M,M,M,M,M,M,M,M, N,N,N,N,N,N,N,N,N }; * }; >> } } cuyo-2.1.0/data/pacman.ld0000644000175000017500000003365612417277710012130 00000000000000# # Copyright <=2011 by Simon Huggenberger # Maintenance modifications 2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # spBlinky.xpm[.gz], spClyde.xpm[.gz], spEyes.xpm[.gz], spGhost.xpm[.gz], # spInkey.xpm[.gz], spLabyrinth.xpm[.gz], spPacman10.xpm[.gz], # spPacman11.xpm[.gz], spPacman2.xpm[.gz], spPacman3.xpm[.gz], # spPacman4.xpm[.gz], spPacman5.xpm[.gz], spPacman6.xpm[.gz], # spPacman7.xpm[.gz], spPacman8.xpm[.gz], spPacman9.xpm[.gz], # spPacman.xpm[.gz], spPfeil.xpm[.gz], spPinky.xpm[.gz] # Pacman={ name="Pacman" author="Simon" numexplode=3 numexplode1=3 chaingrass=1 pics=spUp,spRight,spDown,spLeft,spLife bgcolor=0,0,0 topcolor=0,0,191 toptime=50 startpic=spLabyrinth startdist="GMGKMGKMGM","FFDOJDOJFF","DNGPKKPMHJ","KPJFQIFDPK", "GLKNGMHKLM","DKKLJDLKKJ" greypic=ilTuer.xpm textcolor=127,255,255 topoverlap=0 description="Wanna play Pacman?" # schnellere 180er-Wende # halbe Kekse entfernen # gefangener Geist/ ausbrechender Geist # version "andert Labyrinth # individuelle Verfolgung # schnellere Animation # Wiederauferstehung Pacmans << var pacman,ghost,blinky,clyde,inkey,pinky; var keks,move,chmove,pac_x,pac_y; var wayo,wayr,wayu,wayl,ways; global = { switch {pacman<10 -> 0,0,0,0,0,0,1,0,0,0,0,0,0,2; => {0; pacman = 11},{0; pacman = 0},0,0,0,0,0,0,0,0,0,0,0,0,0;}; move = file; switch {1:200 -> keks = 1;}; switch {move==2 -> { switch {blinky==1..32 -> blinky -= 1;}; switch {pinky==1..32 -> pinky -= 1;}; switch {inkey==1..32 -> inkey -= 1;}; switch {clyde==1..32 -> clyde -= 1;}; switch {keks==1..16 -> keks -= 1;}; };}; switch {move>=1 && pacman==1..9 -> pacman += 1;} }; spLabyrinth.init = { pacman@ = 11; switch {version!=16 -> {keks = 1; ways = version}; -> {ways = 2; wayr = 1; keks = 16; keks@(1,0) = 0}; }; switch {version%2==1 -> wayo = 1;}; switch {version%4>=2 -> {wayr = 1; keks += 2};}; switch {version%8>=4 -> {wayu = 1; keks += 4};}; switch {version%16>=8 -> wayl = 1;}; switch {(loc_x==0 || loc_x==9)&&(loc_y==16 || loc_y==19) -> keks+=7;}; }; spLife.init = kind = rnd(5); spUp.turn = kind = spRight; spRight.turn = kind = spDown; spDown.turn = kind = spLeft; spLeft.turn = kind = spUp; labstart = switch { keks@(0,0)==16 -> {pinky = 10; inkey = 12}; keks@(-1,0)==16 -> {pinky = 14; clyde = 12}; keks@(0,-1)==16 -> pacman = 10; keks@(-1,-1)==16 -> pacman = 14; keks@(0,1)==16 -> blinky = 10; keks@(-1,1)==16 -> blinky = 14; } ; labmove = { switch { move%2==0 -> A; move%8>=4 -> B; -> C; }; switch { move==9..16 -> pos += 3; move==17..24 -> pos += 6; move>=25 -> pos += 9; }; switch { move%8==3..5 -> *; move==6..7 || move==9..10 -> {qu = Q_TL_TR; *; qu = Q_BL_BR; *}; move==1..2 || move==14..15 -> {qu = Q_TR_TL; *; qu = Q_BR_BL; *}; move==22..23 || move==25..26 -> {qu = Q_BL_TL; *; qu = Q_BR_TR; *}; move==17..18 || move==30..31 -> {qu = Q_TL_BL; *; qu = Q_TR_BR; *}; }; switch {move@>=1 -> move += 1;}; qu = Q_ALL }; labmov = {labmove; switch {move@==1 -> move -= 1;}}; labvom = { switch { move<=16 -> {move = 16-move; labmove; move = 16-move}; -> {move = 48-move; labmove; move = 48-move}; }; switch {move@>=1 -> move += move@;} }; wandmove = { switch { ways==0 -> move@(0,0) = move; ways==1 -> move = 20; ways==2 -> move = 4; ways==3 -> switch {1:2 -> move = 20; -> move = 4;}; ways==4 -> move = 28; ways==5 -> switch {1:2 -> move = 20; -> move = 28;}; ways==6 -> switch {1:2 -> move = 4; -> move = 28;}; ways==7 -> switch {1:3 -> move = 20; 1:2 -> move = 4; -> move = 28;}; ways==8 -> move = 12; ways==9 -> switch {1:2 -> move = 20; -> move = 12;}; ways==10 -> switch {1:2 -> move = 4; -> move = 12;}; ways==11 -> switch {1:3 -> move = 20; 1:2 -> move = 4; -> move = 12;}; ways==12 -> switch {1:2 -> move = 28; -> move = 12;}; ways==13 -> switch {1:3 -> move = 20; 1:2 -> move = 28; -> move = 12;}; ways==14 -> switch {1:3 -> move = 4; 1:2 -> move = 28; -> move = 12;}; ways==15 -> switch {1:4 -> move = 20; 1:3 -> move = 4; 1:2 -> move = 28; -> move = 12;}; }; }; labwand = { switch { move@>=1 && move==4 && wayr==0 -> wandmove; move@>=1 && move==12 && wayl==0 -> wandmove; move@>=1 && move==20 && wayo==0 -> wandmove; move@>=1 && move==28 && wayu==0 -> wandmove; }; }; fressen = { keks -= 8; switch {blinky@!=33 -> blinky@ = 32;}; switch {pinky@!=33 -> pinky@ = 32;}; switch {inkey@!=33 -> inkey@ = 32;}; switch {clyde@!=33 -> clyde@ = 32;}; }; labkoll = { switch {pacman>=move -> chmove=pacman; -> {chmove=move; move=pacman};}; switch {move==9..23 -> move = 32-move;}; switch {chmove==9..23 -> chmove = 32-chmove;}; switch {move>16 -> move -= 16;}; switch {chmove>16 -> chmove -= 16;}; switch {(chmove-move<=2 && move-chmove<=2) || (chmove==10..14 && move==3..5) || (chmove==11..13 && move==2..6) -> switch {ghost==0 && blinky@==1..32 -> blinky@ = 33; ghost==0 && blinky@==0 -> pacman@ = 1;}; } }; labpacman = { switch {pacman@>=1 -> file = pacman@+7; -> 1;}; move = pacman; labmove; pacman = move; switch {move@>=1 -> { switch { pacman==6 -> switch {loc_x==9 -> pacman@(-9,0) = 2; -> pacman@(1,0) = 2;}; pacman==14 -> switch {loc_x==0 -> pacman@(9,0) = 10; -> pacman@(-1,0) = 10;}; pacman==22 -> pacman@(0,-1) = 18; pacman==30 -> pacman@(0,1) = 26; }; switch { wayr==0 && pacman==5 -> pacman -= 1; wayl==0 && pacman==13 -> pacman -= 1; wayo==0 && pacman==21 -> pacman -= 1; wayu==0 && pacman==29 -> pacman -= 1; pacman@>=1 -> pacman -= 1; }; switch {pacman%8==4 => { switch { chmove@==1 && wayo==1 -> {pacman = 20; chmove@ = 0}; chmove@==2 && wayr==1 -> {pacman = 4; chmove@ = 0}; chmove@==3 && wayu==1 -> {pacman = 28; chmove@ = 0}; chmove@==4 && wayl==1 -> {pacman = 12; chmove@ = 0}; }; switch {keks%2==1 -> keks -= 1; keks==8..14 => fressen;} };}; switch {keks%4>=2 && (pacman==7 || pacman==11) -> keks -= 2;}; switch {keks%8>=4 && (pacman==19 || pacman==31) -> keks -= 4;}; switch {pacman%8==2..5 -> { pac_x@ = loc_x; pac_y@ = loc_y; switch {pacman@==0 -> { switch {blinky%8!=0 -> {ghost = 0; move = blinky; labkoll};}; switch {clyde%8!=0 -> {ghost = 3; move = clyde; labkoll};} };} };} };} }; labfollow = { switch { move<=16 -> { switch { 1:2 && move==4 && loc_x<=pac_x@ -> ; 1:2 && move==12 && loc_x>=pac_x@ -> ; wayo==1 && loc_y>=pac_y@ -> move = 20; wayu==1 && loc_y<=pac_y@ -> move = 28; }; }; -> { switch { 1:2 && move==20 && loc_y>=pac_y@ -> ; 1:2 && move==28 && loc_y<=pac_y@ -> ; wayr==1 && loc_x<=pac_x@ -> move = 4; wayl==1 && loc_x>=pac_x@ -> move = 12; }; }; }; }; labturn = { switch { move==4 && wayl==1 -> {ways -= 8; wandmove; ways += 8}; move==12 && wayr==1 -> {ways -= 2; wandmove; ways += 2}; move==20 && wayu==1 -> {ways -= 4; wandmove; ways += 4}; move==28 && wayo==1 -> {ways -= 1; wandmove; ways += 1}; }; }; labghost = { switch { move%8==4 && (move@==2 || (move@==1 && file>=3)) -> { switch { 2:3 -> labfollow; -> labturn; }; labwand; }; }; switch { file==2 -> switch {move%16>=9 -> labvom; -> labmov;}; file==1 -> {2; switch {move%16<=8 -> labvom; -> labmov;};}; -> labmove; } }; labblinky = { switch { blinky@==2..10 && blinky@%2==0 -> 1; blinky@==1..32 -> 2; blinky@==33 -> 3; -> 4; }; move = blinky; labghost; blinky = move; switch {move@>=1 -> switch { blinky==5 -> switch {loc_x==9 -> blinky@(-9,0) = 1; -> blinky@(1,0) = 1;}; blinky==13 -> switch {loc_x==0 -> blinky@(9,0) = 9; -> blinky@(-1,0) = 9;}; blinky==21 -> blinky@(0,-1) = 17; blinky==29 -> blinky@(0,1) = 25; };} }; labpinky = { 5; switch {pinky%8!=0 -> {move = pinky; labghost; pinky = move};}; switch {move@>=1 -> switch { pinky==5 -> switch {loc_x==9 -> pinky@(-9,0) = 1; -> pinky@(1,0) = 1;}; pinky==13 -> switch {loc_x==0 -> pinky@(9,0) = 9; -> pinky@(-1,0) = 9;}; pinky==21 -> pinky@(0,-1) = 17; pinky==29 -> pinky@(0,1) = 25; };} }; labinkey = { 6; switch {inkey%8!=0 -> {move = inkey; labghost; inkey = move};}; switch {move@>=1 -> switch { inkey==5 -> switch {loc_x==9 -> inkey@(-9,0) = 1; -> inkey@(1,0) = 1;}; inkey==13 -> switch {loc_x==0 -> inkey@(9,0) = 9; -> inkey@(-1,0) = 9;}; inkey==21 -> inkey@(0,-1) = 17; inkey==29 -> inkey@(0,1) = 25; };} }; labclyde = { 7; switch {clyde%8!=0 -> {move = clyde; labghost; clyde = move};}; switch {move@>=1 -> switch { clyde==5 -> switch {loc_x==9 -> clyde@(-9,0) = 1; -> clyde@(1,0) = 1;}; clyde==13 -> switch {loc_x==0 -> clyde@(9,0) = 9; -> clyde@(-1,0) = 9;}; clyde==21 -> clyde@(0,-1) = 17; clyde==29 -> clyde@(0,1) = 25; };} }; pfeil = { schema4; switch { move==1 -> E; move==2 -> F; move==3 -> G; move==4 -> H; }; switch { move==5 -> switch {1:50 => R,R,R,R,R,R,R; -> Q;}; turn==1 -> pos += 4; turn==2 -> pos += 8; }; switch { size>=3 => {1;{chmove@ = move; A},B,C,D,E,F,G,{H; kind@(0,0) = nothing}}; }; * }; >> spPacman = { pics = spPacman.xpm << spPacman = { A; switch {??1????? -> {qu = Q_TL_TR; *; qu = Q_BL_BR; *};}; switch {??????1? -> {qu = Q_TR_TL; *; qu = Q_BR_BL; *};}; qu = Q_ALL; * }; >> } spLabyrinth = { pics = spLabyrinth.xpm, spPacman.xpm, spGhost.xpm, spEyes.xpm, spBlinky.xpm, spPinky.xpm, spInkey.xpm, spClyde.xpm, spPacman2.xpm, spPacman3.xpm, spPacman4.xpm, spPacman5.xpm, spPacman6.xpm, spPacman7.xpm, spPacman8.xpm, spPacman9.xpm, spPacman10.xpm, spPacman11.xpm << spLabyrinth = { if informational -> A* else { switch { wayo==1 -> { switch {0??????? -> {wayo = 0; ways -= 1};}; switch {wayl==1 -> D; -> C;}; qu = Q_TL;*; switch {wayr==1 -> D; -> C;}; qu = Q_TR;*; }; -> { switch {wayu@(0,-1)==1 && 1??????? -> {wayo = 1; ways += 1};}; switch {wayl==1 -> B; -> A;}; qu = Q_TL;*; switch {wayr==1 -> B; -> A;}; qu = Q_TR;*; }; }; switch { wayu==1 -> { switch {????0??? -> {wayu = 0; ways -= 4};}; switch {wayl==1 -> D; -> C;}; qu = Q_BL;*; switch {wayr==1 -> D; -> C;}; qu = Q_BR;*; }; -> { switch {wayo@(0,1)==1 && ????1??? -> {wayu = 1; ways += 4};}; switch {wayl==1 -> B; -> A;}; qu = Q_BL;*; switch {wayr==1 -> B; -> A;}; qu = Q_BR;*; }; }; switch {wayr==0 -> switch {wayl@(1,0)==1 || wayl@(-9,0)==1 -> {wayr = 1; ways += 2};};}; switch {wayl==0 -> switch {wayr@(-1,0)==1 || wayr@(9,0)==1 -> {wayl = 1; ways += 8};};}; switch {wayr==1 && ??0????? && kind@(-9,0)!=spLabyrinth -> {wayr = 0; ways -= 2};}; switch {wayl==1 && ??????0? && kind@(9,0)!=spLabyrinth -> {wayl = 0; ways -= 8};}; qu = Q_ALL; switch {keks@(0,0)%2==1 -> {keks@=1; E*};}; switch {keks@(0,0)%4>=2 -> {keks@=1; qu=Q_TL_TR;E*; qu=Q_BL_BR;E*};}; switch {keks@(-1,0)%4>=2 -> {keks@=1; qu=Q_TR_TL;E*; qu=Q_BR_BL;E*};}; switch {keks@(0,0)%8>=4 -> {keks@=1; qu=Q_TL_BL;E*; qu=Q_TR_BR;E*};}; switch {keks@(0,-1)%8>=4 -> {keks@=1; qu=Q_BL_TL;E*; qu=Q_BR_TR;E*};}; switch {keks@(0,0)==16 -> {qu=Q_TR_TR;F*};}; switch {keks@(-1,0)==16 -> {qu=Q_TL_TL;F*};}; switch {keks@(0,1)==16 -> {qu=Q_BR_BR;F*};}; switch {keks@(-1,1)==16 -> {qu=Q_BL_BL;F*};}; qu = Q_ALL; switch {keks==8..14 => {keks@=1;I,I,J,K,K,J;*};}; switch { pacman@<=10 -> { switch {blinky%8!=0 -> labblinky;}; switch {pinky%8!=0 -> labpinky;}; switch {inkey%8!=0 -> labinkey;}; switch {clyde%8!=0 -> labclyde;}; switch {pacman%8!=0 -> labpacman;}}; -> {pacman=0; blinky=0; pinky=0; inkey=0; clyde=0; labstart}; } } }; >> } spUp = { pics = spPfeil.xpm, explosion.xpm << spUp = {move = 1; pfeil}; >> } spRight = { pics = spPfeil.xpm, explosion.xpm << spRight = {move = 2; pfeil}; >> } spDown = { pics = spPfeil.xpm, explosion.xpm << spDown = {move = 3; pfeil}; >> } spLeft = { pics = spPfeil.xpm, explosion.xpm << spLeft = {move = 4; pfeil}; >> } spLife = { pics = spPfeil.xpm, explosion.xpm << spLife = {move = 5; pfeil; #switch {loc_x==9 -> Z*;} # Ich verstehe nicht, was die vorige Zeile machen sollte... # ausser einen Fehler bewirken. Hab sie mal auskommentiert. -Immi }; >> } } cuyo-2.1.0/data/ebene.ld0000644000175000017500000001077712417277702011747 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ieGelb.xpm[.gz], ieGras.xpm[.gz], ieGrau.xpm[.gz], ieGruen.xpm[.gz], # ieNix.xpm[.gz], ieOben.xpm[.gz], ieRosa.xpm[.gz], ieRot.xpm[.gz] # ieUnten.xpm[.gz] # Ebene={ name="Plane" author="Immi" numexplode=4 numexplode[1]=5 chaingrass=1 randomgreys[1]=100 pics=ieGelb,ieRosa,ieRot,ieGruen textcolor=0,200,200 bgcolor=40,40,40 startpic=ieGras startdist="A.A.A.A.A.","AAAAAAAAAA" greypic=ieGrau emptypic=ieNix neighbours= bgpic=ieUnten.xpm toppic="ieOben.xpm" topoverlap=16 topcolor=0,150,200 toptime=50 << var wasserfall; schemaEbene={ # Default: Kein Wasserfall von diesem Feld aus. Wenn ein Wasserfall # stattfinden soll, muss die Variable nach dem Aufruf von schemaEbene # wieder berschrieben werden. wasserfall = 0; switch { ?????0?0 -> A; ?????1?0 -> C; }; switch { ?????0?1 -> D; ?????1?1 -> B; }; switch {???????0 -> qu=Q_TL_TL; -> qu=Q_BL_TL;}; switch {kind@(-1,-.5)==nothing || kind@(-1,-.5)==outside -> pos += 4;}; *; switch { ?0?1???? -> C; ?1?1???? -> A; }; switch { ?0?0???? -> D; ?1?0???? -> B; }; switch {???1???? -> qu=Q_TR_TR; -> qu=Q_BR_TR;}; switch {kind@(1,-.5)==nothing || kind@(1,-.5)==outside -> pos += 4;}; *; switch { ?????0?0 -> A; ?????1?0 -> C; }; switch { ?????0?1 -> D; ?????1?1 -> B; }; switch {???????0 -> qu=Q_BL_BL; -> qu=Q_TL_BL;}; switch {kind@(-1,.5)==nothing || kind@(-1,.5)==outside -> pos += 4;}; *; switch { ?0?1???? -> C; ?1?1???? -> A; }; switch { ?0?0???? -> D; ?1?0???? -> B; }; switch {???1???? -> qu=Q_BR_BR; -> qu=Q_TR_BR;}; switch {kind@(1,.5)==nothing || kind@(1,.5)==outside -> pos += 4;}; *; }; farbe={ switch { falling -> I*; -> { # Wasserfallstrahl, der von oben vorbei kommt: [qu=Q_BR_TR] switch { wasserfall@(0,-1) == 1 -> J*; wasserfall@(0,-1) == 2 -> K*; wasserfall@(0,-1) == 3 -> L*; }; # Eigentliches Blop schemaEbene; # Wasserfall, der von uns kommt: [qu=Q_TR_BR] switch { wasserfall@(0,0) == 1 -> J*; wasserfall@(0,0) == 2 -> K*; wasserfall@(0,0) == 3 -> L*; }; # Wasserfallberechnung (muss _nach_ schemaEbene stattfinden, weil # in schemaEbene wasserfall auf 0 gesetzt wird) switch { ?001?? && (kind@(1,0.5) == nothing || kind@(1,0.5) == outside) -> { wasserfall = 1, wasserfall = 2, wasserfall = 3; }; }; }; }; }; #exceptions8="10?010?0:N,???010??:J+,10?????0:R+" #animations="[P=J]JKL;[P=N]NOP;[P=R]RST" >> ieNix={ pics=ieNix.xpm << ieNix={ wasserfall = 0; switch { kind@(-1,-.5) != nothing && kind@(-1,-.5) != outside -> [qu=Q_TL_TL] *; }; switch { kind@( 1,-.5) != nothing && kind@( 1,-.5) != outside -> [qu=Q_TR_TR] *; }; switch { kind@(-1, .5) != nothing && kind@(-1, .5) != outside -> [qu=Q_BL_BL] *; }; switch { kind@( 1, .5) != nothing && kind@( 1, .5) != outside -> [qu=Q_BR_BR] *; }; }; >> } ieGrau={ pics=ieGrau.xpm << ieGrau=if informational -> I* else -> schemaEbene; >> } ieGras={ pics=ieGras.xpm << ieGras=if informational -> I* else -> schemaEbene; >> } ieGelb={ pics="ieGelb.xpm" << ieGelb=farbe; >> } ieRosa={ pics="ieRosa.xpm" << ieRosa=farbe; >> } ieRot={ pics=ieRot.xpm << ieRot=farbe; >> } ieGruen={ pics=ieGruen.xpm << ieGruen=farbe; >> } } cuyo-2.1.0/data/Makefile.am0000644000175000017500000000761612422646207012376 00000000000000# # Copyright 2001 by the cuyo developers # Modified 2002,2003,2006-2008,2014 by the cuyo developers # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Nicht angeben, weil da kein Makefile.am drin ist. (Wird nicht bentigt, da # die Bilder von hier aus installiert werden.) # SUBDIRS = pics MAINTAINERCLEANFILES = Makefile.in # Alle .ld-Dateien, die in main.ld erwhnt werden (main.ld erwhnt sich # selbst). Aus irgendeinem Grund wird das mehrfach ausgefhrt. Wenn es # nur um make und nicht um automake ginge, knnte man hier ?= statt := # verwenden und wahrscheinlich wre alles gut. Das kann mal jemand # beheben, der mehr von automake versteht. leveldateien := $(shell ./used_levels.sh) lddateien := $(leveldateien) summary.ld globals.ld example.ld # levels gehren zur Distribution. Und die used-Skripte auch. EXTRA_DIST = $(lddateien) used_images.sh used_sounds.sh used_levels.sh genSummary.pl summary.in # levels in das pkgdata-Verzeichnis installieren pkgdata_DATA = $(lddateien) # Wenn keine Libz existiert, sollen die Bilder beim installieren entpackt # werden: if HASLIBZ unzip = else unzip = gunzip $(DESTDIR)$(pkgdatadir)/pics/*.gz endif # Beim installieren (von prozessorunabhngem) auerdem die Bilder und sounds kopieren: install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pics $(INSTALL_DATA) $(srcdir)/pics/*.png $(DESTDIR)$(pkgdatadir)/pics/ || true $(INSTALL_DATA) $(srcdir)/pics/*.xpm $(DESTDIR)$(pkgdatadir)/pics/ || true $(INSTALL_DATA) $(srcdir)/pics/*.xpm.gz $(DESTDIR)$(pkgdatadir)/pics/ || true $(unzip) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/sounds $(INSTALL_DATA) $(srcdir)/sounds/*.wav $(DESTDIR)$(pkgdatadir)/sounds/ || true $(INSTALL_DATA) $(srcdir)/sounds/*.it $(DESTDIR)$(pkgdatadir)/sounds/ || true # Ach, was soll's: Ich geh davon aus, dass jemand, der Cuyo installiert, # eh nur Bilder hat, die installiert werden sollen. Also braucht nicht # extra nochmal das langsame Bild-Test-Skript gestartet zu werden. (Ansonsten # msste man obige Zeile durch die nachfolgende ersetzen.) # $(INSTALL_DATA) `cat used_images` $(DESTDIR)$(pkgdatadir)/pics/ # Die Bilder sollen auch in die Distribution: Und die Sounds auch dist-hook: used_images used_sounds mkdir $(distdir)/pics cp -p `cat used_images` $(distdir)/pics/ mkdir $(distdir)/sounds cp -p `cat used_sounds` $(distdir)/sounds/ # Ein paar spezielle Make-Regeln: summary.ld: genSummary.pl $(leveldateien) summary.in perl -w genSummary.pl used_levels: summary.ld echo $(leveldateien) > used_levels # Die Bild-Dateien nicht alle einzeln aufzhlen, sondern automatisch # diejenigen nehmen, die in den levels stehen. # Das tut das Skript used_images.sh # Es findet brigens auch die .xpm.gz-Bilder. used_images: used_images.sh summary.in $(lddateien) pics ./used_images.sh $(srcdir) '$(lddateien)' > used_images # Entsprechend die Sounds used_sounds: used_sounds.sh summary.in $(lddateien) sounds ./used_sounds.sh $(srcdir) '$(lddateien)' > used_sounds # Wenn beim Erzeugen einer Datei ein Fehler passiert, soll, falls # trotzdem schon eine halbe Datei erzeugt wurde, diese halbe Datei # geloescht werden. Ist fuer genSummary.pl notwendig (und sollte # eigentlich sowieso der default sein.) .DELETE_ON_ERROR: cuyo-2.1.0/data/flechtwerk.ld0000644000175000017500000000526112402326333013004 00000000000000# # Copyright 2011,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Flechtwerk = { name = "Wickerwork" author = "Mark Weyer" emptypic = Leer pics = Blob*5 greypic = Blob startpic = Gras startdist = "....**....","..******..","**********" numexplode = 3 chaingrass = 1 Blob = {pics = mflAlles.xpm,mflKlein.xpm} Gras = {pics = mflAlles.xpm,mflGrasV.xpm} Leer = {pics = mflAlles.xpm} << var g1=0:reapply, g2=0:reapply, d1=0:reapply, d2=0:reapply, m1=0:reapply, m2=0:reapply; Blob.init = { switch { kind==Blob+5 -> {g1=0; g2=0; d1=0; d2=0; m1=4; m2=4;}; kind==Blob+4 -> {g1=1; g2=1; d1=1; d2=1; m1=1; m2=1;}; -> { g1 = 2 + kind%2; g2 = 2 + (kind>=Blob+2); d1=0; d2=0; m1=g1; m2=g2; }; }; }; Blob = { if falling -> { 1; pos=m1-1; qu=Q_TL; *; qu=Q_BR; *; pos=m2-1; qu=Q_TR; *; qu=Q_BL; *; } else { qu=Q_TL; pos = 32*m1 + 16*d1@(-1,-1) + 4*g2@(0,-1) + g2@(-1,0); *; qu=Q_TR; pos = 32*m2 + 16*d2@(1,-1) + 4*g1@(0,-1) + g1@(1,0); *; qu=Q_BL; pos = 32*m2 + 16*d2@(-1,1) + 4*g1@(0,1) + g1@(-1,0); *; qu=Q_BR; pos = 32*m1 + 16*d1@(1,1) + 4*g2@(0,1) + g2@(1,0); *; }; }; Gras = { if !informational && (kind@(-1,0)==kind || kind@(-1,0)==outside) -> { 1; qu=Q_TL; pos = 4*d1@(-1,-1) + g2@(0,-1); *; qu=Q_BL; pos = 4*d2@(-1,1) + g1@(0,1); *; } else { qu=Q_TL; pos = 160 + 16*d1@(-1,-1) + 4*g2@(0,-1) + g2@(-1,0); *; qu=Q_BL; pos = 160 + 16*d2@(-1,1) + 4*g1@(0,1) + g1@(-1,0); *; }; if !informational && (kind@(1,0)==kind || kind@(1,0)==outside) -> { 1; qu=Q_TR; pos = 4*d2@(1,-1) + g1@(0,-1); *; qu=Q_BR; pos = 4*d1@(1,1) + g2@(0,1); *; } else { 0; qu=Q_TR; pos = 160 + 16*d2@(1,-1) + 4*g1@(0,-1) + g1@(1,0); *; qu=Q_BR; pos = 160 + 16*d1@(1,1) + 4*g2@(0,1) + g2@(1,0); *; }; }; Leer = Blob; >> } cuyo-2.1.0/data/bunt.ld0000644000175000017500000000452012402326333011613 00000000000000# # Copyright 2005,2006,2014 by Mark Weyer # Modified 2011 by Mark Weyer # Maintenance modifications 2006,2008,2011,2012,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Bunt={ name = "Gaudy balls" author = "Mark Weyer" maxbasis = 16 basis = basis[easy] = pics = unbunt * , bunt * <(basis*(basis+1))/2>, schmelz startpic = mbUnbunt.xpm startdist="----------","QQQQQQQQQQ","-Q%&" toptime=200 topcolor=200,200,200 numexplode=2 neighbours= << var farbe1,farbe2,unten; unbunt = { if basekind@(0,-1)==unbunt && !(basekind@(0,1)==unbunt) -> { kind@(0,0)=schmelz; farbe1@(0,0) = kind-unbunt; farbe2@(0,0) = kind@(0,-1)-unbunt; unten@(0,0) = 1; kind@(0,-1)=schmelz; farbe1@(0,-1) = kind-unbunt; farbe2@(0,-1) = kind@(0,-1)-unbunt; unten@(0,-1) = 0; }; pos=kind-unbunt; *; if informational && 1:5 => {,,,,,kind=unbunt+rnd(basis)}; }; bunt = {pos=kind-bunt; *;}; schmelz = { pos=farbe1+unten*maxbasis+farbe2*2*maxbasis; {0,1,2,{ 3; if unten -> if farbe1<=farbe2 -> kind@(0,0)=bunt+(farbe2*(farbe2+1))/2+farbe1 else kind@(0,0)=bunt+(farbe1*(farbe1+1))/2+farbe2 else kind@(0,0)=nothing; }}; *; }; >> unbunt = { pics = mbUnbunt.xpm neighbours= greyprob=1 } bunt = { pics = mbBunt.xpm colourprob=0 } schmelz = { pics = mbSchmelz1.xpm,mbSchmelz2.xpm,mbSchmelz3.xpm,mbSchmelz4.xpm neighbours= colourprob=0 } } cuyo-2.1.0/data/puzzle.ld0000644000175000017500000000574212402113364012201 00000000000000# # Copyright 2006 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # referenced from labskaus.ld Puzzle={ name = "Jigsaw" author = "Mark Weyer" description = "Get rid of the border" numexplode = 9 pics = Stein startdist = "1........5","1........5","1........5","1........5","2333333334","-3%&" gesamtzahnarten = 6 zahnarten = 3 zahnarten[easy] = 2 zahnarten[hard] = 5 Stein = { pics=mpAlle.xpm greyprob=1 distkey="0" << var oben = -1 : reapply, unten = -1 : reapply, links = -1 : reapply, rechts = -1 : reapply; # so ist der Wert -1 bei nothing und bei outside Stein = { qu=Q_TL; if oben==unten@(0,-1) -> if links==rechts@(-1,0) -> if links@(0,-1)==rechts@(-1,-1) && oben@(-1,0)==unten@(-1,-1) -> E else B else D else if links==rechts@(-1,0) -> A else C; pos+=5*gesamtzahnarten*oben+5*links; *; qu=Q_TR; if oben==unten@(0,-1) -> if rechts==links@(1,0) -> if rechts@(0,-1)==links@(1,-1) && oben@(1,0)==unten@(1,-1) -> D else E else B else if rechts==links@(1,0) -> A else C; pos+=5*gesamtzahnarten*oben+5*rechts; *; qu=Q_BL; if unten==oben@(0,1) -> if links==rechts@(-1,0) -> if links@(0,1)==rechts@(-1,1) && unten@(-1,0)==oben@(-1,1) -> B else A else D else if links==rechts@(-1,0) -> E else C; pos+=5*gesamtzahnarten*unten+5*links; *; qu=Q_BR; if unten==oben@(0,1) -> if rechts==links@(1,0) -> if rechts@(0,1)==links@(1,1) && unten@(1,0)==oben@(1,1) -> A else D else B else if rechts==links@(1,0) -> E else C; pos+=5*gesamtzahnarten*unten+5*rechts; *; }; Stein.connect = { inhibit=0; if unten!=oben@(0,1) -> inhibit+=DIR_D; if rechts!=links@(1,0) -> inhibit+=DIR_R; }; Stein.init = { oben = rnd(zahnarten); unten = rnd(zahnarten); links = rnd(zahnarten); rechts = rnd(zahnarten); weight = 1; if version>0 -> { # Dann stand dieser Stein in der startdist, ist also Gras. behaviour.+=goalblob; # Rand gltten if version==1..2 -> links=gesamtzahnarten-1; if version==2..4 -> unten=gesamtzahnarten-1; if version==4..5 -> rechts=gesamtzahnarten-1; }; }; >> } } cuyo-2.1.0/data/walls.ld0000644000175000017500000001610512421270650011770 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2005,2006,2014 by Immanuel Halupczok # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # iwaBad.xpm[.gz], iwaBeton.xpm[.gz], iwaNix.xpm[.gz], iwaObjekte.xpm[.gz], # iwaParkett.xpm[.gz], iwaTeppich.xpm[.gz], # iwaAlles.xcf # Walls = { name = "Walls" author = "Immi" description = "Floors don't connect through walls." startpic = gras pics=bad,parkett,teppich #pics[1]=gruen,gelb,rosa,orange randomgreys[1]=60 numexplode = 4 numexplode[1] = 5 bgcolor = 112,110,104 startdist="++++++++++","AAAAAAAAAA" #pics=inGruen.xpm #numexplode = 200 #startdist="AAAAAAAAAA","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++","++++++++++" greypic=grau nogreyprob=1 emptypic=leer << var wob, wun, wli, wre; # Wand var plo; # Pfosten links oben var vob, vun, vli, vre; # Verbindung var dy; var xx, yy, sp_h, sp_v; var wand; initWaende = { wob = 0; wli = 0; wre = 0; wun = 0; }; korrigierexxyy = { yy += dy@@; if loc_p == 1 -> { sp_h = 0; } else -> { xx = 9 - xx; sp_h = 1; }; if yy > 19 -> { yy = 39 - yy; xx = 9 - xx; sp_h = 1 - sp_h; sp_v = 1; } else -> { sp_v = 0; }; }; # vorher xx,yy setzen getWandOben = { wand = 0; yy += dy@@; if loc_p == 2 -> xx = 9 - xx; if yy > 19 -> { yy = 40 - yy; xx = 9 - xx; }; switch { yy == 20 -> if xx == 1 || xx == 4 || xx == 5 || xx == 8 -> wand = 1; yy == 19 -> if xx == 2 || xx == 3 || xx == 5 || xx == 6 || xx == 9 -> wand = 1; yy == 18 -> if xx == 1 || xx == 3 || xx == 4 || xx == 7 || xx == 8 -> wand = 1; yy == 17 -> if xx == 0 || xx == 2 || xx == 5 || xx == 9 -> wand = 1; yy == 16 -> if xx == 5 -> wand = 1; yy == 15 -> if xx == 6 -> wand = 1; yy == 14 -> if xx == 1 || xx == 8 -> wand = 1; yy == 13 -> if xx == 4 -> wand = 1; yy == 12 -> if xx == 7 -> wand = 1; yy == 11 -> if xx == 6 -> wand = 1; yy == 10 -> if xx == 9 -> wand = 1; }; }; # vorher xx,yy setzen getWandLinks = { if xx == 0 || xx == 10 -> wand = 1 else -> { wand = 0; yy += dy@@; if loc_p == 2 -> xx = 10 - xx; if yy > 19 -> { yy = 39 - yy; xx = 10 - xx; }; switch { yy == 19 -> if xx == 1 || xx == 3 || xx == 8 -> wand = 1; yy == 18 -> if xx == 1 || xx == 7 -> wand = 1; yy == 17 -> if xx == 6 -> wand = 1; yy == 16 -> if xx == 2 || xx == 4 || xx == 7 || xx == 9 -> wand = 1; yy == 15 -> if xx == 1 || xx == 4 || xx == 8 -> wand = 1; yy == 14 -> if xx == 3 || xx == 5 -> wand = 1; yy == 13 -> if xx == 7 -> wand = 1; # yy == 12 -> if xx == 3 -> wand = 1; yy == 11 -> if xx == 3 -> wand = 1; yy == 10 -> if xx == 1 -> wand = 1; }; }; }; checkWaende = { initWaende; if !informational -> { xx = loc_x; yy = loc_y; getWandLinks; wli = wand; xx = loc_x+1; yy = loc_y; getWandLinks; wre = wand; xx = loc_x; yy = loc_y; getWandOben; wob = wand; xx = loc_x; yy = loc_y+1; getWandOben; wun = wand; if wli || wob -> plo = 1 else -> { xx = loc_x; yy = loc_y-1; getWandLinks; if wand -> plo = 1 else -> { xx = loc_x-1; yy = loc_y; getWandOben; plo = wand; } }; #} else -> { # wli = 1; wre = 1; wob = 1; wun = 1; }; }; #malWaende = { # 1D*; # if wli -> B*; # if wre -> A*; # if wob -> E*; # if wun -> C*; #}; meinConnect = { checkWaende; inhibit = 0; if wob -> inhibit += DIR_U; if wun -> inhibit += DIR_D; if wli -> inhibit += DIR_L; if wre -> inhibit += DIR_R; }; #meinBlobAlt = { # if falling -> {initWaende;} # else -> {checkWaende;malWaende;}; # # vob = !wob && (kind == kind@(0,-1) || # kind == nothing && kind@(0,-1) == outside); # vun = !wun && kind == kind@(0,1); # vli = !wli && kind == kind@(-1,0); # vre = !wre && kind == kind@(1,0); # # if vli -> pos = 3 - vre else pos = vre; # if vob -> pos += 12 - 4 * vun else pos += 4 * vun; # 0*; # }; meinBlop = { if falling -> 0J* else -> { # Wnde bestimmen checkWaende; # Verbindungen bestimmen vob = !wob && (kind == kind@(0,-1) || kind == nothing && kind@(0,-1) == outside); vun = !wun && kind == kind@(0,1); vli = !wli && kind == kind@(-1,0); vre = !wre && kind == kind@(1,0); # Verbindungen (Boden) malen 0; [qu=Q_TL] [pos = vli + 2*wli + 3*vob + 6*wob] *; [qu=Q_TR] [pos = 2 - 2*vre - wre + 3*vob + 6*wob] *; [qu=Q_BL] [pos = 6 + vli + 2*wli - 6*vun - 3*wun] *; [qu=Q_BR] [pos = 8 - 2*vre - wre - 6*vun - 3*wun] *; # Wnde malen # malWaende; # Mittelpfosten entfernen if !plo && vli && vob && (kind == kind@(-1,-1) || kind == nothing && kind@(-1,-1) == outside) -> { 0K; [qu=Q_BR_TL] *@(0,0); [qu=Q_BL_TR] *@(-1,0); [qu=Q_TR_BL] *@(0,-1); [qu=Q_TL_BR] *@(-1,-1); }; if informational -> 0K*; }; }; bad.connect = meinConnect; bad = meinBlop; parkett = meinBlop; parkett.connect = meinConnect; teppich = meinBlop; teppich.connect = meinConnect; grau = meinBlop; gras.init = { version = rnd(4); }; gras = { meinBlop; pos = version; 1*; }; leer = meinBlop; semiglobal.row_up = { dy+=1; }; semiglobal.row_down = { dy-=1; }; >> bad={ pics=iwaBad.xpm } parkett={ pics=iwaParkett.xpm } teppich={ pics=iwaTeppich.xpm } grau={ pics=iwaBeton.xpm } gras={ pics=iwaBeton.xpm,iwaObjekte.xpm } leer={ pics=iwaNix.xpm } } cuyo-2.1.0/data/letters.ld0000644000175000017500000001671412402160024012326 00000000000000# # Copyright 2006 by Bernhard Seckinger # Modified 2011 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # blBuchstabe.xpm[.gz], blFeld.xpm[.gz], blFragezeichen.xpm[.gz], # blLeer.xpm[.gz], blMark.xpm[.gz], blTop.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. Letters = { #------------------------------------# # Allgemeine Beschreibung des Levels # #------------------------------------# name = "Letters" author = "Berni" description = "Try to find out, which letters do connect!" pics = Letter1,Letter2,Letter3,Letter4 greypic = Leer startpic = blFragezeichen.xpm startdist = "AAAAAAAAAA" numexplode = 4 chaingrass = 0 bgpic = blFeld.xpm bgcolor = 201,183,128 toppic = blTop.xpm topcolor = 0,11,11 topoverlap = 0 toptime = 30 randomgreys[1] = 50 #----------------# # Die Buchstaben # #----------------# << var type=0,da=0,mark=0,blink=0; checkcuyo = { switch { da == 0 -> switch { ## CUYO waagrecht kind@(1,0) == Letter2 && type@(1,0) == 3 && kind@(2,0) == Letter2 && type@(2,0) == 6 && kind@(3,0) == Letter4 && type@(3,0) == 3 -> { mark@(0,0) = 1; mark@(1,0) = 2; mark@(2,0) = 2; mark@(3,0) = 3; blink@(0,0) = 100; blink@(1,0) = 100; blink@(2,0) = 100; blink@(3,0) = 100; bonus(100); message("You have found\nthe name of the game:\n*** CUYO ***\n100 Bonus Points"); da=1; }; # CUYO senkrecht kind@(0,1) == Letter2 && type@(0,1) == 3 && kind@(0,2) == Letter2 && type@(0,2) == 6 && kind@(0,3) == Letter4 && type@(0,3) == 3 -> { mark@(0,0) = 4; mark@(0,1) = 5; mark@(0,2) = 5; mark@(0,3) = 6; blink@(0,0) = 100; blink@(0,1) = 100; blink@(0,2) = 100; blink@(0,3) = 100; bonus(100); message("You have found\nthe name of the game:\n*** CUYO ***\n100 Bonus Points"); da=1; }; -> da=0; }; }; }; checkimmi = { switch { da == 0 -> switch { ## IMMI waagrecht kind@(1,0) == Letter2 && type@(1,0) == 1 && kind@(2,0) == Letter2 && type@(2,0) == 1 && kind@(3,0) == Letter4 && type@(3,0) == 1 -> { mark@(0,0) = 1; mark@(1,0) = 2; mark@(2,0) = 2; mark@(3,0) = 3; blink@(0,0) = 100; blink@(1,0) = 100; blink@(2,0) = 100; blink@(3,0) = 100; bonus(200); message("You have found\nthe name of the\nprogrammer of Cuyo:\n*** IMMI ***\n200 Bonus Points"); da=1; }; # IMMI senkrecht kind@(0,1) == Letter2 && type@(0,1) == 1 && kind@(0,2) == Letter2 && type@(0,2) == 1 && kind@(0,3) == Letter4 && type@(0,3) == 1 -> { mark@(0,0) = 4; mark@(0,1) = 5; mark@(0,2) = 5; mark@(0,3) = 6; blink@(0,0) = 100; blink@(0,1) = 100; blink@(0,2) = 100; blink@(0,3) = 100; bonus(200); message("You have found\nthe name of the\nprogrammer of Cuyo:\n*** IMMI ***\n200 Bonus Points"); da=1; }; -> da=0; }; }; }; checkberni = { switch { da == 0 -> switch { ## BERNI waagrecht kind@(1,0) == Letter3 && type@(1,0) == 3 && kind@(2,0) == Letter1 && type@(2,0) == 6 && kind@(3,0) == Letter4 && type@(3,0) == 2 && kind@(4,0) == Letter4 && type@(4,0) == 1 -> { mark@(0,0) = 1; mark@(1,0) = 2; mark@(2,0) = 2; mark@(3,0) = 2; mark@(4,0) = 3; blink@(0,0) = 100; blink@(1,0) = 100; blink@(2,0) = 100; blink@(3,0) = 100; blink@(4,0) = 100; bonus(2000); message("You have found\nthe name of the\nprogrammer of this Level:\n*** BERNI ***\n2000 Bonus Points"); da=1; }; # BERNI senkrecht kind@(0,1) == Letter3 && type@(0,1) == 3 && kind@(0,2) == Letter1 && type@(0,2) == 6 && kind@(0,3) == Letter4 && type@(0,3) == 2 && kind@(0,4) == Letter4 && type@(0,4) == 1 -> { mark@(0,0) = 4; mark@(0,1) = 5; mark@(0,2) = 5; mark@(0,3) = 5; mark@(0,4) = 6; blink@(0,0) = 100; blink@(0,1) = 100; blink@(0,2) = 100; blink@(0,3) = 100; blink@(0,4) = 100; bonus(2000); message("You have found\nthe name of the\nprogrammer of this Level:\n*** BERNI ***\n2000 Bonus Points"); da=1; }; -> da=0; }; }; }; mark = { switch { mark == 1 && (blink%10 < 5) -> [file=2]A*; mark == 2 && (blink%10 < 5) -> [file=2]B*; mark == 3 && (blink%10 < 5) -> [file=2]C*; mark == 4 && (blink%10 < 5) -> [file=2]D*; mark == 5 && (blink%10 < 5) -> [file=2]E*; mark == 6 && (blink%10 < 5) -> [file=2]F*; }; blink-=1; switch { blink == 0 -> mark = 0; }; }; >> Leer = { pics = blBuchstabe.xpm << Leer = A*; >> } Letter1 = { pics = blBuchstabe.xpm,blLeer.xpm,blMark.xpm colourprob = 7 << Letter1.init = {type=rnd(7);}; Letter1 = { [file=1]schema16; switch { type==0 -> G; type==1 -> H; type==2 -> K; type==3 -> M; type==4 -> Q; type==5 -> R; type==6 -> S; };*;mark }; >> } Letter2 = { pics = blBuchstabe.xpm,blLeer.xpm,blMark.xpm colourprob = 7 << Letter2.init = {type=rnd(7);}; Letter2 = { [file=1]schema16; switch { type==0 -> B; type==1 -> N; type==2 -> U; type==3 -> V; type==4 -> W; type==5 -> X; type==6 -> Z; };*;mark; }; >> } Letter3 = { pics = blBuchstabe.xpm,blLeer.xpm,blMark.xpm colourprob = 5 << Letter3.init = {type=rnd(5);}; Letter3 = { [file=1]schema16; switch { type==0 -> {C;checkberni;}; type==1 -> {D;checkcuyo;}; type==2 -> E; type==3 -> F; type==4 -> L; };*;mark; }; >> } Letter4 = { pics = blBuchstabe.xpm,blLeer.xpm,blMark.xpm colourprob = 7 << Letter4.init = {type=rnd(7);}; Letter4 = { [file=1]schema16; switch { type==0 -> I; type==1 -> {J;checkimmi;}; type==2 -> O; type==3 -> P; type==4 -> T; type==5 -> Y; type==6 -> a; };*;mark; }; >> } } # End of Letter cuyo-2.1.0/data/used_images.sh0000755000175000017500000000263412422646207013161 00000000000000#! /bin/sh # # Copyright <=2002 by the cuyo developers # Modified 2007,2010,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Gibt alle Namen von Bilddateien aus, in im # Verzeichnis $1/pics liegen und in einer der Dateien # aus $2 erwhnt werden. # Gibt auerdem ein paar Systembildchen aus. # Beispiel: used_images cuyo/data "summary.ld bla.ld" cd $1/pics # .xpm-Dateien for i in *.xpm do if test `cd ..;cat $2 | grep -c $i` != 0 then echo $1/pics/$i else echo "Not included:" $1/pics/$i >&2 fi done # .xpm.gz-Dateien for igz in *.xpm.gz do i=`echo $igz | sed 's/\\.gz\$//'` if test `cd ..;cat $2 | grep -c $i` != 0 then echo $1/pics/$igz else echo "Not included:" $1/pics/$igz >&2 fi done cuyo-2.1.0/data/unterwasser.ld0000644000175000017500000001002211672457344013236 00000000000000# # Copyright <=2004 by Bernhard Seckinger and Immanuel Halupczok # Modified 2006 by Bernhard Seckinger # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ibwAlgen.xpm[.gz], ibwBlaeschen.xpm[.gz], ibwFisch.xpm[.gz], # ibwMuschel.xpm[.gz], ibwPlankton.xpm[.gz], ibwSchuh.xpm[.gz], # ibwTintenfisch.xpm[.gz], ibwWellen.xpm[.gz] # # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig? # UnterWasser={ name="Under Water" author="Berni & Immi" numexplode=4 chaingrass=1 pics=Tintenfisch,Fisch,Muschel,Plankton bgcolor=0,30,60 topcolor=200,220,255 toptime=50 toppic=ibwWellen.xpm topoverlap=32 startpic=Algen startdist[1]="..A.......","..A.......","..A......A","..A..A...A","..AA.A...A","A.AA.A...A","A.AA.A.A.A" startdist="..A.......","..A.......","..A..A...A","A.A..A.A.A" greypic=ibwSchuh.xpm textcolor=200,220,255 #bubblespic=ibwBlaeschen description="Bubbles (Level still under construction.)" emptypic=ibwNix << var bl_pos, bl_vers, bl_stat; inc_bl_stat={ bl_stat+=1; switch { bl_vers==0 -> bl_stat%=6; bl_vers==1 -> bl_stat%=12; } }; blaeschen={ switch { bl_pos==0 -> switch { # Vom Boden starten: #kind@(0,1) = outside && falling && 1:500 -> # bl_pos=1,bl_stat=0;{1:2->bl_vers=0;->bl_vers=1;}; # Von den Algen starten: kind == Algen && 1:200 -> { bl_pos=1; bl_stat=0; bl_vers=0; }; # Von den Muscheln starten: kind == Muschel && 1:200 -> { bl_pos=1; bl_stat=0; bl_vers=1; }; bl_pos@(0,1)==2 -> { bl_pos=1; bl_stat=bl_stat@(0,1); bl_vers=bl_vers@(0,1); }; }; -> { bl_pos = (bl_pos + 1) % 4; }; }; inc_bl_stat; switch { bl_pos != 0 -> { switch { bl_vers==0 -> switch { bl_stat==0 -> A; bl_stat==1 || bl_stat==5 -> B; bl_stat==2 || bl_stat==4 -> C; bl_stat==3 -> D; }; bl_vers==1 -> switch { bl_stat==0..1 -> E; bl_stat==2..3 || bl_stat==10..11 -> F; bl_stat==4..5 || bl_stat==8..9 -> G; bl_stat==6..7 -> H; }; }; switch { bl_pos==1 -> {[qu=Q_TL_BL] 0*;[qu=Q_TR_BR] 0*}; bl_pos==2 -> 0*; bl_pos==3 -> {[qu=Q_BL_TL] 0*;[qu=Q_BR_TR] 0*}; }; }; }; }; >> ibwNix={ pics=ibwBlaeschen.xpm << ibwNix=blaeschen; >> } Tintenfisch={ pics=ibwBlaeschen.xpm,ibwTintenfisch.xpm << Tintenfisch={blaeschen;1;schema16}; >> } Fisch={ pics=ibwBlaeschen.xpm,ibwFisch.xpm << Fisch={blaeschen;1;schema16}; >> } Plankton={ pics=ibwBlaeschen.xpm,ibwPlankton.xpm << Plankton={blaeschen;1;schema16}; >> } Algen={ pics=ibwBlaeschen.xpm,ibwAlgen.xpm << Algen={ blaeschen; switch { 0??????? -> B; 1??????? -> A; }; 1* }; >> } Muschel={ pics=ibwBlaeschen.xpm,ibwMuschel.xpm << var mitte,po; Muschel={ blaeschen; switch { mitte==0 -> { po=rnd(16); mitte=1 }; }; pos=po; 1* }; >> schema=3 } } cuyo-2.1.0/data/farming.ld0000644000175000017500000001167312410527301012272 00000000000000# # Copyright 2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # mfaBack.xpm[.gz], mfaCabbage.xpm[.gz], mfaCattle.xpm[.gz], mfaFence.xpm[.gz], # mfaMaize.xpm[.gz], mfaPigs.xpm[.gz], mfaRoad.xpm[.gz], mfaWater.xpm[.gz], # mfaWheat.xpm[.gz] Farming = { name = "Farming" author = "Mark Weyer" description = "Almost each level has its very own graphics.\nAt least this level has exactly the same rules as the previous one." pics = Cattle,Pigs,Wheat,Cabbage,Maize greypic = Water startpic = Road startdist = "**********" numexplode[1] = 6 numexplode[2] = 4 bgpic = mfaBack.xpm bgcolor = 106,190,48 << Fence = { qu=Q_TL; switch { 0?????0? -> if kind@(0,-1)==Cattle..Pigs -> if kind@(-1,0)==Cattle..Pigs -> if kind@(-1,-1)==Cattle..Pigs -> J* else I* else C* else if kind@(-1,0)==Cattle..Pigs -> G* else A*; 1?????0? -> if kind@(-1,0)==Cattle..Pigs -> if kind@(-1,-1)==Cattle..Pigs -> K* else H* else B*; 0?????1? -> if kind@(0,-1)==Cattle..Pigs -> if kind@(-1,-1)==Cattle..Pigs -> M* else F* else D*; 1?????10 -> if kind@(-1,-1)==Cattle..Pigs -> N* else E*; # 1?????11 -> nothing to draw; }; qu=Q_TR; switch { 0?0????? -> if kind@(0,-1)==Cattle..Pigs -> if kind@(1,0)==Cattle..Pigs -> if kind@(1,-1)==Cattle..Pigs -> J* else I* else C* else if kind@(1,0)==Cattle..Pigs -> G* else A*; 1?0????? -> if kind@(1,0)==Cattle..Pigs -> if kind@(1,-1)==Cattle..Pigs -> K* else H* else B*; 0?1????? -> if kind@(0,-1)==Cattle..Pigs -> if kind@(1,-1)==Cattle..Pigs -> M* else F* else D*; 101????? -> if kind@(1,-1)==Cattle..Pigs -> N* else E*; # 111????? -> nothing to draw; }; qu=Q_BL; switch { ????0?0? -> if kind@(0,1)==Cattle..Pigs -> if kind@(-1,0)==Cattle..Pigs -> if kind@(-1,1)==Cattle..Pigs -> J* else I* else C* else if kind@(-1,0)==Cattle..Pigs -> G* else A*; ????1?0? -> if kind@(-1,0)==Cattle..Pigs -> if kind@(-1,1)==Cattle..Pigs -> K* else H* else B*; ????0?1? -> if kind@(0,1)==Cattle..Pigs -> if kind@(-1,1)==Cattle..Pigs -> M* else F* else D*; ????101? -> if kind@(-1,1)==Cattle..Pigs -> N* else E*; # ????111? -> nothing to draw; }; qu=Q_BR; switch { ??0?0??? -> if kind@(0,1)==Cattle..Pigs -> if kind@(1,0)==Cattle..Pigs -> if kind@(1,1)==Cattle..Pigs -> J* else I* else C* else if kind@(1,0)==Cattle..Pigs -> G* else A*; ??0?1??? -> if kind@(1,0)==Cattle..Pigs -> if kind@(1,1)==Cattle..Pigs -> K* else H* else B*; ??1?0??? -> if kind@(0,1)==Cattle..Pigs -> if kind@(1,1)==Cattle..Pigs -> M* else F* else D*; ??101??? -> if kind@(1,1)==Cattle..Pigs -> N* else E*; # 111????? -> nothing to draw; }; qu=Q_ALL; }; >> Cattle = { pics = mfaFence.xpm, mfaCattle.xpm << Cattle = { if falling -> 1B* else {0; Fence; 1A*}; }; >> } Pigs = { pics = mfaFence.xpm, mfaPigs.xpm << Pigs = { if falling -> 1F* else {0; Fence; 1; schema5; 1G*}; }; >> } Wheat = { pics = mfaWheat.xpm << Wheat = schema5; >> } Cabbage = { pics = mfaCabbage.xpm << Cabbage = schema5; >> } Maize = { pics = mfaMaize.xpm << Maize = schema5; >> } Road = { pics = mfaRoad.xpm << Road = schema16; >> } Water = { pics = mfaWater.xpm << Water = schema5; >> } } cuyo-2.1.0/data/globals.ld0000644000175000017500000001434212402113363012266 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2005,2010,2014 by Mark Weyer # Maintenance modifications 2005,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # This file contains all the definitions which are useful for more than # one level: the schemas and the defaults # It also mentions pics and sounds which cuyo always needs: # border.xpm # borderh.xpm # borderv.xpm # dbgZiffern.xpm # font-big.xpm # explosion.xpm # highlight.xpm # infoicons.xpm # menupics.xpm # pause.xpm # pktZiffern.xpm # pktZiffern2.xpm # scroll.xpm # titel.xpm # down.wav # explode.wav # land.wav # leftright.wav # levelloose.wav # levelwin.wav # menuclick.wav # menuscroll.wav # turn.wav # cuyo.it << # The whole icon depends on the four neighbours schema16={ switch { 0?0?0?0? -> A; 0?1?0?0? -> B; 0?1?0?1? -> C; 0?0?0?1? -> D; 0?0?1?0? -> E; 0?1?1?0? -> F; 0?1?1?1? -> G; 0?0?1?1? -> H; 1?0?1?0? -> I; 1?1?1?0? -> J; 1?1?1?1? -> K; 1?0?1?1? -> L; 1?0?0?0? -> M; 1?1?0?0? -> N; 1?1?0?1? -> O; 1?0?0?1? -> P; }; * }; # Each quarter depends on its three neighbours - but it may only depend # on the diagonal neighbour if at least one of the two other neighbours # exist... Not yet defined. #schema7={ #}; # Each quarter normally depends on its two neighbours. # If both are present, the diagonal neighbor counts, too. # This schema is useful for blobs that are surrounded by "walls": # If a quarter has at least one missing neighbour, there is a wall. # Otherwise there may or may not be a wall corner, # which has some effect on the picture. schema5={ [qu=Q_TL] {switch { 0?????0? -> C; 1?????0? -> D; 0?????1? -> A; 1?????10 -> B; 1?????11 -> E; };*}; [qu=Q_TR] {switch { 0?0????? -> C; 0?1????? -> A; 1?0????? -> B; 101????? -> E; 111????? -> D; };*}; [qu=Q_BL] {switch { ????0?0? -> C; ????0?1? -> E; ????1?0? -> D; ????101? -> A; ????111? -> B; };*}; [qu=Q_BR] {switch { ??0?0??? -> C; ??0?1??? -> B; ??1?0??? -> E; ??101??? -> D; ??111??? -> A; };*} }; # Each quarter depends on its two neighbours schema4={ [qu=Q_TL] {switch { 0?????0? -> A; 0?????1? -> B; 1?????0? -> C; 1?????1? -> D; };*}; [qu=Q_TR] {switch { 0?1????? -> A; 0?0????? -> B; 1?1????? -> C; 1?0????? -> D; };*}; [qu=Q_BL] {switch { ????1?0? -> A; ????1?1? -> B; ????0?0? -> C; ????0?1? -> D; };*}; [qu=Q_BR] {switch { ??1?1??? -> A; ??0?1??? -> B; ??1?0??? -> C; ??0?0??? -> D; };*} }; # Each Quarter depends on its three neighbours. schemaDiag16={ [qu=Q_TL] {switch { 0?????00 -> E; 0?????10 -> F; 1?????00 -> N; 1?????10 -> G; 0?????01 -> C; 0?????11 -> L; 1?????01 -> J; 1?????11 -> K; };*}; [qu=Q_TR] {switch { 000????? -> C; 100????? -> G; 001????? -> E; 101????? -> K; 010????? -> L; 110????? -> N; 011????? -> F; 111????? -> J; };*}; [qu=Q_BL] {switch { ????000? -> N; ????100? -> J; ????001? -> L; ????101? -> F; ????010? -> E; ????110? -> C; ????011? -> K; ????111? -> G; };*}; [qu=Q_BR] {switch { ??000??? -> L; ??100??? -> K; ??001??? -> C; ??101??? -> J; ??010??? -> N; ??110??? -> E; ??011??? -> G; ??111??? -> F; };*} }; # Each Quarter only depends on its diagonal neighbour. schemaDiag2={ [qu=Q_TL] {switch { ???????0 -> A; ???????1 -> B; };*}; [qu=Q_TR] {switch { ?0?????? -> A; ?1?????? -> B; };*}; [qu=Q_BL] {switch { ?????0?? -> A; ?????1?? -> B; };*}; [qu=Q_BR] {switch { ???0???? -> A; ???1???? -> B; };*} }; # For hex mode. Each Quarter depends on its two neighbours. schemaHex4={ [qu=Q_TL_TL] {switch { 0????0 -> A*; 1????0 -> C*; }}; [qu=Q_BL_TL] {switch { 0????1 -> B*; 1????1 -> D*; }}; [qu=Q_TR_TR] {switch { 01???? -> A*; 11???? -> C*; }}; [qu=Q_BR_TR] {switch { 00???? -> B*; 10???? -> D*; }}; [qu=Q_BL_BL] {switch { ???10? -> A*; ???00? -> C*; }}; [qu=Q_TL_BL] {switch { ???01? -> B*; ???11? -> D*; }}; [qu=Q_BR_BR] {switch { ??11?? -> A*; ??10?? -> C*; }}; [qu=Q_TR_BR] {switch { ??00?? -> B*; ??01?? -> D*; }}; }; # For hex mode. Each Quarter depends on its three neighbours. schemaHex8={ [qu=Q_TL_TL] {switch { 0???00 -> A*; 1???00 -> E*; 0???10 -> C*; 1???10 -> G*; }}; [qu=Q_BL_TL] {switch { 0???01 -> D*; 1???01 -> H*; 0???11 -> B*; 1???11 -> F*; }}; [qu=Q_TR_TR] {switch { 001??? -> C*; 101??? -> G*; 011??? -> A*; 111??? -> E*; }}; [qu=Q_BR_TR] {switch { 000??? -> D*; 100??? -> H*; 010??? -> B*; 110??? -> F*; }}; [qu=Q_BL_BL] {switch { ???100 -> A*; ???000 -> E*; ???110 -> C*; ???010 -> G*; }}; [qu=Q_TL_BL] {switch { ???001 -> D*; ???101 -> H*; ???011 -> B*; ???111 -> F*; }}; [qu=Q_BR_BR] {switch { ?011?? -> C*; ?010?? -> G*; ?111?? -> A*; ?110?? -> E*; }}; [qu=Q_TR_BR] {switch { ?000?? -> D*; ?001?? -> H*; ?100?? -> B*; ?101?? -> F*; }} }; # Default when there's one file with one icon default1 = *; # Default when there's one file with more than one icon (except for # the grass) default2 = {schema16}; # Same as default2, but for the grass default2g = {pos=version;*}; # Default when there are multiple files default3 = {file=version;schema16}; # Default for the icon depicting the value of neighbours default_info = default2g; >> cuyo-2.1.0/data/kachelnR.ld0000644000175000017500000002253212415051252012374 00000000000000# # Copyright 2006,2011,2014 by Mark Weyer # Modified 2010 by Mark Weyer # Maintenance modifications 2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # mkaRhombusVerbind.xpm[.gz] # Kacheln_azyklisch = { # TRANSLATORS: "tiling" is used synonymous to tesselation name = "Tiling IV" # TRANSLATORS: "tiling" is used synonymous to tesselation description = "Random aperiodic tiling" author = "Mark Weyer" sorten = 5 pics = Block,Kachel* greypic = Kachel startpic = Kachel emptypic = Leer startdist = "**********","**********","**++++++**", "**++++++**","**++++++**","**++++++**","**********" numexplode = 4 numexplode[easy] = 3 neighbours = inhibit_alle = << var xx,yy,zz,naehe,schicht,art; var richtung,tendenz; # Das Dreieck, das nach rechts zeigt, ist immer in der Mitte. Das, das # nach links zeigt, ist von da aus # bei art==1 nach links # bei art==2 nach rechts oben # bei art==3 nach rechts unten # richtung: 1=(1,0.5), 2=(0,1), 3=(-1,0.5) # tendenz: 1=links, 2=rechts (nur fuer art=1 wichtig) # Basiskoordinaten: # bx = loc_y+loc_x/2; # by = loc_y-(loc_x+1)/2; # # schicht = (x*x@+y*y@) / schicht@ # x = bx-schicht # y = by-schicht # z = -schicht var verschiebung; global.init = { xx = rnd(10000)+3000; yy = rnd(10000)+3000; zz = rnd(10000)+3000; schicht = xx+yy+zz; verschiebung@@(;<) = 100+rnd(100); verschiebung@@(;>) = 100+rnd(100); }; semiglobal.row_up = {verschiebung+=1;}; semiglobal.row_down = {verschiebung-=1;}; semiglobal = {inhibit=0;}; berechne = { xx = loc_y+verschiebung@@+loc_x/2; yy = loc_y+verschiebung@@-(loc_x+1)/2; naehe = (xx*xx@ + yy*yy@) % schicht@; switch { naehe-zz@<0 -> art=1; naehe+xx@>=schicht@ -> art=2; -> art=3; }; }; male = { # Voraussetzungen: # - berechne fand schon statt # - file ist richtig gesetzt und pos bis auf +0..+5 switch { art==1 -> { [qu=Q_TL_BL] *@(-1,-0.5); [qu=Q_TR_BR] *@(-1,-0.5); [qu=Q_BL_TL] *@(-1,0.5); [qu=Q_BR_TR] *@(-1,0.5); pos+=1; *; }; art==2 -> { pos+=3; *@(0,-1); pos+=2; *; }; art==3 -> { pos+=2; *; pos+=2; *@(0,1); }; }; 0; # Rechten und unteren Rand dort auffuellen, wo es keine Blobs gibt. if kind@(0,1)==outside || loc_x==9 -> [naehe = (naehe+xx@+yy@)%schicht@] switch { naehe-zz@<0 -> { # art eins drunter wäre 1 if art!=3 && (loc_x%2==0 || loc_x==9) -> { A; qu=Q_TL_BL; *; qu=Q_TR_BR; *; qu=Q_BL_TL; *@(0,1); qu=Q_BR_TR; *@(0,1); }; qu=Q_ALL; if kind@(0,1)==outside && loc_x%2==1 -> B*@(0,1); }; naehe+xx@>=schicht@ -> { # art wäre dort 2 if kind@(0,1)==outside -> { D*; if loc_x%2==1 -> F*@(0,1); }; }; -> { # art wäre dort 3 if art!=3 && (loc_x%2==0 || loc_x==9) -> { A; qu=Q_TL_BL; *; qu=Q_TR_BR; *; qu=Q_BL_TL; *@(0,1); qu=Q_BR_TR; *@(0,1); }; qu=Q_ALL; if kind@(0,1)==outside && loc_x%2==1 -> C*@(0,1); }; }; # dito oberer Rand if kind@(0,-1)==outside && art!=2 && loc_x%2==0 -> [naehe = (naehe-xx@-yy@)%schicht@] switch { naehe-zz@<0 || naehe+xx@>=schicht@ -> { # art eins drüber wäre 1 oder 2 A; qu=Q_BL_TL; *; qu=Q_BR_TR; *; qu=Q_ALL; }; -> { # art wäre dort 3 E*; }; }; }; >> Leer = { pics = mkaRhombusLeer.xpm << Leer = { berechne; male; }; >> } Block = { pics = mkaRhombusLeer.xpm colourprob = 0 << default behaviour=floats : reapply; Block = { berechne; male; if basekind@(1,-0.5)!=Kachel || art@(1,-0.5)!=1 -> kind=Leer; }; >> } Kachel = { pics = mkaRhombusLeer.xpm, mkaRhombusKacheln.xpm, mkaRhombusFall.xpm << berechne_inhibit = { inhibit=inhibit@@; switch { art==0 -> inhibit = inhibit_alle; art==1 -> { if art@(0,-1)!=3 -> inhibit.+=DIR_U; if art@(1,-0.5)!=1 -> inhibit.+=DIR_UR; if art@(1,0.5)!=1 -> inhibit.+=DIR_DR; if art@(0,1)!=2 -> inhibit.+=DIR_D; }; art==2 -> { if art@(1,0.5)!=1 -> inhibit.+=DIR_DR; if art@(0,1)!=2 -> inhibit.+=DIR_D; if art@(-1,0.5)!=2 -> inhibit.+=DIR_DL; if art@(-1,-0.5)!=3 -> inhibit.+=DIR_UL; }; art==3 -> { if art@(0,-1)!=3 -> inhibit.+=DIR_U; if art@(1,-0.5)!=1 -> inhibit.+=DIR_UR; if art@(-1,0.5)!=2 -> inhibit.+=DIR_DL; if art@(-1,-0.5)!=3 -> inhibit.+=DIR_UL; }; }; }; Kachel = { if falling || informational -> { 2; pos=kind-Kachel; if !informational -> { xx = (loc_yy+(loc_xx+48)/32*16)/32+verschiebung@@; yy = xx-(loc_xx+16)/32; naehe = (xx*xx@ + yy*yy@) % schicht@; switch { naehe-zz@<0 -> ; naehe+xx@>=schicht@ -> pos+=sorten+2; -> pos+=sorten*2+4; } }; *; } else { berechne; 1; pos=6*(kind-Kachel); male; berechne_inhibit; # floats setzen if art==1 && basekind@(-1,0.5)==Kachel -> behaviour.+=floats else behaviour.-=floats; # Gravitation if art==1 && kind@(-1,0.5)==Leer -> kind@(-1,0.5)=Block; if !exploding -> { switch { # richtung berechnen art==1 -> if tendenz==2 -> if art@(1,0.5)==1 -> richtung=1 else richtung=2 else richtung=3; art==2 -> if art@(1,0.5)==1 -> richtung=1 else richtung=2; art==3 -> richtung=2; }; switch { # kann man da ueberhaupt hin? richtung==1 -> if kind@(1,0.5)==outside || loc_y@(1,0.5)==20 -> richtung=0; richtung==2 -> if kind@(0,1)==outside || loc_y@(0,1)==20 -> richtung=0; richtung==3 -> if kind@(-1,0.5)==outside || loc_y@(-1,0.5)==20 -> richtung=0; }; switch { # ist dort noch frei? richtung==1 -> if kind@(1,0.5)!=Leer && kind@(1,0.5)!=Block -> richtung=0; richtung==2 -> if kind@(0,1)!=Leer && kind@(0,1)!=Block -> richtung=0; richtung==3 -> if kind@(-1,0.5)!=Leer && kind@(-1,0.5)!=Block -> richtung=0; }; switch { # Konflikte erkennen - gerade Spalten zuerst richtung==1 && loc_x%2 && ((art@(2,0)==1 && basekind@(2,0)==Kachel && tendenz@(2,0)==1) || (art@(1,-0.5)==3 && basekind@(1,-0.5)==Kachel)) -> richtung=0; richtung==2 && loc_x%2 && art@(0,1)==1 && basekind@(-1,0.5)==Kachel -> richtung=0; richtung==3 && !(loc_x%2) && art@(-1,0.5)==1 && basekind@(-2,0)==Kachel -> richtung=0; }; switch { richtung==1 -> { kind@(1,0.5)=kind; behaviour@(1,0.5).+=floats; tendenz@(1,0.5)=1; }; richtung==2 -> { kind@(0,1)=kind; tendenz@(0,1)=2; }; richtung==3 -> { kind@(-1,0.5)=kind; tendenz@(-1,0.5)=2; }; }; if richtung -> { if kind@(0,-1)==Leer -> kind=Leer else kind=Block; inhibit@@=inhibit_alle; }; }; }; }; Kachel.land = { berechne; tendenz=2; inhibit=inhibit_alle; inhibit@@=inhibit_alle; }; >> } info = { pics = mkaRhombusVerbind.xpm, infoicons.xpm << info = { if version==0 -> 1A else { A,A,A,A,A,A,A,A,A, B,B,B,B,B,B,B,B,B, C,C,C,C,C,C,C,C,C }; * }; >> } } cuyo-2.1.0/data/reversi_brl.ld0000644000175000017500000006541512402113364013171 00000000000000# -- m4 % > %*.ld; echo ready -- # Copyright(C) 2005 Bernhard R. Link # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This is a generated file. Make changes in the .m4 file with the same basename. ReversiBRL={ name = "Reversi" author = "brl" pics = _0,_1 greypic = grey startpic = lreAlle.xpm startdist = "-........-","-........-", "F........F", "F........F","F...-....F","-F%&" startdist[1] = "F........F","F........F", "F........F", "F........F","F........F","-F%&" numexplode = 15 chaingrass = 1 toptime = 400 << var ro; >> grey = { pics = lreAlle.xpm << grey ={C*}; >> } _0 = { pics = lreAlle.xpm << _0 = { if ro != 0 => { ro = 0; pos=4, pos=7, pos=10, pos=13, pos=16; } else => { pos = 0; }; * ; }; _0.land = { if kind@(1,1)==_1->{if kind@(2,2)==_0->{kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(2,2)==_1->{if kind@(3,3)==_0->{kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(3,3)==_1->{if kind@(4,4)==_0->{kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(4,4)==_1->{if kind@(5,5)==_0->{kind@(4,4)=_0;ro@(4,4)=1;kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(5,5)==_1->{if kind@(6,6)==_0->{kind@(5,5)=_0;ro@(5,5)=1;kind@(4,4)=_0;ro@(4,4)=1;kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(6,6)==_1->{if kind@(7,7)==_0->{kind@(6,6)=_0;ro@(6,6)=1;kind@(5,5)=_0;ro@(5,5)=1;kind@(4,4)=_0;ro@(4,4)=1;kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(7,7)==_1->{if kind@(8,8)==_0->{kind@(7,7)=_0;ro@(7,7)=1;kind@(6,6)=_0;ro@(6,6)=1;kind@(5,5)=_0;ro@(5,5)=1;kind@(4,4)=_0;ro@(4,4)=1;kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}else->if kind@(8,8)==_1->{if kind@(9,9)==_0->{kind@(8,8)=_0;ro@(8,8)=1;kind@(7,7)=_0;ro@(7,7)=1;kind@(6,6)=_0;ro@(6,6)=1;kind@(5,5)=_0;ro@(5,5)=1;kind@(4,4)=_0;ro@(4,4)=1;kind@(3,3)=_0;ro@(3,3)=1;kind@(2,2)=_0;ro@(2,2)=1;kind@(1,1)=_0;ro@(1,1)=1}}}}}}}}}; if kind@(1,0)==_1->{if kind@(2,0)==_0->{kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(2,0)==_1->{if kind@(3,0)==_0->{kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(3,0)==_1->{if kind@(4,0)==_0->{kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(4,0)==_1->{if kind@(5,0)==_0->{kind@(4,0)=_0;ro@(4,0)=1;kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(5,0)==_1->{if kind@(6,0)==_0->{kind@(5,0)=_0;ro@(5,0)=1;kind@(4,0)=_0;ro@(4,0)=1;kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(6,0)==_1->{if kind@(7,0)==_0->{kind@(6,0)=_0;ro@(6,0)=1;kind@(5,0)=_0;ro@(5,0)=1;kind@(4,0)=_0;ro@(4,0)=1;kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(7,0)==_1->{if kind@(8,0)==_0->{kind@(7,0)=_0;ro@(7,0)=1;kind@(6,0)=_0;ro@(6,0)=1;kind@(5,0)=_0;ro@(5,0)=1;kind@(4,0)=_0;ro@(4,0)=1;kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}else->if kind@(8,0)==_1->{if kind@(9,0)==_0->{kind@(8,0)=_0;ro@(8,0)=1;kind@(7,0)=_0;ro@(7,0)=1;kind@(6,0)=_0;ro@(6,0)=1;kind@(5,0)=_0;ro@(5,0)=1;kind@(4,0)=_0;ro@(4,0)=1;kind@(3,0)=_0;ro@(3,0)=1;kind@(2,0)=_0;ro@(2,0)=1;kind@(1,0)=_0;ro@(1,0)=1}}}}}}}}}; if kind@(1,-1)==_1->{if kind@(2,-2)==_0->{kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(2,-2)==_1->{if kind@(3,-3)==_0->{kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(3,-3)==_1->{if kind@(4,-4)==_0->{kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(4,-4)==_1->{if kind@(5,-5)==_0->{kind@(4,-4)=_0;ro@(4,-4)=1;kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(5,-5)==_1->{if kind@(6,-6)==_0->{kind@(5,-5)=_0;ro@(5,-5)=1;kind@(4,-4)=_0;ro@(4,-4)=1;kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(6,-6)==_1->{if kind@(7,-7)==_0->{kind@(6,-6)=_0;ro@(6,-6)=1;kind@(5,-5)=_0;ro@(5,-5)=1;kind@(4,-4)=_0;ro@(4,-4)=1;kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(7,-7)==_1->{if kind@(8,-8)==_0->{kind@(7,-7)=_0;ro@(7,-7)=1;kind@(6,-6)=_0;ro@(6,-6)=1;kind@(5,-5)=_0;ro@(5,-5)=1;kind@(4,-4)=_0;ro@(4,-4)=1;kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}else->if kind@(8,-8)==_1->{if kind@(9,-9)==_0->{kind@(8,-8)=_0;ro@(8,-8)=1;kind@(7,-7)=_0;ro@(7,-7)=1;kind@(6,-6)=_0;ro@(6,-6)=1;kind@(5,-5)=_0;ro@(5,-5)=1;kind@(4,-4)=_0;ro@(4,-4)=1;kind@(3,-3)=_0;ro@(3,-3)=1;kind@(2,-2)=_0;ro@(2,-2)=1;kind@(1,-1)=_0;ro@(1,-1)=1}}}}}}}}}; if kind@(0,1)==_1->{if kind@(0,2)==_0->{kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,2)==_1->{if kind@(0,3)==_0->{kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,3)==_1->{if kind@(0,4)==_0->{kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,4)==_1->{if kind@(0,5)==_0->{kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,5)==_1->{if kind@(0,6)==_0->{kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,6)==_1->{if kind@(0,7)==_0->{kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,7)==_1->{if kind@(0,8)==_0->{kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,8)==_1->{if kind@(0,9)==_0->{kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,9)==_1->{if kind@(0,10)==_0->{kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,10)==_1->{if kind@(0,11)==_0->{kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,11)==_1->{if kind@(0,12)==_0->{kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,12)==_1->{if kind@(0,13)==_0->{kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,13)==_1->{if kind@(0,14)==_0->{kind@(0,13)=_0;ro@(0,13)=1;kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,14)==_1->{if kind@(0,15)==_0->{kind@(0,14)=_0;ro@(0,14)=1;kind@(0,13)=_0;ro@(0,13)=1;kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,15)==_1->{if kind@(0,16)==_0->{kind@(0,15)=_0;ro@(0,15)=1;kind@(0,14)=_0;ro@(0,14)=1;kind@(0,13)=_0;ro@(0,13)=1;kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,16)==_1->{if kind@(0,17)==_0->{kind@(0,16)=_0;ro@(0,16)=1;kind@(0,15)=_0;ro@(0,15)=1;kind@(0,14)=_0;ro@(0,14)=1;kind@(0,13)=_0;ro@(0,13)=1;kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}else->if kind@(0,17)==_1->{if kind@(0,18)==_0->{kind@(0,17)=_0;ro@(0,17)=1;kind@(0,16)=_0;ro@(0,16)=1;kind@(0,15)=_0;ro@(0,15)=1;kind@(0,14)=_0;ro@(0,14)=1;kind@(0,13)=_0;ro@(0,13)=1;kind@(0,12)=_0;ro@(0,12)=1;kind@(0,11)=_0;ro@(0,11)=1;kind@(0,10)=_0;ro@(0,10)=1;kind@(0,9)=_0;ro@(0,9)=1;kind@(0,8)=_0;ro@(0,8)=1;kind@(0,7)=_0;ro@(0,7)=1;kind@(0,6)=_0;ro@(0,6)=1;kind@(0,5)=_0;ro@(0,5)=1;kind@(0,4)=_0;ro@(0,4)=1;kind@(0,3)=_0;ro@(0,3)=1;kind@(0,2)=_0;ro@(0,2)=1;kind@(0,1)=_0;ro@(0,1)=1}}}}}}}}}}}}}}}}}}; if kind@(-1,1)==_1->{if kind@(-2,2)==_0->{kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-2,2)==_1->{if kind@(-3,3)==_0->{kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-3,3)==_1->{if kind@(-4,4)==_0->{kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-4,4)==_1->{if kind@(-5,5)==_0->{kind@(-4,4)=_0;ro@(-4,4)=1;kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-5,5)==_1->{if kind@(-6,6)==_0->{kind@(-5,5)=_0;ro@(-5,5)=1;kind@(-4,4)=_0;ro@(-4,4)=1;kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-6,6)==_1->{if kind@(-7,7)==_0->{kind@(-6,6)=_0;ro@(-6,6)=1;kind@(-5,5)=_0;ro@(-5,5)=1;kind@(-4,4)=_0;ro@(-4,4)=1;kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-7,7)==_1->{if kind@(-8,8)==_0->{kind@(-7,7)=_0;ro@(-7,7)=1;kind@(-6,6)=_0;ro@(-6,6)=1;kind@(-5,5)=_0;ro@(-5,5)=1;kind@(-4,4)=_0;ro@(-4,4)=1;kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}else->if kind@(-8,8)==_1->{if kind@(-9,9)==_0->{kind@(-8,8)=_0;ro@(-8,8)=1;kind@(-7,7)=_0;ro@(-7,7)=1;kind@(-6,6)=_0;ro@(-6,6)=1;kind@(-5,5)=_0;ro@(-5,5)=1;kind@(-4,4)=_0;ro@(-4,4)=1;kind@(-3,3)=_0;ro@(-3,3)=1;kind@(-2,2)=_0;ro@(-2,2)=1;kind@(-1,1)=_0;ro@(-1,1)=1}}}}}}}}}; if kind@(-1,0)==_1->{if kind@(-2,0)==_0->{kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-2,0)==_1->{if kind@(-3,0)==_0->{kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-3,0)==_1->{if kind@(-4,0)==_0->{kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-4,0)==_1->{if kind@(-5,0)==_0->{kind@(-4,0)=_0;ro@(-4,0)=1;kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-5,0)==_1->{if kind@(-6,0)==_0->{kind@(-5,0)=_0;ro@(-5,0)=1;kind@(-4,0)=_0;ro@(-4,0)=1;kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-6,0)==_1->{if kind@(-7,0)==_0->{kind@(-6,0)=_0;ro@(-6,0)=1;kind@(-5,0)=_0;ro@(-5,0)=1;kind@(-4,0)=_0;ro@(-4,0)=1;kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-7,0)==_1->{if kind@(-8,0)==_0->{kind@(-7,0)=_0;ro@(-7,0)=1;kind@(-6,0)=_0;ro@(-6,0)=1;kind@(-5,0)=_0;ro@(-5,0)=1;kind@(-4,0)=_0;ro@(-4,0)=1;kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}else->if kind@(-8,0)==_1->{if kind@(-9,0)==_0->{kind@(-8,0)=_0;ro@(-8,0)=1;kind@(-7,0)=_0;ro@(-7,0)=1;kind@(-6,0)=_0;ro@(-6,0)=1;kind@(-5,0)=_0;ro@(-5,0)=1;kind@(-4,0)=_0;ro@(-4,0)=1;kind@(-3,0)=_0;ro@(-3,0)=1;kind@(-2,0)=_0;ro@(-2,0)=1;kind@(-1,0)=_0;ro@(-1,0)=1}}}}}}}}}; if kind@(-1,-1)==_1->{if kind@(-2,-2)==_0->{kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-2,-2)==_1->{if kind@(-3,-3)==_0->{kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-3,-3)==_1->{if kind@(-4,-4)==_0->{kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-4,-4)==_1->{if kind@(-5,-5)==_0->{kind@(-4,-4)=_0;ro@(-4,-4)=1;kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-5,-5)==_1->{if kind@(-6,-6)==_0->{kind@(-5,-5)=_0;ro@(-5,-5)=1;kind@(-4,-4)=_0;ro@(-4,-4)=1;kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-6,-6)==_1->{if kind@(-7,-7)==_0->{kind@(-6,-6)=_0;ro@(-6,-6)=1;kind@(-5,-5)=_0;ro@(-5,-5)=1;kind@(-4,-4)=_0;ro@(-4,-4)=1;kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-7,-7)==_1->{if kind@(-8,-8)==_0->{kind@(-7,-7)=_0;ro@(-7,-7)=1;kind@(-6,-6)=_0;ro@(-6,-6)=1;kind@(-5,-5)=_0;ro@(-5,-5)=1;kind@(-4,-4)=_0;ro@(-4,-4)=1;kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}else->if kind@(-8,-8)==_1->{if kind@(-9,-9)==_0->{kind@(-8,-8)=_0;ro@(-8,-8)=1;kind@(-7,-7)=_0;ro@(-7,-7)=1;kind@(-6,-6)=_0;ro@(-6,-6)=1;kind@(-5,-5)=_0;ro@(-5,-5)=1;kind@(-4,-4)=_0;ro@(-4,-4)=1;kind@(-3,-3)=_0;ro@(-3,-3)=1;kind@(-2,-2)=_0;ro@(-2,-2)=1;kind@(-1,-1)=_0;ro@(-1,-1)=1}}}}}}}}}; }; >> } _1 = { pics = lreAlle.xpm << _1 = { if ro != 0 => { ro = 0; pos=3, pos=6, pos=9, pos=12, pos=15; } else => { pos = 1; }; * ; }; _1.land = { if kind@(1,1)==_0->{if kind@(2,2)==_1->{kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(2,2)==_0->{if kind@(3,3)==_1->{kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(3,3)==_0->{if kind@(4,4)==_1->{kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(4,4)==_0->{if kind@(5,5)==_1->{kind@(4,4)=_1;ro@(4,4)=1;kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(5,5)==_0->{if kind@(6,6)==_1->{kind@(5,5)=_1;ro@(5,5)=1;kind@(4,4)=_1;ro@(4,4)=1;kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(6,6)==_0->{if kind@(7,7)==_1->{kind@(6,6)=_1;ro@(6,6)=1;kind@(5,5)=_1;ro@(5,5)=1;kind@(4,4)=_1;ro@(4,4)=1;kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(7,7)==_0->{if kind@(8,8)==_1->{kind@(7,7)=_1;ro@(7,7)=1;kind@(6,6)=_1;ro@(6,6)=1;kind@(5,5)=_1;ro@(5,5)=1;kind@(4,4)=_1;ro@(4,4)=1;kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}else->if kind@(8,8)==_0->{if kind@(9,9)==_1->{kind@(8,8)=_1;ro@(8,8)=1;kind@(7,7)=_1;ro@(7,7)=1;kind@(6,6)=_1;ro@(6,6)=1;kind@(5,5)=_1;ro@(5,5)=1;kind@(4,4)=_1;ro@(4,4)=1;kind@(3,3)=_1;ro@(3,3)=1;kind@(2,2)=_1;ro@(2,2)=1;kind@(1,1)=_1;ro@(1,1)=1}}}}}}}}}; if kind@(1,0)==_0->{if kind@(2,0)==_1->{kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(2,0)==_0->{if kind@(3,0)==_1->{kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(3,0)==_0->{if kind@(4,0)==_1->{kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(4,0)==_0->{if kind@(5,0)==_1->{kind@(4,0)=_1;ro@(4,0)=1;kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(5,0)==_0->{if kind@(6,0)==_1->{kind@(5,0)=_1;ro@(5,0)=1;kind@(4,0)=_1;ro@(4,0)=1;kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(6,0)==_0->{if kind@(7,0)==_1->{kind@(6,0)=_1;ro@(6,0)=1;kind@(5,0)=_1;ro@(5,0)=1;kind@(4,0)=_1;ro@(4,0)=1;kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(7,0)==_0->{if kind@(8,0)==_1->{kind@(7,0)=_1;ro@(7,0)=1;kind@(6,0)=_1;ro@(6,0)=1;kind@(5,0)=_1;ro@(5,0)=1;kind@(4,0)=_1;ro@(4,0)=1;kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}else->if kind@(8,0)==_0->{if kind@(9,0)==_1->{kind@(8,0)=_1;ro@(8,0)=1;kind@(7,0)=_1;ro@(7,0)=1;kind@(6,0)=_1;ro@(6,0)=1;kind@(5,0)=_1;ro@(5,0)=1;kind@(4,0)=_1;ro@(4,0)=1;kind@(3,0)=_1;ro@(3,0)=1;kind@(2,0)=_1;ro@(2,0)=1;kind@(1,0)=_1;ro@(1,0)=1}}}}}}}}}; if kind@(1,-1)==_0->{if kind@(2,-2)==_1->{kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(2,-2)==_0->{if kind@(3,-3)==_1->{kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(3,-3)==_0->{if kind@(4,-4)==_1->{kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(4,-4)==_0->{if kind@(5,-5)==_1->{kind@(4,-4)=_1;ro@(4,-4)=1;kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(5,-5)==_0->{if kind@(6,-6)==_1->{kind@(5,-5)=_1;ro@(5,-5)=1;kind@(4,-4)=_1;ro@(4,-4)=1;kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(6,-6)==_0->{if kind@(7,-7)==_1->{kind@(6,-6)=_1;ro@(6,-6)=1;kind@(5,-5)=_1;ro@(5,-5)=1;kind@(4,-4)=_1;ro@(4,-4)=1;kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(7,-7)==_0->{if kind@(8,-8)==_1->{kind@(7,-7)=_1;ro@(7,-7)=1;kind@(6,-6)=_1;ro@(6,-6)=1;kind@(5,-5)=_1;ro@(5,-5)=1;kind@(4,-4)=_1;ro@(4,-4)=1;kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}else->if kind@(8,-8)==_0->{if kind@(9,-9)==_1->{kind@(8,-8)=_1;ro@(8,-8)=1;kind@(7,-7)=_1;ro@(7,-7)=1;kind@(6,-6)=_1;ro@(6,-6)=1;kind@(5,-5)=_1;ro@(5,-5)=1;kind@(4,-4)=_1;ro@(4,-4)=1;kind@(3,-3)=_1;ro@(3,-3)=1;kind@(2,-2)=_1;ro@(2,-2)=1;kind@(1,-1)=_1;ro@(1,-1)=1}}}}}}}}}; if kind@(0,1)==_0->{if kind@(0,2)==_1->{kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,2)==_0->{if kind@(0,3)==_1->{kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,3)==_0->{if kind@(0,4)==_1->{kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,4)==_0->{if kind@(0,5)==_1->{kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,5)==_0->{if kind@(0,6)==_1->{kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,6)==_0->{if kind@(0,7)==_1->{kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,7)==_0->{if kind@(0,8)==_1->{kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,8)==_0->{if kind@(0,9)==_1->{kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,9)==_0->{if kind@(0,10)==_1->{kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,10)==_0->{if kind@(0,11)==_1->{kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,11)==_0->{if kind@(0,12)==_1->{kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,12)==_0->{if kind@(0,13)==_1->{kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,13)==_0->{if kind@(0,14)==_1->{kind@(0,13)=_1;ro@(0,13)=1;kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,14)==_0->{if kind@(0,15)==_1->{kind@(0,14)=_1;ro@(0,14)=1;kind@(0,13)=_1;ro@(0,13)=1;kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,15)==_0->{if kind@(0,16)==_1->{kind@(0,15)=_1;ro@(0,15)=1;kind@(0,14)=_1;ro@(0,14)=1;kind@(0,13)=_1;ro@(0,13)=1;kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,16)==_0->{if kind@(0,17)==_1->{kind@(0,16)=_1;ro@(0,16)=1;kind@(0,15)=_1;ro@(0,15)=1;kind@(0,14)=_1;ro@(0,14)=1;kind@(0,13)=_1;ro@(0,13)=1;kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}else->if kind@(0,17)==_0->{if kind@(0,18)==_1->{kind@(0,17)=_1;ro@(0,17)=1;kind@(0,16)=_1;ro@(0,16)=1;kind@(0,15)=_1;ro@(0,15)=1;kind@(0,14)=_1;ro@(0,14)=1;kind@(0,13)=_1;ro@(0,13)=1;kind@(0,12)=_1;ro@(0,12)=1;kind@(0,11)=_1;ro@(0,11)=1;kind@(0,10)=_1;ro@(0,10)=1;kind@(0,9)=_1;ro@(0,9)=1;kind@(0,8)=_1;ro@(0,8)=1;kind@(0,7)=_1;ro@(0,7)=1;kind@(0,6)=_1;ro@(0,6)=1;kind@(0,5)=_1;ro@(0,5)=1;kind@(0,4)=_1;ro@(0,4)=1;kind@(0,3)=_1;ro@(0,3)=1;kind@(0,2)=_1;ro@(0,2)=1;kind@(0,1)=_1;ro@(0,1)=1}}}}}}}}}}}}}}}}}}; if kind@(-1,1)==_0->{if kind@(-2,2)==_1->{kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-2,2)==_0->{if kind@(-3,3)==_1->{kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-3,3)==_0->{if kind@(-4,4)==_1->{kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-4,4)==_0->{if kind@(-5,5)==_1->{kind@(-4,4)=_1;ro@(-4,4)=1;kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-5,5)==_0->{if kind@(-6,6)==_1->{kind@(-5,5)=_1;ro@(-5,5)=1;kind@(-4,4)=_1;ro@(-4,4)=1;kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-6,6)==_0->{if kind@(-7,7)==_1->{kind@(-6,6)=_1;ro@(-6,6)=1;kind@(-5,5)=_1;ro@(-5,5)=1;kind@(-4,4)=_1;ro@(-4,4)=1;kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-7,7)==_0->{if kind@(-8,8)==_1->{kind@(-7,7)=_1;ro@(-7,7)=1;kind@(-6,6)=_1;ro@(-6,6)=1;kind@(-5,5)=_1;ro@(-5,5)=1;kind@(-4,4)=_1;ro@(-4,4)=1;kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}else->if kind@(-8,8)==_0->{if kind@(-9,9)==_1->{kind@(-8,8)=_1;ro@(-8,8)=1;kind@(-7,7)=_1;ro@(-7,7)=1;kind@(-6,6)=_1;ro@(-6,6)=1;kind@(-5,5)=_1;ro@(-5,5)=1;kind@(-4,4)=_1;ro@(-4,4)=1;kind@(-3,3)=_1;ro@(-3,3)=1;kind@(-2,2)=_1;ro@(-2,2)=1;kind@(-1,1)=_1;ro@(-1,1)=1}}}}}}}}}; if kind@(-1,0)==_0->{if kind@(-2,0)==_1->{kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-2,0)==_0->{if kind@(-3,0)==_1->{kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-3,0)==_0->{if kind@(-4,0)==_1->{kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-4,0)==_0->{if kind@(-5,0)==_1->{kind@(-4,0)=_1;ro@(-4,0)=1;kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-5,0)==_0->{if kind@(-6,0)==_1->{kind@(-5,0)=_1;ro@(-5,0)=1;kind@(-4,0)=_1;ro@(-4,0)=1;kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-6,0)==_0->{if kind@(-7,0)==_1->{kind@(-6,0)=_1;ro@(-6,0)=1;kind@(-5,0)=_1;ro@(-5,0)=1;kind@(-4,0)=_1;ro@(-4,0)=1;kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-7,0)==_0->{if kind@(-8,0)==_1->{kind@(-7,0)=_1;ro@(-7,0)=1;kind@(-6,0)=_1;ro@(-6,0)=1;kind@(-5,0)=_1;ro@(-5,0)=1;kind@(-4,0)=_1;ro@(-4,0)=1;kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}else->if kind@(-8,0)==_0->{if kind@(-9,0)==_1->{kind@(-8,0)=_1;ro@(-8,0)=1;kind@(-7,0)=_1;ro@(-7,0)=1;kind@(-6,0)=_1;ro@(-6,0)=1;kind@(-5,0)=_1;ro@(-5,0)=1;kind@(-4,0)=_1;ro@(-4,0)=1;kind@(-3,0)=_1;ro@(-3,0)=1;kind@(-2,0)=_1;ro@(-2,0)=1;kind@(-1,0)=_1;ro@(-1,0)=1}}}}}}}}}; if kind@(-1,-1)==_0->{if kind@(-2,-2)==_1->{kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-2,-2)==_0->{if kind@(-3,-3)==_1->{kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-3,-3)==_0->{if kind@(-4,-4)==_1->{kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-4,-4)==_0->{if kind@(-5,-5)==_1->{kind@(-4,-4)=_1;ro@(-4,-4)=1;kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-5,-5)==_0->{if kind@(-6,-6)==_1->{kind@(-5,-5)=_1;ro@(-5,-5)=1;kind@(-4,-4)=_1;ro@(-4,-4)=1;kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-6,-6)==_0->{if kind@(-7,-7)==_1->{kind@(-6,-6)=_1;ro@(-6,-6)=1;kind@(-5,-5)=_1;ro@(-5,-5)=1;kind@(-4,-4)=_1;ro@(-4,-4)=1;kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-7,-7)==_0->{if kind@(-8,-8)==_1->{kind@(-7,-7)=_1;ro@(-7,-7)=1;kind@(-6,-6)=_1;ro@(-6,-6)=1;kind@(-5,-5)=_1;ro@(-5,-5)=1;kind@(-4,-4)=_1;ro@(-4,-4)=1;kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}else->if kind@(-8,-8)==_0->{if kind@(-9,-9)==_1->{kind@(-8,-8)=_1;ro@(-8,-8)=1;kind@(-7,-7)=_1;ro@(-7,-7)=1;kind@(-6,-6)=_1;ro@(-6,-6)=1;kind@(-5,-5)=_1;ro@(-5,-5)=1;kind@(-4,-4)=_1;ro@(-4,-4)=1;kind@(-3,-3)=_1;ro@(-3,-3)=1;kind@(-2,-2)=_1;ro@(-2,-2)=1;kind@(-1,-1)=_1;ro@(-1,-1)=1}}}}}}}}}; }; >> } } cuyo-2.1.0/data/aehnlich.ld0000644000175000017500000000473211671742012012426 00000000000000# # Copyright 2006-2008,2010 by Mark Weyer # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Aehnlich={ name = "Similar balls" description[geek] = "Numerically equal colours connect" author = "Mark Weyer" anzahl = 96 abstand = abstand[easy] = abstand[hard] = pics = Kugel startpic = Rest greypic = Rest startdist = "***....***","***....***","***....***" numexplode = 17 numexplode[2] = 13 bgcolor = 0,0,0 textcolor = 160,176,164 Kugel = { pics = maeSchema.xpm,maeSorten.xpm versions = << var dx, dy, ergebnis, rechts, links, oben, unten; gleich = { ergebnis = ((version@(dx,dy)-version) % anzahl < abstand) || ((version-version@(dx,dy)) % anzahl < abstand); }; Kugel.connect = { inhibit = 0; if kind@(0,1)==Kugel -> { dx=0; dy=1; gleich; if !ergebnis -> inhibit+=DIR_D}; if kind@(1,0)==Kugel -> { dx=1; dy=0; gleich; if !ergebnis -> inhibit+=DIR_R}; }; Kugel = { dx=0; dy=1; gleich; unten = (kind@(0,1)==Kugel) && ergebnis; dx=1; dy=0; gleich; rechts = (kind@(1,0)==Kugel) && ergebnis; dx=0; dy=-1; gleich; oben = (kind@(0,-1)==Kugel) && ergebnis; dx=-1; dy=0; gleich; links = (kind@(-1,0)==Kugel) && ergebnis; qu=Q_TL; pos = links+2*oben; *; qu=Q_TR; pos = 1-rechts+2*oben; *; qu=Q_BL; pos = 2+links-2*unten; *; qu=Q_BR; pos = 3-rechts-2*unten; *; qu=Q_ALL; pos=version; 1*; }; >> } Rest = { pics = maeSchema.xpm,maeSorten.xpm << Rest = { qu=Q_TL; A*; qu=Q_TR; B*; qu=Q_BL; C*; qu=Q_BR; D*; qu=Q_ALL; pos=anzahl+kind-Rest; 1*;}; >> } } cuyo-2.1.0/data/kacheln4.ld0000644000175000017500000001304012415051251012327 00000000000000# # Copyright 2006,2011,2014 by Mark Weyer # Modified 2010 by Mark Weyer # Maintenance modifications 2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Kacheln_Viereck = { # TRANSLATORS: "tiling" is used synonymous to tesselation name = "Tiling II" author = "Mark Weyer" sorten = 5 pics = Kachel* greypic = Kachel startpic = Kachel emptypic = Leer startdist[1] = "....**....","....**....","..**++**..","..**++**..", "**++++++**","**++++++**","++**++**++","++**++**++", "++++**++++","++++**++++" startdist[2] = "....**....","....**....","..**++**..","..**++**..", "**++++++**","**++++++**" numexplode = 7 numexplode[2] = 6 numexplode[easy] = 5 numexplode[2,easy] = 4 << var dreieck_unten, dreieck_rechts, verschiebung; semiglobal.row_up = {verschiebung+=1;}; semiglobal.row_down = {verschiebung-=1;}; >> Leer = { pics = mkaViereckRahmen.xpm << Leer = { if (loc_x+loc_y+verschiebung@@) % 2 == 0 -> { if ??????0? -> { qu=Q_TL; if ???????0 -> H else A; * }; if 0??????? -> { qu=Q_TR; if ?0?????? -> H else A; * }; if ????0??? -> { qu=Q_BL; if ?????0?? -> A else H; * }; if ??0????? -> { qu=Q_BR; if ???0???? -> A else H; * }; } else { if 0??????? -> { qu=Q_TL; if ???????0 -> E else D; * }; if ??0????? -> { qu=Q_TR; if ?0?????? -> E else D; * }; if ??????0? -> { qu=Q_BL; if ?????0?? -> D else E; * }; if ????0??? -> { qu=Q_BR; if ???0???? -> D else E; * }; }; }; >> } Kachel = { pics = mkaViereckKacheln.xpm, mkaViereckRahmen.xpm, mkaViereckFall.xpm << var links, rechts, oben, unten; Kachel.init = { dreieck_unten = rnd(sorten-1); if dreieck_unten>=kind-Kachel -> dreieck_unten+=1; dreieck_rechts = rnd(sorten-1); if dreieck_rechts>=kind-Kachel -> dreieck_rechts+=1; }; Kachel = { if falling || informational -> {file=2; pos=kind-Kachel; *;} else { unten = kind@(0,1)!=nothing && kind@(0,1)!=outside; oben = kind@(0,-1)!=nothing && kind@(0,-1)!=outside; links = kind@(-1,0)!=nothing && kind@(-1,0)!=outside; rechts = kind@(1,0)!=nothing && kind@(1,0)!=outside; file=1; if (loc_x+loc_y+verschiebung@@) % 2 == 0 -> { qu=Q_TL; if oben || (links && kind@(-1,-1)!=nothing && kind@(-1,-1)!=outside) -> F else C; *; qu=Q_TR; if rechts || (oben && kind@(1,-1)!=nothing && kind@(1,-1)!=outside) -> F else C; *; qu=Q_BL; if links || (unten && kind@(-1,1)!=nothing && kind@(-1,1)!=outside) -> C else F; *; qu=Q_BR; if unten || (rechts && kind@(1,1)!=nothing && kind@(1,1)!=outside) -> C else F; *; } else { qu=Q_TL; if links || (oben && kind@(-1,-1)!=nothing && kind@(-1,-1)!=outside) -> G else B; *; qu=Q_TR; if oben || (rechts && kind@(1,-1)!=nothing && kind@(1,-1)!=outside) -> G else B; *; qu=Q_BL; if unten || (links && kind@(-1,1)!=nothing && kind@(-1,1)!=outside) -> B else G; *; qu=Q_BR; if rechts || (unten && kind@(1,1)!=nothing && kind@(1,1)!=outside) -> B else G; *; }; qu=Q_ALL; file=0; pos=10*(kind-Kachel); if (loc_x+loc_y+verschiebung@@) % 2 == 0 -> { pos+=7; *; if unten -> { if ????1??? -> pos=10*(kind-Kachel)+3 else pos=10*dreieck_unten+3; *; pos+=5; *@(0,1); }; if rechts -> { if ??1????? -> pos=10*(kind-Kachel)+5 else pos=10*dreieck_rechts+5; *; pos+=1; *@(1,0); }; } else { pos+=2; *; if unten -> { if ????1??? -> pos=10*(kind-Kachel)+4 else pos=10*dreieck_unten+4; *; pos+=5; *@(0,1); }; if rechts -> { if ??1????? -> pos=10*(kind-Kachel) else pos=10*dreieck_rechts; *; pos+=1; *@(1,0); }; }; }; }; >> } } cuyo-2.1.0/data/memory.ld0000644000175000017500000000623512402160024012151 00000000000000# # Copyright 2006 by Bernhard Seckinger # Maintenance modifications 2002,2003,2005,2006,2008,2011,2014 by the cuyo developers # Partly based on the following levels: # hexkugeln.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # kunst.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # pinguine.ld which, at that time, was # Created <=2002 by Bernhard Seckinger # hormone.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # viecher.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # nasenkugeln.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # pfeile.ld which, at that time, was # Copyright <=2004 by Immanuel Halupczok # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # bmKarten.xpm[.gz], bmStrich.xpm[.gz], bmTisch.xpm[.gz] # # referenced from labskaus.ld # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Fertig. # # FK Blumenbild wird nicht mehr "zitiert". Memory={ # TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, # at least in the German market. name="Memory" author="Berni" numexplode=2 chaingrass=0 greypic=bm pics=bm*13 bgcolor=255,255,255 topcolor=0,0,0 toptime=50 startpic=bmTisch.xpm startdist[1]="++++++++++","AAAAAAAAAA" startdist="AAAAAAAAAA" textcolor=90,90,90 # TRANSLATORS: "Memory" is the name of a commercial brand of the Pairs game, # at least in the German market. description="Well, memory." << var zuklappen=1; karte={ switch { falling || informational -> { # Am fallen * }; zuklappen && kind@(-1,0) != outside && kind@(-1,0) != nothing && kind@(-1,0) != bmTisch && zuklappen@(-1,0) -> { # Wir sollen zuklappen, aber links von uns ist eine Karte, # die auch noch nicht damit angefangen. Dann warten wir noch... # (Lustiger Rberklapp-effekt.) * }; zuklappen => { # Grade aufgekommen oder so was. # Aber erst noch ein Bildchen lang normal, weil sonst die # Start-Karten schon beim ersten Bild leicht umklappen. {zuklappen=0;*}, {pos+=15;*}, 1A*, P* }; 1:500 => { # Kurz aufklappen P*, 1A*, {pos+=15;*}, *,*,*,*,*,*,*,*,*,*,*,*,*,*, {pos+=15;*}, 1A*, P* }; -> A*; # zugeklappt }; }; >> bm={ pics=bmKarten.xpm,bmStrich.xpm << bm={pos=kind-bm+1;karte}; >> } } cuyo-2.1.0/data/kacheln5.ld0000644000175000017500000001464012415051252012340 00000000000000# # Copyright 2006,2010,2011,2014 by Mark Weyer # Maintenance modifications 2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # mkaFuenfeckVerbind.xpm[.gz] # Kacheln_Fuenfeck = { # TRANSLATORS: "tiling" is used synonymous to tesselation name = "Tiling III" author = "Mark Weyer" sorten = 5 pics = Kachel* greypic = Kachel startpic = Kachel emptypic = Leer startdist = "**........","**........","++**......","++**......", "**++**....","**++**....","++**++**..","++**++**..","**++**++**" startdist[easy] = "**........","**........","++**......","++**......", "**++**....","**++**....","++**++**.." toppic = mkaFuenfeckHetz.xpm topoverlap = 48 topcolor = 255,255,255 numexplode = 7 numexplode[easy] = 5 neighbours = << var verschiebung; semiglobal.row_up = {verschiebung+=1;}; semiglobal.row_down = {verschiebung-=1;}; >> Leer = { pics = mkaFuenfeckRahmen.xpm << Leer = { if (loc_y+verschiebung@@) % 2 == 0 -> { if loc_x % 2 == 0 -> { qu=Q_TL; switch { 0?????0? -> {Y*;}; ??????0? -> {c*;}; 1??????0 -> {a*;}; 0??????0 -> {F*;}; 0??????? -> {O*;}; }; if ?0?????? -> {qu=Q_TR; Q*;}; qu=Q_BR; switch { ??0?0??? -> {Y*;}; ????0??? -> {c*;}; ??10???? -> {E*;}; ??00???? -> {a*;}; ??0????? -> {A*;}; }; qu=Q_BL; switch { ????0?0? -> {c*;}; ????1?0? -> {G*;}; ????0?1? -> {M*;}; }; } else { qu=Q_TR; switch { 0?0????? -> {B*;}; 0??????? -> {Z*;}; ?01????? -> {N*;}; ?00????? -> {j*;}; ??0????? -> {P*;}; }; if ???0???? -> {qu=Q_BR; b*;}; qu=Q_BL; switch { ????0?0? -> {B*;}; ??????0? -> {Z*;}; ????10?? -> {d*;}; ????00?? -> {N*;}; ????0??? -> {F*;}; }; qu=Q_TL; switch { 0?????0? -> {Z*;}; 0?????1? -> {E*;}; 1?????0? -> {D*;}; }; }; } else { if loc_x % 2 == 0 -> { qu=Q_BL; switch { ????0?0? -> {i*;}; ????0??? -> {K*;}; ?????01? -> {W*;}; ?????00? -> {A*;}; ??????0? -> {U*;}; }; if ???????0 -> {qu=Q_TL; I*;}; qu=Q_TR; switch { 0?0????? -> {i*;}; ??0????? -> {K*;}; 10?????? -> {G*;}; 00?????? -> {W*;}; 0??????? -> {e*;}; }; qu=Q_BR; switch { ??0?0??? -> {K*;}; ??1?0??? -> {f*;}; ??0?1??? -> {g*;}; }; } else { qu=Q_BR; switch { ??0?0??? -> {L*;}; ??0????? -> {H*;}; ???01??? -> {J*;}; ???00??? -> {e*;}; ????0??? -> {V*;}; }; if ?????0?? -> {qu=Q_BL; T*;}; qu=Q_TL; switch { 0?????0? -> {L*;}; 0??????? -> {H*;}; ??????10 -> {f*;}; ??????00 -> {J*;}; ??????0? -> {j*;}; }; qu=Q_TR; switch { 0?0????? -> {H*;}; 1?0????? -> {d*;}; 0?1????? -> {X*;}; }; }; }; }; >> } Kachel = { pics = mkaFuenfeckKacheln.xpm, mkaFuenfeckRahmen.xpm, mkaFuenfeckFall.xpm << var links, rechts, oben, unten; Kachel.connect = { if (loc_y+verschiebung@@) % 2 == 0 -> if loc_x % 2 == 0 -> inhibit = DIR_DR+DIR_DL+DIR_UL else inhibit = DIR_DL+DIR_UL+DIR_UR else if loc_x % 2 == 0 -> inhibit = DIR_UR+DIR_DR+DIR_DL else inhibit = DIR_UL+DIR_UR+DIR_DR; }; Kachel = { if falling || informational -> {file=2; pos=kind-Kachel; *;} else { unten = kind@(0,1)!=nothing && kind@(0,1)!=outside; oben = kind@(0,-1)!=nothing && kind@(0,-1)!=outside; links = kind@(-1,0)!=nothing && kind@(-1,0)!=outside; rechts = kind@(1,0)!=nothing && kind@(1,0)!=outside; file=1; if (loc_y+verschiebung@@) % 2 == 0 -> if loc_x % 2 == 0 -> {if links || unten -> C else Q; *;} else {if oben || links -> R else b; *;} else if loc_x % 2 == 0 -> {if unten || rechts -> S else I; *;} else {if rechts || oben -> h else T; *;}; file=0; pos=12*(kind-Kachel); if (loc_y+verschiebung@@) % 2 == 0 -> { if loc_x % 2 == 0 -> { pos+=6; *; pos+=1; *@(1,0); pos-=7; *@(0,-1); } else { pos+=3; *; pos+=1; *@(1,0); pos+=5; *@(0,1); }; } else { if loc_x % 2 == 0 -> { pos+=11; *; pos-=1; *@(-1,0); pos-=5; *@(0,-1); } else { pos+=2; *; pos-=1; *@(-1,0); pos+=7; *@(0,1); }; }; }; }; >> } info = { pics = mkaFuenfeckVerbind.xpm, infoicons.xpm << info = { if version==0 -> 1 else 0; A* }; >> } } cuyo-2.1.0/data/kunst.ld0000644000175000017500000001425612402113363012013 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Modified 2006 by Bernhard Seckinger # Modified 2006 by Immanuel Halupczok # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ibkBG.xpm[.gz], ibkBunt.xpm[.gz], ibkGruen.xpm[.gz], ibkRahmen.xpm[.gz], # ibkRot.xpm[.gz], ibkSchnecken.xpm[.gz], ibkTintenfleck.xpm[.gz], # ibkWolkig.xpm[.gz] # # referenced from memory.ld # Status: (M=Muss, S=Soll, K=Kann, F=Feature, B=Bugs) # # Keine bekannten Bugs Kunst={ name = "Modern Art" author = "Berni & Immi" numexplode = 5 numexplode[1] = 9 chaingrass = 1 pics = motiv * 5 bgcolor = 160,160,160 topcolor = 255,196,0 toptime = 50 startpic = frame startdist = "ABBBBBBBBC","-B%&" greypic = spot textcolor = 255,255,0 description = "Beware of ink!" randomgreys[1] = 200 << var ink = 0; # Tintenmenge auf dem Blob var internal_kind = -1; # Aussehen der Blobs, bestimmt das Verbinden (nicht fr Rahmen) var pattern = 0; # Hilfsvariable fr Nachbarverbindungen var offset = 0; # Fr Wolken. semiglobal.row_up = { offset+=1; }; semiglobal.row_down = { offset-=1; }; # Malt den Tintenfleck paint_ink = { if ink>0 => { if ink<3 => { pos = ink; *; } else => {{C*;ink@(0,0)=2;};D*,{E*;I*@(0,1);},{F*;J*@(0,1);},{G*;K*@(0,1);ink@(0,1)+=1;};}; }; }; # Berechnet das Nachbarschaftspattern calculate_neighbours = { pattern = 0; if !falling -> { if (internal_kind@(0,0)==internal_kind@( 0,-1)) -> pattern+=1; if (internal_kind@(0,0)==internal_kind@( 0, 1)) -> pattern+=2; if (internal_kind@(0,0)==internal_kind@(-1, 0)) -> pattern+=4; if (internal_kind@(0,0)==internal_kind@( 1, 0)) -> pattern+=8; }; }; schema16 = { switch { pattern == 0 -> A; pattern == 1 -> M; pattern == 2 -> E; pattern == 3 -> I; pattern == 4 -> D; pattern == 5 -> P; pattern == 6 -> H; pattern == 7 -> L; pattern == 8 -> B; pattern == 9 -> N; pattern == 10 -> F; pattern == 11 -> J; pattern == 12 -> C; pattern == 13 -> O; pattern == 14 -> G; pattern == 15 -> K; }; * }; # Schneidet bei Bunt und bei Wolkig die Ecken ab, damit diese besser zu # den anderen Arten passen. Zuvor muss file und pos gesetzt werden. cut_corners = { 5; if !falling && (pattern&5) == 0 -> { qu = Q_TL;*; }; if !falling && (pattern&6) == 0 -> { qu = Q_BL;*; }; if !falling && (pattern&9) == 0 -> { qu = Q_TR;*; }; if !falling && (pattern&10) == 0 -> { qu = Q_BR;*; }; qu = Q_ALL; }; # Zeichnet einen Blob samt Tinte, sofern notwendig paint_all = { # Motiv malen file = internal_kind; calculate_neighbours; if falling -> { if internal_kind==0 || internal_kind==4 -> Q else -> A; *; } else -> { if internal_kind == 4 -> { pos = (loc_x + 2*(loc_p==1)) % 4 + 4 * ((loc_y+offset@@) % 4); *; } else schema16; }; # Ecken abrunden if internal_kind==0 -> {A;cut_corners;}; if internal_kind==4 -> {B;cut_corners;}; # Fleck malen, sofern vorhanden 6; paint_ink; if exploding==8 -> internal_kind@(0,0)=-1; # Variablen werden nicht # automatisch gelscht, # also von Hand... }; >> frame = { pics = "ibkRahmen.xpm","ibkTintenfleck.xpm" << frame = { # Rahmen Zeichnen default2g; # Tinte Zeichnen 1;paint_ink; }; >> } motiv = { pics = "ibkBunt.xpm","ibkGruen.xpm","ibkRot.xpm","ibkSchnecken.xpm","ibkWolkig.xpm", "ibkBG.xpm","ibkTintenfleck.xpm" << motiv.init = { internal_kind = kind-motiv; }; motiv = { paint_all; }; >> } spot = { pics = "ibkBunt.xpm","ibkGruen.xpm","ibkRot.xpm","ibkSchnecken.xpm","ibkWolkig.xpm", "ibkBG.xpm","ibkTintenfleck.xpm" << spot.init = { internal_kind = -1; # -1 = fallender Tropfen ink = 1; }; spot = { if internal_kind==-1 -> { 6A*; # In den nachfolgenden Zeilen wird internal_kind auf -2 gesetzt, # damit die entsprechenden Blobs nicht beim Nachbarschaft # berechnen stren. switch { # Tinte tropft unten raus kind@(0,1)==outside -> { kind@(0,0) = nothing; internal_kind@(0,0)=-2; }; # Tinte tropft auf einen nichtleeren Blob (kind@(0,1)==spot && internal_kind@(0,1)!=-1) || kind@(0,1)==frame || kind@(0,1)==0..4 -> { if kind@(0,1)!=frame -> kind@(0,1) = spot; ink@(0,1)+=1; kind@(0,0) = nothing; internal_kind@(0,0)=-2; }; }; } else => paint_all; }; >> } } cuyo-2.1.0/data/baender.ld0000644000175000017500000000423611703134311012243 00000000000000# # Copyright 2005,2008 by Mark Weyer # Modified 2010,2012 by Mark Weyer # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Baender = { name = "Ribbons" author = "Mark Weyer" description = "Ribbons connect diagonally." neighbours = numexplode[1] = 5 numexplode[2] = 4 startpic = Gras startdist = "*.........","**...*....","***.***..*","**********" greypic = Grau emptypic = Hinter pics[1] = Band * 5 pics[2] = Band * 4 << var ausgleich; semiglobal.row_up = ausgleich+=1; semiglobal.row_down = ausgleich-=1; Malen = { qu=Q_TL; if kind@(-1,-1)==kind -> A else B; *; if kind@(1,-1)==kind -> {C; *@(1,0)}; qu=Q_TR; if kind@(1,-1)==kind -> A else B; *; if kind@(-1,-1)==kind -> {C; @(-1,0)*}; qu=Q_BL; if kind@(-1,1)==kind -> A else B; *; if kind@(1,1)==kind -> {C; @(1,0)*}; qu=Q_BR; if kind@(1,1)==kind -> A else B; *; if kind@(-1,1)==kind -> {C; *@(-1,0)}; }; >> Band = { pics = mbaBand1.xpm, mbaBand2.xpm, mbaBand3.xpm, mbaBand4.xpm, mbaBand5.xpm << Band = {file=kind-Band; Malen;}; >> } Gras = { pics = mbaGras.xpm << Gras = Malen; >> } Grau = { pics = mbaGrau.xpm << Grau = Malen; >> } Hinter = { pics = mbaHinter.xpm, mbaHinter2.xpm << Hinter = {file=(loc_x+loc_y+ausgleich@@)%2; B; *}; >> } } cuyo-2.1.0/data/slime.ld0000644000175000017500000000526711672633152011775 00000000000000# # Copyright 2002,2003,2005,2006 by Mark Weyer # Maintenance modifications 2006,2008,2010,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # slime1.wav, slime2.wav # Slime={ name="Slime" author="Mark Weyer" numexplode[1]=5 numexplode[2]=15 chaingrass=0 pics=fastslime bgcolor=0,0,0 topcolor=255,255,255 textcolor=0,255,0 toptime[1]=80 toptime[2]=200 startpic=slowslime startdist[1]="**********","**********" startdist[2]="**********" randomgreys[1]=20 << var minrate, maxrate, count, dx, dy; init = {maxrate=minrate*2; count=maxrate;}; fastslime.init = {minrate=2; init;}; slowslime.init = {minrate=20; init;}; slime = { switch { falling -> ; count -> count-=1; -> { count=minrate+rnd(maxrate-minrate+1); switch { 1:4 -> if kind@(0,-1)==nothing -> { kind@(0,-1)=kind; minrate@(0,-1)=minrate; maxrate@(0,-1)=maxrate; count@(0,-1)=maxrate; }; 1:2 -> if kind@(-1,0)==nothing -> { kind@(-1,0)=kind; minrate@(-1,0)=minrate; maxrate@(-1,0)=maxrate; count@(-1,0)=maxrate; }; -> if kind@(1,0)==nothing -> { kind@(1,0)=kind; minrate@(1,0)=minrate; maxrate@(1,0)=maxrate; count@(1,0)=maxrate; }; }; }; }; schema5; }; fastslime = {if size<10*players-5 -> slime else schema5;}; slowslime = { switch { 1:300 => {1,1,2,2,3, {if 1:2 -> sound("slime1.wav") else -> sound("slime2.wav"); 3;}, 4,4,5,5,6,6}; -> 0; }; slime; }; >> fastslime = {pics = msGreen.xpm} slowslime = { pics = msRed.xpm,msRed0.xpm,msRed1.xpm,msRed2.xpm,msRed3.xpm,msRed4.xpm,msRed5.xpm greyprob = 1 } } cuyo-2.1.0/data/kolben.ld0000644000175000017500000000447311671742015012132 00000000000000# # Copyright 2002,2005,2010 by Mark Weyer # Modified 2006 by Mark Weyer # Maintenance modifications 2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Kolben={ name="Flasks" description="It depends on the gas they are filled with..." author="Mark Weyer" numexplode=8 numexplode[easy]=5 chaingrass=0 pics=kolben*3 bgcolor=0,0,0 topcolor=200,200,200 toptime=100 startpic=start startdist="..*..*..*.",".***.*.***","**********" greypic=grau randomgreys[1]=150 randomgreys[1,easy]=-1 blitzrate=100 blitzrate[easy]=20 fallblitzrate=20 fallblitzrate[easy]=4 << kolben={ switch { (1:blitzrate) || (falling && (1:fallblitzrate)) => 1,0,1,1,1,0,1; -> 0; }; file *= (1+kind-kolben); pos = (kind@(1,0)==kind && !(kind@(0,1)==kind && kind@(1,1)==kind)) * (1-2*(kind@(-1,0)==kind && !(kind@(0,1)==kind && kind@(-1,1)==kind))) + (kind@(-1,0)==kind && !(kind@(0,1)==kind && kind@(-1,1)==kind)) * 3 + (kind@(0,1)==kind) * (4-8*(kind@(0,-1)==kind)) + (kind@(0,-1)==kind)*12; *; }; start={ switch { 11111?11 -> C*; 0?111?1? -> C*; 1?111?1? -> O*; 111?0?01 -> B*; 111?0?11 -> C*; 111?1?01 -> F*; 111?1?11 -> G*; -> schema16; }; }; grau={ pos=version; *; }; >> kolben={ pics=mkKolben.xpm,mkKolbenBlitzRot.xpm, mkKolbenBlitzGruen.xpm,mkKolbenBlitzBlau.xpm } start={ pics=mkKolben.xpm } grau={ pics=mkKolben.xpm versions=16 } } cuyo-2.1.0/data/go2.ld0000644000175000017500000000443212402326334011335 00000000000000# # Copyright 2006,2014 by Mark Weyer # partly based on go.ld which, at that time, was: # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006 by the cuyo developers # Modified 2010 by Mark Weyer # Maintenance modifications 2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # igGo.xpm[.gz], igSchwarz.xpm[.gz], igWeiss.xpm[.gz] # GoII={ name = "Go" author = "Mark Weyer" description = "Why to place your goban horizontally" pics = Stein*2 startpic = igGo.xpm startdist = "*........*","**......**","***....***","****..****" emptypic = Rand chaingrass = 1 Stein = { numexplode = 0 pics = igSchwarz.xpm,igWeiss.xpm greyprob = 1 << Stein = { weight = -(falling || (kind@(1,0)==Rand) || (kind@(-1,0)==Rand) || (kind@(0,1)==Rand) || (kind@(0,-1)==Rand)); # -1, wenn der Stein Freiheiten hat if falling || informational -> C else A; file=kind-Stein; *; if informational && 1:5 => {,,,,,kind=Stein+rnd(2)}; }; >> } Rand = { pics = mgRand.xpm << Rand = { switch { 11111111 -> A; 1?111111 -> M; 111?1111 -> B; 11111?11 -> E; 1111111? -> D; 111?111? -> I; 1?111?11 -> C; ??11111? -> N; 1???1111 -> F; 111???11 -> H; 11111??? -> P; ????111? -> O; 1?????11 -> J; 111????? -> G; ??111??? -> L; ???????? -> K; }; if (pos>0) -> *; }; >> } } cuyo-2.1.0/data/novips.ld0000644000175000017500000000274012402326334012164 00000000000000# # Copyright 2010,2011,2014 by Mark Weyer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # NoVIPs = { # TRANSLATORS: "equal" here is in the egalitarian sense name = "All colours are equal" description = "Get rid of everything" author = "Mark Weyer" anzahl = 6 pics = Blop * startdist = ".+.+..+.+.",".+.+..+.+.",".+.+..+.+.",".+.+..+.+.","++%&" numexplode = 6 Blop = { pics = mnv1.xpm,mnv2.xpm,mnv3.xpm,mnv4.xpm,mnv5.xpm,mnv6.xpm greyprob = 1 << Blop.init = { behaviour = explodes_on_explosion + explodes_on_chain_reaction + explodes_on_size + calculate_size + goalblob; }; Blop = { file=kind-Blop; schema4; if informational && 1:5 => {,,,,,kind=Blop+rnd(anzahl)}; }; >> } } cuyo-2.1.0/data/explosive.ld0000644000175000017500000000276211672457343012705 00000000000000# # Copyright <=2004 by Bernhard R. Link # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # lbBlack.xpm[.gz], lbBomb.xpm[.gz], lbGray.xpm[.gz] # Explosive={ name="Explosive" author="brl" numexplode=8 numexplode[1]=8 chaingrass=1 pics=lbBomb bgcolor=190,190,190 startpic=lbBlack startdist="..A....A..","..AA..AA.." greypic=lbGray.xpm topcolor=210,210,210 randomgreys=190 randomgreys[1]=20 toptime=50 lbBlack={ pics = lbBlack.xpm schema=0 } lbBomb={ pics=lbBomb.xpm << lbBomb= { switch { size == ..1 -> A; size == 2 -> B; size == 3 -> B; size == 4 -> B; size == 5 -> B; size == 6 -> C; size == 7 -> D; size == 8.. -> E; }; 0; *; }; >> } } cuyo-2.1.0/data/maennchen.ld0000644000175000017500000000246012402113363012575 00000000000000# # Copyright 2005,2006,2014 by Mark Weyer # Maintenance modifications 2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Maennchen = { name = "Characters" author = "Mark Weyer" pics = maennchen*3 greypic = grau startpic = mmGrasgrau.xpm startdist = "...BBBB...",".BBBBBBBB.","BBBBBBBBBB","-B%&" chaingrass[hard] = 1 maennchen = { pics = mmBlau.xpm, mmRot.xpm, mmGelb.xpm << maennchen.init = {weight = rnd(3)+1;}; maennchen = {file=kind-maennchen; pos=weight+3; *; schema4;}; >> numexplode = 10 } grau = { pics=mmGrasgrau.xpm << grau=*; >> } } cuyo-2.1.0/data/paratroopers.ld0000644000175000017500000001774612402326334013403 00000000000000# # Copyright 2006 by Bernhard R. Link # Modified 2008 by Bernhard R. Link # Maintenance modifications 2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ltCannon.xpm[.gz], ltGray.xpm[.gz], ltParatrooper.xpm[.gz], ltSky.xpm[.gz] # ParatroopersInvers = { # TRANSLATORS: Apparently, "Paratroopers" is the name of a computer game. name = "Paratroopers" description = "the other way around" author = "brl" pics = Paratrooper greypic = Gray startpic = Cannon startdist = "....EF....","....GH....","....--....","....--....","-I%&" numexplode = 11 # TODO: # falling_fast_is_permanent = 1 textcolor = 255,255,255 bgcolor = 0,0,0 topcolor = 84,252,252 topoverlap = 0 toptime = 50 emptypic = Sky << var dynamite = 0 : reapply , count = 0 : reapply; var s1_x = -20, s1_y = -20; var s2_x = 20, s2_y = -20; var s3_x = 20, s3_y = -20; var s4_x = 20, s4_y = -20; var dead = 0 :reapply; >> semiglobal = { << semiglobal = { s1_x -= 1; s1_y -= 1; s2_x += 1; s2_y -= 1; s3_y -= 1; s4_y -= 1; if dead >= 2 -> {falling_speed = 64; }; }; semiglobal.keyfall = {falling_speed = 32;}; >> } Sky = { pics = ltSky.xpm << Sky = { # out1=loc_y; # out2=s4_y; switch { falling -> {}; -> { switch { 2*loc_x==s1_x@@() -> switch { 2*loc_y==s1_y@@() -> {pos=0;*;}; 2*loc_y==s1_y@@()+1 -> {pos=3;*;}; 2*loc_y==s1_y@@()-1 -> {pos=1;*;}; }; 2*loc_x==s1_x@@()+1 -> switch { 2*loc_y==s1_y@@() -> {pos=5;*;}; 2*loc_y==s1_y@@()+1 -> {pos=9;*;}; 2*loc_y==s1_y@@()-1 -> {pos=7;*;}; }; 2*loc_x==s1_x@@()-1 -> switch { 2*loc_y==s1_y@@() -> {pos=4;*;}; 2*loc_y==s1_y@@()+1 -> {pos=8;*;}; 2*loc_y==s1_y@@()-1 -> {pos=6;*;}; }; }; switch { 2*loc_x==s2_x@@() -> switch { 2*loc_y==s2_y@@() -> {pos=0;*;}; 2*loc_y==s2_y@@()+1 -> {pos=3;*;}; 2*loc_y==s2_y@@()-1 -> {pos=1;*;}; }; 2*loc_x==s2_x@@()+1 -> switch { 2*loc_y==s2_y@@() -> {pos=5;*;}; 2*loc_y==s2_y@@()+1 -> {pos=9;*;}; 2*loc_y==s2_y@@()-1 -> {pos=7;*;}; }; 2*loc_x==s2_x@@()-1 -> switch { 2*loc_y==s2_y@@() -> {pos=4;*;}; 2*loc_y==s2_y@@()+1 -> {pos=8;*;}; 2*loc_y==s2_y@@()-1 -> {pos=6;*;}; }; }; switch { 2*loc_x==s3_x@@() -> switch { 2*loc_y==s3_y@@() -> {pos=0;*;}; 2*loc_y==s3_y@@()+1 -> {pos=3;*;}; 2*loc_y==s3_y@@()-1 -> {pos=1;*;}; }; 2*loc_x==s3_x@@()+1 -> switch { 2*loc_y==s3_y@@() -> {pos=5;*;}; 2*loc_y==s3_y@@()+1 -> {pos=9;*;}; 2*loc_y==s3_y@@()-1 -> {pos=7;*;}; }; 2*loc_x==s3_x@@()-1 -> switch { 2*loc_y==s3_y@@() -> {pos=4;*;}; 2*loc_y==s3_y@@()+1 -> {pos=8;*;}; 2*loc_y==s3_y@@()-1 -> {pos=6;*;}; }; }; switch { 2*loc_x==s4_x@@() -> switch { 2*loc_y==s4_y@@() -> {pos=0;*;}; 2*loc_y==s4_y@@()+1 -> {pos=3;*;}; 2*loc_y==s4_y@@()-1 -> {pos=1;*;}; }; 2*loc_x==s4_x@@()+1 -> switch { 2*loc_y==s4_y@@() -> {pos=5;*;}; 2*loc_y==s4_y@@()+1 -> {pos=9;*;}; 2*loc_y==s4_y@@()-1 -> {pos=7;*;}; }; 2*loc_x==s4_x@@()-1 -> switch { 2*loc_y==s4_y@@() -> {pos=4;*;}; 2*loc_y==s4_y@@()+1 -> {pos=8;*;}; 2*loc_y==s4_y@@()-1 -> {pos=6;*;}; }; }; }; }; }; >> } Gray = { pics = ltGray.xpm << Gray = { pos = 0 ; *; if dynamite -> { dynamite@(0,0)=0; explode; }; }; >> } Cannon = { pics = ltCannon.xpm << var load = 0; Cannon.init = {dynamite = 0;}; Cannon = { # out1 = loc_x; # out2 = loc_y; if dynamite || dynamite@() -> { dynamite@(1,0)=1; dynamite@(-1,0)=1; dynamite@(0,1)=1; dynamite@(0,-1)=1; dynamite@(1,1)=1; dynamite@(1,-1)=1; dynamite@(-1,1)=1; dynamite@(-1,-1)=1; dynamite@() = 1; explode; }; load += 1; switch { load >= 32 -> { s4_x@@() = 2*4+1; s4_y@@() = 2*15; load = 0; }; load == 24 -> { s2_x@@() = 2*5+1; s2_y@@() = 2*16-1; }; load == 16 -> { s3_x@@() = 2*4+1; s3_y@@() = 2*15; }; load == 8 -> { s1_x@@() = 2*4-1; s1_y@@() = 2*16-1; }; }; switch { version == 4 || version == 5 -> { pos = version; switch { load <= 4 -> pos = version; load <= 12 -> pos = version - 4; load <= 20 -> pos = version; load <= 28 -> pos = version - 2; -> pos = version; }; }; -> {pos = version;}; }; *; }; >> } Paratrooper = { pics = ltParatrooper.xpm << var wasfallingfast; var speed; Paratrooper.init = { speed=0; count=1; falling_speed@@() = 6; weight=0; }; Paratrooper.land = { switch { dead != 0 -> { dead@@() -= 1 ; wasfallingfast=0;count = 0; explode; kind=nothing;}; speed > 5 -> { count = 0; wasfallingfast=0; explode; kind=nothing;}; -> { speed = 0; wasfallingfast=0; count = 1; }; }; }; Paratrooper.draw = { switch { kind == nothing -> {count=0;pos=0;}; count <= 0 -> { count=0;kind=nothing;pos=0; }; count == 1 && loc_x <=4 -> { pos=2;*;}; count == 1 -> { pos=3;*;}; count == 2 -> { pos=4;*;}; count >= 4 -> { pos=7;*;}; loc_x <= 4 -> { pos=5;*;}; -> { pos=6;*;}; }; }; grow = { if count >= 4 && ( kind@(0,-1)==nothing || ( kind@(0,-1)==kind && count@(0,-1)<1)) -> { count@(0,0) -=1; kind@(0,-1)=kind; count@(0,-1) += 1; }; }; moveright = { switch { kind@(1,0) == Gray -> grow; kind@(1,0) == Cannon -> dynamite@(1,0)=1; count@(1,0) < 4 -> { count@(0,0)-=1; kind@(1,0)=kind; count@(1,0)+=1; }; -> grow; }; }; moveleft = { switch { kind@(-1,0) == Gray -> grow; kind@(-1,0) == Cannon -> dynamite@(-1,0)=1; count@(-1,0) < 4 -> { count@(0,0)-=1; kind@(-1,0)=kind; count@(-1,0)+=1; }; -> grow; }; }; fall = { if kind@(0,1) == Cannon -> { # was to easy: # dynamite@(0,1)=1; explode; } else -> switch { kind@(0,1) != Gray && ( count@(0,1) < 3 || ( count@(0,1) < 4 && count > 1 )) -> { count@(0,0)-=1; kind@(0,1)=kind; count@(0,1)+=1; }; loc_x <= 4 -> moveright; loc_x >= 5 -> moveleft; }; }; move = { switch { count <= 0 -> {count=0;kind=nothing; }; loc_y < 19 -> fall; loc_x <= 4 -> moveright; loc_x >= 5 -> moveleft; }; Paratrooper.draw; }; Paratrooper = { # out1 = dead@@(); if falling && !informational -> switch { (2*loc_x==s1_x@@()+1 || loc_x==s1_x@@()/2) && loc_y==s1_y@@()/2 && dead == 0 -> {dead=1;dead@@() += 1;}; (2*loc_x==s2_x@@()+1 || loc_x==s2_x@@()/2) && loc_y==s2_y@@()/2 && dead == 0 -> {dead=1;dead@@() += 1;}; (2*loc_x==s3_x@@()+1 || loc_x==s3_x@@()/2) && loc_y==s3_y@@()/2 && dead == 0 -> {dead=1;dead@@() += 1;}; (2*loc_x==s4_x@@()+1 || loc_x==s4_x@@()/2) && loc_y==s4_y@@()/2 && dead == 0 -> {dead=1;dead@@() += 1;}; }; if falling_fast -> {wasfallingfast=1;}; switch { dynamite -> explode; wasfallingfast -> { pos = 1; speed +=1; *; }; dead != 0 -> { pos = 8; *; }; falling -> { pos = 0; *; }; kind@(0,-1) == Gray -> explode; -> { move; }; }; }; >> } } cuyo-2.1.0/data/angst.ld0000644000175000017500000002120111704400455011754 00000000000000# # Copyright 2011 by Mark Weyer # Maintenance modifications 2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # referenced from labskaus.ld Angst = { name[easy] = "Balls at ease" name = "Frightened balls" name[hard] = "Angry balls" author = "Mark Weyer" description[easy] = "These balls are oblivious to the rules of cuyo" description = "These balls are learning the rules of cuyo" description[hard] = "These balls have learned the rules of cuyo" anzahl = 7 pics = Blob * <2*anzahl> greypic = Grau startpic = Gras startdist = ".........**.........","...*....****....*...","..***..******..***..",".******************." numexplode = 4 randomfallpos = 1 << var id; werbung[easy] = {message("Also try this level in normal and hard difficulty");}; werbung = {message("Also try this level in easy and hard difficulty");}; werbung[hard] = {message("Also try this level in easy and normal difficulty");}; semiglobal = { if time==750 -> { falling_speed = 0; falling_fast_speed = 0; message("Commercial break"); }; if time==800 -> werbung; if time==850 -> { falling_speed = 6; falling_fast_speed = 32; }; }; >> Blob = { pics = manKoepfe1.xpm, manGesichter1.xpm, manKoepfe2.xpm, manGesichter2.xpm, manKoepfe3.xpm, manGesichter3.xpm, manKoepfe4.xpm, manGesichter4.xpm, manKoepfe5.xpm, manGesichter5.xpm, manKoepfe6.xpm, manGesichter6.xpm, manKoepfe7.xpm, manGesichter7.xpm << var alt_y,faellt,gemalt; var tauschrichtung,tauschpartner; var linksbesser,rechtsbesser; var linksrechtsbesser,rechtslinksbesser; var bedroht,abstand,getauschtwerdrichtung,tauschphase,kind_; Blob.init = { kind_ = Blob+(kind-Blob)%anzahl; kind = kind_; id = 4*time + 2*loc_p + (loc_xx==loc_xx@@(0) && loc_yy==loc_yy@@(0)); }; fallbilder = { faellt = alt_y O; faellt@(0,0) => {P,P,P}; -> gemalt=0; }; alt_y = loc_y; }; Blob[easy] = { file=2*(kind-Blob); schema4; file+=1; fallbilder; switch { gemalt -> ; exploding -> J; -> if 1:20 => {A,A,A,A,A,A,A,A,A,I,I,I,I} else -> I; }; *; }; Blob = { file=2*(kind_-Blob); if id@(tauschrichtung*(3-2*tauschphase),0)!=tauschpartner -> { tauschrichtung=0; kind=kind_; }; if id@(getauschtwerdrichtung,0)!=tauschpartner -> getauschtwerdrichtung=0; if tauschrichtung -> { switch { tauschphase==1 -> { pos = 13+(tauschrichtung==1); *; pos += tauschrichtung; *@(tauschrichtung,0); kind@(tauschrichtung,0)=kind_+anzahl; kind_@(tauschrichtung,0)=kind_; kind=kind_@(tauschrichtung,0); kind_=kind_@(tauschrichtung,0); tauschrichtung@(tauschrichtung,0)=tauschrichtung; tauschphase@(tauschrichtung,0)=2; getauschtwerdrichtung=tauschrichtung; getauschtwerdrichtung@(tauschrichtung,0)=0; tauschrichtung=0; }; tauschphase==2 -> { pos = 8+3*(tauschrichtung==1); *; pos -= tauschrichtung; *@(-tauschrichtung,0); getauschtwerdrichtung@(-tauschrichtung,0)=0; tauschrichtung=0; kind=kind_; }; }; } else { schema4; file+=1; fallbilder; abstand = 2*loc_y-loc_y@@(0)-loc_y@@(1); bedroht = (kind_==kind_@@(0) || kind_==kind_@@(1)) && abstand>=-6; switch { gemalt -> ; falling -> U; exploding -> H; bedroht && abstand>13 -> E; bedroht && abstand>8 -> K; bedroht -> { abstand = 2*loc_x-loc_x@@(0)-loc_x@@(1); if abstand==1..5 -> tauschrichtung=1; if abstand==-5..-1 -> tauschrichtung=-1; if basekind@(tauschrichtung,0)!=Blob || kind_@(tauschrichtung,0)==kind_@@(0) || kind_@(tauschrichtung,0)==kind_@@(1) -> tauschrichtung=0; switch { abstand<-5 || abstand>5 -> K; tauschrichtung -> pos=17-(tauschrichtung==1); -> {M,N}; }; if tauschrichtung -> { tauschpartner=id@(tauschrichtung,0); getauschtwerdrichtung@(tauschrichtung,0)=-tauschrichtung; tauschpartner@(tauschrichtung,0)=id; kind=kind_+anzahl; tauschphase=1; }; }; -> if getauschtwerdrichtung => { pos=18+(getauschtwerdrichtung==1), X,X,X,X,X,X,X,X,X,X,X,W,W,W,W,W,W,W,W,W,W,W,W,W,W } else -> V; }; *; }; }; Blob[hard] = { file=2*(kind_-Blob); if linksbesser && !tauschrichtung && !tauschrichtung@(-1,0) && loc_y==alt_y && loc_y==alt_y@(-1,0) && (loc_x % 2 || !rechtsbesser || !linksbesser@(-1,0) || tauschrichtung@(-2,0)) -> { tauschrichtung=-1; tauschpartner=id@(-1,0); }; if rechtsbesser && !tauschrichtung && !tauschrichtung@(1,0) && loc_y==alt_y && loc_y==alt_y@(1,0) && (loc_x%2==0 || !rechtsbesser@(1,0) || tauschrichtung@(2,0)) -> { tauschrichtung=1; tauschpartner=id@(1,0); }; linksbesser = (kind==kind@(1,0)) + (kind==kind@(0,1)) + (kind==kind@(0,-1)) - (kind==kind@(-2,0)) - (kind==kind@(-1,1)) - (kind==kind@(-1,-1)); rechtsbesser = (kind==kind@(-1,0)) + (kind==kind@(0,1)) + (kind==kind@(0,-1)) - (kind==kind@(2,0)) - (kind==kind@(1,1)) - (kind==kind@(1,-1)); linksrechtsbesser = (kind@(-1,0)==kind@(-2,0)) + (kind@(-1,0)==kind@(-1,1)) + (kind@(-1,0)==kind@(-1,-1)) - (kind@(-1,0)==kind@(1,0)) - (kind@(-1,0)==kind@(0,1)) - (kind@(-1,0)==kind@(0,-1)); rechtslinksbesser = (kind@(1,0)==kind@(2,0)) + (kind@(1,0)==kind@(1,1)) + (kind@(1,0)==kind@(1,-1)) - (kind@(1,0)==kind@(-1,0)) - (kind@(1,0)==kind@(0,1)) - (kind@(1,0)==kind@(0,-1)); linksbesser = kind==kind_ && basekind@(-1,0)==Blob && !exploding && !exploding@(-1,0) && ((linksbesser>0 && linksrechtsbesser>=0) || (linksbesser>=0 && linksrechtsbesser>0)); rechtsbesser = kind==kind_ && basekind@(1,0)==Blob && !exploding && !exploding@(1,0) && ((rechtsbesser>0 && rechtslinksbesser>=0) || (rechtsbesser>=0 && rechtslinksbesser>0)); if id@(tauschrichtung,0)!=tauschpartner || exploding || exploding@(tauschrichtung,0) -> {tauschrichtung=0; kind=kind_;}; if tauschrichtung -> { if kind==kind_ -> {schema4; file+=1; C*; kind=kind_+anzahl;} else -> { {pos=5+(tauschrichtung==1); *@(0,0); pos+=tauschrichtung; *@(tauschrichtung,0);} , {pos=7-3*(tauschrichtung==1); *@(0,0); pos+=tauschrichtung; *@(tauschrichtung,0); kind_=kind_@(tauschrichtung,0); kind=kind_; tauschrichtung=0; linksbesser=0; rechtsbesser=0; linksbesser@(1,0)=0; rechtsbesser@(-1,0)=0; } }; } else { schema4; file+=1; fallbilder; switch { gemalt -> ; exploding -> G; -> if 1:20 => {B,B,B,B,B,B,B,B,B,F,F,F,F} else -> F; }; *; }; }; >> } Grau = { pics = manGrau.xpm << Grau=schema4; >> } Gras = { pics = manGras.xpm << Gras=schema4; >> } } cuyo-2.1.0/data/jahreszeiten.ld0000644000175000017500000001263512402113363013341 00000000000000# # Copyright <=2002 by Daniela Lipps # Modified 2011 by Immanuel Halupczok # Maintenance modifications 2002,2006,2008,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # jjBasis.xpm[.gz], jjErde.xpm[.gz], jjExtra.xpm[.gz], jjFruehling1.xpm[.gz], # jjFruehling2.xpm[.gz], jjFruehling3.xpm[.gz], jjFruehling4.xpm[.gz], # jjGrau.xpm[.gz], jjHerbst1.xpm[.gz], jjHerbst2.xpm[.gz], jjHerbst3.xpm[.gz], # jjHerbst4.xpm[.gz], jjSommer1.xpm[.gz], jjSommer2.xpm[.gz], # jjSommer3.xpm[.gz], jjSommer4.xpm[.gz], jjWinter1e.xpm[.gz], # jjWinter1.xpm[.gz], jjWinter2.xpm[.gz], jjWinter3.xpm[.gz], # jjWinter4.xpm[.gz] # # referenced from labskaus.ld Jahreszeiten={ name="The four Seasons" author="Jela" numexplode=4 numexplode[1]=7 chaingrass=1 pics=jjBaum*4 bgcolor=160,170,255 topcolor=150,10,0 toptime=50 startpic=jjErde startdist="..ABC.....","DFFDFDDFDF","-B%&" greypic=jjGrau textcolor=200,0,0 description="Everything changes..." emptypic=Leer << var vog_l, vog_r; var sitz_ok=0:reapply; var sitz=0:reapply; var neuer_vogel=0:reapply; var sitz_re; neu_voegel={ if 1:2 -> {if players == 1 || loc_p == 1 -> neuer_vogel@@(0,loc_y) = 1;} else -> {if players == 1 || loc_p == 2 -> neuer_vogel@@(9,loc_y) = 1;}; }; kann_sitz_l={ if (sitz_ok && vog_l == 1 && !sitz) -> { vog_l=0; sitz@(0,0)=1; sitz_re = rnd(4) == 0; }; }; kann_sitz_r={ if (sitz_ok && vog_r == 1 && !sitz) -> { vog_r=0; sitz@(0,0)=1; sitz_re = rnd(4) != 0; }; }; voegel={ file=0; if sitz>rnd(64) && 1:10 || sitz && !sitz_ok -> { if rnd(3) > sitz_re -> { if !vog_l || !sitz_ok -> { sitz = 0; vog_l = rnd(9) + 2; }; } else -> { if !vog_r || !sitz_ok -> { sitz = 0; vog_r = rnd(9) + 2; }; }; }; if sitz-> sitz+=1; if vog_r -> { {A*;kann_sitz_r},{B*;kann_sitz_r},{C*;kann_sitz_r},{D*;kann_sitz_r}, {[qu=Q_TL_TR] A*;kann_sitz_r;}, {[qu=Q_TL_TR] B*; [qu=Q_TR_TL] B*@(1,0)}, {[qu=Q_TL_TR] C*; [qu=Q_TR_TL] C*@(1,0)}, {[qu=Q_TL_TR] D*; [qu=Q_TR_TL] D*@(1,0); if vog_r==1 -> vog_r@(1,0) = 1 else -> vog_r@(1,0)=vog_r-1; vog_r=0; if players == 2 && loc_x == 9 && loc_p == 1 -> neuer_vogel@@(0, loc_y; >) = 1; }; }; if vog_l -> { {H*;kann_sitz_l},{G*;kann_sitz_l},{F*;kann_sitz_l},{E*;kann_sitz_l}, {[qu=Q_BR_BL] H*;kann_sitz_l;}, {[qu=Q_BR_BL] G*; [qu=Q_BL_BR] G*@(-1,0)}, {[qu=Q_BR_BL] F*; [qu=Q_BL_BR] F*@(-1,0)}, {[qu=Q_BR_BL] E*; [qu=Q_BL_BR] E*@(-1,0); if vog_l==1 -> vog_l@(-1,0) = 1 else -> vog_l@(-1,0)=vog_l-1; vog_l=0; if players == 2 && loc_x == 0 && loc_p == 2 -> neuer_vogel@@(9, loc_y; <) = 1; }; }; if vog_l || vog_r -> neuer_vogel = 0; if neuer_vogel && loc_x == 0 => { {[qu=Q_TR_TL] B*}, {[qu=Q_TR_TL] C*}, {[qu=Q_TR_TL] D*; vog_r = rnd(10) + 1; neuer_vogel = 0;} }; if neuer_vogel && loc_x == 9 => { {[qu=Q_BL_BR] G*}, {[qu=Q_BL_BR] F*}, {[qu=Q_BL_BR] E*; vog_l = rnd(10) + 1; neuer_vogel = 0;} }; }; >> Leer={ pics=jjExtra.xpm << Leer={ voegel; if 1:5000 && rnd(20) > loc_y && rnd(20) < loc_y -> neu_voegel; }; >> } jjErde={ pics=jjExtra.xpm,jjErde.xpm << jjErde={ if 1??????? -> 1E* else -> {pos=version;1*;}; voegel; }; >> } jjGrau={ pics=jjExtra.xpm,jjGrau.xpm << jjGrau={ 1A*; voegel; }; >> } jjBaum={ pics=jjExtra.xpm, jjWinter1.xpm,jjWinter2.xpm,jjWinter3.xpm,jjWinter4.xpm, jjFruehling1.xpm,jjFruehling2.xpm,jjFruehling3.xpm,jjFruehling4.xpm, jjSommer1.xpm,jjSommer2.xpm,jjSommer3.xpm,jjSommer4.xpm, jjHerbst1.xpm,jjHerbst2.xpm,jjHerbst3.xpm,jjHerbst4.xpm, jjWinter1e.xpm << var dt; var akt_t; jjBaum.init={dt=rnd(16)+rnd(16)}; jjBaum={ akt_t=((kind-jjBaum)*4+(time+dt)/32)%16; file = akt_t + 1; schema16; sitz_ok = 0; # Kann hier eine Amsel sitzen? if akt_t >= 4 && akt_t <= 14 && ! 1?1?1?1? -> sitz_ok = 1; # Kann hier eine Eule sitzen? if akt_t == 0 && (??0???1? || (! ??0???0? && ! 1???1??? && ! 0?1?0?0?)) -> sitz_ok = 1; # Nest wird fluegge: if 1?1?1?1? && (time+dt) % 32 == 0 && akt_t == 13 -> { vog_l = 2 + rnd(9); vog_r = 2 + rnd(9); }; # Vogel-Hauptprogramm: voegel; # Sitzende Voegel malen: if sitz -> {if akt_t == 0 -> { file = 17; schema16; } else -> {I; pos += sitz_re; 0*;};}; # Evtl. neuen Vogel in dieser Zeile starten: if 1:5000 -> neu_voegel; }; >> } } cuyo-2.1.0/data/pressure.ld0000644000175000017500000002643611672457344012544 00000000000000# # Copyright 2004, 2009 by Bernhard R. Link # Modified 2005,2010 by Bernhard R. Link # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # lpGreen.xpm[.gz], lpRed.xpm[.gz], lp.src.xpm, lpStart.xpm[.gz] # lpWhite.xpm[.gz], lpYellow.xpm[.gz] # Pressure={ name="Excess Pressure" author="brl" numexplode=7 numexplode[1]=10 chaingrass=1 pics=Colour1, Colour2, Colour3 bgcolor=0,0,0 startpic=Start startdist="AAAAAAAAAA" greypic=Gray topcolor=227,227,227 toptime=50 emptypic=nothin randomgreys[1]=500 << var ao,ar,au,al; var ft=1,fb=1,fl=1,fr=1; var tt=1,tb=1,tl=1,tr=1; var mode=0,count; var o1; initcount = count = 4; bang = { explode; mode = 0 ; u ; }; calcC = { ao = kind@(0,-1) == Start || kind@(0,-1) == kind || kind@(0,-1) == Gray; ar = kind@( 1,0) == Start || kind@( 1,0) == kind || kind@( 1,0) == Gray; au = kind@( 0,1) == Start || kind@( 0,1) == kind || kind@( 0,1) == Gray; al = kind@(-1,0) == Start || kind@(-1,0) == kind || kind@(-1,0) == Gray; }; calcG = { ao = kind@(0,-1) != Start && kind@(0,-1) != nothing && kind@(0,-1) != outside; ar = kind@( 1,0) != Start && kind@( 1,0) != nothing && kind@( 1,0) != outside; au = kind@( 0,1) != Start && kind@( 0,1) != nothing && kind@( 0,1) != outside; al = kind@(-1,0) != Start && kind@(-1,0) != nothing && kind@(-1,0) != outside; }; toL = { tl=1;tt=0;tr=0;tb=0;}; toT = { tl=0;tt=1;tr=0;tb=0;}; toR = { tl=0;tt=0;tr=1;tb=0;}; toB = { tl=0;tt=0;tr=0;tb=1;}; anim = { if mode == 4 -> mode = 0; if mode == 0 -> switch { mode@(0,1) == 3 && tt@(0,1) -> { mode=1;initcount;fr=0;fb=1;ft=0;fl=0;switch { !ao && ar && au && !al -> toR ; !ao && ar && au && al -> toL,toR ; !ao && !ar && au && al -> toL ; ao && ar && au && !al -> toR ; ao && ar && au && al -> toT ; ao && !ar && au && al -> toL ; !ao && !ar && au && !al -> toB ; ao && !ar && au && !al -> toT ; -> {o1=1;bang;}; };}; mode@(0,-1) == 3 && tb@(0,-1) -> { mode=1;initcount;fr=0;fb=0;ft=1;fl=0;switch { ao && ar && au && !al -> toR ; ao && ar && au && al -> toB ; ao && !ar && au && al -> toL ; ao && ar && !au && !al -> toR ; ao && ar && !au && al -> toL,toR ; ao && !ar && !au && al -> toL ; ao && !ar && au && !al -> toB ; ao && !ar && !au && !al -> toT ; -> {o1=2;bang;}; } ; } ; mode@(-1,0) == 3 && tr@(-1,0) -> { mode=1;initcount;fr=0;fb=0;ft=0;fl=1;switch { !ao && ar && au && al -> toB ; !ao && !ar && au && al -> toB ; ao && ar && au && al -> toR ; ao && !ar && au && al -> toT,toB ; ao && ar && !au && al -> toT ; ao && !ar && !au && al -> toT ; !ao && ar && !au && al -> toR ; !ao && !ar && !au && al -> toL ; -> {o1=3;bang;}; };}; mode@(1,0) == 3 && tl@(1,0) -> { mode=1;initcount;fr=1;fb=0;ft=0;fl=0;switch { !ao && ar && au && !al -> toB ; !ao && ar && au && al -> toB ; ao && ar && au && !al -> toT,toB ; ao && ar && au && al -> toL ; ao && ar && !au && !al -> toT ; ao && ar && !au && al -> toT ; !ao && ar && !au && !al -> toR ; !ao && ar && !au && al -> toL ; -> {o1=4;bang;}; };}; } else switch { mode@(0,1) == 3 && tt@(0,1) && !fb-> {o1=5;bang;}; mode@(0,-1) == 3 && tb@(0,-1) && !ft -> {o1=6;bang;}; mode@(-1,0) == 3 && tr@(-1,0) && !fl -> {o1=7;bang;}; mode@(1,0) == 3 && tl@(1,0) && !fr -> {o1=8;bang;}; }; }; draw = { switch { mode == 2 -> switch { !ao && ar && au && !al -> Y; !ao && ar && au && al && (fl || tl) -> pos=61 ; #075; !ao && ar && au && al && (fr || tr) -> pos=60 ; #074; !ao && !ar && au && al -> Z; ao && ar && au && !al && (tt || ft) -> pos=12; #014; ao && ar && au && !al && (tb || fb) -> pos=40; #050; ao && ar && au && al && (tl || tr) -> pos=21; #025; ao && ar && au && al && (tt || tb) -> pos=29; #035; ao && !ar && au && al && (tt || ft) -> pos=15; #017; ao && !ar && au && al && (tb || fb) -> pos=41; #051; ao && ar && !au && !al -> pos=56; #070; ao && ar && !au && al && (tr || fr) -> pos=68; #0104; ao && ar && !au && al && (tl || fl) -> pos=69; #0105; ao && !ar && !au && al -> pos=57; #071; !ao && ar && !au && !al -> pos=64; #0100; !ao && ar && !au && al -> pos=52; #064; !ao && !ar && !au && al -> pos=65; #0101; !ao && !ar && au && !al -> pos=47; #057; ao && !ar && au && !al -> pos=19; #023; ao && !ar && !au && !al -> pos=55; #067; -> {o1=10;bang;}; }; mode == 1 -> switch { #lo !ao && ar && au && !al && fr -> pos=4; #004; !ao && ar && au && !al && fb -> pos=58; #072; #o !ao && ar && au && al && fl -> pos=5; #005; !ao && ar && au && al && fr -> pos=6; #006; !ao && ar && au && al && fb && tl -> pos=59; #073; !ao && ar && au && al && fb && tr -> pos=62; #076; #ro !ao && !ar && au && al && fl -> pos=7; #007; !ao && !ar && au && al && fb -> pos=63; #077; #l ao && ar && au && !al && ft -> pos=28; #034; ao && ar && au && !al && fb -> pos=20; #024; ao && ar && au && !al && fr && tt -> pos=32; #040; ao && ar && au && !al && fr && tb -> pos=48; #060; #m ao && ar && au && al && fl -> pos=14; #016; ao && ar && au && al && fr -> pos=13; #015; ao && ar && au && al && fb -> pos=22; #026; ao && ar && au && al && ft -> pos=30; #036; #r ao && !ar && au && al && ft -> pos=31; #037; ao && !ar && au && al && fl && tt -> pos=33; #041; ao && !ar && au && al && fl && tb -> pos=49; #061; ao && !ar && au && al && fb -> pos=23; #027; #lu ao && ar && !au && !al && ft -> pos=66; #0102; ao && ar && !au && !al && fr -> pos=36; #044; #u ao && ar && !au && al && fl -> pos=37; #045; ao && ar && !au && al && ft && tl -> pos=67; #0103; ao && ar && !au && al && ft && tr -> pos=70; #0106; ao && ar && !au && al && fr -> pos=38; #046; #ru ao && !ar && !au && al && ft -> pos=71; #0107; ao && !ar && !au && al && fl -> pos=39; #047; !ao && ar && !au && !al -> pos=50; #062; !ao && ar && !au && al && fl -> pos=51; #063; !ao && ar && !au && al && fr -> pos=53; #065; !ao && !ar && !au && al -> pos=54; #066; !ao && !ar && au && !al -> pos=3; #003; ao && !ar && au && !al && ft -> pos=11; #013; ao && !ar && au && !al && fb -> pos=27; #033; ao && !ar && !au && !al -> pos=35; #043; -> {o1=11;bang;}; }; mode == 3 -> switch { #lo !ao && ar && au && !al && tr -> pos=4; #004; !ao && ar && au && !al && tb -> pos=58; #072; #o !ao && ar && au && al && tl -> pos=5; #005; !ao && ar && au && al && tr -> pos=6; #006; !ao && ar && au && al && tb && fl -> pos=59; #073; !ao && ar && au && al && tb && fr -> pos=62; #076; #ro !ao && !ar && au && al && tl -> pos=7; #007; !ao && !ar && au && al && tb -> pos=63; #077; #l ao && ar && au && !al && tt -> pos=28; #034; ao && ar && au && !al && tb -> pos=20; #024; ao && ar && au && !al && tr && ft -> pos=32; #040; ao && ar && au && !al && tr && fb -> pos=48; #060; #m ao && ar && au && al && tl -> pos=14; #016; ao && ar && au && al && tr -> pos=13; #015; ao && ar && au && al && tb -> pos=22; #026; ao && ar && au && al && tt -> pos=30; #036; #r ao && !ar && au && al && tt -> pos=31; #037; ao && !ar && au && al && tl && ft -> pos=33; #041; ao && !ar && au && al && tl && fb -> pos=49; #061; ao && !ar && au && al && tb -> pos=23; #027; #lu ao && ar && !au && !al && tt -> pos=66; #0102; ao && ar && !au && !al && tr -> pos=36; #044; #u ao && ar && !au && al && tl -> pos=37; #045; ao && ar && !au && al && tt && fl -> pos=67; #0103; ao && ar && !au && al && tt && fr -> pos=70; #0106; ao && ar && !au && al && tr -> pos=38; #046; #ru ao && !ar && !au && al && tt -> pos=71; #0107; ao && !ar && !au && al && tl -> pos=39; #047; !ao && ar && !au && !al -> pos=50; #062; !ao && ar && !au && al && tl -> pos=51; #063; !ao && ar && !au && al && tr -> pos=53; #065; !ao && !ar && !au && al -> pos=54; #066; !ao && !ar && au && !al -> pos=3; #003; ao && !ar && au && !al && tt -> pos=11; #013; ao && !ar && au && !al && tb -> pos=27; #033; ao && !ar && !au && !al -> pos=35; #043; -> {o1=12;bang;}; }; -> switch { !ao && ar && au && !al -> A; !ao && ar && au && al -> B; !ao && !ar && au && al -> C; ao && ar && au && !al -> I; ao && ar && au && al -> J; ao && !ar && au && al -> K; ao && ar && !au && !al -> Q; ao && ar && !au && al -> R; ao && !ar && !au && al -> S; !ao && !ar && !au && !al -> u; !ao && ar && !au && !al -> r; !ao && ar && !au && al -> s; !ao && !ar && !au && al -> t; !ao && !ar && au && !al -> a; ao && !ar && au && !al -> i; ao && !ar && !au && !al -> q; }; };*}; step = { if count == 0 -> { if mode != 0 -> mode += 1 ; initcount } else count-= 1; }; >> Start={ pics=lpStart.xpm << Start = { ao = kind@(0,-1) != Start && kind@(0,-1) != Gray && kind@(0,-1) != nothing && kind@(0,-1) != outside; ar = kind@(1,0) != Start && kind@( 1,0) != Gray && kind@( 1,0) != nothing && kind@( 1,0) != outside; au = kind@(0,1) != Start && kind@( 0,1) != Gray && kind@( 0,1) != nothing && kind@( 0,1) != outside; al = kind@(-1,0) != Start && kind@(-1,0) != Gray && kind@(-1,0) != nothing && kind@(-1,0) != outside; switch { mode!=1&&mode@(0,1) == 3 && tt@(0,1) ->{mode=1;initcount;fr=0;fb=1;ft=0;fl=0;}; mode!=1&&mode@(0,-1)== 3 && tb@(0,-1) ->{mode=1;initcount;fr=0;fb=0;ft=1;fl=0;}; mode!=1&&mode@(-1,0)== 3 && tr@(-1,0) ->{mode=1;initcount;fr=0;fb=0;ft=0;fl=1;}; mode!=1&&mode@(1,0) == 3 && tl@(1,0) ->{ mode=1;initcount;fr=1;fb=0;ft=0;fl=0;}; count > 0 -> count -= 1; mode == 3 -> { mode@(0,0) = 0; count=50+rnd(100); }; mode == 2 -> { if tt||tb||tl||tr -> mode@(0,0)=3 else mode=0; initcount;}; mode == 1 -> { tt=0;tb=0;tr=0;tl=0;mode = 2; initcount; }; -> { tt=0;tb=0;tl=0;tr=0; switch { 1:4 -> if ao && mode@(0,-1)==0 -> tt=1; 1:3 -> if au && mode@(0,1)==0 -> tb=1; 1:2 -> if al && mode@(0,-1)==0 -> tl=1; ar && mode@(0,1) -> tr=1; }; if tt || tb || tl || tr -> {mode = 2;initcount;} else count=100+rnd(100); }; }; switch { (mode == 2 || mode == 3) && (tt || tb || tl || tr) -> 0A,0B; -> 0A; } ;* }; >> } Gray={ pics=lpWhite.xpm << Gray = { calcG ; anim ; draw ; step ; }; >> } Colour1={ pics=lpRed.xpm << Colour1={ calcC ; anim ; draw; step; }; >> } Colour2={ pics=lpYellow.xpm << Colour2={ calcC ; anim ; draw; step; }; >> } Colour3={ pics=lpGreen.xpm << Colour3={ calcC ; anim ; draw; step; }; >> } nothin={ << nothin = { mode = 0; }; >> } } cuyo-2.1.0/data/hormone.ld0000644000175000017500000000307511672457343012334 00000000000000# # Copyright <=2004 by Immanuel Halupczok # Maintenance modifications 2005,2006,2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # ihBlau.xpm[.gz], ihBunt.xpm[.gz], ihGrau.xpm[.gz], ihGruen.xpm[.gz], # ihLila.xpm[.gz], ihRot.xpm[.gz] # # referenced from memory.ld Hormone={ name="Hormones" author="Immi" numexplode=4 numexplode[1]=6 chaingrass=1 pics=ihRot.xpm,ihGruen.xpm,ihBlau.xpm,ihLila.xpm pics[2]=ihRot.xpm,ihGruen.xpm,ihBlau.xpm toptime=50 startpic="ihBunt.xpm" greypic="ihGrau.xpm" neighbours= startdist[1]="++++++++++","----------","++++++++++","AAAAAAAAAA" startdist="AAAAAAAAAA" bgcolor=0,0,0 textcolor=255,255,255 description="When do the \"hormones\" connect?" << ihRot=schemaDiag2; ihGruen=schemaDiag2; ihBlau=schemaDiag2; ihLila=schemaDiag2; >> } cuyo-2.1.0/data/fractals.ld0000644000175000017500000001432112417277702012455 00000000000000# # Copyright 2012 by Austin Wang # Modified 2012,2014 by Mark Weyer # Modified 2014 by Immanuel Halupczok # Maintenance modifications 2012,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The above notices apply to this file and to: # aBoxFractal.xpm[.gz], aCantorSet.xpm[.gz], aDragon.xpm[.gz], # aMandelbrotTree.xpm[.gz], aRepTile.xpm[.gz], aSierpSieve.xpm[.gz] Fractals = { name = "Fractals" author = "Austin W." description = "Three explode if in each aspect they are all the same or all different." pics=symbol bgpic=aMandelbrotTree.xpm startpic=aCantorSet.xpm startdist="AFGE..DHIC", "ABBE..DBBC", "ABBBBBBBBC","-J%&" startdist[hard]="JOPN..MQRL", "AFGE..DHIC", "ABBE..DBBC", "ABBBBBBBBC","-J%&" greypic=greyblob <> symbol = { pics=aBoxFractal.xpm, aRepTile.xpm, aSierpSieve.xpm << var type, rawtyp; symbol.init={ rawtyp=rnd(27); # Encode middle digit mod 9: type = 1+((rawtyp /3) % 3)*273; # Encode last digit mod 7: switch { rawtyp % 3 == 1 -> type *= 352; rawtyp % 3 == 2 -> type *= 235; }; # Encode first digit mod 13: switch { rawtyp / 9 == 1 -> type *= 757; rawtyp / 9 == 2 -> type *= 568; }; type %= 819; # 819 = 7*9*13 inhibit=DIR_U + DIR_R + DIR_D + DIR_L; }; ######## CONNECTION ######## symbol.connect={ # Connect with (0,-1) and (1,0) ? if 1?1????? && (1 == (type@(0,-1)*type@(1,0)*type@(0,0)) % 819) -> { inhibit@(0,-1)=0; inhibit@(0,0)=0; inhibit@(1,0)=0; }; # Connect with (0,-1) and (0,1) ? if 1???1??? && (1 == (type@(0,-1)*type@(0,1)*type@(0,0)) % 819) -> { inhibit@(0,-1)=0; inhibit@(0,0)=0; inhibit@(0,1)=0; }; # Connect with (0,-1) and (-1,0) ? if 1?????1? && (1 == (type@(0,-1)*type@(-1,0)*type@(0,0)) % 819) -> { inhibit@(0,-1)=0; inhibit@(0,0)=0; inhibit@(-1,0)=0; }; # Connect with (1,0) and (0,1) ? if ??1?1??? && (1 == (type@(1,0)*type@(0,1)*type@(0,0)) % 819) -> { inhibit@(1,0)=0; inhibit@(0,0)=0; inhibit@(0,1)=0; }; # Connect with (1,0) and (-1,0) ? if ??1????1 && (1 == (type@(1,0)*type@(-1,0)*type@(0,0)) % 819) -> { inhibit@(1,0)=0; inhibit@(0,0)=0; inhibit@(-1,0)=0; }; # Connect with (0,1) and (-1,0) ? if ????1?1? && (1 == (type@(0,1)*type@(-1,0)*type@(0,0)) % 819) -> { inhibit@(0,1)=0; inhibit@(0,0)=0; inhibit@(-1,0)=0; }; }; ######## DRAWING IMAGE ######## symbol={ file=rawtyp / 9; pos=rawtyp % 9; *; }; >> numexplode = 3 } greyblob = { pics=aDragon.xpm colourprob=1 << greyblob = switch { kind@(0,1)==greyblob && kind@(0,2)!=greyblob && kind@(0,2)!=nothing => {A*, B*, C*, {D*;kind=nothing}}; kind@(0,-1)==greyblob && kind@(0,1)!=greyblob && kind@(0,1)!=nothing => {{E,F,G,H};*}; -> A*; }; >> } } ################################################################ ### ### ### SYMBOLS && VARIABLES ### ### ### ################################################################ ### Each set of distinct symbols has a number stored in the ### ### variable type. Items are characterized as follows: ### ### - Box fractal, rep-tile, Sierpinski sieve (3 mod 13) ### ### - Red, blue, green (4 mod 9) ### ### - Iteration 1, 2, or 3 (2 mod 7) ### ### x mod n means that the value mod n is 1, x, or x^2 and ### ### that x^3 mod n=1. ### ### ### ### Data is retrieved using modular arithmetic, and numbers ### ### are generated using applied Chinese Remainder Theorem. ### ### In case of mod 9, we exploit the fact that the ### ### geometric progression 1,x,x^2 also is an arithmetic ### ### progression, meaning that (x^2 = 2x-1) mod 9. ### ### We can find a blob's specific characteristics by taking ### ### its type modulo 7, 9, and 13. ### ### For connection, we check whether for all n as above, ### ### the three values are either all the same or all ### ### different. As x^3 mod n=1, this amounts to checking ### ### (for values x1, x2, x3) that (x1*x2*x3=1) mod n. ### ### Instead of extracting the three components, the check ### ### is done mod (7*9*13). ### ### ### ################################################################ ################################################################ ################################################################ ### ### ### NOTES (on gameplay) ### ### ### ################################################################ ### Each blob has three distinct properties (fractal type, ### ### iteration in fractal, and color). A set of 3 blobs ### ### explode when for each property, the three blobs are all ### ### the same within that property or all different. ### ################################################################ cuyo-2.1.0/sdl.m40000644000175000017500000001422011544632362010443 00000000000000# Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor # Slightly modified for Cuyo dnl AM_PATH_SDL_CUYO([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CPPFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL_CUYO], [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi PATH="$prefix/bin:$prefix/usr/bin:$PATH" AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CPPFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` SDL_LIBS=${SDL_LIBS#-L/usr/lib } sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CPPFLAGS="$CPPFLAGS" ac_save_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CPPFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CPPFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) cuyo-2.1.0/COPYING0000644000175000017500000003543307404153300010451 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS cuyo-2.1.0/TODO0000644000175000017500000001621012422640765010112 00000000000000 Mark: Gleich nach dem Release-Freeze: - Sound-Ausgabe im Fall feiner lokalisieren. - players in global.ld definieren statt als spezconst zu behandeln (dann schneller). (und vorher drber diskutieren) Bugs, die behoben werden sollten -------------------------------- Mark: - In data/pics liegt semiglobal rum. Das ist wohl ein dummy, dessen Notwendigkeit wir abschaffen sollten. Danach auch data/Makefile.am entsprechend ndern. - Eine Levelbeschreibung darf ein Feld "music" haben. Das ist noch nicht dokumentiert, sollte es aber werden. Wuensche + Todos fuer Cuyo 2.0 ------------------------------ Immis Wuensche: - Eigene Schrift schoener machen? - Fehlermeldungs-Ausgabe wieder funktionsfaehig machen - Menu benutzerfreundlich - Hintergrundbild fuer Menus Vielleicht BRLs Wunsch: - Kleinskalierung mit Menupunkt waehlbar Bernis Wunsch: - Alle Level ueberarbeiten Marks Wuensche: - cual.6 auf Stand von cuyo bringen. Bei der Gelegenheit gleich noch auf saubere Formatierung berprfen. Bugs, die sich bemerkbar machen koennen, wenn man in Cual programmiert ---------------------------------------------------------------------- Immi: - Busy-Zeugs bei switch (und if) richtig machen: "if bla -> blub;" soll busy sein, wenn blub busy ist (falls bla true ist) (Wenn man das im Moment einbauen wrde, wrde das switch nicht mehr richtig tun.) - Bug, der in folgendem Code auftritt, beheben: bla = {A, B, C, D, E; *;}; blub = { &bla; &bla;}; Aufraeumen der Sprache Cual --------------------------- Immi: - Hex-Modus: - Prfen, ob 6-Nachbar-01???01 nur bei hex-Level kommt. - Prfen, ob @(1,.5) nur im Hex-Level kommt. Aufraeumen des Cual-Codes der Level ----------------------------------- Immi: - explode-cual-Befehl in den Leveln verwenden, wo's sinnvoll ist. Aufraeumen des Quellcodes ------------------------- Immi: - Befehl "bonus()" entpfuschen - Wenn ein Fehler gecatcht und dann wieder gethrowt wird, sollte das von einer Fehler-Routine gemacht werden, damit das Intern-Flag, etc noch stimmt. - In xpmladen.cpp gibt's eine Warnung, wenn man ohne libz compiliert... - Das interpretieren der nicht-cual-Eintraege in den ld-Dateien findet im Moment erst zu Level-Lade-Zeit statt (und nicht zu parse-Zeit). Das sollte auf jeden Fall mal auch auf parse-Zeit verschoben werden. Danach kann man: - Warnung bei unverwendeten level-descr-Eintrgen: Sowohl in als auch auerhalb von << >> - Wenn eine Code-Definition von einem Level benutzt wird (und zwar direkt benutzt, z. B. als Blopsorte, und nicht indirekt ber einen Aufruf), wird das zu Levelstart-Zeit evaluiert. Es findet also beliebige globale Definitionen. Auch solche, die erst *nach* der Level-Definition stehen. Dafr wurden aber in dem Level keine Variablen reserviert; das fhrt also zu merkwrdigen Fehlern. - xpmLaden aufraeumen - Titelbild-Funktionen weg - Bilddatei "semiglobal" unnoetig machen Mark: - In der Fehlerbehandlung stehen indirekt selbst ein paar CASSERTs und so. Im bsen Fall wird das vielleicht rekursiv, bis der call-Stack berluft. Wenn man eine gute Alternativ-Idee hat, knnte man es ja mal verbessern... Ideen/Wuensche fuer das eigentliche Cuyo-Programm ------------------------------------------------- Immi: - Levelvorschau im start-at-menu - Computerspieler kommt mit vielen tollen Level-Features nicht zurecht. Was soll daraus werden? - Bild/sonstige Belohnung bei alle-Level gewonnen - Message-System (Fehlermeldungen sollen irgendwann wieder verschwinden, vor allem, wenn man was neues tut.) - Bei Parse-Fehler sollen nicht falsche Folgefehler angezeigt werden - Besseres Skript zum entscheiden, welche xpms mitinstalliert werden. - Doku von keys in ld-Dateien fertig machen Mark: Ist jetzt Teil von cual.6; nderungen sollten dort stattfinden. Immi: - Feintuning der SDL-Graphik: Rausfinden, wie's am schnellsten laeuft: HWSURFACE/SWSURFACE? - Gezipte bilder auch mit der SDL-Funktion laden Ideen/Wuensche fuer Cual-Features --------------------------------- Immi: - Levelanfangs-Zufalls-Features: - Keine Nachbarn gleich ausschaltbar - Auch Grau und Gras zufllig reinmischen - "." um pos auf "nix malen" zu setzen. - Variablen nach Sorten getrennt. - Ermglichen, dass auch nach einer Level-Definition noch globaler cual-Code kommt. - Fehler ausgeben, wenn manche Blops Hex-Modus-Nachbarschaft haben und andere nicht. - Fehlermeldungs-Positionsangaben zu einzelnen Feldern in der ld verbessern (z. B. pics, die nicht geladen werden knnen) - Feature: Fall mit drei Blops - Explodier-Event (oder gibt's den schon?) Mark: - Befehl zum Verschieben/Vertauschen von Blobs. Noch unklar: Semantik bei Konflikten. - Cual-Definitionen parametrisiert - Grau-bekomm-Parameter variabel (Anzahl der Graue in Abh. von Reaktionsgre) - Es folgt eine uralte Liste von Ideen fuer behaviour-bits. - Eigenschaften, die dann alle haben knnen sollen: - fllt runter, wenn dort frei ist - Mehrere unabhngige Verbindungsebenen (etwa fr mini-cuyo) Level-Ideen ----------- Immi: - Magie-Level ======================================================================= Kein ToDo mehr, sondern Anleitungen: ------------------------------------ Erstellen einer neuen Distribution: Mark: - Datum in cuyo.6 und cual.6 (erste Zeile) aktualisieren Immi: - Versions-Nummer in configure.ac richtig einstellen. - make - Schauen, ob beim starten die richtige Version angezeigt wird - NEWS aktualisieren - Einchecken - make dist - Distribution ausprobieren Mark: - In anderes Verzeichnis anonym cvs auschecken, dort make dist, vergleichen: (Verzeichniswechsel) cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/cuyo co cuyo cd cuyo ./autogen.sh ./configure --enable-maintainer-mode --enable-datasrc-maintainer-mode make make dist (Vergleichen) Immi: - Taggen (cvs tag cuyo-1-8-4) - signieren (gpg -b cuyo-1.8.4.tar.gz) - uploaden: - sftp immi@dl.sv.gnu.org:/releases/cuyo/ - put cuyo-1.8.4.tar.gz - put cuyo-1.8.4.tar.gz.sig Mark: Erstellen einer Distribution (Alternative): - NEWS aktualisieren, etwa mithilfe von "cvs2cl --stdout | less". - Datum in docs/cuyo.6 und docs/cual.6 (erste Zeile) aktualisieren. - Datum in po/pot.sed (momentan Zeile 20) aktualisieren. - Versions-Nummer in configure.ac (momentan Zeile 21) richtig einstellen. - In datasrc und datasrc/pics jeweils "make all" und "make install". - commiten. - Temporres Verzeichnis erstellen, reinwechseln. - cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/cuyo co cuyo - An Ort mit aktuellen autotools kopieren. Ab jetzt dort. - ./autogen.sh - ./configure --enable-maintainer-mode --enable-datasrc-maintainer-mode - make - make dist - Weiteres temporres Verzeichnis erstellen, cuyo-....tar.gz reinkopieren, reinwechseln, entpacken. - ./configure - make - make install - testen - make uninstall (und das Zeug manuell lschen, das brig bleibt) - in erstes temporres Verzeichnis zurck - gpg -b cuyo-....tar.gz - uploaden: - sftp ...@dl.sv.gnu.org:/releases/cuyo/ - put cuyo-1.8.4.tar.gz - put cuyo-1.8.4.tar.gz.sig - Dann erst: cvs tag cuyo-1-8-4 CVS-Bedienung...: - Alte Version auschecken: cvs update -r cuyo-1-6-0beta2 - Wieder zurck zur aktuellen Version: cvs update -A cuyo-2.1.0/NEWS0000644000175000017500000000453012422637107010117 00000000000000NEWS for cuyo ------------- Version 2.1.0: - Added Portuguese translation - Updated German translation - Added information next to the game area: * preview of the next fall * shape and number of greys to come * shape and number of remaining grass * directions of connections - New levels farming, fractals - Improvements to several levels - Bugfixes - Povray-generated graphics now work with the AGPL-ed version 3.7 Version 2.0.0: - New level track "Contributions" for unofficial, community-made levels - New levels: aliens, angst, augen, bonimali, flechtwerk, novips, pacman, schemen, springer, trees - Finished levels: dungeon, fische, kachelnR - Moved remaining unfinished levels and some finished levels to "contributions" - Retired level: breakout - Oh, yeah, and bugs ... I mean fixes. Version 2.-1.2: - Arbitrarily resizable game window - Natural language support, German translation - Bugfixes and fresh new bugs - New levels: octopi, jump, theater, pressure, mfs - Retired levels: reversi, rohrpost Version 2.-1.1: - Some bugfixes. Version 2.-1.0: - Completely new user interface; uses SDL instead of QT - Different levelpacks - Easy and hard mode - Sound (rudimentary) - Several new levels - Lots of new bugs Version 1.8.6: - Several new levels; hopefully not too much new bugs Version 1.8.5: - Bugfixes Version 1.8.4: - Bugfixes, a few new levels. Version 1.8.3: - Bugfixes. Version 1.8.2: - Minor Improvements in the Makefile.am files. Version 1.8.1: - Removed bugs. Version 1.8.0: - At least one new level - Speed of the Computer player can be choosen in the preferences Version 1.7.0: New Level (Slime) Version 1.6.0: - *** A lot of new levels. *** - In the preferences dialog, you may now choose if you want to turn on levels that are still under construction. - For those who wish to create their own levels: A completely new language in which the levels are "programmed". (However, this language is still under development.) - A bit of documentation on how to create own levels. - A lot of other small changes. Version 1.03: New Level (The Four Seasons) Version 1.02: Nicer Labyrinth-Level Version 1.01: Nicer bonus-Level Version 1.00: This is the first public release, so no news since the last one. And I won't put all the news since the last semi-public release here, because there are too many and I don't even remember them all. cuyo-2.1.0/acinclude.m40000755000175000017500000000620411140372417011610 00000000000000dnl The following is taken from the LPRng project, where it states dnl # The following code is taken from "po.m4 serial 7 (gettext-0.14.3)" dnl # "gettext.m4 serial 37 (gettext-0.14.4)" and "nls.m4 serial 2 (gettext-0.14.3)" dnl # and mangled heavily to do a bare minimum. dnl # The original files state: dnl # # Copyright (C) 1995-2005 Free Software Foundation, Inc. dnl # # This file is free software; the Free Software Foundation dnl # # gives unlimited permission to copy and/or distribute it, dnl # # with or without modifications, as long as this notice is preserved. dnl # # Authors: dnl # # Ulrich Drepper , 1995-2000. dnl # # Bruno Haible , 2000-2003. AC_DEFUN([MY_GETTEXT], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is disabled NLS AC_ARG_ENABLE(nls,AS_HELP_STRING([--enable-nls],[use Native Language Support]), USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) dnl If we use NLS, test it if test "$USE_NLS" = "yes"; then dnl If GNU gettext is available we use this. Fallback to external dnl library is not yet supported, but should be easy to request by just dnl adding the correct CFLAGS and LDFLAGS to ./configure AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext1_libc, [AC_TRY_LINK([#include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext1_libc=yes, gt_cv_func_gnugettext1_libc=no)]) if test "$gt_cv_func_gnugettext1_libc" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) dnl Perform the following tests also without --enable-nls, as dnl they might be needed to generate the files (for make dist and so on) dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) ]) cuyo-2.1.0/depcomp0000755000175000017500000005064312422656610011003 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cuyo-2.1.0/ylwrap0000755000175000017500000001435712422656610010674 00000000000000#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2011-08-25.18; # UTC # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, # 2007, 2009, 2010, 2011 Free Software Foundation, Inc. # # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case "$1" in '') echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input="$1" shift case "$input" in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input="`pwd`/$input" ;; esac pairlist= while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi pairlist="$pairlist $1" shift done # The program to run. prog="$1" shift # Make any relative path in $prog absolute. case "$prog" in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog="`pwd`/$prog" ;; esac # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then set X $pairlist shift first=yes # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot="no" if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot="yes" fi # The directory holding the input. input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` # Quote $INPUT_DIR so we can use it in a regexp. # FIXME: really we should care about more than `.' and `\'. input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` while test "$#" -ne 0; do from="$1" # Handle y_tab.c and y_tab.h output by DOS if test $y_tab_nodot = "yes"; then if test $from = "y.tab.c"; then from="y_tab.c" else if test $from = "y.tab.h"; then from="y_tab.h" fi fi fi if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend `../'. case "$2" in [\\/]* | ?:[\\/]*) target="$2";; *) target="../$2";; esac # We do not want to overwrite a header file if it hasn't # changed. This avoid useless recompilations. However the # parser itself (the first file) should always be updated, # because it is the destination of the .y.c rule in the # Makefile. Divert the output of all other files to a temporary # file so we can compare them to existing versions. if test $first = no; then realtarget="$target" target="tmp-`echo $target | sed s/.*[\\/]//g`" fi # Edit out `#line' or `#' directives. # # We don't want the resulting debug information to point at # an absolute srcdir; it is better for it to just mention the # .y file with no path. # # We want to use the real output file name, not yy.lex.c for # instance. # # We want the include guards to be adjusted too. FROM=`echo "$from" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` TARGET=`echo "$2" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$? # Check whether header files must be updated. if test $first = no; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$2" is unchanged rm -f "$target" else echo updating "$2" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the first file. This # is a blatant hack to let us support using "yacc -d". If -d # is not specified, we don't want an error when the header # file is "missing". if test $first = yes; then ret=1 fi fi shift shift first=no done else ret=$? fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cuyo-2.1.0/AUTHORS0000644000175000017500000000372612417277700010501 00000000000000 data/pics/pause.xpm[.gz]: Copyright <=2001 by Immanuel Halupczok data/pics/explosion.xpm[.gz]: Copyright <=2001,2002 by Immanuel Halupczok data/pics/dbgZiffern.xpm[.gz]: Copyright 2002 by Immanuel Halupczok data/pics/pktZiffern.xpm[.gz], data/pics/pktZiffern2.xpm[.gz]: Copyright 2002,2008 by Immanuel Halupczok data/pics/menupics.xpm[.gz], data/pics/scroll.xpm[.gz], data/pics/titel.xpm[.gz], data/sounds/cuyo.it, datasrc/pics/titel-orig.png: Copyright 2006 by Immanuel Halupczok datasrc/pics/font-orig.png: Copyright 2006,2010 by Immanuel Halupczok icons/cuyo.desktop: Copyright 2007 by Immanuel Halupczok Maintenance modifications 2008,2011 by the cuyo developers icons/32x32/apps/cuyo.png, icons/64x64/apps/cuyo.png: Copyright 2007 by Immanuel Halupczok based on pause.xpm which, at that time, was: Copyright <=2001 by Immanuel Halupczok data/pics/border.xpm[.gz], data/pics/borderh.xpm[.gz], data/pics/borderv.xpm[.gz]: Copyright 2008 by Immanuel Halupczok data/pics/infoicons.xpm[.gz]: Copyright 2008 by Immanuel Halupczok Modified 2014 by Mark Weyer for all of the above: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Some .xpm[.gz] files in data/pics carry copyright notices and licence grants in C comments. cuyo was created by Immanuel Halupczok. Other cuyo developers are Bernhard Seckinger and Mark Weyer. cuyo-2.1.0/INSTALL0000644000175000017500000001547207533722150010460 00000000000000Basic Installation ================== The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Type `make install' to install the programs and any data files and documentation. 4. You can remove the program binaries and object files from the source code directory by typing `make clean'. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. See also the last section, "Searching for QT". Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. cuyo-2.1.0/Makefile.in0000644000175000017500000006235612422656610011477 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright <=2001 by the cuyo developers # Maintenance modifications 2001-2004,2006-2008,2011,2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Die Daten sollen jetzt nicht mehr nach /usr/share/cuyo, sondern # nach /usr/share/games/cuyo # Erst mal noch auskommentiert, weil man das in jede einzelne Makefile.am # schreiben msste, was irgendwie doof ist. # pkgdatadir = $(datadir)/games/@PACKAGE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO depcomp install-sh missing ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src data docs icons po # Damit die GNU-Dateien nicht notwendig sind: # AUTOMAKE_OPTIONS = foreign EXTRA_DIST = autogen.sh sdl.m4 # aclocal soll mit -I . aufgerufen werden. Auch, wenn es automatisch von # make aufgerufen wird. Automake macht das aber ohne "-I ."; deshalb manuell # setzen. (Dadurch, dass hier ACLOCAL gesetzt wird, lsst automake die sonst # automatisch generierte Zeile "ACLOCAL = @ACLOCAL@" weg. ACLOCAL_AMFLAGS = -I . CLEANFILES = config.h.in~ DISTCLEANFILES = stamp-h stamp-h1 MAINTAINERCLEANFILES = Makefile.in configure install-sh stamp-h.in aclocal.m4 config.h.in mkinstalldirs config.guess config.sub missing depcomp ylwrap all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am dist-hook: mkdir $(distdir)/datasrc ($(DATASRC_MAINTAINER_MODE) && $(MAKE) -C datasrc distfiles) || true for file in `cat datasrc/distfiles`; do cp datasrc/$$file $(distdir)/datasrc/; done mkdir $(distdir)/datasrc/pics ($(DATASRC_MAINTAINER_MODE) && $(MAKE) -C datasrc/pics distfiles) || true for file in `cat datasrc/pics/distfiles`; do cp datasrc/pics/$$file $(distdir)/datasrc/pics/; done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/missing0000755000175000017500000002415212422656610011021 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cuyo-2.1.0/configure.ac0000644000175000017500000001312012422640765011705 00000000000000dnl dnl Copyright <=2006 by the cuyo developers dnl Maintenance modifications 2006-2011 by the cuyo developers dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl dnl Muss immer am Anfang stehen. AC_INIT(cuyo,[2.1.0], cuyo@karimmi.de) dnl Die angegebene Datei ist irgend eine; und nur dazu da, um an deren dnl Existenz rausfinden zu knnen, ob's das richtige Verzeichnis ist. AC_CONFIG_SRCDIR(src/cuyo.cpp) dnl these here make AM_PATH_SDL_CUYO less noisy AC_ARG_PROGRAM AM_INIT_AUTOMAKE([foreign -Wall -Wno-portability]) dnl Bernhard will das: (damit kaputte Automakes nix kaputt machen) AM_MAINTAINER_MODE dnl Sorgt dafr, dass defines nicht mit -D bergeben werden, sondern in dnl config.h geschrieben werden. (Dazu muss vorher autoheader aufgerufen dnl werden, um config.h.in zu erzeugen.) Wenn man Automake benutzt, muss dnl man die AM_-Version dieses Makros verwenden. (Warum auch immer.) AM_CONFIG_HEADER(config.h) dnl This is a C++ program, no need to test the C compiler AC_LANG(C++) dnl ------------------------------------------------------------------------- dnl debug dnl ------------------------------------------------------------------------- dnl Auskommentiert: dnl Hier kann man zur ./configure - zeit noch ein --enable-debug angeben. dnl AC_ARG_ENABLE(debug, [ --enable-debug compile with debugging symbols and without optimisation if no CFLAGS is given], dnl [CXXDBGFLAGS="-g"], [CXXDBGFLAGS="-O2"]) dnl ------------------------------------------------------------------------- dnl Basic g++ stuff dnl ------------------------------------------------------------------------- if test "${CXXFLAGS+set}" != set ; then CXXFLAGS="-Wall -W -ansi $CXXDBGFLAGS" fi dnl g++: AC_PROG_CXX dnl Das Programm, mit dem installiert wird: AC_PROG_INSTALL dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST dnl ------------------------------------------------------------------------- dnl gettext stuff dnl ------------------------------------------------------------------------- dnl AM_GNU_GETTEXT([external],[need-formatstring-macros]) MY_GETTEXT dnl ------------------------------------------------------------------------- dnl Lex & Yacc dnl ------------------------------------------------------------------------- AM_PROG_LEX dnl AM_PROG_LEX scheint einen Bug zu haben: Da taucht die Zeile dnl test -n "$LEX" || LEX=""$missing_dir/missing flex"" dnl im configure-skript auf. Also mit zu vielen Anfhrungszeichen. dnl Aber die info-page von automake sagt sowieso, dass, wenn man dnl %noyywrap verwendet, man statt AM_PROG_LEX aufzurufen folgendes dnl tun soll: dnl AC_PROG_LEX dnl if test "$LEX" != flex; then dnl LEX="$SHELL $missing_dir/missing flex" dnl AC_SUBST(LEX_OUTPUT_ROOT, lex.yy) dnl AC_SUBST(LEXLIB, '') dnl fi AC_PROG_YACC dnl Wohin werden Level und Bilder installiert? dnl AC_DEFINE_DIR(DATADIR, datadir) dnl ------------------------------------------------------------------------- dnl libz dnl ------------------------------------------------------------------------- dnl Gibt's die LibZ? Wenn ja, kann Cuyo komprimierte Bilddateien dnl laden. Wenn's die Lib gibt, wird: dnl - "-lz" an gcc bergeben (genauer: vor die autoconf-Variable @LIBS@ gehngt) dnl - In config.h wird "#define HAVE_LIBZ 1" geschrieben dnl - Das "if HASLIBZ" in den Makefile.am ausgefhrt dnl AC_CHECK_LIB(z, gzopen) AC_CHECK_LIB(z, gzopen, [ dnl "#define HAVE_LIBZ 1" in config.h schreiben (siehe auch acconfig.h) AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define this to enable reading of .xpm.gz files. Needs libz.]) LIBS="-lz $LIBS" HASLIBZ=true ]) AM_CONDITIONAL(HASLIBZ, test a$HASLIBZ = atrue) dnl ------------------------------------------------------------------------- dnl SDL dnl ------------------------------------------------------------------------- AM_PATH_SDL_CUYO(1.2.0) if test -z "$SDL_LIBS"; then AC_MSG_ERROR([SDL is required to compile Cuyo]) fi AC_CHECK_LIB(SDL_mixer,Mix_OpenAudio,[SDL_LIBS="$SDL_LIBS -lSDL_mixer"], [AC_MSG_ERROR([SDL_mixer is required to compile Cuyo])], [$SDL_LIBS]) save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" AC_CHECK_HEADER(SDL_mixer.h,,[AC_MSG_ERROR([SDL_mixer.h is required to compile Cuyo])]) CPPFLAGS="$save_CPPFLAGS" dnl ------------------------------------------------------------------------- dnl datasrc-maintainer-mode dnl ------------------------------------------------------------------------- AC_ARG_ENABLE(datasrc-maintainer-mode, [ --enable-datasrc-maintainer-mode rebuild file lists in the datasrc directory, if necessary; needs ocaml], [DATASRC_MAINTAINER_MODE=true], [DATASRC_MAINTAINER_MODE=false]) AC_SUBST(DATASRC_MAINTAINER_MODE) dnl ------------------------------------------------------------------------- dnl Create makefiles dnl ------------------------------------------------------------------------- dnl Makefiles erzeugen... AC_OUTPUT(Makefile src/Makefile data/Makefile docs/Makefile icons/Makefile po/Makefile) cuyo-2.1.0/src/0000755000175000017500000000000012422656714010272 500000000000000cuyo-2.1.0/src/inkompatibel.h0000644000175000017500000000262011674440317013037 00000000000000/* Copyright <=2001 by Immanuel Halupczok Modified 2001,2002,2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef INKOMPATIBEL_H #define INKOMPATIBEL_H /* Sollte immer das erste sein, was included wird (falls irgendwelche bools oder so definiert werden). */ #include #ifndef HAVE_LIBZ #define HAVE_LIBZ 0 #endif #ifdef WIN32 /* Ob das folgende die beste Lsung fr Windows ist, wei ich nicht. Aber es ist eine. */s #ifndef PKGDATADIR #define PKGDATADIR (PACKAGE"-"VERSION"\\data") #endif /* Windows: Default hat kein getopt */ #ifndef HAVE_GETOPT #define HAVE_GETOPT 0 #endif #else /* Nicht Windows: Default hat getopt */ #ifndef HAVE_GETOPT #define HAVE_GETOPT 1 #endif #endif #endif cuyo-2.1.0/src/aufnahme.h0000644000175000017500000000470211674440315012146 00000000000000/*************************************************************************** record.h - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef RECORD_H #define RECORD_H class Str; class Spielfeld; /***** Diese Funktionen dienen dazu, Spiele aufzunehmen und abzuspielen. *****/ /** Irgend wann wird das vielleicht mal eine Klasse namens Aufnahme. Bis dahin mach ich's mit einem Namespace. */ namespace Aufnahme { /** Am Anfang eines Levels aufrufen. Allerdings erst *nach* ladLevel(), weil der Levelname schon zur Verfgung stehen muss. spz gibt die Anzahl der Spieler an (bzw. = spielermodus_computer falls gegen KI). */ void init(bool abspielen, int spz); /** Liefert eine Zufallszahl... evtl. eine aufgenommene. (Im Moment bemerkt man die Tatsache, dass es sich um eine aufgenommene Zufallszahl handelt, gar nicht, weil das ber das randseed geht.) */ int rnd(int bis); /** Nimmt ggf. den Tastendruck t von Spieler sp auf. Muss bei jedem Tastendruck aufgerufen werden. */ void recTaste(int sp, int t); /** Muss einmal vor jedem Spielschritt aufgerufen werden. Spielt ggf. Tastendrcke ab. spf muss das Haupt-Spielfeld-Array sein, damit Tastendrcke ausgefhrt werden knnen. */ void recSchritt(Spielfeld ** spf); void laden(Str pfad); void speichern(Str pfad); /** Liefert den Level-Namen zurck, fr den die aktuelle Aufnahme ist. */ Str getLevelName(); /** Liefert die Spielerzahl zurck, fr die die aktuelle Aufnahme ist. */ int getSpielerModus(); } // namespace Aufnahme #endif cuyo-2.1.0/src/variable.cpp0000644000175000017500000000533312400104766012476 00000000000000/*************************************************************************** variable.cpp - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "variable.h" #include "blop.h" #include "cuyointl.h" #include "ort.h" /** Erzeugt eine Mll-Variable. Wird verwendet, wenn es einen Fehler gab (blicherweise Variable nicht definiert). Die Mll-Variable versucht, Folgefehler zu vermeiden, so dass wenigstens noch fertig geparst werden kann. */ Variable::Variable(): mDeklaration(0) { } Variable::Variable(//Str datna, int znr, VarDefinition * d, Ort * ort): //mDateiName(datna), mZeilenNr(znr), mDeklaration(d), mOrt(ort) { } Variable::~Variable() { if (mOrt) delete mOrt; } Str Variable::toString() const { Str ret1 = getName(); if (mOrt) ret1 = ret1 + mOrt->toString(); return ret1; /* Str ret2; return _sprintf("%s (%s:%d)", ret.data(), mDateiName.data(), mZeilenNr); */ } bool Variable::Ort_hier() const { if (mOrt) return mOrt->hier(); else return true; } int Variable::getNummer() const { if (!mDeklaration) return 0; return mDeklaration->mNummer; } ort_absolut Variable::getOrt(ort_absolut vonhieraus, Blop & fuer_code) const { if (mOrt) return mOrt->berechne(vonhieraus, fuer_code); else return vonhieraus; } bool Variable::istKonstante() const { if (!mDeklaration) { /* Mllvariable sollten sich lieber fr Variablen als fr Konstanten halten. Das fhrt zu weniger Folgefehlern. */ return false; } return mDeklaration->mArt == vd_konstante; } int Variable::getDefaultWert() const { if (!mDeklaration) return 0; return mDeklaration->mDefault; } Str Variable::getName() const { if (!mDeklaration) return ""; return mDeklaration->mName; } cuyo-2.1.0/src/blatt.cpp0000644000175000017500000010675612422013033012020 00000000000000/*************************************************************************** blatt.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006-2008,2010,2011,2014 by the cuyo developers Maintenance modifications 2012 by Bernhard R. Link Maintenance modifications 2012 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "../config.h" #include "sdltools.h" #include "font.h" #include "cuyointl.h" #include "ui.h" #include "ui2cuyo.h" #include "cuyo.h" #include "punktefeld.h" #include "fehler.h" #include "global.h" #include "sound.h" #include "prefsdaten.h" #include "layout.h" #include "blatt.h" #include "menueintrag.h" #define border_pic_laenge 640 /********************************************************************************/ /* Ein paar Malfunktionen und so */ int chooseX(int x10, int x20, int x21, int spz, int sp) { if (spz == 1) return x10; else if (sp == 0) return x20; else return x21; } void malVertRand(int x, int end_icon = 2) { Blatt::gBlattPics[blattpic_borderv]->malStreifenV( x, 0, L_fenster_hoehe, SDLTools::rect(0, 0, L_rand, border_pic_laenge)); Blatt::gBlattPics[blattpic_border]->malBildAusschnitt( x, -L_rand, SDLTools::rect(end_icon * L_rand, L_rand, L_rand, L_rand)); Blatt::gBlattPics[blattpic_border]->malBildAusschnitt( x, L_fenster_hoehe, SDLTools::rect(end_icon * L_rand, 3 * L_rand, L_rand, L_rand)); } void malInfosRand(int x, int y) { Blatt::gBlattPics[blattpic_borderh]->malStreifenH( x, y, L_infos_breite, SDLTools::rect(0, 0, border_pic_laenge, L_rand)); Blatt::gBlattPics[blattpic_border]->malBildAusschnitt( x - L_rand, y, SDLTools::rect(L_rand, 2 * L_rand, L_rand, L_rand)); Blatt::gBlattPics[blattpic_border]->malBildAusschnitt( x + L_infos_breite, y, SDLTools::rect(3 * L_rand, 2 * L_rand, L_rand, L_rand)); } void malRahmen(int w) { /* Ober- und Unterkante */ Blatt::gBlattPics[blattpic_borderh]->malStreifenH( 0, -L_rand, w, SDLTools::rect(0, 0, border_pic_laenge, L_rand)); Blatt::gBlattPics[blattpic_borderh]->malStreifenH( 0, L_fenster_hoehe, w, SDLTools::rect(0, 0, border_pic_laenge, L_rand)); /* Linke und rechte Kante */ malVertRand(-L_rand, 1); malVertRand(w, 3); } /********************************************************************************/ void Blatt::doEvent(const SDL_Event & evt) { switch (evt.type) { case SDL_KEYDOWN: keyEvent(evt.key.keysym); break; case SDL_MOUSEMOTION: mouseMotionEvent(evt.motion.state & SDL_BUTTON(SDL_BUTTON_LEFT), evt.motion.x, evt.motion.y, evt.motion.x - evt.motion.xrel, evt.motion.y - evt.motion.yrel); break; case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: if (evt.button.button == SDL_BUTTON_LEFT) { mouseButtonEvent(evt.button.state == SDL_PRESSED, evt.button.x, evt.button.y); } break; case SDL_VIDEORESIZE: /* Bildschirminhalt neu malen */ resizeEvent(); break; default: break; } } Bilddatei * Blatt::gBlattPics[anz_blattpics]; void Blatt::initBlaetter() { for (int i=0; iladen("menupics.xpm"); gBlattPics[blattpic_highlight]->laden("highlight.xpm"); gBlattPics[blattpic_titel]->laden("titel.xpm"); gBlattPics[blattpic_scroll]->laden("scroll.xpm"); gBlattPics[blattpic_scrollbright]->klonen(*gBlattPics[blattpic_scroll]); gBlattPics[blattpic_scrolldimmed]->klonen(*gBlattPics[blattpic_scroll]); gBlattPics[blattpic_scroll]->setFaerbung(Color(130,130,220)); gBlattPics[blattpic_scrollbright]->setFaerbung(Color(255,255,128)); gBlattPics[blattpic_scrolldimmed]->setFaerbung(Color(80,80,145)); gBlattPics[blattpic_border]->laden("border.xpm"); gBlattPics[blattpic_borderh]->laden("borderh.xpm"); gBlattPics[blattpic_borderv]->laden("borderv.xpm"); AutoColor::gGame.addUser(gBlattPics[blattpic_border]); AutoColor::gGame.addUser(gBlattPics[blattpic_borderh]); AutoColor::gGame.addUser(gBlattPics[blattpic_borderv]); gBlattPics[blattpic_infoicons]->laden("infoicons.xpm"); } void Blatt::destroyBlaetter() { for (int i=0; imHintergrundFarbe; malInfosRand(x, L_naechstesfall_hoehe); /*------------*/ Area::fillRect(x, L_naechstesfall_hoehe + L_rand, L_infos_breite, L_punkte_y - 2 * L_rand - L_naechstesfall_hoehe, c); Str p = Cuyo::getSpielerModus() == spielermodus_computer && sp == 1 ? _("Computer") : _sprintf(_("Player %d"), sp + 1); Font::gGame->drawText(p, x + L_infos_breite / 2, L_player_y + gric / 2, AlignCenter); malInfosRand(x, L_punkte_y - L_rand); /*------------*/ Area::enter(SDLTools::rect(x, L_punkte_y, L_infos_breite, L_punkte_hoehe)); /* Wenn sich die Randfarbe gendert hat, dann Punkte auf jeden Fall neu malen */ mPunktefeld[sp]->updateGraphik(mDekoUpdaten); Area::leave(); malInfosRand(x, L_punkte_y + L_punkte_hoehe); /*------------*/ int pu = L_punkte_y + L_punkte_hoehe + L_rand; Area::fillRect(x, pu, L_infos_breite, L_infoblobs_y - L_rand - pu, c); malInfosRand(x, L_infoblobs_y - L_rand); /*------------*/ /* Level name does not really fit in */ // malInfosRand(x, L_levelname_y - L_rand); /*------------*/ // /* Put text in an area so that it gets clipped if it is too long */ // Area::enter(SDLTools::rect(x, L_levelname_y, // L_infos_breite, gric)); // Font::gGame->drawText(ld->mLevelName, L_infos_breite / 2, gric / 2, AlignCenter); // Area::leave(); Area::fillRect(x + L_infoblobs_breite, L_infoblobs_y, L_infos_breite - L_infoblobs_breite, L_fenster_hoehe - L_infoblobs_y, c); if (ld->mLevelGeladen) { /* To be cleaned: Instead of being the full height, the following area should rather * go from L_infoblobs_y to the bottom */ Area::enter(SDLTools::rect(x, 0, L_infos_breite, L_fenster_hoehe)); Spielfeld* spielfeld = Cuyo::getSpielfeld(sp); if (ld->mGreysAtAll) Font::gGame->drawText(_sprintf("%d", spielfeld->getGrauAnz()), L_greygrass_x2,L_grey_y+gric/2,AlignLeft); Font::gGame->drawText(_sprintf("%d", spielfeld->getGrasAnz()), L_greygrass_x2,L_grass_y+gric/2,AlignLeft); Str PlatzAnzahlFormat; if (ld->mPlatzAnzahlMin == ld->mPlatzAnzahlMax) { /* TRANSLATORS: During game: short version of "%d blops explode" */ PlatzAnzahlFormat=_sprintf(_("%d"), ld->mPlatzAnzahlMin); } else { if (ld->mPlatzAnzahlAndere) { /* TRANSLATORS: During game: short version of "between %d and %d blops explode" */ PlatzAnzahlFormat=_sprintf(_("%d-%d"), ld->mPlatzAnzahlMin,ld->mPlatzAnzahlMax); } else { /* TRANSLATORS: During game: short version of "%d or %d blops explode" */ PlatzAnzahlFormat=_sprintf(_("%d/%d"), ld->mPlatzAnzahlMin,ld->mPlatzAnzahlMax); } } Font::gGame->drawText(PlatzAnzahlFormat, L_levelexplode_x2, L_levelexplode_y + gric / 2, AlignLeft); Area::updateRect(L_greygrass_x2, L_infoblobs_y, L_infos_breite-L_greygrass_x2, L_infoblobs_hoehe); Area::leave(); } } void BlattSpiel::anzeigen() { Color c = Color(150, 150, 150); Area::fillBorder(c); int spz = Cuyo::getSpielerZahl(); malRahmen(spz == 1 ? L_fenster_breite_1sp : L_fenster_breite_2sp); if (spz == 1) { malVertRand(chooseX(L_spielfeld_x, 1, 0) - L_rand); } else { malVertRand(chooseX(L_spielfeld_x, 2, 0) - L_rand); malVertRand(chooseX(L_spielfeld_x, 2, 1) - L_rand); malVertRand(chooseX(L_infos_x, 2, 1) - L_rand); } for (int i = 0; i < spz; i++) { Area::enter(SDLTools::rect(chooseX(L_spielfeld_x, spz, i), L_spielfeld_y, L_spielfeld_breite, L_spielfeld_hoehe)); Cuyo::malSpielfeld(i); Area::leave(); malInfos(i, chooseX(L_infos_x, spz, i)); Area::enter(SDLTools::rect(chooseX(L_infos_x, spz, i), 0, L_infos_breite, L_infos_hoehe)); Cuyo::malNaechstesFall(i); Area::leave(); } /* Neue Randfarbe? Dann alles an den xserver schicken */ if (mDekoUpdaten) { Area::updateAll(); } mDekoUpdaten = false; } void BlattSpiel::zeitSchritt() { Cuyo::zeitSchritt(); for (int i = 0; i < max_spielerzahl; i++) mPunktefeld[i]->zwinkerSchritt(); /* Den folgenden Aufruf sollte man eigentlich Cuyo und den Punktefeldern ueberlassen; dann wuerd's nur passieren, wenn's muss */ UI::nachEventAllesAnzeigen(); } void BlattSpiel::randNeuMalen() { mDekoUpdaten = true; } void BlattSpiel::setPunkte(int sp, int pt) { mPunktefeld[sp]->setPunkte(pt); } /*****************************************************************************/ BlattMenu::BlattMenu(bool immerscrollleiste /* = false */) : mImmerScrollleiste(immerscrollleiste), mEintraege(), mEintraegeY(1,0), mObermenu(NULL), mObereintrag(NULL), mWahl(eintrag_keiner), mHyperaktiv(eintrag_keiner), mInfoText(""), mInfoW(-1), mRahmenUpdaten(false), mRaenderUpdaten(false), mInfozeileUpdaten(false) { } BlattMenu::~BlattMenu() { menuLoeschen(); } /* Gleich nach dem Konstruktor aufrufen, wenn das Obermenu nicht NULL sein soll. Schoener waers, obermenu direkt dem Konstruktor zu uebergeben. Das wuerde aber bedeuten, dass man gezwungen ist, in *jeder* Klasse, die von BlattMenu erbt, einen Konstruktor zu schreiben. Liefert einfach this zurueck, damit man (new BlattMenuXXX())->setObermenu(...) schreiben kann */ BlattMenu * BlattMenu::setObermenu(BlattMenu * obermenu) { mObermenu = obermenu; return this; } void BlattMenu::setObereintrag(MenuEintragSubmenu * obereintrag) { mObereintrag = obereintrag; } void BlattMenu::neuerEintrag(MenuEintrag* eintrag) { mEintraegeY.push_back(mEintraegeY[mEintraege.size()]+eintrag->mHoehe); mEintraege.push_back(eintrag); /* Check for duplicate hotkeys */ int hot=eintrag->getAccel(); for (size_t i=mEintraege.size()-1; i-->0;) if (mEintraege[i]->getAccel()==hot) eintrag->deactivateAccel(); } void BlattMenu::oeffnen(bool /*durchMaus*/, int wahl /*= eintrag_keiner*/) { SDLTools::setVirtualWindowSize(L_fenster_breite_menus, L_fenster_hoehe); mHyperaktiv = eintrag_keiner; mWahl = MausBereich(wahl); /* Nicht die nachfolgenden Setzroutinen verwenden, weil sonst evtl. ein nicht-mehr existenter voriger gewhlter Menpunkt neu gemalt wird. */ //setHyperaktiv(eintrag_keiner); //setWahl(wahl); /* Jetzt manuell alles updaten */ for (size_t i = 0; i < mEintraege.size(); i++) updateEintrag(i); /* Dafr manuell der Infozeile sagen, dass sie geupdatet werden muss */ updateInfo(); /* Zentrierlinien berechnen */ int xsum[zl_anzahl]; for (int i = 0; i < zl_anzahl; i++) xsum[i] = 0; for (size_t i = 0; i < mEintraege.size(); i++) { int zl = mEintraege[i]->getZentrierLinie(); xsum[zl] += mEintraege[i]->getX0() + mEintraege[i]->getX1(); } CASSERT(mEintraege.size()); for (int i = 0; i < zl_anzahl; i++) mX0[i] = L_fenster_breite_menus/2 - xsum[i]/((int) mEintraege.size()); setScrollZielHigh(ynw_mitte, true); //if (durchMaus) // setWahl(eintrag_keiner); /* Chaning AutoColor::gGame automatically recolors the border pictures */ AutoColor::gGame = Color(0, 0, 70); UI::setBlatt(this); sichtbaresUpdaten(); mRahmenUpdaten = true; } int keypadersatz[10] = { SDLK_INSERT, SDLK_END, SDLK_DOWN, SDLK_PAGEDOWN, SDLK_LEFT, SDLK_KP5, SDLK_RIGHT, SDLK_HOME, SDLK_UP, SDLK_PAGEUP}; void BlattMenu::keyEvent(const SDL_keysym & taste) { /* Wenn die Taste einen Ascii-Code hat, dann wollen wir mit dem weiterarbeiten. (d.h. shift-& auf franzoesischer Tastatur ist 1) */ int t = taste.unicode; /* Fuer sonstige Tasten (Pfeile, etc.) nehmen wir den SDL-Code */ if (t <= 0 || t > 255) t = taste.sym; /* Aber Buchstaben haetten wir gerne als Grossbuchstaben. (Wenn wir auch Umlaute als Tastenkuerzel haetten, muessten wir uns auch darum kuemmern) */ if (t >= 'a' && t <= 'z') t = t-'a'+'A'; /* Wenn eine Ziffernblock-Taste gedrueckt wurde aber kein Uni-Code mitgeliefert wurde, dann soll das auf die uebliche Art wie Pfeiltasten wirken. (Manchmal macht SDL das automatisch; das scheint aber buggy zu sein.) */ if (t>=SDLK_KP0 && t<=SDLK_KP9) t = keypadersatz[t-SDLK_KP0]; // /* Keycode normalisieren */ // int t = taste.sym; // if (t >= 'a' && t <= 'z') // t = t-'a'+'A'; // if (t>=SDLK_KP0 && t<=SDLK_KP9) { // if (taste.mod & KMOD_NUM) // t = t-SDLK_KP0+'0'; // else // t = keypadersatz[t-SDLK_KP0]; // } // if (t==SDLK_KP_ENTER || t==SDLK_SPACE) // t=SDLK_RETURN; // // if (t == SDLK_ESCAPE) { // doEscape(); // return; // } //print_to_stderr(_sprintf("sym %d = '%c' ", taste.sym, taste.sym)); //print_to_stderr(_sprintf("unicode %d = '%c' ", taste.unicode, taste.unicode)); //print_to_stderr(_sprintf("taste %d = '%c'\n", t, t)); /* Jeder Tastendruck stellt den Subbereich auf default; selbst solche, die nix bewirken */ setWahl(mWahl.mEintrag); if (mHyperaktiv >= 0) { mEintraege[mHyperaktiv]->doHyperaktiv(taste,t); setWahl(mHyperaktiv); setHyperaktiv(eintrag_keiner); return; } switch (t) { case SDLK_UP: navigiere(-1); break; case SDLK_DOWN: navigiere(1); break; case SDLK_PAGEUP: navigiere(-1,mZeigVon); break; case SDLK_PAGEDOWN: navigiere(1,mZeigBis-1); break; case SDLK_HOME: navigiere(1,0); break; case SDLK_END: navigiere(-1,mEintraege.size()-1); break; case SDLK_ESCAPE: doEscape(); break; case SDLK_RETURN: case SDLK_KP_ENTER: case SDLK_SPACE: doReturn(false); break; default: /* Accelerator-Taste gedrckt? */ for (int i = 0; i < (int) mEintraege.size(); i++) { if (t == mEintraege[i]->getAccel() && mEintraege[i]->getWaehlbar()) { setWahl(i); doReturn(false); return; } } /* Vielleicht ist der gewhlte Eintrag aktiv? */ if (mWahl.mEintrag >= 0) if (mEintraege[mWahl.mEintrag]->getAktiv()) { mEintraege[mWahl.mEintrag]->doHyperaktiv(taste,t); /* Tastatur-User wollen nix von Subbereichen wissen */ UI::nachEventAllesAnzeigen(); } break; } } void BlattMenu::resizeEvent() { sichtbaresUpdaten(); mRahmenUpdaten = true; UI::nachEventAllesAnzeigen(); } MausBereich BlattMenu::getMausPos(int x, int y) { /* Befindet sich die Maus in der Scrollbar? */ bool sc = istScrollbar(); if (sc || mImmerScrollleiste) { if (x >= L_scrollleiste_x && x < L_scrollleiste_x + gric) { /* Das mit dem 1000 ist weil negative Zahlen in die falsche Richtung gerundet werden */ int yy = (y - L_scrollleiste_y + 1000 * gric) / gric - 1000; if (yy >= 0 && yy < L_scrollleiste_buttonzahl) { if (!sc && yy < 4) { /* Auf grauem Scrollbarbutton */ return MausBereich(); } else return MausBereich(eintrag_scrollleiste, yy); } } } int e=mEintraege.size(); for (y-=mY0; e>=0 && y= mAnimZeigBis) return MausBereich(); if (!mEintraege[e]->getWaehlbar()) return MausBereich(); int sb = mEintraege[e]->getMausPos(x - mX0[mEintraege[e]->getZentrierLinie()], y - mEintraegeY[e]); if (sb == subbereich_keiner) return MausBereich(); else return MausBereich(e, sb); } /* befindet sich der Cursor aus Sicht von Tastatur-Usern? */ int BlattMenu::getTastenCursorPos() { if (mHyperaktiv >= 0) return mHyperaktiv; else return mWahl.mEintrag; } void BlattMenu::mouseMotionEvent(bool press, int x, int y, int x_alt, int y_alt) { /* Bei gedrckter Maustaste rumfahren => Dort, wo der Knopf runter ging bleibt's ausgewhlt */ if (press) { return; } MausBereich mausAlt = getMausPos(x_alt, y_alt); MausBereich mausNeu = getMausPos(x, y); if (mausNeu == mausAlt) return; setWahl(mausNeu); UI::nachEventAllesAnzeigen(); } void BlattMenu::mouseButtonEvent(bool press, int x, int y) { mPress = press; if (!press) return; MausBereich mausNeu = getMausPos(x, y); /* Wenn was hyperaktiv war, dann kann man's durch Mausklick enthyperaktivieren (selbst wenn man irgendwo anders ins Fenster klickt) */ setHyperaktiv(eintrag_keiner); setWahl(mausNeu); if (mWahl.mEintrag >= 0) doReturn(true); else if (mWahl.mEintrag == eintrag_scrollleiste) { /* Um ganz hoch oder runter zu scrollen, knnen wir einfach auf viel zu weit setzen; setScrollZielLow macht das dann schon richtig */ switch (mWahl.mSubBereich) { case 0: setScrollZielLow(99999); break; case 1: scrollleisteScroll(1); break; case 2: scrollleisteScroll(-1); break; case 3: setScrollZielLow(-99999); break; case 4: doEscape(); } } } void BlattMenu::anzeigen() { //Area::fillRect(0, 0, L_fenster_breite_menus, L_fenster_hoehe, Color(30, 30, 70)); if (mRahmenUpdaten) { Area::fillBorder(Color(30, 30, 70)); //malRahmen(L_fenster_breite_menus); Area::updateAll(); mRahmenUpdaten = false; } /* Oberer und unterer Rand */ if (mRaenderUpdaten) { /* Rand oberhalb des Mens */ Area::fillRect(0, 0, L_fenster_breite_menus, mAnimY0+mEintraegeY[mAnimZeigVon], Color(30, 30, 70)); Area::updateRect(0, 0, L_fenster_breite_menus, mAnimY0+mEintraegeY[mAnimZeigVon]); /* Zwischen Men und Infozeile */ /* Mark: Hh, ist das nicht das gleiche wie mAnimY0+mEintraegeY[mAnimZeigBis] ? */ /* Immi: Wei auch nicht mehr. Vielleicht wusste ich nicht, dass mEintraegeY eins weiter geht als Gesamtzahl der Eintrge */ int y_u = mAnimY0+mEintraegeY[mAnimZeigBis - 1] + mEintraege[mAnimZeigBis - 1]->mHoehe; /* Provisorisch: Das Hauptmen ist zu lang, wenn "debug-mode" drunter steht; das produziert graphik-Fehler... */ if (L_fenster_hoehe - L_info_hoehe - y_u > 0) { Area::fillRect(0, y_u, L_fenster_breite_menus, L_fenster_hoehe - L_info_hoehe - y_u, Color(30, 30, 70)); Area::updateRect(0, y_u, L_fenster_breite_menus, L_fenster_hoehe - L_info_hoehe - y_u); } /* Wenn diese Farbe gendert wird, mu das auch in some_pic_sources/highlight.pov und some_pic_sources/Makefile geschehen. Und in menueintrag.cpp */ mRaenderUpdaten = false; } int tc = getTastenCursorPos(); for (int i = mAnimZeigVon; i < mAnimZeigBis; i++) { mEintraege[i]->anzeigen(mX0[mEintraege[i]->getZentrierLinie()], mAnimY0+mEintraegeY[i], tc == i); } if (mInfozeileUpdaten) { Area::enter(SDLTools::rect (0, L_fenster_hoehe-L_info_hoehe, L_fenster_breite_menus,L_info_hoehe)); Area::fillRect(0,0,L_fenster_breite_menus,L_info_hoehe, Color(30, 30, 70)); if (mInfoW>=0) { Font::gMenu->drawText(mInfoText, mInfoX+L_info_hspace, L_info_hoehe-L_infosep, AlignBottomLeft); Font::gMenu->drawText(mInfoText, mInfoX+L_info_hspace+mInfoW, L_info_hoehe-L_infosep, AlignBottomLeft); } else Font::gMenu->drawText(mInfoText, L_infosep, L_info_hoehe-L_infosep, AlignBottomLeft); Area::updateRect(0,0,L_fenster_breite_menus,L_info_hoehe); Area::leave(); mInfozeileUpdaten = false; } bool sc = istScrollbar(); if (sc || mImmerScrollleiste) { /* Provisorisch: Graphik wird noch jedes Mal neu gemalt */ int scrollwahl = mWahl.mEintrag == eintrag_scrollleiste ? mWahl.mSubBereich : -1; for (int i = 0; i < L_scrollleiste_buttonzahl; i++) { int scrollbildchen[] = {2, 0, 1, 3, 6}; int helligkeit = scrollwahl == i ? blattpic_scrollbright : blattpic_scroll; if (!sc && i < 4) helligkeit = blattpic_scrolldimmed; gBlattPics[helligkeit]->malBildchen(L_scrollleiste_x, L_scrollleiste_y + i * gric, scrollbildchen[i]); } Area::updateRect(L_scrollleiste_x, L_scrollleiste_y, gric, L_scrollleiste_buttonzahl * gric); } } void BlattMenu::doEscape() { if (mObermenu) { Sound::playSample(sample_menuclick,so_fenster); UI::setBlatt(mObermenu); mObermenu->sichtbaresUpdaten(); if (mObereintrag) mObereintrag->doUntermenuSchliessen(); } } void BlattMenu::doReturn(bool durchMaus) { if (mWahl.mEintrag == eintrag_keiner) return; if (mEintraege[mWahl.mEintrag]->getHyper()) { setHyperaktiv(mWahl.mEintrag); } else { mEintraege[mWahl.mEintrag]->doReturn(durchMaus); } } void BlattMenu::zeitSchritt() { /* Infozeile */ if (mInfoW>=0) { mInfoX -= L_info_scrollspeed; if (mInfoX<=-mInfoW) mInfoX += mInfoW; mInfozeileUpdaten = true; UI::nachEventAllesAnzeigen(); } /* Meneintrge drfen ihre Privat-Animation haben */ for (size_t i=0; izeitSchritt(); /* Maus auf Scrollpfeil gedrckt? */ if (mWahl.mEintrag == eintrag_scrollleiste && mPress) { if (mWahl.mSubBereich == 1) scrollleisteScroll(1); // hoch else if (mWahl.mSubBereich == 2) scrollleisteScroll(-1); // runter } /* Echte Scrollpos an gewnschte anpassen */ scrollZeitSchritt(); } void BlattMenu::navigiere(int d, int vorschlag /*=-1*/) { int sgn = d > 0 ? 1 : -1; int neu_wahl = mWahl.mEintrag; if (vorschlag >= 0) neu_wahl = vorschlag; else if (neu_wahl >= 0) neu_wahl += d; else if (sgn == 1) neu_wahl = -1 + d; else neu_wahl = mEintraege.size() + d; sgn = -sgn; /* Erstmal auf den alten Wert zulaufen */ int angestossen = 0; /* Flags: 1=oben, 2=unten, 4=mitte */ while (1) { if ((angestossen & 3) == 3) { /* Wenn wir beim Suchen eines passenden Menupunkts oben *und* unten anstossen, dann aufgeben */ neu_wahl = -1; break; } else if (neu_wahl < 0) { neu_wahl = 0; sgn = 1; angestossen |= 5; } else if (neu_wahl >= (int) mEintraege.size()) { neu_wahl = mEintraege.size() - 1; sgn = -1; angestossen |= 6; } else if (neu_wahl==mWahl.mEintrag && !(angestossen & 4)) { sgn = -sgn; neu_wahl += sgn; angestossen |= 4; } else if (!mEintraege[neu_wahl]->getWaehlbar()) neu_wahl += sgn; else break; } if (neu_wahl == mWahl.mEintrag) return; setWahl(neu_wahl); setScrollZielHigh(d>0 ? ynw_oben : ynw_unten); sichtbaresUpdaten(); UI::nachEventAllesAnzeigen(); } void BlattMenu::menuLoeschen() { for (int i = 0; i < (int) mEintraege.size(); i++) delete(mEintraege[i]); mEintraege.clear(); mEintraegeY.clear(); mEintraegeY.push_back(0); } /* ndert wahl und kmmert sich drum, dass Graphik geupdatet wird */ void BlattMenu::setWahl(MausBereich wahl) { int walt = mWahl.mEintrag; mWahl = wahl; updateEintrag(walt); if (walt != wahl.mEintrag) updateEintrag(wahl.mEintrag); updateInfo(); } void BlattMenu::setWahl(int eintrag, int subBereich /*= subbereich_default*/) { setWahl(MausBereich(eintrag, subBereich)); } void BlattMenu::setHyperaktiv(int ha) { int halt = mHyperaktiv; mHyperaktiv = ha; updateEintrag(halt); if (halt != ha) updateEintrag(ha); updateInfo(); } void BlattMenu::updateInfo() { Str neu = (mHyperaktiv >= 0 ? mEintraege[mHyperaktiv]->getInfo() : (mWahl.mEintrag >= 0 ? mEintraege[mWahl.mEintrag]->getInfo() : "")); if (neu != mInfoText) { mInfoText = neu; mInfoW = Font::gMenu->getLineWidth(mInfoText.data()); if (mInfoW > L_fenster_breite_menus-2*L_infosep) { mInfoW+=L_info_hspace; mInfoX=0; } else mInfoW=-1; mInfozeileUpdaten = true; } } /* Teilt dem Eintrag seinen neuen Subbereich mit. Der Eintrag kmmert sich dann um sein Graphik-Update */ void BlattMenu::updateEintrag(int e) { if (e < 0) return; mEintraege[e]->setSubBereich( mHyperaktiv == e ? subbereich_hyperaktiv : mWahl.mEintrag == e ? mWahl.mSubBereich : subbereich_keiner ); } void BlattMenu::sichtbaresUpdaten() { for (int i = mAnimZeigVon; i < mAnimZeigBis; i++) mEintraege[i]->setUpdateFlag(); mRaenderUpdaten = true; mInfozeileUpdaten = true; } bool BlattMenu::istScrollbar() const { return mEintraegeY[mEintraege.size()] > L_menu_hoehe; } void BlattMenu::scrollleisteScroll(int sgn) { setScrollZielLow(mY0 + sgn * L_maus_scroll_geschwindigkeit); } /* Gleicht mY0, mZeigVon und mZeigBis an mWahl an. sprung = true => keine Animation, sondern direkt dort hin. */ void BlattMenu::setScrollZielHigh(yneuwahl ynw /*=ynw_mitte*/, bool sprung /* = false */) { /* Kein Menpunkt gewhlt? Dann nach oben */ int w = mWahl.mEintrag < 0 ? 0 : mWahl.mEintrag; /* Erstmal nehmen wir an, da wir mWahl gem ynw ausrichten wollen */ int neuy = (L_menu_hoehe - mEintraege[w]->mHoehe)/2 - mEintraegeY[w]; switch (ynw) { case ynw_mitte: break; case ynw_oben: neuy-=L_menu_scroll_vorsprung; break; case ynw_unten: neuy+=L_menu_scroll_vorsprung; break; } setScrollZielLow(neuy, sprung); } /* Setzt mY0 und gleicht mZeigVon und mZeigBis an. sprung = true => keine Animation, sondern direkt dort hin. */ void BlattMenu::setScrollZielLow(int neuy, bool sprung /* = false */) { if (!istScrollbar()) { /* Das Men passt komplett auf den Bildschirm. Dann wird der Scrollwunsch ignoriert. */ neuy = (L_menu_hoehe-mEintraegeY[mEintraege.size()])/2; } else { /* Wenn scrollbar, dann aber nicht weiter rausscrollen als gesund wre */ if (neuy>L_menu_scroll_freiraum) { neuy = L_menu_scroll_freiraum; } else if (neuy+mEintraegeY[mEintraege.size()]+L_menu_scroll_freiraum0 && y0+mEintraegeY[von-1]>=0; von--) {} for (bis = 0; bis<(int)mEintraege.size() && y0+mEintraegeY[bis+1]<=L_menu_hoehe; bis++) {} } void BlattMenu::scrollZeitSchritt() { if (mAnimY0 == mY0) { mScrollGesch = 0; return; } /* Wie schnell wren wir am liebsten, unter Bercksichtigung des Bremswegs? Die Formel mit der Wurzel und dem Abrunden sollte aufs Pixel genau stimmen. */ int diff = mY0 - mAnimY0; int sgn = diff > 0 ? 1 : -1; int ziel_gesch = (int) floor((-0.5 + sqrt(0.25 + 2 * diff * sgn / L_scroll_beschleunigung)) * L_scroll_beschleunigung) * sgn; /* Versuchen, diese Geschwindigkeit zu erreichen. */ if (mScrollGesch + L_scroll_beschleunigung < ziel_gesch) mScrollGesch += L_scroll_beschleunigung; else if (mScrollGesch - L_scroll_beschleunigung > ziel_gesch) mScrollGesch -= L_scroll_beschleunigung; else mScrollGesch = ziel_gesch; mAnimY0 += mScrollGesch; calcZeigVonBis(mAnimY0, mAnimZeigVon, mAnimZeigBis); sichtbaresUpdaten(); UI::nachEventAllesAnzeigen(); } /*****************************************************************************/ void BlattStartAt::oeffnen(bool durchMaus, int) { /* Zu umstaendlich: Im Moment liefert getMoeglicheLevel einen Vector von Strings zurck, der hier in einen Vector von Menueintraegen konvertiert werden muss. Besser waere, wenn direkt das Menu erzeugt werden koennte. */ //std::vector levNamen; //int lev, nichtGewonnen; //Cuyo::getMoeglicheLevel(levNamen, lev, nichtGewonnen); ld->ladLevelSummary(false,Cuyo::berechneVersion()); menuLoeschen(); bool waehlbar = true; int spz = Cuyo::getSpielerZahl(); int lanz = ld->getLevelAnz(); int wanz = 0; bool ungeordnet = gDebug || !ld->getAngeordnet(); for (int l = 1; l <= lanz; l++) { bool gew = PrefsDaten::getLevelGewonnen(spz == 2, l); if (waehlbar || gew) neuerEintrag(new MenuEintragLevel(this, ld->getLevelName(l), gew, waehlbar)); if (waehlbar) wanz++; waehlbar &= gew || ungeordnet; } CASSERT(wanz > 0); int gewaehlt = (ungeordnet ? 1 : wanz); /* MenuEintragAuswahl kann hier nicht verwendet werden: MenuEintragAuswahl() setzt das Blatt nach Return-Drcken auf Obermen zurck; hier muss das Blatt aber auf Spiel gesetzt werden. (=> Im Moment kommt MenuEintragAuswahl nur noch an einer Stelle vor. Dafr lohnt sich eigentlich keine eigene Klasse.) */ /* Darf erst jetzt aufgerufen werden; das Men muss vorher schon aufgebaut worden sein */ int lnr = Cuyo::getLetzterLevel(); if (lnr != 0 && lnr<=wanz) gewaehlt = lnr; /* Wahl zhlt bei 0 los, level bei 1 */ BlattMenu::oeffnen(durchMaus, gewaehlt - 1); } void BlattStartAt::doReturn(bool) { Sound::playSample(sample_menuclick,so_fenster); /* Wahl zhlt bei 0 los, level bei 1 */ UI::startSpiel(mWahl.mEintrag + 1); } /*****************************************************************************/ void doNewGame() { UI::startSpiel(1); } void doRestartLastLevel() { int lnr = Cuyo::getLetzterLevel(); if (lnr != 0) { UI::startSpiel(lnr); } } void doQuit() { UI::quit(); } bool stromRestartLastLevel() { int lastLevel = Cuyo::getLetzterLevel(); return lastLevel != 0 && ld->levelAccessible(lastLevel); } static MenuEintrag * gRestartLastLevel; void updateRestartLastLevel() { ld->ladLevelSummary(false,Cuyo::berechneVersion()); gRestartLastLevel->updateStrom(); } void setSchwierig(int i) { Cuyo::setSchwierig(i); updateRestartLastLevel(); } void setLevelpack(int p) { Cuyo::setLevelpack(p); updateRestartLastLevel(); } Str getVersionString() { /* The following should be done at compile time. */ Str ret; for (const char * v = VERSION; *v; v++) {// VERSION is defined in config.h if (*v != '~') ret += *v; } return ret; } BlattHauptmenu::BlattHauptmenu() { neuerEintrag(new MenuEintragBild(this, blattpic_titel)); if (gDebug) { neuerEintrag(new MenuEintrag(this, _sprintf(_("%s - Debug mode; Press alt-h for help."), getVersionString().data()), MenuEintrag::Art_deko)); } else { neuerEintrag(new MenuEintrag(this, getVersionString().data(), MenuEintrag::Art_deko)); } neuerEintrag(new MenuEintrag(this, "", MenuEintrag::Art_deko, L_medskip)); /* TRANSLATORS: Now follows the main menu. The characters preceded by a tilde are hotkeys. Please choose them disjoint within the menu. If this cannot be achieved in a sensible manner, feel free to leave some out. */ neuerEintrag(new MenuEintrag(this,_("~New Game"), doNewGame)); /* We need to make the "Restart last level" menu entry known to other entries which may change its "electricity" status. */ gRestartLastLevel = new MenuEintrag(this,_("~Restart last level"), doRestartLastLevel); gRestartLastLevel->setGetStrom(stromRestartLastLevel); neuerEintrag(gRestartLastLevel); neuerEintrag(new MenuEintragSubmenu(this,_("Start ~at level..."), (new BlattStartAt())->setObermenu(this))); neuerEintrag(new MenuEintrag(this,"", MenuEintrag::Art_deko, L_medskip)); neuerEintrag(new MenuEintragSpielerModus(this,_("~1 Player"), &updateRestartLastLevel, 1)); neuerEintrag(new MenuEintragSpielerModus(this,_("~2 Players"), &updateRestartLastLevel, 2)); neuerEintrag(new MenuEintragSpielerModus(this,_("Player vs. ~Computer"), &updateRestartLastLevel, spielermodus_computer)); neuerEintrag(new MenuEintrag(this,"", MenuEintrag::Art_deko, L_medskip)); neuerEintrag(new MenuEintragAuswahlmenu(this, _("~Level track"), &Version::gLevelpack.mProsaNamen, &Version::gLevelpack.mErklaerungen, &Cuyo::getLevelpack, &setLevelpack)); neuerEintrag(new MenuEintragAuswahlmenu(this, _("~Difficulty"), &Version::gSchwierig.mProsaNamen, &Version::gSchwierig.mErklaerungen, &Cuyo::getSchwierig, &setSchwierig, _("Setting the difficulty affects some, but not all levels.\n" "On difficulty \"Easy\", the \"Standard\" level track\n" "consists of levels which are affected by that difficulty,\n" "and of levels which are easy in themselves.\n" "The same holds for \"Hard\"."))); neuerEintrag(new MenuEintrag(this,"", MenuEintrag::Art_deko, L_medskip)); neuerEintrag(new MenuEintragSubmenu(this,_("~Preferences..."), (new BlattPrefs())->setObermenu(this))); neuerEintrag(new MenuEintrag(this, "", MenuEintrag::Art_deko, L_medskip)); // The empty lines before this are to prevent us from adding menu entries // at the end, without moving the following comment to the new end. /* TRANSLATORS: This is the last entry of the main menu. */ neuerEintrag(new MenuEintrag(this, _("~Quit"), doQuit)); } /********************************************************************************/ BlattPrefs::BlattPrefs(): BlattMenu() { for (int i = 0; i < 2; i++) { Str s = _sprintf(_("Keys Player %d:"), i + 1); neuerEintrag(new MenuEintrag(this, s, MenuEintrag::Art_deko)); neuerEintrag(new MenuEintragTaste(this, _("Left"), i, 0)); neuerEintrag(new MenuEintragTaste(this, _("Right"), i, 1)); neuerEintrag(new MenuEintragTaste(this, _("Turn"), i, 2)); neuerEintrag(new MenuEintragTaste(this, _("Down"), i, 3)); neuerEintrag(new MenuEintrag(this, "", MenuEintrag::Art_deko, L_medskip)); } neuerEintrag(new MenuEintragAI(this, _("AI Speed"))); neuerEintrag(new MenuEintrag(this, "", MenuEintrag::Art_deko, L_medskip)); neuerEintrag(new MenuEintragSound(this, _("Sound"))); neuerEintrag(new MenuEintrag(this, "", MenuEintrag::Art_deko, L_medskip)); neuerEintrag(new MenuEintragEscape(this)); } void BlattPrefs::doEscape() { PrefsDaten::schreibPreferences(); BlattMenu::doEscape(); } cuyo-2.1.0/src/scanner.cc0000644000175000017500000017233412422656656012171 00000000000000 #line 3 "scanner.cc" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 54 #define YY_END_OF_BUFFER 55 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[149] = { 0, 0, 0, 55, 53, 50, 52, 46, 53, 51, 46, 46, 46, 46, 46, 47, 46, 46, 19, 19, 25, 46, 46, 46, 53, 46, 20, 48, 49, 22, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 46, 50, 30, 0, 45, 0, 51, 51, 39, 33, 37, 35, 36, 27, 42, 43, 18, 26, 38, 0, 25, 25, 0, 0, 16, 31, 29, 28, 32, 17, 44, 22, 21, 21, 21, 21, 21, 21, 21, 4, 21, 21, 21, 21, 21, 21, 21, 21, 34, 40, 41, 25, 0, 25, 21, 21, 21, 21, 21, 7, 21, 21, 21, 21, 6, 21, 21, 1, 25, 0, 21, 2, 21, 5, 21, 21, 12, 21, 21, 21, 21, 25, 0, 9, 21, 21, 21, 21, 21, 11, 21, 24, 24, 21, 21, 21, 21, 21, 3, 25, 0, 14, 13, 8, 10, 15, 23, 23, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 8, 11, 11, 12, 13, 11, 14, 15, 16, 17, 18, 19, 19, 19, 20, 19, 19, 19, 19, 11, 11, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 29, 30, 31, 8, 32, 8, 33, 34, 35, 36, 37, 38, 39, 40, 41, 27, 27, 42, 43, 44, 45, 46, 27, 47, 48, 49, 50, 51, 52, 53, 54, 27, 11, 55, 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 } ; static yyconst flex_int32_t yy_meta[56] = { 0, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 5, 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3 } ; static yyconst flex_int16_t yy_base[154] = { 0, 0, 0, 194, 416, 54, 416, 166, 51, 167, 140, 150, 416, 127, 125, 37, 48, 119, 52, 67, 75, 43, 51, 55, 79, 107, 81, 416, 416, 0, 89, 38, 69, 67, 80, 65, 83, 92, 93, 90, 76, 142, 416, 120, 416, 121, 0, 109, 416, 416, 416, 416, 416, 416, 82, 67, 416, 416, 416, 59, 137, 149, 153, 0, 416, 416, 416, 416, 416, 416, 416, 0, 103, 128, 131, 137, 135, 113, 148, 141, 154, 147, 155, 157, 165, 161, 167, 169, 416, 416, 416, 203, 207, 0, 183, 184, 197, 195, 194, 196, 206, 212, 205, 213, 215, 222, 219, 225, 259, 263, 240, 239, 241, 247, 248, 249, 250, 263, 256, 267, 269, 303, 292, 279, 283, 290, 294, 292, 296, 298, 305, 334, 339, 315, 322, 324, 325, 323, 321, 361, 365, 341, 342, 343, 345, 349, 383, 416, 416, 401, 406, 408, 410, 62 } ; static yyconst flex_int16_t yy_def[154] = { 0, 148, 1, 148, 148, 148, 148, 148, 149, 150, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 148, 148, 152, 151, 30, 30, 30, 30, 30, 30, 30, 30, 30, 148, 148, 148, 149, 148, 148, 150, 150, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 153, 148, 148, 148, 148, 148, 148, 148, 152, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 148, 148, 148, 148, 148, 153, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 148, 148, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 148, 148, 30, 30, 30, 30, 30, 30, 30, 30, 148, 148, 30, 30, 30, 30, 30, 30, 148, 148, 30, 30, 30, 30, 30, 148, 148, 0, 148, 148, 148, 148, 148 } ; static yyconst flex_int16_t yy_nxt[472] = { 0, 4, 5, 6, 5, 7, 8, 9, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 26, 26, 26, 27, 4, 28, 29, 26, 30, 26, 31, 32, 26, 33, 26, 34, 35, 36, 26, 26, 26, 37, 38, 26, 26, 39, 26, 26, 26, 40, 41, 44, 41, 52, 53, 54, 55, 56, 64, 65, 93, 59, 57, 60, 60, 61, 61, 66, 67, 75, 62, 68, 69, 57, 63, 45, 59, 72, 60, 60, 61, 61, 72, 90, 59, 62, 61, 61, 61, 61, 62, 62, 71, 71, 71, 71, 78, 62, 89, 63, 71, 71, 71, 71, 81, 76, 72, 71, 72, 72, 47, 72, 79, 72, 82, 71, 77, 87, 80, 72, 44, 43, 72, 83, 72, 88, 70, 72, 73, 72, 84, 72, 85, 74, 72, 58, 72, 72, 41, 86, 41, 51, 72, 50, 45, 43, 59, 72, 91, 91, 61, 61, 72, 98, 49, 92, 48, 72, 59, 43, 61, 61, 61, 61, 92, 92, 94, 72, 47, 96, 72, 92, 72, 95, 72, 72, 72, 97, 99, 72, 72, 72, 42, 100, 103, 72, 72, 72, 148, 101, 148, 72, 72, 72, 72, 104, 72, 102, 72, 72, 72, 72, 106, 148, 72, 105, 72, 148, 72, 72, 107, 72, 59, 72, 108, 108, 61, 61, 109, 109, 148, 109, 72, 72, 112, 109, 113, 110, 72, 148, 114, 148, 111, 72, 72, 72, 72, 148, 72, 72, 72, 72, 115, 116, 72, 72, 148, 117, 148, 72, 72, 72, 72, 118, 72, 148, 72, 72, 72, 72, 119, 72, 120, 72, 72, 148, 72, 148, 59, 72, 121, 121, 61, 61, 122, 122, 148, 122, 72, 72, 72, 122, 123, 72, 72, 124, 72, 125, 72, 72, 127, 72, 72, 126, 72, 72, 128, 129, 130, 148, 72, 148, 72, 132, 132, 148, 72, 72, 72, 148, 132, 72, 59, 72, 131, 131, 61, 61, 72, 133, 134, 132, 72, 72, 135, 136, 148, 72, 148, 72, 148, 72, 137, 72, 72, 72, 72, 72, 72, 138, 72, 148, 72, 59, 72, 139, 139, 61, 61, 72, 140, 140, 140, 142, 72, 143, 144, 140, 141, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 59, 145, 146, 146, 61, 61, 147, 147, 148, 147, 72, 72, 72, 147, 72, 72, 72, 72, 72, 72, 148, 148, 59, 72, 61, 61, 61, 61, 43, 43, 43, 46, 148, 46, 46, 46, 72, 72, 71, 71, 3, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148 } ; static yyconst flex_int16_t yy_chk[472] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 8, 5, 15, 15, 16, 16, 16, 21, 21, 153, 18, 16, 18, 18, 18, 18, 22, 22, 31, 18, 23, 23, 59, 18, 8, 19, 31, 19, 19, 19, 19, 31, 55, 20, 19, 20, 20, 20, 20, 24, 24, 26, 26, 26, 26, 33, 24, 54, 18, 30, 30, 30, 30, 35, 32, 33, 26, 32, 35, 47, 33, 34, 32, 36, 30, 32, 39, 34, 34, 43, 45, 36, 37, 34, 40, 25, 36, 30, 39, 37, 37, 38, 30, 39, 17, 37, 38, 41, 38, 41, 14, 72, 13, 43, 45, 60, 72, 60, 60, 60, 60, 77, 77, 11, 60, 10, 77, 61, 45, 61, 61, 61, 61, 62, 62, 73, 73, 9, 75, 74, 62, 73, 74, 76, 74, 75, 76, 78, 76, 79, 75, 7, 80, 83, 79, 81, 78, 3, 81, 0, 81, 78, 80, 82, 84, 83, 82, 80, 82, 85, 83, 86, 0, 84, 85, 86, 0, 87, 84, 87, 86, 91, 87, 91, 91, 91, 91, 92, 92, 0, 91, 94, 95, 96, 92, 97, 94, 95, 0, 98, 0, 95, 98, 97, 99, 96, 0, 98, 97, 99, 96, 100, 101, 102, 100, 0, 102, 0, 102, 100, 101, 103, 103, 104, 0, 101, 103, 106, 104, 105, 105, 106, 106, 107, 0, 105, 0, 108, 107, 108, 108, 108, 108, 109, 109, 0, 108, 111, 110, 112, 109, 110, 111, 110, 112, 113, 114, 115, 116, 117, 113, 114, 115, 116, 118, 118, 119, 120, 0, 118, 0, 117, 122, 122, 0, 119, 117, 120, 0, 122, 119, 121, 120, 121, 121, 121, 121, 123, 124, 125, 121, 124, 123, 126, 127, 0, 124, 0, 125, 0, 127, 128, 126, 125, 128, 127, 129, 126, 130, 128, 0, 129, 131, 130, 131, 131, 131, 131, 130, 132, 132, 131, 134, 133, 135, 136, 132, 133, 133, 138, 134, 137, 135, 136, 138, 134, 137, 135, 136, 139, 137, 139, 139, 139, 139, 140, 140, 0, 139, 141, 142, 143, 140, 144, 141, 142, 143, 145, 144, 0, 0, 146, 145, 146, 146, 146, 146, 149, 149, 149, 150, 0, 150, 150, 150, 151, 151, 152, 152, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "scanner.ll" #line 5 "scanner.ll" /*************************************************************************** scanner.ll - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "inkompatibel.h" #include "cuyointl.h" #include "code.h" #include "knoten.h" #include "ort.h" /* parser.h darf erst hier included werden, weil es gemeinerweise ohne selbst zu includen auf code.h bis ort.h zugreift */ #include "parser.h" /* Um nach include-Dateien zu suchen...: */ #include "pfaditerator.h" /***** lex-Einstellungen *****/ /* _Nicht_ so parsen, dass man interaktiv die level.descr eingeben knnte, whrend sie geparst wird. */ #define YY_NEVER_INTERACTIVE 1 /* Wenn bison reentrant sein soll (d. h. nur lokale Variablen benutzen), wird die an die Lex-Hauptroutine yylex() noch ein Pointer bergeben auf die Variable, in die man den lval schreiben kann. */ #define YY_DECL int yylex(YYSTYPE * lvalPtr) extern Str gDateiName; extern int gZeilenNr; extern bool gGabFehler; Str * expandiereBackslash(char * a) { Str r; a++; // erstes " berspringen while (*(a + 1)) { // Letztes Zeichen auch auslassen if (*a == '\\') { a++; switch (*a) { case 'n': r += '\n'; break; case '"': r += '"'; break; case '\\': r += '\\'; break; default: throw Fehler("%s","Unknown escape sequence"); } } else r += *a; a++; } return new Str(r); } /** Wechselt die Lex-Datei temporr. Liefert was zurck, was an popLex bergeben werden muss, um wieder zurckzuschalten. Throwt evtl. setzdefault wird an den Pfaditerator bergeben. */ void * pushLex(const char * na, bool setzdefault = false) { /* Alte Datei merken */ YY_BUFFER_STATE merkBuf = YY_CURRENT_BUFFER; /* Neue Datei suchen und oeffnen. */ PfadIterator pi(na, false, setzdefault); FILE * neudat; for (; !(neudat = fopen(pi.pfad().data(), "r")); ++pi) {} /* Auf neue Datei umschalten */ yy_switch_to_buffer(yy_create_buffer(neudat,YY_BUF_SIZE)); return merkBuf; } void popLex(void * merkBuf) { /* Aktuelle Datei schlieen */ FILE * f = yyin; yy_delete_buffer(YY_CURRENT_BUFFER ); /* Die Datei lieber erst nach dem yy_delete_buffer() schlieen. Man wei nicht so recht, ob yy_delete_buffer() noch was mit der Datei macht... */ fclose(f); /* Auf ursprngliche Datei zurckschalten */ yy_switch_to_buffer((YY_BUFFER_STATE) merkBuf); /* Hoffentlich kmmert sich lex drum, die neu geffnete Datei yyin wieder zu schlieen und yyin zurckzusetzen. */ } #line 745 "scanner.cc" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 140 "scanner.ll" #line 936 "scanner.cc" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 149 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 148 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_find_action: yy_act = yy_accept[yy_current_state]; YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 143 "scanner.ll" { return VAR_TOK; } YY_BREAK case 2: YY_RULE_SETUP #line 144 "scanner.ll" { return BUSY_TOK; } YY_BREAK case 3: YY_RULE_SETUP #line 145 "scanner.ll" { return SWITCH_TOK; } YY_BREAK case 4: YY_RULE_SETUP #line 146 "scanner.ll" { return IF_TOK; } YY_BREAK case 5: YY_RULE_SETUP #line 147 "scanner.ll" { return ELSE_TOK; } YY_BREAK case 6: YY_RULE_SETUP #line 148 "scanner.ll" { return RND_TOK; } YY_BREAK case 7: YY_RULE_SETUP #line 149 "scanner.ll" { return GGT_TOK; } YY_BREAK case 8: YY_RULE_SETUP #line 150 "scanner.ll" { return INCLUDE_TOK; } YY_BREAK case 9: YY_RULE_SETUP #line 151 "scanner.ll" { return BONUS_TOK; } YY_BREAK case 10: YY_RULE_SETUP #line 152 "scanner.ll" { return MESSAGE_TOK; } YY_BREAK case 11: YY_RULE_SETUP #line 153 "scanner.ll" { return SOUND_TOK; } YY_BREAK case 12: YY_RULE_SETUP #line 154 "scanner.ll" { return VERLIER_TOK; } YY_BREAK case 13: YY_RULE_SETUP #line 155 "scanner.ll" { return EXPLODE_TOK; } YY_BREAK case 14: YY_RULE_SETUP #line 156 "scanner.ll" { return DEFAULT_TOK; } YY_BREAK case 15: YY_RULE_SETUP #line 157 "scanner.ll" { return DA_KIND_TOK; } YY_BREAK case 16: YY_RULE_SETUP #line 158 "scanner.ll" { return BEGIN_CODE_TOK; } YY_BREAK case 17: YY_RULE_SETUP #line 159 "scanner.ll" { return END_CODE_TOK; } YY_BREAK case 18: YY_RULE_SETUP #line 160 "scanner.ll" { return BIS_TOK; } YY_BREAK case 19: YY_RULE_SETUP #line 161 "scanner.ll" { lvalPtr->zahl = yytext[0]-'0'; return NULLEINS_TOK; } YY_BREAK case 20: YY_RULE_SETUP #line 164 "scanner.ll" { if (yytext[0] >= 'a') lvalPtr->zahl = yytext[0] - 'a' + 26; else lvalPtr->zahl = yytext[0] - 'A'; return BUCHSTABE_TOK; } YY_BREAK case 21: YY_RULE_SETUP #line 171 "scanner.ll" { lvalPtr->str = new Str(yytext); return REINWORT_TOK; } YY_BREAK case 22: YY_RULE_SETUP #line 175 "scanner.ll" { lvalPtr->str = new Str(yytext); return WORT_TOK; } YY_BREAK case 23: YY_RULE_SETUP #line 179 "scanner.ll" { lvalPtr->str = new Str(yytext); return NACHBAR8_TOK; } YY_BREAK case 24: YY_RULE_SETUP #line 183 "scanner.ll" { lvalPtr->str = new Str(yytext); return NACHBAR6_TOK; } YY_BREAK case 25: YY_RULE_SETUP #line 187 "scanner.ll" { sscanf(yytext, "%i", &lvalPtr->zahl); return ZAHL_TOK; } YY_BREAK case 26: YY_RULE_SETUP #line 191 "scanner.ll" { /* Falls der Benutzer ".5" schreibt, wird sscanf nix scannen... */ lvalPtr->zahl = 0; /* sscanf mit %d liest nur alles vor dem "." */ sscanf(yytext, "%d", &lvalPtr->zahl); return HALBZAHL_TOK; } YY_BREAK case 27: YY_RULE_SETUP #line 200 "scanner.ll" { lvalPtr->zahl = ohne_merk_pfeil; // siehe code.h return PFEIL_TOK; } YY_BREAK case 28: YY_RULE_SETUP #line 204 "scanner.ll" { lvalPtr->zahl = mit_merk_pfeil; // siehe code.h return PFEIL_TOK; } YY_BREAK case 29: YY_RULE_SETUP #line 208 "scanner.ll" { return EQ_TOK; } YY_BREAK case 30: YY_RULE_SETUP #line 209 "scanner.ll" { return NE_TOK; } YY_BREAK case 31: YY_RULE_SETUP #line 210 "scanner.ll" { return LE_TOK; } YY_BREAK case 32: YY_RULE_SETUP #line 211 "scanner.ll" { return GE_TOK; } YY_BREAK case 33: YY_RULE_SETUP #line 212 "scanner.ll" { return AND_TOK; } YY_BREAK case 34: YY_RULE_SETUP #line 213 "scanner.ll" { return OR_TOK; } YY_BREAK case 35: YY_RULE_SETUP #line 214 "scanner.ll" { return ADD_TOK; } YY_BREAK case 36: YY_RULE_SETUP #line 215 "scanner.ll" { return SUB_TOK; } YY_BREAK case 37: YY_RULE_SETUP #line 216 "scanner.ll" { return MUL_TOK; } YY_BREAK case 38: YY_RULE_SETUP #line 217 "scanner.ll" { return DIV_TOK; } YY_BREAK case 39: YY_RULE_SETUP #line 218 "scanner.ll" { return MOD_TOK; } YY_BREAK case 40: YY_RULE_SETUP #line 219 "scanner.ll" { return BITSET_TOK; } YY_BREAK case 41: YY_RULE_SETUP #line 220 "scanner.ll" { return BITUNSET_TOK; } YY_BREAK case 42: YY_RULE_SETUP #line 221 "scanner.ll" { return BITSET_ATOK; } YY_BREAK case 43: YY_RULE_SETUP #line 222 "scanner.ll" { return BITUNSET_ATOK; } YY_BREAK case 44: YY_RULE_SETUP #line 223 "scanner.ll" { return FREMD_TOK; } YY_BREAK case 45: YY_RULE_SETUP #line 224 "scanner.ll" { PBEGIN_TRY lvalPtr->str = expandiereBackslash(yytext); return WORT_TOK; PEND_TRY(lvalPtr->str = new Str()) } YY_BREAK case 46: YY_RULE_SETUP #line 230 "scanner.ll" {return yytext[0];} YY_BREAK case 47: YY_RULE_SETUP #line 231 "scanner.ll" {return yytext[0];} YY_BREAK case 48: YY_RULE_SETUP #line 232 "scanner.ll" {return yytext[0];} YY_BREAK case 49: YY_RULE_SETUP #line 233 "scanner.ll" {return yytext[0];} YY_BREAK case 50: YY_RULE_SETUP #line 234 "scanner.ll" /* Leerzeug */ YY_BREAK case 51: YY_RULE_SETUP #line 235 "scanner.ll" /* Kommentar */ YY_BREAK case 52: /* rule 52 can match eol */ YY_RULE_SETUP #line 236 "scanner.ll" gZeilenNr++; YY_BREAK case 53: YY_RULE_SETUP #line 237 "scanner.ll" { PBEGIN_TRY throw Fehler(_sprintf("Wrong character '%s'", yytext)); PEND_TRY(;); } YY_BREAK case 54: YY_RULE_SETUP #line 243 "scanner.ll" ECHO; YY_BREAK #line 1332 "scanner.cc" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 149 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 149 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 148); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 243 "scanner.ll" cuyo-2.1.0/src/bildstapel.cpp0000644000175000017500000001456112411361470013036 00000000000000/*************************************************************************** bildstapel.cpp - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "stringzeug.h" #include "cuyointl.h" #include "font.h" #include "bildstapel.h" #include "leveldaten.h" #include "layout.h" #include "fehler.h" /** Erzeugt einen uninitialisierten Bildstapel */ BildStapel::BildStapel(bool): mMaxAnz(-1), mStapel(0) { } BildStapel::BildStapel(): mMaxAnz(ld->mStapelHoehe), mAnz(-1), mDebugOut1(spezvar_out_nichts), mDebugOut2(spezvar_out_nichts), mAmPlatzen(0) { deepCreate(); } BildStapel::~BildStapel() { deepLoesch(); } BildStapel & BildStapel::operator=(const BildStapel & b) { CASSERT(b.mMaxAnz == ld->mStapelHoehe); /* Stapelhhe ndert sich? Dann Speicher neu alloziieren. */ if (b.mMaxAnz != mMaxAnz) { deepLoesch(); mMaxAnz = b.mMaxAnz; deepCreate(); } kopiere(b); return *this; } void BildStapel::kopiere(const BildStapel & b) { //Das wird eh schon oben getan: mMaxAnz = b.mMaxAnz; mAnz = b.mAnz; for (int i = 0; i < mAnz; i++) mStapel[i] = b.mStapel[i]; mAmPlatzen = b.mAmPlatzen; mDebugOut1 = b.mDebugOut1; mDebugOut2 = b.mDebugOut2; } void BildStapel::deepCreate() { mStapel = new BildEbene[mMaxAnz]; CASSERT(mStapel); } void BildStapel::deepLoesch() { if (mStapel) delete[] mStapel; mStapel = 0; } bool BildStapel::operator==(const BildStapel & b) const { CASSERT(mStapel); if (mAnz != b.mAnz) return false; for (int i = 0; i < mAnz; i++) if (!(mStapel[i] == b.mStapel[i])) return false; if (mAmPlatzen != b.mAmPlatzen) return false; if (mDebugOut1 != b.mDebugOut1) return false; if (mDebugOut2 != b.mDebugOut2) return false; return true; } /** Entfernt alle Bilder. Aufrufen, bevor speichereBild() fr jedes Bild aufgerufen wird. */ void BildStapel::initStapel(int platz) { CASSERT(mStapel); mAmPlatzen = platz; mAnz = 0; } void BildStapel::speichereBild(Sorte * so, int dat, int pos, int viertel, int ebene /*= 0*/) { CASSERT(mStapel); /* Sollte nicht passieren, da mMaxAnz beim Level-Start eigentlich richtig ausgerechnet wird */ if (mAnz >= mMaxAnz) throw iFehler("%s","Internal error: Too many pictures drawn for one single blob"); /* Gleich mal testen, ob die Werte fr dat, pos und viertel ok sind. */ /* Throwt, wenn dat out of range ist. */ int maxpos = so->getBilddatei(dat)->anzBildchen(); if (pos < 0 || pos >= maxpos) throw Fehler("Position pos=%d out of range (allowed for file=%d: 0 - %d)", pos, dat, maxpos - 1); if (viertel < viertel_min || viertel > viertel_max) throw Fehler("Quarter qu=%d out of range (allowed: %d - %d)", viertel, viertel_min, viertel_max); mStapel[mAnz].mSorte = so; mStapel[mAnz].mDat = dat; mStapel[mAnz].mPos = pos; mStapel[mAnz].mViertel = viertel; mStapel[mAnz].ebene = ebene; mAnz++; } void BildStapel::setDebugOut(int d1, int d2) { CASSERT(mStapel); mDebugOut1 = d1; mDebugOut2 = d2; } /** malt den Bildstapel. xx und yy sind in Pixeln angegeben; Stimmt die folgende Behauptung?? der Hintergrund wird vorher gelscht. */ void BildStapel::malen(int xx, int yy, bool apply_mirror /*=true*/) const { CASSERT(mStapel); /* ggf. Position senkrecht spiegeln */ if (ld->mSpiegeln && apply_mirror) yy = gry * gric - yy - gric; /* Unter gewissen Umstnden (wenn nicht gemalt werden darf) wird mAnz auf was negatives gesetzt. Nur um diesen Sicherheitscheck machen zu knnen. */ CASSERT(mAnz >= 0); /* Bild-Stapel malen. */ /* Alles in der Reihenfolge der Ebenen */ for (int ebene = bildstapel_min_ebene; ebene <= bildstapel_max_ebene; ebene++) { for (int i = 0; i < mAnz; i++) { const BildEbene & e = mStapel[i]; if (e.ebene == ebene) { try { // Um die Fehlermeldung zu verbessern... e.mSorte->getBilddatei(e.mDat)-> malBildchen(xx, yy, e.mPos, e.mViertel); } catch (Fehler fe) { throw Fehler("In kind %s, file %d:\n%s", e.mSorte->getName().data(), e.mDat, fe.getText().data()); } } } } /* Evtl. Explosion malen */ if (mAmPlatzen) { ld->mExplosionBild.malBildchen(xx, yy, mAmPlatzen - 1); } /* Debug-Output vom Animations-Code? */ if (mDebugOut1 != spezvar_out_nichts) malDebug(xx, yy, mDebugOut1); if (mDebugOut2 != spezvar_out_nichts) malDebug(xx, yy + gric / 2, mDebugOut2); } // malen /** Liefert true, wenn der Stapel initialisiert ist */ bool BildStapel::istInitialisiert() const { return mStapel; } /** Liefert true, wenn der Stapel leer ist. Wird benutzt, um eine Fehlermeldung auszuspucken, wenn whrend eines Events gemalt wird. */ bool BildStapel::istLeer() const { CASSERT(mStapel); return mAnz == 0; } void BildStapel::print() const { print_to_stderr(_sprintf("d1=%d,d2=%d,p=%d", mDebugOut1, mDebugOut2, mAmPlatzen)); for (int i = 0; i < mAnz; i++) print_to_stderr(_sprintf(" %s:%d:%d:%d:%d", mStapel[i].mSorte->getName().data(), mStapel[i].mDat, mStapel[i].mPos, mStapel[i].mViertel, mStapel[i].ebene)); print_to_stderr("\n"); } /** Gibt die Zahl n aus. Wird fr Debug-Output von malen() benutzt. */ void BildStapel::malDebug(int xx, int yy, int n) const { CASSERT(mStapel); Str str = _sprintf("%d", n); Font::gDbg->drawText(str, xx, yy, (TextAlign) (AlignTop | AlignLeft)); } cuyo-2.1.0/src/sdltools.h0000644000175000017500000001427111674440320012223 00000000000000/*************************************************************************** sdltools.h - description ------------------- begin : Fri Jul 21 2006 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SDLTOOLS_H #define SDLTOOLS_H #include #include #define scale_base 4 class Str; struct Color { Uint8 mR, mG, mB; Color() {} Color(Uint8 r, Uint8 g, Uint8 b): mR(r), mG(g), mB(b) {} /* Convert to SDL pixel value */ Uint32 getPixel(SDL_PixelFormat *fmt = SDL_GetVideoSurface()->format) const { return SDL_MapRGB(fmt, mR, mG, mB); } Uint8 & operator[](int i) {return i == 0 ? mR : (i == 1 ? mG : mB); } Uint8 operator[](int i) const {return i == 0 ? mR : (i == 1 ? mG : mB); } }; namespace SDLTools { /* opt_w, opt_h: size of window, as given by command line option; or -1,-1 to automatically choose window size */ void initSDL(int opt_w, int opt_h); /* Call while cuyo is already running is not yet supported (but not difficult to implement) */ void setFullscreen(bool fs); /* Change the size of the window from the view of the cuyo program. Does *not* change the real window size; instead, scaling may change. I propose that this should only be used in such a way that when the real window size is the preferred one (L_preferred_xxx), then scaling should never change. Note that changing the scaling always takes some time. */ void setVirtualWindowSize(int w, int h); void setMainTitle(); void setLevelTitle(const Str & levelname); /* Convert Qt-Key into SDL-Key; don't use Qt constants: we don't want to depend on Qt just to be able to read old .cuyo files. */ SDLKey qtKey2sdlKey(int qtk); SDL_Rect rect(int x, int y, int w = 0, int h = 0); bool intersection(const SDL_Rect & a, const SDL_Rect & b, SDL_Rect & ret); /* Creates a 32-bit-surface with alpha. After filling it with your data, you should convert it to screen format */ SDL_Surface * createSurface32(int w, int h); /* Converts a surface to a 32-bit-surface with alpha. The original surface is deleted. */ void convertSurface32(SDL_Surface *& s); /* Return a reference to the pixel at (x, y); assumes that the surface is 32-Bit. NOTE: The surface must be locked before calling this! */ Uint32 & getPixel32(SDL_Surface *surface, int x, int y); /* Converts the surface to a format suitable for fast blitting onto the display surface. Contrary to SDL_DisplayFormat, transparency is respected, at least where it is full transparency. Contrary to SDL_DisplayFormatAlpha, it uses ColourKey for paletted surfaces. The source surface is assumed to be 32-Bit. */ SDL_Surface * maskedDisplayFormat(SDL_Surface *); SDL_Surface * createMaskedDisplaySurface(int w, int h); /* Scales the surface according to our window size; s must be 32 bit. Warning: It is possible that a new surface is created and returned, but is is also possible that just a pointer to s is returned. */ SDL_Surface * scaleSurface(SDL_Surface * s); int getScale(); /* Like SDL_PollEvent, but the event is already scaled. And for resize events, the window and scaling is already prepared. */ bool pollEvent(SDL_Event & evt); } /** An area is a sub-rectangle of a surface. All drawing commands take place inside the active area. Calls to enter() (enter a sub-area) can be nested. (This has not been tested yet.) Right now, - The surface is always the screen surface - There exists only one global Area Right now, all calls to methods of Area (except init and destroy) are expected to happen in subroutines of UI::allesAnzeigen() */ namespace Area { void destroy(); void enter(SDL_Rect r); void leave(); void setClip(SDL_Rect r); void noClip(); void setBackground(const SDL_Rect &, SDL_Surface *); /** Setting the background happens relative to the current area. It defines the behaviour of subsequent calls to ... leave()ing the current area unsets the background. */ void maskBackground(const Maske *, SDL_Rect, int x, int y); /* Copies the background through the mask to the screen. The SDL_Rect is relative to the mask in unscaled coordinates. x and y are the destination on the screen relative to the current area. */ /* If the coordinates of srcrect are not a multiple of scale_base, then rounding of the width and height of srcrect is done in such a way that the result is correct in the *destination*, not in the source. */ void blitSurface(SDL_Surface *src, SDL_Rect srcrect, int dstx, int dsty); void blitSurface(SDL_Surface *src, int dstx, int dsty); void fillRect(SDL_Rect dst, const Color & c); void fillRect(int x, int y, int w, int h, const Color & c); /* Fills everything outside the current virtual window */ void fillBorder(const Color & c); /* You have to call the following methods to make your drawing operations really visible on the screen. (However, the update will take place only at the next call to doUpdate) */ void updateRect(SDL_Rect dst); void updateRect(int x, int y, int w, int h); /* Better than calling updateRect(bigRect): Stops collecting small rectangles. All means really all, not only active area. */ void updateAll(); /* To be called only by ui.cpp */ void doUpdate(); } #endif cuyo-2.1.0/src/menueintrag.h0000644000175000017500000002234111674440317012701 00000000000000/*************************************************************************** menueintrag.h - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006-2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef MENUEINTRAG_H #define MENUEINTRAG_H #include #include #include "stringzeug.h" #include "inkompatibel.h" #include "blatt.h" #define MaxDrawDinge 10 /* Malt in der Zukunft einen Teil eines Meneintrags. Das Bezugssystem fr Koordinaten ist AlignTop im Meneintrag. */ struct DrawDing { private: enum { dda_Nichts, dda_Text, dda_Icon, dda_Bild } mArt; Str mText; int mHotkey; Font * mFont; //int mDx;/* Wenn die Schrift nicht gleich bei mX0 losgehen soll */ /* Soll sie nie. Soll immer L_menu_rand_lr dazu */ bool mRahmen; int mBild; // Index in BlattMenu::gBlattPics int mBildchen; SDL_Rect mRect; public: int mBinSubBereich; int mX0,mX1; // mX1 ist wie immer um 1 zu gro int mY0,mY1; int mXPos; bool mAbschneiden; /* Konstruktoren, passend zur Art: */ DrawDing() : mArt(dda_Nichts) {}; DrawDing(const Str & text, int hotkey, /* Die Position des Hotkeys in text. Negative Spezialwerte siehe oben in menueintrag.cpp */ int binSubBereich, /* Subbereich, zu dem dieses Drawding gehrt */ int x, int y, int align = AlignHCenter, /* Akzeptiert nur waagerechtes Zeug, senkrecht ist immer zentriert. */ Font * font = NULL, /* Default hngt von aktSubBereich ab */ int * xmin = NULL, int * xmax = NULL /* Wenn die !=0 sind, wird dort schon mal unsere Ausdehung reingeschrieben. */); DrawDing(int bild, int bildchen, int x, int y); //DrawDing(int bild, int xbd, int ybd, int x, int y); DrawDing(int bild, int x, int y); void abschneiden(int x0, int x1); void anzeigen(int subBereich, int x, int y) const; }; class MenuEintrag { public: enum Art { Art_normal, Art_aktiv, /* Bekommt (durch doHyperaktiv) key-events, wenn man drauf ist. */ Art_hyper, /* Bekommt (durch doHyperaktiv) key-events, nachdem es angeklickt wurde. */ Art_hyperakt, /* "Art_aktiv + Art_hyper" */ Art_deko }; const int mHoehe; /* Ganz viel wird einfacher, wenn das hier const ist, also verlsst sich auch ganz viel drauf. Im Moment scheinen wir auch nicht mehr zu brauchen. Wenn sich das mal ndert, kann man sich immer noch die Arbeit machen, BlattMenu::anzeigen() und so anzupassen. */ protected: BlattMenu * mPapi; Str mName; int mAccel; /* Der Keycode des Hotkeys */ int mAccIndex; void (*mDoReturn)(); bool (*mGetStrom)(); /* Ein Menpunkt, der grad keinen Strom kriegt, kann auch nicht ausgewhlt werden */ Art mArt; int mX0, mX1; bool mUpdaten; int mSubBereich; private: DrawDing mDraw[MaxDrawDinge]; int mAnzDraw; public: MenuEintrag(BlattMenu * papi, Str na = "", void(*doret)() = 0, int accel = 0, int hoehe = L_menueintrag_defaulthoehe); MenuEintrag(BlattMenu * papi, Str na, Art ea, int hoehe = L_menueintrag_defaulthoehe); virtual ~MenuEintrag() {} MenuEintrag * setGetStrom(bool(*getstrom)()) {mGetStrom = getstrom; return this;} void setNieStrom(); void setSubBereich(int subBereich); /* Aufrufen, wenn sich mglicherweise der Stromstatus gendert hat */ void updateStrom(); void updateDrawDinge(); void setUpdateFlag() { mUpdaten = true; } int getAccel() const { return mAccel; } void deactivateAccel(); virtual void anzeigen(int x, int y, bool graue); virtual void zeitSchritt() {} virtual Str getInfo() {return "";} /* y muss nicht berprft werden; liegt auf jeden Fall zwischen 0 und hoehe */ virtual int getMausPos(int x, int y); virtual void doReturn(bool durchMaus); virtual void doHyperaktiv(const SDL_keysym &, int) {} virtual bool getStrom() const; bool getWaehlbar() const; bool getAktiv() const; bool getHyper() const; int getX0() const {return mX0;} int getX1() const {return mX1;} virtual ZentrierLinie getZentrierLinie() const { return mAccel == 0 ? zl_zentriert : zl_accel; } protected: void doPapiEscape(); /* Damit auch die Erben das drfen. */ void doPapiNavigiere(int); /* ebenso */ /* Das fllt DrawDinge auf, malt aber nicht selbst. Wird auch aufgerufen, um die Breite des Menpunkts zu bestimmen */ virtual void updateDDIntern(); inline DrawDing & neuDraw() { CASSERT(mAnzDraw+1 *const mAuswahlen; int (*mGetAktuell) (); void (*mEintragDoReturn) (int); int mVorlauf; // Wie viele Eintrge hat das Men vor dem "ersten"? int mPfeil1X0, mPfeil1X1, mPfeil2X0, mPfeil2X1; int mAnimation; int mAnimationDX; Str mAnimationWahlAlt; public: MenuEintragAuswahlmenu(BlattMenu * papi, const Str & name, const std::vector *const auswahlen, const std::vector *const infos, int (*getakt) (), void (*doret)(int), const Str & info = Str(), int accel=0); virtual Str getInfo(); virtual void doHyperaktiv(const SDL_keysym &, int); virtual int getMausPos(int x, int y); virtual void zeitSchritt(); virtual void doReturn(bool durchMaus); virtual void doUntermenuSchliessen(); protected: virtual void updateDDIntern(); private: void doPfeil(int d); int schiebAktuell(int d); }; class MenuEintragSpielerModus: public MenuEintrag { void (*mDoWechsel) (); int mModus; int mAnimation; public: MenuEintragSpielerModus(BlattMenu * papi, Str na, void(*dowechs)(), int mo): MenuEintrag(papi,na), mDoWechsel(dowechs), mModus(mo), mAnimation(7) {} virtual void zeitSchritt(); virtual void doReturn(bool durchMaus); protected: virtual void updateDDIntern(); }; class MenuEintragTaste: public MenuEintrag { public: int mSpieler, mTaste; MenuEintragTaste(BlattMenu * papi, Str na, int sp, int ta): MenuEintrag(papi, na, Art_hyper), mSpieler(sp), mTaste(ta) {} virtual Str getInfo(); virtual void doHyperaktiv(const SDL_keysym & taste, int); virtual ZentrierLinie getZentrierLinie() const { return zl_daten; } protected: virtual void updateDDIntern(); }; class MenuEintragAI: public MenuEintrag { int mPfeil1X0, mPfeil1X1, mPfeil2X0, mPfeil2X1; public: MenuEintragAI(BlattMenu * papi, Str na): MenuEintrag(papi, na, Art_aktiv) {} virtual int getMausPos(int x, int y); virtual void doHyperaktiv(const SDL_keysym & taste, int); virtual void doReturn(bool durchMaus); virtual void doPfeil(int d); virtual ZentrierLinie getZentrierLinie() const { return zl_daten; } protected: virtual void updateDDIntern(); }; class MenuEintragSound: public MenuEintrag { bool mBitteWarten; public: MenuEintragSound(BlattMenu * papi, Str na): MenuEintrag(papi, na, Art_aktiv), mBitteWarten(false) {} virtual void doReturn(bool durchMaus); virtual void doHyperaktiv(const SDL_keysym & taste, int); virtual ZentrierLinie getZentrierLinie() const { return zl_daten; } protected: virtual void updateDDIntern(); void setSound(bool neu); }; class MenuEintragLevel: public MenuEintrag { bool mGewonnen; public: MenuEintragLevel(BlattMenu * papi, Str na, bool gewonnen, bool strom); protected: virtual void updateDDIntern(); }; #endif cuyo-2.1.0/src/code.h0000644000175000017500000001475111674440316011302 00000000000000/*************************************************************************** code.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2003,2005,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CODE_H #define CODE_H #include #include #include "stringzeug.h" #include "definition.h" enum CodeArt { undefiniert_code, stapel_code, push_code, mal_code, mal_code_fremd, nop_code, folge_code, buchstabe_code, zahl_code, bedingung_code, /* Die nachfolgenden 8 Codes sind von der Art "bla X= blub". */ set_code, add_code, sub_code, mul_code, div_code, mod_code, bitset_code, bitunset_code, busy_code, bonus_code, message_code, explode_code, weiterleit_code, sound_code, verlier_code, /* Ausdrucks-Codes */ erster_acode, variable_acode = erster_acode, zahl_acode, manchmal_acode, nachbar_acode, intervall_acode, und_acode, oder_acode, not_acode, rnd_acode, add_acode, sub_acode, mul_acode, div_acode, mod_acode, neg_acode, eq_acode, ne_acode, gt_acode, lt_acode, ge_acode, le_acode, ggt_acode, bitand_acode, bitor_acode, bitset_acode = bitor_acode, bitunset_acode, bittest_acode, letzter_acode = bittest_acode }; /** Fr positive b gelten a=divv(a,b)*b+modd(a,b) und 0<=modd(a,b) blub1; yyy> blub2; } */ #define ohne_merk_pfeil 0 // -> #define mit_merk_pfeil 1 // => //#define erster_pfeil 1 //#define zweiter_pfeil 2 class Variable; class Blop; class DefKnoten; class Ort; /** Ein Cual-Code-Baum. Diese Bume werden beim Parsen der ld-Dateien erzeugt und dann erst mal in Knoten abgespeichert. Wenn ein Level geladen wird, werden die entsprechenden Code-Pointer in die Sorten- Objekte gespeichert. Code-Objekte, die eigene interne Variablen brauchen (busy-Flag), reservieren sich schon bei ihrer Erzeugung die Variablen-Nummern. (Normale Variablen-Nummern werden allerdings von VarDefinition reserviert.) */ class Code: public Definition { CodeArt mArt; /** Nr. der Bool-Var fuer Busy-Dinge. */ int mBool1Nr, mBool2Nr; /** Datei, in der dieser Code definiert wurde (fr Fehlermeldungen) */ Str mDateiName; /** Zeilen-Nr, in der dieser Code definiert wurde (fr Fehlermeldungen) */ int mZeilenNr; Code * mF1; Code * mF2; Code * mF3; Variable * mVar1; Variable * mVar2; int mZahl; int mZahl2; int mZahl3; Str mString; Ort * mOrt; public: /* Die ganzen (normalen) Konstruktoren brauchen alle ein paar Standard- Parameter, die ich nicht jedes mal tippen will... */ #define STDPAR DefKnoten * knoten, Str datna, int znr, CodeArt art Code(STDPAR); Code(STDPAR, int zahl, int zahl2 = 0, int zahl3 = 0); Code(STDPAR, Variable * v1); Code(STDPAR, Variable * v1, Variable * v2); Code(STDPAR, Variable * v1, int zahl); Code(STDPAR, Code * f1, Variable * v1); Code(STDPAR, Code * f1, Code * f2 = 0, Code * f3 = 0, int zahl = 0); Code(STDPAR, Code * f1, Code * f2, Variable * v1); Code(STDPAR, Ort * ort, int zahl = 0); Code(STDPAR, Str str); #undef STDPAR Code(DefKnoten * knoten, const Code & f, bool neueBusyNummern); ~Code() { deepLoesch(); } /** Noch provisorisch. Am besten die print-Routinen von Knoten durch toString() ersetzen. */ //void print() const { printf("%s\n", toString().data()); } /*Code & operator= (const Code & f) { deepLoesch(); kopiere(f); return *this; }*/ private: void deepLoesch(); void kopiere(DefKnoten * knoten, const Code & f, bool neueBusyNummern); /** Liefert einen String zurck, der angibt, wo dieser Code definiert wurde (fr Fehlermeldungen) */ Str getDefString() const; public: /** Liefert zurck, wie viele Bilder dieser Code hchstens gleichzeitig malt. Dabei wird (im Moment) der Einfachheit halber davon ausgegangen, dass Ausdrcke nix malen knnen; dementsprechend darf getStapelHoehe() dafr auch nicht aufgerufen werden. nsh wird um die Anzahl der Nachbarstapel-Malungen erhht. */ int getStapelHoehe(int & nsh) const; /** Fuehrt diesen Code aus auf den Variablen von Blop b. In busy wird zurueckgeliefert, ob dieser Code gerade Busy ist */ int eval(Blop & b, bool & busy) const; /* Dito, wenn man an-busieness nicht interessiert ist */ int eval(Blop & b) const; /** Resettet den Busy-Status von diesem Baum. Ist etwas ineffizient: eigentlich braeuchte nicht so ein grosser Teil des Baums abgelaufen zu werden. Vielleicht sollte ein Code wissen, ob es unter ihm nix gibt mit busy-Status. */ void busyReset(Blop & b) const; }; /** Erzeugt einen Code, der prft, ob es die gewnschten Nachbarn gibt (aus "01?"-String). Der "01?"-String kann Lnge 6 oder 8 haben. */ Code * newNachbarCode(DefKnoten * knoten, Str datna, int znr, Str * str); #endif cuyo-2.1.0/src/configdatei.cpp0000644000175000017500000001603412401423721013161 00000000000000/*************************************************************************** configdatei.cpp - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "configdatei.h" #include "cuyointl.h" #define zeilentyp_leer 0 #define zeilentyp_abschnitt 1 #define zeilentyp_zuweisung 2 /* Beste Zahl fuer buffer_size: - So, dass die meisten Zeilen kuerzer sind - Aber nicht unnoetig gross - Und so, dass es sicher irgendwo eine Zeile gibt, die laenger ist, damit man's mitkriegt, wenn der Code buggy ist, der die Zeile in mehreren Stuecken liest */ #define buffer_size 100 /* Liefert eine Zeile zurueck ohne das \n am Ende */ Str readLine(FILE * f) { Str ret; char buf[buffer_size]; bool weiter = true; while (weiter) { /* fgets liest bis Dateiende oder \n */ if (!fgets(buf, buffer_size, f)) break; // eof int nlpos = strlen(buf) - 1; if (buf[nlpos] == '\n') { buf[nlpos] = 0; weiter = false; } ret = ret + buf; } return ret; } #undef buffer_size ConfigDatei::ConfigDatei(const Str & name): mName(name.data()) { mDatei = fopen(name.data(), "r"); setAbschnitt(); } ConfigDatei::~ConfigDatei() { if (mDatei) fclose(mDatei); } /** Liefert den aktuellen Abschnitt */ Str ConfigDatei::getAbschnitt() const { return mAbschnitt; } /** Wechselt zum angegebenen Abschnitt. (Abschnitte werden durch [bla] eingeleitet.) Liefert false, wenn der Abschnitt nicht existiert. */ bool ConfigDatei::setAbschnitt(Str na /*= ""*/) { if (na.isEmpty()) { /* Anfangs-Abschnitt */ mAbschnitt = na; mAbschnittPos = 0; return true; } else { /* Datei berhaupt offen? */ if (!mDatei) return false; /* Abschnitt suchen */ rewind(mDatei); Str z; while (!feof(mDatei)) { z = readLine(mDatei); int a, b; if (getZeilenTyp(z, a, b) == zeilentyp_abschnitt) { if (na == z.mid(a, b - a)) { /* Abschnit gefunden */ mAbschnitt = na; mAbschnittPos = ftell(mDatei); return true; } } } // while Datei nicht zu Ende /* Abschnitt nicht gefunden */ return false; } } /** Liefert zurck, was fr ein Zeilentyp die Zeile ist: leer, abschnitt, zuweisung. In a und b werden interessante Positionen abgespeichert: Bei abschnitt: a = Pos. nach "["; b = Pos von "]" Bei zuweisung: a = Anfangspos; b = Pos nach "=" */ int ConfigDatei::getZeilenTyp(const Str & z, int & a, int & b) const { int p = 0; if (z.isEmpty()) return zeilentyp_leer; /* Leertasten am Anfang weg */ while (z[p] == ' ' || z[p] == '\t') p++; switch (z[p]) { case '#': case 0: /* Leer-Zeile */ return zeilentyp_leer; case '[': /* Abschnitt-Zeile */ a = p + 1; while (z[p] != ']') { if (z[p] == 0) { fehlerZeile(z); return zeilentyp_leer; } p++; } b = p; /* Hier knnte man jetzt noch testen, ob danach auch wirklich nichts mehr kommt... */ return zeilentyp_abschnitt; default: /* Zuweisungs-Zeile */ a = p; while (z[p] != '=') { if (z[p] == 0) { fehlerZeile(z); return zeilentyp_leer; } p++; } b = p + 1; return zeilentyp_zuweisung; } } /** Wenn ein Parse-Fehler in Zeile z aufgetreten ist... */ void ConfigDatei::fehlerZeile(const Str & z) const { print_to_stderr(_sprintf("Parse error in file %s: %s\n", mName.data(), z.data())); } /** Liefert true, wenn der Eintrag existiert; schreibt ihn ggf. nach ret */ bool ConfigDatei::getEintragIntern(const Str & schluessel, Str & ret) const { /* Datei berhaupt offen? */ if (!mDatei) return false; fseek(mDatei, mAbschnittPos, SEEK_SET); while (!feof(mDatei)) { Str z = readLine(mDatei); int a, b, t; t = getZeilenTyp(z, a, b); if (t == zeilentyp_abschnitt) break; if (t == zeilentyp_zuweisung) { /* OK, hier ist eine Zuweisung. Ist es die richtige? */ if (schluessel == z.mid(a, b - 1 - a)) { /* Ja */ ret = z.right(b); return true; } } } return false; } /** Liefert den Eintrag, wenn er existiert, sonst den default-String (der per default "" ist). */ Str ConfigDatei::getEintrag(const Str & schluessel, Str def /* = "" */) const { /* Datei berhaupt offen? */ if (!mDatei) return def; fseek(mDatei, mAbschnittPos, SEEK_SET); while (!feof(mDatei)) { Str z = readLine(mDatei); int a, b, t; t = getZeilenTyp(z, a, b); if (t == zeilentyp_abschnitt) break; if (t == zeilentyp_zuweisung) { /* OK, hier ist eine Zuweisung. Ist es die richtige? */ if (schluessel == z.mid(a, b - 1 - a)) { /* Ja */ return z.right(b); } } } return def; } /** Gibt's den Eintrag? */ bool ConfigDatei::hatEintrag(const Str & schluessel) const { Str muell; return getEintragIntern(schluessel, muell); } /** Liefert den Eintrag als Zahl, wenn er existiert, sonst die default-Zahl. */ int ConfigDatei::getZahlEintrag(const Str & schluessel, int def /*= 0*/) const { Str e; if (getEintragIntern(schluessel, e)) { int ret = def; sscanf(e.data(), "%d", &ret); return ret; } else return def; } // /** Liefert den Eintrag als Farbe, wenn er existiert, // sonst die default-Farbe. */ // Color ConfigDatei::getFarbEintrag(const Str & schluessel, // const Color & def /*= black*/) const { // Str e; // if (getEintragIntern(schluessel, e)) { // int r, g, b; // sscanf(e.nichtNull().data(), "%d,%d,%d", &r, &g, &b); // return Color(r, g, b); // } else // return def; // } /** Liefert einen Eintrag als Komma-getrennte Liste */ int ConfigDatei::getMengenEintrag(const Str & schluessel, std::set & menge) const { Str e; if (!getEintragIntern(schluessel, e)) return 0; /* Menge lschen */ menge.clear(); /* Leere Liste? */ if (e.isEmpty()) return 0; /* Evtl. Schlusskomma anhngen */ if (e[e.length() - 1] != ',') e += ','; /* String zerlegen */ int anz = 0; int p = 0, vp = 0; while (p #include "leveldaten.h" #include "cuyointl.h" #include "fehler.h" #include "pfaditerator.h" #include "datendatei.h" #include "knoten.h" #include "prefsdaten.h" #include "global.h" #include "font.h" #include "aufnahme.h" #include "blop.h" /* Provisorischerweise werden die Punktefeld-Schriften direkt von hier initialisiert */ #include "punktefeld.h" #define toptime_default 50 using namespace std; /***************************************************************************/ SortenArray::SortenArray(): mLaenge(-1) { } /** Sorte auslesen */ Sorte * SortenArray::operator[](int nr) const { return mSorten[nr - blopart_min_sorte]; } /** Länge des Arrays ändern (genauer gesagt: Länge des positiven Teils); * sollte nur aufgerufen werden, wenn das Array leer ist. */ void SortenArray::setLaenge(int l) { CASSERT(mLaenge == -1); CASSERT(l <= max_farben_zahl); mLaenge = l; for (int i = 0; i < mLaenge - blopart_min_sorte; i++) mSorten[i] = NULL; } /** Sorte in das Array einfügen; normalerweise wird die Sorte dann von loeschen() gelöscht; aber nicht, wenn istOriginal = false ist; dann wird davon ausgegangen, dass der Pointer nur eine Kopie ist. */ void SortenArray::neueSorte(int nr, Sorte * s, bool istOriginal /*= true*/) { CASSERT(mLaenge != -1 && nr < mLaenge); nr -= blopart_min_sorte; CASSERT(mSorten[nr] == NULL); mSorten[nr] = s; mOriginale[nr] = istOriginal; } void SortenArray::loeschen() { if (mLaenge == -1) return; for (int i = 0; i < mLaenge - blopart_min_sorte; i++) { if (mOriginale[i]) delete mSorten[i]; mSorten[i] = NULL; } mLaenge = -1; } /***************************************************************************/ /* Globale Variable mit den Level-Daten */ LevelDaten * ld; /** */ LevelDaten::LevelDaten(const Version & version): mLevelCache(), mVersion(version), mLevelGeladen(false), /* Noch keine Sorten geladen */ mAnzFarben(0) /* Uninitialisierte Blops entstehen sehr frueh, und die haben auch schon einen Bildstapel. Und der greift auf mStapelHoehe() zu. */ // mStapelHoehe(0) { for (int teil=0; teilleeren(); /* Jetzt ist auch der richtige Zeitpunkt zum lazy loeschen. */ mLevelConf[ldteil_level]->leeren(); mLevelCache = set(); /* Im weiteren Verlauf wird irgendwann mIntLevelNamen ausgefuellt. Falls da vorher noch Muell drin war, loeschen wir das. */ mIntLevelNamen.clear(); /* Hier findet das parsen statt. */ mSammleLevel = false; conf->laden("summary.ld"); /* Hat der Benutzer noch eine eigene Leveldatei angegeben? Dann wird die jetzt auch noch geladen. */ if (gDateiUebergeben) { /* Weil die Datei noch nicht durch genSummary.pl durch ist, braucht sie vielleicht den Inhalt von globals.ld. Also laden wir alles, was in globals= steht. Im Unterschied zu unten diesmal aber nach ldteil_summary. */ ListenKnoten* global = conf -> getListenEintrag("globals",mVersion,false); if (global) { int l = global->getLaenge(); mSammleLevel = false; for (int i=0; iladen(global->getDatum(i,type_WortDatum)->getWort()); } /* Und wir nehmen die bisher definierten Level aus dem Knoten-Baum wieder raus, damit wir keine doppelt definierten Level bekommen, wenn der Benutzer den Namen eines Levels uebergeben hat, der schon von main.ld included wird. (loeschAlleLevel() laesst den Level Namens "Title" drin...) */ conf->initSquirrel(); conf->getSquirrelPos()->loeschAlleLevel(); /* Gepfuscht: Wir wollen, dass die uebergebene Datei da gesucht wird, wo sie liegt und nicht bei den normalen Leveln o.ae. Wenn wir den default-Pfad loeschen, wird sie zumindest als erstes da gesucht. */ PfadIterator::loescheDefault(); /* Hier findet schon wieder parsen statt. */ mSammleLevel = true; conf->laden(vergissPfad(gLevelDatei)); mAngeordnet = false; } else { ListenKnoten * lena = conf->getListenEintrag("level",mVersion,false); int l = lena->getLaenge(); mIntLevelNamen.resize(l); for (int i = 0; i < l; i++) mIntLevelNamen[i]=lena->getDatum(i,type_WortDatum)->getWort(); mAngeordnet = conf->getBoolEintragMitDefault("ordered", mVersion, true); } /* Jetzt noch alles das laden, was in globals= steht. Das wird aber schon nach ldteil_level geladen. */ { ListenKnoten* global = conf -> getListenEintrag("globals",mVersion,false); if (global) { int l = global->getLaenge(); mSammleLevel = false; for (int i=0; igetDatum(i,type_WortDatum)->getWort(); mLevelConf[ldteil_level]->laden(datei); mLevelCache.insert(datei); } } } mLCGeladen[ldteil_summary] = true; /* OK, Laden war erfolgreich. */ mLCGeladen[ldteil_summary] = true; } } void LevelDaten::ladLevelConfig() { /* Jetzt ist erst mal nix mehr geladen. Erst wenn ladLevelConfig() durchgelaufen ist, ist wieder was da. */ mLCGeladen[ldteil_level] = false; CASSERT(mLCGeladen[ldteil_summary]); { DatenDateiPush ddp(*(mLevelConf[ldteil_summary]), mIntLevelName, mVersion); Str datei = (gDateiUebergeben ? mLevelConf[ldteil_summary]-> getWortEintragMitDefault("filename",mVersion, vergissPfad(gLevelDatei)) : mLevelConf[ldteil_summary]-> getWortEintragOhneDefault("filename",mVersion)); if (mLevelCache.find(datei)==mLevelCache.end()) { /* Sonst braeuchten wir gar nichts zu machen */ mSammleLevel = false; mLevelConf[ldteil_level]->laden(datei); mLevelCache.insert(datei); } } /* OK, Laden war erfolgreich. */ mLCGeladen[ldteil_level] = true; } /** Wird waehrend des Parsens (d. h. innerhalb von ladLevel*() von DefKnoten aufgerufen, wenn ein neuer Level gefunden wurde. Fuegt den Level in die Liste der Level ein. ladLevelSummary() kann sich danach immernoch entscheiden, ob es die Liste wieder loescht und durch die "level=..."-Liste ersetzt. */ void LevelDaten::levelGefunden(Str lna) { if (mSammleLevel) mIntLevelNamen.push_back(lna); } /** Laed ein paar Sorten. Wird mehrfach von ladLevel() aufgerufen. */ void LevelDaten::ladSorten(const Str & ldKeyWort, int blopart) { ListenKnoten * picsnamen; picsnamen = mLevelConf[ldteil_level]-> getListenEintrag(ldKeyWort,mVersion,true); if (picsnamen) { int neueNamen = picsnamen->getLaenge(); int neueFarben = picsnamen->getImpliziteLaenge(); /** Die Nummern der Sorten wurden schon beim parsen in knoten.cpp festgelegt. Hier tun wir unser bestes, die selben Nummern zu bekommen. nr ist die, die zum naechsten logischen Listeneintrag gehoert. */ int nr = mLevelConf[ldteil_level]->getSquirrelPos()-> getSortenAnfang(ldKeyWort); if (nr+neueFarben > max_farben_zahl) throw Fehler(_sprintf("Number of pics exceeds limit %d", max_farben_zahl)); for (int namen_nr = 0; namen_nr < neueNamen; namen_nr++) { mSorten.neueSorte(nr, new Sorte(picsnamen->getKernDatum(namen_nr,type_WortDatum) ->getWort(), mVersion, blopart)); nr++; for (int i = picsnamen->getVielfachheit(namen_nr)-1; i>0; i--) { mSorten.neueSorte(nr, mSorten[nr-1], false); // false = ist nur kopie nr++; } } } } /* Gibt Speicher frei */ void LevelDaten::entladLevel() { mLevelGeladen = false; /* Wir pruefen vor dem Freigeben nicht, mLevelGeladen = true war: vielleicht war aufgrund eines Fehlers irgendwas in einem halbgeladenen Zustand; dann wuerden wir auch gerne allen Speicher freigeben, der grad belegt war */ /* Alle Sorten löschen */ mSorten.loeschen(); mAnzFarben = 0; } /** fuellt alle Daten in diesem Objekt fuer Level nr aus; throwt bei Fehler */ void LevelDaten::ladLevel(int nr) { if (!mLCGeladen[ldteil_summary]) throw Fehler("%s","Sorry, no working level description file available."); /* Ggf. Speicher von altem Level freigeben */ entladLevel(); /* In den obersten Abschnitt der level descr springen. Wir koennten uns woanders befinden, wenn es irgend wann mal einen Fehler gegeben hatte. */ mLevelConf[ldteil_summary]->initSquirrel(); /* Nur fuer den Fall eines fruehen throws... */ mLevelName = ""; /** Fuer bessere Fehlerausgaben. */ Str fehlerpos = ""; mIntLevelName = getIntLevelName(nr); ladLevelConfig(); if (!mLCGeladen[ldteil_level]) throw Fehler("%s","Sorry, no working level description file available."); try { /* In den Abschnitt dieses Levels springen. (Springt automatisch bei } wieder raus. */ DatenDateiPush ddp(*(mLevelConf[ldteil_level]), mIntLevelName, mVersion); DatenDatei * daten = mLevelConf[ldteil_level]; fehlerpos = _sprintf("At position %s (or somewhere below): ", daten->getSquirrelPos()->getDefString().data()); /* DefKnoten des Levels abspeichern. */ mLevelKnoten = daten->getSquirrelPos(); /* Level-Name */ mLevelName = _(daten->getWortEintragOhneDefault("name",mVersion).data()); /* Level-Autor */ mLevelAutor = _(daten-> getWortEintragOhneDefault("author",mVersion).data()); /* Beschreibungstext (optional) */ mBeschreibung = _(daten-> getWortEintragMitDefault("description", mVersion, "").data()); /* Wie viele Steine muessen zusammen, damit sie platzen? (optional, da je Sorte definierbar (muss man dann aber auch tun)) */ mPlatzAnzahlDefault = daten->getZahlEintragMitDefault ("numexplode", mVersion, PlatzAnzahl_undefiniert); mPlatzAnzahlMin = PlatzAnzahl_undefiniert; mPlatzAnzahlMax = PlatzAnzahl_undefiniert; mPlatzAnzahlAndere = false; /* Hintergrundfarbe... (optional; Default: weiss) Achtung: Die Hintergrundfarbe muss gesetzt werden, _bevor_ Bildchen geladen werden, da es als Bonus-Farbe im XPM "Background" gibt... (im Moment nur fuer Explosion sinnvoll) */ mHintergrundFarbe = daten-> getFarbEintragMitDefault("bgcolor", mVersion, Color(255, 255, 255)); /* Hintergrundbilchen (optional) */ mMitHintergrundbildchen = daten->hatEintrag("bgpic"); if (mMitHintergrundbildchen) mHintergrundBild.laden(daten-> getWortEintragOhneDefault("bgpic", mVersion)); /* Schriftfarbe... (optional; Default: dunkelgrau) */ mSchriftFarbe = daten-> getFarbEintragMitDefault("textcolor",mVersion,Color(60, 60, 60)); setSchriftFarbe(mSchriftFarbe); /* Hetzrandfarbe... (optional; Default: hellgrau) */ hetzrandFarbe = daten-> getFarbEintragMitDefault("topcolor", mVersion, Color(200, 200, 200)); /* Hetzrandgeschwindigkeit (optional) */ hetzrandZeit = daten-> getZahlEintragMitDefault("toptime", mVersion, toptime_default); if (hetzrandZeit < 1) throw Fehler("%s","toptime must be positive"); /* Hetzrandbildchen (optional) */ mMitHetzbildchen = daten->hatEintrag("toppic"); if (mMitHetzbildchen) { mHetzBild.laden(daten->getWortEintragOhneDefault("toppic",mVersion)); /* Hetzrandueberlapp (optional) */ mHetzrandUeberlapp = daten-> getZahlEintragMitDefault("topoverlap", mVersion, mHetzBild.getHoehe()); } else mHetzrandUeberlapp = 0; mHetzrandStop = daten->getZahlEintragMitDefault("topstop", mVersion, 0); /* Gras nur bei Kettenreaktion? (optional) */ mGrasBeiKettenreaktion = daten-> getBoolEintragMitDefault("chaingrass", mVersion, false); /* Senkrecht spiegeln? (optional) */ mSpiegeln = daten->getBoolEintragMitDefault("mirror",mVersion,false); /* Neuer fall wird (horizontal) zufaellig plaziert? (optional) */ mFallPosZufaellig = daten-> getBoolEintragMitDefault("randomfallpos", mVersion, false); /* Andere Nachbarschaft? (optional) */ mNachbarschaft = daten-> getZahlEintragMitDefault("neighbours", mVersion, nachbarschaft_normal); if (mNachbarschaft < 0 || mNachbarschaft > nachbarschaft_letzte) throw Fehler("%s","neighbours out of range"); /* Sechseck-Raster? */ mSechseck = mNachbarschaft == nachbarschaft_6 || mNachbarschaft == nachbarschaft_6_schraeg || mNachbarschaft == nachbarschaft_6_3d; mSechseckFlip = daten-> getZahlEintragMitDefault("hexflip", mVersion, 0); if (mSechseckFlip < 0 || mSechseckFlip > 3) throw Fehler("%s", "hexflip out of range"); /* Zufaellige Graue? (optional) */ mZufallsGraue = daten-> getZahlEintragMitDefault("randomgreys", mVersion, zufallsgraue_keine); /* Wo sind welche Grasbildchen am Anfang? */ mAnfangsZeilen = daten->getListenEintrag("startdist",mVersion,false); /***** Noch ein paar einzelne Bilder laden *****/ /* Explosion laden. Das darf erst nach dem Laden der Hintergrundfarbe passieren. */ mExplosionBild.laden(daten-> getWortEintragMitDefault("explosionpic",mVersion, "explosion.xpm")); /* Schriftfarbe der Punkte neu setzen. (Provisorisch) */ Punktefeld::init(); mDistKeyLen = 0; /***** Blops laden *****/ /* Falls waehrend des Ladevorgangs ein Fehler auftritt, muessen alle noch ungeladenen Sorten NULL sein. Eigentlich waere es ja am einfachsten, wenn mAnzFarben immer die bisherige Anzahl der geladenen Sorten angibt. Das geht aber nicht, da ladSorten() die Sorten evtl. nicht der Reihe nach laedt. Das liegt daran, dass die Sortennummern nicht in der Reihenfolge vergeben werden, wie hier ladSorten auf- gerufen wird, sondern in der Reihenfolge, wie's in der ld-Datei steht. */ mAnzFarben = daten->getSquirrelPos()->getSortenAnzahl(); mSorten.setLaenge(mAnzFarben); /* Wie viele Bilder malt ein Blop in einem Schritt hoechstens? Erst mal keine. Die Sorten erhoehen diese Variablen selbst, wenn man sie laedt. */ mStapelHoehe = 0; mNachbarStapelHoehe = 0; ladSorten("pics",blopart_farbe); ladSorten("startpic",blopart_gras); ladSorten("greypic",blopart_grau); /* Leer-Bildchen (optional) */ mMitLeerBildchen = daten->hatEintrag("emptypic"); /* Auch, wenn es kein Leer-Bildchen gibt, soll es geladen werden; dann liefert getEintrag() "" zurueck, und Sorte::laden() weiss, dass es nur alle Werte auf Defaults setzen soll. */ mSorten.neueSorte(blopart_keins, new Sorte(daten-> getWortEintragMitDefault("emptypic", mVersion, ""), mVersion, blopart_keins)); /* Globaler Code (optional) */ mSorten.neueSorte(blopart_global, new Sorte("global", mVersion, blopart_global)); mSorten.neueSorte(blopart_semiglobal, new Sorte("semiglobal", mVersion, blopart_semiglobal)); mSorten.neueSorte(blopart_info, new Sorte("info", mVersion, blopart_info)); // /* Info-Blop (optional) */ // if (daten->hatEintrag("infopic")) { // /* to do....*/ // } else { // int gras_nr = mLevelConf[ldteil_level]->getSquirrelPos()->getSortenAnfang("startpic"); // mSorten.neueSorte(blopart_info, mSorten[gras_nr], false); // kopie vom Gras machen // /* Evtl. verwirrend: Das Gras wurde mit blopart_gras geladen, d.h. die defaults sind auch // * entsprechend... und nicht so, wie man sie für blopart_info erwarten würde */ // } // /* Ok, alle Sorten geladen. Wenn wir noch mNachbarStapelhoehe zu mStapelHoehe addieren, stimmt diese Variable. Ab jetzt duerfen also Blops erzeugt werden (wenn man moechte). */ //print_to_stderr(_sprintf("mStapelHoehe = %d, nsh = %d\n", mStapelHoehe, mNachbarStapelHoehe)); mStapelHoehe += mNachbarStapelHoehe; /* Nachbearbeitungen */ if (mDistKeyLen==0) mDistKeyLen=1; /* Entstehungswahrscheinlichkeiten */ mKeineGrauenW = daten->getZahlEintragMitDefault("nogreyprob", mVersion, 0); if (mKeineGrauenW<0) throw Fehler("%s","nogreyprob must not be negative"); for (int i=0; igetVerteilung(i); } if (mVerteilungSumme[wv_farbe]==0) throw Fehler("At least one %s must be positive.", cVerteilungsNamen[wv_farbe]); if (mVerteilungSumme[wv_grau]+mKeineGrauenW==0) throw Fehler("nogreyprob or at least one %s must be positive.", cVerteilungsNamen[wv_grau]); /* May greys appear? */ mGreysAtAll = ((mZufallsGraue>0) || (mSpielerZahl>1)) && (mVerteilungSumme[wv_grau]>0); /* Musik (optional) */ mMusik = daten->getWortEintragMitDefault("music", mVersion, ""); /***** KI-Player-Bewertungen *****/ mKINHoehe = daten->getZahlEintragMitDefault("aiu_height", mVersion, 10); mKINAnFarbe = daten-> getZahlEintragMitDefault("aiu_color", mVersion, 10 * mAnzFarben); mKINAnGras = daten->getZahlEintragMitDefault("aiu_grass", mVersion, 20); mKINAnGrau = daten->getZahlEintragMitDefault("aiu_grey", mVersion, 10); mKINZweiUeber = daten-> getZahlEintragMitDefault("aiu_two_above", mVersion, mKINAnFarbe / 2); mKINEinfarbigSenkrecht = daten-> getZahlEintragMitDefault("aiu_monochromic_vertical", mVersion, mKINAnFarbe); } catch (Fehler f) { Str fs = fehlerpos; /*if (!mLevelConf[ldteil_level]->getSquirrelPosString().isEmpty()) fs += ", Section " + mLevelConf[ldteil_level]->getSquirrelPosString(); fs += ":\n" + f.getText() + "\n";*/ fs += f.getText() + "\n"; if (!mLevelName.isEmpty()) fs += _sprintf(" (Level \"%s\")\n", mLevelName.data()); throw Fehler(fs); } mLevelGeladen = true; mLevelNummer = nr; } // ladLevel void LevelDaten::erneuerLevel(int nr) { CASSERT(mLevelGeladen); CASSERT(nr == mLevelNummer); setSchriftFarbe(mSchriftFarbe); } /** Sollte am Anfang des Levels aufgerufen werden; kuemmert sich um den Global-Blop */ void LevelDaten::startLevel() const { Blop::gGlobalBlop = Blop(blopart_global); // Damit Code ausgefuehrt werden darf: Blop::gGlobalBlop.setBesitzer(0,ort_absolut(absort_global)); } /** Sollte einmal pro Spielschritt aufgerufen werden (bevor Spielfeld::spielSchritt() aufgerufen wird). Kuemmert sich um den Global-Blop */ void LevelDaten::spielSchritt() const { Blop::gGlobalBlop.animiere(); } /** Hilfsfunktion fuer getLevelAnz und getIntLevelName. Sucht nach dem ersten "." in na. */ int getPunktPos(Str na) { for (int i = 0; i < (int) na.length(); i++) if (na[i] == '.') return i; return -1; } /** Liefert zurueck, wie viele Level es gibt. */ int LevelDaten::getLevelAnz() const { if (!mLevelConf[ldteil_summary]) throw Fehler("%s","Sorry, no working level description file available."); return mIntLevelNamen.size(); } /** Lifert zurück, ob die Level der Reihe nach gespielt werden müssen */ int LevelDaten::getAngeordnet() const { if (!mLevelConf[ldteil_summary]) throw Fehler("%s","Sorry, no working level description file available."); return mAngeordnet; } /** Liefert den internen Namen von Level nr zurueck. */ Str LevelDaten::getIntLevelName(int nr) const { if (nr == level_titel) return Str("Title"); int pos = nr - 1; Str s = mIntLevelNamen[pos]; int pp = getPunktPos(s); if (pp == -1) return s; else return s.left(pp); } /** Liefert den Namen von Level nr zurueck. Liefert "???" bei Fehler. */ Str LevelDaten::getLevelName(int nr) const { try { DatenDateiPush ddp(*(mLevelConf[ldteil_summary]), getIntLevelName(nr), mVersion); return _(mLevelConf[ldteil_summary]-> getWortEintragOhneDefault("name", mVersion).data()); } catch (Fehler f) { // TRANSLATORS: This indicates an unknown value return _("???"); } } /** Liefert die Nummer des Levels mit dem angegebenen internen Namen zurueck, oder 0, wenn der Level nicht existiert. */ int LevelDaten::getLevelNr(Str na) const { /** Alles noch seeehr ineffektiv... */ int anz = getLevelAnz(); for (int i = 1; i <= anz; i++) if (na == getIntLevelName(i)) return i; return 0; } bool LevelDaten::levelAccessible(int l) const { if (gDebug || !getAngeordnet()) return true; for (int i=1; i='0' && c<='9') n+=c-'0'; else if (c>='A' && c<='Z') n+=c-'A'+10; else if (c>='a' && c<='z') n+=c-'a'+36; else if (anfang && c==' ') immernochanfang = true; else throw Fehler("Illegal character \"%c\" in startdist or distkey %s", c,key.data()); anfang = immernochanfang; } if (anfang) throw Fehler("%s","All-spaces startdist entry or distkey is not allowed."); return n; } } const Version & LevelDaten::getVersion() const { return mVersion; } /** Setzt AutoColor::gGame */ void LevelDaten::setSchriftFarbe(Color f) { /* Changing AutoColor::gGame automatically recolors the game font and some other pictures */ AutoColor::gGame = f; } /** Liefert true, wenn die angegebene Spalte vom angegebenen Spieler verschoben ist (wegen Hex-Modus) */ bool LevelDaten::getHexShift(bool rechts, int x) const { if (!ld->mSechseck) return false; else { bool flip = rechts ? (mSechseckFlip & 2) != 0 : (mSechseckFlip & 1) != 0; return (x & 1) != flip; } } cuyo-2.1.0/src/cuyo.cpp0000644000175000017500000010235212411361471011667 00000000000000/*************************************************************************** cuyo.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2008,2010,2011,2014 by the cuyo developers Maintenance modifications 2012 by Bernhard R. Link Maintenance modifications 2012 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* 1 bedeutet, dass manche Signale abgefangen werden, um die Log-Datei abzuspeichern. */ #define signale_fangen 0 #include #include #if signale_fangen #include #endif #include #include "cuyointl.h" #include "sound.h" #include "aufnahme.h" #include "prefsdaten.h" #include "kiplayer.h" #include "spielfeld.h" #include "fehler.h" #include "global.h" #include "sdltools.h" #include "ui.h" #include "ui2cuyo.h" #include "cuyo.h" /* # Zeitschritte, die nach der Zeitbonus-Animation noch gewartet wird */ #define nachbonus_wartezeit 50 namespace Cuyo { /*************************** Private Variablen **************************/ /* (stehen nicht in der .h-Datei) */ /***** Debug-Variablen *****/ /* Es gibt auerdem noch die globale Variable gDebug; */ bool mEinzelschritt; bool mZeitlupe; int mZaehlerZeitlupe; bool mRueberReihenTest; bool mAbspielen; bool mSchnellvorlauf; /** Das Bild, das angezeigt wird, whrend das Spiel auf Pause steht. */ Bilddatei * mPauseBild; /** Die beiden Spielfelder... */ Spielfeld* mSpielfeld[max_spielerzahl]; /** Computer-Spieler. */ KIPlayer * mKI; /***** Zustandsvariablen *****/ /** global-Modus (Spielerbergreifend). */ enum global_modus { gmodus_kein_spiel, gmodus_spiel_start, // wie gmodus_spiel, aber Text muss noch gelscht werden gmodus_spiel, /* die folgenden beiden Modi bedeuten beide, dass das Spiel (der Level) zu Ende geht, aber dass wir noch warten, bis die letzten Animationen fertig abgelaufen sind */ gmodus_warte_verloren, // ... weil ein Spieler tot ist gmodus_warte_gewonnen, // ... weil der Level fertig ist gmodus_bonus_animation, // Zeit-Bonus bekommen... gmodus_bonus_warte, // Nach dem Zeit-Bonus noch ein bisschen warten gmodus_ende_warte // Kurz vor gmodus_kein_spiel: Benutzer darf noch // seine Punkte bewundern. Wenn er eine Taste drueckt, geht's // Zurueck ins Menue. } mGModus; /** True, wenn das Spiel auf Pause steht */ bool mPause; /** true, wenn das Spiel grad nicht weitergehen soll, sondern auf einen Tastendruck gewartet wird. */ bool mWarteAufTaste; /* Wenn > 0, wird hchstens so lange auf Taste gewartet */ int mWarteTimeout; /** Hier wird reingespeichert, welche Version (zuletzt) auf der Kommandozeile stand. Achtung! Das passiert schon vor Cuyo::init(), also vor der Lebenszeit von Cuyo, wenn Cuyo eine htte. */ Version mKommandoZeilenVersion; /** Die Versionen, die ber die Kommandozeile bergeben wurden, und die wir nicht anders verwalten. */ Version mZusatzVersionen; int mSchwierig; int mLevelpack; /** Ein oder zwei Spieler? (Hat auch beim Spielen gegen die KI den Wert 2, und *nicht* spz_ki) */ int mSpielerZahl; /** Falls zwei Spieler: Gegen Computer? */ bool mGegenKI; /** Aktuelle Level-Nummer, wenn ein Spiel luft. Sonst undefiniert. */ int mLevelNr; /** (Interner) Name des aktuellen Levels. Enthlt, wenn grade kein Spiel luft, den Namen vom Level zum weiterspielen. Ist (wenn kein Spiel luft) "", wenn es keinen gibt. */ Str mIntLevelName; int mPunkte[max_spielerzahl]; /** Wird nur whrend der Zeitbonus-Animation gebraucht... */ int mZeitBonus; /*************************** Private Methoden **************************/ /* (stehen nicht in der .h-Datei) */ /** tut alles, was beim Starten eines Levels getan werden muss; liefert false, wenn es den Level gar nicht mehr gibt. Throwt bei Fehler. */ bool startLevel(); /** tut alles, was beim Stoppen eines Levels getan werden muss (ohne Animation, d. h. entweder ist die Animation schon vorbei oder es gibt halt keine). */ void stopLevel(); /** Setzt die Punktzahl fr Spieler sp */ void setPunkte(int sp, int pu); /** Gibt die Fehlermeldung bestehend aus t und fe aus: Sowohl als Text im Cuyo-Fenster (bei anz_sp vielen Spielern) als auch auf stderr. mitLog wird an fe.getText() weitergegeben. (D. h.: soll ggf. die Send-Log-Meldung ausgegeben werden?) */ void printFehler(int anz_sp, Str t, const Fehler & fe, bool mitLog = false); /** Macht einen Schritt der Hetzrand-kommt-am-Ende-runter-Animation. */ void bonusAnimationSchritt(); /** Unterfunktion von zeitSchritt(); Hier passiert die eigentliche Arbeit. */ void zeitSchrittIntern(); /** stoppt das Spiel sofort (egal, ob grad ein Level luft oder nicht) */ void stopSpiel(bool noch_anzeigen = false); /** Die Haupt-Spielschritt-Routine, whrend das Spiel luft. Ruft alle anderen spielschritt()-Routinen auf. */ void spielSchritt(); /** Wird von startLevel() und von spielSchritt() aufgerufen. Lsst smtliche Blops animieren. */ void animiere(); Version berechneVersion(); /* bernimmt die Dinge, die durch version spezifiziert werden. Alles andere bleibt beim alten, bis auf da der alte Wert von mZusatzVersionen verlorengeht. */ void setzeVersion(const Version & version); /** Liefert den Namen und Pfad der Prefs-Datei zurck ($HOME/.cuyo) */ Str getPrefsName(); /** Liefert den Namen und Pfad der Log-Datei zurck ($HOME/cuyo.log) */ Str getLogName(); void signaleAn(); void signaleAus(); /** Startet das Spiel fr die eingestellte Spielerzahl und mit dem angegebenen Level */ void startSpiel(int level) { CASSERT(mGModus == gmodus_kein_spiel); ld->ladLevelSummary(false,berechneVersion()); mLevelNr = level; mIntLevelName = (mLevelNr>ld->getLevelAnz() ? "" : ld->getIntLevelName(level)); PrefsDaten::setLastLevel(mIntLevelName); /* Damit der Level nicht schon beim Start angehalten ist oder schnell luft */ mEinzelschritt = false; mSchnellvorlauf = false; for (int i = 0; i < max_spielerzahl; i++) setPunkte(i, 0); try { if (!startLevel()) throw Fehler("%s","There are no (more?) (working?) levels."); } catch (Fehler f) { print_to_stderr(f.getText()+"\n"); for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->setText(f.getText(), true); /* Sicherheitshalber...: */ stopSpiel(); return; } } /** tut alles, was beim Starten eines Levels getan werden muss; liefert false, wenn es den Level gar nicht mehr gibt. Throwt bei Fehler. */ bool startLevel() { /* So viele Level gibt's doch gar nicht */ if (mLevelNr > ld->getLevelAnz()) return false; /* Der Levelname sollte schon bekannt sein. Wir geben ihn gleich mal im Fenstertitel aus. */ SDLTools::setLevelTitle(ld->getLevelName(mLevelNr)); /* Muss der Level neu geladen werden, oder ist er noch von vorher im Speicher? */ if (!ld->mLevelGeladen || ld->mLevelNummer != mLevelNr) { /* Ok, neu laden. Erst mal alten Level entladen, damit whrend der "loading level"-Anzeige nicht noch falsche Informationen ber den alten Level angezeigt werden. */ ld->entladLevel(); /* Fr "Loading level" */ ld->setSchriftFarbe(Color(80, 80, 80)); /* Level-Daten laden */ for (int i = 0; i < mSpielerZahl; i++) { mSpielfeld[i]->ladeLevelModus(); mSpielfeld[i]->setText(_sprintf(_("Score: %d\n\nLoading Level %d...\n\n"), mPunkte[i], mLevelNr)); } /* "Loading Level" gleich anzeigen. Auerdem den Rand neu malen, da wir die Schriftfarbe gendert haben und das Numexplode vom alten level ungltig ist und so. */ UI::randNeuMalen(); UI::sofortAllesAnzeigen(); /* So, und jetzt den neuen Level laden. (Braucht etwas Zeit) */ ld->ladLevel(mLevelNr); } else ld->erneuerLevel(mLevelNr); //for (int i = 0; i < max_spielerzahl; i++) { // /* Punkte-Anzeige muss geupdatet werden: Zu Level passende Farbe. // (Etwas gepfuscht) */ // setPunkte(i, mPunkte[i]); //} /* Einige Farben haben sich durch das level-laden gendert. Also nach dem Level alles neu malen. Und da die mal-Routine nicht auf die Idee kommt, dass die Rnder um den Level neu an den X-Server geschickt werden mssen, selbst Area::updateAll() aufrufen. */ UI::randNeuMalen(); /* Aufnehmen / Abspielen starten */ Aufnahme::init(mAbspielen, getSpielerModus()); /***** Allen Leuten erzhlen, dass jetzt ein Level anfngt. *****/ /* Fr den Global-Blop... */ ld->startLevel(); /* Hier ist die Stelle, wo wir darauf gucken, wie viele Spieler mitspielen; nur fr so viele Spieler wird das Spiel wirklich gestartet */ for (int i = 0; i < mSpielerZahl; i++) { mSpielfeld[i]->startLevel(); Str PlatzAnzahlFormat; if (ld->mPlatzAnzahlMin == ld->mPlatzAnzahlMax) PlatzAnzahlFormat=_sprintf(ngettext("1 blop explodes", "%d blops explode", ld->mPlatzAnzahlMin), ld->mPlatzAnzahlMin); else if (ld->mPlatzAnzahlAndere) PlatzAnzahlFormat=_sprintf(_("between %d and %d blops explode"), ld->mPlatzAnzahlMin,ld->mPlatzAnzahlMax); else PlatzAnzahlFormat=_sprintf(_("%d or %d blops explode"), ld->mPlatzAnzahlMin,ld->mPlatzAnzahlMax); // TRANSLATORS: The second %s (after "by ") is the level's author's name mSpielfeld[i]->setText(_sprintf(_("Score: %d\n\n" "Level %d\n%s\nby %s\n\n" "%s\n%s\n" "%s\n\n" "Space = Start"), mPunkte[i], mLevelNr, ld->mLevelName.data(), ld->mLevelAutor.data(), PlatzAnzahlFormat.data(), ld->mGrasBeiKettenreaktion ? _("Chain reaction necessary\n") : "", ld->mBeschreibung.data())); } /* Init-Events veschicken */ Blop::sendeGeschedulteEvents(); /* Alle Blops einmal animieren, damit sie wissen, wie sie aussehen. Dabei werden auch die ganzen Init-Events verschickt. */ animiere(); /* Auch die KI mchte wissen, wenn ein neuer Level anfngt. */ if (mGegenKI) mKI->startLevel(); Sound::setMusic(ld->mMusik); mGModus = gmodus_spiel_start; mPause = false; mWarteAufTaste = true; mWarteTimeout = 0; return true; } /** tut alles, was beim Stoppen eines Levels getan werden muss (ohne Animation, d. h. entweder ist die Animation schon vorbei oder es gibt halt keine). */ void stopLevel() { SDLTools::setMainTitle(); for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->stopLevel(); } /** Setzt die Punktzahl fr Spieler sp */ void setPunkte(int sp, int pu){ mPunkte[sp] = pu; UI::setPunkte(sp, pu); } /** stoppt das Spiel sofort (egal, ob grad ein Level luft oder nicht) */ void stopSpiel(bool noch_anzeigen/* = false*/) { /* Evtl. wird stopSpiel() aufgerufen, wenn das Spiel noch gar nicht richtig fertig gestartet wurde; dann wurde mGModus vielleicht noch nicht gesetzt, aber es soll trotzdem was gestoppt werden... */ /*if (mGModus == gmodus_kein_spiel) return;*/ stopLevel(); if (noch_anzeigen) { mGModus = gmodus_ende_warte; mWarteAufTaste = true; } else { mGModus = gmodus_kein_spiel; UI::stopSpiel(); } } /** Die Haupt-Spielschritt-Routine, whrend das Spiel luft. Ruft alle anderen spielschritt()-Routinen auf. */ void spielSchritt() { /* Den Schritt aufnehmen bzw. abspielen. Beim Abspielen werden hier auch ggf. Tastendrcke abgespielt. */ Aufnahme::recSchritt(mSpielfeld); /* Ggf. einen Spielschritt fr die KI */ if (mGegenKI) mKI->spielSchritt(); /*** Die einzelnen Teile eines Spielschritts ausfhren: ***/ /* Who will be the one killing me for this #define? */ /* Answer: The first one to try for (int i=1; i<=10; i++) ALLE_SPIELER->do_stuff(i); */ #define ALLE_SPIELER for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i] /* ggf. Message blinken lassen */ ALLE_SPIELER->blinkeMessage(); /* Hetzrand runterbewegen; evtl. sterben */ ALLE_SPIELER->bewegeHetzrand(); /* Evtl. zufllige Graue an die Spieler senden. (Blops werden nicht erzeugt; es wird nur gespeichert, dass das noch Graue auf das ankommen warten. */ ALLE_SPIELER->zufallsGraue(); ALLE_SPIELER->fallSchritt(); Blop::sendeGeschedulteEvents(); /* Reihen hin/her. */ ALLE_SPIELER->rueberReihenSchritt(); Blop::sendeGeschedulteEvents(); /* Neue Explosionen testen. Da dabei keine Blops manipuliert werden, knnen wir um alles eine groe gleichzeit machen. */ Blop::beginGleichzeitig(); ALLE_SPIELER->testeFlopp(); Blop::endGleichzeitig(); /* Rest vom normalen Spielschritt */ ALLE_SPIELER->spielSchritt(); Blop::sendeGeschedulteEvents(); #undef ALLE_SPIELER /* Animationen und Grafik-Ausgabe */ animiere(); if (mGModus == gmodus_spiel) { /* Nur wenn das Spiel wirklich noch luft (und nicht nur darauf gewartet wird, das wir beenden knnen: Testen, ob wir gewonnen haben */ /* Wurde grade das restliche Gras vernichtet? */ for (int i = 0; i < mSpielerZahl; i++) if (mSpielfeld[i]->getGrasAnz()>0) goto noch_gras_da; /* Dann warten wir jetzt nur noch auf einen guten Moment zum beenden. */ mGModus = gmodus_warte_gewonnen; noch_gras_da:; } else { /* Nur wenn das Spiel kurz davor ist, beendet zu werden: Checken, obs jetzt wirklich beendet werden kann. */ CASSERT(mGModus == gmodus_warte_gewonnen || mGModus == gmodus_warte_verloren); /* Spiel (Level) soll beendet werden; aber sind auch beide Spieler bereit? */ bool bereit = true; for (int i = 0; i < mSpielerZahl; i++) if (!mSpielfeld[i]->bereitZumStoppen()) bereit = false; if (bereit) { /* OK, alle bereit. */ /* Gewonnen oder verloren? */ if (mGModus == gmodus_warte_gewonnen) { Sound::playSample(sample_levelwin,so_global); /* Hier darf noch nicht stopLevel() aufgerufen werden, weil sonst das Spielfeld nicht mehr angezeigt wird */ /* Gewonnen. Level als gewonnen abspeichern. Aber nicht im Debug-Modus. */ if (!gDebug) PrefsDaten::schreibGewonnenenLevel(mSpielerZahl > 1, mIntLevelName); /* Jetzt kommt die Zeitbonus-Animation */ mGModus = gmodus_bonus_animation; /* Noch keine Bonus-Punkte */ mZeitBonus = 0; } else { Sound::playSample(sample_levelloose, so_global); /* Spiel zu Ende weil verloren; true = Spieler darf sich noch seine Punkte anschauen */ stopSpiel(true); for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->setText(_sprintf( _("Game over\n\nScore: %d\n\n"), mPunkte[i])); } } // Ende: if bereit } // Ende: if warten, bis alle fr's Spielende bereit sind } // spielSchritt() /** Macht einen Schritt der Hetzrand-kommt-am-Ende-runter-Animation. */ void bonusAnimationSchritt() { /* Hetzrand runterrutschen lassen */ bool ba_fertig = true; // "= true" nur um eine Warnung zu ersparen mZeitBonus += punkte_fuer_zeitbonus; #define bonusMessage _("Level %s complete!\n\nTime Bonus: %d\nScore: %d\n\n%s") for (int i = 0; i < mSpielerZahl; i++) { /* Neuen Text (mit neuer Punkt-Zahl) schreiben */ mSpielfeld[i]->setText(_sprintf(bonusMessage, ld->mLevelName.data(), mZeitBonus, mPunkte[i], " ")); /* Rand runterrutschen lassen */ ba_fertig = mSpielfeld[i]->bonusSchritt(); /* Punkte bekommen */ setPunkte(i, mPunkte[i] + punkte_fuer_zeitbonus); } /* Unten angekommen? (Sollte bei beiden Spielern gleichzeitig passieren) */ if (ba_fertig) { mGModus = gmodus_bonus_warte; for (int i = 0; i < mSpielerZahl; i++) { mSpielfeld[i]->setText(_sprintf(bonusMessage, ld->mLevelName.data(), mZeitBonus, mPunkte[i], _("Space = Continue"))); } mWarteAufTaste = true; /* Kein Warte-Timeout mehr. Einfach Leertaste drcken */ //mWarteTimeout = nachbonus_wartezeit; } // Ende: if Bonus-Animation fertig #undef bonusMessage } /** Unterfunktion von zeitSchritt(); Hier passiert die eigentliche Arbeit. */ void zeitSchrittIntern() { /* Whrend Pause luft das Spiel nicht weiter */ if (mPause) return; /* Warten wir grad drauf, dass der Benutzer eine Taste drckt? */ if (mWarteAufTaste) { if (mWarteTimeout) { /* Wir warten nicht beliebig lang */ mWarteTimeout--; if (mWarteTimeout) return; /* Zu lange gewartet. Jetzt reicht's! */ mWarteAufTaste = false; } else return; } /* Einzelschritt-Modus. Nach diesem Schritt gleich wieder auf Tastendruck warten. */ if (mEinzelschritt) { mWarteAufTaste = true; } if (mGModus == gmodus_ende_warte) { /* Spieler hat sich seine Punkte (oder was auch immer sont) fertig angeschaut. Jetzt koennen wir zurueck ins Menue */ mGModus = gmodus_kein_spiel; UI::stopSpiel(); return; } if (mGModus == gmodus_bonus_warte) { /* Wir haben grade ein bisschen gewartet, damit der Benutzer seine Level-Endpunkte bewundern kann. Jetzt geht's weiter mit dem nchsten Level... */ /* Alten Level stoppen (ist vermutlich nicht wirklich ntig) */ stopLevel(); /* neuer Level */ mLevelNr++; mIntLevelName = (mLevelNr>ld->getLevelAnz() ? "" : ld->getIntLevelName(mLevelNr)); try { if (!startLevel()) { /* Es gibt gar keine Level mehr; also Spiel beenden */ stopSpiel(true); for (int i = 0; i < mSpielerZahl; i++) { mSpielfeld[i]->setText( _sprintf(mSpielerZahl == 2 && mPunkte[i] > mPunkte[1-i] ? _("***\nYou won even a bit more!!!\n\nScore: %d\n***\n\n") : _("***\nYou won!!!\n\nScore: %d\n***\n\n") , mPunkte[i])); } mLevelNr = 0; // Jetzt kann man nicht mehr Restart last level mIntLevelName = ""; } } catch (Fehler fe) { printFehler(mSpielerZahl, "Could not start level:\n", fe); stopSpiel(); } PrefsDaten::setLastLevel(mIntLevelName); return; } /* Spiel grade erst gestartet? Dann Texte lschen */ if (mGModus == gmodus_spiel_start) { for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->setText(""); mGModus = gmodus_spiel; } CASSERT(mGModus == gmodus_bonus_animation || mGModus == gmodus_spiel || mGModus == gmodus_warte_gewonnen || mGModus == gmodus_warte_verloren); /* Ok, hier kommt der eigentliche Spielschritt... */ if (mGModus == gmodus_bonus_animation) { /* ... Spielschritt Bonusanimation */ bonusAnimationSchritt() ; } else { /* ... normaler Spielschritt */ /* Evtl. Signale abfangen, um die Logdatei abspeichern zu knnen. */ signaleAn(); try { /* Hier findet das eigentliches Spiel statt */ spielSchritt(); } catch (Fehler fe) { signaleAus(); bool log_gespeichert = false; try { Aufnahme::speichern(getLogName()); log_gespeichert = true; } catch (Fehler) {} /* Im Debug-Modus soll das Spielfeld weiter angezeigt werden, wenn ein Fehler whrend des Spiels passiert. */ stopSpiel(gDebug); /* Wenn das Speichern der log-Datei geklappt hat, soll ggf. die "send log to..."-Meldung ausgegeben werden. */ printFehler(mSpielerZahl, "Error during the game:\n", fe, log_gespeichert); return; } signaleAus(); } } /** Wird von startLevel() und von zeitSchritt() aufgerufen. Lsst smtliche Blops animieren. */ void animiere() { Blop::beginGleichzeitig(); /* Alle Grafiken lschen */ Blop::lazyLeereStapel(); /* Erst mal das globale Blop ausfhren. */ ld->spielSchritt(); /* Die eigentliche Animation */ for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->animiere(); Blop::endGleichzeitig(); } /** */ void neuePunkte(bool reSp, int pt){ int sp = (reSp ? 1 : 0); int punkte = mPunkte[sp] + pt; if (punkte<0) punkte=0; setPunkte(sp,punkte); } /** wird aufgerufen, wenn ein Spieler tot ist */ void spielerTot() { mGModus = gmodus_warte_verloren; } /* reSp sendet g Graue an den anderen Spieler */ void sendeGraue(bool reSp, int g) { mSpielfeld[!reSp]->empfangeGraue(g); } /** reSp bittet den anderen Spieler um eine Reihe. Er selbst hat Hhe h. Antwort ist eine der Konstanten bewege_reihe_xxx */ int bitteUmReihe(bool reSp, int h) { return mSpielfeld[!reSp]->bitteUmReihe(h); } /** reSp will einen Stein vom anderen Spieler (rberreihe) */ void willStein(bool reSp, Blop & s) { mSpielfeld[!reSp]->gebStein(s); } /** Liefert den Namen und Pfad der Log-Datei zurck ($HOME/cuyo.log) */ Str getLogName() { char * ho = getenv("HOME"); if (!ho) { /* Unter Windows zum Beispiel... */ print_to_stderr("Warning: Env-Variable $HOME not found. Using the current directory for cuyo.log"); return "cuyo.log"; } if (ho[strlen(ho) - 1] == '/') return Str(ho) + "cuyo.log"; else return Str(ho) + "/cuyo.log"; } /** Gibt die Fehlermeldung bestehend aus t und fe aus: Sowohl als Text im Cuyo-Fenster (bei anz_sp vielen Spielern) als auch auf stderr. mitLog wird an fe.getText() weitergegeben. (D. h.: soll ggf. die Send-Log-Meldung ausgegeben werden?) */ void printFehler(int anz_sp, Str t, const Fehler & fe, bool mitLog /*= false*/) { t += fe.getText(mitLog); print_to_stderr(t+"\n"); for (int i = 0; i < anz_sp; i++) { /* zweites true = Kleine Schrift... */ mSpielfeld[i]->setText(t, true); } } #if signale_fangen void signalHandler(int s) { try { Aufnahme::speichern(getLogName()); /* send_log_string ist in fehler.h definiert. */ print_to_stderr(send_log_string+"\n"); } catch (Fehler) {} /* Braucht man das? Geht das? */ raise(s); } void signaleAn() { /*{ struct sigaction act; act.sa_handler = speicherFehler; act.sa_mask = 0; act.sa_flags = SA_ONESHOT; sigaction(SIGSEGV, &act, 0); }*/ signal(SIGILL, signalHandler); // illegal instruction signal(SIGSEGV, signalHandler); // segmentation fault signal(SIGFPE, signalHandler); // floating point exception } void signaleAus() { signal(SIGILL, SIG_DFL); // illegal instruction signal(SIGSEGV, SIG_DFL); // segmentation fault signal(SIGFPE, SIG_DFL); // floating point exception } #else void signaleAn() { } void signaleAus() { } #endif /********************** public Methoden (fr das Spiel) **********************/ /* (stehen in cuyo.h) */ /** liefert true, wenn das Spiel normal luft, false wenn das Spiel am zuende gehen ist */ bool getSpielLaeuft() { CASSERT(mGModus != gmodus_kein_spiel); return mGModus == gmodus_spiel; } /** liefert true, wenn das Spiel gepaust ist. */ bool getSpielPause() { return mPause; } /** Liefert die Anzahl der Mitspieler zurck. */ int getSpielerZahl() { return mSpielerZahl; } /** Liefert das Pause-Bildchen zurck */ Bilddatei * getPauseBild() { return mPauseBild; } /** Liefert true, wenn debug-Rberreihen-Test aktiv ist */ bool getRueberReihenTest() { return mRueberReihenTest; } /** Liefert ein Spielfeld zurck. */ Spielfeld * getSpielfeld(bool reSp) { return mSpielfeld[reSp]; } /*********************** public Methoden frs ui **************************/ /* (stehen in ui2cuyo.h) */ void init() { mEinzelschritt = false; mZeitlupe = false; mZaehlerZeitlupe = 0; mRueberReihenTest = 0; mAbspielen = 0; mSchnellvorlauf = 0; mPauseBild = 0; mZusatzVersionen = Version(); mSchwierig = PrefsDaten::getDifficulty(); int spielermodus = PrefsDaten::getPlayers(); mGegenKI = spielermodus==spielermodus_computer; mSpielerZahl = (mGegenKI ? 2 : spielermodus); mLevelpack = PrefsDaten::getLevelTrack(); CASSERT(mLevelpack>=0); /* Jetzt gehen auf der Kommandozeile spezifizierte Versionen ein. */ setzeVersion(mKommandoZeilenVersion); /* Hier findet das parsen statt. (Fehler werden im try-catch-Block der main()-Routine ausgegeben.) Das LevelDaten-Objekt weist sich selber der globalen Variable ld zu. */ new LevelDaten(berechneVersion()); for (int i = 0; i < max_spielerzahl; i++) { /* Spielfeld erzeugen */ mSpielfeld[i] = new Spielfeld(i > 0); // (i > 0) = rechter Spieler } /* Pause-Bild laden */ mPauseBild = new Bilddatei(); mPauseBild->laden("pause.xpm"); /* KI-Spieler erzeugen */ mKI = new KIPlayer(mSpielfeld[1]); setSpielerModus(spielermodus); // Sollte erst nach Erzeugen der Mens aufgerufen werden... mIntLevelName = PrefsDaten::getLastLevel(); mLevelNr = ld->getLevelNr(mIntLevelName); mGModus = gmodus_kein_spiel; mWarteAufTaste = false; } void destroy(){ delete ld; delete mKI; } void setPause(bool pause) { mPause = pause; for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->setUpdateAlles(); UI::nachEventAllesAnzeigen(); } /** Ein key-Event halt... (Kmmert sich um alle Tasten, die whrend des Spiels so gedrckt werden...). */ void keyEvent(const SDL_keysym & taste) { if (mPause) { switch (taste.sym) { case SDLK_ESCAPE: stopSpiel(); UI::nachEventAllesAnzeigen(); break; case ' ': case SDLK_RETURN: case SDLK_KP_ENTER: setPause(false); break; default: break; } return; } if (taste.sym == SDLK_ESCAPE) { /* Auf Pause schalten */ setPause(true); return; } if (mWarteAufTaste) { if (taste.sym == ' ' || taste.sym == SDLK_RETURN || taste.sym == SDLK_KP_ENTER) { mWarteAufTaste = false; mWarteTimeout = 0; return; } } else if (mGModus == gmodus_spiel) { int sp, t; if (PrefsDaten::getTaste(taste.sym, sp, t)) { /* Im 1-Spieler-Modus und im KI-Modus alle Tastendrcke an Spieler 1 senden: */ if (mSpielerZahl == 1 || mGegenKI) sp = 0; Aufnahme::recTaste(sp, t); mSpielfeld[sp]->taste(t); return; } } // if spiel luft /* Event noch nicht verarbeitet. Dann vielleicht debug? */ } /** Eine Taste wurde gedrueckt, von der das ui befunden hat, dass es sich um eine debug-Taste handeln koennte. Liefert zurueck, ob die Taste tatschlich erkannt werden konnte. */ bool debugKeyEvent(const SDL_keysym & taste) { char buch = taste.sym; if ((taste.mod & KMOD_SHIFT) && buch >= 'a' && buch <= 'z') buch = buch - 'a' + 'A'; if (buch == 'S') { print_to_stderr("Debug: Save log file\n"); Aufnahme::speichern(getLogName()); return true; } /* Handle other keys only in debug mode. */ if (!gDebug) return false; if (buch == 'b') { for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->empfangeGraue(1); print_to_stderr("Debug: Receive greys\n"); } else if (buch == 'e') { mEinzelschritt = !mEinzelschritt; print_to_stderr(_sprintf("Debug: Single step mode = %d\n", mEinzelschritt)); if (!mEinzelschritt) { /* Nicht noch ein letztes Mal auf Taste warten... */ mWarteAufTaste = false; } } else if (buch == 'f') { if (mGModus==gmodus_spiel) { for (int i=0; iresetFall(); print_to_stderr("Debug: Replace fall\n"); } } else if (buch == 'L') { if (mGModus == gmodus_kein_spiel) { print_to_stderr("Debug: Load log file\n"); Aufnahme::laden(getLogName()); setSpielerModus(Aufnahme::getSpielerModus()); mIntLevelName = Aufnahme::getLevelName(); mLevelNr = ld->getLevelNr(mIntLevelName); if (mLevelNr==0) mIntLevelName=""; PrefsDaten::setLastLevel(mIntLevelName); // TRANSLATORS: The %d is the level number print_to_stderr(_sprintf("Level %s (%d)\nFor replay start level.\n", mIntLevelName.data(), mLevelNr)); mAbspielen = true; } else print_to_stderr("Debug: Do *not* load log file during the game.\n"); } else if (buch == 'l') { mAbspielen = !mAbspielen; print_to_stderr(_sprintf("Debug: Replay log file = %d\n", mAbspielen)); } else if (buch == 'g') { /* Hoffentlich darf man gModus einfach so ndern... */ if (mGModus == gmodus_spiel) { mGModus = gmodus_warte_gewonnen; print_to_stderr("Debug: Win instantly\n"); } } else if (buch == 'h') { print_to_stderr("Debug: Help (all keys to be combined with Alt)\n" " b: Receive greys\n" " e: Single step mode on/off\n" " f: Replace fall\n" " g: Win instantly\n" " h: Help (this one)\n" " L: Load log file\n" " l: Replay log file on/off\n" " r: Reload level\n" " S: Save log file\n" " t: Test of row-exchange on/off\n" " v: Fast forward on/off\n" " z: Slow motion on/off\n"); } else if (buch == 'r') { if (mGModus == gmodus_kein_spiel) { print_to_stderr("Debug: Reload levelconf\n"); try { ld->ladLevelSummary(true,berechneVersion()); } catch (Fehler fe) { printFehler(2, "Could not reload the level description file because of the following error:\n", fe); } } else print_to_stderr("Debug: Do *not* load log file during the game.\n"); } else if (buch == 't') { mRueberReihenTest = !mRueberReihenTest; print_to_stderr(_sprintf("Debug: Test of row-exchange = %d\n", mRueberReihenTest)); } else if (buch == 'v') { mSchnellvorlauf = !mSchnellvorlauf; print_to_stderr(_sprintf("Debug: Fast forward = %d\n", mSchnellvorlauf)); } else if (buch == 'z') { mZeitlupe = !mZeitlupe; print_to_stderr(_sprintf("Debug: Slow motion = %d\n", mZeitlupe)); } else return false; return true; } /* fr xtrace: extern "C" { int XInternAtom(Display *display, char *atom_name, int only_if_exists); } */ /** Die Haupt-Zeitschritt-Routine. Wird direkt vom ui aufgerufen. Ruft alle spielschritt()-Routinen u.. auf. */ void zeitSchritt() { CASSERT(mGModus != gmodus_kein_spiel); /* fr xtrace: XInternAtom(qt_xdisplay(),"zeitschritt A",1); */ /* Zeitlupen-Debug-Modus? */ if (mZeitlupe) { mZaehlerZeitlupe++; if (mZaehlerZeitlupe == 5) mZaehlerZeitlupe = 0; else return; } if (mSchnellvorlauf) { for (int i = 0; i < 3; i++) if (mGModus != gmodus_kein_spiel) zeitSchrittIntern(); } else { zeitSchrittIntern(); } /* Brauche kein UI::allesAnzeigen(); darum kuemmert sich das spiel-Blatt selbst */ } // zeitSchritt() /** Markiert alle Graphik auf upzudaten; danach muss noch malSpielfeld() aufgerufen werden, um das Update wirklich zu machen */ void setUpdateAlles() { for (int i = 0; i < mSpielerZahl; i++) mSpielfeld[i]->setUpdateAlles(); } /** Spielfeld neu malen. Wird vom ui aufgerufen. */ void malSpielfeld(int sp) { mSpielfeld[sp]->malUpdateAlles(); } /** NaechstesFall neu malen. Wird vom ui aufgerufen. */ void malNaechstesFall(int sp) { mSpielfeld[sp]->malUpdateNaechstesFall(); } int getSpielerModus() { if (mGegenKI) return spielermodus_computer; else return mSpielerZahl; } /** Setzt #Spieler, KI-Modus; gemerkte Level-Nummer wird auf 0 zurueckgesetzt. Vorbedingung: Es luft grad kein Spiel. */ void setSpielerModus(int spm) { CASSERT(mGModus==gmodus_kein_spiel); if (spm == spielermodus_computer) { mGegenKI = true; mSpielerZahl = 2; } else { mGegenKI = false; mSpielerZahl = spm; } PrefsDaten::setPlayers(spm); } /** Der int ist der Index in Version::mLevelpack bzw Version::mSchwierig */ void setLevelpack(int i) { mLevelpack = i; PrefsDaten::setLevelTrack(i); } int getLevelpack() {return mLevelpack;} void setSchwierig(int i) { mSchwierig = i; PrefsDaten::setDifficulty(i); } int getSchwierig() {return mSchwierig;} /* Liefert Nr. des zuletzt gespielten Levels (oder 0) */ int getLetzterLevel() { return ld->getLevelNr(mIntLevelName); } Version berechneVersion() { Version ret = mZusatzVersionen; ret.nochEinMerkmal(mSpielerZahl==1 ? "1" : "2"); if (Version::gSchwierig.mMerkmale[mSchwierig] != "") ret.nochEinMerkmal(Version::gSchwierig.mMerkmale[mSchwierig]); ret.nochEinMerkmal(Version::gLevelpack.mMerkmale[mLevelpack]); return ret; } /* bernimmt die Dinge, die durch version spezifiziert werden. Alles andere bleibt beim alten, bis auf da der alte Wert von mZusatzVersionen verlorengeht. */ void setzeVersion(const Version & version) { mZusatzVersionen = version; /* Achtung! Jetzt enthlt mZusatzVersionen erstmal zu viel. Aber der berschu wird gleich rausgelscht. */ try { mSpielerZahl = ( mZusatzVersionen.extractMerkmal(dimaa_numspieler, (mSpielerZahl==1 ? "1" : "2")) == "1" ? 1 : 2); mSchwierig = mZusatzVersionen.extractMerkmal(Version::gSchwierig, mSchwierig); mLevelpack = mZusatzVersionen.extractMerkmal(Version::gLevelpack, mLevelpack); } catch(Str konflikt) {throw Fehler("Conflicting versions: %s", konflikt.data());} } } cuyo-2.1.0/src/kiplayer.h0000644000175000017500000000366112421555414012203 00000000000000/*************************************************************************** kiplayer.h - description ------------------- begin : Wed Jul 25 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef KIPLAYER_H #define KIPLAYER_H /**Wenn man gegen den Computer spielt... *@author Immi */ class Spielfeld; class BlopGitter; class Blop; class KIPlayer { public: KIPlayer(Spielfeld * sp); ~KIPlayer(); /** Teilt der KI mit, dass ein neuer Level anfngt. (Initialisiert alles.) */ void startLevel(); public: /** Einmal pro Spielschritt aufrufen, wenn der Computer auch spielen soll */ void spielSchritt(); protected: Spielfeld * mSp; const BlopGitter * mDaten; bool mZuTun; double mNochWart; int mNochDr; int mNochDx; protected: // Protected methods /** Liefert zurck, wie gut ein Blop der Farbe f in Spalte y wre, um dy nach oben verschoben. */ int bewerteBlop(int x, int dy, int f); /** Liefert zurck, wie gut das Fallende bei x in Richtung r wre. (r = Anzahl der Dreh-Tastendrcke) */ int bewerteZweiBlops(int x, int r); }; #endif cuyo-2.1.0/src/ui2cuyo.h0000644000175000017500000000647412407464013011765 00000000000000/*************************************************************************** ui2cuyo.h - Lists all routines of cuyo which the ui calls. ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef UI2CUYO_H #define UI2CUYO_H #include #include "version.h" #include "stringzeug.h" namespace Cuyo { /* Hier sind die public-Methoden von Cuyo, die das ui aufrufen darf. */ /** "construtor" PrefsDaten::init() must be called first. */ void init(); /** "destructor" */ void destroy(); /** Ein key-Event halt... (Kmmert sich um alle Tasten, die whrend des Spiels so gedrckt werden...). */ void keyEvent(const SDL_keysym & taste); /** Eine Taste wurde gedrueckt, von der das ui befunden hat, dass es sich um eine debug-Taste handeln koennte. Liefert zurueck, ob die Taste tatschlich erkannt werden konnte. */ bool debugKeyEvent(const SDL_keysym & taste); /** Die Haupt-Zeitschritt-Routine. Wird direkt vom ui aufgerufen. Ruft alle spielschritt()-Routinen u.. auf. */ void zeitSchritt(); /** Markiert alle Graphik auf upzudaten; danach muss noch malSpielfeld() aufgerufen werden, um das Update wirklich zu machen */ void setUpdateAlles(); /** Spielfeld neu malen. Wird vom ui aufgerufen. */ void malSpielfeld(int sp); /** NaechstesFall neu malen. Wird vom ui aufgerufen. */ void malNaechstesFall(int sp); /** Startet das Spiel fr die eingestellte Spielerzahl und mit dem angegebenen Level */ void startSpiel(int level); //#define spielermodus_1_spieler 1 //#define spielermodus_2_spieler 2 #define spielermodus_computer 3 int getSpielerZahl(); int getSpielerModus(); /** Setzt #Spieler, KI-Modus; gemerkte Level-Nummer wird auf 0 zurueckgesetzt. Vorbedingung: Es luft grad kein Spiel. */ void setSpielerModus(int spm); Version berechneVersion(); /** Der int ist der Index in Version::mLevelpack bzw Version::mSchwierig */ void setLevelpack(int); int getLevelpack(); void setSchwierig(int); int getSchwierig(); /* Liefert Nr. des zuletzt gespielten Levels (oder 0) */ int getLetzterLevel(); /** Womglich in der falschen Datei: Hier wird reingespeichert, welche Version (zuletzt) auf der Kommandozeile stand. Achtung! Das passiert schon vor Cuyo::init(), also vor der Lebenszeit von Cuyo, wenn Cuyo eine htte. */ extern Version mKommandoZeilenVersion; } #endif cuyo-2.1.0/src/blopgitter.cpp0000644000175000017500000002002012417277724013067 00000000000000/*************************************************************************** blopgitter.cpp - description ------------------- begin : Thu Jul 12 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "fehler.h" #include "blopgitter.h" #include "leveldaten.h" #include "spielfeld.h" /** re: true bei rechtem Spieler */ BlopGitter::BlopGitter(bool re, Spielfeld * spf) : BlopBesitzer(spf) { mSpf = spf; for (int x = 0; x < grx; x++) for (int y = 0; y <= gry; y++) mDaten[x][y].setBesitzer(this, ort_absolut(absort_feld, re, x, y)); /* Bevor das BlopGitter benutzt wird, muss noch init() aufgerufen werden. */ } BlopGitter::~BlopGitter() { } /** Lscht alles (am Level-Anfang) */ void BlopGitter::init() { for (int x = 0; x < grx; x++) { for (int y = 0; y <= gry; y++) mDaten[x][y] = Blop(blopart_keins); mHexExtra[x].erzeugeBildstapel(); } mRueberReihe = false; //mTestPlatz = false; } /** Liefert true, wenn was am platzen ist */ bool BlopGitter::getWasAmPlatzen() const { for (int x = 0; x < grx; x++) for (int y = 0; y < getGrY(); y++) if (mDaten[x][y].getAmPlatzen()) return true; return false; } /** Sendet allen Blops init-Events. Innerhalb einer Gleichzeit aufrufen. */ // void BlopGitter::initEvents() { // for (int x = 0; x < grx; x++) // for (int y = 0; y < getGrY(); y++) // mDaten[x][y].execEvent(event_init); // } /** Animiert alle Blops. Innerhalb einer Gleichzeit aufrufen. */ void BlopGitter::animiere() { //CASSERT(Blop::gGleichZeit); //mNeuePunkte = 0; for (int x = 0; x < grx; x++) for (int y = 0; y < getGrY(); y++) mDaten[x][y].animiere(); } /** Liefert ein Feldinhalt zurck */ const Blop & BlopGitter::getFeld(int x, int y) const { CASSERT(koordMalOK(x, y)); if (y >= getGrY()) return mHexExtra[x]; else return mDaten[x][y]; } /** Liefert ein Feldinhalt zurck */ Blop & BlopGitter::getFeld(int x, int y) { CASSERT(koordMalOK(x, y)); if (y >= getGrY()) return mHexExtra[x]; else return mDaten[x][y]; } /** liefert true, wenn der Blob bei x, y sich mit b verbinden kann. */ bool BlopGitter::getFeldVerbindbar(int x, int y, const Blop & b) const { if (!koordOK(x, y)) { /* Auerhalb vom Rand genau dann verbinden, wenn die Sorte das Special hat */ bool ret = true; if (x < 0) ret &= b.verbindetMitRand(rand_links); if (x >= grx) ret &= b.verbindetMitRand(rand_rechts); if (y < 0) ret &= b.verbindetMitRand(rand_oben); if (y >= getGrY()) ret &= b.verbindetMitRand(rand_unten); return ret; } else return b.verbindetMit(mDaten[x][y]); return false; // Um keine Warnung zu bekommen } /* void BlopGitter::verschiebBlop(int x1, int y1, int x2, int y2, bool hinterlasseLeer) { mDaten[x2][y2] = mDaten[x1][y1]; mDaten[x1][y1] = Blop(blopart_keins); } */ /** liefert die Feldart bei x, y; (d. h. grau oder gras oder leer oder normaler Stein oder auerhalb vom Spielfeld). */ int BlopGitter::getFeldArt(int x, int y) const { if (x < 0 || x >= grx || y >= getGrY()) return blopart_ausserhalb; else if (y < 0) return blopart_keins; else return mDaten[x][y].getArt(); } /** Testet das Verhalten des Blobs bei x,y. Liefert false, wenn es den Blob gar nicht gibt. */ bool BlopGitter::getFeldVerhalten(int x, int y, int verhalten) const { if (x < 0 || x >= grx || y < 0 || y >= getGrY()) return false; else return mDaten[x][y].getVerhalten(verhalten); } /** liefert eine VerbindungsBitliste fr den Blop bei x, y. */ int BlopGitter::getBesitzVerbindungen(int x, int y) const { int verb = 0; const Blop & b = mDaten[x][y]; /* Sonderflle bei Sechseck-Muster: os = obenschrg; 1, wenn die Verbinung nach lo / ro wirklich schrg ist...*/ int os = !ld->mSechseck | mSpf->getHexShift(x); /* Dito fr unten */ int us = !ld->mSechseck | !mSpf->getHexShift(x); /* Bei Sechtsecken keine waag. Verbindung */ if (!ld->mSechseck) { if (getFeldVerbindbar(x - 1, y, b)) verb += verbindung_links; if (getFeldVerbindbar(x + 1, y, b)) verb += verbindung_rechts; } if (getFeldVerbindbar(x, y - 1, b)) verb += verbindung_oben; if (getFeldVerbindbar(x, y + 1, b)) verb += verbindung_unten; if (getFeldVerbindbar(x - 1, y - os, b)) verb += verbindung_lo; if (getFeldVerbindbar(x - 1, y + us, b)) verb += verbindung_lu; if (getFeldVerbindbar(x + 1, y - os, b)) verb += verbindung_ro; if (getFeldVerbindbar(x + 1, y + us, b)) verb += verbindung_ru; /* Bits an Spiegelung anpassen */ if (ld->mSpiegeln) { #define TAUSCH_BITS(b1, b2) if ((verb & (b1+b2)) != 0 && (verb & (b1+b2)) != b1+b2) verb ^= b1+b2; TAUSCH_BITS(verbindung_oben, verbindung_unten); TAUSCH_BITS(verbindung_lo, verbindung_lu); TAUSCH_BITS(verbindung_ro, verbindung_ru); #undef TAUSCH_BITS } return verb; } /** liefert true, wenn (x,y) im Spielfeld liegt */ bool BlopGitter::koordOK(int x, int y) const { return x >= 0 && x < grx && y >= 0 && y < getGrY(); } /** liefert true, wenn an die Stelle (x,y) gemalt werden * kann: entweder, es liegt im Spielfeld, oder es ist * einer der Hexmodus-Rand-Blops. * Im Moment testen wir gar nicht, ob wir im Hexmodus * sind (und wenn ja, in einer geeigneten Spalte). Das * heit, dass ein bisschen Zeit verschwendet wird, wenn * Cual-Code an eine der gar nicht sichtbaren Stellen * malt. */ bool BlopGitter::koordMalOK(int x, int y) const { return x >= 0 && x < grx && y >= 0 && y < getGrY() + 1; } /** Setzt, ob die Rberreihe existiert. */ void BlopGitter::setRueberReihe(bool ex){ mRueberReihe = ex; //mTestPlatz = true; /* ... Ist fast sicher unntig, weil beim Reihe rbergeben sowieso genug passiert, was mTestPlatz auf true setzt */ } /** Liefert die Anzahl der Zeilen zurck, d. h. normalerweise gry; aber wenn die Rbergebreihe existiert, dann eins mehr. */ int BlopGitter::getGrY() const{ return mRueberReihe ? gry + 1 : gry; } /** Liefert true, wenn man mal wieder testen sollte, ob was platzt. Achtung: Das Flag wird bei diesem Aufruf gleich gelscht. */ /* bool BlopGitter::getTestPlatz(){ bool r = mTestPlatz; mTestPlatz = false; return r; }*/ bool BlopGitter::testPlatzSpalte(int x, int y){ if (!koordOK(x, y)) return false; /* Das Fall mchte nicht in die Rberreihe fallen. */ if (y == gry) return false; bool schon_bewegt=false; while (y >= 0) { if (mDaten[x][y].getArt() != blopart_keins) return schon_bewegt && mDaten[x][y].getVerhalten(schwebt); y--; schon_bewegt=true; } return true; } /** Sendet an alle Blops das connect-Event. */ void BlopGitter::sendeConnectEvent() { for (int x = 0; x < grx; x++) for (int y = 0; y < gry; y++) mDaten[x][y].execEvent(event_connect); } int BlopGitter::getSpezConst(int vnr, const Blop * wer) const { const ort_absolut & ort = wer->getOrt(); switch (vnr) { case spezconst_loc_x: return ort.x; case spezconst_loc_y: return ort.y; case spezconst_loc_xx: case spezconst_loc_yy: int xx,yy; mSpf->getFeldKoord(ort.x,ort.y,xx,yy); return (vnr==spezconst_loc_xx ? xx : yy); } /* Wir wissen von nix; Blop::getSpezConst() soll den Default-Wert zurckliefern. */ return spezconst_defaultwert; } cuyo-2.1.0/src/variable.h0000644000175000017500000000565411674440321012153 00000000000000/*************************************************************************** variable.h - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2005,2006,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef VARIABLE_H #define VARIABLE_H struct ort_absolut; class Blop; class Ort; class VarDefinition; class Str; /* Rckgabewert fr getOrt(). variable_global, variable_lokal und variable_fall werden auerdem verwendet: - beim Constructor (Variable("bla", variable_global)) - in mDX */ #define variable_global 0x8000 #define variable_relativ 0x8001 #define variable_lokal 0x8002 #define variable_fall 0x8003 /** (Auftreten einer) Variable in einer Prozedur. Wenn mDeklaration sagt, dass es sich um eine (richtige echte) Konstante handelt, existiert die Variable nur so lange, bis in vparse.yy ein Ausdruck draus gemacht wird. Dabei wird es dann durch den Wert ersetzt. */ class Variable { /** Datei, in der diese Variablenverwendung steht (fr Fehlermeldungen) */ //Str mDateiName; /** Zeilen-Nr, in der diese Variablenverwendung steht (fr Fehlermeldungen) */ //int mZeilenNr; /* ... wird nicht mehr gebraucht. Diese Info wird vom darberliegenden Code an die Fehlermeldung gehngt. */ VarDefinition * mDeklaration; /** Relative Koordinaten, so wie sie der cual-Programmierer eingegeben hat. */ Ort * mOrt; public: /** Erzeugt eine Mll-Variable. Wird verwendet, wenn es einen Fehler gab (blicherweise Variable nicht definiert). Die Mll-Variable versucht, Folgefehler zu vermeiden, so dass wenigstens noch fertig geparst werden kann. */ Variable(); Variable(//Str datna, int znr, VarDefinition * d, Ort * ort); ~Variable(); Str toString() const; bool Ort_hier() const; ort_absolut getOrt(ort_absolut vonhieraus, Blop & fuer_code) const; int getNummer() const; bool istKonstante() const; /** Liefert den Default-Wert, wenn's eine Variable ist und den Wert, wenn's eine Konstante ist. */ int getDefaultWert() const; Str getName() const; }; #endif cuyo-2.1.0/src/menueintrag.cpp0000644000175000017500000006741412400104764013235 00000000000000/*************************************************************************** menueintrag.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "sdltools.h" #include "font.h" #include "cuyointl.h" #include "fehler.h" #include "global.h" #include "prefsdaten.h" #include "layout.h" #include "menueintrag.h" #include "ui2cuyo.h" #include "ui.h" #include "sound.h" #define HOT_ALIGN 1 #define hotkey_keins (-1) #define hotkey_rahmen (-2) // Rahmen um alles falls subBereich == subbereich_hyperaktiv /*****************************************************************************/ DrawDing::DrawDing(const Str & text, int hotkey, int binSubBereich, /* Subbereich, zu dem dieses Drawding gehrt */ int x, int y, int align /*= AlignHCenter*/, /* Akzeptiert nur waagerechtes Zeug, senkrecht ist immer zentriert. */ Font * font, /*= NULL*/ /* Default hngt von aktSubBereich ab */ int * xmin /*= NULL*/, int * xmax /*= NULL*/ /* Wenn die !=0 sind, wird dort schon mal unsere Ausdehung reingeschrieben. */) : mArt(dda_Text), mText(text), mHotkey(hotkey == hotkey_rahmen ? hotkey_keins : hotkey), mFont(font), //mDx(hotkey==hotkey_rahmen ? L_menu_rand_lr : 0), mRahmen(hotkey==hotkey_rahmen), mBinSubBereich(binSubBereich), mAbschneiden(false) { /* Irgend eine Schrift brauchen wir, um die Breite zu messen: */ if (!font) font = Font::gMenu; int fh = font->getFontHeight(); mY0 = y - fh / 2 - L_menu_rand_ou; mY1 = mY0 + fh + 2 * L_menu_rand_ou; int w = font->getLineWidth(mText.data()) + 2*L_menu_rand_lr; switch (align) { case AlignLeft: mX0=x; mX1=x+w; break; case AlignRight: mX0=x-w; mX1=x; break; case AlignHCenter: mX0=x-(w+1)/2; mX1=x+w/2; break; default: throw iFehler("%s","Invalid alignment"); } #if HOT_ALIGN if (hotkey >= 0) { int w2 = font->getLineWidth(mText.left(hotkey).data()); w2 += font->getLineWidth(mText.mid(hotkey, 1).data()) / 2; mX0 = x - w2; mX1 = mX0 + w; } #endif mXPos = mX0 + L_menu_rand_lr; if (xmin) *xmin=mX0; if (xmax) *xmax=mX1; } DrawDing::DrawDing(int bild, int bildchen, int x, int y) : mArt(dda_Icon), mBild(bild), mBildchen(bildchen), mBinSubBereich(subbereich_default), mX0(x-gric/2), mX1(x+gric/2), mY0(y-gric/2), mY1(y+gric/2), mXPos(mX0), mAbschneiden(false) {} /* Wenn man nicht mchte, dass das Bild zur Gre des Hintergrundrahmens beitrgt, wre es vielleicht inzwischen sauberer, binsubbereich auf subbereich_keiner zu setzen (und in anzeigen() einbauen, dass das erlaubt ist) */ /* Folgende Funktion geht grad nicht: */ // DrawDing::DrawDing(int bild, int xbd, int ybd, int x, int y) : // mArt(dda_Bild), // mBild(bild), mRect(SDLTools::rect(xbd,ybd,2*gric,2*gric)), // mBinSubBereich(subbereich_default), // mX0(x), mX1(x), mY0(y),mY1(y), mXPos(mX0-gric), // mAbschneiden(false) {} DrawDing::DrawDing(int bild, int x, int y) : mArt(dda_Bild), mBild(bild), mBinSubBereich(subbereich_default), mX0(x), mX1(x), mY0(y), mY1(y), mAbschneiden(false) {} void DrawDing::abschneiden(int x0, int x1) { mX0 = x0; mX1 = x1; mAbschneiden = true; } void DrawDing::anzeigen(int subBereich, int x, int y) const { if (mAbschneiden) Area::setClip(SDLTools::rect(x + mX0, 0, mX1 - mX0, L_fenster_hoehe)); switch (mArt) { case dda_Nichts: CASSERT(false); break; case dda_Text: { int xh=0; Str hotkey=""; bool bright = subBereich == subbereich_hyperaktiv || subBereich == mBinSubBereich; Font * font = mFont; if (subBereich == subbereich_keinStrom) font = Font::gDimmed; if (!font) font = bright ? Font::gBright : Font::gMenu; if (mRahmen && subBereich == subbereich_hyperaktiv) { Color colour = Color(130,130,220); Area::fillRect(x+mX0,y+mY0, mX1-mX0, 2, colour); Area::fillRect(x+mX0,y+mY1-2, mX1-mX0, 2, colour); Area::fillRect(x+mX0,y+mY0, 2, mY1-mY0, colour); Area::fillRect(x+mX1-2,y+mY0, 2, mY1-mY0, colour); } int hot = mHotkey; if (bright) hot = hotkey_keins; if (hot>=0) { xh = mXPos + font->getLineWidth(mText.left(mHotkey).data()); hotkey = mText.mid(mHotkey,1); if (subBereich != subbereich_keinStrom) { /* Einen Highlightkreis um den Hotkey malen */ int x_ = x + xh+font->getLineWidth(hotkey.data())/2; int y_ = y + (mY0+mY1)/2; Bilddatei & bild = *Blatt::gBlattPics[blattpic_highlight]; bild.malBildchen(x_-gric,y_-gric,0); bild.malBildchen(x_,y_-gric,2); bild.malBildchen(x_-gric,y_,6); bild.malBildchen(x_,y_,8); } } font->drawText(mText, x + mXPos, y + mY0 + L_menu_rand_ou,AlignTopLeft); if (hot>=0) { (subBereich == subbereich_keinStrom ? Font::gBrightDimmed : Font::gBright)-> drawText(hotkey, x + xh, y + mY0 + L_menu_rand_ou, AlignTopLeft); } } break; case dda_Icon: Blatt::gBlattPics[mBild]->malBildchen(x+mXPos,y+mY0,mBildchen); break; case dda_Bild: { Bilddatei & bi = *Blatt::gBlattPics[mBild]; bi.malBild(x+mX0-bi.getBreite() / 2,y+mY0 - bi.getHoehe() / 2); break; } } if (mAbschneiden) Area::noClip(); } /*****************************************************************************/ MenuEintrag::MenuEintrag(BlattMenu * papi, Str na /*= ""*/, void(*doret)() /*= 0*/, int accel /*= 0*/, int hoehe /*= L_menueintrag_defaulthoehe*/): mHoehe(hoehe), mPapi(papi), mName(na), mAccel(accel), mAccIndex(hotkey_keins), mDoReturn(doret), mGetStrom(NULL), mArt(Art_normal), mX0(-11111), mUpdaten(false), mSubBereich(subbereich_nichtInitialisiert) { /* Hotkey suchen */ if (mAccel==0) { for (int i=0; i='a' && mAccel<='z') mAccel += 'A' - 'a'; } } } MenuEintrag::MenuEintrag(BlattMenu * papi, Str na, Art ea, int hoehe /*= L_menueeintrag_defaulthoehe*/): mHoehe(hoehe), mPapi(papi), mName(na), mAccel(0), mAccIndex(hotkey_keins), mDoReturn(NULL), mGetStrom(NULL), mArt(ea), mX0(-11111), mUpdaten(false), mSubBereich(subbereich_nichtInitialisiert) {} bool nieStrom() {return false;} void MenuEintrag::setNieStrom() { setGetStrom(nieStrom); } void MenuEintrag::setSubBereich(int subBereich) { int alt_sb = mSubBereich; mSubBereich = subBereich; if (!getStrom()) mSubBereich = subbereich_keinStrom; if (mSubBereich != alt_sb) updateDrawDinge(); } /* Aufrufen, wenn sich mglicherweise der Stromstatus gendert hat */ void MenuEintrag::updateStrom() { bool neustrom = getStrom(); if (neustrom != (mSubBereich != subbereich_keinStrom)) setSubBereich(neustrom ? subbereich_keiner : subbereich_keinStrom); } void MenuEintrag::updateDrawDinge() { CASSERT(mSubBereich != subbereich_nichtInitialisiert); mAnzDraw = 0; updateDDIntern(); mX0 = L_fenster_breite_menus; mX1 = -L_fenster_breite_menus; for (int i=0; imX1) mX1=mDraw[i].mX1; } setUpdateFlag(); UI::nachEventAllesAnzeigen(); } void MenuEintrag::deactivateAccel() { mAccel=0; mAccIndex=hotkey_keins; } void MenuEintrag::anzeigen(int x, int y, bool graue) { /* Unschn, knnte irgendwann mal ein Bug werden, tut aber im Moment: Eigentlich msste ein MenEintrag informiert werden, wenn es sich ndert, ob die Grauen neben ihm sitzen oder nicht, damit er ein Graphik-Update machen kann (mit setUpdateFlag()). Im Moment werden die grauen aber immer nur dann verschoben, wenn auch was anderes am Eintrag verndert wird, so dass die erforderlichen Graphik-Updates sowieso geschehen */ CASSERT(mSubBereich != subbereich_nichtInitialisiert); if (!mUpdaten) return; mUpdaten = false; //print_to_stderr(_sprintf("%s\n", mName.data())); if (mAnzDraw == 0) return; /* Normaler Hintergrund */ Area::fillRect(0, y, L_fenster_breite_menus, mHoehe, Color(30, 30, 70)); Area::updateRect(0, y, L_fenster_breite_menus, mHoehe); /* Position von Highlight-Hintergrund und Grauen bestimmen */ int hx0 = L_fenster_breite_menus, hx1 = 0; /* Hintergrund */ int hy0 = L_fenster_hoehe, hy1 = 0; int gx0 = L_fenster_breite_menus, gx1 = 0; /* Graue */ for (int i=0; igx1) gx1=mDraw[i].mX1; if (mDraw[i].mBinSubBereich == mSubBereich || mSubBereich == subbereich_hyperaktiv) { if (x+mDraw[i].mX0hx1) hx1=x+mDraw[i].mX1; if (y+mDraw[i].mY0hy1) hy1=y+mDraw[i].mY1; } } /* Hintergrund malen */ if (hx1 > 0) { Bilddatei & bild = *Blatt::gBlattPics[blattpic_highlight]; int w = hx1-hx0; int h = hy1-hy0; int w1,w2,w3, h1,h2,h3; if (w>=2*L_menueintrag_highlight_rad) { w1 = L_menueintrag_highlight_rad; w2 = w-2*L_menueintrag_highlight_rad; w3 = L_menueintrag_highlight_rad; } else { w1 = w/2; w2 = 0; w3 = w-w1; } if (h>=2*L_menueintrag_highlight_rad) { h1 = L_menueintrag_highlight_rad; h2 = h-2*L_menueintrag_highlight_rad; h3 = L_menueintrag_highlight_rad; } else { h1 = h/2; h2 = 0; h3 = h-h1; } // Ecken bild.malBildAusschnitt(hx0,hy0,SDLTools::rect(gric-w1,gric-h1,w1,h1)); bild.malBildAusschnitt(hx1-w3,hy0,SDLTools::rect(2*gric,gric-h1,w3,h1)); bild.malBildAusschnitt(hx0,hy1-h3,SDLTools::rect(gric-w1,2*gric,w1,h3)); bild.malBildAusschnitt(hx1-w3,hy1-h3,SDLTools::rect(2*gric,2*gric,w3,h3)); // Waagerechte Kanten bild.malStreifenH(hx0+w1, hy0, w2, SDLTools::rect(gric,gric-h1,gric,h1)); bild.malStreifenH(hx0+w1, hy1-h3, w2, SDLTools::rect(gric,2*gric,gric,h3)); // Senkrechte Kanten bild.malStreifenV(hx0, hy0+h1, h2, SDLTools::rect(gric-w1,gric,w1,gric)); bild.malStreifenV(hx1-w3, hy0+h1, h2, SDLTools::rect(2*gric,gric,w3,gric)); // Flche if (w2>0 && h2>0) Area::fillRect(hx0+w1, hy0+h1, w2, h2, Color(50, 50, 120)); /* Wenn diese Farbe gendert wird, mu das auch in some_pic_sources/highlight.pov geschehen. */ } /* Eigentliches Zeug malen */ for (int i=0; imalBildchen(x+gx0-L_grausep-gric, y+mHoehe/2-gric/2, 0); Blatt::gBlattPics[blattpic_pfeile]->malBildchen(x+gx1+L_grausep, y+mHoehe/2-gric/2, 1); } } void MenuEintrag::doReturn(bool) { if (mDoReturn) { Sound::playSample(sample_menuclick,so_fenster); mDoReturn(); } } bool MenuEintrag::getStrom() const { if (mGetStrom) return mGetStrom(); else return true; } int MenuEintrag::getMausPos(int x, int /*y*/) { CASSERT(mSubBereich != subbereich_nichtInitialisiert); return x >= mX0 && x < mX1 ? subbereich_default : subbereich_keiner; } bool MenuEintrag::getWaehlbar() const { return mArt != Art_deko && getStrom(); } bool MenuEintrag::getAktiv() const { return mArt==Art_aktiv || mArt==Art_hyperakt; } bool MenuEintrag::getHyper() const { return mArt==Art_hyper || mArt==Art_hyperakt; } void MenuEintrag::doPapiEscape() { mPapi->doEscape(); } void MenuEintrag::doPapiNavigiere(int d) { mPapi->navigiere(d); } void MenuEintrag::updateDDIntern() { neuDraw() = DrawDing(mName, mAccIndex, subbereich_default, 0, mHoehe / 2, AlignHCenter, mArt == Art_deko ? Font::gTitle : NULL); } /*****************************************************************************/ MenuEintragBild::MenuEintragBild(BlattMenu * papi, int nr): MenuEintrag(papi, "", MenuEintrag::Art_deko, Blatt::gBlattPics[nr]->getHoehe()), mBildNr(nr) { } void MenuEintragBild::updateDDIntern() { neuDraw() = DrawDing(mBildNr, 0, mHoehe / 2); } /*****************************************************************************/ MenuEintragEscape::MenuEintragEscape(BlattMenu * papi) : // TRANSLATORS: "Done" is a menu entry for quitting a submenu. MenuEintrag(papi,_("Done"),NULL,SDLK_ESCAPE) { } void MenuEintragEscape::doReturn(bool) { /* Sound wird gespielt, wenn das Men sich zumacht. */ doPapiEscape(); } /*****************************************************************************/ MenuEintragSubmenu::MenuEintragSubmenu(BlattMenu * papi, const Str & name, BlattMenu * menu, int accel /*=0*/, int hoehe /*= L_menueintrag_defaulthoehe*/) : MenuEintrag(papi,name,NULL,accel,hoehe), mSub(menu) { } MenuEintragSubmenu::~MenuEintragSubmenu() { delete mSub; } void MenuEintragSubmenu::doReturn(bool durchMaus) { Sound::playSample(sample_menuclick,so_fenster); mSub->oeffnen(durchMaus); } /*****************************************************************************/ MenuEintragAuswahl::MenuEintragAuswahl(BlattMenu * papi, const Str & na, const Str & info, void(*doretint)(int), int arg, int accel /*=0*/) : MenuEintrag(papi,na,NULL,accel), mArg(arg), mInfo(info), mDoReturnInt(doretint) { } void MenuEintragAuswahl::doReturn(bool) { /* Sound nicht abspielen; das tut schon doPapiEscape() */ //Sound::playSample(sample_menuclick,so_fenster); /* Vorsicht: Im Moment *muss* das folgende in dieser Reihenfolge passieren wegen des levelpack-menus: Bei doPapiEscape() wird die Graphik des Levelpack-Meneintrags geupdatet. Der neue Levelpack muss davor schon ausgewhlt worden sein. */ mDoReturnInt(mArg); doPapiEscape(); } /*****************************************************************************/ BlattMenu * auswahlmenu(MenuEintragSubmenu * obereintrag, BlattMenu * obermenu, const std::vector & moeglichkeiten, const std::vector & infos, void (*doret)(int), const Str & titel, Str info, int & vorlauf) { BlattMenu * ret = new BlattMenu(true); // true = scrollleiste immer da... und esc-button ret->setObermenu(obermenu); ret->setObereintrag(obereintrag); if (titel=="") vorlauf = 0; else { /* Erstmal alle '~' rauslschen */ Str titel_ = titel; for (int i=0; ineuerEintrag(new MenuEintrag(ret, titel_, MenuEintrag::Art_deko)); ret->neuerEintrag(new MenuEintrag(ret, "", MenuEintrag::Art_deko, L_medskip)); vorlauf = 2; } for (size_t i=0; ineuerEintrag(new MenuEintragAuswahl(ret, moeglichkeiten[i], ineuerEintrag(new MenuEintrag(ret, "", MenuEintrag::Art_deko, L_medskip)); while (info!=Str()) { // Zeilenende suchen int i; for (i=0; ineuerEintrag(new MenuEintrag(ret, info.left(i), MenuEintrag::Art_deko)); if (i *const auswahlen, const std::vector *const infos, int (*getakt) (), void (*doret)(int), const Str & info /*= Str()*/, int accel /*=0*/) : MenuEintragSubmenu(papi, name, auswahlmenu(this, papi, *auswahlen, *infos, doret, name, info, mVorlauf), accel, L_menueintrag_defaulthoehe+L_font_height), mAuswahlen(auswahlen), mGetAktuell(getakt), mEintragDoReturn(doret), mAnimation(0), mAnimationDX(0) { mArt = Art_aktiv; } Str MenuEintragAuswahlmenu::getInfo() { return mSubBereich == subbereich_default ? _("Press `return' or click for a full list") : ""; } void MenuEintragAuswahlmenu::doHyperaktiv(const SDL_keysym & key, int taste) { switch (taste) { case SDLK_RIGHT: doPfeil(1); break; case SDLK_LEFT: doPfeil(-1); break; default: MenuEintragSubmenu::doHyperaktiv(key,taste); break; } } int MenuEintragAuswahlmenu::getMausPos(int x, int y) { /* Manuel zusammengeflicktes befindet-sich-die-Maus-ber-einem-Pfeil. Wenn wir irgendwann mehr solche SubBereiche haben, will man das schner machen. */ if (y >= mHoehe/2) { if (x >= mPfeil1X0 && x < mPfeil1X1) return 1; if (x >= mPfeil2X0 && x < mPfeil2X1) return 2; } return MenuEintrag::getMausPos(x, y); } void MenuEintragAuswahlmenu::zeitSchritt() { if (mAnimation != 0) { mAnimation += mAnimation > 0 ? -1 : 1; updateDrawDinge(); } } void MenuEintragAuswahlmenu::doReturn(bool durchMaus) { if (mSubBereich == 1) { doPfeil(-1); } else if (mSubBereich == 2) { doPfeil(1); } else { Sound::playSample(sample_menuclick,so_fenster); mSub->oeffnen(durchMaus, mGetAktuell() + mVorlauf); } } void MenuEintragAuswahlmenu::doUntermenuSchliessen() { updateDrawDinge(); } void MenuEintragAuswahlmenu::updateDDIntern() { int y = mHoehe/2-L_font_height/2; int x0,x1; neuDraw() = DrawDing(mName,mAccIndex, subbereich_default, 0, y, AlignHCenter, NULL, &x0, &x1); int x_mitte = (x0 + x1) / 2; y += L_font_height; int aktuell = mGetAktuell(); Str tmpstr = (*mAuswahlen)[aktuell]; /*if (mSubBereich == subbereich_keiner) tmpstr = "(" + tmpstr + ")"; */ int anim_x = x_mitte + mAnimation * mAnimationDX / L_auswahlmenu_anim_schritte; DrawDing & dd = neuDraw(); dd = DrawDing(tmpstr,hotkey_keins, subbereich_default, anim_x, y, AlignHCenter, Font::gData, &x0, &x1); dd.abschneiden(x_mitte - L_auswahlmenu_pfeilsep, x_mitte + L_auswahlmenu_pfeilsep); if (mAnimation != 0) { DrawDing & dd2 = neuDraw(); dd2 = DrawDing(mAnimationWahlAlt,hotkey_keins, subbereich_default, anim_x + (mAnimation > 0 ? -mAnimationDX : mAnimationDX), y, AlignHCenter, Font::gData, &x0, &x1); dd2.abschneiden(x_mitte - L_auswahlmenu_pfeilsep, x_mitte + L_auswahlmenu_pfeilsep); } DrawDing & pf1 = neuDraw(); pf1 = DrawDing("\010", hotkey_keins, 1, x_mitte - L_auswahlmenu_pfeilsep, y, AlignRight, NULL); mPfeil1X0 = pf1.mX0; mPfeil1X1 = pf1.mX1; DrawDing & pf2 = neuDraw(); pf2 = DrawDing("\011", hotkey_keins, 2, x_mitte + L_auswahlmenu_pfeilsep, y, AlignLeft, NULL); mPfeil2X0 = pf2.mX0; mPfeil2X1 = pf2.mX1; // if (mSubBereich != subbereich_keiner) { // /* Erstmal deaktiviert, weil's mir nicht so gefllt // neuDraw() = DrawDing((*mAuswahlen)[schiebAktuell(-1)],-1, // 0, // x0-L_auswahlsep,y, // AlignRight, &x0); // neuDraw() = DrawDing((*mAuswahlen)[schiebAktuell(1)],-1, // 0, // x1+L_auswahlsep,y, // AlignLeft, NULL, &x1); // */ // // /* // neuDraw() = DrawDing(blattpic_pfeile,2,x0-L_grausep-gric/2,y); // neuDraw() = DrawDing(blattpic_pfeile,2+1,x1+L_grausep+gric/2,y); // */ // } } void MenuEintragAuswahlmenu::doPfeil(int d) { Sound::playSample(sample_menuscroll,so_fenster); mAnimationWahlAlt = (*mAuswahlen)[mGetAktuell()]; mEintragDoReturn(schiebAktuell(d)); mAnimation = L_auswahlmenu_anim_schritte * d; /* Abstand zwischen altem und neuem Text bestimmen. Soll eigentlich L_auswahlmenu_anim_dx, aber evtl. mehr, wenn sonst der neue Text schon vorher reingeguckt htte oder umgekehrt */ int w1 = Font::gMenu->getLineWidth(mAnimationWahlAlt.data()) / 2; int w2 = Font::gMenu->getLineWidth((*mAuswahlen)[mGetAktuell()].data()) / 2; if (w1 < L_auswahlmenu_pfeilsep - L_auswahlmenu_anim_dx) w1 = L_auswahlmenu_pfeilsep - L_auswahlmenu_anim_dx; if (w2 < L_auswahlmenu_pfeilsep - L_auswahlmenu_anim_dx) w2 = L_auswahlmenu_pfeilsep - L_auswahlmenu_anim_dx; mAnimationDX = w1 + w2 + L_auswahlmenu_anim_dx; updateDrawDinge(); } int MenuEintragAuswahlmenu::schiebAktuell(int d) { int neu = mGetAktuell()+d; if (neu<0) neu=mAuswahlen->size()-1; if (neu>=(int) mAuswahlen->size()) neu=0; return neu; } /*****************************************************************************/ /* Wer hat zur Zeit das Kreuz? */ /* Wo ist diese Variable besser gekapselt? Wenn sie ein private Member von MenuEintragSpielerModus ist oder wenn sie nur hier in dieser Datei steht (und ein "static" hat, damit der Linker auch nicht verrt, dass es diese Variable gibt)? */ static MenuEintragSpielerModus * gMenuEintragSpielerModusAktuell = NULL; void MenuEintragSpielerModus::doReturn(bool) { Sound::playSample(sample_menuclick,so_fenster); /* Keine neue Animation, wenn das bereits angekreuzt war */ if (Cuyo::getSpielerModus() == mModus) return; Cuyo::setSpielerModus(mModus); mAnimation = 2; /* "ASCII"-Code des ersten Kreuzchen-Bildchens */ if (gMenuEintragSpielerModusAktuell) gMenuEintragSpielerModusAktuell->updateDrawDinge(); /* Vermutlich wird restart-last-level stromlos */ //CASSERT(gMenuEintragRestartLastLevel); //gMenuEintragRestartLastLevel->updateDrawDinge(); /* Da steht im Moment die Funktion drin, die Restart-last-level neu malt (wegen Stromnderung). Eigentlich knnte man hieraus auch gleich einen generischen Ankreuzlisten-MenEintragTyp machen, im Stil der anderen Auswahlmens. */ (*mDoWechsel)(); updateDrawDinge(); } void MenuEintragSpielerModus::updateDDIntern() { #if HOT_ALIGN int xkreuz; neuDraw() = DrawDing(mName, mAccIndex, subbereich_default, 0, mHoehe/2, AlignRight, NULL, NULL, &xkreuz); xkreuz += L_datensep; #else neuDraw() = DrawDing(mName, mAccIndex, subbereich_default, 0, mHoehe/2, AlignRight); int xkreuz = x+L_datensep; #endif neuDraw() = DrawDing("\001", hotkey_keins, subbereich_default, xkreuz, mHoehe/2, AlignLeft); if (Cuyo::getSpielerModus() == mModus) { CASSERT(mAnimation >= 2); Str tmpstr = _sprintf("%c", mAnimation); neuDraw() = DrawDing(tmpstr, hotkey_keins, subbereich_default, xkreuz, mHoehe/2, AlignLeft, Font::gData); gMenuEintragSpielerModusAktuell = this; } } void MenuEintragSpielerModus::zeitSchritt() { if (mAnimation < 0 || mAnimation == 7) return; mAnimation++; if (mAnimation == 3 || mAnimation == 6) mAnimation++; updateDrawDinge(); } /*****************************************************************************/ void MenuEintragTaste::updateDDIntern() { neuDraw() = DrawDing(mName, mAccIndex,subbereich_default, 0, mHoehe/2, AlignRight); Str ts = SDL_GetKeyName(PrefsDaten::getTaste(mSpieler, mTaste)); int x0,x1; neuDraw() = DrawDing(ts, hotkey_rahmen,subbereich_default, 0, mHoehe/2, AlignLeft, Font::gData, &x0, &x1); } Str MenuEintragTaste::getInfo() { return mSubBereich == subbereich_hyperaktiv ? _("Type a new key") : _("To enter a new key, click or press `return' first"); } void MenuEintragTaste::doHyperaktiv(const SDL_keysym & taste, int) { if (taste.sym!=SDLK_ESCAPE) { PrefsDaten::setTaste(mSpieler, mTaste, taste.sym); doPapiNavigiere(1); } } /*****************************************************************************/ void MenuEintragAI::updateDDIntern() { int li, re; neuDraw() = DrawDing(mName, mAccIndex,subbereich_default, 0, mHoehe/2, AlignRight, 0, &li, &re); Str ts = _sprintf("%d", PrefsDaten::getKIGeschwLog()); neuDraw() = DrawDing(ts, hotkey_rahmen,subbereich_default, 0, mHoehe/2, AlignLeft, Font::gData); DrawDing & pf1 = neuDraw(); pf1 = DrawDing("\010", hotkey_keins, 1, li - L_AI_pfeil_sep_li, mHoehe/2, AlignRight, NULL); mPfeil1X0 = pf1.mX0; mPfeil1X1 = pf1.mX1; DrawDing & pf2 = neuDraw(); pf2 = DrawDing("\011", hotkey_keins, 2, re + L_AI_pfeil_sep_re, mHoehe/2, AlignLeft, NULL); mPfeil2X0 = pf2.mX0; mPfeil2X1 = pf2.mX1; } void MenuEintragAI::doHyperaktiv(const SDL_keysym &, int taste) { if (taste==SDLK_RIGHT) doPfeil(1); else if (taste==SDLK_LEFT) doPfeil(-1); } void MenuEintragAI::doReturn(bool) { if (mSubBereich == 1) { doPfeil(-1); } else if (mSubBereich == 2) { doPfeil(1); } } void MenuEintragAI::doPfeil(int d) { int alt = PrefsDaten::getKIGeschwLog(); int neu = alt + d; if (neu<0) neu=0; if (neu>9) neu=9; if (neu != alt) { PrefsDaten::setKIGeschwLog(neu); updateDrawDinge(); } } int MenuEintragAI::getMausPos(int x, int y) { /* Manuel zusammengeflicktes befindet-sich-die-Maus-ber-einem-Pfeil. Wenn wir irgendwann mehr solche SubBereiche haben, will man das schner machen. */ if (x >= mPfeil1X0 && x < mPfeil1X1) return 1; if (x >= mPfeil2X0 && x < mPfeil2X1) return 2; return MenuEintrag::getMausPos(x, y); } /*****************************************************************************/ void MenuEintragSound::updateDDIntern() { neuDraw() = DrawDing(mName, mAccIndex,subbereich_default, 0, mHoehe/2, AlignRight); Str ts = mBitteWarten ? "..." : PrefsDaten::getSound() ? _("On") : _("Off"); neuDraw() = DrawDing(ts, hotkey_rahmen,subbereich_default, 0, mHoehe/2, AlignLeft, Font::gData); } void MenuEintragSound::doReturn(bool) { /* Da es auf manchen Rechnern ziemlich lange dauert, bis SDL merkt, dass es den Sound doch nicht anschalten kann, fr diese Wartezeit eine optische Rckkopplung */ mBitteWarten = true; updateDrawDinge(); UI::sofortAllesAnzeigen(); mBitteWarten = false; setSound(!PrefsDaten::getSound()); updateDrawDinge(); } void MenuEintragSound::doHyperaktiv(const SDL_keysym &, int taste) { bool alt = PrefsDaten::getSound(); bool neu = alt; if (taste=='0') neu = false; else if (taste=='1') neu = true; else if (taste==SDLK_RIGHT || taste==SDLK_LEFT || taste==SDLK_RETURN || taste==' ') neu = !alt; if (neu == alt) return; setSound(neu); updateDrawDinge(); } void MenuEintragSound::setSound(bool neu) { if (neu != PrefsDaten::getSound()) { if (!neu) Sound::setMusic(""); PrefsDaten::setSound(neu); Sound::checkePrefsStatus(); if (neu) Sound::setMusic("cuyo.it"); } } /*****************************************************************************/ MenuEintragLevel::MenuEintragLevel(BlattMenu * papi, Str na, bool gewonnen, bool strom): MenuEintrag(papi, na), mGewonnen(gewonnen) { if (!strom) setNieStrom(); } void MenuEintragLevel::updateDDIntern() { int xmin; neuDraw() = DrawDing(mName, hotkey_keins, subbereich_default, 0, mHoehe / 2, AlignLeft, 0, &xmin); if (mGewonnen) { xmin -= L_datensep; neuDraw() = DrawDing("\013", hotkey_keins, subbereich_default, xmin, mHoehe / 2, AlignRight); } } cuyo-2.1.0/src/fall.h0000644000175000017500000001526612410640314011275 00000000000000/*************************************************************************** fall.h - description ------------------- begin : Sat Aug 18 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef FALL_H #define FALL_H #include #include "blop.h" #include "blopbesitzer.h" #include "bilddatei.h" #include "leveldaten.h" // wie das Fallende sein kann #define richtung_keins 0 #define richtung_einzel 1 #define richtung_waag 2 #define richtung_senk 3 #define richtung_unplatziert 4 // das Fall, das als naechstes kommen wird... // Wert fr get_X bis get_YY, wenn das Blop nicht existiert #define blop_pos_nix -1 struct FallPos { /** x-Koord vom Fall in Feldern; bei unplatzierten Blops ist das die Pos, an der der Blop spter auftauchen wird. */ int x; /** y-Koord vom Fall in Pixeln (absolut, und nicht relativ zum ggf. wegen Rberreihen verschobenen Spielfeld). Bei unplatzierten blobs ist das die Pos. relativ zum Preview-Feld (und nicht die Pos., an der es auftauchen wird) */ int yy; /** Richtung und Anzahl der Blops. Siehe Konstanten. */ int r; /** Liefert die Anzahl der Blops vom Fall zurck. */ int getAnz() const; int getX(int a) const; int getY(int a, const Spielfeld * spf) const; }; class Spielfeld; /** Enthlt alle Informationen ber das Fall: Existenz, Position (inkl. genaue Drehpos), Farben, ... */ class Fall: public BlopBesitzer { public: /** Konstruktor... */ Fall(Spielfeld * sp, bool re); /** Position vom Fall. */ FallPos mPos; private: /** True, wenn rechter Spieler (fr Sound ntig) */ bool mRechterSpieler; /** Schnell fallen? */ bool mSchnell; /** Ist es noch nicht ganz fertiggedreht? */ int mExtraDreh; /** Ist es noch nicht ganz fertig waagerecht verschoben? */ int mExtraX; /** Wurde Taste links bzw. rechts gedrckt? */ int mExtraLinks, mExtraRechts; /** Die Blops */ Blop mBlop[2]; /** Rechteck, das den Bereich ueberdeckt, wo das Fall im Moment hingemalt ist (fuer Grafik-Updates). */ int mRectX, mRectY, mRectW, mRectH; /** kopiert einen fallenden Blop nach mDaten und liefert den Zielblop in mDaten zurck (als Referenz), damit man einen land-Event senden kann. Sendet den land-Event nicht selbst, weil Cual-Code erwarten knnte, dass erst beide Blops gefestigt werden und dann erst die Events kommen. Kann 0 zurckliefern (wenn der Blop keinen Platz auf dem Bildschirm hat). */ Blop * festige(int n); /** Liefert true, wenn das Fall grade auf Tastendrcke reagiert */ bool steuerbar() { return mPos.r == richtung_waag || mPos.r == richtung_senk; } /** Prueft, ob an Position p schon was im Weg ist oder nicht. Wenn irgendwo drber in der Spalte was nicht-schwebendes ist, zhlt das auch als im Weg. @return eine Konstante belegt_... */ int testBelegt(FallPos p) const; /** Liefert true, wenn das Fallende senkrecht ist */ bool istSenkrecht() const; /** Lsst nur noch Blop a brig */ void halbiere(int a); /** Liefert loc_x */ int getX(int a) const; /** Liefert loc_y */ int getY(int a) const; /** Liefert loc_xx */ int getXX(int a) const; /** Liefert loc_yy */ int getYY(int a) const; /** Kodiert alle Informationen des Drehens in eine Zahl. Ist fr getXX und getYY da */ int getDrehIndex(int a) const; /** Bestimm mFallRect neu (Fall-ueberdeckendes Rechteck) */ void calcFallRect(); /** Setzt den Bereich, der durch mFallRect angegeben ist, auf upzudaten */ void setUpdateFallRect(); public: /** Mu einmal aufgerufen werden */ void initialisiere(); /** Erzeugt ein neues Fall, der sich noch nicht im Spielfeld befindet. Bei reinkommen = true kommt das Fall ins Preview-Feld reingerutscht. Sonst ist es sofort da (fr Spielanfang) */ void erzeug(bool reinkommen = true); /** Bringt ein Fall ins Spiel, d.h. setzt die Koordinaten. Liefert false, wenn dafr kein Platz ist */ bool insSpiel(); /** Entfernt das Fall ganz */ void zerstoere(); private: /** Fuer platzierte Falls: Macht alles von spielSchritt ausser Grafik-Update markieren */ void spielSchrittPlatziertIntern(); public: /** Bewegt das Fall ggf. nach unten und kmmert sich ggf. um Verwandlungen. */ void spielSchritt(); /** Fhrt die Animationen durch. Innerhalb einer Gleichzeit aufrufen. */ void animiere(); /** Bewegt das Fall eins nach links. Wird in einer Gleichzeit aufgerufen. */ void tasteLinks(); /** Bewegt das Fall eins nach rechts. Wird in einer Gleichzeit aufgerufen. */ void tasteRechts(); /** Dreht das Fall. Version 1 wird in einer Gleichzeit aufgerufen, Version 2 danach auerhalb von Gleichzeiten. */ void tasteDreh1(); void tasteDreh2(); /** ndert die Fallgeschwindigkeit vom Fall. Wird in einer Gleichzeit aufgerufen. */ void tasteFall(); /** Liefert true, wenn das Fall (noch) am Platzen ist (wg. Spielende) */ bool getAmPlatzen() const; /** Liefert einen Pointer auf die Blops zurck. Wird vom KIPlayer und von ort_absolut::finde() bentigt. */ const Blop * getBlop() const; Blop * getBlop(); /** Liefert die Anzahl der Blops vom Fall zurck. */ int getAnz() const { return mPos.getAnz(); } /** Lsst alle Blops vom Fall platzen (Spielende). */ void lassPlatzen(); /** Malt das Fall. */ void malen() const; /** Liefert true, wenn das Fall existiert. Mit Argument: Wenn diese Hlfte existiert. */ bool existiert(int a=0) const; /** Liefert true, wenn das Fall gerade am zerfallen ist (d. h. existiert, aber aus nur noch einem Blop besteht). In dieser Zeit darf nmlich keine Explosion gezndet werden. (Erst warten, bis der andere Blop auch angekommen ist.) */ bool istEinzel() const; void playSample(int nr) const; virtual int getSpezConst(int vnr, const Blop *) const; }; #endif cuyo-2.1.0/src/blop.cpp0000644000175000017500000007072612411361471011655 00000000000000/*************************************************************************** blop.cpp - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "cuyointl.h" #include "blop.h" #include "variable.h" #include "code.h" #include "knoten.h" #include "cuyo.h" // Um Punkte senden zu knnen #include "spielfeld.h" #include "aufnahme.h" /** Erzeugt einen uninitialisierten Blop (der noch nicht verwendet werden kann, aber dafr auch keine Fehler hervorruft, wenn irgend was anderes nicht initialisiert ist). Das Uninitialisiert sein eines Blops erkennt man daran, dass mDaten 0 ist... *und* mBild uninitialisiert ist. Wenn mBild initialisiert ist, handelt es sich um einen reinen Bildstapel-Blop. */ Blop::Blop(): mFreilaufend(true), mBesitzer(0), mOrt(absort_nirgends), mDaten(0), mDatenAlt(0), mZeitNummerDatenAlt(-1), mZeitNummerLeereStapel(-1), /* Uninitialisierten Bildstapel erzeugen. Sonst wird versucht, auf noch uninitialisierte Felder von ld zuzugreifen. */ mBild(false), mBildAlt(false), mScheduleEventNr(event_keins) { } /** Constructor... s ist SortenNr. */ Blop::Blop(int s, int v /*=-1*/): mKettenGroesse(1), mFreilaufend(true), mBesitzer(0), mOrt(absort_nirgends), mDatenLaenge(ld->mLevelKnoten->getDatenLaenge()), mZeitNummerDatenAlt(-1), mZeitNummerLeereStapel(-1), mScheduleEventNr(event_keins) { mDaten = new int[mDatenLaenge]; mDatenAlt = new int[mDatenLaenge]; /* Zustandsdaten auf Default-Werte initialisieren */ for (int i = 0; i < mDatenLaenge; i++) switch (ld->mSorten[s]->getDefaultArt(i)) { case da_nie: case da_keinblob: break; case da_init: case da_kind: case da_event: mDaten[i] = ld->mSorten[s]->getDefault(i); break; default: CASSERT(false); } mDaten[spezvar_kind] = s; mDaten[spezvar_version] = (v==-1 ? Aufnahme::rnd(ld->mSorten[s]->getVersions()) : v); /* In Zukunft soll das mal nicht mehr mglich sein: if (gGleichZeit) { print_to_stderr("Neuer Blop in Gleichzeit\n"); } */ scheduleEvent(event_init); } Blop::Blop(const Blop & b): mFreilaufend(true), mBesitzer(0), mOrt(absort_nirgends), mDatenLaenge(ld->mLevelKnoten->getDatenLaenge()), mZeitNummerDatenAlt(-1), mZeitNummerLeereStapel(-1), mScheduleEventNr(event_keins) { CASSERT(b.mDaten); CASSERT(b.mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); mDaten = new int[mDatenLaenge]; mDatenAlt = new int[mDatenLaenge]; kopiere(b); } Blop::~Blop() { unscheduleEvent(); if (mDaten) delete[] mDaten; if (mDatenAlt) delete[] mDatenAlt; } /** Tut, was man erwartet. Tut *nicht* fr reine Bildstapelblops. */ Blop & Blop::operator=(const Blop & b) { CASSERT(b.mDaten); CASSERT(b.mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); /* Innerhalb einer Gleichzeit Blops rumschieben fhrt zu Bugs in Zukunfts-Zuweisungen... */ CASSERT(!gGleichZeit); if (!mDaten || mDatenLaenge != ld->mLevelKnoten->getDatenLaenge()) { /* Wir wechseln wohl grad in einen neuen Level. Zumindest ndert sich unsere Datenlnge. Oder wir waren noch berhaupt nicht initialisiert. */ if (mDaten) delete[] mDaten; if (mDatenAlt) delete[] mDatenAlt; mDatenLaenge = ld->mLevelKnoten->getDatenLaenge(); mDaten = new int[mDatenLaenge]; mDatenAlt = new int[mDatenLaenge]; } kopiere(b); return *this; } /** kopiert die Daten von b. Erwartet, dass die Datenlngen schon bereinstimmen. */ void Blop::kopiere(const Blop & b) { /* Daten kopieren */ for (int i = 0; i < mDatenLaenge; i++) mDaten[i] = b.mDaten[i]; mZeitNummerDatenAlt = b.mZeitNummerDatenAlt; if (gGleichZeit && mZeitNummerDatenAlt == gAktuelleZeitNummerDatenAlt) { /* mDatenAlt[] wird grad benutzt. Da mssen wir das wohl mitkopieren. */ for (int i = 0; i < mDatenLaenge; i++) mDatenAlt[i] = b.mDatenAlt[i]; } mZeitNummerLeereStapel = b.mZeitNummerLeereStapel; if (mZeitNummerLeereStapel < gAktuelleZeitNummerLeereStapel) { /* Bildstapel kopieren; aber nur, wenn er nicht sowieso frisch initialisiert werden muss. */ mBild = b.mBild; } /* BildAlt sollte nach einem Kopieren nicht mehr bentigt werden; also brauchen wir es nicht zu kopieren. Aber vielleicht ist unser mBildAlt noch von einem vorigen Level, und die Stapelgre stimmt noch nicht. Deshalb neuen Bildstapel erzeugen. Der neue Stapel hat brigens mAnz = -1, so dass - falls ber neumalen entschieden wird - auf jeden Fall neu gemalt wird. */ mBildAlt = BildStapel(); mKettenGroesse = b.mKettenGroesse; unscheduleEvent(); if (b.mScheduleEventNr != event_keins) scheduleEvent(b.mScheduleEventNr); } /** Verwandelt einen uninitialisierten Blop in einen Bildstapelblop; * oder erzeugt den bildstapel neu (fr Stapelhhennderungen bei * Levelwechsel */ void Blop::erzeugeBildstapel() { CASSERT(!mDaten); mBild = BildStapel(); mBildAlt = BildStapel(); /* mBild muss noch "leer" gemacht werden. (im Moment hat es noch -1 * bilder) */ mZeitNummerLeereStapel = -1; /* Der Ort ist ein Dummywert; nur dazu da, um zu erlauben, hier hinzumalen */ mOrt = ort_absolut(absort_bemalbar); } /** Setzt Besitzer und Besitzer-Informationen. Braucht nur am Anfang einmal aufgerufen zu werden. Muss auch fr den Global-Blop aufgerufen werden; sonst darf kein Code ausgefhrt werden. */ void Blop::setBesitzer(BlopBesitzer * bes /*= 0*/, ort_absolut ort /* = ort_absolut(absort_nirgends)*/) { mFreilaufend = false; mBesitzer = bes; mOrt = ort; } /** malt den Blop; xx und yy sind in Pixeln angegeben; der Hintergrund wird vorher gelscht. */ void Blop::malen(int xx, int yy, bool apply_mirror /*=true*/) const { /* Ggf. gelazyten initStapel()-Aufruf nachholen */ braucheLeereStapel(); try { // Um die Fehlermeldung zu verbessern... //if (mX == 0 && mY == 19) // mBild.print(); /* Der Bildstapel soll sich geflligst selbst malen */ mBild.malen(xx, yy, apply_mirror); } catch (Fehler fe) { throw Fehler("%s, during drawing:\n%s", toString().data(),fe.getText().data()); } } // malen /** liefert die Art zurck */ int Blop::getArt() const { CASSERT(mDaten); if (mDaten[spezvar_kind] >= 0) return blopart_farbe; else return mDaten[spezvar_kind]; } /** liefert die Farbe zurck, aber nur, wenns wirklich ein farbiges Blop ist (sonst wird keine_farbe zurckgeliefert) */ int Blop::getFarbe() const { CASSERT(mDaten); if (mDaten[spezvar_kind] >= 0) return mDaten[spezvar_kind]; else return keine_farbe; } /** liefert die Version zurck. */ int Blop::getVersion() const { CASSERT(mDaten); return mDaten[spezvar_version]; } /** liefert true, wenn der Blop am platzen ist */ bool Blop::getAmPlatzen() const { CASSERT(mDaten); return mDaten[spezvar_am_platzen] != 0; } /** Fhrt die ganzen Animationen durch (Codeanimationen und platzen). Sollte innerhalb einer Gleichzeit aufgerufen werden. */ void Blop::animiere() { CASSERT(gGleichZeit); CASSERT(!mFreilaufend); /* Wenn animiert wird, sollten keine anderen Events ausstehen. */ CASSERT(mScheduleEventNr == event_keins); /* Ggf. gelazyten initStapel()-Aufruf nachholen. Man knnte genau untersuchen, wann whrend animiere() dieser Aufruf bentigt wird, aber irgend wann wird er sowieso in jedem Spielschritt bentigt, also macht es keinen Sinn, sich Mhe zu geben. */ braucheLeereStapel(); try { // Um ggf. die Fehlermeldung zu verbessern... CASSERT(mDaten); /* Erst mal ein paar Initialisierungen. Muss auch gemacht werden, wenn der Blop nix von animieren wei, weil der nderungswunsch initialisiert werden soll. Und vielleicht wollen ja Nachbarn was mit diesem Blop tun. */ initSchritt(); /* Normale (sorteneigene) Animation */ /* Wenn die Sorte gewechselt hat, mssen wir evtl. noch ein busy-Reset verschicken. */ if (mDaten[spezvar_kind] != mDaten[spezvar_kind_beim_letzten_draw_aufruf] && mDaten[spezvar_kind_beim_letzten_draw_aufruf] != -1) { Code * alt_co = (mDaten[spezvar_kind_beim_letzten_draw_aufruf] == blopart_ausserhalb ? 0 : ld->mSorten[mDaten[spezvar_kind_beim_letzten_draw_aufruf]] ->getEventCode(event_draw)); if (alt_co) alt_co->busyReset(*this); } mDaten[spezvar_kind_beim_letzten_draw_aufruf] = mDaten[spezvar_kind]; /* Prfen, ob berhaupt Mal-Code existiert. Das muss bei der nix-Sorte nicht sein. */ Code * mc = getSorte()->getEventCode(event_draw); if (mc) { /* Bei diesem eval werden die Bildchen neu in mBild eingefgt... Das ist beim Global-Blop aber nicht erlaubt. */ mMalenErlaubt = true; mc->eval(*this); } /* Debug-Ausgaben schreiben... */ mBild.setDebugOut(mDaten[spezvar_out1], mDaten[spezvar_out2]); /* Animation des Platzens */ /* Zunchst: Leere Blops platzen nicht. (Wenn ein Blop whrend eines Cual-Programms mal ganz kurz das leere Blop ist, dann normalerweise so kurz, dass die nachfolgenden Zeilen es nicht merken. */ if (mDaten[spezvar_kind] == blopart_keins) mDaten[spezvar_am_platzen] = 0; if (mDaten[spezvar_am_platzen] > 0) { mDaten[spezvar_am_platzen]++; if (mDaten[spezvar_am_platzen] > ld->mExplosionBild.anzBildchen()) { /* Letztes Platz-Bildchen. Im nchsten Schritt in nichts verwandeln. */ setKindIntern(blopart_keins); /* Wenn der Blop sich als Gras verhlt, dann soll er das nicht mehr tun, nachdem er geplatzt ist. */ mDaten[spezvar_am_platzen] = 0; } } // if Blop ist am platzen } catch (Fehler fe) { throw Fehler("%s, during animation:\n%s", toString().data(), fe.getText().data()); } } /** Fhrt den Code des angegebenen Events aus (falls Code zu diesem Event existiert. Sollte innerhalb einer Gleichzeit aufgerufen werden. Die Event-Nummern sind in sorte.h definiert. */ void Blop::execEvent(int evtnr) { try { // Um die Fehlermeldung zu verbessern... CASSERT(gGleichZeit); CASSERT(!mFreilaufend); /* Wenn ein Event aufgerufen wird, sollte kein anderes Event ausstehen. (mScheduleEventNr wird gelscht, _bevor_ das entsprechende Event gesendet wird.) */ CASSERT(mScheduleEventNr == event_keins); CASSERT(mDaten); Code * ec = getSorte()->getEventCode(evtnr); if (ec) { /* Whrend Events sollen Mal-Versuche zu throw fhren. */ mMalenErlaubt = false; ec->eval(*this); } } catch (Fehler fe) { throw Fehler("%s, during %s event:\n%s", toString().data(), cEventNamen[evtnr], fe.getText().data()); } } /** Startet den Platzvorgang. Sollte nicht fr leere Blops aufgerufen werden. */ void Blop::lassPlatzen() { CASSERT(mDaten); if (mDaten[spezvar_kind] == blopart_keins) throw Fehler("%s","Empty Blops are not allowed to explode."); if (mDaten[spezvar_am_platzen] == 0) mDaten[spezvar_am_platzen] = 1; } /** Teilt einem Farbblop die (neue) Gre seiner Kette mit. */ void Blop::setKettenGroesse(int anz) { CASSERT(mDaten); /* Kettengre abspeichern, fr den Fall, dass sie als spezconst abgefragt wird */ mKettenGroesse = anz; } /** Liefert true, wenn der Blop sich seit dem letzten Aufruf von takeUpdaten() verndert hat und deshalb neu gezeichnet werden muss. Liefert auf jeden Fall true, wenn der Blop zwischendrin kopiert wurde (mit = oder copy-Constructor). */ bool Blop::takeUpdaten() { /* Ggf. gelazyten initStapel()-Aufruf nachholen */ braucheLeereStapel(); if (mBild == mBildAlt) return false; mBildAlt = mBild; return true; } /***** Funktionen, die nix verndern *****/ /** Liefert true, wenn wir uns mit b verbinden wollen. Auch hier drfen wir allerdings nur die alten Var-Werte von b lesen. Vermutlich liefert es das beste Ergebnis, wenn wir von uns auch den alten Wert nehmen. */ bool Blop::verbindetMit(const Blop & b) const { CASSERT(mDaten); return getVariableVergangenheit(spezvar_kind) == b.getVariableVergangenheit(spezvar_kind); } /** Liest die aktuelle Sorte dieses Blops aus den Leveldaten aus. */ Sorte * Blop::getSorte(bool vergangenheit /*= false*/) const { return ld->mSorten[vergangenheit ? getVariableVergangenheit(spezvar_kind) : getVariable(spezvar_kind)]; } /** Fragt beim Besitzer an, in welche Richtungen dieser Blop verbunden werden kann und liefert das zurck. */ int Blop::getVerbindungen() const { CASSERT(mDaten); if (mBesitzer) { return mBesitzer->getBesitzVerbindungen(mOrt.x, mOrt.y); } else return verbindung_solo; } /** liefert true, wenn sich der Blop auch mit dem angegebenen Rand verbindet */ bool Blop::verbindetMitRand(int seite) const { CASSERT(mDaten); return getSorte()->getVerbindetMitRand(seite); } /** Liefert zurck, wie viele Punkte dieser Stein zur Kettengre beitrgt (normalerweise 1). */ int Blop::getKettenBeitrag() const { CASSERT(mDaten); return mDaten[spezvar_gewicht]; } /** Liefert zurck, ob ein bestimmtes Platzverhalten vorliegt */ bool Blop::getVerhalten(int verhalten) const { return (mDaten[spezvar_verhalten] & verhalten)==verhalten; } /** Liefert zurck, welchem Spieler (0 oder 1) der Blop gehoert oder 2 bei globalblop */ int Blop::getSpieler() const { switch (mOrt.art) { case absort_feld: case absort_fall: case absort_semiglobal: case absort_info: return mOrt.rechts; case absort_global: case absort_nirgends: return 2; } CASSERT(0); return 0; } /** Liefert einen String der Art "Blop Drachen at x,y". Fr Fehlermeldungen. */ Str Blop::toString() const { return _sprintf("Blop %s at %s", getSorte()->getName().data(), mOrt.toString().data()); } /** Wird vom Code aufgerufen, wenn es Punkte geben soll. */ void Blop::bekommPunkte(int pt) const { if (getArt() == blopart_global) throw Fehler("%s","bonus() does not work in the global blob."); Cuyo::neuePunkte(mOrt.rechts, pt); } /** Wird vom Code aufgerufen, wenn ein Message angezeigt werden soll. */ void Blop::zeigMessage(Str mess) const { if (getArt() == blopart_global) throw Fehler("%s","message() does not work in the global blob."); Cuyo::getSpielfeld(mOrt.rechts)->setMessage(mess); } const ort_absolut & Blop::getOrt() const { return mOrt; } /*************************************************************/ /* Macht alle Initialisierungen, die vor jedem Schritt gemacht werden. */ void Blop::initSchritt() { /* Erst mal die alten Variablen-Werte merken... (Eigentlich wre es ja sauberer, mDaten nicht direkt zu ndern, sondern setVariable() zu verwenden. Das wrde dann selbst merkeAlteVarWerte() aufrufen. Aber egal.) */ merkeAlteVarWerte(); mDaten[spezvar_file] = 0; mDaten[spezvar_pos] = 0; mDaten[spezvar_quarter] = viertel_alle; mDaten[spezvar_out1] = spezvar_out_nichts; mDaten[spezvar_out2] = spezvar_out_nichts; } /* Default-Werte werden hier bentigt... */ extern int spezconst_default[spezconst_anz]; int Blop::getSpezConst(int vnr, bool vergangenheit /*= false*/) const { CASSERT(mDaten); switch (vnr) { case spezconst_connect: return getVerbindungen(); case spezconst_size: return mKettenGroesse; case spezconst_loc_x: if (mOrt.art != absort_feld) break; return ld->mSpiegeln ? grx - 1 - mOrt.x : mOrt.x; case spezconst_loc_y: if (mOrt.art != absort_feld) break; return ld->mSpiegeln ? gry - 1 - mOrt.y : mOrt.y; case spezconst_loc_p: if ((mOrt.art == absort_global) || (mOrt.art == absort_nirgends)) throw iFehler( "Internal error in Blop::getSpezConst(): Wrong AbsOrtArt %d", mOrt.art); /* Hier sollte noch eine Fehlermeldung ausgegeben werden, wenn man das vom Global-Blop aus abfragen will. */ return mOrt.rechts ? 2 : 1; case spezconst_players: return ld->mSpielerZahl; case spezconst_exploding: return getVariableVergangenheit(spezvar_am_platzen); case spezconst_basekind: return getSorte(vergangenheit)->getBasekind(); case spezconst_time: return Cuyo::getSpielfeld(false)-> getZeit(); case spezconst_info: return mOrt.art==absort_info || (mOrt.art==absort_fall && mOrt.y); } /* Nicht selbst bearbeitet? Dann nach oben weitergeben. */ if (mBesitzer) { int r = mBesitzer->getSpezConst(vnr,this); if (r != spezconst_defaultwert) return r; } /* Wir haben keinen Besitzer oder der Besitzer weigert sich, uns was mitzuteilen? Dann Default-Wert. */ return spezconst_default[-vnr-1]; } /** High-Level: Wird benutzt, wenn eine Variable im cual-Programm steht. Kmmert sich auch um all das @()-Zeug und die Zeitverzgerung. */ int Blop::getVariable(const Variable & v) { if (v.Ort_hier()) return getVariable(v.getNummer()); else { ort_absolut ziel = v.getOrt(mOrt, *this); if (ziel.korrekt()) return ziel.finde().getVariableVergangenheit(v.getNummer()); else /* Es ist ein outside-Blob, also den Default unabhngig von der Default-Art nehmen. */ return v.getDefaultWert(); } } /** High-Level: Wird benutzt, wenn eine Variable im cual-Programm steht. Kmmert sich auch um all das @()-Zeug und die Zeitverzgerung. Und um irgend welche Range-Checks u. . */ void Blop::setVariable(const Variable & v, int wert, int op) { /* Da will doch nicht jemand etwa eine Spezconst ndern?! */ if (v.getNummer() < 0) throw Fehler("The variable \"%s\" is read-only.", v.toString().data()); if (v.Ort_hier()) setVariable(v.getNummer(), wert, op); else { ort_absolut ziel = v.getOrt(mOrt, *this); if (ziel.korrekt()) ziel.finde().setVariableZukunft(v.getNummer(), wert, op); } } /** Low-Level; wird von den High-Level-Funktionen aufgerufen und vom Cual-Programm bei internen Variablen. Achtung: Fremdblops sollten *immer* die zeitverschobenen Versionen benutzen. */ int Blop::getVariable(int vnr) const { CASSERT(mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); if (vnr < 0) return getSpezConst(vnr); CASSERT(vnr < ld->mLevelKnoten->getDatenLaenge()); return mDaten[vnr]; } void Blop::setVariable(int vnr, int wert, int op) { merkeAlteVarWerte(); setVariableIntern(vnr, wert, op); } /** Noch low-Levler: Speichert alte Werte nicht ab, wie sich das innerhalb einer Gleichzeit gehren wrde. */ void Blop::setVariableIntern(int vnr, int wert, int op) { CASSERT(mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); CASSERT(vnr >= 0 && vnr < ld->mLevelKnoten->getDatenLaenge()); int oldValue = mDaten[vnr]; switch (op) { case set_code: mDaten[vnr] = wert; break; case add_code: mDaten[vnr] += wert; break; case sub_code: mDaten[vnr] -= wert; break; case mul_code: mDaten[vnr] *= wert; break; case div_code: mDaten[vnr] = divv(mDaten[vnr],wert); break; case mod_code: mDaten[vnr] = modd(mDaten[vnr],wert); break; case bitset_code: mDaten [vnr] |= wert; break; case bitunset_code: mDaten [vnr] &= (-1-wert); break; default: throw iFehler("Internal error in Blop::setVariable() (op = %d)", op); } /* Range-Check bei Spez-Vars */ /* file, pos und qu werden erst beim Malen gecheckt. version braucht gar nicht gecheckt zu werden. out1 und out2 auch nicht. */ switch (vnr) { case spezvar_kind: if (mDaten[vnr] < blopart_min_cual || mDaten[vnr] >= ld->mAnzFarben) throw Fehler("Value %d for kind out of range (allowed: %d - %d)", mDaten[vnr], blopart_min_cual, ld->mAnzFarben - 1); break; } if ((vnr==spezvar_kind) && (mDaten[vnr]!=oldValue)) setKindIntern(mDaten[vnr]); } /** spezvar_kind ist eine ganz spezielle spezvar: Ganz lowlevel passiert hier noch mehr. */ void Blop::setKindIntern(int wert) { mDaten[spezvar_kind] = wert; for (int i = 0; i < mDatenLaenge; i++) switch (ld->mSorten[wert]->getDefaultArt(i)) { case da_nie: case da_keinblob: case da_init: case da_event: break; case da_kind: mDaten[i] = ld->mSorten[wert]->getDefault(i); break; default: CASSERT(false); } } /** Zeitverschobener Variablenzugriff: Fremdblops sollten immer diese Routinen verwenden. */ /** Liefert den Wert der Variable zum Anfang der Gleichzeit zurck. */ int Blop::getVariableVergangenheit(int vnr) const { CASSERT(mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); if (vnr < 0) return getSpezConst(vnr,true); CASSERT(vnr < ld->mLevelKnoten->getDatenLaenge()); /* Wenn unsere Variablen in dieser Gleichzeit noch nicht gendert wurden, wurden sie auch noch nicht nach mDatenAlt kopiert. Dann den Wert aus mDaten[] holen. */ if (mZeitNummerDatenAlt == gAktuelleZeitNummerDatenAlt) return mDatenAlt[vnr]; else return mDaten[vnr]; } /** Setzt die Variable am Ende der Gleichzeit. */ void Blop::setVariableZukunft(int vnr, int wert, int op) { CASSERT(gGleichZeit); if (gZZAnz >= (int) gZZ.size()) { /* Nicht genug Speicher im ZZ-Array? Dann vergrern. */ gZZ.resize(gZZ.size() * 2 + 16); } gZZ[gZZAnz++] = tZZ(this, vnr, wert, op); } /** Speichert, falls ntig, die Variablenwerte in mDatenAlt, fr zeitverzgerten Variablenzugriff. Falls ntig bedeutet: Falls sie in dieser Gleichzeit noch nicht gespeichert wurden. Wird von set[Bool]Variable(vnr) aufgerufen, bevor eine Variable gendert wird. */ void Blop::merkeAlteVarWerte() { CASSERT(gGleichZeit); if (mZeitNummerDatenAlt < gAktuelleZeitNummerDatenAlt) { for (int i = 0; i < mDatenLaenge; i++) mDatenAlt[i] = mDaten[i]; mZeitNummerDatenAlt = gAktuelleZeitNummerDatenAlt; } } /** Schaut, ob noch ein Lazy-Evaluation-initStapel()-Aufruf aussteht und fhrt ihn ggf. aus. (Siehe lazyLeereStapel().) Ist zwar eigentlich nicht wirklich const, wird aber in Situationen aufgerufen, wo man sich eigentlich const fhlen mchte. */ void Blop::braucheLeereStapel() const { CASSERT(mBild.istInitialisiert()); if (mZeitNummerLeereStapel < gAktuelleZeitNummerLeereStapel) { ((BildStapel &) mBild).initStapel(mDaten ? mDaten[spezvar_am_platzen] : 0); (long &) mZeitNummerLeereStapel = gAktuelleZeitNummerLeereStapel; } } /** Speichert das aktuelle Bild (d. h. aus den spezvar file und pos) in die Mal-Liste */ void Blop::speichereBild() { CASSERT(mDaten); /* Ggf. gelazyten initStapel()-Aufruf nachholen. Eigentlich unntig, da das schon am Anfang von animiere() passiert sein sollte. Ich fhl' mich aber wohler. */ braucheLeereStapel(); if ((!mMalenErlaubt) || (!mOrt.bemalbar())) throw Fehler("%s","Drawing is not allowed at the moment."); mBild.speichereBild(getSorte(), mDaten[spezvar_file], mDaten[spezvar_pos], mDaten[spezvar_quarter]); } /** Speichert das aktuelle Bild (d. h. aus den spezvar file und pos) in die Mal-Liste von einem anderen Blop, und zwar so, dass es in Ebene ebene gemalt wird. */ void Blop::speichereBildFremd(Ort & ort, int ebene) { CASSERT(mDaten); ort_absolut ziel = ort.berechne(mOrt,*this); if (ziel.korrekt(true)) { Blop & b = ziel.finde(); if ((!mMalenErlaubt) || (!b.mOrt.bemalbar())) throw Fehler("%s","Drawing is not allowed at the moment."); /* Ggf. gelazyten initStapel()-Aufruf nachholen. An dieser Stelle ist das wichtig, weil der bemalte Blop evtl. noch nicht animiert() wurde. */ b.braucheLeereStapel(); b.mBild.speichereBild( getSorte(), mDaten[spezvar_file], mDaten[spezvar_pos], mDaten[spezvar_quarter], ebene); } } /********** Scheduled-Event-Verwaltung **********/ /** Wie execEvent; wird aber nicht sofort ausgefhrt, sondern erst beim nchsten Aufruf von sendeGeschedulteEvents() */ void Blop::scheduleEvent(int evtnr) { /* Bisher ist es noch nicht mglich, mehrere Events fr einen Blop * zu schedulen. */ CASSERT(mScheduleEventNr == event_keins); /* Eigentlich gibt es keinen Grund, innerhalb einer Gleichzeit zu verbieten, ein * Event fr spter zu schedulen. Bisher (2014) sollte das aber nicht vorkommen, und * wenn doch, dann heit das, dass irgend was anderes falsch ist. */ CASSERT(!gGleichZeit); mScheduleEventNr = evtnr; mSEPos = gSEListe.size(); gSEListe.push_back(this); } /** Lscht diesen Blop aus gWEListe (falls ntig) */ void Blop::unscheduleEvent() { if (mScheduleEventNr != event_keins) { gSEListe[mSEPos] = 0; mScheduleEventNr = event_keins; } } std::vector Blop::gSEListe; /** Ruft alle geschedulten Events aus. */ void Blop::sendeGeschedulteEvents() { /* Um mglichst kurze gleichzeiten zu haben, knnte man jede Event-Sorte in einer eigenen Gleichzeit ausfhren. Bisher wei ich aber noch nicht, in welcher Reihenfolge ich das machen wollen wrde. Das einzige, was wirklich logisch erscheint, ist, init-Events vor allen anderen auszufhren. */ beginGleichzeitig(); for (int i = 0; i < (int) gSEListe.size(); i++) if (gSEListe[i] && gSEListe[i]->mScheduleEventNr == event_init) { gSEListe[i]->mScheduleEventNr = event_keins; gSEListe[i]->execEvent(event_init); gSEListe[i] = 0; } endGleichzeitig(); beginGleichzeitig(); for (int i = 0; i < (int) gSEListe.size(); i++) if (gSEListe[i]) { int e = gSEListe[i]->mScheduleEventNr; gSEListe[i]->mScheduleEventNr = event_keins; gSEListe[i]->execEvent(e); } endGleichzeitig(); gSEListe.clear(); } void Blop::playSample(int nr) const {mOrt.playSample(nr);} /********** Statisches Zeug **********/ bool Blop::gGleichZeit = false; long Blop::gAktuelleZeitNummerDatenAlt = 0; long Blop::gAktuelleZeitNummerLeereStapel = 0; /** Liste Zukunfts-Zuweisungen, die sich whrend einer Gleichzeit ansammeln. */ std::vector Blop::gZZ; int Blop::gZZAnz; //bool Blop::gInitEventsAutomatisch = true; /** Wenn es fr den Cual-Programmierer so aussehen soll, als wrden Dinge gleichzeitig passieren (d. h. @ greift zeitverzgert zu), dann sollte man erst beginGleichzeitig() aufrufen, dann die ganzen Blop-Programm- aufrufe, und dann endGleichzeitig(). */ void Blop::beginGleichzeitig() { CASSERT(!gGleichZeit); gGleichZeit = true; gAktuelleZeitNummerDatenAlt++; /* Bis jetzt gibt's noch keine Zukunftszuweisungen: */ gZZAnz = 0; } /** Siehe beginGleichzeitig(). */ void Blop::endGleichzeitig() { CASSERT(gGleichZeit); gGleichZeit = false; /* Zukunftszuweisungen durchfhren */ for (int i = 0; i < gZZAnz; i++) { const tZZ & zz = gZZ[i]; zz.mBlop->setVariableIntern(zz.mVNr, zz.mWert, zz.mOperation); } } /** Bricht eine Gleichzeit einfach ab. Wird beim Auftreten von Fehlern aufgerufen, und zwar vom Constructor von Fehler(). */ void Blop::abbruchGleichzeitig() { gGleichZeit = false; } /** Tut so, als wrde es initStapel() fr alle Blops aufrufen (d. h. die Grafiken lschen. In Wirklichkeit passiert das mit Lazy-Evaluation, d. h. erst dann, wenn's wirklich gebraucht wird. Gebraucht wird's natrlich, wenn ein Blop animiert wird. Aber auch, wenn ein Nachbarblop etwas auf diesen Blop malt. */ void Blop::lazyLeereStapel() { /* Wenn ein Blop sieht, dass seine mZeitNummerLeereStapel-Variable kleiner ist als gAktuelleZeitNummerLeereStapel, ruft er initStapel() auf. */ gAktuelleZeitNummerLeereStapel++; } /** Stellt ein, ob Blops */ // void Blop::setInitEventsAutomatisch(bool iea) { // gInitEventsAutomatisch = iea; // } /***** Fr globales Animationszeug *****/ /** Der Blop, der ld->mGlobalCode ausfhrt. Wird am Ende von LevelDaten::ladLevel() initialisiert. */ Blop Blop::gGlobalBlop; cuyo-2.1.0/src/parser.h0000644000175000017500000001036412422656654011666 00000000000000/* A Bison parser, made by GNU Bison 2.5. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IF_PREC = 258, ELSE_TOK = 259, OR_TOK = 260, AND_TOK = 261, LE_TOK = 262, GE_TOK = 263, NE_TOK = 264, EQ_TOK = 265, BIS_TOK = 266, BITUNSET_ATOK = 267, BITSET_ATOK = 268, NEG_PREC = 269, INCLUDE_TOK = 270, BEGIN_CODE_TOK = 271, END_CODE_TOK = 272, SWITCH_TOK = 273, IF_TOK = 274, VAR_TOK = 275, BUSY_TOK = 276, ADD_TOK = 277, SUB_TOK = 278, MUL_TOK = 279, DIV_TOK = 280, MOD_TOK = 281, BITSET_TOK = 282, BITUNSET_TOK = 283, RND_TOK = 284, GGT_TOK = 285, BONUS_TOK = 286, MESSAGE_TOK = 287, SOUND_TOK = 288, EXPLODE_TOK = 289, VERLIER_TOK = 290, DEFAULT_TOK = 291, DA_KIND_TOK = 292, FREMD_TOK = 293, REINWORT_TOK = 294, WORT_TOK = 295, NACHBAR8_TOK = 296, NACHBAR6_TOK = 297, NULLEINS_TOK = 298, ZAHL_TOK = 299, HALBZAHL_TOK = 300, BUCHSTABE_TOK = 301, PFEIL_TOK = 302 }; #endif /* Tokens. */ #define IF_PREC 258 #define ELSE_TOK 259 #define OR_TOK 260 #define AND_TOK 261 #define LE_TOK 262 #define GE_TOK 263 #define NE_TOK 264 #define EQ_TOK 265 #define BIS_TOK 266 #define BITUNSET_ATOK 267 #define BITSET_ATOK 268 #define NEG_PREC 269 #define INCLUDE_TOK 270 #define BEGIN_CODE_TOK 271 #define END_CODE_TOK 272 #define SWITCH_TOK 273 #define IF_TOK 274 #define VAR_TOK 275 #define BUSY_TOK 276 #define ADD_TOK 277 #define SUB_TOK 278 #define MUL_TOK 279 #define DIV_TOK 280 #define MOD_TOK 281 #define BITSET_TOK 282 #define BITUNSET_TOK 283 #define RND_TOK 284 #define GGT_TOK 285 #define BONUS_TOK 286 #define MESSAGE_TOK 287 #define SOUND_TOK 288 #define EXPLODE_TOK 289 #define VERLIER_TOK 290 #define DEFAULT_TOK 291 #define DA_KIND_TOK 292 #define FREMD_TOK 293 #define REINWORT_TOK 294 #define WORT_TOK 295 #define NACHBAR8_TOK 296 #define NACHBAR6_TOK 297 #define NULLEINS_TOK 298 #define ZAHL_TOK 299 #define HALBZAHL_TOK 300 #define BUCHSTABE_TOK 301 #define PFEIL_TOK 302 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 2068 of yacc.c */ #line 116 "parser.yy" Code * code; Code * codepaar[2]; Str * str; int zahl; int zahlpaar[2]; Knoten * knoten; DefKnoten * defknoten; ListenKnoten * listenknoten; WortKnoten * wortknoten; Variable * variable; Ort * ort; Version * version; CodeArt codeart; OrtHaelfte haelfte; /* Line 2068 of yacc.c */ #line 163 "parser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif cuyo-2.1.0/src/spielfeld.h0000644000175000017500000003024712411361472012330 00000000000000/*************************************************************************** spielfeld.h - description ------------------- begin : Wed Jul 12 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2007,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SPIELFELD_H #define SPIELFELD_H #include #ifdef HAVE_CONFIG_H #include #endif #include #include "blopgitter.h" #include "fall.h" #include "font.h" #define graue_bei_kettenreaktion 5 // (grx - 1) // (grz - minflopp) /* gibt an, um wie viele Pixel pro Zeitschritt sich alles beim Reihe-Rbergeben verschiebt; sollte Teiler von gric sein */ #define reihe_rueber_senkrecht_pixel 8 /* Fr das Grafik-Update-System... */ #define ebene_hintergrund 0 #define ebene_blops 2 #define ebene_fall 3 #define ebene_hetzrand 4 /* Rckgabewerte fr getFallModus(); wird vom KIPlayer bentigt. */ #define fallmodus_keins 0 #define fallmodus_neu 1 #define fallmodus_unterwegs 2 enum { infoblop_grey, infoblop_grass, infoblop_neighbours, infoblop_chainreaction, infoblop_anz }; class KIPlayer; /** * */ class Spielfeld { public: Spielfeld(bool re); ~Spielfeld(); /** sollte nur aufgerufen werden, wenn papa->spielLaeuft() false liefert; liefert true, wenn alle Spiel-Stop-Animationen fertig sind; liefert brigens auch true, wenn dieser Spieler gar nicht mitspielt */ bool bereitZumStoppen(); /** Lsst den Hetzrand schnell runterkommen (fr die Zeitbonus-Animation). Liefert true, wenn fertig. */ bool bonusSchritt(); /** Liefert true, wenn grade ein Fallendes unterwegs ist. Wird vom KIPlayer bentigt */ int getFallModus() const; /** Liefert einen Pointer auf das Blopgitter zurck. */ BlopGitter * getDatenPtr(); /** Liefert einen Pointer auf die fallendne Blops zurck. Wird von KIPlayer einmal am Anfang aufgerufen und von ort_absolut::finde(). */ const Blop * getFall(int which = 0) const; Blop * getFall(int which = 0); int getFallAnz() const; /** Ersetzt das Fall durch ein neues, das wieder von ganz oben startet. Aber nur, wenn noch beide Hlften dran sind. */ void resetFall(); Blop & getSemiglobal(); /** Liefert die Pos. zurck, an der neue Dinge oben auftauchen. */ int getHetzrandYAuftauch() const; /** Liefert die Pos. zurck, bis wohin noch Dinge liegen drfen, ohne dass man tot ist. */ int getHetzrandYErlaubt() const; /** Liefert die Pos. vom Hetzrand in Pixeln zurck. Wird vom Fall gebraucht. */ int getHetzrandYPix() const ; /** ndert die Hhe vom Hetzrand auf y (in Pixeln). */ void setHetzrandYPix(int y); /** Liefert die (rberreihenbedingte) Hochverschiebung des gesamten Spielfelds. Wird vom Fall bentigt (um seine Koordinaten in Feldern zu berechnen). */ int getHochVerschiebung() const; /** Liefert die Koordinaten eines Felds in Pixeln zurck (ungespiegelt) */ void getFeldKoord(int x, int y, int & xx, int & yy) const; /** Zeigt t gro an. (Oder weniger gro.) */ void setText(const Str & t, bool kleine_schrift = false, int x0 = 0, int x1 = gric*grx); /** Fr whrend des Spiels: Setzt einen Text, der ein paar mal aufblinkt. */ void setMessage(Str mess); /** Setzt das Rechteck x, y, w, h auf upzudaten. */ void setUpdateRect(int x, int y, int w, int h); /** Setzt alles auf upzudaten. */ void setUpdateAlles(); /** Setzt das nchste Fall auf upzudaten... und die Infblops */ void setUpdateNaechstesFall(); /** Hauptmalroutine: Malt alles, was sich geaendert hat, neu */ void malUpdateAlles(); /** Malt (falls noetig) das nchste Fall neu... und die Infoblops */ void malUpdateNaechstesFall(); int getZeit() const; /** Liefert true, wenn diese Spalte um gric/2 verschoben ist (wegen Hex-Modus) */ bool getHexShift(int x) const; protected: /** Malt die ganzen Blops, usw. */ void malUpdateSpielsituation(); /** Malt die Schrift auf den Bildschirm */ void malSchrift(bool mitte /*= true*/, const FontStr & text, int x0, int x1); /** Wenn der Level gespiegelt ist, wird auch das Rechteck gespiegelt. */ void spiegelRect(SDL_Rect & r); /** liefert die Hhe vom hchsten Trmchen */ int getHoehe(); /** berechnet, ob und welche Blops platzen mssen. Auerdem werden den Blops die Kettengren mitgeteilt, und Graue und Punkte verteilt */ bool calcFlopp(); /** sucht die Zusammenhangskomponente von x, y mit Farbe n. Setzt in flopp[][] an den entspr. Stellen das Bit w. Aufruf mit w = 1 um rauszufinden, ob genug gleichfarbige beisammen sind; liefert Anzahl der gleichfarbigen zurck; Danach Aufruf mit w = 2 und richtigem anz-Wert, um den Blops ihre neue Kettengre mitzuteilen. Liefert Anzahl der Punkte zurck, die's dafr gibt (wenn Blops platzen). Nur wenn platzen = true ist, wird platzen durchgefhrt. Sonst bekommen die Blops nur ihre Kettengre mitgeteilt. @return Je nach w Gre der Zshgskomp. oder Anz. d. Punkte */ int calcFloppRec(int flopp[grx][gry], int x, int y, int n, int w, bool platzen = false, bool ist_kettenreaktion = false, int anz = 0); /** verschiebt einen Blop (auch wenn er explodiert oder sonstwie grad animiert ist). Was dort hin soll, von wo der Blop weg ist (z. B. blopart_wirklich_keins) kann bergeben werden. */ void verschiebBlop(int x1, int y1, int x2, int y2, int bg_sorte = blopart_keins); /** Lsst in der Luft hngende Blops ein Stck runterfallen. Liefert zurck, ob sich nichts bewegt hat, nur unten oder auch oben. Bei auchGraue = true, kommen auch Graue, die ganz ber dem Spielfeld hngen. */ int rutschNach(bool auchGraue); public: /** Kmmert sich um hin- und hergeben von Reihen. */ void rueberReihenSchritt(); protected: /** Prft, ob ein Reihenbekommen sinnvoll wre und initiiert es ggf. (Unterhlt sich auch mit dem anderen Spieler). Liefert true, wenn es jetzt grad nicht mglich war, eine Reihe zu bekommen, aber nur weil der andere Spieler noch damit beschftigt war, von einer vorigen Reihe sein Spielfeld runterzuschieben. Unter manchen Umstnden wird dann spter nochmal probiert, eine Reihe zu bekommen. */ bool bekommVielleichtReihe(); /***** Variablen, die die ganze Zeit konstant sind *****/ /** true, wenn rechter von den beiden Spielern */ bool mRechterSpieler; /***** Variablen, die sich hufig ndern *****/ /** Text, der grade angezeigt wird (falls das Spiel nicht luft) */ FontStr mText; /** True, wenn die Schrift von mText klein sein soll. */ bool mTextKlein; /** Horizontal clipping coordinates for mText. */ int mTextX0,mTextX1; /** Text, der grade blinkt */ Str mMessageText; /** Blink-Zeitzhler. */ int mMessageZeit; /** _die_ Spielfelddaten */ BlopGitter mDaten; /** Alle Fall-Daten (Pointer, damit "mFall = mNaechsterFall" keine Daten rumschieben muss) */ Fall *mFall; Fall *mNaechsterFall; /** Der semi-globale Blop */ Blop mSemiglobal; /** Die Info-Blops */ Blop mInfoBlops[infoblop_anz]; bool mInfoBlopActive[infoblop_anz]; /** Zeit innerhalb des Levels */ int mZeit; /** Hhe in Pixeln vom Rand, der mit der Zeit runterkommt, damit der Level nicht so ewig geht */ int mHetzrandYPix; /** Hhe in Feldern vom Rand */ int mHetzrandY; /** True, wenn das Fall grade frisch aufgetaucht ist. Der KI-Player will das wissen. */ bool mFallIstNeu; /** eigentlicher Modus */ int mModus; /** Aktueller Stand des Reihen hin- und hergebens. */ int mRueberReihenModus; /** True, wenn wir so lange probieren, eine Reihe zu bekommen, bis der andere Spieler sagt, dass wir wirklich keine bekommen. */ bool mWillHartnaeckigReihe; /** Aktuelle Pos. der Reihe beim Rberrutschen. */ int mRestRueberReihe; /** true, wenn grade schon was geplatzt ist. Wird auf false gesetzt, wenn ein fallendes aufkommt und auf true, wenn etwas fertig geplatzt ist. */ bool mKettenreaktion; /** Anzahl der Grauen, die darauf warten, runterzukommen */ int mGrauAnz; int mGrasAnz; /** != 0 whrend des Reihen hin und hergebens. Um so viele Pixel ist das gesamte Spielfeld nach oben verschoben. */ int mHochVerschiebung; /* Die folgenden Variablen geben an, was von malUpdate() neu gemalt werden soll. Sie sollten nur von setUpdateRect() u.ae. gendert werden. */ bool mUpdateBlop[grx][gry + 2]; // welche einzelnen Blops neu malen (inkl. Hexmodus-Unterrand) bool mUpdateAlles; // true heisst: alles neu malen bool mUpdateNaechstesFall; private: /* Liefert zurueck, zu wie vielen Nachbarblops sich Blop b an Position x,y verbinden wuerde. Wird von createStartDist() verwendet. */ int blopVerbindungen(const Blop & b, int x, int y); /* Startdist aus Leveldaten auslesen und ins Spielfeld schreiben */ void createStartDist(); public: /** Schaltet die Spielfeld-Anzeige aus, damit "Loading level" angezeigt werden kann... */ void ladeLevelModus(); /** Initialisiert alles fr's Spiel. Schaltet die Spielfeldanzeige an. Muss in einer Gleichzeit aufgerufen werden, fr die init-Events. Danach muss noch einmal animiere() aufgerufen werden, damit alle Blops wissen, wie sie aussehen, und damit die Grafik gemalt wird. */ void startLevel(); /** Spiel abbrechen (sofort, ohne Animation; oder die Animation ist schon vorbei). */ void stopLevel(); /***** Funktionen, die einmal pro Spielschritt aufgerufen werden *****/ /** Um Fall kmmern. (Aber nicht darum, neues Fall zu erzeugen). */ void fallSchritt(); /** kmmert sich ggf. um blinkendes Message */ void blinkeMessage(); /** Sorgt dafr, dass bei Spielende bei geeigneter Gelegenheit auch in diesem Spielfeld das Spiel beendet wird */ void testeSpielende(); /** Bewegt den Hetzrand eins nach unten. Testet auch, ob dabei was berdeckt wird. */ void bewegeHetzrand(); /** Sendet sich selbst (ggf.) zufllige Graue */ void zufallsGraue(); /** Zusammenhangskomponenten bestimmen und ggf. Explosionen auslsen */ void testeFlopp(); /** Ein Schritt vom Spiel. Animationen wird *nicht* gemacht. Dazu muss animiere() aufgerufen werden. (Weil alle Animationen innerhalb einer eigenen Gleichzeit stattfinden sollen.) spielSchritt() sollte innerhalb einer Gleichzeit aufgerufen werden fr evtl. auftretende Events. */ void spielSchritt(); /** Fhrt alle Animationen durch. Sollte innerhalb einer Gleichzeit aufgerufen werden. Zählt auch die Gras-Blobs neu durch. */ void animiere(); /** Fhrt eine der nachfolgenden Tasten-Routinen aus. (t = taste_*). */ void taste(int t); /** Bewegt das Fall eins nach links */ void tasteLinks(); /** Bewegt das Fall eins nach rechts */ void tasteRechts(); /** Dreht das Fall */ void tasteDreh(); /** ndert die Fallgeschwindigkeit vom Fall */ void tasteFall(); public: /** Graue von anderem Spieler bekommen; wird ignoriert, falls dieser Spieler grad nicht spielt */ void empfangeGraue(int g); int getGrauAnz() const; int getGrasAnz() const; /** liefert zurck, ob wir dem anderen Spieler eine Reihe geben (er hat Hhe h); Antwort ist eine der Konstanten bewege_reihe_xxx */ int bitteUmReihe(int h); /** gibt einen Stein an den anderen Spieler rber; Blop wird in s zurckgeliefert */ void gebStein(Blop & s); }; #endif cuyo-2.1.0/src/datendatei.cpp0000644000175000017500000002257512400104763013017 00000000000000/*************************************************************************** datendatei.cpp - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2005,2006,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cuyointl.h" #include "datendatei.h" #include "knoten.h" /** In parser.yy definiert. */ void parse(const Str & name, DefKnoten * erg); DatenDatei::DatenDatei(): mDaten(new DefKnoten()) /* Leerer Knoten ohne Vater */ { /* Das Squirrel sitzt am Anfang ganz oben */ initSquirrel(); } DatenDatei::~DatenDatei() { delete mDaten; } /** Entfernt alles, was bisher geladen wurde. Aufrufen, wenn man alles neu laden mchte. */ void DatenDatei::leeren() { delete mDaten; mDaten = new DefKnoten(); /* Squirrel neu setzen. (Sonst stimmt der Pointer nicht mehr.) */ initSquirrel(); } /** Ldt die angegebene Datei. (Kann mehrmals aufgerufen werden, um mehrere Dateien gleichzeitig zu laden.) */ void DatenDatei::laden(const Str & name) { parse(name, mDaten); } /***** Squirrel-Methoden *****/ /** Setzt das Squirrel an die Wurzel des Baums. */ void DatenDatei::initSquirrel() { mSquirrelPosString = ""; mSquirrelKnoten = mDaten; mSquirrelCodeKnoten = mDaten; } /** Liefert true, wenn das Squirrel sich an einer Stelle des Baums befindet, die existiert. */ bool DatenDatei::existiertSquirrelKnoten() const { return mSquirrelKnoten; } /** Liefert die Position des Squirrels als String. */ Str DatenDatei::getSquirrelPosString() const { return mSquirrelPosString; } /** Das Eichhrnchen klettert weiter weg von der Wurzel. Wird von DatenDateiPush benutzt. */ void DatenDatei::kletterWeiter(const Str & na, const Version & version) { /* Neuen Abschnittnamen bauen */ if (!mSquirrelPosString.isEmpty()) mSquirrelPosString += '/'; mSquirrelPosString += na; /* Knoten zum neuen Abschnitt suchen */ mSquirrelKnoten = (DefKnoten *) getEintragKnoten(na, version, true, type_DefKnoten); /* Wenn dieser Unterabschnitt existiert, dann auch die Codeen dort suchen. */ if (mSquirrelKnoten) mSquirrelCodeKnoten = mSquirrelKnoten; } /** Liefert die Squirrel-Position zurck (und zwar mSquirrelCodeKnoten; siehe dort). */ DefKnoten * DatenDatei::getSquirrelPos() const { return mSquirrelCodeKnoten; } /***** Eintrag-Methoden *****/ /** Liefert den angegebenen Eintrag beim Squirrel. Prft, ob der Typ der gewnschte ist. Liefert 0, wenn's den Eintrag nicht gibt, aber defaultVorhanden. Throwt bei sonstigem Fehler. */ Knoten * DatenDatei::getEintragKnoten(const Str & schluessel, const Version & version, bool defaultVorhanden, int typ) const { if (!mSquirrelKnoten) { if (defaultVorhanden) return 0; else throw Fehler("%s required but not defined",schluessel.data()); } Knoten * ret = mSquirrelKnoten->getKind(schluessel,version, defaultVorhanden); if (ret) if (typ != type_egal && ret->type() != typ) throw Fehler("Wrong type on the righthand side of %s%s=", schluessel.data(), version.toString().data()); return ret; } /** Gibt's den Eintrag? */ bool DatenDatei::hatEintrag(const Str & schluessel) const { return mSquirrelKnoten->enthaelt(schluessel); } /** Liefert den Eintrag, wenn er existiert, sonst null, wenn defaultVorhanden, sonst wird gethrowt. */ const DatenKnoten * DatenDatei::getEintrag(const Str & schluessel, const Version & version, bool defaultVorhanden, int typ /*= type_EgalDatum*/) const { Knoten * e = getEintragKnoten(schluessel, version, defaultVorhanden, type_ListenKnoten); if (e) return ((ListenKnoten *) e)->getDatum(0)->assert_datatype(typ); else return 0; } /** Dito fr Wrter. Default fr def ist "". */ Str DatenDatei::getWortEintragOhneDefault(const Str & schluessel, const Version & version) const { return getEintrag(schluessel,version,false,type_WortDatum)->getWort(); } Str DatenDatei::getWortEintragMitDefault(const Str & schluessel, const Version & version, Str def /*= Str()*/) const { const DatenKnoten * e = getEintrag(schluessel,version,true,type_WortDatum); if (e) return e->getWort(); else return def; } /** Liefert den Eintrag als Zahl. */ int DatenDatei::getZahlEintragOhneDefault(const Str & schluessel, const Version & version) const { return getEintrag(schluessel,version,false,type_ZahlDatum)->getZahl(0); } int DatenDatei::getZahlEintragMitDefault(const Str & schluessel, const Version & version, int def /*= 0*/) const { const DatenKnoten * e = getEintrag(schluessel,version,true,type_ZahlDatum); if (e) { return e->getZahl(0); } else return def; } bool intZuBool(int i) { switch (i) { case 0: return false; case 1: return true; default: throw Fehler("0 or 1 expected, got %d.",i); } } bool DatenDatei::getBoolEintragOhneDefault(const Str & schluessel, const Version & version) const { return intZuBool(getZahlEintragOhneDefault(schluessel,version)); } bool DatenDatei::getBoolEintragMitDefault(const Str & schluessel, const Version & version, bool def) const { return intZuBool(getZahlEintragMitDefault(schluessel,version,(def ? 1 : 0))); } /** Liefert den Eintrag als Farbe. */ Color DatenDatei::getFarbEintragOhneDefault(const Str & schluessel, const Version & version) const { ListenKnoten * e = getListenEintrag(schluessel,version,false); if (e->getLaenge() != 3) throw Fehler("%s","Color (r,g,b) expected"); return Color(e->getDatum(0)->assert_datatype(type_ZahlDatum)->getZahl(), e->getDatum(1)->assert_datatype(type_ZahlDatum)->getZahl(), e->getDatum(2)->assert_datatype(type_ZahlDatum)->getZahl()); } Color DatenDatei::getFarbEintragMitDefault(const Str & schluessel, const Version & version, const Color & def /*= black*/) const { ListenKnoten * e = getListenEintrag(schluessel,version,true); if (e == 0) return def; if (e->getLaenge() != 3) throw Fehler("%s","Color (r,g,b) expected"); return Color(e->getDatum(0)->assert_datatype(type_ZahlDatum)->getZahl(), e->getDatum(1)->assert_datatype(type_ZahlDatum)->getZahl(), e->getDatum(2)->assert_datatype(type_ZahlDatum)->getZahl()); } /** Liefert einen Eintrag als Knoten */ ListenKnoten * DatenDatei::getListenEintrag(const Str & schluessel, const Version & version, bool defaultVorhanden) const { Knoten * e = getEintragKnoten(schluessel, version, defaultVorhanden, type_ListenKnoten); if (e) { /* Frher freute sich der Aufrufer darber, da er wusste, da die Liste nur Wrter enthlt. Es knnten noch Probleme existieren */ ListenKnoten * ret = (ListenKnoten*) e; for (int i = 0; i < ret->getLaenge(); i++) if (ret->getKind(i)->type() != type_DatenKnoten) throw Fehler("%s","List of atomic data expected"); return ret; } else return 0; } /** Sucht einen Code beim Squirrel oder nher an der Wurzel. Behlt den Besitz am Code/an der VarDefinition. Throwt bei nicht-existenz. */ Code * DatenDatei::getCode(const Str & name, const Version & version, bool defaultVorhanden) { /* Einen Codeabschnitt sollte es eigentlich immer geben - zumindest wenn die Datei auf ist. Aber die sollte immer auf sein. */ CASSERT(mSquirrelCodeKnoten); return (Code *) mSquirrelCodeKnoten->getDefinition(namespace_prozedur, name, version, defaultVorhanden); } VarDefinition * DatenDatei::getVarDef(const Str & name, const Version & version, bool defaultVorhanden) { /* Einen Codeabschnitt sollte es eigentlich immer geben - zumindest wenn die Datei auf ist. Aber die sollte immer auf sein. */ CASSERT(mSquirrelCodeKnoten); return (VarDefinition *) mSquirrelCodeKnoten->getDefinition( namespace_variable, name, version, defaultVorhanden); } /***************************************************************************/ DatenDateiPush::DatenDateiPush(DatenDatei & c, const Str & name, const Version & version, bool verlange /*= true*/): mConf(c) { mMerkName = mConf.mSquirrelPosString; mMerkKnoten = mConf.mSquirrelKnoten; mMerkCodeKnoten = mConf.mSquirrelCodeKnoten; mConf.kletterWeiter(name,version); if (verlange && !mConf.existiertSquirrelKnoten()) throw Fehler("Section %s does not exist.", mConf.getSquirrelPosString().data()); } DatenDateiPush::~DatenDateiPush() { mConf.mSquirrelPosString = mMerkName; mConf.mSquirrelKnoten = mMerkKnoten; mConf.mSquirrelCodeKnoten = mMerkCodeKnoten; } cuyo-2.1.0/src/ort.h0000644000175000017500000000665512411361472011173 00000000000000/*************************************************************************** ort.h - description ------------------- begin : Sat Nov 26 2005 copyright : (C) 2005 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2005,2006,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef ORT_H #define ORT_H #include "definition.h" class Blop; class Code; class DefKnoten; enum AbsOrtArt { absort_feld, absort_fall, absort_semiglobal, absort_global, absort_info, /* absort_bemalbar ist ein dummy-Wert für reine Bildstapelblops. * Der Ort des Blops wird nicht wirklich angegeben (er wird auch * nicht benötigt), aber malen kann man trotzdem dort hin */ absort_bemalbar, absort_nirgends }; struct ort_absolut { AbsOrtArt art; bool rechts; /** bei absort_global und absort_nirgends irrelevant */ int x; /** nur bei absort_feld und absort_fall relevant. bei absort_fall zaehlt es mod 2 */ int y; /** nur bei absort_feld und absort_fall relevant. With absort_fall it determines which fall is meant: 0 for the current fall. 1 for the fall preview. 2 for the fall preview preview, if we ever do that. and so on. */ ort_absolut(AbsOrtArt aart, bool arechts = false, int ax = 0, int ay = 0) : art(aart), rechts(arechts), x(ax), y(ay) {} /** Darf finde() benutzt werden? Normalerweise werden Orte von reine Bildstapelblops als inkorrekt angesehen. mit willNurMalen = true kann das geändert werden. */ bool korrekt(bool willNurMalen = false); Blop & finde(); /** Hat der Ort einen Platz auf dem Bildschirm? */ bool bemalbar(); Str toString() const; void playSample(int nr) const; /* Kann mit absort_fall nicht umgehen. */ }; enum OrtArt { ortart_hier, ortart_relativ_feld, ortart_relativ_fall, ortart_absolut }; enum OrtHaelfte { haelfte_hier, haelfte_drueben, haelfte_links, haelfte_rechts }; class Ort: public Definition { /** Siehe Konstanten ortart_... */ OrtArt mArt; AbsOrtArt mAbsArt; /** nur relevant bei ortart_absolut */ OrtHaelfte mHaelfte; /** irrelevant bei ortart_hier oder absort_global */ Code * mXKoord; Code * mYKoord; public: /** ortart_hier */ Ort(); /** ortart_relativ_fall */ Ort(Code * x); /** ortart_relativ_feld */ Ort(Code * x, Code * y); /** ortart_absolut */ Ort(AbsOrtArt absart, Code * x = 0, Code * y = 0); Ort(DefKnoten * knoten, const Ort & f, bool neueBusyNummern); ~Ort(); bool hier(); void setzeHaelfte(OrtHaelfte haelfte); ort_absolut berechne(ort_absolut vonhieraus, Blop & fuer_code); Str toString() const; }; #endif cuyo-2.1.0/src/stringzeug.h0000644000175000017500000000440411674440321012557 00000000000000/*************************************************************************** stringzeug.h - description ------------------- begin : Mon Mar 20 2006 copyright : (C) 2006 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef STRINGZEUG_H #define STRINGZEUG_H #include #include #include struct Str { friend Str operator + (const Str &, const Str &); friend Str operator + (const Str &, const char *); friend Str operator + (const Str &, char); friend Str operator + (char, const Str &); private: std::string inhalt; Str(const std::string &); public: Str(); Str(const char *); Str(const Str &); bool isEmpty() const; int length() const; char operator [] (int) const; char & operator [] (int); const char * data() const; Str left(int) const; Str mid(int, int) const; Str right(int) const; void operator += (char); void operator += (const Str &); bool operator == (const Str &) const; bool operator < (const Str &) const; bool operator != (const Str &) const; bool operator != (const char *) const; }; Str operator + (const Str &, const Str &); Str operator + (const Str &, const char *); Str operator + (const Str &, char); Str operator + (char, const Str &); Str _sprintf(const char * format, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 1, 2))) #endif ; Str _vsprintf(const char * format, va_list ap); void print_to_stderr(const Str &); #endif cuyo-2.1.0/src/scanner.ll0000644000175000017500000001766712407121062012177 00000000000000%option noyywrap %option never-interactive %{ /*************************************************************************** scanner.ll - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "inkompatibel.h" #include "cuyointl.h" #include "code.h" #include "knoten.h" #include "ort.h" /* parser.h darf erst hier included werden, weil es gemeinerweise ohne selbst zu includen auf code.h bis ort.h zugreift */ #include "parser.h" /* Um nach include-Dateien zu suchen...: */ #include "pfaditerator.h" /***** lex-Einstellungen *****/ /* _Nicht_ so parsen, dass man interaktiv die level.descr eingeben knnte, whrend sie geparst wird. */ #define YY_NEVER_INTERACTIVE 1 /* Wenn bison reentrant sein soll (d. h. nur lokale Variablen benutzen), wird die an die Lex-Hauptroutine yylex() noch ein Pointer bergeben auf die Variable, in die man den lval schreiben kann. */ #define YY_DECL int yylex(YYSTYPE * lvalPtr) extern Str gDateiName; extern int gZeilenNr; extern bool gGabFehler; Str * expandiereBackslash(char * a) { Str r; a++; // erstes " berspringen while (*(a + 1)) { // Letztes Zeichen auch auslassen if (*a == '\\') { a++; switch (*a) { case 'n': r += '\n'; break; case '"': r += '"'; break; case '\\': r += '\\'; break; default: throw Fehler("%s","Unknown escape sequence"); } } else r += *a; a++; } return new Str(r); } /** Wechselt die Lex-Datei temporr. Liefert was zurck, was an popLex bergeben werden muss, um wieder zurckzuschalten. Throwt evtl. setzdefault wird an den Pfaditerator bergeben. */ void * pushLex(const char * na, bool setzdefault = false) { /* Alte Datei merken */ YY_BUFFER_STATE merkBuf = YY_CURRENT_BUFFER; /* Neue Datei suchen und oeffnen. */ PfadIterator pi(na, false, setzdefault); FILE * neudat; for (; !(neudat = fopen(pi.pfad().data(), "r")); ++pi) {} /* Auf neue Datei umschalten */ yy_switch_to_buffer(yy_create_buffer(neudat, YY_BUF_SIZE)); return merkBuf; } void popLex(void * merkBuf) { /* Aktuelle Datei schlieen */ FILE * f = yyin; yy_delete_buffer( YY_CURRENT_BUFFER ); /* Die Datei lieber erst nach dem yy_delete_buffer() schlieen. Man wei nicht so recht, ob yy_delete_buffer() noch was mit der Datei macht... */ fclose(f); /* Auf ursprngliche Datei zurckschalten */ yy_switch_to_buffer((YY_BUFFER_STATE) merkBuf); /* Hoffentlich kmmert sich lex drum, die neu geffnete Datei yyin wieder zu schlieen und yyin zurckzusetzen. */ } %} STRINGBUCH [ !#-\[\]-\xff]|(\\[n"\\]) %% var { return VAR_TOK; } busy { return BUSY_TOK; } switch { return SWITCH_TOK; } if { return IF_TOK; } else { return ELSE_TOK; } rnd { return RND_TOK; } gcd { return GGT_TOK; } include { return INCLUDE_TOK; } bonus { return BONUS_TOK; } message { return MESSAGE_TOK; } sound { return SOUND_TOK; } lose { return VERLIER_TOK; } explode { return EXPLODE_TOK; } default { return DEFAULT_TOK; } reapply { return DA_KIND_TOK; } "<<" { return BEGIN_CODE_TOK; } ">>" { return END_CODE_TOK; } ".." { return BIS_TOK; } [01] { lvalPtr->zahl = yytext[0]-'0'; return NULLEINS_TOK; } [A-Za-z] { if (yytext[0] >= 'a') lvalPtr->zahl = yytext[0] - 'a' + 26; else lvalPtr->zahl = yytext[0] - 'A'; return BUCHSTABE_TOK; } [A-Za-z]+ { lvalPtr->str = new Str(yytext); return REINWORT_TOK; } [A-Za-z_][A-Za-z_0-9]* { lvalPtr->str = new Str(yytext); return WORT_TOK; } [01?][01?][01?][01?][01?][01?][01?][01?] { lvalPtr->str = new Str(yytext); return NACHBAR8_TOK; } [01?][01?][01?][01?][01?][01?] { lvalPtr->str = new Str(yytext); return NACHBAR6_TOK; } ([0-9]+)|(0[Xx][0-9A-Fa-f]+) { sscanf(yytext, "%i", &lvalPtr->zahl); return ZAHL_TOK; } [0-9]*\.5 { /* Falls der Benutzer ".5" schreibt, wird sscanf nix scannen... */ lvalPtr->zahl = 0; /* sscanf mit %d liest nur alles vor dem "." */ sscanf(yytext, "%d", &lvalPtr->zahl); return HALBZAHL_TOK; } "->" { lvalPtr->zahl = ohne_merk_pfeil; // siehe code.h return PFEIL_TOK; } "=>" { lvalPtr->zahl = mit_merk_pfeil; // siehe code.h return PFEIL_TOK; } "==" { return EQ_TOK; } "!=" { return NE_TOK; } "<=" { return LE_TOK; } ">=" { return GE_TOK; } "&&" { return AND_TOK; } "||" { return OR_TOK; } "+=" { return ADD_TOK; } "-=" { return SUB_TOK; } "*=" { return MUL_TOK; } "/=" { return DIV_TOK; } "%=" { return MOD_TOK; } ".+=" { return BITSET_TOK; } ".-=" { return BITUNSET_TOK; } ".+" { return BITSET_ATOK; } ".-" { return BITUNSET_ATOK; } "@@" { return FREMD_TOK; } \"({STRINGBUCH})*\" { PBEGIN_TRY lvalPtr->str = expandiereBackslash(yytext); return WORT_TOK; PEND_TRY(lvalPtr->str = new Str()) } [=+,;(){}*@/~!%:<>&|.] {return yytext[0];} "-" {return yytext[0];} "[" {return yytext[0];} "]" {return yytext[0];} [ \t]+ /* Leerzeug */ "#"+[^\n]* /* Kommentar */ \n gZeilenNr++; . { PBEGIN_TRY throw Fehler(_sprintf("Wrong character '%s'", yytext)); PEND_TRY(;); } %% cuyo-2.1.0/src/kiplayer.cpp0000644000175000017500000001200312421555414012524 00000000000000/*************************************************************************** kiplayer.cpp - description ------------------- begin : Wed Jul 25 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "nachbariterator.h" #include "spielfeld.h" #include "kiplayer.h" #include "aufnahme.h" #include "fehler.h" #include "prefsdaten.h" KIPlayer::KIPlayer(Spielfeld * sp): mSp(sp) { mDaten = mSp->getDatenPtr(); } KIPlayer::~KIPlayer(){ } /** Teilt der KI mit, dass ein neuer Level anfngt. (Initialisiert alles.) */ void KIPlayer::startLevel() { /* Tja, also. So richtig viel zum Initialisieren gibt's nich. */ } /** Einmal pro Spielschritt aufrufen, wenn der Computer auch spielen soll */ void KIPlayer::spielSchritt(){ int fall = mSp->getFallModus(); if (fall == fallmodus_neu) { /* Ein neuer Stein kommt. Wo wollen wir ihn denn hin haben? */ /* Die Menge der Zge mit bester Bewertung raussuchen */ int bestx[grx * 4], bestr[grx * 4]; int bestanz = 0; int bestbew = -0x7fff; for (int x = 0; x < grx; x++) { for (int r = 0; r < 4; r++) { int bew = bewerteZweiBlops(x, r); //printf("{%d,%d->%d}", x, r, bew); if (bew > bestbew) { bestbew = bew; bestanz = 0; } if (bew == bestbew) { bestx[bestanz] = x; bestr[bestanz] = r; bestanz++; } } } int r = Aufnahme::rnd(bestanz); mNochDx = bestx[r] - grx / 2 + 1; mNochDr = bestr[r]; //printf("\n[%d %d %d %d]\n", bestbew, r, mNochDx, mNochDr); mZuTun = true; mNochWart = PrefsDaten::getKIGeschwLin(); } if (mZuTun && fall != fallmodus_keins) { mNochWart -= 1; if (mNochWart <= 0) { mNochWart += PrefsDaten::getKIGeschwLin(); if (mNochDr != 0) { mSp->tasteDreh(); mNochDr--; } else if (mNochDx > 0) { mSp->tasteRechts(); mNochDx--; } else if (mNochDx < 0) { mSp->tasteLinks(); mNochDx++; } else { mSp->tasteFall(); mZuTun = false; } } } } /** Liefert zurck, wie gut ein Blop der Farbe f in Spalte y wre, um dy nach oben verschoben. */ int KIPlayer::bewerteBlop(int x, int dy, int f) { if (x < 0 || x >= grx) return -0x6666; /* Richtige y-Koordinate suchen. (getFeldArt liefert auch oberhalb des Spielfelds blopart_keins zurck.) */ int y = gry - 1; while (mDaten->getFeldArt(x, y) != blopart_keins) y--; y -= dy; /* Wie steht's mit dem Abstand nach oben? */ int yr = y - mSp->getHetzrandYAuftauch(); if (yr <= 0) return -0x6666; int ret = -ld->mKINHoehe * gry / yr; /* Womit verbinden wir? */ for (NachbarIterator i(ld->mSorten[f], true, x, y); i; ++i) if (mDaten->koordOK(i.mX, i.mY)) { if (mDaten->getFeld(i.mX, i.mY).getFarbe() == f) ret += ld->mKINAnFarbe; if (mDaten->getFeldVerhalten(i.mX, i.mY, verhindert_gewinnen)) ret += ld->mKINAnGras; if (mDaten->getFeldVerhalten(i.mX, i.mY, platzt_bei_platzen)) ret += ld->mKINAnGrau; } /* Zwei ber was von der gleichen Farbe? */ if (mDaten->koordOK(x, y + 2)) if (mDaten->getFeld(x, y + 2).getFarbe() == f) ret += ld->mKINZweiUeber; // printf("(%d %d)", ld->mKINEinfarbigSenkrecht, ret); return ret; } /** Liefert zurck, wie gut das Fallende bei x in Richtung r wre. (r = Anzahl der Dreh-Tastendrcke) */ int KIPlayer::bewerteZweiBlops(int x, int r) { const Blop * fall = mSp->getFall(); int f0 = fall[0].getFarbe(); int f1 = fall[1].getFarbe(); /* Fr Level, bei denen die Farbe sich beim Drehen ndert...: */ //for (int i = 0; i < r; i++) { // f0 = ld->mDrehWechsel[f0]; // f1 = ld->mDrehWechsel[f1]; //} /* Wenn gespiegelt, dann die beiden senkrecht-Richtungen vertauschen */ if (ld->mSpiegeln && (r & 1)) r ^= 2; int senkbon = (f0 == f1) * ld->mKINEinfarbigSenkrecht; //printf("[%d-%d:%d=%d]", f0, f1, senkbon, ld->mKINEinfarbigSenkrecht); switch (r) { case 0: return bewerteBlop(x, 0, f0) + bewerteBlop(x + 1, 0, f1); case 1: return bewerteBlop(x, 1, f0) + bewerteBlop(x, 0, f1) + senkbon; case 2: return bewerteBlop(x + 1, 0, f0) + bewerteBlop(x, 0, f1); case 3: return bewerteBlop(x, 0, f0) + bewerteBlop(x, 1, f1) + senkbon; } CASSERT(false); return 0; /* Gegen Warnungen... */ } cuyo-2.1.0/src/parser.cc0000644000175000017500000032762312422656654012035 00000000000000/* A Bison parser, made by GNU Bison 2.5. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ /* Line 268 of yacc.c */ #line 2 "parser.yy" /*************************************************************************** parser.yy - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "cuyointl.h" #include "code.h" #include "fehler.h" #include "knoten.h" #include "variable.h" #include "ort.h" #include "version.h" #include "global.h" #include "leveldaten.h" #include "sound.h" #define YYMALLOC malloc #define YYFREE free /***********************************************************************/ /* Globale Parse-Variablen */ /** Fr Fehlerausgabe: Aktueller Dateiname */ Str gDateiName; /** Fr Fehlerausgabe: Aktuelle Zeilen-Nummer */ int gZeilenNr; /** True, wenn es whrend des Parsens (mindestens) einen Fehler gab. */ bool gGabFehler; /** Wenn der Parser aufgerufen wird, muss in DefKnoten schon ein DefKnoten stehen, an den alles geparste angefgt wird. Normalerweise erzeugt man einen neuen Defknoten. Beim Includen will man da aber schon was drin haben. Siehe auch %type alles */ static DefKnoten * gAktDefKnoten; //#define MAX_INCLUDE_TIEFE 16 /** YY_BUFFER_STATE ist ein flex-Datentyp fr eine Datei, an der grade geparst wird. */ //static YY_BUFFER_STATE gIncludeStack[MAX_INCLUDE_TIEFE]; /** Aktuelle Include-Tiefe. (0 bei Hauptdatei) */ //static int gIncludeTiefe; //static DefKnoten * gIncludeMerk; /* Beim Erzeugen eines Codes mssen einige Variablen jedes Mal bergeben werden: - der zugehrige DefKnoten, damit ggf. noch Variablen reserviert werden knnen (genauer: die Busy-Variable). - Dateiname und Zeilennummer, damit der Code schnere Fehlermeldungen ausgeben kann. Damit ich das aber nicht jedes Mal eintippen muss, hier ein paar Macros: */ #define newCode0(ART) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART) #define newCode1(ART, X1) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1) #define newCode2(ART, X1, X2) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2) #define newCode3(ART, X1, X2, X3) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2, X3) #define newCode4(ART, X1, X2, X3, X4) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2, X3, X4) /***********************************************************************/ #define VIEL 32767 /* PBEGIN_TRY und PEND_TRY() fangen Fehler ab und geben sie aus, damit weitergeparst werden kann und mehrere Fehler gleichzeitig ausgegeben werden knnen. Sie werden in fehler.h definiert. */ #define YYDEBUG 1 /* Bug in Bison? Er scheint den Stack nicht automatisch vergrern zu wollen, wenn er voll ist. Es sieht so aus, als htte er angst, dass da c++-Variablen vorkommen, wo er (wegen constructor und so) nicht einfach so rumalloziieren kann. (Ich wei nicht, was der LTYPE ist, von dem er nicht festgestellt hat, das er trivial ist.) */ #define YYLTYPE_IS_TRIVIAL 1 /* Line 268 of yacc.c */ #line 184 "parser.cc" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IF_PREC = 258, ELSE_TOK = 259, OR_TOK = 260, AND_TOK = 261, LE_TOK = 262, GE_TOK = 263, NE_TOK = 264, EQ_TOK = 265, BIS_TOK = 266, BITUNSET_ATOK = 267, BITSET_ATOK = 268, NEG_PREC = 269, INCLUDE_TOK = 270, BEGIN_CODE_TOK = 271, END_CODE_TOK = 272, SWITCH_TOK = 273, IF_TOK = 274, VAR_TOK = 275, BUSY_TOK = 276, ADD_TOK = 277, SUB_TOK = 278, MUL_TOK = 279, DIV_TOK = 280, MOD_TOK = 281, BITSET_TOK = 282, BITUNSET_TOK = 283, RND_TOK = 284, GGT_TOK = 285, BONUS_TOK = 286, MESSAGE_TOK = 287, SOUND_TOK = 288, EXPLODE_TOK = 289, VERLIER_TOK = 290, DEFAULT_TOK = 291, DA_KIND_TOK = 292, FREMD_TOK = 293, REINWORT_TOK = 294, WORT_TOK = 295, NACHBAR8_TOK = 296, NACHBAR6_TOK = 297, NULLEINS_TOK = 298, ZAHL_TOK = 299, HALBZAHL_TOK = 300, BUCHSTABE_TOK = 301, PFEIL_TOK = 302 }; #endif /* Tokens. */ #define IF_PREC 258 #define ELSE_TOK 259 #define OR_TOK 260 #define AND_TOK 261 #define LE_TOK 262 #define GE_TOK 263 #define NE_TOK 264 #define EQ_TOK 265 #define BIS_TOK 266 #define BITUNSET_ATOK 267 #define BITSET_ATOK 268 #define NEG_PREC 269 #define INCLUDE_TOK 270 #define BEGIN_CODE_TOK 271 #define END_CODE_TOK 272 #define SWITCH_TOK 273 #define IF_TOK 274 #define VAR_TOK 275 #define BUSY_TOK 276 #define ADD_TOK 277 #define SUB_TOK 278 #define MUL_TOK 279 #define DIV_TOK 280 #define MOD_TOK 281 #define BITSET_TOK 282 #define BITUNSET_TOK 283 #define RND_TOK 284 #define GGT_TOK 285 #define BONUS_TOK 286 #define MESSAGE_TOK 287 #define SOUND_TOK 288 #define EXPLODE_TOK 289 #define VERLIER_TOK 290 #define DEFAULT_TOK 291 #define DA_KIND_TOK 292 #define FREMD_TOK 293 #define REINWORT_TOK 294 #define WORT_TOK 295 #define NACHBAR8_TOK 296 #define NACHBAR6_TOK 297 #define NULLEINS_TOK 298 #define ZAHL_TOK 299 #define HALBZAHL_TOK 300 #define BUCHSTABE_TOK 301 #define PFEIL_TOK 302 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 293 of yacc.c */ #line 116 "parser.yy" Code * code; Code * codepaar[2]; Str * str; int zahl; int zahlpaar[2]; Knoten * knoten; DefKnoten * defknoten; ListenKnoten * listenknoten; WortKnoten * wortknoten; Variable * variable; Ort * ort; Version * version; CodeArt codeart; OrtHaelfte haelfte; /* Line 293 of yacc.c */ #line 333 "parser.cc" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 343 of yacc.c */ #line 211 "parser.yy" int yyerror(const char * s); int yylex(YYSTYPE * lvalPtr); /** Wechselt die Lex-Datei temporr. Liefert was zurck, was an popLex bergeben werden muss, um wieder zurckzuschalten. Throwt evtl. setzdefault wird an den Pfaditerator bergeben. Wird in lex.ll definiert, weil da die ntigen Lex-Dinge definiert sind. */ void * pushLex(const char * na, bool setzdefault = false); void popLex(void * merkBuf); /* Line 343 of yacc.c */ #line 358 "parser.cc" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 826 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 70 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 46 /* YYNRULES -- Number of rules. */ #define YYNRULES 160 /* YYNRULES -- Number of states. */ #define YYNSTATES 280 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 302 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 2, 2, 2, 23, 24, 2, 67, 68, 21, 18, 7, 19, 29, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 20, 3, 10, 63, 11, 2, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 64, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 25, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 5, 6, 8, 9, 12, 13, 14, 15, 16, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 10, 15, 19, 21, 23, 25, 29, 30, 34, 36, 40, 41, 46, 48, 50, 54, 56, 58, 62, 64, 66, 70, 73, 77, 81, 85, 89, 93, 94, 97, 103, 107, 111, 113, 115, 117, 121, 123, 127, 128, 131, 135, 137, 139, 141, 145, 150, 152, 156, 161, 166, 173, 181, 185, 189, 191, 193, 196, 198, 201, 202, 204, 211, 213, 218, 223, 228, 230, 232, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 257, 260, 262, 265, 267, 272, 280, 286, 288, 292, 296, 298, 300, 302, 304, 308, 310, 312, 316, 320, 323, 327, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, 386, 390, 394, 398, 403, 410, 413, 416, 420, 422, 424, 426, 429, 431, 433, 435, 437, 439, 441, 442, 444, 445, 447, 451, 453, 457, 463, 464, 466, 467, 469, 473, 475, 479, 485, 488, 491, 493, 495, 497, 500, 502 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 71, 0, -1, -1, 71, 98, 74, 63, 76, -1, 71, 31, 81, 32, -1, 71, 30, 98, -1, 99, -1, 113, -1, 72, -1, 72, 7, 73, -1, -1, 64, 73, 4, -1, 115, -1, 10, 80, 11, -1, -1, 65, 77, 71, 66, -1, 78, -1, 79, -1, 78, 7, 79, -1, 98, -1, 75, -1, 98, 21, 75, -1, 113, -1, 99, -1, 67, 80, 68, -1, 19, 80, -1, 80, 18, 80, -1, 80, 19, 80, -1, 80, 21, 80, -1, 80, 22, 80, -1, 80, 23, 80, -1, -1, 81, 82, -1, 83, 74, 63, 92, 3, -1, 35, 84, 3, -1, 51, 89, 3, -1, 98, -1, 61, -1, 87, -1, 84, 7, 87, -1, 80, -1, 80, 20, 52, -1, -1, 63, 85, -1, 88, 74, 86, -1, 99, -1, 61, -1, 90, -1, 89, 7, 90, -1, 88, 74, 63, 85, -1, 92, -1, 92, 3, 91, -1, 33, 65, 97, 66, -1, 34, 100, 62, 92, -1, 34, 100, 62, 92, 6, 92, -1, 34, 100, 62, 92, 6, 62, 92, -1, 65, 91, 66, -1, 92, 7, 92, -1, 113, -1, 96, -1, 113, 96, -1, 98, -1, 24, 98, -1, -1, 93, -1, 64, 102, 63, 100, 4, 92, -1, 36, -1, 46, 67, 100, 68, -1, 47, 67, 98, 68, -1, 48, 67, 98, 68, -1, 50, -1, 49, -1, 103, 94, 100, -1, 63, -1, 37, -1, 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, -1, 21, -1, 21, 112, -1, 112, 21, -1, 61, -1, 61, 95, -1, 95, -1, 100, 62, 92, 3, -1, 100, 62, 92, 3, 62, 92, 3, -1, 100, 62, 92, 3, 97, -1, 99, -1, 98, 29, 99, -1, 98, 29, 61, -1, 55, -1, 54, -1, 103, -1, 113, -1, 67, 100, 68, -1, 56, -1, 57, -1, 100, 20, 100, -1, 100, 18, 100, -1, 19, 100, -1, 100, 19, 100, -1, 100, 21, 100, -1, 100, 22, 100, -1, 100, 23, 100, -1, 100, 27, 100, -1, 100, 26, 100, -1, 100, 29, 100, -1, 100, 15, 100, -1, 100, 14, 100, -1, 100, 13, 100, -1, 100, 12, 100, -1, 100, 11, 100, -1, 100, 10, 100, -1, 100, 24, 100, -1, 100, 25, 100, -1, 17, 100, -1, 100, 9, 100, -1, 100, 8, 100, -1, 100, 15, 101, -1, 44, 67, 100, 68, -1, 45, 67, 100, 7, 100, 68, -1, 100, 16, -1, 16, 100, -1, 100, 16, 100, -1, 99, -1, 61, -1, 102, -1, 99, 112, -1, 100, -1, 114, -1, 63, -1, 17, -1, 10, -1, 11, -1, -1, 58, -1, -1, 100, -1, 104, 7, 104, -1, 106, -1, 67, 107, 68, -1, 67, 107, 3, 105, 68, -1, -1, 58, -1, -1, 100, -1, 104, 7, 104, -1, 109, -1, 67, 110, 68, -1, 67, 110, 3, 105, 68, -1, 69, 111, -1, 53, 108, -1, 59, -1, 58, -1, 60, -1, 19, 60, -1, 113, -1, 19, 113, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 232, 232, 233, 241, 252, 295, 296, 302, 307, 315, 316, 320, 321, 324, 324, 340, 343, 347, 353, 356, 359, 365, 366, 381, 382, 383, 384, 385, 386, 387, 396, 397, 400, 405, 406, 416, 417, 427, 428, 432, 433, 437, 438, 442, 452, 453, 464, 465, 469, 488, 489, 493, 494, 499, 508, 516, 517, 518, 519, 520, 523, 532, 542, 543, 544, 553, 554, 557, 561, 565, 568, 574, 584, 585, 586, 587, 588, 589, 590, 591, 596, 597, 598, 602, 603, 607, 612, 617, 622, 633, 634, 638, 644, 645, 652, 661, 662, 663, 666, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 697, 700, 707, 708, 709, 713, 724, 734, 735, 748, 749, 753, 754, 755, 756, 760, 761, 765, 766, 767, 771, 772, 773, 780, 781, 785, 786, 787, 791, 792, 793, 800, 801, 808, 809, 815, 819, 822, 823 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "';'", "']'", "IF_PREC", "ELSE_TOK", "','", "OR_TOK", "AND_TOK", "'<'", "'>'", "LE_TOK", "GE_TOK", "NE_TOK", "EQ_TOK", "BIS_TOK", "'!'", "'+'", "'-'", "':'", "'*'", "'/'", "'%'", "'&'", "'|'", "BITUNSET_ATOK", "BITSET_ATOK", "NEG_PREC", "'.'", "INCLUDE_TOK", "BEGIN_CODE_TOK", "END_CODE_TOK", "SWITCH_TOK", "IF_TOK", "VAR_TOK", "BUSY_TOK", "ADD_TOK", "SUB_TOK", "MUL_TOK", "DIV_TOK", "MOD_TOK", "BITSET_TOK", "BITUNSET_TOK", "RND_TOK", "GGT_TOK", "BONUS_TOK", "MESSAGE_TOK", "SOUND_TOK", "EXPLODE_TOK", "VERLIER_TOK", "DEFAULT_TOK", "DA_KIND_TOK", "FREMD_TOK", "REINWORT_TOK", "WORT_TOK", "NACHBAR8_TOK", "NACHBAR6_TOK", "NULLEINS_TOK", "ZAHL_TOK", "HALBZAHL_TOK", "BUCHSTABE_TOK", "PFEIL_TOK", "'='", "'['", "'{'", "'}'", "'('", "')'", "'@'", "$accept", "alles", "versionsmerkmal", "versionierung", "version", "ld_konstante", "rechts_von_def", "@1", "def_liste", "def_liste_eintrag", "konstante", "code_modus", "code_zeile", "proc_def_wort", "var_liste", "echter_default", "unechter_default", "var_def", "var_def_wort", "default_liste", "default_def", "code", "code_1", "set_zeile", "zuweisungs_operator", "stern_at", "buch_stern", "auswahl_liste", "punktwort", "wort", "ausdruck", "intervall", "lokale_variable", "variable", "halbort", "haelften_spez", "absort_klammerfrei", "absort_geklammert", "absort", "relort_klammerfrei", "relort_geklammert", "relort", "ort", "zahl", "halbzahl", "vorzeichen_zahl", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 59, 93, 258, 259, 44, 260, 261, 60, 62, 262, 263, 264, 265, 266, 33, 43, 45, 58, 42, 47, 37, 38, 124, 267, 268, 269, 46, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 61, 91, 123, 125, 40, 41, 64 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 70, 71, 71, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 77, 76, 76, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 82, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 88, 88, 89, 89, 90, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 97, 98, 98, 98, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 102, 102, 103, 103, 104, 104, 105, 105, 105, 105, 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, 111, 112, 112, 113, 113, 114, 114, 115, 115 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 5, 4, 3, 1, 1, 1, 3, 0, 3, 1, 3, 0, 4, 1, 1, 3, 1, 1, 3, 1, 1, 3, 2, 3, 3, 3, 3, 3, 0, 2, 5, 3, 3, 1, 1, 1, 3, 1, 3, 0, 2, 3, 1, 1, 1, 3, 4, 1, 3, 4, 4, 6, 7, 3, 3, 1, 1, 2, 1, 2, 0, 1, 6, 1, 4, 4, 4, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 4, 7, 5, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 4, 6, 2, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 3, 1, 3, 5, 0, 1, 0, 1, 3, 1, 3, 5, 2, 2, 1, 1, 1, 2, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 0, 1, 0, 31, 94, 93, 10, 90, 5, 0, 0, 0, 0, 4, 0, 0, 37, 32, 10, 36, 92, 91, 156, 155, 8, 0, 6, 7, 0, 46, 0, 38, 10, 45, 10, 0, 47, 0, 0, 11, 0, 0, 14, 20, 3, 16, 17, 19, 159, 12, 34, 0, 42, 0, 35, 0, 63, 9, 0, 0, 0, 23, 22, 160, 2, 0, 0, 39, 0, 44, 0, 48, 81, 0, 0, 0, 66, 0, 0, 0, 71, 70, 137, 128, 0, 63, 145, 0, 64, 86, 59, 61, 127, 129, 0, 0, 58, 25, 0, 13, 0, 0, 0, 0, 0, 0, 18, 21, 40, 43, 49, 82, 62, 0, 0, 0, 0, 0, 98, 99, 128, 0, 127, 0, 95, 96, 0, 0, 0, 138, 139, 142, 154, 85, 127, 0, 0, 50, 146, 147, 150, 153, 33, 63, 130, 74, 75, 76, 77, 78, 79, 80, 73, 0, 83, 84, 60, 24, 26, 27, 28, 29, 30, 15, 0, 0, 0, 118, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 157, 140, 0, 0, 132, 0, 56, 63, 148, 0, 0, 57, 72, 41, 52, 63, 0, 0, 97, 120, 119, 115, 114, 113, 112, 111, 0, 110, 121, 101, 103, 100, 104, 105, 106, 116, 117, 108, 107, 109, 53, 67, 68, 69, 158, 0, 0, 143, 0, 51, 0, 0, 151, 0, 122, 0, 125, 124, 63, 131, 141, 135, 136, 134, 133, 0, 63, 149, 0, 87, 0, 126, 63, 54, 144, 65, 152, 63, 89, 123, 55, 0, 88 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 25, 26, 13, 44, 45, 65, 46, 47, 109, 10, 18, 19, 31, 110, 70, 32, 33, 36, 37, 137, 138, 89, 154, 90, 91, 166, 92, 123, 167, 225, 94, 125, 199, 262, 132, 200, 133, 141, 207, 142, 96, 126, 201, 50 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -134 static const yytype_int16 yypact[] = { -134, 132, -134, 112, -134, -134, -134, -16, -134, 2, 573, 153, 220, -21, -134, 204, 204, -134, -134, -25, 2, -134, -134, -134, -134, 47, 45, -134, -134, 123, -134, 29, -134, -25, -134, -25, 54, -134, 11, 220, -134, 227, 87, -134, -134, -134, 57, -134, 0, -134, -134, -134, 204, 33, 55, -134, 204, 548, -134, 227, 227, 568, -134, -134, -134, -134, 212, 76, -134, 227, -134, 227, -134, -45, 112, 104, 493, -134, 118, 122, 125, -134, -134, 52, 13, 237, 548, 82, 108, -134, -134, -134, 2, 91, -134, 598, 169, 68, -134, 4, -134, 227, 227, 227, 227, 227, 198, -134, -134, 339, -134, -134, -134, 2, 493, 493, 493, 142, 148, -134, -134, -134, 493, -45, 449, -134, -134, 493, 112, 112, -134, 182, -134, -134, -134, -134, 154, 10, 110, -134, 182, -134, -134, -134, 548, -134, -134, -134, -134, -134, -134, -134, -134, -134, 493, -134, 85, -134, -134, 266, 266, -134, -134, -134, -134, 167, 158, 478, 777, 191, 493, 493, 324, 493, 493, 493, 493, 493, 493, 493, 139, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 548, 376, -24, 1, 464, -134, 667, 223, 9, -134, 493, -134, 548, 667, 225, 15, -134, 712, -134, -134, 548, 398, 690, -134, 733, 753, 777, 777, 777, 777, 777, 493, 765, -134, 787, 787, 797, 297, 297, 297, 191, 191, 191, 191, 205, 173, -134, -134, -134, -134, 182, 36, -134, 644, -134, 182, 36, -134, 144, -134, 493, 777, 493, 509, 712, -134, -134, -134, -134, -134, 179, 548, -134, 180, 311, 427, 777, 548, 228, -134, 228, -134, 548, -134, -134, 228, 161, -134 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -134, 185, -134, 216, 117, 190, -134, -134, -134, 195, 71, -134, -134, -134, -134, 192, -134, 241, -15, -134, 221, 92, -53, -134, -134, -81, 175, 14, 42, -1, 129, -134, 242, -51, -133, 49, -134, -134, -134, -134, -134, -134, -56, 21, -134, -134 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -132 static const yytype_int16 yytable[] = { 8, 35, 8, 134, 88, 11, 95, 206, 83, 8, 22, 27, 243, 11, 34, 34, -84, 112, 248, -84, -84, 67, 101, 102, 87, 103, 104, 105, 8, 11, 11, 11, 51, 28, 73, 95, 52, 145, 27, 12, 62, 35, 29, 7, 239, 9, 258, 259, 12, 40, 49, 34, 20, 260, 39, 34, 93, 55, 62, 62, 28, 56, 63, 64, 66, 8, 83, 145, 62, 240, 62, 48, 158, 8, 57, 134, 203, 244, 97, -84, 63, 63, 87, 249, 135, 93, 41, 49, 49, 73, 63, 208, 63, 95, -90, 42, 69, -90, -90, 261, 62, 62, 62, 62, 62, 8, 73, 97, 48, 257, 130, 143, 61, 204, 264, 144, 113, 144, 71, 131, -90, 83, 63, 63, 63, 63, 63, 8, 8, 156, 98, 99, 2, 41, 23, 24, 38, 87, 83, 237, 139, 95, 42, 93, 83, 23, 24, 266, 7, 140, 53, 144, 54, 95, 87, 223, 115, -90, 116, 250, 87, 95, 3, 4, 279, 97, 5, 6, 144, 114, 194, 195, 159, 160, 161, 162, 163, 5, 6, 255, 144, 23, 24, 117, 118, 127, 5, 6, 43, 128, 155, 93, 129, 5, 6, 119, 120, 23, 24, 115, 121, 196, 270, 93, 95, 124, 122, 5, 6, 170, 272, 93, 95, 97, 21, 171, 277, 202, 95, 210, 191, 278, 41, 95, 211, 97, 117, 118, 3, 4, 242, 42, 247, 97, -132, 144, 5, 6, 119, 120, 23, 24, 197, 121, 168, 169, 59, 271, 273, 122, 106, 172, 5, 6, 93, 58, 193, 108, 5, 6, 198, 107, 93, 111, 164, 30, 5, 6, 93, 205, 23, 24, 157, 93, 5, 6, 97, 72, 23, 24, 275, 5, 6, 209, 97, 23, 24, 103, 104, 105, 97, 5, 6, 68, 60, 97, 246, 265, 121, 213, 214, 0, 216, 217, 218, 219, 220, 221, 222, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 187, 188, 189, 190, 169, 191, 136, 115, 0, 116, 245, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 253, 191, 0, 117, 118, 101, 102, 165, 103, 104, 105, 0, 0, 5, 6, 119, 120, 23, 24, 256, 121, 274, 0, 0, 256, 0, 122, 0, 0, 267, 0, 268, 173, 174, 175, 176, 177, 178, 179, 180, 215, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, 180, 0, 238, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 173, 174, 175, 176, 177, 178, 179, 180, 0, 251, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 0, 0, 115, 0, 116, 0, 0, 173, 174, 175, 176, 177, 178, 179, 180, 0, 276, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 117, 118, 115, 192, 116, 0, 0, 0, 0, 0, 5, 6, 119, 120, 23, 24, 241, 121, 0, 0, 0, 0, 73, 122, 0, 74, 0, 0, 0, 117, 118, 0, 212, 0, 75, 76, 0, 77, 0, 5, 6, 119, 120, 23, 24, 0, 121, 78, 79, 80, 81, 82, 122, 0, 83, 5, 6, 0, 0, 23, 24, 73, 84, 269, 74, 85, 86, 0, 0, 0, 87, 100, 0, 75, 76, 0, 77, 0, 101, 102, 0, 103, 104, 105, 0, 0, 78, 79, 80, 81, 82, 0, 0, 83, 5, 6, 0, 14, 23, 24, 15, 84, 0, 0, 85, 86, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 16, 0, 0, 5, 6, 0, 0, 0, 0, 0, 17, 146, 147, 148, 149, 150, 151, 152, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, 180, 0, 153, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, -131, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 252, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 174, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 175, 176, 177, 178, 179, 180, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 254, 191, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, -132, 184, 185, 186, 187, 188, 189, 190, 0, 191 }; #define yypact_value_is_default(yystate) \ ((yystate) == (-134)) #define yytable_value_is_error(yytable_value) \ ((yytable_value) == (-132)) static const yytype_int16 yycheck[] = { 1, 16, 3, 84, 57, 29, 57, 140, 53, 10, 11, 12, 3, 29, 15, 16, 3, 73, 3, 6, 7, 21, 18, 19, 69, 21, 22, 23, 29, 29, 29, 29, 3, 12, 21, 86, 7, 93, 39, 64, 41, 56, 63, 1, 68, 3, 10, 11, 64, 4, 29, 52, 10, 17, 7, 56, 57, 3, 59, 60, 39, 7, 41, 42, 7, 66, 53, 123, 69, 68, 71, 29, 68, 74, 63, 156, 66, 68, 57, 66, 59, 60, 69, 68, 85, 86, 10, 66, 67, 21, 69, 144, 71, 144, 3, 19, 63, 6, 7, 63, 101, 102, 103, 104, 105, 106, 21, 86, 66, 242, 58, 3, 41, 3, 247, 7, 74, 7, 63, 67, 29, 53, 101, 102, 103, 104, 105, 128, 129, 61, 59, 60, 0, 10, 58, 59, 19, 69, 53, 192, 58, 192, 19, 144, 53, 58, 59, 3, 106, 67, 33, 7, 35, 204, 69, 16, 17, 66, 19, 212, 69, 212, 30, 31, 3, 144, 54, 55, 7, 65, 128, 129, 101, 102, 103, 104, 105, 54, 55, 6, 7, 58, 59, 44, 45, 67, 54, 55, 65, 67, 21, 192, 67, 54, 55, 56, 57, 58, 59, 17, 61, 19, 255, 204, 255, 76, 67, 54, 55, 67, 263, 212, 263, 192, 61, 67, 269, 63, 269, 52, 29, 274, 10, 274, 66, 204, 44, 45, 30, 31, 7, 19, 7, 212, 29, 7, 54, 55, 56, 57, 58, 59, 60, 61, 115, 116, 19, 68, 68, 67, 65, 122, 54, 55, 255, 39, 127, 67, 54, 55, 131, 66, 263, 71, 66, 61, 54, 55, 269, 140, 58, 59, 97, 274, 54, 55, 255, 56, 58, 59, 266, 54, 55, 154, 263, 58, 59, 21, 22, 23, 269, 54, 55, 52, 67, 274, 204, 248, 61, 170, 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 24, 25, 26, 27, 196, 29, 85, 17, -1, 19, 202, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 223, 29, -1, 44, 45, 18, 19, 20, 21, 22, 23, -1, -1, 54, 55, 56, 57, 58, 59, 242, 61, 62, -1, -1, 247, -1, 67, -1, -1, 252, -1, 254, 8, 9, 10, 11, 12, 13, 14, 15, 68, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, -1, -1, -1, -1, -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, -1, 68, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 8, 9, 10, 11, 12, 13, 14, 15, -1, 68, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, -1, 17, -1, 19, -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, -1, 68, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 44, 45, 17, 62, 19, -1, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, 21, 67, -1, 24, -1, -1, -1, 44, 45, -1, 62, -1, 33, 34, -1, 36, -1, 54, 55, 56, 57, 58, 59, -1, 61, 46, 47, 48, 49, 50, 67, -1, 53, 54, 55, -1, -1, 58, 59, 21, 61, 62, 24, 64, 65, -1, -1, -1, 69, 11, -1, 33, 34, -1, 36, -1, 18, 19, -1, 21, 22, 23, -1, -1, 46, 47, 48, 49, 50, -1, -1, 53, 54, 55, -1, 32, 58, 59, 35, 61, -1, -1, 64, 65, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, 51, -1, -1, 54, 55, -1, -1, -1, -1, -1, 61, 37, 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, -1, 63, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 9, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 16, 29, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 71, 0, 30, 31, 54, 55, 98, 99, 98, 81, 29, 64, 74, 32, 35, 51, 61, 82, 83, 98, 61, 99, 58, 59, 72, 73, 99, 113, 63, 61, 84, 87, 88, 99, 88, 89, 90, 74, 7, 4, 10, 19, 65, 75, 76, 78, 79, 98, 113, 115, 3, 7, 74, 74, 3, 7, 63, 73, 19, 67, 80, 99, 113, 113, 77, 7, 21, 87, 63, 86, 63, 90, 21, 24, 33, 34, 36, 46, 47, 48, 49, 50, 53, 61, 64, 65, 69, 92, 93, 95, 96, 98, 99, 102, 103, 112, 113, 80, 80, 11, 18, 19, 21, 22, 23, 71, 79, 75, 80, 85, 85, 112, 98, 65, 17, 19, 44, 45, 56, 57, 61, 67, 99, 100, 103, 113, 67, 67, 67, 58, 67, 106, 108, 95, 99, 102, 91, 92, 58, 67, 109, 111, 3, 7, 112, 37, 38, 39, 40, 41, 42, 43, 63, 94, 21, 61, 96, 68, 80, 80, 80, 80, 80, 66, 20, 97, 100, 100, 100, 67, 67, 100, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 62, 100, 98, 98, 19, 60, 100, 104, 107, 114, 63, 66, 3, 100, 104, 110, 92, 100, 52, 66, 62, 100, 100, 68, 100, 100, 100, 100, 100, 100, 100, 16, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 92, 68, 68, 68, 60, 7, 3, 68, 100, 91, 7, 3, 68, 92, 68, 7, 100, 16, 6, 100, 104, 10, 11, 17, 63, 105, 4, 104, 105, 3, 100, 100, 62, 92, 68, 92, 68, 62, 97, 68, 92, 92, 3 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = 0; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* Line 1806 of yacc.c */ #line 232 "parser.yy" { /* Nix zu tun. */ } break; case 3: /* Line 1806 of yacc.c */ #line 233 "parser.yy" { PBEGIN_TRY gAktDefKnoten->fuegeEin(*(yyvsp[(2) - (5)].str), *(yyvsp[(3) - (5)].version), (yyvsp[(5) - (5)].knoten)); delete (yyvsp[(2) - (5)].str); delete (yyvsp[(3) - (5)].version); PEND_TRY(;); } break; case 4: /* Line 1806 of yacc.c */ #line 241 "parser.yy" { /* Nix zu tun; die Codes speichern sich von alleine nach gAktDefKnoten */ } break; case 5: /* Line 1806 of yacc.c */ #line 252 "parser.yy" { PBEGIN_TRY /* Lex auf neue Datei umschalten */ void * merkBuf = pushLex((yyvsp[(3) - (3)].str)->data()); /***** Bison-Aufruf fr include-Datei *****/ /* Hier muss man aufpassen, dass mit allen globalen Variablen das richtige passiert. Nichts zu tun ist bei: - gGabFehler (Fehler in include-Datei ist halt auch Fehler) - gAktDefKnoten (Die Include-Datei speichert ihre Ergebnisse auch einfach da mit rein.) */ /* Datei und Zeilennummer zwischenspeichern. */ Str merkDat = gDateiName; gDateiName = *(yyvsp[(3) - (3)].str); int merkZNr = gZeilenNr; gZeilenNr = 1; /* Der rekursive Aufruf! Hier! Live! (Die Ergebnisse werden in gAktDefKnoten eingefgt.) */ if ((yyparse()) && !gGabFehler) { print_to_stderr("Unknown error during file inclusion!\n"); gGabFehler = true; } gDateiName = merkDat; gZeilenNr = merkZNr; /* Lex auf alte Datei zurckschalten */ popLex(merkBuf); PEND_TRY(;); } break; case 6: /* Line 1806 of yacc.c */ #line 295 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 7: /* Line 1806 of yacc.c */ #line 296 "parser.yy" { (yyval.str) = new Str(_sprintf("%d",(yyvsp[(1) - (1)].zahl))); } break; case 8: /* Line 1806 of yacc.c */ #line 302 "parser.yy" { (yyval.version) = new Version(); (yyval.version)->nochEinMerkmal(*(yyvsp[(1) - (1)].str)); delete (yyvsp[(1) - (1)].str); } break; case 9: /* Line 1806 of yacc.c */ #line 307 "parser.yy" { (yyval.version) = (yyvsp[(3) - (3)].version); (yyval.version)->nochEinMerkmal(*(yyvsp[(1) - (3)].str)); delete (yyvsp[(1) - (3)].str); } break; case 10: /* Line 1806 of yacc.c */ #line 315 "parser.yy" { (yyval.version) = new Version(); } break; case 11: /* Line 1806 of yacc.c */ #line 316 "parser.yy" { (yyval.version) = (yyvsp[(2) - (3)].version); } break; case 12: /* Line 1806 of yacc.c */ #line 320 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (1)].zahl); } break; case 13: /* Line 1806 of yacc.c */ #line 321 "parser.yy" { (yyval.zahl) = (yyvsp[(2) - (3)].zahl); } break; case 14: /* Line 1806 of yacc.c */ #line 324 "parser.yy" { /* OK, hier wird ein neuer Defknoten erffnet. Der alte wird auf dem Bison-Stack zwischengespeichert... */ DefKnoten * merk = gAktDefKnoten; /* Neuen Defknoten erzeugen, mit dem alten als Vater */ gAktDefKnoten = new DefKnoten(gDateiName, gZeilenNr, merk); (yyval.defknoten) = merk; } break; case 15: /* Line 1806 of yacc.c */ #line 332 "parser.yy" { /* Jetzt wurde gAktDefKnoten mit Inhalt gefllt, den wir zurckliefern */ (yyval.knoten) = gAktDefKnoten; /* POP DefKnoten */ gAktDefKnoten = (yyvsp[(2) - (4)].defknoten); } break; case 16: /* Line 1806 of yacc.c */ #line 340 "parser.yy" { (yyval.knoten) = (yyvsp[(1) - (1)].listenknoten); } break; case 17: /* Line 1806 of yacc.c */ #line 343 "parser.yy" { (yyval.listenknoten) = new ListenKnoten(gDateiName, gZeilenNr); (yyval.listenknoten)->fuegeEin((yyvsp[(1) - (1)].knoten)); } break; case 18: /* Line 1806 of yacc.c */ #line 347 "parser.yy" { (yyval.listenknoten) = (yyvsp[(1) - (3)].listenknoten); (yyval.listenknoten)->fuegeEin((yyvsp[(3) - (3)].knoten)); } break; case 19: /* Line 1806 of yacc.c */ #line 353 "parser.yy" { (yyval.knoten) = new WortKnoten(gDateiName, gZeilenNr, *(yyvsp[(1) - (1)].str)); delete (yyvsp[(1) - (1)].str); } break; case 20: /* Line 1806 of yacc.c */ #line 356 "parser.yy" { (yyval.knoten) = new ZahlKnoten(gDateiName, gZeilenNr, (yyvsp[(1) - (1)].zahl)); } break; case 21: /* Line 1806 of yacc.c */ #line 359 "parser.yy" { (yyval.knoten) = new VielfachheitKnoten(gDateiName, gZeilenNr, *(yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].zahl)); delete (yyvsp[(1) - (3)].str); } break; case 22: /* Line 1806 of yacc.c */ #line 365 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (1)].zahl); } break; case 23: /* Line 1806 of yacc.c */ #line 366 "parser.yy" { Knoten * def = gAktDefKnoten->getVerwandten(*(yyvsp[(1) - (1)].str), ld->mVersion, false); const DatenKnoten * datum = 0; switch (def->type()) { case type_DatenKnoten: datum=(const DatenKnoten *) def; break; case type_ListenKnoten: datum=((ListenKnoten*) def)->getEinzigesDatum(); break; default: throw Fehler("%s not a number",(yyvsp[(1) - (1)].str)->data()); } (yyval.zahl) = datum->assert_datatype(type_ZahlDatum)->getZahl(); delete (yyvsp[(1) - (1)].str); } break; case 24: /* Line 1806 of yacc.c */ #line 381 "parser.yy" { (yyval.zahl) = (yyvsp[(2) - (3)].zahl); } break; case 25: /* Line 1806 of yacc.c */ #line 382 "parser.yy" { (yyval.zahl) = -(yyvsp[(2) - (2)].zahl); } break; case 26: /* Line 1806 of yacc.c */ #line 383 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (3)].zahl) + (yyvsp[(3) - (3)].zahl); } break; case 27: /* Line 1806 of yacc.c */ #line 384 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (3)].zahl) - (yyvsp[(3) - (3)].zahl); } break; case 28: /* Line 1806 of yacc.c */ #line 385 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (3)].zahl) * (yyvsp[(3) - (3)].zahl); } break; case 29: /* Line 1806 of yacc.c */ #line 386 "parser.yy" { (yyval.zahl) = divv((yyvsp[(1) - (3)].zahl),(yyvsp[(3) - (3)].zahl)); } break; case 30: /* Line 1806 of yacc.c */ #line 387 "parser.yy" { (yyval.zahl) = modd((yyvsp[(1) - (3)].zahl),(yyvsp[(3) - (3)].zahl)); } break; case 33: /* Line 1806 of yacc.c */ #line 400 "parser.yy" { gAktDefKnoten->speicherDefinition(namespace_prozedur, *(yyvsp[(1) - (5)].str), *(yyvsp[(2) - (5)].version), (yyvsp[(4) - (5)].code)); delete (yyvsp[(1) - (5)].str); delete (yyvsp[(2) - (5)].version); } break; case 36: /* Line 1806 of yacc.c */ #line 416 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 37: /* Line 1806 of yacc.c */ #line 417 "parser.yy" { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Procedure names can't be single letters."); PEND_TRY((yyval.str) = new Str()); } break; case 40: /* Line 1806 of yacc.c */ #line 432 "parser.yy" { (yyval.zahlpaar)[0]=(yyvsp[(1) - (1)].zahl); (yyval.zahlpaar)[1]=da_init; } break; case 41: /* Line 1806 of yacc.c */ #line 433 "parser.yy" { (yyval.zahlpaar)[0]=(yyvsp[(1) - (3)].zahl); (yyval.zahlpaar)[1]=da_kind; } break; case 42: /* Line 1806 of yacc.c */ #line 437 "parser.yy" { (yyval.zahlpaar)[0]=0; (yyval.zahlpaar)[1]=da_init; } break; case 43: /* Line 1806 of yacc.c */ #line 438 "parser.yy" { (yyval.zahlpaar)[0]=(yyvsp[(2) - (2)].zahlpaar)[0]; (yyval.zahlpaar)[1]=(yyvsp[(2) - (2)].zahlpaar)[1];} break; case 44: /* Line 1806 of yacc.c */ #line 442 "parser.yy" { PBEGIN_TRY gAktDefKnoten->neueVarDefinition(*(yyvsp[(1) - (3)].str), *(yyvsp[(2) - (3)].version), (yyvsp[(3) - (3)].zahlpaar)[0], (yyvsp[(3) - (3)].zahlpaar)[1]); delete (yyvsp[(1) - (3)].str); delete (yyvsp[(2) - (3)].version); PEND_TRY(;) } break; case 45: /* Line 1806 of yacc.c */ #line 452 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 46: /* Line 1806 of yacc.c */ #line 453 "parser.yy" { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Variable names can't be single letters."); PEND_TRY((yyval.str) = new Str()); } break; case 49: /* Line 1806 of yacc.c */ #line 469 "parser.yy" { PBEGIN_TRY gAktDefKnoten->neuerDefault( ((VarDefinition*) (gAktDefKnoten->getDefinition(namespace_variable,*(yyvsp[(1) - (4)].str),*(yyvsp[(2) - (4)].version),false))) -> mNummer, (yyvsp[(4) - (4)].zahlpaar)[0], (yyvsp[(4) - (4)].zahlpaar)[1]); delete (yyvsp[(1) - (4)].str); delete (yyvsp[(2) - (4)].version); PEND_TRY(;) } break; case 50: /* Line 1806 of yacc.c */ #line 488 "parser.yy" { (yyval.code) = (yyvsp[(1) - (1)].code); } break; case 51: /* Line 1806 of yacc.c */ #line 489 "parser.yy" { (yyval.code) = newCode2(stapel_code, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 52: /* Line 1806 of yacc.c */ #line 493 "parser.yy" { (yyval.code) = (yyvsp[(3) - (4)].code); } break; case 53: /* Line 1806 of yacc.c */ #line 494 "parser.yy" { (yyval.code) = newCode4(bedingung_code, (yyvsp[(2) - (4)].code), (yyvsp[(4) - (4)].code), newCode0(nop_code), (yyvsp[(3) - (4)].zahl) + 2 * ohne_merk_pfeil); } break; case 54: /* Line 1806 of yacc.c */ #line 499 "parser.yy" { if ((yyvsp[(3) - (6)].zahl)==ohne_merk_pfeil) (yyval.code) = newCode4(bedingung_code, (yyvsp[(2) - (6)].code), (yyvsp[(4) - (6)].code), (yyvsp[(6) - (6)].code), 3*ohne_merk_pfeil); else /* TRANSLATORS: The text in the literal strings should not be translated. */ throw Fehler("%s","Please specify \"else ->\" or \"else =>\""); } break; case 55: /* Line 1806 of yacc.c */ #line 508 "parser.yy" { /* Nach else kann, muss aber kein Pfeil stehen. (Kein Pfeil will man vermutlich, wenn dann gleich das nchste if kommt.) */ (yyval.code) = newCode4(bedingung_code, (yyvsp[(2) - (7)].code), (yyvsp[(4) - (7)].code), (yyvsp[(7) - (7)].code), (yyvsp[(3) - (7)].zahl) + 2 * (yyvsp[(6) - (7)].zahl)); } break; case 56: /* Line 1806 of yacc.c */ #line 516 "parser.yy" { (yyval.code) = (yyvsp[(2) - (3)].code); } break; case 57: /* Line 1806 of yacc.c */ #line 517 "parser.yy" { (yyval.code) = newCode2(folge_code, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 58: /* Line 1806 of yacc.c */ #line 518 "parser.yy" { (yyval.code) = newCode1(zahl_code, (yyvsp[(1) - (1)].zahl)); } break; case 59: /* Line 1806 of yacc.c */ #line 519 "parser.yy" { (yyval.code) = (yyvsp[(1) - (1)].code); } break; case 60: /* Line 1806 of yacc.c */ #line 520 "parser.yy" { (yyval.code) = newCode2(stapel_code, newCode1(zahl_code, (yyvsp[(1) - (2)].zahl)), (yyvsp[(2) - (2)].code)); } break; case 61: /* Line 1806 of yacc.c */ #line 523 "parser.yy" { PBEGIN_TRY /* Kopie erzeugen...) */ (yyval.code) = new Code(gAktDefKnoten, * (Code*) gAktDefKnoten->getDefinition(namespace_prozedur, *(yyvsp[(1) - (1)].str), ld->mVersion, false), true); delete (yyvsp[(1) - (1)].str); PEND_TRY((yyval.code) = newCode0(undefiniert_code)) } break; case 62: /* Line 1806 of yacc.c */ #line 532 "parser.yy" { PBEGIN_TRY /* Kopie erzeugen...) */ (yyval.code) = newCode1(weiterleit_code, new Code(gAktDefKnoten, * (Code*) gAktDefKnoten->getDefinition(namespace_prozedur, *(yyvsp[(2) - (2)].str), ld->mVersion, false), false)); delete (yyvsp[(2) - (2)].str); PEND_TRY((yyval.code) = newCode0(undefiniert_code)) } break; case 63: /* Line 1806 of yacc.c */ #line 542 "parser.yy" { (yyval.code) = newCode0(nop_code); } break; case 64: /* Line 1806 of yacc.c */ #line 543 "parser.yy" { (yyval.code) = (yyvsp[(1) - (1)].code); } break; case 65: /* Line 1806 of yacc.c */ #line 544 "parser.yy" { PBEGIN_TRY if ((yyvsp[(2) - (6)].variable)->istKonstante()) throw Fehler(_sprintf("%s is a constant. (Variable expected.)", (yyvsp[(2) - (6)].variable)->getName().data())); (yyval.code) = newCode3(push_code, (yyvsp[(4) - (6)].code), (yyvsp[(6) - (6)].code), (yyvsp[(2) - (6)].variable)); PEND_TRY((yyval.code) = newCode0(undefiniert_code)) } break; case 66: /* Line 1806 of yacc.c */ #line 553 "parser.yy" { (yyval.code) = newCode0(busy_code); } break; case 67: /* Line 1806 of yacc.c */ #line 554 "parser.yy" { (yyval.code) = newCode1(bonus_code, (yyvsp[(3) - (4)].code)); } break; case 68: /* Line 1806 of yacc.c */ #line 557 "parser.yy" { (yyval.code) = newCode1(message_code, _((yyvsp[(3) - (4)].str)->data())); delete (yyvsp[(3) - (4)].str); } break; case 69: /* Line 1806 of yacc.c */ #line 561 "parser.yy" { (yyval.code) = newCode1(sound_code, Sound::ladSample(*(yyvsp[(3) - (4)].str))); delete (yyvsp[(3) - (4)].str); } break; case 70: /* Line 1806 of yacc.c */ #line 565 "parser.yy" { (yyval.code) = newCode0(verlier_code); } break; case 71: /* Line 1806 of yacc.c */ #line 568 "parser.yy" { (yyval.code) = newCode0(explode_code); } break; case 72: /* Line 1806 of yacc.c */ #line 574 "parser.yy" { PBEGIN_TRY if ((yyvsp[(1) - (3)].variable)->istKonstante()) throw Fehler(_sprintf("%s is a constant. (Variable expected.)", (yyvsp[(1) - (3)].variable)->getName().data())); (yyval.code) = newCode2((yyvsp[(2) - (3)].codeart), (yyvsp[(3) - (3)].code), (yyvsp[(1) - (3)].variable)); PEND_TRY((yyval.code) = newCode0(undefiniert_code)) } break; case 73: /* Line 1806 of yacc.c */ #line 584 "parser.yy" { (yyval.codeart) = set_code; } break; case 74: /* Line 1806 of yacc.c */ #line 585 "parser.yy" { (yyval.codeart) = add_code; } break; case 75: /* Line 1806 of yacc.c */ #line 586 "parser.yy" { (yyval.codeart) = sub_code; } break; case 76: /* Line 1806 of yacc.c */ #line 587 "parser.yy" { (yyval.codeart) = mul_code; } break; case 77: /* Line 1806 of yacc.c */ #line 588 "parser.yy" { (yyval.codeart) = div_code; } break; case 78: /* Line 1806 of yacc.c */ #line 589 "parser.yy" { (yyval.codeart) = mod_code; } break; case 79: /* Line 1806 of yacc.c */ #line 590 "parser.yy" { (yyval.codeart) = bitset_code; } break; case 80: /* Line 1806 of yacc.c */ #line 591 "parser.yy" { (yyval.codeart) = bitunset_code; } break; case 81: /* Line 1806 of yacc.c */ #line 596 "parser.yy" { (yyval.code) = newCode0(mal_code); } break; case 82: /* Line 1806 of yacc.c */ #line 597 "parser.yy" { (yyval.code) = newCode2(mal_code_fremd, (yyvsp[(2) - (2)].ort), 1); } break; case 83: /* Line 1806 of yacc.c */ #line 598 "parser.yy" { (yyval.code) = newCode2(mal_code_fremd, (yyvsp[(1) - (2)].ort), -1); } break; case 84: /* Line 1806 of yacc.c */ #line 602 "parser.yy" { (yyval.code) = newCode1(buchstabe_code, (yyvsp[(1) - (1)].zahl)); } break; case 85: /* Line 1806 of yacc.c */ #line 603 "parser.yy" { (yyval.code) = newCode2(stapel_code, newCode1(buchstabe_code, (yyvsp[(1) - (2)].zahl)), (yyvsp[(2) - (2)].code)); } break; case 86: /* Line 1806 of yacc.c */ #line 607 "parser.yy" { (yyval.code) = (yyvsp[(1) - (1)].code); } break; case 87: /* Line 1806 of yacc.c */ #line 612 "parser.yy" { (yyval.code) = newCode4(bedingung_code, (yyvsp[(1) - (4)].code), (yyvsp[(3) - (4)].code), newCode0(nop_code), (yyvsp[(2) - (4)].zahl) + 2 * ohne_merk_pfeil); } break; case 88: /* Line 1806 of yacc.c */ #line 617 "parser.yy" { (yyval.code) = newCode4(bedingung_code, (yyvsp[(1) - (7)].code), (yyvsp[(3) - (7)].code), (yyvsp[(6) - (7)].code), (yyvsp[(2) - (7)].zahl) + 2 * (yyvsp[(5) - (7)].zahl)); } break; case 89: /* Line 1806 of yacc.c */ #line 622 "parser.yy" { (yyval.code) = newCode4(bedingung_code, (yyvsp[(1) - (5)].code), (yyvsp[(3) - (5)].code), (yyvsp[(5) - (5)].code), (yyvsp[(2) - (5)].zahl) + 2 * mit_merk_pfeil); } break; case 90: /* Line 1806 of yacc.c */ #line 633 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 91: /* Line 1806 of yacc.c */ #line 634 "parser.yy" { *(yyvsp[(1) - (3)].str) += '.'; *(yyvsp[(1) - (3)].str) += *(yyvsp[(3) - (3)].str); (yyval.str) = (yyvsp[(1) - (3)].str); delete (yyvsp[(3) - (3)].str); } break; case 92: /* Line 1806 of yacc.c */ #line 638 "parser.yy" { *(yyvsp[(1) - (3)].str) += '.'; *(yyvsp[(1) - (3)].str) += ((yyvsp[(3) - (3)].zahl)>=26 ? 'a'+(yyvsp[(3) - (3)].zahl)-26 : 'A'+(yyvsp[(3) - (3)].zahl)); (yyval.str) = (yyvsp[(1) - (3)].str); } break; case 93: /* Line 1806 of yacc.c */ #line 644 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 94: /* Line 1806 of yacc.c */ #line 645 "parser.yy" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 95: /* Line 1806 of yacc.c */ #line 652 "parser.yy" { if ((yyvsp[(1) - (1)].variable)->istKonstante()) { /* Wenn die Variable in Wirklichkeit eine Konstante ist, dann gleich die Konstante einsetzen. */ (yyval.code) = newCode1(zahl_acode, (yyvsp[(1) - (1)].variable)->getDefaultWert()); delete (yyvsp[(1) - (1)].variable); } else (yyval.code) = newCode1(variable_acode, (yyvsp[(1) - (1)].variable)); } break; case 96: /* Line 1806 of yacc.c */ #line 661 "parser.yy" { (yyval.code) = newCode1(zahl_acode, (yyvsp[(1) - (1)].zahl)); } break; case 97: /* Line 1806 of yacc.c */ #line 662 "parser.yy" { (yyval.code) = (yyvsp[(2) - (3)].code); } break; case 98: /* Line 1806 of yacc.c */ #line 663 "parser.yy" { (yyval.code) = newNachbarCode(gAktDefKnoten, gDateiName, gZeilenNr, (yyvsp[(1) - (1)].str)); } break; case 99: /* Line 1806 of yacc.c */ #line 666 "parser.yy" { (yyval.code) = newNachbarCode(gAktDefKnoten, gDateiName, gZeilenNr, (yyvsp[(1) - (1)].str)); } break; case 100: /* Line 1806 of yacc.c */ #line 673 "parser.yy" { (yyval.code) = newCode2(manchmal_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 101: /* Line 1806 of yacc.c */ #line 674 "parser.yy" { (yyval.code) = newCode2(add_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 102: /* Line 1806 of yacc.c */ #line 675 "parser.yy" { (yyval.code) = newCode1(neg_acode, (yyvsp[(2) - (2)].code));} break; case 103: /* Line 1806 of yacc.c */ #line 676 "parser.yy" { (yyval.code) = newCode2(sub_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 104: /* Line 1806 of yacc.c */ #line 677 "parser.yy" { (yyval.code) = newCode2(mul_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 105: /* Line 1806 of yacc.c */ #line 678 "parser.yy" { (yyval.code) = newCode2(div_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 106: /* Line 1806 of yacc.c */ #line 679 "parser.yy" { (yyval.code) = newCode2(mod_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 107: /* Line 1806 of yacc.c */ #line 680 "parser.yy" { (yyval.code) = newCode2(bitset_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 108: /* Line 1806 of yacc.c */ #line 681 "parser.yy" { (yyval.code) = newCode2(bitunset_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 109: /* Line 1806 of yacc.c */ #line 682 "parser.yy" { (yyval.code) = newCode2(bittest_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 110: /* Line 1806 of yacc.c */ #line 683 "parser.yy" { (yyval.code) = newCode2(eq_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 111: /* Line 1806 of yacc.c */ #line 684 "parser.yy" { (yyval.code) = newCode2(ne_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 112: /* Line 1806 of yacc.c */ #line 685 "parser.yy" { (yyval.code) = newCode2(ge_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 113: /* Line 1806 of yacc.c */ #line 686 "parser.yy" { (yyval.code) = newCode2(le_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 114: /* Line 1806 of yacc.c */ #line 687 "parser.yy" { (yyval.code) = newCode2(gt_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 115: /* Line 1806 of yacc.c */ #line 688 "parser.yy" { (yyval.code) = newCode2(lt_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 116: /* Line 1806 of yacc.c */ #line 689 "parser.yy" { (yyval.code) = newCode2(bitand_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 117: /* Line 1806 of yacc.c */ #line 690 "parser.yy" { (yyval.code) = newCode2(bitor_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 118: /* Line 1806 of yacc.c */ #line 691 "parser.yy" { (yyval.code) = newCode1(not_acode, (yyvsp[(2) - (2)].code));} break; case 119: /* Line 1806 of yacc.c */ #line 692 "parser.yy" { (yyval.code) = newCode2(und_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 120: /* Line 1806 of yacc.c */ #line 693 "parser.yy" { (yyval.code) = newCode2(oder_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} break; case 121: /* Line 1806 of yacc.c */ #line 694 "parser.yy" { (yyval.code) = newCode3(intervall_acode, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].codepaar)[0], (yyvsp[(3) - (3)].codepaar)[1]); } break; case 122: /* Line 1806 of yacc.c */ #line 697 "parser.yy" { (yyval.code) = newCode1(rnd_acode, (yyvsp[(3) - (4)].code)); } break; case 123: /* Line 1806 of yacc.c */ #line 700 "parser.yy" { (yyval.code) = newCode2(ggt_acode, (yyvsp[(3) - (6)].code), (yyvsp[(5) - (6)].code)); } break; case 124: /* Line 1806 of yacc.c */ #line 707 "parser.yy" { (yyval.codepaar)[0]=(yyvsp[(1) - (2)].code); (yyval.codepaar)[1]=newCode1(zahl_acode, VIEL); } break; case 125: /* Line 1806 of yacc.c */ #line 708 "parser.yy" { (yyval.codepaar)[0]=newCode1(zahl_acode, -VIEL); (yyval.codepaar)[1]=(yyvsp[(2) - (2)].code); } break; case 126: /* Line 1806 of yacc.c */ #line 709 "parser.yy" { (yyval.codepaar)[0]=(yyvsp[(1) - (3)].code); (yyval.codepaar)[1]=(yyvsp[(3) - (3)].code); } break; case 127: /* Line 1806 of yacc.c */ #line 713 "parser.yy" { PBEGIN_TRY (yyval.variable) = new Variable(//gDateiName, gZeilenNr, (VarDefinition*) gAktDefKnoten-> getDefinition(namespace_variable, *(yyvsp[(1) - (1)].str), ld->mVersion, false), 0 ); PEND_TRY((yyval.variable) = new Variable()) delete (yyvsp[(1) - (1)].str); } break; case 128: /* Line 1806 of yacc.c */ #line 724 "parser.yy" { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Variable names can't be single letters."); PEND_TRY((yyval.variable) = new Variable()); } break; case 129: /* Line 1806 of yacc.c */ #line 734 "parser.yy" { (yyval.variable) = (yyvsp[(1) - (1)].variable); } break; case 130: /* Line 1806 of yacc.c */ #line 735 "parser.yy" { PBEGIN_TRY (yyval.variable) = new Variable(//gDateiName, gZeilenNr, (VarDefinition*) gAktDefKnoten-> getDefinition(namespace_variable, *(yyvsp[(1) - (2)].str), ld->mVersion, false), (yyvsp[(2) - (2)].ort)); PEND_TRY((yyval.variable) = new Variable()) delete (yyvsp[(1) - (2)].str); } break; case 131: /* Line 1806 of yacc.c */ #line 748 "parser.yy" { (yyval.code) = (yyvsp[(1) - (1)].code); } break; case 132: /* Line 1806 of yacc.c */ #line 749 "parser.yy" { (yyval.code) = newCode1(zahl_acode, (yyvsp[(1) - (1)].zahl)); } break; case 133: /* Line 1806 of yacc.c */ #line 753 "parser.yy" { (yyval.haelfte) = haelfte_hier; } break; case 134: /* Line 1806 of yacc.c */ #line 754 "parser.yy" { (yyval.haelfte) = haelfte_drueben; } break; case 135: /* Line 1806 of yacc.c */ #line 755 "parser.yy" { (yyval.haelfte) = haelfte_links; } break; case 136: /* Line 1806 of yacc.c */ #line 756 "parser.yy" { (yyval.haelfte) = haelfte_rechts; } break; case 137: /* Line 1806 of yacc.c */ #line 760 "parser.yy" { (yyval.ort) = new Ort(absort_semiglobal); } break; case 138: /* Line 1806 of yacc.c */ #line 761 "parser.yy" { (yyval.ort) = new Ort(absort_fall, newCode1(zahl_acode, (yyvsp[(1) - (1)].zahl))); } break; case 139: /* Line 1806 of yacc.c */ #line 765 "parser.yy" { (yyval.ort) = new Ort(absort_semiglobal); } break; case 140: /* Line 1806 of yacc.c */ #line 766 "parser.yy" { (yyval.ort) = new Ort(absort_fall, (yyvsp[(1) - (1)].code)); } break; case 141: /* Line 1806 of yacc.c */ #line 767 "parser.yy" { (yyval.ort) = new Ort(absort_feld, (yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code)); } break; case 142: /* Line 1806 of yacc.c */ #line 771 "parser.yy" { (yyval.ort) = (yyvsp[(1) - (1)].ort); } break; case 143: /* Line 1806 of yacc.c */ #line 772 "parser.yy" { (yyval.ort) = (yyvsp[(2) - (3)].ort); } break; case 144: /* Line 1806 of yacc.c */ #line 773 "parser.yy" { (yyvsp[(2) - (5)].ort)->setzeHaelfte((yyvsp[(4) - (5)].haelfte)); (yyval.ort) = (yyvsp[(2) - (5)].ort); } break; case 145: /* Line 1806 of yacc.c */ #line 780 "parser.yy" { (yyval.ort) = new Ort(absort_global); } break; case 146: /* Line 1806 of yacc.c */ #line 781 "parser.yy" { (yyval.ort) = new Ort(newCode1(zahl_acode, (yyvsp[(1) - (1)].zahl))); } break; case 147: /* Line 1806 of yacc.c */ #line 785 "parser.yy" { (yyval.ort) = new Ort(absort_global); } break; case 148: /* Line 1806 of yacc.c */ #line 786 "parser.yy" { (yyval.ort) = new Ort((yyvsp[(1) - (1)].code)); } break; case 149: /* Line 1806 of yacc.c */ #line 787 "parser.yy" { (yyval.ort) = new Ort((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code)); } break; case 150: /* Line 1806 of yacc.c */ #line 791 "parser.yy" { (yyval.ort) = (yyvsp[(1) - (1)].ort); } break; case 151: /* Line 1806 of yacc.c */ #line 792 "parser.yy" { (yyval.ort) = (yyvsp[(2) - (3)].ort); } break; case 152: /* Line 1806 of yacc.c */ #line 793 "parser.yy" { (yyvsp[(2) - (5)].ort)->setzeHaelfte((yyvsp[(4) - (5)].haelfte)); (yyval.ort) = (yyvsp[(2) - (5)].ort); } break; case 153: /* Line 1806 of yacc.c */ #line 800 "parser.yy" { (yyval.ort) = (yyvsp[(2) - (2)].ort); } break; case 154: /* Line 1806 of yacc.c */ #line 801 "parser.yy" { (yyval.ort) = (yyvsp[(2) - (2)].ort); } break; case 155: /* Line 1806 of yacc.c */ #line 808 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (1)].zahl); } break; case 156: /* Line 1806 of yacc.c */ #line 809 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (1)].zahl); } break; case 157: /* Line 1806 of yacc.c */ #line 815 "parser.yy" { /* Halbzahlen sollen intern aufgerundet gespeichert werden... */ (yyval.zahl) = (yyvsp[(1) - (1)].zahl) + 1; } break; case 158: /* Line 1806 of yacc.c */ #line 819 "parser.yy" { (yyval.zahl) = -(yyvsp[(2) - (2)].zahl); } break; case 159: /* Line 1806 of yacc.c */ #line 822 "parser.yy" { (yyval.zahl) = (yyvsp[(1) - (1)].zahl); } break; case 160: /* Line 1806 of yacc.c */ #line 823 "parser.yy" { (yyval.zahl) = -(yyvsp[(2) - (2)].zahl); } break; /* Line 1806 of yacc.c */ #line 3284 "parser.cc" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 2067 of yacc.c */ #line 827 "parser.yy" /*****************************************************************************/ extern FILE * yyin; int yyparse(); //void initLex(); int yyerror (const char * s) /* Called by yyparse on error */ { PBEGIN_TRY throw Fehler(Str(s)); PEND_TRY(;) return 0; } /* ffnet die Datei mit dem angegebenen Namen und parst sie. Das Ergebnis wird in den Defknoten erg geschrieben. */ /** Komplettbeschreibung vom Parse-Vorgang siehe leveldaten.h */ void parse(const Str & name, DefKnoten * erg) { /* Datei ffnen, Lex initialisieren. Eigentlich bruchte man kein pushLex und popLex ganz auen; aber es ist irgendwie sauberer. Vor allem ist dann sicher, dass ein Fehler in einem frheren Parsen keine Auswirkungen auf ein spteres Parsen hat. true = Default-Pfad merken fr die Includes. (wird an den Pfaditerator weitergegeben.) */ void * merkBuf = pushLex(name.data(), true); gDateiName = name; gZeilenNr = 1; gGabFehler = false; /* Wenn es denn mal ein bison-Fehler-recovery gibt, sollte gGabFehler dort auf true gesetzt werden */ /* Das Parse-Ergebnis soll in den Knoten erg geschrieben werden. */ gAktDefKnoten = erg; /* Hier findet das Parsen statt. Man beachte: Um Flex und Bison nicht zu verwirren, kann yyparse() nicht mit throw verlassen werden. Deshalb brauchen wir nix zu catchen, um alles wieder aufrumen zu knnen. */ int perg = yyparse(); /* Datei schlieen, lex zurcksetzen. */ popLex(merkBuf); /* Hier werden vermutlich mehr Bedingungen getestet als ntig. */ if (perg || gGabFehler) throw Fehler("%s","There have been errors parsing the level description files."); } cuyo-2.1.0/src/datendatei.h0000644000175000017500000001462711674440316012474 00000000000000/*************************************************************************** datendatei.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2005,2006,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DATENDATEI_H #define DATENDATEI_H #include "inkompatibel.h" #include "knoten.h" #include "sdltools.h" class Code; class VarDefinition; /** Parst die level.descr Datei und alle Dateien, die davon included werden. Bietet danach Mglichkeiten, darauf zuzugreifen. Noch ein Hinweis: Auf dem geparsten Baum befindet sich ein Eichhrnchen (= Squirrel; ist schneller zu tippen), dass sich um das Auslesen der Daten kmmert. Es liest natrlich die Daten von dort, wo es sich befindet. (Und es gibt Methoden, die ihm sagen, wo es hingehen soll.) (Oje, ist die Wurzel des Baums jetzt oben oder unten?) Ausfhrliche Beschreibung des Parse-Vorgangs siehe leveldaten.h. Nicht zu verwechseln mit ConfigDatei, was die alte Version von level.descr geparst hat und jetzt nur noch fr die .cuyo-Datei verwendet wird. @author Immi */ class DatenDateiPush; class DatenDatei { friend class DatenDateiPush; public: DatenDatei(); ~DatenDatei(); /** Entfernt alles, was bisher geladen wurde. Aufrufen, wenn man alles neu laden mchte. */ void leeren(); /** Ldt die angegebene Datei. (Kann mehrmals aufgerufen werden, um mehrere Dateien gleichzeitig zu laden.) */ void laden(const Str & name); /***** Squirrel-Methoden *****/ /** Setzt das Squirrel an die Wurzel des Baums. */ void initSquirrel(); /** Liefert true, wenn das Squirrel sich an einer Stelle des Baums befindet, die existiert. */ bool existiertSquirrelKnoten() const; /** Liefert die Position des Squirrels als String. */ Str getSquirrelPosString() const; /** Liefert die Squirrel-Position zurck (und zwar mSquirrelCodeKnoten; siehe dort). */ DefKnoten * getSquirrelPos() const; protected: /** Das Eichhrnchen klettert weiter weg von der Wurzel. Wird von DatenDateiPush benutzt. */ void kletterWeiter(const Str & na, const Version & version); public: /***** Eintrag-Methoden *****/ /** Liefert den Eintrag, wenn er existiert, sonst null, wenn defaultVorhanden, sonst wird gethrowt. */ const DatenKnoten * getEintrag(const Str & schluessel, const Version & version, bool defaultVorhanden, int typ = type_EgalDatum) const; /** Dito fr Wrter. Default fr def ist "". */ Str getWortEintragOhneDefault(const Str & schluessel, const Version & version) const; Str getWortEintragMitDefault(const Str & schluessel, const Version & version, Str def = Str()) const; /** Gibt's den Eintrag? */ bool hatEintrag(const Str & schluessel) const; /** Liefert den Eintrag als Zahl. */ int getZahlEintragOhneDefault(const Str & schluessel, const Version & version) const; int getZahlEintragMitDefault(const Str & schluessel, const Version & version, int def = 0) const; /** Wie getZahlEintrag, aber akzeptiert nur 0 und 1. */ bool getBoolEintragOhneDefault(const Str & schluessel, const Version & version) const; bool getBoolEintragMitDefault(const Str & schluessel, const Version & version, bool def) const; /** Liefert den Eintrag als Farbe. */ Color getFarbEintragOhneDefault(const Str & schluessel, const Version & version) const; Color getFarbEintragMitDefault(const Str & schluessel, const Version & version, const Color & def = Color(0, 0, 0)) const; /** Liefert einen Eintrag als Knoten. Bei defaultvorhanden kann das Ergebnis 0 sein. */ ListenKnoten * getListenEintrag(const Str & schluessel, const Version & version, bool defaultVorhanden) const; /** Sucht einen Code beim Squirrel oder nher an der Wurzel. Behlt den Besitz am Code/an der VarDefinition. Throwt bei nicht-existenz. */ Code * getCode(const Str & name, const Version & version, bool defaultVorhanden); VarDefinition * getVarDef(const Str & name, const Version & version, bool defaultVorhanden); protected: /** Der oberste Knoten der (geparsten) Datei */ DefKnoten * mDaten; /* Ort des Eichhrnchens als String. */ Str mSquirrelPosString; /* Der Knoten, an dem sich das Squirrel befindet. Ist 0, wenn es sich an einem Knoten befindet, den es gar nicht gibt. */ DefKnoten * mSquirrelKnoten; /* Eigentlich auch der Knoten des Squirrels. Wenn der allerdings nicht existiert, dann der letzte Knoten, der noch existiert hat. Dort wird nach Code gesucht. */ DefKnoten * mSquirrelCodeKnoten; /** Liefert den angegebenen Eintrag beim Squirrel. Prft, ob der Typ der gewnschte ist. Liefert 0, wenn's den Eintrag nicht gibt, aber defaultVorhanden. Throwt bei sonstigem Fehler. */ Knoten * getEintragKnoten(const Str & schluessel, const Version & version, bool defaultVorhanden, int typ) const; }; /***************************************************************************/ /** Ist dazu da, um bei einer Datendatei das Squirrel klettern zu lassen. Gebrauchsanweisung: { DatenDateiPush ddp(dat, "Unterabschnitt"); if (!hatGeklappt) throw Fehler("Abschnitt existiert nicht"); ... } // Hier automatisch Ende vom Push */ class DatenDateiPush { public: DatenDateiPush(DatenDatei & c, const Str & name,const Version & version, bool verlange = true); ~DatenDateiPush(); protected: DatenDatei & mConf; Str mMerkName; DefKnoten * mMerkKnoten; DefKnoten * mMerkCodeKnoten; }; #endif cuyo-2.1.0/src/sorte.h0000644000175000017500000001450312411361472011512 00000000000000/*************************************************************************** sorte.h - description ------------------- begin : Fri Apr 20 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SORTE_H #define SORTE_H #include #include "stringzeug.h" //#include "fehler.h" //#include "bilddatei.h" //#include "blopbesitzer.h" // Nur fr die Verbindungskonstanten class Version; class DefKnoten; /* Zur bergabe an Sorte() */ #define verbart_nein 0 #define verbart_selten 1 #define verbart_ja 2 /* Fr das verbindetMitRand-Array: */ #define rand_links 0 #define rand_rechts 1 #define rand_oben 2 #define rand_unten 3 /* Konstanten fr neighbours= */ #define nachbarschaft_normal 0 #define nachbarschaft_schraeg 1 #define nachbarschaft_6 2 #define nachbarschaft_6_schraeg 3 #define nachbarschaft_springer 4 #define nachbarschaft_dame 5 #define nachbarschaft_6_3d 6 #define nachbarschaft_garnichts 7 #define nachbarschaft_horizontal 8 #define nachbarschaft_vertical 9 #define nachbarschaft_letzte 9 /** Event-Nummern in mEventCode. Die entsprechenden Strings stehen in sorte.cpp. */ enum { event_keins = -1, // wird in Blop::mScheduleEventNr verwendet event_draw = 0, // Haupt-Mal-Code; Sonderbehandlung; muss 0 bleiben event_init, // einmal am Anfang event_turn, // bei jedem drehen event_land, // kommt auf dem Boden auf (nur bei Fall) event_changeside, // wechselt zum anderen Spieler event_connect, // Verbindungen neu berechnen event_row_up, // Reihe bekommen event_row_down, // Reihe abgegeben event_keyleft, // Taste links event_keyright, // Taste rechts event_keyturn, // Taste drehen event_keyfall, // Taste fallen event_anz }; /* Blop-Arten / -Sortennummern. Die Nummern >= 0 sind die normalen Farbsorten. */ #define blopart_keins (-1) /* Letzte Art, auf die man ein Blop von cual aus noch setzen darf */ #define blopart_min_cual (-1) /* Blop, der nicht wirklich zu sehen ist, sondern nur die globale Animation ausfhrt */ #define blopart_global (-2) /* dito, aber hiervon gibt es je Spieler einen */ #define blopart_semiglobal (-3) /* Informationsblops am Spielfeldrand */ #define blopart_info (-4) /* Letzte Art, von der es noch wirklich eine Sorte und Blops gibt. Alles andere sind nur Rckgabewerte oder so was. */ #define blopart_min_sorte (-4) /* Rckgabewert, falls Koordinaten nach auerhalb vom Spielfeld zeigen. */ #define blopart_ausserhalb (-5) /* Rckgabewert von getArt(), wenn es sich um einen Farbblop handelt. Und Wert, den man an Sorte::Sorte() bergeben kann. */ #define blopart_farbe (-6) #define blopart_gras (-7) #define blopart_grau (-8) /* W-Verteilungen fr die zufllige Sortenauswahl */ enum { wv_farbe, wv_grau, wv_gras, anzahl_wv }; /* Namen werden in sorte.cpp definiert. */ extern const char cEventNamen[event_anz][33]; extern const char* cVerteilungsNamen[anzahl_wv]; class Bilddatei; class Blop; class Code; /** Enthlt alle Informationen ber eine Blopsorte; kann solche Blops malen *@author Immi */ class Sorte { public: /** Ldt die Sorte mit dem angegebenen Namen. Schaut auch in der entsprechenden Gruppe von mLevelConf nach, setzt die Gruppe aber danach zurck. blopart muss nur angegeben werden, damit ein paar Art-abhngige Defaults richtig gesetzt werden knnen. Throwt Fehler, wenn erfolglos. */ Sorte(const Str & name, const Version & version, int blopart); ~Sorte(); protected: /** lscht die ganzen Bilder aus dem bilddateien-Array */ void loeschBilder(); /** Wird an zwei Stellen in Sorte() aufgerufen */ void setzeDefaults(DefKnoten * quelle); /** Wird von Sorte() aufgerufen; ausgelagert, weil Sorte() langsam lang und unbersichtlich wird */ void ladeCualEvents(const Version & version); public: /***** Getter-Methoden, mit denen man auf die ganzen Informationen zugreifen kann. *****/ Str getName() const; int getBasekind() const; bool getVerbindetMitRand(int r) const; int getNachbarschaft() const; int getPlatzAnzahl() const; int getVerteilung(int wv) const; int getDefault(int var) const; int getDefaultArt(int var) const; Code * getEventCode(int evt) const; int getDistKey() const; int getVersions() const; Bilddatei * getBilddatei(int nr) const; /* ACHTUNG! Beim Neueinfgen von Variablen, die aus der * level.descr gelesen werden, nicht vergessen, am Anfang * von Sorte::Sorte() defaults zu setzen! */ protected: /** Der Name, unter dem in Code-Programmen auf die Sorte zugegriffen wird. */ Str mName; /** Was beim Konstruktor bergeben wurde */ int mBlopart; /** Der Wert fuer basekind */ int mBasekind; /** Verbinden sich diese Blops auch zum Rand hin? Aufgeschlsselt nach den Rndern. (Konstanten rand_...) */ bool mVerbindetMitRand[4]; /** Was zhlt als Nachbarn im Sinne einer Kette? */ int mNachbarschaft; /** Wie viele Steine mssen zusammen, damit sie platzen? */ int mPlatzAnzahl; /** Entstehwahrscheinlichkeiten */ int mVerteilung[anzahl_wv]; /** Defaultwerte fr Blops dieser Sorte. */ int * mDatenDefault; int * mDatenDefaultArt; /** Reprsentation in startdist: Zeichen(kette) fr version=0, Anzahl an Versionen */ int mDistKey; int mVersions; /** Alle Bildchen zu diesem Blop */ std::vector mBilddateien; /** Code, der zu bestimmten Events aufgerufen wird (bzw. 0). */ Code * mEventCode[event_anz]; }; #endif cuyo-2.1.0/src/version.cpp0000644000175000017500000004317412400104767012404 00000000000000/*************************************************************************** version.h - description ------------------- begin : Sun Mar 26 2006 copyright : (C) 2006 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2006,2008-2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "fehler.h" #include "version.h" #include "cuyointl.h" #define anz_packs 7 const char * packs_merkmale[anz_packs+1] = { "main", "all", "game", "extreme", "nofx", "weird", "contrib", 0}; const char * packs_namen[anz_packs] = { // TRANSLATORS: Name of a level track N_("Standard"), // TRANSLATORS: Name of a level track N_("All levels"), // TRANSLATORS: Name of a level track N_("Games"), // TRANSLATORS: Name of a level track N_("Extremes"), // TRANSLATORS: Name of a level track N_("No FX"), // TRANSLATORS: Name of a level track N_("Weird"), // TRANSLATORS: Name of a level track N_("Contributions")}; const char * packs_infos[anz_packs] = { N_("A selection of levels for the common taste"), N_("All official levels"), N_("Levels simulating board games or other computer games"), N_("Levels setting records such as `fastest dropping ceiling'"), N_("Plain levels without any disturbing tweaks to the rules"), N_("Levels interpreting the general theme of cuyo more broadly"), N_("Levels donated and maintained by the community") }; Dimension Version::gLevelpack = Dimension(); #define anz_schwer 3 const char * schwer_merkmale[anz_schwer+1] = {"easy", "", "hard"}; const char * schwer_namen[anz_schwer+1] = { // TRANSLATORS: Name of a difficulty setting N_("Easy"), // TRANSLATORS: Name of a difficulty setting N_("Normal"), // TRANSLATORS: Name of a difficulty setting N_("Hard")}; const char * schwer_infos[anz_schwer+1] = { "", "", "" }; Dimension Version::gSchwierig = Dimension(); /* ausschoepfend sollte man mglichst wenig verwenden, da spter stndig eine vollstndige Suche ber den davon aufgespannten Raum stattfindet. ausschliessend ist davon nicht betroffen. Also im Zweifelsfall immer eine Default-Version erfinden. */ const char * spielerzahlen[3] = {"1","2",0}; const char * const * ausschliessend[anzahl_dima+1] = { schwer_merkmale, 0 }; const char * const * ausschoepfend[anzahl_dim-anzahl_dima+1] = { spielerzahlen, packs_merkmale, 0 }; using namespace std; set vereinigung(const set & s1,const set & s2) { set v = s1; set::const_iterator i = s2.begin(), e = s2.end(); for (; i!=e; ++i) v.insert(*i); return v; } set durchschnitt(const set & s1,const set & s2) { set d = set(); set::const_iterator i = s1.begin(), e1 = s1.end(), e2 = s2.end(); for (; i!=e1; ++i) if (s2.find(*i)!=e2) d.insert(*i); return d; } set differenz(const set & s1,const set & s2) { set d = set(); set::const_iterator i = s1.begin(), e1 = s1.end(), e2 = s2.end(); for (; i!=e1; ++i) if (s2.find(*i)==e2) d.insert(*i); return d; } bool legal(const set & s) { /* Vorbedingung: s enthlt "" nicht. */ set >::const_iterator i = Version::gAusschliessend.begin(), e = Version::gAusschliessend.end(); for (; i!=e; ++i) if (durchschnitt(s,*i).size()>1) return false; i = Version::gAusschoepfend.begin(); e = Version::gAusschoepfend.end(); for (; i!=e; ++i) if (durchschnitt(s,*i).size()>1) return false; return true; } Str setToString(const set & s) { Str ret = ""; if (s.size()>0) { ret += "["; set::const_iterator i = s.begin(), e = s.end(); CASSERT(i!=e); ret += *i; ++i; for (; i!=e; ++i) ret += "," + *i; ret += "]"; } return ret; } set stringsetAusCharstern2(const char * const * const daten) { set ret = set(); for (const char * const * i = daten; *i; i++) if (**i) // leeren String rauswerfen ret.insert(Str(*i)); return ret; } set > stringset2AusCharstern3 (const char * const * const * const daten) { set > ret = set >(); for (const char * const * const * i = daten; *i; i++) ret.insert(stringsetAusCharstern2(*i)); return ret; } /* Testet, ob version, erweitert um alle Werte fr alle Dimensionen, die ab (einschlielich) iausschoepfend (was ein Iterator in gAusschoepfend ist) kommen, untersttzt wird. schluessel ist der Name der versionierten Definition, fr die Fehlermeldung, die ausgegeben wird, wenn eine Erweiterung fehlt. */ void testeAusschoepfend(const Str & schluessel, const set > & versionen, set & version, set >::const_iterator iausschoepfend) { if (iausschoepfend==Version::gAusschoepfend.end()) { set >::const_iterator i = versionen.begin(), e = versionen.end(); bool gefunden = false; for (; !gefunden && i!=e; ++i) gefunden = differenz(*i,version).size()==0; /* Teilmengentest */ if (!gefunden) /* TRANSLATORS: The composition "%s%s" is programming specific and should not be translated. */ throw Fehler("%s lacks version %s%s", schluessel.data(), schluessel.data(), setToString(version).data()); } else { set::const_iterator i = iausschoepfend->begin(), e = iausschoepfend->end(); ++iausschoepfend; for (; i!=e; ++i) { version.insert(*i); testeAusschoepfend(schluessel,versionen,version,iausschoepfend); version.erase(*i); } } } /* Wie testeAusschoepfend(), aber statt Fehlermeldung wird false zurckgegeben, wenn eine Version fehlt. Auerdem werden nur Erweiterungen betrachtet, die mit version vertrglich sind, und die echte Erweiterungen von basisversion sind. Anwendung: eine Version ist redundant, wenn sie ohnehin nie genommen wrde, weil jede echte Erweiterung direkt untersttzt wird. */ bool testeAusschoepfendRedundant(const set & basisversion, const set > & versionen, set & version, set >::const_iterator iausschoepfend) { bool ret; if (iausschoepfend==Version::gAusschoepfend.end()) { ret = false; set >::const_iterator i = versionen.begin(), e = versionen.end(); for (; !ret && i!=e; ++i) ret = differenz(*i,version).size()==0 && differenz(*i,basisversion).size()!=0; } else { if (durchschnitt(*iausschoepfend,version).size()==0) { /* So ein Merkmal ist noch nicht drin*/ ret = true; set::const_iterator i = iausschoepfend->begin(), e = iausschoepfend->end(); ++iausschoepfend; for (; ret && i!=e; ++i) { version.insert(*i); ret = testeAusschoepfendRedundant(basisversion,versionen, version,iausschoepfend); version.erase(*i); } } else { ++iausschoepfend; ret = testeAusschoepfendRedundant(basisversion,versionen, version,iausschoepfend); } } return ret; } Dimension::Dimension() : mInitialized(false) { } void Dimension::init(int g, const char * const * const m, const char * const * const n, const char * const * const i) { mGroesse=g; for (int j=0; j::const_iterator i=andere.mMerkmale.begin(), e=andere.mMerkmale.end(), ende=mMerkmale.end(); for (; i!=e; ++i) if (mMerkmale.find(*i)==ende) return false; return true; } bool Version::operator < (const Version & v2) const { return mMerkmale < v2.mMerkmale; } bool Version::operator == (const Version & v2) const { return mMerkmale == v2.mMerkmale; } bool Version::operator != (const Version & v2) const { return !(mMerkmale == v2.mMerkmale); } Str Version::toString() const { return setToString(mMerkmale); } Str Version::extractMerkmal(int dim, const Str & def) { Str ret; /* Weil mMerkmale sowieso "" nicht enthlt, braucht es uns auch nicht zu kmmern, wenn es in auspraegungen vorkommt. */ set merkmale = durchschnitt(mMerkmale,auspraegungen(dim)); switch (merkmale.size()) { case 0: ret = def; break; case 1: { ret = *(merkmale.begin()); mMerkmale.erase(mMerkmale.find(ret)); } break; default: throw setToString(merkmale); break; } return ret; } int Version::extractMerkmal(const Dimension & dim, int def) { bool gefunden=false; int i=0; for (; !gefunden && i Version::auspraegungen(int dim) { set ret = set(); CASSERT((dim>=0) && (dim > Version::gAusschliessend = stringset2AusCharstern3(ausschliessend); set > Version::gAusschoepfend = stringset2AusCharstern3(ausschoepfend); VersionMapIntern::IndexIntern::IndexIntern(VersionMapIntern & versionen) : eigner(&versionen.mVerzeichnis), intern1(versionen.mVerzeichnis.begin()) { if (!ende()) { intern2 = intern1->second.begin(); CASSERT(intern2 != intern1->second.end()); } } void VersionMapIntern::IndexIntern::operator++() { if (!ende()) { ++intern2; if (intern2 == intern1->second.end()) { ++intern1; if (!ende()) { intern2 = intern1->second.begin(); CASSERT(intern2 != intern1->second.end()); } } } } const Str & VersionMapIntern::IndexIntern::schluessel() const { CASSERT(!ende()); return intern1->first; } void* VersionMapIntern::IndexIntern::datumIntern() const { CASSERT(!ende()); return intern2->second; } VersionMapIntern::constIndexIntern::constIndexIntern (const VersionMapIntern & versionen) : eigner(&versionen.mVerzeichnis), intern1(versionen.mVerzeichnis.begin()) { if (!ende()) { intern2 = intern1->second.begin(); CASSERT(intern2 != intern1->second.end()); } } void VersionMapIntern::constIndexIntern::operator++() { if (!ende()) { ++intern2; if (intern2 == intern1->second.end()) { ++intern1; if (!ende()) { intern2 = intern1->second.begin(); CASSERT(intern2 != intern1->second.end()); } } } } const Str & VersionMapIntern::constIndexIntern::schluessel() const { CASSERT(!ende()); return intern1->first; } const Version & VersionMapIntern::constIndexIntern::version() const { CASSERT(!ende()); return intern2->first; } const void* VersionMapIntern::constIndexIntern::datumIntern() const { CASSERT(!ende()); return intern2->second; } VersionMapIntern::VersionMapIntern() : mGeprueft(), mGut(), mVerzeichnis() {} void VersionMapIntern::neuerEintragIntern(const Str & schluessel, const Version & version, void* inhalt) { if (geprueft(schluessel)) /* TRANSLATORS: The composition "%s%s" is programming specific and should not be translated. */ throw Fehler("%s was already accessed, new version %s%s is not allowed", schluessel.data(), schluessel.data(), version.toString().data()); map >::iterator i = mVerzeichnis.find(schluessel); if (i==mVerzeichnis.end()) i = mVerzeichnis.insert( pair >( schluessel, map())).first; i->second.insert(pair(version,inhalt)); } void VersionMapIntern::loescheEintrag(IndexIntern & i) { CASSERT(!geprueft(i.intern1->first)); i.intern1->second.erase(i.intern2); if (i.intern1->second.size()==0) mVerzeichnis.erase(i.intern1); } bool VersionMapIntern::enthaelt(const Str & schluessel) const { return mVerzeichnis.find(schluessel) != mVerzeichnis.end(); } bool VersionMapIntern::enthaelt(const Str & schluessel, const Version & version) const { map >::const_iterator i = mVerzeichnis.find(schluessel); if (i==mVerzeichnis.end()) return false; else return i->second.find(version) != i->second.end(); } void* VersionMapIntern::BestapproximierendeIntern (const Str & schluessel, const Version & version, bool defaultVorhanden) const { assertWohlgeformt(schluessel, defaultVorhanden); map >::const_iterator versionen = mVerzeichnis.find(schluessel); if (versionen == mVerzeichnis.end()) { CASSERT(defaultVorhanden); return 0; } /* Erstmal einen suchen, der berhaupt passt. */ map::const_iterator i = versionen->second.begin(), e = versionen->second.end(); while (i==e ? false : !version.speziellerAls(i->first)) ++i; if (i==e) { CASSERT(defaultVorhanden); return 0; } /* Und dann verbessern. */ map::const_iterator best = i; for (++i; i!=e; ++i) if (version.speziellerAls(i->first) && i->first.speziellerAls(best->first)) best = i; return best->second; } bool VersionMapIntern::geprueft(const Str & schluessel) const { return (mGeprueft.find(schluessel)!=mGeprueft.end()); } void VersionMapIntern::assertWohlgeformt(const Str & schluessel, bool defaultVorhanden) const { if (geprueft(schluessel)) { if (mGut.find(schluessel)==mGut.end()) throw Fehler("Previous problem with %s still persists", schluessel.data()); return; } /* Schonmal den Prfstempel verteilen, vielleicht vergessen wir's sonst. Insbesondere, wenn die Prfung nicht bestanden wird (Der Stempel sagt nicht "bestanden", sondern wirklich nur "geprft".). */ mGeprueft.insert(schluessel); /* Jetzt Ballast abwerfen, damit es bersichtlicher wird. Dabei testen wir gleich auf Legalitt. */ set > versionen = set >(); if (enthaelt(schluessel)) { map >::const_iterator i0 = mVerzeichnis.find(schluessel); map::const_iterator i = i0->second.begin(), e = i0->second.end(); for (; i!=e; ++i) { if (!legal(i->first.mMerkmale)) /* TRANSLATORS: The composition "%s%s" is programming specific and should not be translated. */ throw Fehler("Illegal version %s%s", schluessel.data(), i->first.toString().data()); versionen.insert(i->first.mMerkmale); } } else if (!defaultVorhanden) throw Fehler("%s required but not defined",schluessel.data()); /* Jetzt kommt der Test, ob Versionen immer eindeutig sind. */ set >::const_iterator i1 = versionen.begin(), i2, e = versionen.end(); for (; i1!=e; ++i1) for (i2 = i1, ++i2; i2!=e; ++i2) { set v = vereinigung(*i1,*i2); if (legal(v)) if (versionen.find(v)==e) /* TRANSLATORS: The composition "%s%s" is programming specific and should not be translated. */ throw Fehler("%s%s not uniquely defined", schluessel.data(), setToString(v).data()); } /* Und jetzt der Redundanzcheck. */ set leer = set(); for (i1 = versionen.begin(); i1!=e; ++i1) { set version = *i1; if (testeAusschoepfendRedundant(*i1,versionen,leer, Version::gAusschoepfend.begin())) /* TRANSLATORS: The composition "%s%s" is programming specific and should not be translated. */ throw Fehler("%s%s eclipsed by more specialized versions", schluessel.data(), setToString(version).data()); } /* Und schlielich der Test, ob auch alle vorhanden sind. */ if (defaultVorhanden) versionen.insert(set()); testeAusschoepfend(schluessel, versionen, leer, Version::gAusschoepfend.begin()); mGut.insert(schluessel); } cuyo-2.1.0/src/parser.yy0000644000175000017500000006424612400104764012072 00000000000000 %{ /*************************************************************************** parser.yy - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "cuyointl.h" #include "code.h" #include "fehler.h" #include "knoten.h" #include "variable.h" #include "ort.h" #include "version.h" #include "global.h" #include "leveldaten.h" #include "sound.h" #define YYMALLOC malloc #define YYFREE free /***********************************************************************/ /* Globale Parse-Variablen */ /** Fr Fehlerausgabe: Aktueller Dateiname */ Str gDateiName; /** Fr Fehlerausgabe: Aktuelle Zeilen-Nummer */ int gZeilenNr; /** True, wenn es whrend des Parsens (mindestens) einen Fehler gab. */ bool gGabFehler; /** Wenn der Parser aufgerufen wird, muss in DefKnoten schon ein DefKnoten stehen, an den alles geparste angefgt wird. Normalerweise erzeugt man einen neuen Defknoten. Beim Includen will man da aber schon was drin haben. Siehe auch %type alles */ static DefKnoten * gAktDefKnoten; //#define MAX_INCLUDE_TIEFE 16 /** YY_BUFFER_STATE ist ein flex-Datentyp fr eine Datei, an der grade geparst wird. */ //static YY_BUFFER_STATE gIncludeStack[MAX_INCLUDE_TIEFE]; /** Aktuelle Include-Tiefe. (0 bei Hauptdatei) */ //static int gIncludeTiefe; //static DefKnoten * gIncludeMerk; /* Beim Erzeugen eines Codes mssen einige Variablen jedes Mal bergeben werden: - der zugehrige DefKnoten, damit ggf. noch Variablen reserviert werden knnen (genauer: die Busy-Variable). - Dateiname und Zeilennummer, damit der Code schnere Fehlermeldungen ausgeben kann. Damit ich das aber nicht jedes Mal eintippen muss, hier ein paar Macros: */ #define newCode0(ART) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART) #define newCode1(ART, X1) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1) #define newCode2(ART, X1, X2) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2) #define newCode3(ART, X1, X2, X3) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2, X3) #define newCode4(ART, X1, X2, X3, X4) new Code(\ gAktDefKnoten, gDateiName, gZeilenNr, ART, X1, X2, X3, X4) /***********************************************************************/ #define VIEL 32767 /* PBEGIN_TRY und PEND_TRY() fangen Fehler ab und geben sie aus, damit weitergeparst werden kann und mehrere Fehler gleichzeitig ausgegeben werden knnen. Sie werden in fehler.h definiert. */ #define YYDEBUG 1 /* Bug in Bison? Er scheint den Stack nicht automatisch vergrern zu wollen, wenn er voll ist. Es sieht so aus, als htte er angst, dass da c++-Variablen vorkommen, wo er (wegen constructor und so) nicht einfach so rumalloziieren kann. (Ich wei nicht, was der LTYPE ist, von dem er nicht festgestellt hat, das er trivial ist.) */ #define YYLTYPE_IS_TRIVIAL 1 %} %union { Code * code; Code * codepaar[2]; Str * str; int zahl; int zahlpaar[2]; Knoten * knoten; DefKnoten * defknoten; ListenKnoten * listenknoten; WortKnoten * wortknoten; Variable * variable; Ort * ort; Version * version; CodeArt codeart; OrtHaelfte haelfte; } %pure_parser %left ';' %nonassoc ']' %nonassoc IF_PREC %nonassoc ELSE_TOK %left ',' %left OR_TOK %left AND_TOK %left EQ_TOK NE_TOK '<' '>' GE_TOK LE_TOK %nonassoc BIS_TOK // x==-3..-2 bedeutet *nicht* (x==-3..)-2 // und x==y==2..3 bedeutet nicht (x==y)==2..3, weil das konstant 0 wre // und willkrlicher auch nicht x==(y==2)..3 %nonassoc '!' %left '+' '-' %nonassoc ':' %left '*' '/' '%' %left '&' '|' BITSET_ATOK BITUNSET_ATOK %nonassoc NEG_PREC %nonassoc '.' %nonassoc error %token INCLUDE_TOK %token BEGIN_CODE_TOK END_CODE_TOK %token SWITCH_TOK IF_TOK BIS_TOK VAR_TOK BUSY_TOK %token ADD_TOK SUB_TOK MUL_TOK DIV_TOK MOD_TOK BITSET_TOK BITUNSET_TOK %token RND_TOK GGT_TOK BONUS_TOK MESSAGE_TOK SOUND_TOK EXPLODE_TOK VERLIER_TOK %token DEFAULT_TOK DA_KIND_TOK %token FREMD_TOK BITSET_ATOK BITUNSET_ATOK %token REINWORT_TOK WORT_TOK NACHBAR8_TOK NACHBAR6_TOK %token NULLEINS_TOK ZAHL_TOK HALBZAHL_TOK BUCHSTABE_TOK PFEIL_TOK %type zuweisungs_operator %type zahl halbzahl vorzeichen_zahl %type wort punktwort proc_def_wort var_def_wort versionsmerkmal %type code code_1 stern_at buch_stern auswahl_liste set_zeile %type ausdruck halbort %type intervall %type ort absort_klammerfrei absort_geklammert absort %type relort_klammerfrei relort_geklammert relort /*%type bedingung*/ %type haelften_spez %type ld_konstante konstante %type echter_default unechter_default %type rechts_von_def def_liste_eintrag %type def_liste %type version versionierung /* Eigentlich wre es naheliegend und schn, wenn alles einen DefKnoten zurckliefern wrde. Statt dessen wird das ber die globale Variable gAktDefKnoten gemanaget. Das hat mehrere Grnde: - Am Ende muss sowieso das Parse-Ergebnis irgendwo weggepeichert werden, damit man es bekommt. - <<>>-Definitionen mssen auf den aktuellen DefKnoten zugreifen knnen. Dazu msste er sowieso in einer globalen Variable stehen. - Beim Includen soll das neu geparste an einen schon vorhandenen DefKnoten angehngt werden. Das ginge anders auch nicht. */ /*%type alles*/ %type variable lokale_variable /* Erklaerung zu den Vorrangsregeln: Bei einem Vorrangskonflikt muss entschieden werden zwischen eine Regel R anwenden oder ein Token T shiften. Sowohl Regeln alsauch token haben Prioritaeten. Dasjenige mit hoeherer Prioritaet (R oder T) wird gemacht. Bei gleichstand entscheidet %left oder %right Beispiel: Stack = "exp exp", gefunden: "(". "exp exp -> exp" und "(" haben gleiche Prioritaet; wegen right wird "(" geshiftet. */ %{ int yyerror(const char * s); int yylex(YYSTYPE * lvalPtr); /** Wechselt die Lex-Datei temporr. Liefert was zurck, was an popLex bergeben werden muss, um wieder zurckzuschalten. Throwt evtl. setzdefault wird an den Pfaditerator bergeben. Wird in lex.ll definiert, weil da die ntigen Lex-Dinge definiert sind. */ void * pushLex(const char * na, bool setzdefault = false); void popLex(void * merkBuf); %} %% /*****************************************************************************/ /***** Normaler Level-Def-Bereich *****/ alles: { /* Nix zu tun. */ } | alles punktwort version '=' rechts_von_def { PBEGIN_TRY gAktDefKnoten->fuegeEin(*$2, *$3, $5); delete $2; delete $3; PEND_TRY(;); } | alles BEGIN_CODE_TOK code_modus END_CODE_TOK { /* Nix zu tun; die Codes speichern sich von alleine nach gAktDefKnoten */ } /* Wenn man nach Fehlern sinnvoll weitermachen zu knnen glaubt, kann man das hier wieder dekommentieren. Aber wenn man recht hat, ist vielleicht die Produktion "code_zeile: error" ein besserer Kandidat. | alles BEGIN_CODE_TOK error END_CODE_TOK */ | alles INCLUDE_TOK punktwort { PBEGIN_TRY /* Lex auf neue Datei umschalten */ void * merkBuf = pushLex($3->data()); /***** Bison-Aufruf fr include-Datei *****/ /* Hier muss man aufpassen, dass mit allen globalen Variablen das richtige passiert. Nichts zu tun ist bei: - gGabFehler (Fehler in include-Datei ist halt auch Fehler) - gAktDefKnoten (Die Include-Datei speichert ihre Ergebnisse auch einfach da mit rein.) */ /* Datei und Zeilennummer zwischenspeichern. */ Str merkDat = gDateiName; gDateiName = *$3; int merkZNr = gZeilenNr; gZeilenNr = 1; /* Der rekursive Aufruf! Hier! Live! (Die Ergebnisse werden in gAktDefKnoten eingefgt.) */ if ((yyparse()) && !gGabFehler) { print_to_stderr("Unknown error during file inclusion!\n"); gGabFehler = true; } gDateiName = merkDat; gZeilenNr = merkZNr; /* Lex auf alte Datei zurckschalten */ popLex(merkBuf); PEND_TRY(;); } ; versionsmerkmal: wort { $$ = $1; } | zahl { $$ = new Str(_sprintf("%d",$1)); } /* Etwas hlich, aber wir brauchen's fr die Versionen 1 und 2. */ ; versionierung: versionsmerkmal { $$ = new Version(); $$->nochEinMerkmal(*$1); delete $1; } | versionsmerkmal ',' versionierung { $$ = $3; $$->nochEinMerkmal(*$1); delete $1; } ; version: { $$ = new Version(); } | '[' versionierung ']' { $$ = $2; } ; ld_konstante: vorzeichen_zahl { $$ = $1; } | '<' konstante '>' { $$ = $2; } ; rechts_von_def: '{' { /* OK, hier wird ein neuer Defknoten erffnet. Der alte wird auf dem Bison-Stack zwischengespeichert... */ DefKnoten * merk = gAktDefKnoten; /* Neuen Defknoten erzeugen, mit dem alten als Vater */ gAktDefKnoten = new DefKnoten(gDateiName, gZeilenNr, merk); $$ = merk; } alles '}' { /* Jetzt wurde gAktDefKnoten mit Inhalt gefllt, den wir zurckliefern */ $$ = gAktDefKnoten; /* POP DefKnoten */ gAktDefKnoten = $2; } | def_liste { $$ = $1; } ; def_liste: def_liste_eintrag { $$ = new ListenKnoten(gDateiName, gZeilenNr); $$->fuegeEin($1); } | def_liste ',' def_liste_eintrag { $$ = $1; $$->fuegeEin($3); } ; def_liste_eintrag: punktwort { $$ = new WortKnoten(gDateiName, gZeilenNr, *$1); delete $1; } | ld_konstante { $$ = new ZahlKnoten(gDateiName, gZeilenNr, $1); } | punktwort '*' ld_konstante { $$ = new VielfachheitKnoten(gDateiName, gZeilenNr, *$1, $3); delete $1; } ; konstante: zahl { $$ = $1; } | wort { Knoten * def = gAktDefKnoten->getVerwandten(*$1, ld->mVersion, false); const DatenKnoten * datum = 0; switch (def->type()) { case type_DatenKnoten: datum=(const DatenKnoten *) def; break; case type_ListenKnoten: datum=((ListenKnoten*) def)->getEinzigesDatum(); break; default: throw Fehler("%s not a number",$1->data()); } $$ = datum->assert_datatype(type_ZahlDatum)->getZahl(); delete $1; } | '(' konstante ')' { $$ = $2; } | '-' konstante %prec NEG_PREC { $$ = -$2; } | konstante '+' konstante { $$ = $1 + $3; } | konstante '-' konstante { $$ = $1 - $3; } | konstante '*' konstante { $$ = $1 * $3; } | konstante '/' konstante { $$ = divv($1,$3); } | konstante '%' konstante { $$ = modd($1,$3); } ; /***** Bereich in << >> *****/ code_modus: | code_modus code_zeile ; code_zeile: proc_def_wort version '=' code_1 ';' { gAktDefKnoten->speicherDefinition(namespace_prozedur, *$1, *$2, $4); delete $1; delete $2; } | VAR_TOK var_liste ';' | DEFAULT_TOK default_liste ';' /* Wenn man nach Fehlern sinnvoll weitermachen zu knnen glaubt, kann man das hier wieder dekommentieren. | error ';' */ ; /* Der nachfolgende Zustand existiert nur, um die Fehlermeldung zu verbessern. */ proc_def_wort: punktwort { $$ = $1; } | BUCHSTABE_TOK { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Procedure names can't be single letters."); PEND_TRY($$ = new Str()); } ; var_liste: var_def | var_liste ',' var_def ; echter_default: konstante { $$[0]=$1; $$[1]=da_init; } | konstante ':' DA_KIND_TOK { $$[0]=$1; $$[1]=da_kind; } ; unechter_default: { $$[0]=0; $$[1]=da_init; } | '=' echter_default { $$[0]=$2[0]; $$[1]=$2[1];} ; var_def: var_def_wort version unechter_default { PBEGIN_TRY gAktDefKnoten->neueVarDefinition(*$1, *$2, $3[0], $3[1]); delete $1; delete $2; PEND_TRY(;) } ; /* Der nachfolgende Zustand existiert nur, um die Fehlermeldung zu verbessern. */ var_def_wort: wort { $$ = $1; } | BUCHSTABE_TOK { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Variable names can't be single letters."); PEND_TRY($$ = new Str()); } ; default_liste: default_def | default_liste ',' default_def ; default_def: var_def_wort version '=' echter_default { PBEGIN_TRY gAktDefKnoten->neuerDefault( ((VarDefinition*) (gAktDefKnoten->getDefinition(namespace_variable,*$1,*$2,false))) -> mNummer, $4[0], $4[1]); delete $1; delete $2; PEND_TRY(;) } ; /***** Code *****/ /* Bemerkung: newCode*() (siehe oben) ruft new Code auf und bergibt noch ein paar Parameter, die jedes Mal bergeben werden mssen (gAktDefKnoten, gDateiName, gZeilenNr) */ code: code_1 { $$ = $1; } | code_1 ';' code { $$ = newCode2(stapel_code, $1, $3);} ; /* Code_1 darf kein Semikolon enthalten. ({} verwenden.) */ code_1: SWITCH_TOK '{' auswahl_liste '}' { $$ = $3; } | IF_TOK ausdruck PFEIL_TOK code_1 %prec IF_PREC { $$ = newCode4(bedingung_code, $2, $4, newCode0(nop_code), $3 + 2 * ohne_merk_pfeil); } | IF_TOK ausdruck PFEIL_TOK code_1 ELSE_TOK code_1 %prec IF_PREC { if ($3==ohne_merk_pfeil) $$ = newCode4(bedingung_code, $2, $4, $6, 3*ohne_merk_pfeil); else /* TRANSLATORS: The text in the literal strings should not be translated. */ throw Fehler("%s","Please specify \"else ->\" or \"else =>\""); } | IF_TOK ausdruck PFEIL_TOK code_1 ELSE_TOK PFEIL_TOK code_1 %prec IF_PREC { /* Nach else kann, muss aber kein Pfeil stehen. (Kein Pfeil will man vermutlich, wenn dann gleich das nchste if kommt.) */ $$ = newCode4(bedingung_code, $2, $4, $7, $3 + 2 * $6); } | '{' code '}' { $$ = $2; } | code_1 ',' code_1 { $$ = newCode2(folge_code, $1, $3);} | zahl { $$ = newCode1(zahl_code, $1); } | buch_stern { $$ = $1; } | zahl buch_stern { $$ = newCode2(stapel_code, newCode1(zahl_code, $1), $2); } | punktwort { PBEGIN_TRY /* Kopie erzeugen...) */ $$ = new Code(gAktDefKnoten, * (Code*) gAktDefKnoten->getDefinition(namespace_prozedur, *$1, ld->mVersion, false), true); delete $1; PEND_TRY($$ = newCode0(undefiniert_code)) } | '&' punktwort { PBEGIN_TRY /* Kopie erzeugen...) */ $$ = newCode1(weiterleit_code, new Code(gAktDefKnoten, * (Code*) gAktDefKnoten->getDefinition(namespace_prozedur, *$2, ld->mVersion, false), false)); delete $2; PEND_TRY($$ = newCode0(undefiniert_code)) } | { $$ = newCode0(nop_code); } | set_zeile { $$ = $1; } | '[' lokale_variable '=' ausdruck ']' code_1 { PBEGIN_TRY if ($2->istKonstante()) throw Fehler(_sprintf("%s is a constant. (Variable expected.)", $2->getName().data())); $$ = newCode3(push_code, $4, $6, $2); PEND_TRY($$ = newCode0(undefiniert_code)) } | BUSY_TOK { $$ = newCode0(busy_code); } | BONUS_TOK '(' ausdruck ')' { $$ = newCode1(bonus_code, $3); } | MESSAGE_TOK '(' punktwort ')' { $$ = newCode1(message_code, _($3->data())); delete $3; } | SOUND_TOK '(' punktwort ')' { $$ = newCode1(sound_code, Sound::ladSample(*$3)); delete $3; } | VERLIER_TOK { $$ = newCode0(verlier_code); } | EXPLODE_TOK { $$ = newCode0(explode_code); } ; set_zeile: variable zuweisungs_operator ausdruck { PBEGIN_TRY if ($1->istKonstante()) throw Fehler(_sprintf("%s is a constant. (Variable expected.)", $1->getName().data())); $$ = newCode2($2, $3, $1); PEND_TRY($$ = newCode0(undefiniert_code)) } ; zuweisungs_operator: '=' { $$ = set_code; } | ADD_TOK { $$ = add_code; } | SUB_TOK { $$ = sub_code; } | MUL_TOK { $$ = mul_code; } | DIV_TOK { $$ = div_code; } | MOD_TOK { $$ = mod_code; } | BITSET_TOK { $$ = bitset_code; } | BITUNSET_TOK { $$ = bitunset_code; } ; /* * oder *@(x,y) oder @(x,y)* */ stern_at: '*' { $$ = newCode0(mal_code); } | '*' ort { $$ = newCode2(mal_code_fremd, $2, 1); } | ort '*' { $$ = newCode2(mal_code_fremd, $1, -1); } ; /* Buchtabe oder Buchstabe* oder *; und evtl. @(bla, blub) */ buch_stern: BUCHSTABE_TOK { $$ = newCode1(buchstabe_code, $1); } | BUCHSTABE_TOK stern_at { $$ = newCode2(stapel_code, newCode1(buchstabe_code, $1), $2); } | stern_at { $$ = $1; } ; auswahl_liste: ausdruck PFEIL_TOK code_1 ';' { $$ = newCode4(bedingung_code, $1, $3, newCode0(nop_code), $2 + 2 * ohne_merk_pfeil); } | ausdruck PFEIL_TOK code_1 ';' PFEIL_TOK code_1 ';' { $$ = newCode4(bedingung_code, $1, $3, $6, $2 + 2 * $5); } | ausdruck PFEIL_TOK code_1 ';' auswahl_liste { $$ = newCode4(bedingung_code, $1, $3, $5, $2 + 2 * mit_merk_pfeil); } ; punktwort: wort { $$ = $1; } | punktwort '.' wort { *$1 += '.'; *$1 += *$3; $$ = $1; delete $3; } | punktwort '.' BUCHSTABE_TOK { *$1 += '.'; *$1 += ($3>=26 ? 'a'+$3-26 : 'A'+$3); $$ = $1; } ; wort: WORT_TOK { $$ = $1; } | REINWORT_TOK { $$ = $1; } ; /***** Ausdrcke *****/ ausdruck: variable { if ($1->istKonstante()) { /* Wenn die Variable in Wirklichkeit eine Konstante ist, dann gleich die Konstante einsetzen. */ $$ = newCode1(zahl_acode, $1->getDefaultWert()); delete $1; } else $$ = newCode1(variable_acode, $1); } | zahl { $$ = newCode1(zahl_acode, $1); } | '(' ausdruck ')' { $$ = $2; } | NACHBAR8_TOK { $$ = newNachbarCode(gAktDefKnoten, gDateiName, gZeilenNr, $1); } | NACHBAR6_TOK { $$ = newNachbarCode(gAktDefKnoten, gDateiName, gZeilenNr, $1); } /* | wort '~' NACHBAR_TOK { print_to_stderr("~ geht noch nicht!!!"); $$ = newNachbarCode(gAktDefKnoten, $3); }*/ | ausdruck ':' ausdruck { $$ = newCode2(manchmal_acode, $1, $3);} | ausdruck '+' ausdruck { $$ = newCode2(add_acode, $1, $3);} | '-' ausdruck %prec NEG_PREC { $$ = newCode1(neg_acode, $2);} | ausdruck '-' ausdruck { $$ = newCode2(sub_acode, $1, $3);} | ausdruck '*' ausdruck { $$ = newCode2(mul_acode, $1, $3);} | ausdruck '/' ausdruck { $$ = newCode2(div_acode, $1, $3);} | ausdruck '%' ausdruck { $$ = newCode2(mod_acode, $1, $3);} | ausdruck BITSET_ATOK ausdruck { $$ = newCode2(bitset_acode, $1, $3);} | ausdruck BITUNSET_ATOK ausdruck { $$ = newCode2(bitunset_acode, $1, $3);} | ausdruck '.' ausdruck { $$ = newCode2(bittest_acode, $1, $3);} | ausdruck EQ_TOK ausdruck { $$ = newCode2(eq_acode, $1, $3);} | ausdruck NE_TOK ausdruck { $$ = newCode2(ne_acode, $1, $3);} | ausdruck GE_TOK ausdruck { $$ = newCode2(ge_acode, $1, $3);} | ausdruck LE_TOK ausdruck { $$ = newCode2(le_acode, $1, $3);} | ausdruck '>' ausdruck { $$ = newCode2(gt_acode, $1, $3);} | ausdruck '<' ausdruck { $$ = newCode2(lt_acode, $1, $3);} | ausdruck '&' ausdruck { $$ = newCode2(bitand_acode, $1, $3);} | ausdruck '|' ausdruck { $$ = newCode2(bitor_acode, $1, $3);} | '!' ausdruck { $$ = newCode1(not_acode, $2);} | ausdruck AND_TOK ausdruck { $$ = newCode2(und_acode, $1, $3);} | ausdruck OR_TOK ausdruck { $$ = newCode2(oder_acode, $1, $3);} | ausdruck EQ_TOK intervall { $$ = newCode3(intervall_acode, $1, $3[0], $3[1]); } | RND_TOK '(' ausdruck ')' { $$ = newCode1(rnd_acode, $3); } | GGT_TOK '(' ausdruck ',' ausdruck ')' { $$ = newCode2(ggt_acode, $3, $5); } ; intervall: ausdruck BIS_TOK { $$[0]=$1; $$[1]=newCode1(zahl_acode, VIEL); } | BIS_TOK ausdruck { $$[0]=newCode1(zahl_acode, -VIEL); $$[1]=$2; } | ausdruck BIS_TOK ausdruck { $$[0]=$1; $$[1]=$3; } ; lokale_variable: wort { PBEGIN_TRY $$ = new Variable(//gDateiName, gZeilenNr, (VarDefinition*) gAktDefKnoten-> getDefinition(namespace_variable, *$1, ld->mVersion, false), 0 ); PEND_TRY($$ = new Variable()) delete $1; } | BUCHSTABE_TOK { /* Wie gibt man einen Fehler mglichst umstndlich aus? (Aber so, dass er genauso aussieht wie die anderen Fehler. */ PBEGIN_TRY throw Fehler("%s","Variable names can't be single letters."); PEND_TRY($$ = new Variable()); } ; variable: lokale_variable { $$ = $1; } | wort ort { PBEGIN_TRY $$ = new Variable(//gDateiName, gZeilenNr, (VarDefinition*) gAktDefKnoten-> getDefinition(namespace_variable, *$1, ld->mVersion, false), $2); PEND_TRY($$ = new Variable()) delete $1; } ; halbort: ausdruck { $$ = $1; } | halbzahl { $$ = newCode1(zahl_acode, $1); } ; haelften_spez: '=' { $$ = haelfte_hier; } | '!' { $$ = haelfte_drueben; } | '<' { $$ = haelfte_links; } | '>' { $$ = haelfte_rechts; } ; absort_klammerfrei: { $$ = new Ort(absort_semiglobal); } | NULLEINS_TOK { $$ = new Ort(absort_fall, newCode1(zahl_acode, $1)); } ; absort_geklammert: { $$ = new Ort(absort_semiglobal); } | ausdruck { $$ = new Ort(absort_fall, $1); } | halbort ',' halbort { $$ = new Ort(absort_feld, $1, $3); } ; absort: absort_klammerfrei { $$ = $1; } | '(' absort_geklammert ')' { $$ = $2; } | '(' absort_geklammert ';' haelften_spez ')' { $2->setzeHaelfte($4); $$ = $2; } ; relort_klammerfrei: { $$ = new Ort(absort_global); } | NULLEINS_TOK { $$ = new Ort(newCode1(zahl_acode, $1)); } ; relort_geklammert: { $$ = new Ort(absort_global); } | ausdruck { $$ = new Ort($1); } | halbort ',' halbort { $$ = new Ort($1, $3); } ; relort: relort_klammerfrei { $$ = $1; } | '(' relort_geklammert ')' { $$ = $2; } | '(' relort_geklammert ';' haelften_spez ')' { $2->setzeHaelfte($4); $$ = $2; } ; ort: '@' relort { $$ = $2; } | FREMD_TOK absort { $$ = $2; } ; zahl: ZAHL_TOK { $$ = $1; } | NULLEINS_TOK { $$ = $1; } ; /* Bei relativen Koordinaten fr Variablenangaben drfen in Y-Richtung auch Halbganze Zahlen angegeben werden... (fr Hex-Level) */ halbzahl: HALBZAHL_TOK { /* Halbzahlen sollen intern aufgerundet gespeichert werden... */ $$ = $1 + 1; } | '-' HALBZAHL_TOK { $$ = -$2; } ; vorzeichen_zahl: zahl { $$ = $1; } | '-' zahl { $$ = -$2; } ; %% /*****************************************************************************/ extern FILE * yyin; int yyparse(); //void initLex(); int yyerror (const char * s) /* Called by yyparse on error */ { PBEGIN_TRY throw Fehler(Str(s)); PEND_TRY(;) return 0; } /* ffnet die Datei mit dem angegebenen Namen und parst sie. Das Ergebnis wird in den Defknoten erg geschrieben. */ /** Komplettbeschreibung vom Parse-Vorgang siehe leveldaten.h */ void parse(const Str & name, DefKnoten * erg) { /* Datei ffnen, Lex initialisieren. Eigentlich bruchte man kein pushLex und popLex ganz auen; aber es ist irgendwie sauberer. Vor allem ist dann sicher, dass ein Fehler in einem frheren Parsen keine Auswirkungen auf ein spteres Parsen hat. true = Default-Pfad merken fr die Includes. (wird an den Pfaditerator weitergegeben.) */ void * merkBuf = pushLex(name.data(), true); gDateiName = name; gZeilenNr = 1; gGabFehler = false; /* Wenn es denn mal ein bison-Fehler-recovery gibt, sollte gGabFehler dort auf true gesetzt werden */ /* Das Parse-Ergebnis soll in den Knoten erg geschrieben werden. */ gAktDefKnoten = erg; /* Hier findet das Parsen statt. Man beachte: Um Flex und Bison nicht zu verwirren, kann yyparse() nicht mit throw verlassen werden. Deshalb brauchen wir nix zu catchen, um alles wieder aufrumen zu knnen. */ int perg = yyparse(); /* Datei schlieen, lex zurcksetzen. */ popLex(merkBuf); /* Hier werden vermutlich mehr Bedingungen getestet als ntig. */ if (perg || gGabFehler) throw Fehler("%s","There have been errors parsing the level description files."); } cuyo-2.1.0/src/bilddatei.h0000644000175000017500000001231411674440315012301 00000000000000/*************************************************************************** bilddatei.h - description ------------------- begin : Fri Apr 20 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef BILDDATEI_H #define BILDDATEI_H #include #include #include "sdltools.h" #include "maske.h" #include "stringzeug.h" /* Zur bergabe an malBildchen(): Welches Viertel soll gemalt werden? Entweder viertel_alle bergeben oder viertel_q** | viertel_z** Ersteres (Quelle) gibt an, welches Viertel aus der Datei genommen wird, zweiteres (Ziel) in welches Viertel gemalt wird. */ #define viertel_alle (-1) /* Achtung: Wenn die nachfolgenden Konstanten gendert werden, muss auch const_werte in blop.cpp gendert werden. */ #define viertel_qlo 0 #define viertel_qro 1 #define viertel_qlu 2 #define viertel_qru 3 #define viertel_zlo 0 #define viertel_zro 4 #define viertel_zlu 8 #define viertel_zru 12 /* Bit-Masken... */ #define viertel_qr 1 #define viertel_qu 2 #define viertel_zr 4 #define viertel_zu 8 /* Fr range-Check (siehe BildStapel::speichereBild()) */ #define viertel_min (-1) #define viertel_max 15 class BildOriginal; /**verwaltet ein xpm als Ansammlung von 16x16-Bildchen; und auch sonstige *Bilder. Kmmert sich insbesondere um Umfrbung und Bildschirmskalierung */ class Bilddatei { public: Bilddatei(); ~Bilddatei(); void datenLoeschen(); /* Fr gleiche Quelle aber unabhngige Nachbearbeitung. Diese wird gleich schon mal in Form einer Umfrbung vollzogen. */ Bilddatei(Bilddatei *, const Color &); /** Ldt das Bild mit dem angegebenen Namen. Sucht in verschiedenen Pfaden danach.Throwt ggf. */ void laden(Str name); void klonen(Bilddatei & quelle); void setFaerbung(const Color & faerbung); /** malt das k-te Viertel vom n-te Bildchen an xx,yy. Oder evtl. das ganze Bildchen */ void malBildchen(int xx, int yy, int n, int k = viertel_alle) const; /** liefert zurck, wie viele Bildchen in dieser Datei sind. */ int anzBildchen() const; /** malt das gesamte Bild */ void malBild(int xx, int yy) const; /** malt einen beliebigen Bildausschnitt */ void malBildAusschnitt(int xx, int yy, const SDL_Rect & src) const; /* Malt das angegebene Rechteck (bzw. Teile davon) so oft, dass ein horizontaler Streifen der Lnge l entsteht. Geht davon aus, das in dem Bildchen das src-Rechteck horizontal einheitlich ist. Je grer src, desto schneller geht das malen. */ void malStreifenH(int xx, int yy, int l, const SDL_Rect & src) const; /* Das selbe in vertikal */ void malStreifenV(int xx, int yy, int l, const SDL_Rect & src) const; /** liefert die Gesamtbreite in Pixeln zurck */ int getBreite() const; /** liefert die Gesamthoehe in Pixeln zurck */ int getHoehe() const; /** liefert true, wenn das Bild (erfolgreich) geladen ist */ bool istGeladen() const {return mBild != 0;} /** Nur zum anschauen, nicht zum veraendern! Liefert das Bild in unskaliert und 32 Bit. */ SDL_Surface * getSurface() const; void setAsBackground(int y); protected: /** Macht aus dem Original-Bild die gefaerbte und auf Bildschirmformat gebrachte Version (mBild). */ void bildNachbearbeiten(); BildOriginal * mBildOriginal; SDL_Surface * mBild; SDL_Surface * mNativBild; /* Eine Kopie von mBild im Format des Screen-Surfaces. Ist NULL, bis es gebraucht wird. */ RohMaske mMaskeOriginal; Maske mMaske; int mBreite, mHoehe; Str mName; // Fuer bessere Fehlermeldungen bool mGefaerbt; Color mFaerbung; int mScale; public: /** Ggf. alle existierenden Bildchen reskalieren. */ static void resizeEvent(); protected: void sorgeFuerNativBild(); void loescheAusZentralregister(); /* Liste aller geladenen Bilddateien */ static std::vector * gAlleBilddateien; public: static void init(); static void destroy(); }; /* Automatically colorize Bilddateien in a color which may change; use addUser to add Bilddateien which should use this color; use setColor to change the color of all users. It is the responsibility of the caller of setColor() to redraw the screen if necessary */ class AutoColor { Color mColor; std::vector mUser; public: void setColor(const Color & c); void addUser(Bilddatei * b); void operator=(const Color & c); static AutoColor gGame; }; #endif cuyo-2.1.0/src/bildstapel.h0000644000175000017500000001071312417277724012514 00000000000000/*************************************************************************** bildstapel.h - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef BILDSTAPEL_H #define BILDSTAPEL_H #include /** So viele Bilder drfen hchstens fr einen Blop gemalt werden. */ #define max_bild_anz 20 /* Fr spezvar_outX, wenn nix ausgegeben werden soll. */ #define spezvar_out_nichts 0x7fff #define bildstapel_min_ebene (-1) #define bildstapel_max_ebene 1 class Sorte; /** Enthlt die komplette Information darber, wie ein blop grade aussieht. Also: - Eine Liste von Bildern, die gemalt werden mssen. Fr jedes Bild: - Sorte (Achtung: Muss nicht mit der aktuellen Blop-Sorte bereinstimmen, wenn sich der Blop grade verwandelt hat. Oder wenn ein Nachbarblob hier her gemalt hat.); Datei-Nr; Pos; Viertel - Platz-Zustand des Blops. (Ist vielleicht etwas unschn, dass das die einzige Stelle ist, wo sich ein Blop seinen Platz-Zustand merkt. ist aber ja eigentlich auch egal.) - Eventuelle Debug-Output-Werte Das existiert vor allem deshalb als eigenstndiges Objekt, damit man einen aktuellen Bildstapel mit einem veralteten vergleichen kann (um zu wissen, ob man den Blob neu malen muss). Verwendung: - Erst initStapel() aufrufen. Dann mit speichereBild() die gewnschten Bilder speichern. - Mit == kann verglichen werden, ob zwei Bildstapel das selbe malen. - Mit malen() kann der Stapel tatschlich gemalt werden. */ class BildStapel { /** Eine Ebene des BildStapels */ struct BildEbene { const Sorte * mSorte; int mDat; int mPos; int mViertel; int ebene; bool operator==(const BildEbene & e2) const { return mSorte == e2.mSorte && mDat == e2.mDat && mPos == e2.mPos && mViertel == e2.mViertel && ebene == e2.ebene; } }; /** Maximale Stapelhhe. Wird aus den Leveldaten ausgelesen. */ int mMaxAnz; /** Tatschliche Stapelhoehe */ int mAnz; BildEbene * mStapel; /** Die Debug-Zahlen, die ber das Blob geschrieben werden sollen. */ int mDebugOut1, mDebugOut2; /** Aktueller Platz-Zustand. */ int mAmPlatzen; public: /** Erzeugt einen uninitialisierten Bildstapel */ BildStapel(bool); BildStapel(); ~BildStapel(); BildStapel & operator=(const BildStapel & b); private: void kopiere(const BildStapel & b); void deepCreate(); void deepLoesch(); public: bool operator==(const BildStapel & b) const; /** Entfernt alle Bilder. Aufrufen, bevor speichereBild() fr jedes Bild aufgerufen wird. */ void initStapel(int platz); void speichereBild(Sorte * so, int dat, int pos, int viertel, int ebene = 0); void setDebugOut(int d1, int d2); /** malt den Bildstapel. xx und yy sind in Pixeln angegeben; Stimmt die folgende Behauptung?? der Hintergrund wird vorher gelscht. If apply_mirror is set and the level is an upside-down one, then the respective coordinate-transformation is applied. */ void malen(int xx, int yy, bool apply_mirror=true) const; /** Liefert true, wenn der Stapel initialisiert ist */ bool istInitialisiert() const; /** Liefert true, wenn der Stapel leer ist. Wird benutzt, um eine Fehlermeldung auszuspucken, wenn whrend eines Events gemalt wird. */ bool istLeer() const; /** Fr Debug-Ausgaben */ void print() const; private: /** Gibt die Zahl n aus. Wird fr Debug-Output von malen() benutzt. */ void malDebug(int xx, int yy, int n) const; }; #endif cuyo-2.1.0/src/cuyointl.cpp0000644000175000017500000001240011674440316012556 00000000000000/*************************************************************************** cuyointl.cpp - description ------------------- begin : Sun Nov 9 2008 copyright : (C) 2008 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2009-2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include "cuyointl.h" char * copy(const char * s) { size_t l = strlen(s)+1; char * ret = (char*) malloc(l*sizeof(char)); memcpy((void*) ret, (void*) s, l*sizeof(char)); return ret; } #ifdef ENABLE_NLS #include #include #include #include #include #include const char * font_charset = "ISO-8859-1"; const char * stdout_charset; const char * our_gettext(const char * to_translate) { if (*to_translate) return gettext(to_translate); else return ""; } void init_NLS() { /* PACKAGE comes from config.h. LOCALEDIR is given on the command line, but also originates from the configure run. */ setlocale (LC_ALL, ""); stdout_charset = nl_langinfo(CODESET); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); bind_textdomain_codeset (PACKAGE, font_charset); } char * convert_error(char * ret, char * s, const char * message) { fputs(message,stderr); free(ret); return s; } char * convert_from_internal(const char * to_charset, const char * source, size_t & outlen) { /* In this function, we assume that the iconv implementation is sane enough not to behave worse for unconvertable but correctly encoded characters than for illegal encodings. */ /* We make a copy of the source string in order to discard the const. */ char * s = copy(source); size_t inlen = strlen(s); char * inpos=s; size_t inleft=inlen; size_t outsize=inlen; char * ret = (char*) malloc((outsize+1)*sizeof(char)); /* The +1 is always to have room for the final null character. */ char * outpos=ret; size_t outleft=outsize; iconv_t handle = iconv_open(to_charset, font_charset); if (handle == (iconv_t) -1) return convert_error(ret,s,"Character conversion not possible."); while (*inpos) { size_t res = iconv(handle,&inpos,&inleft,&outpos,&outleft); if (res == (size_t) -1) /* An error occured */ switch (errno) { case EILSEQ: /* An invalid character. We just skip it. */ inpos++; break; case E2BIG: { /* The output buffer was too small. We enlarge it and retry (in the next iteration of the loop). */ size_t outused = outpos-ret; outsize *= 2; ret = (char*) realloc((void*) ret, (outsize+1)*sizeof(char)); /* The +1 is always to have room for the final null character. */ outpos = ret+outused; outleft = outsize-outused; break; } default: return convert_error(ret,s,"Internal error during conversion."); } } /* The input string is finished, but the conversion may still have to put some stuff in the output string. */ bool finished = false; while (!finished) { size_t res = iconv(handle,NULL,&inleft,&outpos,&outleft); if (res == (size_t) -1) /* An error occured */ switch (errno) { case E2BIG: { /* The output buffer was too small. We enlarge it and retry (in the next iteration of the loop). */ size_t outused = outpos-ret; outsize *= 2; ret = (char*) realloc((void*) ret, (outsize+1)*sizeof(char)); /* The +1 is always to have room for the final null character. */ outpos = ret+outused; outleft = outsize-outused; break; } default: return convert_error(ret,s,"Internal error during conversion."); } else finished=true; } if (iconv_close(handle) == -1) return convert_error(ret,s,"Internal error during conversion."); *outpos = 0; free(s); outlen = outpos-ret; return ret; } char * convert_for_font(const char * s) {return copy(s);} char * convert_for_stdout(const char * s, size_t & len) { return convert_from_internal(stdout_charset, s, len); } char * convert_for_window_title(const char * s) { size_t len; return convert_from_internal("UTF-8", s, len); } #else void init_NLS() {} char * convert_for_font(const char * s) {return copy(s);} char * convert_for_stdout(const char * s, size_t & len) { len = strlen(s); return copy(s); } char * convert_for_window_title(const char * s) {return copy(s);} #endif cuyo-2.1.0/src/prefsdaten.h0000644000175000017500000000520512376035547012523 00000000000000/*************************************************************************** prefsdaten.h - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2003,2006,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PREFSDATEN_H #define PREFSDATEN_H #include #include #include "SDL.h" /* Konstanten fr das Tasten-Array */ /* Achtung: Vor ndern dieser Konstanten checken, ob ui::zeigePrefs() immernoch so von diesen Konstanten abhaengt. */ #define taste_anz 4 #define taste_links 0 #define taste_rechts 1 #define taste_dreh 2 #define taste_fall 3 /** Datenstruktur fr das, was in .cuyo steht: Das, was man im preferences-Dialog und im Hauptmenue einstellen kann und welche Level gewonnen wurden. */ namespace PrefsDaten { /** Requires Version::init() to have been run. */ void init(); /** Returns true if level lnr has already been won. */ bool getLevelGewonnen(bool sp2, int lnr); /** sp2: true bei zweispielermodus. Requires Version::init() to have been run. */ void schreibGewonnenenLevel(bool sp2, const Str intlena); /** Liefert true, wenn die Taste k belegt ist, und speichert dann in sp und t ab, was die Taste tut. */ bool getTaste(SDLKey k, int & sp, int & t); SDLKey getTaste(int sp, int t); double getKIGeschwLin(); int getKIGeschwLog(); void setTaste(int sp, int t, SDLKey code); void setKIGeschwLog(int kigl); bool getSound(); void setSound(bool s); int getPlayers(); void setPlayers(int); int getLevelTrack(); void setLevelTrack(int); int getDifficulty(); void setDifficulty(int); Str getLastLevel(); void setLastLevel(const Str); /** Sollte nach Aenderungen mit set...() aufgerufen werden. Requires Version::init() to have been run. */ void schreibPreferences(); } #endif cuyo-2.1.0/src/Makefile.in0000644000175000017500000005454712422656610012271 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright <=2001 by the cuyo developers # Maintenance modifications 2002-2008,2010-2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Verzeichnis src VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = cuyo$(EXEEXT) subdir = src DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in parser.cc parser.h scanner.cc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_cuyo_OBJECTS = bilddatei.$(OBJEXT) blopbesitzer.$(OBJEXT) \ blop.$(OBJEXT) blopgitter.$(OBJEXT) configdatei.$(OBJEXT) \ cuyointl.$(OBJEXT) fall.$(OBJEXT) cuyo.$(OBJEXT) \ kiplayer.$(OBJEXT) leveldaten.$(OBJEXT) main.$(OBJEXT) \ nachbariterator.$(OBJEXT) sorte.$(OBJEXT) spielfeld.$(OBJEXT) \ pfaditerator.$(OBJEXT) xpmladen.$(OBJEXT) parser.$(OBJEXT) \ scanner.$(OBJEXT) code.$(OBJEXT) knoten.$(OBJEXT) \ datendatei.$(OBJEXT) variable.$(OBJEXT) fehler.$(OBJEXT) \ definition.$(OBJEXT) bildstapel.$(OBJEXT) aufnahme.$(OBJEXT) \ punktefeld.$(OBJEXT) global.$(OBJEXT) prefsdaten.$(OBJEXT) \ sound.$(OBJEXT) ort.$(OBJEXT) ui.$(OBJEXT) \ stringzeug.$(OBJEXT) version.$(OBJEXT) font.$(OBJEXT) \ sdltools.$(OBJEXT) blatt.$(OBJEXT) menueintrag.$(OBJEXT) \ maske.$(OBJEXT) cuyo_OBJECTS = $(am_cuyo_OBJECTS) am__DEPENDENCIES_1 = cuyo_DEPENDENCIES = $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) YLWRAP = $(top_srcdir)/ylwrap @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(cuyo_SOURCES) DIST_SOURCES = $(cuyo_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ cuyo_SOURCES = bilddatei.cpp blopbesitzer.cpp blop.cpp blopgitter.cpp \ configdatei.cpp cuyointl.cpp fall.cpp cuyo.cpp kiplayer.cpp \ leveldaten.cpp main.cpp nachbariterator.cpp sorte.cpp \ spielfeld.cpp pfaditerator.cpp xpmladen.cpp parser.yy \ scanner.ll code.cpp knoten.cpp datendatei.cpp variable.cpp \ fehler.cpp definition.cpp bildstapel.cpp aufnahme.cpp \ punktefeld.cpp global.cpp prefsdaten.cpp sound.cpp ort.cpp \ ui.cpp stringzeug.cpp version.cpp font.cpp sdltools.cpp \ blatt.cpp menueintrag.cpp maske.cpp $(BUILT_SOURCES) noinst_HEADERS = bilddatei.h blopbesitzer.h blopgitter.h blop.h \ configdatei.h cuyointl.h fall.h inkompatibel.h cuyo.h \ kiplayer.h layout.h leveldaten.h nachbariterator.h sorte.h \ spielfeld.h pfaditerator.h fehler.h xpmladen.h code.h knoten.h \ datendatei.h variable.h definition.h bildstapel.h aufnahme.h \ punktefeld.h global.h prefsdaten.h sound.h ort.h ui.h \ stringzeug.h version.h ui2cuyo.h font.h sdltools.h blatt.h \ menueintrag.h maske.h parser.h AM_YFLAGS = -d -v cuyo_LDADD = $(SDL_LIBS) AM_CPPFLAGS = $(SDL_CPPFLAGS) -DPKGDATADIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(localedir)\" # Damit man alles unntige Zeug lschen kann MAINTAINERCLEANFILES = Makefile.in CLEANFILES = parser.output all: all-am .SUFFIXES: .SUFFIXES: .cc .cpp .ll .o .obj .yy $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) parser.h: parser.cc @if test ! -f $@; then rm -f parser.cc; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parser.cc; else :; fi cuyo$(EXEEXT): $(cuyo_OBJECTS) $(cuyo_DEPENDENCIES) $(EXTRA_cuyo_DEPENDENCIES) @rm -f cuyo$(EXEEXT) $(CXXLINK) $(cuyo_OBJECTS) $(cuyo_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aufnahme.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bilddatei.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bildstapel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blatt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blopbesitzer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blopgitter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/code.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configdatei.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cuyo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cuyointl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datendatei.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/definition.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fehler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/global.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kiplayer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/knoten.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leveldaten.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maske.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menueintrag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nachbariterator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pfaditerator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefsdaten.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/punktefeld.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdltools.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sorte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spielfeld.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringzeug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpmladen.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .ll.cc: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .yy.cc: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f parser.cc -rm -f parser.h -rm -f scanner.cc -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS # Offenbar blickt das depend-dings nicht, dass scanner.ll von # parser.h abhngt: scanner.ll: parser.h # Cuyo starten... run: cuyo ./cuyo -d # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/src/blopbesitzer.cpp0000644000175000017500000000366112400104761013412 00000000000000/*************************************************************************** blopbesitzer.cpp - description ------------------- begin : Sat Jul 14 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cuyointl.h" #include "blopbesitzer.h" #include "fehler.h" #include "spielfeld.h" BlopBesitzer::BlopBesitzer(Spielfeld * spf) : mSpf(spf) {} /** For Blopgitters, this returns the Blop at the specified coordinates. May not be called otherwise, or with incorrect coordinates. This is used for accessing variables at foreign coordinates. */ const Blop & BlopBesitzer::getFeld(int /*x*/, int /*y*/) const { throw iFehler("%s","Internal error in const BlopBesitzer::getFeld()"); } /** Dito */ Blop & BlopBesitzer::getFeld(int /*x*/, int /*y*/) { throw iFehler("%s","Internal error in BlopBesitzer::getFeld()"); } const Blop * BlopBesitzer::getFall(int a) const { return mSpf->getFall()+a; } Blop * BlopBesitzer::getFall(int a) { return mSpf->getFall()+a; } int BlopBesitzer::getSpezConst(int /*vnr*/, const Blop *) const { return spezconst_defaultwert; } cuyo-2.1.0/src/leveldaten.h0000644000175000017500000002627612410640315012506 00000000000000/*************************************************************************** leveldaten.h - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers Modified 2012 by Bernhard R. Link Maintenance modifications 2012,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef LEVELDATEN_H #define LEVELDATEN_H #include #include #include "sdltools.h" #include "sorte.h" #include "bilddatei.h" #include "version.h" class Str; class Code; class Blop; class DefKnoten; class ListenKnoten; class DatenDatei; class Fehler; /***** Konstanten, die irgend was einstellen *****/ /* Konstanten, die mit dem Layout zusammenhngen: siehe layout.h */ #define max_spielerzahl 2 #define max_farben_zahl 200 // Max. Anzahl der Farben in einem Level /* Wofr gibt es wie viele Punkte */ #define punkte_fuer_normales 1 #define punkte_fuer_graues 0 #define punkte_fuer_gras 20 #define punkte_fuer_kettenreaktion 10 /* Pixel pro Schritt: Bonus-Hetzrand-Geschwindigkeit */ #define bonus_geschwindigkeit 32 /* Punkte pro Zeitschritt der Bonus-Animation */ #define punkte_fuer_zeitbonus 10 /***** Konstanten, die einfach nur was bedeuten *****/ #define zufallsgraue_keine (-1) #define PlatzAnzahl_undefiniert (-1) /* Zur bergabe an laden(), um den Titel-Level zu laden */ #define level_titel (-1) /* Fr die codes in startdist */ #define distkey_leer (-1) #define distkey_gras (-2) #define distkey_grau (-3) #define distkey_farbe (-4) #define distkey_neighbours (-5) #define distkey_chainreaction (-6) #define distkey_undef (-7) /* nachbarschaft_... steht in sorte.h */ /* Zur Unterscheidung von lazy und eager */ enum LDTeil { ldteil_summary, ldteil_level, ldteile_anzahl }; /** Array, das alle Sorten eines Levels enthlt. Das Hauptfeature dieser Klasse ist, dass Sorten automatisch gelscht werden knnen, und zwar: - nur die, die auch ins Array geschrieben wurden - nur die, die nicht Kopien sind. */ class SortenArray { /** Die eigentliche Liste der Sorten (alles indizes sind um blopart_min_sorte verschoben) */ Sorte * mSorten[max_farben_zahl - blopart_min_sorte]; /** Welche der mSorten-Pointer sind Kopien von anderen Pointern, und * welche sind Originale? (Nur originale mssen gelscht werden) */ bool mOriginale[max_farben_zahl - blopart_min_sorte]; /** Laenge des positiven Teils des Arrays; -1 = array leer */ int mLaenge; public: SortenArray(); /** Sorte auslesen */ Sorte * operator[](int nr) const; /** Lnge des Arrays ndern (genauer gesagt: Lnge des positiven Teils); * sollte nur aufgerufen werden, wenn das Array leer ist. */ void setLaenge(int l); /** Sorte in das Array einfgen; normalerweise wird die Sorte dann von loeschen() gelscht; aber nicht, wenn istOriginal = false ist; dann wird davon ausgegangen, dass der Pointer nur eine Kopie ist. */ void neueSorte(int nr, Sorte * s, bool istOriginal = true); void loeschen(); }; // class SortenArray /** (Einziges globales) Objekt enthlt alle Informationen ber den aktuellen Level. Das Parsen der ld-Dateien: - Beim Aufruf des constructors von LevelDaten() wird ladLevelSummary() aufgerufen. - ladLevelSummary() bzw ladLevel sucht die richtige Datei und erzeugt ein DatenDatei-Objekt - Der Constructor davon ffnet die Datei und ruft parse() auf. - parse() ruft den bison-Parser auf. Der erzeugt folgendes: - Einen Baum aus Knoten: DefKnoten, ListenKnoten, WortKnoten - Jeder DefKnoten enthlt noch eine Liste von Codeen (die in der level.descr in << >> definiert wurden) - Codeen sind auch wieder baumartig - Wenn in einem Code ein Name eines anderen Codes vorkommt, wird das schon beim Parsen aufgelst, indem in den CodeSpeichern der darberliegenden DefKnoten nachgeschaut wird @author Immi */ class LevelDaten { friend class Sorte; friend int yyparse(); public: LevelDaten(const Version & version); ~LevelDaten(); /** Ld die Levelconf (neu). Wird vom Konstruktor aufgerufen. Und, wenn sich Einstellungen verndert haben. Eine Vorbedingung ist also, da niemand grad auf irgendwelche Daten dieses Objekts angewiesen ist, insbesondere also, da grad kein Spiel luft. Bei aufJedenFall=false wird nur dann wirklich neu geladen, wenn version!=mVersion. Bei ldteil=ldteil_summary wird am Ende noch der inhalt aller in global= aufgefhrten Dateien nach ldteil_level geladen. */ void ladLevelSummary(bool aufJedenFall, const Version & version); protected: /** Ld den level-spezifischen Teil */ void ladLevelConfig(); public: /** Wird whrend des Parsens (d. h. innerhalb von ladLevel*()) von DefKnoten aufgerufen, wenn ein neuer Level gefunden wurde. Fgt den Level in die Liste der Level ein. ladLevelSummary() kann sich danach immernoch entscheiden, ob es die Liste wieder lscht und durch die "level=..."-Liste ersetzt. */ void levelGefunden(Str lna); /* Gibt Speicher frei */ void entladLevel(); /** fllt alle Daten in diesem Objekt fr Level nr aus; throwt bei Fehler */ void ladLevel(int nr); /** Darf nur aufgerufen werden, wenn nr schon der letzte Level war. Erneuert alles, was seitdem vergessen worden sein knnte. */ void erneuerLevel(int nr); /** Sollte am Anfang des Levels aufgerufen werden; kmmert sich um den Global-Blop */ void startLevel() const; /** Sollte einmal pro Spielschritt aufgerufen werden (bevor Spielfeld::spielSchritt() aufgerufen wird). Kmmert sich um den Global-Blop */ void spielSchritt() const; /** Liefert zurck, wie viele Level es gibt. */ int getLevelAnz() const; /** Lifert zurck, ob die Level der Reihe nach gespielt werden mssen */ int getAngeordnet() const; /** Liefert den Namen von Level nr zurck. Liefert "???" bei Fehler. */ Str getLevelName(int nr) const; /** Liefert den internen Namen von Level nr zurck. */ Str getIntLevelName(int nr) const; /** Liefert die Nummer des Levels mit dem angegebenen internen Namen zurck, oder 0, wenn der Level nicht existiert. */ int getLevelNr(Str na) const; bool levelAccessible(int l) const; /** Wenn eine Sorte ihre Platzanzahl rausgefunden hat, teilt sie uns das mit */ void neue_PlatzAnzahl(int); int zufallsSorte(int wv); int liesDistKey(const Str &); const Version & getVersion() const; /** Setzt AutoColor::gGame */ void setSchriftFarbe(Color f); /** Liefert true, wenn die angegebene Spalte vom angegebenen Spieler verschoben ist (wegen Hex-Modus) */ bool getHexShift(bool rechts, int x) const; protected: /** Ld ein paar Sorten. Wird mehrfach von ladLevel() aufgerufen. */ void ladSorten(const Str & ldKeyWort, int blopart); /** Die Objekte, mit denen man auf die Dateien zugreift. Hier stehen nur Pointer drauf, damit diese .h-Datei nicht so viel includen muss. */ DatenDatei * mLevelConf[ldteile_anzahl]; /** True, wenn zur Zeit der entsprechende Teil der LevelConf geladen ist. */ bool mLCGeladen[ldteile_anzahl]; /** Alle Level, die schon mal geladen wurden und daher noch vorhanden sind. Hier stehen die Dateinamen. */ std::set mLevelCache; /** Liste der internen Levelnamen. */ std::vector mIntLevelNamen; /** True falls die Level der Reihe nach gespielt werden mssen. */ bool mAngeordnet; Version mVersion; public: /* Die ganzen nachfolgenden Variablen werden von ladLevel() gesetzt. Danach greifen alle anderen Objekte, die was mit dem Spiel zu tun haben, direkt darauf zu. */ /***** Allgemeines *****/ bool mLevelGeladen; int mLevelNummer; /* Nummer des geladenen Levels */ int mSpielerZahl; /** Interner Level-Name vom aktuellen Level. (Wird von Aufnahme bentigt.) */ Str mIntLevelName; Str mLevelName; Str mLevelAutor; /** Der Knoten zum aktuellen Level. */ DefKnoten * mLevelKnoten; /** Beschreibungstext fr den Level */ Str mBeschreibung; Color mHintergrundFarbe; bool mMitHintergrundbildchen; Bilddatei mHintergrundBild; /** Farbe der Schrift in dem Level: 0 = abgedunkelt, 1 = normal, 2 = aufgehellt */ Color mSchriftFarbe; bool mGrasBeiKettenreaktion; bool mFallPosZufaellig; Bilddatei mExplosionBild; int mPlatzAnzahlDefault; int mPlatzAnzahlMin; int mPlatzAnzahlMax; /* Gibt an, ob neben mPlatzAnzahlMin und mPlatzAnzahlMax noch andere PlatzAnzahlen vorkommen. */ bool mPlatzAnzahlAndere; Str mMusik; /** Max. Anzahl der Bilder, die ein Blop gleichzeitig malt. Wird (ggf.) von den Sorten erhht, wenn man sie ldt. */ int mStapelHoehe; /** Anzahl der Bilder, die Blops auf Nachbarfelder malen. Der Einfachheit halber wird das hier fr alle Sorten aufsummiert, statt alles schn nach relativen Koordinaten zu trennen, etc. Wird auch von den Sorten erhht, wenn man sie ldt. */ int mNachbarStapelHoehe; /***** Die Sorten *****/ public: /** Die ganzen Sorte-Objekte */ SortenArray mSorten; int mAnzFarben; int mVerteilungSumme[anzahl_wv]; int mKeineGrauenW; /** Zhlt nicht zu mGrauSumme */ /***** Hetzrand *****/ Color hetzrandFarbe; int hetzrandZeit; bool mMitHetzbildchen; Bilddatei mHetzBild; int mHetzrandUeberlapp; int mHetzrandStop; /***** Gras *****/ ListenKnoten * mAnfangsZeilen; int mDistKeyLen; /** Lnge der distKeys. 0, wenn es noch keinen gab. */ /***** KI-Player-Nutzen-Funktion *****/ /** Zusatzpunkte fr beide Blops gleiche Farbe & Senkrecht*/ int mKINEinfarbigSenkrecht; /** Vorfaktor vor Bewertung der Blop-Hhe */ int mKINHoehe; /** Punkte fr Blob mit gleicher Farbe benachbart */ int mKINAnFarbe; /** Punkte fr Blob mit Gras benachbart */ int mKINAnGras; /** Punkte fr Blob mit Grauem benachbart */ int mKINAnGrau; /** Punkte fr Blob zwei ber gleicher Farbe */ int mKINZweiUeber; /***** Sonderfeatures *****/ bool mSpiegeln; int mNachbarschaft; // Default-Wert fr die Sorten /** true bei Sechseckraster. Wird direkt aus mNachbarschaft bestimmt. */ bool mSechseck; /* Nur fuer Sechseckraster: Welche(r) Spieler ist links-rechts gespiegelt? */ int mSechseckFlip; bool mMitLeerBildchen; int mZufallsGraue; bool mGreysAtAll; protected: bool mSammleLevel; /* Bestimmt, ob levelGefunden berhaupt was tun soll. */ }; /* Definition in leveldaten.cpp */ extern LevelDaten * ld; #endif cuyo-2.1.0/src/font.cpp0000644000175000017500000001470311674440316011666 00000000000000/*************************************************************************** font.cpp - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "fehler.h" #include "sdltools.h" #include "font.h" #include "pfaditerator.h" Font * Font::gMenu; Font * Font::gBright; Font * Font::gTitle; Font * Font::gDimmed; Font * Font::gBrightDimmed; Font * Font::gData; Font * Font::gGame; Font * Font::gDbg; /* Returns the number of non-transparent pixels in the specyfied column */ int pixelInCol(SDL_Surface * s, int x, int y, int h) { int ret = 0; for (int i = 0; i < h; i++) { Uint8 r, g, b, a; SDL_GetRGBA(SDLTools::getPixel32(s, x, y + i), s->format, &r, &g, &b, &a); if (a > 30) ret++; } return ret; } FontStr::FontStr(const Str & text) { char * s = convert_for_font(text.data()); mText = s; free(s); } bool FontStr::operator == (const FontStr & fs) const { return mText==fs.mText; } Font::Font(const Str & filename, int w, int h, int (*c2p)(char), bool varWidth, int addToWidth /*= 0*/): mWidth(w), mHeight(h), mChar2Pos(c2p) { mChars.laden(filename); mCharsPerLine = mChars.getBreite() / w; int numLines = mChars.getHoehe() / h; if (varWidth) { SDL_Surface * s = mChars.getSurface(); SDL_LockSurface(s); for (int i = 0; i < mCharsPerLine * numLines; i++) { int xx = w * (i % mCharsPerLine); int yy = h * (i / mCharsPerLine); /* Search for left border */ int x = 0; while (pixelInCol(s, xx + x, yy, h) == 0) { x++; if (x == w) { mCharLeft[i] = 0; mCharWidth[i] = w / 3; goto space; } } mCharLeft[i] = x; /* Search for right border */ x = w - 1; while (pixelInCol(s, xx + x, yy, h) == 0) { x--; CASSERT(x >= 0); } mCharWidth[i] = x + 1 - mCharLeft[i] + addToWidth; space:; } SDL_UnlockSurface(s); } else { for (int i = 0; i < mCharsPerLine * numLines; i++) { mCharLeft[i] = 0; mCharWidth[i] = w; } } } Font::Font(Font * quelle, const Color & faerbung) : mChars(&(quelle->mChars), faerbung), mCharsPerLine(quelle->mCharsPerLine), mWidth(quelle->mWidth), mHeight(quelle->mHeight), mChar2Pos(quelle->mChar2Pos) { for (int i = 0; i < 256; i++) { mCharLeft[i]= quelle->mCharLeft[i]; mCharWidth[i]= quelle->mCharWidth[i]; } } int Font::getFontHeight() const { return mHeight; } void Font::drawText(const FontStr & s, int x, int y, TextAlign align) const { switch (align & AlignVMask) { case AlignBottom: y -= getTextHeight(s); break; case AlignVCenter: y -= getTextHeight(s) / 2; break; } const char * bei=s.mText.data(); while (1) { int xx = x; switch (align & AlignHMask) { case AlignRight: xx -= getLineWidth(bei); break; case AlignHCenter: xx -= getLineWidth(bei) / 2; break; } while (*bei != '\n') { if (*bei == 0) goto finished; drawChar(*bei, xx, y); bei++; } bei++; y += mHeight; } finished:; } /* Increments x by charWidth */ void Font::drawChar(char c, int & x, int y) const { int p = (*mChar2Pos)(c); mChars.malBildAusschnitt(x - mCharLeft[p], y, SDLTools::rect((p % mCharsPerLine) * mWidth, (p / mCharsPerLine) * mHeight, mWidth, mHeight)); x += mCharWidth[p]; } void Font::wordBreak(FontStr & text, int width) const { int l = text.mText.length(); int w = 0; int last_break_pos = 0; for (int i = 0; i < l; i++) { char c = text.mText[i]; if (c == '\n') { w = 0; last_break_pos = 0; } else { if (c == ' ') last_break_pos = i; w += mCharWidth[(*mChar2Pos)(c)]; if (w > width) { /* Line is too long now */ if (last_break_pos == 0) { text.mText = text.mText.left(i)+"\n"+text.mText.right(i); last_break_pos = i; } else text.mText[last_break_pos] = '\n'; i = last_break_pos; w = 0; last_break_pos = 0; } } } } /* Returns only the width of the first line of text */ int Font::getLineWidth(const Str & t) const { FontStr t_ = t; const char * text = t_.mText.data(); int w = 0; while (*text != 0 && *text != '\n') { w += mCharWidth[(*mChar2Pos)(*text)]; text++; } return w; } int Font::getTextHeight(const FontStr & t) const { const char * text = t.mText.data(); int h = mHeight; while (*text) { if (*text == '\n') h += mHeight; text++; } return h; } int c2pBig(char c) { //if ((unsigned char) c < 32) c = '_'; //int r = c - 32; //r = (r & 0x000f) + (0xd0 - (r & 0x00f0)); //return r; return (unsigned char) c; } int c2pDbg(char c) { if (c >= '0' && c <= '9') return c - '0'; else if (c == '-') return 10; else return 11; } void Font::init() { gGame = new Font("font-big.xpm", L_font_width, L_font_height, c2pBig, true, 1); gBright = new Font(gGame,Color(255,255,128)); gTitle = new Font(gGame,Color(200,60,240)); gDimmed = new Font(gGame,Color(80,80,145)); // Mittelwert aus 30,30,70 und 130,130,220 gBrightDimmed = new Font(gGame,Color(143,143,99)); // Mittelwert aus 30,30,70 und 255,255,128 gData = new Font(gGame,Color(200,200,255)); gMenu = new Font(gGame,Color(130,130,220)); gDbg = new Font("dbgZiffern.xpm", 8, 16, c2pDbg, false); /* Automatically recolor the Game font */ AutoColor::gGame.addUser(&(gGame->mChars)); } void Font::destroy() { delete gGame; delete gDbg; delete gMenu; delete gData; delete gBrightDimmed; delete gDimmed; delete gTitle; delete gBright; } cuyo-2.1.0/src/sorte.cpp0000644000175000017500000003324512411362656012056 00000000000000/*************************************************************************** sorte.cpp - description ------------------- begin : Fri Apr 20 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "cuyointl.h" #include "leveldaten.h" #include "datendatei.h" #include "bilddatei.h" #include "fehler.h" #include "sorte.h" #include "code.h" #include "knoten.h" #include "global.h" #include "blop.h" const char cEventNamen[event_anz][33] = { "", /* Der Mal-Code heit einfach "wuff" und nicht "wuff.draw" oder so. */ "init", "turn", "land", "changeside", "connect", "row_up", "row_down", "keyleft", "keyright", "keyturn", "keyfall" }; const char* cVerteilungsNamen[anzahl_wv] = { "colourprob","greyprob","goalprob" }; void Sorte::setzeDefaults(DefKnoten * quelle) { int DatenLaenge = ld->mLevelKnoten->getDatenLaenge(); mDatenDefault = new int[DatenLaenge]; mDatenDefaultArt = new int[DatenLaenge]; for (int i=0; igetDefaultWert(i); mDatenDefaultArt[i] = quelle->getDefaultArt(i); } /* Wenn behaviour nicht gesetzt (das heit berschrieben) wurde, tragen wir jetzt den Default nach. */ if (mDatenDefaultArt[spezvar_verhalten]==da_nie) { mDatenDefaultArt[spezvar_verhalten] = da_kind; int verhalten = 0; switch (mBlopart) { case blopart_gras: verhalten = platzt_bei_kettenreaktion + (ld->mGrasBeiKettenreaktion ? 0 : platzt_bei_platzen) + verhindert_gewinnen; break; case blopart_grau: verhalten = platzt_bei_kettenreaktion + platzt_bei_platzen; break; case blopart_farbe: verhalten = platzt_bei_gewicht + berechne_kettengroesse; break; case blopart_keins: verhalten = schwebt; break; } mDatenDefault[spezvar_verhalten] = verhalten; } } /** Wird von Sorte() aufgerufen; ausgelagert, weil Sorte() langsam lang und unbersichtlich wird */ void Sorte::ladeCualEvents(const Version & version) { /***** Mal-cual-Code laden. (Sonderbehandlung; nicht so wie die anderen Events.) *****/ mEventCode[event_draw] = ld->mLevelConf[ldteil_level]-> getCode(mName, version, true); /* Wenn's den Code nicht gibt, dann default-Code verwenden; aber nur, wenn es sich nicht um den Global-Code handelt. Und wenn's keine Bildchen gibt, wird per default auch nicht gemalt. */ if (!mEventCode[event_draw] && mBilddateien.size() > 0 && mBlopart != blopart_global && mBlopart != blopart_semiglobal) { /* Welchen Default nehmen wir? */ Str dname; if (mBlopart==blopart_info) dname = "default_info"; else if (mBilddateien.size() > 1) dname = "default3"; else if (mBilddateien[0]->anzBildchen() > 1) { /* Farbblops und nix-Blops verbinden sich per default; andere nicht. */ if (mBlopart == blopart_gras) dname = "default2g"; else dname = "default2"; } else dname = "default1"; if (gDebug) print_to_stderr(_sprintf("Using %s for %s\n", dname.data(), mName.data())); mEventCode[event_draw] = ld->mLevelConf[ldteil_level]->getCode(dname,version, false); } /* Den Leveldaten mitteilen, wie viele Bildchen unsere Blops hchstens gleichzeitig malen. */ if (mEventCode[event_draw]) { int sh = mEventCode[event_draw]->getStapelHoehe(ld->mNachbarStapelHoehe); if (sh > ld->mStapelHoehe) ld->mStapelHoehe = sh; } /***** Cual-Code fr andere Events laden (optional) *****/ /* i erst bei 1 los; 0 ist event_draw, der eine Sonderbehandlug ist. */ for (int i = 1; i < event_anz; i++) { mEventCode[i] = ld->mLevelConf[ldteil_level]-> getCode(mName + "." + cEventNamen[i], version, true); /* Wenn im Event-Code Mal-Befehle vorkommen, geben wir im Debug-Modus eine Warnung aus. */ if (mEventCode[i] && gDebug) { int nsh = 0; if (mEventCode[i]->getStapelHoehe(nsh) > 0 || nsh > 0) print_to_stderr(_sprintf("Warning: %s.%s contains drawing commands.\n" "Drawing is not allowed during events.\n", mName.data(), cEventNamen[i])); } } } /** Ldt die Sorte mit dem angegebenen Namen. Schaut auch in der entsprechenden Gruppe von mLevelConf[ldteil_level] nach, setzt die Gruppe aber danach zurck. blopart muss nur angegeben werden, damit ein paar Art-abhngige Defaults richtig gesetzt werden knnen. Throwt Fehler, wenn erfolglos. */ Sorte::Sorte(const Str & name, const Version & version, int blopart) { mBlopart = blopart; /* Wenn der Name direkt eine Bild-Datei ist, wird bei mName noch die Endung weggeschnitten. picsEndungWeg() steht in global.* */ mName = picsEndungWeg(name); /* Fr die restlichen Variablen erst mal ein paar Defaults setzen */ /* Rand-Verbindung nur bei nix-Blop. */ for (int i = 0; i < 4; i++) mVerbindetMitRand[i] = mBlopart == blopart_keins; /* Default Nachbarschaft = levelweite Nachbarschaftseinstellung */ mNachbarschaft = ld->mNachbarschaft; /* dito PlatzAnzahl */ mPlatzAnzahl = ld->mPlatzAnzahlDefault; /* Keine Bildchen */ loeschBilder(); // Alte Bilder lschen /* Keine Event-Programme */ for (int i = 0; i < event_anz; i++) mEventCode[i] = 0; /* Wahrscheinlichkeiten */ mVerteilung[wv_farbe] = (mBlopart==blopart_farbe ? 1 : 0); mVerteilung[wv_grau] = (mBlopart==blopart_grau ? 1 : 0); mVerteilung[wv_gras] = (mBlopart==blopart_gras ? 1 : 0); CASSERT(anzahl_wv==3); mDistKey = (mBlopart==blopart_gras ? 10 : distkey_undef); mVersions = 1; /* Wenn name leer ist, dann gibt's nix zu laden. Das sollte eigentlich nur beim Leerbildchen passieren, falls das in der ld-Datei nicht angegeben ist. (Wenn der Global-Blop nicht angegeben ist, hat es trotzdem den Namen "global"; das einzige, was dann passiert, ist, dass weiter unten der Cual-Code nicht geladen wird.) */ if (name.isEmpty()) { /* Fr bessere Debug-Ausgaben setzen wir uns aber trotzdem noch einen schnen Namen. */ switch (mBlopart) { case blopart_keins: mName = "nothing"; break; //case blopart_farbe: mName = "color"; break; //case blopart_gras: mName = "grass"; break; //case blopart_grau: mName = "grey"; break; //case blopart_global: mName = "global"; break; default: throw iFehler("Internal Error in Sorte::Sorte(): mBlopart = %d", mBlopart); } setzeDefaults(ld->mLevelKnoten); mBasekind = mBlopart; return; } /***** Sortenabschnitt laden. *****/ { /* In den Unterabschnitt zu diesem Bildchen gehen. false heit: Wenn's den Abschnitt nicht gibt, nicht gleich throwen */ DatenDateiPush ddp(*ld->mLevelConf[ldteil_level], name, version, false); DatenDatei * dd = ld->mLevelConf[ldteil_level]; setzeDefaults(dd->getSquirrelPos()); VarDefinition * basekinddef = (VarDefinition*) dd->getSquirrelPos()-> getDefinition(namespace_variable,picsEndungWeg(name),version,false); CASSERT(basekinddef->mArt==vd_konstante); mBasekind = basekinddef->mDefault; /* Beim global-Blop sollte es Grafik-Zeug nicht geben. Wir versuchen einfach gar nicht erst, es zu laden. Insbesondere wollen wir auch kein Default-Bild laden. */ /* Gibt es eigentlich einen Grund, global und semiglobal verschieden zu * behandeln? */ if (mBlopart != blopart_global) { /* Gibt es zu diesem Bildchen berhaupt einen Abschnitt in der Config-Datei? */ if (dd->existiertSquirrelKnoten()) { /* OK, es gibt in der Gruppe mit diesem Namen einen pics-Eintrag; also gibt's insbesondere diese Gruppe... */ /* Andere Nachbarschaft als level-weite globale? (optional) */ mNachbarschaft = dd-> getZahlEintragMitDefault("neighbours",version, mNachbarschaft); if (mNachbarschaft < 0 || mNachbarschaft > nachbarschaft_letzte) throw Fehler("%s","neighbours out of range"); /* dito PlatzAnzahl, aber irgendwo mu es definiert werden (im Gegensatz zu mNachbarschaft gibt es keinen Default) */ mPlatzAnzahl = dd-> getZahlEintragMitDefault("numexplode", version, mPlatzAnzahl); /* Bilder laden (optional) */ int anz_bi; ListenKnoten* namen = dd->getListenEintrag("pics",version,true); if (namen) anz_bi = namen->getLaenge(); else anz_bi = 0; mBilddateien.resize(anz_bi); /* Falls ein Throw whrend des Ladens der Bilder kommt, ist das Array erst halb gefllt. Damit es spter richtig gelscht werden kann, sollten nicht existente Bilder 0-Pointer sein... */ for (int i = 0; i < anz_bi; i++) mBilddateien[i] = 0; for (int bnr = 0; bnr < anz_bi; bnr++) { Str bild_name = namen->getDatum(bnr,type_WortDatum)->getWort(); //Bilddatei * neu_b = new Bilddatei(); //neu_b->laden(bild_name); //mBilddateien[bnr] = neu_b; mBilddateien[bnr] = new Bilddatei(); mBilddateien[bnr]->laden(bild_name); } for (int i=0; i getZahlEintragMitDefault(cVerteilungsNamen[i], version, mVerteilung[i]); /* Ende: In Config existiert Abschnitt fr dieses Bildchen */ } else { /* Kein Abschnitt in der Config fr dieses Icon. Also direkt den Namen als Bilddateinamen verwenden. (Und zwar den Namen _mit_ Endung.) Aber nur bei sorten, wo wir Bildchen erwarten. */ if (mBlopart != blopart_semiglobal) { mBilddateien.resize(1); mBilddateien[0] = new Bilddatei(); mBilddateien[0] -> laden (mBlopart == blopart_info ? "infoicons.xpm" : name); }; } } // Ende von: kein Global-Blop /* Was man fr startdist so braucht. */ Str distkey = dd->getWortEintragMitDefault("distkey", version, ""); if (distkey!="") { mDistKey = ld->liesDistKey(distkey); if (mDistKey<0) throw Fehler("illegal distkey %s for %s", distkey.data(), mName.data()); } mVersions = dd->getZahlEintragMitDefault("versions", version, mVersions); if (mVersions<1) throw Fehler("illegal versions=%d for %s", mVersions, mName.data()); /* Und jetzt nochmal PlatzAnzahl verwalten - aber nur fr per Default gewichtsplatzende */ if ((mDatenDefault[spezvar_verhalten] & platzt_bei_gewicht)!=0) { /* Prfen, ob PlatzAnzahl inzwischen einen gltigen Wert hat */ if (mPlatzAnzahl==PlatzAnzahl_undefiniert) throw Fehler("numexplode undefined for %s",mName.data()); ld->neue_PlatzAnzahl(mPlatzAnzahl); } /* Wahrscheinlichkeiten berprfen */ for (int i=0; i0) { if (i!=wv_farbe) { switch (mBlopart) { case blopart_gras: case blopart_grau: case blopart_keins: case blopart_farbe: break; case blopart_global: case blopart_semiglobal: case blopart_info: throw Fehler("%s>0 not allowed for global, semiglobal or info", cVerteilungsNamen[i]); break; default: CASSERT(0); break; } } else { switch (mBlopart) { case blopart_gras: case blopart_grau: case blopart_farbe: break; case blopart_keins: case blopart_global: case blopart_semiglobal: case blopart_info: throw Fehler("%s>0 not allowed for nothing, global, semiglobal or info", cVerteilungsNamen[i]); break; default: CASSERT(0); break; } } } } ladeCualEvents(version); } // Ende: DatenDatei-Push } Sorte::~Sorte(){ delete[] mDatenDefault; delete[] mDatenDefaultArt; loeschBilder(); } /** lscht die ganzen Bilder aus dem mBilddateien-Array */ void Sorte::loeschBilder() { for (int i = 0; i < (int) mBilddateien.size(); i++) if (mBilddateien[i]) delete mBilddateien[i]; /* Damit keine Pointer in der Luft hngen...: */ mBilddateien.clear(); } /***** Getter-Methoden, mit denen man auf die ganzen Informationen zugreifen kann. *****/ Str Sorte::getName() const { return mName; } int Sorte::getBasekind() const {return mBasekind;} bool Sorte::getVerbindetMitRand(int r) const { return mVerbindetMitRand[r]; } int Sorte::getNachbarschaft() const { return mNachbarschaft; } int Sorte::getPlatzAnzahl() const { return mPlatzAnzahl; } int Sorte::getVerteilung(int wv) const {return mVerteilung[wv];} int Sorte::getDefault(int var) const {return mDatenDefault[var];} int Sorte::getDefaultArt(int var) const {return mDatenDefaultArt[var];} Code * Sorte::getEventCode(int evt) const { return mEventCode[evt]; } int Sorte::getDistKey() const {return mDistKey;} int Sorte::getVersions() const {return mVersions;} Bilddatei * Sorte::getBilddatei(int nr) const { if (nr < 0 || nr >= (int) mBilddateien.size()) throw Fehler("File number file=%d out of range (allowed: 0 - %ld)", nr, (long)(mBilddateien.size() - 1)); return mBilddateien[nr]; } cuyo-2.1.0/src/ui.cpp0000644000175000017500000001744512376035547011351 00000000000000/*************************************************************************** ui.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* Set to 1 to artificially make graphics slow. This is to test the routine which skips images */ #define TEST_SLOW_GRAPHICS 0 #if TEST_SLOW_GRAPHICS #include #endif #include #include #include #include "sdltools.h" #include "font.h" #include "cuyointl.h" #include "ui.h" #include "ui2cuyo.h" #include "punktefeld.h" #include "fehler.h" #include "global.h" #include "sound.h" #include "layout.h" #include "prefsdaten.h" #include "blatt.h" #include "bilddatei.h" namespace UI { /*************************** Private Variablen **************************/ /* (stehen nicht in der .h-Datei) */ int mRealWindowWidth = -1; int mRealWindowHeight = -1; /** Wird auf true gesetzt, wenn beendet werden soll */ bool mQuit; /* Wird in einem Event (oder Zeitschritt) auf true gesetzt, wenn die Graphik neu gemalt werden muss. Wird auf false gesetzt, wenn neu gemalt wird. Das neu-malen-und-auf-false-setzen passiert evtl. nicht sofort, wenn wir in Zeitnot sind. */ bool mGraphikUpdateNoetig; BlattSpiel * mBlattSpiel; BlattHauptmenu * mBlattMenu; /** Welches "Blatt" wird grad angezeigt */ Blatt * mBlatt; /*************************** Private Methoden **************************/ /* (stehen nicht in der .h-Datei) */ /** Fhrt alle Men-Befehle aus */ void menuAufruf(int id); void vielleichtAllesAnzeigen(); /***************************************************************************/ void init() { Bilddatei::init(); PrefsDaten::init(); SDLTools::initSDL(mRealWindowWidth, mRealWindowHeight); Font::init(); Sound::init(); Blatt::initBlaetter(); Sound::setMusic("cuyo.it"); Punktefeld::init(); mBlattSpiel = new BlattSpiel(); mBlattMenu = new BlattHauptmenu(); /* Hier wird cuyo initialisiert */ Cuyo::init(); mBlattMenu->oeffnen(false); sofortAllesAnzeigen(); } void destroy() { PrefsDaten::schreibPreferences(); Cuyo::destroy(); delete mBlattMenu; delete mBlattSpiel; Punktefeld::destroy(); Blatt::destroyBlaetter(); Sound::destroy(); Font::destroy(); Area::destroy(); Bilddatei::destroy(); } void doEvent(SDL_Event & evt) { /* GGf. debug-Tasten behandeln */ if (evt.type == SDL_KEYDOWN && (evt.key.keysym.mod & (KMOD_ALT | KMOD_META))) if (Cuyo::debugKeyEvent(evt.key.keysym)) return; /* Quit-Event */ if (evt.type == SDL_QUIT) { quit(); return; } /* Restliche Events werden an das Blatt weitergeleitet */ mBlatt->doEvent(evt); } /* Ist vielleicht zur Zeit etwas unntig, eine eigene ui-Zeitschritt-Fkt zu haben. Vielleicht kommt aber ja mal wieder was dazu, was das ui tun will */ void zeitSchritt() { mBlatt->zeitSchritt(); } void run() { mQuit = false; int zeit = SDL_GetTicks() + 80; /* Wie oft hintereinander ist die Graphik grad ausgefallen? */ int graphikAusgefallen = 0; while (!mQuit) { /* Alle wartenden Events aus der Queue holen. Wenn eins dieser Events ein Graphik-Update fordert, dann wird das sofort ausgefhrt, auch wenn wir in Zeitnot sind. Deshalb von frher rumliegende Graphikupdate-Bestellungen kurz wegspeichern */ bool gun_merk = mGraphikUpdateNoetig; mGraphikUpdateNoetig = false; SDL_Event evt; while (SDLTools::pollEvent(evt)) doEvent(evt); if (mGraphikUpdateNoetig) { sofortAllesAnzeigen(); graphikAusgefallen = 0; } else { mGraphikUpdateNoetig = gun_merk; } /* Ein bisschen Zeit fr's Betriebsystem */ /* (Geht das nicht besser?) */ SDL_Delay(10); int akt_zeit = SDL_GetTicks(); if (akt_zeit > zeit) { zeitSchritt(); /* Wenn wir schon einen ganzen Zeitschritt verspaetung haben (und die Graphik nicht grad eben schon zu oft ausgefallen ist), dann Graphik ausfallen lassen */ bool ausfallen = akt_zeit - zeit > 80 && graphikAusgefallen < 3; if (ausfallen) graphikAusgefallen++; else graphikAusgefallen = 0; if (!ausfallen) { /* Graphik (falls ntig) updaten. Mglicherweise handelt es sich um einen Update, der gar nicht von diesem zeitSchritt()-Aufruf gefordert wurde, sondern von einem lteren */ vielleichtAllesAnzeigen(); } zeit += 80; /* Nicht zu viel Verspaetung ansammeln lassen: Wenn wir schon 5 Zeitschritte verspaetung haben, ist wohl nix zu machen; dann laeuft das Spiel halt langsamer */ if (zeit < akt_zeit - 300) zeit = akt_zeit - 300; } } } // // // void malText(const Str & text) { // // /* Wenn man das alles besser macht, sollte man hier vielleicht nur dann // neu malen, wenn sich auch was geaendert hat */ // // Area::fillRect(0, 0, L_fenster_breite, L_fenster_hoehe, Color(30, 30, 70)); // Font::gNormal->drawText(text, L_fenster_breite / 2, L_fenster_hoehe / 2); // Area::updateAll(); // } void quit() { mQuit = true; } void sofortAllesAnzeigen() { #if TEST_SLOW_GRAPHICS usleep((int) (1000 * 1000 * 0.3)); #endif /* fr xtrace: XInternAtom(qt_xdisplay(),"zeitschritt B",1); */ /* Hier finden die ganzen Area::xxx Malbefehle statt. Die Malroutinen sind selbst dafr verantwortlich, nur das neu zu malen, was sich gendert hat. Auerdem mssen sie Area::updateRect() aufrufen fr die Bereiche, wo sie was neu gemalt haben */ mBlatt->anzeigen(); /* Der Bereich, der mit Area::updateRect() markiert wurde, wird an den X-Server geschickt. */ Area::doUpdate(); /* fr xtrace: XInternAtom(qt_xdisplay(),"zeitschritt C",1); */ mGraphikUpdateNoetig = false; } void vielleichtAllesAnzeigen() { if (mGraphikUpdateNoetig) sofortAllesAnzeigen(); } /* Das aufrufen reicht nicht, damit alles neu gemalt wird: Irgendwer muss Area::updateRect() aufrufen, damit das neue Bild auch an den X-Server geschickt wird. */ void nachEventAllesAnzeigen() { mGraphikUpdateNoetig = true; } void setPunkte(int sp, int pt) { //mPunktefeld[sp]->setPunkte(pt); mBlattSpiel->setPunkte(sp, pt); } void randNeuMalen() { mBlattSpiel->randNeuMalen(); } void startSpiel(int lnr) { mBlattSpiel->oeffnen(lnr); } /** Cuyo teilt dem ui mit, dass das Spiel zu Ende ist */ void stopSpiel() { mBlattMenu->oeffnen(false); Sound::setMusic("cuyo.it"); } /* Ein Blatt sollte selbst in seiner oeffnen()-Methode setBlatt(this) aufrufen. Kann man aber auch woanders aufrufen, wenn das entsprechende Blatt grad keinen oeffnen()-Aufruf braucht. */ void setBlatt(Blatt * b) { mBlatt = b; /* Der gesamte Bildschirm hat sich gendert, nicht nur das, was das (neu) aktive Blatt vielleicht denkt: */ Area::updateAll(); nachEventAllesAnzeigen(); } void setGeometry(int width, int height) { mRealWindowWidth = width; mRealWindowHeight = height; } } cuyo-2.1.0/src/font.h0000644000175000017500000000557111674440316011336 00000000000000/*************************************************************************** font.h - description ------------------- begin : Fri Jul 21 2006 copyright : (C) 2000 by Immi Part of the code is stolen from supertux 0.1.2 (which is under GPL) email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef FONT_H #define FONT_H #define L_font_width 24 // (Abstand der Buchstaben in der Font-Grafik) #define L_font_height 24 #include #include "bilddatei.h" class Str; enum TextAlign { AlignCenter = 0, AlignHCenter = 0, AlignLeft = 1, AlignRight = 2, AlignHMask = 3, AlignVCenter = 0, AlignTop = 4, AlignBottom = 8, AlignVMask = 12, AlignTopLeft = AlignTop | AlignLeft, AlignTopRight = AlignTop | AlignRight, AlignBottomLeft = AlignBottom | AlignLeft, AlignBottomRight = AlignBottom | AlignRight }; struct FontStr { friend class Font; private: Str mText; public: FontStr(const Str &); bool operator == (const FontStr &) const; }; class Font { Bilddatei mChars; int mCharsPerLine; int mWidth; int mHeight; int (*mChar2Pos)(char); int mCharLeft[256], mCharWidth[256]; public: Font(const Str & filename, int w, int h, int (*c2p)(char), bool varWidth, int addToWidth = 0); /* Lift von Bilddatei::Bilddatei(Bilddatei *, const Color &) */ Font(Font *, const Color &); int getFontHeight() const; void drawText(const FontStr & text, int x, int y, TextAlign align = AlignCenter) const; /* Increments x by charWidth */ void drawChar(char c, int & x, int y) const; void wordBreak(FontStr & text, int width) const; /* Returns only the width of the first line of text */ int getLineWidth(const Str & text) const; int getTextHeight(const FontStr & text) const; static Font * gMenu; static Font * gBright; static Font * gDimmed; static Font * gBrightDimmed; static Font * gTitle; static Font * gData; static Font * gGame; static Font * gDbg; static void init(); static void destroy(); }; #endif cuyo-2.1.0/src/sound.cpp0000644000175000017500000001470612400104766012045 00000000000000/*************************************************************************** sound.cpp - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2003-2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include #include "cuyointl.h" #include "sound.h" #include "pfaditerator.h" #include "fehler.h" /* Um rauszufinden, ob's ein oder zwei Spieler gibt, fr Stereo */ #include "cuyo.h" #include "prefsdaten.h" const char *sample_namen[fix_sample_anz] = { "leftright.wav", "turn.wav", "down.wav", "land.wav", "explode.wav", "menuclick.wav", "menuscroll.wav", "levelwin.wav", "levelloose.wav" }; #define sound_chunk_size 512 #define sound_freq MIX_DEFAULT_FREQUENCY #define sound_format MIX_DEFAULT_FORMAT // AUDIO_S16 #define sound_music_volume (MIX_MAX_VOLUME / 2) /* Globale Variable mit dem Sound-Objekt */ namespace Sound { bool mSoundInitialisiert; bool mSoundGeht; Mix_Music * mAktMod; std::vector mSampleNamen; std::vector mSamples; /***************************************************************************/ void init() { mSoundInitialisiert = false; mSoundGeht = false; /* Sound wird nur dann jetzt schon initialisiert, wenn Sound in den Prefs angeschaltet ist. Auf Computern, auf denen Sound nicht geht, braucht SDL nmlich manchmal ziemlich lang um zu merken, dass es nicht geht. */ checkePrefsStatus(); } void destroy() { if (!mSoundGeht) return; if (mAktMod) Mix_FreeMusic(mAktMod); for (int i = 0; i < (int) mSamples.size(); i++) Mix_FreeChunk(mSamples[i]); } /** Sollte aufgerufen werden, wenn sich Pref->sound mglicherweise gendert hat */ void checkePrefsStatus() { /* Mglicherweise muss die Musik gestoppt werden */ if (mSoundGeht && !PrefsDaten::getSound()) setMusic(""); /* Mglicherweise sound-Initialisierung nachholen */ if (mSoundInitialisiert) return; if (!PrefsDaten::getSound()) return; /* Nicht initialisiert. Soll aber. */ mSoundInitialisiert = true; if (Mix_OpenAudio(sound_freq, sound_format, 2, sound_chunk_size) < 0) { // TRANSLATORS: The %s is a (hopefully) more specific error message print_to_stderr(_sprintf("Sound does not work: %s\n", SDL_GetError())); return; } Mix_VolumeMusic(sound_music_volume); mSoundGeht = true; mAktMod = 0; /* Basis-Samples laden */ for (int i = 0; i < fix_sample_anz; i++) { ladSample(sample_namen[i]); } } /** Spielt die angegebene Mod-Datei immer wieder ab. Bei na = "" wird nix abgespielt. */ void setMusic(Str na) { if (!mSoundGeht || !PrefsDaten::getSound()) return; if (mAktMod) Mix_FreeMusic(mAktMod); mAktMod = 0; if (na == "") return; try { for (PfadIterator pi(_sprintf("sounds/%s", na.data())); !(mAktMod = Mix_LoadMUS(pi.pfad().data())); ++pi) {} } catch (Fehler fe) { print_to_stderr(fe.getText()+"\n"); return; } /* -1 = Lied soll im Kreis laufen: */ Mix_PlayMusic(mAktMod, -1); } /** Ldt den angegebenen Sample und liefert eine Nummer zurck, mit dem man ihn abspielen kann. */ int ladSample(Str na) { if (!mSoundGeht) return sample_nix; /* Haben wir das schon geladen? */ for (int i = 0; i < (int) mSampleNamen.size(); i++) if (mSampleNamen[i] == na) return i; int ret = mSamples.size(); mSamples.resize(ret + 1); mSampleNamen.push_back(na); for (PfadIterator pi(_sprintf("sounds/%s", na.data())); !(mSamples[ret] = Mix_LoadWAV(pi.pfad().data())); ++pi) {} return ret; } /** Gibt alle Samples wieder frei, die mit ladSample geladen worden sind, auer die, die init() geladen hat. Sollte nach Levelende aufgerufen werden, wenn die Levelsounds nicht mehr gebraucht werden. (Aber erst, wenn die ld-Dateien einzeln geladen werden.) */ void loescheUserSamples() { for (int i = fix_sample_anz; i < (int) mSamples.size(); i++) Mix_FreeChunk(mSamples[i]); mSamples.resize(fix_sample_anz); } /* Akustisches Layout */ #define felder_spalte 64 #define einzel_rand 0 /** Spielt das Sample mit der angegebenen Nummer (die entweder eine der obigen Konstanten ist oder von ladSample zurckgeliefert wurde). so,xz,xn bestimmen die x-Position fr Stereo-Effekte. Dabei ist xz/xn ein Bruch, 0 fr den linken und 1 fr den rechten Rand von so. Bei so=so_global werden xz und xn ignoriert. */ void playSample(int nr, SoundOrt so, int xz /*=1*/, int xn /*=2*/) { if (!mSoundGeht || !PrefsDaten::getSound()) return; if (nr == sample_nix) return; CASSERT(nr >= 0 && nr < (int) mSamples.size()); CASSERT(mSamples[nr]); int links,rechts; switch (so) { case so_fenster: links=0; rechts=255; break; case so_lfeld: if (Cuyo::getSpielerZahl()==2) {links=0; rechts=127-felder_spalte/2;} else {links=einzel_rand; rechts=255-einzel_rand;}; break; case so_rfeld: links=128+felder_spalte/2; rechts=255; break; case so_lsemi: if (Cuyo::getSpielerZahl()==2) {links=0; rechts=0;} else {links=127; rechts=128;}; break; case so_rsemi: links=255; rechts=255; break; case so_global: links=127; rechts=128; break; default: throw iFehler("%s","Data corruption."); } int pan = (xz*rechts + (xn-xz)*links + xn/2) / xn; if (pan<0) pan=0; if (pan>255) pan=255; /* Abspielen starten. -1: Im ersten freien channel; 0: nicht wiederholen */ int ch = Mix_PlayChannel(-1, mSamples[nr], 0); /* Stereo-Einstellung */ Mix_SetPanning(ch, 255-pan, pan); } } // namespace Sound cuyo-2.1.0/src/global.cpp0000644000175000017500000000530611674440317012160 00000000000000/*************************************************************************** global.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "global.h" #include "stringzeug.h" /** True, wenn -d bergeben wurde, d. h. im Debug-Modus. */ bool gDebug; /** Pfad, wo das Cuyo-Programm liegt, das aufgerufen wurde (aus argv[0] extrahiert. Wird vom PfadIterator gebraucht, um nach Leveln zu suchen. */ Str gCuyoPfad; /** True, wenn der Benutzer den Namen einer ld-Datei bergeben hat. */ bool gDateiUebergeben; /** Wenn ein Level-Datei-Name als Parameter bergeben wurde... */ Str gLevelDatei; /** Entfernt von p alles, was nach dem ersten Punkt kommt. Ist dazu da um aus einem "bla.xpm", was unter pics steht, den Namen fr Programme zu extrahieren. */ Str picsEndungWeg(const Str & p) { for (int i = 0; i < (int) p.length(); i++) { /* Etwas brutal: Alles ab dem ersten Punkt weg. */ if (p[i] == '.') return p.left(i); } /* Keine Endung... */ return p; } /** d sollte ein Pfad mit Dateiname sein. Liefert nur den Pfad-Anteil zurck (d. h. alles vor dem letzten "/". Liefer "./", falls d keinen "/" enthlt. */ Str nimmPfad(Str d) { /* Letzten Slash suchen */ for (int i = d.length(); i--; ) { if (d[i] == '/') { /* Letzten Slash gefunden. Das Links davon ist der Pfad */ return d.left(i + 1); } } /* Kein "/" gefunden, also offenbar im aktuellen Verzeichnis. */ return "./"; } Str vergissPfad(Str d) { /* Letzten Slash suchen */ for (int i = d.length(); i--; ) { if (d[i] == '/') { /* Letzten Slash gefunden. Das rechts davon ist, was wir wollen. */ return d.right(i + 1); } } /* Kein "/" gefunden, also machen wir eine Kopie. */ Str kopie = d; return kopie; } cuyo-2.1.0/src/stringzeug.cpp0000644000175000017500000000630011674440320013106 00000000000000/*************************************************************************** stringzeug.h - description ------------------- begin : Mon Mar 20 2006 copyright : (C) 2006 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "stringzeug.h" #include "fehler.h" #include #include #include #include Str::Str(const std::string & s) : inhalt(s) {} Str::Str() : inhalt("") {} Str::Str(const char * inhalt_) : inhalt(inhalt_) {CASSERT(inhalt_);} Str::Str(const Str & s) : inhalt(s.inhalt) {} bool Str::isEmpty() const {return inhalt.empty();} int Str::length() const {return inhalt.length();} char Str::operator [] (int i) const { CASSERT(i>=0); CASSERT((unsigned int) i=0); CASSERT((unsigned int) i #include #include "sdltools.h" #include "cuyointl.h" #include "fehler.h" #include "xpmladen.h" #include "leveldaten.h" #include "global.h" #include "inkompatibel.h" #if HAVE_LIBZ #include #endif /* Die nachfolgenden Variablen existieren nur innerhalb von xpmladen.cpp */ static char * gDatAnfang; static char * gDatBei; static char * gDatEnde; /* True, wenn eine .xpm.gz-Datei gefunden wurde. Diese Var. ist nur ntig, damit wenn eine gezippte Datei gefunden wurde, die aber nicht von meinem Algorithmus lesbar ist, nicht ein "Datei nicht gefunden" ausgegeben wird. */ static bool gDateiGezippt; /* Damit in ladeDateiLow nicht ein Haufen #ifdefs stehen mssen, hier ein paar Dummy-Definitionen fr wenn's die zlib nicht gibt. */ #if !HAVE_LIBZ typedef int gzFile; int gzopen(char *, char *) {return 0;} bool gzeof(int) {return 0;} int gzread(int, char *, int) {return 0;} void gzclose(int) {} #endif /** Wird von ladeDatei benutzt, um entweder eine normale oder eine gz-Datei zu laden... */ bool ladeDateiLow(Str na, bool gz) { FILE * f = 0; // Das "= 0" ist nur um keine Warnungen zu bekommen gzFile gzf = 0; /* Datei ffnen */ if (gz) { /* Das "b" bedeutet binary-Datei. */ gzf = gzopen(na.data(), "rb"); if (!gzf) return false; } else { f = fopen(na.data(), "r"); if (!f) return false; } int bei = 0; while ( gz ? !gzeof(gzf) : !feof(f) ) { /* So viel wollen wir diesmal auf einmal lesen: So viel wie wir schon haben, plus 4096 */ int neu = bei + 4096; /* Speicher fr neu zu ladendes alloziieren. (Wenn noch nix geladen war, ist gDatAnfang = 0 und realloc quivalent zu malloc) */ gDatAnfang = (char *) realloc(gDatAnfang, bei + neu); if (gz) { bei += neu = gzread(gzf, gDatAnfang + bei, neu); if (neu < 0) { gzclose(gzf); /* gzerror() could improve the error message... */ throw Fehler("%s","Read error"); } } else { bei += fread(gDatAnfang + bei, 1, neu, f); if (ferror(f)) { fclose(f); throw Fehler("%s","Read error"); } } } /* OK, jetzt ist wahrscheinlich zu viel Speicher alloziiert. Korrigieren wir das mal noch ein bisschen. Das "+1" ist, weil wir am Ende noch eine "0" anhngen wollen. */ gDatAnfang = (char *) realloc(gDatAnfang, bei + 1); gDatEnde = gDatAnfang + bei; *gDatEnde = 0; if (gz) gzclose(gzf); else fclose(f); return true; } /** Ld die angegebene Datei komplett. Danach zeigt gDatAnfang auf den Anfang und gDatEnde auf das Ende. Fgt auerdem noch eine 0 ans Ende an. Liefert false, wenn die Datei nicht gefunden wird. Sucht auch nach der Datei na.gz. */ bool ladeDatei(Str na) { /* Erst mal versuchen, eine ungezippte Datei zu laden. */ if (ladeDateiLow(na, false)) return true; /* Und dann eine gezippte. Aber nur mit zlib */ #if HAVE_LIBZ if (ladeDateiLow(na + ".gz", true)) { gDateiGezippt = true; return true; } #endif return false; } void leerWeg() { while (*gDatBei == ' ' || *gDatBei == '\t' || *gDatBei == '\n' || *gDatBei == '\r') gDatBei++; } void leerUndKommentarWeg() { while (1) { leerWeg(); /* Kein Kommentar-Anfang? Dann fertig */ if (gDatBei[0] != '/' || gDatBei[1] != '*') return; /* Kommentar weglesen */ gDatBei += 2; while (gDatBei[0] != '*' || gDatBei[1] != '/') { if (!gDatBei[0]) throw Fehler("%s","Endless comment."); gDatBei++; } gDatBei += 2; } } /** Erwartet, dass ein s kommt (davor ist whitespace erlaubt) */ void erwarte(const char * s) { const char *t = s; while (*s) { if (*gDatBei != *s) throw Fehler("\"%s\" expected", t); gDatBei++; s++; } } /** Das gleiche mit char */ void erwarte(char c) { if (*gDatBei != c) throw Fehler("'%c' expected; found: '%c' (filepos: %d)", c, *gDatBei, (int) (gDatBei - gDatAnfang)); gDatBei++; } /** Liest so lange, bis ein c auftaucht. */ void liesBis(char c) { while (*gDatBei != c) { if (*gDatBei == 0) throw Fehler("'%c' expected", c); gDatBei++; } gDatBei++; } /** Prft, ob der String s jetzt kommt. Wenn ja, wird er weggelesen */ bool kommtString(const char * s) { char * merk = gDatBei; while (*s) { if (*gDatBei != *s) { gDatBei = merk; return false; } gDatBei++; s++; } return true; } int getInt() { int ret = 0; bool geht = false; leerWeg(); while (*gDatBei >= '0' && *gDatBei <= '9') { ret = ret * 10 + *gDatBei - '0'; gDatBei++; geht = true; } if (!geht) throw Fehler("%s","Number expected"); return ret; } int decodeHex1(char a) { if (a >= '0' && a <= '9') return a - '0'; if (a >= 'A' && a <= 'F') return a - 'A' + 10; if (a >= 'a' && a <= 'f') return a - 'a' + 10; throw Fehler("%s","Hex number expected"); } int getHex() { int ret = decodeHex1(*gDatBei++) * 16; return ret + decodeHex1(*gDatBei++); } struct info { Uint32 farbcode; bool hintergrund; }; union suchbaum { info einziges; info blatt[256]; suchbaum * weiter[256]; suchbaum(int tiefe) { if (tiefe>1) for (int i=0; i<256; i++) weiter[i]=NULL; } inline info* rein(int tiefe) { if (tiefe==0) return &einziges; suchbaum* such = this; for (;tiefe-->1;) { if (!such->weiter[(unsigned int)*gDatBei]) such->weiter[(unsigned int)*gDatBei] = new suchbaum(tiefe); such = such->weiter[(unsigned int)*gDatBei++]; } return (such->blatt) + (*gDatBei++); } inline info raus(int tiefe) { if (tiefe==0) return einziges; suchbaum* such = this; for (;tiefe-->1;) { if (!such->weiter[(unsigned int)*gDatBei]) throw Fehler("%s","Undefined pixel name"); such = such->weiter[(unsigned int)*gDatBei++]; } return such->blatt[(unsigned int)*gDatBei++]; } void loesch(int tiefe) { if (tiefe-->1) for (int i=0; i<256; i++) if (weiter[i]) { weiter[i]->loesch(tiefe); delete weiter[i]; } } }; /* Versucht die Datei na zu laden. Versucht auerdem, die Datei na.gz zu laden. Liefert 0, wenn keine der Dateien existiert. Throwt, wenn's beim Laden einen Fehler gibt. (Falls die SDL-Lad-Routine verwendet wird, kann nicht versucht werden, die .gz-Datei zu laden.) */ SDL_Surface * ladXPM(Str na, RohMaske & maske) { SDL_Surface * s; gDatAnfang = 0; gDateiGezippt = false; /* Das nachfolgende try-catch ist 1. um evtl Speicher freizugeben und zweitens, weil wir es dann nochmal mit der SDL-Laderoutine versuchen wollen. */ try { /* Datei laden. Dabei werden gDatAnfang und gDatEnde gesetzt. */ if (!ladeDatei(na)) return 0; gDatBei = gDatAnfang; /* XPM-Kommentar-Zeile lesen */ leerWeg(); erwarte("/*"); leerWeg(); erwarte("XPM"); leerWeg(); erwarte("*/"); /* Alles bis zur ersten { entfernen */ liesBis('{'); /* OK, jetzt sind wir im interessanten Bereich. */ /* "groesse_x groesse_y farbzahl charpp" parsen. */ leerUndKommentarWeg(); erwarte('"'); int groesse_x, groesse_y, farb, tiefe; groesse_x = getInt(); groesse_y = getInt(); farb = getInt(); tiefe = getInt(); bool monochrom = tiefe==0; leerWeg(); erwarte('"'); s = SDLTools::createSurface32(groesse_x, groesse_y); SDL_PixelFormat * pf = s->format; maske.init(groesse_x,groesse_y); /* Farben parsen */ suchbaum farben(tiefe); for (int i = 0; i < farb; i++) { leerUndKommentarWeg(); erwarte(','); leerUndKommentarWeg(); erwarte('"'); info* index = farben.rein(tiefe); leerWeg(); char typ = *gDatBei++; CASSERT(typ == 'c'); leerWeg(); index->hintergrund=false; if (kommtString("None")) { // durchsichtig index->farbcode = SDL_MapRGBA(pf, 0, 0, 0, 0); } else if (kommtString("black")) { index->farbcode = SDL_MapRGBA(pf, 0, 0, 0, 255); } else if (kommtString("white")) { index->farbcode = SDL_MapRGBA(pf, 255, 255, 255, 255); } else if (kommtString("Background")) { // Farbe vom Level-Hintergrund (fr Explosion) index->farbcode = ld->mHintergrundFarbe.getPixel(pf); index->hintergrund = true; // } else if (kommtString("FontDark")) { // // Farbe der Schrift in dem Level (fr Punkt-Ziffern) // *index = ld->mSchriftFarbe[schrift_dunkel].getPixel(pf); // } else if (kommtString("Font")) { // // Farbe der Schrift in dem Level (fr Punkt-Ziffern) // *index = ld->mSchriftFarbe[schrift_normal].getPixel(pf); // } else if (kommtString("FontLight")) { // // Farbe der Schrift in dem Level (fr Punkt-Ziffern) // *index = ld->mSchriftFarbe[schrift_hell].getPixel(pf); } else { erwarte('#'); int f_r = getHex(); int f_g = getHex(); int f_b = getHex(); index->farbcode = SDL_MapRGBA(pf, f_r, f_g, f_b, 255); } liesBis('"'); } SDL_LockSurface(s); /* Damit wir Pixel direkt bearbeiten duerfen */ if (monochrom) { if (farb) { info farbe = farben.raus(tiefe); for (int y=0; y1); } /** Darf finde() benutzt werden? Normalerweise werden Orte von reine Bildstapelblops als inkorrekt angesehen. mit willNurMalen = true kann das gendert werden. */ bool ort_absolut::korrekt(bool willNurMalen /*= false*/) { bool ret; switch (art) { case absort_feld: if (!rechts_ok(rechts)) ret = false; else if (willNurMalen) ret = Cuyo::getSpielfeld(rechts)->getDatenPtr()->koordMalOK(x, y); else ret = Cuyo::getSpielfeld(rechts)->getDatenPtr()->koordOK(x, y); break; case absort_fall: ret = (rechts_ok(rechts) && (x==(x & 1)) && (y>=0) && (y<=1) // Die Bedingung "rechts_ok(rechts)" ist Voraussetzung dafr, // da der nchste Test berhaupt gemacht werden darf. ? (y>0) || (xgetFallAnz()) : false); break; case absort_semiglobal: ret = (rechts_ok(rechts)); break; case absort_global: ret = true; break; case absort_info: /* Auf Info-Blops kann man noch nicht von Cual-Code aus zugreifen. Also vermute ich, dass es ok ist, hier einfach false zurckzuliefern -Immi */ case absort_nirgends: ret = false; break; case absort_bemalbar: /* absort_bemalbar ist nur ein Dummywert, der hier gar nicht auftauchen sollte. */ default: throw iFehler("%s","Data corruption."); } return ret; } Blop & ort_absolut::finde() { switch (art) { case absort_feld: return Cuyo::getSpielfeld(rechts)->getDatenPtr()->getFeld(x,y); case absort_fall: return (Cuyo::getSpielfeld(rechts)->getFall(y))[x]; case absort_semiglobal: return Cuyo::getSpielfeld(rechts)->getSemiglobal(); case absort_global: return Blop::gGlobalBlop; case absort_info: case absort_nirgends: throw iFehler("%s","Internal error in ort_absolut::finde(): No ort_absolut::korrekt()"); case absort_bemalbar: /* absort_bemalbar ist nur ein Dummywert, der hier gar nicht auftauchen sollte. */ default: throw iFehler("%s","Data corruption."); } } /** Hat der Ort einen Platz auf dem Bildschirm? */ bool ort_absolut::bemalbar() { bool ret; switch (art) { case absort_feld: case absort_fall: case absort_info: case absort_bemalbar: ret = true; break; case absort_semiglobal: case absort_global: case absort_nirgends: ret = false; break; default: throw iFehler("%s","Data corruption."); } return ret; } Str ort_absolut::toString() const { Str ret; switch (art) { case absort_feld: ret = _sprintf("%d,%d", x,y); break; case absort_fall: ret = _sprintf("%d<%d>", x,y); break; case absort_info: ret = "?"; // Ich hab mal hier irgendwas reingeschrieben -Immi break; case absort_semiglobal: ret = "@@"; break; case absort_global: ret = "@"; break; case absort_nirgends: ret = "-"; break; case absort_bemalbar: /* absort_bemalbar ist nur ein Dummywert, der hier gar nicht auftauchen sollte. */ default: throw iFehler("%s","Data corruption."); } return ret; } void ort_absolut::playSample(int nr) const { switch (art) { case absort_feld: Sound::playSample(nr, rechts ? so_rfeld : so_lfeld, 2*x+1, 2*grx); break; case absort_nirgends: throw iFehler("%s","illegal ort for ort_absolut::playSample"); break; case absort_fall: Sound::playSample(nr, rechts ? so_rsemi : so_lsemi); break; case absort_info: Sound::playSample(nr, rechts ? so_rfeld : so_lfeld, rechts ? 1 : 0, 1); break; case absort_semiglobal: Sound::playSample(nr, rechts ? so_rsemi : so_lsemi); break; case absort_global: Sound::playSample(nr, so_global); break; } } /** ortart_hier */ Ort::Ort() : mArt(ortart_hier), mHaelfte(haelfte_hier), mXKoord(0), mYKoord(0) {} /** ortart_relativ_feld */ Ort::Ort(Code * x, Code * y) : mArt(ortart_relativ_feld), mHaelfte(haelfte_hier), mXKoord(x), mYKoord(y) {} /** ortart_relativ_fall */ Ort::Ort(Code * x) : mArt(ortart_relativ_fall), mHaelfte(haelfte_hier), mXKoord(x), mYKoord(0) {} /** ortart_absolut */ Ort::Ort(AbsOrtArt absart, Code * x /* = 0*/, Code * y /* = 0*/) : mArt(ortart_absolut), mAbsArt(absart), mHaelfte(haelfte_hier), mXKoord(x), mYKoord(y) {} Ort::Ort(DefKnoten * knoten, const Ort & f, bool neueBusyNummern) : mArt(f.mArt), mAbsArt(f.mAbsArt), mHaelfte(f.mHaelfte) { if (f.mXKoord) mXKoord = new Code(knoten, *f.mXKoord, neueBusyNummern); else mXKoord = 0; if (f.mYKoord) mYKoord = new Code(knoten, *f.mYKoord, neueBusyNummern); else mYKoord = 0; } Ort::~Ort() { if (mXKoord) delete mXKoord; if (mYKoord) delete mYKoord; } bool Ort::hier() { return mArt==ortart_hier; } void Ort::setzeHaelfte(OrtHaelfte haelfte) { mHaelfte = haelfte; } inline bool berechne_rechts(bool vonhieraus, OrtHaelfte haelfte) { bool ret; switch (haelfte) { case haelfte_hier: ret = vonhieraus; break; case haelfte_drueben: ret = !vonhieraus; break; case haelfte_links: ret = false; break; case haelfte_rechts: ret = true; break; } return ret; } ort_absolut Ort::berechne(ort_absolut vonhieraus, Blop & fuer_code) { switch (mArt) { case ortart_hier: return vonhieraus; case ortart_relativ_feld: CASSERT(mXKoord); CASSERT(mYKoord); if (vonhieraus.art==absort_feld) { int dx = mXKoord->eval(fuer_code); int dy = mYKoord->eval(fuer_code); /* Spiegeln fr den Himmel-Level: (User will y nach unten eingeben; intern ist y nach oben.) Anpassung an die Hex-Koordinaten: Intern sind die relativen Koordinaten bei ungeradem dx so gespeichert, dass dy = 0 leicht schrg nach oben bedeutet. D. h. Fr die geraden Spalten stimmt's, fr die ungeraden muss noch verschoben werden. Wenn dieses Spiefeld ge-hexflipt ist, "ungerade" durch "gerade" ersetzen. */ int x = vonhieraus.x + dx; int y = vonhieraus.y + (ld->mSpiegeln ? -dy : dy) - (ld->mSechseck && (dx & 1) && ld->getHexShift(vonhieraus.rechts, vonhieraus.x)); return ort_absolut(absort_feld, berechne_rechts(vonhieraus.rechts,mHaelfte),x,y); } else return ort_absolut(absort_nirgends); case ortart_relativ_fall: CASSERT(mXKoord); if (vonhieraus.art==absort_fall) return ort_absolut(absort_fall, berechne_rechts(vonhieraus.rechts,mHaelfte), (vonhieraus.x + mXKoord->eval(fuer_code)) & 1, vonhieraus.y); else return ort_absolut(absort_nirgends); case ortart_absolut: switch (mAbsArt) { case absort_feld: return ort_absolut(absort_feld, berechne_rechts(vonhieraus.rechts,mHaelfte), mXKoord->eval(fuer_code), mYKoord->eval(fuer_code)); case absort_fall: return ort_absolut(absort_fall, berechne_rechts(vonhieraus.rechts,mHaelfte), mXKoord->eval(fuer_code) & 1, 0); case absort_semiglobal: return ort_absolut(absort_semiglobal, berechne_rechts(vonhieraus.rechts,mHaelfte), 0, 0); case absort_global: case absort_nirgends: return ort_absolut(mAbsArt, false, 0, 0); default: throw iFehler( "Internal error in Ort::berechne(): Unknown AbsOrtArt %d", mAbsArt); } default: throw iFehler("%s","Data corruption."); } } Str Ort::toString() const { Str ret; switch (mArt) { case ortart_hier: ret = "@(0,0)"; break; case ortart_relativ_feld: ret = "@(x,y)"; break; case ortart_relativ_fall: ret = "@x"; break; case ortart_absolut: switch (mAbsArt) { case absort_feld: ret = "@@(x,y)"; break; case absort_fall: ret = "@@x"; break; case absort_semiglobal: ret = "@@"; break; case absort_global: ret = "@"; break; case absort_nirgends: ret = "@@-"; break; default: throw iFehler( "Internal error in Ort::toString(): Unknown AbsOrtArt %d", mAbsArt); } } return ret; } cuyo-2.1.0/src/nachbariterator.cpp0000644000175000017500000000655012410640315014057 00000000000000/*************************************************************************** nachbariterator.cpp - description ------------------- begin : Thu Jul 26 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cuyointl.h" #include "sorte.h" #include "nachbariterator.h" #include "fehler.h" #include "leveldaten.h" NachbarIterator::NachbarIterator(const Sorte * s, bool rechts, int x, int y): mNachbarschaft(s->getNachbarschaft()), mRechts(rechts), mX0(x), mY0(y), mI(0), mEnde(false) { setXY(); } NachbarIterator::~NachbarIterator(){ } /** Nchster Nachbar */ NachbarIterator & NachbarIterator::operator++() { if (!mEnde) { mI++; setXY(); } return *this; } void NachbarIterator::setXY() { char bx, by, ri; switch (mNachbarschaft) { /* Die Nachbarschafts-Konstanten stehen in sorte.h */ /* Die ri-Konstanten auch; siehe dort zu welcher Buchstabe was bedeutet. */ case nachbarschaft_normal: bx = "1232"[mI]; by = "2321"[mI]; ri = "caCA"[mI]; break; case nachbarschaft_schraeg: bx = "1133"[mI]; by = "1313"[mI]; ri = "dbBD"[mI]; break; case nachbarschaft_6: bx = "221133"[mI]; by = (ld->getHexShift(mRechts, mX0) ? "131212" : "132323")[mI]; ri = "AadbBD"[mI]; break; case nachbarschaft_6_schraeg: bx = "1133"[mI]; by = (ld->getHexShift(mRechts, mX0) ? "1212" : "2323")[mI]; ri = "dbBD"[mI]; break; case nachbarschaft_springer: bx = "00134431"[mI]; by = "13443100"[mI]; ri = "hgfeHGFE"[mI]; break; case nachbarschaft_dame: bx = "12321133"[mI]; by = "23211313"[mI]; ri = "caCAdbBD"[mI]; break; case nachbarschaft_6_3d: bx = ((mX0&1) ? "04221" : "04223")[mI]; by = ((mX0&1) ? "22132" : "22132")[mI]; ri = ((mX0&1) ? "cCAaI" : "cCAai")[mI]; break; case nachbarschaft_garnichts: bx = 0; by = 0; ri = 0; break; case nachbarschaft_horizontal: bx = "13"[mI]; by = "22"[mI]; ri = "cC"[mI]; break; case nachbarschaft_vertical: bx = "22"[mI]; by = "31"[mI]; ri = "aA"[mI]; break; default: /* TRANSLATORS: "neighbours" is a programming keyword that should not be translated. */ throw Fehler("%s","Non-existent neighbours value."); } if (!bx) mEnde = true; else { mX = mX0 + bx - '2'; mY = mY0 + by - '2'; ri -= 'A'; mDir = mDirOpp = ri & 31; if (ri >= 32) mDir += 16; else mDirOpp += 16; mDir = 1 << mDir; mDirOpp = 1 << mDirOpp; } } cuyo-2.1.0/src/global.h0000644000175000017500000000446711674440317011634 00000000000000/*************************************************************************** global.h - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef GLOBAL_H #define GLOBAL_H class Str; /* In dieser Datei werden all die Dinge definiert, von denen ich nicht wei, wo ich sie hin tun soll. Unter anderem ein paar globale Variablen. */ /** True, wenn -d bergeben wurde, d. h. im Debug-Modus. */ extern bool gDebug; /** Pfad, wo das Cuyo-Programm liegt, das aufgerufen wurde (aus argv[0] extrahiert. Wird vom PfadIterator gebraucht, um nach Leveln zu suchen. */ extern Str gCuyoPfad; /** True, wenn der Benutzer den Namen einer ld-Datei bergeben hat. */ extern bool gDateiUebergeben; /** Wenn eine ld-Datei bergeben wurde, dann ist das der Name davon. */ extern Str gLevelDatei; /** Entfernt von p alles, was nach dem ersten Punkt kommt. Ist dazu da um aus einem "bla.xpm", was unter pics steht, den Namen fr Programme zu extrahieren. */ Str picsEndungWeg(const Str & p); /** d sollte ein Pfad mit Dateiname sein. Liefert nur den Pfad-Anteil zurck (d. h. alles vor dem letzten "/". Liefert "./", falls d keinen "/" enthlt. */ Str nimmPfad(Str d); /** d sollte ein Pfad mit Dateiname sein. Liefert nur den nicht-Pfad-Anteil zurck (d. h. alles nach dem letzten "/". Liefert alles, falls d keinen "/" enthlt. */ Str vergissPfad(Str d); #endif cuyo-2.1.0/src/nachbariterator.h0000644000175000017500000000357312417277725013550 00000000000000/*************************************************************************** nachbariterator.h - description ------------------- begin : Thu Jul 26 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2005,2006,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef NACHBARITERATOR_H #define NACHBARITERATOR_H /**Iteriert durch alle Nachbarn eines Punktes. (Nachbarn im Sinne von Kette zhlt als verbunden.) Verwendung: for (NachbarIterator i(x, y); i; ++i) { bla(i.mX, i.mY); } *@author Immi */ class Sorte; class NachbarIterator { public: NachbarIterator(const Sorte * s, bool rechts, int x, int y); ~NachbarIterator(); /** Nchster Nachbar */ NachbarIterator & operator++(); operator bool() { return !mEnde; } protected: int mNachbarschaft; bool mRechts; int mX0, mY0; int mI; bool mEnde; void setXY(); public: /** Zum auslesen: die (absoluten) Koord. vom Nachbarn */ int mX, mY; /** Zum auslesen: die Nachbar-Richtung und die entgegengesetzte Richtung. Konstanten dazu stehen in sorte.h */ int mDir, mDirOpp; }; #endif cuyo-2.1.0/src/cuyo.h0000644000175000017500000000615212401423721011331 00000000000000/*************************************************************************** cuyo.h - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2003,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CUYO_H #define CUYO_H #include "stringzeug.h" #include "version.h" #include "spielfeld.h" #ifdef HAVE_CONFIG_H #include #endif #include "leveldaten.h" // wegen grx, gry, max_spielerzahl; sollte woanders hin class Fehler; class KIPlayer; class Spielfeld; /** Cuyo -- Das Fenster. Ein paar allgemeine Definitionen: Blop: eins von diesen Kgelchen. Auch Graue oder Gras, etc. Version (eines Blops): Untersorte (ursprnglich vom Gras) Zustand eines Blops: 1. Wo in der Animation befindet es sich? 2. Welche Version ist es? Standardblop: Kgelchen, aber kein Graues, etc. Farbe: eine Sorte von Standardblops. Bilddatei: Ein Pixmap so wie es geladen wurde. Bildchen: ein 32x32-Pixmap(-Ausschnitt). Schema: System, nach dem die Blob-Bildchen mit Anschlssen aus den xpms erzeugt werden */ namespace Cuyo { /* *** Weitere public-Methoden befinden sich in ui2cuyo.h *** */ /** liefert true, wenn das Spiel normal luft, false wenn das Spiel am zuende gehen ist. (Liefert whrend Pause auch true) */ bool getSpielLaeuft(); /** liefert true, wenn das Spiel gepaust ist. */ bool getSpielPause(); /** Liefert die Anzahl der Mitspieler zurck. */ int getSpielerZahl(); /** Liefert das Pause-Bildchen zurck */ Bilddatei * getPauseBild(); /** Liefert true, wenn debug-Rberreihen-Test aktiv ist */ bool getRueberReihenTest(); /** Liefert ein Spielfeld zurck. */ Spielfeld * getSpielfeld(bool reSp); /** */ void neuePunkte(bool reSp, int pt); /** wird aufgerufen, wenn ein Spieler tot ist */ void spielerTot(); /* reSp sendet g Graue an den anderen Spieler */ void sendeGraue(bool reSp, int g); /** reSp bittet den anderen Spieler um eine Reihe. Er selbst hat Hhe h. Antwort ist eine der Konstanten bewege_reihe_xxx */ int bitteUmReihe(bool reSp, int h); /** reSp will einen Stein vom anderen Spieler (rberreihe) */ void willStein(bool reSp, Blop & s); } #endif cuyo-2.1.0/src/main.cpp0000644000175000017500000001502212400570550011627 00000000000000/*************************************************************************** main.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001,2002,2006-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "inkompatibel.h" #include "stringzeug.h" #include #include #include #if HAVE_GETOPT /* Laut man-page muss man includen, wenn man getopt() verwenden will. Laut gcc . gcc sitzt am lngeren Hebel... */ //#include #include #endif #include "cuyointl.h" #include "fehler.h" #include "global.h" #include "config.h" #include "ui.h" #include "ui2cuyo.h" #include "version.h" void hilfe() { /* TRANSLATORS: "cuyo" is a program's name, "-f", "-g", and "-h" are options' names, "ld" is a file suffix. None of these should be translated. */ print_to_stderr(_("" "usage: cuyo [-g x] [-h] [-f] [ld-file]\n" " -g x set window size\n" " -f fullscreen mode\n" " -h print this help message\n" "(More options are documented in the man page.)\n" )); } void aufrufFehler() { hilfe(); exit(1); } #if !HAVE_GETOPT /* selbstprogrammiertes getopt()... funkioniert sehr eingeschrnkt. */ #error Version without getopt has never been tested int optind = 1; char * optarg; char getopt(int argc, char * const argv[], const char * optstring) { if (optind < argc && argv[optind][0] == '-') { char c = argv[optind++][1]; const char * o = optstring; while (*o) { char os = *o++; if (os != ':' && c == os) { if (*o == ':') { /* Does the option require an argument? */ if (argv[optind-1][2] != 0) { /* Argument without space, e.g. -d1 */ optarg = &argv[optind-1][2]; } else if (optind >= argc) { print_to_stderr(_sprintf(_("Argument to -%c missing\n"), c)); return '?'; } else { /* Argument with space, e.g. -d 1 */ optarg = argv[optind++]; } } return c; } } print_to_stderr(_sprintf(_("Unknown option '%c'\n"), c)); return '?'; } else return -1; } #endif typedef void optionsVerwalter(char *); /* Eingabe ist eine ,-getrennte Liste von Versionsmerkmalen. */ void scanVersion(char * liste) { Cuyo::mKommandoZeilenVersion = Version(); while (*liste!=0) { char* ende; /* Suche das Ende des aktuellen Merkmals. */ for (ende=liste; *ende!=0 && *ende!=','; ende++) {} /* leere Merkmale werden unterdrckt */ if (liste==ende) /* Da *liste!=0, wissen wir jetzt *ende=','. */ liste++; else { if (*ende==0) { Cuyo::mKommandoZeilenVersion.nochEinMerkmal(liste); liste=ende; } else { *ende = 0; Cuyo::mKommandoZeilenVersion.nochEinMerkmal(liste); liste=ende+1; } } } } /* Sucht, ob in den Optionen irgendwo --name=wert oder --name wert steht, ruft dann verwalter(wert) auf und lscht diesen Teil aus den Optionen. */ void scanWertOption(int &argc, char *argv[], const char * name, optionsVerwalter* verwalter) { for (int i=1; i #include #include "stringzeug.h" #include "inkompatibel.h" #include "punktefeld.h" #include "leveldaten.h" // wegen grx, gry, max_spielerzahl; sollte woanders hin enum { blattpic_pfeile, blattpic_highlight, blattpic_titel, blattpic_scroll, blattpic_scrollbright, blattpic_scrolldimmed, blattpic_border, blattpic_borderh, blattpic_borderv, blattpic_infoicons, anz_blattpics }; /* Menpunkte werden an verschiedenen Linien zentriert. Die Positionen dieser Linien werden getrennt berechnet. Siehe BlattMenu::oeffnen */ enum ZentrierLinie { zl_zentriert, zl_accel, zl_daten, zl_anzahl }; class BlattMenu; class Blatt { public: virtual ~Blatt() {} virtual void doEvent(const SDL_Event & evt); virtual void keyEvent(const SDL_keysym & ) {} virtual void resizeEvent() {} virtual void mouseButtonEvent(bool , int , int ) {} virtual void mouseMotionEvent(bool , int , int , int , int) {} virtual void anzeigen() = 0; virtual void zeitSchritt() {} /* Global-Zeug */ static Bilddatei * gBlattPics[anz_blattpics]; static void initBlaetter(); static void destroyBlaetter(); }; class BlattSpiel: public Blatt { /** Die Punkte-Anzeigen */ Punktefeld * mPunktefeld[max_spielerzahl]; bool mDekoUpdaten; public: BlattSpiel(); ~BlattSpiel(); virtual void oeffnen(int lnr); virtual void keyEvent(const SDL_keysym & taste); virtual void resizeEvent(); virtual void anzeigen(); virtual void zeitSchritt(); void randNeuMalen(); void setPunkte(int sp, int pt); private: void malInfos(int sp, int x); }; class MenuEintrag; /* Konstanten fr mausbereich.mEintrag */ #define eintrag_keiner (-1) #define eintrag_scrollleiste (-2) /* Der einzige Subbereich, der fr Tastatur-User existiert. */ #define subbereich_default 0 /* Die folgenden Konstanten sind nur zur bergabe von oder an Funktionen und nicht zum Speichern in einem MausBereich. */ #define subbereich_hyperaktiv (-2) #define subbereich_keiner (-1) #define subbereich_keinStrom (-3) #define subbereich_nichtInitialisiert (-4) struct MausBereich { int mEintrag; /* Die Bedeutung von subbereich hngt von der Meneintragart ab. Subbereich ist nur fr Maususer. Aus Sicht von Tastatur-Usern gibt es nur den default-Subbereich. (Sobald eine Taste gedrckt wird, sollte auch wieder dort hin geschaltet werden.) */ int mSubBereich; MausBereich(): mEintrag(eintrag_keiner) {} explicit MausBereich(int e): mEintrag(e), mSubBereich(subbereich_default) {} MausBereich(int e, int sb): mEintrag(e), mSubBereich(sb) {} bool operator==(const MausBereich & m) const { if (mEintrag != m.mEintrag) return false; if (mEintrag == eintrag_keiner) return true; return mSubBereich == m.mSubBereich; } }; class MenuEintragSubmenu; enum yneuwahl { /* Zur bergabe an calcScroll(): wo (vertikal) soll der mWahl-Eintrag stehen? */ ynw_mitte, ynw_oben, ynw_unten }; class BlattMenu: public Blatt { friend struct DrawDing; friend class MenuEintrag; /* Damit Menpunkte doEscape() aufrufen knnen */ protected: /* Soll es auch dann eine Scrollleiste haben, wenn sie unntig ist? (=> hat auch escape-button) */ bool mImmerScrollleiste; std::vector mEintraege; std::vector mEintraegeY; /* relativ zu mY0. Geht eins weiter als mEintraege, so da es auch die Gesamthhe enthlt. */ BlattMenu * mObermenu; /* NULL fr das Hauptmen */ /* Wenn der Eintrag, wo dies ein Untermen ist, erfahren mchte, wenn das Men verlassen wird, sollte er sich mit setObereintrag() hier eintragen. */ MenuEintragSubmenu * mObereintrag; /* Wenn was Hyperaktiv ist, kann mWahl trotzdem ein anderer Menpunkt sein: wenn sich die Maus ber einem anderen Menpunkt befindet. (Tastendrcke gehen dann aber an den hyperaktiven Eintrag) */ MausBereich mWahl; /* True, wenn Button unten; wird (im Moment) nur fr Scrollleistenpfeile gebraucht. */ bool mPress; int mHyperaktiv; // eintrag_keiner wenn nix hyperaktiv ist Str mInfoText; int mInfoW; // negativ fr "kein Scrollen", sonst Textbreite int mInfoX; /* current position of scrolling info text. Can be negative. In fact, the scrolling text is drawn twice: This is the left copy, the right one starts at mInfox+mInfoW. */ /* mX0 = x-Koordinate frs alignen... getrennt nach mY0 = y-Koordinate vom oberen Rand von Menpunkt 0 (evtl. weit oberhalb vom Bildschirm) */ int mX0[zl_anzahl], mY0, mZeigVon, mZeigBis; /* mAnimXX: Wie ohne Anim, aber tatschliche Position whrend einer Scroll-Animation (im Gegensatz zu: Zielposition) */ int mAnimY0, mAnimZeigVon, mAnimZeigBis; /* Aktuelle Scrollgeschwindigkeit */ int mScrollGesch; bool mRahmenUpdaten; bool mRaenderUpdaten; bool mInfozeileUpdaten; public: explicit BlattMenu(bool immerscrollleiste = false); virtual ~BlattMenu(); /* Gleich nach dem Konstruktor aufrufen, wenn das Obermenu nicht NULL sein soll. Schoener waers, obermenu direkt dem Konstruktor zu uebergeben. Das wuerde aber bedeuten, dass man gezwungen ist, in *jeder* Klasse, die von BlattMenu erbt, einen Konstruktor zu schreiben. Liefert einfach this zurueck, damit man (new BlattMenuXXX())->setObermenu(...) schreiben kann */ BlattMenu * setObermenu(BlattMenu * obermenu); void setObereintrag(MenuEintragSubmenu * obereintrag); void neuerEintrag(MenuEintrag*); virtual void oeffnen(bool durchMaus, int wahl = eintrag_keiner); virtual void keyEvent(const SDL_keysym & taste); virtual void mouseButtonEvent(bool press, int x, int y); virtual void mouseMotionEvent(bool press, int x, int y, int x_alt, int y_alt); virtual void resizeEvent(); virtual void anzeigen(); virtual void zeitSchritt(); protected: virtual void doEscape(); virtual void doReturn(bool durchMaus); void menuLoeschen(); /* ndert mWahl und kmmert sich drum, dass Graphik geupdatet wird */ void setWahl(MausBereich wahl); void setWahl(int eintrag, int subBereich = subbereich_default); /* ndert mHyperaktiv und kmmert sich drum, dass Graphik geupdatet wird */ void setHyperaktiv(int ha); /* Kmmert sich um mInfotext und mInfoY. Wird aufgerufen, wenn sich mInfotext vielleicht ndern soll. Also unter anderem von setWahl() und setHyperaktiv() */ void updateInfo(); /* Teilt dem Eintrag seinen neuen Subbereich mit. Der Eintrag kmmert sich dann um sein Graphik-Update */ void updateEintrag(int e); void sichtbaresUpdaten(); bool istScrollbar() const; void scrollleisteScroll(int sgn); /* Gleicht mY0, mZeigVon und mZeigBis an mWahl an. sprung = true => keine Animation, sondern direkt dort hin. */ void setScrollZielHigh(yneuwahl = ynw_mitte, bool sprung = false); /* Setzt mY0 und gleicht mZeigVon und mZeigBis an. sprung = true => keine Animation, sondern direkt dort hin. */ void setScrollZielLow(int neuy, bool sprung = false); void scrollZeitSchritt(); /* Berechnet zeigVon und zeigBis aus Y0... mit oder ohne anim */ void calcZeigVonBis(int y0, int & von, int & bis); private: void navigiere(int d, int vorschlag = -1); MausBereich getMausPos(int x, int y); /* Wo befindet sich der Cursor aus Sicht von Tastatur-Usern? */ int getTastenCursorPos(); }; class BlattStartAt: public BlattMenu { public: BlattStartAt(): BlattMenu(true) {} /* true: Scrollleiste immer da... und esc-Button */ virtual void oeffnen(bool durchMaus, int wahl = eintrag_keiner); /* Hier wird der int ignoriert, da sich die Klasse selbst drum kmmert */ protected: virtual void doReturn(bool durchMaus); }; class BlattHauptmenu: public BlattMenu { public: BlattHauptmenu(); }; class BlattPrefs: public BlattMenu { public: BlattPrefs(); protected: virtual void doEscape(); }; #endif cuyo-2.1.0/src/xpmladen.h0000644000175000017500000000302411674440321012163 00000000000000/*************************************************************************** xpmladen.h - description ------------------- begin : Mon May 28 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2006,2008,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef XPMLADEN_H #define XPMLADEN_H #include #include "maske.h" class Str; /* Versucht die Datei na zu laden. Versucht auerdem, die Datei na.gz zu laden. Liefert 0, wenn keine der Dateien existiert. Throwt, wenn's beim Laden einen Fehler gibt. (Falls die SDL-Lad-Routine verwendet wird, kann nicht versucht werden, die .gz-Datei zu laden.) Die Spezialfarbe "Background" definiert unter anderem die Maske. */ SDL_Surface * ladXPM(Str na, RohMaske &); #endif cuyo-2.1.0/src/fehler.cpp0000644000175000017500000000613411674440316012164 00000000000000/*************************************************************************** fehler.cpp - description ------------------- begin : Fri Apr 20 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2003,2006,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* Auf 1 setzen, wenn man mit gdb arbeitet und "backtrace" machen knnen mchte, wenn ein Fehler gethrowt wird. */ #define BEI_FEHLER_NACH_GDB 0 #include #include #if BEI_FEHLER_NACH_GDB #include #endif #include "fehler.h" #include "blop.h" #include "global.h" /** Erzeugt einen Fehler, bei dem der Text noch nicht gesetzt ist. Ist nur fr iFehler() gedacht. */ Fehler::Fehler(): mIntern(false), mMitZeile(false) { /* Wenn der Fehler whrend einer Gleichzeit passiert, soll letztere abgebrochen werden. */ Blop::abbruchGleichzeitig(); #if BEI_FEHLER_NACH_GDB raise(SIGTRAP); #endif } Fehler::Fehler(Str text) : mIntern(false), mText(text), mMitZeile(false) {} Fehler::Fehler(const char * fmt, ...): mIntern(false), mMitZeile(false) { /* Wenn der Fehler whrend einer Gleichzeit passiert, soll letztere abgebrochen werden. */ Blop::abbruchGleichzeitig(); va_list va; va_start(va, fmt); setText(_vsprintf(fmt, va)); va_end(va); #if BEI_FEHLER_NACH_GDB print_to_stderr(mText+"\n"); raise(SIGTRAP); #endif } Fehler iFehler(const char * fmt, ...) { #if BEI_FEHLER_NACH_GDB { va_list va; va_start(va, fmt); print_to_stderr(_vsprintf(fmt, va)); va_end(va); } raise(SIGTRAP); #endif Fehler ret; /* Interner Fehler. */ ret.mIntern = true; /* Fehlertext setzen */ va_list va; va_start(va, fmt); ret.setText(_vsprintf(fmt, va)); va_end(va); return ret; } /** Liefert true, wenn dieser Fehler gerne eine Log-Datei schicken wrde, d. h. wenn es ein interner Fehler ist oder - bei nicht internen Fehlern - wenn _keine_ ld-Datei an Cuyo bergeben wurde. */ bool Fehler::getSendLog() const { return mIntern || !gDateiUebergeben; } /** True, wenn ggf. "please send log" angehngt werden soll. GGf heit: Wenn getSendLog() true liefert. */ Str Fehler::getText(bool mitLog /*= false*/) const { if (getSendLog() && mitLog) return mText + "\n" + send_log_string; else return mText; } void Fehler::setText(const Str & t) { mText = t; } cuyo-2.1.0/src/sdltools.cpp0000644000175000017500000006762712400104766012572 00000000000000/*************************************************************************** sdltools.cpp - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "stringzeug.h" #include "sdltools.h" #include "global.h" #include "fehler.h" #include "layout.h" #include "bilddatei.h" /* Right now, the picture scale funcition still has a fixed scale_base=4 build in. Apart from that, it should be possible to increase scale_base to 8 or 16 (so that more different scalings are possible) */ #define videomode_flags_w \ (SDL_SWSURFACE/*|SDL_DOUBLEBUF*/|SDL_ANYFORMAT|SDL_VIDEORESIZE) #define videomode_flags_f \ (SDL_SWSURFACE/*|SDL_DOUBLEBUF*/|SDL_ANYFORMAT|SDL_FULLSCREEN) namespace Area { void init(); } namespace SDLTools { /* A 32-Bit-surface, to copy the pixel format from */ SDL_Surface * gSampleSurface32 = 0; /* The pixel format used for maskedDisplayFormat() */ SDL_PixelFormat gMaskedFormat; /* The replacement colour for the ColourKey, if necessary */ Uint8 gColkeyErsatz; /* gScale == scale_base means original size */ int gScale; int gShiftX, gShiftY; /* Virtual Window-size, i.e. size how it looks for the cuyo program (In contrast to screen size, which may be scaled). Start with sensible default size. */ int gVirtualWidth = L_usual_width; int gVirtualHeight = L_usual_height; bool gFullScreen = false; void myQuitSDL() { if (gSampleSurface32) SDL_FreeSurface(gSampleSurface32); if (gMaskedFormat.palette) { delete[] gMaskedFormat.palette->colors; delete gMaskedFormat.palette; } SDL_Quit(); } /* Compute the value of gScale for a window of size w x h */ int getScale(int w, int h) { int sc_w = w / (gVirtualWidth / scale_base); int sc_h = h / (gVirtualHeight / scale_base); int sc = sc_w < sc_h ? sc_w : sc_h; if (sc < 1) sc = 1; return sc; } void computeScaleAndShift() { SDL_Surface * s = SDL_GetVideoSurface(); gScale = getScale(s->w, s->h); gShiftX = (s->w - gVirtualWidth * gScale / scale_base) / 2; gShiftY = (s->h - gVirtualHeight * gScale / scale_base) / 2; /* Rescale all icons */ Bilddatei::resizeEvent(); } /* In fullscreen mode: find out optimal resolution to choose; (this is also used to get an idea on the optimal window size in windowed mode); returns false, if there seem to be no fullscreen mode available */ bool fullscreenSize(int & w, int & h) { SDL_Rect **modes; /* format = 0: search for best video mode */ modes = SDL_ListModes(0, videomode_flags_f); /* No size possible ?!? Let's hope that this is just because there is no fullscreen mode available. (As fullscreenSize() is called even in windowed mode, it is important that we do not just crash.) */ if (modes == (SDL_Rect**) 0) { /* In case we just tried to guess a good window size, let's just return a value which we hope to be good. */ w = L_preferred_width; h = L_preferred_height; return false; } /* Any size possible in fullscreen mode... */ if (modes == (SDL_Rect**) -1) { w = L_preferred_width; h = L_preferred_height; } /* Return the smallest resolution which is as least as big as L_usual_width x L_usual_height, or otherwise the biggest existing one */ bool found = false; for (int i = 0; modes[i]; i++) { if (modes[i]->w >= L_usual_width && modes[i]->h >= L_usual_height || !found) { w = modes[i]->w; h = modes[i]->h; found = true; } } return true; } /* Set/change (screen, i.e. real) window size */ void setVideoMode(int w, int h) { /* In fullscreen mode or if no window size was given, find a good default window size */ if (gFullScreen || w == -1) { if (!fullscreenSize(w, h)) { /* No fullscreen mode available? Then fall back to windowed mode. */ gFullScreen = false; } else if (!gFullScreen) { /* Not fullscreen? Then use the resolution which would be optimal in fullscreen mode, but shrink the window to get rid of the black borders */ int sc = getScale(w, h); int pref_w = L_preferred_width * sc / scale_base; int pref_h = L_preferred_height * sc / scale_base; if (w > pref_w) w = pref_w; if (h > pref_h) h = pref_h; } } /* Initialize the display requesting a software surface BitsPerPixel = 0: Take the current BitsPerPixel SDL_ANYFORMAT: Other pixel depths are ok, too. */ SDL_Surface * s = SDL_SetVideoMode(w, h, 0, gFullScreen ? videomode_flags_f : videomode_flags_w); SDLASSERT(s); computeScaleAndShift(); } void computeMaskedFormat() { CASSERT(gSampleSurface32); SDL_Surface * s = SDL_GetVideoSurface(); gMaskedFormat = *(s->format); if (gMaskedFormat.palette) { int ncolours = gMaskedFormat.palette->ncolors; /* Erst mal eine Kopie der Palette anlegen. Bse Dinge knnten passieren, wenn das displaysurface sie ndert. */ SDL_Color * neufarben = new SDL_Color[ncolours]; memcpy((void*) neufarben, (void*) gMaskedFormat.palette->colors, ncolours * sizeof(SDL_Color)); SDL_Palette * neupal = new SDL_Palette; neupal->ncolors = ncolours; neupal->colors = neufarben; gMaskedFormat.palette = neupal; if (ncolours < 255) { gMaskedFormat.colorkey = ncolours + 1; gColkeyErsatz = 0; // Wird eh nicht benutzt... } else { /* Jetzt mssen wir eine entbehrliche Farbe suchen */ int dmin = 1000; int c1best=0, c2best=0; // Initialisierung ist unntig, spart aber Warnungen SDL_Color * colours = gMaskedFormat.palette->colors; #ifdef DIST #error Vorsicht, DIST gibt es schon! #endif #define DIST(dim) (colours[c1].dimformat); } /* opt_w, opt_h: size of window, as given by command line option; or -1,-1 to automatically choose window size */ void initSDL(int opt_w, int opt_h) { /* Initialize the SDL library */ /* Audio will be initialized by our sound system */ SDLASSERT(SDL_Init(SDL_INIT_VIDEO) == 0); /* Clean up on exit */ atexit(myQuitSDL); /* Set the name of the window (and the icon) */ setMainTitle(); setVideoMode(opt_w, opt_h); gSampleSurface32 = createSurface32(1, 1); SDLASSERT(gSampleSurface32); computeMaskedFormat(); SDL_EventState(SDL_KEYUP, SDL_IGNORE); SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE); /* We need the characters corresponding to key-events for the menus: For example, on a French keyboard, shift-& is 1 */ SDL_EnableUNICODE(1); Area::init(); } /* Call while cuyo is already running is not yet supported (but not difficult to implement) */ void setFullscreen(bool fs) { gFullScreen = fs; } /* Change the size of the window from the view of the cuyo program. Does *not* change the real window size; instead, scaling may change. I propose that this should only be used in such a way that when the real window size is the preferred one (L_preferred_xxx), then scaling should never change. Note that changing the scaling always takes some time. */ void setVirtualWindowSize(int w, int h) { gVirtualWidth = w; gVirtualHeight = h; computeScaleAndShift(); } void setWindowTitle(const char * title) { char * title_ = convert_for_window_title(title); char * icon = convert_for_window_title("Cuyo"); SDL_WM_SetCaption(title_,icon); free(title_); free(icon); } void setMainTitle() { // TRANSLATORS: "cuyo" is the program's name setWindowTitle(gDebug ? _("Cuyo - debug mode") : "Cuyo"); } void setLevelTitle(const Str & levelname) { // TRANSLATORS: This is a window title setWindowTitle(_sprintf(_("Cuyo - level %s"),levelname.data()).data()); } /* Convert Qt-Key into SDL-Key; don't use Qt constants: we don't want to depend on Qt just to be able to read old .cuyo files. */ SDLKey qtKey2sdlKey(int qtk) { /* Letters are uppercase in Qt and lowercase in SDL */ if (qtk >= 'A' && qtk <= 'Z') return (SDLKey) (qtk - 'A' + 'a'); /* Don't change other Ascii Characters. (Maybe , , , etc are a problem) */ if (qtk <= 255) return (SDLKey) qtk; /* Other important keys */ switch (qtk) { case 0x1000: return SDLK_ESCAPE; case 0x1001: return SDLK_TAB; case 0x1003: return SDLK_BACKSPACE; case 0x1004: return SDLK_RETURN; case 0x1006: return SDLK_INSERT; case 0x1007: return SDLK_DELETE; case 0x1008: return SDLK_PAUSE; case 0x1009: return SDLK_PRINT; case 0x100a: return SDLK_SYSREQ; case 0x100b: return SDLK_CLEAR; case 0x1010: return SDLK_HOME; case 0x1011: return SDLK_END; case 0x1012: return SDLK_LEFT; case 0x1013: return SDLK_UP; case 0x1014: return SDLK_RIGHT; case 0x1015: return SDLK_DOWN; case 0x1016: return SDLK_PAGEUP; case 0x1017: return SDLK_PAGEDOWN; case 0x1030: return SDLK_F1; case 0x1031: return SDLK_F2; case 0x1032: return SDLK_F3; case 0x1033: return SDLK_F4; case 0x1034: return SDLK_F5; case 0x1035: return SDLK_F6; case 0x1036: return SDLK_F7; case 0x1037: return SDLK_F8; case 0x1038: return SDLK_F9; case 0x1039: return SDLK_F10; case 0x103a: return SDLK_F11; case 0x103b: return SDLK_F12; case 0x103c: return SDLK_F13; case 0x103d: return SDLK_F14; case 0x103e: return SDLK_F15; case 0x1055: return SDLK_MENU; case 0x1058: return SDLK_HELP; //case : return SDLK_BREAK; //case : return SDLK_POWER; //case : return SDLK_EURO; //case : return SDLK_UNDO; default: return SDLK_UNKNOWN; } /* Modifier keys are missing */ } SDL_Rect rect(int x, int y, int w, int h) { SDL_Rect ret; ret.x = x; ret.y = y; ret.w = w; ret.h = h; return ret; } bool intersection(const SDL_Rect & a, const SDL_Rect & b, SDL_Rect & ret) { ret.x = a.x > b.x ? a.x : b.x; ret.y = a.y > b.y ? a.y : b.y; int xplusw = a.x + a.w < b.x + b.w ? a.x + a.w : b.x + b.w; int yplush = a.y + a.h < b.y + b.h ? a.y + a.h : b.y + b.h; if (xplusw<=ret.x || yplush<=ret.y) return false; ret.w = xplusw-ret.x; ret.h = yplush-ret.y; return true; } /* Returns true if a is contained in b */ bool contained(const SDL_Rect & a, const SDL_Rect & b) { return a.x >= b.x && a.y >= b.y && a.x + a.w <= b.x + b.w && a.y + a.h <= b.y + b.h; } /* Creates a 32-bit-surface with alpha. After filling it with your data, you should convert it to screen format */ SDL_Surface * createSurface32(int w, int h) { union { Uint32 f; Uint8 k[4];} rmask, gmask, bmask, amask; /* Die richtigen Bits der Masken auf 1 setzen; das Problem ist, dass welches die richtigen Bits sind von der Endianness abhaengen. Das folgende macht's richtig: */ rmask.f = gmask.f = bmask.f = amask.f = 0; rmask.k[0] = gmask.k[1] = bmask.k[2] = amask.k[3] = 0xff; SDL_Surface * s = SDL_CreateRGBSurface(SDL_HWSURFACE, w, h, 32, rmask.f, gmask.f, bmask.f, amask.f); SDLASSERT(s); return s; } /* Converts a surface to a 32-bit-surface with alpha. The original surface is deleted. */ void convertSurface32(SDL_Surface *& s) { /* Silly: The only way I know to create an SDL_PixelFormat is using SDL_CreateRGBSurface; so we need a "sample surface" to get the format from... */ SDL_Surface * tmp = SDL_ConvertSurface(s, gSampleSurface32->format, SDL_SWSURFACE); SDLASSERT(tmp); SDL_FreeSurface(s); s = tmp; } /* Return a reference to the pixel at (x, y); assumes that the surface is 32-Bit. NOTE: The surface must be locked before calling this! */ Uint32 & getPixel32(SDL_Surface *surface, int x, int y) { int bpp = surface->format->BytesPerPixel; return *(Uint32 *) ((Uint8 *)surface->pixels + y * surface->pitch + x * bpp); } /* Converts the surface to a format suitable for fast blitting onto the display surface. Contrary to SDL_DisplayFormat, transparency is respected, at least where it is full transparency. Contrary to SDL_DisplayFormatAlpha, it uses ColourKey for paletted surfaces. */ SDL_Surface * maskedDisplayFormat(SDL_Surface * src) { SDL_Surface * ret = SDL_ConvertSurface(src,&gMaskedFormat,0); SDLASSERT(ret); if (gMaskedFormat.palette) { /* SDL sieht nicht vor, da Alpha zu ColourKey konvertiert wird. Seufz. Also selber nachbearbeiten. */ SDLASSERT(!SDL_MUSTLOCK(src) && !SDL_MUSTLOCK(ret)); ret->flags |= SDL_SRCCOLORKEY; Uint8 colkey = gMaskedFormat.colorkey; ret->format->colorkey = colkey; Uint32 amask = src->format->Amask; Uint8 * srcrow = (Uint8 *) src->pixels; Uint8 * retrow = (Uint8 *) ret->pixels; int w = src->w; int p1 = src->pitch; int p2 = ret->pitch; for (int i=src->h; i; i--, srcrow+=p1, retrow+=p2) { Uint32 * srcpix = (Uint32 *) srcrow; Uint8 * retpix = retrow; for (int j=w; j; j--, srcpix++, retpix++) if (((*srcpix) & amask)==0) *retpix = colkey; else if ((*retpix)==colkey) *retpix = gColkeyErsatz; } } return ret; } SDL_Surface * createMaskedDisplaySurface(int w, int h) { return SDL_CreateRGBSurface(0,w,h,gMaskedFormat.BitsPerPixel, gMaskedFormat.Rmask,gMaskedFormat.Gmask, gMaskedFormat.Bmask,gMaskedFormat.Amask); } /* Scales the surface according to our window size; s must be 32 bit. Warning: It is possible that a new surface is created and returned, but is is also possible that just a pointer to s is returned. */ SDL_Surface * scaleSurface(SDL_Surface * s) { if (!gScale == scale_base) return s; int w2 = s->w * gScale / scale_base; int h2 = s->h * gScale / scale_base; SDL_Surface * ret = SDLTools::createSurface32(w2+1, h2+1); SDL_LockSurface(s); SDL_LockSurface(ret); /* Fill the safety margin (which is there to buffer rounding errors in Area::blitSurface().). */ Uint32 trans=SDL_MapRGBA(ret->format,0,0,0,0); SDL_Rect r=rect(w2,0,1,h2+1); SDL_FillRect(ret,&r,trans); r=rect(0,h2,w2,1); SDL_FillRect(ret,&r,trans); for (int y = 0; y < h2; y++) { for (int x = 0; x < w2; x++) { Uint8 * dst = (Uint8 *)ret->pixels + ret->pitch * y + 4 * x; Uint8 * src = (Uint8 *)s->pixels + s->pitch * (y * 4 / gScale) + 4 * (x * 4 / gScale); Uint32 srcpix[16]; Uint32 anteil[16]; int numpix; /* Scaling is not yet very beautiful; in particular not enlarging */ if (gScale >= 4) { numpix = 1; srcpix[0] = * (Uint32*) src; anteil[0] = 16; } else if (gScale == 3) { numpix = 4; srcpix[0] = * (Uint32*) src; srcpix[1] = * (Uint32*) (src + 4); srcpix[2] = * (Uint32*) (src + s->pitch); srcpix[3] = * (Uint32*) (src + s->pitch + 4); anteil[0] = (3 - x % 3) * (3 - y % 3); anteil[1] = (1 + x % 3) * (3 - y % 3); anteil[2] = (3 - x % 3) * (1 + y % 3); anteil[3] = (1 + x % 3) * (1 + y % 3); } else if (gScale == 2) { numpix = 4; srcpix[0] = * (Uint32*) src; srcpix[1] = * (Uint32*) (src + 4); srcpix[2] = * (Uint32*) (src + s->pitch); srcpix[3] = * (Uint32*) (src + s->pitch + 4); anteil[0] = anteil[1] = anteil[2] = anteil[3] = 4; } else {/* 1 */ numpix = 16; for (int j = 0; j < 16; j++) { srcpix[j] = * (Uint32*) (src + s->pitch * (j / 4) + 4 * (j % 4)); anteil[j] = 1; } } /* Hier ist erstmal Summe der Anteile = 16 */ /* Alpha-Kanal einrechnen */ Uint32 gesAlpha = 0; for (int j = 0; j < numpix; j++) { Uint32 sp = srcpix[j]; anteil[j] *= ((Uint8 *) &sp)[3]; gesAlpha += anteil[j]; } Uint8 dstpix[4]; dstpix[3] = gesAlpha / 16; if (dstpix[3] > 0) { for (int i = 0; i < 3; i++) { Uint32 komponente = 0; for (int j = 0; j < numpix; j++) { Uint32 sp = srcpix[j]; komponente += anteil[j] * ((Uint8 *) &sp)[i]; } komponente /= gesAlpha; dstpix[i] = komponente; } } memcpy(dst,dstpix,4); } } SDL_UnlockSurface(s); SDL_UnlockSurface(ret); return ret; } int getScale() { return gScale; } /* Like SDL_PollEvent, but the event is already scaled. And for resize events, the window and scaling is already prepared. */ bool pollEvent(SDL_Event & evt) { if (!SDL_PollEvent(&evt)) return false; if (evt.type == SDL_VIDEORESIZE) { setVideoMode(evt.resize.w, evt.resize.h); } else if (evt.type == SDL_MOUSEMOTION) { evt.motion.x -= gShiftX; evt.motion.y -= gShiftY; /* We have to ensure: motion.xy = old-motion.xy + motion.xyrel Without rounding errors. Thus we cannot just multiply motion.xyrel by scale_base/gScale */ Uint16 xold, yold; xold = evt.motion.x - evt.motion.xrel; yold = evt.motion.y - evt.motion.yrel; evt.motion.x = evt.motion.x * scale_base / gScale; evt.motion.y = evt.motion.y * scale_base / gScale; xold = xold * scale_base / gScale; yold = yold * scale_base / gScale; evt.motion.xrel = evt.motion.x - xold; evt.motion.yrel = evt.motion.y - yold; } else if (evt.type == SDL_MOUSEBUTTONDOWN || evt.type == SDL_MOUSEBUTTONUP) { evt.button.x -= gShiftX; evt.button.y -= gShiftY; evt.button.x = evt.button.x * scale_base / gScale; evt.button.y = evt.button.y * scale_base / gScale; } return true; } } // namespace SDLTools /**************************************************************************/ #define max_area_depth 5 namespace Area { /* When drawing, three coordinate transformation are done: Area coordinates translate according to the origin of the current Area virtual coordinates scale coordinates Translate to get the black border around the window screen coordinates The two translation cannot really well be merged because one is in virtual pixels and the other one in screen pixels To avoid rounding errors during scaling: The virtual coordinate x corresponds to the screen coordinate floor(x * gScale / scale_base); in screen coordinates, translations aren't exactly linear anymore. So instead of (a) scale(x) + scale(w) always do (b) scale(x+w) There is one exception in which you may use (a): When w is divisible by scale_base; this means that drawing Surfaces or parts of surfaces with size divisible by scale_base is allowed */ /* The bounds of each area in the area stack. mBounds[0] is always the whole virtual window. mBounds is in virtual coordinates */ SDL_Rect mBounds[max_area_depth]; /* mBounds[mActDepth] are the present bounds */ int mActDepth; /* I don't use an stl-vector for the updateRects, because: a) I don't want the vector to be resized to a small one each time the updateRects are cleared b) I need direct access to the memory area with the rects to pass them to SDL The mUpdateRects are in screen coordinates */ SDL_Rect * mUpdateRects; int mNumUpdateRects; int mReservedUpdateRects; bool mUpdateAll; SDL_Surface * mBackground; SDL_Rect mBackgroundRect; /* screen coordinates */ int mBackgroundContext; /* value -1 for "undefined" */ /*** Private functions ***/ void needMoreUpdateRects() { mReservedUpdateRects *= 2; mUpdateRects = (SDL_Rect *) realloc(mUpdateRects, sizeof(SDL_Rect) * mReservedUpdateRects); } void scale(int & x, int & y) { x = x * SDLTools::gScale / scale_base; y = y * SDLTools::gScale / scale_base; } void scale(Sint16 & x, Sint16 & y) { x = x * SDLTools::gScale / scale_base; y = y * SDLTools::gScale / scale_base; } /* Area coordinates to Screen coordinates */ void transformA2S(int & x, int & y) { x += mBounds[mActDepth].x; y += mBounds[mActDepth].y; scale(x, y); x += SDLTools::gShiftX; y += SDLTools::gShiftY; } /* Area coordinates to Virtual coordinates */ void transformA2V(SDL_Rect & r) { r.x += mBounds[mActDepth].x; r.y += mBounds[mActDepth].y; } void scale(SDL_Rect & r) { int right = r.x + r.w; int bot = r.y + r.h; scale(r.x, r.y); scale(right, bot); r.w = right - r.x; r.h = bot - r.y; } /* Virtual coordinates to Screen coordinates */ void transformV2S(SDL_Rect & r) { scale(r); r.x += SDLTools::gShiftX; r.y += SDLTools::gShiftY; } /* Area coordinates to Screen coordinates */ void transformA2S(SDL_Rect & r) { transformA2V(r); transformV2S(r); } /* Clip the (screen) coordinates so that they fit into the window. */ void boundS(int & x, int & y) { if (x<0) x=0; if (y<0) y=0; SDL_Surface * screen = SDL_GetVideoSurface(); if (x>screen->w) x=screen->w; if (y>screen->h) y=screen->h; } void boundS(SDL_Rect & r) { int x0=r.x; int y0=r.y; int x1=r.x+r.w; int y1=r.y+r.h; boundS(x0,y0); boundS(x1,y1); r.x=x0; r.y=y0; r.w=x1-x0; r.h=y1-y0; } /* r is in virtual coordinates */ void setClipRectV(SDL_Rect r) { transformV2S(r); boundS(r); SDL_SetClipRect(SDL_GetVideoSurface(), &r); } /*** Public functions ***/ /* This is called from initSDL() */ void init() { /* 20 updateRects will never be enough, but I prefer that needMoreUpdateRects is called early enough so I notice if there's a bug inside. */ mReservedUpdateRects = 20; mUpdateRects = (SDL_Rect *) malloc(sizeof(SDL_Rect) * mReservedUpdateRects); mNumUpdateRects = 0; mUpdateAll = false; mActDepth = 0; /* Only the top-left corner mBounds[0] should be used. Make this rectangle empty, in the hope that this will make it easier to detect bugs when it is falsely used */ mBounds[mActDepth] = SDLTools::rect(0, 0, 0, 0); noClip(); mBackgroundContext = -1; } void destroy() { free(mUpdateRects); } void enter(SDL_Rect r) { transformA2V(r); mActDepth++; CASSERT(mActDepth < max_area_depth); if (mActDepth > 1) CASSERT(SDLTools::contained(r, mBounds[mActDepth - 1])); mBounds[mActDepth] = r; noClip(); } void leave() { CASSERT(mActDepth > 0); if (mBackgroundContext==mActDepth) mBackgroundContext=-1; mActDepth--; noClip(); } void setClip(SDL_Rect r) { transformA2V(r); if (mActDepth == 0) setClipRectV(r); else { SDL_Rect inter; SDLTools::intersection(r,mBounds[mActDepth],inter); setClipRectV(inter); } } void noClip() { if (mActDepth == 0) { /* Outer most area is the only one which allows to draw outside */ SDL_Surface * s = SDL_GetVideoSurface(); SDL_Rect r = SDLTools::rect(0, 0, s->w, s->h); SDL_SetClipRect(s, &r); } else setClipRectV(mBounds[mActDepth]); } void setBackground(const SDL_Rect & r, SDL_Surface * s) { mBackground = s; mBackgroundRect = r; transformA2S(mBackgroundRect); mBackgroundContext = mActDepth; } void maskBackground(const Maske * mask, SDL_Rect mr, int x, int y) { if (mBackgroundContext!=-1 && !mask->is_empty()) { int x2 = x + mr.w; int y2 = y + mr.h; transformA2S(x,y); transformA2S(x2,y2); scale(mr.x, mr.y); SDL_Rect dr = SDLTools::rect(x,y,x2-x,y2-y); SDL_Rect ir; if (SDLTools::intersection(mBackgroundRect,dr,ir)) { boundS(ir); mr.x += ir.x-dr.x; mr.y += ir.y-dr.y; mr.w = ir.w; mr.h = ir.h; mask->masked_blit(mBackground, ir.x-mBackgroundRect.x, ir.y-mBackgroundRect.y, mr, SDL_GetVideoSurface(),ir); } } } /* If the coordinates of srcrect are not a multiple of scale_base, then rounding is done in such a way that the result is correct in the *destination*, not in the source. */ void blitSurface(SDL_Surface *src, SDL_Rect srcrect, int dstx, int dsty) { int dstx2 = dstx + srcrect.w; int dsty2 = dsty + srcrect.h; transformA2S(dstx, dsty); transformA2S(dstx2, dsty2); SDL_Rect dstrect = SDLTools::rect(dstx, dsty, dstx2-dstx, dsty2-dsty); boundS(dstrect); scale(srcrect.x, srcrect.y); srcrect.x+=dstrect.x-dstx; srcrect.y+=dstrect.y-dsty; srcrect.w = dstrect.w; srcrect.h = dstrect.h; SDL_BlitSurface(src, &srcrect, SDL_GetVideoSurface(), &dstrect); } void blitSurface(SDL_Surface *src, int dstx, int dsty) { transformA2S(dstx, dsty); SDL_Rect dstrect = SDLTools::rect(dstx,dsty,src->w,src->h); boundS(dstrect); SDL_Rect srcrect = SDLTools::rect(dstrect.x-dstx,dstrect.y-dsty, dstrect.w,dstrect.h); SDL_BlitSurface(src, &srcrect, SDL_GetVideoSurface(), &dstrect); } void fillRect(SDL_Rect dst, const Color & c) { SDL_Surface * s = SDL_GetVideoSurface(); transformA2S(dst); boundS(dst); if (((Sint16) dst.w) < 0 || ((Sint16) dst.h) < 0) print_to_stderr("Probably trying to fill rectangle of negative size; this causes an overflow.\n"); SDL_FillRect(s, &dst, c.getPixel(s->format)); } void fillRect(int x, int y, int w, int h, const Color & c) { fillRect(SDLTools::rect(x, y, w, h), c); } /* Fills everything outside the current virtual window */ void fillBorder(const Color & c) { SDL_Rect r = SDLTools::rect(0, 0, SDLTools::gVirtualWidth, SDLTools::gVirtualHeight); transformV2S(r); SDL_Surface * s = SDL_GetVideoSurface(); SDL_Rect dst; dst = SDLTools::rect(0, 0, r.x, s->h); boundS(dst); SDL_FillRect(s, &dst, c.getPixel(s->format)); dst = SDLTools::rect(r.x + r.w, 0, s->w - (r.x + r.w), s->h); boundS(dst); SDL_FillRect(s, &dst, c.getPixel(s->format)); dst = SDLTools::rect(r.x, 0, r.w, r.y); boundS(dst); SDL_FillRect(s, &dst, c.getPixel(s->format)); dst = SDLTools::rect(r.x, r.y + r.h, r.w, s->h - (r.y + r.h)); boundS(dst); SDL_FillRect(s, &dst, c.getPixel(s->format)); } /* You have to call the following methods to make your drawing operations really visible on the screen. (However, the update will take place only at the next call to doUpdate) */ void updateRect(SDL_Rect dst) { if (!mUpdateAll) { transformA2V(dst); if (mActDepth != 0) { SDL_Rect inter; if (!SDLTools::intersection(dst,mBounds[mActDepth],inter)) return; dst = inter; } transformV2S(dst); boundS(dst); if (mNumUpdateRects >= mReservedUpdateRects) needMoreUpdateRects(); mUpdateRects[mNumUpdateRects++] = dst; } } void updateRect(int x, int y, int w, int h) { updateRect(SDLTools::rect(x, y, w, h)); } /* Better than calling updateRect(bigRect): Stops collecting small rectangles. All means really all, not only active area. */ void updateAll() { mUpdateAll = true; } /* To be called only by ui.cpp */ void doUpdate() { if (mUpdateAll) SDL_UpdateRect(SDL_GetVideoSurface(), 0, 0, 0, 0); else { //print_to_stderr(_sprintf("%d\n", mNumUpdateRects)); SDL_UpdateRects(SDL_GetVideoSurface(), mNumUpdateRects, mUpdateRects); } mUpdateAll = false; mNumUpdateRects = 0; } } cuyo-2.1.0/src/layout.h0000644000175000017500000001345612401677110011677 00000000000000/*************************************************************************** layout.h - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2008,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef LAYOUT_h #define LAYOUT_h /* I decided to put the window size defines in some central include file where sdltools could find them. Then I noticed that I also need grx, gry and gric in that file. And then I noticed that these three are needed by many many other files. So now layout.h is included by many files, so that it might be a good idea to either (a) remove everything from this file except grx, gry, gric and the window size things and move them back to blatt.h or (b) move grx, gry, gric and the window size into another file which anyway is included by almost everything. Option (b) has the advantage that e.g. punktefeld.cpp does not need to include blatt.h just because it needs layout information. */ /* Gre des Levels */ #define grx 10 #define gry 20 #define gric 32 // Gre der Bildchen // Defined in font.h: //#define L_font_width 24 // (Abstand der Buchstaben in der Font-Grafik) //#define L_font_height 24 /*** Defines fr Fenster-Layout ***/ /* Hhe der Punkteanzeige */ #define L_punkte_hoehe 32 /* Rand zwischen den verschiedenen Objekten */ #define L_rand 8 #define L_spielfeld_breite (grx * gric) #define L_spielfeld_hoehe (gry * gric) #define L_fenster_hoehe L_spielfeld_hoehe #define L_fenster_breite_2sp (4 * L_fenster_hoehe / 3) #define L_wunsch_hoehe (L_fenster_hoehe + 2 * L_rand) #define L_wunsch_breite (L_fenster_breite_2sp + 2 * L_rand) #define L_spieler_breite ((L_fenster_breite_2sp - L_rand) / 2) #define L_infos_breite (L_spieler_breite - L_spielfeld_breite - L_rand) #define L_infos_hoehe (L_spielfeld_hoehe) #define L_fenster_breite_1sp L_spieler_breite /* Durch Komma getrennte Liste: 1-spieler, 2-spieler:erster-spieler, 2-spieler:zweiter-spieler */ #define L_spielfeld_x \ (L_infos_breite + L_rand),\ (L_infos_breite + L_rand), \ ((L_fenster_breite_2sp + L_rand) / 2) #define L_spielfeld_y 0 #define L_infos_x \ 0,\ 0, \ (L_fenster_breite_2sp - L_infos_breite) #define L_naechstesfall_hoehe (gric) #define L_player_y (4 * gric) #define L_punkte_y (8 * gric) #define L_infoblobsep (gric/4) #define L_levelexplode_dy (gric/4) #define L_greygrass_x1 0 #define L_greygrass_x2 (gric + L_rand) #define L_levelexplode_x1 0 #define L_levelexplode_x2 (gric + L_rand) #define L_naechstesfall_x (L_infos_breite / 2 - gric) #define L_chainreactioninfo_y (L_infos_hoehe - gric) #define L_levelexplode_y (L_chainreactioninfo_y - L_levelexplode_dy) #define L_connectioninfo_y (L_levelexplode_y - L_levelexplode_dy) #define L_grass_y (L_connectioninfo_y - L_infoblobsep - gric) #define L_grey_y (L_grass_y - L_infoblobsep - gric) #define L_infoblobs_y (L_grey_y) #define L_infoblobs_breite (gric) #define L_infoblobs_hoehe (L_chainreactioninfo_y + gric - L_grey_y) /* Ab hier: Layout von Mens und so */ /* Brauchen die Mens die ganze 4/3-mal-Fensterhhe als Breite? Ich denke nicht; dann knnen wir an den Seiten etwas weniger Platz beanspruchen und so bei anderen Fensterformen die Mens etwas grer darstellen. Falls die Mens doch gerne breiter wrden, dann einfach diese Konstante wieder ndern (aber nicht auf mehr als L_fenster_breite_2sp.) */ #define L_fenster_breite_menus L_fenster_hoehe #define L_menueintrag_defaulthoehe 32 #define L_menueintrag_highlight_rad 16 /* nderungen auch nach some_pic_sources/highlight.pov propagieren */ /* Um wie viele Pixel soll der Hintergrund grer sein als die Schrift? */ #define L_menu_rand_lr 8 #define L_menu_rand_ou 4 #define L_AI_pfeil_sep_li 0 // Abstand Name - Pfeil ... #define L_AI_pfeil_sep_re 32 // Nicht: Abstand Zahl - Pfeil #define L_menu_scroll_freiraum (L_menu_hoehe/4) #define L_menu_scroll_vorsprung (L_menu_hoehe/6) #define L_bigskip L_menueintrag_defaulthoehe #define L_medskip (L_bigskip/3) #define L_hotkeysep 16 #define L_grausep 16 #define L_auswahlsep 16 #define L_datensep 16 #define L_infosep 16 // Abstand Info-Zeile - Unterer Fensterrand #define L_info_hspace (L_fenster_breite_menus/3) #define L_info_scrollspeed (L_fenster_breite_menus/80) #define L_info_hoehe (L_infosep + L_font_height) #define L_menu_hoehe (L_fenster_hoehe - L_info_hoehe) #define L_auswahlmenu_pfeilsep 60 // Abstand zur Mitte #define L_auswahlmenu_anim_dx 20 #define L_auswahlmenu_anim_schritte 3 #define L_scroll_beschleunigung 25 // in Pixeln pro Zeitschritt^2 #define L_maus_scroll_geschwindigkeit 50 #define L_scrollleiste_buttonzahl 5 #define L_scrollleiste_x (L_fenster_breite_menus - 2 * gric) #define L_scrollleiste_y ((L_menu_hoehe - L_scrollleiste_buttonzahl * gric) / 2) /* SDLTools uses english constants */ #define L_usual_height L_fenster_hoehe #define L_usual_width L_fenster_breite_2sp #define L_preferred_height L_wunsch_hoehe #define L_preferred_width L_wunsch_breite #endif cuyo-2.1.0/src/maske.h0000644000175000017500000000323711644375224011467 00000000000000/* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef MASKE_H #define MASKE_H #include struct RohMaske { friend class Maske; public: RohMaske(); RohMaske(const RohMaske &); ~RohMaske(); void init(int w, int h); void set_pixel(int x, int y, bool); void fill(bool); bool is_empty() const; private: int mWidth,mHeight; bool * mData; }; struct Maske { public: Maske(); Maske(const Maske &); ~Maske(); void scale(const RohMaske & src, int scale); bool is_empty() const; void masked_blit(SDL_Surface * src, int srcx, int srcy, SDL_Rect & mask, SDL_Surface * dst, SDL_Rect & dstr) const; /* Assumes that src and dst have the same format. */ private: int mWidth,mHeight; Sint8 * mData; /* Positive entries indicate the presense of the mask, negative entries its absence. The absolute value of an entry minus one says that so many further entries in the same line (to the right) have the same sign. */ }; #endif cuyo-2.1.0/src/aufnahme.cpp0000644000175000017500000001771012421555414012502 00000000000000/*************************************************************************** record.cpp - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include #include "cuyointl.h" #include "aufnahme.h" #include "spielfeld.h" #include "leveldaten.h" #include "fehler.h" //#define datum_rnd 1 /* Wird nicht mehr benutzt */ #define datum_taste 2 #define datum_schritt 3 #define datum_randseed 4 namespace Aufnahme { struct tDatum { int mArt; int mD1; int mD2; tDatum(int a = 0, int d1 = 0, int d2 = 0): mArt(a), mD1(d1), mD2(d2) {} }; /***** Globale Variablen *****/ /** Name des Levels, fr den die Aufnahme ist. */ Str gLevelName; /** Anzahl der Spieler, fr die diese Aufnahme ist. (= spielermodus_computer, falls fr gegen KI.) */ int gSpielerModus; /** Das Haupt-Daten-Array der Aufnahme. (Ist evtl. grer als ntig.) */ static std::vector gAufnahme; /** Wie lang ist die Aufnahme wirklich: */ static int gAufnahmeAnz; /** True, wenn grade eine Aufnahme abgespielt wird. */ static bool gAbspielen; /** Akt. Position beim abspielen. */ int gAbspielenBei; /***** Werkzeuge *****/ void DatAusgeben(int n) { print_to_stderr(_sprintf("%3d.: %d,%d,%d\n", n, gAufnahme[n].mArt, gAufnahme[n].mD1, gAufnahme[n].mD2)); } void speichere(const tDatum & d) { /* GGf. Array vergrern */ if ((int) gAufnahme.size() <= gAufnahmeAnz) gAufnahme.resize(gAufnahmeAnz * 2 + 16); gAufnahme[gAufnahmeAnz++] = d; //DatAusgeben(gAufnahmeAnz - 1); } /** Schaltet mitten whrend des Abspielens auf Aufnahme um. Wenn true bergeben wird, wird dabei der zuletzt abgespielte Datensatz berschrieben (blicherweise weil der nicht mehr gepasst hatte). */ void abspielenUnterbrechen(bool letztenUeberschreiben = false) { gAufnahmeAnz = gAbspielenBei - letztenUeberschreiben; gAbspielen = false; } /** Am Anfang eines Levels aufrufen. Allerdings erst *nach* ladLevel(), weil der Levelname schon zur Verfgung stehen muss. spz gibt die Anzahl der Spieler an (bzw. = spielermodus_computer falls gegen KI). */ void init(bool abspielen, int spz) { gAbspielen = abspielen; gAbspielenBei = 0; if (gAbspielen) { const tDatum & d = gAufnahme[gAbspielenBei++]; if (gLevelName != ld->mIntLevelName) { abspielenUnterbrechen(); print_to_stderr(_sprintf("Stopped replay, because it requires level %s.\n", gLevelName.data())); } else if (gSpielerModus != spz) { abspielenUnterbrechen(); print_to_stderr(_sprintf("Stopped replay, because it requires %d players.\n", gSpielerModus)); } else if (d.mArt != datum_randseed) { abspielenUnterbrechen(); print_to_stderr("Stopped replay, because it seems to be broken.\n"); } else { srand(d.mD1); //printf("\n\nAufgenommenes Seed: %d\n", d.mD1); return; } } /* Nicht abspielen, oder beim Abspielen ist jetzt schon was schief gelaufen. */ /* Level, Spielerzahl abspeichern */ gLevelName = ld->mIntLevelName; gSpielerModus = spz; /* Alles lschen */ gAufnahmeAnz = 0; /* Randseed abspeichern */ int seed = time(0); srand(seed); //printf("\n\nNeues Seed: %d\n", seed); speichere(tDatum(datum_randseed, seed)); } /***** "public" Zeug *****/ /** Liefert eine Zufallszahl... evtl. eine aufgenommene. (Im Moment bemerkt man die Tatsache, dass es sich um eine aufgenommene Zufallszahl handelt, gar nicht, weil das ber das randseed geht.) */ int rnd(int bis) { //int r = (int) ((double) bis * rand() / (RAND_MAX + 1.0)); //printf("/%d", r); fflush(stdout); //return r; return (int) ((double) bis * rand() / (RAND_MAX + 1.0)); } /** Nimmt ggf. den Tastendruck t von Spieler sp auf. Muss bei jedem Tastendruck aufgerufen werden. */ void recTaste(int sp, int t) { if (gAbspielen) { print_to_stderr("Stopped replay, because a key was pressed.\n"); abspielenUnterbrechen(); } speichere(tDatum(datum_taste, sp, t)); } /** Muss einmal vor jedem Spielschritt aufgerufen werden. Spielt ggf. Tastendrcke ab. spf muss das Haupt-Spielfeld-Array sein, damit Tastendrcke ausgefhrt werden knnen. */ void recSchritt(Spielfeld ** spf) { /* Aufnahme abspielen? Die Schleife wird so lange ausgefhrt, bis aus irgend einem Grund das Abpsielen abgebrochen wird, oder bis recSchritt() ganz verlassen wird, weil ein datum_schritt gefunden wurde. (D. h. das Abspielen luft jetzt normal weiter. */ while (gAbspielen) { if (gAbspielenBei >= gAufnahmeAnz) { print_to_stderr("End of replay.\n"); abspielenUnterbrechen(); } else { const tDatum & d = gAufnahme[gAbspielenBei++]; /* Schritt? Dann fertig. */ if (d.mArt == datum_schritt) return; if (d.mArt == datum_taste) { /* Tastendruck ausfhren */ spf[d.mD1]->taste(d.mD2); } else { /* War wohl nix. */ print_to_stderr("Stopped replay, because it seems to be broken.\n"); abspielenUnterbrechen(true); } } } speichere(tDatum(datum_schritt)); } void laden(Str pfad) { gAufnahmeAnz = 0; FILE * f = fopen(pfad.data(), "r"); if (!f) throw Fehler("Could not open log file \"%s\" for reading.", pfad.data()); char cvers[222], lna[222]; int spz; if (fscanf(f, "%200[^\n]\n%200[^\n]\n%d", cvers, lna, &spz) != 3) throw Fehler("Parse Error at the beginning of the log file \"%s\".", pfad.data()); if (strcmp(cvers, VERSION) != 0) { print_to_stderr(_sprintf("Warning: log file version is %s while cuyo version is %s\n", cvers, VERSION)); } gLevelName = lna; gSpielerModus = spz; int a, d1, d2; while (fscanf(f, "%d%d%d", &a, &d1, &d2) == 3) { if (a == datum_schritt) { /* Alte Version der Log-Datei: */ if (d2 == 0) d2 = 1; for (int i = 0; i < d2; i++) speichere(tDatum(a, d1, 0)); } else speichere(tDatum(a, d1, d2)); } fclose(f); } void speichern(Str pfad) { FILE * f = fopen(pfad.data(), "w"); if (!f) throw Fehler("Could not open log file \"%s\" for writing.", pfad.data()); /* Cuyo-Version ausgeben */ fprintf(f, "%s\n", VERSION); /* Level-Name und Spielerzahl ausgeben */ fprintf(f, "%s\n%d\n", gLevelName.data(), gSpielerModus); /* Eigentliche Daten ausgeben */ int schritte = 0; for (int i = 0; i < gAufnahmeAnz; i++) { const tDatum & d = gAufnahme[i]; if (d.mArt == datum_schritt) schritte++; else { if (schritte > 0) { fprintf(f, "%d %d %d\n", datum_schritt, 0, schritte); schritte = 0; } fprintf(f, "%d %d %d\n", d.mArt, d.mD1, d.mD2); } } if (schritte > 0) fprintf(f, "%d %d %d\n", datum_schritt, 0, schritte); fclose(f); } /** Liefert den Level-Namen zurck, fr den die aktuelle Aufnahme ist. */ Str getLevelName() { return gLevelName; } /** Liefert die Spielerzahl zurck, fr die die aktuelle Aufnahme ist. */ int getSpielerModus() { return gSpielerModus; } } // namespace Aufnahme cuyo-2.1.0/src/cuyointl.h0000644000175000017500000000413511674440316012231 00000000000000/*************************************************************************** cuyointl.h - description ------------------- begin : Wed Jul 4 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2008-2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CUYOINTL_H #define CUYOINTL_H #include #include #ifdef ENABLE_NLS const char * our_gettext(const char *); /** Works like gettext, except that it does not try to translate "". The output charset is our internal charset. It is suitable for printf format strings. */ #include #define _(String) our_gettext (String) #define N_(String) (String) #else #define _(String) (String) #define N_(String) (String) #endif void init_NLS(); char * convert_for_font(const char *); char * convert_for_stdout(const char *, size_t &); char * convert_for_window_title(const char *); /** Convert a string from the internal charset to some other charset. They are just copies in case ENABLE_NLS is not defined. In any case, the caller receives the responsibility for freeing the returned string. The extra argument for the stdout variant is for returning the length of the output string (without the terminating 0). This is needed because the string may contain non-terminating 0s. */ #endif cuyo-2.1.0/src/Makefile.am0000644000175000017500000000611611703616612012244 00000000000000# # Copyright <=2001 by the cuyo developers # Maintenance modifications 2002-2008,2010-2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Verzeichnis src ## Programm cuyo erzeugen, das nach games installiert werden soll bin_PROGRAMS = cuyo ## Die Quellen... (werden zu .o compiliert und dann gelinkt) cuyo_SOURCES = bilddatei.cpp blopbesitzer.cpp blop.cpp blopgitter.cpp configdatei.cpp cuyointl.cpp fall.cpp cuyo.cpp kiplayer.cpp leveldaten.cpp main.cpp nachbariterator.cpp sorte.cpp spielfeld.cpp pfaditerator.cpp xpmladen.cpp parser.yy scanner.ll code.cpp knoten.cpp datendatei.cpp variable.cpp fehler.cpp definition.cpp bildstapel.cpp aufnahme.cpp punktefeld.cpp global.cpp prefsdaten.cpp sound.cpp ort.cpp ui.cpp stringzeug.cpp version.cpp font.cpp sdltools.cpp blatt.cpp menueintrag.cpp maske.cpp ## Die moc-Ergebnisse sind auch noch Sourcen. (Laut Doku muss der Inhalt der ## Variable BUILT_SOURCES auch noch in eine der anderen ?_SOURCES-Variablen.) ## Evtl. nodist_cuyo_SOURCES += ... cuyo_SOURCES += $(BUILT_SOURCES) ## Damit auch die Header in die Distribution kommen noinst_HEADERS = bilddatei.h blopbesitzer.h blopgitter.h blop.h configdatei.h cuyointl.h fall.h inkompatibel.h cuyo.h kiplayer.h layout.h leveldaten.h nachbariterator.h sorte.h spielfeld.h pfaditerator.h fehler.h xpmladen.h code.h knoten.h datendatei.h variable.h definition.h bildstapel.h aufnahme.h punktefeld.h global.h prefsdaten.h sound.h ort.h ui.h stringzeug.h version.h ui2cuyo.h font.h sdltools.h blatt.h menueintrag.h maske.h ## Damit der User keinen bison zu haben braucht, liefert automake ## das parser.cc automatisch mit. Aber offenbar nicht das parser.h. noinst_HEADERS += parser.h # Offenbar blickt das depend-dings nicht, dass scanner.ll von # parser.h abhngt: scanner.ll: parser.h ## Lex und Yacc...: AM_YFLAGS = -d -v cuyo_LDADD = $(SDL_LIBS) ## PKGDATADIR := Verzeichnis mit level.descr, etc. ## Dadurch, dass es so hier steht, kann man das ## Data-Dir zu Makezeiten noch ndern (im Gegensatz zu: steht in configure.in; ## dann ist es nach ./configure schon festgelegt). AM_CPPFLAGS = $(SDL_CPPFLAGS) -DPKGDATADIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(localedir)\" ## Anmerkung: Unter MACOSX wird -DPKGDATADIR ignoriert; statt dessen ## wird ARGV[0]-Pfad/../Resources verwendet # Damit man alles unntige Zeug lschen kann MAINTAINERCLEANFILES = Makefile.in CLEANFILES = parser.output # Cuyo starten... run: cuyo ./cuyo -d cuyo-2.1.0/src/bilddatei.cpp0000644000175000017500000002365612400104761012635 00000000000000/*************************************************************************** bilddatei.cpp - description ------------------- begin : Fri Apr 20 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include "sdltools.h" #include "cuyointl.h" #include "bilddatei.h" #include "fehler.h" #include "pfaditerator.h" #include "stringzeug.h" #include "xpmladen.h" #include "inkompatibel.h" #include "global.h" #include "layout.h" /**********************************************************************/ AutoColor AutoColor::gGame; void AutoColor::setColor(const Color & c) { mColor = c; for (int i = 0; i < (int) mUser.size(); i++) mUser[i]->setFaerbung(mColor); } void AutoColor::addUser(Bilddatei * b) { mUser.push_back(b); b->setFaerbung(mColor); } void AutoColor::operator=(const Color & c) { setColor(c); } /**********************************************************************/ class BildOriginal { public: SDL_Surface * mBild; private: int mAnzUser; public: BildOriginal(SDL_Surface * b): mBild(b), mAnzUser(1) {} ~BildOriginal() { SDL_FreeSurface(mBild); } void anmelden() { mAnzUser++; } void abmelden() { mAnzUser--; if (mAnzUser == 0) delete this; } }; // BildOriginal /**********************************************************************/ Bilddatei::Bilddatei(): mBildOriginal(0), mBild(0), mNativBild(NULL) { } Bilddatei::~Bilddatei() { datenLoeschen(); } Bilddatei::Bilddatei(Bilddatei * quelle, const Color & faerbung) : mBildOriginal(quelle->mBildOriginal), mBild(0), mNativBild(NULL), mMaskeOriginal(quelle->mMaskeOriginal), mMaske(quelle->mMaske), mBreite(quelle->mBreite), mHoehe(quelle->mHoehe), mName(quelle->mName), mGefaerbt(true), mFaerbung(faerbung), mScale(quelle->mScale) { CASSERT(mBildOriginal); // Kein Bild klonen, das selbst grad nicht geladen ist mBildOriginal->anmelden(); gAlleBilddateien->push_back(this); bildNachbearbeiten(); } void Bilddatei::datenLoeschen() { loescheAusZentralregister(); if (mBild) { SDL_FreeSurface(mBild); mBild = 0; } if (mNativBild) { SDL_FreeSurface(mNativBild); mNativBild = NULL; } if (mBildOriginal) { mBildOriginal->abmelden(); mBildOriginal = 0; } } /** Ldt das Bild mit dem angegebenen Namen. Sucht in verschiedenen Pfaden danach.Throwt ggf. */ void Bilddatei::laden(Str name) { datenLoeschen(); mName = name; mGefaerbt = false; Str s = _sprintf("pics/%s", name.data()); /* Bild in verschiedenen Pfaden suchen... (Der Pfaditerator throwt ggf.) ladXPM kann auch throwen: Wenn eine .xpm.gz-Datei existiert, die von meiner Routine nicht geladen werden kann. */ SDL_Surface * bild; for (PfadIterator pi(s,true); !(bild = ladXPM(pi.pfad(),mMaskeOriginal)); ++pi) {} /* Ich will mit 32-Bit arbeiten */ SDLTools::convertSurface32(bild); mBreite = bild->w; mHoehe = bild->h; mBildOriginal = new BildOriginal(bild); gAlleBilddateien->push_back(this); bildNachbearbeiten(); } void Bilddatei::klonen(Bilddatei & quelle) { datenLoeschen(); mBildOriginal = quelle.mBildOriginal; CASSERT(mBildOriginal); // Kein Bild klonen, das selbst grad nicht geladen ist mBildOriginal->anmelden(); mMaskeOriginal = quelle.mMaskeOriginal; mMaske = quelle.mMaske; mBreite = quelle.mBreite; mHoehe = quelle.mHoehe; mName = quelle.mName; } void Bilddatei::setFaerbung(const Color & faerbung) { mGefaerbt = true; mFaerbung = faerbung; bildNachbearbeiten(); } /** malt das k-te Viertel vom n-te Bildchen an xx,yy. Oder evtl. das ganze Bildchen */ void Bilddatei::malBildchen(int xx, int yy, int n, int k /*= viertel_alle*/) const { /* Richtigen Bildausschnitt suchen */ if (n >= anzBildchen()) throw Fehler("Image '%s' too small for Icon %d", mName.data(), n); int bpr = mBreite / gric; /* Bildchen pro Reihe... */ SDL_Rect srcr = SDLTools::rect(gric * (n % bpr), gric * (n / bpr), gric, gric); if (k != viertel_alle) { /* Richtiges Viertel in Datei whlen */ if (k & viertel_qr) srcr.x += gric/2; if (k & viertel_qu) srcr.y += gric/2; /* Richtiges Ziel-Viertel whlen */ if (k & viertel_zr) xx += gric/2; if (k & viertel_zu) yy += gric/2; srcr.w = srcr.h = gric/2; } Area::blitSurface(mBild, srcr, xx, yy); Area::maskBackground(&mMaske, srcr, xx, yy); } /** liefert zurck, wie viele Bildchen in dieser Datei sind. */ int Bilddatei::anzBildchen() const{ return (mBreite / gric) * (mHoehe / gric); } /** liefert die Gesamthoehe in Pixeln zurck */ int Bilddatei::getBreite() const { return mBreite; } /** liefert die Gesamthoehe in Pixeln zurck */ int Bilddatei::getHoehe() const { return mHoehe; } /** Nur zum anschauen, nicht zum veraendern! Liefert das Bild in unskaliert und 32 Bit. */ SDL_Surface * Bilddatei::getSurface() const { return mBildOriginal->mBild; } void Bilddatei::setAsBackground(int y) { sorgeFuerNativBild(); Area::setBackground(SDLTools::rect(0,y,mBreite,mHoehe),mNativBild); } /** malt das gesamte Bild */ void Bilddatei::malBild(int xx, int yy) const { Area::blitSurface(mBild, xx, yy); Area::maskBackground(&mMaske,SDLTools::rect(0,0,mBreite,mHoehe),xx,yy); } /** malt einen beliebigen Bildausschnitt */ void Bilddatei::malBildAusschnitt(int xx, int yy, const SDL_Rect & src) const { if (gDebug) if (src.x % 4 != 0 || src.y % 4 != 0 || src.w % 4 != 0 || src.h % 4 != 0) { print_to_stderr(_sprintf("\ * Warning: Some part of '%s' is drawn with coordinates which are\n\ * not divisible by 4. This may cause graphic glitches in downscaled mode.\n", mName.data())); } Area::blitSurface(mBild, src, xx, yy); } /* Malt das angegebene Rechteck (bzw. Teile davon) so oft, dass ein horizontaler Streifen der Lnge l entsteht. Geht davon aus, das in dem Bildchen das src-Rechteck horizontal einheitlich ist. Je grer src, desto schneller geht das malen. */ void Bilddatei::malStreifenH(int xx, int yy, int l, const SDL_Rect & src) const { int xx2 = xx + l; while (xx < xx2) { int xxneu = xx + src.w; if (xxneu > xx2) xxneu = xx2; Area::blitSurface(mBild, SDLTools::rect(src.x, src.y, xxneu - xx, src.h), xx, yy); xx = xxneu; } } /* Das selbe in vertikal */ void Bilddatei::malStreifenV(int xx, int yy, int l, const SDL_Rect & src) const { int yy2 = yy + l; while (yy < yy2) { int yyneu = yy + src.h; if (yyneu > yy2) yyneu = yy2; Area::blitSurface(mBild, SDLTools::rect(src.x, src.y, src.w, yyneu - yy), xx, yy); yy = yyneu; } } void Bilddatei::bildNachbearbeiten() { SDL_Surface* src = SDLTools::scaleSurface(mBildOriginal->mBild); mScale = SDLTools::getScale(); mMaske.scale(mMaskeOriginal,mScale); if (mGefaerbt) { SDL_LockSurface(src); bool gleich = (src!=mBildOriginal->mBild); /* Wenn src *nicht* das Original ist, dann kann direkt src gefrbt werden, d. h. dst der Frbung = src der Frbung. */ SDL_Surface* dst; if (gleich) dst=src; else { dst = SDLTools::createSurface32(src->w,src->h); SDL_LockSurface(dst); } for (int x = 0; x < src->w; x++) for (int y = 0; y < src->h; y++) { Uint32 & srcpix = SDLTools::getPixel32(src, x, y); Uint32 & dstpix = (gleich ? srcpix : SDLTools::getPixel32(dst, x, y)); Uint8 rgba[4], r, g, b; SDL_GetRGBA(srcpix, src->format, &r, &g, &b, &rgba[3]); for (int i = 0; i < 3; i++) rgba[i] = (mFaerbung[i] * r + (255 - mFaerbung[i]) * g + 127) / 255; dstpix = SDL_MapRGBA(dst->format, rgba[0], rgba[1], rgba[2], rgba[3]); } SDL_UnlockSurface(src); if (!gleich) SDL_UnlockSurface(dst); src = dst; } if (mBild) SDL_FreeSurface(mBild); mBild = SDLTools::maskedDisplayFormat(src); if (mNativBild) SDL_FreeSurface(mNativBild); mNativBild=NULL; if (src!=mBildOriginal->mBild) SDL_FreeSurface(src); } void Bilddatei::sorgeFuerNativBild() { if (!mNativBild) { CASSERT(mBild); mNativBild=SDL_ConvertSurface(mBild,SDL_GetVideoSurface()->format,0); SDLASSERT(mNativBild); } } /**********************************************************************/ /** Ggf. alle existierenden Bildchen reskalieren. */ void Bilddatei::resizeEvent() { for (int i = 0; i < (int) gAlleBilddateien->size(); i++) { //print_to_stderr(_sprintf("%s: %d\n", gAlleBilddateien[i]->mName.data(), gAlleBilddateien[i]->mScale)); if ((*gAlleBilddateien)[i]->mScale != SDLTools::getScale()) (*gAlleBilddateien)[i]->bildNachbearbeiten(); } } /* Liste aller geladenen Bilddateien */ std::vector * Bilddatei::gAlleBilddateien; void Bilddatei::loescheAusZentralregister() { for (int i = 0; i < (int) gAlleBilddateien->size(); i++) if ((*gAlleBilddateien)[i] == this) { (*gAlleBilddateien)[i] = (*gAlleBilddateien)[gAlleBilddateien->size() - 1]; gAlleBilddateien->resize(gAlleBilddateien->size() - 1); return; } CASSERT("Internal error in Bilddatei registration"); } void Bilddatei::init() { gAlleBilddateien = new std::vector(); } void Bilddatei::destroy() { delete gAlleBilddateien; } cuyo-2.1.0/src/maske.cpp0000644000175000017500000001060211645305626012014 00000000000000/* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "maske.h" #include "sdltools.h" #include "fehler.h" RohMaske::RohMaske() : mWidth(0), mHeight(0), mData(NULL) {} RohMaske::RohMaske(const RohMaske & src) : mWidth(src.mWidth), mHeight(src.mHeight) { if (src.mData) { size_t size=mWidth*mHeight; mData = new bool[size]; memcpy((void*) &mData, (void *) &src.mData, size*sizeof(bool)); } else mData=NULL; } RohMaske::~RohMaske() { if (mData) delete mData; } void RohMaske::init(int w, int h) { mWidth=w; mHeight=h; if (mData) delete mData; mData=NULL; } void RohMaske::set_pixel(int x, int y, bool pixel) { if (pixel && !mData) { int size=mWidth*mHeight; mData = new bool[size]; for (int i=0; i=scale_base) for (int yd=0; yd=0; xd--) { size_t pos=yd*mWidth+xd; if ((mData[pos]>0 && next>0) || (mData[pos]<0 && next<0)) { mData[pos]+=next; /* Test for overflow */ if ((mData[pos]>0 && next<0) || (mData[pos]<0 && next>0)) mData[pos]-=next; }; next=mData[pos]; } } } else { mData=NULL; }; } bool Maske::is_empty() const {return !mData;} void Maske::masked_blit(SDL_Surface * src, int srcx, int srcy, SDL_Rect & mask, SDL_Surface * dst, SDL_Rect & dstr) const { if (mData) { SDL_LockSurface(src); SDL_LockSurface(dst); size_t Bpp=src->format->BytesPerPixel; CASSERT(Bpp==dst->format->BytesPerPixel); size_t srcpitch=src->pitch; size_t dstpitch=dst->pitch; int w = (mask.x+mask.w>mWidth ? mWidth-mask.x : mask.w); int h = (mask.y+mask.h>mHeight ? mHeight-mask.y : mask.h); for (int y=0; y0) { if (x+datum>w) datum=w-x; memcpy(((Uint8*) dst->pixels) + (y+dstr.y)*dstpitch + (x+dstr.x)*Bpp, ((Uint8*) src->pixels) + (y+srcy)*srcpitch + (x+srcx)*Bpp, datum*Bpp); x+=datum; } else x-=datum; }; SDL_UnlockSurface(dst); SDL_UnlockSurface(src); } } cuyo-2.1.0/src/knoten.cpp0000644000175000017500000005716712401410342012212 00000000000000/*************************************************************************** knoten.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2008-2011,2014 by the cuyo developers Maintenance modifications 2012 by Bernhard R. Link Maintenance modifications 2012 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "cuyointl.h" #include "knoten.h" #include "sorte.h" #include "leveldaten.h" #include "blop.h" #include "global.h" #include "layout.h" /*************************************************************************/ /* Was von vornerein so im Namespace rumliegt */ /* xxx_anz wird in blop.h definiert. */ char spezvar_namen[spezvar_anz][22] = { "file", "pos", "kind", "version", "qu", "out1", "out2", "", // kind_beim_letzten_draw_aufruf; ist nicht fr den User gedacht. "inhibit", "weight", "behaviour", "falling_speed", "falling_fast_speed", "" // am_platzen; kriegt der Cual-Code (im Moment) nur als Konstante // "exploding" zu sehen (0 = nicht am platzen; sonst 1 - 8) }; int spezvar_default[spezvar_anz] = { 0, 0, blopart_ausserhalb, 0, viertel_alle, spezvar_out_nichts, spezvar_out_nichts, blopart_ausserhalb, 0, 1, 0, 6, gric, 0 }; int spezvar_defaultart[spezvar_anz] = { da_event, da_event, da_keinblob, da_keinblob, da_event, da_event, da_event, da_init, da_init, da_init, da_nie, da_init, da_init, da_init }; /* Reihenfolge -1, -2, -3, ... */ char spezconst_namen[spezconst_anz][22] = { "turn", "connect", "falling", "size", "loc_x", "loc_y", "loc_p", "players", "falling_fast", "exploding", "loc_xx", "loc_yy", "basekind", "time", "informational" }; int spezconst_default[spezconst_anz] = { 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, blopart_ausserhalb, 0, 0 }; #define const_anz (21+5+2*9+6+nachbarschaft_letzte+1) //int const_anz = feste_konst_anz; char const_namen[const_anz][27] = { /* Viertelstckchen */ "Q_ALL", "Q_TL", "Q_TR", "Q_BL", "Q_BR", "Q_TL_TL", "Q_TR_TL", "Q_BL_TL", "Q_BR_TL", "Q_TL_TR", "Q_TR_TR", "Q_BL_TR", "Q_BR_TR", "Q_TL_BL", "Q_TR_BL", "Q_BL_BL", "Q_BR_BL", "Q_TL_BR", "Q_TR_BR", "Q_BL_BR", "Q_BR_BR", /* Sortennamen */ "nothing", "outside", "global", "semiglobal", "info", /* Buchstaben, die in den Strings in Nachbariterator verwendet werden. */ /* A B C D E F G H I */ "DIR_U", "DIR_UR", "DIR_R", "DIR_DR", "DIR_UUL", "DIR_UUR", "DIR_RRU", "DIR_RRD", "DIR_F", "DIR_D", "DIR_DL", "DIR_L", "DIR_UL", "DIR_DDR", "DIR_DDL", "DIR_LLD", "DIR_LLU", "DIR_B", /* spezvar_verhalten */ "explodes_on_size", "explodes_on_explosion", "explodes_on_chain_reaction", "calculate_size", "goalblob", "floats", /* Nachbarschaften */ "neighbours_rect", "neighbours_diagonal", "neighbours_hex6", "neighbours_hex4", "neighbours_knight", "neighbours_eight", "neighbours_3D", "neighbours_none", "neighbours_horizontal", "neighbours_vertical" }; /* Eigentlich sollten hier die Konstanten aus bilddatei.h verwendet werden; das wre aber so viel Tipparbeit... */ int const_werte[const_anz] = { /* Viertelstckchen */ viertel_alle, 0, 5, 10, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* Sortennamen */ blopart_keins, blopart_ausserhalb, blopart_global, blopart_semiglobal, blopart_info, /* Richtungskonstanten fr inhibit */ 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020, 0x00000040, 0x00000080, 0x00000100, 0x00010000, 0x00020000, 0x00040000, 0x00080000, 0x00100000, 0x00200000, 0x00400000, 0x00800000, 0x01000000, /* Bits frs spezvar_verhalten */ platzt_bei_gewicht, platzt_bei_platzen, platzt_bei_kettenreaktion, berechne_kettengroesse, verhindert_gewinnen, schwebt, /* Nachbarschaften */ nachbarschaft_normal, nachbarschaft_schraeg, nachbarschaft_6, nachbarschaft_6_schraeg, nachbarschaft_springer, nachbarschaft_dame, nachbarschaft_6_3d, nachbarschaft_garnichts, nachbarschaft_horizontal, nachbarschaft_vertical }; /* Fr den internen Gebrauch in Schleifen: Die pics-artigen keys. */ const char * gPicsetc[] = { "pics", "greypic", "startpic", 0 }; /*************************************************************************/ /* Knoten */ /** Liefert einen String zurck, der angibt, wo dieser Code definiert wurde (fr Fehlermeldungen) */ Str Knoten::getDefString() const { return _sprintf("%s:%d", mDateiName.data(), mZeilenNr); } /*************************************************************************/ /* DefKnoten */ /** Erzeugt den Top-Knoten. */ DefKnoten::DefKnoten(): Knoten("?", 0), mVater(0), mTiefe(tiefe_global), mErstLevelDannCual(0), mVarNrBei(0), mBoolNrBei(-1), mDefaultWerte(std::vector()), mDefaultArten(std::vector()), mSortenAnfaenge() { /* Die vordefinierten Namespace-Dinge einfgen. */ speicherGlobaleVordefinierte(); } /** Erzeugt einen Unter-Knoten. */ DefKnoten::DefKnoten(Str datna, int znr, DefKnoten * vater): Knoten(datna, znr), mVater(vater), mTiefe(vater->mTiefe + 1), mErstLevelDannCual(0), /* Das ganze Variablen-Zeug vom Vater bernehmen...: */ mVarNrBei(vater->mVarNrBei), mBoolNrBei(vater->mBoolNrBei), mDefaultWerte(vater->mDefaultWerte), mDefaultArten(vater->mDefaultArten), mSortenAnfaenge() { } DefKnoten::~DefKnoten() { tKnotenMap::Index it(mKinder); for(; !it.ende(); ++it) delete it.datum(); } Str DefKnoten::toString() const { Str ret = "{\n"; tKnotenMap::constIndex it(mKinder); for(; !it.ende(); ++it) { ret += it.schluessel() + it.version().toString() + "=" + it.datum()->toString() + "\n"; } ret += "}\n"; return ret; } void DefKnoten::fuegeEin(const Str & na, const Version & version, Knoten * wert) { if (mKinder.enthaelt(na,version)) throw Fehler("\"%s\" already defined.", na.data()); mKinder.neuerEintrag(na,version,wert); /* Wenn ein neuer Level geparst wird, will das ld evtl. wissen. (Falls der Benutzer neu gemachte Level ausprobieren will, die noch nicht in "level=..." stehen.) */ if (mTiefe == tiefe_global && wert->type() == type_DefKnoten) { ld->levelGefunden(na); /* Und bei der Gelegenheit merken wir uns gleich noch, dass schon ein Level in diesem Knoten ist. Wenn jetzt noch Cual-Code kommt, ist das gefhrlich, und es soll eine Warnung ausgegeben werden. */ mErstLevelDannCual |= 1; } /* Auf Level-Ebene evtl. noch ein paar Konstanten einfgen... */ if (mTiefe == tiefe_level) { /* pics-Eintrag? Dann knnen ja jetzt die pics-Konstanten erzeugt werden. */ /* Achtung, verwirrend: wert ist nicht der Wert der Konstante, sondern das, was rechts vom "=" in der ld-Datei steht. */ for (const char ** i=gPicsetc; *i; i++) if (na==*i) speicherPicsConst(version, wert, *i); /* Wenn es den Namen schon gab, sind wir ganz still, denn das ist OK. */ try { if (na == "emptypic") speicherKnotenConst(version, wert, blopart_keins); } catch (Fehler f) {} } /* Wenn es eine Konstante ist, wird auch noch eine Variable draus gemacht. */ const DatenKnoten * wert_; switch (wert->type()) { case type_DatenKnoten: wert_ = (const DatenKnoten *) wert; break; case type_ListenKnoten: if (((ListenKnoten*) wert)->getImpliziteLaenge() == 1) wert_ = ((ListenKnoten*) wert)->getDatum(0); else wert_ = 0; break; default: wert_ = 0; } if (wert_) if (wert_->datatype() == type_ZahlDatum) speicherDefinition(namespace_variable, na, version, new VarDefinition(na, wert_->getZahl(), vd_konstante, da_keinblob, 0)); } /** Lscht alle Kinder raus, die DefKnoten sind und nicht "Title" heien. Wird von LevelDaten::ladLevelSummary() gebraucht. */ void DefKnoten::loeschAlleLevel() { tKnotenMap::Index it(mKinder); while (!it.ende()) { Knoten * k = it.datum(); tKnotenMap::Index nae=it; ++nae; if (k->type() == type_DefKnoten && it.schluessel() != "Title") { delete k; mKinder.loescheEintrag(it); } it = nae; } } /***** Methoden fr den Codespeicher *****/ /** Speichert alle vordefinierten Variablen in den Namespace, auer die pics-Konstanten. Wird vom Constructor des WurzelKnotens aufgerufen. */ void DefKnoten::speicherGlobaleVordefinierte() { Version vallg = Version(); /* Spezial-Variablen (z. B. file); Nummern ab 0 */ /* Das sollten die ersten Variablen sein, die erzeugt werden; sonst stimmen nachher die Nummern nicht. */ CASSERT(mVarNrBei == 0); for (int i = 0; i < spezvar_anz; i++) { /* Nicht direkt mit speicherDefinition() erzeugen; sonst werden die Default-Werte nicht nochmal in mDefaultWerte gespeichert. */ neueVarDefinition(spezvar_namen[i], vallg, spezvar_default[i], spezvar_defaultart[i]); } /* Spezial-Konstanten (d. h. Variablen, die nur gelesen werden werden knnen), z. B. verbindung; Nummern < 0 */ for (int i = 0; i < spezconst_anz; i++) speicherDefinition(namespace_variable, spezconst_namen[i], vallg, new VarDefinition(spezconst_namen[i], spezconst_default[i], vd_spezconst, da_nie, -i-1) ); /* Ganz normale feste Konstanten (z. B. nochange) werden so abgespeichert, da auch auerhalb von cual darauf zugegriffen werden kann. */ for (int i = 0; i < const_anz; i++) fuegeEin(const_namen[i], vallg, new ZahlKnoten("",0,const_werte[i])); } /** Speichert die Pics-Konstanten. (picsliste sollte der pics-Knoten sein.) Wird von fuegeEin(...) aufgerufen, wenn es die pics bekommt. Alternativ auch bei greypic und startpic. Welches davon steht in schluessel */ void DefKnoten::speicherPicsConst(const Version& version, Knoten * picsliste, const char* schluessel) { /* Eigentlich knnten wir gleich eine Fehlermeldung ausspucken, wenn der Typ von picsliste falsch ist, aber die anderen entsprechenden Typ-Fehlermeldungen kommen auch erst beim Starten des Levels. Also hier erst mal ruhig sein. */ if (picsliste->type() == type_ListenKnoten) { /* Erstmal den Anfang ermitteln (wenn wir das noch nicht getan haben). Das ist die Summe der impliziten Listenlngen zu den anderen Schlsseln, die schon vorkamen. Und zwar in der korrekten, das heit globalen Version. Da wir die schon jetzt kennen, stellt VersionMap automatisch sicher, indem ein Aufruf von Bestapproximierende die VersionMap fr sptere Eintrge sperrt. */ int anfang; std::map::const_iterator i = mSortenAnfaenge.find(schluessel), e = mSortenAnfaenge.end(); if (i==e) { anfang = getSortenAnzahl(); mSortenAnfaenge[schluessel] = anfang; } else anfang = i->second; ListenKnoten * lki = (ListenKnoten*) picsliste; int nummer=anfang; for (int i = 0; i < lki->getLaenge(); i++) { /* picsEndungWeg() steht in global.* */ Str varna = picsEndungWeg(lki->getKernDatum(i,type_WortDatum) ->getWort()); /* Wenn es den Namen schon gab, sind wir ganz still, denn das ist OK. */ if (!mCodeSpeicher[namespace_variable].enthaelt(varna,version)) speicherDefinition(namespace_variable, varna, version, new VarDefinition(varna, nummer, vd_konstante, da_nie, 0)); nummer += lki->getVielfachheit(i); } } } /** Speichert eine Konstante mit dem Namen, der in nameKnoten steht und dem angegebenen Wert. nameKnoten ist hoffentlich ein ListenKnoten mit genau einem Eintrag. Wird von fuegeEin() aufgerufen, um die Gras-, die Grau- und die nix-Konstante abzuspeichern, wenn es die bekommt. */ void DefKnoten::speicherKnotenConst(const Version & version, Knoten * nameKnoten, int wert) { /* Keine Fehlermeldung bei falschem Typ; siehe speicherPicsConst() */ if (nameKnoten->type() == type_ListenKnoten) { ListenKnoten * lk = (ListenKnoten*) nameKnoten; if (lk->getLaenge() == 1) { Str varna = picsEndungWeg(lk->getDatum(0,type_WortDatum) ->getWort()); speicherDefinition(namespace_variable, varna, version, new VarDefinition(varna, wert, vd_konstante, da_nie, 0) ); } } } /* Erzeugt eine neue Var-Definition und speichert sie ab. Dabei bekommt sie auch gleich eine Nummer. (Aufzurufen, wenn eine VarDefinition geparst wurde.) def ist der Default-Wert. */ void DefKnoten::neueVarDefinition(const Str & na, const Version & version, int def, int defart) { //print_to_stderr(_sprintf("Define %s\n", na.data())); if (na == "") { /* Wenn kein Name angegeben wurde, handelt es sich wohl um eine Spez-Var, die fr den User unsichtbar sein soll. Dann nur die Variable erzeugen, aber keine Definition abspeichern. */ neueVariable(def,defart); } else { speicherDefinition(namespace_variable, na, version, new VarDefinition(na, def, vd_variable, defart, neueVariable(def,defart))); } } /* Speichert eine neue Definition - Code oder Variable. Noch unschn: Sollte von auen nur fr Code aufgerufen werden. Bei Variablen immer neueVarDefinition verwenden! */ void DefKnoten::speicherDefinition(int ns, const Str & na, const Version & version, Definition * f) { /* print_to_stderr(_sprintf("Speichere %s = %s\n", na.data(), f->toString().data()));*/ if (mCodeSpeicher[ns].enthaelt(na,version)) throw Fehler("\"%s\" already defined.", na.data()); /* (Vielleicht kennt Papi den Code schon, aber das kann man berschreiben.) */ mCodeSpeicher[ns].neuerEintrag(na,version,f); /* Wenn wir der globale Knoten sind und schon eine Level-Definition kam, dann Warnung ausgeben. */ if (gDebug && mErstLevelDannCual == 1) { /* TRANSLATORS: "Cual" is a programming language's name */ print_to_stderr("Warning: There's global Cual code _after_ some level definitions. Be sure\n" "not to use that Cual code in the levels before it. (Due to a bug, this will\n" "sometimes not result in an error message but in strange behaviour.)\n"); mErstLevelDannCual |= 2; } } /** Liefert eine Code-Definition aus diesem Speicher oder von weiter oben. Throwt bei Nichtexistenz. Achtung: Behlt den Besitz an der Defintion. */ Definition * DefKnoten::getDefinition(int ns, const Str & na, const Version & version, bool defaultVorhanden) { Definition * ret; if (!mCodeSpeicher[ns].enthaelt(na)) { /* Wir kennen den Code nicht. Also Papi fragen. */ if (mVater) return mVater->getDefinition(ns, na, version, defaultVorhanden); /* Ups, wir haben ja gar keinen Papi. */ if (defaultVorhanden) return 0; else /* TRANSLATORS: "<<" and ">>" are programming keywords and should not be translated. */ throw Fehler("\"%s\" not defined inside << >>.", na.data()); } ret = mCodeSpeicher[ns].Bestapproximierende(na,version,defaultVorhanden); return ret; } /** Liefert ein Kind von hier oder von weiter oben. */ Knoten * DefKnoten::getVerwandten(const Str & na, const Version & version, bool defaultVorhanden) { Knoten * ret; if (!mKinder.enthaelt(na)) { /* Das ist nicht mein Kind. Also Papi fragen. */ if (mVater) return mVater->getVerwandten(na,version,defaultVorhanden); /* Ups, wir haben ja gar keinen Papi. */ if (defaultVorhanden) return 0; else throw Fehler("\"%s\" not defined.", na.data()); } ret = mKinder.Bestapproximierende(na,version,defaultVorhanden); return ret; } /***** Variablen-Nummern-Verwaltung *****/ /** Erzeugt eine unbenannte Variable und liefert die Nummer zurck. */ int DefKnoten::neueVariable(int def, int defart) { /* Sorten-Variablen gibt's nicht (wirklich). Die kommen in den Level-Knoten */ if (mTiefe == tiefe_sorte) return mVater->neueVariable(def,defart); CASSERT((int) mDefaultWerte.size() == mVarNrBei); CASSERT((int) mDefaultArten.size() == mVarNrBei); //print_to_stderr(_sprintf("t=%d %d %d\n", mTiefe, mDefaultWerte.size(), mVarNrBei)); /* Das kann man auch schneller machen... (immer mehr auf einmal reservieren) falls das QT nicht eh tut */ mDefaultWerte.resize(mVarNrBei + 1); mDefaultArten.resize(mVarNrBei + 1); mDefaultWerte[mVarNrBei] = def; mDefaultArten[mVarNrBei] = defart; return mVarNrBei++; } void DefKnoten::neuerDefault(int var, int def, int defart) { CASSERT(mVarNrBei>var); mDefaultWerte[var]=def; mDefaultArten[var]=defart; } /** Erzeugt eine unbenannte Bool-Variable und liefert die Nummer zurck. */ int DefKnoten::neueBoolVariable() { /* Sorten-Variablen gibt's nicht (wirklich). Die kommen in den Level-Knoten */ if (mTiefe == tiefe_sorte) return mVater->neueBoolVariable(); if (mBoolNrBei == -1) { /* Grad kein Platz mehr fr Bools. Also neuen Platz erzeugen. */ mBoolNrBei = bits_pro_int * neueVariable(0,da_init); } int ret = mBoolNrBei; mBoolNrBei++; /* Ist das aktuelle int voll mit Bools? */ if (mBoolNrBei % bits_pro_int == 0) { mBoolNrBei = -1; } return ret; } int DefKnoten::getDatenLaenge() const { CASSERT(mTiefe == tiefe_level); return mVarNrBei; } /** Liefert den Default-Wert der Variable mit Nummer nr. Es muss aber eine richtige Variable sein, die echten Blop- Speicherplatz verbraucht. (Sonst soll man sich den Default- Wert aus der VarDefinition holen. Das hier ist nur fr Variablen-Anfangs-Initialisierung.) */ int DefKnoten::getDefaultWert(int nr) const { if (mVarNrBei<=nr) { CASSERT(mVater); return mVater->getDefaultWert(nr); } else return mDefaultWerte[nr]; } int DefKnoten::getDefaultArt(int nr) const { if (mVarNrBei<=nr) { CASSERT(mVater); return mVater->getDefaultArt(nr); } else return mDefaultArten[nr]; } /** Liest mSortenAnfaenge aus. Throwt bei Nichtexistenz. */ int DefKnoten::getSortenAnfang(const Str & schluessel) const { std::map::const_iterator i = mSortenAnfaenge.find(schluessel); CASSERT(i!=mSortenAnfaenge.end()); return i->second; } /** Liefert zurueck, wie viele Sortennummern insgesamt schon von mSortenAnfaenge belegt sind. */ int DefKnoten::getSortenAnzahl() const { std::map::const_iterator i; /* Anzahl der Sorten ermitteln Das ist die Summe der impliziten Listenlngen zu den anderen Schlsseln, die schon vorkamen. Und zwar in der korrekten, das heit globalen Version. Da wir die schon jetzt kennen, stellt VersionMap automatisch sicher, indem ein Aufruf von Bestapproximierende die VersionMap fr sptere Eintrge sperrt. */ /* Zu refaktorisieren: Eigentlich sollte man den Wert irgendwo zwischenspeichern statt ihn jedes mal neu auszurechnen... falls das moeglich ist, in Anbetracht der Versionierung. Damit kenne ich mich nicht aus. */ int anzahl = 0; for (i=mSortenAnfaenge.begin(); i!=mSortenAnfaenge.end(); i++) { CASSERT(mKinder.enthaelt(i->first)); Knoten* eintrag = mKinder.Bestapproximierende(i->first, ld->getVersion(), false); CASSERT(eintrag->type()==type_ListenKnoten); anzahl += ((ListenKnoten*) eintrag)->getImpliziteLaenge(); } return anzahl; } /*************************************************************************/ /* ListenKnoten */ ListenKnoten::ListenKnoten(Str datna, int znr): Knoten(datna, znr) {} ListenKnoten::~ListenKnoten() { for (int i = 0; i < (int) mKinder.size(); i++) delete(mKinder[i]); } Str ListenKnoten::toString() const { Str ret; bool mitte = false; for (int i = 0; i < (int) mKinder.size(); i++) { if (mitte) ret += ", "; mitte = true; ret += mKinder[i]->toString(); } return ret; } int ListenKnoten::getVielfachheit(int nr) const { DatenKnoten * k = (DatenKnoten *) (mKinder[nr]); CASSERT(k->type() == type_DatenKnoten); if (k->datatype()==type_VielfachheitDatum) return k->getZahl(); else return 1; } int ListenKnoten::getImpliziteLaenge() const { return getLaengeBis(getLaenge()); } int ListenKnoten::getLaengeBis(int nr) const { int ret=0; for (int i=0; itype() == type_DatenKnoten); return ((DatenKnoten *) k)->assert_datatype(solltyp); } const DatenKnoten * ListenKnoten::getKernDatum(int nr, int solltyp /*= type_EgalDatum*/) { const DatenKnoten * d = getDatum(nr); if (d->datatype() == type_VielfachheitDatum) d = ((VielfachheitKnoten *) d)->getNurDasWort(); return d->assert_datatype(solltyp); } const DatenKnoten * ListenKnoten::getImplizitesDatum(int nr, int solltyp /*= type_EgalDatum*/) { int nr_ = 0; int vielfachheit = getVielfachheit(0); while (nr>=vielfachheit) { nr -= vielfachheit; nr_++; vielfachheit = getVielfachheit(nr_); } return getKernDatum(nr_,solltyp); } /** Setzt voraus, da es nur einen Eintrag gibt. Gibt diesen Eintrag. */ const DatenKnoten * ListenKnoten::getEinzigesDatum(int solltyp /*= type_EgalDatum*/) { if (getImpliziteLaenge()!=1) throw Fehler("%s","Value is a list and should not."); return getDatum(solltyp); } /*************************************************************************/ /* DatenKnoten */ const DatenKnoten * DatenKnoten::assert_datatype(int solltyp) const { if ((solltyp != datatype()) && (solltyp!=type_EgalDatum)) { Str solltyp_Darstellung = ""; if (solltyp==type_WortDatum) solltyp_Darstellung = "string"; if (solltyp==type_ZahlDatum) solltyp_Darstellung = "int"; if (solltyp==type_VielfachheitDatum) solltyp_Darstellung = "string * int"; throw Fehler("%s is of wrong type. %s expected", toString().data(), solltyp_Darstellung.data()); } return this; } /*************************************************************************/ /* WortKnoten */ Str WortKnoten::getWort(int rolle /*= wortrolle_einziges*/) const { CASSERT(rolle==wortrolle_einziges); return mWort; } Str WortKnoten::toString() const { return mWort; } /*************************************************************************/ /* ZahlKnoten */ int ZahlKnoten::getZahl(int rolle /*= zahlrolle_einziges*/) const { CASSERT(rolle==zahlrolle_einzige); return mZahl; } Str ZahlKnoten::toString() const { return _sprintf("%d", mZahl); } /*************************************************************************/ /* VielfachheitKnoten */ int VielfachheitKnoten::getZahl(int rolle /*= zahlrolle_einzige*/) const { CASSERT(rolle==zahlrolle_einzige); return mZahl; } Str VielfachheitKnoten::getWort(int rolle /*= wortrolle_einziges*/) const { CASSERT(rolle==wortrolle_einziges); return mWort; } Str VielfachheitKnoten::toString() const { return _sprintf("%s * %d",mWort.data(),mZahl); } cuyo-2.1.0/src/blopgitter.h0000644000175000017500000001041512417277724012543 00000000000000/*************************************************************************** blopgitter.h - description ------------------- begin : Thu Jul 12 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef BLOPGITTER_H #define BLOPGITTER_H #include "blop.h" #include "blopbesitzer.h" #include "layout.h" class Spielfeld; /**Array, in dem die (festen) Blops eines Spielfelds gespeichert werden. *@author Immi */ class BlopGitter: public BlopBesitzer { public: /** re: true bei rechtem Spieler */ BlopGitter(bool re, Spielfeld * spf); ~BlopGitter(); /** Lscht alles */ void init(); /** Liefert true, wenn was am platzen ist */ bool getWasAmPlatzen() const; /** Animiert alle Blops. Innerhalb einer Gleichzeit aufrufen. Danach stehen in mNeuePunkte() evtl. Punkte, die der Spieler bekommen soll. */ void animiere(); /** Liefert ein Feldinhalt zurck */ const Blop & getFeld(int x, int y) const; /** Liefert ein Feldinhalt zurck */ Blop & getFeld(int x, int y); /** liefert true, wenn der Blob bei x, y sich mit b verbinden kann. */ bool getFeldVerbindbar(int x, int y, const Blop & b) const; /** liefert die Feldart bei x, y; (d. h. grau oder gras oder leer oder normaler Stein oder auerhalb vom Spielfeld). */ int getFeldArt(int x, int y) const; /** Testet das Verhalten des Blobs bei x,y. Liefert false, wenn es den Blob gar nicht gibt. */ bool getFeldVerhalten(int x, int y, int verhalten) const; /** verschiebt einen Blop (auch wenn er explodiert oder sonstwie grad animiert ist). */ //void verschiebBlop(int x1, int y1, int x2, int y2); /** liefert eine VerbindungsBitliste fr den Blop bei x, y. */ int getBesitzVerbindungen(int x, int y) const; /** liefert true, wenn (x,y) im Spielfeld liegt */ bool koordOK(int x, int y) const; /** liefert true, wenn an die Stelle (x,y) gemalt werden * kann: entweder, es liegt im Spielfeld, oder es ist * einer der Hexmodus-Rand-Blops. * Im Moment testen wir gar nicht, ob wir im Hexmodus * sind (und wenn ja, in einer geeigneten Spalte). Das * heit, dass ein bisschen Zeit verschwendet wird, wenn * Cual-Code an eine der gar nicht sichtbaren Stellen * malt. */ bool koordMalOK(int x, int y) const; /** Setzt, ob die Rberreihe existiert. */ void setRueberReihe(bool ex); /** Liefert die Anzahl der Zeilen zurck, d. h. normalerweise gry; aber wenn die Rbergebreihe existiert, dann eins mehr. */ int getGrY() const; /** Liefert true, wenn man mal wieder testen sollte, ob was platzt. Achtung: Das Flag wird bei diesem Aufruf gleich gelscht. */ bool getTestPlatz(); /** Liefert true, wenn (x, y) leer ist und das erste nichtleere darber schwebend ist. Wird von Fall bentigt. */ bool testPlatzSpalte(int x, int y); /** Sendet an alle Blops das connect-Event. */ void sendeConnectEvent(); virtual int getSpezConst(int vnr, const Blop *) const; protected: /** _die_ Spielfelddaten. Letzte Zeile fr die Rberreihe. */ Blop mDaten[grx][gry + 1]; /** Extra-Zeile nur-Bildstapel-Blops, fr den unteren Bereich im Hex-Modus. (Nur jeder zweite dieser Blops wird verwendet.) */ Blop mHexExtra[grx]; /** True, wenn mal wieder getestet werden sollte, ob was platzt. */ //bool mTestPlatz; /** Existiert die Rberreihe? */ bool mRueberReihe; /** Punkte, die whrend der Animationen angefallen sind */ //int mNeuePunkte; }; #endif cuyo-2.1.0/src/knoten.h0000644000175000017500000003124511705275772011672 00000000000000/*************************************************************************** knoten.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2005,2006,2008,2009,2011 by the cuyo developers Maintenance modifications 2012 by Bernhard R. Link Maintenance modifications 2012 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef KNOTEN_H #define KNOTEN_H #include #include #include "version.h" #include "fehler.h" #define type_egal 0 // wird von DatenDatei::getEintragKnoten() benutzt #define type_DefKnoten 1 #define type_ListenKnoten 2 #define type_DatenKnoten 3 #define type_EgalDatum 0 // wirft keinen Fehler beim Typecheck #define type_WortDatum 1 #define type_ZahlDatum 2 #define type_VielfachheitDatum 3 #define namespace_prozedur 0 #define namespace_variable 1 /* Die Tiefen der DefKnoten. */ #define tiefe_global 0 #define tiefe_level 1 #define tiefe_sorte 2 /* Die Rollen von Argumenten */ #define zahlrolle_einzige 0 #define wortrolle_einziges 0 class Code; class DatenKnoten; class Definition; /***********************************************************************/ /* Knoten */ /** Wenn die Level.descr geparst wird, wird das Ergebnis als ein Baum von Knoten gespeichert. Fr den Baum gilt (im Moment) folgendes: - Die Wurzel ist ein DefKnoten. - Kinder von DefKnoten sind DefKnoten oder ListenKnoten. - Kinder von ListenKnoten sind DatenKnoten. */ class Knoten { /** Datei, in der dieser Knoten definiert wurde (fr Fehlermeldungen) */ Str mDateiName; /** Zeilen-Nr, in der dieser Knoten definiert wurde (fr Fehlermeldungen) */ int mZeilenNr; public: Knoten(Str datna, int znr): mDateiName(datna), mZeilenNr(znr) {} virtual ~Knoten() {} virtual int type() const = 0; virtual Str toString() const = 0; /** Liefert einen String zurck, der angibt, wo dieser Code definiert wurde (fr Fehlermeldungen) */ Str getDefString() const; }; /***********************************************************************/ /* DefKnoten */ //typedef std::map tKnotenMap; typedef VersionMap tKnotenMap; typedef VersionMap tCodeSpeicher; /** Knoten der Form bla=... blub=... << bild=... gras=... >> Das was rechts von bla und blub steht, sind Kinder: Entweder DefKnoten oder ListenKnoten. Das, was in <<...>> steht, ist Code. (Neu: Code ist auch Knoten.) */ class DefKnoten: public Knoten { /** Die Knoten-Kinder dieses Knotens */ tKnotenMap mKinder; /** Die Code-"Kinder" dieses Knotens */ tCodeSpeicher mCodeSpeicher[2]; /** Wenn man von hier aus im Baum nach oben luft der nchste DefKnoten, den man trifft. (Wird bentigt, um auf den CodeSpeicher vom Vater zuzufreifen.) */ DefKnoten * mVater; /** 0 bei der Wurzel, 1 bei Kindern der Wurzel (Level-DefKnoten), etc. */ int mTiefe; /** Nur fr den Top-Knoten: 1, wenn schon eine Level-Defintion gespeichert ist. Wenn danach noch Cual-Code kommt, wird eine Warnung ausgeben. 3, wenn die Warnung schon ausgegeben wurde. */ int mErstLevelDannCual; /** Variablen werden intern durchnummeriert. Hier steht die nchste freie Nummer (bzw. die Anzahl der belegten Nummern). Bei Sorten-Defknoten sind diese Variablen nicht von Bedeutung; um die Nummerierung der Sorten-Variablen kmmert sich auch der Level-DefKnoten. So hat intern jede Sorte alle Variablen. (Die Variablen-Definitionen stehen allerdings trotzdem im Code-Speicher der Sorten, so dass die Sortenvariablen-Namespace getrennt ist. berblick ber die ganzen Spezial-Variablen-Nummern siehe definition.h, bei class VarDefinition. */ int mVarNrBei; /** Nummer der nchsten freien Bool-Variable. -1, wenn's grad keine freien Bool-Variablen gibt. */ int mBoolNrBei; /** Die Default-Werte der Variablen, nochmal nach Nummer aufgelistet. Wird von den Blops bentigt, wenn die Variablen am Anfang initialisiert werden. Allerdings nur Default-Werte von echten Variablen (d. h. von Variablen, die Speicher belegen.) */ std::vector mDefaultWerte; std::vector mDefaultArten; /** Wenn dieser Knoten VarDefinitionen fr Sortennamen verwalten soll, mu er sich merken, fr welche Sortenliste er bei welcher Nummer angefangen hat. Das ist mit den jeweiligen bloparten indiziert. */ std::map mSortenAnfaenge; public: /** Erzeugt den Top-Knoten. */ DefKnoten(); /** Erzeugt einen Unter-Knoten. */ DefKnoten(Str datna, int znr, DefKnoten * vater); virtual ~DefKnoten(); virtual int type() const {return type_DefKnoten;} virtual Str toString() const; void fuegeEin(const Str & na, const Version & version, Knoten * wert); /** Lscht alle Kinder raus, die DefKnoten sind und nicht "Title" heien. Wird von LevelDaten::ladLevelSummary() gebraucht. */ void loeschAlleLevel(); bool enthaelt(Str na) {return mKinder.enthaelt(na);} Knoten * getKind(const Str & na, const Version & version, bool defaultVorhanden) { return mKinder.Bestapproximierende(na,version,defaultVorhanden); } /***** Methoden fr den Codespeicher *****/ /** Speichert alle vordefinierten Variablen in den Namespace, auer die pics-Konstanten. Wird vom Constructor des WurzelKnotens aufgerufen. */ void speicherGlobaleVordefinierte(); /** Speichert die Pics-Konstanten. (picsliste sollte der pics-Knoten sein.) Wird von fuegeEin(...) aufgerufen, wenn es die pics bekommt. Alternativ auch bei greypic und startpic. Welches davon steht in schluessel */ void speicherPicsConst(const Version & version, Knoten * picsliste, const char* schluessel); /** Speichert eine Konstante mit dem Namen, der in nameKnoten steht und dem angegebenen Wert. nameKnoten ist hoffentlich ein ListenKnoten mit genau einem Eintrag. Wird von fuegeEin() aufgerufen, um die Gras-, die Grau- und die nix-Konstante abzuspeichern, wenn es die bekommt. */ void speicherKnotenConst(const Version & version, Knoten * nameKnoten, int wert); /* Erzeugt eine neue Var-Definition und speichert sie ab. Dabei bekommt sie auch gleich eine Nummer. (Aufzurufen, wenn eine VarDefinition geparst wurde.) def ist der Default-Wert. */ void neueVarDefinition(const Str & na, const Version& version, int def, int defart); /* Speichert eine neue Definition - Code oder Variable. Noch unschn: Sollte von auen nur fr Code aufgerufen werden. Bei Variablen immer neueVarDefinition verwenden! */ void speicherDefinition(int ns, const Str & na, const Version & version, Definition * f); /** Liefert eine Code-Definition aus diesem Speicher oder von weiter oben. Throwt bei nichtexistenz. Achtung: Behlt den Besitz an der Defintion. */ Definition * getDefinition(int ns, const Str & na, const Version & version, bool defaultVorhanden); /** Liefert ein Kind von hier oder von weiter oben. */ Knoten * getVerwandten(const Str & na, const Version & version, bool defaultVorhanden); /***** Variablen-Nummern-Verwaltung *****/ /** Erzeugt eine unbenannte Variable und liefert die Nummer zurck. def wird als default-Wert in mDefaultWerte gespeichert. */ int neueVariable(int def, int defart); void neuerDefault(int var, int def, int defart); /** Erzeugt eine unbenannte Bool-Variable und liefert die Nummer zurck. */ int neueBoolVariable(); /** Liefert zurck, wie viel Speicher fr Variablen jeder Blop reservieren muss. Nur auf Level-Ebene aufrufen. */ int getDatenLaenge() const; /** Liefert den Default-Wert der Variable mit Nummer nr. Es muss aber eine richtige Variable sein, die echten Blop- Speicherplatz verbraucht. (Sonst soll man sich den Default- Wert aus der VarDefinition holen. Das hier ist nur fr Variablen-Anfangs-Initialisierung.) */ int getDefaultWert(int nr) const; int getDefaultArt(int nr) const; /** Liest mSortenAnfaenge aus. Throwt bei Nichtexistenz. Nimmt den entsprechenden ld-Eintrag wie "pics" als Index. */ int getSortenAnfang(const Str &) const; /** Liefert zurueck, wie viele Sortennummern insgesamt schon von mSortenAnfaenge belegt sind. */ int getSortenAnzahl() const; }; /***********************************************************************/ /* ListenKnoten */ typedef std::vector tKnotenListe; /** Knoten der Form bla1, bla2, bla3. Kinder sind DatenKnoten. */ class ListenKnoten: public Knoten { tKnotenListe mKinder; public: ListenKnoten(Str datna, int znr); ~ListenKnoten(); virtual int type() const {return type_ListenKnoten;} virtual Str toString() const; void fuegeEin(Knoten * wert) { mKinder.push_back(wert); } int getVielfachheit(int nr) const; int getLaenge() const { return mKinder.size(); } /** Dies rechnet Vielfachheiten mit ein */ int getImpliziteLaenge() const; /** Dies auch, geht aber nur bis zum physischen Index nr. Somit gilt: getKernDatum(i) == getImplizitesDatum(getLaengeBis(i)) */ int getLaengeBis(int nr) const; Knoten * getKind(int nr) { return mKinder[nr]; } const DatenKnoten * getDatum(int nr, int solltyp = type_EgalDatum); /** Dies wirft Vielfachheiten bei der Ausgabe weg */ const DatenKnoten * getKernDatum(int nr, int solltyp = type_EgalDatum); /** Dies rechnet Vielfachheiten beim Index mit ein */ const DatenKnoten * getImplizitesDatum(int nr, int solltyp = type_EgalDatum); /** Setzt voraus, da es nur einen Eintrag gibt. Gibt diesen Eintrag. */ const DatenKnoten * getEinzigesDatum(int solltyp = type_EgalDatum); }; /***********************************************************************/ /* DatenKnoten */ /** Enthlt echte Daten und nicht blo weitere Knoten */ class DatenKnoten: public Knoten { public: DatenKnoten(Str datna, int znr): Knoten(datna, znr) {} virtual int type() const {return type_DatenKnoten;} virtual int datatype() const = 0; /** liefert sich selbst zurck, damit man keinen namespace verschwendet */ const DatenKnoten * assert_datatype(int) const; virtual int getZahl(int /* rolle */ = zahlrolle_einzige) const { CASSERT(false);} virtual Str getWort(int /* rolle */ = wortrolle_einziges) const { CASSERT(false);} }; /***********************************************************************/ /* WortKnoten */ /** Ein Wort-Knoten. "bla" oder bla. */ class WortKnoten: public DatenKnoten { Str mWort; public: WortKnoten(Str datna, int znr, Str w): DatenKnoten(datna, znr), mWort(w) {} virtual int datatype() const {return type_WortDatum;} virtual Str getWort(int rolle = wortrolle_einziges) const; virtual Str toString() const; }; /***********************************************************************/ /* ZahlKnoten */ /** Enthlt eine Zahl */ class ZahlKnoten: public DatenKnoten { int mZahl; public: ZahlKnoten(Str datna, int znr, int z): DatenKnoten(datna, znr), mZahl(z) {} virtual int datatype() const {return type_ZahlDatum;} virtual int getZahl(int rolle = zahlrolle_einzige) const; virtual Str toString() const; }; /***********************************************************************/ /* VielfachheitKnoten */ /** Enthlt ein Wort und eine Vielfachheit des Wortes. */ class VielfachheitKnoten: public DatenKnoten { Str mWort; int mZahl; WortKnoten mNurDasWort; public: VielfachheitKnoten(Str datna, int znr, Str w, int z): DatenKnoten(datna, znr), mWort(w), mZahl(z), mNurDasWort(datna,znr,w) {} virtual int datatype() const {return type_VielfachheitDatum;} virtual int getZahl(int rolle = zahlrolle_einzige) const; virtual Str getWort(int rolle = wortrolle_einziges) const; virtual const WortKnoten * getNurDasWort() const {return & mNurDasWort;} virtual Str toString() const; }; #endif cuyo-2.1.0/src/punktefeld.h0000644000175000017500000000374311674440320012523 00000000000000/*************************************************************************** punktefeld.h - description ------------------- begin : Wed Jul 12 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PUNKTEFELD_H #define PUNKTEFELD_H #include #include "bilddatei.h" /** Zeigt die Punkte eines Spielers hbsch an. Achtung: Erst _nach_ ld-Datei-Laden erzeugen. (Weil erst dann die ntigen Bildchen geladen werden.) */ class Punktefeld { public: Punktefeld(); void setPunkte(int p); void zwinkerSchritt(); /* Malt, falls noetig, die Punkte neu */ void updateGraphik(bool force = false); private: int mPunkte; int mAugenZu; /** Der normale Zufallsgenerator darf (im Moment) nicht verwendet werden, weil sonst das log-Zeugs durcheinander kommt. Schade eigentlich. Dann machen wir uns halt unseren eigenen. */ static unsigned int gRandSeed; /** True, wenn sich was gendert hat, d. h. wenn der Bildschirminhalt nicht aktuell ist */ bool mUpdateNoetig; static Bilddatei * gZiffernBild[2]; public: static void init(); static void destroy(); }; #endif cuyo-2.1.0/src/code.cpp0000644000175000017500000004141412400104762011617 00000000000000/*************************************************************************** code.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of thef License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cuyointl.h" #include "global.h" #include "code.h" #include "variable.h" #include "fehler.h" #include "blop.h" #include "knoten.h" #include "aufnahme.h" #include "ort.h" #include "sound.h" #include "cuyo.h" //tCodeSpeicher Code::gCodeSpeicher; /* Die ganzen (normalen) Konstruktoren brauchen alle ein paar Standard- Parameter, die ich nicht jedes mal tippen will... */ #define STDPAR DefKnoten * knoten, Str datna, int znr, CodeArt art #define STDINIT \ mArt(art), \ mBool1Nr(art == folge_code || art == bedingung_code ? \ knoten->neueBoolVariable() : -1), \ mBool2Nr(art == bedingung_code ? \ knoten->neueBoolVariable() : -1), \ mDateiName(datna), \ mZeilenNr(znr) Code::Code(STDPAR): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(0), mVar2(0), mOrt(0) { } Code::Code(STDPAR, int zahl, int zahl2 /* = 0 */, int zahl3 /* = 0 */): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(0), mVar2(0), mZahl(zahl), mZahl2(zahl2), mZahl3(zahl3), mOrt(0) { } Code::Code(STDPAR, Variable * v1): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(v1), mVar2(0), mOrt(0) { } Code::Code(STDPAR, Variable * v1, Variable * v2): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(v1), mVar2(v2), mOrt(0) { } Code::Code(STDPAR, Variable * v1, int zahl): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(v1), mVar2(0), mZahl(zahl), mOrt(0) { } Code::Code(STDPAR, Code * f1, Variable * v1): STDINIT, mF1(f1), mF2(0), mF3(0), mVar1(v1), mVar2(0), mOrt(0) { } Code::Code(STDPAR, Code * f1, Code * f2 /* =0 */, Code * f3 /* =0 */, int zahl /* = 0 */): STDINIT, mF1(f1), mF2(f2), mF3(f3), mVar1(0), mVar2(0), mZahl(zahl), mOrt(0) { } Code::Code(STDPAR, Code * f1, Code * f2, Variable * v1): STDINIT, mF1(f1), mF2(f2), mF3(0), mVar1(v1), mVar2(0), mOrt(0) { } Code::Code(STDPAR, Ort * ort, int zahl /* = 0*/): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(0), mVar2(0), mZahl(zahl),mOrt(ort) { } Code::Code(STDPAR, Str str): STDINIT, mF1(0), mF2(0), mF3(0), mVar1(0), mVar2(0), mString(str), mOrt(0) { } #undef STDPAR #undef STDINIT Code::Code(DefKnoten * knoten, const Code & f, bool neueBusyNummern): Definition() { kopiere(knoten, f, neueBusyNummern); } void Code::deepLoesch() { if (mF1) delete mF1; if (mF2) delete mF2; if (mF3) delete mF3; if (mVar1) delete mVar1; if (mVar2) delete mVar2; if (mOrt) delete mOrt; } void Code::kopiere(DefKnoten * knoten, const Code & f, bool neueBusyNummern) { mArt = f.mArt; mDateiName = f.mDateiName; mZeilenNr = f.mZeilenNr; if (f.mF1) mF1 = new Code(knoten, *f.mF1, neueBusyNummern); else mF1 = 0; if (f.mF2) mF2 = new Code(knoten, *f.mF2, neueBusyNummern); else mF2 = 0; if (f.mF3) mF3 = new Code(knoten, *f.mF3, neueBusyNummern); else mF3 = 0; if (f.mVar1) mVar1 = new Variable(*f.mVar1); else mVar1 = 0; if (f.mVar2) mVar2 = new Variable(*f.mVar2); else mVar2 = 0; mZahl = f.mZahl; mZahl2 = f.mZahl2; mZahl3 = f.mZahl3; mString = f.mString; if (f.mOrt) mOrt = new Ort(knoten, *f.mOrt, neueBusyNummern); else mOrt = 0; mBool1Nr = f.mBool1Nr; mBool2Nr = f.mBool2Nr; if (neueBusyNummern) { if (mBool1Nr != -1) mBool1Nr = knoten->neueBoolVariable(); if (mBool2Nr != -1) mBool2Nr = knoten->neueBoolVariable(); } } /** Liefert einen String zurck, der angibt, wo dieser Code definiert wurde (fr Fehlermeldungen) */ Str Code::getDefString() const { return _sprintf("%s:%d", mDateiName.data(), mZeilenNr); } /** Liefert zurck, wie viele Bilder dieser Code hchstens gleichzeitig malt. Dabei wird (im Moment) der Einfachheit halber davon ausgegangen, dass Ausdrcke nix malen knnen; dementsprechend darf getStapelHoehe() dafr auch nicht aufgerufen werden. nsh wird um die Anzahl der Nachbarstapel-Malungen erhht. */ int Code::getStapelHoehe(int & nsh) const { switch (mArt) { case weiterleit_code: return mF1->getStapelHoehe(nsh); case stapel_code: return mF1->getStapelHoehe(nsh) + mF2->getStapelHoehe(nsh); case push_code: return mF2->getStapelHoehe(nsh); case set_code: case add_code: case sub_code: case mul_code: case div_code: case mod_code: case nop_code: case busy_code: case buchstabe_code: case zahl_code: case bonus_code: case message_code: case explode_code: case sound_code: case verlier_code: case bitset_code: case bitunset_code: return 0; case mal_code: return 1; case mal_code_fremd: nsh++; return 0; case folge_code: { int a1 = mF1->getStapelHoehe(nsh); int a2 = mF2->getStapelHoehe(nsh); return a1 > a2 ? a1 : a2; } case bedingung_code: { int a2 = mF2->getStapelHoehe(nsh); int a3 = mF3->getStapelHoehe(nsh); return a2 > a3 ? a2 : a3; } /* Fr die ganzen Ausdruck-Codes darf getStapelHoehe() nicht aufgerufen werden. */ case variable_acode: case zahl_acode: case manchmal_acode: case nachbar_acode: case intervall_acode: case und_acode: case oder_acode: case not_acode: case rnd_acode: case add_acode: case sub_acode: case mul_acode: case div_acode: case mod_acode: case neg_acode: case eq_acode: case ne_acode: case gt_acode: case lt_acode: case ge_acode: case le_acode: case ggt_acode: case bitand_acode: case bitor_acode: //case bitset_acode: case bitunset_acode: case bittest_acode: case undefiniert_code: /* TRANSLATORS: "Code", "getStapelHoehe", and "CodeArt" are programming keywords that should not be translated. The %s describes, which part of a program triggered the error. */ throw iFehler("%s: Internal error in Code::getStapelHoehe(): Call illegal for CodeArt %d", getDefString().data(), mArt); } /* *Kein* default im case verwenden; so erhaelt man gleich beim Compilieren eine Warnung, wenn man vergessen hat, eine neue CodeArt hier anzugeben */ /* TRANSLATORS: "Code", "getStapelHoehe", and "CodeArt" are programming keywords that should not be translated. The %s describes, which part of a program triggered the error. */ throw iFehler("%s: Internal error in Code::getStapelHoehe(): Unknown CodeArt %d", getDefString().data(), mArt); } /** Fuehrt diesen Code aus auf den Variablen von Blop b. In busy wird zurueckgeliefert, ob dieser Code gerade Busy ist */ int Code::eval(Blop & b, bool & busy) const { /* Fehlermeldung verbessern */ try { busy = false; bool busy1; switch (mArt) { case weiterleit_code: mF1->eval(b, busy); return 0; case stapel_code: mF1->eval(b, busy); mF2->eval(b, busy1); busy |= busy1; return 0; case push_code: { int merk = b.getVariable(*mVar1); b.setVariable(*mVar1, mF1->eval(b), set_code); mF2->eval(b, busy); b.setVariable(*mVar1, merk, set_code); return 0; } case set_code: case add_code: case sub_code: case mul_code: case div_code: case mod_code: case bitset_code: case bitunset_code: { int w; w = mF1->eval(b); if (mArt == div_code && w == 0) throw Fehler("%s","Division by zero"); if (mArt == mod_code && w == 0) throw Fehler("%s","Modulo zero"); /* setVariable() entscheidet anhand von mArt, was zu tun ist. Insbesondere wird die Operation vielleicht erst in der Zukunft ausgefhrt. */ b.setVariable(*mVar1, w, mArt); return 0; } case mal_code: b.speichereBild(); return 0; case mal_code_fremd: b.speichereBildFremd(*mOrt, mZahl); return 0; case nop_code: return 0; case busy_code: busy = true; return 0; case folge_code: { /* Ablauf einer Folge: - bool1 <=> Kind2 ausfuehren (sonst Kind1) - Wenn das kind busy ist, busy zurueckliefern und fertig. Sonst: - bool1 wechseln. busy zurueckliefern <=> Wechsel 1->2 (Alte Version:) A - Wenn niemand beschftigt ist (weder ich noch Kinder), dann fngt die Folge frisch an => Kind1, selbst auf beschftigt schalten B - Wenn ich beschftigt bin, schaue ob Kind1 beschftigt. C - Wenn ja, sind wir noch in der Kind1 Folge => Kind1 D - Wenn nein, sind wir mit Kind1 fertig => Kind2 Auerdem selbst auf unbeschftigt schalten, wenn Kind2 fertig ist (also auf unbeschftigt geschaltet hat) - Wenn ich selbst unbeschftigt bin, aber ein Kind, ist irgend was schiefgelaufen. Das kann eigentlich noch nicht mal durch Programm- unterbrechung passieren. */ bool kind2dran = b.getBoolVariable(mBool1Nr); if (kind2dran) mF2->eval(b, busy1); else mF1->eval(b, busy1); if (busy1) { busy = true; } else { kind2dran = !kind2dran; busy = kind2dran; b.setBoolVariable(mBool1Nr, kind2dran); } return 0; } case buchstabe_code: { b.setVariable(spezvar_pos, mZahl, set_code); return 0; } case zahl_code: { b.setVariable(spezvar_file, mZahl, set_code); return 0; } case bedingung_code: { /* Funktionsweise von switch { bed_1 pfeil_1 code_1; bed_2 pfeil_2 code_2; ... } - bool1 gibt an, ob beim letzten mal Ast 1 ausgefuehrt wurde und der Ast busy war - bool2 entsprechend fuer Ast 2 - Wenn eins davon wahr ist und der entsprechende Ast ein "=>" hat, Ast nochmal waehlen, sonst if-Bedingung checken - Wenn eins wahr ist (aber der Ast kein "=>" hat) und jetzt nicht nochmal ausgefuehrt wird, dann busy-Reset senden - Ich selbst bin busy, falls der ausgefuehrte Ast busy ist und "=>" hat */ bool vast1 = b.getBoolVariable(mBool1Nr); bool vast2 = b.getBoolVariable(mBool2Nr); bool wahl1; if (vast1 && (mZahl & 1)) { wahl1 = true; } else if (vast2 && (mZahl & 2)) { wahl1 = false; } else wahl1 = mF1->eval(b); if (vast1 && !wahl1) mF2->busyReset(b); if (vast2 && wahl1) mF3->busyReset(b); if (wahl1) { mF2->eval(b, busy); b.setBoolVariable(mBool1Nr, busy); b.setBoolVariable(mBool2Nr, false); busy &= !!(mZahl & 1); } else { mF3->eval(b, busy); b.setBoolVariable(mBool1Nr, false); b.setBoolVariable(mBool2Nr, busy); busy &= !!(mZahl & 2); } return 0; } case bonus_code: { b.bekommPunkte(mF1->eval(b)); return 0; } case message_code: { b.zeigMessage(mString); return 0; } case explode_code: { if (b.getSpezConst(spezconst_falling)) { if (gDebug) print_to_stderr("Warning: Can't use 'explode' in falling blob.\n"); } else b.lassPlatzen(); return 0; } case sound_code: { b.playSample(mZahl); return 0; } case verlier_code: { Cuyo::spielerTot(); return 0; } /***** Ab hier: Ausdruck-Codes *****/ case zahl_acode: { return mZahl; } case variable_acode: { return b.getVariable(*mVar1); } case manchmal_acode: { int ret = mF2->eval(b); if (ret == 0) throw Fehler("%s","Probability x:0 in the animation program"); /* Vermutlich sollte auch "long" oder so statt double gehen; aber ich bin mir grad nicht ganz sicher, ob long wirklich immer long genug ist. */ ret = Aufnahme::rnd(ret) < mF1->eval(b); return ret; } case nachbar_acode: { return (b.getVariable(spezconst_connect) & mZahl) == mZahl2; } case eq_acode: { return mF1->eval(b) == mF2->eval(b); } case ne_acode: { return mF1->eval(b) != mF2->eval(b); } case gt_acode: { return mF1->eval(b) > mF2->eval(b); } case lt_acode: { return mF1->eval(b) < mF2->eval(b); } case ge_acode: { return mF1->eval(b) >= mF2->eval(b); } case le_acode: { return mF1->eval(b) <= mF2->eval(b); } case not_acode: { return ! mF1->eval(b); } case rnd_acode: { int w = mF1->eval(b); if (w <= 0) throw Fehler("%s","rnd(<=0) in the animation program"); return Aufnahme::rnd(w); } case und_acode: { return mF1->eval(b) && mF2->eval(b); } case oder_acode: { return mF1->eval(b) || mF2->eval(b); } case add_acode: { return mF1->eval(b) + mF2->eval(b); } case sub_acode: { return mF1->eval(b) - mF2->eval(b); } case mul_acode: { return mF1->eval(b) * mF2->eval(b); } case div_acode: { int ret = mF2->eval(b); if (ret == 0) throw Fehler("%s","Division by zero"); ret = divv(mF1->eval(b), ret); return ret; } case mod_acode: { int ret = mF2->eval(b); if (ret == 0) throw Fehler("%s","Modulo zero"); ret = modd(mF1->eval(b), ret); return ret; } case neg_acode: { return -mF1->eval(b); } case intervall_acode: { int z1 = mF1->eval(b); int z2 = mF2->eval(b); int z3 = mF3->eval(b); return (z1 >= z2 && z1 <= z3); } case ggt_acode: { int a_ = mF1->eval(b); int b_ = mF2->eval(b); while (b_!=0) { int c_ = a_%b_; a_=b_; b_=c_; } return a_; } case bitand_acode: { return mF1->eval(b) & mF2->eval(b); } //case bitset_acode: case bitor_acode: { return mF1->eval(b) | mF2->eval(b); } case bitunset_acode: { return mF1->eval(b) & (-1 - mF2->eval(b)); } case bittest_acode: { return (mF1->eval(b) & mF2->eval(b)) != 0; } case undefiniert_code: throw iFehler("%s","Internal error in Code::eval(): CodeArt undefined_code"); break; } /* Kein default im switch; so erhaelt man gleich beim Compilieren eine Warnung, wenn man vergisst, eine Codeart hier anzugeben. */ throw iFehler("Internal error in Code::eval(): Unknown CodeArt %d", mArt); } catch (Fehler fe) { /* Fehlermeldung verbessern */ if (!fe.mMitZeile) { Fehler f2 = Fehler("%s: %s", getDefString().data(), fe.getText().data()); f2.mMitZeile = true; throw f2; } else throw fe; } } /* Dito, wenn man an-busieness nicht interessiert ist */ int Code::eval(Blop & b) const { bool muell; return eval(b, muell); } /** Resettet den Busy-Status von diesem Baum. Ist etwas ineffizient: eigentlich braeuchte nicht so ein grosser Teil des Baums abgelaufen zu werden. Vielleicht sollte ein Code wissen, ob es unter ihm nix gibt mit busy-Status. */ void Code::busyReset(Blop & b) const { /* Ausdruck-Codes brauchen keinen busy-reset */ if (mArt >= erster_acode) return; switch (mArt) { case folge_code: b.setBoolVariable(mBool1Nr, false); // kind2dran = false break; case bedingung_code: b.setBoolVariable(mBool1Nr, false); // Kein Ast hat grad Ausfuehrung b.setBoolVariable(mBool2Nr, false); // fuer sich reserviert break; default:; } if (mF1) mF1->busyReset(b); if (mF2) mF2->busyReset(b); if (mF3) mF3->busyReset(b); } /************************************************************************/ /** Erzeugt einen Code, der prft, ob es die gewnschten Nachbarn gibt (aus "01?"-String). Der "01?"-String kann Lnge 6 oder 8 haben. */ Code * newNachbarCode(DefKnoten * knoten, Str datna, int znr, Str * str) { /* Getestet wird nachher: x & z1 == z2 */ int l = str->length(); CASSERT(l == 6 || l == 8); int z1 = 0, z2 = 0; int bit = 1; for (int i = 0; i < l; i++) { if ((*str)[i] != '?') z1 |= bit; if ((*str)[i] == '1') z2 |= bit; bit *= 2; /* Wenn die Lnge 6 ist, dann intern noch Fragezeichen fr die waagrechten Richtungen einfgen (nach den Hex-Zeichen 1 und 4). */ if (l == 6 && (i == 1 || i == 4)) bit *= 2; } delete str; return new Code(knoten, datna, znr, nachbar_acode, z1, z2); } cuyo-2.1.0/src/fall.cpp0000644000175000017500000004506012410640314011623 00000000000000/*************************************************************************** fall.cpp - description ------------------- begin : Sat Aug 18 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "fall.h" #include "spielfeld.h" #include "aufnahme.h" #include "fehler.h" #include "sound.h" #include "layout.h" /* Anzahl der Pixel: Verschiebung einen Blops beim drehen... */ #define am_drehen_schieb_gross 28 /* gric * cos(30 Grad) */ #define am_drehen_schieb_klein 16 /* gric * sin(30 Grad) */ /* Anz. d. angezeigten Zwischenbildchen beim Drehen. (Das erste Zwischenbild sieht man allerdings nicht...) */ #define am_drehen_start 3 /* Animation des naechsten Falls, wenn es frisch erzeugt wird. */ #define am_erzeugen_start (-3 * (gric / 4)) #define am_erzeugen_dy (gric / 4) /* Anzahl der Pixel: Verschiebung des Falls beim verschieben... */ #define am_schieben_diff 8 /* Restverschiebung direkt nach dem Tastendruck. (Das erste Zwischenbild sieht man allerdings nicht...) */ #define am_schieben_start 16 /* Return-Werte fr testBelegt() */ #define belegt_keins 0 #define belegt_0 1 #define belegt_1 2 #define belegt_beide (belegt_0 | belegt_1) /***************************************************************************/ /** Liefert die Anzahl der Blops vom Fall zurck. */ int FallPos::getAnz() const { switch (r) { case richtung_keins: return 0; case richtung_einzel: return 1; default: return 2; // waag / senk / unplatziert } } int FallPos::getX(int a) const { return x + a * (r == richtung_waag || r == richtung_unplatziert); } int FallPos::getY(int a, const Spielfeld * spf) const { int y0 = yy + gric - 1 + spf->getHochVerschiebung(); /* Bei unplatzierten blops ist yy die Koord relativ zur ins-Spiel-Komm-Position */ if (r == richtung_unplatziert) y0 += spf->getHetzrandYPix() - gric; /* Korrektur bei jeder zweiten Spalte im Sechseck-Modus... */ if (spf->getHexShift(getX(a))) y0 += gric / 2; return y0 / gric + a * (r == richtung_senk); } /***************************************************************************/ /** Konstruktor... */ Fall::Fall(Spielfeld * sp, bool re): BlopBesitzer(sp), mRechterSpieler(re), mRectW(0), mRectH(0) { mBlop[0].setBesitzer(this, ort_absolut(absort_fall, re, 0)); mBlop[1].setBesitzer(this, ort_absolut(absort_fall, re, 1)); } /** Mu einmal aufgerufen werden */ void Fall::initialisiere() { /* Initialisiert werden mssen sie schon, bevor sich jemand bequemt, erzeug() aufzurufen: Mit @0 und @1 kann drauf zugegriffen werden. Nur halt noch nicht sinnvoll */ mBlop[0] = Blop(blopart_keins); mBlop[1] = Blop(blopart_keins); mPos.r = richtung_keins; } /** Erzeugt ein neues Fall, der sich noch nicht im Spielfeld befindet. Bei reinkommen = true kommt das Fall ins Preview-Feld reingerutscht. Sonst ist es sofort da (fr Spielanfang) */ void Fall::erzeug(bool reinkommen /* = true*/) { mBlop[0].setBesitzer(this, ort_absolut(absort_fall, mRechterSpieler, 0, 1)); mBlop[1].setBesitzer(this, ort_absolut(absort_fall, mRechterSpieler, 1, 1)); CASSERT(mPos.r == richtung_keins); for (int i=0; i<2; i++) mBlop[i]=ld->zufallsSorte(wv_farbe); mPos.r = richtung_unplatziert; mExtraDreh = 0; mExtraX = 0; mSchnell = false; if (ld->mFallPosZufaellig) mPos.x = Aufnahme::rnd(grx-1); else mPos.x = grx / 2 - 1; mPos.yy = reinkommen ? am_erzeugen_start : 0; } /** Bringt ein Fall ins Spiel, d.h. setzt die Koordinaten. Liefert false, wenn dafr kein Platz ist */ bool Fall::insSpiel() { mBlop[0].setBesitzer(this, ort_absolut(absort_fall, mRechterSpieler, 0, 0)); mBlop[1].setBesitzer(this, ort_absolut(absort_fall, mRechterSpieler, 1, 0)); CASSERT(mPos.r == richtung_unplatziert); /* mPos.x wurde schon beim erzeugen festgelegt */ mPos.yy = mSpf->getHetzrandYPix() - gric; mPos.r = richtung_waag; /* Platz? */ if (testBelegt(mPos)) { /* Kein Platz, also wieder zerstren */ mPos.r = richtung_keins; return false; } /* Ich hab die folgende Zeile mal hier eingefgt. Ich denke, es war ein Bug, dass die da nicht war. -Immi (2014) */ calcFallRect(); return true; } /** Liefert true, wenn das Fallende senkrecht ist */ bool Fall::istSenkrecht() const { CASSERT(mPos.r == richtung_waag || mPos.r == richtung_senk); return mPos.r == richtung_senk; } /** Lsst nur noch Blop a brig */ void Fall::halbiere(int a) { CASSERT(mPos.r == richtung_waag); CASSERT(a == 0 || a == 1); mPos.x += a; mPos.r = richtung_einzel; mExtraDreh = 0; mExtraX = 0; } /** Entfernt das Fall ganz */ void Fall::zerstoere() { mPos.r = richtung_keins; } /** Fuer platzierte Falls: Macht alles von spielSchritt ausser Grafik-Update markieren */ void Fall::spielSchrittPlatziertIntern() { /* Wenn der Stein von einem frheren Tastendruck noch nicht fertig gedreht ist, dann weiterdrehen */ if (mExtraDreh > 0) mExtraDreh--; /* Wenn der Stein noch nicht fertig X-verschoben ist, dann jetzt fertig X-verschieben */ if (mExtraX > 0) mExtraX -= am_schieben_diff; if (mExtraX < 0) mExtraX += am_schieben_diff; /* Wenn am Platzen, dann nicht mehr nach unten bewegen */ if (getAmPlatzen()) return; /* Neue y-Koordinate... */ FallPos fp2 = mPos; if (mSchnell || mPos.r == richtung_einzel) fp2.yy += mSpf->getSemiglobal().getVariable(spezvar_falling_fast_speed); else fp2.yy += mSpf->getSemiglobal().getVariable(spezvar_falling_speed); /* Geschwindigkeit knnte ja negativ sein. Also clippen. */ if (fp2.yy < mSpf->getHetzrandYPix() - gric) fp2.yy = mSpf->getHetzrandYPix() - gric; /* Gibt's Platz um weiterzufallen? */ int beleg = testBelegt(fp2); if (!beleg) { mPos = fp2; return; } /* OK, wir kommen irgendwo auf. */ playSample(sample_land); /* Einzelblop? */ if (mPos.r == richtung_einzel) { Blop * b1 = festige(0); if (b1) b1->scheduleEvent(event_land); zerstoere(); return; } /* Senkrecht? */ if (istSenkrecht()) { /* Wichtig: Erst den unteren Blop festigen; es knnte sein, dass die Blops weiter oben gefestigt werden mssen, als geplant (wg. Hochverschiebung oder sogar wegen richtiger Spielfeldnderung am Ende von einer Zeilen- bergabe)... */ Blop * b1 = festige(1); Blop * b0 = festige(0); if (b1) b1->scheduleEvent(event_land); if (b0) b0->scheduleEvent(event_land); zerstoere(); return; } /* OK, waagrecht. Welche Teile? */ //Blop::beginGleichzeitig(); Blop * b0 = 0, * b1 = 0; if (beleg & belegt_0) b0 = festige(0); if (beleg & belegt_1) b1 = festige(1); if (b0) b0->scheduleEvent(event_land); if (b1) b1->scheduleEvent(event_land); //Blop::endGleichzeitig(); /* Beide Hlften aufgekommen? */ if (beleg == belegt_beide) { zerstoere(); return; } /* Nur eine Hlfte aufgekommen. */ mPos = fp2; if (beleg == belegt_0) { // linke Hlfte aufgekommen => // briges rechtes nach links schieben mBlop[0] = mBlop[1]; } /* Nur noch die Hlfte vom Fall ist brig; wenn das linke fest ist, dann die rechte Hlfte. */ halbiere(beleg == belegt_0); } // spielSchrittIntern /** Bewegt das Fall ggf. nach unten und animiert es ggf. */ void Fall::spielSchritt() { if (mPos.r == richtung_keins) { /* Bei nicht-Existenz nichts tun. */ } else if (mPos.r == richtung_unplatziert) { if (mPos.yy < 0) { mPos.yy += am_erzeugen_dy; CASSERT(mPos.yy <= 0); mSpf->setUpdateNaechstesFall(); } } else { /* Das meiste passiert hier */ spielSchrittPlatziertIntern(); /* Altes Rechteck zum updaten markieren, neues Rechteck bestimmen, neues Rechteck zum updaten markieren. Achtung: Altes Rechteck haette auch vor spielSchrittPlatziertIntern() nicht mehr berechnet werden, da Tastendruecke das Fall verschoben haben koennen. */ setUpdateFallRect(); calcFallRect(); setUpdateFallRect(); } } // spielSchritt /** Fhrt die Animationen durch. Innerhalb einer Gleichzeit aufrufen. */ void Fall::animiere() { //CASSERT(gGleichZeit); for (int i = 0; i < getAnz(); i++) mBlop[i].animiere(); } /** kopiert einen fallenden Blop nach mDaten und liefert den Zielblop in mDaten zurck (als Referenz), damit man einen land-Event senden kann. Sendet den land-Event nicht selbst, weil Cual-Code erwarten knnte, dass erst beide Blops gefestigt werden und dann erst die Events kommen. Kann 0 zurckliefern (wenn der Blop keinen Platz auf dem Bildschirm hat). */ Blop * Fall::festige(int n) { int x = getX(n); int y = getY(n); /* Evtl. ist dieses Feld schon belegt. Dann so lange weiter oben probieren, bis wir ein freies Feld finden. */ while (mSpf->getDatenPtr()->getFeldArt(x, y) != blopart_keins) { y--; /* Sollte tatschlich (auf welche Art auch immer) pltzlich die ganze Spalte voll sein, dann verschwindet der Blop halt. */ if (y < 0) return 0; } Blop & dst = mSpf->getDatenPtr()->getFeld(x, y); dst = mBlop[n]; return &dst; } /** Bewegt das Fall eins nach links */ void Fall::tasteLinks() { mBlop[0].execEvent(event_keyleft); mBlop[1].execEvent(event_keyleft); if (steuerbar()) { FallPos fp2 = mPos; fp2.x--; if (!testBelegt(fp2)) { mPos = fp2; /* Auf dem Bildschirm soll der Fall noch nicht fertigverschoben erscheinen */ mExtraX = am_schieben_start; } } } /** Bewegt das Fall eins nach rechts */ void Fall::tasteRechts(){ mBlop[0].execEvent(event_keyright); mBlop[1].execEvent(event_keyright); if (steuerbar()) { FallPos fp2 = mPos; fp2.x++; if (!testBelegt(fp2)) { mPos = fp2; /* Auf dem Bildschirm soll der Fall noch nicht fertigverschoben erscheinen */ mExtraX = -am_schieben_start; } } } /** Dreht das Fall */ void Fall::tasteDreh1(){ mBlop[0].execEvent(event_keyturn); mBlop[1].execEvent(event_keyturn); } /** Dreht das Fall */ void Fall::tasteDreh2(){ if (steuerbar()) { FallPos fp2 = mPos; fp2.r = fp2.r == richtung_waag ? richtung_senk : richtung_waag; if (!testBelegt(fp2)) { mPos = fp2; /* Drehrichtung bei senkrecht gespiegeltem Level andersrum, damit es fr den Spieler gleich erscheint */ if (ld->mSpiegeln ? fp2.r == richtung_senk : fp2.r == richtung_waag) { Blop b = mBlop[0]; mBlop[0] = mBlop[1]; mBlop[1] = b; } /* Fr Level, bei denen sich die Teile beim Drehen verndern... */ Blop::beginGleichzeitig(); mBlop[0].execEvent(event_turn); mBlop[1].execEvent(event_turn); Blop::endGleichzeitig(); /* Auf dem Bildschirm soll der Fall noch nicht fertiggedreht erscheinen */ mExtraDreh = am_drehen_start; } } } /** ndert die Fallgeschwindigkeit vom Fall */ void Fall::tasteFall(){ mBlop[0].execEvent(event_keyfall); mBlop[1].execEvent(event_keyfall); if (steuerbar()) { mSchnell = !mSchnell; } } /** Liefert true, wenn das Fall (noch) am Platzen ist (wg. Spielende) */ bool Fall::getAmPlatzen() const { if (mPos.r == richtung_keins) return false; /* Wenn einer platzt, dann beide. */ CASSERT(mPos.r == richtung_einzel || mBlop[0].getAmPlatzen() == mBlop[1].getAmPlatzen()); return mBlop[0].getAmPlatzen(); } /** Lsst alle Blops vom Fall platzen (Spielende). */ void Fall::lassPlatzen() { CASSERT(mPos.r != richtung_keins); for (int i = 0; i < getAnz(); i++) mBlop[i].lassPlatzen(); } /** Liefert einen Pointer auf die Blops zurck. Wird vom KIPlayer und von @0 und @1 bentigt. */ const Blop * Fall::getBlop() const { return mBlop; } Blop * Fall::getBlop() { return mBlop; } /** Malt das Fall. */ void Fall::malen() const { /* Wenn kein Fallendes unterwegs ist, liefert getAnz() 0 */ for (int i = 0; i < getAnz(); i++) { int xx, yy; if (mPos.r == richtung_unplatziert) { /* Unplatzierte Blops kommen nicht an die von getXX(), getYY() angegebene Stelle... * (da die Rckgabewerte dieser Funktionen die Werte sind, die cual zu sehen bekommt) */ xx = L_naechstesfall_x + i * gric; yy = mPos.yy; /* Hssliches Workaround: mBlop[i].malen spiegelt die Position. Das soll aber * fuer den unplazierten Fall nicht passieren; deshalb hier nochmal spiegeln. * (Das "+ yy" sorgt jedoch dafr, dass das Preview in der gewnschten Richtung reinkommt.) */ if (ld->mSpiegeln) yy = gry * gric + yy - gric; } else { xx = getXX(i); yy = getYY(i); } mBlop[i].malen(xx, yy); } } int Fall::testBelegt(FallPos p) const { int i = 0; int ret = belegt_keins; for (; i < p.getAnz(); i++) if (!mSpf->getDatenPtr()->testPlatzSpalte(p.getX(i), p.getY(i, mSpf))) ret |= (i == 0 ? belegt_0 : belegt_1); /* Sonderfall: Wenn im Senkrecht-Modus Blop 1 belegt ist, dann per Definition auch Blop 0. (Das wird zwar (im Moment) nirgends verwendet, macht aber Sinn.) */ if (mPos.r == richtung_senk && ret) ret = belegt_beide; return ret; } /** Liefert true, wenn das Fall existiert. Mit Argument: Wenn diese Hlfte existiert. */ bool Fall::existiert(int a/*=0*/) const { return mPos.r != richtung_keins && !(mPos.r == richtung_einzel && a == 1); } /** Liefert loc_x */ int Fall::getX(int a) const { if (!existiert(a)) return blop_pos_nix; return mPos.getX(a); } /** Liefert loc_y */ int Fall::getY(int a) const { if (!existiert(a)) return blop_pos_nix; return mPos.getY(a, mSpf); } /** Liefert loc_xx */ int Fall::getXX(int a) const { if (!existiert(a)) return blop_pos_nix; /* Gedreht Ungedreht */ /* Normal Spiegel */ /* Waag Senk Waag Senk */ int drehx = "2215 2243 2215 4322 2"[getDrehIndex(a)] - '1'; /* 1*>01>0* 0*>01 10>0* */ /* 0 * 1 1 * * 1 */ /* 1: -1 + sin 2: 0 3: sin 4: cos 5: -1 + cos (bei 30 Grad) */ int wandel[] = {-gric + am_drehen_schieb_klein, 0, am_drehen_schieb_klein, am_drehen_schieb_gross, -gric + am_drehen_schieb_gross}; return (mPos.x + a*(mPos.r==richtung_waag || mPos.r==richtung_unplatziert))*gric + mExtraX + wandel[drehx]; } /** Liefert loc_yy */ int Fall::getYY(int a) const { if (!existiert(a)) return blop_pos_nix; if (mPos.r == richtung_unplatziert) return mSpf->getHetzrandYPix() - gric + mPos.yy; /* Gedreht Ungedreht */ /* Normal Spiegel */ /* Waag Senk Waag Senk */ int drehy = "4322 2215 2243 2215 2"[getDrehIndex(a)] - '1'; /* 1*>01>0* 0*>01 10>0* */ /* 0 * 1 1 * * 1 */ /* 1: -1 + sin 2: 0 3: sin 4: cos 5: -1 + cos (bei 30 Grad) */ int wandel[] = {-gric + am_drehen_schieb_klein, 0, am_drehen_schieb_klein, am_drehen_schieb_gross, -gric + am_drehen_schieb_gross}; return mPos.yy + a*(mPos.r==richtung_senk)*gric + wandel[drehy]; } /** Kodiert alle Informationen des Drehens in eine Zahl. Ist fr getXX und getYY da */ int Fall::getDrehIndex(int a) const { /* Bit 21: gar nicht gedreht | */ /* Bit 10: Spiegel? | Bit 5: wirdSenk? | */ /* Bit 2: Blob1? | Bit 1: Schritt1? */ if (mExtraDreh != 0) { /* 3 bedeutet eigentlich: Noch gar nicht gedreht. Normalerweise wird nach einem Tastendruck erst mal ein spielSchritt() aufgerufen (mit mExtraDreh--) und dann das Fall erst neu gemalt. Bei einem auer- ordentlichen Update knnte allerdings auch schon frher neu gemalt werden. Der Einfachheit halber malen wir da schon angedreht. */ int ed = mExtraDreh; if (ed == 3) ed = 2; return 10 * ld->mSpiegeln + 5 * istSenkrecht() + 2 * a + (ed == 1); } else return 21; } /** Bestimm mFallRect neu (Fall-ueberdeckendes Rechteck) */ void Fall::calcFallRect() { if (mPos.r == richtung_keins || mPos.r == richtung_unplatziert) mRectW = mRectH = 0; else { /* Faule Variante... ohne Beachtung der Drehposition und der genauen y-Position */ int li = mPos.x; int re = mPos.x + 2; if (mExtraX < 0) li--; if (mExtraX > 0) re++; mRectX = li * gric; mRectW = (re - li) * gric; mRectY = mPos.yy; mRectH = 3 * gric; } } /** Setzt den Bereich, der durch mRect* angegeben ist, auf upzudaten */ void Fall::setUpdateFallRect() { if (mRectW != 0) { mSpf->setUpdateRect(mRectX, mRectY, mRectW, mRectH); } } /** Liefert true, wenn das Fall aus grade am zerfallen ist (d. h. existiert, aber aus nur noch einem Blop besteht). In dieser Zeit darf nmlich keine Explosion gezndet werden. (Erst warten, bis der andere Blop auch angekommen ist.) */ bool Fall::istEinzel() const { return mPos.r == richtung_einzel; } void Fall::playSample(int nr) const { Sound::playSample(nr, mRechterSpieler ? so_rfeld : so_lfeld, 2*mPos.x+1+(mPos.r==richtung_waag), 2*grx); } int Fall::getSpezConst(int vnr, const Blop * wer) const { /* Wie nett: Man hat uns mitgeteilt, welcher der beiden Blops anfragt. */ bool bin_1 = wer->getOrt().x == 1; switch (vnr) { case spezconst_loc_x: return getX(bin_1); case spezconst_loc_y: return getY(bin_1); case spezconst_loc_xx: return getXX(bin_1); case spezconst_loc_yy: return getYY(bin_1); case spezconst_turn: /* Potentieller Bug: Hier stand mal < 3 statt < 4 (und "021" statt "0211"). Jene assertion wurde nichtreproduzierbar verletzt. Die Verletzung war schon beim ersten Bildaufbau (vorm Spiel), aber nicht im ersten Spiel. Sollte man mal bei Gelegenheit verfolgen. */ CASSERT(mExtraDreh < 4); return "0211"[mExtraDreh] - '0'; case spezconst_falling: return 1; case spezconst_falling_fast: return mSchnell; } /* Wir wissen von nix; Blop::getSpezConst() soll den Default-Wert zurckliefern. */ return spezconst_defaultwert; } cuyo-2.1.0/src/definition.cpp0000644000175000017500000000310711674440316013044 00000000000000/*************************************************************************** definition.cpp - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "definition.h" /* Zur Klasse Definition gibt's nix... */ /*************************************************************************/ /* VarDefinition */ VarDefinition::VarDefinition(Str na, int d, int a, int da, int n): mName(na), mDefault(d), mArt(a), mDefaultArt(da), mNummer(n) { //print_to_stderr(_sprintf("vc %s (nr. %d) = %d\n", na.data(), n, d)); } /* Str VarDefinition::toString() const { return _sprintf("var (=%d)", mDefault); } */ cuyo-2.1.0/src/spielfeld.cpp0000644000175000017500000014446712411361472012675 00000000000000/*************************************************************************** spielfeld.cpp - description ------------------- begin : Sat Oct 2 1999 copyright : (C) 1999 by immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "sdltools.h" #include "font.h" #include "inkompatibel.h" #include "nachbariterator.h" #include "cuyo.h" #include "spielfeld.h" #include "knoten.h" #include "aufnahme.h" #include "sound.h" #include "ui.h" #include "blatt.h" /* Wird nur included fr die Konstanten taste_* */ #include "prefsdaten.h" /***** Konstanten, die was einstellen *****/ /* Wie weit unten mssen Graue sein, damit ein neues Fall kommt? */ #define neues_fall_platz 5 /* Wenn grade neue Graue auf einen maximal hohen Turm gefallen sind, soll man auf jeden Fall noch ein bisschen Zeit haben, ihn wieder zu verkleinern. Deshalb tauchen Graue ein Stck weiter unten als der Hetzrand auf: */ /* Wo relativ zum Hetzrand... */ /* ... tauchen neue Steine auf? */ #define hetzrand_dy_auftauch 8 /* ... ist die maximal erlaubte Turmhhe? */ #define hetzrand_dy_erlaubt 0 /* Wie oft wird versucht, die "+"-Blops am Spielanfang unverbunden zu machen? */ #define startlevel_rand_durchgaenge 10 /* Wie lange wird ein Message angezeigt? */ #define message_gesamtzeit 45 #define message_aufabdeckzeit 16 #define message_blink 4 /***** Rckgabe-Konstanten u. . *****/ /* Werte fr mModus */ /* In diesem Modus *wird* ein Spielfeld angezeigt (wenn das ui uns malen laesst). Das passiert uebliecherweise am Ende, wenn der Benutzer noch schauen will, wie viele Punkte er hat. */ #define modus_keinspiel 0 /* In diesem Modus ist kein Spielfeld zu sehen. */ #define modus_lade 1 #define modus_testflopp 30 // nur ein bergangsmodus: Es muss noch getestet // werden, ob was platzt #define modus_flopp 31 #define modus_rutschnach 40 #define modus_neue_graue 41 // Da kommen grad neue Graue vom Himmel. So lange // das noch passiert, kann kein neues Fall kommen. // Irgend wann sind die Grauen weit genug unten; // Dann wird ein neues Fall losgeschickt und der // Modus gewechselt. Und zwar nach rutschnach, // falls noch Graue unterwegs sind und nach // testflopp, falls sie schon gelandet sind (z. B. // auf hohen Trmen.) #define modus_fallplatz 90 // da war grad was am runterfallen, whrend das // Spiel beendet wurde; da lassen wir es halt platzen // das Spiel ist zu Ende (alle Schlussanimationen sind fertig abgelaufen, // wir warten nur noch darauf, dass stopLevel() aufgerufen wird): #define modus_warte_auf_stop 91 /* Modus-Diagramm: ,-- warte_auf_stop <----, | ^ | | | fallplatz <-, | | | | +-----------------> testflopp --> flopp | | | ^ | | | | | | | | | | | v | | | | keinspiel --> neue_graue <-----------' | | | | | `-------------> rutschnach <---+ - testflopp wird schon am Anfang von Spielschritt ausgewertet. (d. h. der bergang von da woandershin dauert keinen Zeitschritt) - Nur in keinspiel ist kein Spielfeld sichtbar - Mit Escape kann von jedem Modus zu keinspiel gewechselt werden */ /* Werte fr mRueberReihenModus */ #define rrmodus_nix 0 #define rrmodus_gib_rueber 10 #define rrmodus_gib_runter 11 #define rrmodus_bekomm_hoch 20 #define rrmodus_bekomm_rueber 21 /* Rckgabewerte fr rutschNach() */ #define rutschnach_nix 0 #define rutschnach_wenig 1 // Wenn nur im unteren Bereich noch was nachrutscht, // so dass das neue Fall kommen kann #define rutschnach_viel 3 // Brauche: rutschnach_viel | rutschnach_wenig = rutschnach_viel /* Rckgabewerte von sigWillReihe bzw. gebReihe */ #define bewege_reihe_nein 0 /* "Moment, ich bin noch mit der vorigen Reihe beschftigt. Vielleicht gleich." */ #define bewege_reihe_moment 1 #define bewege_reihe_ja 2 Spielfeld::Spielfeld(bool re) : mText(""), mDaten(re,this), mSemiglobal() { mFall = new Fall(this, re); mNaechsterFall = new Fall(this, re); mSemiglobal.setBesitzer(0, ort_absolut(absort_semiglobal, re)); for (int i = 0; i < infoblop_anz; i++) { mInfoBlops[i].setBesitzer(0, ort_absolut(absort_info, re)); mInfoBlopActive[i]=false; } /* fr das Reihenrberschieben... */ mRechterSpieler = re; mModus = modus_keinspiel; } Spielfeld::~Spielfeld(){ delete mFall; delete mNaechsterFall; } /* Hauptmalroutine: Malt alles, was sich geaendert hat, neu */ void Spielfeld::malUpdateAlles() { //CASSERT(mModus != modus_keinspiel); if (mUpdateAlles) Area::updateRect(0, 0, grx * gric, gry * gric); if (mModus == modus_lade) { if (mUpdateAlles) { Area::fillRect(0, 0, gric*grx, gric*gry, Color(150, 150, 150)); malSchrift(true, mText, mTextX0, mTextX1); } } else if (Cuyo::getSpielPause()) { /* Spiel steht auf Pause */ if (mUpdateAlles) { Area::fillRect(0, 0, gric*grx, gric*gry, Color(150, 150, 150)); Bilddatei * pausebild = Cuyo::getPauseBild(); CASSERT(pausebild); pausebild->malBild((gric*grx - pausebild->getBreite())/2, (gric*gry - pausebild->getHoehe())/2); Font::gGame->drawText(ld->mLevelName, gric*grx / 2, 5 * gric, AlignCenter); /* Schrift drbermalen. In der Mitte, falls es kein Pausebild gibt. */ malSchrift(!pausebild,FontStr( _("Game paused\n\nSpace = Resume\nEsc = Abort Game\n\n")), 0,gric*grx); } } else { malUpdateSpielsituation(); } mUpdateAlles = false; } // malUpdateAlles /** Malt (falls noetig) das nchste Fall neu... und die Infoblops */ void Spielfeld::malUpdateNaechstesFall() { /* Provisorisch: Infoblops werden auch hier gemalt... aber bekanntlich hlt nichts lnger als ein Provisorium. Eigentlich sollte man wenigstens die Methode umbenennen in malUpdateInfos() oder so... */ /* Fall malen */ if (mModus == modus_lade || Cuyo::getSpielPause()) { if (mUpdateNaechstesFall) { Area::updateRect(0, 0, L_infos_breite, L_naechstesfall_hoehe); Area::fillRect(0, 0, L_infos_breite, L_naechstesfall_hoehe, Color(150, 150, 150)); } } else { bool u = mUpdateNaechstesFall; if (mNaechsterFall->existiert()) { Blop * b = mNaechsterFall->getBlop(); /* takeUpdaten sollte auch dann aufgerufen werden, wenn mUpdateNaechstesFall eh * schon true ist, damit der Blop nicht durcheinander kommt */ if (b[0].takeUpdaten()) u = true; if (b[1].takeUpdaten()) u = true; } if (u) { Area::updateRect(0, 0, L_infos_breite, L_naechstesfall_hoehe); Area::fillRect(0, 0, L_infos_breite, L_naechstesfall_hoehe, ld->mHintergrundFarbe); if (mNaechsterFall->existiert()) { mNaechsterFall->malen(); } } } /* Die unteren drei infoblops malen */ if (mModus == modus_lade) { if (mUpdateNaechstesFall) { Area::updateRect(0,L_infoblobs_y,L_infoblobs_breite,L_infoblobs_hoehe); Area::fillRect(0,L_infoblobs_y,L_infoblobs_breite,L_infoblobs_hoehe, ld->mHintergrundFarbe); } } else { bool u = mUpdateNaechstesFall; for (int i=0; imHintergrundFarbe); if (mInfoBlopActive[infoblop_chainreaction]) mInfoBlops[infoblop_chainreaction].malen( L_levelexplode_x1, L_chainreactioninfo_y, false); if (mInfoBlopActive[infoblop_grey]) mInfoBlops[infoblop_grey].malen(L_greygrass_x1, L_grey_y, false); if (mInfoBlopActive[infoblop_grass]) mInfoBlops[infoblop_grass].malen(L_greygrass_x1, L_grass_y, false); if (mInfoBlopActive[infoblop_neighbours]) mInfoBlops[infoblop_neighbours].malen( L_levelexplode_x1, L_connectioninfo_y, false); } } mUpdateNaechstesFall = false; } /** Malt die ganzen Blops, usw. */ void Spielfeld::malUpdateSpielsituation() { bool updateSchrift = false; int hintergrund_y = (ld->mMitHintergrundbildchen ? (ld->mSpiegeln ? 0 : gric*gry - ld->mHintergrundBild.getHoehe()) : 0); if (ld->mMitHintergrundbildchen) ld->mHintergrundBild.setAsBackground(hintergrund_y); /*** Ganzen Hintergrund am Stueck malen, falls alles neu zu malen ist ***/ if (mUpdateAlles) { updateSchrift = true; Area::fillRect(0, 0, gric*grx, gric*gry, ld->mHintergrundFarbe); if (ld->mMitHintergrundbildchen) { ld->mHintergrundBild.malBild(0,hintergrund_y); } } /* Oberstes y, in dem was upzudaten ist. Wird verwendet um zu bestimmen, ob der Hetzrand neu zu malen ist */ int hoechstes_y = gric*(gry + 2); /*** Blops malen (nur die, die noetig sind) ***/ for (int x = 0; x < grx; x++) for (int y = 0; y < mDaten.getGrY() + getHexShift(x); y++) // Evtl. auch Rberreihe; und Unterrand im Hexmodus if (mDaten.getFeld(x, y).takeUpdaten() || mUpdateBlop[x][y] || mUpdateAlles) { updateSchrift = true; mUpdateBlop[x][y] = false; int xx, yy; getFeldKoord(x, y, xx, yy); if (y < hoechstes_y) hoechstes_y = y; /* Bereich muss auf Bildschirm upgedatet werden */ if (!mUpdateAlles) { SDL_Rect r = SDLTools::rect(xx, yy, gric, gric); spiegelRect(r); Area::updateRect(r); } /* Blop malen */ if (yy > mHetzrandYPix - gric) { // nicht unter Hetzrand versteckt? if (!mUpdateAlles) { /* Nicht alles updaten? Dann den Hintergrund unter jedem Blop einzeln malen */ SDL_Rect r = SDLTools::rect(xx, yy, gric, gric); spiegelRect(r); Area::fillRect(r, ld->mHintergrundFarbe); if (ld->mMitHintergrundbildchen) { r.y -= hintergrund_y; ld->mHintergrundBild.malBildAusschnitt(xx, yy, r); } } mDaten.getFeld(x, y).malen(xx, yy); } // if blop nicht unter Hetzrand versteckt } /*** Fallendes malen ***/ if (mFall->existiert()) { mFall->malen(); /* Im Moment wird nicht drauf geprft, ob das Fallende die Schrift kaputt gemacht haben knnte => Schrift muss auf jeden Fall neu gemalt werden, falls der Fall existiert. */ updateSchrift = true; } /*** Hetzrand malen ***/ /* Der nichtbild-Hetzrand */ if (hoechstes_y < mHetzrandYPix) { SDL_Rect r = SDLTools::rect(0, 0, gric*grx, mHetzrandYPix); spiegelRect(r); Area::fillRect(r, ld->hetzrandFarbe); updateSchrift = true; } /* Der Bild-Hetzrand */ if (ld->mMitHetzbildchen && hoechstes_y < mHetzrandYPix + ld->mHetzrandUeberlapp) { SDL_Rect r = SDLTools::rect(0, 0, gric*grx, mHetzrandYPix); spiegelRect(r); Area::fillRect(r, ld->hetzrandFarbe); ld->mHetzBild.malBild(0, ld->mSpiegeln ? gric*gry - mHetzrandYPix - ld->mHetzrandUeberlapp : mHetzrandYPix + ld->mHetzrandUeberlapp - ld->mHetzBild.getHoehe() ); updateSchrift = true; } if (updateSchrift) malSchrift(true, mText, mTextX0, mTextX1); mUpdateAlles = false; } // malUpdateSpielsituation /** Malt die Schrift auf den Bildschirm; genauer: auf p. In der richtigen Farbe. */ void Spielfeld::malSchrift(bool mitte /*= true*/, const FontStr & text, int x0, int x1) { /* Wenn eh kein Text da ist, dann lieber gar nix mit Schriften machen; wer wei, ob das langsam ist. */ if (text == FontStr("")) return; int x = gric*grx / 2; int y = mitte ? gric * gry / 2 : gric * (gry - 2); TextAlign align = mitte ? AlignCenter : AlignBottom; Font * font = Font::gGame; // mTextKlein ? Font::gGame : Font::gGame; Area::setClip(SDLTools::rect(x0,0,x1-x0,gric*gry)); font->drawText(text, x, y, align); Area::noClip(); } /** Wenn der Level gespiegelt ist, wird auch das Rechteck gespiegelt. */ void Spielfeld::spiegelRect(SDL_Rect & r) { if (ld->mSpiegeln) { r.y = gry * gric - r.y - r.h; } } /* Liefert einen Blop, der dem Zeichen c in Startdist enstpricht. Wenn mitZufall != 0 ist, wird da reingeschrieben, ob Zufall bei der Blopsortenwahl beteiligt ist. */ Blop startDistBlop(const Str & keystr, bool * mitZufall = 0) { int key = ld->liesDistKey(keystr); if (mitZufall) *mitZufall = false; int wv = -1; if (key == distkey_farbe) wv=wv_farbe; else if (key == distkey_grau) wv=wv_grau; else if (key == distkey_gras) wv=wv_gras; if (wv!=-1) { if (mitZufall) *mitZufall = true; if (ld->mVerteilungSumme[wv]==0) throw Fehler("\"%s\" used in startdist, although all %s are 0.", keystr.data(), cVerteilungsNamen[wv]); int sorte = ld->zufallsSorte(wv); return Blop(sorte); } else if (key == distkey_leer) { return Blop(blopart_keins); } else if (key == distkey_neighbours) { return Blop(blopart_info,4+ld->mNachbarschaft); } else if (key == distkey_chainreaction) { return Blop(blopart_info,(ld->mGrasBeiKettenreaktion ? 1 : 0)); } else { /* Jetzt suchen wir die Sorte, deren distkey am knappsten unter key ist. */ int i = blopart_min_sorte; int bestkey = -1; int besti = 0; /* Just to avoid a warning below about besti being uninitialized. */ for (; imAnzFarben; i++) { int distkey = ld->mSorten[i]->getDistKey(); if (distkey!=distkey_undef && distkey<=key && bestkeymSorten[n], mRechterSpieler, x, y); ni; ++ni) if (mDaten.koordOK(ni.mX, ni.mY)) { if (mDaten.getFeld(ni.mX, ni.mY).getVariable(spezvar_kind) == n) ret++; } return ret; } /* Startdist aus Leveldaten auslesen und ins Spielfeld schreiben */ void Spielfeld::createStartDist() { /* Etwas heuristisch dafr sorgen, dass keine gleichen Blops nebeneinander sind. Hier sind die Variablen dafr. */ /* Welche Blops sollen noch nachbarentfremdet werden? */ std::vector entfremdenX, entfremdenY; std::vector entfremdenK; int len = ld->mDistKeyLen; // nur etwas krzer int totallines = ld->mAnfangsZeilen->getLaenge(); Str lastline = ld->mAnfangsZeilen->getDatum(totallines-1,type_WortDatum) ->getWort(); int lastlength = lastline.length(); bool withinfos = ((lastlength==len*grx) || (lastlength==len*2*grx) ? false : ((lastlength==len*infoblop_anz) || (lastlength==len*2*infoblop_anz) ? true : throw Fehler( "Wrong length for last startdist line: " "%d, %d, %d, or %d expected, " "because all values for distkey have length %d", len*infoblop_anz, len*2*infoblop_anz, len*grx, len*grx*2, len))); int normallines = (withinfos ? totallines-1 : totallines); if (withinfos) { bool rechts = (lastline.length()>len*infoblop_anz) && mRechterSpieler; for (int i=0; imVerteilungSumme[wv_grau]==0) throw Fehler( "Default informational grey blob used, although all greyprob are 0."); mInfoBlops[infoblop_grey] = Blop(ld->zufallsSorte(wv_grau)); } if (mInfoBlopActive[infoblop_grass]) { if (ld->mVerteilungSumme[wv_gras]==0) throw Fehler( "Default informational goal blob used, although all goalprob are 0."); mInfoBlops[infoblop_grass] = Blop(ld->zufallsSorte(wv_gras)); } if (mInfoBlopActive[infoblop_neighbours]) mInfoBlops[infoblop_neighbours] = Blop(blopart_info,4+ld->mNachbarschaft); if (mInfoBlopActive[infoblop_chainreaction]) mInfoBlops[infoblop_chainreaction] = Blop(blopart_info,(ld->mGrasBeiKettenreaktion ? 1 : 0)); } /* Zeilen durchgehen... */ for (int i = 0; i < normallines; i++) { int y = gry - normallines + i; Str zeile = ld->mAnfangsZeilen->getDatum(i,type_WortDatum)->getWort(); if (zeile.length() != grx*len && zeile.length() != 2*grx*len) throw Fehler( "Wrong length for startdist line: " "%d or %d expected, because all values for distkey have length %d", len*grx, len*2*grx, len); int verschiebung = ((zeile.length()>grx*len) && mRechterSpieler ? grx : 0); for (int x = 0; x < grx; x++) { Str key = zeile.mid((verschiebung+x)*len, len); bool mitZufall; mDaten.getFeld(x, y) = startDistBlop(key, &mitZufall); if (mitZufall) { /* Zufall an Blopsortenauswahl beteiligt? Dann auf wenig Nachbarschaften optimieren */ for (int i = 0; i < startlevel_rand_durchgaenge; i++) { entfremdenX.push_back(x); entfremdenY.push_back(y); entfremdenK.push_back(key); } } } } /* Hier kommt das eigentliche Nachbarentfremden */ while (!entfremdenX.empty()) { CASSERT(ld->mAnzFarben); /* Zuflliges Element aus dem pr-Array rausnehmen */ int si = entfremdenX.size(); int prnr = Aufnahme::rnd(si); int x = entfremdenX[prnr]; int y = entfremdenY[prnr]; Str key = entfremdenK[prnr]; si--; entfremdenX[prnr] = entfremdenX[si]; entfremdenY[prnr] = entfremdenY[si]; entfremdenK[prnr] = entfremdenK[si]; entfremdenX.resize(si); entfremdenY.resize(si); entfremdenK.resize(si); /* Ok, mal sehen, ob wir fuer den Blop bei x,y eine bessere Idee haben als das, was da bisher ist */ Blop b_neu = startDistBlop(key); int verb_alt = blopVerbindungen(mDaten.getFeld(x, y), x, y); int verb_neu = blopVerbindungen(b_neu, x, y); /* Neuer Blop ist besser; also kommt der hin */ if (verb_neu < verb_alt) mDaten.getFeld(x, y) = b_neu; } } /** Schaltet die Spielfeld-Anzeige aus, damit "Loading level" angezeigt werden kann... */ void Spielfeld::ladeLevelModus() { setUpdateAlles(); mModus = modus_lade; } /** Danach muss noch einmal animiere() aufgerufen werden, damit alle Blops wissen, wie sie aussehen, und damit die Grafik gemalt wird. */ void Spielfeld::startLevel() { setUpdateAlles(); /* Startmodus: Graue drfen kommen. Da noch keine da sind, kommt ein neues Fall */ mModus = modus_neue_graue; mKettenreaktion = false; mRueberReihenModus = rrmodus_nix; mWillHartnaeckigReihe = false; mHochVerschiebung = 0; // Bild unverschoben mGrauAnz = 0; // Anzahl der Grauen, die auf ihr Kommen warten mMessageText = ""; mMessageZeit = 0; /* Whrend der Spielfeld-Erzeugung werden ein Haufen Blops erzeugt und wieder vernichtet. Die sollen nicht alle gleich ein Init-Event bekommen. */ //Blop::setInitEventsAutomatisch(false); /* Spielfeld leeren. */ mDaten.init(); /* Kein Fallendes */ mFall->initialisiere(); /* ... aber schon mal ein nchstes fallendes */ mNaechsterFall->initialisiere(); mNaechsterFall->erzeug(false); /* false = preview ist sofort da und rutscht nicht erst rein */ mSemiglobal = Blop(blopart_semiglobal); for (int i=0; imGreysAtAll; /* Startdist auslesen und ins Spielfeld schreiben */ createStartDist(); /* Levelzeit... */ mZeit = 0; mHetzrandYPix = 0; } /** Spiel abbrechen (sofort, ohne Animation; oder die Animation ist schon vorbei). */ void Spielfeld::stopLevel() { setUpdateAlles(); mModus = modus_keinspiel; } /** Einmal pro Schritt aufrufen; kmmert sich ggf. um blinkendes Message */ void Spielfeld::blinkeMessage() { /* Ggf. Message-Text blinken lassen */ if (mMessageZeit > 0) { mMessageZeit--; int x0,x1; if (message_gesamtzeit-mMessageZeitexistiert()) { mFall->lassPlatzen(); mModus = modus_fallplatz; } if (mNaechsterFall->existiert()) { mNaechsterFall->lassPlatzen(); mModus = modus_fallplatz; } } } /** Zusammenhangskomponenten bestimmen und ggf. Explosionen auslsen */ void Spielfeld::testeFlopp() { if (mModus != modus_testflopp) return; /* Hat jemand einen Platztest bestellt? (Allerdings mit dem Platzen noch warten, falls das Fall grade am zerfallen ist.)... nderung: Es wird nicht mehr geschaut, ob jemand einen Platztest bestellt hat. Etwas ineffektiver. */ if (!mFall->istEinzel()) { /* Platzt was? (calcFlopp sendet ggf. auch die Grauen an den Mitspieler) */ if (calcFlopp()) { mModus = modus_flopp; Sound::playSample(sample_explodier, mRechterSpieler ? so_rsemi : so_lsemi); } } } /** Um Fall kmmern. (Aber nicht darum, neues Fall zu erzeugen). */ void Spielfeld::fallSchritt() { /* Um Fall kmmern. Macht auch ggf. notwendig gewordene Verwandlungen. */ mFall->spielSchritt(); mNaechsterFall->spielSchritt(); /* Fr den KIPlayer: Jetzt ist das Fall nicht mehr neu. */ mFallIstNeu = false; } /** Ein Schritt vom Spiel. Animationen wird *nicht* gemacht. Dazu muss animiere() aufgerufen werden. (Weil alle Animationen innerhalb einer eigenen Gleichzeit stattfinden sollen.) spielSchritt() sollte innerhalb einer Gleichzeit aufgerufen werden fr evtl. auftretende Events. */ void Spielfeld::spielSchritt() { /* Immernoch in Modus testflopp? Dann wollte wohl nix explodieren. Also wieder in einen gravitations-Modus wechseln. */ if (mModus == modus_testflopp) { /* Keine Sofort-Explosion, also keine Kettenreaktion */ mKettenreaktion = false; /* Wenn ein Fall existiert, drfen grad keine Grauen nachkommen. Sonst schon. */ if (mFall->existiert()) mModus = modus_rutschnach; else mModus = modus_neue_graue; } // Ende von mModus == modus_testflopp switch (mModus) { case modus_flopp: // etwas ist am explodieren /* Einfach nur warten, bis die Blops fertig explodiert sind... */ if (!mDaten.getWasAmPlatzen()) { /* Ja, fertig explodiert. */ /* Jetzt haben wir es uns verdient, vielleicht eine Reihe zu bekommen. */ bekommVielleichtReihe(); /* Wenn wir wieder in Modus testflopp kommen (und sofort eine Explosion auftaucht), ist es eine Kettenreaktion. */ mModus = modus_rutschnach; mKettenreaktion = true; } break; case modus_rutschnach: { /* Steine runterrutschen lassen. */ bool passiert_was = rutschNach(false) != rutschnach_nix; /* Ist jetzt (in diesem Schritt) wirklich was passiert? */ if (!passiert_was) { /* Nein. Das Nachrutschen ist also fertig. */ /* Jetzt: Nchste Explosion? */ mModus = modus_testflopp; } // if (es ist nix mehr nachgerutscht) break; } case modus_neue_graue: { /* Graue Steine runterrutschen lassen. */ int rn = rutschNach(true); /* Die Grauen sind weit genug unten, um ein neues Fall loszuschicken */ if (rn != rutschnach_viel) { /* Aber nur, wenn das Spiel noch luft... */ if (Cuyo::getSpielLaeuft()) { Fall * tmp = mFall; mFall = mNaechsterFall; mNaechsterFall = tmp; if (mFall->insSpiel()) { mNaechsterFall->erzeug(); setUpdateNaechstesFall(); /* Fr den KIPlayer abpeichern, dass ein neues Fall kommt. */ mFallIstNeu = true; /* OK, neues Fall unterwegs. Sind berhaupt noch Graue unterwegs? Wenn ja, dann weiter im Gravitationsmodus; sonst auf Explosionen testen. */ if (rn == rutschnach_wenig) mModus = modus_rutschnach; else mModus = modus_testflopp; } else { setUpdateNaechstesFall(); /* Kein Platz mehr fr neuen Stein => tot */ Cuyo::spielerTot(); CASSERT(!Cuyo::getSpielLaeuft()); /* Allerdings knnen wenigstens die Grauen noch fertig runterfallen. Also sind wir noch nicht bereit zum stoppen. */ } } else { /* Spiel luft eigentlich gar nicht mehr. Wenn die Grauen ganz auf dem Boden angekommen sind, dann sind wir auch sterbebereit */ if (rn == rutschnach_nix) mModus = modus_warte_auf_stop; } } break; } case modus_fallplatz: // Steine, die am runterfallen waren, zerplatzen // in der Luft, weil das Spiel zu Ende ist /* fertig explodiert? */ if (!mFall->getAmPlatzen() && !mNaechsterFall->getAmPlatzen()) { /* Wir sind jetzt mit der Animation fertig und warten auf spielStop() */ mFall->zerstoere(); mNaechsterFall->zerstoere(); mModus = modus_warte_auf_stop; } break; case modus_warte_auf_stop: /* Wir warten nur darauf, dass wir ein stopLevel() bekommen */ break; default: CASSERT(false); } // switch mModus /* ggf. Spiel fr dieses Spielfeld beenden */ testeSpielende(); } // spielSchritt() void Spielfeld::animiere() { //CASSERT(gGleichZeit); /* Die ganzen festliegenden Blops animieren */ mDaten.animiere(); /* Fallendes animieren */ mFall->animiere(); mNaechsterFall->animiere(); for (int i = 0; i < infoblop_anz; i++) if (mInfoBlopActive[i]) mInfoBlops[i].animiere(); mSemiglobal.animiere(); /* Und jetzt das Gras zaehlen. */ mGrasAnz=0; for (int y = mDaten.getGrY() - 1; y >= 0; y--) for (int x = 0; x < grx; x++) if (mDaten.getFeld(x, y).getVerhalten(verhindert_gewinnen)) mGrasAnz++; } /** Liefert die Koordinaten eines Felds in Pixeln zurck (ungespiegelt) */ void Spielfeld::getFeldKoord(int x, int y, int & xx, int & yy) const { xx = x * gric; yy = y * gric - mHochVerschiebung - getHexShift(x) * gric / 2; } /** Fhrt eine der nachfolgenden Tasten-Routinen aus. (t = taste_*). */ void Spielfeld::taste(int t) { switch (t) { case taste_links: tasteLinks(); break; case taste_rechts: tasteRechts(); break; case taste_dreh: tasteDreh(); break; case taste_fall: tasteFall(); break; default: CASSERT(false); } } /** Bewegt das Fall eins nach links */ void Spielfeld::tasteLinks() { Blop::beginGleichzeitig(); mFall->tasteLinks(); mSemiglobal.execEvent(event_keyleft); Blop::endGleichzeitig(); mFall->playSample(sample_links); } /** Bewegt das Fall eins nach rechts */ void Spielfeld::tasteRechts() { Blop::beginGleichzeitig(); mFall->tasteRechts(); mSemiglobal.execEvent(event_keyright); Blop::endGleichzeitig(); mFall->playSample(sample_rechts); } /** Dreht das Fall */ void Spielfeld::tasteDreh() { Blop::beginGleichzeitig(); mFall->tasteDreh1(); mSemiglobal.execEvent(event_keyturn); Blop::endGleichzeitig(); mFall->tasteDreh2(); mFall->playSample(sample_dreh); } /** ndert die Fallgeschwindigkeit vom Fall */ void Spielfeld::tasteFall() { Blop::beginGleichzeitig(); mFall->tasteFall(); mSemiglobal.execEvent(event_keyfall); Blop::endGleichzeitig(); mFall->playSample(sample_fall); } /** berechnet, ob und welche Blops platzen mssen. Auerdem werden den Blops die Kettengren mitgeteilt, und Graue und Punkte verteilt */ bool Spielfeld::calcFlopp() { int x, y; bool wasPassiert = false; /* Die Punkte werden nachher nur gesendet, wenn wirklich was explodiert ist. */ int punkte = mKettenreaktion ? punkte_fuer_kettenreaktion : 0; /* Event an Blops senden, damit sie ihre Verbindungsspecials ausfhren knnen */ mDaten.sendeConnectEvent(); /* Anzahl der Grauen fr den anderen Spieler, wenn etwas platzt: Mindestens 1. Die minimal mgliche Blop-Zahl, die platzt, wird spter abgezogen. Und zwar von denen die grte. Ggf. wird was fr Kettenreaktionen addiert */ int grz = 1; if (mKettenreaktion) grz += graue_bei_kettenreaktion; /* Der grte PlatzAnzahl-Wert unter den Sorten, die jetzt platzen */ int maxPlatzAnzahl = 0; /* Array fr Zusammenhangskomponentensuche */ int flopp[grx][gry]; /* Erst mal muss nix platzen */ for (x = 0; x < grx; x++) for (y = 0; y < gry; y++) flopp[x][y] = 0; /* Spielfeld absuchen */ for (x = 0; x < grx; x++) for (y = 0; y < gry; y++) /* Blop, der noch nicht am platzen ist und seine Kettengre wissen will? */ if (mDaten.getFeld(x, y).getVerhalten(berechne_kettengroesse) && !mDaten.getFeld(x, y).getAmPlatzen()) { int kind = mDaten.getFeld(x,y).getVariable(spezvar_kind); /* Dann Kettengre berechnen,... */ int anz = calcFloppRec(flopp, x, y, kind, 1); /* ... maxPlatzAnzahl fr grz aktualisieren ... */ int PlatzAnzahl = ld -> mSorten[mDaten.getFeld(x,y).getVariable(spezvar_kind)] -> getPlatzAnzahl(); bool platzen = mDaten.getFeld(x,y).getVerhalten(platzt_bei_gewicht) && (anz>=PlatzAnzahl); if (platzen && (PlatzAnzahl > maxPlatzAnzahl)) maxPlatzAnzahl = PlatzAnzahl; /* ... und allen Blops in der Kette mitteilen. */ int neue_pt = calcFloppRec(flopp, x, y, kind, 2, /* Gre mitteilen... */ platzen, mKettenreaktion, anz); CASSERT(platzen || neue_pt == 0); /* Wenn's Punkte gab, ist wohl auch was geplatzt */ if (neue_pt > 0) { punkte += neue_pt; wasPassiert = true; grz += anz; } } /* Jetzt kennen wir maxPlatzAnzahl endgltig, jetzt lassens wir's wirken */ grz -= maxPlatzAnzahl; /* Ist noch was explodiert? */ if (wasPassiert) { /* Dann sende graue */ Cuyo::sendeGraue(mRechterSpieler, grz); /* und bekomme Punkte */ Cuyo::neuePunkte(mRechterSpieler, punkte); } return wasPassiert; } // calcFlopp() int Spielfeld::calcFloppRec(int flopp[grx][gry], int x, int y, int n, int w, bool platzen /*= false*/, bool ist_kettenreaktion /*= false*/, int anz /*= 0*/) { CASSERT(x >= 0 && x < grx && y >= 0 && y < gry); Blop & b = mDaten.getFeld(x, y); if (b.getVariable(spezvar_kind)==n) { if (flopp[x][y] & w) // Hatten wir dieses Feld schon? return 0; int ret = 0; flopp[x][y] |= w; if (w == 2) { b.setKettenGroesse(anz); if (platzen) { b.lassPlatzen(); if (b.getVerhalten(verhindert_gewinnen)) ret = punkte_fuer_gras; else ret = punkte_fuer_normales; } } else { ret = b.getKettenBeitrag(); } /* Rekursiv weiteraufrufen: */ for (NachbarIterator i(ld->mSorten[n], mRechterSpieler, x, y); i; ++i) if (i.mX >= 0 && i.mX < grx && i.mY >= 0 && i.mY < gry) { /* Nicht koordOk() verwenden, weil das die Rberreihe erlaubt, wenn sie existiert (bei y == gry) */ /* Noch checken, ob einer der Blops ein "inhibit" fr diese Verbindung gesetzt hat. */ if ((b.getVariable(spezvar_inhibit) & i.mDir) == 0 && (mDaten.getFeld(i.mX, i.mY).getVariable(spezvar_inhibit) & i.mDirOpp) == 0) ret += calcFloppRec(flopp, i.mX, i.mY, n, w, platzen, ist_kettenreaktion, anz); } return ret; } else if ((w==2) && platzen && (b.getVerhalten(platzt_bei_platzen) || (ist_kettenreaktion && b.getVerhalten(platzt_bei_kettenreaktion)))) { if (flopp[x][y] & 4) // Hatten wir dieses Feld schon? return 0; flopp[x][y] |= 4; b.lassPlatzen(); return (b.getVerhalten(verhindert_gewinnen) ? punkte_fuer_gras : punkte_fuer_graues); } else return 0; CASSERT(0); return 0; // Um keine Warnung zu bekommen } /** Graue von anderem Spieler bekommen; wird ignoriert, falls dieser Spieler grad nicht spielt */ void Spielfeld::empfangeGraue(int g){ if (mModus == modus_keinspiel) return; for (int i=0; imVerteilungSumme[wv_grau] + ld->mKeineGrauenW) < ld->mVerteilungSumme[wv_grau]) mGrauAnz++; } /** liefert die Hhe vom hchsten Trmchen... unter der Annahme, dass er schon komplett zusammengesackt ist. */ int Spielfeld::getHoehe(){ int h = 0; for (int x = 0; x < grx; x++) { int nh = 0; for (int y = 0; y < gry; y++) nh += mDaten.getFeldArt(x, y) != blopart_keins; if (nh > h) h = nh; } return h; } /** sollte nur aufgerufen werden, wenn Cuyo::getSpielLaeuft() false liefert; liefert true, wenn alle Spiel-Stop- Animationen fertig sind; liefert brigens auch true, wenn dieser Spieler gar nicht mitspielt */ bool Spielfeld::bereitZumStoppen(){ if (mModus == modus_keinspiel || mModus == modus_warte_auf_stop) return true; else return false; } /** Zeigt t gro an. (Oder weniger gro.) */ void Spielfeld::setText(const Str & t_, bool kleine_schrift /*= false*/, int x0 /* =0 */, int x1 /* =gric*grx */) { FontStr t = t_; if ((! (mText == t)) || mTextKlein != kleine_schrift || x0!=mTextX0 || x1!=mTextX1) { mText = t; mTextKlein = kleine_schrift; mTextX0=x0; mTextX1=x1; Font * font = Font::gGame; //mTextKlein ? Font::gGame : Font::gGame; font->wordBreak(mText, gric*grx); setUpdateAlles(); } } /** Fr whrend des Spiels: Setzt einen Text, der ein paar mal aufblinkt. */ void Spielfeld::setMessage(Str mess) { mMessageText = mess; mMessageZeit = message_gesamtzeit; } /** Setzt das Rechteck x, y, w, h auf upzudaten. */ void Spielfeld::setUpdateRect(int x, int y, int w, int h) { for (int blopx = 0; blopx < grx; blopx++) for (int blopy = 0; blopy < gry + 2; blopy++) { int xx, yy; getFeldKoord(blopx, blopy, xx, yy); if (xx > x - gric && yy > y - gric && xx < x + w && yy < y + h) mUpdateBlop[blopx][blopy] = true; } } /** Setzt alles auf upzudaten. */ void Spielfeld::setUpdateAlles() { mUpdateAlles = true; mUpdateNaechstesFall = true; } /** Setzt das nchste Fall auf upzudaten... und die Infblops */ void Spielfeld::setUpdateNaechstesFall() { mUpdateNaechstesFall = true; } /** Lsst den Hetzrand schnell runterkommen (fr die Zeitbonus-Animation). Liefert true, wenn fertig. */ bool Spielfeld::bonusSchritt() { CASSERT(mModus != modus_keinspiel); /* Bis wohin soll der Hetzrand runtergehen? */ int unten = gric * gry - ld->mHetzrandStop; /* Hetzrand runterkommen lassen */ int ny = mHetzrandYPix + bonus_geschwindigkeit; if (ny > unten) ny = unten; setHetzrandYPix(ny); /* Hetzrand unten angekommen? */ return ny == unten; } /** Liefert true, wenn grade ein Fallendes unterwegs ist. Wird vom KIPlayer bentigt */ int Spielfeld::getFallModus() const { //return mModus == modus_fall; if (mFall->existiert()) if (mFallIstNeu) return fallmodus_neu; else return fallmodus_unterwegs; else return fallmodus_keins; } /** Liefert einen Pointer auf das Blopgitter zurck. */ /*const*/ BlopGitter * Spielfeld::getDatenPtr() /*const*/ { return &mDaten; } /** Liefert einen Pointer auf die fallenden Blops zurck. Wird von KIPlayer einmal am Anfang aufgerufen und gelegentlich bei @0 und @1. */ const Blop * Spielfeld::getFall(int which /* = 0 */) const { switch (which) { case 0 : return mFall->getBlop(); case 1 : return mNaechsterFall->getBlop(); default : throw Fehler(_sprintf("Illegal blob index %d",which)); } } Blop * Spielfeld::getFall(int which /* = 0 */) { switch (which) { case 0 : return mFall->getBlop(); case 1 : return mNaechsterFall->getBlop(); default : throw Fehler(_sprintf("Illegal blob index %d",which)); } } int Spielfeld::getFallAnz() const { return mFall->getAnz(); } void Spielfeld::resetFall() { /* Im Debug-Modus: Fall durch ein neues ersetzen. */ /* ... aber nur, wenn das Fall gerade existiert und nicht zerfllt */ if (mFall->existiert(1)) { mFall->zerstoere(); Fall * tmp = mFall; mFall = mNaechsterFall; mNaechsterFall = tmp; mNaechsterFall->erzeug(); mFall->insSpiel(); /* Der einfach so zerstrte Fall muss gelscht werden. Aus Faulheit einfach alles updaten */ setUpdateAlles(); } } Blop & Spielfeld::getSemiglobal() { return mSemiglobal; } /** Liefert die Pos. zurck, an der neue Dinge oben auftauchen. */ int Spielfeld::getHetzrandYAuftauch() const{ /* Siehe def. der Konstante... */ return (mHetzrandYPix + hetzrand_dy_auftauch) / gric; } /** Liefert die Pos. zurck, bis wohin noch Dinge liegen drfen, ohne dass man tot ist. */ int Spielfeld::getHetzrandYErlaubt() const{ /* Siehe def. der Konstante... */ return (mHetzrandYPix + hetzrand_dy_erlaubt) / gric; } /** ndert die Hhe vom Hetzrand auf y (in Pixeln). */ void Spielfeld::setHetzrandYPix(int y) { if (y == mHetzrandYPix) return; int vy = mHetzrandYPix; mHetzrandYPix = y; /* War in einer alten Version wichtig: setUpdateRect darf erst aufgerufen werden, _nachdem_ mHetzrandYPix gendert wurde (weil sonst der Hetzrand evtl. noch gar nicht in dem bergebenen Rechteck drin liegt und deshalb kein frisch-malen-Flag kriegt. */ if (ld->mMitHetzbildchen) setUpdateRect(0, vy - ld->mHetzBild.getHoehe() + ld->mHetzrandUeberlapp, gric * grx, ld->mHetzBild.getHoehe() + y - vy); else setUpdateRect(0, vy, gric * grx, y - vy); } /** Bewegt den Hetzrand eins nach unten. Testet auch, ob dabei was berdeckt wird. */ void Spielfeld::bewegeHetzrand(){ /* Hat der Hetzrand Steine berdeckt? (Bruchte eigentlich nur getestet werden, wenn sich getHetzrandYErlaubt() seit dem letzten Check erhht hat...) */ int hye = getHetzrandYErlaubt(); if (hye > 0) { for (int x = 0; x < grx; x++) if (mDaten.getFeldArt(x, hye - 1) != blopart_keins) { /* Hetzrand berdeckt Stein => tot */ Cuyo::spielerTot(); CASSERT(!Cuyo::getSpielLaeuft()); /* Evtl. muss auch bei uns noch eine Animation fertig ablaufen; deshalb noch nicht gleich den mModus auf modus_warte_auf_stop setzen, sondern einfach die Dinge laufen lassen */ break; } } /* Levelzeit hochzhlen, Hetzrand kommen lassen...; das darf erst geschehen, nachdem getestet wurde, ob was berdeckt wurde, weil vielleicht vorher grade was in der Hhe aufgetaucht ist, wo es jetzt berdeckt wrde */ mZeit++; setHetzrandYPix(mZeit / ld->hetzrandZeit); } /** Sendet sich selbst (ggf.) zufllige Graue */ void Spielfeld::zufallsGraue(){ /* Ggf. sich selbst Graue schicken */ if (ld->mZufallsGraue != zufallsgraue_keine) if (Aufnahme::rnd(ld->mZufallsGraue) == 0) empfangeGraue(1); } /** Lsst in der Luft hngende Blops ein Stck runterfallen. Liefert zurck, ob sich nichts bewegt hat, nur unten oder auch oben. Bei auchGraue = true, kommen auch Graue, die ganz ber dem Spielfeld hngen. */ int Spielfeld::rutschNach(bool auchGraue){ int ret = rutschnach_nix; /* Anzahl der Spalten, in denen Platz fr ein neues Graues ist */ int grauplatz = 0; /* Zeile, in der neue Graue auftauchen */ int hya = getHetzrandYAuftauch(); /* Steine nachrutschen lassen */ for (int x = 0; x < grx; x++) { /* Zunchst mal die Steine, die schon im Spielfeld sind, runterrutschen lassen; die knnen brigens auch noch leicht ber dem Hetzrand sein (also sicherheitshalber bis ganz oben gehen) */ bool unten_platz = false; for (int y = gry-1; y>=0; y--) { if (unten_platz && !mDaten.getFeldVerhalten(x,y,schwebt)) { mDaten.getFeld(x, y + 1) = mDaten.getFeld(x, y); mDaten.getFeld(x, y) = Blop(blopart_keins); if (y >= hya + neues_fall_platz) ret |= rutschnach_wenig; else ret |= rutschnach_viel; } unten_platz=mDaten.getFeldArt(x,y)==blopart_keins; } /* Ist in dieser Spalte Platz fr ein Graues? */ if (mDaten.getFeld(x, hya).getArt() == blopart_keins) grauplatz++; } // for x /* Drfen neue Graue kommen? */ if (auchGraue) { for (int x = 0; x < grx; x++) { /* Ist in Grauauftauchhhe der Spalte Platz? (Achtung: Spalte voll ist nicht der einzige Grund fr keinen Grauplatz. Der Hetzrand knnte auch grade ein Feld runtergekommen sein.) */ if (mDaten.getFeldArt(x, hya) == blopart_keins) { CASSERT(grauplatz > 0); if (Aufnahme::rnd(grauplatz) < mGrauAnz) { mDaten.getFeld(x, hya) = Blop(ld->zufallsSorte(wv_grau)); ret |= rutschnach_viel; mGrauAnz--; } grauplatz--; } } } return ret; } /** Liefert die Pos. vom Hetzrand in Pixeln zurck. Wird vom Fall gebraucht. */ int Spielfeld::getHetzrandYPix() const { return mHetzrandYPix; } /** Kmmert sich um hin- und hergeben von Reihen. */ void Spielfeld::rueberReihenSchritt() { switch (mRueberReihenModus) { case rrmodus_nix: break; case rrmodus_gib_rueber: /* Nichts tun. Nur warten, bis uns der andere die Reihe ganz weggenommen hat. */ if (mRestRueberReihe == 0) mRueberReihenModus = rrmodus_gib_runter; /* if (mRechterSpieler) { if (mDaten.getFeldArt(0, gry) == blopart_keins) mRueberReihenModus = rrmodus_gib_runter; } else { if (mDaten.getFeldArt(grx - 1, gry) == blopart_keins) mRueberReihenModus = rrmodus_gib_runter; }*/ break; case rrmodus_gib_runter: /* alles zum updaten markieren */ setUpdateAlles(); /* Bild verschieben */ mHochVerschiebung -= reihe_rueber_senkrecht_pixel; /* Weit genug verschoben? */ if (mHochVerschiebung <= 0) { mHochVerschiebung = 0; /* Rueberreihe vernichten */ mDaten.setRueberReihe(false); /* und fertig */ mRueberReihenModus = rrmodus_nix; } break; case rrmodus_bekomm_hoch: /* alles zum updaten markieren */ setUpdateAlles(); /* Bild verschieben */ mHochVerschiebung += reihe_rueber_senkrecht_pixel; /* Weit genug verschoben? */ if (mHochVerschiebung >= gric) { mHochVerschiebung = gric; mRueberReihenModus = rrmodus_bekomm_rueber; mRestRueberReihe = grx; } break; case rrmodus_bekomm_rueber: /* Neuen Stein vom anderen Spieler bestellen */ Blop neuer; Cuyo::willStein(mRechterSpieler, neuer); /* Von welcher Seite kommt die Reihe? */ if (mRechterSpieler) { /* von links: Reihe nach rechts schieben */ for (int x = grx - 1; x > 0; x--) mDaten.getFeld(x, gry) = mDaten.getFeld(x - 1, gry); mDaten.getFeld(0, gry) = neuer; /* Seitenwechsel-Event */ //Blop::beginGleichzeitig(); mDaten.getFeld(0, gry).scheduleEvent(event_changeside); //Blop::endGleichzeitig(); } else { /* von rechts: Reihe nach links schieben */ for (int x = 0; x < grx - 1; x++) mDaten.getFeld(x, gry) = mDaten.getFeld(x + 1, gry); mDaten.getFeld(grx - 1, gry) = neuer; /* Seitenwechsel-Event */ //Blop::beginGleichzeitig(); mDaten.getFeld(grx - 1, gry).scheduleEvent(event_changeside); //Blop::endGleichzeitig(); } mRestRueberReihe--; /* Fertig? */ if (mRestRueberReihe == 0) { mRueberReihenModus = rrmodus_nix; mSemiglobal.scheduleEvent(event_row_up); /* Gleich sagen alle Blops einzeln, dass sie geupdatet werden muessen, aber alles auf einmal updaten ist effizienter */ setUpdateAlles(); /* Im Datenarray alles nach oben schieben. */ for (int x = 0; x < grx; x++) for (int y = 0; y < gry; y++) mDaten.getFeld(x, y) = mDaten.getFeld(x, y + 1); /* In der Rberreihe sind noch alte Restblops; aber die Rberreihe wird jetzt eh deaktiviert */ mDaten.setRueberReihe(false); /* Optisch soll sich nix ndern; jetzt ist das Spielfeld wieder in Normalposition */ mHochVerschiebung = 0; /* Vielleicht sollten wir gleich noch eine Reihe bekommen? Mal nachschauen. Allerdings ist der andere Spieler noch mit der letzten Reihe beschftigt. Deshalb warten wir hartnckig so lange, bis der sich richtig entschieden hat, ob er uns eine Reihe gibt oder nicht. */ mWillHartnaeckigReihe = true; } break; } // switch (mRueberReihenModus) /* Wir haben irgend wann beschlossen, so lange beim anderen Spieler nach einer Reihe zu fragen, bis der wei, ob er uns eine gibt: */ if (mWillHartnaeckigReihe) { /* bekommVielleichtReihe() liefert true, wenn es sich lohnt, im nchsten Schritt nochmal nachzufragen. */ if (!bekommVielleichtReihe()) mWillHartnaeckigReihe = false; } } /** liefert zurck, ob wir dem anderen Spieler eine Reihe geben (er hat Hhe h); Antwort ist eine der Konstanten bewege_reihe_xxx */ int Spielfeld::bitteUmReihe(int h) { /* Wenn wir nicht mitspielen, geben wir natrlich auch keine Reihe her */ if (mModus == modus_keinspiel) return bewege_reihe_nein; /* Wenn das Spiel zu Ende gehen soll, keine Reihe mehr rbergeben */ if (!Cuyo::getSpielLaeuft()) return bewege_reihe_nein; /* Wenn wir schon irgendwie mit einer Reihe beschftigt sind, soll der andere sich erst noch ein bisschen gedulden. */ if (mRueberReihenModus != rrmodus_nix) return bewege_reihe_moment; /* Sind wir hinreichend hher als der andere? Oder testen wir im Debug-Modus das Reihen hin und her schieben? */ if (getHoehe() < h + 2 && !Cuyo::getRueberReihenTest()) return bewege_reihe_nein; /* Ist unsere unterste Reihe (komplett) verfgbar? */ for (int x = 0; x < grx; x++) if (mDaten.getFeldArt(x, gry - 1) == blopart_keins || mDaten.getFeld(x, gry - 1).getAmPlatzen()) return bewege_reihe_nein; /* Wenn wir dem anderen Spieler eine Reihe geben wollen, dann machen wir uns auch mal dafr bereit */ mRueberReihenModus = rrmodus_gib_rueber; mRestRueberReihe = grx; mSemiglobal.scheduleEvent(event_row_down); /* Gleich sagen alle Blops einzeln, dass sie geupdatet werden muessen, aber alles auf einmal updaten ist effizienter */ setUpdateAlles(); /* Im Datenarray alles nach unten schieben. */ mDaten.setRueberReihe(true); for (int x = 0; x < grx; x++) { for (int y = gry; y > 0; y--) mDaten.getFeld(x, y) = mDaten.getFeld(x, y - 1); /* Oben eine Reihe leer einfgen. */ mDaten.getFeld(x, 0) = Blop(blopart_keins); } /* Optisch soll sich noch nix ndern... */ mHochVerschiebung = gric; /* Hier fehlt noch ein Signal an die Steine der neuen untersten Reihe, um ihnen mitzuteilen, dass ihre Zshgskomponente kleiner geworden ist. */ /* brigens: Das Reihe-Rbergeben fngt (fr uns) noch nicht gleich an; erst, wenn der andere sein Zeug hochgeschoben hat. */ return bewege_reihe_ja; } /** gibt einen Stein an den anderen Spieler rber; Blop wird in s zurckgeliefert */ void Spielfeld::gebStein(Blop & s){ CASSERT(mRueberReihenModus == rrmodus_gib_rueber); CASSERT(mRestRueberReihe > 0); if (mRechterSpieler) { /* nach links... */ s = mDaten.getFeld(0, gry); for (int x = 0; x < grx - 1; x++) mDaten.getFeld(x, gry) = mDaten.getFeld(x + 1, gry); mDaten.getFeld(grx - 1, gry) = Blop(blopart_keins); } else { /* nach rechts... */ s = mDaten.getFeld(grx - 1, gry); for (int x = grx - 1; x > 0; x--) mDaten.getFeld(x, gry) = mDaten.getFeld(x - 1, gry); mDaten.getFeld(0, gry) = Blop(blopart_keins); } mRestRueberReihe--; } /** Prft, ob ein Reihenbekommen sinnvoll wre und initiiert es ggf. (Unterhlt sich auch mit dem anderen Spieler). Liefert true, wenn es jetzt grad nicht mglich war, eine Reihe zu bekommen, aber nur weil der andere Spieler noch damit beschftigt war, von einer vorigen Reihe sein Spielfeld runterzuschieben. Unter manchen Umstnden wird dann spter nochmal probiert, eine Reihe zu bekommen. */ bool Spielfeld::bekommVielleichtReihe() { /* Knnen wir eine Reihe vertragen? */ if (mRueberReihenModus != rrmodus_nix) return false; /* Dann mal beim anderen Spieler anfragen, ob wir eine bekommen */ int erg = Cuyo::bitteUmReihe(mRechterSpieler, getHoehe()); if (erg == bewege_reihe_ja) { mDaten.setRueberReihe(true); /* Die Rberreihe lschen. (Da kann noch Mll von vorher drin sein. */ for (int x = 0; x < grx; x++) mDaten.getFeld(x, gry) = Blop(blopart_keins); mRueberReihenModus = rrmodus_bekomm_hoch; } /* Wenn der andere Spieler grad noch mit einer alten Reihe beschftigt ist, liefern wir true zurck, um es vielleicht etwas spter nochmal zu probieren. */ return erg == bewege_reihe_moment; } /** Liefert die (rberreihenbedingte) Hochverschiebung des gesamten Spielfelds. Wird vom Fall bentigt (um seine Koordinaten in Feldern zu berechnen). */ int Spielfeld::getHochVerschiebung() const { return mHochVerschiebung; } int Spielfeld::getZeit() const {return mZeit;} int Spielfeld::getGrauAnz() const {return mGrauAnz;} int Spielfeld::getGrasAnz() const {return mGrasAnz;} /** Liefert true, wenn diese Spalte um gric/2 verschoben ist (wegen Hex-Modus) */ bool Spielfeld::getHexShift(int x) const { return ld->getHexShift(mRechterSpieler, x); } cuyo-2.1.0/src/prefsdaten.cpp0000644000175000017500000001760612400104765013051 00000000000000/*************************************************************************** prefsdaten.cpp - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2003,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include "stringzeug.h" #include "prefsdaten.h" #include "cuyointl.h" #include "fehler.h" #include "leveldaten.h" #include "configdatei.h" #include "global.h" #include "sdltools.h" namespace PrefsDaten { /** Die Steuer-Tasten... */ SDLKey mTasten[2][4]; /** Welche Level wurden schon gewonnen: im 1-Spieler-Modus und im Mehr-Spieler-Modus */ std::set mGewonneneLevel[2]; /** Geschwindigkeit des KI-Players, so wie man's einstellen mchte */ int mKIGeschwLog; /** Die Zahl, an der der KI-Player interessiert ist. */ double mKIGeschwLin; bool mSound; Str mLastLevel; int mPlayers; /* The following are stored as strings in .cuyo, but it is safe to use ints here, because the semantics can only change between different versions of cuyo, not during one invocation. */ int mLevelTrack; int mDifficulty; /** Ldt die Preferences aus wo-auch-immer-sie-abgespeichert-werden in die Variablen. */ void liesPreferences(); void calcKILangsamLin() { /* 9 -> 1 6 -> 2 3 -> 4 0 -> 8 */ mKIGeschwLin = exp((9 - mKIGeschwLog) * log(2.0) / 3); } enum PrefsVersion { PV_first = 0, PV_SDLKeys = 1, PV_current = PV_SDLKeys }; void init() { try { liesPreferences(); } catch (Fehler f) { print_to_stderr("Error reading preferences file '.cuyo':\n"); print_to_stderr(f.getText()+"\n"); exit(1); } } /** Returns true if level lnr has already been won. */ bool getLevelGewonnen(bool sp2, int lnr) { return mGewonneneLevel[sp2].find(ld->getIntLevelName(lnr))!=mGewonneneLevel[sp2].end(); } /** sp2: true bei zweispielermodus */ void schreibGewonnenenLevel(bool sp2, const Str intlena) { if (mGewonneneLevel[sp2].find(intlena)==mGewonneneLevel[sp2].end()) { /* Level war bisher noch nie gewonnen; also in Liste einfgen */ mGewonneneLevel[sp2].insert(intlena); schreibPreferences(); } } /** Liefert true, wenn die Taste k belegt ist, und speichert dann in sp und t ab, was die Taste tut. */ bool getTaste(SDLKey k, int & sp, int & t) { for (sp = 0; sp < 2; sp++) for (t = 0; t < taste_anz; t++) if (k == mTasten[sp][t]) return true; return false; } /** Liefert den Namen und Pfad der Prefs-Datei zurck ($HOME/.cuyo) */ Str getPrefsName() { char * ho = getenv("HOME"); if (!ho) { /* Unter Windows zum Beispiel... */ // TRANSLATORS: ".cuyo" is a file name and should not be translated print_to_stderr("Warning: Env-Variable $HOME not found. Using the current directory for .cuyo"); return ".cuyo"; } if (ho[strlen(ho) - 1] == '/') return Str(ho) + ".cuyo"; else return Str(ho) + "/.cuyo"; } /** Ldt die Preferences aus wo-auch-immer-sie-abgespeichert-werden in die Variablen. */ void liesPreferences() { int i; ConfigDatei prd(getPrefsName()); /* Welche Version hat die Prefs-Datei? */ PrefsVersion version = (PrefsVersion) prd.getZahlEintrag("prefsVersion", PV_first); /* Tastenbelegung */ /* Default-Tasten */ //int dt[2][4] = {{Qt::Key_A, Qt::Key_D, Qt::Key_W, Qt::Key_S}, // {Qt::Key_Left, Qt::Key_Right, Qt::Key_Up, Qt::Key_Down}}; SDLKey dt[2][4] = {{SDLK_a, SDLK_d, SDLK_w, SDLK_s}, {SDLK_LEFT, SDLK_RIGHT, SDLK_UP, SDLK_DOWN}}; char tn[4][9] = {"left", "right", "turn", "down"}; for (i = 0; i < 2; i++) { prd.setAbschnitt(_sprintf("keys %d", i + 1)); for (int j = 0; j < 4; j++) { if (version >= PV_SDLKeys) { mTasten[i][j] = (SDLKey) prd.getZahlEintrag(tn[j], dt[i][j]); } else { /* Alte Version: Tasten stehen noch im Qt-Format in der Datei */ int t = prd.getZahlEintrag(tn[j], -1111); if (t == -1111) mTasten[i][j] = dt[i][j]; else mTasten[i][j] = SDLTools::qtKey2sdlKey(t); } } } /* Gewonnene Level */ prd.setAbschnitt(); for (i = 0; i < 2; i++) { prd.getMengenEintrag(i ? "wonMultiPlayer" : "wonOnePlayer", mGewonneneLevel[i]); /* Debug-Ausgabe: */ /*Str t = prd->readEntry(i ? "wonMultiPlayer" : "wonOnePlayer"); print_to_stderr(_sprintf("blub = %s\n", t.data()));*/ } /* KI-Player-Geschwindigkeit */ mKIGeschwLog = prd.getZahlEintrag("AISpeed", 6); calcKILangsamLin(); /* Sound */ mSound = prd.getZahlEintrag("Sound", 1); mPlayers = prd.getZahlEintrag("Players",1); mLevelTrack = Version::gLevelpack.suchMerkmal( prd.getEintrag("LevelTrack","main")); if (mLevelTrack==-1) mLevelTrack=Version::gLevelpack.suchMerkmal("main"); mDifficulty = Version::gSchwierig.suchMerkmal( prd.getEintrag("Difficulty","")); if (mDifficulty==-1) mDifficulty=Version::gSchwierig.suchMerkmal(""); mLastLevel = prd.getEintrag("LastLevel", ""); } /** Schreibt die Preferences nach wo-auch-immer-sie-abgespeichert-werden. */ void schreibPreferences() { Str na = getPrefsName(); FILE * f = fopen(na.data(), "w"); if (!f) { print_to_stderr(_sprintf("Warning: Could not write preferences file \"%s\".", na.data())); return; } fprintf(f, "# cuyo Preferences File\n\n"); fprintf(f, "prefsVersion=%d\n\n", PV_current); for (int i = 0; i < 2; i++) { fprintf(f, i ? "wonMultiPlayer=" : "wonOnePlayer="); Str lena; std::set::const_iterator e = mGewonneneLevel[i].end(); for (std::set::const_iterator j = mGewonneneLevel[i].begin(); j!=e; ++j) fprintf(f, "%s,", j->data()); fprintf(f, "\n"); } fprintf(f, "\n"); fprintf(f, "AISpeed=%d\n\n", mKIGeschwLog); fprintf(f, "\n"); fprintf(f, "Sound=%d\n\n", mSound); fprintf(f, "\n"); fprintf(f, "Players=%d\n\n", mPlayers); fprintf(f, "\n"); fprintf(f, "LevelTrack=%s\n\n", Version::gLevelpack.mMerkmale[mLevelTrack].data()); fprintf(f, "\n"); fprintf(f, "Difficulty=%s\n\n", Version::gSchwierig.mMerkmale[mDifficulty].data()); fprintf(f, "\n"); fprintf(f, "LastLevel=%s\n\n", mLastLevel.data()); char tn[4][9] = {"left", "right", "turn", "down"}; for (int i = 0; i < 2; i++) { fprintf(f, "[keys %d]\n", i + 1); for (int j = 0; j < 4; j++) fprintf(f, "%s=%d\n", tn[j], mTasten[i][j]); fprintf(f, "\n"); } fclose(f); } SDLKey getTaste(int sp, int t) { return mTasten[sp][t]; } double getKIGeschwLin() { return mKIGeschwLin; } int getKIGeschwLog() { return mKIGeschwLog; } void setTaste(int sp, int t, SDLKey code) { mTasten[sp][t] = code; } void setKIGeschwLog(int kigl) { mKIGeschwLog = kigl; calcKILangsamLin(); } bool getSound() { return mSound; } void setSound(bool s) { mSound = s; } int getPlayers() { return mPlayers; } void setPlayers(int n) { mPlayers = n; } int getLevelTrack() { return mLevelTrack; } void setLevelTrack(int t) { mLevelTrack = t; } int getDifficulty() { return mDifficulty; } void setDifficulty(int d) { mDifficulty = d; } Str getLastLevel() { return mLastLevel; } void setLastLevel(const Str l) { mLastLevel = l; } } cuyo-2.1.0/src/sound.h0000644000175000017500000000554411674440320011513 00000000000000/*************************************************************************** sound.h - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2003,2004,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SOUND_H #define SOUND_H class Str; /* Wichtig: include inkompatibel.h muss _vor_ dem nachfolgenden stehen. */ #ifdef CUYO_SOUND #include #endif /* Namen der Sample-Dateien stehen in sound.cpp */ #define sample_nix (-1) #define sample_links 0 #define sample_rechts 0 #define sample_dreh 1 #define sample_fall 2 #define sample_land 3 #define sample_explodier 4 #define sample_menuclick 5 #define sample_menuscroll 6 #define sample_levelwin 7 #define sample_levelloose 8 #define fix_sample_anz 9 #define spieler_niemand 2 enum SoundOrt { so_fenster, so_lfeld, /* auch bei Einzelspieler */ so_rfeld, so_lsemi, so_rsemi, so_global }; namespace Sound { void init(); void destroy(); /** Sollte aufgerufen werden, wenn sich Pref->sound mglicherweise gendert hat */ void checkePrefsStatus(); /** Spielt die angegebene Mod-Datei immer wieder ab. Bei na = "" wird nix abgespielt. */ void setMusic(Str na); /** Ldt den angegebenen Sample und liefert eine Nummer zurck, mit dem man ihn abspielen kann. */ int ladSample(Str na); /** Gibt alle Samples wieder frei, die mit ladSample geladen worden sind, auer die, die init() geladen hat. Sollte nach Levelende aufgerufen werden, wenn die Levelsounds nicht mehr gebraucht werden. (Aber erst, wenn die ld-Dateien einzeln geladen werden.) */ void loescheUserSamples(); /** Spielt das Sample mit der angegebenen Nummer (die entweder eine der obigen Konstanten ist oder von ladSample zurckgeliefert wurde). so,xz,xn bestimmen die x-Position fr Stereo-Effekte. Dabei ist xz/xn ein Bruch, 0 fr den linken und 1 fr den rechten Rand von so. Bei so=so_global werden xz und xn ignoriert. */ void playSample(int nr, SoundOrt so, int xz=1, int xn=2); } #endif cuyo-2.1.0/src/pfaditerator.cpp0000644000175000017500000001210412400104765013366 00000000000000/*************************************************************************** pfaditerator.cpp - description ------------------- begin : Thu Jul 26 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2004,2006-2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "stringzeug.h" #include #include #include #include "fehler.h" #include "pfaditerator.h" #include "cuyointl.h" #include "global.h" enum { pfad_default, pfad_uebergeben, pfad_installation, anz_pfade }; int PfadIterator::gDefaultPfad = -1; PfadIterator::PfadIterator(Str dat, bool auch_gz /*= false*/, bool setzDefault /*= false*/): mPos(-1), mDatei(dat), mSetzDefault(setzDefault), mAuch_gz(auch_gz), mIstAbsolut(dat[0] == '/') { /* Damit wir hier nicht auch nochmal die ganzen berspringungen testen mssen, die in operator++() stehen, setzen wir mPos als erstes auf -1 und fhren dann gleich ein ++ aus. */ ++(*this); } PfadIterator::~PfadIterator() { /** Soll der default-Pfad gesetzt werden? */ if (mSetzDefault) { if (mIstAbsolut) { /* Gepfuscht: Absolute Pfade knnen nicht als default-Pfad gesetzt werden. Einzige Ausnahme: Es handelt sich um den bergebenen Pfad. */ if (nimmPfad(gLevelDatei) == nimmPfad(mDatei)) { /* Uff, Glck gehabt. */ gDefaultPfad = pfad_uebergeben; } else throw Fehler("%s","Internal error: got confused with all those paths I have to deal with."); } else { /* Alles normal. Kein absoluter Pfad. */ if (mPos != pfad_default && mPos < anz_pfade) gDefaultPfad = mPos; } } } /** Nchster Pfad */ PfadIterator & PfadIterator::operator++() { plusplusIntern(); if (mPos >= anz_pfade) { #if HAVE_LIBZ if (mAuch_gz) mDatei = mDatei + "[.gz]"; #endif Str versuche = ""; mPos = -1; plusplusIntern(); do { versuche = versuche + "\n " + pfad(); plusplusIntern(); } while (mPos 0) { /* Dann wird bald die Fehlermeldung ausgegeben. */ mPos = anz_pfade; } } else { /* Wenn es noch keinen Default-Pfad gibt, dann berspringen */ if (mPos == pfad_default && gDefaultPfad == -1) mPos++; /* Wenn keine ld-Datei an cuyo bergeben wurde, dann haben wir da auch keinen Pfad, in dem wir suchen knen. Also in dem Fall berspringen. */ if (mPos == pfad_uebergeben && !gDateiUebergeben) mPos++; /* Nicht noch ein zweites Mal im Default-Pfad suchen */ if (mPos == gDefaultPfad) mPos++; } // Ende von: kein absoluter Pfad } /** Vergisst, welcher Pfad als default gesetzt wurde */ void PfadIterator::loescheDefault() { gDefaultPfad = -1; } cuyo-2.1.0/src/punktefeld.cpp0000644000175000017500000000553711674440320013061 00000000000000/*************************************************************************** spielfeld.cpp - description ------------------- begin : Sat Oct 2 1999 copyright : (C) 1999 by immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2002,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "punktefeld.h" #include "leveldaten.h" #include "layout.h" #define L_ziffern_rechts 2 #define L_ziffern_dx 18 #define L_ziffern_rechts_eng 4 #define L_ziffern_dx_eng 15 Bilddatei * Punktefeld::gZiffernBild[2]; unsigned int Punktefeld::gRandSeed = (time(0) % 8191) | 1; Punktefeld::Punktefeld(): mPunkte(-1), mAugenZu(-1), mUpdateNoetig(true) { } void Punktefeld::setPunkte(int p) { mPunkte = p; mUpdateNoetig = true; } void Punktefeld::zwinkerSchritt() { if (mAugenZu >= 0) mUpdateNoetig = true; /* Hat mir mal jemand einen Pseudozufalls-Algorithmus? */ gRandSeed = (gRandSeed * 2369) % 8191; //fprintf(stderr, "%d\n", gRandSeed); if (gRandSeed < 300) { mAugenZu = gRandSeed / 60; mUpdateNoetig = true; } else mAugenZu = -1; } /* Malt, falls noetig, die Punkte neu */ void Punktefeld::updateGraphik(bool force/* = false*/) { if (!mUpdateNoetig && !force) return; mUpdateNoetig = false; Area::updateRect(0, 0, L_infos_breite, 32); Area::fillRect(0, 0, L_infos_breite, 32, ld->mHintergrundFarbe); bool eng = mPunkte > 99999; int x = L_infos_breite - (eng ? L_ziffern_rechts_eng : L_ziffern_rechts); if (mPunkte >= 0) { int pt = mPunkte; int n = 0; do { x -= eng ? L_ziffern_dx_eng : L_ziffern_dx; gZiffernBild[mAugenZu == n]->malBildchen(x, 4, pt % 10); n++; pt /= 10; } while (pt > 0); } } void Punktefeld::init() { for (int i=0; i<2; i++) gZiffernBild[i] = new Bilddatei(); gZiffernBild[0]->laden("pktZiffern.xpm"); gZiffernBild[1]->laden("pktZiffern2.xpm"); AutoColor::gGame.addUser(gZiffernBild[0]); AutoColor::gGame.addUser(gZiffernBild[1]); } void Punktefeld::destroy() { for (int i=0; i<2; i++) delete gZiffernBild[i]; } cuyo-2.1.0/src/ui.h0000644000175000017500000000465411674440321011002 00000000000000/*************************************************************************** ui.h - description ------------------- begin : Mit Jul 12 22:54:51 MEST 2000 copyright : (C) 2006 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2006,2008,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef UI_H #define UI_H #include "inkompatibel.h" #include "stringzeug.h" #include "leveldaten.h" // wegen grx, gry, max_spielerzahl; sollte woanders hin class Blatt; namespace UI { /** "construtor" */ void init(); /** "Descructor" */ void destroy(); void run(); /* Auf diese Surface muessen die Spielfelder malen */ SDL_Surface * getSpielfeldSurface(int sp); /* Zeigt *jetzt* den neuen Bildschirminhalt an */ void sofortAllesAnzeigen(); /* Zeigt den Bildschirminhalt zu einem vernnftigen Zeitpunkt neu an */ void nachEventAllesAnzeigen(); void setPunkte(int sp, int pt); void startSpiel(int lnr); /** Cuyo teilt dem ui mit, dass das Spiel zu Ende ist */ void stopSpiel(); /** Cuyo teilt dem ui mit, dass sich die Farbe des Randes gendert hat und der deshalb bei Gelegenheit neu gemalt werden muss */ void randNeuMalen(); /***** Die folgenden Methoden sollen nur von der ui-Haelfte des Programms aufgerufen werden und nicht von der cuyo-Haelfte *****/ /* Ein Blatt sollte selbst in seiner oeffnen()-Methode setBlatt(this) aufrufen. Kann man aber auch woanders aufrufen, wenn das entsprechende Blatt grad keinen oeffnen()-Aufruf braucht. */ void setBlatt(Blatt * b); void malText(const Str & text); void quit(); void setGeometry(int width, int height); } #endif cuyo-2.1.0/src/fehler.h0000644000175000017500000000746012400104763011623 00000000000000/*************************************************************************** fehler.h - description ------------------- begin : Fri Jul 21 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001,2002,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef FEHLER_H #define FEHLER_H #include #include "stringzeug.h" #include "cuyointl.h" /** Fehler, der gethrowt werden kann. Macht beim Erzeugen gleich ein bisschen Aufrumarbeiten: Blop::abbruchGleichzeitig() wird aufgerufen. */ class Fehler { friend Fehler iFehler(const char * fmt, ...); /** Erzeugt einen Fehler, bei dem der Text noch nicht gesetzt ist. Ist nur fr iFehler() gedacht. */ Fehler(); public: Fehler(Str text); Fehler(const char * fmt, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 2, 3))) #endif ; /** Liefert true, wenn dieser Fehler gerne eine Log-Datei schicken wrde, d. h. wenn es ein interner Fehler ist oder - bei nicht internen Fehlern - wenn _keine_ ld-Datei an Cuyo bergeben wurde. */ bool getSendLog() const; /** True, wenn ggf. "please send log" angehngt werden soll. GGf heit: Wenn getSendLog() true liefert. */ Str getText(bool mitLog = false) const; void setText(const Str & t); private: /** True bei internen Fehlern (d. h. bei Fehlern, die auf jeden Fall an mich gemailt werden sollen.) */ bool mIntern; /** Die Fehlermeldung */ Str mText; public: /** True, wenn es schon einen Code gab, der gesagt hat, wo der Fehler passiert ist. (Damit so was nicht zweimal gesagt wird.) */ bool mMitZeile; }; /** Erzeugt einen internen Fehler. */ Fehler iFehler(const char * fmt, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 1, 2))) #endif ; /* Self-explanatory... */ #define send_log_string \ "Please send the log-file \"cuyo.log\" to cuyo@karimmi.de" /* PBEGIN_TRY und PEND_TRY() werden in scanner.ll und parser.yy verwendet. Sie fangen Fehler ab und geben sie aus, damit weitergeparst werden kann und mehrere Fehler gleichzeitig ausgegeben werden knnen. (P = Parse) */ #define PBEGIN_TRY try { #define PEND_TRY(on_error) } catch (Fehler fe) {\ print_to_stderr(_sprintf("%s:%d: %s\n", gDateiName.data(), gZeilenNr, \ fe.getText().data())); \ gGabFehler = true;\ { on_error; }\ } /* Debug-Macro: Zhlt, wie oft es aufgerufen wird. Gibt nach schritte vielen Malen den neuen Wert und string aus. */ #define D_ZAEHLEN(schritte, string) do { \ static int _zzz = 0;\ if (_zzz++ % schritte == 0) print_to_stderr(_sprintf(string" %d\n", _zzz)); \ } while (0) /* Damit ich nicht aus versehen das falsche ASSERT verwende...: */ #undef ASSERT #define CASSERT(blub) do { \ if (!(blub)) \ throw iFehler("Internal error: \"%s\" in %s:%d", \ #blub, __FILE__, __LINE__); \ } while (0) #define SDLASSERT(blub) do { \ if (!(blub)) \ throw iFehler("SDL error: \"%s\" in %s:%d: %s", \ #blub, __FILE__, __LINE__, SDL_GetError()); \ } while (0) #endif cuyo-2.1.0/src/definition.h0000644000175000017500000000571211674440316012515 00000000000000/*************************************************************************** definition.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2002,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DEFINITION_H #define DEFINITION_H #include "stringzeug.h" /** Diese Klasse hat als einzigen Zweck, gemeinsamer Vater von Code und VarDefinition zu sein. Das ist der Datentyp, den DefKnoten::speicherDefinition() und DefKnoten::getDefinition() nehmen. */ class Definition { public: virtual ~Definition() {} }; /***********************************************************************/ /* VarDefinition */ #define vd_variable 0 #define vd_spezvar 1 #define vd_spezconst 2 #define vd_konstante 3 /* Default-Arten. Sagen im wesentlichen aus, wann der Default genommen wird. */ enum { da_nie, /* gar kein Default */ da_keinblob, /* nur fr outside-Blobs */ da_init, da_kind, /* wenn kind gendert wird */ da_event }; /** Variablen-Definition. Nicht nur fr benutzer-definierte Variablen gibt es eine Variablen-Definition, sondern auch fr fast alle automatisch definierten Spezial-Dinge. berblick ber die ganzen Variablen- und Konstanten-Arten: Normale (benutzerdefinierte) Variablen: spezvar_anz <= mNummer Spezial-Variablen (automatisch definierte): 0 <= mNummer < spezvar_anz Spezial-Konstanten (= nur-lese-Variablen): spezconst_anz <= mNummer < 0 Belegt keinen Platz in Blop::mDaten. Normale Konstanten: Hat keine Nummer; schon beim Parsen wird jedes Auftreten der Variable durch den Wert ersetzt. Belegt keinen Platz in Blop::mDaten. Unsichtbare Variablen: Dafr gibt es keine VarDefinition. Hat aber auch eine Nummer und belegt Platz in Blop::mDaten. */ class VarDefinition: public Definition { public: Str mName; int mDefault; int mArt; int mDefaultArt; int mNummer; // VarDefinition(Str na, int d, int a = vd_variable, int n = 0); VarDefinition(Str na, int d, int a, int da, int n); int getDefault() const {return mDefault;} int getDefaultArt() const {return mDefaultArt;} }; #endif cuyo-2.1.0/src/blopbesitzer.h0000644000175000017500000000552211674440315013067 00000000000000/*************************************************************************** blopbesitzer.h - description ------------------- begin : Sat Jul 14 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001-2003,2005,2006,2008,2010,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef BLOPBESITZER_H #define BLOPBESITZER_H /* Rckgabewerte von getVerbindungen(). Achtung: Wenn diese Konstanten gendert werden, muss auch Sorte::malMitVerbindungen gendert werden */ #define verbindung_rechts 0x0004 #define verbindung_links 0x0040 #define verbindung_unten 0x0010 #define verbindung_oben 0x0001 #define verbindung_lu 0x0020 #define verbindung_lo 0x0080 #define verbindung_ru 0x0008 #define verbindung_ro 0x0002 #define verbindung_solo 0x0100 #define verbindung_alle4 0x0055 // wird von Go-Steinen benutzt class Blop; class Spielfeld; /**Klasse, die Blops "besitzt" und von ihrem Besitztum erfahren mchte, wenn es sich verndert. *@author Immi */ class BlopBesitzer { public: BlopBesitzer(Spielfeld * spf); virtual ~BlopBesitzer() {} /** Da BlopGitter der einzige BlopBesitzer ist, der diese Methode berschreiben mchte (naja, fast), kann sie auch gleich daran angepasst sein... */ virtual int getBesitzVerbindungen(int /*x*/, int /*y*/) const { return verbindung_solo; } /** For Blopgitters, this returns the Blop at the specified coordinates. May not be called otherwise, or with incorrect coordinates. This is used for accessing variables at foreign coordinates. */ virtual const Blop & getFeld(int /*x*/, int /*y*/) const; /** Dito. */ virtual Blop & getFeld(int x, int y); /** Liefert true, wenn die angegebenen Koordinaten "im BlopBesitzer" liegen. Genauer: Liefert true, wenn getFeld() mit diesen Koordinaten aufgerufen werden darf. */ virtual bool koordOK(int /*x*/, int /*y*/) const { return false; } virtual const Blop * getFall(int a) const; virtual Blop * getFall(int a); virtual int getSpezConst(int /*vnr*/, const Blop *) const; protected: Spielfeld * mSpf; }; #endif cuyo-2.1.0/src/blop.h0000644000175000017500000004115212411361471011311 00000000000000/*************************************************************************** blop.h - description ------------------- begin : Thu Jul 20 2000 copyright : (C) 2000 by Immi email : cuyo@pcpool.mathematik.uni-freiburg.de Modified 2001-2003,2005,2006,2008,2010,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef BLOP_H #define BLOP_H #include #include #include "bildstapel.h" #include "ort.h" class Str; class BlopBesitzer; class Variable; class VarDefinition; /* blopart_... wird jetzt in sorte.h definiert... */ // liefert getFarbe manchmal zurck #define keine_farbe (-1) // Wert von mX und mY, falls das Blop nicht im Gitter ist #define keine_koord 0x7fff // Rckgabewert von getKonstante() #define keine_konstante 0x7fff /* Var-Nummern von speziellen Variablen */ #define spezvar_file 0 #define spezvar_pos 1 #define spezvar_kind 2 #define spezvar_version 3 #define spezvar_quarter 4 #define spezvar_out1 5 #define spezvar_out2 6 #define spezvar_kind_beim_letzten_draw_aufruf 7 #define spezvar_inhibit 8 #define spezvar_gewicht 9 #define spezvar_verhalten 10 #define spezvar_falling_speed 11 #define spezvar_falling_fast_speed 12 #define spezvar_am_platzen 13 #define spezvar_anz 14 /* spezvar_namen[] in knoten.cpp definiert. Es enthlt auch die Namen der spezconst */ /* Var-Nummern von speziellen Konstanten */ #define spezconst_turn (-1) #define spezconst_connect (-2) #define spezconst_falling (-3) #define spezconst_size (-4) #define spezconst_loc_x (-5) #define spezconst_loc_y (-6) #define spezconst_loc_p (-7) #define spezconst_players (-8) #define spezconst_falling_fast (-9) #define spezconst_exploding (-10) #define spezconst_loc_xx (-11) #define spezconst_loc_yy (-12) #define spezconst_basekind (-13) #define spezconst_time (-14) #define spezconst_info (-15) #define spezconst_anz 15 /* Return-Wert von BlopBesitzer::getSpezConst(), der besagt, dass der Default-Wert benutzt werden soll. Um das Einsetzen des Default-Werts kmmert sich Blop::getSpezConst() */ #define spezconst_defaultwert 0x7fff #define bits_pro_int (8*sizeof(int)) /* Bit-Konstanten fr spezvar_verhalten */ #define platzt_bei_gewicht 1 #define platzt_bei_platzen 2 #define platzt_bei_kettenreaktion 4 #define berechne_kettengroesse 8 #define verhindert_gewinnen 16 #define schwebt 32 /**Diese 32x32 Pixel groen Dinge heien Blops. In diesem Objekt wird der Zustand eines Blops gespeichert (aber nicht seine Position). Es gibt auch den nicht-Blop. @author Immi */ class Blop { public: /** Erzeugt einen uninitialisierten Blop (der noch nicht verwendet werden kann, aber dafr auch keine Fehler hervorruft, wenn irgend was anderes nicht initialisiert ist). Das Uninitialisiert sein eines Blops erkennt man daran, dass mDaten 0 ist. */ Blop(); /** Constructor... s ist Sorte und v Version. v=-1 heit Zufallsversion. */ Blop(int s, int v=-1); /** Copy-Contructor... */ Blop(const Blop & b); /** Destructor */ ~Blop(); /** Tut, was man erwartet. Tut *nicht* fr reine Bildstapelblops. */ Blop & operator=(const Blop & b); /** kopiert die Daten von b. Erwartet, dass die Datenlngen schon bereinstimmen. */ void kopiere(const Blop & b); /** Verwandelt einen uninitialisierten Blop in einen Bildstapelblop; * oder erzeugt den bildstapel neu (fr Stapelhhennderungen bei * Levelwechsel */ void erzeugeBildstapel(); /** Setzt Besitzer und Besitzer-Informationen. Braucht nur am Anfang einmal aufgerufen zu werden. Muss auch fr den Global-Blop aufgerufen werden; sonst darf kein Code ausgefhrt werden. */ void setBesitzer(BlopBesitzer * bes = 0, ort_absolut ort = ort_absolut(absort_nirgends)); /** Fhrt die ganzen Animationen durch (Codeanimationen und platzen). Sollte innerhalb einer Gleichzeit aufgerufen werden. */ void animiere(); /** Fhrt den Code des angegebenen Events aus (falls Code zu diesem Event existiert. Sollte innerhalb einer Gleichzeit aufgerufen werden. Die Event-Nummern sind in sorte.h definiert. */ void execEvent(int evtnr); /** Wie execEvent; wird aber nicht sofort ausgefhrt, sondern erst beim nchsten Aufruf von sendeGeschedulteEvents() */ void scheduleEvent(int evtnr); /** Startet den Platzvorgang. Sollte nicht fr leere Blops aufgerufen werden. */ void lassPlatzen(); /** Teilt einem Farbblop die (neue) Gre seiner Kette mit. */ void setKettenGroesse(int anz); /** Liefert true, wenn der Blop sich seit dem letzten Aufruf von takeUpdaten() verndert hat und deshalb neu gezeichnet werden muss. Liefert auf jeden Fall true, wenn der Blop zwischendrin kopiert wurde (mit = oder copy-Constructor). */ bool takeUpdaten(); /***** Funktionen, die nix verndern *****/ /** malt den Blop, wobei xx und yy in Pixeln angegeben ist; der Hintergrund wird vorher gelscht. If apply_mirror is set and the level is an upside-down one, then the respective coordinate-transformation is applied. */ void malen(int xx, int yy, bool apply_mirror=true) const; /** liefert die Art zurck */ int getArt() const; /** liefert die Farbe zurck, aber nur, wenns wirklich ein farbiges Blop ist (sonst wird keine_farbe zurckgeliefert) */ int getFarbe() const; /** liefert die Version zurck. Wird nur noch von Hifea benutzt. */ int getVersion() const; /** liefert true, wenn der Blop am platzen ist */ bool getAmPlatzen() const; /** Liefert true, wenn wir uns mit b verbinden wollen. Auch hier drfen wir allerdings nur die alten Var-Werte von b lesen */ bool verbindetMit(const Blop & b) const; /** Sagt (ggf.) dem Feuer, wie es sich verbinden kann. */ int getBesitzVerbindungen(int x, int y, bool feuer) const; /** liefert true, wenn sich der Blop auch mit dem angegebenen Rand verbindet */ bool verbindetMitRand(int seite) const; /** Liefert zurck, wie viele Punkte dieser Stein zur Kettengre beitrgt (normalerweise 1). */ int getKettenBeitrag() const; /** Liefert zurck, ob ein bestimmtes Platzverhalten vorliegt */ bool getVerhalten(int verhalten) const; /** Liefert zurck, welchem Spieler (0 oder 1) der Blop gehoert oder 2 bei globalblop */ int getSpieler() const; /** Liefert einen String der Art "Blop Drachen at x,y". Fr Fehlermeldungen. */ Str toString() const; /** Wird vom Code aufgerufen, wenn es Punkte geben soll. */ void bekommPunkte(int pt) const; /** Wird vom Code aufgerufen, wenn ein Message angezeigt werden soll. */ void zeigMessage(Str mess) const; const ort_absolut & getOrt() const; protected: /* Achtung! Beim Einfgen neuer Felder muss auch aendern(...) gendert werden. Und operator== vielleicht auch. */ /** Die aktuelle Gre der Kette, in der dieser Blop hngt. Kann als spezconst abgefragt werden. Wird von setKettenGroesse() gesetzt. */ int mKettenGroesse; /***** Variablen, die sich nie ndern *****/ /* Sie sollten am besten const sein; das geht aber aus technischen Grnden beim BlopGitter nicht. Sie brauchen nur am Anfang einmal gesetzt zu werden, weil sie bei Zuweisungen nicht (mehr) verndert werden. */ /** True, wenn noch nicht setBesitzer() aufgerufen wurde. Ist bei Blops der Fall, die grade in irgendwelchen Zwischenspeichervariablen rumliegen. Wird nur zu Fehlererkennungszwecken bentigt: Bei freilaufenden Blops darf kein Cual-Code ausgefhrt werden. */ bool mFreilaufend; /** ggf. Pointer auf den Besitzer dieses Blops */ BlopBesitzer * mBesitzer; ort_absolut mOrt; protected: // Protected methods /** Liest die aktuelle Sorte (oder die vom Beginn der Gleichzeit) dieses Blops aus den Leveldaten aus. */ Sorte * getSorte(bool vergangenheit = false) const; /** Fragt beim Besitzer an, in welche Richtungen dieser Blop verbunden werden kann und liefert das zurck. */ int getVerbindungen() const; /***** Variablenverwaltung; Beziehung zum Code *****/ protected: /** Lnge von mDaten. Sollte, wenn der Blop verwendet wird, auch immer mit ld->mLevelKnoten->getDatenLaenge() bereinstimmen. (Dafr sorgen Konstruktoren und =-Operator.)*/ int mDatenLaenge; /** Hier stehen die ganzen Variablen drin, die im Code definiert wurden. Man kann da 1. direkt drauf zugreifen oder 2. getVariable() und setVariable() verwenden. 1. sollte man tun, wenn man auerhalb einer Gleichzeit etwas tut; 2. sollte man innerhalb einer Gleichzeit tun, damit auch die zeitverzgerten Zugriffe funktionieren. */ int * mDaten; /** Der alte Variablen-Wert. Wird bentigt, damit anderer Code nicht zu frh auf den neuen Wert zugreift. */ int * mDatenAlt; /** Wenn etwas fr alle Nachbarn berechnet wird, dann, wird das getan, indem die relativen Koordinaten hier eingestellt werden. D. h. getVariable() greift addiert noch diese Koordinaten. */ //int mEvalNachbarDx; //int mEvalNachbarDy; /** Die Zeitnummer, zu dessen Anfang mDatenAlt gehrt. */ long mZeitNummerDatenAlt; /** Zeitnummer fr initStapel-Lazy-Aufruf. */ long mZeitNummerLeereStapel; /** Wird nur innerhalb von animiere() gebraucht, whrend ein Cual-Code luft. True, wenn der Cual-Code malen darf. */ bool mMalenErlaubt; /** Der aktuelle Bildstapel */ BildStapel mBild; /** Der nicht mehr ganz aktuelle Bildstapel */ BildStapel mBildAlt; public: /* Macht alle Initialisierungen, die vor jedem Schritt gemacht werden */ void initSchritt(); int getSpezConst(int vnr, bool vergangenheit = false) const; /** High-Level; Wird benutzt, wenn eine Variable im cual-Programm steht. Kmmert sich auch um all das @()-Zeug und die Zeitverzgerung. */ int getVariable(const Variable & v); void setVariable(const Variable & v, int wert, int op); /** Low-Level; wird von den High-Level-Funktionen aufgerufen und vom Cual-Programm bei internen Variablen. Achtung: Fremdblops sollten *immer* die Zeitverschobenen Versionen benutzen. */ int getVariable(int vnr) const; void setVariable(int vnr, int wert, int op); private: /** Noch low-Levler: Speichert alte Werte nicht ab, wie sich das innerhalb einer Gleichzeit gehren wrde. */ void setVariableIntern(int vnr, int wert, int op); /** spezvar_kind ist eine ganz spezielle spezvar: Ganz lowlevel passiert hier noch mehr. */ void setKindIntern(int wert); public: inline bool getBoolVariable(int vnr) const { //CASSERT(mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); //CASSERT((int) (vnr / bits_pro_int) < ld->mLevelKnoten->getDatenLaenge()); return mDaten[vnr / bits_pro_int] & (1 << (vnr % bits_pro_int)); } inline void setBoolVariable(int vnr, bool wert) { /* Vielleicht sollte man hier merkeAlteVarWerte() aufrufen. Das wre ntig, wenn man fr die Bool-Variablen vergangenheitslesen wollen wrde. Will man aber nicht. Also brauchen wir auch nicht die alten Werte abzuspeichern. */ //CASSERT(mDatenLaenge == ld->mLevelKnoten->getDatenLaenge()); int pos = vnr / bits_pro_int; //CASSERT(pos < ld->mLevelKnoten->getDatenLaenge()); int mask = 1 << (vnr % bits_pro_int); if (wert) mDaten[pos] |= mask; else mDaten[pos] &= ~mask; } /** Zeitverschobener Variablenzugriff: Fremdblops sollten immer diese Routinen verwenden. */ /** Liefert den Wert der Variable zum Anfang der Gleichzeit zurck. */ int getVariableVergangenheit(int vnr) const; /** Setzt die Variable am Ende der Gleichzeit. */ void setVariableZukunft(int vnr, int wert, int op); /** Speichert, falls ntig, die Variablenwerte in mDatenAlt, fr zeitverzgerten Variablenzugriff. Falls ntig bedeutet: Falls sie in dieser Gleichzeit noch nicht gespeichert wurden. Wird von set[Bool]Variable(vnr) aufgerufen, bevor eine Variable gendert wird. */ void merkeAlteVarWerte(); /** Schaut, ob noch ein Lazy-Evaluation-initStapel()-Aufruf aussteht und fhrt ihn ggf. aus. (Siehe lazyLeereStapel().) Ist zwar eigentlich nicht wirklich const, wird aber in Situationen aufgerufen, wo man sich eigentlich const fhlen mchte. */ void braucheLeereStapel() const; /** Speichert das aktuelle Bild (d. h. aus den spezvar file und pos) in die Mal-Liste */ void speichereBild(); /** Speichert das aktuelle Bild (d. h. aus den spezvar file und pos) in die Mal-Liste von einem anderen Blop, und zwar so, dass es in Ebene ebene gemalt wird. */ void speichereBildFremd(Ort & ort, int ebene); protected: /** Nummer eines Events, das der Blop noch erwartet; event_keins, wenn * der Blop kein Event erwartet. Wert nur mit den Methoden * scheduleEvent() und unscheduleEvent() ndern, damit das auch * in der globalen Liste aktualisiert wird. */ int mScheduleEventNr; /** Wo in gSEListe steht dieser Blop (falls er ein Event will) */ int mSEPos; /** Lscht diesen Blop aus gWEListe (falls ntig) */ void unscheduleEvent(); /** Liste der Blops, die ein Event wollen. */ static std::vector gSEListe; public: /** Ruft alle geschedulten Events aus. */ static void sendeGeschedulteEvents(); void playSample(int nr) const; /********** Statisches Zeug **********/ public: /** Wenn es fr den Cual-Programmierer so aussehen soll, als wrden Dinge gleichzeitig passieren (d. h. @ greift zeitverzgert zu), dann sollte man erst beginGleichzeitig() aufrufen, dann die ganzen Blop-Programm- aufrufe, und dann endGleichzeitig(). */ static void beginGleichzeitig(); /** Siehe beginGleichzeitig(). */ static void endGleichzeitig(); /** Bricht eine Gleichzeit einfach ab. Wird beim Auftreten von Fehlern aufgerufen, und zwar vom Constructor von Fehler(). */ static void abbruchGleichzeitig(); /** Tut so, als wrde es initStapel() fr alle Blops aufrufen (d. h. die Grafiken lschen. In Wirklichkeit passiert das mit Lazy-Evaluation, d. h. erst dann, wenn's wirklich gebraucht wird. Gebraucht wird's natrlich, wenn ein Blop animiert wird. Aber auch, wenn ein Nachbarblop etwas auf diesen Blop malt. */ static void lazyLeereStapel(); /** Stellt ein, ob Blops */ //static void setInitEventsAutomatisch(bool iea); protected: /** True zwischen Aufrufen von beginGleichzeitig() und endGleichzeitig(). Ist vermutlich nicht wirklich ntig, aber ich fhl mich damit wohler. */ static bool gGleichZeit; /** Wird bei jeder Gleichzeit um eins hochgezhlt. Jeder Blop hat auch so eine Variable. So wei der Blop, ob er in dieser Zeit schon ein Programm hat laufen lassen. (Known Bug: Nach einigen Jahren Spielzeit passieren Fehler... man knnte diese Variable vor jedem Level frisch initialisieren.) */ static long gAktuelleZeitNummerDatenAlt; /** Entsprechend fr initStapel()-Aufrufe. D. h.: Wenn mZeitNummerLeereStapel eines Blops kleiner als gAktuelleZeitNummerLeereStapel ist, muss initStapel() noch aufgerufen werden. */ static long gAktuelleZeitNummerLeereStapel; /** True heit, dass neu erzeugte Blops automatish init-Events bekommen. (true ist default) */ //static bool gInitEventsAutomatisch; /** Enthlt alle Informationen fr eine Zukunftszuweisung. (Welcher Blop, welche Variable, welcher neue Wert, welche Operation) */ struct tZZ { Blop * mBlop; int mVNr; int mWert; /** "=", "+=", "-=", etc.; hat einen der Codeart-Werte set_code, add_code, sub_code, etc. */ int mOperation; tZZ() {} tZZ(Blop * b, int vnr, int w, int op): mBlop(b), mVNr(vnr), mWert(w), mOperation(op) {} }; /** Liste der Zukunfts-Zuweisungen, die sich whrend einer Gleichzeit ansammeln. */ static std::vector gZZ; static int gZZAnz; /***** Fr globales Animationszeug *****/ public: /** Der Blop, der ld->mGlobalCode ausfhrt. Wird am Ende von LevelDaten::ladLevel() initialisiert. */ static Blop gGlobalBlop; }; #endif cuyo-2.1.0/src/configdatei.h0000644000175000017500000000667211674440316012647 00000000000000/*************************************************************************** configdatei.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Immi email : cuyo@karimmi.de Modified 2001,2002,2006,2011 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CONFIGDATEI_H #define CONFIGDATEI_H #include #include "stringzeug.h" #include "sdltools.h" #include "inkompatibel.h" /**Parst die .cuyo-Datei. (level descr wird von DatenDatei geparst.) *@author Immi */ class ConfigDatei { public: ConfigDatei(const Str & name); ~ConfigDatei(); /** Liefert den aktuellen Abschnitt */ Str getAbschnitt() const; /** Wechselt zum angegebenen Abschnitt. (Abschnitte werden durch [bla] eingeleitet.) Liefert false, wenn der Abschnitt nicht existiert. */ bool setAbschnitt(Str na = ""); /** Liefert den Eintrag, wenn er existiert, sonst den default-String (der per default "" ist). */ protected: /** Liefert true, wenn der Eintrag existiert; schreibt ihn ggf. nach ret */ bool getEintragIntern(const Str & schluessel, Str & ret) const; public: Str getEintrag(const Str & schluessel, Str def = "") const; /** Gibt's den Eintrag? */ bool hatEintrag(const Str & schluessel) const; /** Liefert den Eintrag als Zahl, wenn er existiert, sonst die default-Zahl. */ int getZahlEintrag(const Str & schluessel, int def = 0) const; // /** Liefert den Eintrag als Farbe, wenn er existiert, sonst die // default-Farbe. */ // Color getFarbEintrag(const Str & schluessel, // const Color & def = Color(0, 0, 0)) const; /** Liefert einen Eintrag als Komma-getrennte Liste ohne Beachtung der Reihenfolge */ int getMengenEintrag(const Str & schluessel, std::set & menge) const; protected: Str mName; /** 0, wenn sich die Datei nicht ffnen lie */ FILE * mDatei; Str mAbschnitt; int mAbschnittPos; /** Liefert zurck, was fr ein Zeilentyp die Zeile ist: leer, abschnitt, zuweisung. In a und b werden interessante Positionen abgespeichert... */ int getZeilenTyp(const Str & z, int & a, int & b) const; /** Wenn ein Parse-Fehler in Zeile z aufgetreten ist... */ void fehlerZeile(const Str & z) const; }; /** ndert den Abschnitt zeitweilig (so lange, bis das Objekt wieder zerstrt wird.) */ class ConfigAbschnittPush { public: ConfigAbschnittPush(ConfigDatei & c, const Str & name): mConf(c) { mMerk = mConf.getAbschnitt(); mKlappt = mConf.setAbschnitt(name); } ~ConfigAbschnittPush() { if (mKlappt) mConf.setAbschnitt(mMerk); } bool hatGeklappt() { return mKlappt; } protected: ConfigDatei & mConf; Str mMerk; bool mKlappt; }; #endif cuyo-2.1.0/src/version.h0000644000175000017500000002122412375145102012040 00000000000000/*************************************************************************** version.h - description ------------------- begin : Sat Mar 25 2006 copyright : (C) 2006 by Mark Weyer email : cuyo-devel@nongnu.org Modified 2006,2008,2009,2011,2014 by the cuyo developers ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef VERSION_H #define VERSION_H #include "stringzeug.h" #include #include #include enum { /* Die nur-ausschlieend-Dimensionen */ dima_schwierig, anzahl_dima }; enum { /* Die ausschpfend- (und also auch ausschlieend-) Dimensionen */ dimaa_numspieler = anzahl_dima, dimaa_levelpack, anzahl_dim }; struct Dimension { bool mInitialized; int mGroesse; std::vector mMerkmale; std::vector mProsaNamen; std::vector mErklaerungen; Dimension(); void init(int, const char * const * const, const char * const * const, const char * const * const); int suchMerkmal(const Str &); /* Ersatzwert -1 */ }; class Version { friend class VersionMapIntern; /* eigentlich nur assertWohlgeformt() */ std::set mMerkmale; public: /** Leere Menge, also keine spezielle Version */ Version(); /** Spezialisiert die Version um ein Merkmal. Das darf aber nicht "" sein. */ void nochEinMerkmal(const Str &); bool enthaelt(const Str & merkmal) const; bool speziellerAls(const Version &) const; bool operator < (const Version & v2) const; bool operator == (const Version & v2) const; bool operator != (const Version & v2) const; Str toString() const; /* Liefert die Ausprgung der Dimension dimension, oder def, wenn es keine gibt. Prft nach, da es hchstens ein solches Merkmal gibt. Das Merkmal wird dabei gelscht. Bei mehreren Ausprgungen gibt es eine exception vom Typ Str, die nicht besonders aussagekrftig ist: Sie enthlt nur diese Merkmale als string. Sie ist dazu da, gecatcht und mit einer Erklrung versehen in einen Fehler oder iFehler verwandelt zu werden. */ Str extractMerkmal(int dim, const Str & def); int extractMerkmal(const Dimension & dim, int def); /** Ab hier Objektmodul: ==================== (Das heit, ab jetzt ist alles static und die Klasse Version daher nicht mehr als ein namespace Version.) */ /** Among other things, this sets the informational texts, so it should be called after init_NLS(). */ static void init(); /** Liefert zu einer Dimension die zulssigen Merkmale. Das sind immer ausschlieend-Dimensionen. Ob es auch ausschpfend- Dimensionen sind, braucht den Aufrufer nicht zu interessieren, spiegelt sich aber darin wider, da der leere String fehlt. */ static const std::set auspraegungen(int dim); static Dimension gLevelpack; static Dimension gSchwierig; /** Beeinflussen die Wohlgeformtheitsberprfung. Eine (Merkmal-)Menge ist legal, wenn sie aus keiner Menge aus gAusschliessend und gAusschoepfend mehr als ein Element enthlt. Sie ist superlegal, wenn sie weiterhin aus jeder Menge aus gAusschoepfend genau ein Element enthlt. Superlegale Merkmalmengen entsprechen Versionen, in denen das Spiel existieren kann. Versionen in Wertangaben drfen auch unterspezifiziert sein und ihre Merkmalmengen brauchen daher nur legal zu sein. Eine Versionenmenge ist wohlgeformt, wenn jede Version in ihr legal ist, und sie unter jeder superlegalen Version genau ein maximales Element aufweist. Ein vorhandener Default zhlt fr die allgemeinste Version, ohne selbst in der Menge vorzukommen. */ static std::set > gAusschliessend; static std::set > gAusschoepfend; }; class VersionMapIntern { /** In mGeprueft stehen die Schlssel, deren Versionen schon auf Wohlgeformtheit geprft wurden. Sobald das passiert ist, werden keine weiteren Eintrge mehr zugelassen (und es wird nicht nochmals geprft). Daher ist Bestapproximierende auch nicht const. Die, die die Prfung auch bestanden haben, stehen dann in mGut. Da diese Stempel vergeben werden von Funktionen, die eigentlich nur Daten auslesen, hab ich die Auslesefunktionen als "const" deklariert und dafuer diese Stempelvariablen als "mutable" */ mutable std::set mGeprueft; mutable std::set mGut; std::map > mVerzeichnis; public: /** Der Index luft ber alle Daten, also alle Versionen aller Schlssel. Der constIndex natrlich auch. */ class IndexIntern { friend class VersionMapIntern; std::map > * eigner; std::map >::iterator intern1; std::map::iterator intern2; public: IndexIntern(VersionMapIntern &); inline bool ende() const {return intern1==eigner->end();} void operator++ (); const Str & schluessel() const; /** Vorbedingung: !ende() */ protected: void* datumIntern() const; /** Vorbedingung: !ende() */ }; class constIndexIntern { friend class VersionMapIntern; const std::map > * eigner; std::map >::const_iterator intern1; std::map::const_iterator intern2; public: constIndexIntern(const VersionMapIntern &); inline bool ende() const {return intern1==eigner->end();} void operator++ (); const Str & schluessel() const; /** Vorbedingung: !ende() */ const Version & version() const; /** Vorbedingung: !ende() */ protected: const void* datumIntern() const; /** Vorbedingung: !ende() */ }; friend class VersionMapIntern::IndexIntern; friend class VersionMapIntern::constIndexIntern; VersionMapIntern(); /** Lscht den Eintrag. Es gibt keine leeren Versionsmengen: Ist es die letzte Version seines Schlssels, wird der Schlssel ganz vergessen. */ void loescheEintrag(IndexIntern &); bool enthaelt(const Str &) const; bool enthaelt(const Str &, const Version &) const; protected: void neuerEintragIntern(const Str & schluessel, const Version & version, void* inhalt); /** Liefert unter den Eintrgen, die zu schluessel existieren, den, dessen Version die grte Teilmenge von version ist. Bei defaultVorhanden wird vielleicht ein Nullzeiger zurckgegeben. Ruft assertWohlgeformt auf. */ void* BestapproximierendeIntern(const Str & schluessel, const Version & version, bool defaultVorhanden) const; private: bool geprueft(const Str & schluessel) const; /** Testet, ob Bestapproximierende eindeutig sind. falls nicht defaultVorhanden wird auch auf Existenz geprft. Bei nicht bestandenem Test gibts einen Fehler. */ void assertWohlgeformt(const Str & schluessel, bool defaultVorhanden) const; }; template class VersionMap : public VersionMapIntern { public: class Index : public IndexIntern { public: inline Index(VersionMap & m) : IndexIntern(m) {} inline Datum* datum() const {return (Datum*) datumIntern();} }; class constIndex : public constIndexIntern { public: inline constIndex(const VersionMap & m) : constIndexIntern(m) {} inline const Datum* datum() const {return (Datum*) datumIntern();} }; inline void neuerEintrag(const Str & schluessel,const Version & version, Datum* inhalt) { neuerEintragIntern(schluessel, version, (void*) inhalt); } /** Liefert unter den Eintrgen, die zu schluessel existieren, den, dessen Version die grte Teilmenge von version ist. Bei defaultVorhanden wird vielleicht ein Nullzeiger zurckgegeben. Ruft assertWohlgeformt auf. */ inline Datum* Bestapproximierende(const Str & schluessel, const Version & version, bool defaultVorhanden) const { return (Datum*) BestapproximierendeIntern(schluessel,version, defaultVorhanden); } }; #endif cuyo-2.1.0/icons/0000755000175000017500000000000012422656731010615 500000000000000cuyo-2.1.0/icons/64x64/0000755000175000017500000000000012422656731011410 500000000000000cuyo-2.1.0/icons/64x64/apps/0000755000175000017500000000000012422656731012353 500000000000000cuyo-2.1.0/icons/64x64/apps/cuyo.png0000644000175000017500000000241311543651571013760 00000000000000PNG  IHDR@@iqbKGDC pHYs  tIME  t4VIDATxZq0]eH )r%@ 訔J %GH ],F;ɷ3`} ;F)DDJ@ h|e5qeF`(bz9bWyKtM7M3Ӷs}d{hn&"g~FIӄ!kWAJESNm0@Q8ӵd}iƷ "!u$xpPe?rK°KepG(bFa?W|>gRëᯒ`"b t(| 6<ۻ#@P ǀ }\y?!^VNٻ,}|݅K* @bz}ߓw'x0ƀs(ж팜4Y1n3|/xJ)p ʲi1vjY$r]m -=Efzժa߯L: fmRjj1fթ$,>yBIRͣ}~~zդu:J~0>`=B36 IV' vWw8@'2L Bpl'MEĥMus#?8M6LzbÒ[YAa^]dZ@s`ݬz >ӮLGJ)RJkT RW]9.ao~||`UUXe֒Y,h;1~;ιfKvu4 t]gHczGLz_{z,7^<֔jm以6D4Z_kJˈJTC4#ECW> )u3Mx>[k9 W&OPKl }R\z:]vBurܩMׄGEw 'o[ K&v/&D8d4W.zzt^B@Ysz7 l)D5?EK:(m#Q&-c UUYܳ/FUUY>$ELHx7Xݶ-mɔLqZRW #bPdlAVHY;]'$}KBD$\A~?&d Y MmVn!ihtIENDB`cuyo-2.1.0/icons/cuyo.desktop0000644000175000017500000000040611543402041013071 00000000000000[Desktop Entry] Name=Cuyo Icon=cuyo Type=Application Terminal=false Categories=Game;BlocksGame; Encoding=UTF-8 Comment=Play a tetris like game with many levels Comment[de]=Ein Tetris-artiges Spiel mit vielen Leveln spielen Exec=cuyo GenericName=Tetris like game cuyo-2.1.0/icons/32x32/0000755000175000017500000000000012422656731011376 500000000000000cuyo-2.1.0/icons/32x32/apps/0000755000175000017500000000000012422656731012341 500000000000000cuyo-2.1.0/icons/32x32/apps/cuyo.png0000644000175000017500000000116311543651571013747 00000000000000PNG  IHDR szzbKGD pHYs  tIME  IDATXW ;D2h>RFeFp `H`6طsV3>.36YRURv,pO5WEr΀@DUwDGR T(PRM{Dyッր9X{Q8" Fv==2 h !TBǣfD9U},g~c XkV2D `f0laHy^-f\Kލs>V'Wrjh (u.y`#?_'.0{9T?V]cφ{91dʺ9ڪܶ39ZWƥ&_Q[fֳtCᄈBh'9섣 &ރ#SO.i6" N<"`4A)ߛN֒D;Rj?P~xj\[`FeF^Jkh:@%&ulQMF!N@weNgڹk]K/w&chQIENDB`cuyo-2.1.0/icons/Makefile.in0000644000175000017500000003477312422656610012614 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright 2007 by the cuyo developers # Maintenance modifications 2008,2011,2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = icons DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(iconsdir)" DATA = $(desktop_DATA) $(nobase_icons_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ desktopdir = $(datarootdir)/applications desktop_DATA = cuyo.desktop # The following would automatically put cuyo with the full # path into the desktop file. But do we really want that? # Maybe things are easier without full path. # (Then the user can move the binary around without having to # worry about the desktop file.) -Immi #cuyo.desktop: cuyo.desktop.in # cp cuyo.desktop.in cuyo.desktop # echo "Exec=$(bindir)/cuyo" >> cuyo.desktop iconsdir = $(datarootdir)/icons/hicolor nobase_icons_DATA = 32x32/apps/cuyo.png 64x64/apps/cuyo.png EXTRA_DIST = $(nobase_icons_DATA) cuyo.desktop MAINTAINERCLEANFILES = Makefile.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign icons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) install-nobase_iconsDATA: $(nobase_icons_DATA) @$(NORMAL_INSTALL) @list='$(nobase_icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(iconsdir)/$$dir" || exit $$?; }; \ done uninstall-nobase_iconsDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_icons_DATA)'; test -n "$(iconsdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-desktopDATA install-nobase_iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-desktopDATA uninstall-nobase_iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-desktopDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-nobase_iconsDATA \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-desktopDATA uninstall-nobase_iconsDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/icons/Makefile.am0000644000175000017500000000270111703616611012563 00000000000000# # Copyright 2007 by the cuyo developers # Maintenance modifications 2008,2011,2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # desktopdir = $(datarootdir)/applications desktop_DATA = cuyo.desktop # The following would automatically put cuyo with the full # path into the desktop file. But do we really want that? # Maybe things are easier without full path. # (Then the user can move the binary around without having to # worry about the desktop file.) -Immi #cuyo.desktop: cuyo.desktop.in # cp cuyo.desktop.in cuyo.desktop # echo "Exec=$(bindir)/cuyo" >> cuyo.desktop iconsdir = $(datarootdir)/icons/hicolor nobase_icons_DATA = 32x32/apps/cuyo.png 64x64/apps/cuyo.png EXTRA_DIST = $(nobase_icons_DATA) cuyo.desktop MAINTAINERCLEANFILES = Makefile.in cuyo-2.1.0/aclocal.m40000644000175000017500000011740312422656606011271 00000000000000# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # progtest.m4 serial 6 (gettext-0.18) dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_PROG_LEX # ----------- # Autoconf leaves LEX=: if lex or flex can't be found. Change that to a # "missing" invocation, for better error output. AC_DEFUN([AM_PROG_LEX], [AC_PREREQ(2.50)dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, # 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([sdl.m4]) m4_include([acinclude.m4]) cuyo-2.1.0/autogen.sh0000755000175000017500000000266211674440314011425 00000000000000#! /bin/sh # # Copyright <=2002 by the cuyo developers # Maintenance modifications 2006-2008,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # if test ! -e ChangeLog ; then touch ChangeLog fi aclocal -I . autoheader automake -a -c --foreign #if test ! -e config.guess ; then # cp /usr/share/automake/config.guess . #fi #if test ! -e config.sub ; then # cp /usr/share/automake/config.sub . #fi autoconf echo echo "Now you probably want to run" echo " ./configure" echo "or" echo " ./configure --enable-maintainer-mode" echo "or" echo " ./configure --enable-maintainer-mode --enable-datasrc-maintainer-mode" echo "or" echo " ./configure --datadir=`pwd`/data" echo "or something like this. (See README and README.maintainer)" cuyo-2.1.0/Makefile.am0000644000175000017500000000420411703616611011450 00000000000000# # Copyright <=2001 by the cuyo developers # Maintenance modifications 2001-2004,2006-2008,2011,2012 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Die Daten sollen jetzt nicht mehr nach /usr/share/cuyo, sondern # nach /usr/share/games/cuyo # Erst mal noch auskommentiert, weil man das in jede einzelne Makefile.am # schreiben msste, was irgendwie doof ist. # pkgdatadir = $(datadir)/games/@PACKAGE@ SUBDIRS = src data docs icons po # Damit die GNU-Dateien nicht notwendig sind: # AUTOMAKE_OPTIONS = foreign EXTRA_DIST = autogen.sh sdl.m4 # aclocal soll mit -I . aufgerufen werden. Auch, wenn es automatisch von # make aufgerufen wird. Automake macht das aber ohne "-I ."; deshalb manuell # setzen. (Dadurch, dass hier ACLOCAL gesetzt wird, lsst automake die sonst # automatisch generierte Zeile "ACLOCAL = @ACLOCAL@" weg. ACLOCAL_AMFLAGS = -I . CLEANFILES = config.h.in~ DISTCLEANFILES = stamp-h stamp-h1 MAINTAINERCLEANFILES = Makefile.in configure install-sh stamp-h.in aclocal.m4 config.h.in mkinstalldirs config.guess config.sub missing depcomp ylwrap dist-hook: mkdir $(distdir)/datasrc ($(DATASRC_MAINTAINER_MODE) && $(MAKE) -C datasrc distfiles) || true for file in `cat datasrc/distfiles`; do cp datasrc/$$file $(distdir)/datasrc/; done mkdir $(distdir)/datasrc/pics ($(DATASRC_MAINTAINER_MODE) && $(MAKE) -C datasrc/pics distfiles) || true for file in `cat datasrc/pics/distfiles`; do cp datasrc/pics/$$file $(distdir)/datasrc/pics/; done cuyo-2.1.0/docs/0000755000175000017500000000000012422656731010432 500000000000000cuyo-2.1.0/docs/cual.60000644000175000017500000014501012422640765011366 00000000000000.TH CUAL 6 "2014-10-25" .\" .\" Copyright <=2002 by Immanuel Halupczok .\" Modified 2003,2005-2008,2010-2012,2014 by the cuyo developers .\" Maintenance modifications 2012 by the cuyo developers .\" Maintenance modifications 2012 by Bernhard R. Link .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA .\" .de TQ .br .ns .TP \\$1 .. .SH NAME Cual \- Cuyo Animation Language .PP Cual is the main language used to describe the animations in cuyo. Strictly speaking it's the stuff between the << >> brackets in the level description files (xxx.ld). .PP On the other hand this man page aims at being a complete description of how to write levels for cuyo. But it's still under construction. See the file "example.ld" to get an idea of how the rest of the level description works. There's also a bit of example Cual code in "example.ld". And of course, all the existing levels are examples. .PP Note that Cual is probably still very buggy. So if strange things happen and you're sure it's not your fault, tell me (cuyo@karimmi.de). . .SH HOW IT WORKS . The level description is organized in sections. There is a global section and every level has its own section, which is a subsection of the global section. It is common practice to place each level in a separate file, which then basically starts by opening its section and ends by closing it. .PP A section is defined by \fIname\fB = {\fIcontents\fB}\fR. \fIname\fR is the name of the new section and \fIcontents\fR contains the definitions that pertain to that section. This is a sequence of definitions of the form \fIname\fB = \fIstuff\fR. Here \fIstuff\fR can be \fB{\fIcontents\fB}\fR as above, or it can be a single datum, or it can be a comma-separated list of data. Inside such a list, \fIdatum\fB * \fInumber\fR can be used as a shorthand for \fIdatum\fB, \fR...\fB, \fIdatum\fR, i.e. a \fInumber\fR-fold repetition of \fIdatum\fR. A datum can be an identifier, a string (enclosed by '"'), a word, or a number. In place of a number \fB<\fIexpression\fB>\fR can be used, where \fIexpression\fR is an arbitrary expression made up from literal numbers, previously defined numeric data, and the operators \fB+\fR, \fB\-\fR, \fB*\fR, \fB/\fR and \fB%\fR. .PP Definitions can also depend on versions. See section \fBVERSIONING\fR below. .PP Apart from definitions, a section can also contain cual definitions (see below). These have to be enclosed in \fB<<\fR and \fB>>\fR. .PP Each blob has its own (main) Cual procedure which does the drawing and the animation stuff. The procedure only depends on the kind of the blob, that is, it is the same for blobs of the same kind. However each blob has its own instance of the variables. .PP In every game step, the procedure of each of the blobs is called once. (There are 12.5 game steps per second.) It has to draw the blob each time, even if nothing has changed. (However, there's an internal routine in cuyo which checks if the same is drawn as in the last step and which then supresses the drawing.) .PP There may be other procedures associated to a kind of blob, which are executed at special events, for example when a falling blob lands. In contrast to the main procedure, these event handlers are not allowed to draw anything. See section \fBEVENT HANDLERS\fR for a list of the existing events. .PP The name of the main procedure of a blob (the one which draws the blob) is the name of the kind of the blob. Normally, that name is the word listed after \fIpics=\fR entry in the .ld file; but if that "word" contains a dot, only the part before the dot makes up the name. (E. g. with \fBpics=redblob.xpm,greenblob.xpm\fR, the names are "redblob" and "greenblob".) .PP The name of an event handler procedure is the name of the kind, followed by a dot, followed by the event name. (E.g. "redblob.land" for the landing event of the redblob from above.) .PP [Explain the default procedures.] . .SH LEVEL DATA .SS String valued data . .TP .B name The name of the level. This appears in the list of levels as well as in the level intro. .TP .B description This is an optional further description of the level in its intro. .TP .B author The name of the level author(s) for credit at the beginning of a level. . .SS Identifier valued data . .TP .B bgpic Background picture (file name). If too small, placed at bottom. Defaults to none. .TP .B toppic Appearance of the top border coming down (file name). Defaults to none. .TP .B explosionpic Appearance of the explosions (file name). Has a default. . .SS Number valued data . .TP .B numexplode The size that a group of blobs has to reach in order to explode. This is only the level-wide default. Each kind can override this. Whether the group does explode is also controlled by \fBbehaviour\fR. See section \fBVARIABLES AND CONSTANTS\fR for details. .TP .B toptime Time the border takes to come down, in number of game steps. Each game step lasts 80ms. The default value is 50 (i.e. one pixel every four seconds). .TP .B topoverlap Placement of \fBtoppic\fR relative to the actual border. More precisely, number of pixels the lower border of the picture is below the actual border. Defaults to the height of the picture. .TP .B topstop When the border comes down at the end of the level, number of pixels it should stop before the bottom. Set this to the same value as topoverlap if you want your toppic to be comletely visible at the end. Defaults to 0. .TP .B chaingrass Must be 0 or 1. If set to 1, chain reactions are necessary to kill the grass. Defaults to 0. More precisely, \fBchaingrass\fR only controls the default for \fBbehaviour\fR for grass blobs. See section \fBVARIABLES AND CONSTANTS\fR for details. .TP .B mirror Must be 0 or 1. If set to 1, the level appears upside-down. Defaults to 0. .TP .B randomfallpos Must be 0 or 1. If set to 1, the initial fall position is randomized horizontally. Defaults to 0. .TP .B neighbours Determines in which directions the blobs can connect to each other in order to form groups. This is only the level-wide default. Each kind can override this. See section \fBVARIABLES AND CONSTANTS\fR for values. Defaults to \fBneighbours_rect\fR. .TP .B hexflip In hex mode, determines whether the even or the odd columns are shifted upwards. By default (hexflip = 0), the odd columns are shifted. 1 means: shift even columns of player 1; 2 means: shift even columns of player 2; 3 means: shift even columns of both players. .TP .B randomgreys The expected time between two randomly appearing greys in game steps (80ms). Use \-1 for none at all, which is the default. .TP .B nogreyprob The probability that a grey does not appear. See \fBgreyprob\fR and \fBcolourprob\fR in section \fBKIND DATA\fR for details. The default is 0. .TP .B aiu_color, aiu_grass, aiu_grey, aiu_two_above, aiu_monochromic_vertical, aiu_height Parameters for the AI player's utility function. Default respectively to <10*(number of kinds)>, 20, 10, , , and 10. See section \fBTHE AI UTILITY FUNCTION\fR for details. . .SS Colour valued data (A colour is an RGB triple of numbers between 0 and 255.) . .TP .B bgcolor The background colour. Defaults to white. .TP .B textcolor Colour of any text. This includes the beginning-of-level information, message()s, and score. Defaults to a certain shade of dark grey. .TP .B topcolor The colour of the top border comming down (where not determined by \fBtoppic\fR). Defaults to a certain shade of light grey. . .SS Other data . .TP .B startdist Distribution of blobs at the beginning of the level. It is a list of strings, the format of which is described in the section \fBSTARTDIST\fR. .TP .B pics, greypic, startpic, emptypic Lists of kinds. These can be either file names referring to the picture to be used, or declarations of kinds that have to be defined later on. The different keywords (e.g. pics, emptypic) define different defaults. In fact, only the first three may be real lists, \fBemptypic\fR is limited to exactly one entry. In these lists, it is advisable to use \fB*\fR whenever possible. Besides being shorter to write, it also speeds up loading of the level and cuts down memory usage. This is because cuyo does some initializations only once for each entry with multiplier. .RS .PP The intentions of these lists are normal blob kinds resp. grey blob kind resp. grass blob kind resp. nothing-blob. However, the only differences between \fBpics\fR, \fBgreypic\fR and \fBstartpic\fR are the default values for \fBbehaviour\fR, \fBcolourprob\fR, \fBgoalprob\fR, \fBgreyprob\fR, \fBversions\fR and \fBdistkey\fR (see there). All of these can also be overridden individually. Also, the default drawing code is different. (The default drawing code for \fBstartpic\fR does not draw connections.) .RE .TP .B \fIkind\fR Each kind can have its own section. See \fBKIND DATA\fR below for the entries of that section. . .SH KIND DATA . .TP .B numexplode, neighbours Defining these data in the section of a kind overrides the level-wide value for the kind. See section \fBLEVEL DATA\fR for a description of these data. .TP .B pics A list of file names of pictures to be used for this kind. The \fIn\fRth entry can later be accessed in cual with \fBfile=\fIn\-1\fR. .TP .B colourprob The probability that this kind appears as one of the two steered falling blobs. More precisely, this is a nonnegative integer weight. For determining the actual probability, the value is divided by the sum of the \fBcolourprob\fRs of all kinds. This sum must be positive. The default is 1 for kinds declared with \fBpics=\fR and 0 for all other kinds. The probability is also used for \fB+\fR in \fBstartdist\fR. For more details see section \fBSTARTDIST\fR. .TP .B goalprob This affects the semantics of \fB*\fR in \fBstartdist\fR in the same way, as \fBcolourprob\fR does for \fB+\fR. The default is 1 for kinds declared with \fBstartpic=\fR and 0 for all other kinds. .TP .B greyprob The probability that this kind appears as a grey blob. This is similar to \fBcolourprob\fR, but there is a difference: For greyprob, \fBnogreyprob\fR is included in the sum, so that it might happen that no blob appears at all. There is a notable difference between a positive \fBnogreyprob\fR and a positive \fBgreyprob\fR in kind \fBnothing\fR, when several lines of grey blobs appear: In the latter case, empty blobs appear in the wall of greys, making holes. In the former case, the wall is made less high. Usually this is preferable. The default is 1 for kinds declared with \fBgreypic=\fR and 0 for all other kinds. The value also affects the semantics of \fB\-\fR in \fBstartdist\fR. In this case, \fBnogreyprob\fR is not included in the sum. .TP .B versions At the creation of a blob, its \fBversion\fR variable is initialized. Usually, it is chosen at random from \fB0\fR to \fBversions\-1\fR, but \fBstartdist\fR provides the possibility to specify it exactly. See section \fBSTARTDIST\fR for details. The default is 1. .TP .B distkey An alphanumerical key, which is used in \fBstartdist\fR to identify this kind of blob. The default is \fBA\fR for kinds declared with \fBstartpic\fR and undefined for all other kinds. See section \fBSTARTDIST\fR for details. . .SH CUAL DEFINITIONS . Inside << >>, variable and procedure definitions are expected. .TP .B \fIprocname\fB = \fIcode\fB ; Defines a "procedure". The next section describes how \fIcode\fR looks like. Example: .RS .PP redblob = { .br schema16; 0*; .br 1; A,B,C; *; .br }; .RE .TP .B var \fIvarname1\fR [\fB= \fIdef1\fR [\fB: reapply\fR]]\fB, \fIvarname2\fR [\fB= \fIdef2\fR [\fB: reapply\fR]]\fB, \fR...\fB ; Defines variables with default values. If no default is specified, zero is used. See section \fBVARIABLES AND CONSTANTS\fR about the meaning of the default value and the optional suffix \fB: reapply\fR. .TP .B default \fIvarname1\fB = \fIdef1\fR [\fB: reapply\fR]\fB, \fIvarname2\fB = \fIdef2\fR [\fB: reapply\fR]\fB, \fR...\fB ; Changes the default for already defined variables. Again, the suffix \fB: reapply\fR is optional. This is useful to give to a single kind a different default for a variable than to the other kinds. Also, the default of a system variable can be changed this way. . .SH CODE . A code fragment can be one of the following: .TP .B { \fIcode\fB; \fIcode\fB; ...} Executes one command after the other. .TP .B \fIcode\fB, \fIcode\fB, ... This is useful for simple animations. Executes exactly one of the commands: In the n-th call, the n-th command is executed. After the last command, the first one is executed again. However, if one of the commands is "busy" (see section \fBBUSIENESS\fR), this one will be executed until it stops being busy, and only after that, the next command will be executed. .TP .B \fIprocname\fB Executes the procedure \fIprocname\fR, which has to be already defined. The result is the same as if the code from procname would have been inserted in that place. .TP .B &\fIprocname\fB Executes the procedure \fIprocname\fR; however, every instance of such a procname is the same. This concerns busieness and the state of an animation sequence. (See sections \fBBUSIENESS\fR and \fBAMPERSAND-CALL\fR.) .TP .B busy Does nothing except being busy. (See section \fBBUSIENESS\fR.) .TP .B \fIvarname\fB = \fIexpr\fB Sets the variable. See section \fBVARIABLES AND CONSTANTS\fR for details. .TP The same with \fB+=\fR, \fB\-=\fR, \fB*=\fR, \fB/=\fR, \fB%=\fR, \fB.+=\fR, \fB.\-=\fR. Does what you would expect. .TP .B [ \fIvarname\fB = \fIexpr\fB ] \fIcode\fB Sets the variable \fIvarname\fR to \fIexpr\fR, executes \fIcode\fR and then resets the variable to the old value. .TP .B \fInumber\fB A shortcut for \fBfile = \fInumber\fR. .TP .B \fIletter\fB A shortcut for \fBpos = \fInumber\fR, where different letters mean different numbers: A: 0, B: 1, ..., Z: 25, a: 26, ..., z: 51 .TP .B * Draw the icon specified by the variables \fIkind\fR, \fIfile\fR and \fIpos\fR. May also draw only a part of the icon, if specified by the variable \fIqu\fR (see section \fBVARIABLES AND CONSTANTS\fR). .TP .B *@(\fIposition\fB) Like \fB*\fR, but draws the icon at some other position. This drawing is performed \fIafter\fR all drawing by *. If \fB*@\fR is used from several blobs, the further order of drawing is not specified. It is guaranteed, however, that at any given time this order is the same for all positions. (See section \fBVARIABLES AND CONSTANTS\fR for more details about @.) .TP .B @(\fIposition\fB)* Like \fB*\fR, but draws the icon at some other position. This drawing is performed \fIbefore\fR all drawing by *. If \fB@*\fR is used from several blobs, the further order of drawing is not specified. It is guaranteed, however, that at any given time this order is the same for all positions. (See section \fBVARIABLES AND CONSTANTS\fR for more details about @.) .TP .B if \fIexpr\fB \fIif-arrow\fB \fIif-code\fB ; .TQ .TQ .B if \fIexpr\fB \fIif-arrow\fB \fIif-code\fB else \fR[\fIelse-arrow\fR]\fB \fIelse-code\fB ; The arrows can be either "\->" or "=>". If you use "\->" arrows, it does exactly what you would expect. If the if-arrow is "=>", then once the expression gets true, the if-code will be executed every subsequent time (without testing the condition), as long as it is "busy". For more details see section \fBBUSIENESS\fR. If the else-arrow is "=>", then once the expression gets false, the else-code will be executed every subsequent time as long as it is busy. The else-arrow may only be omitted, if the if-arrow is "\->". Then the else-arrow also is "\->". (But this might change in the future.) .TP .B switch { .TQ .B \ \fIexpr1\fB \fIarrow1\fB \fIcode1\fB ; .TQ .B \ \fIexpr2\fB \fIarrow2\fB \fIcode2\fB ; .TQ .B \ ... .TQ .B } The arrows can be either "\->" or "=>". Does the same as: .RS .PP if \fIexpr1\fR \fIarrow1\fR \fIcode1\fR .br else => if \fIexpr2\fR \fIarrow2\fR \fIcode2\fR .br ... .PP The last \fIexpr\fR may be omitted. This is equivalent to setting it to true. .RE .TP .B bonus(\fIexpr\fB) The player gets \fIexpr\fR bonus points. .TP .B message(\fIString\fB) The string is displayed (blinking) on the screen. To be used together with bonus(...). Example: .RS .PP bonus(50); .br message("You get 50 bonus points"); .RE .TP .B explode Makes the blob explode. For the next 8 steps or so, the blob is still what it was before, but the explosion is drawn over the graphics. After that, it's changed to a nothing-blob. .TP .B lose The players immediately lose the level. .TP .B sound(\fIFilename\fB) Plays the given sound file. .PP You can also omit the code completely. Then, of course, it does not do anything. This can be useful as part of \fB,\fR-sequences. .PP There's a shortcut for drawing: You may omit the ";" between a number, a letter and the "*". . .SH EXPRESSIONS . The only data type in cual is int. Bools are represented by 0 and 1, like in C. (And any number other than 0 is interpreted as true, if a boolean is expected.) .PP Of course, variables, constants and numbers are expressions, and you can use parentheses. There are the following operators (listed here in order of increasing precedence): .PP .RS .TP .B || Boolean or .TP .B && Boolean and .TP .BR == ", " != ", " < ", " > ", " <= ", " >= Comparison .TP .B ==.. A special comparison .TP .B ! Boolean not .TP .BR + ", " \- Add, substract .TP .B : Special operator .TP .BR * ", " / ", " % Multiply, divide, modulo .TP .BR & ", " | ", " .+ ", " .\- Bitwise and, bitwise or, setting of bits (same as bitwise or), unsetting of bits .TP .B \- Unary minus .TP .B \. Testing of bits (\fIa\fB.\fIb\fR is the same as \fIa\fB&\fIb\fB != 0\fR) .RE .PP \fB/\fR and \fB%\fR work mathematically correct and do not make funny changes when the sign of the numerator changes. More specifically, if \fIb\fR is positive, then \fIa\fB/\fIb\fR is the largest integer \fIn\fR such that \fIn\fB*\fIb\fB<=\fIa\fR. If \fIb\fR is negative, then \fIa\fB/\fIb\fR is the largest integer \fIn\fR such that \fIn\fB*\fIb\fB>=\fIa\fR. In both cases \fIa\fB%\fIb\fR is such that \fB(\fIa\fB/\fIb\fB)*\fIb\fB+\fIa\fB%\fIb\fB = \fIa\fR. Examples: .TS tab(#); l l. .sp 13/5=2 # 13%5=3 \-13/5=\-3 # \-13%5=2 13/\-5=\-3 # 13%\-5=\-2 \-13/\-5=2 # \-13%\-5=\-3 .TE .PP The following are the special operators: .TP .B \fIexpr1\fB == \fIexpr2\fB .. \fIexpr3\fB Is true, if \fIexpr1\fR lies between \fIexpr2\fR and \fIexpr3\fR. You may also omit one of \fIexpr2\fR and \fIexpr3\fR. (Then, it does the same as <= resp. >=.) The precedence implies that \fBx==y==2..3\fR is the same as \fBx==(y==2..3)\fR and is neither \fB(x==y)==2..3\fR nor \fBx==(y==2)..3\fR. Note that this operator might change in the future. (I plan to make something like "\fIexpr\fR in \fIset\fR" in Pascal.) .TP .B \fIexpr1\fB : \fIexpr2\fB Is true (that is, 1) with probability \fIexpr1\fR/\fIexpr2\fR .TP .B \fIneighbour_pattern\fB \fIneighbour_pattern\fR is a sequence of six or eight characters \fB0\fR, \fB1\fR and \fB?\fR. It is true if the sequence fits to the neighbour sequence of the blob. The neighbour sequence is a string of "0"s and "1"s with a "1" for each neighbour of the same kind, starting above and going clockwise. This way, you get a string of "0"s and "1"s (six or eight, depending on wether this level is in hex mode). .RS .PP Example: \fB1???0???\fR is true iff the blob above this blob is of the same kind and the blob below it is of different kind. .PP For an empty blob the semantics is slightly different: If in some direction there is no neighbour, because the field ends there, the entry in the neighbour sequence is 1 nevertheless. So for an empty blob \fB1???0???\fR is true, iff the blob above this blob does not exist or is empty as well, and the blob below this blob exists and is not empty. .PP If some blob changes its kind during a step, the expression will still test the neighbours as they were at the beginning of the step. (See the section \fBVARIABLES AND CONSTANTS\fR for details.) .RE .PP The following functions exist: .TP .B rnd(\fIexpr\fB) Returns a random value between 0 and \fIexpr\fR\-1 .TP .B gcd(\fIexpr1\fB, \fIexpr2\fB) Returns the greatest common divisor of \fIexpr1\fR and \fIexpr2\fR . .SH VARIABLES AND CONSTANTS . The following kinds of variables and constants exist: .TP 3 \(em User defined variables (see section \fBCUAL DEFINITIONS\fR). At the start of the level (or at the creation of the blob) the value is the default value you provided. If you supplied the default with \fB: reapply\fR, whenever a blob's kind changes, the value of the variable is also set to the default of the new kind. There is a subtlety: This only happens if the new value of kind is in fact different from the old one. .TP \(em System variables. These variables are always defined and have special meanings, e.g. \fBfile\fR and \fBpos\fR. Some of them are read-only. .TP \(em User defined constants. These are defined in the main .ld part, not in cual (not inside << >>). .TP \(em System constants. Some of them depend on properties of the level, some are really constant. .PP Of each variable, there's one instance in each blob. Normally, you access the instance in your own blob, but with the following syntax, you can access variables of other blops: .PP \fIvarname\fB@@(\fIx\fB, \fIy\fB; \fIside\fB) .br \fIvarname\fB@@(\fIx\fB; \fIside\fB) .br \fIvarname\fB@@(; \fIside\fB) .br \fIvarname\fB@(\fIdx\fB, \fIdy\fB; \fIside\fB) .br \fIvarname\fB@(\fIdx\fB; \fIside\fB) .br \fIvarname\fB@() .PP If \fIx\fR and \fIy\fR are given, these are absolute coordinates in the grid of blops, that is the variable is taken from the blob with loc_x=x and loc_y=y (see under \fBThe system variables\fR). If only \fIx\fR is given, it specifies one of the two blobs that are currently falling. If there is only one such blob left, because the other one got stuck on some tower, the remaining blob's coordinate is 0. Otherwise one of the two has coordinate 0, the other 1. .PP In the \fB@\fR variants, the coordinates are relative to the current blob. The variant \fB@@(; \fIside\fB)\fR refers to the semiglobal blob, the variant \fB@()\fR to the global blob (See section \fBTHE GLOBAL BLOB\fR). The extra part \fB; \fIside\fR is optional and specifies the side of the game. This is only meaningful in two-player mode. \fIside\fR = \fB<\fR specifies the left player, \fIside\fR = \fB>\fR the right player, \fIside\fR = \fB=\fR the player to which the current blob pertains, and \fIside\fR = \fB!\fR the other player. \fB@()\fR and \fB@@()\fR can also be given as \fB@\fR respectively \fB@@\fR. .PP This can be done for both, reading and writing variables. It also works for system variables (but not for constants). .PP In hex mode levels, for odd \fIdx\fR, \fIdy\fR should be a "half integer", that is a number ending in ".5". This is the only place in Cual where non-integers appear. Especially, ".5" is not allowed in composite expressions. Therefore, also integer \fIdy\fR is always allowed. If a half-integer is expected and an integer is given, it is assumed to be rounded to above, that is 5 then represents 4.5 and \-5 represents \-5.5. .PP Caution: With \fBmirror=1\fR the absolute and the relative coordinates use different coordinate systems. Handle with extreme care. .PP Accessing foreign variables is not as easy as it might look at first glance; it might easily introduce a dependence of the internal order of execution of the blob codes. For this reason, .TP 3 \(em reading variables with \fB@\fR or \fB@@\fR always returns the value of the variable it had at the \fIbeginning\fR of the current step, that is, before any of the blob codes has been executed. .TP \(em when writing variables with \fB@\fR or \fB@@\fR, the write operation will only be executed at the \fIend\fR of the current step. (The write operations are stored in a kind of queue.) .PP This is also true if a blob accesses its own variables with \fB@(0,0)\fR. .PP The operators \fB+=\fR, \fB\-=\fR, etc. are also performed in the future if the left hand side is an \fB@\fR-variable. (To be more precice, the right hand side is calculated instantanousely.) .PP For illustration, look at the following six statements: .PP .TS tab(#); l l. 1)#X += 1 2)#X@(0, 0) += 1 3)#X = X + 1 4)#X = X@(0, 0) + 1 5)#X@(0, 0) = X + 1 6)#X@(0, 0) = X@(0, 0) + 1 .TE .PP Only 1) and 3) do the same; they simply increment X by 1. Statement 4) sets X to one more than it was at the beginning of the step. Statements 2), 5) and 6) cause the value of X to be changed in the future (after the current step): X is set to one more than: .TP 2) the value of X just before the change (that is, X is incremented in the future), .TP 5) the current value of X, .TP 6) the value of X at the beginning of the step. . .SS Some more details . .TP 3 \(em Whenever you try to access a variable at a location which doesn't exist, you will get the default value. If default values depend on the kind, the default pertaining to the blob executing the code is used. This may change in the future. .TP \(em Changing a variable which doesn't exist does nothing (and does not result in an error). .TP [Add explanation of \fItime slices\fR; roughly: @-access of variables in reality don't access the value at the beginning/end of the game step, but of the time slice. The call of the main procedure of all blobs happens in the same time slice, but each other kind of event has its own time slice.] .PP . .SS The system variables . .TP .B file Specifies the file number from which to take the icon that is drawn by "*". This variable is reset to 0 before the drawing procedure is executed. .TP .B pos Specifies the position in the file of the icon that is drawn by "*". This variable is reset to 0 before the drawing procedure is executed. .TP .B kind The kind of the blob. There are constants for the possible values of this variable. If you change the kind, you should be aware of three things: .RS .TP 3 \(em Expressions like "001???01" test the neighbour pattern at the \fIbeginning\fR of the current step. So the change of the variable \fIkind\fR will not be reflected. .TP \(em In the current step, the program to draw the blob has already been invoked (it might even be the program which changed this variable); so in this step, the blob will still look like one of the old kind. However, if things are drawn after the kind has been changed, icons from the new kind are taken. .TP \(em Defaults of the new kind that are declared with \fB: reapply\fR are applied. This happens at the same time that kind changed, but only if the new kind is different from the old one. .RE .TP .B version Is assigned a hopefully distinctive value at the blob's creation. See \fBversions\fR in section \fBKIND DATA\fR for details. .TP .B qu Tells "*" which part of the icon to draw. It's possible to draw the whole icon, or only one of its quarters. If a quarter is drawn, you may specify independently which of the quarters to take and at which position to draw it. Use the constants (see below). This variable is reset to "draw all" before the drawing procedure is executed. .TP .B out1, out2 Set these Variables for debug output. The values will be printed on top of the blob. These variable are reset to "output nothing" before the drawing procedure is executed. (In fact, "output nothing" is one special big value.) .TP .B weight When \fBcalculate_size\fR is set in \fBbehaviour\fR, \fBsize\fR will be regularly updated to the sum of \fBweight\fR in the connected component. The default is 1. .TP .B inhibit Set this variable to a sum of the constants DIR_...; this will inhibit that this blob connects into the given directions. This is \fInot\fR for the graphics but for the calculation of the connected components and the explosions. .TP .B behaviour This is a bit field. Refer to \fBThe Constants\fR below for the meaningful of its bits. The default is \fBcalculate_size\fR+\fBexplodes_on_size\fR for normal blobs, \fBexplodes_on_explosion\fR+\fBexplodes_on_chainreaction\fR for grey blobs, \fBfloats\fR for the empty blob and \fBgoalblob\fR+\fBexplodes_on_explosion\fR+\fBexplodes_on_chainreaction\fR or \fBgoalblob\fR+\fBexplodes_on_chainreaction\fR (depending on whether chaingrass is set) for grass blobs. .TP .B falling_speed, falling_fast_speed These variables are only used in the semiglobal blobs. They define the vertical speed of the steered falling blobs. The unit is pixels per game step. The defaults are 6 and 32. .PP . .SS The system read-only variables . .TP .B time The number of time steps since the level was started. .TP .B turn Is 1 resp. 2 if the blob is falling and just being turned by the user and 0 otherwise. (1 in the first turning step, 2 in the second one.) Be aware that if the user presses the turn key fast several times, some of these steps may be omitted. (Use the turn event if you want to be sure that a program block is executed once for every turn.) .TP .B connect Contains internal data. Will be removed. Probably. .TP .B size The size of the component of the blob. (That is, how many blobs are connected.) .TP .B basekind The value of the constant generated for the name of the kind of the blop. Example: .RS .PP \fBpics = orange, pear, apple * 3, banana, apple\fR .PP Here, all four kinds \fBapple\fR have the same value for basekind, and this value is \fBapple\fR. .RE .TP .B loc_x, loc_y The absolute coordinates of the blob. (0,0) = top left corner .TP .B loc_xx, loc_yy The absolute coordinates of the blob in pixels. This is not always the same as loc_x*32 and loc_y*32, particularly for the steered falling blobs. .TP .B loc_p The player of the blob (1 or 2) .TP .B falling true, if the blob is falling or it is a preview of a falling blob. (Falling in the sense of steered by the player. Grey blobs are not falling in that sense.) .TP .B falling_fast True, if the blob is falling fast, that is, the user pressed the down key. .TP .B informational True, if the blob is one of the info-blobs at the side of the game area. In this sense, the previews of the falling blobs also count as info-blobs. .TP .B players The number of players. .TP .B exploding When the blob is exploding, the position in the explosion animation (1 to 8); 0 else. .RS .PP Currently, there is one exception: if the explosion has been triggered by the \fBexplode\fR command, then \fBexploding\fR will have value 1 only \fIafter\fR the current game step [more precisely: time slice; fix that]. Reason: when reading \fBexploding@(x,y)\fR, we maybe don't know yet that the other blob calls \fBexplode\fR. . .SS The Constants: . .B Constants for behaviour: .TP .B goalblob Set goalblob if this blob should act like grass: You will have to get rid of it to win the level and making this blob explode will give more points. .TP .B calculate_size When this bit is set, \fBsize\fR will be regularly updated to the sum of \fBweight\fR in the connected component. .TP .B explodes_on_size When this bit is set, a connected component explodes, when it has \fBsize\fR>=\fBnumexplode\fR. .TP .B explodes_on_explosion, explodes_on_chainreaction When these bits are set, the blob explodes whenever an explosion that was triggered by \fBexplodes_on_size\fR happens in its neighbourhood. \fBexplodes_on_chainreaction\fR refers to those triggering explosions that are the second or later part of a chain reaction. \fBexplodes_on_explosion\fR refers to the other ones. .TP .B floats When this bit is set, the blob keeps its vertical position even if there is an empty blob below. This bit has no effect on the steered falling blobs. .PP .B Constants for kind: .TP .B For each kind of blob, there's one constant with the name of that kind. Use it to check if a blob is of that kind using \fBkind@(\fIx\fB,\fIy\fB) == \fIaKind\fR or to change to that kind using \fBkind = \fIaKind\fR. See \fBkind\fR under \fBThe system variables\fR for the side-effects of setting \fBkind\fR. .RS .PP Sometimes it is necessary to perform arithmetic on kinds, for example when several have been declared using the \fB*\fR multiplier. The values of the constants are successive in the order, in which the kinds have been declared. When a name is used several times, the first use defines the value. Example: .PP \fBstartpic = apple, orange .br pics = orange, pear, apple * 3, banana .br greypic = pineapple\fR .PP This initializes 2 kinds with the defaults for startpic, 6 kinds with the defaults for pics, and 1 kind with the defaults for greypic. The value of the constant \fBorange\fR is 1 more than that of \fBapple\fR, \fBpear\fR is 2 more than \fBorange\fR, \fBbanana\fR is 4 more than \fBpear\fR and \fBpineapple\fR is 1 more than \fBbanana\fR. We do not specify what these values actually are. .PP This constant also exists for the empty kind, if one has been declared using \fbemptypic\fR. In this case the value's relation to the other values is not specified at all. .RE .TP .B global, semiglobal Denote the kind of the global, respectively semiglobal, blob. .TP .B nothing Is the same as the constant for the empty kind. Is provided, because sometimes, you don't have an empty kind, but you still need to test if a blob is empty. .TP .B outside The value of kind if the coordinates are outside of the game board. .PP .B Constants for neighbours: .TP .B neighbours_rect A blob connects up, down, left, and right. This is the default. .TP .B neighbours_horizontal A blob connects left and right. .TP .B neighbours_vertical A blob connects up and down. .TP .B neighbours_diagonal A blob connects diagonally. .TP .B neighbours_hex6 When used in the level-wide \fBneighbours\fR, this sets hex mode. A blob connects up, down, left with a slight upwards shift, left with a slight downwards shift, right with a slight upwards shift, and right with a slight downwards shift. .TP .B neighbours_hex4 When used in the level-wide \fBneighbours\fR, this sets hex mode. A blob connects left with a slight upwards shift, left with a slight downwards shift, right with a slight upwards shift, and right with a slight downwards shift. .TP .B neighbours_knight A blob connects in knight moves (Two forward and then one sideways. Forward is one of up, down, left or right. Sideways is perpendicular to forward. This makes a total of eight directions.). .TP .B neighbours_eight Combines \fBneighbours_rect\fR with \fBneighbours_diagonal\fR. .TP .B neighbours_3D A more obscure mode created especially for 3d.ld. When used in the level-wide \fBneighbours\fR, this sets hex mode. A blob connects up, down, two (but not one) to the left, and two to the right. In even columns it also connects right with a slight upwards shift. In odd columns it also connects left with a slight downwards shift. .TP .B neighbours_none A blob does not connect at all. .PP .B Constants for qu: .TP .B Q_ALL Value for qu, which means "draw the complete picture". .TP .B Q_TL, Q_TR, Q_BL, Q_BR Values for qu. "TL" means draw top-left quarter, etc. (See the "*" command in the Code section.) .TP .B Q_SRC_DST SRC and DST may be TL, TR, BL, BR. Take quarter SRC and draw it at position DST. .PP .B Miscellanious constants: .TP .B DIR_XX To be used with the variable inhibit to prevent the blob connecting in the given directions. XX can be U, D, L, R (horizontal and vertical); UL, UR, DL, DR (diagonal); UUL, UUR, DDL, DDR, LLU, LLD, RRU, RRD (knight); F, B (3d) . .SH VERSIONING . Sometimes it is necessary to define a level slightly differently for different purposes. For example you might need to decrease \fBnumexplode\fR for the two-player version lest it becomes unplayable. The difficulty settings from cuyo's main menu provide another example. .PP This is done by qualifiing a definition with the versions it should apply to. It is best explained by an example: .PP numexplode = 8 .br numexplode[2] = 6 .br numexplode[1,hard] = 10 .PP This specifies that normally numexplode should be 8. In two-player mode it should be 6. In one-player hard mode it should be 10. Here the specifiers \fB2\fR for two-player mode, \fB1\fR for one-player mode and \fBhard\fR for hard mode are used. Along with \fBeasy\fR for easy mode these are all predefined specifiers intended for levels. Additionally (and for internal purposes), there are specifiers for the level tracks: \fBmain\fR, \fBall\fR, \fBgame\fR, \fBextreme\fR, \fBnofx\fR, \fBweird\fR, and \fBcontrib\fR. .PP Furthermore, you can make up and use your own specifiers. In order for them to take effect, though, you have to give cuyo additional information about the current version. This is done on the command line using the \fB\-\-version\fR option. For example .PP cuyo \-\-version=hard,geek .PP Specifies both hard version (you can change that in the menu) and version "geek", which is not predefined. .PP There are several constraints to be observed: .TP 3 \(em All versions of a definition must be made before the first use of the thing defined. As sometimes it is not obvious where the defined thing is used (for example startpic uses a previous greypic by assigning successive numbers to kinds), it is best to group all these versions into one block. .TP \(em A given version also applies to every more specialized version, for which no definition is given. In the above example, \fBnumexplode\fR is set to \fB6\fR in two-player hard mode and in two-player easy mode as well. .RS .PP All resulting conflicts must be resolved. For example, if you make a definition for \fB[2]\fR and one for \fB[hard]\fR, you must also make a definition for \fB[2,hard]\fR (or, equivalently, for \fB[hard,2]\fR), because otherwise it would be ambiguous which of the two former should apply in two-player hard mode. .RE .TP \(em Cuyo knows that \fBeasy\fR and \fBhard\fR exclude each other. Consequently, it is unnecessary (and indeed prohibited) to give an \fB[easy,hard]\fR definition, even if both \fB[easy]\fR and \fB[hard]\fR are given. The same holds for \fB1\fR and \fB2\fR, and for level tracks. .TP \(em Furthermore, cuyo knows that \fB1\fR and \fB2\fR are exhaustive: There is no mode which is neither single-player nor two-player. (The human-versus-AI mode counts as two-player as far as cual is concerned.) Therefore, if there are definitions for both, it is unnecessary, (and again illegal) also to define a version without any of both. For example, if \fB[1,de]\fR and \fB[2,de]\fR are given, \fB[de]\fR must be omitted. Alternatively, you could of course give \fB[1,de]\fR and \fB[de]\fR or \fB[de]\fR and \fB[de,2]\fR. The level track specifiers are exhaustive as well. . .SH BUSIENESS . (No, not Business ;\-) .PP Busieness is a concept to make it easier to implement simple animated sequences which are triggered by certain events. Each code fragment has an internal state which tells if it is busy. .TP 3 \(em Normal statements like assignments are never busy. .TP \(em A chain of commands separated by "," is busy as long as not all of the commands have been executed. .TP \(em \fIcode1\fR ; \fIcode2\fR is busy as long as at least one of \fIcode1\fR and \fIcode2\fR are busy. .PP Here's an example of how to use busieness for an animation which appears at random intervals: .PP \fBswitch { .br 1:100 => {B*, C*, D*, E*}; .br \-> A*; .br }; .PP This code fragment normally draws the icon at position A (0). But in each step, with a probability of 1/100, an animation sequence consisting of icons B, C, D and E is started. With a normal arrow ("\->") after the "1:100", after the step in which B has been drawn, the probability would be 99/100 that A is drawn again. But with the double arrow, the switch statement won't switch back to A until the animation has terminated. .PP (Btw: It doesn't matter if there's a "\->" or a "=>" before the "A*"; A* isn't busy anyway.) . .SH THE GLOBAL BLOB . Apart from the normal blobs which you can see on screen, there's one global blob (for the whole game, not one for each player), which, well, isn't really a blob, but behaves a bit like it. It has its own set of variables, and it can have a program which is run once every step. To define such a global program, use \fBglobal=\fIcode\fR. However, the global variables do exist even if you don't define global code. See section \fBVARIABLES AND CONSTANTS\fR on how to access them. Note that the global blob is always executed before any of the normal blobs. .PP There are also semiglobal blobs. There is one for each player. These are programmed with \fBsemiglobal=\fIcode\fR. . .SH EVENT HANDLERS . The following events exist: .TP .B init Is called only once, when the blob gets into life, just before the first time its main drawing routine is called. .TP .B turn Is called for falling blobs each time they are rotated. .TP .B land Is called when the steered blob lands (just after it landed). .TP .B changeside Is called when a blob moves from one player to the other, just after the blob has arrived at the new player. .TP .B connect Is called when the connection of blobs is recalculated. .TP .B row_up Is called when a player got a row from the other side, after everything is finished and just after the loc_y of all blobs has been decreased by 1. Is only called for the semiglobal blob, though. .TP .B row_down Is called when a player gives a row to the other side, before anything visible happens, but just after the loc_y of all blobs has been increased by 1. Is only called for the semiglobal blob, though. .TP .B keyleft, keyright, keyturn, keyfall Are called when the player presses the left, right, turn or fall key. Are only called for the steered falling blobs and the semiglobal blob, though. (Note that, in contrast to turn, keyturn is called even if the steered blob cannot be rotated due to some obstacles, and also if there is no steered blob.) . .SH THE LIFE OF A BLOB . Normal blobs come into life at the beginning of the game, or they fall into life: either as colored blobs, steered by the user, or as grey blobs. More precisely, the steered blobs already come into life when they appear as the preview. When a blob moves (by gravitiy or when rows go from one player to another), it takes its variables with it. When a blob explodes, it does not stop existing. Rather, it transforms into an empty blob. That's important for the variables: The empty blob still has all the variables set to the values they had before; only its kind is different. Empty blobs are everywhere where there's no other blob. (However, the falling blobs steered by the user are in some sense "above" everything else; there are empty blobs beneath them.) .PP The life of empty blobs is different from the one of normal blobs. Empty blobs are not affected by gravity, and they often start or stop existing. For example, when a single grey blob is falling down, the empty blob below it stops existing when the grey blob arrives and a new empty blob starts existing when the grey blob moves on. There is only one situation in which empty blobs move: When a row moves from one player to the other, and everything moves up resp. down, the empty blobs move, too. . .SH STARTDIST . The format of the startdist field is rather complicated. On the plus side, this means that many things can be done with little effort. We first describe the single-character format, which, at the time of this writing, has sufficed for all needs. After that, we describe the general format as an extension. .PP Every line of the startdist describes one row of blobs in the level's initial state. The lines are aligned to the bottom and the topmost lines come first (normal reading order). Each line must contain exactly 10 or exactly 20 characters, except the last which is special. In a line of length 20 the first 10 characters describe the left player, the second 10 characters describe the right player. A line of length 10 describes both players. Hence, each character describes one blob. The semantics are: .TP .B . An empty blop. .TP .B +, \-, * A blop chosen at random according to \fBcolourprob\fR, respectively \fBgreyprob\fR, respectively \fBgoalprob\fR. The value of \fBnogreyprob\fR has no influence. .TP .B 0..9, A..Z, a..z These characters denote a specific kind. If the character matches the \fBdistkey\fR of some kinds, the first of these is chosen. More generally, these characters are ordered such that \fB"9"\fR comes before \fB"A"\fR and \fB"Z"\fR comes before \fB"a"\fR. In this order, the maximal \fBdistkey\fR, which does not come after the character, specifies the blob's \fBkind\fR. The difference between the character and the \fBdistkey\fR then specifies the blob's \fBversion\fR. .RS .PP Example 1: In the special case, where the character exactly matches a \fBdistkey\fR, \fBversion\fR is set to 0. .PP Example 2: Suppose kind \fBapple\fR has \fBdistkey = "A"\fR, kind \fBorange\fR has \fBdistkey = "O"\fR and no further \fBdistkey\fRs exist. Then the character \fB"C"\fR denotes an apple with \fBversion=2\fR, the character \fB"N"\fR denotes an apple with \fBversion=13\fR, the character \fB"O"\fR denotes an orange with \fBversion=0\fR, the character \fB"S"\fR denotes an orange with \fBversion=4\fR, the character \fB"a"\fR denotes an orange with \fBversion=12\fR, and the character \fB"8"\fR does not denote anything (and hence is illegal). .RE .TP .B % An info blop with the version set according to the level-wide neighbours. .TP .B & An info blop with the version set according to the level-wide chaingrass. .PP The last line may have length 4, 8, 10, or 20. If it has length 10 or 20, it is just a normal line as above. Otherwise it describes the informational blops next to the field. In case of length 4, the first entry describes the blop which depicts the number of greys. The second entry describes the blop which depicts the number of grass blops. The third entry describes the blop which depicts connection information. The fourth entry describes the blop whoch depicts chaingrass information. In case of length 8, the above holds for the left player. The remaining 4 entries then describe the same for the right player, but in reversed order. The default is "-*%&&%*-" (or equivalently "-*%&"). .PP As seen above, startdist can reference 62 kind/version combinations directly (and more at random). Because this might at some time not be enough, the multichar extension has been introduced. In this case, each blob is described by more than one character. However, the number of characters per blob must be the same for all keys. Hence, the lengths of \fBstartdist\fR lines then must be this number multiplied by 10 or by 20. Every multicharacter combination starting with \fB"."\fR, \fB"+"\fR, \fB"\-"\fR, or \fB"*"\fR is treated as the corresponding character in single-character format. All other character combinations are treated as numbers in base 62 representation. Here, \fB"A"\fR to \fB"Z"\fR are digits with decimal value 10 to 35, and \fB"a"\fR to \fB"z"\fR are digits with decimal value 36 to 61. Leading spaces are allowed instead of zeroes (however, the all-space string is forbidden). The maximal \fBdistkey\fR which (as a number) is not larger than the number given in \fBstartdist\fR, specifies the blob's \fBkind\fR. The difference between the \fBstartdist\fR number and the \fBdistkey\fR then specifies the blob's \fBversion\fR. In the case of multichar \fBdistkey\fRs, the default for \fBdistkey\fRs of kinds declared by \fBstartpic=\fR is 10 in decimal. .PP For blops whose kinds are chosen at random (i.e. characters \fB"+"\fR, \fB"\-"\fR, \fB"*"\fR in single-character \fBstartdist\fRs), cuyo tries to make these as different as possible. That means, by a certain heuristic, cuyo minimizes the number of neighbouring blobs of the same kind. "Neighbouring", of course, refers to the \fBneighbours\fR entry. \fBinhibit\fR and the \fBcalculate_size\fR bit of \fBbehaviour\fR have no effect (these are mutable during the lifetime of blobs, while at the time of \fBstartdist\fR processing, no blob's lifetime has started yet). So the only way to influence the unneighbouring (if you really wish to do so), is by setting \fBneighbours\fR appropriately. (Of course, this possibility is even more limited, when you intend to set the \fBcalculate_size\fR bit during the blob's lifetime.) . .SH WHERE DO I PUT THE CUAL CODE? . Cual procedures and variables can be defined in different sections of the .ld files: .TP 3 \(em Outside of everything; that code is accessible from every level coming after that definition. .TP \(em In the section of a level. .TP \(em In the section of a kind. .PP This basically does what you expect. However, there's one thing you might want to know: Even if you define a variable inside a kind, \fIevery\fR blob in that level will have that variable. The only effect of defining the variable in the section of a kind is that this kind is the only one which can access it. . .SH AMPERSAND-CALL . To explain a bit what calling a procecure with an & means, here two examples: .PP \fIExample 1:\fR .br << .br myblob = { .br ... .br switch { .br myvar \-> { 0A*; 1; A,B,C,D; *; 2A*}; .br \-> { 0B*; 1; A,B,C,D; *; 2B*}; .br }; .br }; .br >> .PP \fIExample 2:\fR .br << .br anim = {1; A,B,C,D; *}; .br .br myblob = { .br ... .br switch { .br myvar \-> { 0A*; &anim; 2A*}; .br \-> { 0B*; &anim; 2B*}; .br }; .br }; .br >> .PP The difference between these examples is what happens when myvar changes. In example 1, the animation "A, B, C, D" will restart at the beginning (because the two animations are different ones); in example 2, the "same" animation is used in both cases, so the animation will simply continue. (Removing the ampersands from example 2 will turn the behaviour to the one of example 1.) . .SH THE AI UTILITY FUNCTION . When deciding how to place the steered falling blobs, the AI player tries to maximize a certain utility function. Its value is the sum of the values for both steered falling blobs plus \fBaiu_monochromic_vertical\fR in case both blobs have the same color and they get placed vertically. The value for a single blob is the sum of the following: .TP 3 \(em For each new neighbour of blob, the neighbour utility. .TP \(em \fBaiu_two_above\fR, if the blob is two above a blob of same kind. .TP \(em \fBaiu_height*20/\fR(the blob's \fBy\fR coordinate). .PP The neighbour utility for a single new blob and a single one of its new neighbours is the sum of the following: .TP 3 \(em \fBaiu_color\fR, if the neighbour has the same kind as the blob. .TP \(em \fBaiu_grass\fR, if the neighbour fulfills \fBbehaviour.goalblob\fR. .TP \(em \fBaiu_grey\fR, if the neighbour fulfills \fBbehaviour.explodes_on_explosion\fR. . .SH SEE ALSO . \fBcuyo\fP(6) . .SH BUGS . Probably a lot. The following are just a few known ones: .PP There are several problems with busieness and that stuff. There are several situations in which Cual doesn't behave in the way I would like, and in other situations I don't know how Cual should behave. cuyo-2.1.0/docs/Makefile.in0000644000175000017500000003452712422656610012426 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Copyright <=2001 by the cuyo developers # Maintenance modifications 2002,2006,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = docs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sdl.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man6dir = $(mandir)/man6 am__installdirs = "$(DESTDIR)$(man6dir)" NROFF = nroff MANS = $(man_MANS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATASRC_MAINTAINER_MODE = @DATASRC_MAINTAINER_MODE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SDL_CONFIG = @SDL_CONFIG@ SDL_CPPFLAGS = @SDL_CPPFLAGS@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = cuyo.6 cual.6 EXTRA_DIST = $(man_MANS) MAINTAINERCLEANFILES = Makefile.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man6: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man6dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man6dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man6dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.6[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man6dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man6dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man6dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man6dir)" || exit $$?; }; \ done; } uninstall-man6: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man6dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.6[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man6dir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man6dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man6 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man6 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man6 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-man uninstall-man6 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cuyo-2.1.0/docs/Makefile.am0000644000175000017500000000211511674110136012375 00000000000000# # Copyright <=2001 by the cuyo developers # Maintenance modifications 2002,2006,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ## Das geht noch nicht so richtig...: ## SUBDIRS = en man_MANS = cuyo.6 cual.6 ## Man-Pages werden blicherweise automatisch generiert und kommen daher ## nicht automatisch in die Distribution... EXTRA_DIST = $(man_MANS) MAINTAINERCLEANFILES = Makefile.in cuyo-2.1.0/docs/cuyo.60000644000175000017500000001207712422640765011427 00000000000000.TH CUYO 6 "2014-10-25" .\" .\" Copyright <=2001 by Immanuel Halupczok .\" Modified 2002,2006,2012 by the cuyo developers .\" Maintenance modifications 2007,2008,2010-2012,2014 by the cuyo developers .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA .\" .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME cuyo - Tetris-like game with many suprises .SH SYNOPSIS \fBcuyo\fR [\fB\-d\fR] [\fB\-f\fR] [\fB\-g \fIwidth\fBx\fIheight\fR] [\fB\-h\fR] [\fB\-?\fR] [\fB\-\-version \fIversions\fR] [\fIld-file\fR] .P \fBcuyo \-?\fR .\".br .\".B cuyo .\".RI \-\-help .SH DESCRIPTION Use A, D, W and S or the arrow keys to move left, move right, turn and drop the falling piece. Try to put blobs of the same color together. (You don't need to form rows or columns. Any shape will do.) When enough blobs of the same color are connected, they explode. (What "enough" means depends on the level.) Try to make explosions next to the the grass (or whatever there is in the level instead of the grass). Then, it will explode, too. The level is finished when no grass is left. .br In some levels, you will need a chain reaction to get rid of the grass-equivalent. And many other things may happen in other levels. .br In two-player-mode, each time one player causes an explosion, the other one gets grey things (which explode when something else explodes next to them). If one player builds a too big tower, the other player may get one of his rows. .SH OPTIONS .TP .B \-d Debug mode. .TP .B \-f Fullscreen mode. .TP .B \-g \fIwidth\fBx\fIheight Set the window size. .TP .B \-h Print a short help message and exit with status 0. .TP .B \-? Print a short help message and exit with status 1. .TP .B \-\-version \fIversions\fR, \fB\-\-version=\fIversions\fB Activate special versions of levels and level tracks. \fIversions\fR is a comma-separated list of version specifiers. Version specifiers pertaining to difficulty setting, numbers of players, and level tracks can also be set from the main menu. See the \fBcual\fP(6)\fR manpage for the relevant values. The other version specifiers which are actually used in levels are \fBeco\fR and \fBgeek\fR. \fBeco\fR makes a very few levels less resource-hungry. In the consequence, they also become less beautiful. .P If you're trying to design own levels, you can pass the name of your .ld file (level description file) to test the level. If you do that, this will be the only available level. .\".SH FILES .\"Cuyo needs a file called .\".I main.ld .\"- the main description file for the levels. .\"It includes a lot of other \fI.ld\fR files. .\"Also, a directory called .\".I pics .\"is needed, with all these small icons in it. .\"Cuyo will look for both in different paths. .\"If it has been installed correctly, you should have .\"no problems. .SH CREATING NEW LEVELS The main work is to draw all those little icons. Then you have to create a level description file which tells cuyo how to put everything together. There is an example level with many comments. Its description file is \fBexample.ld\fR. (It should be part of the cuyo distribution and probably lies in the same directory as the other cuyo level description files.) It is rather outdated but may still be a good starting point. .P Other Sources of information are: .TP 2 - Try \fIman cual\fR. Cual - the Cuyo Animation Language - is the format of level description files. .TP - And of course, there are the level description files of the existing levels (files ending in \fI.ld\fR, probably located somewhere like \fI/usr/share/games/cuyo/\fR). .SH SEE ALSO \fBcual\fP(6) .SH BUGS The level description language is still under development. .br In the preferences dialog, some keys are not displayed correctly. .br The AI Player is not very intelligent. In particular, it doesn't understand most of the special features of the levels, and so, it sometimes behaves very silly. .br See the .I TODO file for other bugs. .SH AUTHORS Mainly Immanuel Halupczok . .br Other contributors to the source code: Bernhard R. Link, Mark Weyer, Bernhard Seckinger. .br Other contributors of levels: Daniela Lipps, Simon Huggenberger. cuyo-2.1.0/ChangeLog0000644000175000017500000000000012422656604011161 00000000000000cuyo-2.1.0/README0000644000175000017500000000164411644054140010276 00000000000000README for cuyo: For the impatient ================= To install cuyo, follow the instructions in the INSTALL file. Or follow this ultra-short installation guide: 1. ./configure (in the same directory as this file) 2. make 3. make install To play cuyo without really installing it (perhaps because you are not root) (you can leave out steps 3 and 4 if you don't care about native language support): 1. ./configure --datadir=`pwd`/data --localedir=`pwd`/locale 2. ln -s . data/cuyo 3. Create the path /locale//LC_MESSAGES 4. ln -s ../../../po/.gmo /locale//LC_MESSAGES/cuyo.mo 5. make 6. src/cuyo If you do this, you should NOT do a make install later! If ./configure did not work or if you intend to modify cuyo, then read README.maintainer instead. FAQ === Q: What does the name 'cuyo' mean? A: Well, 'cuyo' is spanish for 'whose'. cuyo-2.1.0/configure0000755000175000017500000054457512422656611011352 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for cuyo 2.1.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and cuyo@karimmi.de $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cuyo' PACKAGE_TARNAME='cuyo' PACKAGE_VERSION='2.1.0' PACKAGE_STRING='cuyo 2.1.0' PACKAGE_BUGREPORT='cuyo@karimmi.de' PACKAGE_URL='' ac_unique_file="src/cuyo.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS DATASRC_MAINTAINER_MODE EGREP GREP CXXCPP SDL_LIBS SDL_CPPFLAGS SDL_CONFIG HASLIBZ_FALSE HASLIBZ_TRUE YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX MSGMERGE XGETTEXT GMSGFMT MSGFMT USE_NLS am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_dependency_tracking enable_nls with_sdl_prefix with_sdl_exec_prefix enable_sdltest enable_datasrc_maintainer_mode ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC YACC YFLAGS CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures cuyo 2.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/cuyo] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of cuyo 2.1.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-nls use Native Language Support --disable-sdltest Do not try to compile and run a test SDL program --enable-datasrc-maintainer-mode rebuild file lists in the datasrc directory, if necessary; needs ocaml Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF cuyo configure 2.1.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------ ## ## Report this to cuyo@karimmi.de ## ## ------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by cuyo $as_me 2.1.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='cuyo' VERSION='2.1.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers config.h" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "${CXXFLAGS+set}" != set ; then CXXFLAGS="-Wall -W -ansi $CXXDBGFLAGS" fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if ${gt_cv_func_gnugettext1_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libc=yes else gt_cv_func_gnugettext1_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 $as_echo "$gt_cv_func_gnugettext1_libc" >&6; } if test "$gt_cv_func_gnugettext1_libc" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5 $as_echo_n "checking for gzopen in -lz... " >&6; } if ${ac_cv_lib_z_gzopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gzopen (); int main () { return gzopen (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_z_gzopen=yes else ac_cv_lib_z_gzopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzopen" >&5 $as_echo "$ac_cv_lib_z_gzopen" >&6; } if test "x$ac_cv_lib_z_gzopen" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" HASLIBZ=true fi if test a$HASLIBZ = atrue; then HASLIBZ_TRUE= HASLIBZ_FALSE='#' else HASLIBZ_TRUE='#' HASLIBZ_FALSE= fi # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then : withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then : withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then : enableval=$enable_sdltest; else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi PATH="$prefix/bin:$prefix/usr/bin:$PATH" # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SDL_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SDL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG=$ac_cv_path_SDL_CONFIG if test -n "$SDL_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 $as_echo "$SDL_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi min_sdl_version=1.2.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CPPFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` SDL_LIBS=${SDL_LIBS#-L/usr/lib } sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CPPFLAGS="$CPPFLAGS" ac_save_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else no_sdl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" LIBS="$LIBS $SDL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CPPFLAGS="" SDL_LIBS="" : fi rm -f conf.sdltest if test -z "$SDL_LIBS"; then as_fn_error $? "SDL is required to compile Cuyo" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mix_OpenAudio in -lSDL_mixer" >&5 $as_echo_n "checking for Mix_OpenAudio in -lSDL_mixer... " >&6; } if ${ac_cv_lib_SDL_mixer_Mix_OpenAudio+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_mixer $SDL_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Mix_OpenAudio (); int main () { return Mix_OpenAudio (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes else ac_cv_lib_SDL_mixer_Mix_OpenAudio=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SDL_mixer_Mix_OpenAudio" >&5 $as_echo "$ac_cv_lib_SDL_mixer_Mix_OpenAudio" >&6; } if test "x$ac_cv_lib_SDL_mixer_Mix_OpenAudio" = xyes; then : SDL_LIBS="$SDL_LIBS -lSDL_mixer" else as_fn_error $? "SDL_mixer is required to compile Cuyo" "$LINENO" 5 fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CPPFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_cxx_check_header_mongrel "$LINENO" "SDL_mixer.h" "ac_cv_header_SDL_mixer_h" "$ac_includes_default" if test "x$ac_cv_header_SDL_mixer_h" = xyes; then : else as_fn_error $? "SDL_mixer.h is required to compile Cuyo" "$LINENO" 5 fi CPPFLAGS="$save_CPPFLAGS" # Check whether --enable-datasrc-maintainer-mode was given. if test "${enable_datasrc_maintainer_mode+set}" = set; then : enableval=$enable_datasrc_maintainer_mode; DATASRC_MAINTAINER_MODE=true else DATASRC_MAINTAINER_MODE=false fi ac_config_files="$ac_config_files Makefile src/Makefile data/Makefile docs/Makefile icons/Makefile po/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HASLIBZ_TRUE}" && test -z "${HASLIBZ_FALSE}"; then as_fn_error $? "conditional \"HASLIBZ\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by cuyo $as_me 2.1.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ cuyo config.status 2.1.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "icons/Makefile") CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;; "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cuyo-2.1.0/config.h.in0000644000175000017500000000344412422656607011454 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define this to enable reading of .xpm.gz files. Needs libz. */ #undef HAVE_LIBZ /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const cuyo-2.1.0/datasrc/0000755000175000017500000000000012422656731011123 500000000000000cuyo-2.1.0/datasrc/pics/0000755000175000017500000000000012422656734012064 500000000000000cuyo-2.1.0/datasrc/pics/gen_flechtwerk.ml0000644000175000017500000001477212422656734015340 00000000000000(* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) exception Zu_nah open Helfer open Farbe open Vektorgraphik open Male_mit_aa let dicke = 1.0/.16.0 let maxd = 1e-6 let gradient_richtung feld p fp = let d = if fp1.0-.maxd then (1.0-.fp)/.2.0 else maxd in let x,y = p in let ddx = (feld (x+.d, y) -. feld (x-.d, y)) /. d in let ddy = (feld (x, y+.d) -. feld (x, y-.d)) /. d in atan2 ddy ddx let flecht f linien = let _,_,drin = male (erzeuge_vektorbild [Flaechen ( [| rot; gruen |], [konvertiere_polygon (List.concat linien), 0, Some 1; konvertiere_polygon [Kreis ((0.5,0.5),10.0)], 0, None])]) dicke (Graphik.monochrom schwarz 1 1) in let drin p = let farbe = drin p in nur_rot farbe > nur_gruen farbe in let nah = List.map (fun linie -> let _,_,nah = male (erzeuge_vektorbild [Strich (blau,[konvertiere_polygon (verschiebe_polygon 1.0 1.0 linie)])]) dicke (Graphik.monochrom schwarz 3 3) in fun (x,y) -> nur_blau (nah (x+.1.0,y+.1.0))) linien in 1,1,fun p -> match List.filter (fun (naehe,nah) -> naehe>0.0) (List.map (fun nah -> nah p, nah) nah) with | [] -> f 0.0 None | [naehe,_] -> f naehe None | naehen -> let naehen = List.sort (fun (naehe1,_) -> fun (naehe2,_) -> Pervasives.compare naehe2 naehe1) naehen in let (naehe1,nah1) :: (naehe2,nah2) :: rest = naehen in let dritte = rest<>[] in let winkel = (gradient_richtung nah1 p naehe1) -. (gradient_richtung nah2 p naehe2) in let winkel = winkel /. (2.0*.pi) in let winkel = winkel -. floor winkel in if xor (winkel>=0.5) (drin p) then f naehe1 (Some (naehe2,dritte)) else f naehe2 (Some (naehe1,dritte)) let test f linien = male (erzeuge_vektorbild [Strich (schwarz,[konvertiere_polygon (List.concat linien)])]) dicke (Graphik.monochrom durchsichtig 1 1) let stift = 0.5 let luecke = 1.0-.stift let f1 naehe1 naehe2 = let dritter = match naehe2 with | None -> false | Some (_,dritter) -> dritter in let d = (1.0-.naehe1)/.stift in if dritter || d>=1.0 then durchsichtig else grau d let leer = [] let e = 1.0/.(6.0+.12.0*.sqrt 2.0) let e' = e*.sqrt 2.0 let al1 = 1.0-.e let al2 = 0.5-.3.0*.e' let a1 = al1,al2 let a2 = al2,al1 let a3 = -.al2,al1 let a4 = -.al1,al2 let a5 = -.al1,-.al2 let a6 = -.al2,-.al1 let a7 = al2,-.al1 let a8 = al1,-.al2 let achteck = [ Strecke (a1,a2); Strecke (a2,a3); Strecke (a3,a4); Strecke (a4,a5); Strecke (a5,a6); Strecke (a6,a7); Strecke (a7,a8); Strecke (a8,a1); ] let rl = 1.0-.e' let r1 = rl,0.0 let r2 = 0.0,rl let r3 = -.rl,0.0 let r4 = 0.0,-.rl let raute = [ Strecke (r1,r2); Strecke (r2,r3); Strecke (r3,r4); Strecke (r4,r1); ] let bl1 = 2.0*.e+.2.0*.e' let bl2 = 0.5+.e+.3.0*.e' let bl3 = e let bl4 = 0.5+.e' let b1 = bl2,bl1 let b2 = bl4,bl3 let b3 = bl3,bl4 let b4 = bl1,bl2 let b5 = -.bl1,bl2 let b6 = -.bl3,bl4 let b7 = -.bl4,bl3 let b8 = -.bl2,bl1 let b9 = -.bl2,-.bl1 let b10 = -.bl4,-.bl3 let b11 = -.bl3,-.bl4 let b12 = -.bl1,-.bl2 let b13 = bl1,-.bl2 let b14 = bl3,-.bl4 let b15 = bl4,-.bl3 let b16 = bl2,-.bl1 let burg = [ Strecke (r1,b1); Strecke (b1,b2); Strecke (b2,b3); Strecke (b3,b4); Strecke (b4,r2); Strecke (r2,b5); Strecke (b5,b6); Strecke (b6,b7); Strecke (b7,b8); Strecke (b8,r3); Strecke (r3,b9); Strecke (b9,b10); Strecke (b10,b11); Strecke (b11,b12); Strecke (b12,r4); Strecke (r4,b13); Strecke (b13,b14); Strecke (b14,b15); Strecke (b15,b16); Strecke (b16,r1); ] let gl = 0.5-.e-.3.0*.e' let g1 = gl,gl let g2 = -.gl,gl let g3 = -.gl,-.gl let g4 = gl,-.gl let grau = [ Strecke (g1,g2); Strecke (g2,g3); Strecke (g3,g4); Strecke (g4,g1); ] let grl1 = 6.0*.e let grl2 = 0.1 let grl3 = 0.2 let gras = [Kreis ((0.0,0.0),grl1)] let grasverbind = [ Spline ((0.0,grl1),(-.grl3,grl1),(-0.5+.grl3,grl2),(-0.5,grl2)); Bogen ((-0.5,0.0),grl2,true,0.5*.pi,1.5*.pi); Spline ((-0.5,-.grl2),(-0.5+.grl3,-.grl2),(-.grl3,-.grl1),(0.0,-.grl1)); Spline ((0.0,-.grl1),(grl3,-.grl1),(0.5-.grl3,-.grl2),(0.5,-.grl2)); Bogen ((0.5,0.0),grl2,true,-0.5*.pi,0.5*.pi); Spline ((0.5,grl2),(0.5-.grl3,grl2),(grl3,grl1),(0.0,grl1)); ] let kombiniere linksrechts obenunten diagonal mitte b h f = let alr = List.length linksrechts in let aou = List.length obenunten in let ad = List.length diagonal in let am = List.length mitte in Graphik.kombiniere_bildchen b h (List.concat (list_for 0 (h-1) (fun j -> list_for 0 (b-1) (fun i -> i,j, let n = (h-1-j)*b+i in let n,lr = n/alr, List.nth linksrechts (n mod alr) in let n,ou = n/aou, List.nth obenunten (n mod aou) in let n,d = n/ad, List.nth diagonal (n mod ad) in let m = List.nth mitte n in flecht f [ verschiebe_polygon (-0.5) 0.5 lr @ verschiebe_polygon 1.5 0.5 lr; verschiebe_polygon 0.5 (-0.5) ou @ verschiebe_polygon 0.5 1.5 ou; verschiebe_polygon (-0.5) (-0.5) d @ verschiebe_polygon 1.5 1.5 d @ verschiebe_polygon (-0.5) 1.5 d @ verschiebe_polygon 1.5 (-0.5) d; verschiebe_polygon 0.5 0.5 m; ])))) let alles = kombiniere [leer; achteck; raute; burg] [leer; achteck; raute; burg] [leer; achteck] [leer; achteck; raute; burg; grau; gras] 16 12 let gras = kombiniere [leer] [leer; achteck; raute; burg] [leer; achteck] [grasverbind] 4 2 let klein = kombiniere [leer] [leer] [leer] (List.map (skaliere_polygon 0.5) [achteck; raute; burg]) 3 1 ;; let gric,command,outname = Gen_common.parse_args () in let bild = match command with | "mflAlles" -> alles f1 | "mflGrasV" -> gras f1 | "mflKlein" -> klein f1 in Graphik.gib_xpm_aus (rgb_grau 1.0) outname (Graphik.berechne gric bild) cuyo-2.1.0/datasrc/pics/polynome.mli0000644000175000017500000000342712422656733014356 00000000000000(* Copyright 2006,2011 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) exception Nullpolynom val loese_2_normiert: float -> float -> float list (* loese_2_normiert a b lst x^2 + ax + b = 0 *) val loese_2: float -> float -> float -> float list (* loese_2 a b c lst ax^2 + bx + c = 0 *) val loese_3: float -> float -> float -> float -> float list (* loese_3 a b c d lst ax^3 + bx^2 + cx + d = 0 *) val loese_4: float -> float -> float -> float -> float -> float list (* loese_4 a b c d e lst ax^4 + bx^3 + cx^2 + dx + e = 0 *) (* Ausgegeben werden jeweils alle reellen Nullstellen (mit Vielfachheiten). Sind das zu viele, dann liegt das Nullpolynom vor und die entsprechende exception wird geraist. *) val loese_2_2: float -> float -> float -> float -> float -> float -> float -> float -> float -> float -> float -> float -> (float*float) list (* loese_2_2 a20 a11 a02 a10 a01 a00 b20 b11 b02 b10 b01 b00 lst das System a20x^2 + a11xy + a02y^2 + a10x + a01y + a00 = 0 b20x^2 + b11xy + b02y^2 + b10x + b01y + b00 = 0 *) cuyo-2.1.0/datasrc/pics/polynome.ml0000644000175000017500000002137212422656733014204 00000000000000(* Copyright 2006,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Helfer let drittel = 1.0/.3.0 let zweidrittelpi = pi*.2.0*.drittel exception Nullpolynom let loese_0 a = if a=0.0 then raise Nullpolynom else [] (* loese_0 a lst a=0 *) let loese_1 a b = if a=0.0 then loese_0 b else [-.b/.a] (* loese_1 a b lst ax+b=0 *) let loese_1'_2' a b c d e f = (* loese_1'_2' a b c d e f lst das System ay + b = 0 cxy + dx + ey + f = 0 *) let ys = try loese_1 a b with | Nullpolynom -> if c=0.0 & d=0.0 & loese_1 e f = [] then [] else raise Nullpolynom in List.concat (List.map (fun y -> let xs = loese_1 (c*.y+.d) (e*.y+.f) in List.map (fun x -> x,y) xs) ys) let loese_2_normiert a b = let a' = a*.0.5 in let diskriminante = a'*.a'-.b in if diskriminante<0.0 then [] else let wurzel = sqrt diskriminante in [wurzel-.a'; -.wurzel-.a'] let loese_2 a b c = if a=0.0 then loese_1 b c else loese_2_normiert (b/.a) (c/.a) let loese_1_2' a b c d e f g = (* loese_1_2' a b c d e f g lst das System ax + by + c = 0 dxy + ex + fy + g = 0 *) if a=0.0 then loese_1'_2' b c d e f g else (* Also x = -b/a*y -c/a *) let x_y1 = -.b/.a in let x_y0 = -.c in let ys = loese_2 (d*.x_y1) (d*.x_y0+.e*.x_y1+.f) (e*.x_y0+.g) in List.map (fun y -> x_y1*.y +. x_y0, y) ys let loese_2'_2' a b c d e f g h = (* loese_2'_2' a b c d e f g h lst das System axy + bx + cy + d = 0 exy + fx + gy + h = 0 *) if a=0.0 then loese_1_2' b c d e f g h else if e=0.0 then loese_1_2' f g h a b c d else (* Die erste Gleichung ist x*(ay+b)=-(cy+d) Zunchst behandeln wir den Sonderfall ay+b=0 *) let y_sonder = -.b/.a in (* Wir wissen schon a<>0.0 *) let loes_sonder = if c*.y_sonder+.d = 0.0 then (* Erste Gleichung tatschlich erfllt *) List.map (fun x -> x,y_sonder) (loese_1 (e*.y_sonder+.f) (g*.y_sonder+.h)) else [] in (* Sonst knnen wir x=-(cy+d)/(ay+b) substituieren. Wir erweitern die zweite Gleichung mit ay+b und erhalten - e(cy+d)y - f(cy+d) + gy(ay+b) + h(ay+b) = 0 *) let ys = loese_2 (g*.a-.e*.c) (g*.b+.h*.a-.e*.d-.f*.c) (h*.b-.f*.d) in loes_sonder @ List.map (fun y -> -.(c*.y+.d)/.(a*.y+.b), y) ys let loese_3 a b c d = if a=0.0 then loese_2 b c d else let e,f,g = b/.(a*.3.0), c/.a, d/.a in (* Jetzt: x^3 + 3ex^2 + fx + g = 0 Substitution: x=y-e x reell <=> y reell *) let h,i = f*.drittel-.e*.e, g*.0.5-.(f*.0.5-.e*.e)*.e in (* Jetzt: y^3 + 3hy + 2i = 0 *) if i=0.0 then if h>0.0 then [-.e] else let y1=sqrt (h*.(-3.0)) in [-.e; y1-.e; -.y1-.e] else (* Substitution: y=z-h/z y reell <=> z reell oder |z|^2 = -h (und dann y=2*Re(z)) *) let j = -.h*.h*.h in (* Jetzt: z^3 + 2i + j/z^3 = 0 Substituiere: z=t^1/3 eins von drei z reell <=> t reell |z|^2 = -h <=> |t|^2 = j Dann: t^2 + 2it + j = 0 *) let i2 = i*.i in if i2<=j then (* Fr t gibt es keine reelle Lsung (auer im Spezialfall i^2=j). Dafr gibt es drei reelle Lsungen fr y, (also natrlich alle ber die "|t|^2=j"-Schiene). *) let alpha = (atan2 (sqrt (j-.i2)) (-.i))*.drittel in (* t=(j^1/2, 3*alpha) in Polardarstellung *) let k=2.0*.(sqrt (-.h)) in (* k=2*|z| *) [k*.(cos alpha)-.e; k*.(cos (alpha+.zweidrittelpi))-.e; k*.(cos (alpha-.zweidrittelpi))-.e] else (* Jetzt ist |t|^2=j unmglich. Also wird nur das reelle z weiterverfolgt. *) let t = sqrt(i2-.j)-.i in let z = if t<0.0 then -.((-.t) ** drittel) else t ** drittel in [z-.h/.z-.e] let loese_4 a b c d e = if a=0.0 then loese_3 b c d e else let f,g,h,i = b/.(a*.4.0), c/.a, d/.a, e/.a in (* Jetzt: x^4 + 4fx^3 + gx^2 + hx + i = 0 Substitution: x=y-f *) let j,k,l = -6.0*.f*.f+.g, (8.0*.f*.f-.2.0*.g)*.f+.h, ((-3.0*.f*.f+.g)*.f-.h)*.f+.i in (* Jetzt: y^4 + jy^2 + ky + l = 0 *) if k=0.0 then (* Substitution y=z^1/2, also dann z^2 + jz + l = 0 *) let ze = loese_2_normiert j l in List.concat (List.map (function z -> if z>=0.0 then let y=sqrt z in [y-.f;-.y-.f] else []) ze) else if l=0.0 then (-.f)::(List.map (function y -> y-.f) (loese_3 1.0 0.0 j k)) else (* Ziel: Faktorisierung in zwei quadratische Polynome. Das wren dann (y^2 + my + l/n) und (y^2 - my + n). Da nichtreelle Nullstellen paarweise konjugiert auftreten, ist das auf jeden Fall mit rellem m und n machbar. Wir erhalten das System: j = n-m^2+l/n und k = mn-ml/n m=0 ist ausgeschlossen, da sonst k=0, also unter quivalenzumformungen: m^2+j = n+l/n und k/m = n-l/n m^2+j+k/m = 2n und m^2+j-k/m = 2l/n 4l = m^4 + 2jm^2 + j^2 - k^2/m^2 und n = (m^2+j+k/m)/2 *) let m2 = List.find (function m2 -> m2>0.0) (loese_3 1.0 (2.0*.j) (j*.j-.4.0*.l) (-.k*.k)) in let m = sqrt m2 in let n = (m2+.j+.k/.m)/.2.0 in List.map (fun y -> y-.f) ((loese_2_normiert m (l/.n)) @ (loese_2_normiert (-.m) n)) let rec loese_2_2 a20 a11 a02 a10 a01 a00 b20 b11 b02 b10 b01 b00 = if a20=0.0 then if b20=0.0 then if a02=0.0 & b02=0.0 then loese_2'_2' a11 a10 a01 a00 b11 b10 b01 b00 else List.map (fun (x,y) -> y,x) (loese_2_2 a02 a11 a20 a01 a10 a00 b02 b11 b20 b01 b10 b00) else loese_2_2 b20 b11 b02 b10 b01 b00 a20 a11 a02 a10 a01 a00 else let c11 = a11/.a20 in let c02 = a02/.a20 in let c10 = a10/.a20 in let c01 = a01/.a20 in let c00 = a00/.a20 in (* Also ist die erste Gleichung x^2 + (c11y+c10)x + (c02y^2+c01y+c00) = 0 Die Lsung ist x = d1y + d0 +- w mit w = sqrt (e2y^2 + e1y + e0) *) let d1 = -.c11/.2.0 in let d0 = -.c10/.2.0 in let e2 = d1*.d1 -. c02 in let e1 = 2.0*.d1*.d0 -. c01 in let e0 = d0*.d0 -. c00 in (* Es folgt x^2 = f2y^2 + f1y + f0 +- g1yw +- g0w *) let f2 = d1*.d1 +. e2 in let f1 = 2.0*.d1*.d0 +. e1 in let f0 = d0*.d0 +. e0 in let g1 = 2.0*.d1 in let g0 = 2.0*.d0 in (* Damit wird die zweite Gleichung zu h2y^2 + h1y + h0 = +- i1yw +- i0w *) let h2 = b20*.f2 +. b11*.d1 +. b02 in let h1 = b20*.f1 +. b11*.d0 +. b10*.d1 +. b01 in let h0 = b20*.f0 +. b10*.d0 +. b00 in let i1 = b20*.g1 +. b11 in let i0 = b20*.g0 +. b10 in (* Das quadrieren wir. Wegen des +- bleibt die Lsungsmenge gleich. *) let ys = loese_4 (h2*.h2 -. i1*.i1*.e2) (2.0*.h2*.h1 -. i1*.i1*.e1 -. 2.0*.i1*.i0*.e2) (h1*.h1 +. 2.0*.h2*.h0 -. i1*.i1*.e0 -. i0*.i0*.e2 -. 2.0*.i1*.i0*.e1) (2.0*.h1*.h0 -. i0*.i0*.e1 -. 2.0*.i1*.i0*.e0) (h0*.h0 -. i0*.i0*.e0) in List.concat (List.map (fun y -> (* Kommt diese Lsung von der +w oder von der -w Variante? Um das herauszufinden testen wir, welches entsprechende x die zweite Gleichung besser lst. Nicht, welche genau lst, denn (im Gegensatz zu obigen Tests von Koeffizienten auf 0) mu mit numerischen Ungenauigkeiten gerechnet werden. *) let w2 = e2*.y*.y +. e1*.y +. e0 in if w2<0.0 then [] else let w = sqrt w2 in let x1,x2 = d1*.y +. d0 +. w, d1*.y +. d0 -. w in let wert1 = b20*.x1*.x1 +. b11*.x1*.y +. b02*.y*.y +. b10*.x1 +. b01*.y +. b00 in let wert2 = b20*.x2*.x2 +. b11*.x2*.y +. b02*.y*.y +. b10*.x2 +. b01*.y +. b00 in if abs_float wert1 > abs_float wert2 then [x2,y] else [x1,y]) ys) cuyo-2.1.0/datasrc/pics/xpmlex.mli0000644000175000017500000000154212422656733014025 00000000000000(* Copyright 2006 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Lexing val xpm: lexbuf -> string val erstezeile: lexbuf -> int val farbzeilenrest: lexbuf -> farbe cuyo-2.1.0/datasrc/pics/mzZahn.pov0000644000175000017500000000255212422656733014004 00000000000000/* Copyright 2005 by Mark Weyer Maintenance modifications 2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite = 6; #declare Hoehe = 18; #include "zahn.inc" #ifdef (Gras) #declare Haut_Farbe = <1/2,1/2,1>; #end #macro Gebissreihe(V,D) union { object {Gebiss(0,V,D,D) translate -2*x} object {Gebiss(1,V,D,D)} object {Gebiss(2,V,D,D) translate 2*x} } #end #macro Gebissfeld(D) union { object {Gebissreihe(0,D) translate 2*y} object {Gebissreihe(1,D)} object {Gebissreihe(2,D) translate -2*y} } #end union { object {Gebissfeld(0) translate 6*y} object {Gebissfeld(1)} object {Gebissfeld(2) translate -6*y} } cuyo-2.1.0/datasrc/pics/aehnlich.inc0000644000175000017500000000227312422656734014256 00000000000000/* Copyright 2007 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Dreifachlicht = 1; #declare Hintergrund = 0; #include "cuyopov.inc" #declare KugelRad = 1/4; #declare Rundheit = 1/20; #declare DStab = 1/5; #declare DDAchteck = 1/4; #declare ZAchteck = 2; #declare BAchteck = KugelRad + Rundheit + 1/32*sqrt(2); #declare DAchteck = BAchteck*sqrt(3/4) + (DDAchteck+ZAchteck)/2; #declare Finish = finish { ambient 0 specular 1/2 } #declare Fassung = texture{ pigment {rgb 2/3} finish {Finish} } cuyo-2.1.0/datasrc/pics/cuyo.xpm0000644000175000017500000001243012422656734013511 00000000000000/* XPM */ /* Copyright 2008 by Mark Weyer based on cuyo.png (64x64 desktop icon) which, at that time, was Copyright 2007 by Immanuel Halupczok based on pause.xpm which, at that time, was: Copyright <=2001 by Immanuel Halupczok This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char * cuyo[] = { "64 64 2 1", " c #FFFFFF", ". c #000000", " ", " ", " ", " ", " ", " ............. ", " ... .. ", " ... .. ", " .. . ", " .. . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . ... ... . ", " . .. . .. .. . ", " . . . . . . ", " . . . . . . ", " . . . . . ", " . . . . . ", " . . . . . ", " . . .. . .. . . ", " . . ... . ... . . ", " . . ..... . ..... . . ", " .. . ..... . ..... . . ", " . . ..... . ..... . . ", " . . .... . . ... . . ", " . . ... . .... . . ", " ..... ........ ....... ..... ", " .. .. ", " ... .. ", " . . ", " . . ", " . . ", " .. . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " ... .. ", " ... .. ", " .... ... ", " ...... ... ", " ............... ", " ", " ", " ", " "}; cuyo-2.1.0/datasrc/pics/mdGold.pov0000644000175000017500000001425012422656734013742 00000000000000/* Copyright 2006,2008,2011,2014 by Mark Weyer Maintenance modifications 2007,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "mdGold.inc" #declare Spezial_Einzel = 1; #declare Gold = texture { pigment {rgb <1,2/3,0>/4} finish {specular 0.8 metallic} } /* //Dekommentieren, wenn man die Stapel schnell anpassen will #macro Muenze() cylinder { -HDicke*y HDicke*y Rad Textur(texture {Gold}) } #end */ #declare KopfRad = Rad*0.7; #declare Rundheit = Rad/20; #declare Gravurtiefe = KopfRad/64/sqrt(2); // Damit die Steigung immer 1 ist #declare Rand = Rad/8; #declare ZahlHoehe = Rad/3; #declare ZifferBreite = Rad/5; #declare ZifferRad = Rad/15; #declare ZahlZMax = -Rad/3; #declare ZahlZMin = ZahlZMax-ZahlHoehe; #declare ZahlZMitte = (ZahlZMax+ZahlZMin)/2; #declare ZahlKreisZ1 = ZahlZMax-ZifferBreite/2; #declare ZahlKreisZ2 = ZahlZMin+ZifferBreite/2; #declare ZahlLinienHoehe = ZahlHoehe-ZifferBreite+2*ZifferRad; #declare ZweiD1 = sqrt(pow(ZifferRad,2) + pow(ZahlHoehe-ZifferBreite+ZifferRad,2)); #declare ZweiWinkel = atan((ZahlHoehe-ZifferBreite+ZifferRad)/ZifferRad) - asin(ZifferRad/ZweiD1); #declare ZweiCos = cos(ZweiWinkel); #declare ZweiSin = sin(ZweiWinkel); #declare LogoRad1 = Rad/5; #declare LogoRad2 = LogoRad1*2; #declare LogoExtra = LogoRad1/2; #declare LogoZ = Rad/5; #declare LogoX = LogoRad2-2*LogoRad1+LogoExtra/2; #declare NasenkugelGrau = function {pigment { image_map {ppm "cuyo.ppm" once interpolate 2} translate -1/2 scale 2*KopfRad }} // Die Werte der folgenden Funktionen sind Abstnde vom Mittelpunkt der Linie. // Die Ziffer ist horizontal zentriert. #declare Ziffer0 = function(X,Z) { abs(sqrt( pow(X,2)+ pow(max(0,Z-ZahlKreisZ1,ZahlKreisZ2-Z),2) )-ZifferRad) } #declare Ziffer2 = function(X,Z) { min( select(X*ZweiCos+(Z-ZahlKreisZ1)*ZweiSin+ZweiD1, Gravurtiefe,select( X*ZweiCos+(Z-ZahlKreisZ1)*ZweiSin, min( sqrt(pow(X+ZweiCos*ZifferRad,2) +pow(Z-ZahlKreisZ1-ZweiSin*ZifferRad,2)), abs((X+ZifferRad)*ZweiSin -(Z-ZahlKreisZ2+ZifferRad)*ZweiCos)), abs(sqrt(pow(X,2)+pow(Z-ZahlKreisZ1,2))-ZifferRad) )), sqrt(pow(Z-ZahlKreisZ2+ZifferRad,2)+ pow(max(0,X-ZifferRad,-ZifferRad-X),2)) ) } #declare Ziffer6 = function(X,Z) { min( abs(sqrt(pow(X,2)+pow(Z-ZahlKreisZ2,2))-ZifferRad), select(Z-ZahlKreisZ2,Gravurtiefe,select(Z-ZahlKreisZ1, select(X, abs(X+ZifferRad), sqrt(pow(X-ZifferRad,2)+pow(Z-ZahlKreisZ1,2))), abs(sqrt(pow(X,2)+pow(Z-ZahlKreisZ1,2))-ZifferRad))) ) } #declare Ziffer8 = function(X,Z) { // Setzt voraus, da ZahlLinienHoehe >= 4*ZifferRad. abs(sqrt( pow(X,2)+ pow(max(0,abs(abs(Z-ZahlZMitte)-ZahlLinienHoehe/4) -ZahlLinienHoehe/4+ZifferRad),2) )-ZifferRad) } //Kommentieren, wenn man die Stapel schnell anpassen will #macro Muenze() isosurface { function {sqrt( // Kreisform pow(max(0,sqrt(pow(x,2)+pow(z,2))-Rad+Rundheit),2) + // Prgung pow(max(0, abs(y)-HDicke+Rundheit + max(0,min(Gravurtiefe,Rad-Rand-sqrt(pow(x,2)+pow(z,2)))) - max(0,min(Gravurtiefe,Gravurtiefe-select(y, // Ab hier: Abstand vom Mittelpunkt der Linie // Rckseite Gravurtiefe*NasenkugelGrau(-x,z,0).x, // Vorderseite select(z-ZahlZMax, // Jahreszahl select(abs(x)-ZifferBreite, // 00 (Eine 0 ist in Wirklichkeit gespiegelt) Ziffer0(abs(x)-ZifferBreite/2,z), select(x, // 2 Ziffer2(x+ZifferBreite*3/2,z), // 8 Ziffer8(x-ZifferBreite*3/2,z) ) ), // Logo min( // Cu select(x-LogoX+LogoRad1+LogoExtra, abs(abs(sqrt(pow(x-LogoX+LogoRad1+LogoExtra,2)+pow(z-LogoZ,2)) -(LogoRad1+LogoRad2)/2)-(LogoRad2-LogoRad1)/2), sqrt(pow(max(0,x-LogoX+LogoRad1),2)+pow(abs(abs(z-LogoZ) -(LogoRad1+LogoRad2)/2)-(LogoRad2-LogoRad1)/2,2))), // y (waagerecht) sqrt(pow(max(0,LogoX-LogoRad1-LogoExtra-x,x-LogoX),2) + pow(z-LogoZ,2)), // y (senkrecht) sqrt(pow(x-LogoX,2) + pow(max(0,abs(z-LogoZ)-LogoRad1-LogoExtra),2)), // o abs(sqrt(pow(x-LogoX-2*LogoRad1,2)+pow(z-LogoZ,2))-LogoRad1) ) ) ))) ),2) )} threshold Rundheit max_gradient 1.5 contained_by {sphere {0 Rad+HDicke}} Textur(texture {Gold}) } #end #ifdef (Version) #declare Gross=(Version=-1); #else #declare Gross=0; #end #if (Gross) /* Zwei Mnzen (Vorder- und Rckseite) in Groaufnahme */ camera {orthographic location -2*z right 4*x up 2*y} light_source {<-1,1,-2>*1000 1.5} #macro Textur(T) texture{T} #end object { Muenze() rotate 90*x rotate 180*z translate Rad*1.1*x scale 0.9/Rad } object { Muenze() rotate -90*x translate Rad*-1.1*x scale 0.9/Rad } #else #ifndef(Version) #declare Breite=4; #declare Hoehe=4; #end #include "dungeon.inc" #declare Muenz = Muenze() #declare Block = union { #local II=0; #while (II } #local II=II+1; #end } Setze() #end cuyo-2.1.0/datasrc/pics/gen_common.mli0000644000175000017500000000162012422656734014627 00000000000000(* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) val parse_args : unit -> int * string * string (* Der int ist das gric. Der erste string ist der Auftrag. Der zweite string ist der Zieldateiname. *) cuyo-2.1.0/datasrc/pics/graphik.ml0000644000175000017500000002164712422656734013775 00000000000000(* Copyright 2006,2010,2011 by Mark Weyer Maintenance modifications 2008,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Helfer module Rgb = Vektor.Vektor(Natmod.Drei) module Rgba = Vektor.Vektor(Natmod.Vier) type punkt = float * float type bildchen = int * int * (punkt -> farbe) let monochrom farbe breite hoehe = breite, hoehe, function p -> farbe let spiegel_x (breite,hoehe,farben) = let breite_f = float_of_int breite in breite, hoehe, function x,y -> farben (breite_f-.x,y) let kombiniere_bildchen breite hoehe einzelne = breite, hoehe, function (x,y) -> List.fold_left (function farbe -> function (x0,y0,(breite,hoehe,farben)) -> if (float_of_int x0)<=x && (x<=(float_of_int (x0+breite))) && (float_of_int y0)<=y && (y<=(float_of_int (y0+hoehe))) then farben (x-.(float_of_int x0), y-.(float_of_int y0)) else farbe) durchsichtig einzelne let ueberlagerung (b,h,funten) (b',h',foben) maske = match maske with | None -> (b,h, fun p -> let o = foben p in let d = nur_durchsichtig o in if d=0.0 then o else misch2 o (funten p) d) | Some (b'',h'',fmaske) -> (b,h, fun p -> let d = nur_durchsichtig (fmaske p) in if d=0.0 then foben p else if d=1.0 then funten p else misch2 (foben p) (funten p) d) type pixelbild = int * int * farbe array array let berechne aufloesung (breite,hoehe,farben) = let breite,hoehe = breite*aufloesung,hoehe*aufloesung in let aufloesung = 1.0/.(float_of_int aufloesung) in breite,hoehe,Array.init hoehe (function y -> let yf = ((float_of_int (hoehe-y))-.0.5)*.aufloesung in Array.init breite (function x -> farben (((float_of_int x)+.0.5)*.aufloesung, yf))) let abstrahiere aufloesung (breite,hoehe,pixel) = breite/aufloesung, hoehe/aufloesung, let auff = float_of_int aufloesung in let limitx,limity = breite-1, hoehe-1 in let runde limit f = min limit (int_of_float (floor (f*.auff))) in (fun (x,y) -> pixel.(limity-runde limity y).(runde limitx x)) let ausschnitt x0 y0 x1 y1 (b,h,f) = (x1-x0,y1-y0, Array.init (y1-y0) (fun y -> Array.init (x1-x0) (fun x -> f.(y+y0).(x+x0)))) let kleb hori (b1,h1,f1) (b2,h2,f2) = if hori then (b1+b2, h1, Array.init h1 (fun y -> Array.init (b1+b2) (fun x -> if x Array.init b1 (fun x -> if y

Array.init (w/n) (fun x -> misch (List.concat (List.map (fun i -> List.map (fun j -> 1.0, pixel.(y*n+i).(x*n+j)) liste) liste))))) let extrahiere_farben (breite,hoehe,pixel) = let n,k = Array.fold_left (Array.fold_left (fun (n,k) -> fun farbe -> if FarbMap.mem farbe k then n,k else n+1, FarbMap.add farbe n k)) (0,FarbMap.empty) pixel in let p = Array.make n schwarz in (* schwarz ist ein dummy *) FarbMap.iter (fun farbe -> fun i -> p.(i)<-farbe) k; p,k let extrahiere_verteilung (breite,hoehe,pixel) = let n,v = Array.fold_left (Array.fold_left (fun (n,v) -> fun farbe -> if FarbMap.mem farbe v then n, FarbMap.add farbe ((FarbMap.find farbe v)+1) v else n+1, FarbMap.add farbe 1 v)) (0,FarbMap.empty) pixel in let v' = Array.make n (schwarz,0) in ignore (FarbMap.fold (fun farbe -> fun anzahl -> fun n -> v'.(n) <- (farbe,anzahl); n+1) v 0); v' type farbreduktions_methode = | Heuristik_mittlerer_euklidischer | Heuristik_maximaler_euklidischer let reduziere_farben methode mussrein anzahl bild = match methode with | Heuristik_mittlerer_euklidischer -> reduziere_farben1 mussrein (extrahiere_verteilung bild) anzahl | Heuristik_maximaler_euklidischer -> reduziere_farben2 mussrein (fst (extrahiere_farben bild)) anzahl let xpm_zeichen = " #@*+-=~/.,:;_&%$!?|" ^ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ^ "'`^(){}[]<>" let anz_xpm_zeichen = String.length xpm_zeichen let gib_xpm_aus h palette farbsuche dateiname (breite,hoehe,pixel) = let anz_farb = Array.length palette in let kodier_breite = let rec log n = if n>anz_xpm_zeichen then 1+(log (n/anz_xpm_zeichen)) else 1 in log anz_farb in let kodiere i = let rec kodiere_rest rest_laenge rest_i = if rest_laenge=0 then "" else (kodiere_rest (rest_laenge-1) (rest_i/anz_xpm_zeichen)) ^(String.sub xpm_zeichen (rest_i mod anz_xpm_zeichen) 1) in kodiere_rest kodier_breite i in let datei = open_out dateiname in let os = output_string datei in let oi i = os (string_of_int i) in let hex n = let hex_ziffer n = String.sub "0123456789ABCDEF" n 1 in (hex_ziffer (n/16))^(hex_ziffer (n mod 16)) in let hex f = os (hex (truncate (255.0*.f+.0.5))) in os "/* XPM */\n"; os "static char * noname[] = {\n"; os "\""; oi breite; os " "; oi hoehe; os " "; oi anz_farb; os " "; oi kodier_breite; os "\""; ignore (Array.fold_left (function i -> function f -> os ",\n\""; os (kodiere i); os " c "; (if f=durchsichtig then os "None" else if f=hintergrund then os "Background" else let rgb = zu_rgb h h f in os "#"; hex (Rgb.koord rgb 0); hex (Rgb.koord rgb 1); hex (Rgb.koord rgb 2)); os "\""; i+1) 0 palette); for y = 0 to hoehe-1 do os ",\n\""; for x = 0 to breite-1 do os (kodiere (farbsuche pixel.(y).(x))) done; os "\""; done; os "};\n"; close_out datei let gib_xpm_aus_exakt h name bild = let palette,karte = extrahiere_farben bild in gib_xpm_aus h palette (fun farbe -> FarbMap.find farbe karte) name bild let gib_xpm_aus_palette h palette = let index = mach_index palette in gib_xpm_aus h palette (naechste_farbe palette index) let gib_xpm_aus_anzahl ?(methode=Heuristik_maximaler_euklidischer) h anzahl name bild = gib_xpm_aus_palette h (reduziere_farben methode [| |] anzahl bild) name bild let gib_xpm_aus ?methode h = gib_xpm_aus_anzahl ?methode h anz_xpm_zeichen let gib_ppm_aus name (breite,hoehe,pixel) = let schw = rgb_grau 0.0 in let datei = open_out name in let os = output_string datei in let oi i = os (string_of_int i) in let ob = output_byte datei in os "P6\n"; oi breite; os " "; oi hoehe; os "\n"; os "255\n"; Array.iter (Array.iter (fun farbe -> let rgb = zu_rgb schw schw farbe in for i=0 to 2 do ob (int_of_float (floor ((max 0.0 (min 1.0 (Rgb.koord rgb i)))*.255.0 +. 0.5))) done)) pixel; close_out datei exception Falscher_TupleType let lies_xpm dateiname = let lex = Lexing.from_channel (open_in dateiname) in let lies_zeile u = Xpmlex.xpm lex in let zeile1 = Lexing.from_string (lies_zeile ()) in let zahl u = Xpmlex.erstezeile zeile1 in let breite = zahl () in let hoehe = zahl () in let anz_farben = zahl () in let charpp = zahl () in let farben = Array.to_list (Array.init anz_farben (function i -> let zeile = lies_zeile () in prefix zeile charpp, Xpmlex.farbzeilenrest (Lexing.from_string (coprefix zeile charpp)))) in breite,hoehe,Array.init hoehe (function y -> let zeile = lies_zeile () in Array.init breite (function x -> List.assoc (String.sub zeile (x*charpp) charpp) farben)) let lies_ppm dateiname = let (breite,hoehe,tiefe,maxval,daten),typ = Pam.read_pam (open_in dateiname) in let maxvalf = float_of_int maxval in if tiefe!=3 then raise Falscher_TupleType else breite,hoehe, Array.map (Array.map (function d -> von_rgb (Rgb.aus_array (Array.map (fun i -> (float_of_int i)/.maxvalf) d)))) daten let lies_pam dateiname = let (breite,hoehe,tiefe,maxval,daten),typ = Pam.read_pam (open_in dateiname) in let maxvalf = float_of_int maxval in if tiefe!=4 then raise Falscher_TupleType else breite,hoehe, Array.map (Array.map (function d -> von_rgba (Rgba.aus_array (Array.map (fun i -> (float_of_int i)/.maxvalf) d)))) daten cuyo-2.1.0/datasrc/pics/natmod.ml0000644000175000017500000000176712422656733013632 00000000000000(* Copyright 2006 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) module type Nat = sig val n : int end module Null = struct let n = 0 end module Eins = struct let n = 1 end module Zwei = struct let n = 2 end module Drei = struct let n = 3 end module Vier = struct let n = 4 end module Fuenf = struct let n = 5 end cuyo-2.1.0/datasrc/pics/gen_secret.ml0000644000175000017500000001007012422656734014452 00000000000000(* Copyright 2011 by Mark Weyer Modified 2014 by Immanuel Halupczok This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Vektorgraphik open Male_mit_aa let zug (h::t) = let letzter,fastfertig = List.fold_left (function p,bisher -> function p' -> p',Strecke (p,p')::bisher) (h,[]) t in Strecke (letzter,h) :: fastfertig let sorten_umrisse = [| zug [-0.4,-0.2; 0.4,0.0; -0.4,0.2]; zug [-0.4,-0.1; 0.2,-0.1; 0.2,-0.2; 0.4,0.0; 0.2,0.2; 0.2,0.1; -0.4,0.1]; zug [-0.4,-0.2; 0.0,0.0; -0.4,0.2] @ zug [0.0,-0.2; 0.4,0.0; 0.0,0.2]; zug [-0.4,-0.2; -0.3,-0.1; 0.3,-0.1; 0.4,0.0; 0.3,0.1; -0.3,0.1; -0.4,0.2]; |] let grasgrau_umrisse = [| zug [-0.4,-0.2; 0.4,-0.2; 0.4,0.2; -0.4,0.2]; zug [-0.4,0.0; 0.0,-0.2; 0.4,0.0; 0.0,0.2]; zug [-0.4,-0.2; 0.4,0.2; 0.4,-0.2; -0.4,0.2]; [Spline ((-0.4,0.0),(-0.4,0.25),(0.4,0.25),(0.4,0.0)); Spline ((0.4,0.0),(0.4,-0.25),(-0.4,-0.25),(-0.4,0.0))]; |] let sorten_farben = Array.map (fun (r,g,b) -> von_rgb (rgbrgb r g b)) [| 1.0,0.75,0.0; 0.0,1.0,0.5; 1.0,0.5,0.5; 0.5,0.5,1.0; |] let grasgrau_farben = Array.map (fun (r,g,b) -> von_rgb (rgbrgb r g b)) [| 0.4,0.0,0.9; 0.2,0.6,0.0; 0.6,0.3,0.0; 0.2,0.2,0.5; |] let schraffur teiler hoch = let fy = if hoch then Helfer.id else fun y -> 1.0-.y in Helfer.list_for 0 teiler (fun i -> let t = float_of_int i /. float_of_int teiler in Strecke ((0.0,fy (1.0-.t)), (t,fy 1.0))) @ Helfer.list_for 1 teiler (fun i -> let t = float_of_int i /. float_of_int teiler in Strecke ((t,fy 0.0), (1.0,fy (1.0-.t)))) let punktur teiler = let d = 1.0 /. float_of_int teiler in let d' = d/.2.0 in List.concat (Helfer.list_for 1 teiler (fun i -> let x = (float_of_int i -. 0.75) *. d in List.concat (Helfer.list_for 1 teiler (fun j -> let y = (float_of_int j -. 0.75) *. d in [Strecke ((x,y),(x,y)); Strecke ((x+.d',y+.d'),(x+.d',y+.d'))])))) let schraffuren = Array.map konvertiere_polygon [| []; schraffur 5 true; schraffur 5 false; punktur 6; |] let dinge umriss richtung schraffur schraffurfarbe = let umriss = konvertiere_polygon ( verschiebe_polygon (0.5) (0.5) ( drehe_polygon (float_of_int (45*richtung)) umriss)) in let rahmen = konvertiere_polygon [ Strecke ((0.0,0.0),(1.0,0.0)); Strecke ((1.0,0.0),(1.0,1.0)); Strecke ((1.0,1.0),(0.0,1.0)); Strecke ((0.0,1.0),(0.0,0.0)); ] in [ Dicker_Strich (schraffurfarbe, 1.0/.32.0, [schraffur]); flaeche durchsichtig [rahmen;umriss]; Strich (schwarz,[umriss]); ] let bild umrisse farben rf schraffurfarbe = Graphik.kombiniere_bildchen 16 16 (List.concat (Helfer.list_for 0 3 (fun i1 -> List.concat (Helfer.list_for 0 3 (fun i2 -> List.concat (Helfer.list_for 0 3 (fun i3 -> Helfer.list_for 0 3 (fun i4 -> 4*i1+i2, 4*i3+i4, male (erzeuge_vektorbild (dinge umrisse.(i1) (i3*rf) schraffuren.(i4) schraffurfarbe)) (1.0/.32.0) (Graphik.monochrom farben.(i2) 1 1))))))))) let sorten () = bild sorten_umrisse sorten_farben 2 schwarz let grasgrau () = bild grasgrau_umrisse grasgrau_farben 1 (grau 0.8) ;; let gric,command,outname = Gen_common.parse_args () in let teil = Helfer.coprefix command 3 in let bild = match teil with | "Kind" -> sorten () | "GG" -> grasgrau () in Graphik.gib_xpm_aus (rgb_grau 1.0) outname (Graphik.berechne gric bild) cuyo-2.1.0/datasrc/pics/gen_tennis.ml0000644000175000017500000002067112422656734014475 00000000000000(* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Helfer open Farbe open Vektorgraphik open Male_mit_aa let pen_thick = 1.0/.32.0 let brick_sep = 1.0/.32.0 let brick_thick = brick_sep let ball_rad = 0.2 let base_y = 0.35 let source_y = 1.0-.ball_rad-.brick_sep-.brick_thick-.pen_thick let seq_len = 9 let slf = float_of_int seq_len let slh = seq_len/2+1 let slhf = float_of_int slh let g = (source_y-.base_y)/.(slhf*.slhf/.2.0) let mortar = grau 0.4 let racket_thick = pen_thick*.1.0 let racket_len = base_y-.racket_thick-.pen_thick let roof_height = 0.5 let brick_height = 1.0/.8.0-.brick_sep let brick_width = 1.0/.5.0 let sky = rgbrgb 0.0 0.6 1.0 let draw pic w h = male (erzeuge_vektorbild pic) pen_thick (Graphik.monochrom durchsichtig w h) let rect c x0 y0 x1 y1 = flaeche c [konvertiere_polygon [ Strecke ((x0,y0),(x1,y0)); Strecke ((x1,y0),(x1,y1)); Strecke ((x1,y1),(x0,y1)); Strecke ((x0,y1),(x0,y0)); ]] let brick_colour () = von_rgb (rgbrgb (0.3+.Random.float 0.3) (0.1+.Random.float 0.2) (Random.float 0.2)) let wall () = rect mortar 0.0 0.0 1.0 1.0 :: List.concat (List.concat (list_for 0 7 (fun i -> list_for 0 1 (fun j -> let y0 = float_of_int i /. 8.0 in let y1 = y0 +. brick_height in let x0 = (if j=0 then 0.2 else 0.7) +. (if i mod 2 = 0 then 0.0 else 0.25) in let x1 = x0+.0.5-.brick_sep in let c = brick_colour () in [rect c x0 y0 x1 y1; rect c (x0-.1.0) y0 (x1-.1.0) y1])))) let source () = let circ = konvertiere_polygon [Kreis ((0.5,source_y),ball_rad+.brick_thick+.brick_sep)] in [ Flaechen ( Array.init 9 (fun i -> if i=0 then mortar else brick_colour ()), (circ,0,None) :: list_for 1 8 (fun i -> let a1 = pi/.4.0*.(float_of_int i-.0.5) +. brick_sep/.ball_rad/.2.0 in let a2 = a1 +. pi/.4.0 +. brick_sep/.ball_rad in konvertiere_polygon [ Bogen ((0.5,source_y),ball_rad+.brick_thick,true,a1,a2); Strecke ((0.5+.cos a2*.ball_rad,source_y+.sin a2*.ball_rad), (0.5,source_y)); Strecke ((0.5,source_y), (0.5+.cos a1*.ball_rad,source_y+.sin a1*.ball_rad)); ], i, Some 0)); Strich (mortar,[circ])] let source_fx source = let _,_,source = source in 1,1,fun (x,y) -> let x' = x-.0.5 in let y' = y-.source_y in if x'*.x'+.y'*.y' >= ball_rad*.ball_rad then source (x,y) else let y'' = source_y-.sqrt(ball_rad*.ball_rad-.x'*.x') in misch2 (source (x,y'')) schwarz ((y-.y'')/.(2.0*.ball_rad)) let ball c x y = let circ = konvertiere_polygon [Kreis ((x,y),ball_rad)] in let dec = match Random.int 3 with | 0 | 1 -> let size = 2.0/.3.0 in [ Bogen ((ball_rad*.(1.0+.size)/.2.0,0.0), ball_rad*.(1.0-.size)/.2.0, false, 0.0, pi); Bogen ((0.0,0.0),ball_rad*.size,true,0.0,1.5*.pi); Bogen ((0.0,-.ball_rad*.(1.0+.size)/.2.0), ball_rad*.(1.0-.size)/.2.0, false,0.5*.pi,-0.5*.pi); ] | 2 -> [ Bogen ((sqrt 2.0*.ball_rad,0.0),ball_rad,true,0.75*.pi,1.25*.pi); Bogen ((-.sqrt 2.0*.ball_rad,0.0),ball_rad,true,-0.25*.pi,0.25*.pi); ] in let dec = konvertiere_polygon (verschiebe_polygon x y (drehe_polygon (Random.float 360.0) dec)) in [flaeche c [circ]; Strich (misch2 c schwarz 0.5,[circ; dec])] let path n c x0 y0 dx dy0 = List.concat (list_for 0 (n-1) (fun i -> let i' = float_of_int i in ball c (x0 +. i'*.dx) (y0 +. i'*.dy0 -. i'*.i'*.g/.2.0))) let suck n c x0 = List.concat (list_for 1 (n-1) (fun i -> let i' = float_of_int i in let n' = float_of_int n in ball (misch2 c schwarz (i'/.n')) (x0+.i') (source_y+.i'*.ball_rad*.2.0/.n'))) let wall_aa wall pic = let _,_,wall = wall in let w,h,pic = pic in w,h,fun (x,y) -> let c = pic (x,y) in let trans = nur_durchsichtig c in if trans=1.0 || trans=0.0 then c else misch2 c (wall (x-.floor x,y-.floor y)) trans let suck_fx pic = let w,h,pic = pic in w,h,fun (x,y) -> let x' = x-.floor x-.0.5 in if y>source_y+.sqrt((ball_rad+.pen_thick)*.(ball_rad+.pen_thick)-.x'*.x') then durchsichtig else pic (x,y) let racket wall ang = let y1 = -.racket_len*.0.3 in let y2 = -.racket_len in let pic = [ Dicker_Strich (weiss, racket_thick, [konvertiere_polygon [ Strecke ((0.0,0.0),(0.0,y1)); Spline ((0.0,y1),(0.1,y1),(0.1,y2),(0.0,y2)); Spline ((0.0,y1),(-0.1,y1),(-0.1,y2),(0.0,y2)); ]]); ] in male (erzeuge_vektorbild (verschiebe_dinge 0.5 base_y (drehe_dinge ang pic))) pen_thick wall let rackets wall = Graphik.kombiniere_bildchen 1 3 (list_for 0 2 (fun i -> 0,i,racket wall (-40.0*.(float_of_int i-.1.0)))) let roof (link_front,link_back) left right = let x0 = -0.3 in let x1 = x0+.0.5-.brick_sep in let y2 = brick_height+.brick_sep in let y4 = roof_height-.brick_height in let y5 = roof_height-.brick_height/.2.0 in let y3 = y5-.brick_sep in List.concat [ [ rect mortar 0.0 0.0 1.0 roof_height; rect link_back x0 y4 x1 roof_height; rect (brick_colour ()) (x0+.0.5) y4 (x1+.0.5) roof_height; rect link_back (x0+.1.0) y4 (x1+.1.0) roof_height; ]; if left then [ rect mortar 0.0 y3 brick_width y5; rect (brick_colour ()) 0.0 y2 brick_width y3; ] else []; if right then [ rect mortar (1.0-.brick_width) y3 1.0 y5; rect (brick_colour ()) (1.0-.brick_width) y2 1.0 y3; ] else []; [ rect link_front x0 0.0 x1 brick_height; rect (brick_colour ()) (x0+.0.5) 0.0 (x1+.0.5) brick_height; rect link_front (x0+.1.0) 0.0 (x1+.1.0) brick_height; ] ] let roofs links left right c n = let roof = roof links left right in let dy0 = float_of_int n*.g/.2.0 in Graphik.kombiniere_bildchen n 1 (list_for 0 (n-1) (fun i -> let i' = float_of_int i in i,0, draw (roof @ ball c 0.5 (roof_height/.2.0-.brick_height/.4.0 +.ball_rad/.sqrt 2.0 +.dy0*.i'-.i'*.i'*.g/.2.0)) 1 1)) ;; let gric,command,outname = Gen_common.parse_args () in let command = coprefix command 2 in let base_wall = draw (wall ()) 1 1 in let source = source_fx (draw (source ()) 1 1) in let source_wall = Graphik.ueberlagerung base_wall source None in let rooflinks = brick_colour (), brick_colour() in let colours = [ "Blue", (1000, von_rgb (rgbrgb 0.1 0.2 1.0)); "Grey", (2000, grau 0.6); "Green", (3000, von_rgb (rgbrgb 0.3 1.0 0.0)); "Yellow", (4000, von_rgb (rgbrgb 1.0 0.9 0.0)); ] in let colour name = snd (List.assoc name colours) in let skip,pic = match command with | "Wall" -> 0,(fun () -> base_wall) | "Source" -> 0,(fun () -> wall_aa base_wall source) | "Racket" -> 100,(fun () -> rackets base_wall) | "Roof1" -> 200,(fun () -> roofs rooflinks true true (colour "Yellow") 5) | "Roof2" -> 300,(fun () -> roofs rooflinks true false (colour "Grey") 7) | "Roof3" -> 400,(fun () -> roofs rooflinks false false (colour "Green") 5) | "Roof4" -> 500,(fun () -> roofs rooflinks false true (colour "Blue") 7) | _ -> let cn,(s,c) = List.find (fun (n,_) -> prefix command (String.length n) = n) colours in (match coprefix command (String.length cn) with | "Bounce" -> s, fun () -> wall_aa base_wall (draw (path seq_len c 0.5 base_y 1.0 (slf/.2.0*.g)) seq_len 1) | "Left" -> s+100, fun () -> wall_aa base_wall (draw (path seq_len c 1.5 (1.0+.base_y) (2.0-.1.0/.slf) (slf/.2.0*.g-.1.0/.slf)) (2*seq_len) 2) | "Right" -> s+200, fun () -> wall_aa base_wall (draw (path seq_len c 0.5 (1.0+.base_y) (2.0+.1.0/.slf) (slf/.2.0*.g-.1.0/.slf)) (2*seq_len) 2) | "Out" -> s+300, fun () -> wall_aa source_wall (suck_fx (draw (path (slh+1) c 0.5 base_y 1.0 (g*.slhf) @ (suck (seq_len-slh) c (slhf+.0.5))) seq_len 1)) ) in for i=1 to skip do ignore (Random.int 2); done; Graphik.gib_xpm_aus sky outname (Graphik.berechne gric (pic ())) cuyo-2.1.0/datasrc/pics/maeSchema.pov0000644000175000017500000000340312422656734014415 00000000000000/* Copyright 2007 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite = 2; #declare Hoehe = 2; #include "aehnlich.inc" #declare DoppelEbene = function(X,Y,Z,Phi,Psi,D) { pow(max(0,abs( X*sin(Phi*pi/180)*cos(Psi*pi/180) + Y*sin(Phi*pi/180)*sin(Psi*pi/180) + Z*cos(Phi*pi/180)) -D+Rundheit),2) } #declare Stab = function(X,Y,Z) { pow(max(0,2*Rundheit-sqrt( DoppelEbene(X,Y,Z,0,0,DStab) + DoppelEbene(X,Y,Z,60,0,DStab) + DoppelEbene(X,Y,Z,-60,0,DStab) + DoppelEbene(X,Y,Z,90,90,1/2))),2) } #declare Achteck = function(X,Y,Z) { pow(max(0,2*Rundheit-sqrt( #local I=0; #while (I<350) DoppelEbene(X,Y,Z-ZAchteck,60,I,DAchteck) + #local I=I+45; #end DoppelEbene(X,Y,Z+DDAchteck/2,0,0,DDAchteck/2))),2) } isosurface { function { Rundheit-sqrt( Stab(mod(x+2,1)-1/2,-y,z) + Stab(mod(y+2,1)-1/2,x,z) + Achteck(mod(x+2,1)-1/2,mod(y+2,1)-1/2,z)) } max_gradient 1.6 contained_by {box {<-2,-2,-1/2> <2,2,1/2>}} Textur(Fassung) } cuyo-2.1.0/datasrc/pics/vektor.mli0000644000175000017500000000407012422656733014021 00000000000000(* Copyright 2006 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Natmod exception Falsche_Dimension module Vektor : functor(D : Nat) -> sig (* Vektoren der Lnge D.n *) type t val compare : t -> t -> int val to_string : t -> string val koord : t -> int -> float val setz_koord : t -> int -> float -> t val einheit : int -> t val aus_funktion : (int -> float) -> t val aus_array : float array -> t val zu_array : t -> float array val plus : t -> t -> t val mal : float -> t -> t val produkt : t -> t -> float val abstand2 : t -> t -> float (* euklidischer Abstand im Quadrat *) val laenge : t -> float end module Laenger : functor(D : Nat) -> functor(D' : Nat) -> sig val laenger : Vektor(D).t -> Vektor(D').t end module Kuerzer : functor(D : Nat) -> functor(D' : Nat) -> sig val kuerzer : Vektor(D).t -> Vektor(D').t end module Matrix : functor(D1:Nat) -> functor(D2:Nat) -> sig (* Matrizen mit D1.n Zeilen und D2.n Spalten Zeilenindices kommen immer zuerst *) type t val aus_funktion : (int -> int -> float) -> t val plus : t -> t -> t val mal_skalar : float -> t -> t val mal_vektor : t -> Vektor(D2).t -> Vektor(D1).t end module QuadMatrix : functor(D:Nat) -> sig (* Zeug fr quadratische Matrizen *) val eigenvektor1 : Matrix(D)(D).t -> Vektor(D).t (* Liefert einen normierten Eigenvektor zum betragsgrten Eigenwert *) end cuyo-2.1.0/datasrc/pics/mdEgoH.pov0000644000175000017500000000145212422656734013677 00000000000000/* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Richtung = 180; #include "mdEgo.inc" cuyo-2.1.0/datasrc/pics/mzZahnDreh.pov0000644000175000017500000000310212422656733014577 00000000000000/* Copyright 2005 by Mark Weyer Maintenance modifications 2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite = 8; #declare Hoehe = 16; #include "zahn.inc" #macro Gebiss_Teilreihe(V,H_,V_,D) union { object {Gebiss(0,V_,V,H_) rotate D*z translate -x} object {Gebiss(1,V_,V,H_) rotate D*z translate x} } #end #macro Gebiss_Reihe(H_,V_,D) union { object {Gebiss_Teilreihe(0,H_,V_,D) translate -2*x} object {Gebiss_Teilreihe(1,H_,V_,D) translate 2*x} } #end #macro Gebiss_Teilfeld(V_,D) union { object {Gebiss_Reihe(0,V_,D) translate y} object {Gebiss_Reihe(1,V_,D) translate -y} } #end #macro Gebiss_Feld(D) union { object {Gebiss_Teilfeld(0,D) translate 2*y} object {Gebiss_Teilfeld(1,D) translate -2*y} } #end union { object {Gebiss_Feld(60) translate 4*y} object {Gebiss_Feld(30) translate -4*y} } cuyo-2.1.0/datasrc/pics/lrKamin.xcf0000644000175000017500000036020512422656734014111 00000000000000gimp xcf file2 `@`@ BB / gimp-commentCreated with The GIMP"7Ձ; Neue Ebene     !"T !              P              P              P7     65    27     65    27     65    2    ####   123433    ####   123433    ####   123433H32541 1    !"# H32541 1    !"# H32541 1    !"# (   84 42245   9::<(   84 42245   9::<(   84 42245   9::<    3356    3356    3356j5    6j5    6j5    6976855 4445 4k976855 4445 4k976855 4445 4k@p 8Rauch     ""#,V-7>8IwR\{ck{qK;9889;:>ޗQ 6@4w3v0f/,/ .핶X(a%탻vv#fDZ",!=!w "↚!Y =&B"&M' e VGQ5 ʕUV 5xG@˄B5t" @m!Ԑ$$Q %=/0.,,-*;9889;:>ޗQ 6@4w3v0f/,/ .핶X(a%탻vv#fDZ",!=!w "↚!Y =&B"&M' e VGQ5 ʕUV 5xG@˄B5t" @m!Ԑ$$Q %=/0.,,-*;9889;:>ޗQ 6@4w3v0f/,/ .핶X(a%탻vv#fDZ",!=!w "↚!Y =&B"&M' e VGQ5 ʕUV 5xG@˄B5t" @m!Ԑ$$Q %=/0.,,-*];99;  ;99;  ;99;  Q* *,*f)m(w Xa@vvU>fDZG,eQ v@=" j!.#$ʕ'UG+95t.@.Ԑ$0A+ ) ' ' ' ) +H=yX8a6vv3fDZQ* *,*f)m(w Xa@vvU>fDZG,eQ v@=" j!.#$ʕ'UG+95t.@.Ԑ$0A+ ) ' ' ' ) +H=yX8a6vv3fDZQ* *,*f)m(w Xa@vvU>fDZG,eQ v@=" j!.#$ʕ'UG+95t.@.Ԑ$0A+ ) ' ' ' ) +H=yX8a6vv3fDZ;9889;=;  ;f@v;9889;=;  ;f@v;9889;=;  ;f@v? ,v+v&a 놚Xຕ=G"t@Mջ$ ʕfxG,5t @ Ԑ$55=6"M9: x<5M%v$v(aXxaX5vvגfDZt@,ջ$f,="M  ʕ =xG"M5t@ xԐ$5,v+v&a 놚Xຕ=G"t@Mջ$ ʕfxG,5t @ Ԑ$55=6"M9: x<5M%v$v(aXxaX5vvגfDZt@,ջ$f,="M  ʕ =xG"M5t@ xԐ$5,v+v&a 놚Xຕ=G"t@Mջ$ ʕfxG,5t @ Ԑ$55=6"M9: x<5M%v$v(aXxaX5vvגfDZt@,ջ$f,="M  ʕ =xG"M5t@ xԐ$53v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,ۚɆ=M"4̩6x 85,?6320=/"/MM ʕxGx5t5@Ԑ$i3v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,ۚɆ=M"4̩6x 85,?6320=/"/MM ʕxGx5t5@Ԑ$i3v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,ۚɆ=M"4̩6x 85,?6320=/"/MM ʕxGx5t5@Ԑ$i, v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5, v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5, v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5%/)Tl`N!  &'Mz؇d d" .w}@GݤY Qy<  ^{ 0v߷R/h> AuŤI#s΍= (`ktãh' bzz{a: ,8rG?;0JFB  b5+T~6 0Tu8 +ARf8 !; < @v8v8᷻a46X6۶6Օ677䶃8f9,:v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 85@v8v8᷻a46X6۶6Օ677䶃8f9,:v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 85@v8v8᷻a46X6۶6Օ677䶃8f9,:v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 855" 67`wE*/'^̮t1 -lӔ4/<|Ҍ8.Em- =ԘC-5|n-Au#,\ʏ-+/yWhz9/ד=,40֎8 1֚T& 2ݾP3ѽK3㼍jS05ω> 6D 93B)mM% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0 mM% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0 mM% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0 m(%H 8$ 3ػIaC: i`LD5   2I% '>NI'  Fe(BkB 3. eҫ_ 1#px.0(pъ; /%fݝM/)_՘P. (Zڬp:-Sըo6,Cѝa/-Aأ](-4}ժi- -{Υo6-_Ð[1.+΍I/C[13ؐ+ mMMxx55?@v8v8᷻a46X6۶6Օ677䶃8f9,:mMMxx55?@v8v8᷻a46X6۶6Օ677䶃8f9,:mMMxx55?@v8v8᷻a46X6۶6Օ677䶃8f9,:m((88Ħ|þzCý{U1!"s~th\L:*! jEOYF2 # %L )-   )?? 8);Y#8Go,4ݚ< 7 6g06ќD6Œ7ֽ68qM8jH)9&; , v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5M% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0, v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5M% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0, v.v&a Xຕ=G"t@Mջ$ʕfxG,5t @ Ԑ$55=6"M9: x<5M% $ 3X xa 5vv fDZ , 1//-=-"-M,,, ʕ-xG-5t.@.Ԑ$0  .jPTg3& e-ݭW) NuxY]pj t;   '( )= 8  9 R] I U  ’' 2 FR N3^]6t6 7(98:I< 2(&R 8% 4 ; I=x- ’  2T F] 3^U1 g/N3/] - t - W-( ),8 Y, j, -I - '.2.FR 03^3v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 85@MMxx55i3v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 85@MMxx55i3v3᷻a-/X.G۶,@tՕ,,$,䶃,f-,./0ۚ1Ɇ13=3M"4̩6x 85@MMxx55i33gT3)W-R-Yx/j. ;,' , =, ,R , ]-^ U. / 0 N1 ]1 t3 3(4ɇ86חI83F2 @((88II ’ ’22FF3^3^i@v8v8᷻a46X6۶6Օ677䶃8f9,:@v8v8᷻a46X6۶6Օ677䶃8f9,:@v8v8᷻a46X6۶6Օ677䶃8f9,:?8*A|T8Gr-4x66;66=77 8]9U:@ h4 eigentlich     7771\Hw%+u1 L LL LL LL LL LL LL|| |LL||| |LL|LL LLL%63छ2й1Ĺ0໳/ຬ.ঢ}|-ţuwmw,|s}w_@K+ݸ{tp]L.߰yrt0߻{_޹uY ྲvY àxtLӱy|Wપ|Lѣ{Dપ|L༪|qપ|L򳦎|{jપ|L굥|w  L LL LL LL LL LL LL|| |LL||| |LL|LL LLL%63छ2й1Ĺ0໳/ຬ.ঢ}|-ţuwmw,|s}w_@K+ݸ{tp]L.߰yrt0߻{_޹uY ྲvY àxtLӱy|Wપ|Lѣ{Dપ|L༪|qપ|L򳦎|{jપ|L굥|w  L LL LL LL LL LL LL|| |LL||| |LL|LL LLL%63छ2й1Ĺ0໳/ຬ.ঢ}|-ţuwmw,|s}w_@K+ݸ{tp]L.߰yrt0߻{_޹uY ྲvY àxtLӱy|Wપ|Lѣ{Dપ|L༪|qપ|L򳦎|{jપ|L굥|w ;652 20/. . -,, +               LLLLLLLLLLLLL|||||LL|||||LLLLLLLLLLLLLLLLLLLLLy||||||y||||LLy||||||y||||LLLCLLLLLLL,CLLLLLLઇL|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપLપLપLપLપLપLપLપL LLLLLLLLLLLLL|||||LL|||||LLLLLLLLLLLLLLLLLLLLLy||||||y||||LLy||||||y||||LLLCLLLLLLL,CLLLLLLઇL|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપLપLપLપLપLપLપLપL LLLLLLLLLLLLL|||||LL|||||LLLLLLLLLLLLLLLLLLLLLy||||||y||||LLy||||||y||||LLLCLLLLLLL,CLLLLLLઇL|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપLપLપLપLપLપLપLપL ./00000000/.I789999999987                    પ|Lપ||Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ||||| પ|Lપ|L|||| પ|Lપ|LLLLL પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Cપ|Lමy,પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L|પ|LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| |પ|*પ|||||*પ|L||||*પ|LLLLL*પ|L4પ|L4પ|L4પ|L4પ|L5|L પ|Lપ||Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ||||| પ|Lપ|L|||| પ|Lપ|LLLLL પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Cપ|Lමy,પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L|પ|LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| |પ|*પ|||||*પ|L||||*પ|LLLLL*પ|L4પ|L4પ|L4પ|L4પ|L5|L પ|Lપ||Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ||||| પ|Lપ|L|||| પ|Lપ|LLLLL પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Cપ|Lමy,પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L|પ|LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L પ|Lપ|L પ|Lપ| પ|Lપ| પ|Lપ| પ|Lપ| |પ|*પ|||||*પ|L||||*પ|LLLLL*પ|L4પ|L4પ|L4પ|L4પ|L5|L                                                                                 )))) 3 3 3 4 6 પ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L|L પ|L|પ|L પ|L|પ|L પ|L|પ|L પ|L|પ|L પ|L|પ|L પ|L|પ|L પ|L|પ|L |||પ|LL||||||પ|L |||પ|LL||||||પ|L LLLપ|LLLLLLL|પ|Lપ|L|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|L||LLપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lપ|Lම|Lપ|L窘xcપ|L眖xaપ|L̪vaપ|L誝leપ|L❚nha|~p^ L˝vnXપ|LѾvJiપ|Lšx_[પ|Lԭ~uOm| ޺xz]V |~uaXi  ne[] ~hecO  ef\E nacF ~mn^P xjpGQ|||||xv~ydk\F|||||xp^Cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz>xxxxxxxxxxxxxxxyxxxxxxxxxxxxxxxxxxxxxxxxxxx@Ϳxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>Ϳxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@ҿxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxx?                         >                          ?                         >                            ?                   >              @              >            @                    >                           ?                @                         >                          ?                         >                            ?                        >                        @                    >                    @                   >                 ?            ?>?>?>@>@>?@>?>?>@>@>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxx?                         >                          ?                         >                            ?                 >      ?      >      ?                >                           ?                @                         >                          ?                         >                            ?               >  ?   >  ?          >                   ?            ?>?>?>?>?>?@>?>?>?>?>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@ֿxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxx?                 >                  ?                 >                    ?               >                @              >              @                >                   ?            @                 >                  ?                 >                    ?               >                @              >                 @                    >                       ?              ?>?>?>@>@>?@>?>?>@>@>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxx}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxyxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx??                 >                  ?                 >                    ?           >    ?    >    ?          >                   ?            @                 >                  ?               >                   ?           >      ?        >        ?                  >                           ?                ?>?>?>?>?>?@>?>?>?>?>??@@?@@?                                ??@`@@?@@?                                ??I / 0 0 0 0 0 0 (@xxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxx??@@?               ^             _              ^              _              ^              _              ^             _              ^              ?                                ? ^_^_^_^_^??@`@`@?                        ??77777-i / 0 0 0 0 0 0 (`@                __`@@@?@                        __@77777-@@?`                        ??@`@@?@@?                                ??I / 0 0 0 0 0 0 (@@        __@@        __77777-@ h4@dummy     #@C#/@wևַ֧֗@ P(Auswahlmaske Kopie=סamy[9=AEIMQUY] 7;;<;<<=<<= +       $'((((((()# $'((((((()#                1 21 1 1 0 0 0 . - "  $@ h4cuyo-2.1.0/datasrc/pics/slime2.pov0000644000175000017500000001106412422656733013726 00000000000000/* Copyright 2005 by Mark Weyer Maintenance modifications 2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite=5; #declare Hoehe=1; #ifndef(Case) #declare Case=1; #declare Breite=8; #declare Hoehe=6; #end #ifndef(Time) #declare Time = 100; #end #declare Hintergrund=0; #include "cuyopov.inc" #if(Case=1) #declare Colour=<0,1,0>; #declare Stream = seed(2); #end #if(Case=2) #declare Colour=<1,0,0>; #declare Stream = seed(1); #end global_settings { max_trace_level 100 } #declare Angle_deg = 0; #declare Angle_rad = Angle_deg*pi/180; #declare Height = 1/cos(Angle_rad); #declare Blob_aux_func = function(a){pow(1-pow(a,2),2)} #declare Main_num = 100; #declare Main_rad = 1/4; #declare Main_strength = 3; #declare Main_thick = 1/4; //#declare Blob_func = function(X,Y,Z){Blob_aux_func(min(1,sqrt(X*X+Y*Y+Z*Z)/Main_rad))} #declare Blob_func = function(X,Y,Z){pow(max(0,1-(X*X+Y*Y+Z*Z)/(Main_rad*Main_rad)),2)} #macro Main_func(P) function (X,Y,Z) { 1-Main_strength*(0 #local XX=-3; #while (XX<4) #local YY=-1; #while (YY<2) #local i=0; #while (i=Main_rad)) & (Blob_pretest(X+1,Y,P) | (XX<=1-Main_rad)) & (Blob_pretest(X,Y-1,P) | (YY>=Main_rad)) & (Blob_pretest(X,Y+1,P) | (YY<=Height-Main_rad)) & (Blob_pretest(X-1,Y-1,P) | (pow(XX,2)+pow(YY,2)>=pow(Main_rad,2))) & (Blob_pretest(X-1,Y+1,P) | (pow(XX,2)+pow(Height-YY,2)>=pow(Main_rad,2))) & (Blob_pretest(X+1,Y+1,P) | (pow(1-XX,2)+pow(Height-YY,2)>=pow(Main_rad,2))) & (Blob_pretest(X+1,Y-1,P) | (pow(1-XX,2)+pow(YY,2)>=pow(Main_rad,2)))) #end #macro Bubble_rad1(T) (pow((T)+1,1/3)/5) #end #macro Bubble_rad2(T) (Bubble_rad1(T)*0.9) #end #macro Bubble_pos(T) (<1/2,Height/2,Main_thick/2>+<0,0,-Bubble_rad1(T)>*((T)-2)/2) #end #macro Bubble_strength1(T) 100 #end #macro Bubble_strength2(T) (Bubble_strength1(T)*1.1) #end #macro Obj_Mod() Textur(texture { pigment {color <0,0,0,0,1>} finish { ambient 0 specular 1/3 } }) interior_texture { pigment {color <0,0,0,0,1>} finish {ambient 0} } no_shadow hollow interior { media { scattering {1, rgb Colour*2} } } #end #macro Obj(P) blob { #local X=-3; #while (X<4) #local Y=-1; #while (Y<2) #if (Blob_pretest(X,Y,P)) #local i=0; #while (i Main_rad Main_strength } #end #local i=i+1; #end sphere { +Bubble_pos(Time) Bubble_rad1(Time), -Bubble_strength1(Time) } sphere { +Bubble_pos(Time) Bubble_rad2(Time) Bubble_strength2(Time) } #end #local Y=Y+1; #end #local X=X+1; #end threshold 1 Obj_Mod() translate <-1/2,-Height/2,0> rotate Angle_deg*x } #end Obj(0) Obj(1) cuyo-2.1.0/datasrc/pics/gen_common.ml0000644000175000017500000000224712422656734014464 00000000000000(* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) let synopsis () = Sys.argv.(0)^" options gric command" let outname = Easyarg.register_string_without_default "-o" "Output file name" let parse_args () = try let [gric;command] = Easyarg.parse (synopsis ()) in let outname = match !outname with | None -> command^".xpm" | Some s -> s in int_of_string gric, command, outname with | _ -> ( Easyarg.usage (synopsis ()); flush stderr; raise (Arg.Bad "")) cuyo-2.1.0/datasrc/pics/helfer.ml0000644000175000017500000000245312422656734013607 00000000000000(* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) let pi = 4.0 *. atan 1.0 let list_for a b f = let rec doit i = if i>b then [] else (f i)::(doit (i+1)) in doit a let list_for a b f = if a<=b then list_for a b f else List.rev (list_for b a f) let array_foldi f a aa = snd (Array.fold_left (fun (i,a) -> fun b -> i+1, f a i b) (0,a) aa) let prefix s n = String.sub s 0 n let suffix s n = String.sub s (String.length s - n) n let coprefix s n = String.sub s n (String.length s - n) let cosuffix s n = String.sub s 0 (String.length s - n) let xor b1 b2 = if b1 then not b2 else b2 let id x = x cuyo-2.1.0/datasrc/pics/mbmGrau.xpm0000644000175000017500000000374112422656734014131 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "32 32 4 1", " c None", "# c #999999", "% c #666666", "* c #333333", " ", " ", " ", " # # ", " # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # # # # ", " # %%%% # ", " %%##%%%% ", " %%####%%%% ", " %####%%%%* ", " %####%%%%%** ", " %###%%%%%%** ", " %%%%%%%%%*** ", " %%%%%%%%%*** ", " %%%%%%%*** ", " %%%%%***** ", " %******* ", " **** ", " ", " ", " ", " ", " "}; cuyo-2.1.0/datasrc/pics/mkKolben.src.xpm0000644000175000017500000004270212422656733015066 00000000000000/* XPM */ /* Copyright <=2001,2002,2006,2007 by Mark Weyer Maintenance modifications 2008,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "128 128 5 1", "+ c #ffffff", "* c #aaaaaa", "# c #555555", ". c None", "o c #ff0000", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "............+++++++.........................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............", "...........+.......+.......................+..........o........o.........o.........o.o.....o.........o.........o...+............", "..........+.........*.....................+............o......o...........o.........o.....o...........o.........oo.o*...........", ".........+.o.........*...................+.............o.....o............o..........o...o............o........o..o..*..........", "........+...oo***....o*.................+.....********************************************************************o..o*.........", "........+....*o....oo.*.................+....*o.............o............ooo........oo..................o....o.....oo.*.........", "........*...*..oooo...*.................*...*.o.............o.............ooo.....ooooo.................o...ooo......o*.........", "........*......ooo....*.................*.....oo...........o...............ooo...o...oo..................o.o...o......*.........", "........*oo...ooo.....*.................*.....ooo.......ooo.................ooooo.....o...................o.....o.....*.........", "........*..o.o...o....*.................*....o...o.....ooo.................ooo.........o.................o.......o....*.........", "........*...o.....o...#.................*...o.....ooooooo.................ooo...........o...............o.........o...#.........", ".........*.o.......o.#...................*.o.....o.......o...............o...o.........o.o.............oo..........o.#..........", "..........*.........#.....................*.....o.........o.............o.....o.......o...o...........ooo...........#...........", "...........*.......#.......................*....o.........o.............o.....o.......o...o...........ooo..........#............", "............#######.........................#######################################################################.............", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "............+++++++...............................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...................", "...........+.......*............................++...............o............o......o.......o.......o.......*..................", "..........+.........*.........................++.................o............o.......oo..ooo.........o.....oo**................", ".........+.o.........*.......................+..oo..............o..............o........oo............o....o....**..............", "........+...oo***.....*.....................+.....o...****************************************************o.......*.............", "........+...o*........*....................+......o.**.........o.............o.............o.............oo........*............", "........*...*.......oo*...................+.......**...........o..............o...........o.............ooo.......o.*...........", "........*...o......o..*...................+......*..o.........o................o..........o............o...o.....o..*...........", "........*...ooo...o...*..................+.o....*...o.......oo..................o.........o...........o.....ooooo....*..........", "........*..o.ooo.o....*..................+..o..*.....o....oo.....................o.......o...........oo..........o...*..........", "........*.o...ooo.....*.................+...o.*.......o..o........................o.....o...........oo............oooo*.........", "........*......oo.....*.................+....ooo.......oo..........................o...o...........o.oo...............*.........", "........*.......o...oo*.................*.ooo...oo.....oo.............ooo...........ooo...........o...o...............*.........", "........*........o.o..*.................*o........oo..o..o...........o...o.........o...o..........o....o..............*.........", "........*oo.......o...*.................*...........oo....###########.....ooo...ooo.....oo###########.o...ooo.........*.........", "........*..o......o...*.................*...........o....#...........*.......o.ooo......o#...........*...o...o........*.........", "........*...ooo...o...*.................*............o..#.............*.......ooo.......#.............**o.....o...oooo*.........", "........*..o...o.o.o..*.................*............o.#...............*.....o...o.....#...............*o.....oo.o....*.........", "........*.o.....o...oo*.................*.............#.................*...o.....oooo#.................*.....ooo.....*.........", "........*o............*.................*.............#.................*..o..........#.................*....o...o....*.........", "........*.............*.................*.............*.................*oo...........*.................*oooo.....o...*.........", "........*.............*.................*.............*.................*.............*.................*..........o..*.........", "........*.............*.................*.............*.................*.............*.................*...........oo*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*...........oo*.................*.............*.................*.............*.................*.............*.........", "........*..........ooo*.................*............o*.................*.............*.................*.............*.........", "........*oo.......oooo*.................*...........o.*.................+.............*.................+.............*.........", "........*..o.....ooo..*.................*..........o...*...............+.............o.*...............+..............*.........", "........*...o...ooo...*.................*..........o....*.............+.............o...*.............+...............*.........", "........*....o.o......*.................*...........o....*...........+..............o....*...........+o...............*.........", "........*.....o.......*.................*...........o.....+++++++++++...............o.....+++++++++++..o..............*.........", "........*.....o.......*.................*............o...o...........o...............o.....o........oo..o.............*.........", "........*.....o.....oo*.................*oo...........ooo.............ooo.............ooooo...........ooo.........oooo*.........", "........*......o...o..*.................*..o.........o...................o...........o...................o.......o....*.........", "........*.......ooo...*.................*...o.......o.......***********...o.........o.......***********...o.....o.....*.........", "........*.......oo....*.................*....o.....o.......................o.......o.......................o...o......*.........", "........*.......o.....*.................*.....ooooo.........................ooooooo.........................ooo.......*.........", "........*......o......*.................*o...o.....o.......................o.......o.......................ooo.o......*.........", "........*.....o.......*.................*.ooo.......o...................ooo.........ooo...................ooo...ooo...*.........", "........*o...o.o......*.................*............o.................o...........o...o.................o.........o..*.........", "........*oooo...o.....*.................*.............ooo...........ooo...........o.....o.............ooo...........oo*.........", "........*.oo....o.....*.................*............o...o.........o.............o.......o...........o...o............*.........", "........*oo.....o.....*.................*...........o.....o.......o.............o.........o.........o.....o...........*.........", "........*o......o.....*.................*..........o.oo...o.......o............o.o........o.........o......o..........*.........", "........*.......o.....*.................*.ooo.....o....oo.###########.........o...o.......###########.......ooo.......*.........", "........*........o....*.................*o...o...o.......#...........*.......o.....o.....#...........*.....o...o......*.........", "........*.........oooo*.................*.....ooo.......#.............*..oooo.......oo..#.............*..oo.....o.....*.........", "........*.............*.................*....o.........#...............*o.............o#...............*o........o....*.........", "........*.............*.................*...o.........#.................*.............#.................*.........oooo*.........", "........*.............*.................*..o..........#.................*.............#.................*.............*.........", "........*.............*.................*oo...........*.................*.............*.................*.............*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*.............*.................*.............*.................*.............*.................*.............*.........", "........*...........oo*.................*.............*.................*.........oooo*.................*.............*.........", "........*..........o..*.................*.............*.................*........o....*.................*.............*.........", "........*.........o...*.................*.............*.................*.......o.....*.................*.............*.........", "........*........o.o..*.................*.............*.................*......o......*.................*.............*.........", "........*oo.....o...oo*.................*.............*.................+oooooo.......*.................+.............*.........", "........*..o....o.....*.................*............o.*...............+.......o.....oo*...............+.o............*.........", "........*...o...o.....*.................*...........o...*.............+.........o...oo..*.............+...o...........*.........", "........*....o.o......*.................*o..........o....*...........+...........o.oo....*...........+.....o..........*.........", "........*.....o.......*.................*.ooo.......o.....+++++++++++.ooo.........ooo....o+++++++++++.......o.....oooo*.........", "........*.....o.......*.................*....o.......o...oo.....o........o........oo.o..o............o......oo...o....*.........", "........*.....o...oooo*.................*.....o.......ooo.......o.........o.......o...oo..............o.....ooooo.....*.........", "........*.....oo.o....*.................*......o.....o..........o..........o.....o....................oo...o.....o....*.........", "........*.....ooo.....*.................*.......ooooo.......***********.....ooooo...........***********.ooo.......oo..#.........", "........*.....oo.o....*..................*.....o.ooo.............o.........o.....o.....................ooo..........o#..........", "........*.....o...o...*..................*..ooo...o...............o.......o.......o...................ooo............#..........", "........*....o.....o..*...................*o......oo...............o......o........o.................o...o..........#...........", "........*...o.......oo*...................*.......ooo...............o.....o.........o...............o.....o.........#...........", "........*..o..........*....................*.....o...o.............o.o...oo.........o..............o.......o.......#............", "........*.o...........#.....................*...o.....ooo.........o...ooooo.........o.............o.........o.....#.............", ".........*o..........#.......................*..o.....oo.o........o........o.........o...........o.o.........oo..#..............", "..........*.........#.........................**......o...o.......o.........o.........o.........o...o..........##...............", "...........*.......#............................**....o...o.......o.........o.........o.........o...o........##.................", "............#######...............................###########################################################...................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................", "................................................................................................................................"}; cuyo-2.1.0/datasrc/pics/i3Grau.xcf0000644000175000017500000002740612422656734013651 00000000000000gimp xcf file@BBgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 16.000000) (yspacing 16.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) !-0Eingefügte Ebene-Kopie #1     g-0{-0ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzV  zzzVz3Vz3V3zVzVzzVV3zVΙVΙzzV3ΙVΙVΙ33V3ΙVΙVzΙVzVΙΙVΙVz3ΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVzΙVzzΙVVΙVΙΙVΙV3ΙV33ΙV3ΙVΙΙVΙVΙVΙVzΙVΙΙVΙVΙV33ΙV33ΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙVΙVΙVVzΙVΙVΙVΙVΙVVΙVΙVzΙVzVΙVΙVz ΙVΙzzVV3ΙVΙzVVzzVV33zVVzzVV3V3zVV3V33V33V33V333 V333ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzV  zzzVz3Vz3V3zVzVzzVV3zVΙVΙzzV3ΙVΙVΙ33V3ΙVΙVzΙVzVΙΙVΙVz3ΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVzΙVzzΙVVΙVΙΙVΙV3ΙV33ΙV3ΙVΙΙVΙVΙVΙVzΙVΙΙVΙVΙV33ΙV33ΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙVΙVΙVVzΙVΙVΙVΙVΙVVΙVΙVzΙVzVΙVΙVz ΙVΙzzVV3ΙVΙzVVzzVV33zVVzzVV3V3zVV3V33V33V33V333 V333ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzV  zzzVz3Vz3V3zVzVzzVV3zVΙVΙzzV3ΙVΙVΙ33V3ΙVΙVzΙVzVΙΙVΙVz3ΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVΙVΙVVΙVΙΙVΙVzΙVzzΙVVΙVΙΙVΙV3ΙV33ΙV3ΙVΙΙVΙVΙVΙVzΙVΙΙVΙVΙV33ΙV33ΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙΙVΙVΙVΙVΙVΙVΙVΙVVzΙVΙVΙVΙVΙVVΙVΙVzΙVzVΙVΙVz ΙVΙzzVV3ΙVΙzVVzzVV33zVVzzVV3V3zVV3V33V33V33V333 V333                     dunkler3      | ht  ,8HX////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////@H $-0Eingefügte Ebene-Kopie     ZL-0`-0pΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33  "%&&                  &&%# -0Eingefügte Ebene     "-0"-0"ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33ΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙVΙVVΙV(ΙVzΙVzzzVz3VzVzzVV3zVΙzzV3ΙVΙ33V3ΙVΙVzVΙVzzΙVΙVV ΙVΙVz33ΙVΙVV ΙVΙVΙVΙVV ΙVΙVΙVΙVV ΙVΙVzΙVzzΙVV ΙVΙV3ΙV33ΙV3ΙVΙVΙVΙVzzΙVΙVΙV33ΙV33ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙV ΙVΙVΙVΙVΙVΙVΙVΙVzΙVΙVΙVΙVz3ΙVΙVΙVVz ΙVΙVΙV ΙVVΙV zΙVzVΙVzΙVΙzzVV3ΙzVVzzVV33VzzVV3 V33  "%&&                  &&%# cuyo-2.1.0/datasrc/pics/mdZiegel.pov0000644000175000017500000000454212422656733014276 00000000000000/* Copyright 2006,2008,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "dungeon.inc" #declare xZiegel = 2; #declare yZiegel = 10; #declare gapZiegel = 0.04; #declare Hoehe_ = BlockHoehe*22/23; #declare Poren = function {pattern {crackle form x}} #macro Schaum(x0,y0,z0,x1,y1,z1,PorenD,PorenR,D,R) isosurface { function {max( (PorenR-Poren(D+x/PorenD,y/PorenD,z/PorenD))*PorenD, sqrt(pow(max(0,x-x1+R,x0-x+R),2) +pow(max(0,y-y1+R,y0-y+R),2) +pow(max(0,z-z1+R,z0-z+R),2) )-R-1e-3) } threshold 0 contained_by {box { }} max_gradient 1.1 } #end #declare RS = seed(123); #macro Ziegel(x0,y0,z0,x1,y1,z1) object { Schaum( x0+gapZiegel/2,y0+gapZiegel/2,z0+gapZiegel/2, x1-gapZiegel/2,y1-gapZiegel/2,z1-gapZiegel/2, 0.01, 0.25, 0, gapZiegel/4) Textur(pigment {rgb < 4/9+pow(rand(RS),2)/8, 1/7+pow(rand(RS),2)/12, 1/7+pow(rand(RS),2)/15>*4/5}) } #end #declare Wand = union { #local I = 0; #while (I pamdata val write_pam : out_channel -> pamdata -> unit val pam_channel : (int -> bool) -> basic_pamdata -> basic_pamdata val pam_stack : basic_pamdata -> basic_pamdata -> basic_pamdata cuyo-2.1.0/datasrc/pics/helfer.mli0000644000175000017500000000210512422656734013752 00000000000000(* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) val pi : float val list_for : int -> int -> (int -> 'a) -> 'a list val array_foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b array -> 'a val prefix : string -> int -> string val suffix : string -> int -> string val coprefix : string -> int -> string val cosuffix : string -> int -> string val xor : bool -> bool -> bool val id : 'a -> 'a cuyo-2.1.0/datasrc/pics/zahn.inc0000644000175000017500000000726212422656733013445 00000000000000/* Copyright 2005 by Mark Weyer Maintenance modifications 2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Dreifachlicht = 1; #declare Hintergrund = 0; #include "cuyopov.inc" #declare Kiefer_Radius = 1/3; #declare Zahnfleisch_Radius = 1/20; #declare Zahn_Duennheit = 8; #declare Zahn_Farbe = <1,1,2/3>; #declare Haut_Farbe = <1,1/2,2/3>; #declare Haut_finish = finish { specular 1/4 } #macro Zahn_streck(l,w) #if (l=1) (3/5) #end #if (l=2) #if (mod(w,90)=45) 1.4 #else 1 #end #end #end #macro Zahn(l,w) intersection { sphere { 0 1 scale } box {<0,-1,-1> <2,1,1>} Textur(pigment {rgb Zahn_Farbe}) rotate w*z } #end #declare Rechts_Rampe = function(x) {select(x,exp(-1/(4*x*x)),0)} #declare Doppel_Rampe = function(x1,x2,y1,y2,x) {(y2*Rechts_Rampe((x1-x)/(x2-x1))+y1*Rechts_Rampe((x-x2)/(x2-x1))) / (Rechts_Rampe((x1-x)/(x2-x1))+Rechts_Rampe((x-x2)/(x2-x1)))} #declare Kiefer_f = function(x,y,z) { Doppel_Rampe (0.5,1.5,-2,0, pow( pow(pow(x/Kiefer_Radius,2)+pow(y/Kiefer_Radius,2),2)+ pow(z/(1/Zahn_Duennheit+2*Zahnfleisch_Radius),4), 1/4)) } #declare Kreis = function(r,x,y) { sqrt(pow(x/r,2)+pow(y/r,2)) } #declare Torus = function (r,rr,x,y,z) { Kreis (r,x,sqrt(y*y+z*z)-rr) } #declare atanf=function(b,a) // b=sin, a=cos {(select((b), select((a), select((a)-(b), atan2(-(b),-(a))-pi, -pi/2-atan2(-(a),-(b))), select((a)+(b), atan2((a),-(b))-pi/2, -atan2(-(b),(a)))), select((a), select((a)+(b), pi-atan2((b),-(a)), pi/2+atan2(-(a),(b))), select((a)-(b), pi/2-atan2((a),(b)), atan2((b),(a))) )))} #declare Zahnfleisch_f = function(r,w,x,y,z) { Doppel_Rampe (0.5,1.5,-2,0, Torus (Zahnfleisch_Radius,r, sqrt(x*x+y*y)-Kiefer_Radius, (mod(3.5*pi+atanf(y,x)-w*pi/180,pi)-pi/2)*Kiefer_Radius, z)) } #macro Zahnfleisch(l,w) #local rr = sqrt(1-pow(Kiefer_Radius/Zahn_streck(l,w),2))/Zahn_Duennheit +Zahnfleisch_Radius; +Zahnfleisch_f(rr,w,x,y,z) #end #macro Gebiss(H,V,D1,D2) union { isosurface { function { Kiefer_f (x,y,z) #if (H>0) Zahnfleisch(H,0) #end #if (V>0) Zahnfleisch(V,90) #end #if (D1>0) Zahnfleisch(D1,45) #end #if (D2>0) Zahnfleisch(D2,135) #end} threshold -1 max_gradient 90 contained_by {box { -(Kiefer_Radius+2*Zahnfleisch_Radius) (Kiefer_Radius+2*Zahnfleisch_Radius)}} } #if (H>0) Zahn(H,0) Zahn(H,180) #end #if (V>0) Zahn(V,90) Zahn(V,270) #end #if (D1>0) Zahn(D1,45) Zahn(D1,225) #end #if (D2>0) Zahn(D2,135) Zahn(D2,315) #end Textur(texture{ pigment {rgb Haut_Farbe} finish {Haut_finish}}) no_shadow } #end cuyo-2.1.0/datasrc/pics/vektorgraphik.ml0000644000175000017500000010325412422656733015222 00000000000000(* Copyright 2006,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) let eps = 0.000001 (* Diese Nhe (in der Parametrisierung von 0 bis 1) zum Endpunkt einer Strecke reicht fr Gleichheit. *) let laengen_fehler = 1.0001 (* Sobald die Dreiecksungleichung hchstens um diesen Faktor unscharf ist, wird bei der Lngenberechnung nicht noch weiter aufgeteilt. *) open Farbe open Graphik open Helfer (* Zuerst ein paar Hilfsdefinitionen *) type 'a lazyval = Unknown of (unit -> 'a) | Known of 'a let set_lazy f = ref (Unknown f) let get_lazy l = match (!l) with | Unknown f -> let v=f () in (l:=Known v; v) | Known v -> v let xor a b = (a || b) && (not (a && b)) let list_min f (h::t) = List.fold_left (function bisher -> function x -> min bisher (f x)) (f h) t let list_max f (h::t) = List.fold_left (function bisher -> function x -> max bisher (f x)) (f h) t let list_sum f = List.fold_left (function bisher -> function x -> bisher+.(f x)) 0.0 let skalar (x0,y0) (x,y) (x',y') = (x-.x0)*.(x'-.x0) +. (y-.y0)*.(y'-.y0) let abstand p1 p2 = sqrt (skalar p1 p2 p2) let richtung (x1,y1) (x2,y2) = atan2 (y2-.y1) (x2-.x1) (* Achtung: Die Punkte mssen verschieden sein! *) let rec bereinige_winkel w = if w<0.0 then bereinige_winkel (w+.2.0*.pi) else if w>=2.0*.pi then bereinige_winkel (w-.2.0*.pi) else w let kreispunkt (x,y) r w = x+.r*.(cos w), y+.r*.(sin w) let skaliere_punkt t (x,y) = t*.x, t*.y let addiere_punkte (x,y) (x',y') = x+.x', y+.y' let verschiebe_punkt dx dy = addiere_punkte (dx,dy) let drehe_punkt winkel (x,y) = let c = cos winkel in let s = sin winkel in (c*.x-.s*.y, s*.x+.c*.y) let spiegel_punkt (x,y) = -.x, y let spline p1 p1' p2' p2 t = let u = 1.0-.t in addiere_punkte (addiere_punkte (skaliere_punkt (u*.u*.u) p1) (skaliere_punkt (t*.t*.t) p2)) (skaliere_punkt (3.0*.t*.u) (addiere_punkte (skaliere_punkt u p1') (skaliere_punkt t p2'))) let spline_polynom_ableitung x1 x1' x2' x2 t = 3.0*.(x1'-.x1+.t*.(2.0*.(x2'-.2.0*.x1'+.x1)+.t*.(x2-.3.0*.(x2'-.x1')-.x1))) let spline_ableitung (x1,y1) (x1',y1') (x2',y2') (x2,y2) t = spline_polynom_ableitung x1 x1' x2' x2 t, spline_polynom_ableitung y1 y1' y2' y2 t type topologischer_ort = | Aussen | Innen | Rand let winkel_interval w1 w2 w vorwaerts = let w1,w2,w = bereinige_winkel w1, bereinige_winkel w2, bereinige_winkel w in if w=w1 || w=w2 then Rand else if w1=w2 then Aussen else if xor (xor (w Strecke (p2,p1) | Kreis k -> Kreis k | Bogen (p,r,g,w1,w2) -> Bogen (p,r,not g,w2,w1) | Spline (p1,p1',p2',p2) -> Spline (p2,p2',p1',p1) let verschiebe_linie dx dy = function | Strecke (p1,p2) -> Strecke (verschiebe_punkt dx dy p1, verschiebe_punkt dx dy p2) | Kreis (p,r) -> Kreis (verschiebe_punkt dx dy p, r) | Bogen (p,r,g,w1,w2) -> Bogen (verschiebe_punkt dx dy p, r,g,w1,w2) | Spline (p1,p1',p2',p2) -> Spline (verschiebe_punkt dx dy p1, verschiebe_punkt dx dy p1', verschiebe_punkt dx dy p2', verschiebe_punkt dx dy p2) let drehe_linie winkel = function | Strecke (p1,p2) -> Strecke (drehe_punkt winkel p1, drehe_punkt winkel p2) | Kreis (p,r) -> Kreis (drehe_punkt winkel p, r) | Bogen (p,r,g,w1,w2) -> Bogen (drehe_punkt winkel p, r, g, w1+.winkel, w2+.winkel) | Spline (p1,p1',p2',p2) -> Spline (drehe_punkt winkel p1, drehe_punkt winkel p1', drehe_punkt winkel p2', drehe_punkt winkel p2) let skaliere_linie faktor = function | Strecke (p1,p2) -> Strecke (skaliere_punkt faktor p1, skaliere_punkt faktor p2) | Kreis (p,r) -> Kreis (skaliere_punkt faktor p, r*.faktor) | Bogen (p,r,g,w1,w2) -> Bogen (skaliere_punkt faktor p, r*.faktor, g, w1, w2) | Spline (p1,p1',p2',p2) -> Spline (skaliere_punkt faktor p1, skaliere_punkt faktor p1', skaliere_punkt faktor p2', skaliere_punkt faktor p2) let spiegel_linie = function | Strecke (p1,p2) -> Strecke (spiegel_punkt p1, spiegel_punkt p2) | Kreis (p,r) -> Kreis (spiegel_punkt p,r) | Bogen (p,r,g,w1,w2) -> Bogen (spiegel_punkt p,r, not g, pi-.w1, pi-.w2) | Spline (p1,p1',p2',p2) -> Spline (spiegel_punkt p1, spiegel_punkt p1', spiegel_punkt p2', spiegel_punkt p2) let abstand_linie linie p = (* Spline ist nicht erlaubt! *) match linie with | Strecke (p1,p2) -> if p1=p2 then abstand p p1 else let x1,y1 = p1 in let x2,y2 = p2 in let x0,y0 = p in let skalar = skalar p1 in let radial = (skalar p2 p)/.(skalar p2 p2) in if radial < 0.0 then abstand p p1 else if radial > 1.0 then abstand p p2 else let dx = x0-.x1-.radial*.(x2-.x1) in let dy = y0-.y1-.radial*.(y2-.y1) in sqrt (dx*.dx +. dy*.dy) | Kreis (p0,r) -> abs_float (r-.(abstand p p0)) | Bogen (p0,r,g,w1,w2) -> if p=p0 then r else if (winkel_interval w1 w2 (richtung p0 p) g)=Innen then abs_float (r-.(abstand p p0)) else min (abstand p (kreispunkt p0 r w1)) (abstand p (kreispunkt p0 r w2)) exception Endpunkt let schneidet_strecke p1 p2 p3 p4 = (* Voraussetzung: p1 verschieden von p2 *) if p3=p4 then false else let (x1,y1),(x2,y2),(x3,y3),(x4,y4) = p1,p2,p3,p4 in (* Wir lsen das System t*p1+(1-t)*p2 = u*p3+(1-u)*p4, also t*(p1-p2)+u*(p4-p3) = p4-p2 *) let a11,a12,a21,a22 = x1-.x2, x4-.x3, y1-.y2, y4-.y3 in let det = a11*.a22 -. a12*.a21 in if det=0.0 then if a11*.(y3-.y1) = a21*.(x3-.x1) (* Die Strecken sind parallel, aber sind sie auch kolinear? *) then (* Jetzt kommt es auf die Anordnung an *) let z1,z2,z3,z4 = if x1=x2 then y1,y2,y3,y4 else x1,x2,x3,x4 in let z5,z6 = min z1 z2, max z1 z2 in if (z3z6 && z4>z6) (* Sind die Strecken schnittfrei? *) then false else raise Endpunkt else false else let b1,b2 = x4-.x2, y4-.y2 in let t,u = (b1*.a22 -. b2*.a12)/.det, (b2*.a11 -. b1*.a21)/.det in if 0.0<=t && t<=1.0 && 0.0<=u && u<=1.0 then if (t > -.eps && t1.0-.eps && t<1.0+.eps) || (u > -.eps && u1.0-.eps && u<1.0+.eps) then raise Endpunkt else true else false let schnitte_spline p1 p2 p3 p3' p4' p4 = (* Zhlt die Schnitte des Splines (p3,p3',p4',p4) mit der Strecke (p1,p2). Die Anzahl bercksichtigt Vielfachheiten. Voraussetzung: p1 verschieden von p2 *) (* Wir wollen lsen: (1-t)^3p3 + 3t(1-t)^2p3' + 3t^2(1-t)p4' + t^3p4 = (1-u)p1 + up2 Das ist: t^3(p4-3p4'+3p3'-p3) + 3t^2(p4'-2p3'+p3) + 3t(p3'-p3) + p3 = u(p2-p1) + p1 *) let (x1,y1),(x2,y2),(x3,y3),(x3',y3'),(x4',y4'),(x4,y4) = p1,p2,p3,p3',p4',p4 in let dx,dy = x2-.x1, y2-.y1 in (* Wir wollen durch dx teilen drfen, also notfalls alles an der Diagonale spiegeln. *) let x1,y1,x2,y2,x3,y3,x3',y3',x4',y4',x4,y4,dx,dy = if abs_float dx > abs_float dy then x1,y1,x2,y2,x3,y3,x3',y3',x4',y4',x4,y4,dx,dy else y1,x1,y2,x2,y3,x3,y3',x3',y4',x4',y4,x4,dy,dx in (* Wir haben schon d=p2-p1. Mit d3=p3'-p3 und d'=p4'-p3' wollen wir lsen: t^3(p4-3d'-p3) + 3t^2(d'-d3) + 3td3 + p3 = ud + p1 *) let dx3,dy3,dx',dy' = x3'-.x3, y3'-.y3, x4'-.x3', y4'-.y3' in let uf = dy/.dx in let c3x,c2x,c1x,c0x = x4-.3.0*.dx'-.x3, 3.0*.(dx'-.dx3), 3.0*.dx3, x3-.x1 in (* Es folgt u=(c3xt^3 + c2xt^2 + c1xt + c0x)/dx. Also bleibt zu lsen: t^3(y4-3dy'-y3 - ufc3x) + t^2(3(dy'-dy3) - ufc2x) + t(3dy3 - ufc1x) + y3-y1 - ufc0x = 0 *) try let ts = Polynome.loese_3 (y4-.3.0*.dy'-.y3-.uf*.c3x) (3.0*.(dy'-.dy3)-.uf*.c2x) (3.0*.dy3-.uf*.c1x) (y3-.y1-.uf*.c0x) in List.fold_left (fun anzahl -> fun t -> if t<0.0 || t>1.0 then anzahl else let u = (c0x+.t*.(c1x+.t*.(c2x+.t*.c3x)))/.dx in if u<0.0 || u>1.0 then anzahl else if t=0.0 || t=1.0 || u=0.0 || u=1.0 then raise Endpunkt else anzahl+1) 0 ts with | Polynome.Nullpolynom -> (* Alle sechs Punkte kolinear. Wir knnen auf die x-Achse projizieren. Als nchstes brauchen wir die Ausdehnung des Splines. *) let xmin,xmax = try let extremstellen = Polynome.loese_2 (x4-.3.0*.dx'-.x3) (2.0*.(dx'-.dx3)) dx3 in let randwerte = List.map (fun t -> x3+.t*.(c1x+.t*.(c2x+.t*.c3x))) (0.0::1.0::List.filter (fun t -> t>0.0 && t<1.0) extremstellen) in list_min id randwerte, list_max id randwerte with | Polynome.Nullpolynom -> (* Der Spline ist ein Punkt. *) x3,x3 in if (x1xmax && x2>xmax) then 0 else raise Endpunkt let schneidet_linie linie p1 p2 = if p1=p2 (* Gibt es eine ungerade Anzahl an Schnittpunkten der Linie linie mit der Strecke (p1,p2)? Sonderflle: Wenn die Linie oder die Strecke zu einem Punkt entartet ist, darf die Antwort immer auch false sein. Wenn sonst einer der Schnittpunkte ein Endpunkt der Linie oder der Strecke ist, mu Endpunkt geraist werden. *) then false else match linie with | Strecke (p3,p4) -> schneidet_strecke p1 p2 p3 p4 | Kreis (p,r) -> let r1,r2 = abstand p p1, abstand p p2 in if r1=r || r2=r then raise Endpunkt else xor (r1 if r=0.0 then false else let (x1,y1),(x2,y2),(x,y) = p1,p2,p in (* Zuerst berechnen wir die Schnittpunkte mit dem Kreis: d^2(t*p1+(1-t)*p2, p) = r^2 *) let dx,dy,dx',dy' = x1-.x2, y1-.y2, x2-.x, y2-.y in let a,b,c = dx*.dx+.dy*.dy, dx*.dx'+.dy*.dy', dx'*.dx'+.dy'*.dy'-.r*.r in let a',b' = b/.a, c/.a in let disk = a'*.a'-.b' in if disk < 0.0 then false (* Wir schneiden nicht mal den Kreis! *) else let t1,t2 = let wurzel = sqrt disk in -.wurzel-.a', wurzel-.a' in let schneidet t = if t>1.0 || t<0.0 then false else let u=1.0-.t in match winkel_interval w1 w2 (richtung (t*.x1+.u*.x2, t*.y1+.u*.y2) p) g with | Rand -> raise Endpunkt | Innen -> if t=1.0 || t=0.0 then raise Endpunkt else true | Aussen -> false in xor (schneidet t1) (schneidet t2) | Spline (p3,p3',p4',p4) -> (schnitte_spline p1 p2 p3 p3' p4' p4) land 1=1 exception Drauf let windung_strecke' w = if w>=pi then if w=pi then raise Drauf else w-.2.0*.pi else if w <= -.pi then if w = -.pi then raise Drauf else w+.2.0*.pi else w let windung_strecke p p1 p2 = (* Voraussetzung: p verschieden von p1,p2 *) windung_strecke' ((richtung p p2)-.(richtung p p1)) let windung_spline p p1 p1' p2' p2 p3 = (* p3 ist so, da p nicht auf dem Zug p1p3p2 liegt, auer p=p1 oder p=p2. *) let zugwindung = windung_strecke p p1 p3 +. windung_strecke p p3 p2 in let schnitte p' = (* Anzahl der Schnitte der Geraden p'p mit dem Rundweg Spline+p2p3p1. *) schnitte_spline p p' p1 p1' p2' p2 + (if schneidet_strecke p p' p2 p3 then 1 else 0) + (if schneidet_strecke p p' p3 p1 then 1 else 0) in let x0,y0 = List.fold_left (fun (x,y) -> fun (x',y') -> min x x', min y y') p [p1;p1';p2';p2;p3] in let schnitte = (* Wir probieren bei exception Endpunkt mehrere p' aus, bis wir sicher sind, da einmal davon der Endpunkt p ist und nicht etwa p1, p2 oder p3. *) try schnitte (x0-.1.0,y0-.1.0) with Endpunkt -> try schnitte (x0-.2.0,y0-.1.0) with Endpunkt -> try schnitte (x0-.3.0,y0-.1.0) with Endpunkt -> try schnitte (x0-.4.0,y0-.1.0) with Endpunkt -> raise Drauf in if schnitte land 1 = 0 then zugwindung else zugwindung+.2.0*.pi let windung_linie linie p = match linie with | Strecke (p1,p2) -> if p=p1 || p=p2 then raise Drauf else windung_strecke p p1 p2 | Kreis (p0,r) -> let d=abstand p p0 in if dr then 0.0 else raise Drauf | Bogen (p0,r,g,w1,w2) -> let w1,w2 = if g then w1,w2 else w2,w1 in let d=abstand p p0 in if d=r then if p=p0 then raise Drauf else if (winkel_interval w1 w2 (richtung p0 p) true) = Innen then raise Drauf else () else (); let w= (richtung p (kreispunkt p0 r w2)) -. (richtung p (kreispunkt p0 r w1)) in let w = if d>r then windung_strecke' w else bereinige_winkel w in if g then w else -.w | Spline (p1,p1',p2',p2) -> if p=p1 || p=p2 then raise Drauf else let (x,y),(x1,y1),(x2,y2) = p,p1,p2 in let dx,dy = x2-.x1, y2-.y1 in let xm,ym = (x1+.x2)/.2.0, (y1+.y2)/.2.0 in let p3a = xm+.dy, ym-.dx in let p3b = xm-.dy, ym+.dx in let p3 = if abstand p p3a > abstand p p3b then p3a else p3b in windung_spline p p1 p1' p2' p2 p3 let windung_drin windungszahl = let w = truncate (floor (windungszahl/.(2.0*.pi)+.0.5)) in (w land 1)<>0 type polygon = linie list let verschiebe_polygon dx dy = List.map (verschiebe_linie dx dy) let drehe_polygon w = List.map (drehe_linie (w*.pi/.180.0)) let skaliere_polygon f = List.map (skaliere_linie f) let spiegel_polygon = List.map spiegel_linie module type Malmethode = sig type polygon' val konvertiere_polygon : polygon -> polygon' val punkt_auf_polygon_relativ : polygon' -> float -> punkt * float option val rueckwaerts: polygon' -> polygon' type vektording = | Strich of (farbe * polygon' list) | Dicker_Strich of (farbe * float * polygon' list) | Flaechen of (farbe array * (polygon' * int * int option) list) val flaeche : farbe -> polygon' list -> vektording val pixel_zu_dingen : farbe option -> pixelbild -> vektording list val map_vektordinge: (linie -> linie) -> vektording list -> vektording list val verschiebe_dinge: float -> float -> vektording list -> vektording list val drehe_dinge: float -> vektording list -> vektording list val skaliere_dinge: float -> vektording list -> vektording list val spiegel_dinge: vektording list -> vektording list type vektorbild val erzeuge_vektorbild : vektording list -> vektorbild val male: vektorbild -> float -> bildchen -> bildchen end type laengen_baum = | Blatt of float | Nichtblatt of (laengen_baum * float * laengen_baum * float) (* erster float: Kurvenparameter in der Mitte zweiter float: Gesamtlnge *) let erstelle_laengen_baum f tmin tmax = let rec teile t1 p1 t2 p2 l = let t3 = (t1+.t2)*.0.5 in let p3 = f t3 in let l1,l2 = abstand p1 p3, abstand p3 p2 in let (b1,l1'),(b2,l2') = if (l1+.l2)/.l < laengen_fehler then (Blatt l1, l1), (Blatt l2, l2) else teile t1 p1 t3 p3 l1, teile t3 p3 t2 p2 l2 in let l' = l1'+.l2' in Nichtblatt (b1,t3,b2,l'), l' in let pmin,pmax = f tmin, f tmax in fst (teile tmin pmin tmax pmax (abstand pmin pmax)) let erstelle_laengen_baum l = match l with | Strecke (p1,p2) -> Blatt (abstand p1 p2) | Bogen (p,r,g,w1,w2) -> Blatt (r*.(abs_float (w1-.w2))) | Spline (p1,p1',p2',p2) -> erstelle_laengen_baum (spline p1 p1' p2' p2) 0.0 1.0 let laenge b = match b with | Blatt l -> l | Nichtblatt (b1,t,b2,l) -> l let rec suche_laenge_absolut l0 t1 t2 b = match b with | Blatt l -> t1+.(t2-.t1)*.l0/.l | Nichtblatt (b1,t3,b2,l3) -> let l1 = laenge b1 in if l0<=l1 then suche_laenge_absolut l0 t1 t3 b1 else suche_laenge_absolut (l0-.l1) t3 t2 b2 module Methode_Daten_abstrakt = struct type polygon' = (linie * laengen_baum lazyval ref) list * bool (* Der bool steht fr rckwrts *) let rueckwaerts (p,r) = p, not r let erzeuge_laenge l = l, set_lazy (function u -> erstelle_laengen_baum l) let konvertiere_polygon pol = List.map erzeuge_laenge pol, false let punkt_auf_polygon_relativ (p,r) t = let l = list_sum (function l,b -> laenge (get_lazy b)) p in let l0 = if r then (1.0-.t)*.l else t*.l in let rec suche l ((li,b)::t) = let b' = get_lazy b in let lh = laenge b' in if l<=lh then li, suche_laenge_absolut l 0.0 1.0 b' else suche (l-.l0) t in let li,t = suche l0 p in let p,w = match li with | Strecke (p1,p2) -> addiere_punkte (skaliere_punkt (1.0-.t) p1) (skaliere_punkt t p2), if p1=p2 then None else Some (richtung p1 p2) | Bogen (p,r,g,w1,w2) -> let w = w1+.t*.(w2-.w1) in kreispunkt p r w, Some (w+.pi*.(if g then 0.5 else -0.5)) | Spline (p1,p1',p2',p2) -> spline p1 p1' p2' p2 t, let dx,dy = spline_ableitung p1 p1' p2' p2 t in if dx=0.0 && dy=0.0 then None else Some (atan2 dy dx) in match w with | None -> p,None | Some w -> p, Some ((if r then w+.pi else w)*.180.0/.pi) type polygon'' = linie list * bool let konvertiere_polygon' (p,r) = List.map fst p, r let map_polygon' f (p,r) = List.map (function l,b -> erzeuge_laenge (f l)) p, r type vektording = | Strich of (farbe * polygon' list) | Dicker_Strich of (farbe * float * polygon' list) | Flaechen of (farbe array * (polygon' * int * int option) list) let flaeche f ps = Flaechen ([|f|], List.map (function p -> p,0,None) ps) type pzd_pos = | PZD_Punkt | PZD_Innen | PZD_Aussen let pixel_zu_dingen auslass bild = let breite,hoehe,pixel = bild in if breite=0 || hoehe=0 then [] else let palette,farbindex = extrahiere_farben bild in (* Ab jetzt sind Farben immer nur Indices in die palette. *) let auslass = match auslass with | None -> None | Some f -> let i = FarbMap.find f farbindex in if f=palette.(i) then Some i else None in let pos_zu_punkt (x,y) = float_of_int x, float_of_int (hoehe-y) in let pos_zu_farbe (x,y) = if x>=0 && x=0 && y Array.make i []) in let reihe pos = let rec doit i start innen aussen = (* pos : int -> pzd -> (int*int) wandelt i in eine Position um. i : int ist der Schleifenindex. start : punkt ist der Startpunkt der Kante, deren Ende gerade gesucht wird. innen : farbe option und aussen : farbe option sind die Farben, die diese Kante trennt trennt. *) let innen' = pos_zu_farbe (pos i PZD_Innen) in let aussen' = pos_zu_farbe (pos i PZD_Aussen) in if (innen',aussen')=(innen,aussen) then doit (i+1) start innen aussen else (let ende = pos_zu_punkt (pos i PZD_Punkt) in let innen = if innen=auslass then None else innen in let aussen = if aussen=auslass then None else aussen in (match innen,aussen with | (Some f1, Some f2) -> if f1=f2 then () else if f1 rand.(f) <- (Strecke (ende,start))::rand.(f) | (None, Some f) -> rand.(f) <- (Strecke (start,ende))::rand.(f) | (None,None) -> ()); if (innen',aussen') <> (None,None) then doit (i+1) ende innen' aussen') in doit 1 (pos_zu_punkt (pos 0 PZD_Punkt)) (pos_zu_farbe (pos 0 PZD_Innen)) (pos_zu_farbe (pos 0 PZD_Aussen)) in for j = 0 to hoehe do reihe (fun i -> fun pzd -> (i, j - if pzd=PZD_Aussen then 1 else 0)) done; for j = 0 to breite do reihe (fun i -> fun pzd -> ((j - if pzd=PZD_Innen then 1 else 0), i)) done; let einfach_grenzen = array_foldi (fun grenzen -> fun farbe -> fun grenze -> if grenze=[] then grenzen else (konvertiere_polygon grenze,farbe,None)::grenzen) [] rand in let grenzen = array_foldi (fun grenzen -> fun farbe1 -> array_foldi (fun grenzen -> fun farbe2 -> fun grenze -> if grenze=[] then grenzen else (konvertiere_polygon grenze,farbe1,Some farbe2)::grenzen) grenzen) einfach_grenzen binnen in [Flaechen (palette,grenzen)] type vektording' = | Strich' of (farbe * polygon'' list) | Dicker_Strich' of (farbe * float * polygon'' list) | Flaechen' of (farbe array * (polygon'' * int * int option) list) type vektorbild = vektording' list let erzeuge_vektorbild vektordinge = List.concat (List.map (function | Strich (f,ps) -> let ps' = List.map konvertiere_polygon' (List.filter (function p,r -> p<>[]) ps) in if ps'=[] then [] else [Strich' (f,ps')] | Dicker_Strich (f,d,ps) -> let ps' = List.map konvertiere_polygon' (List.filter (function p,r -> p<>[]) ps) in if ps'=[] then [] else [Dicker_Strich' (f,d,ps')] | Flaechen (fs,ps) -> [Flaechen' (fs, List.map (function p,f1,f2 -> konvertiere_polygon' p,f1,f2) (List.filter (function (p,r),f1,f2 -> p<>[]) ps))]) vektordinge) let map_vektordinge f_ = List.map (function | Strich (f,ps) -> Strich (f, List.map (map_polygon' f_) ps) | Dicker_Strich (f,d,ps) -> Dicker_Strich (f, d, List.map (map_polygon' f_) ps) | Flaechen (fs,ps) -> Flaechen (fs, List.map (function p,f1,f2 -> map_polygon' f_ p,f1,f2) ps)) let verschiebe_dinge dx dy = map_vektordinge (verschiebe_linie dx dy) let drehe_dinge winkel = map_vektordinge (drehe_linie (winkel*.pi/.180.0)) let skaliere_dinge faktor = map_vektordinge (skaliere_linie faktor) let spiegel_dinge = map_vektordinge spiegel_linie end type rahmen = | Linie of linie | Teilung of (float * float * float * float * punkt * punkt * rahmen * rahmen) (* xmin, ymin, xmax, ymax, p1, p2, Linie p1-p3, Linie p3-p2 *) let rahmen_rand r = match r with | Linie (Strecke (p1,p2)) -> let (x1,y1),(x2,y2) = p1,p2 in min x1 x2, min y1 y2, max x1 x2, max y1 y2, p1, p2 | Linie (Kreis ((x,y),r)) -> x-.r, y-.r, x+.r, y+.r, (0.0,0.0), (0.0,0.0) | Linie (Bogen (p,r,g,w1,w2)) -> let p1,p2 = kreispunkt p r w1, kreispunkt p r w2 in let (x,y),(x1,y1),(x2,y2) = p,p1,p2 in let xe = x1::x2::(List.concat (List.map (function x,w -> if winkel_interval w1 w2 w g = Innen then [x] else []) [x+.r, 0.0; x-.r, pi])) in let ys = y1::y2::(List.concat (List.map (function y,w -> if winkel_interval w1 w2 w g = Innen then [y] else []) [y+.r, pi*.0.5; y-.r, pi*.1.5])) in list_min (function x -> x) xe, list_min (function y -> y) ys, list_max (function x -> x) xe, list_max (function y -> y) ys, p1, p2 | Linie (Spline (p1,p1',p2',p2)) -> let (x1,y1),(x1',y1'),(x2',y2'),(x2,y2) = p1,p1',p2',p2 in let x_extremstellen = let a = x2-.3.0*.(x2'-.x1')-.x1 in let b = x2'-.2.0*.x1'+.x1 in let c = x1'-.x1 in List.map (function t -> x1+.t*.(3.0*.c+.t*.(3.0*.b+.t*.a))) (0.0::1.0::(List.filter (function t -> 0.0 y1+.t*.(3.0*.c+.t*.(3.0*.b+.t*.a))) (0.0::1.0::(List.filter (function t -> 0.0 x) x_extremstellen, list_min (function y -> y) y_extremstellen, list_max (function x -> x) x_extremstellen, list_max (function y -> y) y_extremstellen, p1, p2 | Teilung (x1,y1,x2,y2,p1,p2,r13,r32) -> x1,y1,x2,y2,p1,p2 let kombiniere_rahmen r1 r2 = let x1,y1,x2,y2,p1,p3 = rahmen_rand r1 in let x1',y1',x2',y2',p3,p2 = rahmen_rand r2 in Teilung (min x1 x1', min y1 y1', max x2 x2', max y2 y2', p1, p2, r1, r2) let unterteile nahe f t1 t2 = (* Ersetzt die Kurve f zwischen t1 und t2 durch einen Rahmen, in dem ein Streckenzug steckt. nahe gibt an, wann nicht weiter unterteilt werden mu. *) let rec intern t ft t' ft' = if nahe ft ft' then Linie (Strecke (ft,ft')) else let t'' = (t+.t')/.2.0 in let ft'' = f t'' in kombiniere_rahmen (intern t ft t'' ft'') (intern t'' ft'' t' ft') in intern t1 (f t1) t2 (f t2) let unterteile_kontinuierlich maxabstand = unterteile (function p1 -> function p2 -> abstand p1 p2 <= maxabstand) let unterteile_raster pixelkantenlaenge f = let runde x = ((floor (x/.pixelkantenlaenge))+.0.5)*.pixelkantenlaenge in unterteile (function p1 -> function p2 -> abstand p1 p2 < 1.5*.pixelkantenlaenge) (function t -> let x,y = f t in runde x, runde y) module type Unterteile_Methode = sig val unterteile: float -> polygon -> rahmen list * rahmen list (* erstes Ergebnis: Fr Abstand zweites: fr Windung *) end module Unterteile_kontinuierlich = struct let unterteile pixelkantenlaenge pol = List.map (function | Strecke s -> Linie (Strecke s) | Kreis k -> Linie (Kreis k) | Bogen b -> Linie (Bogen b) | Spline (p1,p1',p2',p2) -> unterteile_kontinuierlich pixelkantenlaenge (spline p1 p1' p2' p2) 0.0 1.0) pol, List.map (function l -> Linie l) pol end module Unterteile_Raster = struct let unterteile_linie_raster pixelkantenlaenge linie = let unterteile = unterteile_raster pixelkantenlaenge in match linie with | Strecke (p1,p2) -> unterteile (function t -> addiere_punkte (skaliere_punkt (1.0-.t) p1) (skaliere_punkt t p2)) 0.0 1.0 | Kreis (p,r) -> kombiniere_rahmen (unterteile (kreispunkt p r) 0.0 pi) (unterteile (kreispunkt p r) pi (pi+.pi)) | Bogen (p,r,g,w1,w2) -> let w1,w2 = bereinige_winkel w1, bereinige_winkel w2 in let w1,w2 = if g then if w1<=w2 then w1,w2 else w1, w2+.pi+.pi else if w1>=w2 then w1,w2 else w1+.pi+.pi, w2 in unterteile (kreispunkt p r) w1 w2 | Spline (p1,p1',p2',p2) -> unterteile (spline p1 p1' p2' p2) 0.0 1.0 let unterteile pixelkantenlaenge pol = let unterteilt = List.map (unterteile_linie_raster pixelkantenlaenge) pol in unterteilt, unterteilt end module type Zeichne_Methode = sig val mische: farbe lazyval ref -> farbe -> float -> farbe (* float: Anteil der ersten Farbe *) end module Zeichne_kontinuierlich = struct let mische farbe1 farbe2 anteil = if anteil>=1.0 then get_lazy farbe1 else if anteil<=0.0 then farbe2 else misch2 farbe2 (get_lazy farbe1) anteil end module Zeichne_diskret = struct let mische farbe1 farbe2 anteil = if anteil>0.5 then get_lazy farbe1 else farbe2 end let rec abstand_rahmen r p0 maxabstand = match r with | Linie l -> abstand_linie l p0 | Teilung (x1,y1,x2,y2,p1,p2,r1,r2) -> let x,y = p0 in if (xx2+.maxabstand) || (yy2+.maxabstand) then maxabstand else min (abstand_rahmen r1 p0 maxabstand) (abstand_rahmen r2 p0 maxabstand) let abstand p0 maxabstand = list_min (function r -> abstand_rahmen r p0 maxabstand) let rec windung_rahmen r p0 = match r with | Linie l -> windung_linie l p0 | Teilung (x1,y1,x2,y2,p1,p2,r1,r2) -> let x,y = p0 in if xx2 || yy2 then windung_strecke p0 p1 p2 else (windung_rahmen r1 p0)+.(windung_rahmen r2 p0) let windungszahl p0 = list_sum (function r -> windung_rahmen r p0) module Male = functor (U: Unterteile_Methode) -> functor (Z: Zeichne_Methode) -> struct include Methode_Daten_abstrakt type vektording'' = | Strich'' of (farbe * int list) | Dicker_Strich'' of (farbe * float * int list) | Flaechen'' of (farbe * (int * bool) list * (int * bool * farbe) list) list type vektorbild'' = int * (rahmen list * rahmen list) array * vektording'' list let konvertiere pixelkantenlaenge bild = let extrahiere_polygon pol = let rec suche i = function | [] -> None | h::t -> if h=pol then Some i else suche (i+1) t in suche 0 in let extrahiere_polygone pd = List.fold_left (function (n,pols),exts -> function pol,r -> match extrahiere_polygon pol pols with | None -> (n+1,pols@[pol]),(n,r)::exts | Some i -> (n,pols),(i,r)::exts) (pd,[]) in let ohne_richtung = List.map fst in let (n,pols),bild' = List.fold_left (function pd,dinge -> (function | Strich' (f,ps) -> let pd',ps' = extrahiere_polygone pd ps in pd',dinge@[Strich'' (f,ohne_richtung ps')] | Dicker_Strich' (f,d,ps) -> let pd',ps' = extrahiere_polygone pd ps in pd',dinge@[Dicker_Strich'' (f,d,ohne_richtung ps')] | Flaechen' (fs,ps) -> let pd',ps' = extrahiere_polygone pd (List.map (function p,s,s' -> p) ps) in let ps'' = List.map (function (p,r),s,s' -> let Some p' = extrahiere_polygon p (snd pd') in (p',r),s,s') ps in pd',dinge@[Flaechen'' (Array.to_list (Array.mapi (function i -> function f -> let vollhauptkanten = List.map (function (p,r),s,Some s' -> p,r,fs.(s')) (List.filter (function p,s,s' -> s=i && s'<>None) ps'') in let halbhauptkanten = List.map (function (p,r),s,s' -> p,r) (List.filter (function p,s,s' -> s=i && s'=None) ps'') in let nebenkanten = List.map (function (p,r),s,s' -> p,not r,fs.(s)) (List.filter (function p,s,s' -> s'=Some i) ps'') in let vollkanten = vollhauptkanten@nebenkanten in f, halbhauptkanten @ (List.map (function p,r,s -> p,r) vollkanten), vollkanten) fs))])) ((0,[]),[]) bild in n, Array.init n (function i -> U.unterteile pixelkantenlaenge (List.nth pols i)), bild' let male bild aufloesung (breite,hoehe,farben) = let halbaufloseung = aufloesung*.0.5 in let npols,pols,bild = konvertiere aufloesung bild in (breite,hoehe, function p -> let abstaende = Array.make npols (0.0, 0.0) in let abstand maxabstand i = let abstandi,maxabstandi = abstaende.(i) in if maxabstandi>=maxabstand then abstandi else let d = abstand p maxabstand (fst pols.(i)) in (abstaende.(i) <- (d,maxabstand); d) in let abstand' maxabstand = list_min (abstand maxabstand) in let windungen = Array.make npols None in let windung i = match windungen.(i) with | None -> let w = windungszahl p (snd pols.(i)) in (windungen.(i) <- Some w; w) | Some w -> w in let windung_drin pols = windung_drin (list_sum (function pol,r -> let w=windung pol in if r then -.w else w) pols) in get_lazy (List.fold_left (function f -> (function | Strich'' (farbe,pols) -> set_lazy (function u -> Z.mische f farbe ((abstand' aufloesung pols)/.aufloesung)) | Dicker_Strich'' (farbe,dicke,pols) -> set_lazy (function u -> Z.mische f farbe (((abstand' (dicke+.halbaufloseung) pols) -.dicke)/.aufloesung+.0.5)) | Flaechen'' flaechen -> set_lazy (function u -> try let farbe,kanten,vollkanten = List.find (function farbe,kanten,vollkanten -> try windung_drin kanten with | Drauf -> true) flaechen in let abstaende = List.filter (function d,f' -> d<0.5) (List.map (function pol,r,f' -> (abstand aufloesung pol)/.aufloesung,f') vollkanten) in if abstaende = [] then farbe else misch ((0.5+.(list_min fst abstaende), farbe):: (List.map (function d,f -> 0.5-.d,f) abstaende)) with | Not_found -> get_lazy f))) (set_lazy (function u -> farben p)) bild)) end module Male_mit_aa = Male(Unterteile_kontinuierlich)(Zeichne_kontinuierlich) module Male_ohne_aa = Male(Unterteile_Raster)(Zeichne_diskret) cuyo-2.1.0/datasrc/pics/lreAlle.pov0000644000175000017500000000453612422656734014122 00000000000000/* Copyright 2005 by Immanuel Halupczok Based on mrAlle.pov and reversi.inc which, at that time, were Copyright 2005 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Animationsschritte = 6; light_source {<-1,1,-1>*10000 2/3} light_source {<0,-2,-1>*10000 1/2} light_source {<1,0,-2>*10000 1/2} background {rgb 1} #declare Eins=<1,1,1>; #declare AnzahlFarben = 3; #declare Farbe = array[AnzahlFarben + 1] {<1,1/4,0>, <0,2/3,0>, Eins*1/2, Eins*1/20}; #declare WirdzuFarbe = array[AnzahlFarben] {1, 0, 2}; #declare SteinDicke = 1/6; #macro Stein(Oben,Unten) object { cylinder { <0, 0, -SteinDicke> <0, 0, SteinDicke> 0.8 } pigment { gradient z colour_map { [0 rgb Farbe[Unten]] [1/5 rgb Farbe[Unten]] [1/5 rgb 1/3*Eins] [4/5 rgb 1/3*Eins] [4/5 rgb Farbe[Oben]] [1 rgb Farbe[Oben]] } scale 2 translate -z scale (SteinDicke+0.000001) } finish { specular 1/3 ambient 1/3 } } #end camera { orthographic location -10*z direction z right 2*AnzahlFarben*x up 2*Animationsschritte*y } #local I=0; #while (I translate (2*I+1-AnzahlFarben)*x translate (Animationsschritte-1-2*J)*y } #local J=J+1; #end #local I=I+1; #end cuyo-2.1.0/datasrc/pics/mdPlastik.pov0000644000175000017500000001050712422656734014465 00000000000000/* Copyright 2006,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Spezial_Halbhoch = 1; #ifndef(Version) #declare Breite=4; #declare Hoehe=4; #end #include "dungeon.inc" #declare textur = pigment {rgb <0.9,1,0.7>*2/3} #declare Wanddicke = 0.1; #declare Plastikdicke = Wanddicke/3;; #declare Lochdicke = 0.03; #declare Lochdicke_ = sqrt(2)*Lochdicke; #declare Leiterbahnenabstand = 0.02; #declare Keinschlitz = 2*Ueberlappung; #declare Eckenrundung = union { cylinder { Ueberlappung} sphere { Ueberlappung} cylinder { Ueberlappung} } #declare Ecke = union { box { <-Ueberlappung,0,0> } box { <0,0,0> } box { <0,0,-Ueberlappung> } object {Eckenrundung} object {Eckenrundung rotate 90*y translate <0,0,Wanddicke>} object {Eckenrundung rotate 180*y translate } object {Eckenrundung rotate 270*y translate } Textur(textur) } #declare Schlitz = function(x0,y0,x1,y1,xx,yy,dm) { sqrt(( pow(dm,2)+ pow(max(2*(x0-xx)+dm,2*(y0-yy)-dm,2*(xx-x1)-dm,2*(yy-y1)+dm,0),2) )/2) } #declare fRandom = function {pattern {bozo scale 3}} #declare Platine = function(xx,yy,xm,ym) { min( pow(ym,2)+pow(select(fRandom(xx-xm,yy-ym,0)-0.49, xm, min(xm,1-xm,0)),2), pow(xm,2)+pow(select(fRandom(xx-xm,yy-ym,0)-0.51, min(ym,1-ym,0), ym),2)) } #declare Wand = union { object {Ecke} object {Ecke translate (1-Wanddicke)*x} box { // Platine <0,0,Wanddicke/2> <1,BlockHoehe-Plastikdicke/2,Wanddicke*2/3> Textur(pigment { function { min( Platine(x,y, mod(x,1)-1/2, mod(y,1)-1/2), Platine(x,y, mod(x,1)+1/2, mod(y,1)-1/2), Platine(x,y, mod(x,1)-1/2, mod(y,1)+1/2)) } colour_map {[0.0625 rgb 1/3] [0.0625 rgb <0,1/3,0>]} scale Leiterbahnenabstand }) } union { isosurface { function {min(Plastikdicke,sqrt(pow(z-Plastikdicke/2,2) +pow(max(0,Plastikdicke/2+Lochdicke/2 -Schlitz( Keinschlitz,BlockHoehe/2, 1/2-Wanddicke-Ueberlappung-Keinschlitz,BlockHoehe-1/8, mod(x-Wanddicke-Ueberlappung,1/2-Wanddicke-Ueberlappung),y, mod(mod(x,1/2)-y+1001*Lochdicke_,2*Lochdicke_) -Lochdicke) ),2))) } threshold Plastikdicke/2 contained_by {box { <0,0,-Plastikdicke/2> <1,BlockHoehe-Plastikdicke/2,Plastikdicke*3/2> }} max_gradient 1.1 } box {<0,0,Wanddicke-Plastikdicke> <1,BlockHoehe-Plastikdicke/2,Wanddicke>} box { <0,BlockHoehe-Plastikdicke,Plastikdicke/2> <1,BlockHoehe,Wanddicke-Plastikdicke/2> } cylinder { <0,BlockHoehe-Plastikdicke/2,Plastikdicke/2> <1,BlockHoehe-Plastikdicke/2,Plastikdicke/2> Plastikdicke/2 } cylinder { <0,BlockHoehe-Plastikdicke/2,Wanddicke-Plastikdicke/2> <1,BlockHoehe-Plastikdicke/2,Wanddicke-Plastikdicke/2> Plastikdicke/2 } Textur(textur) } } #declare Langwand = union { object{Wand translate -2*x} object{Wand translate -x} object{Wand} object{Wand translate x} object{Ecke translate 2*z} translate -2*z } #declare Block = BlockAusWand(Wand) #declare DoppelBlock = union { object {Langwand} object {Langwand rotate 90*y} object {Langwand rotate 180*y} object {Langwand rotate 270*y} box {<-2,BlockHoehe-3/100,-2>+1/100 <2,BlockHoehe,2>-1/100 pigment {rgb 0}} } Setze() cuyo-2.1.0/datasrc/pics/easyarg.mli0000644000175000017500000000555512422656734014154 00000000000000(* Copyright 2008,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) (* The purpose of this module is providing an easy interface to parsing of command line option. Under the hood, the standard module Arg is used. Note that this is an object module, not a type module: Internally, it uses global data. I consider this OK in this specific case, because it can be seen as just extending the functionality of Sys.argv, which is global anyway. Abbreviations used below: CL := command line CLO := command line option *) val parse : string -> string list (* This should be called after everything else. The string is the overall usage description. The string list consists of those parts of Sys.argv which could not be identified as CLOs. *) val usage : string -> unit (* This can be used to report errors which were not caught by parse. The string is as in parse. *) (* The register_* functions all tell this module to introduce a CLO with the given name and doc. The return value is a reference, into which a subsequent call to parse stores the result. If a CLO occurs more than once on the CL, usually the last value is taken. *) val register_choices : (Arg.key * Arg.doc) list -> Arg.key option ref (* The entries in the given list are mutually exclusive switches without a data type. The value is the switch chosen at the CL, with "None" meaning, well, that none occured. *) module type Parsable = sig type t val from_string : string -> t end module Register (T:Parsable) : sig val register_without_default : Arg.key -> Arg.doc -> T.t option ref (* A value "None" means, that the CLO did not occur at the CL. *) val register_with_default : Arg.key -> Arg.doc -> T.t -> T.t ref val register_list : Arg.key -> Arg.doc -> T.t list ref (* This one collects all occurences of the CLO. *) end (* For convenience, some values of instantiations of the Register functor are supplied in the following. *) val register_int_without_default : Arg.key -> Arg.doc -> int option ref val register_string_with_default : Arg.key -> Arg.doc -> string -> string ref val register_string_without_default : Arg.key -> Arg.doc -> string option ref cuyo-2.1.0/datasrc/pics/itrAlle.xcf0000644000175000017500000006556612422656734014124 00000000000000gimp xcf file` BB&gimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 16.000000) (yspacing 16.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) `-`  faerben blau     H` h<HT`  ,urururururururururur0H $`  faerben lila     ` 5 !` iyrrrrrrrrrr0H $` faerben braun     `  ` ?O_orrrrrrrrrr0H $` faerben gruen     ` `  -=M]m}=c[=c[=c[=c[=c[=c[=c[=c[=c[=c[0H $` itrGrau.xpm.gz      `  kRk^kj` ! ./;z?:U^.kB;98631//ɷ     ۷      V Vۯ Vۯ Vۯ Vۯ Vۯ V Ư h h  h  h  h  h  h  h  h  h  h  h  h ;98631//ɷ     ۷      V Vۯ Vۯ Vۯ Vۯ Vۯ V Ư h h  h  h  h  h  h  h  h  h  h  h  h ;98631//ɷ     ۷      V Vۯ Vۯ Vۯ Vۯ Vۯ V Ư h h  h  h  h  h  h  h  h  h  h  h  h ;:864 2 0/   ////////////////////////.,*(&$" hhhhh۷hVhVhVhVhVVhVh h h h h h h h h h h h h h h h h hhVVVVVVVVVVhhhhh۷hVhVhVhVhVVhVh h h h h h h h h h h h h h h h h hhVVVVVVVVVVhhhhh۷hVhVhVhVhVVhVh h h h h h h h h h h h h h h h h hhVVVVVVVVVV     h   h   h   ۯhۯhۯhۯh ۯhVhV  VVV V V VV V VV VVV V h h h h h ۯh"ۯh%ۯh)ۙh-159 6.(2L=6C.k\ P^*zky&"Ʒ;::z:\k:=L:.;; h   h   h   ۯhۯhۯhۯh ۯhVhV  VVV V V VV V VV VVV V h h h h h ۯh"ۯh%ۯh)ۙh-159 6.(2L=6C.k\ P^*zky&"Ʒ;::z:\k:=L:.;; h   h   h   ۯhۯhۯhۯh ۯhVhV  VVV V V VV V VV VVV V h h h h h ۯh"ۯh%ۯh)ۙh-159 6.(2L=6C.k\ P^*zky&"Ʒ;::z:\k:=L:.;;         !%)-1 59\;73 / +'# ;73 / +'#   + + + + + + ,yk^PC6( yk^PC6( yk^PC6(         m ) ' %)#3!= GR \fpzVVVVVzhphfh\hRhGۯh=ۯh3!ۯh)#ۙh%' )9N >>)3>=G>R\>fp>z>PzEK"pf9?&\R.4*G= "(.3)2 6 Km ) ' %)#3!= GR \fpzVVVVVzhphfh\hRhGۯh=ۯh3!ۯh)#ۙh%' )9N >>)3>=G>R\>fp>z>PzEK"pf9?&\R.4*G= "(.3)2 6 Km ) ' %)#3!= GR \fpzVVVVVzhphfh\hRhGۯh=ۯh3!ۯh)#ۙh%' )9N >>)3>=G>R\>fp>z>PzEK"pf9?&\R.4*G= "(.3)2 6 K - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . / / / / / / / #'+ / 37;#'+ / 37;^#*17>ELSZaaZSLE>71*#[ ("4.?9KEP^#*17>ELSZaaZSLE>71*#[ ("4.?9KEP^#*17>ELSZaaZSLE>71*#[ ("4.?9KEP               ;98631//ɷ    ۷ ۷ Ưۯ VۯVۯVۯ VۯVVۯVVۯVVƙhVVhVVhhVhhVhhhhhhhhhۯhhhۯhhhhhhhhۯhhۯhh;98631//ɷ    ۷ ۷ Ưۯ VۯVۯVۯ VۯVVۯVVۯVVƙhVVhVVhhVhhVhhhhhhhhhۯhhhۯhhhhhhhhۯhhۯhh;98631//ɷ    ۷ ۷ Ưۯ VۯVۯVۯ VۯVVۯVVۯVVƙhVVhVVhhVhhVhhhhhhhhhۯhhhۯhhhhhhhhۯhhۯhh;:864 2 0/   ////////////////////////.,*(&$" hhhhh۷hVhVhVhVhVVhVhVhVhVhhhhVhhhhhhhhhhhhVVVVVVVVVVhhhhh۷hVhVhVhVhVVhVhVhVhVhhhhVhhhhhhhhhhhhVVVVVVVVVVhhhhh۷hVhVhVhVhVVhVhVhVhVhhhhVhhhhhhhhhhhhVVVVVVVVVV    ۯhh  ۯhh  hh  ۯhۯh󷖖۷ۯh﷖۷ۯh뷖۷۷ۯhVhV VVV V V VV V VV VVVV VVV 󙯙hV hhh hhh 󙯙hh ۯhh ۯۙhh"ۯh%ۯh)ۙh-159lۯhh  ۯhh  hh  ۯhۯh󷖖۷ۯh﷖۷ۯh뷖۷۷ۯhVhV VVV V V VV V VV VVVV VVV 󙯙hV hhh hhh 󙯙hh ۯhh ۯۙhh"ۯh%ۯh)ۙh-159lۯhh  ۯhh  hh  ۯhۯh󷖖۷ۯh﷖۷ۯh뷖۷۷ۯhVhV VVV V V VV V VV VVVV VVV 󙯙hV hhh hhh 󙯙hh ۯhh ۯۙhh"ۯh%ۯh)ۙh-159l         !%)-1 59-0H $cuyo-2.1.0/datasrc/pics/gen_fische.ml0000644000175000017500000006745512422656734014451 00000000000000(* Copyright 2006,2011 by Mark Weyer Maintenance modifications 2007,2010 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Helfer open Male_mit_aa let gib_xpm_aus aufloesung name bild = gib_xpm_aus (rgb_grau 1.0) name (berechne aufloesung bild) let farbraum_hai = [ von_rgb (rgbrgb 0.25 0.5 0.95); von_rgb (rgbrgb 0.5 0.75 1.0); ] let farbraum_krake = [ von_rgb (rgbrgb 0.79 0.06 0.79); von_rgb (rgbrgb 0.95 0.37 0.96); ] let farbraum3 = let o = von_rgb (rgbrgb 0.9 0.6 0.15) in let w = von_rgb (rgbrgb 1.0 0.95 0.85) in [ von_rgb (rgbrgb 0.6 1.0 0.7); w; o; von_rgb (rgbrgb 0.85 0.2 0.05); o; w; ] let farbraum4 = [ von_rgb (rgbrgb 0.5 0.95 0.25); von_rgb (rgbrgb 0.75 1.0 0.5); ] let farbraum_goldfisch = [ von_rgb (rgbrgb 0.95 0.4 0.15); von_rgb (rgbrgb 1.0 0.7 0.4); ] let farbraum6 = let w = von_rgb (rgbrgb 1.0 0.95 0.9) in let s = von_rgb (rgbrgb 0.3 0.3 0.35) in [s; w; s; w; s; w;] let zug f (h::t) = snd (List.fold_left (function p,bisher -> function p' -> p',(f p p')::bisher) (h,[]) t) let polygonzug = zug (function p -> function p' -> Strecke (p,p')) let spline (x1,y1,dx1,dy1) (x2,y2,dx2,dy2) = Spline ((x1,y1),(x1+.dx1,y1+.dy1),(x2-.dx2,y2-.dy2),(x2,y2)) let splines = zug spline let strich p = Strich (schwarz, p) let umrande f ps = [flaeche f ps; strich ps] let richtung (x,y) laenge winkel = let winkel = winkel*.pi/.180.0 in x, y, laenge*.(cos winkel), laenge*.(sin winkel) let in_richtung p l w = let x,y,dx,dy = richtung p l w in x+.dx, y+.dy let punkt_auf_polygon p t = match punkt_auf_polygon_relativ p t with p',Some w -> p',w let korrektur bild = erzeuge_vektorbild (verschiebe_dinge 0.5 0.5 bild) let male bild hintergrund = male (korrektur bild) (1.0/.32.0) hintergrund type zustand = | Warten | Zucken | Fressen let auge_rad = 0.07 let auge = konvertiere_polygon [Kreis ((0.0,0.0),auge_rad)] let auge farbe zustand = if zustand=Zucken then umrande farbe [auge] else let pupille = konvertiere_polygon [Kreis ((0.5*.auge_rad,0.0),auge_rad*.0.5)] in [ Flaechen ([|schwarz;weiss|], [auge,1,None; pupille,0,Some 1]); strich [auge]; ] let auge (x,y) w farbe zustand = verschiebe_dinge x y (drehe_dinge w (auge farbe zustand)) let loeschdaten groesse = (if groesse > 0.6 then 0.4 else 0.3), (if groesse > 0.6 then -0.4 else -0.3), 0.5 -. (groesse*.3.0 -. floor(groesse*.3.0)) let hai farbe groesse kiemenzahl zustand = let laenge = (groesse**(1.0/.3.0))*.0.4 in let dicke = (groesse**(2.0/.3.0))*.0.3 in let extralaenge = match zustand with | Warten -> 0.0 | Zucken -> -.laenge/.8.0 | Fressen -> laenge/.8.0 in let mundwinkel = richtung (laenge/.2.0, -.dicke/.7.0) (laenge/.5.0) 240.0 in let mund,nase,kinn = if zustand=Fressen then (laenge*.3.0/.4.0, -.dicke/.7.0), (laenge, dicke), (laenge, -.dicke) else (laenge, 0.0), (laenge, dicke/.3.0), (laenge, -.dicke/.3.0) in let mund1,mund2 = if zustand=Fressen then richtung mund (dicke/.2.0) 90.0, richtung mund (dicke/.2.0) 90.0 else richtung mund (dicke/.7.0) 0.0, richtung mund (dicke/.7.0) 180.0 in let nasekinn_extrawinkel = if zustand=Fressen then 60.0 else 0.0 in let nase1 = richtung nase (dicke/.7.0) (120.0+.nasekinn_extrawinkel) in let nase2 = richtung nase (dicke/.2.0) (120.0+.nasekinn_extrawinkel) in let nase3 = richtung nase (laenge/.2.0) (-30.0+.nasekinn_extrawinkel) in let kinn1 = richtung kinn (dicke/.2.0) (60.0-.nasekinn_extrawinkel) in let kinn2 = richtung kinn (dicke/.7.0) (60.0-.nasekinn_extrawinkel) in let heck = -.laenge*.0.9-.extralaenge, 0.0 in let heck1 = richtung heck dicke 240.0 in let heck2 = richtung heck dicke 300.0 in let heck3 = richtung heck laenge (-15.0) in let rumpf_oben = konvertiere_polygon [ spline nase2 heck1; ] in let rumpf_nur_unten = konvertiere_polygon [spline heck2 kinn1] in let rumpf_unten = konvertiere_polygon [ spline heck2 kinn1; spline kinn2 mund2; spline mund1 nase1; ] in let auge_basis,auge_basis_w = punkt_auf_polygon rumpf_oben 0.3 in let auge_p = in_richtung auge_basis (auge_rad*.0.5) (auge_basis_w+.90.0) in let oben_basis,oben_basis_w = punkt_auf_polygon rumpf_oben (if zustand=Zucken then 0.63 else 0.6) in let obenoben = in_richtung oben_basis (dicke*.0.6) (oben_basis_w-.90.0) in let obenoben1 = richtung obenoben (dicke/.3.0) (oben_basis_w+.90.0) in let obenoben2 = richtung obenoben (dicke/.3.0) (oben_basis_w-.15.0) in let obenvorne = in_richtung oben_basis (laenge*.0.4) (oben_basis_w+.160.0) in let obenvorne1 = richtung obenvorne (dicke/.3.0) (oben_basis_w-.90.0) in let obenhinten = in_richtung oben_basis (laenge*.0.4) (oben_basis_w+.30.0) in let obenhinten1 = richtung obenhinten (dicke/.3.0) (oben_basis_w+.45.0) in let unten_basis,unten_basis_w = punkt_auf_polygon rumpf_nur_unten 0.55 in let untenunten = in_richtung unten_basis (if zustand=Zucken then dicke/.5.0 else dicke/.3.0) (unten_basis_w-.90.0) in let untenunten1 = richtung untenunten (laenge/.4.0) (unten_basis_w) in let untenunten2 = richtung untenunten (laenge/.4.0) (unten_basis_w-.105.0) in let untenvorne = in_richtung unten_basis (dicke*.0.6) (unten_basis_w+.30.0) in let untenvorne1 = richtung untenvorne (dicke/.10.0) (unten_basis_w+.135.0) in let untenhinten = in_richtung unten_basis (dicke/.3.0) (unten_basis_w+.50.0) in let untenhinten1 = richtung untenhinten (dicke/.10.0) (unten_basis_w-.135.0) in let schwanzoben = -.laenge*.1.1-.extralaenge, dicke in let schwanzoben1 = richtung schwanzoben dicke (-75.0) in let schwanzoben2 = richtung schwanzoben (laenge+.extralaenge) 165.0 in let schwanzunten = -.laenge*.1.1-.extralaenge, -.dicke in let schwanzunten1 = richtung schwanzunten dicke (-105.0) in let schwanzunten2 = richtung schwanzunten (laenge+.extralaenge) 15.0 in let rec kiemen n = if n=kiemenzahl then [] else (Bogen ((dicke/.2.0-.(float_of_int n)*.(1.0/.12.0+.extralaenge/.4.0), 0.0), dicke/.2.0, true, pi*.5.0/.6.0, pi*.7.0/.6.0)) :: (kiemen (n+1)) in let kiemen = [strich [konvertiere_polygon (kiemen 0)]] in let kiemen = [strich [konvertiere_polygon (list_for 0 (kiemenzahl-1) (fun i -> Bogen ((dicke/.2.0-.(float_of_int i)*.(1.0/.12.0+.extralaenge/.4.0), 0.0), dicke/.2.0, true, pi*.5.0/.6.0, pi*.7.0/.6.0)))]] in let schwanz = konvertiere_polygon [ spline schwanzoben1 schwanzunten1; spline schwanzunten2 schwanzoben2; ] in let oben = konvertiere_polygon (splines [obenoben1; obenhinten1; obenvorne1; obenoben2]) in let farbwechsel = konvertiere_polygon [spline heck3 nase3] in let mund = konvertiere_polygon [spline mund2 mundwinkel] in let unten = konvertiere_polygon (splines [untenunten1; untenvorne1; untenhinten1; untenunten2]) in let loescho,loeschu,loeschl = loeschdaten groesse in let loeschen = konvertiere_polygon (polygonzug [ 0.0,0.0; nase; laenge,loescho; loeschl,loescho; loeschl,loeschu; laenge,loeschu; kinn; 0.0,0.0 ]) in let schwanz = umrande (farbe 1) [schwanz] in let oben = umrande (farbe 1) [oben] in let rumpf = [ Flaechen ([|farbe 1; farbe 2|], [rumpf_oben, 0, None; rumpf_unten, 1, None; farbwechsel, 0, Some 1]); strich ([rumpf_oben; rumpf_unten] @ (if zustand=Fressen then [] else [mund])); (* beim Fressen ist der Mund Teil der unteren Mundlinie *) ] in let auge = auge auge_p (auge_basis_w-.180.0) (farbe 1) zustand in let unten = umrande (farbe 1) [unten] in let loeschen = if zustand=Fressen then [flaeche hintergrund [loeschen]] else [] in loeschen @ schwanz @ oben @ rumpf @ kiemen @ auge @ unten let krake farbe groesse augenzahl zustand = let laenge = (groesse ** 0.3) in let dicke = groesse ** (1.0/.2.0) in let tentakel_dicke = dicke*.0.02 in let tentakel_rand_dicke = tentakel_dicke+.1.0/.32.0 in let kopf_rad = dicke*.0.2 in let kopf_x = -.kopf_rad-.(if zustand=Fressen then laenge*.0.2 else 0.0) in let blesse_richtung = 130.0 in let blesse_breite = 50.0 in let augen = List.concat (List.map (function (r,w) -> auge (in_richtung (kopf_x,0.0) (r*.kopf_rad) w) 0.0 (farbe 1) zustand) (List.nth [ []; [0.4,0.0]; [0.6,45.0; 0.7,-110.0;]; [0.65,-30.0; 0.7,50.0; 0.8,-130.0;] ] augenzahl)) in let tentakel ry rlaenge w1 w2 w3 w3' = if zustand=Fressen then konvertiere_polygon [Strecke ((kopf_x, kopf_rad*.ry), (kopf_x+.laenge*.rlaenge, dicke*.0.5*.ry))] else let laenge = laenge*.0.5*.rlaenge in let p t = kopf_x/.2.0+.laenge*.t, (kopf_rad*.(1.0-.t)+.dicke*.0.3*.t)*.ry in konvertiere_polygon (splines [ richtung (p 0.0) (kopf_rad*.1.0) w1; richtung (p 0.3) (kopf_rad*.1.0) w2; richtung (p (if zustand=Zucken then 0.85 else 1.0)) (kopf_rad*.1.0) (if zustand=Zucken then w3' else w3)]) in let kopf = konvertiere_polygon [Kreis ((kopf_x,0.0),kopf_rad-.tentakel_dicke)] in let blesse1,blesse2 = (kopf_x-.kopf_rad*.0.65,kopf_rad*.0.15), (kopf_x+.kopf_rad*.0.05,kopf_rad*.0.75) in let blesse1,blesse2 = richtung blesse1 (kopf_rad/.3.0) 90.0, richtung blesse2 (kopf_rad/.3.0) 0.0 in let blesse = konvertiere_polygon (splines [blesse1;blesse2;blesse1]) in let kopf_vorne = [Flaechen ([|farbe 1; farbe 2|], [kopf, 0, None; blesse, 0, Some 1])] in let dickstrich p = [ Dicker_Strich (schwarz, tentakel_rand_dicke, p); Dicker_Strich (farbe 1, tentakel_dicke, p)] in let rand_hinten = [ tentakel (-0.5) 0.85 20.0 (-5.0) (-30.0) 0.0; tentakel 0.5 0.9 10.0 (-15.0) 15.0 (-15.0)] in let rand_hinten = dickstrich rand_hinten in let rand_vorne = [kopf; tentakel (-0.8) 1.0 60.0 0.0 45.0 15.0; tentakel 0.0 1.0 (-15.0) 30.0 0.0 30.0; tentakel 0.8 1.0 10.0 5.0 (-15.0) (-30.0);] in let rand_vorne = dickstrich rand_vorne in let loescho,loeschu,loeschl = loeschdaten groesse in let loeschen = konvertiere_polygon (polygonzug [ loeschl,loeschu; kopf_x+.laenge+.dicke*.0.1, loeschu; kopf_x+.laenge, dicke*. -0.4; kopf_x, kopf_rad*. -0.8; kopf_x, kopf_rad*.0.8; kopf_x+.laenge, dicke*.0.4; kopf_x+.laenge+.dicke*.0.1, loescho; loeschl, loescho; loeschl, loeschu]) in let loeschen = if zustand=Fressen then [flaeche hintergrund [loeschen]] else [] in loeschen @ rand_hinten @ rand_vorne @ kopf_vorne @ augen let zierfisch farbe groesse kiemenzahl zustand = let laenge = groesse**(1.0/.2.0)*.0.8 in let mund_laenge = 0.1 in let zucklaenge = if zustand=Zucken then laenge/.15.0 else 0.0 in let kiemenrad = laenge/.4.0 in let kiemend = laenge/.11.0 in let streifen_parameter = [ 0.2, 80.0, 105.0, 95.0; -0.3, 95.0, 80.0, 85.0; 0.15, 70.0, 75.0, 65.0; 0.1, 105.0, 95.0, 80.0; 0.3, 75.0, 80.0, 95.0; ] in let anz_streifen = List.length streifen_parameter + 1 in let streifen_x i = let i' = float_of_int(i)/.float_of_int(anz_streifen) -.0.5 in laenge *. i' -. if i'<0.0 then 2.0*.zucklaenge*.i' else 0.0 in let streifen i = let h,wu,wm,wo = List.nth streifen_parameter (i-1) in let x = streifen_x i in let lm = laenge/.3.0 in konvertiere_polygon (splines [ richtung (x,-.laenge/.2.0) (lm*.(1.0+.h)) wu; richtung (x,laenge/.2.0*.h) lm wm; richtung (x,laenge/.2.0) (lm*.(1.0-.h)) wo; ]) in let streifen_rahmen i = konvertiere_polygon ( Strecke ((streifen_x i,laenge/.2.0),(streifen_x (i-1),laenge/.2.0)) :: Strecke ((streifen_x (i-1),-.laenge/.2.0),(streifen_x i,-.laenge/.2.0)) :: if i=1 then [Strecke ((streifen_x 0, laenge/.2.0),(streifen_x 0, -.laenge/.2.0))] else if i=anz_streifen then [Strecke ((laenge/.2.0, -.laenge/.2.0),(laenge/.2.0, laenge/.2.0))] else []) in let streifen = Flaechen ( Array.init anz_streifen (fun i -> farbe (i+1)), list_for 1 anz_streifen (fun i -> streifen_rahmen i, i-1, None) @ list_for 1 (anz_streifen-1) (fun i -> streifen i, i-1, Some i)) in let mund = (laenge/.2.0, 0.0) in let mund' = (laenge/.2.0-.mund_laenge, 0.0) in let stirn = (laenge*.0.2, laenge/.4.0) in let kinn = (laenge*.0.2, -.laenge/.4.0) in let oben = (-0.15*.laenge, laenge/.2.0) in let unten = (-0.15*.laenge, -.laenge/.2.0) in let kreuz = (zucklaenge/.2.0-.laenge*.0.2, laenge/.8.0) in let po = (zucklaenge/.2.0-.laenge*.0.2, -.laenge/.8.0) in let obenh = (zucklaenge-.laenge/.2.0, laenge/.4.0) in let untenh = (zucklaenge-.laenge/.2.0, -.laenge/.4.0) in let mundo,mundu,mundw,stirnw = if zustand=Fressen then in_richtung mund (laenge/.2.0) 90.0, in_richtung mund (laenge/.2.0) 270.0, 225.0, 180.0 else mund,mund,145.0,135.0 in let munduw,mundul = if zustand=Zucken then 80.0, laenge/.3.0 else 540.0-.mundw, laenge/.6.0 in let umriss_aussen = List.concat [ splines [ richtung mundo (laenge/.6.0) mundw; richtung stirn (laenge/.6.0) stirnw; richtung oben (laenge/.6.0) 125.0; ]; splines [ richtung oben (laenge/.7.0) 260.0; richtung kreuz (laenge/.13.0) 225.0; richtung obenh (laenge/.9.0) 120.0; ]; [Spline (obenh, in_richtung obenh (laenge/.6.0) 280.0, in_richtung untenh (laenge/.6.0) 80.0, untenh); ]; splines [ richtung untenh (laenge/.9.0) 60.0; richtung po (laenge/.13.0) 315.0; richtung unten (laenge/.7.0) 260.0; ]; splines [ richtung unten (laenge/.6.0) 55.0; richtung kinn (laenge/.6.0) (540.0-.stirnw); richtung mundu (laenge/.6.0) munduw; ]] in let mund,umriss = if zustand=Fressen then [], Spline (mundu,mund',mund',mundo) :: umriss_aussen else [Strecke (mund,mund')], umriss_aussen in let mund,umriss = konvertiere_polygon mund, konvertiere_polygon umriss in let streifen_weg = flaeche durchsichtig [umriss; konvertiere_polygon (polygonzug [ laenge/.2.0, laenge/.2.0; -.laenge/.2.0,laenge/.2.0; -.laenge/.2.0,-.laenge/.2.0; laenge/.2.0, -.laenge/.2.0; laenge/.2.0, laenge/.2.0; ])] in let loescho,loeschu,loeschl = loeschdaten groesse in let loescho = max loescho (0.55*.laenge) in let loeschu = min loeschu (-0.55*.laenge) in let loeschl = min loeschl (-0.55*.laenge) in let loeschen = if zustand=Fressen then [flaeche hintergrund [konvertiere_polygon (umriss_aussen @ polygonzug [ mundu; laenge*.0.55, loeschu; loeschl, loeschu; loeschl, loescho; laenge*.0.55, loescho; mundo; ])]] else [] in let kiemen = konvertiere_polygon (list_for 1 kiemenzahl (fun i -> Bogen ((kiemenrad-.kiemend*.float_of_int(i-2),0.0), kiemenrad, true, 7.0*.pi/.8.0, 9.0*.pi/.8.0))) in let zierrat = [mund; kiemen; umriss] in let zierrat = [strich zierrat] in let auge = auge (in_richtung stirn (laenge/.12.0) 270.0) 0.0 (farbe 5) zustand in streifen :: streifen_weg :: loeschen @ zierrat @ auge let seepferdchen farbe groesse flossenanzahl zustand = let hoehe = groesse ** (1.0/.2.0) *. 0.9 in let breite = hoehe/.2.0 in let schwanz_segmente = (if zustand=Zucken then 7 else 5)*flossenanzahl in let schwanz_y = -0.3*.hoehe in let schwanz_x = 0.25*.breite in let hueft_x1 = 0.0 in let hueft_x2 = -0.25*.breite in let nacken_y = 0.3*.hoehe in let flossenbreite = breite/.3.0 in let hals_w = 80.0 in let bauch_dicke = breite/.4.0 in let bauch_w = 20.0 in let mund_w = -20.0 in let schwanz_segmentef = float_of_int schwanz_segmente in let schwanz_dw = pi/.3.0 in let schwanz_r1 = schwanz_x -. hueft_x1 in let schwanz_r2 = schwanz_x -. hueft_x2 in let schwanz_rf2 = (schwanz_r1/.schwanz_r2) ** (schwanz_dw/.2.0/.pi) in let schwanz_rf1 = ((schwanz_r2/.schwanz_r1) ** (1.0/.schwanz_segmentef)) *. schwanz_rf2 in let schwanz_w1 = atan2 (log schwanz_rf1) schwanz_dw in let schwanz_w2 = atan2 (log schwanz_rf2) schwanz_dw in let schwanz r f w = konvertiere_polygon (splines (list_for 0 schwanz_segmente (fun i -> let if_ = float_of_int i in let r = r*.(f**if_) in let w' = pi+.schwanz_dw*.if_ in richtung (schwanz_x+.r*.cos w', schwanz_y+.r*.sin w') (r*.schwanz_dw/.3.0) ((w'+.pi/.2.0-.w)*.180.0/.pi)))) in let schwanz = [ rueckwaerts (schwanz schwanz_r1 schwanz_rf1 schwanz_w1); schwanz schwanz_r2 schwanz_rf2 schwanz_w2; ] in let koerper_h = nacken_y-.schwanz_y in let ruecken_y = (nacken_y+.schwanz_y)/.2.0 in let ruecken_r = (schwanz_y-.ruecken_y) /. sin schwanz_w2 in let ruecken_x = hueft_x2 +. ruecken_r *. cos schwanz_w2 in let ruecken = konvertiere_polygon [Bogen ((ruecken_x,ruecken_y), ruecken_r, false, pi-.schwanz_w2, pi+.schwanz_w2)] in let flossen = konvertiere_polygon (splines (list_for 0 (3*flossenanzahl) (fun i -> let w = schwanz_w2 *. (1.0 -. float_of_int i /. float_of_int flossenanzahl /. 1.5) in let r = ruecken_r +. if i mod 3 = 1 || i mod 3 = 2 then flossenbreite else 0.0 in richtung (ruecken_x-.r*.cos w,ruecken_y-.r*.sin w) (koerper_h/.(float_of_int flossenanzahl)/.2.0) (180.0/.pi*.(w -. pi/.2.0))))) in let bauchsl = koerper_h/.6.0 in let nacken1 = hueft_x1,nacken_y in let bauch = splines [ richtung (hueft_x1,schwanz_y) bauchsl (180.0/.pi*.(pi/.2.0-.schwanz_w1)); richtung (hueft_x1+.bauch_dicke, (2.0*.schwanz_y+.nacken_y)/.3.0) bauchsl (90.0-.bauch_w); richtung (hueft_x1+.bauch_dicke, (schwanz_y+.2.0*.nacken_y)/.3.0) bauchsl (90.0+.bauch_w); richtung nacken1 bauchsl hals_w; ] in let kopf = (hueft_x1+.hueft_x2)/.2.0, nacken_y+.hoehe/.6.0 in let nacken2 = hueft_x2,nacken_y in let mund = in_richtung ((hueft_x1+.hueft_x2)/.2.0,nacken_y+.hoehe/.9.0) (breite*.0.6) mund_w in let mundo = in_richtung mund 0.02 (mund_w+.90.0) in let mundu = in_richtung mund 0.02 (mund_w-.90.0) in let kopf = [ Spline (nacken1, in_richtung nacken1 (breite/.4.0) 340.0, in_richtung mundu (breite/.4.0) (mund_w+.183.0), mundu); Strecke (mundu,mundo); Spline (mundo, in_richtung mundo (breite/.3.0) (mund_w+.177.0), in_richtung kopf (breite/.3.0) 10.0, kopf); Spline (kopf, in_richtung kopf (hoehe/.11.0) 260.0, in_richtung nacken2 (hoehe/.11.0) (90.0+.180.0/.pi*.schwanz_w2), nacken2); ] in let restrand = konvertiere_polygon (bauch @ kopf) :: schwanz in let auge = auge ((hueft_x1+.hueft_x1)/.2.0, nacken_y+.hoehe/.10.0) 0.0 (farbe 1) zustand in let loescho,loeschu,loeschl = loeschdaten groesse in let fressor = (0.7,loescho) in let fressur = (0.7,loeschu) in let loeschen = if zustand=Fressen then [konvertiere_polygon ( Spline (mund, in_richtung mund 0.2 mund_w, in_richtung fressor 0.2 180.0, fressor) :: Spline (fressur, in_richtung fressur 0.2 180.0, in_richtung mund 0.2 mund_w, mund) :: polygonzug [fressor; loeschl,loescho; loeschl,loeschu; fressur])] else [] in let linien = konvertiere_polygon (bauch @ kopf) :: ruecken :: flossen :: schwanz in [ flaeche hintergrund loeschen; Flaechen ([| farbe 1; farbe 2|], (flossen, 0, None) :: (ruecken, 0, Some 1) :: List.map (fun p -> p,1,None) restrand); strich linien; ] @ auge let fuelle_parameter fisch verschieben groesse anzahl zustand farbe = let bild = fisch farbe (groesse/.3.0) anzahl zustand in if verschieben then verschiebe_dinge (groesse-.(floor groesse)) 0.0 bild else bild let fischkomplett fisch farbe = let statisch y n = [ 0,y,1,fisch (float_of_int n) n Warten; 1,y,1,fisch (float_of_int n) n Zucken] in let beweglich y n = [ 0,y,2,fisch ((float_of_int n)+.1.0/.3.0) n Fressen; 0,y-1,2,fisch ((float_of_int n)+.2.0/.3.0) (n+1) Fressen] in let haelfte = kombiniere_bildchen 2 7 (List.map (function x,y,w,b -> x,y, male (b farbe) (monochrom durchsichtig w 1)) ((statisch 6 1) @ (beweglich 5 1) @ (statisch 3 2) @ (beweglich 2 2) @ (statisch 0 3))) in kombiniere_bildchen 4 7 [0,0,haelfte; 2,0,spiegel_x haelfte] let muschel augen oeffnung = let farbe = List.nth [ schwarz; von_rgb (rgbrgb 0.9 1.0 0.5); von_rgb (rgbrgb 0.8 0.7 0.4); von_rgb (rgbrgb 0.3 0.3 0.3); ] in let streifen = 5 in let costreifen = 3 in let rad = 0.4 in let dicke = 0.15 in let klappenwinkel = pi/.6.0 in let dreh (x,y,z) t = x, y*.(cos t)+.z*.(sin t) in let punkt u t = let t' = 1.0-.t in let u' = 2.0*.u-.1.0 in let w = u'*.pi*.0.5 in t*.rad*.(sin w) +. t'*.rad*.(sin klappenwinkel)*.u', t*.t'*.(1.0-.u'*.u')*.dicke*.4.0, -.t*.rad*.((cos klappenwinkel)+.(cos w)) in let punkt i j = punkt ((float_of_int i)/.(float_of_int streifen)) ((float_of_int j)/.(float_of_int costreifen)) in let punkt w i j = dreh (punkt i j) w in let punkt oben i j = if oben then punkt (0.1-.oeffnung) i j else let x,y = punkt (-0.1) i j in x,-.y in let minmax oben i = let rec versuche j (minj,miny) (maxj,maxy) = if j>costreifen then minj,maxj else let x,y = punkt oben i j in versuche (j+1) (if y<=miny then j,y else minj,miny) (if y>=maxy then j,y else maxj,maxy) in let x,y = punkt oben i 0 in versuche 1 (0,y) (0,y) in let maxoben = Array.init (streifen+1) (function i -> snd (minmax true i)) in let minunten = Array.init (streifen+1) (function i -> fst (minmax false i)) in let liste f n = let rec erstelle i = if i>=n then [] else (f i)::(erstelle (i+1)) in erstelle 0 in let zug f n = konvertiere_polygon (liste (function i -> Strecke (f i,f (i+1))) n) in let haelfte oben extrema = let senkrecht1 = Array.init (streifen+1) (function i -> zug (function j -> punkt oben i j) extrema.(i)) in let senkrecht2 = Array.init (streifen+1) (function i -> zug (function j -> punkt oben i (j+extrema.(i))) (costreifen-extrema.(i))) in let waagerecht1 = Array.init streifen (function i -> konvertiere_polygon [Strecke (punkt oben i 0, punkt oben (i+1) 0)]) in let waagerecht2 = Array.init streifen (function i -> konvertiere_polygon [Strecke (punkt oben i extrema.(i), punkt oben (i+1) extrema.(i+1))]) in let waagerecht3 = Array.init streifen (function i -> konvertiere_polygon [Strecke (punkt oben i costreifen, punkt oben (i+1) costreifen)]) in [Flaechen (Array.init streifen (function i -> misch2 (farbe 3) (farbe (1+(i mod 2))) oeffnung), (liste (function i -> waagerecht1.(i), i, None) streifen) @ (liste (function i -> rueckwaerts (waagerecht2.(i)), i, None) streifen) @ (liste (function i -> senkrecht1.(i+1), i, Some (i+1)) (streifen-1)) @ [senkrecht1.(streifen), streifen-1, None; rueckwaerts senkrecht1.(0), 0, None]); Flaechen (Array.init streifen (function i -> farbe (1+(i mod 2))), (liste (function i -> waagerecht2.(i), i, None) streifen) @ (liste (function i -> rueckwaerts (waagerecht3.(i)), i, None) streifen) @ (liste (function i -> senkrecht2.(i+1), i, Some (i+1)) (streifen-1)) @ [senkrecht2.(streifen), streifen-1, None; rueckwaerts senkrecht2.(0), 0, None]); strich ((Array.to_list waagerecht1) @ (Array.to_list waagerecht2) @ (Array.to_list waagerecht3) @ [senkrecht1.(0);senkrecht2.(0); senkrecht1.(streifen);senkrecht2.(streifen)]) ] in let augen = match augen with | None -> [] | Some rechts -> (auge (0.13,0.0) (if rechts then 0.0 else 180.0) weiss Warten) @ (auge (-0.13,0.0) (if rechts then 0.0 else 180.0) weiss Warten) in verschiebe_dinge 0.0 (-0.2) ((haelfte false minunten)@(haelfte true maxoben)@augen) let muschelkomplett u = let schliessbilder = 5 in let minoeffnung = 0.1 in let rec schliessen i = if i>=schliessbilder then [] else (i,None,minoeffnung +. (1.0-.minoeffnung)*. (float_of_int i)/.(float_of_int (schliessbilder-1))) ::(schliessen (i+1)) in let bilder = (schliessbilder,Some true,minoeffnung) :: (schliessbilder+1,Some false,minoeffnung) :: (schliessen 0) in let hintergrund = monochrom durchsichtig 1 1 in kombiniere_bildchen (schliessbilder+2) 1 (List.map (function i,a,o -> i,0, male (muschel a o) hintergrund) bilder) type qzustand = Auf | Zu | Mitte let qualle zustand unten = let farbe = List.nth [ schwarz; von_rgb (rgbrgb 1.0 0.3 0.3); von_rgb (rgbrgb 0.9 0.8 0.5); von_rgb (rgbrgb 0.8 0.9 1.0); ] in let faden_dicke = 0.02 in let faden_spline_staerke = 0.2 in let glocke_spline_staerke = 0.6 in let faden_rand_dicke = faden_dicke +. 1.0/.32.0 in let faden staerke p1 p2 w = let p3 = in_richtung p2 0.07 w in let sp1,sp2,sp3 = richtung p1 staerke 270.0, richtung p2 staerke w, richtung p3 staerke w in let anfang,ende = konvertiere_polygon [spline sp1 sp2], konvertiere_polygon [spline sp2 sp3] in [Dicker_Strich (schwarz, faden_rand_dicke, [anfang;ende]); Dicker_Strich (farbe 2, faden_dicke, [anfang]); Dicker_Strich (farbe 1, faden_dicke, [ende])] in let faeden x y1 y2 w = let faden t = faden (faden_spline_staerke *. (y1-.y2)) (0.175*.t,y1) (x*.t,y2+.0.05*.t*.t) (270.0+.w*.t) in (faden (-1.0))@(faden (-1.0/.3.0))@(faden (1.0/.3.0))@(faden 1.0) in let glocke x y1 y2 w = let staerke = glocke_spline_staerke *. (y1-.y2) in let p1,p2,p3 = (-.x,y2), (x,y2), (0.0,y1) in let sp1,sp1',sp2,sp2',sp3 = richtung p1 staerke (-.w), richtung p1 staerke (270.0-.w), richtung p2 staerke w, richtung p2 staerke (90.0+.w), richtung p3 staerke 180.0 in konvertiere_polygon [ spline sp1 sp2; spline sp2' sp3; spline sp3 sp1'] in let glocke,faeden = match zustand with | Auf -> glocke 0.45 0.3 0.0 45.0, faeden 0.35 0.1 (-0.2) 45.0 | Zu -> glocke 0.30 0.4 (-0.15) (-15.0), faeden 0.25 0.15 (-0.35) 15.0 | Mitte -> glocke 0.35 0.3 (-0.1) 15.0, faeden 0.3 0.1 (-0.25) 30.0 in if unten then (umrande (farbe 3) [glocke]) @ faeden else umrande (misch2 durchsichtig (farbe 3) 0.5) [glocke] let qualle_komplett u = let hintergrund = monochrom durchsichtig 1 1 in kombiniere_bildchen 3 1 (List.map (fun (x,z) -> let q u = male (qualle z u) hintergrund in x,0,ueberlagerung (q true) (q false) None) [0,Mitte; 1,Auf; 2,Zu]) let fischraus gric name farbraum fisch = gib_xpm_aus gric name (fischkomplett (fuelle_parameter fisch true) (fun i -> List.nth farbraum (i-1))) let muschelraus gric name = gib_xpm_aus gric name (muschelkomplett ()) let qualleraus gric name = gib_xpm_aus gric name (qualle_komplett ()) ;; let gric,command,outname = Gen_common.parse_args () in match command with | "mfmuschel" -> muschelraus gric outname | "mfqualle" -> qualleraus gric outname | _ -> let farbraum,form = match command with | "mffisch1" -> farbraum_hai, hai | "mffisch2" -> farbraum_krake, krake | "mffisch3" -> farbraum6, zierfisch | "mffisch4" -> farbraum4, seepferdchen | "mffisch5" -> farbraum3, zierfisch | "mffisch6" -> farbraum_goldfisch, hai in fischraus gric outname farbraum form cuyo-2.1.0/datasrc/pics/vektor.ml0000644000175000017500000000734012422656733013653 00000000000000(* Copyright 2006 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Natmod exception Falsche_Laenge exception Falsche_Dimension let eps = 1e-10 module Vektor = functor(D : Nat) -> struct type t = float array let to_string v = let rec rest s i = if i=D.n then s^")" else rest (s^(if i>0 then ", " else "")^(string_of_float v.(i))) (i+1) in rest "(" 0 let koord t i = t.(i) let setz_koord v i x = Array.init D.n (function i' -> if i=i' then x else v.(i')) let einheit i = if i>=D.n then raise Falsche_Laenge else (let v = Array.make D.n 0.0 in v.(i) <- 1.0; v) let aus_funktion f = Array.init D.n (fun i -> f i) let aus_array a = if Array.length a != D.n then raise Falsche_Laenge else a let zu_array v = v let plus v1 v2 = Array.mapi (fun i -> fun x -> x+.v2.(i)) v1 let mal a = Array.map (fun x -> x*.a) let fold2 f a v1 v2 = let rec fold a i = if i=D.n then a else fold (f a v1.(i) v2.(i)) (i+1) in fold a 0 let compare = fold2 (fun c -> fun x1 -> fun x2 -> if c=0 then if abs_float (x1-.x2) < eps then 0 else if x1 fun x1 -> fun x2 -> p+.x1*.x2) 0.0 let abstand2 = fold2 (fun d -> fun x1 -> fun x2 -> let dx = x2-.x1 in d+.dx*.dx) 0.0 let laenge v = sqrt (produkt v v) end module Laenger = functor (D : Nat) -> functor (D' : Nat) -> struct let test = if D'.n < D.n then raise Falsche_Dimension let laenger v = Array.init D'.n (function i -> if i functor (D' : Nat) -> struct let test = if D'.n > D.n then raise Falsche_Dimension let kuerzer v = Array.init D'.n (function i -> v.(i)) end module Matrix = functor(D1:Nat) -> functor(D2:Nat) -> struct module V2 = Vektor(D2) type t = float array array let aus_funktion f = Array.init D1.n (fun i -> Array.init D2.n (fun j -> f i j)) let plus m1 m2 = aus_funktion (fun i -> fun j -> m1.(i).(j) +. m2.(i).(j)) let mal_skalar s m = aus_funktion (fun i -> fun j -> s *. m.(i).(j)) let mal_vektor m v = Array.init D1.n (fun i -> V2.produkt m.(i) v) end module QuadMatrix = functor(D:Nat) -> struct module V = Vektor(D) module M = Matrix(D)(D) exception Schlechte_Wahl let eps = 1e-10 let eigenvektor1 m = let eps2 = eps*.eps in let rec iteriere v = let v' = M.mal_vektor m v in let l = V.laenge v in if l=D.n (* Wir gehen alle Einheitsvektoren als Startvektoren durch, bis mal einer klappt. i ist der aktuelle Index. *) then V.einheit 0 (* Alle erfolglos probiert -> Nullmatrix -> beliebiger normierter Vektor *) else try iteriere (V.einheit i) with Schlechte_Wahl -> versuche (i+1) in versuche 0 end cuyo-2.1.0/datasrc/pics/colors.mgk0000644000175000017500000000055112422656734014006 00000000000000 cuyo-2.1.0/datasrc/pics/gen_bonimali.ml0000644000175000017500000004141612422656734014767 00000000000000(* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Helfer open Farbe open Graphik open Vektorgraphik open Male_mit_aa let regenbogenkreis radius farben = let n = List.length farben in let alpha i rechts = let alpha = asin (1.0-.2.0*.(float_of_int i)/.(float_of_int n)) in if rechts then alpha else pi-.alpha in let pos i rechts = let alpha = alpha i rechts in radius*.cos alpha, radius*.sin alpha in let grenzen = List.map (fun (p,i,j) -> konvertiere_polygon p,i,j) (List.concat (list_for 0 (n-1) (fun i -> if n=1 then [[Kreis ((0.0,0.0),radius)], 0, None] else if i=0 then [ [Bogen ((0.0,0.0),radius,true,alpha 1 true,alpha 1 false)], 0, None; [Strecke (pos 1 false, pos 1 true)], 0, Some 1] else if i=n-1 then [ [Bogen ((0.0,0.0),radius,true,alpha (n-1) false,alpha (n-1) true)], n-1, None] else [ [Bogen ((0.0,0.0),radius,true,alpha (i+1) true,alpha i true); Bogen ((0.0,0.0),radius,true,alpha i false, alpha (i+1) false); ], i, None; [Strecke (pos (i+1) false, pos (i+1) true)], i, Some (i+1)]))) in let rand = [konvertiere_polygon [Kreis ((0.0,0.0),radius)]] in [ Flaechen (Array.of_list farben, grenzen); Strich (schwarz,rand); ] let morph neu = let grau = lies_xpm "mbmGrau.xpm" in let grau = skaliere_dinge 0.7 (verschiebe_dinge (-0.5) (-0.5) (skaliere_dinge (1.0/.32.0) (pixel_zu_dingen (Some durchsichtig) grau))) in let x = 0.1 in verschiebe_dinge 0.5 0.5 ( (verschiebe_dinge (-.x) 0.0 grau) @ (verschiebe_dinge x 0.0 neu)) let graugras = "GrauGras", (von_rgb (rgbrgb 0.0 0.0 1.0), let gras_schema = lies_xpm "mbmGras.xpm" in let gras = kleb false (kleb true (ausschnitt 64 0 80 16 gras_schema) (ausschnitt 80 64 96 80 gras_schema)) (kleb true (ausschnitt 0 16 16 32 gras_schema) (ausschnitt 16 80 32 96 gras_schema)) in let gras = skaliere_dinge 0.7 (verschiebe_dinge (-0.5) (-0.5) (skaliere_dinge (1.0/.32.0) (pixel_zu_dingen (Some durchsichtig) gras))) in morph gras) let leben = "Leben", (0.5, 0.5, 0.5, let rumpfbreite = 0.15 in let rumpfhoehe = 0.35 in let fluegelbreite = 0.125 in let fluegellaengeinnen = 0.15 in let fluegellaengeaussen = 0.075 in let triebwerklaenge = 0.25 in let triebwerkversatz = 0.1 in let x1 = rumpfbreite/.2.0 in let x2 = x1+.fluegelbreite in let l = triebwerkversatz+.rumpfhoehe in let y1 = -.l/.2.0 in let y2 = y1+.triebwerkversatz in let y3 = y1+.fluegellaengeaussen in let y4 = y2+.fluegellaengeinnen in let y5 = y1+.triebwerklaenge in let y6 = l/.2.0-.rumpfbreite in [ Strecke ((-.x2,y1),(-.x2,y5)); Strecke ((x2,y1),(x2,y5)); Strecke ((-.x2,y1),(-.x1,y2)); Strecke ((x2,y1),(x1,y2)); Strecke ((-.x2,y3),(-.x1,y4)); Strecke ((x2,y3),(x1,y4)); Strecke ((-.x1,y2),(-.x1,y6)); Strecke ((x1,y2),(x1,y6)); Strecke ((-.x1,y2),(x1,y2)); Bogen ((x1,y6),rumpfbreite,true,pi*.2.0/.3.0,pi); Bogen ((-.x1,y6),rumpfbreite,true,0.0,pi/.3.0); ]) let ketten = "Ketten", (1.0, 0.0, 0.0, let radius = 0.05 in let abstand = 0.05 in let alpha = asin (abstand/.radius) in let laenge = 0.17 in let xv1 = laenge*.0.5-.radius in let xv2 = laenge*.0.5+.abstand+.radius in let xv3 = laenge*.1.5+.abstand-.radius in let xh1 = abstand/.2.0 in let xh2 = abstand/.2.0+.laenge in let vglied x1 x2 zu1 zu2 = [ Strecke ((x1,radius),(x2,radius)); Strecke ((x1,-.radius),(x2,-.radius)); ] @ (if zu1 then [Bogen ((x1,0.0),radius,true,pi*.0.5,pi*.1.5)] else [ Bogen ((x1,0.0),radius,true,pi*.0.5,pi-.alpha); Bogen ((x1,0.0),radius,true,pi+.alpha,pi*.1.5); ]) @ (if zu2 then [Bogen ((x2,0.0),radius,true,-.pi*.0.5,pi*.0.5)] else [ Bogen ((x2,0.0),radius,true,alpha,pi*.0.5); Bogen ((x2,0.0),radius,true,-.pi*.0.5,-.alpha); ]) in (vglied (-.xv3) (-.xv2) true false) @ (vglied (-.xv1) xv1 false false) @ (vglied xv2 xv3 false true) @ [ Strecke ((xh1,0.0),(xh2,0.0)); Strecke ((-.xh1,0.0),(-.xh2,0.0)); ]) let verbind_2 = let radius = 0.125 in let abstand = 0.15 in let y = radius+.abstand/.2.0 in [ Kreis ((0.0,y),radius); Kreis ((0.0,-.y),radius); Strecke ((0.0,abstand/.2.0),(0.0,-.abstand/.2.0)); ] let verbind_3 = let radius = 0.1 in let abstand = 0.1 in let xy = radius+.abstand/.2.0 in [ Kreis ((-.xy,-.xy),radius); Kreis ((xy,-.xy),radius); Strecke ((radius-.xy,-.xy),(xy-.radius,-.xy)); Kreis ((xy,xy),radius); Strecke ((xy,radius-.xy),(xy,xy-.radius)); ] let verbind_4 = let radius = 0.07 in let abstand = 0.08 in let x = 2.0*.radius+.abstand in let y = radius+.abstand/.2.0 in [ Kreis ((-.x,-.y),radius); Strecke ((radius-.x,-.y),(-.radius,-.y)); Kreis ((0.0,-.y),radius); Strecke ((0.0,abstand/.2.0),(0.0,-.abstand/.2.0)); Kreis ((0.0,y),radius); Strecke ((radius,y),(x-.radius,y)); Kreis ((x,y),radius); ] let verbind_5 = let radius = 0.055 in let abstand = 0.07 in let xy = 2.0*.radius+.abstand in [ Kreis ((0.0,0.0),radius); Kreis ((-.xy,0.0),radius); Strecke ((radius-.xy,0.0),(-.radius,0.0)); Kreis ((xy,0.0),radius); Strecke ((xy-.radius,0.0),(radius,0.0)); Kreis ((0.0,xy),radius); Strecke ((0.0,xy-.radius),(0.0,radius)); Kreis ((xy,-.xy),radius); Strecke ((xy,radius-.xy),(xy,-.radius)); ] let kurz = "Kurz", (0.5, 1.0, 0.0, verbind_2) let lang = "Lang", (1.0, 0.0, 0.5, verbind_4) let langsam = "Langsam", (0.0, 1.0, 0.5, let radius = 0.25 in [ Bogen ((0.0,0.0),radius,true,0.0,pi); Strecke ((-.radius,0.0),(radius,0.0)); Strecke ((0.0,-.radius),(-.radius,0.0)); Strecke ((0.0,-.radius),(-.radius/.3.0,0.0)); Strecke ((0.0,-.radius),(radius/.3.0,0.0)); Strecke ((0.0,-.radius),(radius,0.0)); ]) let verbind_radius = 0.2 let minus = "Minus", (0.5, 0.0, 0.5, [Strecke ((-.verbind_radius,0.0),(verbind_radius,0.0));]) let octi = "Octi", (0.0, 1.0, 0.0, [ Strecke ((-.verbind_radius,0.0),(verbind_radius,0.0)); Strecke ((-.verbind_radius,-.verbind_radius),(verbind_radius,verbind_radius)); Strecke ((0.0,-.verbind_radius),(0.0,verbind_radius)); Strecke ((-.verbind_radius,verbind_radius),(verbind_radius,-.verbind_radius)); ]) let punkte = "Punkte", (1.0, 0.5, 0.0, let hoehe = 0.18 in let breite = 0.08 in let abstand = 0.04 in let null x = let y = hoehe-.breite in [ Bogen ((x,y),breite,true,0.0,pi); Strecke ((x-.breite,y),(x-.breite,-.y)); Bogen ((x,-.y),breite,true,pi,2.0*.pi); Strecke ((x+.breite,-.y),(x+.breite,y)); ] in let zwei x = let y = hoehe-.breite in let alpha = asin (2.0*.breite/.(hoehe+.y)) in [ Bogen ((x,y),breite,true,-.alpha,pi); Strecke ((x-.breite,-.hoehe),(x+.breite*.cos alpha,y-.breite*.sin alpha)); Strecke ((x-.breite,-.hoehe),(x+.breite,-.hoehe)); ] in (zwei (-.2.0*.breite-.abstand)) @ (null 0.0) @ (null (2.0*.breite+.abstand))) let raketen = "Raketen", (0.0, 0.5, 1.0, let breite = 0.05 in let hoehe = 0.15 in let fluegelbreite = 0.05 in let abstand = 0.1 in let x = breite+.fluegelbreite+.abstand/.2.0 in let rakete = [ Bogen ((-.breite,-.hoehe-.fluegelbreite),fluegelbreite,true,0.5*.pi,pi); Bogen ((breite,-.hoehe-.fluegelbreite),fluegelbreite,true,0.0,0.5*.pi); Bogen ((fluegelbreite-.breite,-.hoehe-.fluegelbreite),2.0*.fluegelbreite, true,pi*.2.0/.3.0,pi); Bogen ((breite-.fluegelbreite,-.hoehe-.fluegelbreite),2.0*.fluegelbreite, true,0.0,pi/.3.0); Strecke ((-.breite,-.hoehe),(breite,-.hoehe)); Strecke ((-.breite,-.hoehe),(-.breite,hoehe)); Strecke ((breite,-.hoehe),(breite,hoehe)); Strecke ((-.breite,hoehe),(breite,hoehe)); Bogen ((breite,hoehe),2.0*.breite,true,pi*.2.0/.3.0,pi); Bogen ((-.breite,hoehe),2.0*.breite,true,0.0,pi/.3.0); ] in (verschiebe_polygon (-.x) 0.0 rakete) @ (verschiebe_polygon x 0.0 rakete)) let schnell = "Schnell", (1.0, 0.25, 0.0, (* Gewicht *) let breite_unten = 0.4 in let breite_oben = 0.3 in let hoehe = 0.3 in let griff_radius = 0.05 in let d = griff_radius *. sqrt 0.5 in let h = hoehe +. griff_radius +. d in let y1 = -0.5 *. h in let y2 = y1+.hoehe in let x1 = 2.0*.d in let p0,p5 = (-.x1,y2),(x1,y2) in let p1,p4 = (-.breite_oben/.2.0,y2), (breite_oben/.2.0,y2) in let p2,p3 = (-.breite_unten/.2.0,y1), (breite_unten/.2.0,y1) in [ Strecke (p0,p1); Strecke (p1,p2); Strecke (p2,p3); Strecke (p3,p4); Strecke (p4,p5); Bogen ((x1,y2+.griff_radius),griff_radius,false,pi*.1.5,pi*.0.75); Strecke ((x1-.d,y2+.griff_radius+.d),(d-.x1,y2+.griff_radius+.d)); Bogen ((-.x1,y2+.griff_radius),griff_radius,false,pi*.2.25,pi*.1.5); ]) let schnell = "Schnell", (1.0, 0.25, 0.0, (* Streifen *) let radius = 0.18 in let abstand = 0.1 in let laenge = 0.15 in let abstand_seite = abstand in let abstand_aussen = sqrt ((radius+.abstand)*.(radius+.abstand) -. abstand_seite*.abstand_seite) in let y = radius-.(laenge+.2.0*.radius+.abstand)/.2.0 in [ Kreis ((0.0,y),radius); Strecke ((-.abstand_seite,y+.abstand_aussen), (-.abstand_seite,y+.abstand_aussen+.laenge)); Strecke ((0.0,y+.radius+.abstand),(0.0,y+.radius+.abstand+.laenge)); Strecke ((abstand_seite,y+.abstand_aussen), (abstand_seite,y+.abstand_aussen+.laenge)); ]) let schnell = "Schnell", (1.0, 0.25, 0.0, (* Nachhall *) let radius = 0.15 in let anzahl = 3 in let abstand = 0.1 in let winkel = pi/.2.0 in let y = radius-.(2.0*.radius +. float_of_int anzahl*.abstand)/.2.0 in Kreis ((0.0,y),radius) :: list_for 1 anzahl (fun i -> Bogen ((0.0,y+.float_of_int i*.abstand),radius,true, (pi-.winkel)/.2.0,(pi+.winkel)/.2.0))) let ununterscheidbar = "Ununterscheidbar", (0.0, 0.0, 0.0, []) let verschwind = "Verschwind", (1.0, 1.0, 0.0, let anzahl = 7 in let anzf = float_of_int anzahl in list_for 1 anzahl (fun i -> let i_f = float_of_int i in Bogen ((0.0,0.0),0.25,true, 2.0*.pi*.i_f/.anzf, 2.0*.pi*.(i_f+.0.5)/.anzf))) let strichdinge = List.map (fun (name,(r,g,b,icon)) -> name, (von_rgb (rgbrgb r g b), let icon = [konvertiere_polygon (verschiebe_polygon 0.5 0.5 icon)] in [ Dicker_Strich (weiss,1.5/.32.0,icon); Strich (schwarz,icon)])) [ raketen; langsam; octi; kurz; verschwind; punkte; schnell; ketten; lang; minus; leben; ununterscheidbar; ] let graujoker = let farbe = von_rgb (rgbrgb 0.5 0.0 1.0) in let farben = farbe::List.map fst (List.map snd (graugras::strichdinge)) in "GrauJoker",(farbe, morph (regenbogenkreis 0.2 farben)) let dinge = graujoker::graugras::strichdinge let radius = 0.4 let octirad = 0.07 let coradius = sqrt 0.5 -. radius let octi_p = coradius/.3.0 let schema farbe icon = let octi x y = [Kreis ((x,y),octirad)] in let rand = konvertiere_polygon ([ Bogen ((0.5,3.5),radius,true,0.75*.pi,1.75*.pi); Bogen ((1.0,3.0),coradius,false,0.75*.pi,0.25*.pi); Bogen ((1.5,3.5),radius,true,1.25*.pi,2.25*.pi); Bogen ((2.0,4.0),coradius,false,1.25*.pi,0.75*.pi); Bogen ((1.5,4.5),radius,true,1.75*.pi,0.75*.pi); Bogen ((1.0,5.0),coradius,false,1.75*.pi,1.25*.pi); Bogen ((0.5,4.5),radius,true,0.25*.pi,1.25*.pi); Bogen ((0.0,4.0),coradius,false,0.25*.pi,-.0.25*.pi); Kreis ((1.0,4.0),coradius); Kreis ((0.5,0.5),radius); Kreis ((0.5,1.5),radius); Kreis ((1.5,0.5),radius); Kreis ((1.5,1.5),radius); Kreis ((1.5,2.5),radius); ] @ (octi octi_p (3.0-.octi_p)) @ (octi octi_p (2.0+.octi_p)) @ (octi (1.0-.octi_p) (3.0-.octi_p)) @ (octi (1.0-.octi_p) (2.0+.octi_p))) in let icon_ = verschiebe_dinge 1.0 2.0 icon in let icon = icon @ (verschiebe_dinge 1.0 0.0 icon) in let icon = icon @ (verschiebe_dinge 0.0 1.0 icon) in let icon = icon @ (verschiebe_dinge 0.0 3.0 icon) in let loesch x y i j = let alpha = pi*.(float_of_int (2*i+1))/.16.0 in let beta = pi*.(float_of_int (2*j-1))/.16.0 in let radius = 0.5 in [ Bogen ((x,y),radius,true,alpha,beta); Strecke ((x+.radius*.cos beta, y+.radius*.sin beta), (x-.radius*.cos beta, y-.radius*.sin beta)); Bogen ((x,y),radius,false, beta+.pi, alpha+.pi); Strecke ((x-.radius*.cos alpha, y-.radius*.sin alpha), (x+.radius*.cos alpha, y+.radius*.sin alpha)); ] in let kreuz x y i = (loesch x y i (i+4)) @ (loesch x y (i+4) (i+8)) in let loesch = konvertiere_polygon (List.concat [ kreuz 1.5 2.5 2; loesch 0.5 1.5 4 12; loesch 1.5 1.5 0 8; kreuz 0.5 0.5 3; kreuz 1.5 0.5 1; ]) in [ flaeche farbe [rand]; Strich (weiss,[rand]); ] @ icon_ @ icon @ [ flaeche durchsichtig [loesch]; ] let uhr_breite = 4 let uhr_hoehe = 5 let uhr_rad = 0.25 let uhr (farbe,icon) = let uhr_for f = List.concat (list_for 0 (uhr_hoehe-1) (fun i -> list_for 0 (uhr_breite-1) (fun j -> f i j ((uhr_hoehe-1-i)*uhr_breite+j)))) in let rand = [konvertiere_polygon (uhr_for (fun i -> fun j -> fun k -> Kreis ((0.5+.float_of_int j, 0.5+.float_of_int i),uhr_rad)))] in let icon = verschiebe_dinge 0.5 0.5 (skaliere_dinge (uhr_rad/.radius) (verschiebe_dinge (-.0.5) (-.0.5) icon)) in let icons = List.concat (uhr_for (fun i -> fun j -> fun k -> verschiebe_dinge (float_of_int j) (float_of_int i) icon)) in let loesch = konvertiere_polygon (List.concat (uhr_for (fun i -> fun j -> fun k -> let winkel = pi *. (0.5 +. 2.0*. (float_of_int k)/.(float_of_int (uhr_breite*uhr_hoehe))) in let x = float_of_int j +. 0.5 in let y = float_of_int i +. 0.5 in [ Bogen ((x,y),0.5,true,0.5*.pi,winkel); Strecke ((x+.0.5*.cos winkel,y+.0.5*.sin winkel),(x,y)); Strecke ((x,y),(x,y+.0.5))]))) in [ flaeche farbe rand; Strich (weiss,rand); ] @ icons @ [ flaeche durchsichtig [loesch]; Strich (durchsichtig,[loesch]); ] let kreisnorm r x y = let r2 = x*.x+.y*.y in if r2>=r*.r then None else let z = sqrt (r*.r-.r2) in Some (x/.r, y/.r, z/.r) let normale_schema = let verbgrenz = coradius *. sqrt 0.5 in let verbnorm x y = let x = x-.0.5 in let x' = sqrt (coradius*.coradius -. y*.y) in let r = 0.5-.x' in if abs_float x>=r then None else let z = sqrt (r*.r-.x*.x) in let y = y*.r/.x' in let betrag = sqrt (x*.x+.y*.y+.z*.z) in Some (x/.betrag, -.y/.betrag, z/.betrag) in fun (x,y) -> if x<=1.0 && y>=2.0 && y<=3.0 then kreisnorm octirad (x -. if x<=0.5 then octi_p else (1.0-.octi_p)) (y -. if y<=2.5 then (2.0+.octi_p) else (3.0-.octi_p)) else if y>=4.0-.verbgrenz && y<=4.0+.verbgrenz then verbnorm (mod_float x 1.0) (y-.4.0) else if x>=1.0-.verbgrenz && x<=1.0+.verbgrenz && y>=3.0 then match verbnorm (mod_float y 1.0) (x-.1.0) with | None -> None | Some (nx,ny,nz) -> Some (ny,nx,nz) else kreisnorm radius (mod_float x 1.0 -. 0.5) (mod_float y 1.0 -. 0.5) let normale_uhr (x,y) = kreisnorm uhr_rad (mod_float x 1.0 -. 0.5) (mod_float y 1.0 -. 0.5) let glanz normale drunter = let lx,ly,lz = -.2.0, 1.0, 0.5 in let glanzmin = 0.5 in let glanzstaerke = 0.7 in let glanzmax = sqrt (lx*.lx+.ly*.ly+.lz*.lz) in let b,h,farbe = drunter in b,h,(fun p -> let alt = farbe p in match normale p with | None -> alt | Some (nx,ny,nz) -> let sx,sy,sz = 2.0*.nz*.nx, 2.0*.nz*.ny, 2.0*.nz*.nz -. 1.0 in let glanz = sx*.lx+.sy*.ly+.sz*.lz in if glanz<=glanzmin || alt=durchsichtig then alt else misch2 alt weiss (glanzstaerke*.(glanz-.glanzmin)/.(glanzmax-.glanzmin))) let mach dinge normale b h = glanz normale (male (erzeuge_vektorbild dinge) (1.0/.32.0) (monochrom durchsichtig b h)) ;; let gric,command,outname = Gen_common.parse_args () in let teil = coprefix command 3 in let b,h,dinge,normale = if suffix teil 3 = "Uhr" then let daten = List.assoc (cosuffix teil 3) strichdinge in uhr_breite,uhr_hoehe,uhr daten,normale_uhr else let farbe,icon = List.assoc teil dinge in 2,5, schema farbe icon, normale_schema in gib_xpm_aus (rgb_grau 0.0) outname (berechne gric (mach dinge normale b h)) cuyo-2.1.0/datasrc/pics/iwaAlles.xcf0000644000175000017500000075440112422656734014262 00000000000000gimp xcf file`0 0 BBTK gimp-commentCreated with The GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 16.000000) (yspacing 16.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  29>KWlCB5nA`"W (Ungültige UTF-8-Zeichenkette)     `` H&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%&%&%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%%%%&%%Ě&%%Ě&%%Ě&%%Ě&%%Ě&%%Ě&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%%Ĭ&%&%&%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%%%%&%%Ě&%%Ě&&&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%&%&%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%%%%&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%%ӻ&%&%&%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%%%%&%%Ӫ&%%Ӫ&&&%%վ&%%վ&%%վ&%%վ&%%վ&%%վ&%&%&%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%%%%&%%խ&%%խ&%%խ&%%խ&%%խ&%%խ&%%վ&%%վ&%%վ&%%վ&%%վ&%%վ&%&%&%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%%%%&%%խ&%%խ&&================================================&%%Ĭ&%%Ĭ&%%Ĭ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ě&%%Ě&%%Ě&%%Ĭ&%%Ĭ&%%Ĭ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ě&&%%ӻ&%%ӻ&%%ӻ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ӫ&%%Ӫ&%%Ӫ&%%ӻ&%%ӻ&%%ӻ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ӫ&&%%վ&%%վ&%%վ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%խ&%%խ&%%խ&%%վ&%%վ&%%վ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%խ&CB&Ĭ&Ĭ&%%Ĭ&%%Ĭ&%&%&%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%<%Ĭ%%%%&%%Ě&%%Ě&%%Ě&%%Ě&%%Ě&%%Ě&%%Ĭ&%%&%%Ĭ&%%&%%Ĭ&%%&%&%B&ӻ&ӻ&%%ӻ&%%ӻ&%&%&%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%<%ӻ%%%%&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%Ӫ&%%ӻ&%%&%%ӻ&%%&%%ӻ&%%&%&%B&վ&վ&%%վ&%%վ&%&%&%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%<%վ%%%%&%%խ&%%խ&%%խ&%%խ&%%խ&%%խ&%%վ&%%&%%վ&%%&%%վ&%%&%&%========================"&Ĭ&%%Ĭ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ě&%%Ě&%%Ě%%Ĭ%Ĭ%Ĭ%&%"&ӻ&%%ӻ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%Ӫ&%%Ӫ&%%Ӫ%%ӻ%ӻ%ӻ%&%"&վ&%%վ&%&&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%&%%խ&%%խ&%%խ%%վ%վ%վ%&%C0@`+Schatten f (Ungültige UTF-8-Zeichenkette)     ^`v2`#,w/wkkkkkkkkk k k kkk k kkk k kkkkkkkkkkkk=k=k=k=k=k=k=k=k=k=k=k=k=k=k=k=k=kkkkkkkkkkkkkkkkkkkkkkkk k k kkk k kkk k kkkkkkkkkkkk=k=k=k=k=kk3kk2k k1k k0k k/k k.k k-kk,kk+k=kk*k kk+k8kkkkkkk{{{{{{{{{ { { {{{ { {{{ { {{{{{{{{{{{{={={={={={={={={={={={={={={={={={{{{{{{{{{{{{{{{{{{{{{{{ { { {{{ { {{{ { {{{{{{{{{{{{={={={={={{3{{2{ {1{ {0{ {/{ {.{ {-{{,{{+{={{*{ {{+{8{{{{{{{       =================       =====32 1 0 / . -,+=0* +8    ==================    =====32 1 0 / . -,+=* +-kkkkk kkk kkk kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk kkk kkk kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk{{{{{ {{{ {{{ {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ {{{ {{{ {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{      XkkkkkkkkIkkkkkk=k=k=k=k=k=k=k=k=k=k=k=k=k=k=k=k=k7kkkkkkk{{{{{{{{I{{{{{{={={={={={={={={={={={={={={={={={7{{{{{{{I=================7======================7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{C0@`Teppich     r3`3`3Rb7.,      ((BBB+7         .    ,                                                                                                                                                                                                                                                                                                                                                                                                                                                  (     (           A    AA+ 7::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0::`0``0``0``0``0``0``0``0``0``0``0``0``0``0`::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0::0`0:.:0`0::0`0:`,`:0`0::`0`:`00` `:`0`:`0`::0`0:`00` `:`::``:`:`0`:0`0::0`0:``::` `:`:`0:``:`::`:`:0`0::0`0:``: `:`:`00``:`:`:``:0`0::`0`:``:`:``:`:`:`::`:`0`::0`0:``:`:``:`:`:`::``:0`0::0`0:``:`:`:`:`:`:0`0::0`0:``:``:``:``:`::``:``:`:0`0::``0:``:``:`:``:`::`:``:`0`:`0`::0`:``::``:`:`:`:``0`:0`0::0`0:`:``:`0:`:`:`:`:0`0::0`0:`:: `0`:`:``:`:``:0`0::`0`:``:`:``::`::``:`0`::0`0:``:`:`00``::`:0`0::0`0:``:`:0`00`00`00`0:`00``:`:0`0::0`0:``:`:`0``0``0``0`:``:``:0`0::`0`:`00``:`:0`00`00`00`0:``0`:``:`0`::0`0:`00``:`:0`0::0`0:``0`:``:0`0::0`:``:``:`:0`0::0`0:``:``:`:0`0::0`0:``:``::`:0`0::0`0:``:`:`:0`0::`0`:``:`::`:`0`::`0`:``:``::`:`0`::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:0`0::`0`:``::``0`:`0`::`0`:``:`0`:`0`::0`0:`::``:00`:0`0::0`0:``:`0`:0`0::0`0:`:``:``:0`0::0`0:``::`:`:0`0::0`0:``::`:``:0`00`00`00`0:``:`:``:0`0::`0`:``:`:`0``0``0``0`:``:`:``:`0`::0`0:``:``::`:0`00`00`00`0:``:`:0`0::0`0:``:``:`: `:`:0`0::0`0:``:``:`:`:0`0::`0`:``::``:`:``:`:`0`::0`0:``:``:`:`:`::`:`:0`0::0`0:``00``:`:`:`::``:`:0`0::0`0:``00``:`:`:`:`:`:`:0`0::`0`:``:`:`:`:`:`:`0`::0`0:``:``:``:``:``:`:0`0::0`0:``:`:`:`:``:`:0`0::0`0:``:`:``:`:``:`:`:0`0::`0`:``::``:`:``:`::`:``:`:`0`::`:``:``:`:``:`:0`:``:0`0::0`:`00``:`:``:0`:`0`:00`:0`0::`0`:`0``:`0`0`:`0`::0`0:`::`(`:0`0::0`0::00`:(:0`0::0:0`0``0`00`00`00`00`00`00`00`00`00`00`0::`:`0`00:`0``0``0``0``0``0``0``0``0``0``0`::0:0`0::@:00`00`00`00`00`00`00`00`00`00`00`0::`:@@+:77777777777777766666666677777777777777766666 5 5 5 . B BuBBuBݯBB                                                                                                                                                                                                                                                                 A    A   tA  A   tA   A  A ::0`00`00`00`00`00`0::`0``0``0``0``0``0`::0`00`00`00`00`00`0::0`0::0`0::0`0:` `:0`0::`0`:`00``0`:`0`::0`0:`00``0`:0`0::0`0:``::``:`:0`0::0`0:``:`:``:0`0::`0`:``:`:`0`::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:``:0`0::`0`:``:``0`:`0`::0`0:``::``0`:0`0::0`0:``:``:`:0`0::0`0:``::`:``:0`0::`0`:``:`::``:`0`::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:``:0`0::`0`:`00``:``:`0`::0`0:`00:``:``:0`0::0`0:``:``:`:0`0::0`0:``:``:`:0`0::`0`:``:``::`:`0`::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:0`0::`0`:``::``0`:`0`::0`0:`::``0`:0`0::0`0:`:``:`:0`0::0`0:``::`:``:0`0::`0`:``:`:``:`0`::0`0:``:``::`:0`0::0`0:``:``:`:0`0::0`0:``:``:`:0`0::`0`:``::``:`:`0`::0`0:``:``:`:0`0::0`0:``00``:`:0`0::0`0:``00``:`:0`0::`0`:``:`:`0`::0`0:``:``:0`0::0`0:``:`:0`0::0`0:``:`:`:0`0::`0`:``::``:`:`0`::0`0:``:``:``:0`0::0`0:`00``:00`:0`:::`0`:`00``0`:`0:@:0`0:` `:0:@:0`0::r@:0`00`00`00`00`00:@::`0``0``0``0``0`:r@::0`00`00`00`00`0*:@0::@:: 7.,    ,.7$   7         .    ,                                                                                                                     ,    .        7 $                                                                                                                                                                                                                                                  7::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0::`0``0``0``0``0``0``0``0``0``0``0``0``0``0`::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0::0`0:.:0`0::0`0:`,`:0`0::`0`:`00` `:`0`:`0`::0`0:`00` `:`::``:`:`0`:0`0::0`0:``::` `:`:`0:``:`::`:`:0`0::0`0:``: `:`:`00``:`:`:``:0`0::`0`:``:`:``:`:`:`::`:`0`::0`0:``:`:``:`:`:`::``:0`0::0`0:``:`:`:`:``:`:0`0::0`0:``:`:``:`:``:`:`:0`0::`0`:``::``:`:``:`::`:``:`:`0`::0`0:``:``:`:``:`:0`:``:0`0::0`0:`00``:`:``:0`:`0`:00`:0`0::`0`:`00``:`0`0`:`0`::0`0:`,`:0`0::0`0:.:0`0::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0::`0``0``0``0``0``0``0``0``0``0``0``0``0``0`::0`00`00`00`00`00`00`00`00`00`00`00`00`00`0:7:$:``:`:`:`::``:``:`::``:``:`:`:``:`::`:``:`:`:`:`:``:`:`0:`:`:`:0`00`00`00`00`00`0:`0`:`:``::`0``0``0``0``0``0`::``:``:::0`00`00`00`00`00`0::`:`00``:::0`0::0`0::`:00:`00``:0`0:` `:0`0:`:`:0``00:0`0:``:`0`:`00``0`:`0`:`:`:0`00:`:00`0:``0`:0`0:`00``0`:0`0:`:`:00:0::0:``0`:0`0:``::``:`:0`0:`:`:00:00:``:``:0`0:``:`:``:0`0:`::`:00::0::0:``:`:`0`:``:`:`:`0`::`:0:0``:`0:0:``:`:0`0:``:`:0`0::``:00::`:`::0:``::0`0:``:`:0`0:`:0:0``:`0::0:``::0`0:``:`:`:0`0:`:00`: :0:``::`0`:``::``:`:`0`:`0`:00::00:0:0:``:`:0`0:``:``:``:0`0:`:00`:00:0:``:`:0`0:`00``:00`:0`0:`:``:00:0:00:``::`:`0`:`00``0`:`0`:`:``:0`00:0:00`0:``:`:0`0:` `:0`0::`:0``0::00:0``0:``::0`0::0`0::`:00:``::0`00`00`00`00`00`0:`:`:`:`0``0``0``0``0``0`:`:`:0`00`00`00`00`00`0:`:`:``:`:`:`:`::``:`:`:`::```::`:`:`:`:`:`:`:`:`::``:``:``:``:777777777777777777777777$                                                                                                ::0`00`00`00`00`00`0::`0``0``0``0``0``0`::0`00`00`00`00`00`0::0`0::0`0::0`0:` `:0`0::`0`:`00``0`:`0`::0`0:`00``0`:0`0::0`0:``::``:`:0`0::0`0:``:`:``:0`0::`0`:``:`:`0`::0`0:``:`:0`0::0`0:``:`:0`0::0`0:``:`:`:0`0::`0`:``::``:`:`0`::0`0:``:``:``:0`0::0`0:`00``:00`:0`0::`0`:`00``0`:`0`::0`0:` `:0`0::0`0::0`0::0`00`00`00`00`00`0::`0``0``0``0``0``0`::0`00`00`00`00`00`0::0@`Parkett     'y``!o׳; Ӈ; Ӈ;qq Ӈ;qq Ӈ;qq ;;;qq ;qq;;qq;qq;;qq; qq;qq; qq;qq qq;qq;qq qq;qq q;qq;qq qq;qqq;qq;qqqq;qq ;qq;qq                 ӇӇӇӇ; Ӈ; Ӈ Ӈ Ӈq Ӈq ӇqqӇqqӇ; Ӈ; Ӈ; Ӈ; Ӈ;qq Ӈ;qq Ӈ;qq ;;;qq ;qq;;qq;qq;;qq; qq;qq; qq;qq qq;qq;qq qq;qq q;qq;qq qq;qqq;qq;qqqq;qq ;qq;qq                 ӇӇӇӇ;;y8yy ttty8yy ttty8yff ttty8yff ttty8yff tt8yy8yy8yff tt8yff88ttyff8yff88ttyff8yyt ttyff8yff8yyt ttyff8yfft ttff8yff8yfft ttyff8yfft ttf8yff8yfft ttyff8yffttf8yff8yffttyff8yfftt t8yff8yfftt t򶦦ttt ttttt t򶦦ttt ttttt ttttttttt󶦦tttt ttttt ttttt tttttttttt tttttttttttttt tttttt tttttt궦ttttt tttttt궦ttttt tttttttttttttttttttt ttttttttttt ttttttttttt tttttt ttttttttt ttttt tttttttttttttttttttttttttttt8t tttt8t tttty tttty ttttyf ttttyf ttttyffttttyfftttt8 ttt8 ttty8yy ttty8yy ttty8yff ttty8yff ttty8yff tt8yy8yy8yff tt8yff88ttyff8yff88ttyff8yyt ttyff8yff8yyt ttyff8yfft ttff8yff8yfft ttyff8yfft ttf8yff8yfft ttyff8yffttf8yff8yffttyff8yfftt t8yff8yfftt t򶦦ttt ttttt t򶦦ttt ttttt ttttttttt󶦦tttt ttttt ttttt tttttttttt tttttttttttttt tttttt tttttt궦ttttt tttttt궦ttttt tttttttttttttttttttt ttttttttttt ttttttttttt tttttt ttttttttt ttttt tttttttttttttttttttttttttttt8tt8ttK#KKz zGzzGzGK#KKz zGzzGzGK#K??f fGzffGzGK#K??f fGzffGzGK#K??f fGzffGzz#KK#KK#K??f fGzffGzz#K??##GzffGK??#K??##GzffGK??#KKGz zGzffGK??#K??#KKGz zGzffGK??#K??Gzf fGzffGz??#K??#K??Gzf fGzffGK??#K??Gzf fGzffGzf?#K??#K??Gzf fGzffGK??#K??GGzf?#K??#K??GGK??#K??GzzGz zGzff#K??#K??GzzGz zGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGzzGz zGzffGzffGzffGzzGz zGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffG GzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGGzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffG GzffGzffGzffGGzffGzffGzffGG zGzffGzffGzffGzzGz zGzffGzffGzffGzzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGzffGzffGzffGzffGzG#G GzffGzffGzG#G GzffGzffGzGK zGzffGzffGzGK zGzffGzffGzGK?f fGzffGzffGzGK?f fGzffGzffGzGK??ffGzffGzffGzGK??ffGzffGzffGzG# GzffGzG# GzffGzGK#KKz zGzffGzGK#KKz zGzffGzGK#K??f fGzffGzGK#K??f fGzffGzGK#K??f fGzffGzz#KK#KK#K??f fGzffGzz#K??##GzffGK??#K??##GzffGK??#KKGz zGzffGK??#K??#KKGz zGzffGK??#K??Gzf fGzffGz??#K??#K??Gzf fGzffGK??#K??Gzf fGzffGzf?#K??#K??Gzf fGzffGK??#K??GGzf?#K??#K??GGK??#K??GzzGz zGzff#K??#K??GzzGz zGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGzzGz zGzffGzffGzffGzzGz zGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffG GzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGGzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffG GzffGzffGzffGGzffGzffGzffGG zGzffGzffGzffGzzGz zGzffGzffGzffGzzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGzffGzffGzffGzffGzG#GG#GG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;C; Ӈ;qq Ӈ;qq ;qq;;qq; qq;qq qq;qq qq;qqqq;qq qq; qq; qq;qq; qq;qq;; ;qq;qq;;qqqq;;qqӇqqӇ; Ӈ ӇqqӇqqӇ; Ӈ; Ӈ;qq Ӈ;qq ;qq;;qq; qq;qq qq;qq qq;qqqq;qq qq; qq; qq;qq; qq;qq;; ;qq;qq;;qqqq;;qqӇqqӇ;CCy8yy ttty8yff ttty8yff tt8yff88ttyff8yyt ttyff8yfft ttyff8yfft ttyff8yffttyff8yfftt tyff8ytt tyff8ytt tyff8ytttyff8yttt tyff8yttttyff8ytttt8yttt ty8ytttttyff8ytttttyff8yttttt8tttttyttttttyffttttttyfftttttt8tttttyttttt8yffttttttyffttttt8 tttty ttttyffttttyfftttt8 ttty8yy ttty8yff ttty8yff tt8yff88ttyff8yyt ttyff8yfft ttyff8yfft ttyff8yffttyff8yfftt tyff8ytt tyff8ytt tyff8ytttyff8yttt tyff8yttttyff8ytttt8yttt ty8ytttttyff8ytttttyff8yttttt8tttttyttttttyffttttttyfftttttt8tttttyttttt8yffttttttyffttttt8tCCK#KKz zGzzGzGK#K??f fGzffGzGK#K??f fGzffGzz#K??##GzffGK??#KKGz zGzffGK??#K??Gzf fGzffGK??#K??Gzf fGzffGK??#K??GGK??#K??GzzGz zGK??#KffGzffGzf fGK??#KffGzffGzf fGK??#KffGzffGGK??#KffGzffGzzGz zGK??#KffGzffGzffGzffGK??#KffGzffGzffGzffG#KffGzffGzffG GK#KffGzffGzffGzzGzzGK??#KffGzffGzffGzffGzffGK??#KffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzGzzGK??fGzffGzffGzffGzffGzffGK??fGzffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzG#K??ffGzffGzffGzffGzGGK??ffGzffGzffGzffGzG# GzffGzffGzGK zGzffGzffGzGK??ffGzffGzffGzGK??ffGzffGzffGzG# GzffGzGK#KKz zGzffGzGK#K??f fGzffGzGK#K??f fGzffGzz#K??##GzffGK??#KKGz zGzffGK??#K??Gzf fGzffGK??#K??Gzf fGzffGK??#K??GGK??#K??GzzGz zGK??#KffGzffGzf fGK??#KffGzffGzf fGK??#KffGzffGGK??#KffGzffGzzGz zGK??#KffGzffGzffGzffGK??#KffGzffGzffGzffG#KffGzffGzffG GK#KffGzffGzffGzzGzzGK??#KffGzffGzffGzffGzffGK??#KffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzGzzGK??fGzffGzffGzffGzffGzffGK??fGzffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzG#K??ffGzffGzffGzffGzGGK??ffGzffGzffGzffGzG#GCCC; ;;;; ;;;;q q;qq;;;q q;qq;;;q q;qq;;;;q q;qq;;qq;;qq;qq;qq;;qq;qq;; ;qq;qq;qq;; ;qq;qq;qq;q q;qq;qq;qq;qq;q q;qq;qq;qq;q q;qq;qq;qq;qq;q q;qq;qq;qqq;qq;qqqq;qq ;qq;qq                 ӇӇӇӇ;;        Ӈ            Ӈ  y8y y8yy8y8y8y y8yy8y8y8yf f8yff8y8y8yf f8yff8y8y8yf f8yff8yy8yy8yy8yf f8yff8yy8yff88yff8yff8yff88yff8yff8yy8y y8yff8yff8yff8yy8y y8yff8yff8yff8yf f8yff8yff8yff8yff8yf f8yff8yff8yff8yf f8yff8yff8yff8yff8yf f8yff8yff8yffttf8yff8yffttyff8yfftt t8yff8yfftt t򶦦ttt ttttt t򶦦ttt ttttt ttttttttt󶦦tttt ttttt ttttt tttttttttt tttttttttttttt tttttt tttttt궦ttttt tttttt궦ttttt tttttttttttttttttttt ttttttttttt ttttttttttt tttttt ttttttttt ttttt tttttttttttttttttttttttttttt8tt8ttt tttttt󶦦ttt ttttt tttt ttttt tttt ttttt ttttttttt󶦦ttt ttttt tttt ttttt tttt ttttt tttttttttttt ttttt tttt ttttt tttt ttttt tttttttttt󶦦tttt tttttt tttttttttt tttttttttt tttt ttttt tttttttttttt궦ttttttttttt궦tttttttttttttttt tttt tttttttttttttttttttttttttttttttttt ttttt ttttt ttttt tttttttttt tttttttttt ttttttttttttt ttttt ttttK#K K#KK#K#K#K K#KK#K#K#K? ?#K??#K#K#K? ?#K??#K#K#K? ?#K??#KK#KK#KK#K? ?#K??#KK#K??##K??#K??#K??##K??#K??#KK#K K#K??#K??#K??#KK#K K#K??#K??#K??#K? ?#K??#K??#K??#K??#K? ?#K??#K??#K??#K? ?#K??#K??#K??#K??#K? ?#K??#K??#K??GGzf?#K??#K??GGK??#K??GzzGz zGzff#K??#K??GzzGz zGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGzf fGzffGzffGzffGzffGzf fGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGzzGz zGzffGzffGzffGzzGz zGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffG GzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGGzffGzffGzffGGzffGzffGzffGGzGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffGzffGzffGzffGzffGzffGzf fGzffGzffGzffGzffGzffG GzffGzffGzffGGzffGzffGzffGG zGzffGzffGzffGzzGz zGzffGzffGzffGzzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGGzffGzffGzffGzffGzGzffGzffGzffGzffGzG#GG#GGfGzf fGzffGzffGzffGzffGGzffGzffGzfzzGz zGzzGzzGfGzzGz zGzffGzffGzfzffGzf fGzffGzffGfGzffGzf fGzffGzffGzfzffGzf fGzffGzffGfGzffGzf fGzffGzffGzfzffGGzffGfGzffGGzffGzfzffGzzGz zGzffGfGzffGzzGz zGzffGzfzffGzffGzf fGzffGfGzffGzffGzf fGzffGzfzffGzffGzf fGzffGfGzffGzffGzf fGzffGzfzffGzffGGfGzffGzffGGzfzffGzffGzzGz zGfGzffGzffGzzGz zGzfzffGzffGzffGzf fGfGzffGzffGzffGzf fGzfzffGzffGzffGzf fGfGzffGzffGzffGzf fGzfzffGzffGzffGGGzffGzffGzffGGzffGzffGzffGzzGz zGzGzffGzffGzffGzzGz zzffGzffGzffGzffGzffGfGzffGzffGzffGzffGzf fzffGzffGzffGzffGzffGfGzffGzffGzffGzffGzf fGzffGzffGzffG GGzffGzffGzffG GzGzffGzffGzffGzzGzzGzzGzffGzffGzffGzzGzzzffGzffGzffGzffGzffGzffGffGzffGzffGzffGzffGzffzffGzffGzffGzffGzffGzffGffGzffGzffGzffGzffGzffGzffGzffGzffGG GzffGzffGzffG GzGzffGzffGzffGzzGzzGzzGzffGzffGzffGzzGzzzffGzffGzffGzffGzffGzffGffGzffGzffGzffGzffGzffzffGzffGzffGzffGzffGzffGffGzffGzffGzffGzffGzff GzffGzffGzffGG GzffGzffGzffGG zGzffGzffGzffGzzGz zGzffGzffGzffGzzGzzzffGzffGzffGzffGzffGf fGzffGzffGzffGzffGzfzffGzffGzffGzffGzffGf fGzffGzffGzffGzffGzfGGGzffGzffGzffGGzGz zGzffGzffGzffGzzfGzf fGzffGzffGzffGzf;;;;;;;;;;;;;;;;;;;;;;;;C; ;;;;q q;qq;;;q q;qq;;qq;;qq;qq;; ;qq;qq;qq;q q;qq;qq;qq;q q;qq;qq;qqqq;qq qq; qq; qq;qq; qq;qq;; ;qq;qq;;qqqq;;qqӇqqӇ;DCy8y y8yy8y8y8yf f8yff8y8y8yf f8yff8yy8yff88yff8yff8yy8y y8yff8yff8yff8yf f8yff8yff8yff8yf f8yff8yff8yffttyff8yfftt tyff8ytt tyff8ytt tyff8ytttyff8yttt tyff8yttttyff8ytttt8yttt ty8ytttttyff8ytttttyff8yttttt8tttttyttttttyffttttttyfftttttt8tttttyttttt8yffttttttyffttttt8tDCK#K K#KK#K#K#K? ?#K??#K#K#K? ?#K??#KK#K??##K??#K??#KK#K K#K??#K??#K??#K? ?#K??#K??#K??#K? ?#K??#K??#K??GGK??#K??GzzGz zGK??#KffGzffGzf fGK??#KffGzffGzf fGK??#KffGzffGGK??#KffGzffGzzGz zGK??#KffGzffGzffGzffGK??#KffGzffGzffGzffG#KffGzffGzffG GK#KffGzffGzffGzzGzzGK??#KffGzffGzffGzffGzffGK??#KffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzGzzGK??fGzffGzffGzffGzffGzffGK??fGzffGzffGzffGzffGzffG#GzffGzffGzffGGKzGzffGzffGzffGzzG#K??ffGzffGzffGzffGzGGK??ffGzffGzffGzffGzG#GDCD0@`Bad     z`9t`31$$$$$$$$  $$$$$$$$$$$$$$$?$b??$b??$b?$?$b??$b??$b$$$?$b??$b??$b?$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$?$b??$b??$$?$b??$b??$$?$b??$b??$$?$b??$b??$  $$$$$$$$$$$$$$$?$b??$b??$b?$?$b??$b??$b$$$?$b??$b??$b?$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$rrrrrrrr W WrrrrrrrrrrrrrrrWWrrrWWrWWrrrrrrWWrrrWWrWWrrrrrrWWrrrWWrWWrrrrrrWWrrrWrWWrrrrrrWWrrrWrWWrrrrrrWWrrrWrWWrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;WrrrrrrrrrrrrrrrWrrrrWrrrrWrrrrWrrrrWWrrrrWWrrrrWWrrrrWWrrrrWWrrrrWWrrr W WrrrrrrrrrrrrrrrWWrrrWWrWWrrrrrrWWrrrWWrWWrrrrrrWWrrrWWrWWrrrrrrWWrrrWrWWrrrrrrWWrrrWrWWrrrrrrWWrrrWrWWrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;WrrrrrrWW z zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;z;z;zzzzzzzzzzzzzzzzz z zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;z;z;zzz;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;C$$$$ $$$$$$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$$??$b??$b??$$??$b??$b??$$??$b??$b??$$??$b??$b??$$?$b??$b??$$?$b??$b??$ $$$$$$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$?$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$ CCrrrr WrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrWWrrrrWWrrrrWWrrrrWWrrrrWWrrrrWWrrr WrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrr WCC zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zCCC$$$$$$$$$$F$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?$b??$b??$b??$?$b??$b??$b$$$?$b??$b??$b??$?$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$$$$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$b$b??$b??$b??$b??$b??$b??$b??$b$;$$$$$$?$b??$b??$b??$b???$b??$b??$b??$b??$$$$$??$b??$b??$b??$b??$$$$$$$$$b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??$$$$$$$$$b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??$$$$$$$$$b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??b$b??$b??$b??$b$??$b??$b??$b??$b??$$$$$$$$$?$b??$b??$b??$b???$b??$b??$b??$b???$b??$b??$b??$b??rrrrrrrrrrFrrrrrrrrrrrrrrrrrrWWrWWrWWrWWrWWrWWrWWrrrWWrWWrWWrWWrWWrWWrWWrrrWWrWWrWWrWWrWWrWWrWWrrrWWrWWrWWrWWrWWrWWrWWrrrWWrrrWrWWrrrrrrWWrrrWrWWrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr;WrrrrrrWWrrrrrrrrrrrrrrrrrWWrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrWWrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrWWrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrWWrrrrrrrrrWrrrrrrrrrrrrFzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;z;z;zzzzzzzzzzzz;;;;;;;;;;;;;;;;;;;;;;;;C$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?$b??$b??$b$$$?$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$$$$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$??$b??$b??$b$$$$$ DCrrrrr&rrrrrrrrrrWWrWWrWWrrrWWrWWrWWrrrWWrWWrWWrrrWWrWWrWWrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrrrWWrrrrWrrrr WDC&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zDCD0@`.Schatten f (Ungültige UTF-8-Zeichenkette) #1     5:V`:n>`:;x<=k{?===============================================k{k{===============================================>k{>0@` Schatten     >`>K`?CHIkkkkkkkkk k k k k k k k kkkkkkWkkkkkkkkkkkkkkk k k k k k k k kkkkkkWkkkkkk{{{{{{{{{ { { { { { { { {{{{{{W{{{{{{{{{{{{{{{ { { { { { { { {{{{{{W{{{{{{        W        W        kkkkk k k k kkkkkkkkkkkkkkkkkkkkkkkkkkkkk k k k kkkkkkkkkkkkkkkkkkkkkkkk{{{{{ { { { {{{{{{{{{{{{{{{{{{{{{{{{{{{{{ { { { {{{{{{{{{{{{{{{{{{{{{{{{        XkkkkkkkkIkkkkWkkkkkk{{{{{{{{I{{{{W{{{{{{IW=====kkkkkkkkkkkkkkkkkkkkkkkkkkk{{{{{{{{{{{{{{{{{{{{{{{{{{{C0@`Leer     3LV`LnK`L}Dj{{~s Ňstktv{ |~{so{w t~{~zoz{zx{zr|op{z|${~w|vww{s|wftnw|{{zo`s{{rxvw{~xfso|~v~okv~z{s{ko~jo{|gzxpodvvv|~srx~|tzsj|r|wkstxx{Ovzr{o{{~{{w||~wnzow|lx{xxt{ {lg{w|xnw{v|{w~sz{zxjlwn{jz{g{zr|s~wxԑx_gwd{s~w{oszg{{p~s|ss~gdjvxk~~{f|{~~|z{{ ~k~g{~g\~t~vvx|gvvgl~~so{v~{slkwxz~tt~z|soswk^zx燖oW{ w礌{k{wk ~{~|zs 燦jwz 󇁎~~󉍏~{zgosl wwktpww~p#rxs  do~w |svwxojww~|{h{{o{rj{swxop{{{{s~zn{kg|rst~_|~_w{{{o~zsxsn{srs{|{~ww|vv~o~zo|ww |Zo|o{w~gzz~wbzv~pk|owzs~{|~{xzjwn|wz~~nx~vs{|vzkt~r{{{zn{whxrhhx~{w{x|zt{vz~v|vrr|ttwg{vvkz|t{k~{xz~w|~z{zwkl{|x{h|{{w~z{~wszpvnwz{svznz~x|w~煑| r禚s窆j{z*     $wqtsn}{v }vyjmdjhz~}ss {x{~uztnoyoeu~w{r{ |}|~~}x}wl}yxzsxv{}v~ydspor{qnhto~z||husrx{${uzuwup~qnlpthy|wwp~uoxY|j`~~yop|tv|}qb}}zvy[mt~}y}usxzqj~ownozu~v}vyxzx|uw}r|q]wzof~xtzovjb}nu{p|z}uufm`{ezzwx|}x|cszlryt~|`|q}v{}vii{yz^knubyu|xxqd~jpzvvtzz{~mzr{xzv|}j~}yb{vrkzvws}|~t~ycpv~my|wzxl~sprLps{lz}spwy|zjnwysv|rsp}wxxuupwfp}en{w|y|~pz}uzteq{}|~}zzrpqydxw~v~s{ yxddurotpyfm}vqzu{nt|wqv~wyz~tyn}{w|j|ut~uqq~o{x~arx~~{~ybwsh{x}}u~v{vzbqmx}xtv`~t|}{nwxz}zg~w}ylqluysu{|u|mvqzzsz}w}{}u{wzv{{mW_o{}xxw_xu}rlxjxyuz}mudz{ru{yiy~p~|arxr~w|izywv~t}lt|k}mt}by\yxtemvp~~grzrvzx}{|z`zwru}uytqh{}{}yu}~uwo| uwdynaww~ysud~|{z}x|wy{w\wvupykzx~~y~y}yzvwp{{mpx`mv}mx\dwvu||u~zw~ois~|ns~uwzz|~jhe{ys~n|{{r~tlyput~rqyi{}wwfkpywaY~wwxpzxgOx{zy|{{ wp~x}vx{xs}|gzpsdx umrs~|{swzut~z|||zr ~}x}{~{bxn|}oz}{{ wy}~~z{nv~xx~~uvys[y|~{dk~cz |woyo~uzb|m|ijnpt}h~#}w|j|tyu}wk~~  ~yzwYxgx|wtnxs~} yz~rxynmxpsn|uzqyz{zbe{{zl|~{vz{~zzyxxn|vu}v|ypu~}ct{u~nkswz{~x|||e|d~pyyn}vpxpgwiy{qq|prr~v{}x{~ly}xxppugr~~\}qcwz{zwzjlwnp~~u_z~|}}u~zut~~{vz~tzvXu{q|vz{y{vm{vhu}pzgpszj{}hzwxus|kgyg~}x|tuuyyxs|nt}uhmttu~g}tr|yhznp~}yw|u| ~}yt}|Tgw{{frynp~}{az|~y{}yy~~z~r~v~yy|{t{}x{ov{y}{~xoZzqm{u}i^~|ug|~{~o}ruvxs~nrvtwz}y}}yxv~suvw{~}w{o~ucxyo|wf~r|qvvw|p}|~|fmvvwyzxqm~zq~~szwyq{{{d{}}gxxrgy}p~}zu|xxyr|~t~{{{}}now~x{x}yoyx~o}xyto^{|}yxs{e|bvvxyfo~tym|}qz{x|uzxx}xtqrzmt{lxot~l~|t|}{||l~vji|u~nwrw|vxkv|{txzxt|b~rt{xwn~|oyaxvr||rls||r_~}|{~}ztr|q|}}q{y~ovw~t|xuqzu~}ns|{|auveruxu|}|a|q|vy{r{r}vtzwt{z~|vsxous|~h~i{z|y{kxjg}zpv}~v~|imcp|ky{py{wouw}wtzu}z{}yuxx i|~v}{tz}h~}}}}atq|}*     $htwug{si}jayrrnvmpsxtsz qnslm^aYz}ctcqotjr}g nvyruo~o}tlthlvittuyvmftla\fvtrqnmvsrbxyru wsqnprxxstomlua~}tri|opzwuw|hjksykooertrssj]tcgddnwfe~`h~_pttsl{vxspqo]wq{~yhsdhy|owqr$xngmwlxy|krhdojwwc}bfgtt`qkukvtwjfrrktrc{yssjTsroa{rr{\spozpcuszhtlg~yvgpvse{y]|srrll~oxQrs^josypswswltysrktwwhglqukq^spenuy{vbdmjoitlri}ntokjioiteoRlsm}|`\vst~ogibyrjw^wqXobpkr~esppsvlptls{g_svsyvrgnwxlwYxqw~}wrx\sott~soitnttnrrosXmrqozw]fr~yohowxtpqtrvqwuVsesrruqv|kltrztusb^}]lorotSs`zbsskbgipmvrzrw{xl}i`ysn_rzsx}wyvtf{koriyzkuhososrb{vzocllmivosz_vttiX|yozm~iauntzhsyj|zco{npzkvqtqZ{jryswsio{`roymxmovuqzvsvlt}xbqueuesf|{Bado_wrsprqfjquwm{wn\tf|i|mzeivxxzqgdbqsfi|uvmh{ieyqv[et}pz[owqnvclgru|lyrrxys{s}rjsr|lrpztjnxkyzXtfvotoqtpyjjxung}fwxsevoctot}v~qkvrgn yyqvsgyrptq[r}sVgvtyfd{hcto[ywttdrrkfqkqpaxlzhsxkixvoqrskwmmrywvgy~nudspkiozrk`upu|egywrjlseysqeonnqVosttvy~s}}ssrl[sxvoqxwsb[svskiqrrzumns|ftss|ymjqXgjposlxflqwWxuwqvpsrtqpunivko{{yvsu{opqspex{yypjyltl_h`inzrksjjovincrketmk{lutxunnmlixosnolzrrxqq}nxketO}wztVduyl{zl|itszurqo|Tqiqsseathcwjphwksojmxxp[svt~oy}tivinszwuyur_mqlve|squstssWe~sxig|qrjqoy]tuopyykrip`{utivw|s`t`ikrW{mttTryyusstwo~tjturrjvwXqbtpme~rqZftshyflrvsswnvpnxurwsUshw~fsj}{qhylvh{yytsgsqtutrrhnyvumurzssmuqujqrxjtxsgrftvtyw qs~mhuZlutfW~zrjpsomvfpiVuqsukoovsxso~ksknrmMyk|k{txjqthoavwov~losozvnssnsjqswmuswitkbnn~wbefx~o{Veyujxtrl|y~dtjVr|x[|~uv}jonrotksqpxitmsojsvr|w{tt`]dqwum{tdz{vilv~vtf|onoomsrsspq`u[Xrul|zksdszcrws{upuzvzftoyiaroa|hxtrvtxkqw|rmyfh`nn~stm~nusl\u`brnjt{vZtstpO}sqwstessjtdq}sorp]sIpszkgovrvsnt octrrjry~sxp|mk{uuppsvtvfot|{sYs{rtfbtxsvYk skigg{qs}ortswtiqvs{~suhty~reptzzsmuyo{ovpqt_ qxsslqr{xssnYsyvxz~qjw~dwtvuuqttevotosurym qmvsvsoorggutvsvwzj}mqyttsxq~|stxytquiztfsfxVrwrt{unun]v`qZzot| ozq}wipdqdrnzsrZ{n}yuqts`{}{qony]wdvdzmiv^r#vnnk_semvjuqo`qyrnv  ut|x}~t~lurtnlTtswrkp[lswnjxhqdujj|p{vzssr kpsswxxqh{sjtl`bxqwcsykbrpv~yospmkuvjv{xrrk\Xrsmvyonoe{o|yomq|xtntuutntmysmnqnnapjgpn}kmkh|ur}qjsovsw{tsWf}rjlh^{}tsgs~ortunvqnmsxo_r{xXm~sgsrtlmz`susjcwwe]kr^vxovzogxgtwpfsosgn}mvnvp}roun`rlslkicsrsslut[zyzfroXuhVhvnytpqosl{m]p`rwmuafy}usqruqqjuOxlt|m{mqysqzlxslophsptupjos|gr}mxtOwxdo|yotuijjwvj~uofqgslpf~|lq|kw{t\wzwthyqfso`ezzs~zo{vot|q{nu`opyp\krosszzjjqvzqglpr|vyqb^ytymxuurtp`vrpkvq{wiyqufgzjunmkzztt{lbqwqbhpnqasaxii|ls}q]znwiser|tylt]h{cutbrxqxlutuytrzlsttzn qvtrv~pwzguppK\hwpxoqo\vhpwtsqqr{t}sbsrirornXlokmoouotsjmstpps{drpxuytosky~rorossv}wslkuko{syrmmr{gto}wrlxs{jjvyqkts{sdvv|zQorvecumtqi}r{orru{}{z^X|osgvt]pwzttnnbsntsfkwl{sxntjzasyiugikyr|uuotxujsvyvtxqgqyi|ktjvnmrcntqkofpxkXptircvqpzlz[ruvyvhppdveitiy{oxinsyukrq|nun\crxxiynvkl{mys}rccnlfothmlyquo~xpqbvprfuoy[vmzzor~{qqasnn|i_turmttguxwqsornssnxkv{yjsysyxqwsumexqnogutnpxspvq~wirsw~sn{~msustkokssrwto\rpzz}pfykl}nvb~{Xtnsw}q}u|qzsurq}krrtt}t{vgvn\toWkjyotxnpXewtvqio}gqrtuttsorc}p|lnojs{t|pkirq{pe~rqhss~ru|{ojemu{chnbl{d{iqauooisgpowmtntvwy{cpku]~]skpasjyrjmjun^s{|y}xhynvtqsrnzt{tvslkxqqnleqqpVzo{uhnwntwrmjobvtqwuzt~pcot~[lfwgnlyoj`eupyrmr}wZq}sxpyprut|otp~s{tzluig}yvovhttv~}qtorrftwqvtssiuutbiz~gqiy{towouvkewmfttqqgemmroYkj[ttsghodhrnlxpxWuo{zyhshv~swpoypttiqbrhpllp|xssnssxpyqosvktcjfvvf{crnsr`nrzvevrswytos}yvrprymplnxn^rypsktutvtsb[qorczksnesoxy}{pg~ctvcfvn[r|kmpettjrylqorifhw|jpmydttxriqmnzrplisnsv~srvqsslx {tq_rtxuqmpstt{ynvx{tlmwn`xxtsqtnqytwouxsVoutfuewqyoyz{rv*     $================================================~xx{~ lowwhjw~kc|{~|tvkl|vrv~ptw~_ ^|lrw{zx~|ztxos{noowzsl~w~s{~tt{g|v{o~s~|ck|{w{wnwt|~|bt|rj|t{~vwspzws|h jp{j{whw ~ng䗈gr|t{w{goxlwz{%xz_w ~kzzw~k~xzwzzszw~|\~x{|oxcc{wo{sX|wz~vwk~r~onrwrtx|sdfj{|tw~k|wskv|s{sw{kv{`^||vwkk sopwwvxc{rz {v x[v~k|礒npzf|xz "  w~r~|w}ysv}rv zd}`qs~ay`~~m|z|~|}wu}~~xhy_y}~w~ht{{~m~x~uytl}~|}x~o~zyxaerq|^yrmz|yq~r|kzw~{nrt[~ wpu}x}Wux}tyzx}z|cz{u|ut}xxuuky~~|{}m}u}nsp}s}}~o}}z~yxmtqooy}}~lmxutuzyfgg{{qux}s~jeu~y~jw~um}}y{yyxy}yyn{}|{uosn|xys|sz|_{}rxupx|}kx{e{zvz{{m|{v}s|s]er}|z}~wxuspwv}uke|rl~tu}x{{{t|rWu}w|~mwhav{ntvsno}z{ltkon||}l}z}sg c{fy|}sz}w{x{at{ywq{ax{sw~y }zx~v}f_䌅]uzgxxslxt||r{{o{t{x[i}z}zu|}ejwyz|wmzx%ztmwW}wy{t ~vx|||ytyz~|wdw|~|}t~vpqo|wctxlxp~n}mpmz|}|px{}}kry|}xW}~}q{h|~q}zuxz|inw{|w]y^|yys|xvqwr|wlx{ukzUt}sq~s{~|zvzym~|w{xp{dvkz~ku|s}vkinjw}~~w{~mputunywt}^_}d~||xtw{zxstwk}|xovsxxx~{dx~|~xs~s}um|}doxr|}oy{l~xrllywsfy{x|m{r[y}rs{W~z{wtzv{uv|~|t}m}t~{td}xzez vilvy|kulryly|tl{r]{~xxjq wrz|s{yzrzzumx~ }vp|Thwrdw{~瘈l||x}gq|`yx񐈆q~yz "  ipetqjsu~oznd|jttvwei von[wztvr]ccqW{mrw|tuyXnuuzcqztssutwoo|soqt~mzslyiot{m~jzZsjS|yuopymzorjwvvkr}sq|mzpe|oslqqzwj~isl|xziatvppnqrnst}mnbyq|yqmm|supZ[htxwybqqt^jltrxttur~rwcsnqtsj|wygow\mp}z~kqrosuasxf{qjxsrPsspv ptqvljkmkpxNwmrlnshuoqrsowqsyytxrot~Yovnlrrwjoypjmjytvs^wxrsksspowzosuephrwtpyuvsrsheeroixrtzv{o{xoyshtuokt|qkxxjwrevkkaezksrptqqzr]xrr`njiqijuql[vs\wu]ttzp~ttoe{trzjwpowsetcyy[hvztprtxrtvz~usxiyrryvqseiq|ui`pzqqmmvmlptrjponquslfnsvpvuopsiaw~umuts`qum{skxpv{pgstruqxsUq}xq}hr|}zjkbstqzotpfyxwttn{or]sznytvnp}iws~jrunwvz`sm{plqyi|nugSYvhyyt}pyz|{vpvrsqstrptxsslwts{up}rsgkcpzv~j~srga\nucaoygsiqmqvyutsnwjmx}pjQwjustuttm~wopai^Xszhoagujsuwxjrrsbtbwnjwq`yj^t}ttvecznpmxnvsuctpnhy}zqvvV Yp^loqtogzlz}urnws~knjxo{X{sugqklxcrtWkox{tanr|l svsm}n{ro~ursqrtrgu[wV|rtVyttm|jm]kxfp|vwzsjazskespwytwtpnqkydszqivmmuvVsqwt~z\symrler{~ory[rcltxkspegyyltkt%nfftjt~wNsrvx~msodrpw vow{jwlmsxrxslxwszwlw{kmtvroxtoiyYi{wkpuytrn{rtjomtesediysjZ{ixvvkdmdtwzbs|ws}evorwvz~e`rkorpnvdo~qpyorozrxwdkg|uptnt{ss~vtuMoqt{yrzvisstn}vbo{tsywnuxtfwporh}ouukmynt\enrsyynRt{rpxStst{u{zrlwo~qwp|k|uqrwntjkg|n~dt}ks]ltrus|gsasKhnpdrzcqvtivuzstxrm~o{julkbwxxssu}ywjsyslyvqpdxztoZriai{}}us}xpvqy[um}l~xmxtosj[_upc}_rnrt~oprjrnssrtbuetjtgskww`oujutkrtuTUstroYoptnulmtkrnoyqxp|qqyg{svt~hsk`qrp{lx{cjtpikr~r{s}uqosYkqspwxq}mwvhpycrmr_qqXctnkmsuohvlxsn}_q|ou|ungt~s`cmogZlnsytmrupay{xsvfQrstjsljsnuOu{jonkiniptzqtm{xr}k|jnqtrsjtx~ptpbo|stconyx{xj}Yvrmm|r[s tn}tuv`\uijytr{qv^ldwqjnvctq|ypmsrju~btosveymSv{ngk_do~ms zklrxus~ioslmwgnxo~j|xbv}wrwkp sqjfuytspKtuwbqrtxyojhtXkhusztzs\sr{jsltqxuv]vzzerwUxn~hwpztx~sepq|dn{ "  C      牗~|{{o䆍~{~wsw{z 爏|zkm~z~t~ ~w{~{zrg~~{{wswz{ht~r~w{{{jwb^r|w|~opoxsvwsok{v{~vvrwwz{plkf{wwn~Sx{fzw|shzw~~x~lw{~rxvt|{n|~|j|z{r~{ss{kzx\stxv rkg~zlwszotz{tz{z{~{{|kwwozsw| nr_kwowz{voc|rl~s{ x|wv[jx zk{{o{sz~{w~p{zƉ~|~ns㙆~w{k|s灉ss{wÌxs{o{|l前fbo~zzvs瀅t{t{ x{v~{׎|h{{w{v{ hvz|ww~~{soh|~tfz~{v {p~{k{~r~k|z݂{{{kwsokk p~z|srsw|zfxv` ~z {z{gvws{g~||st~|~v{| ~gsxwh~|fxsszlwڏ{v|wzvp~w ہ nk|ws z{wkkk ׇ~xz~ws wgtw{      ~q{no}r}{~|h~x|y|w{xw}pwvnknr{|s 烇yqdx}||~s|{w}r|wxw}n~uj~ qt~zqz}{||~z{{|~v{wvyu|}{ro}q}l[wvyysrtro{y}kh}so}||syyb{w{kz~z~suxk}szznov|zqr~vxdmZ~w}}uXww}myznwxyy{lz~}u}{w}v|~~~vg}kuh}|ptq~~|zixz~{zmkxu|~xj{}xg}~vsk{{u}qmi}s~}|s~|k}qu~}zmkx~xh{x{{udycd~zslyyzwpey}y}{u{xox~}{puy_{qv|nm{|iy{r_}uq}~~}wn}v}tt~w|~xr{tsveor}vxnw~~{w}}s~qx~m|~qnsvrz|{|fyt||{bss|}~|qshu|~}~yzu}}zy{nxydyqgswssWz~jlzzx{~q}r||}zy~~| {uz{xiecu}oyd|n~z~njt}}i||ym~}wvxrzw{uztwll}srr~}ttx}r}v|g|twq||{iz~~yvzr}~{o~kpzx}x `yxpx|z~yz~|vZz~dm}hnN}xpzs~wzoj|Zu}wtrju}xf}{z|~k{ls pt}xz~~|tyym}~}|z|Tz}c}oz} ~|w~w}zzo~{}bytwr|v~f|~~rw{lqyz~yt{on|y|txx|g|os|{~rx{yx}vkryyf}w{}~f|~vv|pvg{ugu}m}hvuy}Æzmnxxqv}gjxt{th}xww]yt|ctz|x~kt}{~~s|tzmm{x{xnwtx{q{p s~usmyxn{r{{v׃was{~zruytwrqxxk}}yux|x`yvk|}o{y}xs||t}~pmr{z}~}{vzyxvywnl~x~g|g~s|~~po}dp{yz|sts~w~}{wkxzus~{~gvzv~zrxyxz{fw~qu|}zmxu{yv}~ep}n{|{y~|z{݀}qyu{~xquu}e}}~vro{}}{izcby jz~rxw~}{{|x~~ysj~yj~lzuourw|{y{{z|^oqzW t~vzu{r~~z||wrq~u{`|i|~{~~}wuyevus_}{s{{x|tw{~|qwz}{lk|}y~vx~xvwmsmqzu q}]lro{|{e}}w{}utyycn}{nuwyh}vsd|zs}qzڀu{~|}m}~{w~}||{zvszr|s|n}x|~|iuz}y{qwyzuvtbf~v}tspuz|m{xyzzzz x~zzo~||xvxvwrz~es||f|c {~v}oxznvyyqz~wowtt} ~}k|}ayy}tzrqzq||quwry      r}sqfnhx~whofrsptozx\pu~|{w}nonzzjlp~osgygtmrixatw`cxfqsxwzpivsso sy~hzogZsrsz{xskqwrsq{qtyttqwkxttu~|xoomiwxtrvycrlvvwshjs}xjpa{oktvswi|rtszp siw|rqxduroxsfs~wtquoromrxlqvs|qzr}postspwttotorjqjjxu}tsltinrspqufgspwtlp]q|VukhqqkttiYge|ydrnnxzm`cpoeopxnh~nrtsovuvxWqxzyrmsksyutt}`uurmvoxzutvuqsltkstuips_pvxhmt|wvrtagiq~nmvpewuzxf|ns{juwXbs{u~uQwuoyjnkjtsNmtwiyqv_wwstrhzbsvsquwutqq}sygxvssvnqvq{pkt{zur}mvstxhyotiloqvrt{j^oz^ujqosu^spwrxydi`xz|upoqtotbkmswx}~sosb|v~zsz`sot~poprvsk]nnqrtsYmsoent|stbyno|seuwpsvhbr{zyyvy{a|naupq|wsrvtq{irurcqvvscrwkzusqns~trfvwezosk^~rsolnzluj[zvmYwrVspsxgcoqttsmlwuttk~jc[wtmswjrxismiyxojkjqqmoqekx}y{pwUpemxpxehuqnkurwuanokWulze|xoqztotxwqvryssktdrzjwthjppusqkethw}zlt~rwuimu[{sct{{tfuvsl{iq^txjrwzrypiknjq{ftwor{qbppavptzhq~vgypkqplsspqwwr\h{ws{jxjroxX~vtykqgvouvuutz}spetzg_hks|srqqkntxprgwotmosyq|um_jso{v`w{{tqm|tsgYzut|evrshfysLynrwqr^{assruxusxkrlovdxsrt{rtnrnqrzuqvtlvxzqh vxvskrspur|st_qtrpZWijrpxeo[o|iqnuru}zd_etpqyst\opwtytykyaqtur~xovj~quvey{srkmxfnsmjwybe~vsfgnuxvk|gpvouiogogsw~yhuqwv}tYofopxcopo\nrpxtrkjqprwhoqlgoqt`clgvtyvzxyuouu [~ur{xkv_~m{nsopqnmpwsssplw{tOmwrq{Ycr~t]azyrpsofmwtf{qqk~mtu{rtpb]~owU{ujrtpr~rtrhh}_omrskr{vYqvnrozrx}irmbf eerk|xsrkowrtsldturpbrszpvnosro{munxtvLmo|rrXns|e}ppupt rvsmsw{lqrvtlw{||mvrwterslxsZnhlthwznxqssi{xp]zmvpwtvpowr}g~ooqsp`teirtvroq~mngsuxkqctrsrwnpjsovqp^vodrmxtroesqsvwskoqroyytrintjfqj|osxx~muss[roljq{}}wqt~ttw`n|r~ohnztsdutfsYnh`ryx{vuls_nsquqz`~{hsudtlvosuwurzzrod`vsurq}w||urxjgrot\fhpgvyrxmi[tptrvpsriWrsspoyzrrpRsjojpqz]jqunyryzr|yo}pjwdu~xu{ttxavwt~y`qoloqkwafrlyskocowrvnqf dnrvrmtvsvtgbmoqysimgsoz{swmwvxxjrwWvyu|ztjvio~~kfwpzpqkoivi|dglprvsq|{ltb{psykyilstsWmkvcspxpk}|~wj{um{xuo{ty~lepoysi|ozrqdyudvqs|ipuypuuuq}ijmxsnsq}{oxjklstgv`sswslq\{oXwo~uisytvqqianXltl{xlswqvvf~izu}gq~wxkttxpvrvrp~trcjqsusin}s{}gqkvss_qlsjvjqlh{xtq}wpm{syn|jutysZxq}{wwsrry~gktysinjx_zni{lxnlxouxyqsXvhy~{{stpvtrduqqysyopoqvyrsmt~snmqyrykmhrsrnpng~tiphuq[typorktzktvb`ox{}nxpn]kXZoqtnrs ]syisrsuhmx{{zts~tyqoqmgpqtk_v{vokw^vtty`swrojtu{~q}d{rhsfk~rxunlpo{nns~vyvUdtcoQo htppmmwqwwseqt~nsysnux|knwuzvggyyusuqudn}~Vwqtvcpptzsro}ospo~eo`jtfVtsuoiywpnr{|t}ylwj{gwyjwtqurqgxvj}|pqs}qr|p`b|omsroqpyxvivj|qsyktgkilnbsgoqzvfs gpVs`eeppypt~nWpoosopjhrqhU{t}epqr`rolk`pk{dsxxZs{rrszjtueqnzwgszqtrnbwtyonxwop}muqqyomkgndxf~murtrctpkpqjrv^htqovxsmoftvso|tqtwustsjlqvysi}yrmjyy[Yqjtqxogxxcxxiks`nxjlo|rmppl q|yx}lqmkevrry}q~w~}yonlfmcmkss}nqYtrjxvmstxstspvYxqwtvXr osinet|vjtessilnemro|o`khthrr qoscrsVtlytvpsvoqknv{apzqdjkimz========================# %   s|| x~s~{|s|vws{{ {t|zwn{|~wto v{rx~t{{x{{s|{~osnxrtkv|~x|xrsjwo{t~{~lof{~~{{{~~x{~szx{skd|npo~{nxttw-~~zz~so~vkow~wxzjos~|l~xw䏇rzw|~{szzw 䒎z~|sz+ )                      #+   '                                %   xlsuzxvu| rzqksp|~x{syxytj|vwwtz}lry~ums}rv~{{yx qm}sx|p{{tutdx}y}poxv~|~{ppfx}}|~f{}{ o}q}p}yrl}|w{}o~tmrr|}wktz~|}ukt{qx|y}s{szk}j|u{|gp}oylx~c~||zjunypqns|m{mbxnu~zvksos~xwhg~]}xgz~syuv~}wyztxz}v}~py~pvs~pww}tuuzvq|r{we}zwzvryyq~~o|muye^~t}wgjue{vys}zh~wrnopzn~-v~z}w{yr{q|v}wwv}pwvi~~~e}w}z~~uo|b|{tzl}kun}tlvbg{{ylu~wx{~xoq~fuet||}u}}r{}z~n~~rq{xwyw|xqkqzrnrx| 䅃}y~y}w}~jys|k~qwy~{{~v+ )                      #*   '                                %   kv{`x|uwxjwquhrqyootuio fomhtt_x|i}gmvqkyppuqm~uhs{vknu|ozmq`yyqjk|mvgmpqcxxdswo~spmagqvy}tvvfxxlmoqrk qygrubqhwjovexiptcrlr[kskvvpqspgssiknwzuvvs{vtmrtrzoz}itea{kyupswosvtr]u|vtruss}st bqjmjtpsypzgs_y{tzs{punnselnxpiqttay}hfstsopvpdggornp|m`hunrf~tnoiphopims{\sts_ogswquq}[swydn`jalnYrxvp~qsx`uiulviyetxhejvtr~rvbrb|Xkczjokjyts\zrfuwai~ws|fw{ix}tt[]rRtr}{rxkpdw{nouhoupiosp|qxzplqmjojrjn{wupruhv{ktsgrjjv|w|qfu|xsjqinmrjkkcprfmrkw}_vs{t{|wo|xmkm{mrzxgkopgzu}vrrfrttrty`irzwzv~oZrsyTryr|gtnuzqut[^j~^toqheswknv[r{sjtfbxvacstsqpymo-mqrtriqmyimovfo{rwreosqlyvuvqwmisyr}xtuimj~aqsovq\sxnmrtursmzqyrivt`oZksnir^x}nciwyarunste{xpsfsjsxyWuz]onr{p`|orssuinwrrhjhoq{twrr[hcx{wkpv}tvyju|vkuws|gx{svudm|omxq_upkezdz{{ysqtqwjmzuwije`eqsgczlmrput~ysx zvokrxoupqjvuytfxl{kiup`stetmk~onrutsxwkuq}ix+ )                      #*   '                               C0@`.Schatten f (Ungültige UTF-8-Zeichenkette) #2     M-`E``a'mkkkkkkkkk%k k8k>k>kk=k=k{>{{={={<{;{{{ {{ {{ { {{ { {{{{{,{{{{{{{{ { {{ {{ {{ {{ { {{ {{ {{{  {  {  {  {  {  {  {  {  {  {  {  { {{ { {{{ {{{ {{{ 3{ 3{ 2{ {{{ {{ {{ {{ {{{{ { { {{ {{ {3 {4 {4 {6{6{9{9{{{{{{% 8>>==<;      ,                          3 3 2         3 4 4 6699  $%(+-221*$  Q[_ciqpjdVPLOPOLS[RG   ꅔĬz #07==?@=7668;6'  t򩧣{rOڰBٰB}WLJGHICCDC@C -% g, ߆B9SOBALY[ZJ1 [%) ՂDEgstzZU"*  zG:awĦ_)44  uI#  =Wpña+"BRC "f@  $:YV(,Mc[* #7ZP* -Psynt|v>$1PaT' .N0*CPK? ߬qB ܦr<ٟe0֙Y) ٓQ#َN ݏN M VWp; g  )'@&  A-/TzK  ?pn@ #[u5 "##%!#I7  #&&!% ?/   =}ֱ`$;utqW5 # 2]ubA,# 38H8 4  5:, !& '+,& 8OUO6#%5FSVTVcf`Q0?_mjG! 2=864.8-&  ++6GD6! + /,/:3 ,2FJC0 3 )NgmX) 5 ,Ud`B5 %BD1-%(  +#"+ $.*, 8j ) /70   &3E^bJ-"$+.,&!*CNWVI. %$,.;HPMB3*!-DHB0  &*1:@C=1 !   !$*' !  4kkkkkkkkkkkk kk kk kk kk kk kk k k k kkkkkkkkkckkk^{{{{{{{{{{{{ {{ {{ {{ {{ {{ {{ { { { {{{{{{{{{c{{{^          c^ 묙br қ;ܴtY- Q! `  U   h  ($ U%*/& %  Q  6)N  x^0@`(Boden f (Ungültige UTF-8-Zeichenkette)     L<`T7`p2&KzV{{~s Ňstktv{ |~{so{w t~{~zoz{zx{zr|op{z|${~w|vww{s|wftnw|{{zo`s{{rxvw{~xfso|~v~okv~z{s{kt~jo{|gzxpodvvv|~srxtzsj|r|wstxx{Ovzr{p{{~{{w||~wnzow|̬lx{xxt͸~ {lg{w|xnw{vʨū{w~sz{zxݺlwn{jzg{zr|s~wxԑx_gwd{s~w{ozg{{xs|ss~xdՎjx˶ֶԒ{w{~~|z¿غ~ ~k~g̷ݪk~tê㢬vvx|vvgl͠sov~{ˠ~onwx~tt~z~|oswk^x燖oW w礌{k|~n ~{|zs 燦|wz 䇁~~{zg}} wwytpwp#rx  tÂo~w |yx|ww~|{h{{o{rj{sw~qp{{{{s~zn{kg|rsw_|~_w{{{o~zsxsx{srs{|{xw|vv~o~zo|ww |Zo|o{w~gzz~wbzv~pk|owzs~{|~{xzmÞn|wz~~nx~šs{|vzkt~r}פpijҶĮĻñŭŲҵӚu¶̦ͷλһ̷̱Ү˻̴ۧ־ˏۯʦʫôڿšΛµވtƹ՞鿵ƣӿ}{xz}klk|{{w~|{~wszpvnwz{svznz~x|w~煑| r禚s窆j{z*     $wqtsn}{v }vyjmdjhz~}ss {x{~uztnoyoeu~w{r{ |}|~~}x}wl}yxzsxv{}v~ydspor{qnhto~z||husrx{${uzuwup~qnlpthy|wwp~uoxY|j`~~yop|tv|}qb}}zvy[mt~}y}usxzqj~ownozu~v}vyxzx|uw}r|q]wzof~ztzovjb}nu{p|z}uufm`}jzzwx|}x|cszlryt~|`|q}v|vii{yz^knubyu|xxqd~jpz}wzz{~mzr{xzv|}j~}yb{vrkzvws}|~tuuv~my|wzxl~sprLps{lz}spzknwysv|rsp}wxxuupwfp}en{w|~~pz}uzteq{}|~}zzrpqydxwv{ yxddurotpyfm}vqzu{nwqv~wyz~tyn}{w|j|ut~uqq~oΪ~{~ybwsh{x}}u~v{vzbqpy`~t|}{nwxz}zg~w}ylqluyu|mvqzzsz}w}{}u{wzv{{mW_o{w_xu}rlxjxyuzpxdz{ru{yzp~|arxr~w~ozlt|k}mtr\yxtem̪Ōrvzx}{pzru}uytqƩu}~uz| uwdynaў}x|wy{kvupykzx~~ֲp{{mpxn{}mx\dy⾎zw~oi|ns~uwzzukh~ys~n|{{tlyput~rq{qwfkpywaYwxpzxgOx{|{ wp~x}zzs}|gzqzgx umrs~|wzut~z|r ~}x}{~rxn|}o~{ wy}~~z{nvx~vys[y|~~q}r |woyo~unm|ij|h~#}w|j|tyu}}~  ~y}gzgx|wtnxs yz~rx}rsn|uzqyz{rv}{zl|~{vz{~xxn|vu}v|ypu}ct{u~nkswz{~z|e|d~pyyn}vp{uiwiy{qq|prr~v~ly}xxppugr~~\}qcwz{zwzjlwq{~~u_z~|}}u~zut~~{vz~tzvXu{r{y{vm{vhu}pzgpszj{rwxus|kgyg~}x|tuuyyxt|nt}uhmttu~g}tr|yhznp~}yw|| ~}yt}|Tgw{{frynp~}{az|~y{r~v~yy|{t{}x{ov{y}{oZzqm{u}i^~|ug|~{~o}rus~nrvtwz}y}}yxv~suvw{~}w{o~ufy|wf~r|qvvw|p}|~|fmvvwyzm~zq~~szwyq{{{d{}}gxxrgy}rzu|xzxuɛyq|||ïáŒ~vs}˱ů⿦ğ̣Ǿͣϱ¼յ|vxkǎzᳫŰqm|qr{~}}xv|tx||auvex}x~dq|vy{r{r}vtzwt{z~|vtxous|~h~i{z|y{kxjg}zpv}~v~|imcp|ky{py{wouw}wtzu}z{}yuxx i|~v}{tz}h~}}}}atq|}*     $htwug{si}jayrrnvmpsxtsz qnslm^aYz}ctcqotjr}g nvyruo~o}tlthlvittuyvmftla\fvtrqnmvsrbxyru wsqnprxxstomlua~}tri|opzwuw|hjksykooertrssj]tcgddnwfe~`h~_pttsl{vxspqo]wq{~yhsdhy|owqr$xngmwlxy|krhdojwwc}bfgtt`qkukvtwjfrrktrc{yssjTsroa{rr{\spozpcuszhtlg~yvgpvse{y]|srrll~oxQrs^josypswswltysrktwwhglqukq^spenuy{vbdmjoitlri}ntokjioiteoRlsm}|`\vsupgibyrjw^wqXobpkr~esppsvlptls{g_svsyvrgnwxlwYxqw~}wt`vott~soitnttnrrosXmrqozw]fr~yohowxtpqtrvqwuVsesrruqv|kmy}tusb^}]lorotSs`zbsskbgipmvrzrw{xl}i`ysn_rzsx}wyvtf{kosp{kososrb{vzocllmivosz_vttiX|yozm~iauntzhsyj|zco{npzkx{koryswsio{`roymxmovuqzvsvlt}xbqueuesf|{Bado_wrsprqfjtv]tf|i|mzeivxxzqgdbqsfi|uvmh{ieyqv[et}pz[owqnvclgru|p{s{s}rjsr|lrpztjnxkyzXtfvotoqtpyjjxung}fwxsevoctot}~jn yyqvsgyrptq[r}sVgvtyfd{hcto[ywttdrrkfqkqpa~vxkixvoqrskwmmrywvgy~nudspkiozrk`upu|egywrjlseysqeosrwtvy~s}}ssrl[sxvoqxwsb[svskiqrrzumns|ftss|ymjqXgmpoqwWxuwqvpsrtqpunivko{{yvsu{opqspex{yypjyltl_h`in}~{sqvincrketmk{lutxunnmlixosnolzrrbxqq}nxketO}wztVdy~}ltszurqo|Tqiqsseathcwjphwksomp{{q[svt~oy}tivinszwuosve|squstssWe~sxig|qrjqq}czor`{utivw|s`t`ite{Tryyusstwo~tjturrjvwXqb}zo}flrvsswnvpn{ckw~fsj}{qhylvh{yytsgsqtuu||{rujqrxjtxsjwvtyw qs~mhuZlutfW~zu~uzpovsxso~ksknwZ{k{txjqthoavwov~losozvuwbnn~wbefx~obvnxtrl|y~dtjVr|x[|~uv}lëx~zzuruojsvr|w{tt`]mq{tdz{vilv~vtf|onoomyi{^Zrxo~zksdszcrws{upuw||iaroa|hxtrvtxkqw|rmyfig~znusl\u`brnjt{vZtstpO}v|ovsjtdq}sorp]sIpszlo{nt octrrjry~sxp|qxztvtvfot|{sYs{rtgg[k skigg{qs}ortz}s{~suhty~reptzzsmu|{yrt_ qxsslqr{xsx~hz~qjw~dwtvuuqttev{uym qmvsvsoorggutyymqyttsxq~|stxyywfsfxVrwrt{unuqhphtt| ozq}wipdqdrnzswezqts`{}{qony]wdyqz^r#vnnk_semvjuq~pznv  ut|x}~t~lurtpvamp[lswnjxhqdujj~}tr kpsswxxqh{sjtrmresykbrpv~yospmkuvjv{xs{kgzmvyonoe{o|yomq|xtntuutntqwqnnapjgpn}kmkh|ur}qjvw{z{tsWf}rjlh^{}tsgs~ortup~zzo_r{xXm~sgsrtlmz`susjcz}j_kr^vxovzogxgtwpfsosgn}mvrwun`rlslkicsrsslut[zy{froXuhVhvnytpqosl{m]p`rwmudp}truqqjuOxlt|m{mqysqzlxslophsptupjos|gr}mxtOwxdo|yotujrynuofqgslpf~|lq|kw{t\wzwthyqfso`ezzs~zo{vot|q{nu`opzte}~tzzjjqvzqglpr|vyqb^ytymxuurtp`vrpkvq{wiyqufgzjunmlscqwqbhpnqasaxii|ls}q]znwiser|tylt]h{cutbrxqxlutuytx~~|n qvtrv~pwzguppK\hwpxoqo\vhpwtsqqr{t}sbsrirornXlokmoouotxx{rs{drpxuytosky~rorossv}wslkuko{syrmmr{gto}wrlxs{jjvyy}vdvv|zQorvecumtqi}r{orru{}{z^X|osgvt]pwzttnnbsntsfkw}zwjzasyiugikyr|uuotxujsvyvtxqgqyi|ktjvnmrcntqkofpxk[}zlyqpzlz[ruvyvhppdveitiy{oxinsyukrq|nun\crxxiynvkl{mrcnlfothmlyquo~xpqbvprfuoy[vmzzor~{qqasnn|i_turmtti}wnssnxkv{yjwzx}y{tl{xxr~y{~y{s~~zt~wvsrwto^ut{~sqjyotzuzcrͳǵwus~ru|v~~qmjun^uy~kàxuzt~yrj~xy~rx{g~~wovhttv~u{~}q}zyenmyqxszsx{ni{qmz|yxmjpnroYkj[ttumpxjkvqn{r{Zxr~zyhshv~swpoypttiqbrhpllp|xssnssxpyqosvktcjfvvf{crnsr`nrzvevrswytos}yvrprymplnxn^rypsktutvtsb[qorczksnesoxy}{pg~ctvcfvn[r|kmpettjrylqorifhw|jpmydttxriqmnzrplisnsv~srvqsslx {tq_rtxuqmpstt{ynvx{tlmwn`xxtsqtnqytwouxsVoutfuewqyoyz{rv*     $================================================~xx{~ lowwhjw~kcR|~|tvkl|rvptwo ^lr{zx~ztxos{nwzv~s~tt³g|˳{os~|cmøǡ̵ȣ{w{wnw{|bt|rj|t{~vvpzwsh jp{j{wh ӓ{g䗈grt{Õ{golwz%xz_ ~}zzw~kxzwzzw~|\~x{|cc{w{{sX|wz~vzk~r~unrwrtx|suwj|tw~n|ws}|s{ny~cp|¤ƻvصþŮϡᤜk zþʷתxƝĴ}| { xc~k|礒npzf|xz "  w~r~|w}ysv}rv zd}`qs~ay`~~m|z|~|wu}~~xhy_w~ht{{{x~uytl}x~o~zyxaer^yrmz|yqkzw~{nrwj wpu}x}Wuxz|cz{u|{uuky~~|{}nsp}s}}q}}z~yxmtqoolmxutuzyfxx{{qux}s~mv~y{xm}}y{yyxy}yyu|{uosn|xy}z|_{}rxw~}kx{e{z{{m|{v}s|s]g~|z}~|Țxuspwv}uke|rsy{{{t|rWumwhav{ntvsn|ntkon||}lg c{fy|}sz}at{ywq{ax{y }zxNJr_䌅]uzg{slxt||r{}{t{x[i|}ejwyz|wq}%ztmwW}w ~vx|||tyz~|wu~|}t~vpqo|wcxlxp~n}m}|px{}}kry|}W}~}q{h|~q}zuxzz||{|w]y^|yys|xvqwr|wxukzUt}sq~szvzym~|ws{dvkz~qs}vkinjw}mputunywt}no}d~||xtw{zxtwk}|xovsxxxgx~|~xs~s}umuv|}oy{l~xriy{x|pu^gz{wtzv¿}m~Ϊĵƴ̘ez vo~ǭƜly~}ts wrz|{rx~ }vp\swrdw{~瘈l{gq|`yx񐈆q~yz "  ipetqjsu~oznd|jttvwei von[wztvr]ccqW{mrw|uuyXnuuzcqztssutwoo|ssvxmzslyiot{m~jzZsjS|{{|z}mzorjwvvkr}sq|mzvr}lqqzwj~isl|xziatvxyvt}mnbyq|yqmm|supZ[hwr}w^jltrxttur~rwcsnqtsjxz\mp}z~kqrosuasxf{qm]vpv ptqvljkmkpxNwmrlqy~vowqsyytxrot~Yovnlrrzttojytvs^wxrsksspowzr~vx}ztpyuvsrsheeroixrtzv{o~jtuokt|qkxxjwrevkkae}|tqzr]xrr`njiqijuql[vvkltzp~ttoe{trzjwpowsetejytprtxrtvz~usxiyrryvs~uzl`pzqqmmvmlptrjponquslm~|opsiaw~umuts`qum{skxpstruqxsUq}xq}hr|}zjmnqtpfyxwttn{or]sznytvnp~mrunwvz`sm{plqyi|nugS[qyz|{vpvrsqstrptxssowp}rsgkcpzv~j~srga\nuch|{ynqvyutsnwjmx}pjQwjustwtai^Xszhoagujsuwxjrrsbwm|{byj^t}ttvecznpmxnvsuc{yzqvvV Yp^loqtogzlz}urnw|}|t{X{sugqklxcrtWkox~~ql svsm}n{ro~ursquxezV|rtVyttm|jm]nv}sjazskespwytwtpn}rwzqivmmuvVsqwt~z\z~rv{~ory[rcltxkspek~ot%nfftjt~wNsrvx~quw vow{jwlmsxrx~|zwlw{kmtvroxtoi}hzxpuytrn{rtjomtesediysjZyzkdmdtwzbs|ws}evorwvzsp}~ypnvdo~qpyorozrxwdkg|upw|~~vtuMoqt{yrzvisstn}vbonuxtfwporh}ouukmy~krrCsyynRt{rpxStst{u{zrl}~k|uqrwntjkg|n~dt}kvg~u|gsasKhnpdrzcqvtiyp~o{julkbwxxssu}ywjsy{|}gxztoZriai{}}us}xpvqy_xxmxtosj[_upc}_rnrt~ow||wsrtbuetjtgskww`oujutkrybcuoYoptnulmtkrnoyqxp|qqyvy~hsk`qrp{lx{cjtpikr~r{s\kqspwxq}mwvhpycrmr_vgs|nmsuohvlxsn}_q|ou|ungt{{t]lnsytmrupd~|yyiSvxzp^~jonkiniptwx~ptpbpr[s tn}tuvflctq|ypmstspgfo~ms zklrxusp~~gw}wrwkp sqjfuytvyRl}~rjhtXkhusztzs\sulvowt{uv]vzzerwUxn~hwpztx~sepq|dn{ "  C      牗~|{{o䆍~{~wsw{z 爏|zkm~z~t~ ~w{~{zrg~~{{wswz{ht~r~w{{{jwb^w|w|~qpoxsvwok{v{~vvrwwz{plnw{wwn~Sxfzw|shzwɔ~x~lw{~rvt|{n|~|j|z{r~{ss{kx\stxv rkhtwszst~۶|qӃ٠ؼк n޺׷ƻùÒ;ùĵ˸ӛἯͷ̛ґĴ巸Ғs{ x|߮⹾׷îԶoȰٱʧ ŭòs{{{ws}zĎ~|~ns㙆~w{k|s灉ss{wÌxs{o{|l前fbo~zzvs瀅t{t{ x{v~{׎|h{{w{v{ hvz|ww~~{soh|~tfz~{v {p~{k{~r~l|z݂{{{{wsokk p~z|srsx|zm` ~z {z㺨{gy{vm~|vðǸǐ| ~gyƱǯvxss~yڏ{v|wzvsw ہ nk|ws z{wkkk ׇ~xz~ws wgtw{      ~q{no}r}{~|h~x|y|w{xw}pwvnknr{|s 烇yqdx}||~s|{w}r|wxw}n~uj~ qt~zqz}{||~z{{|~v{wvyu|}{ro}q}l[wvyysrtro{y}kh}so}||syyb{w{kz~z~suxk~szznov|zqr~vxdmZ~w}}uXwwryznwxyy{lz~}u}{w}v|~}h}kuh}|ptq~~|zixz~{zmzu|~xj{}xg}~vsk{{u}qmi}s|s~|k}qu~}zmkx~xh{x{{udyfuslyyzwpey}y}{u{xox~}{py_{qv|nm{|iy{r_}uq}~~}wn}v}y|~xr{tsveor}vxnw~~{w}}s~~m|~qnsvrz|{|fyt||{bss|qshu|~}~yzu}}zy{nxydyqgwssWz~jlzzx{~q}r||}| {uz{xiecxukrnjt}mym~}xz|v~Ǫv|l|ɖͨʬ~ `yЭͩϭzӯN붯~w{˽ōҳ˰؜Ňls pt}xƦ׫ƪůƨf}ţ ~}j|~zq~rwt{on||x||j~ou~{~ry}yx}vkryyf}w{}~f|~vv|pvg{ugu}m}hvuy}Æzmnxxqv}gjxt{th}xww]yt|ctz|x~kt}{~~s|tzmm{x{xnwtx{q{p s~usmyxn{r{{v׃was{~zruytwrqxxk}}yux|x`yvk|}o{y}xs||t}~pmr{z}~}{vzyxvywnl~x~g|g~s|~~po}dp{yz|sts~w~}{wkxzus~{~gvzv~zrxyxz{fw~qu|}zmxu{yv}~fp}n{|{y~|{݀}qyu{~xquut}}~vro{}}{izcbz jz~rxw~}}|x~~ysj~yj~lzupurw{y{{z|d~}|W t~v|~{r~~zwrqu{`|l~~}wy~g~es}|txym|}y~Ʃȹu q}]q}rn}{nx|huszڀu{}}m}zvszr|s|n}x|~~ly{}y{qwyzuvtbf~v}tspuz|m{xyzzzz x~zzo~||xvxvwrz~es||f|c {~v}oxznvyyqz~wowtt} ~}k|}ayy}tzrqzq||quwry      r}sqfnhx~whofrsptozx\pu~|{w}nonzzjlp~osgygtmrixatw`cxfqsxwzpivsso sy~hzogZsrsz{xskqwrsq{qtyttqwkxttu~|xoomiwxtrvycrlvvwshjs}xjpa{oktvswi|rtszp siw|rqxduroxsfs~wtquoromrxlqvs|qzr}postspwttotorjqjjxu}tsltinrspqufgspwtlp]q|Vukhqqkttiԇge|ydrnnxzm`cpoeopxnh~nrtsovuvxWqxzyrmsksyutt}`uurmvoxzutvuqsltkstuips_qxxhmt|wvrtagiq~nmvpewuzxf|ns{juwXbs{u~uQwuoyjnkjtsNmtwi{v~dzwstrhzbsvsquwutqq}sygxvssvnqvq{pkt{zur}mvstxhyotilor{}p_oz^ujqosu^spwrxydi`xz|upoqtotbkmswx}~sosb|v~ztm~~poprvsk]nnqrtsYmsoent|stbyno|seuwpsvhbr{zyyvy{a|nawzwrvtq{irurcqvvscrwkzusqns~trfvwezosk^~rsolnzluj[zvm\dsxgcoqttsmlwuttk~jc[wtmswjrxismiyxojkjqqmoqeo|UpemxpxehuqnkurwuanokWulze|xoqztotxwqvryssktdrzjwtl|{sqkethw}zlt~rwuimu[{sct{{tfuvsl{iq^txjrwzrypiknjqtqbppavptzhq~vgypkqplsspqwwr\h{ws{jxjroxX~vtykqgvs~}spetzg_hks|srqqkntxprgwotmosyq|um_jso{v`w{{tqm|tsgYvvshfysLynrwqr^{assruxusxkrlovdxsrt{rtnrnqrzuqv}}th vxvskrspur|st_qtrpZWlmvs~jvbultrxvx}d_euqq|vx`w}kyaqtur~xoxmuxyh|}x{t~}szy~y{yhuqwv}x^wp{}p~luu [~ur{zqsky~ɣp{qqk~ny}xŘwbf eerk}}]p{pt rvsmt{~~`vorzoyv~g||owr}g~ooutvu~~z|wqgsuxkqctrsrzqsnvszusazodtoxtroesqsvxtlqtvqyytrintjfqj|osxx~muss[roljq{}}wqt~ttw`n|r~ohnztsdutfsYnh`ryx{vuls_nsquqz`~{hsudtlvosuwurzzrod`vsurq}w||urxjgrot\fhpgvyrxmi[tptrvpsriWrsspoyzrrpRsjojpqz]jqunyryzr|yo}pjwdu~xu{ttxavwt~y`qoloqkwafrlyskocowrvnqf dnrvrmtvsvtgbmoqysimgsoz{swmwvxxjrwWvyu|ztjvio~~kfwpzpqkoivi|dglprvsq|{ltb{psykyilstsWmkvcspxpk}|~wj{um{xuo{ty~lepoysi|ozrqdyudvqs|ipuypuuuq}ijmxsnsq}{oxjklstgv`sswslq\{oXwo~uisytvqqianXltl{xlswqvvf~izu}gq~wxkttxpvrvrp~trcjqsusin}s{}gqkvss_qlsjvjqlh{xtq}wpm{syn|jutysZxq}{wwsrry~gktysinjx_zni{lxnlxouxyrtYvhy~{{stpvtrduqqysyopoqvyswux~snmqyrykmhrsrnpng~tiphvzh}zporktzktvb`ox{}nxpn]kXZpwtss ]syisrsuhmx{{zts~tyssumgpqtk_v{wokw^vtty`swrojtu{~re{rhsfkvxunlpo{nns~vyvZrmqQo htppouwxwseqt~nsysnu|}wzvggy{~twqudn}~Vwqtves||o}ospohtbqs[vvzriywrs}rwj{gwykyv~~{яkc|omsroqs{w~yyzzvfs gpVterrvzuybt}epqr`rrsn`vwyigqnzwgszrurnbwwxyz}qmkgndxf~murtrctpkpqjsxalwrovxsmoftvso|tqtwustsjlqvysi}yrmjyy[Yqjtqxogxxcxxiks`nxjlo|rmppl q|yx}lqmkevrry}q~w~}yonlfmcmkss}nqYtrjxvmstxstspvYxqwtvXr osinet|vjtessilnemro|o`khthrr qoscrsVtlytvpsvoqknv{apzqdjkimz========================# %   s|| x~s~{|s|vws{{ {t|zwn{|~wto v{ry~t{{x{{s|{~oș{nxrtkŘw|~x|xowo{t~lof{{{~}{~szx{skd|ń~{nѴ-~ӮٹԿ͜͜ӧwŽspxw䏇rzw|~{szzw 䒎z~|sz+ )                      #+   '                                %   xlsuzxvu| rzqksp|~x{syxytj|vwwtz}lry~ums}rv~{{yx qm}sx|p{{tutdx}y}poxv~|~{ppfx}}|~f{}{ o}q}p}yrl}|w{~p~tmrr|}wktzukt{qx|y}s{szkru{|gp}oylx~c~}kunypqns|~gynu~zvksos~hg~]}xgz~}~}wyztxz}v}~pvs~pww}tv|r{we}zzryyq~~o|mv~e^~t}z}yzys}zh~|z¨q~-v~z}w{{μˠwv}±С}w}zǞtwn}ʵz|ylu~wzjwet|u}}r{}z~n~~rq{xwyw|xqkqzrnrx| 䅃}y~y}w}~jys|k~qwy~{{~v+ )                      #*   '                                %   kv{`x|uwxjwquhrqyootuio fomhtt_x|i}gmvqkyppuqm~uhs{vknu|ozmq`yyqjk|mvgmpqcxxdswo~spmagqvy}tvvfxxlmoqrk qygrubqhwjovexiptcrlr[kskvvpqspgssiknwzuvvs{vtmrtrzoz}itea{kyupswosvtr]u|vtruss}st bqjmjtpsypzgs_y{tzs{punntflnxpiqttay}hfstsopvpdggpusum`hunrf~tnoiphopims{\w}fqgswquq}[swydn`jalnYrxwv}`uiulviyetxhejvtr~rqr\lczjokjyts\zrfuwai~wsqw}tt[]rRtr}{rxkpdw{noxuxusp|qxzplqmjojrjn{wupruy{{sgrjjv|w|qfu|xsjqin{|}zfprfmrkw}_vs{t{|wo|xmn{{gkopgzu}vrrfrttrty`i|sZrsyTryr|gtnx}tyzmq}uheswknv[r}smkwpo-mqrtriqoyqwmisyr}nmrtursmzvzjjwyarunswrsmuor{p`|orssukxz|y}y^jcx{wkpv}tvyju~yoxzwgx{svudm|omxq_upkezdz{{ysqtqwjmzuwije`eqsgczlmrput~ysx zvokrxoupqjvuytfxl{kiup`stetmk~onrutsxwkuq}ix+ )                      #*   '                               C0@`.Schatten f (Ungültige UTF-8-Zeichenkette) #3     H`16`M+Ekk;k;kEk k k k k k k k k k k k k k kk kk kkk=k=k=k=k=k=k=k=k=k=k=k=k=k<kkkkkkkkkkkkkkkkkkkkkkkkkkkkk k k k k k k k k k k k k k k kk kk kkk=k=k=k=k=k=k=k=k=k=k=k=k=k<kkkkkkkkkkkkk{{;{;{E{ { { { { { { { { { { { { { {{ {{ {{{={={={={={={={={={={={={={<{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ { { { { { { { { { { { { { { {{ {{ {{{={={={={={={={={={={={={={<{{{{{{{{{{{{{;;E                =============<                 =============<;;E                ===============                 ===============kkkkk k k k k k k k k k kkkkkkkkkkkkkkkkkkkkkkk k k k k k k k k k kkkkkkkkkkkkkkkkkkk{{{{{ { { { { { { { { { {{{{{{{{{{{{{{{{{{{{{{{ { { { { { { { { { {{{{{{{{{{{{{{{{{{{                                  kkkkkkkkkkkkkkkkkkk;kkk;k kk kkk=k=k=k=k=k=k=k=k=k=k=k=k=k<kkkkkkkk{{{{{{{{{{{{{{{{{{{;{{{;{ {{ {{{={={={={={={={={={={={={={<{{{{{{{{;;  =============<=?;;  ===============kkkkkkkkkk k kkkkkkkkkkkkkkkkkkk{{{{{{{{{{ { {{{{{{{{{{{{{{{{{{{  0@`Keller     G` 5b`%[bnenkdkmknnrnlnoikjklpholnkmnenknokmnmnjokhkmnlm䐏瑉䉐猍jhnizwyhqzy{yzyz|wxzn|yxw|wypymt{xn}}zi~kjlhۅk3njjzun}֎l~yWp}{rqy{|kqwuoxsun{ 压懈瑌䌋 扌㋐王͐nknqyxxtoxzxvuzyy~wtxl}x~x~y~wuvkwqzy~}wxnkl򊑑ݍm2okhikin~w{sxkj>jkkkʉ򍈏 ꐍ |ypzuqxxwyy~xxztyuwv|t|xywxwrzwy{vyzyuuzvswy{yy枛왛䙠顟ur̟yvɉu&{wyuzқuwtwywuzwz|ʝx|| 囚斓砜蘞 暜㛜領ѝzu{{{xyǘyyyyzwrtuuyyĜu͙vyxwŞ瞘  }|r|wry|y||zz}vyxyy~w}z|yz|s|y||y||zxyuy|}z|桞잠䛣윛餠xuzxv|y|ݘxؚzx藞yvy|Λzڛx}Ġy̜|}y}} 堝旚礠ƙ 蝙㝡瞙}y|}}zy䢖||z|ơ|zuv띣yw|zxx|zءyӣɝ硚  ================================================koikkjhijnlmroljknkjoljo+6;9 ꆔ8񃋑6 :銍6㈌86ԋ86"  ڋÉ뎊6玌6 6 6w|uwwvttx{vz|wvwwxuzyu|+6䛕;9 䘦񛘔ʙ̚86 :盝6㓜86웜8띙6蠫󣛣  6眙6 6 6y}yzzvx|y|zxyzzx|zw+6֞;֛9 񞝙⛧垜Λ86 :瞠6㘠8읞6垣8񠞞6  כӣӞ6砞6 6 6C 猂狈牋mmjjlokmϐgruommjmhƆjnpixoyvrt{wouqy{yvz{ovyy}yymqy爊刌yَ𣤢66;:68666   Ў򇈌U 󍓐  眑환瘚yxuwx|uyp|Εwytv閚ruy|螛蛖uל٘y{xꠙ哛Ǜ66;:68666   㝜ћ?霟ʝ 𙛞  瞔盜盡|ܨyxzȘzx|s}Ԩyzxyʙ tx|~x|}㛠⛝z٘䜢盞噞Ǟ66;:68666   қ坞󢙝!Ң蓞 饠 ========================#6666Cy~sy}qwoyty{~zzwxvryvy׈Ў猊叆9667               6666񛗛圔9667               6666ݥk֣֠堘옠9667               C0@` Betonboden     6!`695`6UgA掏 䐏瑉䉐猍zwyqzy{yzyz|wxz|yxw|wypyt{x}}z~ۅ3zu}֎~yW}{qy{|qwuxsu{ 压懈瑌䌋 扌㋐王͐yxxtxzxvuzyy~wtx}x~x~y~wuvwqzy~}wx򊑑ݍ2~w{sx>ʉ򍈏 ꐍ 󠝑 枛왛䙠顟̟ɉ&қʝ 囚斓砜蘞 暜㛜領ѝǘĜ͙Ş瞘  󢠔 桞잠䛣윛餠ݘؚ藞ᛜڛĠ̜ 堝旚礠ƙ 蝙㝡瞙䢖ơ띣ءӣɝ硚  ================================================狐 ꆔ񃋑 ꊍ㈌ԋ"  ڋÉ玌  皠䛕 䘦񛘔ʙٚ 蛝㓜웜띙蠕󣛣  眙  ֛֞ 񞝙⛧垜Λ 螠㘠읞垣񠞞  כӣ֞砞  C  猂狈牋ϐuxyvrt{wuqy{yvz{vyy}yyqy爊刌yǎ   Ў򇈌U 󍓐   眑환瘚Ε閚螛蛖ל٘ꠙ哛Ǜ   㝜ћ?霟ʝ 𙛞   瞔盜盡ܨȠȘԨʙ 㛠⛝٘䜢盞噞Ǟ   қ坞󢙝!Ң蓞 饠 ========================#Cy~sy}qwoyty{~zzwxvryvy׈Ў猊叆               񛗛圔               ݥk֣֠堘옠               C0@`(Bodenfl (Ungültige UTF-8-Zeichenkette)      `)`E================================================================================================================================================================================================CCCC========================#========================#========================#========================#CCCC0@cuyo-2.1.0/datasrc/pics/gen_augen.ml0000644000175000017500000002246412422656734014276 00000000000000(* Copyright 2010,2011 by Mark Weyer Maintenance modifications 2014 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Male_mit_aa open Helfer module RGB = Vektor.Vektor(Natmod.Drei) let aa = 5 let haut_rgb = rgbrgb 1.0 0.8 0.6 let schatten_rgb = rgbrgb 0.7 0.4 0.1 let blitzhell = 0.7 let aug_rad = 0.8 let augenlaenge = 1.8 let lidabstand = 0.1 let augenhoehe = 0.65 let anz_wimpern = 25 let wimplaeng = 0.2 let iris_rad = 0.3 let pup_rad_klein = 0.07 let pup_rad_gross = 0.13 let sicht_abstand = 8.0 let schattenversatz = 0.3 let farben1 = [| 0.0, 0.6, 0.0; 0.1, 0.3, 0.8; 0.5, 0.1, 0.0; 0.2, 0.6, 1.0; 1.0, 0.5, 0.0; |] let farben2 = [| 0.9, 0.7, 0.0; 0.2, 0.6, 1.0; 0.6, 0.2, 0.1; 1.0, 0.7, 0.3; 0.1, 0.6, 0.1; |] let streifenanzahlen = [| 17; 15; 13; 16; 14|] let misch_bilder mischer rot gruen blau schwarz = let b,h,mischer = mischer in let _,_,rot = rot in let _,_,gruen = gruen in let _,_,blau = blau in b,h,(fun p -> let m = mischer p in let r = nur_rot m in let g = nur_gruen m in let b = nur_blau m in let s = 1.0-.r-.g-.b in misch [r,rot p; g,gruen p; b,blau p; s,schwarz]) let blau_absolut (b,h,f) = b,h,fun p -> let f = f p in if nur_blau f > 0.0 then blau else f let polar x y = let r = sqrt (x*.x +. y*.y) in let w = if r=0.0 then 0.0 else atan2 y x in r,w let dreh w x y = let cw,sw = cos w, sin w in cw*.x -. sw*.y, cw*.y +. sw*.x let farbe_aus_array nummer array = let r,g,b = array.(nummer) in von_rgb (rgbrgb r g b) let haut = von_rgb haut_rgb let blitzhaut_rgb = RGB.plus (RGB.mal (1.0-.blitzhell) haut_rgb) (rgb_grau blitzhell) let blitzhaut = von_rgb blitzhaut_rgb let schatten = von_rgb schatten_rgb let blitzschatten_rgb = RGB.plus (RGB.mal (1.0-.blitzhell) schatten_rgb) (rgb_grau blitzhell) let blitzschatten = von_rgb blitzschatten_rgb let blitzschwarz = grau blitzhell let lidwinkel = asin (augenhoehe/.2.0/.aug_rad) let lidmin = (1.0-.augenhoehe) /. 2.0 let nl = 1.5-.augenlaenge/.2.0 let nr = 1.5+.augenlaenge/.2.0 let pul = nl, 0.5+.lidabstand/.2.0 let pur = nr, 0.5+.lidabstand/.2.0 let pol = nl, 0.5-.lidabstand/.2.0 let por = nr, 0.5-.lidabstand/.2.0 let fl = 0.5-.(2.0-.augenlaenge)/.4.0 let fr = 2.5+.(2.0-.augenlaenge)/.4.0 let lid dx offen = let woffen = lidwinkel *. (2.0*.offen-.1.0) in let offen = 0.5 +. aug_rad *. sin woffen in let maxoffen = 0.5 +. aug_rad *. sin lidwinkel in let unterlid = konvertiere_polygon [Spline (pul,(1.0,lidmin),(2.0,lidmin),pur)] in let unterrahmen = konvertiere_polygon [ Strecke (pur,(nr,1.0)); Strecke ((nr,1.0),(nl,1.0)); Strecke ((nl,1.0),pul); ] in let oberlid = konvertiere_polygon [Spline (pol,(1.0,offen),(2.0,offen),por)] in let oberrand = konvertiere_polygon [Spline (por,(2.0,maxoffen),(1.0,maxoffen),pol)] in let wimper = [Strecke ((0.0,0.0),(0.0,wimplaeng *. sin woffen))] in let wimpern = konvertiere_polygon (List.concat (list_for 1 anz_wimpern (fun i -> let (x,y),Some winkel = punkt_auf_polygon_relativ oberlid ((float_of_int i-.0.5)/.(float_of_int anz_wimpern)) in verschiebe_polygon x y (drehe_polygon winkel wimper)))) in let oberrahmen = konvertiere_polygon [ Strecke (pol,(fl,0.5)); Strecke ((fl,0.5),(fl,1.5)); Strecke ((fl,1.5),(fr,1.5)); Strecke ((fr,1.5),(fr,0.5)); Strecke ((fr,0.5),por); ] in let grund = konvertiere_polygon [ Strecke ((0.0,0.0),(1.0,0.0)); Strecke ((1.0,0.0),(1.0,1.0)); Strecke ((1.0,1.0),(0.0,1.0)); Strecke ((0.0,1.0),(0.0,0.0)); ] in let einmal = verschiebe_dinge dx 0.0 [ flaeche blau [unterlid; unterrahmen]; Strich (schwarz,[unterlid]); flaeche gruen [oberlid; oberrand]; flaeche rot [oberrand; oberrahmen]; Strich (gruen,[oberrand]); Strich (schwarz,[oberlid; wimpern]); ] in male (erzeuge_vektorbild ( flaeche rot [grund] :: einmal @ (verschiebe_dinge 2.0 0.0 einmal))) (1.0/.32.0) (monochrom durchsichtig 1 1) let lidhoehe = lidabstand /. 8.0 +. aug_rad*.sin lidwinkel *. 0.75 let schattenrad = sqrt (schattenversatz*.schattenversatz +. lidhoehe*.lidhoehe) let schattenhaut dx haut schatten = male (erzeuge_vektorbild [Dicker_Strich (schatten,schattenrad*.0.75, [konvertiere_polygon [ Strecke ((0.5+.schattenversatz+.dx,0.0),(1.5-.schattenversatz+.dx,0.5)); Strecke ((0.5+.schattenversatz+.dx,1.0),(1.5-.schattenversatz+.dx,0.5)); Strecke ((1.5+.schattenversatz+.dx,0.5),(2.5-.schattenversatz+.dx,0.0)); Strecke ((1.5+.schattenversatz+.dx,0.5),(2.5-.schattenversatz+.dx,1.0)); ]])]) (schattenrad*.0.5) (monochrom haut 1 1) let anz = 4 let div = float_of_int(anz-1) let lider ?spezial dx schwarz haut lidf schatten weiss = kombiniere_bildchen anz (if dx = -2.0 then 1 else 2) (List.concat (list_for 0 1 (fun j -> list_for 0 (anz-1) (fun i -> i,j, let lid = lid dx (float_of_int i /. div) in let haut' = if j=0 && dx = -1.0 then schattenhaut dx haut schatten else monochrom haut 1 1 in if spezial=Some () && i=anz-1 && j=1 then monochrom durchsichtig 1 1 else let lid = if spezial=Some () && i=anz-1 then blau_absolut lid else lid in misch_bilder lid haut' (monochrom lidf 1 1) (monochrom weiss 1 1) schwarz)))) let kern_auge nummer mit_weiss pup_rad x y = let farbe1 = farbe_aus_array nummer farben1 in let farbe2 = farbe_aus_array nummer farben2 in let streifen = streifenanzahlen.(nummer) in let r,winkel = polar x y in if r <= iris_rad then if r <= pup_rad then schwarz else let r = (r-.pup_rad)/.(iris_rad-.pup_rad) in if r <= 1.0 -. abs_float (sin (winkel *.float_of_int streifen/.2.0)) then farbe2 else farbe1 else if mit_weiss then weiss else durchsichtig let auge gric nummer mit_weiss pup_rad richtung = let richtung,abstand = match richtung with | None -> 0.0,0.0 | Some r -> r,2.0 in let drehung = atan2 abstand sicht_abstand in let drunter = abstrahiere gric (durchschnitt aa (berechne (gric*aa) (1,1, (fun (x,y) -> let x,y = x-.0.5, y-.0.5 in let z = sqrt (aug_rad*.aug_rad -. x*.x -. y*.y) in let x,y = dreh (-.richtung) x y in let x,z = dreh drehung x z in let x,y = dreh richtung x y in kern_auge nummer mit_weiss pup_rad x y)))) in if mit_weiss then misch_bilder (lid (-.1.0) 1.0) (monochrom haut 1 1) (monochrom haut 1 1) drunter schwarz else drunter let phasen = 4 let phasenf = float_of_int phasen let zeilen = 2 let schauphasen = (phasenf+.2.0)*.float_of_int zeilen let augen gric nummer = kombiniere_bildchen (phasen+2) (4*zeilen+1) (List.concat (list_for 0 (4*zeilen) (fun j -> list_for 0 (phasen+1) (fun i -> i,j, if j=4*zeilen then if i>phasen then auge gric nummer false pup_rad_gross None else auge gric nummer true (pup_rad_klein +. (pup_rad_gross-.pup_rad_klein)*.(float_of_int i) /. phasenf) None else let i,j = i+(zeilen-1-j mod zeilen)*(phasen+2), j/zeilen in let winkel = pi *. float_of_int j /. 2.0 -. atan2 (2.0 *. float_of_int i -. schauphasen) schauphasen in auge gric nummer true pup_rad_gross (Some winkel))))) ;; let gric,command,outname = Gen_common.parse_args () in let teil = coprefix command 2 in match teil with | "Auge" -> (* Das hier ist fuer "mdAuge", alles andere fuer "ma..." *) (* Hier hat outname womoeglich den falschen Wert, naemlich "mdAuge.xpm" statt "mdAuge.ppm". Der ist aber nur falsch, wenn er nicht durch -o angegeben wurde. Also nochmal nachschauen. *) let outname = ( let gibt_o = ref false in for i=1 to Array.length Sys.argv - 1 do if Sys.argv.(i)="-o" then gibt_o := true done; if !gibt_o then outname else command^".ppm" ) in gib_ppm_aus outname (berechne gric (2,2, (fun (x,y) -> kern_auge 4 true pup_rad_gross (x-.1.0) (y-.1.0)))) | "LidA" -> gib_xpm_aus (rgb_grau 1.0) outname (berechne gric (lider ~spezial:() (-.1.0) schwarz haut haut schatten durchsichtig)) | "LidB" -> gib_xpm_aus (rgb_grau 1.0) outname (berechne gric (lider (-.1.0) blitzschwarz blitzhaut blitzhaut blitzschatten durchsichtig)) | "LidC" -> gib_xpm_aus haut_rgb outname (berechne gric (lider (-.2.0) schwarz durchsichtig haut durchsichtig weiss)) | "LidD" -> gib_xpm_aus blitzhaut_rgb outname (berechne gric (lider (-.2.0) blitzschwarz durchsichtig blitzhaut durchsichtig weiss)) | _ -> let nummer = int_of_string teil - 1 in gib_xpm_aus haut_rgb outname (berechne gric (augen gric nummer)) cuyo-2.1.0/datasrc/pics/mdHimmel.pov0000644000175000017500000000204112422656734014263 00000000000000/* Copyright 2008,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Version = 49; #include "dungeon.inc" union { sphere { 0 1/2 hollow pigment { gradient x colour_map { [0 rgb z] [1 rgb <0,1/2,1>] } translate -x/2 } finish {ambient 1} scale 1000 } rotate 90*HimmelVersion*y } cuyo-2.1.0/datasrc/pics/i3Bunt.xcf0000644000175000017500000022710212422656734013656 00000000000000gimp xcf file `BB:gimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 16.000000) (yspacing 16.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) \UL dunkler3      X x jz////////////////////////////////////////////////////////////////f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3+f3////////////////////////////////////////////////////////////////@H $ Gitter     t] }ht  ~c0%5EHX/:ε8z5zV+zVz+z V+zV 3,V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV+zVz+z V+zV 3,V38V3:3/:ε8z5zV+zVz+z V+zV 3,V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV+zVz+z V+zV 3,V38V3:3/:ε8z5zV+zVz+z V+zV 3,V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV+zVz+z V+zV 3,V38V3:3:86****+,89999999999999999999999986****+,8:M/:ε8z +zV1zV +VzzV +3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V +zV1zV +VzzV +3VzzV36V38V3:3/:ε8z +zV1zV +VzzV +3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V +zV1zV +VzzV +3VzzV36V38V3:3/:ε8z +zV1zV +VzzV +3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V +zV1zV +VzzV +3VzzV36V38V3:3:8 5 6666568999999999999999999999998 5 6666568:M:ε8z5zV )zVz )zV)zV 3*V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV )zVz )zV)zV 3*V38V3:3:ε8z5zV )zVz )zV)zV 3*V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV )zVz )zV)zV 3*V38V3:3:ε8z5zV )zVz )zV)zV 3*V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V5zV )zVz )zV)zV 3*V38V3:3m:86(((()*89999999999999999999999986(((()*8::ε8z )zV /zV )VzzV )3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V )zV /zV )VzzV )3VzzV36V38V3:3:ε8z )zV /zV )VzzV )3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V )zV /zV )VzzV )3VzzV36V38V3:3:ε8z )zV /zV )VzzV )3VzzV36V38V3:3;ΙV3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:z9εz7V )zV /zV )VzzV )3VzzV36V38V3:3m:8 3 4 4 4 4 368999999999999999999999998 3 4 4 4 4 368:ε8εzzV4εzzVV3V0εzzVV3.εzzVV33+εzzVV30εzzVV30εzzVV30εzzVV33zzVV36V393ε8εzzV4εzzVV3V0εzzVV3.εzzVV33+εzzVV30εzzVV30εzzVV30εzzVV33zzVV36V393ε8εzzV4εzzVV3V0εzzVV3.εzzVV33+εzzVV30εzzVV30εzzVV30εzzVV33zzVV36V393j96 2 .+'**-0 369l@H $ Plus     9 Y\\\ )4C@{JLLS_UY: 2.dd# !d dddddddddddddYdddYdddddddddddddddd $dd.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Ydd# ϛ}Y!ϛ}Y d dddddddddddddYdddYdddddddddddddddd $dd/2  2s.sJ# sJ!ssJ sJJJsJJJ1JJsJJ1JJJJ1YJJJJ1J1YJJJJ1J1JJJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1.JJ17- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Ys,ϛ}YssJ# ϛ}YssJ!sϛ}Y11Js sJsJ sJJJsJJJ1JJsJJ1JJJJ1YJJJJ1J1YJJJJ1J1JJJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1/JJ12  2.# ! YY $.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Y# ϛ}Y!ϛ}Y  YY $/2  2 /$!         $.. 99999999999999 --$!         $/ 2  2.dd! dddd ddddddYddddY}ddddYYdddd77dddddddddddddddd $dd.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Ydd! ϛ}Yϛ}Yd ddd ddddddYddddY}ddddYYdddd77dddddddddddddddd $dd/2  2s.sJ! sJsJssJ sJJsJJJ1YJJsJJ1Y}JJJJ1YYJJJJ1J177JJJJ1J1JJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1.JJ17- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Ys,ϛ}YssJ! ϛ}YssJsJsϛ}Y11Js sJsJ sJJsJJJ1YJJsJJ1Y}JJJJ1YYJJJJ1J177JJJJ1J1JJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1/JJ12  2.!  YY}YY77 $.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Y! ϛ}Yϛ}Y  YY}YY77 $/2  2 /! "! $.. 99999999999999 --! "! $/ 2 <;d;d/ d,dd)dddd dddddd ddddddddddYdddYY}dddYYdddd77dddddddddddd $dd.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y (ϛ}Y 'ϛ}Y d'ϛ}Y d'ϛ}Yd'ϛ}Ydd'ϛ}Ydddd ϛ}Ydϛ}Ydd ddd ddddddddddYdddYY}dddYYdddd77dddddddddddd $dd/2 <sJ;;/ ,s)sJ sJsJsJ sJJJsJJJ1JJsJJ1YJJJJ1YY}JJJJ1J1YYJJJJ1J177JJJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1.JJ17- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y (ϛ}Y sJ'ϛ}Y 'ϛ}Y 'ϛ}Y'ϛ}Ys'ϛ}YssJ ϛ}YssJsϛ}Y11JsJ sJsJ sJJJsJJJ1JJsJJ1YJJJJ1YY}JJJJ1J1YYJJJJ1J177JJJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1/JJ12 <;;/ ,)  YYY}YY77 $.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y (ϛ}Y 'ϛ}Y 'ϛ}Y 'ϛ}Y'ϛ}Y'ϛ}Y ϛ}Yϛ}Y  YYY}YY77 $/2 <<<0 - *"$%#""""""!$.. 9999999999 ( ( ( ( (("$%#""""""!$/ 2 t 2.dd ddd ddddddddddddddYdddd7dddddddddddddddd $dd.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Ydd ϛ}Yϛ}Y ddd ddddddddddddddYdddd7dddddddddddddddd $dd/2 t 2s.sJ sJsJsJ sJJsJJJ1JJsJJ1JJJJ1YJJJJ1J17JJJJ1J1JJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1.JJ17- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Ys,ϛ}YssJ ϛ}YssJsϛ}Y11JsJ sJsJ sJJsJJJ1JJsJJ1JJJJ1YJJJJ1J17JJJJ1J1JJJ1J1JJJJ1J1JJJJ1J1J1 $JJ1/JJ12 t 2.  Y7 $.7- YY78}}Y78}YY8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y8ϛ}Y-ϛ}Y,ϛ}Y ϛ}Yϛ}Y  Y7 $/2 t 2 /  ""!$.. 99999999999999 --  ""!$/ 2 >>>>   dddd  dddd ddd dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dd dddd    ss sJsJ sJ sJsJssJssJ sJ sJJsJJJ1JJsJJJ1JsJJ1JJssJJ1JJJ1JJJJ1JJJ1J1JJJJ1J1JJJ1J1JJJJ1J1JJJ1J1JJJJ1J1JJJ1J1JJJ1J1JJJ1J1JJJJ1J1J1 J1 JJ1JJ1JJ1JJ1                 <=:    =<d<d<d<d<d϶d϶}}Yd}Y7dY7d77 =J<<<<<϶϶}}Y}Y71Y717171 =<<<<<϶϶}}Y}Y7Y777 ======7 s 2.dd$  ddd dddddddddddddddddddddddddddddddddd %dd/2  s 2s.sJ$ sJ sJsJ sJJJsJJJ1JJssJJ1JJJJ1JJJJ1J1JJJJ1J1JJJJ1J1JJJJ1J1JJJJ1J1J1 %JJ1/JJ12  s 2.$    %/2  s 2 /%  !!!!!!!!%/ 2  4 dd ddd dddddddddddddddddddddddddddddddddd dd 4 ssJ sJsJssJ sJJsJJJ1JsJJ1JJJ1JJJ1J1JJJ1J1JJJ1J1JJJ1J1JJJJ1J1J1 JJ1JJ1 4     4  ]  @H $ Dreieck     []W ]w1=I ]emAv}D}jY g5g'ggggg))gg))ggD))g g))#g g))VggD) )Vz gg))3VV!gD))3"gD))'gD)))gD) )-gD) )2gD))gD))3 εz D)V3 zV)V3 V3)'zV3 3)'zV3)(ΙVV)'ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+gΙzV+g ΙzV'g ΙzVggΙzVDDgg))g gg))ggD))g g))#g g))VggD) )Vz gg))3VV!gD))3"gD))'gD)))gD) )-gD) )2gD))5gD))9D) ε5'εεVVVVεzVVε VV# V VεzV Vz εVV3VV!zVV3"zVV'zVV)zV V-zV V2zVVzVV3 εz zVV3 zV)V3 V3V'zV3 3V'zV3V(ΙVVV'ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+εΙzV+ ΙzV'ε ΙzVεΙzVzzVV VVεzVVε VV# V VεzV Vz εVV3VV!zVV3"zVV'zVV)zV V-zV V2zVV5zVV9zV ]5]']]]]] ]]  ]]9  ] ]  #] ]  V]]9 Vz ]]  3VV!]9  3"]9  ']9  )]9 -]9 2]9  ]9  3 εz 9 V3 zV)V3 V3 'zV3 3 'zV3 (ΙVV 'ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+]ΙzV+] ΙzV'] ΙzV]]ΙzV99]] ] ]]  ]]9  ] ]  #] ]  V]]9 Vz ]]  3VV!]9  3"]9  ']9  )]9 -]9 2]9  5]9  99  4&         !"%)-012999999999999* *&         !"%)- 1 59W g5ggDg)gg))gg))ggD))"g g) )"g g) )#ggD))#Vgg))#3gD))")ggD))&gD)))gD) )-gD) )2gD))5gD))33D)V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+gΙzV+g ΙzVgDg ΙzVg)gΙzVDDgg))g gg))ggD))"g g) )"g g) )#ggD))#Vgg))#3gD))")ggD))&gD)))gD) )-gD) )2gD))5gD))9D) ε5zεVεVVVVεzVV"ε V V" V V%εzV4VεVV#3zVV"VzVV&zVV)zV V-zV V2zVV5zVV33zVV3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+εΙzV+ ΙzVzε ΙzVVεΙzVzzVV VVεzVV"ε V V" V V%εzV4VεVV#3zVV"VzVV&zVV)zV V-zV V2zVV5zVV9zV ]5]]9] ]]  ]]  ]]9  "] ] "] ] #]]9  #V]]  #3]9  " ]]9  &]9  )]9 -]9 2]9  5]9  339 V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+]ΙzV+] ΙzV]9] ΙzV] ]ΙzV99]]  ] ]]  ]]9  "] ] "] ] #]]9  #V]]  #3]9  " ]]9  &]9  )]9 -]9 2]9  5]9  99  4####"%)-012999999999999* *####"%)- 1 59WgD<)=)=)=)g)g )gggD))ggg))gg))ggD))g g))#g g))VggD) )Vzgg))3VVgD))3 gD))'gD)))gD) )-gD) )2gD))5gD))33D)V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV gD)ΙzV )*ΙzV )*ΙzV )*ΙzV )gΙzV )g ΙzV )g ΙzVggD))gΙzVDDgg))g gg))ggD))g g))#g g))VggD) )Vzgg))3VVgD))3 gD))'gD)))gD) )-gD) )2gD))5gD))9D)z<V=V=V=VεV VεzVVεVVVVεzVVε VV# V VεzV VzεVV3VVzVV3 zVV'zVV)zV V-zV V2zVV5zVV33zVV3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV z)ΙzV V*ΙzV V*ΙzV V*ΙzV VεΙzV V ΙzV Vε ΙzVzVVεΙzVzzVV VVεzVVε VV# V VεzV VzεVV3VVzVV3 zVV'zVV)zV V-zV V2zVV5zVV9zV]9< = = = ] ]  ]]]9 ]]]  ]]  ]]9  ] ]  #] ]  V]]9 Vz]]  3VV]9  3 ]9  ']9  )]9 -]9 2]9  5]9  339 V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV ]9)ΙzV  *ΙzV  *ΙzV  *ΙzV  ]ΙzV  ] ΙzV  ] ΙzV]]9 ]ΙzV99]]  ] ]]  ]]9  ] ]  #] ]  V]]9 Vz]]  3VV]9  3 ]9  ']9  )]9 -]9 2]9  5]9  99 @<<<<  %%%""""!   %)-01299999999 ( ( ( (    %%%""""!   %)- 1 59g5g'ggDgg))gg))ggD)) g g) ) g g))!ggD))!Vgg))!3gD))")ggD))&gD)))gD) )-gD) )2gD))5gD))33D)V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+gΙzV+g ΙzV'g ΙzVggDgΙzVDDgg))g gg))ggD)) g g) ) g g))!ggD))!Vgg))!3gD))")ggD))&gD)))gD) )-gD) )2gD))5gD))9D)ε5'εzεVVVVεzVV ε V V  VV#εzV4VεVV!3zVV"VzVV&zVV)zV V-zV V2zVV5zVV33zVV3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+εΙzV+ ΙzV'ε ΙzVzεΙzVzzVV VVεzVV ε V V  VV#εzV4VεVV!3zVV"VzVV&zVV)zV V-zV V2zVV5zVV9zV]5]']]9]]  ]]  ]]9  ] ] ] ]  !]]9  !V]]  !3]9  " ]]9  &]9  )]9 -]9 2]9  5]9  339 V3;V3;zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV+]ΙzV+] ΙzV'] ΙzV]]9]ΙzV99]]  ] ]]  ]]9  ] ] ] ]  !]]9  !V]]  !3]9  " ]]9  &]9  )]9 -]9 2]9  5]9  99 ] 4 ####"%)-012999999999999* * ####"%)- 1 59`~gggggg))gg))gg))gg))ggD))ggD))g g) )g g) )g g))g g))ggD))ggD))ggg))ggg))ggD))gD))gD))gD))gD)) gD)) gD) ) gD) ) gD) )gD) )gD))gD))gD))gD))D)D)εεεεεVVεVVVVVVεzVVεzVVε V Vε V V VV VVεzVVεzVVεVVεVVzVVzVVzVVzVVzVV zVV zV V zV V zV VzV VzVVzVVzVVzVVzVzV]]]]]]  ]]  ]]  ]]  ]]9  ]]9  ] ] ] ] ] ]  ] ]  ]]9  ]]9  ]]]  ]]]  ]]9  ]9  ]9  ]9  ]9  ]9  ]9 ]9 ]9 ]9 ]9  ]9  ]9  ]9  9 9 g gggggg))ggg))ggg))ggg))ggD))gggD))g g) )gg g) )g g))gg g) )ggD))gggD))ggg))ggg))ggD))gD))gD))gD))gD)) gD))gD) ) gD) ) gD) )gD) )gD))gD))gD))gD))D)D)εε εεεVVεVVVVVVεzVVεzVVε V Vε V V VV V VεzVVεzVVεVVεVVzVVzVVzVVzVVzVV zVVzV V zV V zV VzV VzVVzVVzVVzVVzVzV] ]]]]]]  ]]] ]]]  ]]]  ]]9  ]]]9  ] ] ]] ] ] ]  ]] ] ]]9  ]]]9  ]]]  ]]]  ]]9  ]9  ]9  ]9  ]9  ]9  ]9 ]9 ]9 ]9 ]9  ]9  ]9  ]9  9 9   =      Wgggggg))ggg))gggD))gg g) )gg g) )gggD))ggg)) gD))"gD))ggD)))gD) ) ) gD) ))!gD)))!gD)))"D)) )εz:zV;V3)93)<)>) YεεεVVVVεzVVε V V V VεzVVεVV zVV"zVVzVVVzV V V zV VV!zVVV!zVVV"zVV Vεz:zV;V3V93V<V>V Y]]]]]] ]]]  ]]]9  ]] ] ]] ] ]]]9  ]]]  ]9  "]9  ]]9   ]9 ]9  !]9   !]9   "9   εz:zV;V3 93 < >  Y@=======;::= Yg gggg))ggg))ggg))ggg))gggD))gggD))gg g) )gg g) )gg g) )gg g))gggD))gggD))ggg))ggg))ggD))gD))gD))gD))gD)) gD)) gD) ) gD) ) gD) )gD) )gD))gD))gD))gD))D)D) ε εεεVVεVVVVVVεzVVεzVVε V Vε V V V V VVεzVVεzVVεVVεVVzVVzVVzVVzVVzVV zVV zV V zV V zV VzV VzVVzVVzVVzVVzVzV ] ]]]] ]]]  ]]]  ]]]  ]]]9  ]]]9  ]] ] ]] ] ]] ] ]] ]  ]]]9  ]]]9  ]]]  ]]]  ]]9  ]9  ]9  ]9  ]9  ]9  ]9 ]9 ]9 ]9 ]9  ]9  ]9  ]9  9 9  ] 5'!!!!!!!!  "%)- 1 59 ?gggg))gg))ggD))g g) )g g))ggD))ggg))ggD))gD))gD)) gD) ) gD) )gD))gD))D)?εεεVVVVεzVVε V V VVεzVVεVVzVVzVVzVV zV V zV VzVVzVVzV?]]]]  ]]  ]]9  ] ] ] ]  ]]9  ]]]  ]]9  ]9  ]9  ]9 ]9 ]9  ]9  9 @   x@H $ Stern     ; #(4@ W`XJ§;7)ʹ(yyyyyyyy yyyyV yʹyVV y y3V y yy3 y yy y $ y $y y V3εzzV#VzV3εzzVV3U"zV3 zV3U#Ιz3 V3U"Ιz3 3U"ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ʹ ΙzV(ΙzVyy yyyyyyyy yyyyV yʹyVV y y3V y yy3 y yy y $ y $y $y=;7)ȫ(llllllll llllV lȫlVV l l3V l ll3 l ll l $ l $l l V3εzzV#VzV3εzzVV3J"zV3 zV3J#Ιz3 V3J"Ιz3 3J"ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ȫ ΙzV(ΙzVll llllllll llllV lȫlVV l l3V l ll3 l ll l $ l $l $l=;7)(cccV@@c@@ccV@@c@@ cV@@c@@V @Vcc@VV @Vc c@3V @Vc c@@3 @Vc c@@ @V c$ @V c$@ c @ V3cεzzV#VzV3cεzzVV3&"zV3 zV3&#Ιz3 V3&"Ιz3 3&"ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV( ΙzV(cΙzV@@ccc ccV@@c@@ccV@@c@@ cV@@c@@V @Vcc@VV @Vc c@3V @Vc c@@3 @Vc c@@ @V c$ @V c$@ c$@c=c;7('         "" " 0099999999999997('         ""  "<;7)ʹyyyyy!yyyyzyyyyVzy yʹyyVy y yy3y y yy y yy y $ y $y $y V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ʹ ΙzVΙzVyyy yyyy!yyyyzyyyyVzy yʹyyVy y yy3y y yy y yy y $ y $y $y=;7)ȫlllll!llllzllllVzl lȫllVl l ll3l l ll l ll l $ l $l $l V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ȫ ΙzVΙzVlll llll!llllzllllVzl lȫllVl l ll3l l ll l ll l $ l $l $l=;7)cc@ccV@@c@@!cV@@c@@zcV@@c@@Vz@ @Vcc@@V@ @Vc c@@3@ @Vc c@@ @Vc c@@ @V c$ @V c$@ c$@ V3c2VzV3c2zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV( ΙzVccΙzV@@cc@c ccV@@c@@!cV@@c@@zcV@@c@@Vz@ @Vcc@@V@ @Vc c@@3@ @Vc c@@ @Vc c@@ @V c$ @V c$@ c$@c=c;7(###"" " 0099999999999997(###""  "<<y=y- y+ y( yʹ yyyyyyyyyyyyyyyVz yʹyVVz y y3VV y yy33 y yy y $ y $y $y V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV )ΙzV y*ΙzV y*ΙzV y*ΙzV y(ΙzV yʹ ΙzV yΙzVyyyy yyyyyyyyyyyyVz yʹyVVz y y3VV y yy33 y yy y $ y $y $y=F<l=l- l+ l( lȫ lllllllllllllllVz lȫlVVz l l3VV l ll33 l ll l $ l $l $l V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV )ΙzV l*ΙzV l*ΙzV l*ΙzV l(ΙzV lȫ ΙzV lΙzVllll llllllllllllVz lȫlVVz l l3VV l ll33 l ll l $ l $l $l=Fc<@=@- @+ @( @ @cc@@ccV@@c@@ccV@@c@@cV@@c@@Vz @Vcc@VVz @Vc c@3VV @Vc c@@33 @Vc c@@ @V c$ @V c$@ c$@ V3c2VzV3c2zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV c)ΙzV @*ΙzV @*ΙzV @*ΙzV @(ΙzV @ ΙzV @cΙzV@@ccc@@c ccV@@c@@ccV@@c@@cV@@c@@Vz @Vcc@VVz @Vc c@3VV @Vc c@@33 @Vc c@@ @V c$ @V c$@ c$@c=cF<<, * '  %%%%"""""!!"" " 00999999999 ( ( ( ( '  %%%%"""""!!""  "<p;7)ʹ(yyyy yyyyyyyyy yʹyyVy y yy3y y yy y yy y $ y $y $y V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ʹ ΙzV(ΙzVyy yyyy yyyyyyyyy yʹyyVy y yy3y y yy y yy y $ y $y $y=Fp;7)ȫ(llll lllllllll lȫllVl l ll3l l ll l ll l $ l $l $l V32VzV32zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV(ȫ ΙzV(ΙzVll llll lllllllll lȫllVl l ll3l l ll l ll l $ l $l $l=Fp;7)(ccccV@@c@@ cV@@c@@cV@@c@@@ @Vcc@@V@ @Vc c@@3@ @Vc c@@ @Vc c@@ @V c$ @V c$@ c$@ V3c2VzV3c2zV3:Ιz3:Ιz3:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV6ΙzV( ΙzV(cΙzV@@cccc ccV@@c@@ cV@@c@@cV@@c@@@ @Vcc@@V@ @Vc c@@3@ @Vc c@@ @Vc c@@ @V c$ @V c$@ c$@c=cF0;7( ###!"" " 0099999999999997( ###!""  "<> ʹ ʹ ʹʹyyyyyyyyyyyyyyyyyyyyyyyyʹyyʹyy yy yy yy yy yy yy  y  y  y y y yy ȫ ȫ ȫȫllllllllllllllllllllllllȫllȫll ll ll ll ll ll ll  l  l  l l l ll   ccccV@@ccV@@c@@c@@cV@@c@@cV@@c@@cV@@c@@cV@@c@@Vcc@@Vcc@@Vc c@@Vc c@@Vc c@@Vc c@@Vc c@@Vc c@@V c @V c @V c @V c@ c@ c@c@ccc ʹ ʹʹʹyyyyyyyyyyyyyyyyyyyyyyyyʹyyy yʹyy yyy y yy yyy y yy yyy y yy  y  y  y y y yy ȫ ȫȫȫllllllllllllllllllllllllȫlll lȫll lll l ll lll l ll lll l ll  l  l  l l l ll  ccccV@@cccV@@cc@@cc@@cV@@c@@cV@@c@@cV@@c@@cV@@c@@Vcc@@@ @Vcc@@Vc c@@@ @Vc c@@Vc c@@@ @Vc c@@Vc c@@@ @Vc c@@V c @V c @V c @V c@ c@ c@c@ccc     o;7*ʹ ʹyyyyyyyy yyyy yʹyyy y yyy y yyy y yyy y y y yy yyy6y#y εzzVyεzzVV3UyzV3UyV3U43U o;7*ȫ ȫllllllll llll lȫlll l lll l lll l lll l l l ll lll6l#l εzzVlεzzVV3JlzV3JlV3J43J o;7* ccccV@@cc@@ccV@@c@@ cV@@c@@ @Vcc@@@ @Vc c@@@ @Vc c@@@ @Vc c@@@ @V c@ @V c@@ c@@c@6c@#@ εzzV@εzzVV3&@zV3&@V3&43& =====    4 O  ʹ ʹʹyyyyyyyyyyyyyyyyyyyyyyyyy yʹyyy yʹyyy y yyy y yyy y yyy y yyy y yyy y yyy y  y  y  y y y yy FO  ȫ ȫȫlllllllllllllllllllllllll lȫlll lȫlll l lll l lll l lll l lll l lll l lll l  l  l  l l l ll FO   ccccV@@cccV@@c@@cc@@cV@@c@@cV@@c@@ccV@@c@@cV@@c@@@ @Vcc@@@ @Vcc@@@ @Vc c@@@ @Vc c@@@ @Vc c@@@ @Vc c@@@ @Vc c@@@ @Vc c@@@ @V c @V c @V c @V c@ c@ c@c@ccc F/;7)(!!!!!!!!!!!""  "< 0 ʹ ʹyyyyyyyyyyyyʹyy yy yy yy  y y y0 ȫ ȫllllllllllllȫll ll ll ll  l l l0  cccV@@c@@cV@@c@@cV@@c@@Vcc@@Vc c@@Vc c@@Vc c@@V c @V c@ c@cc  | @H $ Kreis       Nq'i) WK xjWWKxxxjWKx xjWKVx xjWKVx xjWKx xjWKx xjWK xjWK#x xjWε xj εzzV5εzzVV3W"V33 zV3K#V3 V3Kj!zV33 3WKKj!zV3KW!zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVWWj jWK xjWWKxxxjWKx xjWKVx xjWKVx xjWKx xjWKx xjWK xjWK#x xjW, xji) ZM {mZZM{{{mZM{ {mZMV{ {mZMV{ {mZM{ {mZM{ {mZM {mZM#{ {mZε {m εzzV5εzzVV3Z"V33 zV3M#V3 V3Mm!zV33 3ZMMm!zV3MZ!zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVZZm mZM {mZZM{{{mZM{ {mZMV{ {mZMV{ {mZM{ {mZM{ {mZM {mZM#{ {mZ, {mi) εzkεε zzkεzkε zkVε zkVε zkε zkε zk zk# zε εzzV5εzzVV3z"V33 zV3k#V3 V3k!zV33 3zkk!zV3kz!zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVzzε zkεε zzkεzkε zkVε zkVε zkε zkε zk zk# z, ))            #, 6999999999999994)            #, i)K9WK9 xjWWKVxxxjWKVzx xjWKVx xjWK3x xjWKx xjWK9x xjWK9xjWK#x xjW, xjvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV  ΙzVWWjK j9WK9 xjWWKVxxxjWKVzx xjWKVx xjWK3x xjWKx xjWK9x xjWK9xjWK#x xjW, xji)M;ZM; {mZZMV{{{mZMVz{ {mZMV{ {mZM3{ {mZM{ {mZM;{ {mZM;{mZM#{ {mZ, {mvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV  ΙzVZZmM m;ZM; {mZZMV{{{mZMVz{ {mZMV{ {mZM3{ {mZM{ {mZM;{ {mZM;{mZM#{ {mZ, {mi)kεVzkVεε zzkVεzkVzε zkVε zk3ε zkε zkVε zkVzk# z, vV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV  ΙzVzzkε VzkVεε zzkVεzkVzε zkVε zk3ε zkε zkVε zkVzk# z, ))"##" #, 6999999999999994)"##" #, =K<9=9=9$99!9K99WK99 xjWWK99xxxjWKVx xjWKVzx xjWKVx xjWK3x xjWKx xjWK9xjWK9!x xjW, xjvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV *ΙzV K)ΙzV 9*ΙzV 9*ΙzV 9$ΙzV9 ΙzV 9 ΙzVWWj9 jK99WK99 xjWWK99xxxjWKVx xjWKVzx xjWKVx xjWK3x xjWKx xjWK9xjWK9!x xjW, xj=M<;=;=;$;;!;M;;ZM;; {mZZM;;{{{mZMV{ {mZMVz{ {mZMV{ {mZM3{ {mZM{ {mZM;{mZM;!{ {mZ, {mvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV *ΙzV M)ΙzV ;*ΙzV ;*ΙzV ;$ΙzV; ΙzV ; ΙzVZZm; mM;;ZM;; {mZZM;;{{{mZMV{ {mZMVz{ {mZMV{ {mZM3{ {mZM{ {mZM;{mZM;!{ {mZ, {m=k<V=V=V$VV!VεkVVzkVVεε zzkVVεzkVε zkVzε zkVε zk3ε zkε zkVzkV! z, vV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV *ΙzV k)ΙzV V*ΙzV V*ΙzV V$ΙzVV ΙzV V ΙzVzzVε kVVzkVVεε zzkVVεzkVε zkVzε zkVε zk3ε zkε zkVzkV! z, =<<<#$%%%$#"""""!", 69999999999 ) ( ( ( #$%%%$#"""""!", K) !KWK99 xjWWK9xxxjWK9x xjWK9Vx xjWK93x xjWK9x xjWK9x xjWK9xjWK9!x xjW, xjvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVWWj jKWK99 xjWWK9xxxjWK9x xjWK9Vx xjWK93x xjWK9x xjWK9x xjWK9xjWK9!x xjW, xj) !MZM;; {mZZM;{{{mZM;{ {mZM;V{ {mZM;3{ {mZM;{ {mZM;{ {mZM;{mZM;!{ {mZ, {mvV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVZZm mMZM;; {mZZM;{{{mZM;{ {mZM;V{ {mZM;3{ {mZM;{ {mZM;{ {mZM;{mZM;!{ {mZ, {m) !εkzkVVεε zzkVεzkVε zkVε zkV3ε zkVε zkVε zkVzkV! z, vV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV4ΙzV) ΙzV ΙzVzzε kzkVVεε zzkVεzkVε zkVε zkV3ε zkVε zkVε zkVzkV! z, ) "##"!", 6999999999999994) "##"!", K>I  ?KKWK99WK99 xjWWK9 xjWWK9xxxjWK9xxxjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWx xjW xj xj I  ?MMZM;;ZM;; {mZZM; {mZZM;{{{mZM;{{{mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZ{ {mZ {m {m I  ?εkεkzkVVzkVVεε zzkVεε zzkVεzkVεzkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkV z z   I  KWK99WK9 xjWWK9 xjWWK9xxxjWK9xxxjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9 xjWK9x xjWx xjW xj xj I  MZM;;ZM; {mZZM; {mZZM;{{{mZM;{{{mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM; {mZM;{ {mZ{ {mZ {m {m I  εkεzkVVzkVεε zzkVεε zzkVεzkVεzkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkV zkV z z        +"WK9 xjWWK9xxxjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9 xjWK9K x xjW9& xj 9=9#ε9 εzzV9εzzVV3W9zV3K9V3Kj93WKKj;KW  +"ZM; {mZZM;{{{mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM; {mZM;M { {mZ;& {m ;=;#ε; εzzV;εzzVV3Z;zV3M;V3Mm;3ZMMm;MZ  +"εzkVεε zzkVεzkVε zkVε zkVε zkVε zkVε zkV zkVk zV& V=V#εV εzzVVεzzVV3zVzV3kVV3kV3zkk;kz =====       KWK9WK99 xjWWK9 xjWWK9xxxjWK9xxxjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWx xjW xj xj   MZM;ZM;; {mZZM; {mZZM;{{{mZM;{{{mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZ{ {mZ {m {m   εkzkVzkVVεε zzkVεε zzkVεzkVεzkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkVε zkV z z    +"!!!!!!!!!! $-  Kh KWK99 xjWWK9xxxjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjWK9x xjW xjh MZM;; {mZZM;{{{mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZM;{ {mZ {mh εkzkVVεε zzkVεzkVε zkVε zkVε zkVε zkVε zkVε zkV z H  @H $%Quadrat     %..*.6% Q+ #L&[)L,j-*'zV#VV$zVV$zVV$zVV$zVV$zVV$zVV$zVV$zV ε8εzzV#V33 εzzVV3z"V3 zV3Vz"zV33 V3z"zV3 3z"zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV7ΙzV-ΙzVzz* 'zV#VV$zVV$zVV$zVV$zVV$zVV$zVV$zVV$zVB-*'A'#d''$dA''$dA''$dA''$dA''$dA''$dA''$dA''$dA' ε8εzzV#V33 εzzVV3A"V3 zV3'A"zV33 V3A"zV3 3A"zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV7ΙzV-ΙzVdAA* d'A'#d''$dA''$dA''$dA''$dA''$dA''$dA''$dA''$dA'B-*'C)#e))$eC))$eC))$eC))$eC))$eC))$eC))$eC))$eC) ε8εzzV#V33 εzzVV3C"V3 zV3)C"zV33 V3C"zV3 3C"zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV7ΙzV-ΙzVeCC* e'C)#e))$eC))$eC))$eC))$eC))$eC))$eC))$eC))$eC)Bq-*'$##########599999 -99999999997-*'$##########)zVV%zVV#V zVV"VVzVVzzV&VzVV"3zVV#zVV!zVV$zVV$zVuV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzV zVV%ΙzVzzzVV# V zVV"VVzVVzzV&VzVV"3zVV#zVV!zVV$zVV$zVB)A''%A''#' A''"d''VddA''VzddA''#VddA''"3ddA''#dA''!dA''$dA''$dA'uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzV A''%ΙzVdAAA''# d' A''"d''VddA''VzddA''#VddA''"3ddA''#dA''!dA''$dA''$dA'B)C))%C))#) C))"e))VeeC))VzeeC))#VeeC))"3eeC))#eC))!eC))$eC))$eC)uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzV C))%ΙzVeCCC))# e) C))"e))VeeC))VzeeC))#VeeC))"3eeC))#eC))!eC))$eC))$eC)B@(%" ##59999999999999999(%" ##8zVV7zVV8V8V8V8V'V$V!zVVzVVVV"zVV"zVV"zVV"zVV3!zVV#zVV"zVV$zVuV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV*ΙzVzVV)ΙzVzVV*ΙzVV*ΙzVV*ΙzVV*ΙzVV'ΙzVV$ΙzVzzV! zVVzVVVV"zVV"zVV"zVV"zVV3!zVV#zVV"zVV$zV8A''7A''8'8'8'8'''$'!A''A''d''"dA''V!dA''V"dA''V"dA''3!dA''#dA''"dA''$dA'uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzVd*ΙzVdA'')ΙzVA''*ΙzV'*ΙzV'*ΙzV'*ΙzV''ΙzV'$ΙzVdAA'! dA''A''d''"dA''V!dA''V"dA''V"dA''3!dA''#dA''"dA''$dA'8C))7C))8)8)8)8)')$)!C))C))e))"eC))V!eC))V"eC))V"eC))3!eC))#eC))"eC))$eC)uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzVe*ΙzVeC)))ΙzVC))*ΙzV)*ΙzV)*ΙzV)*ΙzV)'ΙzV)$ΙzVeCC)! eC))C))e))"eC))V!eC))V"eC))V"eC))3!eC))#eC))"eC))$eC)@777777&# !" !!!!!!!#59999999999((((((&# !" !!!!!!!#)zVV%V#zVV zVV"VVzVVzzV&VzVV!3zVV"zVV!zVV"zVV$zVuV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzVzVV%ΙzVzzV# zVV zVV"VVzVVzzV&VzVV!3zVV"zVV!zVV"zVV$zV)A''%'#A'' A''"d''ddA''zddA''!VddA''!3ddA''"dA''!dA''"dA''$dA'uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzVdA''%ΙzVdAAd'# dA'' A''"d''ddA''zddA''!VddA''!3ddA''"dA''!dA''"dA''$dA')C))%)#C)) C))"e))eeC))zeeC))!VeeC))!3eeC))"eC))!eC))"eC))$eC)uV33;V3;zV33:zV3:zV3:ΙVV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV:ΙzV)ΙzVeC))%ΙzVeCCe)# eC)) C))"e))eeC))zeeC))!VeeC))!3eeC))"eC))!eC))"eC))$eC)(%" !#59999999999999999(%" !#zVVVVVVVVVV V,zVVVVVVVVVV VpA'''''''''' ',dA'''''''''' 'pC)))))))))) ),eC)))))))))) )p  K  zV zVVzVVzVVVVVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVzV C  A' A''A''A''d''d''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA''dA'dA' C  C) C))C))C))e))e))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC))eC)eC) C  zVVzVVzVVzVVVzVVzVVVVVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVzV B  A''A''A''A'''A''A''d''d''dA''ddA''dA''ddA''dA''ddA''dA''ddA''dA''ddA''dA''dA''dA''dA''dA'dA' B  C))C))C))C)))C))C))e))e))eC))eeC))eC))eeC))eC))eeC))eC))eeC))eC))eeC))eC))eC))eC))eC))eC)eC) BP   ::::::: /+(z$zVV#VV#zVV#zVV#zVV#zVV#zVVzVVzVzVVzVVzVV9V9V$εV!εzzVVεzzVV3zVzV3VzVV3zV"3z /+(A$A''#d''#dA''#dA''#dA''#dA''#dA''dA''A'dA''A''dA''9'9'$ε'!εzzV'εzzVV3A'zV3'A'V3A'"3A /+(C$C))#e))#eC))#eC))#eC))#eC))#eC))eC))C)eC))C))eC))9)9)$ε)!εzzV)εzzVV3C)zV3)C)V3C)"3C @888888    "   zVzVVzVVzVVzVVzVVVVVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVVzVzV   A'A''A''A''A''A''d''d''ddA''ddA''ddA''ddA''ddA''ddA''ddA''ddA''ddA''ddA''dA''dA''dA''dA''dA'dA'   C)C))C))C))C))C))e))e))eeC))eeC))eeC))eeC))eeC))eeC))eeC))eeC))eeC))eeC))eC))eC))eC))eC))eC)eC) +(%#"""""""""$  zVzVVzVVzV VV VzV VzV VzV VzV VzV VzVVzVV zV A'A''A''A' 'd' 'ddA' 'ddA' 'ddA' 'ddA' 'ddA' 'dA''dA'' dA' C)C))C))C) )e) )eeC) )eeC) )eeC) )eeC) )eeC) )eC))eC)) eC)n % @I $cuyo-2.1.0/datasrc/pics/mtr.src.xpm0000644000175000017500000001614712422656733014132 00000000000000/* XPM */ /* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 64 4 1", " c None", "# c #ff0000", "+ c #ff4040", "* c #ff8080", " **########** ", " **############** ", " **####********####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " **####** **####** ", " ******####** **####****** ", " *########** **########* ", " *#######** **#######* ", " *######* *######* ", " *#######** **#######* ", " *########** **########* ", " *##+++####** **####+++##* ", " *##+++++####** **####+++++##* ", " *##+++++++####** **####+++++++##* ", " *##+++++++++####** **####+++++++++##* ", " *##+++++++++++####** **####+++++++++++##* ", " *##+++++++++++++####** **####+++++++++++++##* ", " *##+++++++++++++++####** **####+++++++++++++++##* ", " *##+++++++++++++++++####** **####+++++++++++++++++##* ", " *##+++++++++++++++++++####** **####+++++++++++++++++++##* ", " *##+++++++++++++++++++++####** **####+++++++++++++++++++++##* ", " *##+++++++++++++++++++++++####********####+++++++++++++++++++++++##* ", " *##+++++++++++++++++++++++++############+++++++++++++++++++++++++##* ", " *##+++++++++++++++++++++++++++########+++++++++++++++++++++++++++##* ", " *##++++++++++++++++++++++++++++######++++++++++++++++++++++++++++##* ", " *##+++++++++++++++++++++++++++########+++++++++++++++++++++++++++##* ", " *##+++++++++++++++++++++++++############+++++++++++++++++++++++++##* ", " *##+++++++++++++++++++++++####+++##+++####+++++++++++++++++++++++##* ", " *##+++++++++++++++++++++####+++++##+++++####+++++++++++++++++++++##* ", " *##+++++++++++++++++++####+++++++##+++++++####+++++++++++++++++++##* ", " *##+++++++++++++++++####+++++++++##+++++++++####+++++++++++++++++##* ", " *##+++++++++++++++####+++++++++++##+++++++++++####+++++++++++++++##* ", " *##+++++++++++++####+++++++++++++##+++++++++++++####+++++++++++++##* ", " *##+++++++++++####+++++++++++++++##+++++++++++++++####+++++++++++##* ", " *##+++++++++####+++++++++++++++++##+++++++++++++++++####+++++++++##* ", " *##+++++++####+++++++++++++++++++##+++++++++++++++++++####+++++++##* ", " *##+++++####+++++++++++++++++++++##+++++++++++++++++++++####+++++##* ", " *##+++####+++++++++++++++++++++++##+++++++++++++++++++++++####+++##* ", " *########+++++++++++++++++++++++++##+++++++++++++++++++++++++########* ", " *#######+++++++++++++++++++++++++++##+++++++++++++++++++++++++++#######* ", " *######++++++++++++++++++++++++++++##++++++++++++++++++++++++++++######* ", " *#######+++++++++++++++++++++++++++##+++++++++++++++++++++++++++#######* ", " *########+++++++++++++++++++++++++##+++++++++++++++++++++++++########* ", " ******####+++++++++++++++++++++++##+++++++++++++++++++++++####****** ", " **####+++++++++++++++++++++##+++++++++++++++++++++####** ", " **####+++++++++++++++++++##+++++++++++++++++++####** ", " **####+++++++++++++++++##+++++++++++++++++####** ", " **####+++++++++++++++##+++++++++++++++####** ", " **####+++++++++++++##+++++++++++++####** ", " **####+++++++++++##+++++++++++####** ", " **####+++++++++##+++++++++####** ", " **####+++++++##+++++++####** ", " **####+++++##+++++####** ", " **####+++##+++####** ", " **############** ", " **########** ", " *######* "}; cuyo-2.1.0/datasrc/pics/dungeon_boden.inc0000644000175000017500000001176212422656734015314 00000000000000/* Copyright 2006,2008,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef(Version) #if (Version<36) #declare KeineBlumen = 1; #end #end #declare Zuf = seed(1984); #macro Grashalm() #local Stroh = pow(rand(Zuf),4); #local Farbe1 = rgb /2; #local Farbe2 = rgb /2; #local Breite = pow(rand(Zuf),1/3)/4; #local Rad = (rand(Zuf)+2)/5; sphere { (Rad-Breite)*z Rad clipped_by {plane {x 0}} clipped_by {plane {-x 0 rotate 10*y}} pigment {radial colour_map{[0 Farbe2][1/2 Farbe1][1 Farbe2]} frequency 108 } finish {ambient 1/3} translate Breite*z rotate 360*rand(Zuf)*y } #end #declare Bozof1 = function {pattern {bozo scale 1/300}} #macro Blumenstiel(Stempeldicke,Stempelflachheit,Hoehe) #local Stengeldicke = 1/50; #local Bozoschieb = 100*rand(Zuf); union { sphere_sweep { b_spline BB_Segmente+3 #local I=-1; #while (I<=BB_Segmente+1) Hoehe*I/BB_Segmente*y #if (I!=BB_Segmente) + vrotate(rand(Zuf)*Stengeldicke*2*x, 360*rand(Zuf)*y) #end Stengeldicke #local I=I+1; #end pigment {rgb <1/5,4/5,1/7>} } isosurface { function {sqrt(x*x + Stempelflachheit*y*y + z*z) + Stengeldicke*(Bozof1(x+Bozoschieb,y,z)-1/2)} threshold Stempeldicke*Stengeldicke max_gradient 8 contained_by {sphere {0 3*Stengeldicke} } translate Hoehe*y pigment {rgb <1,5/6,0>} } } #end #declare BB_Segmente = 3; #declare BB_Bluetenblaetter = 13; #macro BlumeBlau() #local Hoehe = 1/3+rand(Zuf)/6; union { Blumenstiel(2,3,Hoehe) #local I=0; #while (I R2}} clipped_by {sphere {<-X,0,Z> R2}} pigment { function {abs(x)/(sqrt(pow(R2,2)-pow(z-Z,2))-X)} colour_map{[0 rgb <1/6,1/2,1>][1 rgb <0,1/6,1>]} } rotate (rand(Zuf)*10-5)*z rotate -(rand(Zuf)*10)*x rotate (rand(Zuf)*5 + 360/BB_Bluetenblaetter*I)*y translate Hoehe*y } #local I=I+1; #end rotate 360*rand(Zuf)*y } #end #declare Bozof2 = function {pattern {bozo scale <1/50,1,1/50>}} #declare BR_Bluetenblaetter = 7; #macro BlumeRot() #local Hoehe = 1/3+rand(Zuf)/6; #local Farbe1 = rgb <1,rand(Zuf)/9,rand(Zuf)/7>; #local Farbe2 = rgb <(1+rand(Zuf))/3,0,0>; union { Blumenstiel(3/2,1,Hoehe) #local I=0; #while (I colour_map {[2/5 Farbe1][1/2 Farbe2][3/5 Farbe1]} } translate (Hoehe+Rad/2)*y } #local I=I+1; #end rotate 360*rand(Zuf)*y } #end #macro Blume() #if (rand(Zuf)>1/3) BlumeBlau() #else BlumeRot() #end #end #declare Gras = union { #local I=0; #while (I<140) object {Grashalm() translate } #local I=I+1; #end translate -1/2 } #declare Beet = union { object {Gras} object {Gras rotate 90*y} object {Gras rotate 180*y} object {Gras rotate 270*y} translate 1/2 } #declare Einheit = union { object {Beet} object {Beet translate x} object {Beet translate z} object {Beet translate x+z} #ifndef(KeineBlumen) #local I=0; #while (I<11) object { Blume() translate <2*rand(Zuf),0,2*rand(Zuf)>} #local I=I+1; #end #end } #declare Boden = union { #ifdef(Breite) #local Imax = Breite/4; #local Imin = -Imax; #local Jmax = BodenHoehe/4; #local Jmin = -Jmax; #else #local Imin=-4; #local Imax=4; #local Jmin=-4; #local Jmax=4; #end #local I=Imin; #while (I} #local J=J+1; #end #local I=I+1; #end } cuyo-2.1.0/datasrc/pics/graphik.mli0000644000175000017500000000723012422656734014136 00000000000000(* Copyright 2006,2010 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe type punkt = float * float type bildchen = int * int * (punkt -> farbe) (* Die ints sind Breite und Hhe in Elementarquadraten *) val monochrom: farbe -> int -> int -> bildchen val spiegel_x: bildchen -> bildchen val kombiniere_bildchen: int -> int -> (int * int * bildchen) list -> bildchen (* Breite, Hhe, zu kombinierende Bildchen mit Positionen *) val ueberlagerung: bildchen -> bildchen -> bildchen option -> bildchen (* ueberlagerung unten oben maske malt oben ber unten. Dabei wird die Transparenz von oben aus dem durchsichtig-Kanal von maske genommen. Ist maske None, so stattdessen aus dem von oben. Breite und Hhe des Ergebnisses sind die von unten. *) type pixelbild = int * int * farbe array array (* Die kleinen array sind Zeilen. Ein pixelbild hat den Ursprung links oben, ein bildchen links unten! *) val berechne: int -> bildchen -> pixelbild val abstrahiere : int -> pixelbild -> bildchen (* Der int ist die Anzahl an Pixeln pro Elementarquadrat. *) val ausschnitt : int -> int -> int -> int -> pixelbild -> pixelbild (* Die ints sind x0,y0,x1,y1. Der Ausschnitt ist von (x0,y0) einschlielich bis (x1,y1) ausschlielich. *) val kleb : bool -> pixelbild -> pixelbild -> pixelbild (* Hngt die Bilder aneinander. Der bool gibt an, ob das waagerecht geschehen soll (sonst senkrecht). Je nachdem mu die Hhe oder Breite der Bilder bereinstimmen. *) val durchschnitt : int -> pixelbild -> pixelbild (* Es werden je n*n pixel zusammengefasst, wobei n der int ist. Es wird erwartet, da die Mae des Bildes durch n teilbar sind. *) val extrahiere_farben: pixelbild -> palette * farbkarte val extrahiere_verteilung : pixelbild -> farbverteilung type farbreduktions_methode = | Heuristik_mittlerer_euklidischer | Heuristik_maximaler_euklidischer val reduziere_farben : farbreduktions_methode -> palette -> int -> pixelbild -> palette (* Die palette und der int sind wie bei Farbe.reduziere_farben1. *) val anz_xpm_zeichen : int val gib_xpm_aus_exakt: rgb_farbe -> string -> pixelbild -> unit val gib_xpm_aus_palette: rgb_farbe -> palette -> string -> pixelbild -> unit val gib_xpm_aus_anzahl: ?methode:farbreduktions_methode -> rgb_farbe -> int -> string -> pixelbild -> unit val gib_xpm_aus: ?methode:farbreduktions_methode -> rgb_farbe -> string -> pixelbild -> unit (* Die rgb_farbe wird bei Mischfarben fr durchsichtig und hintergrund benutzt. Der string ist der Dateiname. Die letzten beiden Versionen reduzieren auf eine Anzahl an Farben. Bei der letzten ist diese Anzahl anz_xpm_zeichen. Die Default-Methode ist dabei Heuristik_maximaler_euklidischer. *) val gib_ppm_aus: string -> pixelbild -> unit (* Der nicht-RGB-Anteil der Pixel wird ignoriert. *) val lies_xpm: string -> pixelbild val lies_ppm: string -> pixelbild val lies_pam: string -> pixelbild (* nur RGB_ALPHA *) cuyo-2.1.0/datasrc/pics/mbSchmelz.pov0000644000175000017500000000230412422656734014455 00000000000000/* Copyright 2005 by Mark Weyer Maintenance modifications 2006,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite1 = 2; #declare Hoehe1 = 4; #declare Breite0 = 0; #declare Hoehe0 = 0; #include "bunt.inc" #declare Schritte = 4; #declare Schmelzabstand = 2*(1-Schritt/(Schritte+1)); #local I=0; #while (I } #local J=J+1; #end #local I=I+1; #end cuyo-2.1.0/datasrc/pics/gen_puzzle.ml0000644000175000017500000001273012422656734014523 00000000000000(* Copyright 2006 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Helfer open Male_mit_aa let orange = von_rgb (rgbrgb 1.0 0.7 0.0) let abstand = 0.05 type kante = float * float * float -> float -> polygon (* floats: ragen nach oben und unten. float-Argumente: ragen links und rechts *) let gerade_kante = 0.0,0.0, function l -> function r -> [Strecke ((l,0.0),(1.0-.r,0.0))] let nupsi1_kante,nupsi2_kante = let rad1,rad2 = 0.02, 0.1 in let h = (rad1+.rad2)*.(sqrt 0.5) in (h+.rad1+.rad2, 0.0, function l -> function r -> [ Strecke ((l,0.0),(0.5-.h,0.0)); Bogen ((0.5-.h,rad1),rad1,true,pi*.1.5,pi*.0.25); Bogen ((0.5,h+.rad1),rad2,false,pi*.1.25,pi*.1.75); Bogen ((0.5+.h,rad1),rad1,true,pi*.0.75,pi*.1.5); Strecke ((0.5+.h,0.0),(1.0-.r,0.0));]), (0.0, h+.rad1+.rad2, function l -> function r -> [ Strecke ((l,0.0),(0.5-.h,0.0)); Bogen ((0.5-.h,-.rad1),rad1,false,pi*.0.5,pi*.1.75); Bogen ((0.5,-.h-.rad1),rad2,true,pi*.0.75,pi*.0.25); Bogen ((0.5+.h,-.rad1),rad1,false,pi*.1.25,pi*.0.5); Strecke ((0.5+.h,0.0),(1.0-.r,0.0));]) let nupsi3_kante = (* Der symmetrische Nupsi *) let rad1,rad2,d = 0.02, 0.07, 0.05 in let h1,h2,h3 = rad1+.2.0*.rad2, 2.0*.rad2, rad1+.d in h3+.rad2, h3+.rad2, function l -> function r -> [ Strecke ((l,0.0),(0.5-.h1,0.0)); Bogen ((0.5-.h1,rad1),rad1,true,pi*.1.5,0.0); Strecke ((0.5-.h2,rad1),(0.5-.h2,h3)); Bogen ((0.5-.rad2,h3),rad2,false,pi,0.0); Strecke ((0.5,h3),(0.5,-.h3)); Bogen ((0.5+.rad2,-.h3),rad2,true,pi,0.0); Strecke ((0.5+.h2,-.h3),(0.5+.h2,-.rad1)); Bogen ((0.5+.h1,-.rad1),rad1,false,pi,pi*.0.5); Strecke ((0.5+.h1,0.0),(1.0-.r,0.0)); ] let nupsi4_kante,nupsi5_kante = let d1,d2 = 0.2, 0.15 in (d2, 0.0, function l -> function r -> [ Strecke ((l,0.0),(0.5-.d1,0.0)); Spline ((0.5-.d1,0.0),(0.5,0.0),(0.5-.d1,d2),(0.5,d2)); Spline ((0.5,d2),(0.5+.d1,d2),(0.5,0.0),(0.5+.d1,0.0)); Strecke ((0.5+.d1,0.0),(1.0-.r,0.0));]), (0.0, d2, function l -> function r -> [ Strecke ((l,0.0),(0.5-.d1,0.0)); Spline ((0.5-.d1,0.0),(0.5,0.0),(0.5-.d1,-.d2),(0.5,-.d2)); Spline ((0.5,-.d2),(0.5+.d1,-.d2),(0.5,0.0),(0.5+.d1,0.0)); Strecke ((0.5+.d1,0.0),(1.0-.r,0.0));]) let waagerecht = [gerade_kante; nupsi1_kante; nupsi5_kante; nupsi3_kante; nupsi2_kante; nupsi4_kante] let senkrecht = List.map (function o,u,p -> o,u, function l -> function r -> drehe_polygon 90.0 (p l r)) waagerecht let bilder = (List.length waagerecht)*(List.length senkrecht) let puzzle waagerecht senkrecht = let ow,uw,pw = waagerecht in let ls,rs,ps = senkrecht in let oben,unten,links,rechts = abstand+.ow, abstand+.uw, abstand+.ls, abstand+.rs in let wkanten,skanten = List.map (function x,y,l,r -> verschiebe_polygon x y (pw l r)), List.map (function x,u,o -> verschiebe_polygon x 0.0 (ps u o)) in let wstriche,sstriche = List.map (function x1,x2,y -> Strecke ((x1,y),(x2,y))), List.map (function x,y1,y2 -> Strecke ((x,y1),(x,y2))) in let vorwaerts = konvertiere_polygon (List.concat ( (wkanten [2.0,unten,links,rechts; 4.0,unten,-.rechts,0.0]) @ (skanten [2.0-.rechts,0.0,0.0; 3.0-.rechts,unten,oben]) @ [wstriche [0.0,links,unten; 5.0,5.0-.rechts,1.0-.oben]; sstriche [ links,unten,0.0; 4.0-.rechts,0.0,unten; 1.0+.links,1.0,1.0-.oben; 5.0-.rechts,1.0-.oben,1.0]])) in let rueckwaerts = rueckwaerts (konvertiere_polygon (List.concat ( (wkanten [0.0,1.0-.oben,0.0,-.links; 2.0,1.0-.oben,links,rechts]) @ (skanten [2.0+.links,unten,oben; 3.0+.links,0.0,0.0])))) in let aussen = [vorwaerts;rueckwaerts] in let ersatz = [konvertiere_polygon ( (wstriche [ links,2.0-.rechts,0.0; 3.0+.links,4.0-.rechts,0.0; 2.0-.rechts,1.0+.links,1.0; 5.0-.rechts,3.0+.links,1.0]) @ (sstriche [0.0,1.0-.oben,unten; 5.0,unten,1.0-.oben]))] in let innen = [konvertiere_polygon (List.concat ( (wkanten [0.0,0.0,links,0.0; 1.0,0.0,0.0,rechts; 3.0,0.0,links,rechts; 1.0,1.0,links,rechts; 3.0,1.0,links,0.0; 4.0,1.0,0.0,rechts]) @ (skanten [0.0,unten,oben; 1.0,0.0,oben; 4.0,unten,0.0; 5.0,unten,oben]) ))] in male (erzeuge_vektorbild [flaeche orange (aussen@ersatz); Strich (schwarz,aussen@innen)]) (1.0/.32.0) (monochrom durchsichtig 5 1) let puzzles = kombiniere_bildchen 5 bilder (fst (List.fold_left (function bilder,y -> function waagerecht -> List.fold_left (function bilder,y -> function senkrecht -> (0,y,puzzle waagerecht senkrecht)::bilder, y+1) (bilder,y) senkrecht) ([],0) waagerecht)) ;; let gric,command,outname = Gen_common.parse_args () in if command<>"mpAlle" then raise (Arg.Bad command); gib_xpm_aus (rgb_grau 1.0) outname (berechne gric puzzles) cuyo-2.1.0/datasrc/pics/xpmlex.mll0000644000175000017500000000363112422656733014031 00000000000000(* Copyright 2006 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) { open Farbe module Rgb = Vektor.Vektor(Natmod.Drei) let hexzifferwert c = let w = int_of_char c in if (w>=int_of_char '0') && (w<=int_of_char '9') then w-(int_of_char '0') else if (w>=int_of_char 'A') && (w<=int_of_char 'F') then 10+w-(int_of_char 'A') else 10+w-(int_of_char 'a') let hexwert s i = (float_of_int (16*(hexzifferwert s.[i])+(hexzifferwert s.[i+1])))/.255.0 } let hexziffer = ['0'-'9''A'-'F''a'-'f'] rule xpm = parse ([' ''\t''\n']|("//"[^'\n']*'\n')|("/*"([^'*']|('*'[^'/']))*"*/"))+ { (* C/C++ whitespace *) xpm lexbuf } | [^'"']+ { (* alles auer strings *) xpm lexbuf } | '"' [^'"''\\']* '"' { (* string *) let s = Lexing.lexeme lexbuf in String.sub s 1 ((String.length s)-2) } and erstezeile = parse [' ''\t']+ { erstezeile lexbuf } | ['0'-'9']+ { int_of_string (Lexing.lexeme lexbuf) } and farbzeilenrest = parse [' ''\t']+ 'c' [' ''\t']+ { farbzeilenrest lexbuf } | "None" { durchsichtig } | "Background" { hintergrund } | '#' hexziffer hexziffer hexziffer hexziffer hexziffer hexziffer { let s = Lexing.lexeme lexbuf in von_rgb (rgbrgb (hexwert s 1) (hexwert s 3) (hexwert s 5)) } cuyo-2.1.0/datasrc/pics/pam.ml0000644000175000017500000001407312422656733013117 00000000000000(* Copyright 2005,2006,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) exception Invalid_PAM let whitespace = String.contains " \t\n" type basic_pamdata = int * int * int * int * (* width, height, depth, maxval *) int array array array type pamdata = basic_pamdata * string (* tuple type *) let rec read_token line p = let rec finish_token q = if q=(String.length line) then q else if whitespace (String.get line q) then q else finish_token (q+1) in if p=(String.length line) then None else if whitespace (String.get line p) then read_token line (p+1) else let p'=finish_token p in Some (String.sub line p (p'-p), p') let rec tokenize line p = match read_token line p with None -> [] | Some (t,p') -> t::(tokenize line p') let rec read_tupletype line p q = if p>q then "" else if whitespace (String.get line p) then read_tupletype line (p+1) q else if whitespace (String.get line q) then read_tupletype line p (q-1) else String.sub line p (q-p+1) let read_headerline channel = let line = input_line channel in if (String.length line)=0 then None else if (String.get line 0)='#' then None else match read_token line 0 with None -> None | Some (t,p) -> if t="TUPLTYPE" then Some (t::[read_tupletype line p ((String.length line)-1)]) else Some (t::(tokenize line p)) let read_pamheader channel = (* The "P7" of the magic number is already read, the "\n" is not *) let magic = input_line channel in if magic<>"" then raise Invalid_PAM else let rec parse_header ll = match read_headerline channel with None -> parse_header ll | Some ["ENDHDR"] -> ll | Some l -> parse_header (l::ll) in let header = parse_header [] in let find_num token = let line = List.find (function [] -> false | h::t -> h=token) header in match line with h::n::t -> int_of_string n in let width = find_num "WIDTH" in let height = find_num "HEIGHT" in let depth = find_num "DEPTH" in let maxval = find_num "MAXVAL" in let tuple_type = List.fold_left (function sofar -> (function [token;value] -> if token="TUPLTYPE" then value^" "^sofar else sofar | l -> sofar)) "" header in (width,height,depth,maxval,tuple_type) let rec read_number channel = let c = input_char channel in if whitespace c then read_number channel else if c='#' then ( ignore (input_line channel); read_number channel) else let rec read_rest s = let c = input_char channel in if whitespace c then s else read_rest (s^(String.make 1 c)) in int_of_string (read_rest (String.make 1 c)) let read_ppmheader channel = let width = read_number channel in let height = read_number channel in let maxval = read_number channel in (width,height,3,maxval,"") let rec read_string channel num = if num=0 then "" else let c=input_char channel in (String.make 1 c)^(read_string channel (num-1)) let numbytes n = let rec loop bytes maxplus1 = if maxplus1>n then bytes else loop (bytes+1) (maxplus1*256) in loop 0 1 let read_pam channel = match (match read_string channel 2 with "P7" -> read_pamheader channel | "P6" -> read_ppmheader channel | s -> raise Invalid_PAM) with width,height,depth,maxval,tuple_type -> let bytes = numbytes maxval in let rec read_sample sample bytes = if bytes=0 then sample else read_sample (sample*256+(input_byte channel)) (bytes-1) in let read_sample u = read_sample 0 bytes in ((width,height,depth,maxval, Array.init height (function y -> Array.init width (function x -> Array.init depth read_sample))), tuple_type) let write_pam channel ((width,height,depth,maxval,data),tuple_type) = let write_num token num = output_string channel (token^" "^(string_of_int num)^"\n") in let bytes = numbytes maxval in let rec write_sample sample bytes = if bytes=0 then () else (write_sample (sample/256) (bytes-1); output_byte channel (sample mod 256)) in let write_sample sample = write_sample sample bytes in output_string channel "P7\n"; write_num "WIDTH" width; write_num "HEIGHT" height; write_num "DEPTH" depth; write_num "MAXVAL" maxval; output_string channel ("TUPLTYPE "^tuple_type^"\n"); output_string channel "ENDHDR\n"; Array.iter (Array.iter (Array.iter write_sample)) data let pam_channel p (width,height,depth,maxval,data) = let rec outdepth sofar n = if n=depth then sofar else outdepth (if p n then sofar+1 else sofar) (n+1) in let outdepth = outdepth 0 0 in let rec from_channel inn outn = if p inn then if outn=0 then inn else from_channel (inn+1) (outn-1) else from_channel (inn+1) outn in let from_channel = from_channel 0 in (width,height,outdepth,maxval, Array.init height (function y -> Array.init width (function x -> Array.init outdepth (function n -> data.(y).(x).(from_channel n))))) let pam_stack (width1,height1,depth1,maxval1,data1) (width2,height2,depth2,maxval2,data2) = (width1,height1,depth1+depth2,maxval1, Array.init height1 (function y -> Array.init width1 (function x -> Array.init (depth1+depth2) (function n -> if n0.0 then dx,hoehe else -.dx,-.hoehe in [Spline ((-.breite/.2.0, -.dy/.2.0), (-.breite/.2.0+.dx*.4.0/.3.0, dy*.5.0/.6.0), (breite/.2.0-.dx*.4.0/.3.0, dy*.5.0/.6.0), (breite/.2.0, -.dy/.2.0))] let dspline winkel hoehe breite relhoehe = let hoehe,relhoehe = if winkel>0.0 then hoehe,relhoehe else -.hoehe,1.0-.relhoehe in let koeff = List.hd (List.filter (fun k -> k>relhoehe) (Polynome.loese_3 4.0 (-.3.0*.relhoehe-.9.0) (12.0*.relhoehe) (-.4.0*.relhoehe*.relhoehe))) in let dx = hoehe /. tan winkel in let dx,dy = if winkel>0.0 then dx,hoehe else -.dx,-.hoehe in let max = 1.0 in let faktor = 1.0 +. List.hd (Polynome.loese_3 (4.0/.max) (-.9.0) 6.0 (-.1.0)) in [Spline ((-.breite/.2.0, -.hoehe/.2.0), (-.breite/.2.0+.hoehe*.koeff/.tan winkel, hoehe*.(koeff-.0.5)), (-.breite/.6.0, hoehe*.(relhoehe-.0.5)), (0.0, hoehe*.(relhoehe-.0.5))); Spline ((0.0, hoehe*.(relhoehe-.0.5)), (breite/.6.0, hoehe*.(relhoehe-.0.5)), (breite/.2.0-.hoehe*.koeff/.tan winkel, hoehe*.(koeff-.0.5)), (breite/.2.0, -.hoehe/.2.0)); ] let gesicht ?(drehung=0.0) ?(verschiebung=0.0) ?(mitkopf=false) blick ?(augezu=false) ?(lid=false) ?(profil=false) brauenrichtung brauenpos brauenwinkelaussen brauenwinkelinnen mundspec x y farbe = let augenradius = 0.1 in let augenabstand = 0.3 in let augenhoehe = 0.1 in let pupillenradius = 0.03 in let brauenlaenge = augenradius*.1.6 in let brauensep = 0.05 in let braueneffektaussen = brauenlaenge*.0.1 in let braueneffektinnen = brauenlaenge*.0.2 in let mundhoehe = -.0.2 in let lidwinkel = 200.0 in let panikmundwellenlaenge = 0.2 in let panikmundamplitude = 0.1 in let augezusteigung = 0.5 in let blickrichtung,blicksynchron = match blick with | None -> None,false | Some (r,s) -> Some r, s in let xaugelinks = if profil then 0.3 else -.augenabstand/.2.0 in let xaugerechts = augenabstand/.2.0 in let yauge = augenhoehe in let augedoppel spiegel p = if profil then p else if spiegel then p @ (spiegel_polygon (verschiebe_polygon (-.xaugerechts-.xaugelinks) 0.0 p)) else p @ (verschiebe_polygon (xaugerechts-.xaugelinks) 0.0 p) in let augenrand,augenflaechen,lid = if lid then let oben = konvertiere_polygon [ Bogen ((xaugelinks,yauge),augenradius,true, pi*.(0.5-.lidwinkel/.360.0), pi*.(0.5+.lidwinkel/.360.0)); Bogen ((xaugerechts,yauge),augenradius,true, pi*.(0.5-.lidwinkel/.360.0), pi*.(0.5+.lidwinkel/.360.0)); ] in let unten = konvertiere_polygon [ Bogen ((xaugelinks,yauge),augenradius,true, pi*.(0.5+.lidwinkel/.360.0), pi*.(2.5-.lidwinkel/.360.0)); Bogen ((xaugerechts,yauge),augenradius,true, pi*.(0.5+.lidwinkel/.360.0), pi*.(2.5-.lidwinkel/.360.0)); ] in let dx = augenradius*.sin(lidwinkel*.pi/.360.0) in let dy = augenradius*.cos(lidwinkel*.pi/.360.0) in let mitte = konvertiere_polygon [ Strecke ((xaugelinks-.dx,yauge+.dy),(xaugelinks+.dx,yauge+.dy)); Strecke ((xaugerechts-.dx,yauge+.dy),(xaugerechts+.dx,yauge+.dy)); ] in [oben;unten;mitte], [flaeche weiss [unten; rueckwaerts mitte]], [flaeche farbe [oben; mitte]] else if augezu then [konvertiere_polygon (augedoppel false ( [Strecke ((xaugelinks-.augenradius,yauge-.augenradius*.augezusteigung), (xaugelinks+.augenradius,yauge+.augenradius*.augezusteigung)); Strecke ((xaugelinks-.augenradius,yauge+.augenradius*.augezusteigung), (xaugelinks+.augenradius,yauge-.augenradius*.augezusteigung))]))], [], [] else let augen = [konvertiere_polygon (augedoppel (not blicksynchron) [Kreis ((xaugelinks,yauge),augenradius)])] in augen, [flaeche weiss augen], [] in let blickweite,blickrichtunglinks = match blickrichtung with | None -> 0.0,0.0 | Some r -> augenradius*.0.5,r in let pupillen = if augezu then [] else [konvertiere_polygon (augedoppel (not blicksynchron) (verschiebe_polygon xaugelinks yauge (drehe_polygon blickrichtunglinks (verschiebe_polygon blickweite 0.0 [Kreis ((0.0,0.0),pupillenradius)]))))] in let braue x richtung pos winkellinks effektlinks winkelrechts effektrechts = let sl = effektlinks *. sin winkellinks in let cl = effektlinks *. cos winkellinks in let sr = effektrechts *. sin winkelrechts in let cr = effektrechts *. cos winkelrechts in (verschiebe_polygon x yauge (drehe_polygon richtung (verschiebe_polygon (augenradius+.brauensep) (brauenlaenge*.pos) [Spline ((-.sl,0.0), (0.0,-.cl), (0.0,-.brauenlaenge-.cr), (-.sr,-.brauenlaenge))]))) in let brauen = augedoppel true ( braue xaugelinks brauenrichtung brauenpos brauenwinkelaussen braueneffektaussen brauenwinkelinnen braueneffektinnen) in let mundprofil offenvorn offenhinten winkelvorn winkelhinten laenge effektvorn effekthinten = let neigung = (winkelvorn+.winkelhinten-.pi)/.2.0 in let sn,cn = sin neigung, cos neigung in let xhinten,yhinten = 0.5-.laenge*.cn, mundhoehe-.laenge/.2.0*.sn in let yvorne = mundhoehe+.laenge/.2.0*.sn in let wv,wh = winkelvorn+.neigung, winkelhinten+.neigung in let yvo,yvu = yvorne+.offenvorn/.2.0, yvorne-.offenvorn/.2.0 in let xvo = sqrt(kopfradius*.kopfradius-.yvo*.yvo) in let xvu = sqrt(kopfradius*.kopfradius-.yvu*.yvu) in let dxho,dyho = -.offenhinten/.2.0*.sin wh, offenhinten/.2.0*.cos wh in let dxv,dyv = effektvorn*.cos wv, effektvorn*.sin wv in let dxh,dyh = effekthinten*.cos wh, effekthinten*.sin wh in let kwo = atan2 yvo xvo in let kwu = atan2 yvu xvu in [Spline ((xvo,yvo),(xvo+.dxv,yvo+.dyv), (xhinten+.dxho+.dxh,yhinten+.dyho+.dyh),(xhinten+.dxho,yhinten+.dyho)); Bogen ((xhinten,yhinten),offenhinten/.2.0,true, winkelhinten+.neigung+.pi*.0.5,winkelhinten+.neigung+.pi*.1.5); Spline ((xhinten-.dxho,yhinten-.dyho), (xhinten-.dxho+.dxh,yhinten-.dyho+.dyh),(xvu+.dxv,yvu+.dyv),(xvu,yvu)); Bogen ((0.0,0.0),kopfradius,false,kwu,kwo); ] in let mund = match mundspec with | MBogen (kruemmung,breite) -> if kruemmung=0.0 then [Strecke ((-.breite/.2.0,mundhoehe),(breite/.2.0,mundhoehe))] else let radius = breite/.2.0 /. sin(kruemmung/.2.0) in let hoehe = radius *. (1.0-.cos(kruemmung/.2.0)) in let y = mundhoehe+.radius-.hoehe/.2.0 in let radius,winkel1,winkel2 = if kruemmung>0.0 then radius,(3.0*.pi-.kruemmung)/.2.0,(3.0*.pi+.kruemmung)/.2.0 else -.radius,(pi+.kruemmung)/.2.0,(pi-.kruemmung)/.2.0 in [Bogen ((0.0,y),radius,true,winkel1,winkel2)] | MSpline (winkel,hoehe,breite) -> verschiebe_polygon 0.0 mundhoehe (spline winkel hoehe breite) | MDSpline (winkel,hoehe,breite,relhoehe) -> verschiebe_polygon 0.0 mundhoehe (dspline winkel hoehe breite relhoehe) | MPanik1 -> let ziel_x = sqrt(kopfradius*.kopfradius -. mundhoehe*.mundhoehe) in let punkt n = (ziel_x-.panikmundwellenlaenge*.float_of_int n/.6.0, mundhoehe +. (match n mod 6 with | 0 | 3 -> 0.0 | 1 | 2 -> panikmundamplitude | 4 | 5 -> -.panikmundamplitude) *. 2.0 /. float_of_int ((n+7)/3)) in [Spline (punkt 0, punkt 1, punkt 2, punkt 3); Spline (punkt 3, punkt 4, punkt 5, punkt 6); Spline (punkt 6, punkt 7, punkt 8, punkt 9); Spline (punkt 9, punkt 10, punkt 11, punkt 12); Spline (punkt 12, punkt 13, punkt 14, punkt 15); ] | MPanik2 -> mundprofil 0.15 0.1 2.7 0.7 0.6 0.2 0.2 | MPanik3 -> mundprofil 0.1 0.05 pi 0.8 0.3 0.1 0.05 | MOSpline (owinkel,ohoehe,breite,uwinkel,uhoehe) -> let opos,upos = if owinkel<0.0 then (uhoehe-.ohoehe)/.2.0, 0.0 else if uwinkel>0.0 then 0.0, (uhoehe-.ohoehe)/.2.0 else uhoehe/.2.0, -.ohoehe/.2.0 in (verschiebe_polygon 0.0 (mundhoehe+.opos) (spline owinkel ohoehe breite)) @ (verschiebe_polygon 0.0 (mundhoehe+.upos) (spiegel_polygon (spline uwinkel uhoehe breite))) | MODSpline (winkel,ohoehe,breite,orelhoehe,uhoehe,urelhoehe) -> (verschiebe_polygon 0.0 (mundhoehe+.uhoehe/.2.0) (dspline winkel ohoehe breite orelhoehe)) @ (verschiebe_polygon 0.0 (mundhoehe-.ohoehe/.2.0) (spiegel_polygon (dspline (winkel-.pi) uhoehe breite urelhoehe))) | _ -> [] in let mund = konvertiere_polygon mund in let mund_flaeche = match mundspec with | MODSpline _ -> [flaeche (grau 0.3) [mund]] | _ -> [] in let zaehne = match mundspec with | MOSpline _ -> [ flaeche weiss [konvertiere_polygon [ Strecke ((-0.4,-0.4),(0.4,-0.4)); Strecke ((0.4,-0.4),(0.4,0.4)); Strecke ((0.4,0.4),(-0.4,0.4)); Strecke ((-0.4,0.4),(-0.4,-0.4)); ]]; Strich (grau 0.3, [konvertiere_polygon [ Strecke ((-0.4,mundhoehe),(0.4,mundhoehe)); Strecke ((-0.2,-0.4),(-0.2,0.4)); Strecke ((-0.1,-0.4),(-0.1,0.4)); Strecke ((0.0,-0.4),(0.0,0.4)); Strecke ((0.1,-0.4),(0.1,0.4)); Strecke ((0.2,-0.4),(0.2,0.4)); ]]); flaeche durchsichtig [mund; konvertiere_polygon [ Strecke ((-0.45,-0.45),(0.45,-0.45)); Strecke ((0.45,-0.45),(0.45,0.45)); Strecke ((0.45,0.45),(-0.45,0.45)); Strecke ((-0.45,0.45),(-0.45,-0.45)); ]]; ] | _ -> [] in let mund = if mitkopf then [mund; konvertiere_polygon [Kreis ((0.0,0.0),kopfradius)]] else [mund] in let kopf = if match mundspec with | MPanik2 | MPanik3 -> true | _ -> mitkopf then [flaeche farbe mund] else [] in verschiebe_dinge (x+.0.5+.verschiebung) (y+.0.5) (drehe_dinge drehung ( zaehne @ kopf @ augenflaechen @ [ flaeche schwarz pupillen; Strich (schwarz,pupillen); ] @ lid @ mund_flaeche @ [ Strich (schwarz, konvertiere_polygon brauen :: mund @ augenrand); ])) let nur_schema gesicht farbe = schema farbe @ gesicht 0.0 0.0 farbe @ gesicht 0.0 1.0 farbe @ gesicht 1.0 0.0 farbe @ gesicht 1.0 1.0 farbe let fallend = gesicht (Some (280.0,false)) 120.0 0.2 (pi*.0.25) (pi*.0.75) (MSpline (pi*.0.6,0.11,0.15)) let leichtveraergert = gesicht None 80.0 0.6 (pi*.0.25) (pi*.1.5) (MSpline (pi/.4.0,0.02,0.4)) let entspannt = gesicht (Some (270.0,true)) ~lid:true 110.0 0.6 (pi*.0.15) (pi*.0.85) (MBogen (pi*.0.2,0.5)) let stoned = gesicht (Some (50.0,false)) 100.0 0.5 (pi*.0.15) (pi*.0.5) (MSpline (-.0.5*.pi, 0.15,0.7)) let panik mund = gesicht (Some (0.0,false)) ~profil:true 150.0 0.3 (pi*.0.25) (pi*.0.75) mund let veraergert = gesicht None 60.0 1.1 (pi*.0.25) (pi*.1.5) (MDSpline (pi*.0.3,0.06,0.5,0.35)) let verdraengt = gesicht ~drehung:(-.10.0) (Some (190.0,true)) 80.0 0.5 (pi*.0.25) (pi*.0.75) (MDSpline (pi*.0.3,0.06,0.4,0.2)) let aufkommend = gesicht None ~augezu:true 90.0 0.5 (-.pi*.0.25) (pi*.0.75) (MDSpline (pi*.0.5,0.02,0.5,-.0.5)) let verzweifelt = gesicht ~verschiebung:0.05 None ~augezu:true 105.0 0.5 (pi*.0.25) (pi*.0.75) (MDSpline (pi*.0.5,0.02,0.4,0.5)) let nachfallend = gesicht (Some (80.0,false)) 120.0 0.25 (pi*.0.15) (pi*.0.85) (MSpline (-.pi*.0.25,0.1,0.5)) let freundlich = gesicht None 120.0 0.3 (pi*.0.25) (pi*.0.75) (MSpline (-.pi*.0.3,0.1,0.55)) let verraten = gesicht None 115.0 0.2 (pi*.0.5) (pi*.0.5) (MDSpline (pi*.0.3,0.05,0.45,0.8)) let besorgt = gesicht (Some (70.0,false)) 90.0 0.55 (pi*.0.25) (pi*.1.75) (MDSpline (pi*.0.2,0.06,0.5,0.7)) let aergerlich = gesicht None 75.0 0.75 (-.pi*.0.2) (pi*.1.3) (MSpline (pi*.0.3, 0.07, 0.45)) let besiegt = gesicht (Some (270.0,false)) ~lid:true 110.0 0.3 (pi*.0.2) (pi*.1.3) (MDSpline (pi*.0.55, 0.04, 0.5, 0.3)) let aengstlich = gesicht None 130.0 0.0 (pi*.0.1) (pi*.0.9) (MODSpline (pi*.0.5, 0.07, 0.45, 0.9, 0.08, 0.4)) let schmerzend = gesicht None 100.0 0.3 (-.0.2*.pi) (1.2*.pi) (MODSpline (pi*.0.55, 0.1, 0.5, 0.5, 0.1, 0.6)) let laechelnd = gesicht None 125.0 0.2 (pi*.0.25) (pi*.0.75) (MOSpline (-0.15*.pi, 0.05, 0.55, -0.4*.pi, 0.15)) let grinsend mitkopf = gesicht ~mitkopf:mitkopf None 65.0 0.9 (-.pi*.0.2) (pi*.1.2) (MOSpline (-0.15*.pi, 0.04, 0.5, -0.4*.pi, 0.16)) let wuetend = gesicht None 65.0 0.9 (-.pi*.0.2) (pi*.1.2) (MOSpline (0.4*.pi, 0.16, 0.45, 0.15*.pi, 0.04)) let gelangweilt = gesicht (Some (280.0,false)) ~lid:true 100.0 0.4 (0.15*.pi) (0.85*.pi) (MDSpline (pi*.0.2, 0.03, 0.4, 0.7)) let gesichter farbe = fallend 0.0 0.0 farbe @ entspannt 1.0 0.0 farbe @ leichtveraergert 2.0 0.0 farbe @ veraergert 3.0 0.0 farbe @ panik MPanik1 0.0 1.0 farbe @ spiegel_dinge (panik MPanik1 (-.2.0) 1.0 farbe) @ verdraengt 2.0 1.0 farbe @ spiegel_dinge (verdraengt (-.4.0) 1.0 farbe) @ verzweifelt 0.0 2.0 farbe @ spiegel_dinge (verzweifelt (-.2.0) 2.0 farbe) @ nachfallend 2.0 2.0 farbe @ aufkommend 3.0 2.0 farbe @ freundlich 0.0 3.0 farbe @ verraten 1.0 3.0 farbe @ besorgt 0.0 4.0 farbe @ aergerlich 1.0 4.0 farbe @ besiegt 2.0 4.0 farbe @ aengstlich 2.0 3.0 farbe @ schmerzend 3.0 4.0 farbe @ laechelnd 0.0 5.0 farbe @ wuetend 1.0 5.0 farbe @ grinsend false 2.0 5.0 farbe let koepfe farbe = verschiebe_dinge 0.0 6.0 (schema farbe) @ panik MPanik2 (1.0/.3.0) 0.0 farbe @ spiegel_dinge (panik MPanik2 (-.5.0/.3.0) 1.0 farbe) @ panik MPanik3 (2.0/.3.0) 2.0 farbe @ spiegel_dinge (panik MPanik3 (-.4.0/.3.0) 3.0 farbe) @ grinsend true (1.0/.3.0) 4.0 farbe @ grinsend true (2.0/.3.0) 5.0 farbe let gras = nur_schema gelangweilt (von_rgb (rgb_grau (1.0/.3.0))) let grau = nur_schema stoned (von_rgb (rgb_grau (2.0/.3.0))) let farben = [| 1.0,0.9,0.2; 1.0,0.2,0.1; 0.5,0.3,1.0; 1.0,0.4,0.8; 0.0,0.8,0.1; 0.2,0.7,1.0; 0.6,0.3,0.2; |] let hintergrundfarbe = rgb_grau 1.0 ;; let gric,command,outname = Gen_common.parse_args () in let command = coprefix command 3 in let w,h,c,p = match command with | "Gras" -> 2,2,hintergrundfarbe,gras | "Grau" -> 2,2,hintergrundfarbe,grau | _ -> let number = int_of_string (suffix command 1) in let command = cosuffix command 1 in let r,g,b = farben.(number-1) in let farbe = rgbrgb r g b in (match command with | "Gesichter" -> 4,6,farbe,gesichter (von_rgb farbe) | "Koepfe" -> 2,8,hintergrundfarbe,koepfe (von_rgb farbe)) in Graphik.gib_xpm_aus c outname (Graphik.berechne gric (male (erzeuge_vektorbild p) strichdicke (Graphik.monochrom durchsichtig w h))) cuyo-2.1.0/datasrc/pics/ipStart.xcf0000644000175000017500000006076212422656734014147 00000000000000gimp xcf fileBBG UnbenanntC `C `C `C `gimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 16.000000) (yspacing 16.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) REbene2     QRue,I9F]            &/........ . . . . . . Ƒ      '#"   Ƒ  Ƒ Ƒ                           &  ,,,,,,,, , , , , , ,v vv vvvv  v              vv' v! v v  v vvvvvvѢvѢvvvvvvv vvvvv vvvvvvvvvvvvvvvvvvvvvvvvvv vvv vvvѢ v                             &  ,,,,,,,, , , , , , ,                           '  !                                                      ++++++3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +++++&'(             87-            ƑƑ  #%')+-/+)'%#! "$&(*, .   Ƒ  Ƒ  # % ' ) +-/,                    vvvvvvvv !#%')++v)v'v%v#v!vvvv v"v$v&v(v*v, v. vvvvvvv vv v v     ! # % ')+, ˇ                             !#%')++ ) ' % # !     " $ & ( * ,  .                    !  #  % ')+<:86 4 2 0.,*(&$" !#%')+-/1 1/-+)'%#! "$&(*,.0 2 4 68:<&///// / . . . . . . . . . .Ƒ Ƒ &&&&<%&'$ " !  ƑƑƑƑ  Ƒ Ƒ         &   ----, , , , , , , , , ,vvv vvv &       & & & <%&'!  !   vѢ vѢvvvvvvvѢvvvvvvѢvvv vv vv v           &   ----, , , , , , , , , ,        &       & & & <%&'!   !                               %+++++ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3++++++'(               6/ !"#$$$$ $ #"" Ƒ                    ' &%$#"  Ƒ Ƒ ""! Ƒ Ƒ #$%& !"v"v#v$v$v#v"v"v vvvvvvv                      Ѣ  Ѣ ' & % $#"vv v vv vv   " " !      v vvv #$%& !" " # $ $ # " "                      ˇ             ' & % $#"ˇ           " " !         #$%&%$#"! ( ' & % $ # "! %&78    "&++++++++++/ / / / / / /          Ƒ !"#$%&'                       ƑZ%')+-/- - - - - - - vvvvvvvv  v  v  vv v v v v v  !"#$% v v v v v v vv               v   v  vvvvv vv vvvvZ!#%')+- - - - - - -   ˇ     ˇ  ˇ       ˇ          !"#$%                 ˇ ˇ          ˇ  ˇ             ˇ    Z!#%')+                 -,f<:86 4 2 0.,*(&$" !#%   ! "#$%%%%%%%%%%$#"! Ƒ Ƒ            -  %$#" !   ƑƑ$%&         ! " # # % % % % %v%vv%vv%v$v#v"v!v vvvvѢvvvvv vv vv v v  v v v v v  v  v- v   vvv%v$v#v"v !v  v vvvѢvvvvvvvvv$v%v&          ! " # # % % % % % % % % $ # " !                                  -        % $ # " !               $ % &$#"! (' & % $ # " ! 56789:;.-/////// `@0 Ebene     .RRaaS UXZZ]*_ EE  EE || || ||E||||||E|| || || || || ||E||||||E|| || |||| || ||E||||||E|| || || || || ||E||||||E|| || || EE   EE  EE   EE || ||E||||||E|| || || ||E||||||E|| |||| ||E||||||E|| || || ||E||||||E|| || EE   EE  EE   EE || ||E||||||E|| || || ||E||||||E|| |||| ||E||||||E|| || || ||E||||||E|| || EE   EE  E:5E  EE || || ||E|||||:||5|||E|| || || || || ||E||||||E|| || |||| || ||E|||||:||5|||E|| || || || || ||E||||||E|| || || EE   EE  EE   EE || ||E||||||E|| || || ||E||||||E|| |||| ||E||||||E|| || || ||E||||||E|| || EE   EE  EE   EE || ||E||||||E|| || || ||E||||||E|| |||| ||E||||||E|| || || ||E||||||E|| || EE   EE `@0 cuyo-2.1.0/datasrc/pics/highlight.ml0000644000175000017500000000374512422656734014316 00000000000000(* Copyright 2009 by Mark Weyer This is a manual conversion of highlight.pov which was Copyright 2006 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik let farbe r g b = rgbrgb (float_of_int r /. 255.0) (float_of_int g /. 255.0) (float_of_int b /. 255.0) let highlightrad = 16 (* Immer an blatt.h anpassen :-( *) let farbe1 = farbe 30 30 70 (* Immer an blatt.cpp anpassen :-( *) let farbe2 = farbe 50 50 120 (* Immer an menueintrag.cpp anpassen :-( *) let rad2 = float_of_int highlightrad /.32.0 let rad1 = rad2/.3.0 let bild = (3,3,fun (x,y) -> let f1,f2 = von_rgb farbe1, von_rgb farbe2 in let konv x = max 0.0 (abs_float(1.5-.x)-.0.5) in let x,y = konv x, konv y in let r = sqrt (x*.x+.y*.y) in if rrad2 then durchsichtig else misch2 f2 f1 ((r-.rad1)/.(rad2-.rad1))) let raus gric name = gib_xpm_aus farbe1 name (berechne gric bild) ;; let synopsis = "highlight options gric" in let outname = Easyarg.register_string_with_default "-o" "Output file name" "highlight.xpm" in let gric = try let [gric] = Easyarg.parse synopsis in int_of_string gric with | _ -> ( Easyarg.usage synopsis; flush stderr; raise (Arg.Bad "")) in raus gric !outname cuyo-2.1.0/datasrc/pics/distfiles0000644000175000017500000000215712422656733013721 00000000000000Makefile makefile.ml distfiles zahn.inc xpmlex.mll xpmlex.mli version.inc vektorgraphik.mli vektorgraphik.ml vektor.mli vektor.ml umriss.inc slime2.pov polynome.mli polynome.ml pam.mli pam.ml natmod.mli natmod.ml mziAlle.pov mzZahnDreh.pov mzZahn.pov mtr.src.xpm mreBasis.xpm mnv.src.xpm mkKolben.src.xpm mjZeug.src.xpm mdZiegel.pov mdStein.pov mdPlastik.pov mdHolz.pov mdHimmel.pov mdGold.pov mdGold.ml mdFels.pov mdEisen.pov mdEgoV.pov mdEgoR.pov mdEgoL.pov mdEgoHaare.pov mdEgoH.pov mdEgo.inc mdBoden.pov mbmGrau.xpm mbmGras.xpm mbUnbunt.pov mbSchmelz.pov mbBunt.pov maeSorten.pov maeSchema.pov machxpm.ml machppm.ml lreAlle.pov lrWasser.xcf lrKamin.xcf iwaAlles.xcf itrAlle.xcf ipStart.xcf i3Grau.xcf i3Bunt.xcf highlight.ml helfer.mli helfer.ml graphik.mli graphik.ml gen_tennis.ml gen_secret.ml gen_schemen.ml gen_rollenspiel.ml gen_puzzle.ml gen_octopi.ml gen_kacheln.ml gen_flechtwerk.ml gen_fische.ml gen_common.mli gen_common.ml gen_bonimali.ml gen_augen.ml gen_angst.ml genSchrift.cc font-orig.png farbe.mli farbe.ml easyarg.mli easyarg.ml dungeon_boden.inc dungeon.inc cuyopov.inc cuyo.xpm bunt.inc aehnlich.inc colors.mgk cuyo-2.1.0/datasrc/pics/machxpm.ml0000644000175000017500000001176612422656734014006 00000000000000(* Copyright 2006-2008,2010,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) exception Usage_Error of string open Farbe open Graphik open Helfer module Colour = struct type t = farbe let from_string s = match s with | "trans" -> durchsichtig | s -> let rgslash = String.index s '/' in let gbslash = String.index_from s (rgslash+1) '/' in let red = int_of_string (prefix s rgslash) in let green = int_of_string (String.sub s (rgslash+1) (gbslash-rgslash-1)) in let blue = int_of_string (coprefix s (gbslash+1)) in let f x = (float_of_int x)/.255.0 in von_rgb (rgbrgb (f red) (f green) (f blue)) end module Pixel = struct type t = int * int let from_string s = let slash = String.index s '/' in let x = int_of_string (prefix s slash) in let y = int_of_string (coprefix s (slash+1)) in x,y end module Reg_Colour = Easyarg.Register(Colour) module Reg_Pixel = Easyarg.Register(Pixel) let format = Easyarg.register_choices [ "-ppm", "Expect ppm input format"; "-rgba", "Expect RGBA pam input format"; "-xpm", "Expect xpm input format"; ] let qmethod = Easyarg.register_choices [ "-average", "Try to minimize average error when quantizing"; "-maximal", "Try to minimize maximal error when quantizing"; ] let colours = Easyarg.register_int_without_default "-colours" "Maximal number of output colours" let chars = Easyarg.register_int_without_default "-chars" "Maximal number of output chars per pixel" let recolour = Reg_Colour.register_without_default "-recolour" "Colour in format r/g/b (or \"trans\") to replace for red channel" let transcolour = Reg_Colour.register_without_default "-transcolour" "Colour in format r/g/b (or \"trans\") for bluescreening" let includepixelcolour = Reg_Pixel.register_list "-includepixelcolour" "Pixel in format x/y which colour to include in colourspace" let outname = Easyarg.register_string_without_default "-o" "Output file name. Defaults to infile.xpm if there is exactly one infile" let width = Easyarg.register_int_without_default "-width" "Output width" let rec hoch a b = if b=0 then 1 else a*(hoch a (b-1)) let ersetz f f' = if f=f' then durchsichtig else f' let bildmap f (w,h,pixel) = w,h, Array.map (Array.map f) pixel let synopsis = "machxpm options infiles" ;; let anon = Easyarg.parse synopsis in let farben = match !colours, !chars with | None, None -> anz_xpm_zeichen | None, Some chars -> hoch anz_xpm_zeichen chars | Some colours, None -> colours | Some _, Some _ -> raise (Usage_Error "Only one of -colours and -chars may be used.") in let innames = anon in let outname = match !outname with | None -> (match innames with | [inname] -> inname^".xpm" | _ -> (Easyarg.usage synopsis; raise (Arg.Bad ""))) | Some name -> name in let bilder = match !format with | Some "-ppm" -> List.map (fun inname -> lies_ppm (inname^".ppm")) innames | Some "-rgba" -> List.map (fun inname -> lies_pam (inname^".pam")) innames | Some "-xpm" -> List.map (fun inname -> lies_xpm (inname^".xpm")) innames | _ -> raise (Usage_Error "Missing or invalid specification of input format.") in let width = match !width with | None -> (match bilder with | [w,_,_] -> w | _ -> raise (Usage_Error "Missing specification of output width.")) | Some w -> w in let bild = let spez,_,_,h = List.fold_left (fun (spez,x,y0,y1) bild -> let w,h,_ = bild in let x,y0,y1 = if x+w<=width then x,y0,max y1 (y0+h) else 0,y1,y1+h in (x,y0+h,abstrahiere 1 bild)::spez, x+w, y0, y1) ([],0,0,0) bilder in let spez = List.map (fun (x,y,b) -> x,h-y,b) spez in berechne 1 (kombiniere_bildchen width h spez) in let forced_colours = let w,h,c = bild in Array.of_list (List.map (fun (x,y) -> c.(y).(x)) !includepixelcolour) in let bild = match !transcolour with | None -> bild | Some f -> bildmap (ersetz f) bild in let bild = match !recolour with | None -> bild | Some f -> bildmap (mischspezial f) bild in match !qmethod with | None -> gib_xpm_aus_exakt (rgb_grau 0.0) outname bild | Some "-average" -> gib_xpm_aus_palette (rgb_grau 0.0) (reduziere_farben Heuristik_mittlerer_euklidischer forced_colours farben bild) outname bild | Some "-maximal" -> gib_xpm_aus_palette (rgb_grau 0.0) (reduziere_farben Heuristik_maximaler_euklidischer forced_colours farben bild) outname bild cuyo-2.1.0/datasrc/pics/font-orig.png0000644000175000017500000010366112422656734014425 00000000000000PNG  IHDRsRGBPLTEٟbKGDH pHYs  tIME3, IDATxHh2\dӈH12"ŸyĸYg;`Dދc5@2+ǛAIIsȐb=_ȢyͣWXSEJ ) P(@ P(@ pc)(fП&t?m)@5j0QL]L@ >bpLyw74;nj ,Rk& oJ>"o},[uijn0Yf65D~cr|lsECԭߨA\},3gؔu>]E>rCwݤ=%E}X&=Ls{9^;3,9>ov@.Fhř$ knta ,Ngk*z2g3@=|t,'u5 l3C.xct~!*@㰏m|~=6 ,ItpPv;O!\V3Z9]`L8v, ǢޙMK)w0,SpeF +-`w,Q̽6 - w1#p쇶@X(0C.Clj^Ticm +*W=h6#[c{>`5X<1Km8 .2^ WA/虁cZ3;cg@os033u,3u쌞8᎟lAKN~ P(@ P(@ P(@ P(@ P(@ P5 zJ`Y@gj <8e3o]8X/8w3/g3Ӂp`<OGP?ؗDKn UjB.28Jp4PeSPCcŨ/# Bg~` -}6PTx~`-'ualP+г::V0e[#QjՋI,Ǚqd8kg|JU>3>ݫ Gbsu87g_9PW=N1SsvƌasuЇשaR75kgv``6\>ف}͘DCƨr?_4 JʊSr$`Ƹ lY@F?V.+ctƅ$ Utgt{3[j Ζ[ng9YƳ=-T[M/X&hejK*Vl7].Oҁ\lsͲzt tp`t`x+9\<[:(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ P(@ il@-%̽3g5 zPaY)g 0LwEj,f6uJ mЙc-AuPz`wL)0JDK 9X *yq&&@tgɊ,`HmBi:=U /ݞhgYzA@oQqr:e'i@|ZNMLCuE3.YqVZkL|} e q|OpaeO[DW6y7u5lav`60Yz-g;5:=~l&p(' ,twc ܲ'd]y!zIE) ) ?J60.oR XONqz?8/b(2v_(@ P(@ P(@ P(@ P(@ 53,$`q?_><ʂ^ֹ۟*?XpJcU:'fYaܹ353~$<}FGvg.ck&@bfdo'Ov=C/H5`#N6#RG˟NqvLS*֓IR|?#G*SGR#4uco0aFP,`K|^q0lsΥ0_wQv #rpa tD)}zXL`5ggs PtduOt&p'wCqy/51A3 @d= M&0'/޳~o7ԑthn/f4}OLNJ8Sr{>Pc?r}2>0#fwx˔ù):ܕ賁6皑q;.k Bgsn.Kܺ+Va]X8<0±ѭX4 +p7a#=՛|du0ކj8U;eoت;e] p6;@Y斁_ܔ =CmFlK .X P(@ P(@ P(@ P(@ P_l`27,D-n2ۍoOI-xx{lE뇆 L`< j$F T=y8_t`dƟOR+5X?IUp34 #o_s0@axN';3kӑq^ta~ ^`s#*_]Dja;ٙ %̨ htR5 X+gkZ?dUBJr o{7C}uy֊=):=~ &>'Ap exOixQDGXYWiKډP$W?#s|Fy.a{=RnNMֽԼE+ħku]ytu0gc8'zў$ޤ$K}0N}ݫOrţ2MM{1Lr<4iƎu7 X0N1 d3lq:.|lP_L x>I93fzw6( t;4Kz]KXqǐ# v}.([xۥ^C^9gN M! sO9]S6;v#͐M1?0|+ۤy#g.lS&:9hˆ#7W}o@ M͙W}۠DݞPhW4ꦇT,#L%ݚf>5{0wi57w˜?K.%@ P(@ P(@ P(@ P(@ PwX}0K+.QdiҚz2Zh+WR ehe.,YciM 𼐋ŭ 5ˊVfR&dhu+zwVJ=f~^6PC|O>5b 惌BQm ޲6e><*2VݳhU6cD|mo8ߖY6=&v+g2yf!@ۙgtAPUCV!f3ĖLr^ ~B'vx_ :1?^ͨ1?_I7>T"dWVQPs(Z梇#q$vKѶNq|S dޙhv4>h3}4KIg³4FXa&䷀zEcm\cḆTvLԗm4.|Y"K IDATֿX] =i]Zj97wk-6wZْ(@C~4+y a Daco.`ig{YD -#;hM`wh@KBr lf5A  x@ ,S`h@48tǙ DipS^_i]@! 3a\z Pu+pWu"dNjVZf $>nwfгtCÞ+ e=J.|6)N 5&SJWuh5nԜT}q( kfPx`o +KG# 46@߸-ɕ~ Ep#6Uy.gȼ XtTG׌gcyހUD8d#. t:`cw]s`9^Ig?|MpgJaq ܐiim:) -a!1o ٶz OVP}1/?>G}kzVFy`qqܚ Lq4f*`fM$^NƝ) 1n*l/ g}$PE_z{nKkT8u# g2c}츧yr7|SzfIug>vڝGOT=~0&%qו^G N_g^Oc#!)>P`SoYw"MaWk bczo_n.`z5NI E:&47t_ێp1=@wa|"|^n1腴jW| i;~["tB!r?r'z-11:;^:4; 1kCߗYֱ%ao2*KoCI֧tf]PtUU{C$tuM`,-n߯.^_G|6(f61Xtj>_E[7e4[m`(y'D>Ej W8ER"{ɔ`b|n&B_(@ P(@ P(@ P(@ P(@ POK}3Q.-[գOkEWgO@}- 1GǩƔ tH7ig g XK Sч.?L$|*]#o' wcQ9~m/| [Z/1ls7~u >a`-ܥ]S<v2N`` EӑLT[{ZK&u&X Z=̓1Fylb2/!Mu(Ajn{ 61SUѬoփj9:69[30 $PA`j0_76 3uROe ?3 8VUn-0> KⲀzS xlf@'_N5,G=:b'y hOm`vj .kgnu6k~aI xgWcZq9 ֱ;Gl( muRLྣ)<dw|y G]7ϫ樑T~hVSTqSaIfw8SdQCIsj](jXkA p 0<4OME&̙fNoop% `:^8 nG;}Ik`PB_UoudK,;7DzCo 3 MYبiyo]Bv{b/ylM(@ P(@ P(@ P(@ P(@ P(@ P+{s?!\>>S{հ7sEN}77G[@'*.|Ky)jePCE 7~zśGk_k|m 3ѲgA{e<40>sQ%C-eov0UI\#g4n7 lΜQ:m 7?x:o y/64N1mv-`@e'f/ZK4Oa%Mo)0tJ3*! rS{]gMk}d:r)=ݮFmHeq%]-Nډ wuA֟sNeW\>-J]=&/s;-0Gfj'HS^˗޾ϭ5t] kyIƒ]],xḩ5p Mi lY~x&\Vt'P%;0Хp60!-h?ѮcPzk7 pGGV1jt!`s@*$TRе)Јgԓ`>xңo HY &@]EgK0$ |_C$߾h2րŽ/Z10zS4ۆg VP@6 lںj3]fK &F:+zQwj77~ޚ{&"2Rv,wb#4&X.Ю?XCr/5ͬNgt ʹ4 ) S3 Uf |m-z $Y`[ Rclj9ZfoY=pB  }4׈lܙ1;0z7 `՞-9V`+9՟`@+ߛ7eHd4RcMYcc05xW}+._v ;51(.P^jW.:]bX}7kpn5ZxSǎ83gvyS[ϯRݑ @K@c3KU-6}@puvwCS2 Zqm26,C5^B40'`0Az=[-atlLp8JuW>'Zg00YE,`/cgpGD& f \#)<^S {B#0P30Q|Hzep?x$%e]+(@=xI?ߝM@d!]#pGd^ezh>N=79K;ih> `4H9Lg` ywF`tk91 [`"Ѭ} H!J3jq-|o9b.Tp4 u|"MK|i&d=@EMFI@8Sj,^ﻮ7p.y]_u!죚;_bF)YLP~0Mf{gY$O~ P(@ P(@ P(@ P(@ P漕g{yg /_Vn,TlȽM<}#c] ؇i >rd*lh`0'/2;,dswݯK&hT/[ >2u{ۿRw=V;{㌺rvhvw<`qFdca1WװtQ^ޢI䙺= Pq8:[3Sp;:jp]ZV=YGtk-0!ڦq G-P M1[|K J>w, squn08<ٌV111wnAȋqS}WOXEݓU`Bas5#^ O|ÖX$`݂ 9e$n`O2# ߑU@a Y:0xBsnAaPl`lou)lV)`a,5)2*0 %AQf(\ J)&thX`q@dKp@s`Ǯ i*--%{+J vĖp,p抝7~pgڬ~߹\`OqsLJ 6=0MfLX@c^_ L&d`aG:d_]6=- SEL^0dg\tM/dVUrV]Wc{{%vS{z,ɚs=`R2Ւ{p_2v{>naN2P-ЁF{6stz1NvKk&HM:8'ܽk t-.@|N'` B>`|1n;^GH!;0dS[@ώ'KG йh3x $ݱF=@rj"[0:qN- HGrHuS8`G #ye`$SQ}N;9' OD%} V H:|pg{aߓ#YP"c~Jty>e >k{OqP-$ 㒕岁SgeustZ/X(sP`~]bkV#y~y\8(@ P(@ P(@ P(@ ;<-_:p+@g@w@o{  =flBt+[?Pu< &KFy[_ru[06Z.X> 8P[|@2=@{r{[-@N}M~X:`WKߏ3O'`ԣ6\eun`n00 ՚tY^ȏ`B:׽409&߰=#:285ޕ@\汀2]knq*m{LG7HfO_h*zT< ` [z V/nG L$@A@j yYLl?$ˇYt)O ;s.=~z )@.0g' Hq7f8ʭ?up!C/ ?$*.9D<3l, ƫs&>iǴn}vp`2B-eHWxmuIF]vBĶrK8}K; `ʜbsmѱrDwU*qh%yp$iqPII:$0+;zL2&0.yS)]gnfB}e`z[?Y >GT\ցSW0|t`fX.,xY6PekbV(@ P(@ P(@ P(@ P(@ P(@ PwKfzUU;^?x@o:< יM`8u0|p 0NY!b)%{ \8pt @wx'cN陎X M.l Xdp>|D0 Y(6. NF=e[`4zΏhT|_%/<_t] x,`Y^' 'VCů|V P_&bH d\ :h(PN#Zbib0🯒/Ү,ay=+)0rߐ%\CPr?ѥ<A!y:r  ] g".+l~ " ekB੼.ޢ `.Pv@m*9Y Pe1С S$ <`dO5x } !=O

׵qo j *aⶅλor: G^V^7@m1 NGdw<]?i$*67+0q ).hZ ;ա0#@' vNSis%ig$P&t ˟v$jH:%k:Ѕ]j1 uW! =0yݾM gtp_O+UQ8<`3&*^.X,SyIwUzX*Œ ͐,@^_.w4 - XL ~yxvMX-iPage_FjN &0j&0DX_[<15 #׾v㷧8 D #hp\n@P/d#L-dP (05@8k[ޖ pNtCf*N#OeD0E4|Q(ӊO6B?gFjx h9> q.~b_HQ5r'X!dG2 \1npJ#lUGNkKP4 `fC$qN'a09)0OX@ 2S`@rsdEyjxG̘̅w.x@2A &ǒ$z7GuH?C'V 0x_ u0Q4#F$c=<6NlW~'.Ї89w`?f`\MxB,|@طg9 ÑneUY3 <X=mM?Gv >cu&pfjMUĚ~C3 x@x Nx~aFttH P󔞸w!Ycjm+.0S.z< fVy P|/<`f3Uf>I|=f3eXP dR[uy)-&0R)\{LT q4*ЛP'Y}Y7-c{]ypOK42?J7^lMn|)6q%A-HN ݢ W8U`=`A @֔m^A2AKʦ[MėK]40 o߁c/T`)r9غh0yT(@ P(@ P(@ P(@ P(@ |dp`Z8pt:]8]88 Y?0,K`4;0eQa7I wWHW,")|VQ.][jmYg~I+\j5a+ E`Zn``-~fۓXM|SM2,uorg4Yd?'0J., ˷6n]޶e  lγOI{xZGsz:M[;bp%ޔi+#?$'XY' x>;^4X Û=˫>u} aV`r$Sbpx"?WAo1``!G/Lg~SW!w40ab)OO{WF p$/9x ,`M՗e@1txu cM*f4VιO>a ,m2uH?eMmO< ~MG 1 9ϭx$<0;f]]^3Tu̒@Ws1KO{g.U׉z+`:XoX#4`7Lnj˙׋u0x}@;t㦷sG4Xwù|^F_m)=N /]1F _/.5rJqoQv]z;Ӂ:P;F^ZMwI=.8(@ P(@ P(@ P(@ P(@ POKf9rpII@h=ǰ F=zL:/,X\ {/ LsfaXfg t"Y kb]8pn O`pbƝ'v{,ֳWq/4, tahU Yl]jw)8B_Qj e +L͙Z/6WJW/oA[j4xY)b +p$`lQ흺C,`$\Y{,cs>Lց  tO xF $3);PB p)>~__m7]:Pˮ]aH cƪ@oJ)Z6\izK Yx``,?R`a%xXz ~wO񇅏^_(@ P(@ P(@ P(@ Ph[:Н_yP9FM_>\@2oW;Vl`a g2N1cv`QIt9@[:~U]Li<>gHfB_ ǡy@_@ &m1b<:=zϘ7 .M/> ײ㎅i &Γ @Ni\ yLOSf92ɔxrm]݁Y9^6; +gn~s`8z ؤ\/,'L\2;$yϬցX. ?&~]G#^60QCH߇v! ;,nVy9,TfT2GܗٓG&Ie͎n"60]Պ޳ ob36XaXǘe&VgZ]kHgmu\.Zk^Pɪpi(sŨcyC*0#پ%T¿ڝ0S_0ok͎ejv!9CCq6j*4-UWu%;9C;@}ͬ`n+)\.?AS8a{`Xg|۵OJmm{\\w(vLCeW˧kmށ( IqnݮX61伉YV] )&UI R@CU>H/e,]3'ږOv X`1;?8a| L˾h H2Pց1xo8?p, v+8aA|*7DfJ wfpwkSMZ[~s8 L/yO}rW`1iߗQ,hsn Hv싋/ LXI-tf_ dAPO&ӣ`[OFF~uA fu;::,.>W8ȼ(f6 @t} c\´ǥ?,X P(@ P(@ P(@ P(@ P?-\ycWOo$ p'i^a%]`*!->98E%GoNVZDcqD-ʅgH@{b7̓#dOy#P/s!?nYL`L_"2!ad(`[N3R(] (/㏻sJ0>py@yەxLue-'?@d3bDՄvأ@c>^4vOKyU?v#q N tqT[~G! n|V4#*sD]V%~?70@__[N4c;mu@( ̠}0:YÑ֑xY@yI''#`Mn߅aix&6?>&ɚ ~N/"yAzٿ;8z;lKtP! =\L@8ud<<ˁ ,@ԅ#YtA}܌gG`HMe`AAC 0?qqo!y?Cu POG@Cht$ˁx Ly`v?@F{z(!;}WLf H;j@Z-Y CԏR/=:D@ԭo!@tIC&!>00F=9)|[]%:cl035[1 ,Zֱ-C@7YtkOaJ_T/ߏ,I+߭ " Zi:Č!ҷ情q[UC#tcB+hѠ92c`wOneIhģf%{D68uݷ_eưl$[~Hj蠜;՜ 0:Z1^:9;(%瀀AYR  3Z/?"qN*0;5%s.H%g\K#?8QZ]$mѩ tsqzxf F7[Swg(`=^iVOT/K 0c["31=xśB_l8VSw Ib8_޷!b,<|H1 c^jfGDC3=wt81.%û:R` ;A ~BGA 8C0sfNP%qdx |ijwiB#=O:> 8;S _@w@9?uo`F6pxgbYi6&ƜՈx7zx2x;,wQZ: =sn^YmoS&<͊@k:(9 [:- Xv<In%+7CǾ2^gJx^* ,K P(@ P(@ P(@ P(@~Z:4+Ed/x IDATO*5> ȭ1-j=F­[Zgs \L wƙȣ\`c@ \s N{$^F,yYE ۲y{>XsѧSpbI!wOqf0:'"4aЛ H@<8 KV;|g!@B)r&Pϭރ Gl]0MrC)*ؙ^(֥60޻lm^YyY~iO&_FJY.ê{L`AU@EQژYh:Lu3t >S+3>k&o`957^iH5\(r%H:Ybrl(Ma?wJhL7pn7c '(<x@v~'3`?n)ToRvU9+¬@KUT\ @NB`, 60C-\њ{!0o֑@4`ޟ{t兲@栰py@!z c}0 ̞ yd}83&1@4]~=x \scADu' I `@h趁fiA3aǔ` z޶5Zh0 ݖgI^ ̃<>HnKe9fш / . /Vz@pA%Cz%øf#f\4]"nyfZyS5:+F`8?WMu173ؑ,kxjR+ d_Z/MFl9č)j6s Z!LR*˲9.\b ,xd '&9zgM Uxxh<m : lɖO|%,XnX)? gh(@ P(@ P(@ P(@ P״Kh,,XLлJ糁B*6v dm$-r|.lN\}#vW]{pךrZ#1?λV*aBoF{<ND7/-ߡJH P 5w`0@ZP.\PWS~Ϋ厎yvlW7Cل; +q@ obZjٲX Ph^/j];͘Yh'{.V6U]&0f 81&9Ԙ[{ٿ{Ɛ*?s,#Yu!:bk 4&un+`7Մn^ą߾goܪ0 bĨ.65z0)o;t:|x/f]?_>?<Кp|`͔}0q"` 4%ti5LQ f|`검z2ɨ)0lwК.VE$Qy M{D@mzTU L*O#J0zS2fw;&V.~: ;P>j/-`L1I%w! Xt-193~a:dtabA?/-L3:y@[oY-̻P@cD ۑ 鎞Y 6Q|u6h,`y10P2XzСBl He(HkZE}J5Ẹ&@z` کѢɢ {u3A$WT[`.vN] 1_?+l/-:'Z4dU߀mmzӿQ -f>Kֶ 'zIن[nӢ0J e-`|r!𬨷h/]iG֜[_G?@@tKv6<뷾}-ԔD/[@r:`Cϗ5YsVYOwx 3-XCͯ! ۄe i|pU wv& ٹzO5NoۆVVrnxU8PTt2@ӵ_YÝKЁS絺jhjzڍRH#zB~ߣP=G7oOpjD3`;o mg~ܧlݖF3]o1gk])$,4<7'FAbmУٍ8X_~I&F=|v{I P(@ P(@ P(@ P(@ P?b/FAWх )"ftwdub}4lΤxP, (,ׁAV(4nH^fG;gr8fOS_T?E5oJzwϝuDs'Mg>ed}`E/Ia'0CuɥTjxK '؁#IzMF눇 J-YbQ:C$?.0ļ.0~`{lM[ט6K0k<&A:?K |d pB4y0P΃nuO؏WkwhL-7xH+h&O8?U=: )%YX5N t ,Nh៺M|:{@P$Plz 0 ֽБȿ̀ kKikf p'_kX@=s/' BҫAt8 ] -;*L4kFY%ޅId?L}` 1NӭVbDȸhPO<@ S&0SQ{x`gҋ@|@\- z@ $տB >`9 ఖ $GwG=N1 X#`|A`nPa ͞"{s i|hP۪÷*z PFk.b ݺO{r5 cJб n--;O#V\ 0 qwk *pnwdgtBg zhHF{$K>L 0򀇒_^n)I^zl 0 $)hP_`Q-=>F>~ IcÁa! >/g-n١ HA7w x`t+~:}&p4x*At?NS#,lwW}sF`%x7K[0Q gRW_HS3 @l *K0NIi%hLLvNI@P.>87lZe)ZƠz$〧KMm~u kD{{f`V{ )h?$ߒӆsI$l& a^qZ݁wo[+ |iq\`Eo/vQFk\{-81QqrKKݎO>}jV5(_' V޺w󟀪2ؕLn T||ph lgg@f/F^K|u@'@ P(@ P(@ P(@ P(@ P(@ P(@y㧌@} {w:L'3~AB E)@KBk$9-@(W JXA HSQOl؀*<V2s P@0$ %U@:ΧImoXG `S~T:~pC*r /1~'gVtH蘆 [E 㒁Y#L2R5@p= y,5x oFX:Ձ?OfWN{g7ZlB4,sif]e7]RepH`!q9a7Ϙ X+=#YLSo0, Ɨ>)y#@_uy.m\YS޶ ۅ,~kCM\b0`jΦ_zmdS:NS|)MO~Ns䰈6x+EK) Ƚg oۻBL6ȹڹ"Io6:@Jp\+.euOF[pnJG=]wu׏>Bol}|bW*(|>ᶘGͨ}}+}X6Uh_..חZ7`fܸ ;YDƪ>0{Rf : M^$ZgE|:eC|^$Oh~4xR,IC.Z n춙 ܬ1 ]Jxڻ!0l^ڹ5Ro=:]Bt,󊻍4Dtfp`t t(@ P(@ P(@ P(@ P(@ KK,DDėK>D WV@0fI@ ZISDx( (`Q@Z`̀kn<⨋̀t؀Q^^V)?e3i@ˀ8s"_F@4G` u/fE`z#mYt{斗B2>YZtD5Hcz@{3i9=-Pl8 J&?蹁4d[5cMwF_!VL it'FOMsi4+>) /M ̈́;i~qr0ʖFoo=5P{xeST+ ъ݀vwB >=޺<3/6rV n5=j^4mQHi5Zjl`:Bg=c.bi7aD=t8fmه v֖`;MM#|{gkm {#fyFĸo$kWLI@iA`VРqS@H_V4^uHi^`NlV~U?&Pd0@OܤkK9xu_l3 HXG.4mwm t 2ӡ&w|`25m-z,u k0,`2;,&FW&CzwOKHc٫e.LaԹBuMF@ 62+a6o0?| c~`jfù Tt՚ѕM~bchz- ` KҾN|@>CY`f,ZsDf@C6b`}+' @;St44ioF/0Mk[/x;Rf&r4(=\z+ j`6+Jr/2/~"%cQjI@%)NUpW`t |EK: P(@ P(@ P(@ P(@ P(@ /  \/NYGZpC ODcI ! G$[X0v#bip'68 R#8{p6ؼgx@ 45c巊PhY7u 4OCǴLT@ʺM+q!f#TQfbƠK"?D `>}&{てij ݛN"*P!ewh4P# 2v 7V<`f~2UMwsS1`67{Yf36 ՓE)!ܓY4Q;otiJ(0C7踯n6  Gh,XEoݨj e':*h";+0%wE<'AKG_u83Щ^Ǽ>p=.%@ P(@ P(@ P(@ P(@ P(@uv Vҁ턛쫻yQ8Y{ <`aKx`e@qm'@)0x,Y%je`q]% /9FىQ`ΌXq08{3>hf1<գgMM-Vv DaS?;/upg|7p^`jhۄ@ >/cbRf _ ߱@ud3;H@{,G hA <@0r͗Ђ~_>AlK<"`sBM6oa1oBRX`2˄l>H'ʛSh":j!ʜl> >`ӣK0E@}R`~& L`..sn{ mq )D|B_0I MF*=ҎD a@ cqV lu@]0F@rd攆%;TwN,9%n5Vt)Ɩu *m&L lwS#@CDo8@2k#}ȰzD_Ϙ)3! ^Okp: < }>p0s,OHIUq)0u;o [<`Hnt2h!`!%ӊ|vefB0-+=6r(as3 f~#Y(du-~Ȗj:d4dhow6kɕ /T {86? ?l&buJ/UZ6ќ_d="nh;. T\hTtxҁ.p-Rauhheit +Rauhheit}} max_gradient 1.1*(1+2*Rauhheit/Rauhscale) Textur(pigment { granite #local Helligkeit=1/2; colour_map { [0.35 rgb <0.5,0.5,0.55>*Helligkeit] [0.4 rgb <0.5,0.4,0.3>*Helligkeit] [0.45 rgb <0.5,0.53,0.5>*Helligkeit] [0.7 rgb <0.5,0.53,0.5>*Helligkeit] [0.7 rgb <0.54,0.5,0.5>*Helligkeit] } scale <7,7,1>/3 rotate acos(rand(RS))/pi*180*x rotate rand(RS)*360*z translate D*y }) } #end #declare Wand = union { #local I = 0; #while (I #include #include #include #include #include #include #define dst_buch_gr 24 #define src_buch_gr 160 #define buch_vergroesserung 0.8 #define schwarzer_rand 0 // (Alt: 4) in src-Bild-Pixeln int radius; #define radius_font 5 // (Alt: 7) der 3d-Striche, in src-Bild-Pixeln #define radius_titel 21 #define alpha_threshold 50 //Alt: 85 #define testbild_gr (2 * ges_radius + 10) #define ges_radius (radius + schwarzer_rand) #define meinMax 200.0 /* von x,y,z wird nur die Richtung, nicht die Lnge verwendet */ #define licht_x (-0.6) #define licht_y (-1.3) #define licht_z (0.7) #define licht_diffus 1.1 #define licht_glanz 0.5 #define glanz_winkel_1 (M_PI / 10) #define glanz_winkel_2 (M_PI / 5) #define licht_streu (0.5) #define SDLASSERT(_) if (!(_)) { fprintf(stderr, "%s\n", SDL_GetError()); SDL_Quit(); } #define FORXY for (int x = 0; x < dst->w; x++) for (int y = 0; y < dst->h; y++) #define FORYX for (int y = 0; y < dst->h; y++) for (int x = 0; x < dst->w; x++) #define FORXYP for (int x = 0; \ fprintf(stderr, "."), x < dst->w || (fprintf(stderr, "\n"), 0); \ x++) \ for (int y = 0; y < dst->h; y++) /* A 32-Bit-surface, to copy the pixel format from */ SDL_Surface * gSampleSurface32 = 0; /* Converts a surface to a 32-bit-surface with alpha. The original surface is deleted. */ void convertSurface32(SDL_Surface *& s) { /* Silly: The only way I know to create a SDL_PixelFormat is using SDL_CreateRGBSurface; so we need a "sample surface" to get the format from... */ SDL_Surface * tmp = SDL_ConvertSurface(s, gSampleSurface32->format, SDL_SWSURFACE); SDLASSERT(tmp); SDL_FreeSurface(s); s = tmp; } /* Creates a 32-bit-surface with alpha. After filling it with your data, you should convert it to screen format */ SDL_Surface * createSurface32(int w, int h) { union { Uint32 f; Uint8 k[4];} rmask, gmask, bmask, amask; /* Die richtigen Bits der Masken auf 1 setzen; das Problem ist, dass welches die richtigen Bits sind von der Enianness abhaengen. Das folgende macht's richtig: */ rmask.f = gmask.f = bmask.f = amask.f = 0; rmask.k[0] = gmask.k[1] = bmask.k[2] = amask.k[3] = 0xff; SDL_Surface * s = SDL_CreateRGBSurface(SDL_HWSURFACE, w, h, 32, rmask.f, gmask.f, bmask.f, amask.f); SDLASSERT(s); return s; } void initSDL() { /* Initialize the SDL library */ SDLASSERT(SDL_Init(SDL_INIT_VIDEO) == 0); /* Clean up on exit */ atexit(SDL_Quit); /* Set the name of the window (and the icon) */ SDL_WM_SetCaption("bearb", "Bearb"); /* Initialize the display requesting a software surface BitsPerPixel = 0: Take the current BitsPerPixel SDL_ANYFORMAT: Other pixel depths are ok, too. */ //SDL_Surface * screen = SDL_SetVideoMode(100, 100, 0, // SDL_SWSURFACE/*|SDL_DOUBLEBUF*/|SDL_ANYFORMAT); //SDLASSERT(screen); gSampleSurface32 = createSurface32(1, 1); SDLASSERT(gSampleSurface32); } /*************************************************************************/ union Pix { Uint32 sdl; struct { Uint8 r, g, b, a; } f; }; bool operator ==(Pix a, Pix b) { return a.sdl == b.sdl; } Pix Pixel(Uint8 r, Uint8 g, Uint8 b, Uint8 a = 255) { Pix ret; ret.f.r = r; ret.f.g = g; ret.f.b = b; ret.f.a = a; return ret; } /* Return a reference to the pixel at (x, y); assumes that the surface is 32-Bit. NOTE: The surface must be locked before calling this! */ Pix & getLPixel(SDL_Surface *surface, int x, int y) { int bpp = surface->format->BytesPerPixel; return *(Pix *) ((Uint8 *)surface->pixels + y * surface->pitch + x * bpp); } Pix gPixelDefault = Pixel(255, 255, 255); Pix getPixel(SDL_Surface *surface, int x, int y) { if (x < 0 || y < 0 || x >= surface->w || y >= surface->h) return gPixelDefault; else return getLPixel(surface, x, y); } /*************************************************************************/ SDL_Surface * bi; SDL_Surface * src, * dst; void beginSchritt(int nw = bi->w, int nh = bi->h) { src = bi; dst = createSurface32(nw, nh); SDL_LockSurface(src); SDL_LockSurface(dst); } void endSchritt() { SDL_UnlockSurface(src); SDL_UnlockSurface(dst); SDL_FreeSurface(src); bi = dst; } void striche_reparieren() { beginSchritt(); FORXY { bool p0 = getPixel(src, x, y).f.r == 0; bool p1 = getPixel(src, x+1, y).f.r == 0; bool p2 = getPixel(src, x, y+1).f.r == 0; bool p3 = getPixel(src, x-1, y).f.r == 0; bool p4 = getPixel(src, x, y-1).f.r == 0; int nach = p1+p2+p3+p4; bool erg = p0 || nach >= 3; getLPixel(dst, x, y) = erg ? Pixel(0, 0, 0) : Pixel(255, 255, 255); } endSchritt(); } void genTestbild() { src = dst = bi = createSurface32(testbild_gr, testbild_gr); SDL_LockSurface(bi); FORXY { getLPixel(bi, x, y) = Pixel(255, 255, 255); } getLPixel(bi, testbild_gr/2, testbild_gr/2) = Pixel(0, 0, 0); SDL_UnlockSurface(bi); } void malKreis(int xm, int ym) { for (int x = -ges_radius; x <= ges_radius; x++) if (x + xm >= 0 && x + xm < dst->w) for (int y = -ges_radius; y <= ges_radius; y++) if (y + ym >= 0 && y + ym < dst->h) { double r = sqrt(x * x + y * y); if (r < ges_radius) { Pix alt = getPixel(dst, x + xm, y + ym); Uint8 neur = (Uint8) (r / ges_radius * meinMax); if (neur < alt.f.r) { getLPixel(dst, x + xm, y + ym) = Pixel(neur, (Uint8) ((x * 1.0 / ges_radius + 1) * meinMax / 2), (Uint8) ((y * 1.0 / ges_radius + 1) * meinMax / 2)); } } } } double norm(double & x, double & y, double & z) { return sqrt(x*x+y*y+z*z); } void normieren(double & x, double & y, double & z) { double n = norm(x, y, z); x /= n; y /= n; z /= n; } void drei_d() { beginSchritt(); FORXY getLPixel(dst, x, y) = Pixel(255, 0, 0); fprintf(stderr, "Kreise\n"); FORXYP { if (getPixel(src, x, y).f.r == 0) { malKreis(x, y); } } double lx = licht_x, ly = licht_y, lz = licht_z; normieren(lx, ly, lz); double gx = lx, gy = ly, gz = lz + 1; normieren(gx, gy, gz); lx *= licht_diffus; ly *= licht_diffus; lz *= licht_diffus; double glanz_cos_1 = cos(glanz_winkel_1); double glanz_cos_2 = cos(glanz_winkel_2); fprintf(stderr, "Faerbung\n"); FORXYP { Pix & p = getLPixel(dst, x, y); if (p.f.r == 255) { p = Pixel(0, 0, 0, 0); /* if (((x / 160) & 1) == ((y / 160) & 1)) p = Pixel(230, 230, 230); else p = Pixel(255, 255, 255); */ } else { double r = p.f.r / meinMax / radius * ges_radius; if (r >= 1) { p = Pixel(0, 0, 0); } else { double xx = p.f.g / meinMax * 2 - 1; double yy = p.f.b / meinMax * 2 - 1; double zz = sqrt(1 - r * r); double ldiffus = xx * lx + yy * ly + zz * lz; if (ldiffus < 0) ldiffus = 0; double lglanz = xx * gx + yy * gy + zz * gz; if (lglanz < glanz_cos_2) lglanz = 0; else if (lglanz > glanz_cos_1) lglanz = 1; else lglanz = (lglanz - glanz_cos_2) / (glanz_cos_1 - glanz_cos_2); lglanz *= licht_glanz; double l = ldiffus + licht_streu + lglanz; int lint = (int) (l * 255); if (lint < 0) lint = 0; if (lint > 2*255) lint = 2*255; Uint8 rot = lint > 255 ? 255 : lint; Uint8 gruenblau = lint < 255 ? 0 : lint - 255; p = Pixel(rot, gruenblau, gruenblau); } } } endSchritt(); } double buchSkal(int d) { double rand = (1 - buch_vergroesserung) / 2; return ((d * 1.0 / dst_buch_gr) * buch_vergroesserung + rand) * src_buch_gr; } void skalieren() { gPixelDefault = Pixel(0, 0, 0, 0); beginSchritt(dst_buch_gr * 16, dst_buch_gr * 16); fprintf(stderr, "Skalieren\n"); FORXYP { int buch = x / dst_buch_gr + 16 * (y / dst_buch_gr); double sx0 = src_buch_gr * (buch % 8) + buchSkal(x % dst_buch_gr); double sy0 = src_buch_gr * (buch / 8) + buchSkal(y % dst_buch_gr); double sx1 = src_buch_gr * (buch % 8) + buchSkal(x % dst_buch_gr + 1); double sy1 = src_buch_gr * (buch / 8) + buchSkal(y % dst_buch_gr + 1); double ges_r = 0, ges_g = 0, ges_b = 0, ges_a = 0, ges_pix = 0; for (int xx = (int) floor(sx0); xx <= (int) ceil(sx1) - 1; xx++) { double x_ant = 1; if (xx < sx0) x_ant = xx + 1 - sx0; if (xx + 1 > sx1) x_ant = sx1 - xx; for (int yy = (int) floor(sy0); yy <= (int) ceil(sy1) - 1; yy++) { double y_ant = 1; if (yy < sy0) y_ant = yy + 1 - sy0; if (yy + 1 > sy1) y_ant = sy1 - yy; double ant = x_ant * y_ant; ges_pix += ant; Pix p = getPixel(src, xx, yy); double aa = ant * p.f.a / 255; ges_r += aa * p.f.r / 255; ges_g += aa * p.f.g / 255; ges_b += aa * p.f.b / 255; ges_a += aa; } } if (ges_a < 0.001) { getLPixel(dst, x, y) = Pixel(0, 0, 0, 0); } else { ges_r /= ges_a; ges_g /= ges_a; ges_b /= ges_a; ges_a /= ges_pix; getLPixel(dst, x, y) = Pixel((Uint8) (ges_r * 255), (Uint8) (ges_g * 255), (Uint8) (ges_b * 255), (Uint8) (ges_a * 255)); } } endSchritt(); } void alpha_abrunden() { beginSchritt(); fprintf(stderr, "Alpha abrunden\n"); FORXYP { bool p0 = getPixel(src, x, y).f.a > alpha_threshold; bool p1 = getPixel(src, x+1, y).f.a > alpha_threshold; bool p2 = getPixel(src, x, y+1).f.a > alpha_threshold; bool p3 = getPixel(src, x-1, y).f.a > alpha_threshold; bool p4 = getPixel(src, x, y-1).f.a > alpha_threshold; int nachbarn = p1+p2+p3+p4; /* Bei Alpha = 0 nicht auf true setzen; da wrde die Farbe vom Pixel gar nicht stimmen */ if (nachbarn >= 3 && getPixel(src, x, y).f.a >= 1) p0 = true; if (nachbarn <= 1) p0 = false; Pix & erg = getLPixel(dst, x, y); erg = getPixel(src, x, y); erg.f.a = p0 ? 255 : 0; } endSchritt(); } void karieren() { beginSchritt(); fprintf(stderr, "Karieren\n"); FORXYP { int ka = (x / dst_buch_gr + y / dst_buch_gr) & 1; ka = ka * 80 + 140; Pix p = getPixel(src, x, y); if (p.f.a == 0) p = Pixel(ka, ka, ka); getLPixel(dst, x, y) = p; } endSchritt(); } /* Wir brauchen den blau-Kanal nicht; da kann der Alpha-Kanal rein */ void praeConvert() { beginSchritt(); fprintf(stderr, "praeConvert\n"); FORXYP { Pix p = getPixel(src, x, y); p.f.b = p.f.a; p.f.a = 255; getLPixel(dst, x, y) = p; } endSchritt(); } void ausgeben(const char * dateiname) { FILE * datei = fopen(dateiname,"wb"); if (datei==NULL) { fprintf(stderr, "Error %d attempting to open %s for writing.", errno, dateiname); exit(errno); } fprintf(datei, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nENDHDR\n", dst->w, dst->h); FORYX { Pix p = getPixel(bi,x,y); fprintf(datei, "%c%c%c%c", p.f.r, p.f.g, p.f.b, p.f.a); } } int main(int c, char ** v) { bool font = c >= 2 && strcmp(v[1], "-font") == 0; if (font) { v++; c--; } if (c != 3) { fprintf(stderr, "Usage: %s [-font] \n", v[0]); fprintf(stderr, " Or: %s -test \n", v[0]); exit(1); } initSDL(); if (font) radius = radius_font; else radius = radius_titel; bool testen = strcmp(v[1], "-test") == 0; if (testen) { fprintf(stderr, "Testbild generieren\n"); genTestbild(); } else { fprintf(stderr, "laden\n"); bi = IMG_Load(v[1]); SDLASSERT(bi); } fprintf(stderr, "->32bit\n"); convertSurface32(bi); drei_d(); if (!testen) { if (font) skalieren(); alpha_abrunden(); //karieren(); //praeConvert(); } else { karieren(); } fprintf(stderr, "speichern\n"); ausgeben(v[2]); fprintf(stderr, "ende\n"); SDL_Quit(); return 0; } cuyo-2.1.0/datasrc/pics/machppm.ml0000644000175000017500000000244012422656734013763 00000000000000(* Copyright 2011 by Mark Weyer Partly based on machxpm.ml which, at that time, was Copyright 2006-2008,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) let outname = Easyarg.register_string_without_default "-o" "Output file name. Defaults to infile.xpm" let synopsis = "machppm options infile" ;; let anon = Easyarg.parse synopsis in let inname = match anon with | [name] -> name | _ -> (Easyarg.usage synopsis; raise (Arg.Bad "")) in let outname = match !outname with | None -> inname^".ppm" | Some name -> name in let bild = Graphik.lies_xpm (inname^".xpm") in Graphik.gib_ppm_aus outname bild cuyo-2.1.0/datasrc/pics/mdEisen.pov0000644000175000017500000000544012422656734014121 00000000000000/* Copyright 2006,2008,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "dungeon.inc" #declare Schweissnaht = 0.02; #declare Dicke = 0.1; #declare Stabdicke = 0.05; #declare Rundung = 0.01; #declare Dreh1 = 3; #declare Dreh2 = 5; #declare Seitenlaenge = sqrt(0.5)/cos((45-max(Dreh1,Dreh2))/180*pi); #declare Seitengap = (1-Seitenlaenge)/2; #declare Stabdz = 2*Rundung+Schweissnaht+Stabdicke/2; #declare numStaebe = 4; #declare Stabdx = Seitenlaenge/numStaebe; #declare Krummheit = 0.1; #declare Hoehe_ = BlockHoehe*10/11; #declare Rost = function {pattern {bozo scale 1/13}} #declare Kruemmung = function {pattern {bozo}} #declare Stab = function (XX,YY,ZZ,D) { pow(mod(max(0,min(Seitenlaenge,XX-Seitengap +(Kruemmung(XX,YY,ZZ+D)-1/2)*(1-cos(YY*4*pi/Hoehe_))*Krummheit)), Stabdx)-Stabdx/2,2) + pow(max(0,YY-Hoehe_/2+Dicke/2,Dicke/2-YY),2) + pow(ZZ-Seitengap-Stabdz,2) } #macro Kaefig(D,E,Y) isosurface { function {-sqrt( pow(max(0,Schweissnaht+Rundung-sqrt( pow(max(0,Seitengap+Rundung-x,x-1+Seitengap+Rundung),2) + pow(max(0,Rundung-min(y+E,Hoehe_/2-y), min(y,Hoehe_/2-y)-Dicke+Rundung),2) + pow(max(0,Seitengap+Rundung-z,z-1+Seitengap+Rundung),2) )),2) + pow(max(0,Schweissnaht+Stabdicke/2-sqrt( min(Stab(x,y,z,D),Stab(1-z,y,x,D), Stab(1-x,y,1-z,D),Stab(z,y,1-x,D)))),2) + pow(max(0,Schweissnaht+Stabdicke/2-sqrt( pow(sqrt( pow(max(0,abs(x-1/2)-1/2+Seitengap+Stabdz),2) + pow(max(0,abs(z-1/2)-1/2+Seitengap+Stabdz),2)) - Stabdicke,2) + pow(y-Hoehe_/8,2))),2) )} threshold -Schweissnaht contained_by {box {-0.1 <1.1,Hoehe_*0.6,1.1>}} max_gradient 1.1 translate (Y)*y Textur(texture{ function {max(Rost(x,y,z),Rost(1-z,y,x),Rost(1-x,y,1-z),Rost(z,y,1-x))} texture_map { [0.75 pigment {rgb <3,5,8>/26} finish {specular 0.8}] [0.75 pigment {rgb <5,2,1>/24}] } }) } #end #declare Block = union { object {Kaefig(40,0,Hoehe_/2) translate -1/2 rotate Dreh1*y translate 1/2} object {Kaefig(0,1/4,0) translate -1/2 rotate -Dreh2*y translate 1/2} translate 1/3*y } Setze() cuyo-2.1.0/datasrc/pics/maeSorten.pov0000644000175000017500000000557612422656734014504 00000000000000/* Copyright 2007,2008 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite = 7; #declare Hoehe = 14; #declare Normale = Breite*Hoehe-2; #declare Serie = Normale/3; #include "aehnlich.inc" #ifndef(Nur_Umriss) plane { -z (-3) texture {Fassung} no_shadow } #end #declare Anzahl = Breite*Hoehe-2; #declare Plus = 1/5; #declare Exp = 3; #declare Abfall = Plus/pow(1/6,Exp); #macro PreWert(F) (1+Plus-Abfall*pow(abs(F),Exp)) #end #macro Wert(F) (max(0, PreWert(F), PreWert((F)-1), PreWert((F)+1))) #end #macro Farbe(T) rgb #end /* #declare Kontrast = 1/20; #macro PreAbstand(W1,W2) pow((log(((W1)+Kontrast)/((W2)+Kontrast))),2) #end */ #macro PreAbstand(W1,W2,Gewicht) pow((W1-W2)*Gewicht,2) #end #macro Abstand(T1,T2) #local F1=Farbe(T1); #local F2=Farbe(T2); sqrt(PreAbstand(F1.red,F2.red,0.299) + PreAbstand(F1.green,F2.green,0.587) + PreAbstand(F1.blue,F2.blue,0.114)) #end #declare Ts = array[Anzahl+1]; #declare Ts2 = array[Anzahl]; #declare DSs = array[Anzahl+1]; #local I=0; #while (I<=Anzahl) #declare Ts[I] = I/Anzahl; #local I=I+1; #end #local Iterationen = 30; #local I=0; #while (I KugelRad Textur(texture { pigment { #local N = (J*Breite+I); #if (N*10000 1 parallel point_at 0} light_source {<0,-1,-1>*10000 1/3 parallel point_at 0} light_source {<1,0,-1>*10000 1/3 parallel point_at 0} #else #ifndef(Eigenes_Licht) light_source {<-1,2,-3>*10000 1 parallel point_at 0} #end #end #macro Textur(T) texture{T} #end #end cuyo-2.1.0/datasrc/pics/mbmGras.xpm0000644000175000017500000002434112422656734014126 00000000000000/* XPM */ /* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "96 96 4 1", " c None", "# c #777777", "% c #555555", "* c #333333", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%% %%##%%% ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%% %%##%%%% ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%% %%##%%%%% ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%% %%##%%%%%* ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%%%%##%%%%%** ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%%%##%%%%%**% ", " %%#%%%%*%% %%%%%%%%%%%%%%%%%%*%%##%%%%%**%% ", " %%##%%%%*%% %%%%%%%%%%%%%%%%%%*%##%%%%%**%% %%%%%%%%%%%% ", " %%###%%%%*%% %%%%%%%%%%%%%%%%%%*##%%%%%**%% %%%%%%%%%%%%%% ", " %%##%%%%%%*%% %%%%%%%%%%%%%%%%%%*#%%%%%**%% %%##########**%% ", " %%##%%%%%%%*%% %%%%%%%%%%%%%%%%%%%%%%%%**%% %%##%%%%%%%%%%**%% ", " %%#%%%%%%%%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**%% %%#%%%%%%%%%%%%**%%%%%%%%", " %%#%%%%%%%%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**%% %%#%%%%%%%%%%%%%**%%%%%%%", " %%#%%%%%%%%*#############%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%**######", " %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", " %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", " %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", " %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", " %%#%%%%%%%%%%%%%%*******************%%%%%%%%%%%*%% %%#%%%%%%%%**************", " %%#%%%%%%%%%%%%%**%%%%%%%%%%%%%%%##%%%%%%%%%%%%**%% %%#%%%%%%%%*%%%%%%%%%%%%%", " %%#%%%%%%%%%%%%**%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%**%% %%#%%%%%%%%*%%%%%%%%%%%%%", " %%##%%%%%%%%%%**%% %%##%%%%%%%%%%%%%%%%**%% %%##%%%%%%%*%% ", " %%##**********%% %%##%%%%%******##%%%%%**%% %%##%%%%%%*%% ", " %%%%%%%%%%%%%% %%##%%%%%**%%%%%%##%%%%%**%% %%##%%%%%*%% ", " %%%%%%%%%%%% %%##%%%%%**%%%%%%%%##%%%%%**%% %%##%%%%*%% ", " %%##%%%%%**%% %%##%%%%%**%% %%#%%%%*%% ", " %##%%%%%**%% %%##%%%%%**% %%#%%%%*%% ", " ##%%%%%**%% %%##%%%%%** %%#%%%%*%% ", " #%%%%%**%% %%##%%%%%* %%#%%%%*%% ", " %%%%%**%% %%##%%%%% %%#%%%%*%% ", " %%%%**%% %%##%%%% %%#%%%%*%% ", " %%%**%% %%##%%% %%#%%%%*%% ", "%%%**%% %%##%%%%%**%% %%##%%%%%**%% %%#%%%%%%%%%%%%%%%%%%", "%%%%**%% %%##%%%%%**%% %%##%%%%%**%% %%#%%%%%%%%%%%%%%%%%%", "%%%%%**%% %%##%%%%%**%% %%##%%%%%**%% %%#%%%%%%%%%%%%%%%%%%", "#%%%%%**%% %%##%%%%%**%% %%##%%%%%**%% %%#%%%%%%%%%%%%%%%%%%", "##%%%%%**%% %%##%%%%%**%% %%##%%%%%**%%%%#%%%%%%%%%%%%%%%%%%", "%##%%%%%**%% %%##%%%%%**%% %%##%%%%%**%%%#%%%%%%%%%%%%%%%%%%", "%%##%%%%%**%% %%##%%%%%**%% %%##%%%%%**%%#%%%%%%%%%%%%%%%%%%", " %%##%%%%%**%%%%%%%%##%%%%%**%% %%##%%%%%**%#%%%%%%%%%%%%%%%%%%", " %%##%%%%%**%%%%%%##%%%%%**%% %%##%%%%%**#%%%%%%%%%%%%%%%%%%", " %%##%%%%%**######%%%%%**%% %%##%%%%%*#%%%%%%%%%%%%%%%%%%", " %%##%%%%%%%%%%%%%%%%**%% %%##%%%%%#%%%%%%%%%%%%%%%%%%", "%%%%%%%##%%%%%%%%%%%%%%**%% %%##%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%##%%%%%%%%%%%%**%% %%##%%%%%%%%%%%%%%%%%%%%%%", "##########%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%***********", "%%%%%%%%%%%%%%%%%%%%%%**%% %%##%%%%%%%%%%%%**%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%**%% %%##%%%%%%%%%%%%%%**%%%%%%%", "%%%%%%%%%%%%%%%%%%*%%%%%**%% %%##%%%%%%%%%%%%%%%%**%% ", "%%%%%%%%%%%%%%%%%%*#%%%%%**%% %%##%%%%%*******#%%%%%**%% ", "%%%%%%%%%%%%%%%%%%*##%%%%%**%% %%##%%%%%**%%%%%%##%%%%%**%% ", "%%%%%%%%%%%%%%%%%%*%##%%%%%**%% %%##%%%%%**%%%%%%%%##%%%%%**%% ", "%%%%%%%%%%%%%%%%%%*%%##%%%%%**%% %%##%%%%%**%% %%##%%%%%**%%", "%%%%%%%%%%%%%%%%%%*%%%##%%%%%**%% %%##%%%%%**%% %%##%%%%%**%", "%%%%%%%%%%%%%%%%%%*%%%%##%%%%%**%% %%##%%%%%**%% %%##%%%%%**", "%%%%%%%%%%%%%%%%%%*%% %%##%%%%%**%% %%##%%%%%**%% %%##%%%%%*", "%%%%%%%%%%%%%%%%%%*%% %%##%%%%%**%% %%##%%%%%**%% %%##%%%%%", "%%%%%%%%%%%%%%%%%%*%% %%##%%%%%**%% %%##%%%%%**%% %%##%%%%", "%%%%%%%%%%%%%%%%%%*%% %%##%%%%%**%% %%##%%%%%**%% %%##%%%", " %%#%%%%*%% %%%**%% %%##%%% ", " %%#%%%%*%% %%%%**%% %%##%%%% ", " %%#%%%%*%% %%%%%**%% %%##%%%%% ", " %%#%%%%*%% #%%%%%**%% %%##%%%%%* ", " %%#%%%%*%% ##%%%%%**%% %%##%%%%%** ", " %%#%%%%*%% %##%%%%%**%% %%##%%%%%**% ", " %%#%%%%*%% %%##%%%%%**%% %%##%%%%%**%% ", " %%#%%%%**%% %%##%%%%%**%%%%%%%%##%%%%%**%% %%%%%%%%%%%% ", " %%#%%%%%**%% %%##%%%%%**%%%%%%##%%%%%**%% %%%%%%%%%%%%%% ", " %%#%%%%%%**%% %%##%%%%%**######%%%%%**%% %%##########**%% ", " %%#%%%%%%%**%% %%##%%%%%%%%%%%%%%%%**%% %%#%%%%%%%%%%%**%% ", "%%%%%%%%%%%%%#%%%%%%%%*%% %%##%%%%%%%%%%%%%%**%%%%%%%%%%%%%%%##%%%%%%%%%%%%*%% ", "%%%%%%%%%%%%%#%%%%%%%%*%% %%##%%%%%%%%%%%%**%%%%%%%%%%%%%%%##%%%%%%%%%%%%%*%% ", "##############%%%%%%%%*%% %%#%%%%%%%%%%%###################%%%%%%%%%%%%%%*%% ", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% ", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% ", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% ", "%%%%%%%%%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%% ", "******##%%%%%%%%%%%%%%*%% %%#%%%%%%%%%%%%%%%%%%%%%%*************#%%%%%%%%*%% ", "%%%%%%%##%%%%%%%%%%%%%*%% %%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%*%% ", "%%%%%%%%##%%%%%%%%%%%%*%% %%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%*%% ", " %%##%%%%%%%%%%**%% %%##%%%%%#%%%%%%%%%%%%%%%%%% %%#%%%%%%%**%% ", " %%##**********%% %%##%%%%%*#%%%%%%%%%%%%%%%%%% %%#%%%%%%**%% ", " %%%%%%%%%%%%%% %%##%%%%%**#%%%%%%%%%%%%%%%%%% %%#%%%%%**%% ", " %%%%%%%%%%%% %%##%%%%%**%#%%%%%%%%%%%%%%%%%% %%#%%%%**%% ", " %%##%%%%%**%%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " %##%%%%%**%%%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " ##%%%%%**%%%%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " #%%%%%**%% %%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " %%%%%**%% %%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " %%%%**%% %%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% ", " %%%**%% %%#%%%%%%%%%%%%%%%%%% %%#%%%%*%% "}; cuyo-2.1.0/datasrc/pics/gen_rollenspiel.ml0000644000175000017500000000520612422656734015522 00000000000000(* Copyright 2006 by Mark Weyer Maintenance modifications 2007,2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Helfer open Male_mit_aa let rand = 3.0/.64.0 let kantenrad = 1.0/.5.0 let punktd = 2.0/.9.0 let punktrad = 1.0/.15.0 let rand' = rand+.kantenrad let punktp = 0.5-.punktd let punktp' = 0.5+.punktd let grau = rgbrgb 0.9 0.9 1.0 let normal = rgbrgb 1.0 1.0 0.8 let gras = rgbrgb 1.0 0.9 0.9 let wuerfel farbe n = let punkte = (if n mod 2 = 1 then [0.5,0.5] else []) @ (if n >= 3 then [punktp,punktp; punktp',punktp'] else []) @ (if n-2*(n mod 2) >= 2 then [punktp',punktp; punktp,punktp'] else []) @ (if n >= 6 then [punktp,0.5; punktp',0.5] else []) @ (if n >= 8 then [0.5,punktp; 0.5,punktp'] else []) in let punkte = konvertiere_polygon (List.map (fun p -> Kreis (p,punktrad)) punkte) in let aussen = konvertiere_polygon [Strecke ((rand',rand),(1.0-.rand',rand)); Bogen ((1.0-.rand',rand'),kantenrad,true,1.5*.pi,0.0); Strecke ((1.0-.rand,rand'),(1.0-.rand,1.0-.rand')); Bogen ((1.0-.rand',1.0-.rand'),kantenrad,true,0.0,0.5*.pi); Strecke ((1.0-.rand',1.0-.rand),(rand',1.0-.rand)); Bogen ((rand',1.0-.rand'),kantenrad,true,0.5*.pi,pi); Strecke ((rand,1.0-.rand'),(rand,rand')); Bogen ((rand',rand'),kantenrad,true,pi,1.5*.pi);] in male (erzeuge_vektorbild [Flaechen ([|von_rgb farbe; schwarz|], [aussen,0,None; punkte,1,Some 0]); Strich (schwarz, [aussen; punkte])]) (1.0/.32.0) (monochrom durchsichtig 1 1) let wuerfel = kombiniere_bildchen 2 4 [(0,3,wuerfel grau 0); (1,3,wuerfel normal 1); (0,2,wuerfel normal 2); (1,2,wuerfel normal 3); (0,1,wuerfel normal 4); (1,1,wuerfel normal 5); (0,0,wuerfel normal 6); (1,0,wuerfel gras 9)] ;; let gric,command,outname = Gen_common.parse_args () in if command<>"mrpAlle" then raise (Arg.Bad command); gib_xpm_aus (rgb_grau 1.0) outname (berechne gric wuerfel) cuyo-2.1.0/datasrc/pics/mbBunt.pov0000644000175000017500000000251412422656734013763 00000000000000/* Copyright 2005,2006 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Farben=16; #if (mod(Farben,2)=0) #declare Spalten=Farben+1; #declare Zeilen=Farben/2; #else #declare Spalten=Farben; #declare Zeilen=(Farben+1)/2; #end #declare Breite1=0; #declare Hoehe1=0; #declare Breite0=2*Spalten; #declare Hoehe0=2*Zeilen; #include "bunt.inc" #local I=0; #while (I } #local J=J+1; #end #local I=I+1; #end cuyo-2.1.0/datasrc/pics/mdEgoL.pov0000644000175000017500000000145112422656734013702 00000000000000/* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Richtung = 90; #include "mdEgo.inc" cuyo-2.1.0/datasrc/pics/version.inc0000644000175000017500000000140712422656733014165 00000000000000/* Copyright 2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #version 3.6; cuyo-2.1.0/datasrc/pics/Makefile0000644000175000017500000000462312422656733013450 00000000000000# # Copyright 2005-2007 by Mark Weyer # Maintenance modifications 2010,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Usage # ===== # # If you don't want to know too much: # # make all # make install # # A more thorough description follows. # # # # Interface: # ========== # # make all # Create all pictures that have sources # # make # Create all pictures from an individual level that have sources # This is only a rule of thumb. For example, the pictures for all # kacheln?.ld levels are created by "make kacheln". # # make install # Copy all pictures that were created to their destination. # In addition, xpm pictures are compressed # # make tidy # Delete all intermediate files and all files ending in ~. # # make clean # Delete all files that were regularly created. # # # Requirements: # ============= # # You will need make, netpbm (version >= 10.3), # ocaml (including the native-code compilers), and povray. # DATA_DIR = ../../data INSTALL_DIR = $(DATA_DIR)/pics make.ml: ../make.ml cp ../make.ml . make.mli: ../make.mli cp ../make.mli . Makefile.common: ../Makefile.common cp ../Makefile.common . cvsfiles_local: echo "colors.mgk" >> cvsfiles echo "titel-orig.png" >> cvsfiles echo "TODO" >> cvsfiles distfiles_local: makefile.opt $(MAKE) -C $(DATA_DIR) used_images ./makefile.opt dist `cat $(DATA_DIR)/used_images` >> distfiles echo "colors.mgk" >> distfiles cleanfiles_local: echo "make.ml" >> cleanfiles echo "make.mli" >> cleanfiles echo "Makefile.common" >> cleanfiles include Makefile.common # The following targets are listed here to prevent them being handed to # makefile.opt although we do not have real rules for them: ../Makefile.common: $(NOOP) cuyo-2.1.0/datasrc/pics/mdEgoR.pov0000644000175000017500000000145212422656734013711 00000000000000/* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Richtung = 270; #include "mdEgo.inc" cuyo-2.1.0/datasrc/pics/gen_schemen.ml0000644000175000017500000001311612422656734014613 00000000000000(* Copyright 2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Helfer module Rgb = Vektor.Vektor(Natmod.Drei) let leer_stuetzen = 100 let leer gric = let stuetzpunkte = List.concat (List.map (fun (x,y,f) -> [x,y-.20.0,f; x,y,f; x,y+.20.0,f]) (Array.to_list (Array.init leer_stuetzen (fun i -> (Random.float 20.0 -. 5.0, Random.float 20.0, von_rgb (zufallsfarbe 0.3 0.2)))))) in berechne gric (10,20, fun (x,y) -> misch (List.map (fun (x',y',f) -> (0.75 ** ((x'-.x)*.(x'-.x) +. (y'-.y)*.(y'-.y)), f)) stuetzpunkte)) let hinter gric = let breite = gric*10 in let hoehe = gric*20 in let stuetzen = gric*gric*5 in let stuetzpunkte = Array.init stuetzen (fun i -> let f1 = zufallsfarbe 1.0 0.5 in let f2 = Rgb.mal 0.5 f1 in (Random.int (breite+gric) - gric, Random.int hoehe, von_rgb f1, von_rgb f2)) in Array.sort (fun (x1,y1,_,_) -> fun (x2,y2,_,_) -> x1-x2 + 2*(y1-y2)) stuetzpunkte; (breite,hoehe, Array.init hoehe (fun y -> Array.init breite (fun x -> Array.fold_left (fun f -> fun (x',y',f1,f2) -> if x>=x' && y>=y' then if x=x' || y=y' then f1 else f2 else f) schwarz stuetzpunkte))) let verbind_stuetzen = 100 let verbind_bilder = 10 let normalisier rand corand wert = (* Führt eine lineare Transformation durch, die rand aud -1 und corand auf 1 wirft. *) let c1 = (rand+.corand) /. 2.0 in let c2 = (corand-.rand) /. 2.0 in (wert -. c1) /. c2 let misch3 rand corand links rechts wert = (* Als Funktion im letzten Argument ist misch3 konstant gleich links bis rand und konstant gleich rechts ab corand. Dazwischen interpoliert ein kubisches Polynom. *) let wert = normalisier rand corand wert in if wert <= -1.0 then links else if wert >= 1.0 then rechts else let a = (links-.rechts) /. 4.0 in let d = (links+.rechts) /. 2.0 in (wert*.wert-.3.0)*.a*.wert+.d let misch4 rand corand default sonst wert = (* Als Funktion im letzten Argument ist misch4 konstant gleich default bis rand und ab corand. Dazwischen interpoliert ein Polynom vom Grad 4 mit Wert sonst in der Mitte. *) let wert = normalisier rand corand wert in if wert <= -1.0 || wert >= 1.0 then default else (wert*.wert-.2.0)*.(sonst-.default)*.wert*.wert+.sonst let huegel rand corand wert = let wert = normalisier rand corand wert in if wert <= -1.0 || wert >= 1.0 then 0.0 else sqrt (1.0 -. wert*.wert) let verbind gric = let gricf = float_of_int gric in let rand = 1.0/.3.0 in let corand = 1.0-.rand in let stuetzpunkte = Array.init verbind_stuetzen (fun i -> Random.float 1.0, Random.float 1.0, Random.float 1.0) in let breite = gric*4 in let hoehe = gric*4*(verbind_bilder+1) in let pixel = Array.init hoehe (fun y -> Array.make breite durchsichtig) in for i=0 to verbind_bilder do let winkel = (float_of_int i)/.(float_of_int verbind_bilder) *. 2.0*.pi in let haus,vaus = if i=0 then (0.0,0.0) else (sin winkel, cos winkel) in for j=0 to 3 do let unten = j>0 && j<3 in let oben = j>1 in for k=0 to 3 do let rechts = k>0 && k<3 in let links = k>1 in Array.iter (fun (x,y,z) -> let h_x = huegel rand corand x in let h_y = huegel rand corand y in let h_mitte = huegel (rand-.0.5) (corand-.0.5) (sqrt ((x-.0.5)*.(x-.0.5)+.(y-.0.5)*.(y-.0.5))) in let hoehe = max (max h_mitte (if if x<=0.5 then links else rechts then h_y else 0.0)) (if if y<=0.5 then oben else unten then h_x else 0.0) in if z leer | "mscHinter" -> hinter | "mscVerbind" -> verbind in gib_xpm_aus (rgb_grau 0.0) outname (bild gric) cuyo-2.1.0/datasrc/pics/gen_octopi.ml0000644000175000017500000002000012422656734014454 00000000000000(* Copyright 2008,2011 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Helfer open Male_mit_aa let male breite hoehe bild = male bild (1.0/.32.0) (monochrom durchsichtig breite hoehe) let raus gric name bild = gib_xpm_aus (rgb_grau 1.0) name (berechne gric bild) let bogen (x,y) winkel laenge kruemmung = let cw,sw = cos winkel, sin winkel in let pos = kruemmung > 0.0 in let w' = if pos then winkel-.pi/.2.0 else winkel+.pi/.2.0 in Bogen ((x-.kruemmung*.sw,y+.kruemmung*.cw), (if pos then kruemmung else -.kruemmung), pos, w', w'+.laenge/.kruemmung) let arm_dicke1 = 1.0/.30.0 let arm_dicke2 = 1.0/.45.0 let octopus (a0,a1,a2,a3,a4,a5,a6,a7) farbe1 farbe2 = let arm nummer kruemmung = let winkel = (float_of_int (nummer+2))*.pi/.4.0 in [match kruemmung with | None -> Strecke ((0.5,0.5),(0.5+.cos winkel,0.5+.sin winkel)) | Some r -> bogen (0.5,0.5) (winkel-.1.0/.7.0/.r) (3.0/.7.0) r ] in let arme = konvertiere_polygon ((arm 0 a0) @ (arm 1 a1) @ (arm 2 a2) @ (arm 3 a3) @ (arm 4 a4) @ (arm 5 a5) @ (arm 6 a6) @ (arm 7 a7)) in let kopfrad = 1.0/.4.0 in let kopfh = kopfrad*.3.0/.4.0 in let halsy = 0.5-.kopfrad*.(2.0-.sqrt(3.0)) in let kopfy = halsy+.kopfh in let kopf = konvertiere_polygon [ Bogen ((0.5,kopfy), kopfrad, true, 0.0, pi); Strecke ((0.5-.kopfrad, kopfy), (0.5-.kopfrad, halsy)); Bogen ((0.5, halsy+.kopfrad*.sqrt(3.0)), 2.0*.kopfrad, true, pi*.4.0/.3.0, pi*.5.0/.3.0); Strecke ((0.5+.kopfrad, halsy), (0.5+.kopfrad, kopfy)) ] in let blesse = konvertiere_polygon [Bogen ((0.5,kopfy), kopfrad*.3.0/.4.0, true, pi*.2.0/.5.0, pi*.3.0/.4.0)] in let augerad = kopfrad/.3.0 in let augey = kopfy in let augend = augerad*.3.0 in let puprad = kopfrad/.5.0 in let pupy = augey-.puprad/.2.0 in let augepup t = let x = 0.5+.augend*.t/.2.0 in [Kreis ((x,augey),augerad)], [Kreis ((x,pupy),puprad)] in let auge1,pup1 = augepup (-1.0) in let auge2,pup2 = augepup (1.0) in let auge = konvertiere_polygon (auge1@auge2) in let pup = konvertiere_polygon (pup1@pup2) in male 1 1 (erzeuge_vektorbild [ Dicker_Strich (farbe1, 1.0/.30.0, [arme]); Dicker_Strich (farbe2, 1.0/.45.0, [arme]); Strich (farbe1, [kopf]); Flaechen ([| farbe1; weiss; schwarz |], [ kopf, 0, None; auge, 1, Some 0; pup, 2, Some 1; ]); Dicker_Strich (farbe2, kopfrad/.7.0, [blesse]); ]) let octopus (k0,k1,k2,k3,k4,k5,k6,k7) ad a0 a2 a4 a6 = octopus ( (if a0 then None else Some k0), (if ad then None else Some k1), (if a2 then None else Some k2), (if ad then None else Some k3), (if a4 then None else Some k4), (if ad then None else Some k5), (if a6 then None else Some k6), (if ad then None else Some k7)) let schema_mitte farbe1 farbe2 = let raute = konvertiere_polygon [ Strecke ((-0.5,0.5),(0.5,-0.5)); Strecke ((0.5,-0.5),(1.5,0.5)); Strecke ((1.5,0.5),(0.5,1.5)); Strecke ((0.5,1.5),(-0.5,0.5)); ] in male 1 1 (erzeuge_vektorbild [ Dicker_Strich (farbe1, arm_dicke1, [raute]); Dicker_Strich (farbe2, arm_dicke2, [raute]); ]) let octopi farbe1 farbe2 kruemmungen = let octopus = octopus kruemmungen in kombiniere_bildchen 3 3 (List.map (fun (x,y,b) -> (x,y,b farbe1 farbe2)) [ 0,0,octopus false true true false false; 1,0,octopus true false false true true; 2,0,octopus false false true true false; 0,1,octopus true false true true false; 1,1,schema_mitte; 2,1,octopus true true false false true; 0,2,octopus false true false false true; 1,2,octopus true true true false false; 2,2,octopus false false false true true; ]) let octopi_daten = [| rgbrgb 0.79 0.06 0.79, rgbrgb 0.95 0.37 0.96, ( 3.0, -1.0, 0.5, 1.5, -0.3, -2.0, 0.4, 0.7); rgb_grau 0.2, rgb_grau 0.6, (-2.0, -1.5, -1.5, 0.8, 1.0, -1.0, 0.6, -1.0); rgbrgb 0.2 0.2 0.8, rgbrgb 0.5 0.5 1.0, (-2.5, 1.0, 0.7, -0.5, -0.5, 0.6, -1.0, 1.5); rgbrgb 0.6 0.61 0.1, rgbrgb 0.8 0.83 0.3, ( 3.0, 0.7, 1.0, -0.3, 0.8, 0.3, -2.0, -1.0); rgbrgb 0.8 0.5 0.1, rgbrgb 0.9 0.7 0.4, ( 2.0, 1.5, -0.3, -1.0, -2.0, 0.5, 1.0, 1.0); |] let octopi gric command outname = let nummer = int_of_string (suffix command 1) - 1 in let farbe1,farbe2,kruemmungen = octopi_daten.(nummer) in raus gric outname (octopi (von_rgb farbe1) (von_rgb farbe2) kruemmungen) let welle w d x y = cos ((x*.cos w +. y*.sin w)/.d) let anemone w1 w2 = let num = 50 in let g = (sqrt 5.0 -. 1.0)*.pi in let num_ = float_of_int num in let farbe1 = von_rgb (rgbrgb 1.0 0.7 0.7) in let farbe2 = von_rgb (rgbrgb 1.0 0.3 0.7) in let farbe3 = von_rgb (rgbrgb 1.0 1.0 0.7) in let farbe4 = von_rgb (rgbrgb 0.8 0.8 0.2) in let faeden = Array.init num (fun i -> let i = float_of_int i in let w = g *. i in let r = sqrt (i/.num_)/.4.0 in (r*.cos w, r*.sin w)) in Array.sort (fun (x1,y1) -> fun (x2,y2) -> Pervasives.compare y2 y1) faeden; male 1 1 (erzeuge_vektorbild (List.concat (List.map (fun (x,y) -> let r2 = x*.x +. y*.y in let mitte = 31.0*.r2 < 1.0 in let strich = konvertiere_polygon [bogen (0.5+.x, 0.25+.y/.2.0) (pi/.2.0 -. x) ((if mitte then 0.3 else 0.4) -. 3.0*.r2 +. (welle w1 0.1 x y)/.29.0 +. y/.3.0) (0.4/.((welle w2 0.1 x y)/.2.0 -. 5.0*.x))] in [Dicker_Strich ((if mitte then farbe4 else farbe2), 1.0/.29.0, [strich]); Strich ((if mitte then farbe3 else farbe1), [strich]); ]) (Array.to_list faeden)))) let anemonen gric outname = raus gric outname (kombiniere_bildchen 4 1 (List.map (fun (x,w1,w2) -> (x,0,anemone w1 w2)) [ 0, 4.0, 1.0; 1, 8.0, 6.0; 2, 7.0, 5.0; 3, 2.0, 3.0; ])) let fisch gric outname = let blau1 = von_rgb (rgbrgb 0.45 0.55 1.0) in let blau2 = von_rgb (rgbrgb 0.5 0.7 1.0) in let blau3 = von_rgb (rgbrgb 0.3 0.4 0.8) in let koerper_p = (0.55,0.5) in let koerper = konvertiere_polygon [Kreis (koerper_p,0.35)] in let auge_p = (0.75,0.6) in let dreieck p1 p2 p3 = konvertiere_polygon [Strecke (p1,p2); Strecke (p2,p3); Strecke (p3,p1)] in let ruecken = dreieck (0.5,0.9) (0.6,0.8) (0.5,0.8) in let schwanz = dreieck (0.2,0.5) (0.1,0.7) (0.1,0.3) in let bein = dreieck (0.35,0.25) (0.35,0.15) (0.4,0.2) in let arm = dreieck (0.7,0.25) (0.75,0.15) (0.75,0.3) in let flosse umriss = [Strich (blau3,[umriss]); Flaechen ([| blau3 |],[umriss,0,None])] in let fisch = (flosse ruecken) @ (flosse schwanz) @ (flosse bein) @ [ Strich (blau1,[koerper]); Flaechen ([| blau1; weiss; schwarz |], [ koerper,0,None; konvertiere_polygon [Kreis (auge_p,0.09)], 1, Some 0; konvertiere_polygon [Kreis (auge_p,0.03)], 2, Some 1; ]); Dicker_Strich (blau2, 0.04, [konvertiere_polygon [Bogen (koerper_p,0.25,true,pi*.2.0/.5.0, pi*.6.0/.7.0)]]) ] @ (flosse arm) in raus gric outname (male 1 1 (erzeuge_vektorbild fisch)) ;; let gric,command,outname = Gen_common.parse_args () in match command with | "moAnemone" -> anemonen gric outname | "moFisch" -> fisch gric outname | _ -> octopi gric command outname cuyo-2.1.0/datasrc/pics/mdFels.pov0000644000175000017500000000751212422656734013751 00000000000000/* Copyright 2006,2008,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "dungeon.inc" #declare Rad = 0.15; #declare Rad2 = 0.3; #declare Rad3 = 0.1; #declare Teile = 500; #declare Rand = seed(65432); #declare APunkte = 4; #declare Punkte = array [APunkte] [2] { {0,0}, {Rad2,Rad}, {Rad2/2,BlockHoehe*2/3} {0,BlockHoehe*3/4} } #declare Winkel = array [APunkte] #declare Laengen = array [APunkte-1] #declare GesamtWinkel = array[APunkte+1] #declare GesamtLaenge = array[APunkte+1] #declare GesamtLaenge[0] = 0; #declare GesamtWinkel[0] = 0; #local I=1; #while (IDY) #if (DR>=0) #declare GesamtWinkel[I] = atan2(DY,DR); #else #declare GesamtWinkel[I] = pi-atan2(DY,-DR); #end #else #declare GesamtWinkel[I] = pi/2-atan2(DR,DY); #end #declare Winkel[I-1] = GesamtWinkel[I]-GesamtWinkel[I-1]; #declare Laengen[I-1] = sqrt(DR*DR+DY*DY); #declare GesamtLaenge[I] = GesamtLaenge[I-1]+Rad*Winkel[I-1]+Laengen[I-1]; #local I=I+1; #end #declare GesamtWinkel[APunkte] = pi; #declare Winkel[APunkte-1] = pi-GesamtWinkel[APunkte-1]; #declare GesamtLaenge[APunkte] = GesamtLaenge[APunkte-1]+Rad*Winkel[APunkte-1]; #declare Stein = function {pattern { marble turbulence 0.6 scale 0.07 rotate 15*z rotate 20*y }} #declare Block = intersection { #local I=0; #while (IGesamtLaenge[Punkt+1]) #local Punkt=Punkt+1; #end #local TT=TT-GesamtLaenge[Punkt]; #if (TT>Rad*Winkel[Punkt]) #local WW = GesamtWinkel[Punkt+1]; #local UU = (TT-Rad*Winkel[Punkt])/Laengen[Punkt]; #local RR = Punkte[Punkt+1][0]*UU + Punkte[Punkt][0]*(1-UU) + Rad*sin(GesamtWinkel[Punkt+1]); #local YY = Punkte[Punkt+1][1]*UU + Punkte[Punkt][1]*(1-UU) - Rad*cos(GesamtWinkel[Punkt+1]); #else #local WW = GesamtWinkel[Punkt]+TT/Rad; #local RR = Punkte[Punkt][0]+Rad*sin(WW); #local YY = Punkte[Punkt][1]-Rad*cos(WW); #end #if (rand(Rand)*0.5<=RR) #local Suche=0; #end #end #local WW2 = rand(Rand)*360; #local DD = (1+rand(Rand))*Rad3; #local JJ = 0; #while (JJ<4) merge { sphere {0 DD} plane {y 0} inverse translate -DD*y rotate WW*180/pi*z translate rotate (WW2+90*JJ)*y } #local JJ=JJ+1; #end #local I=I+1; #end bounded_by {cylinder {-y (BlockHoehe+1)*y 1/2}} Textur(texture { pigment { function { (select(x,-x*(Stein(-x,y,-z)-0.5),x*(Stein(x,y,z)-0.5)) + select(z,-z*(Stein(-z,y,x)-0.5),z*(Stein(z,y,-x)-0.5))) / (2*sqrt(pow(x,2)+pow(z,2))+1e-4) + 0.5} #local Helligkeit=1/2; colour_map { [0.4 rgb 1/3*Helligkeit] [0.5 rgb <1,1,2>/2*Helligkeit] [0.6 rgb 1/4*Helligkeit] [0.55 rgb 3/5*Helligkeit] } } finish { specular 0.2 } }) translate <1/2,0,1/2> } Setze() cuyo-2.1.0/datasrc/pics/mdEgoHaare.pov0000644000175000017500000000505312422656734014531 00000000000000/* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "mdEgo.inc" #declare maxanz = 100000; #declare pos = array[maxanz]; #declare norm = array[maxanz]; #declare anz = 0; #declare koerper=Koerper(0); #declare s=seed(234687); #declare haar_laenge = 0.07; #declare minabstand = Haardicke; #declare i=0; #while (i; #if (inside(koerper,p)) // Schneller Vortest, um möglichst viele schon früh rauszuwerfen #declare abstand=100; #declare j=0; #while (j=minabstand) #declare hitnorm=<0,0,0>; #declare abstand=100; #declare j=0; #while (j<1000) #declare h=rand(s)*2-1; #declare phi=rand(s)*2*pi; #declare dir=; #declare hit=trace(koerper,p,dir,hitnorm); #declare d=vlength(hit-p); #if (d0) #declare abstand=d; #declare pos[anz]=hit; #declare norm[anz]=dir; #end #declare j=j+1; #end #if (abstand<100) #declare abstand=100; #declare j=0; #while (j=minabstand) #declare anz=anz+1; #end #end #end #end #declare i=i+1; #end #fopen raus "mdEgoHaare.data" write #declare i=0; #while (i Radius Radius no_shadow Textur(texture{ pigment {rgb c} finish { specular 1/5 ambient 1/4 }}) } #end Wurst(-4,-4,1,<0,1,0>) Wurst(-2,0,1,<0,1,0>) Wurst(2,2,1,<1,0,0>) Wurst(4,4,1,<0,0,0>) Wurst(-4,-2,-1,<0,0,1>) Wurst(1,3,-1,<0,0,1>) cuyo-2.1.0/datasrc/pics/easyarg.ml0000644000175000017500000000445612422656734014002 00000000000000(* Copyright 2008,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Arg let speclist = ref [] let parse usage = let anon = ref [] in parse (List.rev !speclist) (fun s -> anon := !anon @ [s]) usage; !anon let usage usage_ = usage (List.rev !speclist) usage_ let register_ref key doc (f : string -> 'a -> 'a) (start : 'a) = let res = ref start in speclist := (key, String (fun s -> res := f s !res), doc) :: !speclist; res let register_ref_ignore key doc f = register_ref key doc (fun s -> fun _ -> f s) let register_choices values = let res = ref None in speclist := (List.map (fun (key,doc) -> (key, Unit (fun () -> res := Some key), doc)) values) @ !speclist; res module type Parsable = sig type t val from_string : string -> t end module String = struct type t=string let from_string s = s end module Int = struct type t=int let from_string s = try int_of_string s with Failure "int_of_string" -> raise (Bad "") end module Register (T : Parsable) = struct let register_without_default key doc = register_ref_ignore key doc (fun s -> Some (T.from_string s)) None let register_with_default key doc default = register_ref_ignore key doc T.from_string default let register_list key doc = register_ref key doc (fun s -> fun tail -> (T.from_string s) :: tail) [] end module Register_String = Register(String) module Register_Int = Register(Int) let register_int_without_default = Register_Int.register_without_default let register_string_with_default = Register_String.register_with_default let register_string_without_default = Register_String.register_without_default cuyo-2.1.0/datasrc/pics/mnv.src.xpm0000644000175000017500000001214212422656733014117 00000000000000/* XPM */ /* Copyright 2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ static char *noname[]={ "64 64 4 1", "A c #ff0000", "a c #ff8080", "# c #000000", ". c None", "................................................................", "................................................................", "..############################################################..", "..#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa######aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa#....#aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa#....#aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa#....#aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa#....#aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAa######aAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa#..", "..#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#..", "..############################################################..", "................................................................", "................................................................" }; cuyo-2.1.0/datasrc/pics/makefile.ml0000644000175000017500000005550612422656733014125 00000000000000(* Copyright 2007-2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Make (*===========================================================================*) let gric = 32 (* Not everything respects gric changes *) let ml_graphik = ["helfer";"pam"; "natmod";"vektor";"farbe";"xpmlex";"graphik"] let ml_gen_whatever = "easyarg"::"gen_common"::ml_graphik let ml_vektorgraphik = ml_gen_whatever @ ["polynome"; "vektorgraphik"] let colour colour none some = match colour with | None -> none | Some (r,g,b) -> some^" "^ (string_of_int r)^"/"^(string_of_int g)^"/"^(string_of_int b)^" " let digits_num digits a = let s = string_of_int a in let missing = digits-(String.length s) in (String.make (max 0 missing) '0')^s let rec num_anim digits a b = if a>b then [] else (digits_num digits a)::(num_anim digits (a+1) b) let combine_anim left right = List.concat (List.map (fun a -> List.map ((^)a) right) left) let fill_anim left stages right = List.map (fun stage -> left^stage^right) stages let group file files = [[file],files,groupaction] let xgz file = [[file^".xpm.gz"], [file^".xpm"], ["gzip -c -f -n "^file^".xpm > "^file^".xpm.gz"]] let xzgroup file files = List.concat [ group file (fill_anim "" files ".xpm.gz"); List.concat (List.map xgz files); ] let xpm_of_rgba ?(quant_colours=None) ?(quant_method="maximal") file = [ [file^".xpm"], [file^".pam"; "machxpm"], ["./machxpm -rgba "^ (match quant_colours with | None -> "" | Some n -> "-colours "^(string_of_int n))^ " -"^quant_method^ " "^file]] let xpm_of_rgbas ?(quant_colours=None) ?(quant_method="maximal") width files file = [ [file^".xpm"], "machxpm" :: List.map (fun f -> f^".pam") files, ["./machxpm -rgba "^ (match quant_colours with | None -> "" | Some n -> "-colours "^(string_of_int n))^ " -"^quant_method^ " -width "^(string_of_int width)^ " -o "^file^".xpm "^ String.concat " " files]] let pam_of_ppmpgm file = [ [file^".pam"], [file^".ppm"; file^".umriss.pgm"], ["pamarith -multiply "^file^".ppm "^file^".umriss.pgm "^ "| pamstack - "^file^".umriss.pgm > "^file^".pam"]] let pgm_of_ppm file = [ [file^".pgm"], [file^".ppm"], ["ppmtopgm "^file^".ppm | pamfunc -multiplier 255 > "^file^".pgm"]] let pam_of_ppm2 file = List.concat [ pgm_of_ppm (file^".umriss"); pam_of_ppmpgm file; ] let xpm_of_ppm2 quant_colours quant_method file = List.concat [ pam_of_ppm2 file; xpm_of_rgba ~quant_colours:quant_colours ~quant_method:quant_method file; ] let ppm_of_pov width height aa extra file includes = let w,h = width*gric, height*gric in let ws,hs = string_of_int w, string_of_int h in [ (* The antialiasing argument aa is: None for no antialiasing Some true for antialising which respects pixel boundaries Some false for antialising which does not respect pixel boundaries *) [file^".ppm"], [file^".pov";"version.inc"]@includes, ["povray +FP -D -w"^ws^" -h"^hs^ (match aa with | None -> "" | Some true -> " +A +AM1 -J" | Some false -> " +A +AM2 +R2 -J")^ " +HIversion.inc"^ " "^extra^ " "^file^".pov"; "test -e "^file^".ppm"; ]] let ppm_of_pov_umriss width height aa extra file includes = let w,h = width*gric, height*gric in let ws,hs = string_of_int w, string_of_int h in [ (* The antialiasing argument aa is: None for no antialiasing Some true for antialising which respects pixel boundaries Some false for antialising which does not respect pixel boundaries *) [file^".umriss.ppm"], [file^".pov";"umriss.inc"]@includes, ["povray +FP -D -w"^ws^" -h"^hs^ (match aa with | None -> "" | Some true -> " +A +AM1 -J" | Some false -> " +A +AM2 +R2 -J")^ " +HIumriss.inc"^ " -O"^file^".umriss.ppm"^ " "^extra^ " "^file^".pov"; "test -e "^file^".umriss.ppm"; ]] let pam_of_pov width height aa extra file includes = let includes = "cuyopov.inc"::includes in List.concat [ ppm_of_pov width height aa extra file includes; ppm_of_pov_umriss width height aa extra file includes; pam_of_ppm2 file; ] let xpm_of_pov_trans width height ?(aa=Some false) ?(extra="") ?(quant_colours=None) ?(quant_method="maximal") file includes = List.concat [ pam_of_pov width height aa extra file includes; xpm_of_rgba ~quant_colours:quant_colours ~quant_method:quant_method file; ] let xpm_of_ppm trans_colour ?(forced_pixels=[]) quant_colours quant_method file = [ [file^".xpm"], [file^".ppm"; "machxpm"], ["./machxpm -ppm "^ (List.fold_left (fun s -> fun (x,y) -> s^"-includepixelcolour "^string_of_int x^"/"^string_of_int y^" ") "" forced_pixels)^ (colour trans_colour "" "-transcolour")^ (match quant_colours with | None -> "" | Some n -> "-colours "^(string_of_int n))^ " -"^quant_method^ " "^file]] let xpm_of_pov width height ?(aa=Some false) ?(extra="") ?(trans_colour=None) ?(forced_pixels=[]) ?(quant_colours=None) ?(quant_method="maximal") file includes = List.concat [ ppm_of_pov width height aa extra file includes; xpm_of_ppm trans_colour ~forced_pixels:forced_pixels quant_colours quant_method file; ] let stuff_of_prog files prog ?(extradepends=[]) options = [ files, prog::extradepends, ["./"^prog^" "^options]] let ml_prog file includes = let endings ending = List.map (fun include_ -> include_^ending) includes in [ [file; file^".cmx"; file^".cmi"; file^".o"], (file^".ml")::(endings ".cmi")@(endings ".cmx"), ["ocamlopt.opt -o "^file^ (List.fold_left (fun l -> fun r -> l^" "^r^".cmx") "" includes)^ " "^file^".ml"]] let stuff_of_ml targets prog ?(options="") includes = List.concat [ stuff_of_prog targets prog options; ml_prog prog includes; ] let group_of_ml name ?(extratargets=[]) ?(extradepends=[]) targets includes = let progname = "gen_"^name in List.concat [ xzgroup name (extratargets @ targets); ml_prog progname includes; List.concat (List.map (fun target -> stuff_of_prog [target^".xpm"] progname ~extradepends:extradepends ((string_of_int gric)^" "^target)) targets); ] let ml_module file includes = let endings ending = List.map (fun include_ -> include_^ending) includes in [ [file^".cmi"], (file^".mli")::(endings ".cmi"), ["ocamlopt.opt "^file^".mli"]; [file^".cmx"; file^".o"], (file^".ml")::(file^".cmi")::(endings ".cmi")@(endings ".cmx"), ["ocamlopt.opt -c "^file^".ml"]; ] let recolour source drain colour' = [ [drain^".xpm"], [source^".xpm"; "machxpm"], ["./machxpm -xpm -recolour "^(colour colour' "trans " "")^ " -o "^drain^".xpm"^" "^source]] let pov_fill2 source drain povvar value stage = [ [drain^stage^".pov"], [source^".pov"], ["echo \"#declare "^povvar^"="^value^";\" "^ "| cat - "^source^".pov > "^drain^stage^".pov"]] let pov_fill file povvar stage = pov_fill2 file file povvar stage stage let xpm_of_pov_fill_trans width height ?(aa=Some false) ?(extra="") ?(quant_colours=None) ?(quant_method="maximal") file includes povvar stages = List.concat (List.map (fun stage -> List.concat [ xpm_of_pov_trans width height ~aa:aa ~extra:extra ~quant_colours:quant_colours ~quant_method:quant_method (file^stage) includes; pov_fill file povvar stage]) stages) let xpm_of_pov_fill width height ?(aa=Some false) ?(extra="") ?(trans_colour=None) ?(forced_pixels=[]) ?(quant_colours=None) ?(quant_method="maximal") file includes povvar stages = List.concat (List.map (fun stage -> List.concat [ xpm_of_pov width height ~aa:aa ~extra:extra ~trans_colour:trans_colour ~forced_pixels:forced_pixels ~quant_colours:quant_colours ~quant_method:quant_method (file^stage) includes; pov_fill file povvar stage]) stages) let gimp_script_xpm_of_xcf threshold used_layers srcname dstname = "(let* (" ^ "(image (car (gimp-xcf-load 0 \"" ^ srcname ^ "\" \"" ^ srcname ^ "\")))" ^ "(layers_with_num (gimp-image-get-layers image))" ^ "(num_layers (car layers_with_num))" ^ "(layers (cadr layers_with_num))" ^ "(current_layer 0)" ^ "(used_layers (list " ^ String.concat " " (List.map string_of_int used_layers) ^ " 10000000))" ^ "(visible TRUE)" ^ ")" ^ "(while (< current_layer num_layers)" ^ "(if (= current_layer (car used_layers))" ^ "(set! visible TRUE)" ^ "(set! visible FALSE))" ^ "(gimp-item-set-visible (aref layers current_layer) visible)" ^ "(if (= visible TRUE) (set! used_layers (cdr used_layers)))" ^ "(set! current_layer (+ current_layer 1))" ^ ")" ^ "(file-xpm-save RUN-NONINTERACTIVE image" ^ "(car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))" ^ "\"" ^ dstname ^ "\" \"" ^ dstname ^ "\" " ^ string_of_int threshold^ "))" ^ "(gimp-quit TRUE)" let xpm_of_xcf ?(threshold=127) used_layers ?srcname dstname = let srcname = match srcname with | None -> dstname | Some s -> s in let srcname = srcname ^ ".xcf" in let dstname = dstname ^ ".xpm" in [ [dstname], [srcname], ["gimp -i -d -f -b '" ^ gimp_script_xpm_of_xcf threshold used_layers srcname dstname ^ "'"]] let xpms_of_xcf ?threshold srcname specs = List.concat (List.map (fun (dstname,used_layers) -> xpm_of_xcf ?threshold used_layers ~srcname:srcname dstname) specs) (*===========================================================================*) let rules = List.concat [ group "all" ["aehnlich"; "angst"; "augen"; "aux"; "bonimali"; "bunt"; "dungeon"; "fische"; "flechtwerk"; "fractals"; "jump"; "kacheln"; "kolben"; "novips"; "octopi"; "puzzle"; "rechnen"; "reversi_brl"; "rollenspiel"; "schemen"; "secret"; "slime"; "tennis"; "trees"; "xcf"; "zahn"; "ziehlen"]; xzgroup "aehnlich" ["maeSorten"; "maeSchema"]; xpm_of_pov_trans 2 2 "maeSchema" ["aehnlich.inc"]; xpm_of_pov_trans 7 14 ~quant_colours:(Some 400) "maeSorten" ["aehnlich.inc"]; group_of_ml "augen" (fill_anim "ma" (fill_anim "Lid" ["A";"B";"C";"D"] "" @ num_anim 1 1 5) "") ml_vektorgraphik; group_of_ml "angst" (fill_anim "man" ("Gras"::"Grau":: combine_anim ["Koepfe";"Gesichter"] (num_anim 1 1 7)) "") ml_vektorgraphik; (* bonimali *) (let uhrdinge = [ "Ketten"; "Kurz"; "Langsam"; "Lang"; "Minus"; "Octi"; "Schnell"; "Ununterscheidbar" ] in group_of_ml "bonimali" ~extratargets:["mbmGras";"mbmGrau"] ~extradepends:["mbmGras.xpm";"mbmGrau.xpm"] (fill_anim "mbm" ([ "GrauGras"; "GrauJoker"; "Leben"; "Punkte"; "Raketen"; "Verschwind"; ] @ uhrdinge @ (fill_anim "" uhrdinge "Uhr")) "") ml_vektorgraphik); xzgroup "aux" ["font-big"; "highlight"; "feenstaub"]; xpm_of_rgba "font-big"; [["font-big.pam"], ["font-orig.png";"genSchrift"], ["./genSchrift -font font-orig.png font-big.pam"]]; [["genSchrift"], ["genSchrift.cc"], ["g++ -g genSchrift.cc -L../lib -lSDL -lSDL_image -lm"^ " -I../include -I/usr/include/SDL -O2 -o genSchrift"]]; stuff_of_ml ["feenstaub.xpm"] "feenstaub" ml_gen_whatever; stuff_of_ml ["highlight.xpm"] "highlight" ~options:(string_of_int gric) ml_gen_whatever; (* bunt *) (let schmelz = num_anim 1 1 4 in List.concat [ xzgroup "bunt" (["mbUnbunt";"mbBunt"]@ (fill_anim "mbSchmelz" schmelz "")); xpm_of_pov_trans 17 1 ~quant_colours:(Some 512) "mbUnbunt" ["bunt.inc"]; xpm_of_pov_trans 17 8 ~quant_colours:(Some 512) "mbBunt" ["bunt.inc"]; xpm_of_pov_fill_trans 16 32 ~quant_colours:(Some 512) "mbSchmelz" ["bunt.inc"] "Schritt" schmelz; ]); (* dungeon Damit niemand denkt, das Ausschalten von antialiasing (~aa:None) sei aus Angst vor der Rechenzeit geschehen: Es ist vllig normal, da sich die Graphiken berlappen, so da antialiasing gegen irgendeine feste Farbe immer falsch ist. *) (let farben31 = ["Ziegel"; "Holz"; "Eisen"; "Stein"; "Fels"] in let farben11 = ["EgoV"; "EgoH"; "EgoL"; "EgoR"] in let farben = "Plastik"::"Gold"::farben31@farben11 in let boden = num_anim 2 0 15 in let ziele = num_anim 2 0 11 in let render = num_anim 3 0 34 in let render4 = [(0,[1]); (1,[0;2]); (2,[3;5;7]); (3,[4;6])] in let render3 = [(4,[8;11;14]); (5,[9;12]); (6,[10;13]); (7,[15;17;19;21;23]); (8,[16;18;20;22])] in let render2 = [(9,[24;27;29;31;34]); (10,[25;28;32]); (11,[26;30;33])] in let himmel = num_anim 1 0 3 in let includes farbe = ["dungeon_boden.inc"; "dungeon.inc"] @ match farbe with | "Gold" -> ["mdGold.inc"; "cuyo.ppm"] | "EgoV" | "EgoH" | "EgoL" | "EgoR" -> ["mdEgo.inc"; "mdAuge.ppm"; "mdEgoHaare.data"] | _ -> [] in let gruppe farbe ziel liste = let name nummer = "md"^farbe^nummer^".pam" in [name ziel], List.map name liste, match liste with | [quelle] -> ["cp "^(name quelle)^" "^(name ziel)] | quelle1::rest -> [(List.fold_left (fun bisher -> fun quelle -> bisher^" | pamarith -add "^(name quelle)^" -") ("cat "^(name quelle1)) rest) ^ " > "^(name ziel)] in let sequenz farbe height extra liste = List.concat (List.map (fun (ziel,teile) -> let ziel = digits_num 2 ziel in let teile = List.map (digits_num 3) teile in List.concat [ [gruppe farbe ziel teile]; List.concat (List.map (fun teil -> pam_of_pov 4 height None extra ("md"^farbe^teil) (includes farbe)) teile); xpm_of_rgba ("md"^farbe^ziel); ]) liste) in let draufseite width draufheight draufversionen seitenversionen farben = List.concat (List.map (fun farbe -> let zeile versionart v0 v1 h = List.concat (List.map (fun version -> List.concat [ pam_of_pov 1 h None "" ("md"^farbe^version) (includes farbe); pov_fill ("md"^farbe) versionart version; ]) (num_anim 1 v0 v1)) in List.concat [ xpm_of_rgbas (width*gric) (List.map (fun v -> "md"^farbe^v) (num_anim 1 0 (draufversionen+seitenversionen-1))) ("md"^farbe); zeile "DraufVersion" 0 (draufversionen-1) draufheight; zeile "SeitenVersion" draufversionen (draufversionen+seitenversionen-1) 1; ]) farben) in List.concat [ group "dungeon" (fill_anim "dungeon" ("Boden"::"Himmel"::farben) ""); group "dungeonEgo" (fill_anim "dungeonEgo" ["V";"H";"L";"R"] ""); xzgroup "dungeonBoden" (fill_anim "mdBoden" (""::boden) ""); xzgroup "dungeonHimmel" (fill_anim "mdHimmel" himmel ""); draufseite 3 2 3 3 farben31; draufseite 2 2 4 0 farben11; draufseite 2 2 4 1 ["Gold"]; draufseite 2 1 6 0 ["Plastik"]; xpm_of_pov 1 1 ~aa:(Some true) "mdBoden" (includes "Boden"); xpm_of_pov_fill 4 2 "mdHimmel" (includes "Himmel") "HimmelVersion" himmel; xpm_of_pov_fill 4 2 ~aa:None ~extra:"-UV" ~forced_pixels:[0,0] "mdBoden" (includes "Boden") "BodenVersion" boden; List.concat (List.map (fun farbe -> List.concat [ xzgroup ("dungeon"^farbe) (fill_anim ("md"^farbe) (""::ziele) ""); sequenz farbe 4 "" render4; sequenz farbe 3 "-UV" render3; sequenz farbe 2 "" render2; List.concat (List.map (pov_fill ("md"^farbe) "Version") render); ]) farben); ml_prog "mdGold" ["helfer"]; [["mdGold.inc"], ["mdGold"], ["./mdGold > mdGold.inc"]]; [["cuyo.ppm"], ["cuyo.xpm";"machppm"], ["./machppm cuyo"]]; (* Die Augen des Egos kommen vom Augen-Level. *) stuff_of_prog ["mdAuge.ppm"] "gen_augen" (string_of_int(5*gric)^" mdAuge"); (* Und seine Haare werden von povray erzeugt. *) [["mdEgoHaare.data"; "mdEgoHaare.ppm"], ["mdEgoHaare.pov"; "mdEgo.inc"; "dungeon.inc"; "dungeon_boden.inc"; "cuyopov.inc"], ["povray +FP -D -w1 -h1 mdEgoHaare.pov"]]; (* Um sich die Prgung auf den Goldmnzen anzusehen: *) xpm_of_pov 10 5 "mdGoldM" (includes "Gold"); pov_fill2 "mdGold" "mdGold" "Version" "-1" "M"; (* Um sich die verschiedenen Bodenpflanzen anzusehen: *) xpm_of_pov_fill 5 5 "mdBodenP" (includes "Boden") "BodenPflanze" (num_anim 1 1 5); pov_fill2 "mdBoden" "mdBoden" "BodenVersion" "-1" "P"; (* Um sich die Bltter der Bume anzusehen: *) xpm_of_pov 15 15 "mdHolzB" (includes "Holz"); pov_fill2 "mdHolz" "mdHolz" "Version" "-1" "B"; ]); group_of_ml "fische" ("mfmuschel" :: "mfqualle" :: (fill_anim "mffisch" (num_anim 1 1 6) "")) ml_vektorgraphik; group_of_ml "flechtwerk" ["mflAlles";"mflGrasV";"mflKlein"] ml_vektorgraphik; group "fractals" ["aDragon.xpm.gz"]; [["aDragon.xpm.gz"], ["aDragon.ps"], ["convert aDragon.ps aDragon.xpm.gz"]]; xzgroup "jump" (fill_anim "mjZeug" (num_anim 1 1 6) ""); recolour "mjZeug.src" "mjZeug1" (Some (255,0,0)); recolour "mjZeug.src" "mjZeug2" (Some (255,255,0)); recolour "mjZeug.src" "mjZeug3" (Some (0,255,0)); recolour "mjZeug.src" "mjZeug4" (Some (0,0,255)); recolour "mjZeug.src" "mjZeug5" (Some (255,0,255)); recolour "mjZeug.src" "mjZeug6" (Some (255,255,255)); group_of_ml "kacheln" ["mkaSechseckRahmen"; "mkaSechseckKacheln"; "mkaViereckRahmen"; "mkaViereckKacheln"; "mkaViereckFall"; "mkaFuenfeckRahmen"; "mkaFuenfeckKacheln"; "mkaFuenfeckFall"; "mkaFuenfeckHetz"; "mkaRhombusKacheln"; "mkaRhombusFall"; "mkaRhombusLeer"] ml_vektorgraphik; xzgroup "kolben" ["mkKolben"; "mkKolbenBlitzBlau"; "mkKolbenBlitzGruen"; "mkKolbenBlitzRot"]; recolour "mkKolben.src" "mkKolben" None; recolour "mkKolben.src" "mkKolbenBlitzBlau" (Some (0,0,255)); recolour "mkKolben.src" "mkKolbenBlitzGruen" (Some (0,255,0)); recolour "mkKolben.src" "mkKolbenBlitzRot" (Some (255,0,0)); xzgroup "novips" (fill_anim "mnv" (num_anim 1 1 6) ""); recolour "mnv.src" "mnv1" (Some (255,0,0)); recolour "mnv.src" "mnv2" (Some (255,255,0)); recolour "mnv.src" "mnv3" (Some (0,255,0)); recolour "mnv.src" "mnv4" (Some (0,255,255)); recolour "mnv.src" "mnv5" (Some (0,0,255)); recolour "mnv.src" "mnv6" (Some (255,0,255)); group_of_ml "octopi" ("moAnemone"::"moFisch" ::(fill_anim "moOctopus" (num_anim 1 1 5) "")) ml_vektorgraphik; group_of_ml "puzzle" ["mpAlle"] ml_vektorgraphik; xzgroup "rechnen" (fill_anim "mreZahl" (num_anim 1 1 3) ""); recolour "mreBasis" "mreZahl1" (Some (0,0,0)); recolour "mreBasis" "mreZahl2" (Some (255,0,0)); recolour "mreBasis" "mreZahl3" (Some (0,0,255)); xzgroup "reversi_brl" ["lreAlle"]; xpm_of_pov 3 6 ~trans_colour:(Some (255,255,255)) "lreAlle" []; group_of_ml "rollenspiel" ["mrpAlle"] ml_vektorgraphik; group_of_ml "schemen" ["mscHinter"; "mscLeer"; "mscVerbind"] ml_vektorgraphik; group_of_ml "secret" ["mseKind"; "mseGG"] ml_vektorgraphik; (* slime *) (let slime_anim = num_anim 1 0 5 in let slime_pics = "msGreen"::"msRed"::(fill_anim "msRed" slime_anim "") in List.concat [ xzgroup "slime" slime_pics; List.concat (List.map (fun file -> xpm_of_pov_trans 5 1 file []) slime_pics); pov_fill2 "slime2" "msGreen" "Case" "1" ""; pov_fill2 "slime2" "msRed" "Case" "2" ""; List.concat (List.map (fun stage -> pov_fill "msRed" "Time" stage) slime_anim); ]); group_of_ml "tennis" (fill_anim "mt" ("Racket"::"Source"::"Wall":: (fill_anim "Roof" (num_anim 1 1 4) "") @ (combine_anim ["Blue";"Green";"Grey";"Yellow"] ["Bounce";"Left";"Out";"Right"])) "") ml_vektorgraphik; xzgroup "trees" (fill_anim "mtr" (num_anim 1 1 5) ""); recolour "mtr.src" "mtr1" (Some (255,128,0)); recolour "mtr.src" "mtr2" (Some (0,192,0)); recolour "mtr.src" "mtr3" (Some (0,0,255)); recolour "mtr.src" "mtr4" (Some (128,0,255)); recolour "mtr.src" "mtr5" (Some (128,128,128)); xzgroup "xcf" [ "i3Dreieck"; "i3Gitter"; "i3Grau"; "i3Kreis"; "i3Plus"; "i3Quadrat"; "i3Stern"; "ipStart"; "itrBlau"; "itrBraun"; "itrGrau"; "itrGruen"; "itrLila"; "iwaBad"; "iwaBeton"; "iwaNix"; "iwaParkett"; "iwaTeppich"; "lrKamin"; "lrWasser"]; xpms_of_xcf "i3Bunt" [ "i3Dreieck",[0;3]; "i3Gitter",[0;1]; "i3Kreis",[0;5]; "i3Plus",[0;2]; "i3Quadrat",[0;6]; "i3Stern",[0;4]; ]; xpm_of_xcf [0;1;2;3] "i3Grau"; xpm_of_xcf [0] "ipStart"; xpms_of_xcf "itrAlle" [ "itrBlau",[0;4]; "itrBraun",[2;4]; "itrGrau",[4]; "itrGruen",[3;4]; "itrLila",[1;4]; ]; xpms_of_xcf "iwaAlles" [ "iwaBad",[0;4;5;12]; "iwaBeton",[0;6;12]; "iwaNix",[0;6;7]; "iwaParkett",[0;3;5;12]; "iwaTeppich",[0;1;2;12]; ]; xpm_of_xcf [1;2;3] "lrKamin"; xpm_of_xcf [0;1] "lrWasser"; xzgroup "zahn" ["mzZahn"; "mzZahnGras"; "mzZahnDreh"]; xpm_of_pov_trans 3 9 "mzZahn" ["zahn.inc"]; xpm_of_pov_trans 3 9 "mzZahnGras" ["zahn.inc"]; xpm_of_pov_trans 4 8 "mzZahnDreh" ["zahn.inc"]; pov_fill2 "mzZahn" "mzZahn" "Gras" "1" "Gras"; xzgroup "ziehlen" ["mziAlle"]; xpm_of_pov_trans 5 2 "mziAlle" []; ml_module "gen_common" ["easyarg"]; ml_module "helfer" []; ml_module "pam" []; ml_module "natmod" []; ml_module "vektor" ["natmod"]; ml_module "farbe" ["natmod"; "vektor"]; ml_module "xpmlex" ["farbe"]; ml_module "graphik" ["pam"; "farbe"; "xpmlex"; "helfer"]; ml_module "polynome" ["helfer"]; ml_module "vektorgraphik" ["helfer"; "farbe"; "graphik"; "polynome"]; ml_module "easyarg" []; [["xpmlex.ml"], ["xpmlex.mll"], ["ocamllex xpmlex.mll"]]; ml_prog "machxpm" ("easyarg"::ml_graphik); ml_prog "machppm" ("easyarg"::ml_graphik); ] (*===========================================================================*) ;; main rules (); cuyo-2.1.0/datasrc/pics/mbUnbunt.pov0000644000175000017500000000212712422656734014326 00000000000000/* Copyright 2005 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Breite1 = 2; #declare Hoehe1 = 0; #declare Breite0 = 2; #declare Hoehe0 = 2; #include "bunt.inc" #local I=0; #while (I*1000 4} #include "dungeon_boden.inc" #switch (BodenPflanze) #case (1) object {Einheit translate -x rotate -45*x translate -y*2/3} #break #case (2) object {Beet translate -x/2 rotate -45*x scale 2 translate -y*2/3} #break #case (3) #local I=-1; #while (I<=1) object {Grashalm() scale 3 translate } #local I=I+1/6; #end #break #case (4) object {BlumeBlau() scale 3 translate <-2/3,-1,-1/3> rotate -90*x} object {BlumeBlau() scale 3 translate <-1/3,-1,0>} object {BlumeBlau() scale 3 translate <1/3,-1,-1/3> rotate -90*x} object {BlumeBlau() scale 3 translate <2/3,-1,0>} #break #case (5) object {BlumeRot() scale 3 translate <-2/3,-1,-1/3> rotate -90*x} object {BlumeRot() scale 3 translate <-1/3,-1,0>} object {BlumeRot() scale 3 translate <1/3,-1,-1/3> rotate -90*x} object {BlumeRot() scale 3 translate <2/3,-1,0>} #break #end #else #declare DraufVersion = 0; #include "dungeon.inc" #ifdef(BodenVersion) object { Boden #if (mod(BodenVersion,2)>1/2) translate -x #end #if (mod(BodenVersion,4)>3/2) translate -z #end translate -1/2 #if (mod(BodenVersion,8)>7/2) rotate 180*y #end #if (BodenVersion>15/2) rotate 90*y #end translate 1/2 } #else object {Boden} #end #end cuyo-2.1.0/datasrc/pics/mdHolz.pov0000644000175000017500000001645612422656734014003 00000000000000/* Copyright 2006,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef(Version) #declare Gross=(Version=-1); #else #declare Gross=0; #end #declare ErstHoehe = 1.3; #declare Aura = 0.1; #declare Blattgroesse = 0.1; #declare BlattGruen1 = rgb <0,0.7,0.2>*0.7; #declare BlattGruen2 = rgb <0.1,0.85,0.1>*0.7; #declare BlattTeile = 6; #declare HolzBraun = rgb <1/3,1/5,0>; #declare Zuf1 = seed(853211); #declare Zuf2 = seed(112358); #declare Zuf3 = seed(11235); #macro Streu(V,F) #local V_=(V); #local D=1; #while (vlength(D)>1) #local D=2*-1; #end #local D=D/vlength(D); #local D=D*vlength(V_)*F; #local V_=D+V_*(1-vdot(D,V_)/vdot(V_,V_)); V_ #end #declare Rinde = function{pattern{bozo scale <1,1,2>/20}} #declare PraeStamm = function(L,R1,R2,TA,CA,X,Y,Z) { min(0,max(-2*Aura,-Aura + select(Z-R1*TA, sqrt(X*X+Y*Y+Z*Z)-R1, select(Z-L-R2*TA, sqrt(X*X+Y*Y)-CA*(R1+(R2-R1)*(Z-R1*TA)/(L+(R2-R1)*TA)), sqrt(X*X+Y*Y+(Z-L)*(Z-L))-R2)) + (Rinde((X*X*X*X-6*X*X*Y*Y+Y*Y*Y*Y)/(X*X+Y*Y)/sqrt(X*X+Y*Y), 4*X*Y*(X*X-Y*Y)/(X*X+Y*Y)/sqrt(X*X+Y*Y), Z)-1/2)*Aura)) } #declare Stamm=function(x,y,z) { #local L = ErstHoehe; #local R1=1/9; #local R2=1/10; #local Alpha = asin((R1-R2)/L); #local TA = tan(Alpha); #local CA = cos(Alpha); PraeStamm(L,R1,R2,TA,CA,x,z,y) } #macro Cone(P1,R1,P2,R2) #local D = P2-P1; #local DR = R1-R2; #local Alpha = asin(DR/vlength(D)); #local CA = cos(Alpha); union { cone { P1+D/vdot(D,D)*R1*DR R1*CA P2+D/vdot(D,D)*R2*DR R2*CA } sphere { P2 R2 } } #end #declare BlattPigH = pigment { checker pigment { checker pigment {BlattGruen1} pigment {BlattGruen2} translate y*(1-1/7) } pigment {BlattGruen2} scale <1e5,1e-5,1> } #declare BlattPig = pigment { checker pigment { checker pigment {BlattGruen1} pigment {BlattPigH} translate x*(1-1/3) } pigment {BlattPigH} translate z/2 scale <1,1e5,1> } #macro Blatt(P,D) #local R=sqrt(D.x*D.x+D.z*D.z); #local Theta=atan2(R,D.y); #if (R<1e-6) #local Phi=0; #else #local Phi=atan2(D.x,D.z); #end #local L=vlength(D); union { #local P1=0; #local DD=L/BlattTeile*y; #local Bieg=(1+2*rand(Zuf3))*10; #local Knick=rand(Zuf3)*5; #local Spreiz=rand(Zuf3)*30; #local RStiel=L/40; #local DRStiel=RStiel/(1.5*BlattTeile); #local Rechts=1+rand(Zuf3); #local Links=1+rand(Zuf3); #local I=0; #while (I1) union { Cone(P1, RStiel/2, P1+Seit*Rechts*Richt, RStiel/3) object { Cone(P1, RStiel/2, P1+Seit*Links*Richt, RStiel/3) scale <-1,1,1> } Textur(pigment{BlattGruen1}) } #end #if (I>0) #local T_=(I+1)/BlattTeile; #local Seit_=L*((1-T_)*pow(1-1/BlattTeile,2)-pow(1-T_,3)); polygon { #if (I>1) 5 #else 4 #end 0 #if (I>1) Seit*Rechts*vrotate(x,Spreiz*z) #end DD+Seit_*Rechts*vrotate(x,Spreiz*z) DD 0 #local W1=degrees(asin((RStiel2-RStiel)/vlength(DD))); #if (I>1) #local W2=Spreiz-degrees(asin(RStiel/(6*Seit*Rechts))); #else #local W2=Spreiz; #end Textur(pigment{ BlattPig scale vlength(DD)/12 rotate 45*z scale <1,1/tan(radians((90-W1-W2)/2)),1> rotate (W2-W1-90)/2*z }) rotate Knick*y rotate Bieg*T*x translate P1 } polygon { #if (I>1) 5 #else 4 #end 0 #if (I>1) Seit*Links*vrotate(-x,-Spreiz*z) #end DD+Seit_*Links*vrotate(-x,-Spreiz*z) DD 0 #if (I>1) #local W2=Spreiz-degrees(asin(RStiel/(6*Seit*Links))); #end Textur(pigment{ BlattPig scale vlength(DD)/12 rotate -45*z scale <1,1/tan(radians((90-W1-W2)/2)),1> rotate (W1-W2+90)/2*z }) rotate -Knick*y rotate Bieg*T*x translate P1 } #local Richt=vrotate(Richt,-Bieg*T_*x); #local Knick=degrees(atan2(-Richt.z,Richt.x)); #local Richt=vrotate(Richt,-Knick*y); #local Spreiz=degrees(atan2(Richt.y,Richt.x)); #end #local P1=P2; #local RStiel=RStiel2; #local I=I+1; #end rotate degrees(Theta)*x rotate degrees(Phi)*y translate P } #end #if (Gross) camera {orthographic location -2*z right 2*x up 2*y} light_source {<-1,1,-2>*1000 1.5} #macro Textur(T) texture{T} #end object {Blatt(0,y) translate -x/2} object {Blatt(0,y) rotate 28*y translate x/2} object {Blatt(-y,y) rotate 56*y translate -x/2} object {Blatt(-y,y) rotate 84*y translate x/2} #else #include "dungeon.inc" #declare Holzbox = intersection { box { <-1/2-Ueberlappung+Blattgroesse,0,-1/2-Ueberlappung+Blattgroesse> <1/2-Ueberlappung+Blattgroesse,BlockHoehe,1/2-Ueberlappung+Blattgroesse> } cylinder { -y (BlockHoehe+1)*y 0.6 } } #macro Ast(P_,D_,R_,N_) #local P=P_; #local D=D_; #local R=R_; #local N=N_; #local I=0; #while(I1) & (rand(Zuf3)<0.13)) #local D1=Streu(D*0.7,pow(rand(Zuf3),0)); #local D2=D-D1; Ast(P,D1,R*vlength(D1)/vlength(D),N-I) Ast(P,D2,R*vlength(D2)/vlength(D),N-I) #else#if (inside(Holzbox,P+D)) #if (I>0) Blatt(P,vnormalize(Streu(D,1))*Blattgroesse) #end #local R2 = R*0.9; object { Cone(P,R,P+D,R2) Textur(pigment {HolzBraun}) } #local P=P+D; #local D=Streu(D*0.95,1/2); #local R=R2; #else Blatt(P,vnormalize(D)*Blattgroesse) #local I=N; #end#end #end #end #declare Krone = union { Ast(ErstHoehe*y,<1,0.7,0.9>/30,1/15,30) } #declare Block = union { isosurface { function {Stamm(x,y,z)} threshold -Aura contained_by {box {<-1/2,0,-1/2> <1/2,2,1/2>}} max_gradient 30 Textur(pigment {HolzBraun}) } #local J=0; #while (J<360) object {Krone rotate J*y} #local J=J+90; #end translate 1/2 } Setze() #end cuyo-2.1.0/datasrc/pics/mdEgo.inc0000644000175000017500000001627012422656734013540 00000000000000/* Copyright 2010,2014 by Mark Weyer Maintenance 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Spezial_Einzel = 1; #include "dungeon.inc" #declare Augenabstand = 0.2; #declare Augen_z = -0.2; #declare Ohr1 = <0.25,2,0>; #declare Ohr2 = <0.45,2.1,0>; #declare Ohrwinkel = -5; #declare Handpos = <0.4, 0.8, -0.14>; #declare Handscale = 0.22; #declare Fingerglied2 = <-0.3,0,-0.05>; #declare Fingerglied3 = <0,0,0.25>; #declare Fingerglied4 = <0.14,0,0>; #declare Fusspos = <0.27,0,0>; #declare Beindicke = 0.15; #declare Haarlaenge = 0.07; #declare Haardicke = Haarlaenge/10; #macro Lid(winkel,welche) sphere { 0 1 1 scale <0.15,0.12,0.04> rotate winkel*x rotate 10*z translate scale welche } #end #macro Horn(hoehe,winkel) #local laenge = 0.35-(1.15-hoehe)*(1.15-hoehe); cylinder { 0 laenge*z 0.04 1/2 scale <0.6,1,1> rotate winkel*x translate hoehe*y } sphere { laenge*z laenge/4 (-0.15) rotate winkel*x translate hoehe*y } #end #macro Finger(laenge,hoehe,welche) #local Fingerglied1 = <0,hoehe*0.044,-0.4>; #local trans1 = transform { translate scale Handscale translate Handpos scale welche } #local trans2 = transform { translate laenge*Fingerglied1 transform trans1 } #local trans3 = transform { translate laenge*Fingerglied2 transform trans2 } #local trans4 = transform { translate laenge*Fingerglied3 transform trans3 } cylinder { 0 laenge*Fingerglied1 0.11 1 transform trans1 } sphere { 0 0.1 (-1) transform trans2 } cylinder { 0 laenge*Fingerglied2 0.1 1 transform trans2 } sphere { 0 0.1 (-1) transform trans3 } cylinder { 0 laenge*Fingerglied3 0.1 1 transform trans3 } sphere { 0 0.1 (-1) transform trans4 } cylinder { 0 laenge*Fingerglied4 0.1 1 transform trans4 } #end #macro Daumen(welche) #local trans = transform { translate <0.15,0.2,0> scale Handscale translate Handpos scale welche } #local punkt1 = <-0.03,0.11,-0.2>; #local punkt2 = <-0.05,0.12,-0.33>; #local punkt3 = <-0.06,0.13,-0.4>; cylinder { 0 punkt1 0.11 1 transform trans } sphere { punkt1 0.1 (-1) transform trans } cylinder { punkt1 punkt2 0.1 1 transform trans } sphere { punkt2 0.1 (-1) transform trans } cylinder { punkt2 punkt3 0.1 1 transform trans } #end #macro BlobHaelfte(mitArmen,welche) //Hals cylinder { 1.3*y Augenhoehe*y 0.15 1/2 } // Schaedel cylinder { 1.7*y <0.1, 2.1, 0.2> 0.2 1 scale welche } sphere { <0.125, 2.1, -0.05> 0.25 1 scale welche } sphere { 0 1 1/2 scale <0.4, 0.2, 0.1> translate <0,Augenhoehe,Augen_z+0.03> } sphere { <0, 1.8, -0.1> 0.3 1/2 } sphere { 0 0.25 1/2 scale <1,0.3,1> rotate 10*x translate <0,2.15,0.1> } // Augen Lid(-30,welche) Lid(40,welche) // Ohren cylinder { Ohr1 Ohr2 0.1 1 scale <1,1,0.3> rotate Ohrwinkel*y scale welche } cylinder { Ohr1 Ohr2-0.01*z 0.05 (-1) translate -(Ohr1+Ohr2)/2 scale <0.8,0.8,0.7> translate (Ohr1+Ohr2)/2 rotate Ohrwinkel*y translate -0.03*z scale welche } sphere { Ohr2 0.2 (-1/3) scale welche } // Ruessel cylinder { <0, 1.9, -0.1> <0, 1.8, -0.4> 0.07 1/2 } cylinder { <0, 1.95, 0.05> <0, 1.75, -0.55> 0.025 (-1/2) } // Ruecken cylinder { <0.15, 1.3, 0.3> <0.1, 0.8, 0.2> 0.3 1 scale <1,1,0.5> scale welche } Horn(1.3, -9) Horn(1.2, -7) Horn(1.1, -5) Horn(1, -3) Horn(0.9, -1) Horn(0.8, 1) cylinder { <0.2, 1.3, 0> <0.15, 1, 0> 0.2 1 scale welche } // Brust cylinder { <0,1.2,-0.3> <0,0.9,-0.2> 0.5 1/2 scale <1,1,0.4> scale welche } // Muskeln sphere { 0 0.2 1/3 scale <0.9,0.8,0.3> rotate 2*x rotate -10*y translate <0.15, 1.25, -0.19> scale welche } sphere { 0 0.15 1/3 scale <0.8,0.6,0.2> rotate -5*y translate <0.1, 1.05, -0.195> scale welche } sphere { 0 0.125 1/3 scale <0.7,0.5,0.15> rotate -5*y translate <0.07, 0.95, -0.194> scale welche } #if (mitArmen) // Arm cylinder { <0.37, 1.3, 0.05> <0.4, 0.9, 0.2> 0.1 1 scale welche } sphere { <0.4, 0.9, 0.2> 0.1 (-1) scale welche } cylinder { <0.41, 0.8, -0.1> <0.4, 0.9, 0.2> 0.1 1 scale welche } sphere { // Bizeps 0 0.2 1/3 scale <0.4, 0.9, 0.1> rotate 10*z rotate -15*y rotate -20*x translate <0.38, 1.1, 0.065> scale welche } Finger(0.9,-1.5,welche) Finger(0.97,-0.5,welche) Finger(1,0.5,welche) Finger(0.97,1.5,welche) Daumen(welche) #end // Bein cylinder { <0.17,0.8,0> Fusspos+Beindicke*y Beindicke 1 scale welche } #end #macro Koerper(mitArmen) blob { BlobHaelfte(mitArmen,1) BlobHaelfte(mitArmen,<-1,1,1>) threshold 0.5 Textur(texture{ pigment {rgb <0.1,0.6,0.5>} finish {brilliance 2 specular 0.2} }) } #end #ifdef(Richtung) #declare Auge = sphere { 0 1/2 Textur(texture{ pigment {image_map {"mdAuge.ppm"} translate 1/2} }) scale 1/7 } #declare Huf = difference { intersection { isosurface { function { - cos(y*170)*Beindicke/170 + sqrt(x*x+z*z) + (y-2*Beindicke)*0.3} } box {<-1,0,-1> 1} } box { -1 1 rotate 45*y scale <0.2,1,1> translate -1.4*z } Textur(texture{ pigment {rgb 1/5} finish {specular 0.5} }) translate Fusspos } #macro Haare() #declare P = <1,2,3>; #declare N = <1,2,3>; #local durchhang = Haarlaenge; #fopen rein "mdEgoHaare.data" read #read(rein P N) #while (defined(rein)) sphere_sweep { cubic_spline 4 P-Haarlaenge*N Haardicke P Haardicke P+Haarlaenge*N-durchhang*y Haardicke/2 P+1.5*Haarlaenge*N-3*durchhang*y 0 Textur(texture{ pigment {rgb <0.3,0.1,0>} finish {specular 0.2} }) } #read(rein P N) #end #end #declare Block = union { object {Auge translate <-Augenabstand/2,Augenhoehe,Augen_z>} object {Auge translate } Koerper(1) Haare() object {Huf} object {Huf scale <-1,1,1>} translate -Augen_z*z rotate Richtung*y translate <1/2,0,1/2> } Setze() #end cuyo-2.1.0/datasrc/pics/bunt.inc0000644000175000017500000001327012422656734013452 00000000000000/* Copyright 2005,2006 by Mark Weyer Maintenance modifications 2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ global_settings { max_trace_level 200 } #declare FesteFarben = 8; #declare Farben = 2*FesteFarben; #declare Hintergrund = 1; #declare Dreifachlicht = 1; #declare Breite=Breite1*Farben+Breite0; #declare Hoehe=Hoehe1*Farben+Hoehe0; #include "cuyopov.inc" #declare Rad_gross = 0.9; #declare Rad_klein = Rad_gross/pow(2,1/3); #declare FesteFarben = 8; #declare Farben = 2*FesteFarben; #declare Farbe = array[Farben]; #local N=0; #while (N; #else #if (A<2) #declare Farbe[N]=; #else #declare Farbe[N]=; #end #end #declare Farbe[N+FesteFarben]=Farbe[N]+<0,0,0,1>; #local N=N+1; #end #declare Seite = array[Farben][Farben]; #local Zufall = seed(58); #local N=0; #while (N=0.5) #declare Seite[M][N] = -1; #declare Seite[N][M] = 1; #else #declare Seite[M][N] = 1; #declare Seite[N][M] = -1; #end #local M=M+1; #end #local N=N+1; #end #declare Threshold = 0.5; #declare Bozo = function{pattern {bozo scale 1/2}} #declare Misch = function (X,Y,Z,I,J,D,S) { min(1,max(0,S*(Bozo(X+2*min(I,J),Y-D/2+4*max(I,J),Z)-1/2+X*cos(D*pi/4)/2) +1/2+(Y-D/2)*sin(D*pi/4)/2)) } #macro Bunt_mods(I,J,D) Textur(texture{ pigment { function {Misch(x,y,z,I,J,D,Seite[I][J])} colour_map {[1/2 rgbt Farbe[I]] [1/2 rgbt Farbe[J]]} } finish {specular 1/3 ambient 1/3} }) no_shadow hollow interior {media { absorption 6 density { function {Misch(x,y,z,I,J,D,Seite[I][J])} colour_map {[1/2 rgbt 1-Farbe[I]] [1/2 rgbt 1-Farbe[J]]} } }} #end #macro Bunt_iso(D,Th) isosurface { #if (D>=1) // Die Funktion Radius^2 hat die Gestalt // (Alpha*|y|+Beta)*(|y|-Gamma)*(|y|-Delta) // beziehungsweise C3*|y|^3+C2*|y|^2+C1*|y|+C0 // Dabei ist Alpha,Beta>=0 und 0<=Gamma0 // Das ganze wird dann so skaliert, da das Volumen des Krpers stimmt #local T=2-D; #local TT=1-T; #local Alpha=T; #local Beta=TT; #local Gamma=TT*(1-Rad_klein); #local Delta=TT*(1+Rad_klein) + T*(1+Rad_klein+Rad_gross)/2; #local C3=Alpha; #local C2=Beta-Alpha*(Gamma+Delta); #local C1=Alpha*Gamma*Delta-Beta*(Gamma+Delta); #local C0=Beta*Gamma*Delta; #local Volumen = C3/4*(pow(Delta,4)-pow(Gamma,4)) +C2/3*(pow(Delta,3)-pow(Gamma,3)) +C1/2*(pow(Delta,2)-pow(Gamma,2)) +C0*(Delta-Gamma); #local Skalierung = 4/3*pow(Rad_klein,3)/Volumen; function {x*x+z*z -(C3*pow(abs(y),3)+C2*pow(abs(y),2)+C1*abs(y)+C0)*Skalierung} #else // Jetzt, nach dem Kontakt, hat Radius^2 die Gestalt // (Alpha*y^2+Beta)*(y^2-Gamma^2) // bezeihungsweise C4*y^4+C2*y^2+C0 // Dabei ist wieder Alpha,Beta,Gamma>=0, // also ist Gamma die einzige Nullstelle >0 // Skalierung wieder nach Volumen #local T=1-D; #local TT=1-T; #local Alpha=TT; #local Beta=T; #local Gamma=TT*(1+Rad_klein+Rad_gross)/2+T*Rad_gross; #local C4=Alpha; #local C2=Beta-Alpha*Gamma*Gamma; #local C0=-Beta*Gamma*Gamma; #local Volumen = C4/5*pow(Gamma,5)+C2/3*pow(Gamma,3)+C0*Gamma; // Dies ist nur das Volumen fr die obere Hlfte, // also wird es nur mit Rad_klein verglichen #local Skalierung = 4/3*pow(Rad_klein,3)/Volumen; function {x*x+z*z-(C4*pow(y,4)+C2*pow(y,2)+C0)*Skalierung} #end threshold Th max_gradient 10 contained_by {box {<-1,-2,-1> <1,2,1>}} translate D/2*y } #end #macro Bunt_voll (D) Bunt_iso(D,0) #end #macro Bunt_hohl (D) difference { Bunt_iso(D,0) Bunt_iso(D,-0.1) } #end #macro Misch_shape (I,J,D,T) isosurface { function {Misch(x,y,z,I,J,D,Seite[I][J])} threshold T max_gradient 2.6 contained_by {box {-1 1+y}} } #end #macro Bunt (I,J,D) #if (I if i=j then 1.0 else 0.0) let durchsichtig = reinkanal durchsichtig_kanal let hintergrund = reinkanal hintergrund_kanal let grau x = Farbe.aus_funktion (function i -> if i<3 then x else 0.0) let rot = von_rgb (rgbrgb 1.0 0.0 0.0) let gruen = von_rgb (rgbrgb 0.0 1.0 0.0) let blau = von_rgb (rgbrgb 0.0 0.0 1.0) let schwarz = grau 0.0 let weiss = grau 1.0 let zufallsfarbe helligkeit kontrast = let ton = Random.float 3.0 in let r,g,b = if ton<=1.0 then (1.0-.ton, ton, 0.0) else if ton<=2.0 then (0.0, 2.0-.ton, ton-.1.0) else (ton-.2.0, 0.0, 3.0-.ton) in let max = max (max r g) b in let c1 = kontrast /. max in let c2 = helligkeit -. kontrast in let skalier x = c1 *. x +. c2 in rgbrgb (skalier r) (skalier g) (skalier b) let zu_rgb d h f = Rgb.plus (Zu_rgb.kuerzer f) (Rgb.plus (Rgb.mal (Farbe.koord f durchsichtig_kanal) d) (Rgb.mal (Farbe.koord f hintergrund_kanal) h)) let nur_rot f = Farbe.koord f 0 let nur_gruen f = Farbe.koord f 1 let nur_blau f = Farbe.koord f 2 let nur_durchsichtig f = Farbe.koord f durchsichtig_kanal let misch2 alt neu mischung = Farbe.plus (Farbe.mal (1.0-.mischung) alt) (Farbe.mal mischung neu) let misch farben = let w,f = List.fold_left (function w,f -> function w',f' -> w+.w', Farbe.plus f (Farbe.mal w' f')) (0.0,schwarz) farben in Farbe.mal (1.0/.w) f let mischspezial f f' = let weiss = Farbe.koord f' 2 in let bunt = (Farbe.koord f' 0)-.weiss in Farbe.aus_funktion (fun i -> max (bunt*.(Farbe.koord f i) +. weiss) (if i<3 then 0.0 else Farbe.koord f' i)) module FarbMap = Map.Make(Farbe) type palette = farbe array type farbkarte = int FarbMap.t type farbverteilung = (farbe*int) array let summe plus f n = (* Berechnet \sum\limits_{0<=i let farbe,n = verteilung.(teil.(i)) in mal (float_of_int n) (f farbe)) (Array.length teil) let teilmap f verteilung teil = Array.map (fun i -> let farbe,n = verteilung.(i) in f i farbe n) teil let anzahl verteilung = Array.fold_left (fun a -> fun (f,n) -> a+n) 0 verteilung let zentriere verteilung anzahl teil = let summe = wichtsumme verteilung teil Farbe.plus Farbe.mal (fun f -> f) in let mittel = Farbe.mal (-1.0/.(float_of_int anzahl)) summe in teilmap (fun i -> fun f -> fun n -> Farbe.plus f mittel) verteilung teil let richtung verteilung teil zentriert = Quad.eigenvektor1 (wichtsumme verteilung teil Mat.plus Mat.mal_skalar (fun farbe -> Mat.aus_funktion (fun i -> fun j -> (Farbe.koord farbe i)*.(Farbe.koord farbe j)))) let projektion verteilung teil richtung = teilmap (fun i -> fun f -> fun n -> i,Farbe.produkt f richtung) verteilung teil let spalte verteilung anzahl projektion = let ziel = anzahl/2 in let rec mitte i n = let i',x = projektion.(i) in let f,dn = verteilung.(i') in let n' = n+dn in if n'>=ziel then if ziel-n >= n'-ziel then i+1,n',anzahl-n' else i,n,anzahl-n else mitte (i+1) n' in let imitte,n1,n2 = mitte 0 0 in n1, Array.init imitte (fun i -> let i',x = projektion.(i) in i'), n2, Array.init ((Array.length projektion)-imitte) (fun i -> let i',x = projektion.(i+imitte) in i') let reduziere_farben1 palette verteilung zielanzahl = let rec halbiere zielanzahl anzahl teil = if Array.length teil <= zielanzahl then teilmap (fun i -> fun farbe -> fun n -> farbe) verteilung teil else if zielanzahl=1 then let summe = wichtsumme verteilung teil Farbe.plus Farbe.mal (fun f -> f) in [| Farbe.mal (1.0/.(float_of_int anzahl)) summe |] else let zentriert = zentriere verteilung anzahl teil in let richtung = richtung verteilung teil zentriert in let projiziert = projektion verteilung teil richtung in Array.stable_sort (fun (i1,x1) -> fun (i2,x2) -> Pervasives.compare x1 x2) projiziert; let anz1,teil1,anz2,teil2 = spalte verteilung anzahl projiziert in (* Berechnung in float, weil es 32Bit-ints schon mal sprengen knnte *) let anz1f,anzahlf,zielanzahlf = float_of_int anz1, float_of_int anzahl, float_of_int zielanzahl in let ziel1 = truncate (zielanzahlf*.anz1f/.anzahlf+.0.5) in let ziel1,ziel2 = if ziel1=0 then 1,zielanzahl-1 else if ziel1=zielanzahl then zielanzahl-1,1 else ziel1,zielanzahl-ziel1 in let len1,len2 = Array.length teil1, Array.length teil2 in let ziel1,ziel2 = if ziel1>len1 then len1, zielanzahl-len1 else if ziel2>len2 then zielanzahl-len2, len2 else ziel1,ziel2 in Array.append (halbiere ziel1 anz1 teil1) (halbiere ziel2 anz2 teil2) in let ziel = zielanzahl-Array.length palette in if ziel <0 then palette else let teil = Array.init (Array.length verteilung) (fun i -> i) in Array.append palette (halbiere ziel (anzahl verteilung) teil) (* Einige Dinge fr Farbquader - dargestellt durch Kanalweise minimale und maximale Farbe im Quader. *) let min2 f1 f2 = Farbe.aus_funktion (* Kanalweises Minimum zweier Farben *) (fun j -> min (Farbe.koord f1 j) (Farbe.koord f2 j)) let max2 f1 f2 = Farbe.aus_funktion (* Kanalweises Maximum zweier Farben *) (fun j -> max (Farbe.koord f1 j) (Farbe.koord f2 j)) let minquaderabstand2 f min max = (* Der kleinstmgliche Abstand von f zu einer Farbe im Quader. (Abstand heit, wie hier berall, euklidischer Abstand im Quadrat.) *) let rec summe bisher j = if j<0 then bisher else let xf,xm,xM = Farbe.koord f j, Farbe.koord min j, Farbe.koord max j in let dx = if xfxM then xf-.xM else 0.0 in summe (bisher+.dx*.dx) (j-1) in summe 0.0 (Kanaele.n-1) let maxquaderabstand2 f min max = (* Der grtmgliche Abstand von f zu einer Farbe im Quader. (Abstand heit, wie hier berall, euklidischer Abstand im Quadrat.) *) let rec summe bisher j = if j<0 then bisher else let xf,xm,xM = Farbe.koord f j, Farbe.koord min j, Farbe.koord max j in let dx = if xf+.xf < xm+.xM then xM-.xf else xf-.xm in summe (bisher+.dx*.dx) (j-1) in summe 0.0 (Kanaele.n-1) let durchmesser2 min max = let rec summe bisher j = if j<0 then bisher else let dx = (Farbe.koord max j) -. (Farbe.koord min j) in summe (bisher +. dx*.dx) (j-1) in summe 0.0 (Kanaele.n-1) let maxabstand2_quader (min,max) (min',max') = durchmesser2 (min2 min min') (max2 max max') let minimum kleiner f n = (* Gibt (i,f i) fr das i aus, das (f i) in {0,...,n-1} minimiert. *) let rec suche i im ym = if i=0 then im,ym else let y = f i in if kleiner y ym then suche (i-1) i y else suche (i-1) im ym in suche (n-1) 0 (f 0) type 'a farb_baum = (* Binrer Suchbaum fr Farben. Gespeichert werden nur Indices in eine Palette, nicht die Farben selbst. 'a ist Zusatzinformation. Zusatzinformationen sind spter: - unit oder - int ref. Damit wird gezhlt, wieviele bereits gewhlte Farben der Baum enthlt. *) | Blatt of int * 'a | Knoten of int * float * farbe * farbe * 'a farb_baum * 'a farb_baum * 'a (* Spaltdimension, Schwellenwert, min, max, Kinder, Zusatzinfo. Das erste Kind bekommt alle Farben, deren Koordinate in der Spaltdimension kleiner als die Schwelle ist. min und max sind so, da sie den gleichen Quader aufspannen, wie alle enthaltenen Farben. *) type farbindex = unit farb_baum let quader palette baum = match baum with | Blatt (i,a) -> let f = palette.(i) in f,f | Knoten (dim, schwelle, min, max, lbaum, rbaum, a) -> min,max let spalt min max = (* Berechnet aus den Quaderdaten die Spaltdimension und -schwelle. *) let dim = fst (minimum (>) (fun j -> (Farbe.koord max j)-.(Farbe.koord min j)) Kanaele.n) in let schwelle = ((Farbe.koord min dim)+.(Farbe.koord max dim))*.0.5 in dim,schwelle let rec verteile palette (teil : int array) (a : unit -> 'a) = (* Erzeugt einen 'a farb_baum, der genau die durch teil indizierten Farben enthlt. Mehrfach vorkommende Farben sind im Baum nur einfach vertreten. *) let n = Array.length teil in if n=1 then Blatt (teil.(0), a ()) else let minx j = snd (minimum (<) (fun i -> Farbe.koord palette.(teil.(i)) j) n) in let maxx j = snd (minimum (>) (fun i -> Farbe.koord palette.(teil.(i)) j) n) in let min = Farbe.aus_funktion minx in let max = Farbe.aus_funktion maxx in let dim,schwelle = spalt min max in let links = Array.fold_left (* Anzahl der Farben im linken Teilbaum *) (fun n -> fun i -> if Farbe.koord palette.(i) dim < schwelle then n+1 else n) 0 teil in if links=0 (* Dann sind alle Farben schon gleich *) then Blatt (teil.(0), a ()) else let lteil = Array.make links 0 in let rteil = Array.make (n-links) 0 in (* Die Argumente fr den rekursiven Aufruf; jetzt mssen sie erst noch richtig initialisiert werden. *) ignore (Array.fold_left (fun (il,ir) -> fun i -> if Farbe.koord palette.(i) dim < schwelle then ( lteil.(il)<-i; il+1, ir) else ( rteil.(ir)<-i; il, ir+1)) (0,0) teil); Knoten (dim, schwelle, min, max, verteile palette lteil a, verteile palette rteil a, a ()) let mach_baum palette = verteile palette (Array.mapi (fun i -> fun f -> i) palette) let mach_index palette = mach_baum palette (fun () -> ()) let rec fueg_ein palette baum farbe i = match baum with (* Nimmt eine neue Farbe in einen unit farb_baum auf. *) | Blatt (i',()) -> if i=i' then Blatt (i',()) else let farbe' = palette.(i') in let min = min2 farbe farbe' in let max = max2 farbe farbe' in let dim,schwelle = spalt min max in if Farbe.koord farbe dim < Farbe.koord farbe' dim then Knoten (dim, schwelle, min, max, Blatt (i,()), Blatt (i',()), ()) else Knoten (dim, schwelle, min, max, Blatt (i',()), Blatt (i,()), ()) | Knoten (dim, schwelle, min, max, lteil, rteil, ()) -> let min' = min2 min farbe in let max' = max2 max farbe in if Farbe.koord farbe dim < schwelle then Knoten (dim, schwelle, min', max', fueg_ein palette lteil farbe i, rteil, ()) else Knoten (dim, schwelle, min', max', lteil, fueg_ein palette rteil farbe i, ()) let plaette palette baum n = (* Macht aus baum eine neue Palette (eine Teilmenge von palette). n ist die Anzahl der Farben in baum. *) let raus = Array.make n schwarz in (* Wird gleich noch richtig initialisiert. *) let rec schreite ir teil = match teil with (* Geht durch den Baum durch; ir ist der nchst Index in raus. *) | Blatt (i,a) -> (raus.(ir) <- palette.(i); ir+1) | Knoten (dim, schwelle, min, max, lteil, rteil, a) -> schreite (schreite ir lteil) rteil in ignore (schreite 0 baum); raus let rec maxabstand palette f ib db baum = match baum with (* Im Baum wird die Farbe gesucht, die von f am weitesten entfernt ist. Von ihr wird Nummer und Abstand zu f ausgegeben. Dabei ist (ib,db) ein bereits bekannter Kandidat. *) | Blatt (i,a) -> let d = Farbe.abstand2 f palette.(i) in if d>db then i,d else ib,db | Knoten (dim,schwelle,min,max,lbaum,rbaum,a) -> if maxquaderabstand2 f min max < db then ib,db else if Farbe.koord f dim < schwelle (* Wir suchen zuerst in der entfernteren Hlfte. *) then let ib',db' = maxabstand palette f ib db rbaum in maxabstand palette f ib' db' lbaum else let ib',db' = maxabstand palette f ib db lbaum in maxabstand palette f ib' db' rbaum let rec maxabstand_paar palette baum1 baum2 i1b i2b db = match baum1 with (* In den Bumen werden die Farben gesucht, die voneinander am weitesten entfernt sind. Es soll je Baum eine Farbe sein. Von ihnen werden Nummern und Abstand ausgegeben. Dabei ist (i1b,i2b,db) ein bereits bekannter Kandidat. *) | Blatt (i1,a) -> let i2,d = maxabstand palette palette.(i1) (-1) db baum2 in if d>db then i1,i2,d else i1b,i2b,db | Knoten (dim,schwelle,min,max,lbaum,rbaum,a) -> let q2 = quader palette baum2 in if maxabstand2_quader (min,max) q2 <= db then i1b,i2b,db else let ql,qr = quader palette lbaum, quader palette rbaum in let dl,dr = maxabstand2_quader ql q2, maxabstand2_quader qr q2 in if dl>dr then let i1b',i2b',db' = maxabstand_paar palette baum2 lbaum i1b i2b db in (* Bei all diesen Aufrufen ist es wichtig, da baum1 und baum2 vertauscht werden, da die Fallunterscheidung oben nur fr baum1 gemacht wird. *) maxabstand_paar palette baum2 rbaum i1b' i2b' db' else let i1b',i2b',db' = maxabstand_paar palette baum2 rbaum i1b i2b db in maxabstand_paar palette baum2 lbaum i1b' i2b' db' let rec maxabstand_paar' palette baum i1b i2b db = match baum with (* Wie maxabstand_paar, nur da baum1=baum2. *) | Blatt (i,a) -> i1b,i2b,db | Knoten (dim,schwelle,min,max,lbaum,rbaum,a) -> if durchmesser2 min max <= db then i1b,i2b,db else let i1b',i2b',db' = maxabstand_paar palette lbaum rbaum i1b i2b db in let (lmin,lmax),(rmin,rmax) = quader palette lbaum, quader palette rbaum in let dl,dr = durchmesser2 lmin lmax, durchmesser2 rmin rmax in if dl>dr then let i1b'',i2b'',db'' = maxabstand_paar' palette lbaum i1b' i2b' db' in maxabstand_paar' palette rbaum i1b'' i2b'' db'' else let i1b'',i2b'',db'' = maxabstand_paar' palette rbaum i1b' i2b' db' in maxabstand_paar' palette lbaum i1b'' i2b'' db'' let max_abstand_paar palette baum = let i1,i2,d = maxabstand_paar' palette baum (-1) (-1) (-1.0) in i1,i2 let rec zaehle farbe baum = match baum with (* Geht von einem (int * bool) ref farb_baum aus und teilt ihm mit, da eine neue Farbe aufgenommen wurde. Entsprechend wird die Zusatzinformation angepasst. *) | Blatt (i,drin) -> drin := !drin+1 | Knoten (dim, schwelle, min, max, lteil, rteil, drin) -> (drin := !drin+1; if Farbe.koord farbe dim < schwelle then zaehle farbe lteil else zaehle farbe rteil) let dmax = float_of_int (Kanaele.n + 1) (* Sollte grer als jedes Abstandsquadrat sein. Hier geht die Annahme ein, da Werte von Farbkanlen zwischen 0 und 1 liegen. *) let rec minabstand palette f ib db baum = match baum with (* Im Baum wird die Farbe gesucht, die f am nchsten ist. Von ihr wird Nummer und Abstand zu f ausgegeben. Dabei ist (ib,db) ein bereits bekannter Kandidat. *) | Blatt (i,a) -> let d = Farbe.abstand2 f palette.(i) in if d if minquaderabstand2 f min max >= db then ib,db else if Farbe.koord f dim < schwelle (* Wir suchen zuerst in der nheren Hlfte. *) then let ib',db' = minabstand palette f ib db lbaum in minabstand palette f ib' db' rbaum else let ib',db' = minabstand palette f ib db rbaum in minabstand palette f ib' db' lbaum let naechste_farbe palette baum farbe = fst (minabstand palette farbe (-1) dmax baum) exception Zu_Klein let rec minabstand' palette ds f db baum = match baum with (* Der minimale Abstand interessiert uns nur, falls er mehr als ds ist. *) | Blatt (i,()) -> let d = Farbe.abstand2 f palette.(i) in if d<=ds then raise Zu_Klein else if d if maxquaderabstand2 f min max <= ds then raise Zu_Klein else if minquaderabstand2 f min max >= db then db else if Farbe.koord f dim < schwelle then let db' = minabstand' palette ds f db lbaum in minabstand' palette ds f db' rbaum else let db' = minabstand' palette ds f db rbaum in minabstand' palette ds f db' lbaum let drin baum = match baum with | Blatt (i,drin) -> !drin | Knoten (dim, schwelle, min, max, lteil, rteil, drin) -> !drin let rec maxminabstand palette gross klein ib db = match gross with | Blatt (i,r) -> (try i, minabstand' palette db palette.(i) dmax klein with Zu_Klein -> ib,db) | Knoten (dim, schwelle, min, max, lteil, rteil, dr) -> if if !dr>0 then durchmesser2 min max <= db else false then ib,db else if drin lteil < drin rteil then let ib',db' = maxminabstand palette lteil klein ib db in maxminabstand palette rteil klein ib' db' else let ib',db' = maxminabstand palette rteil klein ib db in maxminabstand palette lteil klein ib' db' let reduziere_farben2 festepalette palette zielanzahl = let feste_anz = Array.length festepalette in if feste_anz >= zielanzahl then festepalette else let palette = Array.append festepalette palette in if zielanzahl >= Array.length palette then palette else let gross = mach_baum palette (fun () -> ref 0) in let anfang, n_anfang = if feste_anz = 0 then ( let i1,i2 = max_abstand_paar palette gross in let farbe1 = palette.(i1) in let farbe2 = palette.(i2) in zaehle farbe1 gross; zaehle farbe2 gross; fueg_ein palette (Blatt (i1,())) farbe2 i2, 2) else ( Array.iter (fun farbe -> zaehle farbe gross) festepalette; mach_baum festepalette (fun () -> ()), feste_anz) in let rec sammle klein n = if n>=zielanzahl then plaette palette klein n else (let i,d = maxminabstand palette gross klein (-1) (-1.0) in let farbe = palette.(i) in zaehle farbe gross; sammle (fueg_ein palette klein farbe i) (n+1)) in sammle anfang n_anfang cuyo-2.1.0/datasrc/pics/gen_kacheln.ml0000644000175000017500000003045512422656734014603 00000000000000(* Copyright 2006,2007,2010,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik open Vektorgraphik open Helfer open Male_mit_aa let satt farbe = farbe, farbe let blass farbe = farbe, misch2 farbe weiss 0.5 let farbraum = [ satt (grau (1.0/.3.0)); satt (grau (2.0/.3.0)); blass (von_rgb (rgbrgb 0.95 0.0 0.0)); blass (von_rgb (rgbrgb 0.0 0.9 0.1)); blass (von_rgb (rgbrgb 0.2 0.3 1.0)); blass (von_rgb (rgbrgb 1.0 1.0 0.0)); blass (von_rgb (rgbrgb 0.9 0.0 1.0)); ] let leerpolygon = konvertiere_polygon [] let strichdicke = 0.025 let male breite hoehe bild = male bild (1.0/.32.0) (monochrom durchsichtig breite hoehe) let raus gric methode name bild = gib_xpm_aus ~methode:methode (rgb_grau 1.0) name (berechne gric bild) let rundzug (h::t) = let p,z = List.fold_left (function p,bisher -> function p' -> p',(Strecke (p,p'))::bisher) (h,[]) t in (Strecke (p,h))::z let kachel breite hoehe randsatt randblass (farbesatt,farbeblass) = let x0,y0,x1,y1 = -1.0, -1.0, float_of_int (breite+1), float_of_int (hoehe+1) in let rahmen = konvertiere_polygon (rundzug [x0,y0; x1,y0; x1,y1; x0,y1]) in male breite hoehe (erzeuge_vektorbild [ flaeche farbesatt [randsatt]; flaeche farbeblass [randblass]; Dicker_Strich (schwarz, strichdicke, [randsatt]); Dicker_Strich (schwarz, strichdicke, [randblass]); flaeche durchsichtig [randsatt; randblass; rahmen]; ]) let kacheln breite hoehe randsatt randblass = let farben = List.length farbraum in kombiniere_bildchen breite (farben*hoehe) (list_for 0 (farben-1) (fun i -> 0, i*hoehe, kachel breite hoehe randsatt randblass (List.nth farbraum i))) let fall h rand farbe = male 1 h (erzeuge_vektorbild [ Flaechen ([| fst (List.nth farbraum farbe) |], [rand,0, None]); Dicker_Strich (schwarz, strichdicke, [rand]) ]) let faelle h rand = let anzahl = List.length farbraum in kombiniere_bildchen anzahl h (list_for 1 anzahl (fun i -> i-1,0, fall h rand (anzahl-i))) let punktaus punkte i x y = let x',y' = punkte.(i) in x+.x', y+.y' let sechseck = let kantenlaenge_x = 2.0/.(3.0+.(sqrt 3.0)) in let halbkante = kantenlaenge_x/.2.0 in let kantenlaenge_y = 1.0/.(1.0+.(sqrt 3.0)) in let dreieckshoehe = kantenlaenge_y*.(sqrt 0.75) in [| kantenlaenge_x, 0.0; halbkante, dreieckshoehe; -.halbkante, dreieckshoehe; -.kantenlaenge_x, 0.0; -.halbkante, -.dreieckshoehe; halbkante, -.dreieckshoehe; |] let punkt = punktaus sechseck let sechseck_rahmen = let sechseck links unten rechts x y = (rundzug [punkt 0 x y; punkt 1 x y; punkt 2 x y; punkt 3 x y; punkt 4 x y; punkt 5 x y]) @ (if links then [ Strecke (punkt 3 x y, punkt 1 (x-.1.0) (y-.0.5)); Strecke (punkt 4 x y, punkt 0 (x-.1.0) (y-.0.5))] else []) @ (if unten then [ Strecke (punkt 4 x y, punkt 2 x (y-.1.0)); Strecke (punkt 5 x y, punkt 1 x (y-.1.0))] else []) @ (if rechts then [ Strecke (punkt 5 x y, punkt 3 (x+.1.0) (y-.0.5)); Strecke (punkt 0 x y, punkt 2 (x+.1.0) (y-.0.5))] else []) in erzeuge_vektorbild [Dicker_Strich (schwarz,strichdicke,[konvertiere_polygon ( (sechseck true false false 1.5 2.0) @ (sechseck false true true 0.5 1.5) @ (sechseck true true false 1.5 1.0) @ (sechseck false false true 0.5 0.5) @ (sechseck false false false 1.5 0.0))])] let sechseck_kacheln = let randsatt = konvertiere_polygon ( (rundzug [ punkt 0 0.5 0.5; punkt 1 0.5 0.5; punkt 2 0.5 0.5; punkt 3 0.5 0.5; punkt 4 0.5 0.5; punkt 5 0.5 0.5])) in let randblass = konvertiere_polygon ( (rundzug [ punkt 1 1.5 0.0; punkt 5 1.5 1.0; punkt 4 1.5 1.0; punkt 2 1.5 0.0]) @ (rundzug [ punkt 3 3.5 0.5; punkt 2 3.5 0.5; punkt 0 2.5 1.0; punkt 5 2.5 1.0; punkt 3 3.5 0.5; punkt 1 2.5 0.0; punkt 0 2.5 0.0; punkt 4 3.5 0.5]) @ (rundzug [ punkt 3 4.5 0.5; punkt 5 3.5 1.0; punkt 1 3.5 0.0]) @ (rundzug [ punkt 0 4.5 0.5; punkt 2 5.5 0.0; punkt 4 5.5 1.0])) in kacheln 6 1 randsatt randblass let viereck = let halbkante = 1.0 /. (1.0+.(sqrt 3.0)) in [| halbkante, 0.0; 1.0, halbkante; 1.0-.halbkante, 1.0; 0.0, 1.0-.halbkante; |] let punkt = punktaus viereck let ein_viereck x y umgekehrt = if umgekehrt then rundzug [punkt 0 x (y+.1.0); punkt 1 (x-.1.0) y; punkt 2 x (y-.1.0); punkt 3 (x+.1.0) y] else rundzug [punkt 0 x y; punkt 1 x y; punkt 2 x y; punkt 3 x y] let zwei_vierecke x y = (ein_viereck x y false) @ (ein_viereck x (1.0-.y) true) let viereck_rahmen = erzeuge_vektorbild [Dicker_Strich (schwarz,strichdicke,[konvertiere_polygon ( (zwei_vierecke (-1.0) 0.0) @ (zwei_vierecke 0.0 (-1.0)) @ (zwei_vierecke 1.0 0.0) @ (zwei_vierecke 2.0 1.0) @ (zwei_vierecke 3.0 2.0) @ (zwei_vierecke 4.0 1.0) @ [ Strecke (punkt 2 (-1.0) 0.0, punkt 0 0.0 1.0); Strecke (punkt 3 1.0 0.0, punkt 1 0.0 1.0); Strecke (punkt 2 1.0 0.0, punkt 0 2.0 1.0); Strecke (punkt 3 3.0 0.0, punkt 1 2.0 1.0); Strecke (punkt 2 3.0 0.0, punkt 0 4.0 1.0); ])])] let viereck_kacheln = let randsatt = konvertiere_polygon ( (rundzug [ punkt 0 2.0 0.0; punkt 1 2.0 0.0; punkt 2 2.0 0.0; punkt 3 3.0 1.0; punkt 0 2.0 2.0; punkt 1 1.0 1.0; punkt 2 2.0 0.0; punkt 3 2.0 0.0])) in let randblass = konvertiere_polygon ( (rundzug [punkt 0 1.0 1.0; punkt 1 0.0 0.0; punkt 2 0.0 0.0]) @ (rundzug [punkt 0 1.0 1.0; punkt 3 1.0 1.0; punkt 2 0.0 0.0]) @ (rundzug [punkt 1 3.0 1.0; punkt 2 4.0 0.0; punkt 3 4.0 0.0]) @ (rundzug [punkt 1 3.0 1.0; punkt 0 3.0 1.0; punkt 3 4.0 0.0])) in kacheln 5 2 randsatt randblass let viereck_fall = let rand = konvertiere_polygon (rundzug [0.1,0.5; 0.5,0.1; 0.9,0.5; 0.5,0.9]) in faelle 1 rand let abschnitt = ((sqrt 7.0)-.1.0)/.6.0 let fuenfeck x y r = let drehung = List.nth [(function x,y -> x,y); (function x,y -> 1.0-.y,x); (function x,y -> 1.0-.x,1.0-.y); (function x,y -> y,1.0-.x)] r in let richtung x' y' = let x'',y'' = drehung (x',y') in x+.x'',y+.y'' in rundzug [richtung abschnitt abschnitt; richtung 1.0 0.0; richtung (1.0+.abschnitt) (1.0-.abschnitt); richtung (1.0-.abschnitt) (1.0+.abschnitt); richtung 0.0 1.0] let fuenfeck_rahmen = erzeuge_vektorbild [Dicker_Strich (schwarz,strichdicke,[konvertiere_polygon ( (fuenfeck 0.0 1.0 0) @ (fuenfeck 1.0 2.0 2) @ (fuenfeck 0.0 2.0 1) @ (fuenfeck 0.0 (-1.0) 3) @ (fuenfeck 1.0 (-1.0) 0) @ (fuenfeck 4.0 0.0 1) @ (fuenfeck 3.0 1.0 3) @ (fuenfeck 3.0 0.0 2) @ (fuenfeck 6.0 0.0 0) @ (fuenfeck 6.0 1.0 1) @ (fuenfeck 5.0 4.0 2) @ (fuenfeck 4.0 3.0 0) @ (fuenfeck 5.0 3.0 3) @ (fuenfeck 5.0 6.0 1) @ (fuenfeck 4.0 6.0 2) @ (fuenfeck 1.0 5.0 3) @ (fuenfeck 2.0 4.0 1) @ (fuenfeck 2.0 5.0 0) @ (fuenfeck (-1.0) 5.0 2) @ (fuenfeck (-1.0) 4.0 3) )])] let fuenfeck_kacheln = let rand = konvertiere_polygon ( (fuenfeck 0.0 0.0 0) @ (fuenfeck 2.0 1.0 2) @ (fuenfeck 3.0 1.0 3) @ (fuenfeck 5.0 0.0 1)) in kacheln 6 2 rand leerpolygon let fuenfeck_fall = let rad = 0.4 in let d = rad*.abschnitt in let rand = konvertiere_polygon (rundzug [0.5-.2.0*.d, 0.5-.rad+.d; 0.5+.2.0*.d, 0.5-.rad+.d; 0.5+.rad, 0.5+.d; 0.5, 0.5+.rad-.d; 0.5-.rad, 0.5+.d]) in faelle 1 rand (* Ab jetzt arbeiten wir auf den 3D-Hetzrand hin. *) (* a und b sind Parameter. a ist die halbe Länge der Fünfeckskante, zu der es keine symmetrische gibt. b ist die Amplitude der Knitterung. *) let a = (sqrt(29.0)-.1.0)/.7.0 (* So werden die Winkel möglichst gut. *) let b = sqrt ((3.0*.a+.2.0)*.a-.2.0) (* So werden alle Kanten gleich lang. *) let koord i j k = (* Gesucht ist ein Eckpunkt. i und j sind ganze Zahlen und adressieren ein 4x2-Feld, in dem sich 4 Fünfecke aufhalten. 0<=k<6 adressiert einen Punkt in diesem Feld. *) let x0,y0 = float_of_int (4*i+2*j), float_of_int (2*j) in match k with | 0 -> (x0+.a, y0, -.b) | 1 -> (x0+.2.0, y0+.a, b) | 2 -> (x0+.4.0-.a, y0, -.b) | 3 -> (x0+.1.0, y0+.1.0, 0.0) | 4 -> (x0+.3.0, y0+.1.0, 0.0) | 5 -> (x0, y0+.2.0-.a, b) | _ -> raise (Invalid_argument "koord") let si,co = let winkel = 0.2 in sin winkel, cos winkel let trans1 (x,y,z) = (x*.co+.y*.si, y*.co-.x*.si, z) let si,co = let winkel = 1.0 in sin winkel, cos winkel let trans2 (x,y,z) = (x, y*.co-.z*.si, z*.co+.y*.si) let trans3 (x,y,z) = let faktor = 0.4 in (x*.faktor+.5.0, y*.faktor+.0.3) let trans p = trans3 (trans2 (trans1 p)) let punkt i j k = trans (koord i j k) let fuenfeck kontrast i j k = (* Ähnlich zu koord. 0<=k<4 adressiert eines der 4 Fünfecke. Rückgabetyp ist (vektording list). *) let punkte = List.map (fun (i',j',k') -> trans(koord (i+i') (j+j') k')) (match k with | 0 -> [0,0,0; 0,0,3; 0,0,5; -1,0,4; -1,0,2] | 1 -> [0,0,0; 0,-1,4; 1,-1,5; 0,0,1; 0,0,3] | 2 -> [0,0,1; 0,0,4; 0,1,0; -1,1,2; 0,0,3] | 3 -> [0,0,3; -1,1,2; -1,1,4; -1,1,1; 0,0,5] | _ -> raise (Invalid_argument "fuenfeck")) in let [p1;p2;p3;p4;p5] = punkte in let poly = [konvertiere_polygon [ Strecke (p1,p2); Strecke (p2,p3); Strecke (p3,p4); Strecke (p4,p5); Strecke (p5,p1)]] in [flaeche (von_rgb (zufallsfarbe 1.0 kontrast)) poly; Strich (grau (1.0-.2.0*.kontrast), poly);] let zeilen = 20 let extra_zeilen = 3 let zeile j = let kontrast = 0.5*.(1.0-.float_of_int(min j zeilen)/.float_of_int(zeilen)) in List.concat (list_for (-6-j/2) (2-j/2) (fun i -> List.concat [ fuenfeck kontrast i j 3; fuenfeck kontrast i j 2; fuenfeck kontrast i (j+1) 1])) let fuenfeck_hetz = erzeuge_vektorbild (List.concat (list_for (zeilen+extra_zeilen) 1 zeile)) (* Alte Variante, bei der nicht immer alle Rahmen zu sehen sind. *) let rhombus_rahmen = erzeuge_vektorbild [Dicker_Strich (schwarz,strichdicke,[konvertiere_polygon ( (rundzug [1.0,-0.5; 4.0,1.0; 2.0,2.0; 4.0,3.0; 1.0,4.5; -2.0,3.0; 0.0,2.0; -2.0,1.0]) @ [Strecke ((1.0,0.5),(1.0,3.5)); Strecke ((0.0,1.0),(1.0,1.5)); Strecke ((2.0,1.0),(1.0,1.5)); Strecke ((0.0,3.0),(1.0,2.5)); Strecke ((2.0,3.0),(1.0,2.5))])])] (* Wird auch nicht mehr gebraucht. *) let rhombus_rahmen = erzeuge_vektorbild [Dicker_Strich (schwarz,strichdicke,[konvertiere_polygon ( rundzug [0.0,0.0; 1.0,0.5; 1.0,2.5; 0.0,3.0; 0.0,2.0; 1.0,1.5; 0.0,1.0])])] let rhombus_rand = konvertiere_polygon ( (rundzug [0.0,2.5; 1.0,2.0; 2.0,2.5; 1.0,3.0]) @ (rundzug [0.0,1.0; 1.0,0.5; 1.0,1.5; 0.0,2.0]) @ (rundzug [2.0,0.5; 1.0,0.0; 1.0,1.0; 2.0,1.5])) let rhombus_kacheln = kacheln 2 3 rhombus_rand leerpolygon let rhombus_fall = let e = (1.0-.2.0*.strichdicke)/.4.0 in faelle 3 (konvertiere_polygon ( rundzug [0.5,2.5-.e; 0.5+.2.0*.e,2.5; 0.5,2.5+.e; 0.5-.2.0*.e,2.5] @ rundzug [0.5,1.5-.e; 0.5+.2.0*.e,1.5; 0.5+.2.0*.e,1.5+.2.0*.e; 0.5,1.5+.e] @ rundzug [0.5,0.5-.e; 0.5+.2.0*.e,0.5-.2.0*.e; 0.5+.2.0*.e,0.5; 0.5,0.5+.e])) let rhombus_leer = kachel 2 3 rhombus_rand leerpolygon (weiss,weiss) ;; let gric,command,outname = Gen_common.parse_args () in let bild = match command with | "mkaSechseckRahmen" -> male 2 2 sechseck_rahmen | "mkaSechseckKacheln" -> sechseck_kacheln | "mkaViereckRahmen" -> male 4 2 viereck_rahmen | "mkaViereckKacheln" -> viereck_kacheln | "mkaViereckFall" -> viereck_fall | "mkaFuenfeckRahmen" -> male 6 6 fuenfeck_rahmen | "mkaFuenfeckKacheln" -> fuenfeck_kacheln | "mkaFuenfeckFall" -> fuenfeck_fall | "mkaFuenfeckHetz" -> male 10 10 fuenfeck_hetz | "mkaRhombusKacheln" -> rhombus_kacheln | "mkaRhombusFall" -> rhombus_fall | "mkaRhombusLeer" -> rhombus_leer in let methode = if command="mkaFuenfeckHetz" then Heuristik_mittlerer_euklidischer else Heuristik_maximaler_euklidischer in raus gric methode outname bild; cuyo-2.1.0/datasrc/pics/mdEgoV.pov0000644000175000017500000000145012422656734013713 00000000000000/* Copyright 2010 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Richtung = 0; #include "mdEgo.inc" cuyo-2.1.0/datasrc/pics/dungeon.inc0000644000175000017500000001263612422656734014146 00000000000000/* Copyright 2006,2008,2010,2011,2014 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #declare Eigenes_Licht = 1; #declare Eigene_Kamera = 1; #declare Typ_FirstPerson = 1; #declare Typ_Draufsicht = 2; #declare Typ_Seitensicht = 3; #declare Typ_Sonst = 4; #ifdef (Version) #declare Typ=Typ_FirstPerson; #else #ifdef (DraufVersion) #declare Typ=Typ_Draufsicht; #else #ifdef (SeitenVersion) #declare Typ=Typ_Seitensicht; #else #declare Typ=Typ_Sonst; #end #end #end #if (Typ=Typ_FirstPerson) #declare Nebel = 1; #else #if (Typ=Typ_Draufsicht) #declare Breite = 2; #ifdef (Spezial_Halbhoch) #declare Hoehe = 2; #declare BodenHoehe = 4; #else #declare Hoehe = 4; #end #declare BlockDrehung = DraufVersion; #declare Nebel = 1; #else #if (Typ=Typ_Seitensicht) #declare Breite = 2; #declare Hoehe = 2; #declare BlockDrehung = SeitenVersion-3; #declare Nebel = 0; #end #end #end #ifdef (Hoehe) #ifndef (BodenHoehe) #if (Typ!=Typ_Sonst) #declare BodenHoehe=Hoehe; #end #end #end #include "dungeon_boden.inc" #declare Hintergrund = 0; #declare Nebelweite = 1000; #include "cuyopov.inc" #declare BlockHoehe = 3; #declare Ueberlappung = 0.03; #declare Augenhoehe = BlockHoehe*2/3; #declare Sichtweite = 5.5; #declare Groesse = array[7] { // Die letzten zwei Eintrge // sind Dummies fr Boden und Himmel 4,4,3,3,2,0,-1 }; #macro BlockAusWand(Wand) union { object {Wand} object {Wand rotate 90*y translate z} object {Wand rotate 180*y translate x+z} object {Wand rotate 270*y translate x} } #end #macro SetzBlock(X,Z) object {Block clipped_by {box {<-1,-1,-1> <2,1+BlockHoehe,2>}} translate } #end #macro Setze() #if (Typ=Typ_FirstPerson) #local Z=int(sqrt(Version+1)); #local X=Version+1-Z*Z-Z; SetzBlock(X,Z) #ifndef (Nur_Umriss) object {Boden} #end #else union { #ifndef (Nur_Umriss) #if (Typ=Typ_Draufsicht) object {Boden} #end #end #ifdef (Spezial_Einzel) object { SetzBlock(-1,0) #if (Typ=Typ_Draufsicht) #if ((DraufVersion=1) | (DraufVersion=3)) translate x #end #if (DraufVersion>=2) translate -z #end #else translate x/2 #end } #else #ifdef (Spezial_Halbhoch) object { DoppelBlock translate <1,0,-3> #if ((DraufVersion=1) | (DraufVersion=3)) translate -2*x #end #if (DraufVersion>=2) translate 2*z #end #if (DraufVersion=4) translate 2*z #end #if (DraufVersion=5) translate -4*z #end } #else union { SetzBlock(-1,0) SetzBlock(-1,-1) rotate BlockDrehung*90*y } #end #end } #end #end #ifndef (Nur_Umriss) #if (Typ!=Typ_Sonst) #if (Nebel) box{ -Nebelweite hollow pigment {rgbt <0,0,0,1>} interior {media {emission 1/Sichtweite}} } #end #end #declare Numlights = 4*5; #local I=0; #while (I right 2*x #switch (Groesse[int(sqrt(Version+1))-1]) #case (4) #local hoch=1; #local runter=1; #break #case (3) #local hoch=1/2; #local runter=1; #break #case (2) #local hoch=1/2; #local runter=1/2; #break #case (0) #local hoch=0; #local runter=1; #break #case (-1) #local hoch=1; #local runter=0; #break #end up (hoch+runter)*y direction (hoch-runter)/2*y+z } #else #if (Typ=Typ_Draufsicht) #declare DZDY = 1/2; #ifdef (Spezial_Halbhoch) #declare DZ = -2; #else #declare DZ = -1; #end camera { orthographic location <0,BlockHoehe,DZ>+<0,1,-DZDY>*10 direction <0,-1,DZDY> right Breite*x up Hoehe*z } #else #if (Typ=Typ_Seitensicht) #ifdef (Spezial_Einzel) #declare Scale = 1.5; #else #declare Scale = 2/BlockHoehe; #end camera { orthographic location <(1-BlockDrehung)*(1-Scale)*0.5, Hoehe/2/Scale, -100> direction z right Breite/Scale*x up Hoehe/Scale*y } #end #end #end cuyo-2.1.0/datasrc/pics/farbe.mli0000644000175000017500000000632712422656734013576 00000000000000(* Copyright 2006,2008,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Natmod open Vektor type farbe type rgb_farbe = Vektor(Drei).t type rgba_farbe = Vektor(Vier).t val compare : farbe -> farbe -> int val rgbrgb : float -> float -> float -> rgb_farbe val rgb_grau : float -> rgb_farbe val von_rgb: rgb_farbe -> farbe val von_rgba: rgba_farbe -> farbe val durchsichtig: farbe val hintergrund: farbe val rot : farbe val gruen : farbe val blau : farbe val grau : float -> farbe val schwarz : farbe val weiss : farbe val zufallsfarbe : float -> float -> rgb_farbe (* Die Argumente sind Helligkeit (grter Kanalwert) und Kontrast (Abstand zum kleinsten Kanalwert). *) val nur_rot: farbe -> float val nur_gruen: farbe -> float val nur_blau: farbe -> float val nur_durchsichtig: farbe -> float (* extrahiert den Kanal *) val zu_rgb: rgb_farbe -> rgb_farbe -> farbe -> rgb_farbe (* Erste Argumente: Ersatz fr durchsichtig und hintergrund *) val misch2: farbe -> farbe -> float -> farbe (* Der float ist das Gewicht der zweiten farbe. *) val misch: (float * farbe) list -> farbe (* Die floats sind relative Gewichte. Voraussetzung: Kein Gewicht negativ, nicht alle Gewichte 0 *) val mischspezial: farbe -> farbe -> farbe (* Der Blaukanal der zweiten Farbe wird durch wei ersetzt, der rot-minus-blau-Kanal durch die erste Farbe. *) module FarbMap : Map.S with type key=farbe type palette = farbe array type farbkarte = int FarbMap.t (* Eine Palette rckwrts *) type farbverteilung = (farbe*int) array (* Eine Multimenge *) type farbindex val mach_index : palette -> farbindex val naechste_farbe : palette -> farbindex -> farbe -> int val reduziere_farben1 : palette -> farbverteilung -> int -> palette (* Macht median cut immer in der Richtung, die die Varianz maximiert. Das Minimierungsziel ist also mittlerer euklidischer Abstand. Die Laufzeit bei n ist-Farben, m soll-Farben und k Kanlen ist dann O((k^2*n + k^3/log delta + n*(log n))*log m), wobei delta das Verhltnis zwischen den beiden grten beteiligten Eigenwertbetrgen ist. Die bergebene palette enthlt Farben, die auf jeden Fall bernommen werden sollen. *) val reduziere_farben2 : palette -> palette -> int -> palette (* Sammelt greedy die m entferntesten Farben. Das Minimierungsziel ist also maximaler euklidischer Abstand. Die Laufzeit bei n ist-Farben, m soll-Farben und k Kanlen ist dann O(n^2*k + n*m^2*k) Die erste palette enthlt Farben, die auf jeden Fall bernommen werden sollen. *) cuyo-2.1.0/datasrc/pics/mdGold.ml0000644000175000017500000001035012422656734013543 00000000000000(* Copyright 2006 by Mark Weyer Maintenance modifications 2010,2011 by the cuyo developers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Helfer let pi2 = pi+.pi let rad = 0.08 let hdicke = rad/.6.0 let rad2 = rad*.rad+.hdicke*.hdicke let dmin = rad *. (sqrt 2.0) let dmax = 0.5-.rad let streurad = 0.3-.dmin let anzahl = 125 (* Das ist die Anzahl an Wrfen, Mnzen gibt es viermal so viele. *) let rotx w (x,y,z) = let c,s = cos w, sin w in x, c*.y-.s*.z , c*.z+.s*.y let roty w (x,y,z) = let c,s = cos w, sin w in c*.x+.s*.z, y , c*.z-.s*.x let rotz w (x,y,z) = let c,s = cos w, sin w in c*.x-.s*.y , c*.y+.s*.x, z let plus (x1,y1,z1) (x2,y2,z2) = x1+.x2, y1+.y2, z1+.z2 let testdaten (x,y,z,w1,w2) = let pi6 = pi/.6.0 in let punkt w h = plus (x,y,z) (roty w2 (rotx w1 (roty w (rad,h,0.0)))) in let rec rand w = if w>=pi2 then [] else (punkt w hdicke)::(punkt w (-.hdicke))::(rand (w+.pi6)) in x,y,z,rand 0.0 let kollision (x,y,z,rand) (x',y',z',w1,w2,w3) = let dx,dy,dz = x-.x', y-.y', z-.z' in if dx*.dx+.dy*.dy+.dz*.dz < rad2 then let x',y',z',w1,w2 = -.x', -.y', -.z', -.w1, -.w2 in List.exists (fun p -> let x,y,z = rotx w1 (roty w2 (plus (x',y',z') p)) in y < hdicke && y > -.hdicke && x*.x+.z*.z < rad*.rad) rand else false let kollision muenze muenzen = let x,y,z,w1,w2 = muenze in let r2 = x*.x+.z*.z in if y>=(abs_float ((cos w1)*.hdicke))+.(abs_float ((sin w1)*.rad)) && r2 >= dmin*.dmin && r2 < dmax*.dmax then List.exists (kollision (testdaten muenze)) muenzen else true let kandidaten d (x,y,z,w1,w2) = let y' = y-.d*.hdicke in let dw1 = 0.1*.d in [x,y',z,w1,w2] @ (if w1>=dw1 then [x,y',z,w1+.dw1,w2; x,y',z,w1-.dw1,w2; x,y',z,w1,w2+.dw1; x,y',z,w1,w2-.dw1] else [x,y',z,dw1,0.0; x,y',z,dw1,pi/.3.0; x,y',z,dw1,pi/.1.5; x,y',z,dw1,pi; x,y',z,dw1,pi/.0.75; x,y',z,dw1,pi/.0.6]) @ (if w1>=0.1 then let dxz,dy = rad*.d*.(cos w1), rad*.d*.(sin w1) in [x+.dxz*.(cos w2),y-.dy,z-.dxz*.(sin w2),w1,w2] else []) let fall muenzen ym w r = let m = r*.(cos w), ym+.2.0*.(rad+.hdicke), r*.(sin w), 0.0, 0.0 in let rec suche d l m = if l>=10 then m else try suche d l (List.find (fun m' -> not (kollision m' muenzen)) (kandidaten d m)) with | Not_found -> suche (d*.0.5) (l+1) m in suche 1.0 1 m let muenzen n = let rec erweitere ms ym i = prerr_string "."; flush stderr; if i=n then ms else let x,y,z,w1,w2 = fall ms ym (Random.float pi2) ((Random.float streurad)+.dmin) in let w1 = if Random.int 2 = 1 then w1 else w1+.pi in let w3 = Random.float 360.0 in erweitere ((x,y,z,w1,w2,w3)::(z,y,-.x,w1,w2+.pi*.0.5,w3):: (-.x,y,-.z,w1,w2+.pi,w3)::(-.z,y,x,w1,w2+.pi*.1.5,w3)::ms) (max y ym) (i+1) in erweitere [] 0.0 0 ;; Random.init 54321; let muenzen = muenzen anzahl in print_string "#declare Rad = "; print_float rad; print_string ";\n"; print_string "#declare HDicke = "; print_float hdicke; print_string ";\n"; print_string "#declare AnzMuenzen = "; print_int (List.length muenzen); print_string ";\n\n"; print_string "#declare Muenzen = array[AnzMuenzen+1][6] {\n"; List.iter (fun (x,y,z,w1,w2,w3) -> let w1,w2 = w1*.180.0/.pi, w2*.180.0/.pi in print_string " {"; print_float x; print_string ", "; print_float y; print_string ", "; print_float z; print_string ", "; print_float w3; print_string ", "; print_float w1; print_string ", "; print_float w2; print_string "},\n") muenzen; print_string " {0,0,0,0,0,0}}\n\n"; prerr_string "\n"; cuyo-2.1.0/datasrc/pics/lrWasser.xcf0000644000175000017500000013536612422656734014326 00000000000000gimp xcf file- `@`@ BBa/ gimp-commentCreated with The GIMP" eigentlich     z"" VP}mh!N<<:;;;;v    M;;<*( $ #  "!  N<<:;;;;v    M;;<*( $ #  "!  N<<:;;;;v    M;;<*( $ # "!  I      ) % # !             9"!         9"!         9"!  @1 2 2 2 2 1#&()+"        !"#  %9<      !"#  %9<      !"# %9<        6 53 468;@          !             !             !     2 2 2 2 2 2  !+*(&#\# #  !  #  ;;;;;;;;;;;;;975 47899::;:;;;;; # #  !  #  ;;;;;;;;;;;;;975 47899::;:;;;;; # # ! # ;;;;;;;;;;;;;975 47899::;:;;;;; N# !   ! " 9999999999997643 20235676878789    R-g   9"!     R-g   9"!     R-g   9"!  @1 2 2 2 2 1!%')+! n<<:;;;;;6,,+*3-4<On<<:;;;;;6,,+*3-4<On<<:;;;;;6,,+*3-4<O.:9999999999999999:<,,-+<,-,,-+<,-,,-+<,-I-++,-f@p 8 Hintergrund     E##y#DeaP! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxx?                         >                          ?                         >                            ?                         >                @                >                          ?                         >                           ?                @                         >                          ?                         >                            ?                         >                       @                  >                     ?                   >                       ?              ?>?>?>@>?>?@>?>?>@>?>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxx?                         >                          ?                         >                            ?                         >      ?      >                          ?                         >                           ?                @                         >                          ?                         >                            ?                         >          ?         >                     ?                    >                       ?              ?>?>?>?>?>?@>?>?>?>?>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?Ϳxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxǿxxxxxxxxxxxxxxxxxxxxxxxxxxx@ȿxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx??                     >                        ?                     >                        ?                     >                  @                >                        ?                     >                       ?              @                     >                        ?                     >                        ?                      >                        @                       >                          ?                         >                           ?                ?>?>?>@>?>?@>?>?>@>?>??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx??                     >                        ?                     >                        ?                     >      ?      >                        ?                     >                       ?              @                     >                       ?                     >                       ?                   >        ?            >                          ?                         >                           ?                ?>?>?>?>?>?@>?>?>?>?>??@@?`                        ??@`@@?@@?                                ?? 0 0 0 0 0 0 0 0 0 (@xxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx߿xxxxxxxxxxxx??               ^             _              ^              _              ^              _              ^             _              ^              ?                ? ^_^_^_^_^??@@        __777777777*@p 8Auswahlmaske Kopie]?M    ) % # !      2 3 3 3 3 2$')*,#          6 53 579<  3 3 3 3 3 3  ",+)'$@p 8cuyo-2.1.0/datasrc/pics/vektorgraphik.mli0000644000175000017500000001232712422656733015373 00000000000000(* Copyright 2006,2010,2011 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Farbe open Graphik type linie = | Strecke of (punkt * punkt) | Kreis of (punkt * float) | Bogen of (punkt * float * bool * float * float) (* bool=true, wenn es gegen den Uhrzeiger geht. Die Winkel sind im Bogenma *) | Spline of (punkt * punkt * punkt * punkt) (* Der Spline geht vom ersten Punkt zum vierten. Die anderen sind Zwischenkontrollpunkte, wie das bei Splines halt so ist. In dieser Variante geht der Spline nicht durch die Zwischenpunkte, verluft aber in der konvexen Hlle aller vier Punkte. Die Ableitung beim ersten/vierten Punkt ist zum/vom zweiten/dritten Punkt ausgerichtet. Diese Sorte Spline hat auch irgendeinen Namen, glaub ich. *) type polygon = linie list (* Dieser Typ wird sowohl fr geschlossene, als auch fr nicht geschlossene Linienzge verwendet. *) val verschiebe_polygon: float -> float -> polygon -> polygon val drehe_polygon: float -> polygon -> polygon (* Drehwinkel ist in Grad *) val skaliere_polygon: float -> polygon -> polygon val spiegel_polygon: polygon -> polygon (* Gespiegelt wird an der y-Achse. *) module type Malmethode = sig type polygon' (* interne Version *) val konvertiere_polygon : polygon -> polygon' val punkt_auf_polygon_relativ : polygon' -> float -> punkt * float option (* Das float-Argument ist Zahl zwischen 0 und 1; sie gibt bei Parametrisierung nach Bogenlnge, normiert auf die Gesamtlnge, einen Punkt des Polygons an. Der ist das Ergebnis. Wenn dort eine Ableitung ungleich 0 vorhanden ist, wird sie auch ausgegeben (als Winkel in Grad). *) val rueckwaerts: polygon' -> polygon' (* Fr geschlossene Flchen ist es wichtig, da alle Linien des Rands in der gleichen Richtung durchlaufen werden. (Die Reihenfolge wiederum ist nicht wichtig.) Linienzge, die zwei Flchen voneinander abtrennen, treten daher typischerweise in einer Flche vorwrts und in der anderen rckwrts auf. Diese Funktion dreht Linienzge in diesem Sinn um. *) type vektording = | Strich of (farbe * polygon' list) | Dicker_Strich of (farbe * float * polygon' list) (* Der float ist der Stiftradius. *) | Flaechen of (farbe array * (polygon' * int * int option) list) (* Die ints verweisen auf die Flchen beidseitig der polygone'. Fr den zweiten int (wenn vorhanden) wird die Richtung des Polygons umgekehrt. Je Flche mu insgeamt ein geschlossener Polygonzug entstehen. *) val flaeche : farbe -> polygon' list -> vektording val pixel_zu_dingen : farbe option -> pixelbild -> vektording list (* Das zu den Vektordingen gehrende Vektorbild ist genauso pixelig wie das Originalbild. Jedes Pixel erhlt die Gre 1x1. Die gegebene Farbe, fals nicht None, wird durch das vektording _nicht_ reproduziert, bermalt den Untergrund also nicht. *) (* Bis auf Konvertierung und Dekorationen sind die zweiten Komponenten von Vektordingen vom Typ linie list list. Warum nicht einfach linie list? Damit man optimieren kann. Das setzt Kooperation des Benutzers voraus. Im besten Fall taucht jede linie in genau einem polygon' auf (wird genau einmal konvertiert; das polygon' darf mehrfach verwendet werden) und dabei sind die polygone' so gro wie mglich. *) val map_vektordinge: (linie -> linie) -> vektording list -> vektording list val verschiebe_dinge: float -> float -> vektording list -> vektording list val drehe_dinge: float -> vektording list -> vektording list (* Drehwinkel ist in Grad *) val skaliere_dinge: float -> vektording list -> vektording list val spiegel_dinge: vektording list -> vektording list (* Gespiegelt wird an der y-Achse. *) type vektorbild val erzeuge_vektorbild : vektording list -> vektorbild val male: vektorbild -> float -> bildchen -> bildchen (* Der float ist die Pixelkantenlnge *) end module Male_mit_aa : Malmethode (* Diese Version behlt den Linienverlauf (im Rahmen der Approximationsgte) exakt bei, wobei Pixelfarben Mischungen aus den Farben umliegender Objekte werden (antialiasing). *) module Male_ohne_aa : Malmethode (* Diese Version ersetzt alle Linien durch Zge von Kanten zwischen (gerade oder diagonal) benachbarten Pixeln. Das sieht mehr wie handgemacht aus und ergibt bessere Kontraste, dafr ruckeligere Kantenverlufe. Die normalfarbe-Anteile der Spezialfarben werden ignoriert, da kein antialiasing stattfindet. *) cuyo-2.1.0/datasrc/make.mli0000644000175000017500000000225512422656731012467 00000000000000(* Copyright 2007 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) type target = string (* File name *) type action = string list (* Shell commands *) type rulespec = target list * target list * action (* First targets: Drains. Second targets: Sources. (The same order as in traditional makefiles.) *) val groupaction : action (* Special value (actually []) for noop-rules which should not inhibit their sources from being counted as final targets. *) val main : rulespec list -> unit -> unit cuyo-2.1.0/datasrc/Makefile.common0000644000175000017500000000613712422656731014001 00000000000000# # Copyright 2005-2007 by Mark Weyer # Maintenance modifications 2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # NOOP = @echo -n "" > /dev/null clean: cleanfiles rm -f `cat cleanfiles` tidy: tidyfiles rm -f `cat tidyfiles` *~ install: installfiles cp `cat installfiles` $(INSTALL_DIR) cvscheck: cvsfiles .cvsignore @cvs status -l > cvsstatus @sort -u cvsfiles > cvsfiles1 @echo @echo "Comparing cvs status with recommendation." @sed -n -e "s/File: //g" -e "s/Status:.*//gp" cvsstatus | sort -u > cvsfiles2 @echo "(Files recommended for cvs but not known there" >> cvsfiles1 @echo "Use cvs add or alter Makefile/makefile.ml)" >> cvsfiles1 @echo "(Files not recommended for cvs but handled anyway" >> cvsfiles2 @echo "Use cvs remove or alter Makefile/makefile.ml)" >> cvsfiles2 @-diff -b -B cvsfiles1 cvsfiles2 @echo @echo "Files missing in .cvsignore (Change makefile.ml):" @sed -n -e "s/? //gp" cvsstatus | sort -u @rm cvsfiles1 cvsfiles2 make.cmx: make.ml make.cmi ocamlopt.opt -c make.ml make.cmi: make.mli ocamlopt.opt make.mli makefile.opt: makefile.ml make.cmx make.cmi ocamlopt -o makefile.opt unix.cmxa make.cmx makefile.ml cvsfiles: makefile.opt ./makefile.opt sources > cvsfiles echo "Makefile" >> cvsfiles echo "makefile.ml" >> cvsfiles echo ".cvsignore" >> cvsfiles echo "distfiles" >> cvsfiles $(MAKE) cvsfiles_local distfiles: makefile.opt echo "Makefile" > distfiles echo "makefile.ml" >> distfiles echo "distfiles" >> distfiles $(MAKE) distfiles_local installfiles: makefile.opt ./makefile.opt expand all > installfiles tidyfiles: makefile.opt ./makefile.opt intermediate all >> tidyfiles echo "make.cmi" >> tidyfiles echo "make.cmx" >> tidyfiles echo "make.o" >> tidyfiles echo "makefile.cmi" >> tidyfiles echo "makefile.cmx" >> tidyfiles echo "makefile.o" >> tidyfiles echo "installfiles" >> tidyfiles echo "tidyfiles" >> tidyfiles echo "cleanfiles" >> tidyfiles echo "cvsfiles" >> tidyfiles cleanfiles: tidyfiles installfiles cat tidyfiles installfiles > cleanfiles echo "makefile.opt" >> cleanfiles echo "cvsstatus" >> cleanfiles $(MAKE) cleanfiles_local .cvsignore: cleanfiles cp cleanfiles .cvsignore # Just a convenience hack. Will only behave well on normal targets. %: makefile.opt ./makefile.opt $* # The following targets are listed here to prevent them being handed to # makefile.opt although we do not have real rules for them: Makefile: $(NOOP) cuyo-2.1.0/datasrc/make.ml0000644000175000017500000003537612422656731012330 00000000000000(* Copyright 2007 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) exception Multi_Rules of string exception Circular_Rules of string exception Missing_Source of string exception Command_Error of string * int module Int = struct type t=int let compare=compare end module IntMap = Map.Make(Int) type target = string module Target = struct type t=target let compare a b = compare b a end (* Reverse order so that animation sequences are made in right order. *) module TargetSet = Set.Make(Target) module TargetMap = Map.Make(Target) type action = string list (* List of shell commands to execute *) let groupaction = [] type rulespec = target list * target list * action type rule = TargetSet.t * action * TargetSet.t (* First set: sources. Second set: drains. (A different order than rulespec, but the more usual direction for arrows.) *) type rules = rule array type rulemap = int TargetMap.t (* The int is an index into rules. The map itself is indexed from drains. *) let set_from_list = List.fold_left (fun set -> fun element -> TargetSet.add element set) TargetSet.empty let rules_from_rulespecs data = Array.of_list (List.map (fun (drains,sources,action) -> set_from_list sources, action, set_from_list drains) data) let sets rules = Array.fold_left (* Computes the overall sets of sources and of drains. *) (fun (sources,drains) -> fun (source,action,drain) -> TargetSet.union sources source, TargetSet.union drains drain) (TargetSet.empty,TargetSet.empty) rules let rulemap rules = fst (Array.fold_left (fun (map,i) -> fun (sources,action,drains) -> TargetSet.fold (fun drain -> fun map -> if TargetMap.mem drain map then raise (Multi_Rules drain) else TargetMap.add drain i map) drains map, i+1) (TargetMap.empty,0) rules) let dag_compute (startside : int -> 'side_info) (merge : 'target_info -> 'side_info -> 'side_info) (endside : int -> 'side_info -> 'rule_info) (leaf : target -> 'target_info) (nonleaf : target -> 'rule_info -> 'target_info) rules rulemap targets = (* The rules define a bipartite dag between targets and rules: Each target has an edge to the rule producing it, if such a rule exists, and each rule has edges to all its sources. In a bottom-up fashion this function computes the 'target_info for each target and the 'rule_info for each rule. More specifically the computation is restricted to the part of the dag below targets. The 'target_infos of a node's children are merged into a 'rule_info in a sideways computation. For each node the computation is done only once, not once per path leading there. If rulemap does not define a dag, Circular_Rules is raised. The result is of type 'target_info TargetMap.t * 'rule_info IntMap.t *) let rec compute targetresults ruleresults path target = if TargetSet.mem target path then raise (Circular_Rules target) else if TargetMap.mem target targetresults then TargetMap.find target targetresults, targetresults, ruleresults else if TargetMap.mem target rulemap then let index = TargetMap.find target rulemap in if IntMap.mem index ruleresults then let value = nonleaf target (IntMap.find index ruleresults) in value, TargetMap.add target value targetresults, ruleresults else let path = TargetSet.add target path in let sources,action,drains = rules.(index) in let side,targetresults,ruleresults = TargetSet.fold (fun source -> fun (side,targetresults,ruleresults) -> let value,targetresults,ruleresults = compute targetresults ruleresults path source in merge value side, targetresults, ruleresults) sources (startside index, targetresults, ruleresults) in let value = endside index side in let ruleresults = IntMap.add index value ruleresults in let value = nonleaf target value in value, TargetMap.add target value targetresults, ruleresults else let value = leaf target in value, TargetMap.add target value targetresults, ruleresults in TargetSet.fold (fun target -> fun (targetresults,ruleresults) -> let value,targetresults,ruleresults = compute targetresults ruleresults TargetSet.empty target in targetresults, ruleresults) targets (TargetMap.empty, IntMap.empty) let check rules = let _,drains = sets rules in ignore (dag_compute (* All infos are unit. We just check for dagness. *) (fun _ -> ()) (fun _ -> fun _ -> ()) (fun _ -> fun _ -> ()) (fun _ -> ()) (fun _ -> fun _ -> ()) rules (rulemap rules) drains) let print_rules = Array.iter (fun (sources,action,drains) -> TargetSet.iter (fun drain -> print_string (drain^" ")) drains; print_string "<--"; TargetSet.iter (fun source -> print_string (" "^source)) sources; print_string "\n") type time = float option (* File modification time, None if file does not exist *) let time file = if Sys.file_exists file then Some ((Unix.stat file).Unix.st_mtime) else None let newer time1 time2 = match time1 with | None -> false | Some t1 -> (match time2 with | None -> true | Some t2 -> t1>=t2) let newest time1 time2 = if newer time1 time2 then time1 else time2 let echo_action drains line = print_string (line^"\n"); flush stdout let run_action drains line = let error = Sys.command line in if error != 0 then ( (* Delete drains, then raise exception. *) if not (TargetSet.is_empty drains) then ignore (Sys.command ("rm -f "^(TargetSet.fold (fun target -> fun targets -> targets^" "^target) drains ""))); raise (Command_Error (line,error))) let echorun_action drains line = echo_action drains line; run_action drains line let make execute rules targets = (* A file is relevant, if it is a source of a file from targets. A file is important, if it exists or if it is from targets. A file is out-of-date, if one of its sources is newer. A file needs to be rebuilt, if one of the following holds: 1 It is relevant, important, and out_of_date. 2 It is relevant and one of its sources needs to be rebuilt. 3 It does not exist and one of its direct drains needs to be rebuilt. A rule is executed, if one of its direct drains needs to be rebuilt. We first compute the set of targets that need to be rebuilt according to 1 and 2. In a second pass, the rules are actually executed. As the criterion 3 neccessitates reentry of subdags, the second pass is not implemented with dag_compute (it does however enter each subdag at most once - just not neccessarily on the first encounter). *) let rulemap = rulemap rules in let targetresults,ruleresults = dag_compute (* All 'infos are time * bool: Newest strictly decending file and need to rebuild. *) (fun i -> None,false) (fun (newest1,rebuild1) -> fun (newest2,rebuild2) -> newest newest1 newest2, rebuild1 || rebuild2) (fun i -> fun info -> info) (fun target -> let time = time target in if time=None then raise (Missing_Source target) else (time,false)) (fun target -> fun (newest,rebuild) -> let time = time target in if newer time newest then (time, rebuild) else (newest, rebuild || time!=None || TargetSet.mem target targets)) rules rulemap targets in let rec build target done_ = let _,rebuild = TargetMap.find target targetresults in if ((time target)=None || rebuild) && not (TargetSet.mem target done_) then ( let index = TargetMap.find target rulemap in let sources,action,drains = rules.(index) in let done_ = TargetSet.fold (fun source -> fun done_ -> build source done_) sources done_ in List.iter (execute drains) action; TargetSet.union drains done_) else done_ in ignore (TargetSet.fold (fun target -> fun done_ -> if snd (TargetMap.find target targetresults) then build target done_ else done_) targets TargetSet.empty) let final rules rulemap targets = (* Computes the set of targets that are linked to targets only by group rules. *) let targetresults,_ = dag_compute (* 'target_info = 'side_info = TargetSet.t and 'rule_info = TargetSet.t option. None means that the rule has a non-group action. *) (fun _ -> TargetSet.empty) TargetSet.union (fun index -> fun sources_targets -> let sources,action,drains = rules.(index) in if action = groupaction then Some sources_targets else None) TargetSet.singleton (fun target -> fun sources_targets -> match sources_targets with | None -> TargetSet.singleton target | Some targets -> targets) rules rulemap targets in TargetSet.fold (fun target -> fun final -> TargetSet.union final (TargetMap.find target targetresults)) targets TargetSet.empty let initial rules rulemap targets = (* Computes the set of leaf targets on which targets strictly depend (If there happens to be no rule for a file in targets, this is no sufficient reason to include it.). *) let targetresults,_ = dag_compute (* 'rule_info = 'side_info = TargetSet.t 'target_info = target option * TargetSet.t The reason for the specialness of 'target_info is, that we do not want the given targets to appear in the output list. *) (fun _ -> TargetSet.empty) (fun (target,initial1) -> fun initial2 -> let initial = TargetSet.union initial1 initial2 in match target with | None -> initial | Some target -> TargetSet.add target initial) (fun _ -> fun initial -> initial) (fun target -> Some target, TargetSet.empty) (fun _ -> fun targets -> None, targets) rules rulemap targets in TargetSet.fold (fun target -> fun initial -> TargetSet.union initial (snd (TargetMap.find target targetresults))) targets TargetSet.empty let decendants rules rulemap targets = let targetresults,_ = dag_compute (* All 'infos are TargetSet.t. *) (fun _ -> TargetSet.empty) TargetSet.union (fun _ -> fun sources -> sources) TargetSet.singleton TargetSet.add rules rulemap targets in TargetSet.fold (fun target -> fun decendants -> TargetSet.union decendants (TargetMap.find target targetresults)) targets TargetSet.empty let strippath file = if String.contains file '/' then let pos = (String.rindex file '/')+1 in String.sub file pos ((String.length file)-pos) else file let stripgz file = let l = String.length file in if l<3 then file else if String.sub file (l-3) 3 = ".gz" then String.sub file 0 (l-3) else file let list = TargetSet.iter (fun target -> print_string (target^"\n")) let dist rules targets = let stripped = TargetSet.fold (fun target -> fun stripped -> TargetSet.add (strippath (stripgz target)) stripped) targets TargetSet.empty in list (initial rules (rulemap rules) stripped) let expandgroups rules targets = list (final rules (rulemap rules) targets) let intermediate rules targets = let sources,drains = sets rules in let final = final rules (rulemap rules) targets in list (TargetSet.diff drains final) let sources rules = let sources,drains = sets rules in list (TargetSet.diff sources drains) let parseargs u = (* Turns the args into (string * string option * TargetSet.t). The string is the command name without directory info. The string option is the first arg (if existent). The set contains the other args. *) let args = Array.length Sys.argv in if args=0 then (* This is really weird, but we play along as best as we can... *) "", None, TargetSet.empty else let command = Sys.argv.(0) in let stripped = strippath command in if args>1 then let rec collect targets i = if i=args then targets else collect (TargetSet.add Sys.argv.(i) targets) (i+1) in (stripped, Some Sys.argv.(1), collect TargetSet.empty 2) else (stripped, None, TargetSet.empty) let main rules' u = try let rules = rules_from_rulespecs rules' in let call,command,targets = parseargs () in match command with | None -> prerr_string ( "Usage:\n\n"^ call^" [command] [target1] [target2] ...\n\n"^ "commands:\n"^ "check:\tCheck all rules for cyclic dependencies.\n"^ "dist:\tList the non-intermediate sources for the given targets.\n"^ "expand:\tList the given targets after expanding groups.\n"^ "intermediate:\tList all generated files except those given by the expand command.\n"^ "print:\tMake targets, but print commands instead of executing them.\n"^ "rules:\tPrint all rules.\n\n"^ "sources:\tList all non-intermediate sources.\n"^ "Without any command, the targets are made according to the rules.\n"^ "Without any command or targets, this message is printed to stderr.\n") | Some "check" -> check rules | Some "dist" -> dist rules targets | Some "expand" -> expandgroups rules targets | Some "intermediate" -> intermediate rules targets | Some "print" -> make echo_action rules targets | Some "rules" -> print_rules rules | Some "sources" -> sources rules | Some target -> make echorun_action rules (TargetSet.add target targets) with | Multi_Rules target -> prerr_string ("Rule error: There are multiple rules to generate "^target^".\n") | Circular_Rules target -> prerr_string ("Rule error: There is a cyclic chain of rules involving "^target^".\n") | Missing_Source target -> prerr_string ("Error: File "^target^ " does not exist and there is no rule to generate it.\n") | Command_Error (command, exitcode) -> prerr_string ("Error: Received exit code "^(string_of_int exitcode)^ " when executing the following command:\n "^command^"\n") cuyo-2.1.0/datasrc/distfiles0000644000175000017500000000011712422656731012753 00000000000000Makefile makefile.ml distfiles reversi_brl.m4 Makefile.common make.ml make.mli cuyo-2.1.0/datasrc/Makefile0000644000175000017500000000400012422656731012475 00000000000000# # Copyright 2005-2007 by Mark Weyer # Maintenance modifications 2010,2011 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Usage # ===== # # If you don't want to know too much: # # make all # make install # # A more thorough description follows. # # # # Interface: # ========== # # make all # Create all levels that have sources # # make # Create an individual level that has sources. # # make install # Copy all levels that were created to their destination. # # make tidy # Delete all intermediate files and all files ending in ~. # # make clean # Delete all files that were regularly created. # # # Requirements: # ============= # # You will need m4, make, and ocaml (including the native-code compilers). # DATA_DIR = ../data INSTALL_DIR = $(DATA_DIR) cvsfiles_local: echo "Makefile.common" >> cvsfiles echo "make.ml" >> cvsfiles echo "make.mli" >> cvsfiles echo "README" >> cvsfiles distfiles_local: makefile.opt ./makefile.opt dist `cd $(DATA_DIR) && ./used_levels.sh` >> distfiles echo "Makefile.common" >> distfiles echo "make.ml" >> distfiles echo "make.mli" >> distfiles cleanfiles_local: $(NOOP) include Makefile.common # The following targets are listed here to prevent them being handed to # makefile.opt although we do not have real rules for them: Makefile.common: $(NOOP) cuyo-2.1.0/datasrc/makefile.ml0000644000175000017500000000231412422656731013152 00000000000000(* Copyright 2007 by Mark Weyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) open Make (*===========================================================================*) let group file files = [file],files,groupaction (*===========================================================================*) let rules = [ group "all" ["reversi_brl.ld"]; ["reversi_brl.ld"], ["reversi_brl.m4"], ["m4 reversi_brl.m4 > reversi_brl.ld"]; ] (*===========================================================================*) ;; main rules (); cuyo-2.1.0/datasrc/reversi_brl.m40000644000175000017500000000473412422656731013633 00000000000000# -- m4 % > %*.ld; echo ready -- # Copyright(C) 2005 Bernhard R. Link # Maintenance modifications 2005,2006,2011,2014 by the cuyo developers # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA changequote([, ]) define([showingeneratedfile],[$1]) showingeneratedfile([#This is a generated file. Make changes in the .m4 file with the same basename.]) ReversiBRL={ name = "Reversi" author = "brl" pics = _0,_1 greypic = grey startpic = lreAlle.xpm startdist = "-........-","-........-", "F........F", "F........F","F...-....F","-F%&" startdist[[1]] = "F........F","F........F", "F........F", "F........F","F........F","-F%&" numexplode = 15 chaingrass = 1 toptime = 400 << var ro; >> grey = { pics = lreAlle.xpm << grey ={C*}; >> } dnl define([paint],[dnl if ro != 0 => { ro = 0; pos=eval( 3 + othernr ), pos=eval( 6 + othernr ), pos=eval( 9 + othernr ), pos=eval( 12+ othernr ), pos=eval( 15+ othernr ); } else => { pos = thisnr; }; * ])dnl dnl define([activate],[kind@($1,$2)=thisname;ro@($1,$2)=1])dnl define([looklook],[dnl if kind@($1,$2)==thisname->{$5}dnl ifelse($6,0,,[else->dnl if kind@($1,$2)==othername->{dnl looklook(eval($1 + $3),eval($2 +$4),$3,$4,activate($1,$2)[;]$5,decr($6))}dnl ])dnl ])dnl dnl define([look],[if kind@($1,$2)==othername->{dnl looklook(eval($1+$1),eval($2+$2),$1,$2,activate($1,$2),$3)dnl };dnl ])dnl dnl dnl defcolor(self,other,mypos) define([defcolor],[dnl define([thisname],_$1)dnl define([othername],[_]eval( 1- $1))dnl define([thisnr],$1)dnl define([othernr],eval( 1 - $1)) thisname = { pics = lreAlle.xpm << thisname = { paint; }; thisname.land = { look(1,1,7) look(1,0,7) look(1,-1,7) look(0,1,16) dnl look(0,-1,7) look(-1,1,7) look(-1,0,7) look(-1,-1,7) }; >> } ]) defcolor(0) defcolor(1) }