komi-1.04/0000755000175000001440000000000010105756233012645 5ustar allanusers00000000000000komi-1.04/Makefile0000644000175000001440000000135010075325104014277 0ustar allanusers00000000000000# Makefile for Komi # Allan Crossman # Where the graphics and sound files go... DATAPATH=/usr/local/share/komidata/ # Where to put the binary... BINPATH=/usr/local/bin/ # Where to put the manpage... MANPATH=/usr/local/man/man6/ MIXER=-lSDL_mixer SDL_LIB=$(shell sdl-config --static-libs) $(MIXER) CFLAGS=-Wall -pedantic -std=c99 -O2 \ $(shell sdl-config --cflags) \ -DDATAPATH=\"$(DATAPATH)\" all: komi clean: -rm komi -rm *.o install: install -d $(DATAPATH) cp -R komidata/* $(DATAPATH) chmod -R 644 $(DATAPATH) chmod 755 $(DATAPATH) install -d $(BINPATH) cp komi $(BINPATH) chmod 755 $(BINPATH)komi install -d $(MANPATH) cp komi.6 $(MANPATH)komi.6 komi: komi.o $(CC) $(CFLAGS) komi.o -o komi $(SDL_LIB) komi.o: komi.c komi-1.04/bitmask.h0000644000175000001440000004070310075325104014447 0ustar allanusers00000000000000/* This file is just an amalgamation of Ulf's bitmask.c and bitmask.h files into a single file, simply because I'm too stupid to understand the complexities of linking, Makefiles, and so on. -- Allan Crossman, May 10, 2004. */ /* Note by AC: This bit coming up was the original bitmask.h file. */ /* bitmask 1.3 Copyright (C) 2002-2004 Ulf Ekstrom except for the bitcount function which is copyright (C) Donald W. Gillies, 1992. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BITMASK_H #define BITMASK_H #include /* Define INLINE for different compilers. */ #ifndef INLINE # ifdef __GNUC__ # define INLINE inline # else # ifdef _MSC_VER # define INLINE __inline # else # define INLINE # endif # endif #endif #define BITW unsigned long int #define BITW_LEN (sizeof(BITW)*CHAR_BIT) #define BITW_MASK (BITW_LEN - 1) #define BITN(n) ((BITW)1 << (n)) typedef struct bitmask { int w,h; BITW *bits; } bitmask_t; /* Creates a bitmask of width w and height h. * The mask is automatically cleared when created. */ bitmask_t *bitmask_create(int w, int h); void bitmask_free(bitmask_t *m); void bitmask_clear(bitmask_t *m); void bitmask_fill(bitmask_t *m); /* Returns nonzero if the bit at (x,y) is set. * Coordinates start at (0,0) */ static INLINE int bitmask_getbit(const bitmask_t *m,int x,int y) { return m->bits[x/BITW_LEN*m->h + y] & BITN(x & BITW_MASK); } /* Sets the bit at (x,y) */ static INLINE void bitmask_setbit(bitmask_t *m,int x,int y) { m->bits[x/BITW_LEN*m->h + y] |= BITN(x & BITW_MASK); } /* Clears the bit at (x,y) */ static INLINE void bitmask_clearbit(bitmask_t *m,int x,int y) { m->bits[x/BITW_LEN*m->h + y] &= ~BITN(x & BITW_MASK); } /* Returns nonzero if the masks overlap with the given offset. */ int bitmask_overlap(const bitmask_t *a,const bitmask_t *b,int xoffset, int yoffset); /* Like bitmask_overlap(), but will also give a point of intersection. * x and y are given in the coordinates of mask a, and are untouched * if there is no overlap. */ int bitmask_overlap_pos(const bitmask_t *a,const bitmask_t *b, int xoffset, int yoffset, int *x, int *y); /* Returns the number of overlapping 'pixels' */ int bitmask_overlap_area(const bitmask_t *a,const bitmask_t *b,int xoffset, int yoffset); /* Draws mask b onto mask a (bitwise OR) * Can be used to compose large (game background?) mask from * several submasks, which may speed up the testing. */ void bitmask_draw(bitmask_t *a,bitmask_t *b,int xoffset, int yoffset); #endif /* Note by AC: This bit coming up was the original bitmask.c file. */ /* except the line #include bitmask.h has been removed. */ /* bitmask 1.3 Copyright (C) 2002-2004 Ulf Ekstrom except for the bitcount function which is copyright (C) Donald W. Gillies, 1992. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #define MIN(a,b) ((a) < (b) ? (a) : (b)) bitmask_t *bitmask_create(int w, int h) { bitmask_t *temp = malloc(sizeof(bitmask_t)); if (! temp) return 0; temp->w = w; temp->h = h; temp->bits = calloc(h*((w - 1)/BITW_LEN + 1),sizeof(BITW)); if (! temp->bits) { free(temp); return 0; } else return temp; } void bitmask_free(bitmask_t *m) { free(m->bits); free(m); } void bitmask_clear(bitmask_t *m) { memset(m->bits,0,m->h*((m->w - 1)/BITW_LEN + 1)*sizeof(BITW)); } void bitmask_fill(bitmask_t *m) { memset(m->bits,255,m->h*((m->w - 1)/BITW_LEN + 1)*sizeof(BITW)); } int bitmask_overlap(const bitmask_t *a,const bitmask_t *b,int xoffset, int yoffset) { BITW *a_entry,*a_end; BITW *b_entry; BITW *ap,*bp; int shift,rshift,i,astripes,bstripes; if ((xoffset >= a->w) || (yoffset >= a->h) || (yoffset <= - b->h)) return 0; if (xoffset >= 0) { if (yoffset >= 0) { a_entry = a->bits + a->h*(xoffset/BITW_LEN) + yoffset; a_end = a_entry + MIN(b->h,a->h - yoffset); b_entry = b->bits; } else { a_entry = a->bits + a->h*(xoffset/BITW_LEN); a_end = a_entry + MIN(b->h + yoffset,a->h); b_entry = b->bits - yoffset; } shift = xoffset & BITW_MASK; if (shift) { rshift = BITW_LEN - shift; astripes = (a->w - 1)/BITW_LEN - xoffset/BITW_LEN; bstripes = (b->w - 1)/BITW_LEN + 1; if (bstripes > astripes) /* zig-zag .. zig*/ { for (i=0;i> shift) & *bp++) return 1; a_entry += a->h; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;) if ((*ap++ << rshift) & *bp++) return 1; b_entry += b->h; } for (ap = a_entry,bp = b_entry;ap < a_end;) if ((*ap++ >> shift) & *bp++) return 1; return 0; } else /* zig-zag */ { for (i=0;i> shift) & *bp++) return 1; a_entry += a->h; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;) if ((*ap++ << rshift) & *bp++) return 1; b_entry += b->h; } return 0; } } else /* xoffset is a multiple of the stripe width, and the above routines wont work */ { astripes = (MIN(b->w,a->w - xoffset) - 1)/BITW_LEN + 1; for (i=0;ih; a_end += a->h; b_entry += b->h; } return 0; } } else return bitmask_overlap(b,a,-xoffset,-yoffset); } /* Will hang if there are no bits set in w! */ static INLINE int firstsetbit(BITW w) { int i = 0; while ((w & 1) == 0) { i++; w/=2; } return i; } /* x and y are given in the coordinates of mask a, and are untouched if there is no overlap */ int bitmask_overlap_pos(const bitmask_t *a,const bitmask_t *b,int xoffset, int yoffset, int *x, int *y) { BITW *a_entry,*a_end; BITW *b_entry; BITW *ap,*bp; int shift,rshift,i,astripes,bstripes,xbase; if ((xoffset >= a->w) || (yoffset >= a->h) || (yoffset <= - b->h)) return 0; if (xoffset >= 0) { xbase = xoffset/BITW_LEN; /* first stripe from mask a */ if (yoffset >= 0) { a_entry = a->bits + a->h*xbase + yoffset; a_end = a_entry + MIN(b->h,a->h - yoffset); b_entry = b->bits; } else { a_entry = a->bits + a->h*xbase; a_end = a_entry + MIN(b->h + yoffset,a->h); b_entry = b->bits - yoffset; yoffset = 0; /* relied on below */ } shift = xoffset & BITW_MASK; if (shift) { rshift = BITW_LEN - shift; astripes = (a->w - 1)/BITW_LEN - xoffset/BITW_LEN; bstripes = (b->w - 1)/BITW_LEN + 1; if (bstripes > astripes) /* zig-zag .. zig*/ { for (i=0;ih; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) if (*ap & (*bp >> rshift)) { *y = ap - a_entry + yoffset; *x = (xbase + i + 1)*BITW_LEN + firstsetbit(*ap & (*bp >> rshift)); return 1; } b_entry += b->h; } for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) if (*ap & (*bp << shift)) { *y = ap - a_entry + yoffset; *x = (xbase + astripes)*BITW_LEN + firstsetbit(*ap & (*bp << shift)); return 1; } return 0; } else /* zig-zag */ { for (i=0;ih; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) if (*ap & (*bp >> rshift)) { *y = ap - a_entry + yoffset; *x = (xbase + i + 1)*BITW_LEN + firstsetbit(*ap & (*bp >> rshift)); return 1; } b_entry += b->h; } return 0; } } else /* xoffset is a multiple of the stripe width, and the above routines won't work. This way is also slightly faster. */ { astripes = (MIN(b->w,a->w - xoffset) - 1)/BITW_LEN + 1; for (i=0;ih; a_end += a->h; b_entry += b->h; } return 0; } } else { if (bitmask_overlap_pos(b,a,-xoffset,-yoffset,x,y)) { *x += xoffset; *y += yoffset; return 1; } else return 0; } } static INLINE int bitcount(unsigned long n) { if (BITW_LEN == 32) { /* (C) Donald W. Gillies, 1992. All rights reserved. You may reuse this bitcount() function anywhere you please as long as you retain this Copyright Notice. */ register unsigned long tmp; return (tmp = (n) - (((n) >> 1) & 033333333333) - (((n) >> 2) & 011111111111), tmp = ((tmp + (tmp >> 3)) & 030707070707), tmp = (tmp + (tmp >> 6)), tmp = (tmp + (tmp >> 12) + (tmp >> 24)) & 077); /* End of Donald W. Gillies bitcount code */ } else { /* Handle non-32 bit case the slow way */ int nbits = 0; while (n) { if (n & 1) nbits++; n = n >> 1; } return nbits; } } int bitmask_overlap_area(const bitmask_t *a,const bitmask_t *b,int xoffset, int yoffset) { BITW *a_entry,*a_end; BITW *b_entry; BITW *ap,*bp; int shift,rshift,i,astripes,bstripes; int count = 0; if ((xoffset >= a->w) || (yoffset >= a->h) || (yoffset <= - b->h)) return 0; if (xoffset >= 0) { if (yoffset >= 0) { a_entry = a->bits + a->h*(xoffset/BITW_LEN) + yoffset; a_end = a_entry + MIN(b->h,a->h - yoffset); b_entry = b->bits; } else { a_entry = a->bits + a->h*(xoffset/BITW_LEN); a_end = a_entry + MIN(b->h + yoffset,a->h); b_entry = b->bits - yoffset; } shift = xoffset & BITW_MASK; if (shift) { rshift = BITW_LEN - shift; astripes = (a->w - 1)/BITW_LEN - xoffset/BITW_LEN; bstripes = (b->w - 1)/BITW_LEN + 1; if (bstripes > astripes) /* zig-zag .. zig*/ { for (i=0;i> shift) | (*(ap + a->h) << rshift)) & *bp); a_entry += a->h; a_end += a->h; b_entry += b->h; } for (ap = a_entry,bp = b_entry;ap < a_end;) count += bitcount((*ap++ >> shift) & *bp++); return count; } else /* zig-zag */ { for (i=0;i> shift) | (*(ap + a->h) << rshift)) & *bp); a_entry += a->h; a_end += a->h; b_entry += b->h; } return count; } } else /* xoffset is a multiple of the stripe width, and the above routines wont work */ { astripes = (MIN(b->w,a->w - xoffset) - 1)/BITW_LEN + 1; for (i=0;ih; a_end += a->h; b_entry += b->h; } return count; } } else return bitmask_overlap_area(b,a,-xoffset,-yoffset); } /* Draws mask b onto mask a (bitwise OR) */ void bitmask_draw(bitmask_t *a, bitmask_t *b, int xoffset, int yoffset) { BITW *a_entry,*a_end; BITW *b_entry; BITW *ap,*bp; bitmask_t *swap; int shift,rshift,i,astripes,bstripes; if ((xoffset >= a->w) || (yoffset >= a->h) || (yoffset <= - b->h)) return; if (xoffset >= 0) { if (yoffset >= 0) { a_entry = a->bits + a->h*(xoffset/BITW_LEN) + yoffset; a_end = a_entry + MIN(b->h,a->h - yoffset); b_entry = b->bits; } else { a_entry = a->bits + a->h*(xoffset/BITW_LEN); a_end = a_entry + MIN(b->h + yoffset,a->h); b_entry = b->bits - yoffset; } shift = xoffset & BITW_MASK; if (shift) { rshift = BITW_LEN - shift; astripes = (a->w - 1)/BITW_LEN - xoffset/BITW_LEN; bstripes = (b->w - 1)/BITW_LEN + 1; if (bstripes > astripes) /* zig-zag .. zig*/ { for (i=0;ih; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *ap |= (*bp >> rshift); b_entry += b->h; } for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *ap |= (*bp << shift); return; } else /* zig-zag */ { for (i=0;ih; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *ap |= (*bp >> rshift); b_entry += b->h; } return; } } else /* xoffset is a multiple of the stripe width, and the above routines won't work. */ { astripes = (MIN(b->w,a->w - xoffset) - 1)/BITW_LEN + 1; for (i=0;ih; a_end += a->h; b_entry += b->h; } return; } } else { /* 'Swapping' arguments to be able to almost reuse the code above, should be taken care of by the compiler efficiently. */ swap = a; a = b; b = swap; xoffset *= -1; yoffset *= -1; if (yoffset >= 0) { a_entry = a->bits + a->h*(xoffset/BITW_LEN) + yoffset; a_end = a_entry + MIN(b->h,a->h - yoffset); b_entry = b->bits; } else { a_entry = a->bits + a->h*(xoffset/BITW_LEN); a_end = a_entry + MIN(b->h + yoffset,a->h); b_entry = b->bits - yoffset; } shift = xoffset & BITW_MASK; if (shift) { rshift = BITW_LEN - shift; astripes = (a->w - 1)/BITW_LEN - xoffset/BITW_LEN; bstripes = (b->w - 1)/BITW_LEN + 1; if (bstripes > astripes) /* zig-zag .. zig*/ { for (i=0;i> shift); a_entry += a->h; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *bp |= (*ap <h; } for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *bp |= (*ap >> shift); return; } else /* zig-zag */ { for (i=0;i> shift); a_entry += a->h; a_end += a->h; for (ap = a_entry,bp = b_entry;ap < a_end;ap++,bp++) *bp |= (*ap << rshift); b_entry += b->h; } return; } } else /* xoffset is a multiple of the stripe width, and the above routines won't work. */ { astripes = (MIN(b->w,a->w - xoffset) - 1)/BITW_LEN + 1; for (i=0;ih; a_end += a->h; b_entry += b->h; } return; } } } komi-1.04/declarations.h0000644000175000001440000003506010105751504015466 0ustar allanusers00000000000000/* Komi definitions, structures, and global declarations... */ /* -------------------------------------------------------------------------- */ // Definitions... #define VERSION "1.04" #define PREFSVERSION 1 // Increment this if prefs format changes. #define PREFSNAME ".komirc" // Window size. #define WIDTH 640 #define HEIGHT 480 // Number of predefined levels. #define DEFINEDLEVELS 30 // Delay between frames (default) #define DEFAULT_DELAY 10 // Different enemy types. Should probably use an enum. #define SCROLLERLEFT 0 #define SCROLLERRIGHT 1 #define ELECTRA 2 #define ACCELERATOR 3 #define ROAMER 4 #define BROWNIAN 5 #define LASERGUN 6 #define DIVER 7 #define SKULL 8 #define BOUNCER 9 #define GUNNER 10 #define DROPPER 11 #define EYEBALL 12 #define WRAPBALL 13 #define BOMBER 14 #define SNIPERLEFT 15 #define SNIPERRIGHT 16 #define ENEMYTYPES 17 // Starfield constants. #define MAXSTARS 350 #define MAX_STARSPEED 10 #define YOUNG_STAR 45 // How long after birth do we reduce star brightness? #define SLOWEST_STAR 0.3 #define DIM_STAR_BOUNDARY 0.5 // Starting stats. #define START_LIVES 3 #define KOMI_SPEED 4 #define TONGUE_SPEED 6 // Tongue colour. #define TONGUE_R 79 #define TONGUE_G 106 #define TONGUE_B 226 #define TONGUE_FAST_R 255 #define TONGUE_FAST_G 0 #define TONGUE_FAST_B 0 #define TONGUE_WIDTH 6 #define KOMI_SHOT_SPEED 3 // Size of all sprites. Mostly used for bouncing enemies off the sides. #define SPRITE_SIZE 32 // How close to the edges Komi can go. #define WALL 16 // Constants for the lightning. #define FORKSTODRAW 1 #define LIGHTNINGADJUST 26 // Actual distance of start/finish from the left/right edges. #define BOLTMAXLENGTH 30 #define LIGHTNINGVARIANCE 8 // Vertical randomness. #define START_LIGHTNING_Y 240 // What vertical position the lightning starts at. #define GEN_X 16 // Location to draw the generator sprite. #define LIGHTNINGCHECK_DEFAULT 30 // Default for how often the lightning gets moved down a pixel. Once every 30 frames. #define FASTLIGHTNINGCHECK_DEFAULT 15 // Once it reaches the "fast" level (below) it (by default) goes once every 15 frames. #define DEFAULT_FASTLIGHTNINGY 320 // How many arrays of structures to make (which hold stuff like location, speed, etc). #define MAX_ENEMIES 30 #define MAX_COINS 10 #define MAX_DIAMONDS 4 #define MAX_ENEMYSHOTS 10 #define MAX_FRIENDLYSHOTS 10 #define GUNNERRELOADTIME 5 // Minimum time between shots for the Gunner. #define BASEPOWERUPPROB 0.00005 // Default chance of a powerup appearing per frame. #define POWERUPCUTOFFTIME 10000 // No powerups after this many ticks. #define FREEZE_TIME 600 // How many ticks a freeze lasts. #define FREEZE_WARN_INTERVAL 60 // Intervals between freeze warning sounds. #define FREEZE_WARNINGS 3 // How many warnings. // Constants for the Lasergun enemy. #define LASERDURATION 20 // Frames the laser lasts. #define LASERWARNTIME 60 // Give warning this many frames before. #define LASERWIDTH 2 #define LASER_R 255 // Colours for laser. #define LASER_G 50 #define LASER_B 0 #define WARNLASER_R 120 // Colours for warning pre-laser. #define WARNLASER_G 50 #define WARNLASER_B 0 #define SKULLY 352 // Vertical position for Skull enemy. // Enemy default speeds etc (can be over-ruled when levelinfo is made) #define BROWNIAN_MAX_SPEED_DEFAULT 1.5 #define ROAMER_MIN_SPEED_DEFAULT 0.5 #define ROAMER_MAX_SPEED_DEFAULT 1 #define DROPPER_SPEEDY_DEFAULT 5 #define ELECTRA_OFFSET_DEFAULT -32 #define GUNNER_SHOOT_PROB_DEFAULT 0.01 #define DIVE_SPEEDY_DEFAULT 4 #define DIVE_SPEEDX_DEFAULT 2 #define ENEMY_SHOT_SPEED_DEFAULT 3 #define BOMB_SPEED_DEFAULT 5 #define SNIPERSHOTSPEED 3 // Points... #define COIN_SCORE 10 // Points for a coin. #define DIAMOND_SCORE 50 // Points for a diamond. #define EXTRALIFEPOINTS 1000 // New life every x points. // Locations of the various images on the title screen. #define MAINTITLE_X 320 #define MAINTITLE_Y 60 #define GPL_X 320 #define GPL_Y 175 #define BOLTSTITLE_X 370 #define BOLTSTITLE_Y 325 #define DIAMONDTITLE_X 410 #define DIAMONDTITLE_Y 295 #define KOMITITLE_X 340 #define KOMITITLE_Y 370 #define DIVERTITLE_X 320 #define DIVERTITLE_Y 280 #define QUITBUTTON_X 585 #define QUITBUTTON_Y 385 #define STARTBUTTON_X 520 #define STARTBUTTON_Y 445 #define SPEEDTITLE_X 85 #define SPEEDTITLE_Y 445 #define SHUFFLETITLE_X 129 #define SHUFFLETITLE_Y 385 #define SPEEDRECTLEFT_X 170 #define SPEEDRECTTOP_Y 435 #define SPEEDRECTWIDTH 150 #define SPEEDRECTHEIGHT 20 #define LONGESTDELAY 20 // Delay of this or slower makes the speed rect at the title screen all black. // Can still get longer delays with command line arguments. // Return values for playlevel() #define LEVEL_COMPLETE 1 #define DEATH 2 #define QUIT 3 // Values to differentiate between different objects caught by the tongue. #define COIN 1 #define DIAMOND 2 #define POWERUP 3 // Different powerup types. #define EXTRALIFE 0 #define SHOOTPOWER 1 #define GAMEMOD 2 #define DESTRUCTOR 3 #define POWERUPTYPES 4 // How many rectanges to keep track of if doing fast drawing, where only // updated rectanges are redrawn. #define MAXRECTS 200 #define TEXTBUFFERSIZE 1024 #define YES 1 #define NO 0 /* -------------------------------------------------------------------------- */ // Structure definitions... struct star_struct { float x; float y; int brightness; int age; float speed;}; struct sprite_struct { SDL_Surface * pixelmap; bitmask_t * collisionmask;}; struct baddie_struct { int exists; int type; float x; float y; float speedx; float speedy; float floatvar; int intvar; int intvar2;}; // Note: the different enemies use the float variable ("floatvar") and the 2 int variables // ("intvar") for different things. See comments to makelevel() in komi.c struct coin_struct { int exists; float x; float y; float speedx; float speedy;}; struct diamond_struct { int exists; float x; float y; float speedx; float speedy;}; // The powerups. struct goodie_struct { int exists; int type; float x; float y; float speedx; float speedy;}; struct enemyshot_struct { int exists; float x; float y; float speedx; float speedy;}; struct friendlyshot_struct { int exists; float x; float y; float speedx; float speedy;}; // Holds flags for whether these keys are down or up. struct keymap_struct { int left1; int left2; int left3; int right1; int right2; int right3; int fire1; int fire2; int escape; int levelskip; int pause; int screenshot;}; // Holds flag for whether the mouse is down, and what location it clicked on. struct mousemap_struct { int button; int clickx; int clicky; int currentx; int currenty;}; // Settings that may change for each level. struct level_struct { int coins; // How many coins... int diamonds; // diamonds... int enemycount[ENEMYTYPES]; // enemies of the various types... int topdiamonds; // Flag for whether diamonds move only along the top. int fastlightningy; // At what position does the lightning speed up? int fastlightningcheck; // Speed up to moving down a pixel once every x frames. float scrollerspeedx; // Speed for Scroller enemy type (the rockets) int scrolleroffset; // Their offset from the lightning. int diverhoverlevel; // Where the Divers hover when not diving. float divespeedy; // Diver speed during a dive. float divespeedx; int bomberhoverlevel; // Y location for the Bomber enemy type. int bombspeed; // Speed its shots travel. int snipersflag; // Are there snipers in the level? float roamerminspeed; // Min speed for Roamers (also used for some other enemies) float roamermaxspeed; // And the max speed. float brownianmaxspeed; // Max speed for the Brownian motion enemy. int guardianaccels; // Flag for whether Accelerator enemy sticks near the lightning. float gunnershootprob; // Chance per frame of gunner shooting. float enemyshotbasespeed; // Speed of shot. int electrasflag; // Whether there are Electras in the level. int electraoffset; // Their offset from the lightning. int dropperhoveroffset; // Offset of Dropper enemies from the lightning. int dropperspeedy; // Their diving speed. float powerup_prob[POWERUPTYPES]; // Probability of given powerup type appearing per frame. }; /* -------------------------------------------------------------------------- */ // Globals... SDL_Surface * virtue; // The SDL surface that we draw to. SDL_Event event; // For getting the last event. SDL_Rect updaterect[MAXRECTS]; // Array of rectanges used if --fastdraw option is on. What areas to redraw this frame. int rects; // Number of rectanges to redraw this frame. Passed to SDL_UpdateRects(). int level; // Current level. int lives; // Current lives. int hog = 0; // Flag for whether to use own delaying function which doesn't give up CPU. int delay = DEFAULT_DELAY; // Delay between frames. // Various options that the user can set with command line arguments. int nostarsflag = 0; int nosound = 0; int nomusic = 0; int cheats = 0; int invincible = 0; int shuffle = 0; int algorithmicenemies = 0; int fullscreen = 0; int fastdraw = 0; int gfxdetails = 0; int gotdelayarg = 0; // Flag raised if "--delay" is used; prevents delay being read from prefs file. int shuffledlevels[DEFINEDLEVELS]; // Position of Komi. int komix; int komiy; // Tongue. int tonguelength; // Current tongue length (0 if tongue fully retracted). int tonguespeed; // Speed the tongue extends/falls at. int caughttype; // What type of object (if any) caught by the tongue. int caughtnumber; // Caught object's number (ie it could be coin 3). int caughtoffsetx; // Its x-distance from the tongue-tip when caught. int caughtoffsety; // And its y-distance. int shotsavailable; // How many shots Komi can shoot. Usually zero. int fastretract; // Not currently used. Would be flag for faster tongue retraction. int freeze; // Freeze enemy movement. int playedshootsound; // Gets set to 0 every tick, then to 1 when a shot is fired. Prevents multiple playback in a single tick. int lightningy; // Position of lightning. int lightningcheck; // Should merge this into levelinfo structure. Move lightning down one pixel every x frames. int tick; // Current frame number. int score; // Current score. int highscore = 0; // Highest score achieved. int lastscore = 0; // Last score this session. int resetmoney; // Flag for whether to remake money at level start. // Will be Yes if this is a new level, No if we're replaying one we died in. int givelastlifewarning = 0; // Whether to give a warning upon next start of level due to last life (if in fullscreen mode) int havecheated; // Whether player has cheated this game. Affects whether highscore is saved. // Now make all the relevant structures declared above. struct star_struct star[MAXSTARS]; struct level_struct levelinfo; struct baddie_struct enemy[MAX_ENEMIES]; struct coin_struct coin[MAX_COINS]; struct diamond_struct diamond[MAX_DIAMONDS]; struct enemyshot_struct enemyshot[MAX_ENEMYSHOTS]; struct friendlyshot_struct friendlyshot[MAX_FRIENDLYSHOTS]; struct goodie_struct goodie; struct keymap_struct keymap = {0,0,0,0,0,0,0,0,0,0,0,0}; struct mousemap_struct mousemap = {0,0,0,0,0}; // All the sprite types get their own structure. struct sprite_struct komi_sprite; struct sprite_struct tip_sprite; struct sprite_struct fasttip_sprite; struct sprite_struct coin_sprite; struct sprite_struct diamond_sprite; struct sprite_struct generator_sprite; struct sprite_struct scrollerleft_sprite; struct sprite_struct scrollerright_sprite; struct sprite_struct electra_sprite; struct sprite_struct roamer_sprite; struct sprite_struct brownian_sprite; struct sprite_struct lasergun_sprite; struct sprite_struct diver_sprite; struct sprite_struct skull_sprite; struct sprite_struct bouncer_sprite; struct sprite_struct gunner_sprite; struct sprite_struct dropper_sprite; struct sprite_struct accelerator_sprite; struct sprite_struct eyeball_sprite; struct sprite_struct wrapball_sprite; struct sprite_struct bomber_sprite; struct sprite_struct sniperleft_sprite; struct sprite_struct sniperright_sprite; struct sprite_struct powerup_sprite; struct sprite_struct destructor_sprite; struct sprite_struct shootpower_sprite; struct sprite_struct life_sprite; struct sprite_struct shooterkomi_sprite; struct sprite_struct friendlyshot_sprite; struct sprite_struct enemyshot_sprite; struct sprite_struct electrickomi_sprite; struct sprite_struct skullpull_sprite; struct sprite_struct tonguemask_sprite; struct sprite_struct pickupmask_sprite; // Will hold pointers to the different sprites so we can access each type by number. struct sprite_struct * spritemap[ENEMYTYPES]; struct sprite_struct * powerupspritemap[POWERUPTYPES]; struct sprite_struct maintitle_title; struct sprite_struct bolts_title; struct sprite_struct start_title; struct sprite_struct quit_title; struct sprite_struct start2_title; struct sprite_struct quit2_title; struct sprite_struct gpl_title; struct sprite_struct speed_title; struct sprite_struct shuffleoff_title; struct sprite_struct shuffleoff2_title; struct sprite_struct shuffleon_title; struct sprite_struct shuffleon2_title; // All the sounds... Mix_Chunk * contactdeath_sound = NULL; Mix_Chunk * destructorkill_sound = NULL; Mix_Chunk * eat_sound = NULL; Mix_Chunk * electricdeath_sound = NULL; Mix_Chunk * freeze_sound = NULL; Mix_Chunk * gameover_sound = NULL; Mix_Chunk * laser_sound = NULL; Mix_Chunk * laserentry_sound = NULL; Mix_Chunk * laserpowerup_sound = NULL; Mix_Chunk * lastlife_sound = NULL; Mix_Chunk * lightningwarning_sound = NULL; Mix_Chunk * oneup_sound = NULL; Mix_Chunk * pause_sound = NULL; Mix_Chunk * powerup_sound = NULL; Mix_Chunk * screenshot_sound = NULL; Mix_Chunk * shoot_sound = NULL; Mix_Chunk * stick_sound = NULL; Mix_Chunk * unfreezewarning_sound = NULL; // Music... Mix_Music * music = NULL; // Path to the data (sound files, graphics, etc). #ifdef DATAPATH char filepath[TEXTBUFFERSIZE] = DATAPATH; char prefsdir[TEXTBUFFERSIZE] = DATAPATH; #else char filepath[TEXTBUFFERSIZE] = "komidata/"; char prefsdir[TEXTBUFFERSIZE] = "komidata/"; #endif komi-1.04/info.h0000644000175000001440000000415610105745465013764 0ustar allanusers00000000000000/* info.h */ #define INFO_GPL_BRIEF "\ Copyright Allan Crossman, 2004\n\ Uses SDL library and Ulf Ekstrom's Bitmask functions\n\ \n\ This program is free software; you can redistribute it\n\ and/or modify it under the terms of the GNU General Public\n\ License as published by the Free Software Foundation;\n\ either version 2 of the License, or (at your option) any\n\ later version.\n\ \n\ This program is distributed in the hope that it will be\n\ amusing, but WITHOUT ANY WARRANTY; without even the implied\n\ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n\ PURPOSE.\n\ \n\ See the GNU General Public License for more details.\n\ \n\ You should have received a copy of the GNU General Public\n\ License along with this program; if not, write to the Free\n\ Software Foundation, Inc., 59 Temple Place, Suite 330,\n\ Boston, MA 02111-1307 USA\n\n" #define INFO_HELP "\ Komi options:\n\ \n\ Speed:\n\ --delay (wait x milliseconds between frames,\n\ so lower is faster)\n\ \n\ Technical options:\n\ --fastdraw (fast drawing method for slow PCs)\n\ --fullscreen (use whole screen instead of window)\n\ --nosound (don't use any sounds)\n\ --nostars (turn the starfield off)\n\ --resetprefs (reset prefs and high score)\n\ \n\ Information:\n\ --copying (Komi is under the GNU GPL)\n\ --help (show this message)\n\ --version (show game version)\n\ \n\ To play:\n\ Move Komi with arrow keys, or KP4 and KP6.\n\ Use Komi's tongue with spacebar.\n\ Capture all coins and diamonds.\n\n" void printcopyinfo (void) { fprintf(stdout, "\nKomi the Space Frog %s\n", VERSION); fprintf(stdout, INFO_GPL_BRIEF); return; } void printhelp (void) { fprintf(stdout, "\nKomi the Space Frog %s\n", VERSION); fprintf(stdout, "Compiled to use data in %s\n\n", filepath); fprintf(stdout, INFO_HELP); return; } void printversion (void) { fprintf(stdout, "Komi the Space Frog %s\n", VERSION); fprintf(stdout, "Compiled to use data in %s\n", filepath); return; } komi-1.04/komidata/0000755000175000001440000000000010075325104014431 5ustar allanusers00000000000000komi-1.04/komidata/sounds_gameover.wav0000644000175000001440000035565210075325104020370 0ustar allanusers00000000000000RIFFWAVEfmt DXdata~ {fbf~"G^aO.h;AB G$"S nmu9.*KcZtp;HBPQM53c o)_-~48M/ 6Q'V$%g}>bG#%<\=o-_U>V6@^;xSz,WA#;a0Si ) ;SEo7>{,FQ|\6SG`'(~8Ch]F asaeP l s v R[*9w9 ' NAot s > Y !   m M N 8h  >45c N1+U  U v 5 ' a V B ) I[A{TIrmcUlKDkW\JNa CmGu3gz F0 Ek9}7;5K"91OT35J^*o -{ x ) @. |,81nF 'ZT 7 e{s " F f Pds/ F p0I = C Lv\<sG+g$~S&}\qTyZ5#lNc5jmJۯyԱSCj7ݙO12$ .s  %i(\Gݑ۬Z}`-]!F߱;w ~T6ckf |Cs\iSJ$w(,3._.-*&"+# T 2}= e.RR6]W< =O3r#:/ŗ~gohܨ'|€ʞgViEɦʕY&pYݱ_Ω 56KNBCh + &&+/10-(."pEb!',17T;>o>@Jv%'%e! G F C 27k&Ӿ̓ȽŦ%cAr1-VƵ Ƚ5$4t .5s O-F;E)MQRgTReNIqD@< xߌ .Q'" 3)X/y.$71h6,DZOn|;zl]M=0[&) $!.=7@INOK`B7#,w  >8U`GdXQb۩ DgG +?cTer{{tch[vMw=,U}r 7;j!S*-.-:)# %^z*T&´t]cJٕb?5=҆o> m^oQ CYROo%%-5*>FK-OOKE=5,$ !'c/u7d?FpKMMIVB8, M H\ K ^Pf  5@i e5Cm [Y5g$O֎ʉ6ŸğԪ$   ?ET  A  U*,Q;JOW_2a-[!PCa6) ʅկ k £~ǷǶLxҖ3'ˮ۶ '0V8FAO,[bd`XUJ:a- %$""2&D,5?HNTXVWQ]bdUfdI`YcPnEs9C.#( 0{Wخ6ѭפCͱkǻOxp7FܥB)hkG)_([ $ :jpi$d*j1<8==:?S>9/ @54s~`p]( 5W@a*G GD '&4@KTHZ[nZVQI2A7O-Q -*AṐ뽫ïjؖ/f1k}+j @+{ %,16B=eDLPS1WLX;YXJTVLB7-#Wi^AE R  P&/ZϹ&|Ȳwȱıb*ȼ 쾧\+#GIѦriW 0*NX$ $"v$&)6-0H407b997Z63.*q('0(U*,k--)#z `YBOҧ͋UT LlN ҀЇ΅˘@_!e%(.6?HsPaXbqojYB .Xw x W U05*ڧCiRJJ?-;  Q  ` }8})j^6ܸٕX 7"HÕ drޏacU f@6U* Z)8qirL:r|A$/1+ q M t  Y  L࿚ʪ>KߍBC9Sp=Mp q d&-4a&ϴ1ܮK  KbG #%%!C yx( aUM wdOA˖¿Ʋ XY/q [` u׶}܄}ߎAx <d*]D4ۡ2 r Ry LC j\YO!&<,1 7:5<%;854`1).L0e.'Fd A.;USݾW¯ҧqC(ΦL٭HĿ׶xBFҩ@b~ (yD: $(n.z4H:'>aCRF&GF3D(@:J60+'#- L]Cpn P`#!R0e:;O%i; wjv I zs<?#!) /5d;>{@<6s.#Hidf|~Ca ~ޗ$ؐUX:+  *0[ݴ.խ "#@ e!%:((&#eAk"$! !TrX(Eœhj $߂0q,y%acUWJ F %1^;AB>5Y)U Էpʦ"x%|K .ޛΪȳïX޴-#VmΝ^6 ߹ ,7==72pb"+6Y>aFOMXRUzWV[U?RNdL|K KJVIHGCKAN= 81*!M OTFuRI  2% "h-m6 >CC0?7.F#vz!W @ - <"3C^OuYRVǔCXŋK1ף+{|0dFYbk,z#Ҳ7ܹ_=k8-!tXX.ۉVfuN~v{ubC SI5{χq{>F0APF\ccb_U[^W SPNPMQKIHCc?BFKNRUWYZ[]u]\[ZXV.UwvϝN *&՞صDzؤѦΞM}qN{ k4s_hx82)f@qe2VLU9ĴL^ #*z bj` !*p/.k);X D.,;oATB=0;#  #nQ 2 gK%.5%:<9$61-'#"  pLҊ̣G9m2NۛXԂͭxX,C*$\ n"}&S+i129@!GnM_QSaS1PI`A5<' e* W1p H6'%EԖJ7xu?41D{ݰf4>9d$ {fCNBJ P q #(.K47984/l)!R* )2M;BH`L&MKH=DV>71+<' U E epg  g$'%!]L61#/s=ISPYXRH : ,.  + +qt z~^ΨP5Tc%vN3zA\ j !  R $ f "+5} $Y((%2 Qd"b+3<8947 0$!qW8D,d_#»6mi"+,'MYM< g Y 16vkg'2S;c?>>6810% Lqv!t=cѭN!'`1FӔ ,i=u0X$+d28a=BADbHLP,PeO"NID=4+#]I [ .  n64 I  j f \lL߸8fqB m  z o. W/ a;Um(K j "  ^7FJ nod87 K8,gwTKбJCpۉ %09E9752'~ j_NC^ANQ֕==!&\8J(*c/\4  I'eoB&))"@F~m//C{ > Y \ 1#F'E(% !)&KE\ P7W ,9{0`(*MݚO>Go2%W{VL Z*!$~')).($$ V YIz4P6GչW/ՑUܧ!k'پ Θ̉QX$(*,*../3124X3*1/.V(6"gL;u18)1ݩ2 > :G\I{bd XD q e w| dɫ_ǽb: ύkC`2R7L,e"z'X o 6u_ %W(4+/2033d540( "F vem.w%=%&?"3eI/6ݍeߺ #.476S4F0p,b*p,|1;GnR-[^]V^K2)'x %xw QA" 3 | W>Gߍ0i  }4"&)++*) (%#u![Q 9  "!& %P(bS2Y]NhéDzS0Ej,Lr}1xs& _d~ W|i!ZEԍЧyU!,;[{  n+cSoRpP` C8 7"*y021D.(p#vXK$)/:zDLPPANHA;6g3e4z7=HDHKKIC::-^WPg7  O0F?w "#" Miu8o Q<:a C^/lw5 4  N65ߛWnʩ+ľ| ͨjEywΙ1TԡAHTVw~/F+6M&Sv6#F>n% m   > U G / i @!)1:A HK KCIPFFBG>:8(76665M4?2 21L49/@4G+LXO.NG;J+JHީh̔'$՞ݵۜо/Ԣ. VT cQBY #'(+-,L)Q#1$.ދMʝθH({YG]/r݋Ϩ\IٍP'p٦es (-?TMEWe\7^[ TJ@Y7A0)%O"D ,\$t.0~eշ2ЈΆTğMf߹5^ܔX*Tn$Ӏ()x&&lA 9> ms E ) w-*"%-'Q%9"1; ')-//,%3E#p+l13^2-$L A }yCea  ^St ? 'ʋċ\H|װx{b!O ~0 $ q|=#+./.*`% iuU (.uwy ۪p{A #X gКWn^K݀OͅɞȈ.ןDI j0 A d  : %(b)'t%v"A#(,0M331-("@"%<(*,d/s13468::962g-&Bm[  G - uMQ7eS5 L jcgGK 7(043s,!! +eNj Ir=m-eKhPMp H)Y -ryP6cL5)|Jږq){tz͋ϰχ#ԊZ}bAo!&(e+r.49=OA'B%A=8(40a-:./27<@AN@<< 5-%tum#&$('!" -C|HI  |C\O@~C n>6CڂNΨYM}    ;*6;A,G"IF>2q$ xxB%%"[8|x c  j/iثס؟NQvsI#M.C fS} [>n-$f+a1479:;;<=?@ABmA+?:5_.& @Y e')' fYaW[N|c5 2zC`gGʇ IݡqS#xu &*6>B@A8-e!  #d+/V0,^' lYدвə)Ď3ۺy!C~7(w)f*4n@ @!6( &+7-025521/./b/k/.-*$V6 JR +_` X x IVP +|*e d #Y%a#+t m&= DAn;9tIPAewu .# )[,.N.+&Ytdn+Tav%a5,-3#Z9 Dy߬ے) BINRP4@(  !,&{*.2N69<=@VABiB@?:)6/( $\  dF \15# %  jB8  cNnyl%l$@Yj\@zs 0#'+-6,)'#]N' ;a{F5gجըTظY]mv`%<'af XDϑՆ٤'s#c# s f  "&(GBYD)aM%  ~jSX m< !n!+B02 7t$,0I2/)#kD ~+yBP O Z"e"d -{Y -i :-;_43 %('K#c uB "2*21440*#  G?\f>N20}Uoֲ1ևlm%YY٬qۿ*<eALwf#)-,(n! hP@'!N! cG S76 JQ J@i{+ I T'_-}0%1/7-(L!t pW4 _R%B~ >-J2= @%)u)&  F R $'+-1l3j3g2.'` ~/>Ƭ3 Zz3#%iݸ9$Ww LA. )~hU5/B'(ZZ&ن1ؕ^ "X ib 7IrS  C L z "!'=)(*';"Ed S#B-6D=ABP@2:1)!YD"'.3575C1W*" v 'F /H}RO"&^,39AHNR|VVTOI?,5*; lG sՊ!ϯ:ǡ6M4&PWݜsST+W\R:E{w[!mٕ*.F'`3  m;Qn"$Y*:F:0¡ǻGӿ٬fސ޸T)`du`$2J #,l6@HMNJ9C9/=%UG"%).4^:E?A(B@<672-*)+.25]64--# F6 "~(*p'0 | ,NqXh-\Tj$"7A?u 7 *Ͳ.ڮ_%~Sٖ[5o x-/>Oq!+)479:72*# 1#& *,^-*"'\/8V*#'-B^j&@o I?rUn~@ &F,z27<=<:5#1,)&)),046C750!*!1 I #yo@&*,)?%V9rQjJi1\M l+i77>/@<4+L 3}ڽڜ^Ys_3;:(DHJLOQOM;LeI GDh?W91b*!P   /W2}eB4;:uח,4Ҝua "#!| wj7 #;|  {abźֿU6Ҳ32M݂ݔd ,J=sDEg$"&+0&48.<=> @ DKRQQSHUXRfI?7:1,z'# ! c ~& N # }.[ 9 285D?MӫfOǽ]<Ņ>"}D!E~, QUEo0 N[> wU"q4k)K=~q[5 aۇѮhEP΍#d G6 e i > #/ c#%'5)+-/149>NE[LISDX['^:^]:ZUXQOLGB=07+0_*#l ^MRڲe k~5ϰ5Gp֥&mZ0Rt\!u:Q Tr"U%%!w c1 nV ]P>۟M̪3Mƻ>}gќ،G?KNtS U/!ZD~nUm HgL) |   }Spy4 9k}[ )F\$'U+ /0;0-)'y%;#m"& ('"mx"bֱѦ&'x!*Ȳ#vg-!ʏ(Q^=OB~E%0:BIKJG@80*#vI6y!##"Z JHY  3֖ѝZѨؚڦ3Ѐ.vw x's#eyLPT VKD1s!)3<94f.(%#$7&'f)k*)%v %Żcյ^?תډۓ}ENr" % "CEeeg0LHq "c'+6-9,l'  :nV6޲ݬګe汻?NځwBкsFDzܧLG@ܗ2>$,''1&  Q(gG0b]>t Z Pa(Rz8f,  s>;  A %/8=AB5BA?<:9(865Y2,h$)Y5؅ݮ !%Q)..38<@B@<981*" f (HnGvOjkojujf.Ahۺ ȑšǠ0)Ґۑ [}$lJ$?&6$oC  O un0nMz=4Rhi= !(,,(3"UH @%(-11+n"_  %/55L61o&CմˌŒjCV# I'}06$:::8e4,#B 4cg=)n\Kܞ0hRI+γԽޮF1Rne o - ~7{7I4;ksIc":Uׯ!/Z.6Q ~ :f#Caf{ g %p/7>DBB@=T82)-($&#"&#$&(*,.1346666d4!1*,&p o HC_;p-~!ĺ7Ў5L,~ ] w> "H3uDSk_Zf3gc[PC 6*J! @Q ?ϚԊd5|U(LKeޭݡ]o o> /^&e`]v}݆e;Qr( y=^׼ӛΡBɣS_M 'R.22n0,)')-28?EIHFB;0m&lhK1k# - wZtG0sn >uDe3LJq܏;9; a!v$w%$#" #"\"")$$#"& O _3884-u'r Z0N jkFSqV|y z$tG!$6o6& \d_@7\!_c=1!S*27;>s?B>Q=;s::9<98m750*$#  Q $.-X  t tU:jXqy<4' dGxG: p1 _G}Ga N}\-so&% o \mj١ڢmۀ+po-noU[gp`vx|3M62YprBv=d}wYV>j9 Fv?;;W' #+ "$$(#&: e"n!F  5}s;L BdZ:9OK $&7/ 7=AB9A1=R8K2,'"y[ I 4Cd": F ?֧!ֽL0\8 0wZ J0, nNDIW} :8 GkBA۳ݬpR B";f5{x( #(,158:7u3b.(#*n5wj^ ) mIZ0s # #)-057y886:2.("O nX/$($Q-p^ A'J{yNLx 8p) LruxaH0"%5YM9fVyOӧTVקH>T|D[F$\?S@ a"(++x)$w9_z,h|m$A(u,&02m5>8;=ACFNG+GEA;4u+") 4N~CX)I m !(07<[@Ac?;6/N*%- :RZ ڐwFh'_kM7e# =\)=RN35,GC g;eaݗ`>ˈ*̿՗΅΅F[AtBoc2x(#C?BJ6RE aks|R* >W 4 eL- 0 } A&2.5;=<7/' SU7x %oe%*.00.*% !R.  #  uד-j= G}*:) !min TT9}n̿ͅЂ3])o5R=Z'ՅߪoX^dM 9h  G|v XT& l/F!%'+/01-/+(\%!V H>t .~%J&-P256T4\/S)%""7g5_b!_$&a'% BՙcB٠̑m\ԥ!J 42&>B(B:V/! z: 41d|8O o& m0  :0 a 8)t!3DcPV?WQ?H^;t/% +J"'-364_/ (t0a3`kk '#_|ڊ׽םq <[Q 1 GD+Orf{|i&Am܌R]Ԯ*צH<ۛxߐR8q(  O mdA$="&^(%(R't$!9$"$\&'o('%c C:0k7) zsV"_5b e"&*M-0p14555y5310-++)#(V&C$!M y.+ۘޒ_l=ɰljf!b׆evF0}A (w)! CR=|Rw$/' =  Q u   @[ r X   G1 \t vNN~^67YN6C S K%,1453/*%! $",&,4;AEED@:2+H#{doF#JwPWyƂ˶*/<ȃŨS=>Y{!d wO9uZFsAMYV3:c.g>M7fZݩݫ9D. D P%%#" >L=+ d' Y|S njI u-#)1W8=ABH@:2) Ei ^ :':]{ 3 1 1|s| b<5&+)>Dz|ńRΕ=ю ܷ"-A1 ?  #$&')+$,-/01a/U-Z*'$t#.##*% &%#Q9 U-zH.'Y   }X i o` [Yg$ a7! "H%)/6w=BCFHH/FA;3*!' nmb Um]Vm6v.L'y1[he@ I&2M@<߉WB07n, C"#%%B"5 bYat+UyR jrHwVHp*ڤB{xyk x` p0inϟֶxNB _ 'J $Mc"`&_(d'l#xFi #$#J"Y r w%*/3K5]31.%Ep$w?}AUcL<""! j -o*\vr!p s MwZkmC 6w GweK{/]^sW# eSS N !#&c%#! L<b = z v t  F:aYڬfچ܊ސGbiUQ &-2{6753L/+)3&#g"] B0LT& Ak r OMoIA[Q' veFzCw(kzT2d=x 3/o0,֞(.Ǹ|D9:@qrW&2_BrIz ! ^O/ xkyʔžC7nh R gr=O1& -/[0 .)"wT J   !96U[~ƍ:͎jX9CN wp5@4/ kF w@/i- =+ t~   y1! d d -X) OJj6 7]@[T|p% )0r32S-%x3 W } u NA  Y+\K#7&Nʚ UFc U3H,7% ef"u)v1OZK0/ֵ RX:%5@$FEm?6^+~ ^0kx U drp7] xK D>0yQ_svےՌшزۧ<=3VbaS v1#RM6܌ڙZ$((J'#Sa"%b',&V" _ u / $ NgHr_'Mݔک؛rSw 1=!#$"X`H s 9 E e_u^ E{  n (N ',b.-,]($!0!"" Bp b9W[I_<6jcB" N2Q )v #"%&#X #*If Z  ?\]~kA3 ,qf:߹"Y!! mW!e&,W25&7P7G6]2S.-(! C wBc;AhTc65C$, >#z "*1404]1|,L' E. N?YRor. S_ >+=nܕګ,`w ǼĹrƍɾOܦ8=(~0hH U%62 &sMD C|ZmޢPFFpcՊܫrXc 2=>!\$+39N?DqFG'HGEQD B2?;6.&3qu\i[' K ; <j9!i2:{!""!TQ[ ,8t_p cQ8 k?| = -} pmB Q*{J^=Y:x 6[-pqh  =`P5ϋʲƏEԩSBHcyq, JX> HA".8K@1EF&FuCz?;q74L1/12-J)&% !CALjvfr p8H/ c v/Rh/g}eL[\Dg`̳#,&t,u(׃6 I/'DsJ#%# 272mZs(T/H#M 3   @/ *8  A ;oZ"lض t SQ- A \h%,g3o:)?B CA?<9<8q778;>AAB?;71+&""<G~ UX'g<!S# prKl߱E|*WX;œMcd6i mIKa@ a b\> Q =EkE y kydMoZ׃̥͌ RSMxڑU!aј|I)7%^$T1=NY1 !'+?0g22C1.,C)&[#" 6 P/3_k: u-< /=^& 8tOmk>K3$3&PwuƙW[|h׽_H3& !% }z  Q`,D w2{ | N`q 7}tenb\݋߯hY5I:9T*)6wP  ^ h \'I !"T!w %g )]9I s1O9$-4$63.'< . OtW "#O! [?J",(+0,+w(+$ Iq Z : fer\1ךlpޝ1ݴzגe^8`t)A/ ;[}%k /P`'T_nЍ>-أȉ'>ۚ֙пh%ũŅɨu#W xk;+bMQVuKT%nxSLUC  "m H [2t? 9 6 R ! B MD n#v'*-..9+% K*"*ׂ7n9 ! _ t-iX #B.#'(($ yoJI<7 !< tX;} ; v C!`1b/R =.8RXv|#[a݀/,E >T,c(l Cu6m +  !x%& %!wI hq, V, 74`/O ? :n.<Jy \ 7nIF .8 آuʿPГ5b+lеيHbeO +?}&:IV)4eޕx_2RN9٢C2O+  6!-`tޯf&ד ͮI  P W GQg_KX="*R( E!k ] o L Z|G )1'O/ e -{Y|6W"ʎlُ4u %;&H#8z + n"#8$"oNM i93xhfkU _i 36#\%$!I r.7bSylg`Ppq e  T " $n!  S S%#(('h"5 '{,X/o.*H$ o8\oM~0 V KOo"$#"wc  f Tt2n!]&y@ڈ\٨ڹnk$F TOR a W  >  @ i J 0 4_fP# *<߼ .$LLgW@\*xnq="6$pW  #&,3N;MADtE#B;4,%[%2L >ޤـW>bMxY%nL W _i Z=xFL&BAfnI-@R <[OaGblqg  t]QY'U dA h/=Svt[WPf`MLE s] 7Q:;"%=kU h;6vM~I ~ 'Q ?AUL !f!i+JtY1S4ӥп]ڥqPC } R%~ ( Wq(c { q8CMNA+5`DzUc W B q g  :7, +o][-D&c ? tJD6gߑQ%kz BGTDCU /x } *M < fS^QylJޣ3><HZ  #A&(c'&p#R M>!$ &*&U$ ) (X z CU)4|jr_! yL Z X ;J"%%#VB cd7W I ~ 6 |M|[  p#.''&$!T 0QM@pzIN@َB;.rdF1=ܗՕ%˩(̉эـHRY&o58"`6/F<A.`؀خ mOS~]}UWz3l wM !!!  4%+63:@7CA<4u*+ 6GN,*mۏ?$Y%/ r N^<[ z7 m t xbbG! 0[k mU2< xzKWp-D^ ϝtL_\;S7E) 8 9B1>&sP$Ps>O % N O1GXIrF L} ;&V+!.14681:/B,EHKL!OO\OnLG@U9f1(u!lw <.]a{F auC(o6t >_? [ !Scʻ9St,gE=`Du b]!x$#'Y50OuR.Hs*ÏչqXtв ;#%ЉqԒطߘHl7H4E P  Iݹߠ[}:C4>X#B)1-$-],H*0(&Y%$#g$%A')S,3038;?lBBAS>:51.%,,/ 48>BgDB<4i)|*j _k}!!:t IXztcXqtvғBInV,<аnNf + ^p-"X&)+*&<  < [|?XgJ h &fj۞}ܼޡs $ j r , ) `"(-9/-U) H TWB ^X{5Eء?͵/DwUބETܤAwtkfW}% - j ) j Ip.5( ycT !DL=x 5SJP 5A c)%.1<:61*%#8[ !2~zeԫȪǬ ȫZJp=פw Urq e ! "+Z  #8%$# 0n8X]rGM\ w?E JFd߾V H& 4d ]\@2dZ9& C+ 0cAӦ x RY67ҹ?αڹLw+ՐF,2M= ";"{"#|%+'(r+t-/132{23%4436200-*'}$""""$j(+/,*%[~s+D 8 +ڌж21=mPޯx̃me*jEs@w=e'XlVRL"<,z} !% n 5 _ 5 1 [ < (){- Lp!"" dL !{!YP = LR dte#$6ܰ|ȲrˎѫeYAN<Ia f!E#!U![ 26W  2 K  jFs!%'()(A))Q*+,G/02467761-)q$[ @>sG$$xրՀZاTeF3/׻$GީU# fI'XY#%ΕosQӴ܂Kg2 ~!$'()<)*,,-.023567.95<6?DBDEDB> 92 ,&"X@ "+5>xyת˪Š@i׻W˺0N㠈} uZǝτr ް:r>w+ YIYQO !####v#/$/$%')+-+X*&#" !$(y.5@:>ABAM@d<8z4/+u'.$1""""$\%&'&%"8.. 'yw4Kކ X/+3BK`Y7Ҵհu 4#(z+-03`79[=@ BBA>;8(533f468:`;:@73.*&!ihW,aY  EvesLZ,C-o.G=uRGnƎr̈`ԵzԈҿ}kƻD @ܒ>F*ށޓ5" tN iS]vwz?n EmU d!B!wWl '#'+/2589(98a87641.^+'$]!b)  ykIE?V>lT՝ϟzfڳl[: QA±{њڄ"b j#P!<%)-/1O0,'!W$#,m5;@CBq?;M620/055:zBXJPgUWVR LqC91)F$ mb?1bW<ڂ Q؄\ڥ<2/L~Ӆe Aub׻~y6l|ȼmVK$ JyrI$*C17 e@ @>;Z72-)d$45 t @.ߛz<'݁\߯{ȾK.nVڭcť ͺ %œ Pͮҿ]ش## #tvDk"8%){+-/y01S1#100Y001V469`;j< =.<:|740`+-(#!L!"f&Z+06;==; 71,'$!!U#%C)**m(#=S f>| ~B*,V{}I)P' 88Ӡi &L]p 2#%'H'&%5!m1| ?'1:?Ax@Q<50!+ (')h.39H?BCA>:3G,L$  > P-{"a uݴ9޾ >ܨ⟂՝"pߖ;rKrڋ[a7kG Ɂp{֕ 9ls.iX.:w "{m MU mV3 X e 65!-6]@HULtNxMJNGC@>U<:9+98s9[;P>@CEPGyFDI?U7 /6'S*b5 ~"t T7' 9*sƒLpФЖΗ$hBC;B?<7^4g10"/"/.-)9$h uJ)(\b_tم+!Ljd;G>2Ƞsd琎BnLp  )q P sZp2R7D&j-3u9>?@?=:P7s3i0-,,%/V3 79:950&"G+kڜ;j[Rʵ{~aٴ( ?AC0/.-%-,+o)''#!XKQ4B]#''&$1"1WC  DzqvM=2] @Z^P׏ӘTD׸۹=9O~ f'?-0 44553I2F0/.*&b >I  AYfM%mxs#%(* ,*&!9y 6_ RT .S%ͩ&_A|]'(Ģ{½`Ețm`̳ϻї4 1 d kh Aa!;  ^VE޳=)m63 ;#k8 S JR^D( ]kn &e[)G>#;"+;c߅<Np#[4KlCp!#%D'I(V(-(''&&&')+*{* *~(&I$:!PD$+2m8<>4<71r*o#SfYs/2F  NH>ry20ryhf 5t 6PuW? fK|' H'?0"6q:<<;8.7 6579m?DFHGE?70*%"!'oS$?RkX R:%zu"2ީ.6&֫_wþ/Ḫ̂x˓”eJQn1}f/fc: jvjhb< "m& )R*b*( %!FNbg &۔W\q1 7XiKS,&%*in34ޮ<0f, [:k!S%g(u,/S4|7:>ATC0FFEkDA">X:654334440,&M. 9bNt z  DuY C>S5H- q uM=9#ucy߼D[} "'?I^[.y R%n [! H E,Aq) h+x :p@g֭Ҹy̚ʦ&<_S>@-UْZ[6ߤkV92^7OlN5IA6 / xKBz9vx c *<UCH^hIbiI>V*޲ĩWׁ x yڳg*9G6A$`K #)[059::y5-Y% JsJ !OߡJ2>̿=cIe۫ӷͳ ſ^R1*2ۮݡ BT!x$'())(j(H)*D** +(*)''y'L'o'(*b*)Z($o2| 1 l ^qEL/0 X&+_/u0N/2+%3`  mbt}z(]{PL3o "%lѤ;ѺLڤnqBNWro1[7=Faint !"."R } #4\w_EcT٪bͧȁCl"9YͱȗŕΟӼfOSy۫f#݂t37Hu@AVd{ l )  G{x  $%:$!c ?  *>20i  !>!@zv$H"%(+.+02>3321-[*]% V,XN"5$B#IX%ba  *b ='o۪;%,ݦdOJ3^7 wD]!"#`" Rb/[!#l%B%D%-# Nv  Wp*݋1<\w3'LOiM 0"M; 9=z-$e,|k&-T N:)^D{e >/!Z}ex Nq ] $0Ry qzd)OVϝݰCe9?>Kzm?:K#7H@rc-X#|a2qDc<d l {qm1:j.@)3Xmcb$'\UsI2rY@@E g (:/48R:U::875;4J31011<3u69=B>6/[*(G().;4!:=>:3(g z%>~ H=yKZ˦ι&EaH'5(Y@5!  ]?T6DaO~pߎ;qB&( /gH'Gu^Z=`:Ե˼i×0:g<~^4/ӫ&կnEn7軙2ɯ$څILA _:EHw#' *+-./1358;=2>-n !<p RV f%(f*[*'"x2z. M |9;7{M ~)/ T ~4S;2NOqЄ: ȼϿ[ù#ξ8=+œ9ɥ7I&֑ڈ߁H05g&3TBru'gfۀ'`mkNT3}ݪ>hڙkM ֟aKE5 -H"(=TD"STM{[ / 3m!%%Z%#!D m b#%l'(z(&\%9# | M#K'*#-*..|,*s&" qdnVAzhz\"&*P.P/.+'c#O2x Z 5`cw8s>0;h6W $)(-/1'3n3223c3l444-3{1.,)'%$##v"~!S_]L8iSڛ݅Ek    aUpoiWB`ICc.Vmb7_/zf=ҌӂԫtԽ>Σ̗ɺƮđÆwSL߿|?#a L?I3RaG ! z[4@*gN+- @$ n  w_ttO S[V^ ]8$\7HB  =[>L "&*/59>/CD#D&C@=\;8777998P852-)O'%|$k$%%h&&%#q!wD 76 *w# )a' < |Y  !L%&v&:&&&(*+p-D/m0|12`46M89<==!<83*.($"["###" f UnSYk< n y>E'Q9us :nes*`|]2m8|S`d v< ! 8 Y e!k*;8ix;oufv@MXRQ~jCu e.~օB%rPԑٵیF۱>֏ֹlZ3%~l^s 'UfLDU?߸<׃ؘ5vbO4 #&&$| 2 '-< /#s y3us\/ZqQfA/Cg@ fbj;S m Y yQ| ) 8in *-%*'{!h'.5]tVf!'ݿgyP-tSGI{g|A <;PTa@Aݖْ՚ջmCp|zFB nE"(u7yA 3+d$Y &  L %>.ZKI?AeY H  aw ]; Tx K se6$Zߟ N  H KyR6 nH:$(+S,^+(%5!d w <o # Tl <|B|=V`o W q5I < /N"p t >F( o~ dR "#)- 11210.,C*x(p"%""$%'+_/37)bbLEjBO?bW]j_\ 'xh#(,./.-B)2% 1  K~f &*.t0/-(#?S ,  0$ [`Oޫ%ԀFۢx4ec/!r~( `s>V [x!7#8"5! ' V,7B 1==q$1wfeg j=:v1xV  $i 7   !.WBNvݕ)BW57D[ߓLf/h   !!!9!(! S ) [  GLs(j %ʱ2җԒwEHݍ7d*Agf P *|kHK~(H"  jT 6{ Zl] = @bws@ga[tt"p cYF!) $h%Ts`X&SdA0'~]G; 5!b #,% ''()f*}**))('&&M%%%'&%#1": 8m "##!@Rs! &C C">W]kڜNڜoST kwSK?|Z#u&wTsO1 C]Ra=4 %uSn oleWqkT{@)^^ARj  H gyN-jD[ C4֋ڑK [*Xj u N *   $NQB=e x+FY !"s$%')+-i/j1D22:2x1X0-U*<'# Jj66 \D& (4FWWgu@c]{+uGRNW!N?ݢ`VNH 4@!#$2&J''J()*+,------,J-../.0-Q+(% # _L r ' }f5$Eټ׊^&&ތ*P֋ʐƑníƂz]JV/7xS k WqpvS l-[ _.V } g*^@Bq }-*1;&6>[USނQَؒؠ^1J?Jva?c [ !#%')(.('}%#! O!R"#$c$#!8jG =H( ~!_Qf i+ w { {  D  y[gzO]!T &pyLaHad   xg-B\qu<``Np+ I-].# nTx Q EC =  Ikn $')*);)&'%#z"!B!!"l$7%%&'&a%#%!e\I"$%&.&# fc g A A2_  !qNp{S>.,GEcPcdV8c<Q5r UaN]A*v  ~ o v - ,zf\0$m h g_u@  \ % \ 2 IE " 5 Z869J<_YR6bk+7W(c. #{ao5|(3EL {(l T3 > 6-@+&b`GR#UZinXbr9~T<1? R p |c!$%%%$6#M! 6!"U$%& ('+&n# i  < * cXO'o;ofټܿ c>AwX/ C O s?ccsq1n3  lD\  #   QRuk ) 0 \K 8L Yq4IxnP?*$p b_\;vuZ  /:P_*^Qh ,q bt8  4tCcvN 2bIM| rrAYuhUnJw;x(Ve k 0 C)` +aksTl+*RqNdd'47+6H ;  "$$##!  Dq ">% (-+-..<-)%Q!Cp"%%# !'G,5%8> Idp5FޝߘNip @m=Z `.gT\eWJj Qs9B6KA-deVnkubOir\ݔXz'(iۭM'ҧ ΅ΊЪOGזל9vTvn  p | C 4|Gg{;HW!Z#$$#i"|uB s }KIY tg"D;$> GDv Q [ JyaU "1'!exk  b M"|2S[ ;O5$ x. @`aV 'l BJG {I2=( JkFJ hQ k # tK=UP~GJP-ـvzՅْڤۅkޓc O5Uq/5]ho,d|1afK}C=q lcW6lt*P=6$t&WGj8^ZN@g-B (Nt_AR ; g$3\svK)r$aRTM%.& _ .:Jz x \ t  $ Tg - R   eW}~^c u - P'ryV-O. ` 8 w r/\b~N? W(0E'5_ ss95G*ho& z J4)ayT_MNoIR'>"Jra<+&i T1:K*E(!o4IG&=^% sHb|Q#Q$>SS+o@)#}~T!=d}Bi]rP k aBt #~&))))|'%/$"!!T""K#"s" aY h0[<x(AR {+):r@pcviFKG>B @_5&E=m !!["E"W$T$ OdL" * ]/ @  =4<< $ mLjXu td>   sF Pw.0 j , NV`d@ns9!/b T%j:ptx  CWc! a 7 ooL7BsMnCS @W9N hD~l<cFHVD'#/s+Q{3IP2v6UI .0 J0 f3\G=]r3c I}"&yOC U} O sT    `[8bA%M1 N l& 2h T n 0 pb9wh8 ^  b evuo% u )> : V!lh e$j'(*)F(~&#U!;96 "%'))7(%"Pe_<f'i =( 4jz9 6 " s J 2 4 .?  ?t|t[ k/Vopis#um;,4<@o~LkP JfUw6,q>4x=yZquMWkA4 wX4 2` '9/?&r HE\&#x\RK1@R5jgi > Pp ZU : 3 ,l4.QXx uikm Pnk[ 9 0 q.n W ti'EH o U q D )AJZ w|`  U k  k ( ZQ  blFdi~!#$% $!4r5o 4Y9 aj5RZ]sc~P+*!sj)QGKidF>(B\\[[/+ 2L?\ X(/k>i_7Do;P]Vi1x ,LWA^VE M } ) Z M Q &L-@f<   I P') = y s wN Y  q lPfw =ADtUQM# zD1OdU]yBn bft B -BX2 c   !R . A pi  J a- Ku 6oxrG:Qe%P6L8 &a7CY(Z,(Ug5[[E7a%\>/@s m?3UUJM5r*J~.dXG~~Soi#FVEG=py$e)G!RUMU\^>BN#`K1A0v4|/ li HiYY9cYi:_J3g8"Y0OxAAnCP+ q & 'b yYWH Q oYS lMVn22<"OhnIMh0 $ o]GkvZK]"k/v 87-=f#>LZjbR} clnUR|G)9 j Z u , X > z [ 8\DvdgI9fUM}TM'eB.^Q[@kD=DI;]m A8~_)m^w7mB fXh |O2,LQoQ B B +Ws&$*/p_&ed\ xA3`[PS\pyP|/VThi k{:] [u~ " a ^ >j y fC>uv ' U^vSlQT7*'Q#i/1 3  VC4?U'3A{&w> i6907 {  m t <Y 5 S2  l t \ f|c b tz g kuM-b?,}^U`O~M5IZUR>(dL 3<&-~oskg/Mn8%  F  L~ 3i???:z{_\'6n:c RDuz.UK>  9DyW0QYH ~jRv( ,u`5^wr07h  j I g{9 0~|9h +5C)9* 9_xL9hܕEF>3 t;\mN  =1O p  e ~ 1=Y*Qwf  }@C;6q5Patu6`CX j/']HElDp`l'  e hPM( pF     C Uqe \ x u " L2L$D~*yY&s|ixO$8J+c{[8`6?T  v^ m om J  ]y=v^iKtGve"vP } ?V y-Q K7-kk{E{'C}*.9/' N/eit # K L-S!H~%!& ; { ?5 - n} - A  fH& Y|+ jk%brh%>Vk-ݐN{5?Ed@2nY>+KoLK0V0~  @=6kUvCNRp`  11$4bWC2f3Kc@AE8nm t?6wo 4 uq[ B& 3  W  P)@  ;_l } b  m1&!J?u2g-lxQib6u<_N[pj)V? {tePgX*p"7$Dw/RPP\R=W?Xs7 t9&t<bY-%H/-4'm< G B|qP(- dn .  i   X[ R , (g ^ e [OVE} x )/.d,btb\~w1r7 ] $ ' IPL EC(`|gf09hB *Ly}K$# rB(z~k2Gkz\"\k z*}P #AHrPrz>e3O~ ke}@ujp^_%7GkR V ^ Q u}t7CuMjU)~}4ec_c}u{s0cQMITh (UDO_61 4 - k $ <3n2W+bHK77V "R~] T(@Sv[!O? * [ V g -  jKo44E1%A~;hOY*`=P'"KDA  .B 0 O 5 9 R  k,}md|<:k)i7r (|d9+bakc;=3B6c4N/:z.r. $"ItytFQo%0Y-ELhi|1d,aCO7PZ] NuEk6h~bmY^HAPbzaHzn1U-UnE5EIVJz\{dl v I D*v D @  | gJ(8 GAB8W^A!;,u X B   j O a R  8 7Jw.\IOy[I|l | M : 5h ].&q^avaT&np-sZ ~umSu4c:rsRY&YGO> j *kPv  A%y  O ; A Q  !   T! ^ ,b j 7 5 9 z . ~ mBN}RF   Sde`~SF/p} e]/Nkl* J \ l l f . b wZe?/pp5.Op;Ig0NU|,`rG4$F0 \2^z"Ray@l9J"Oy[sg| ACXI1 WU j2SQ;1Z&@Sk[d[4c%a{Pip Mmt+2 k{}Kbq69*6SI'2ZwStN^Q Fo `{J"8P]f h j 8rO Tp$]Jr aAJ#v'G8l l7fz-0F4}Ch ,^{C! {2A gXl76;v[@y5I_i[Jag,=WnEU( pZ*W7_>!}>D V h # = $P4u j : ZgKC%c : B "o   uVV# " T;-`% 1+dQZ<M>Pni-'  r|y)Gw qLs){g8KU w?*@2XRZ!4.9(0 : f y?X*|s9]\ ,   z   b z  N <  IQZ]Lm9 E[1#%#!  " | |x6-"; \ K E ~ < ]>8v>u_NJ; 'FB'52:uq $EU 2[BQ$Zr3<<JJOL](t?j)+6tcV,rJ^M3bWo ZMn)8SWk1P^:v1G)TDSjSk1oJ<_o.7@pa+GJ9h*TsLeMu0cu{'ht 'Hn DDegmT s;4YpqU;e7`yzi  642v#?g^2 L _e 3 4oCpcD5 V = Er%]gXFs::-ZI6D 85:uE W}tQtd?N&UrG%_3db;9}`hA]XTz`9;mV'Op,IUkCI9x}  }< R)_Q)]qsm s*  aboR[ S<B4^( t vhRMS^O^O j4^ "H*8" %y-_km > 0wuWt5s-jYeL  E1 ] ~ 4  K ~l9 v { 7r , 0`J5u\m-h.HRQ:eAu(e\Nae:H(#%#Hj@.e.|. U~}. ea5i0wqGf H(HTS/5jms< vv&^rcCk@"_ZjO( & I a  h |  (  ]9 I  ; 'Yl]bM Wa\3!dl G:wSj'I{p}={2 *!1J3 A Sb!V],X]?^kaF'Up? c;$2B)zOD,g&])3lv 4W+H\VFRU+OmG>&>UHaq ~$\&m!-~f|i_)ko`M);QZ(JKGos}v{aidY|x^)qR[:24qv* -^],/  &Nd@<LWs|rdbg=8d tiAA8i k %:XPSfNKjJY&Ezo 0 ! f  k I  * 3 G  - . 9 X6h[+cGp[aa|RB\ %vjrIvZ$?i8]Q#+Eus#M]bA=OdW$Q)z.V!~y&biYS;o>p @6Ty$]ty--H0gWv%3e`JRUV,'t 7iNK z  g q  <D, R z $ xg(|ts7lw)W6_Hd7s HM`\k(bF TpnuN4fk\p h . M  L R . E h ^ r ^ QpYJ_ GxO?26AF7+i{U#eMhTRUw,B=-J._2$V*wZ>HPmr_Q* HC3!CBj. gan"l%F/7V?}{7d e Y!R 4^>W ^ { x ' D  s \ ZG8/I!{`OLk0?-\)8(y+k45E~>skotv0/oTG 3e:; * b Q t ; N U ? v R * w  x4B+!VtM{RHQTmgD><pSgaPe{vAx6qjt)MqIWu6:\3>a1:Q:\f1 F?CzIvB+0( iO'utU%@R\S2|KsoFQ&    J 7 m g 5  & AtRk&xah^jj=zGX^/. 7\2hB=D +shzMQ]}J ` < + U , $A~PF ? P 5 Y ; ^   U fQq / ^ N  ^ 5Q3=gKlf4 oZt"0}4K#uzBJc6pI}]d'8[EZbu[2]RrR(;R3 9FNKI( 1FLM:d;0"zFWnf5 op$#~M"8h vn2g(CQ8  oQ !K82D.:cX^&&[{H{"={:Wl(EYB~M. K`c0glO* }vhP@J76`Et. x 4  r j : # ;  N x ; K>kz ]+]){H66>#>"?pP\24Ji se:&)Zdzc|qC|>`WS^S  Od]Z1\9Ac4 nb+lqh'~q7,&z? s t N e rPy M  X IY!'W) v 0OLjutrGu,}"L`3mg f&rN2 !#IGMIWZx;H7 U|: jBlNk pD}Rn T  p / h6%Ha~6<)5^T;F'nAK8J g >Hi3gpoP"s)v.i)+mN[:fWH:wjcB\o$F oEv[$U@w!q`@2d4 s,-[x)ys/2- Q<HT2cIt:.<vd LM9/m{n_LiY xs|(ujTsYP>hyMyDsjyz!\m^fl= !sGlrYlad6$Ew=NY..6?iE!$N9IoA3Y'?` xJdX:58eD{}?#5nN /(^:e>d:b}iQFT?ZdBmhf\a)n%}U" A I ' y  n  d{gHyT7^`EGOIA]UFe1$M&rV|J)?/F\ *]-AqDq+[`~Xj%7#unDMpMQ~-0XFj" jaqH ! T~)xj7us{YV}65 Sc9Ob 2C}F~wTXQK~1@Kd!W`~}b|'PLk$MN<uO)O-#U45>Nj NJy"(YI_Y_wL-.Q'f|i:^Jf?~ G1cOP={$ =XQUvd7#m#kVB`.= Oj\X k { ~ $ SM k  iqb>a %$!,x|/fYrP,5AXX'n\vaLQC{$kH>r6>T&4sBzAD9*7Ht:]-iMS7#P@6-d`Og,ye&@p]}.#~L4O/$K}l;XUb5AmPM.%u; N|1MX9)?,qT'_5d(;Zki^T'U Ix @gj~@ ffb=y 6!sx>ru23?*WN#~[ S3q6f{JB.I6O_3I?-FP_{EI8(^aTEf9$BZh#c~F=N_X){1V6 aV%(^aZ3GK@\g !$n_BMw+5Q)TMSe-d FC]Fj-V]2-f~~vU[cpo`1]0O'7^:md> %XCp19YJ)< : RNkhdd#  t0p=%HO  q O q s TP45mF b '* DJp91%Yf;jC~o=#UGtYuS"[\ KZ!}6Y. bF=%0ru.DD1||J,Tb~#~8jEwy\/>+YEU( ? \R1VxY!@7~E :++jv*zn|lthT^H2{HoYsDjXsSe&(T@9>n3j&70, `)%dja{jwLA!"ZiQ`Zbw<S=u63~j&$<LNtN $oZofy FQ*P@rt9K) }!gq'ty|AriL8W@q=E>@?IT1rW1n6dR^^+]>3hI2hY6a syYv(7{-_ 8d3   wht/h]$wx"=>Erdixd1P6k$CsvU#J&LRaNFOmRqen\r=H K3Xd)z?\BDxUJI 8C8O3>KR6I70j=IPXDw@,= U {&9OT4&r*n>`zAtOc%"J?.;;r%J #IiwE_p#M-?!(i9A% e&.:KVDu j AKb'}LA [8`G`VM-'^l6ck m[mfu\/ZpR*)~5z7}O%X0zuv1 %<qBkfI>>igD/HW<KBfAz&aC0j;d }.KSU[N 2iBsb<n/^;X?e$~xh\eQ$C=g+6Ht(dskq=,lk<F9Q_ujU3I  ;lK7%;UrMtMt?9}cxAmLAH =,CZG!n)5-Y`@Ux9SF4*Dt9&WY;td>QJ 4pH~7"6wn[9,WhXh*]]O=N|z4 ; J  Ukk e i k q Wh/2Ol E8u"M}m"N.Lad3}e_i$~tViI^`~,?:) :P\p+dk#`UB21 BB0M,WEo[QgE DE %CEI{?W)S/N[ijtlo9ZOfjTVg[1K|DvVar]!Z[FZ:kk;)xzCsL\/pi mHUoqB]/R E</];D:`+v9Zw,xbA&"[y?v6 A  rwj 0%NU.4)~Ex; 3b'c3bmgK [f n$O p5 *B?GLSO>rJD3 5bo$va\$**Mj: ;uEDQ!zU /Sj_J-o0Y>qRIa.^bp@,eV@\1+e.G^HgQ*Ib8EB>|^%)]P1K+/L.X0crba qC]2W {'PY\P"Es.w6gKZ ,.^#(7$+$19HoAz.O|?o5m7S |VpPI)-T[ %c$VD?^Q{]52r-<`)}H.Cj9;DI/gl2D+9e91NdO~2Tw:4P ZRqX,dN`()\R&fm-UZJETN"=M fK$ # Q O, 4EE#S8.11>!}|]HFhr;9V` y[(#g:'FyR\vzI{pagn=VTVc+pShh?X=Dae vDQL7 ny [/:w[gaOcB$g+yLqmH20%)*+^:PyT \ G3wE"=c<@>96+acu0$2VL &wg0k.1Z|7{RgS'3wA .4[&AZ]VRA)"4EH/ZrK(zlN%cYms@< ~!nU_*2b4})Vbq]*d/kNoycY+S${wEkE!U4p#CNv X^3-}Y)~/g/=<fGLdTTPU|Y$WBC^0m&L|G^_v j6iD[?eOFaW@oD8:d]_fo7#m}Z^Iy1(}*h;[eifT);J<ITobHLB+ :g?uVJQ"u*[gB2= M^hst]5V:zL+D:W.Xh^mZy3ws#u c=%`5(;vh` ).U}Pju&8(tgn Fo_%\63` s  cA)h@QE<oZ/fjOOE#y~aNb.Cx^":?%QL*(|j,| }{Xcz3 (kqc MjR(3%zC`~ N8H^S?hO@R}lMD]%W8Sx> .2aB-"-1:E-_ 9e) }hPyMvG##&'@#{,73iL8G8AJXw?fXyI;dso73aBS(gfQD(vGqsU%o"nd1/ $I=Wxz_[lxq^6o l!i?f_G'j%01_3Gn'>;|]w}4[ %R":^]R}Y<tmHGT=n`/ C>$NLiz d8|T(.p92R-2=HR_oeII^8 noK0+)/)`YRjGHW_ljtks/j2d7Pzx[94Ld9RiiiP bRm~9P:'tO9(<_q$Cp @&:I9$Y? &0s4 39[ut[#+]_O- <$jV5h!L8j">7q*8`D4[e_XEHxl]ryY/ANsyk*#hO7ay%4 FVH$Y3VHMoK9d46OV'tuv3,$ Ei;Xh5b2.|{D}i#jdg#\;hi `h8_omh\bT0 sh[2mlG9-nKwvSU(_~mH*Y:Y|x2k>0D4,f}IvF9RS|v:`r5*PX(h4Lv95r<{OZ.3SF6:s_612`M"@;c-  T!T]_heuud,r<dk=7Um2bQ1B[VK?5)#*`xto``^_af]L743.1Y|?bU{CUtimM7L?du{M=3$ a* r0U#3u{'kll9r+>I rUJi/qjHp8f-YwqKE c;Bu@P_"AnTKyuq|TI5}P0{KvBaSMN?gK5`>rr?Kg)1qJ1O?{#*w)&?Yo_ XomN% 1X ^K\dpd&]\ LS+'5MYn %=Yq|B0 f3>4 Z#xV'e>M(jd*2L{76SVS+!o0Y}~|5ju],f)&Qmm4_@PgaxYlkyENQaD<>d@qQINE] ,,f @pR]tq5S^A$bjN9!aF"AwXY^Y{ /s'~\O (FE[ 2Fw03<kpP2 8Wvw?J &?WQ6,Ztd1h}O7' |yyv| `z&,xVFEjIz*2B ^/*<h|Bk 5{ Wt1aMNd|td:P\so/FFSZr_# fB !@a-G@42WMehf>r+aBz0x-_#B7L/!;zoU*'{*I2##o5h|p``utI.E Lmf6yu[t_~8JEkMWaftSW)52[{b:Te8*C6\c\ g"XS%y~HCrQrjD-3 }RCZ?uL`QZx#:,K_st.giH%kZV?^-1aN}9}[S">ZnEV?~o5zMQ,Ogv*k}MoNh.b<d~g?"gA5HH;X Bd$ >$fqdTD7,V9zy9d2*} IFD75 ?yi25C5P &VE-@4( 0u-1;rDNhJZ?PzcD&$Su MwzB'Kof]:'  Ur dAc3U#)y]BmK9:DYYQBO Zns>| {ig9:FIB=>EJo kUA u 8NB euLvJID_eyqBeV}//K.4[4,j@9U,QQ;oSv[vIxL4Gy4.<r9Fl2 y(6";%~&)eY o(7)y9|FBP$|mSPaa= +z%hE@wGV`eG5$,e" R^\^*|Hesb7E{y 0:W K m LhYx#=4 V66J_i\Nu,q@ +39BGSOA%RTWs#nquw- 8kBa  :KH'1w|eNX9TOB5N"h]BIro&bfV4  Ojy:5K! &Sw?vcx.up$0+'hK6UVDr63u.T )Q|Qf= Dgvi>@G}\LH=;;NP\fgroipRLFj8xdA p4"`cvhvD  \n_@2j~nE)rzN'4Ls 9]w~qD N1Bq{@j,`2\lFR<.3[Q)jh$:Ks_hI*vr: o:[!7KJBF@&!$JYg7iH G\S CW |W)aZ^ ,g:2`% ]8 ?RAdYUmb;j-nlggv, D}= %x*Y45WB+4Sv'd6"Py&>MUO6}fdnvFV>Qy\/V:vn^/0R G(|~njz5\yWL0*!xO!Hx'H,Uc_XOO\t 8T\K.uV4#"GbO"^hrk_B$O,*Gh{6-'[tsq+JAF|-Fv|[%Uk";1TmJ#-y5Z!9@&TT85X$SzZ. B)mwH}.[O "0];e {Zj< AzwW-hblR;|9;5z KN'+^  p?p< 1Ws174&.ddJwymlvkZL_@rs@k%{xnbYahwi;  [' X]"k=kHq}kZSiDEZH,Aw$CE0xrN8RD w 2+qSY $/$h xY[)@[kk1^whfip^LB>JkmLaP(%&{OW,{h91R0Bc/,O P(,.(yYD9Il q^& -aR/fUVp{ww{!A`J}K>um6qXb>uO8(%vE+A\} ^)_q}|tY>/9bWz\0h?$ "5MzJi$c 3KF6 PYiC2'?b*A;P(-b8ZZ,y s}0mo.)[HSx7sIs[kK( 'EhwuN WKkC)@U/F$#Jv9p+DS^WI0={^4 #=XYQ)wP;=Tt +*+2ALl)4@4[;")WT7\=.Ub_I_<.4Lw(r!Ln<]}fI/ (<ZvCx#B^"Dl~TzI{JM 0@A1 &\yRcqdq6R^)3) ;q \ -.+)  "$~W9%6'gXf,d{g6jnm~TB ?d7+[~Hp>Um}e]KGPOK2K 5lvi]VORT[\WTJB){6Q Hi'l`f_q/g?d,c ?p3U|oQ3#&2E\icW*h(nVD>DECEQNKD,6Sq  kN/ t; 5ksR. 3Pv#0+ .}/KU6}-AA/ N<s~k]N>Ss-243*pF%$*71$ f!H3S^Th;%U\{dH;B\.4!zc&/49:BP^y+}F &RpN+ ,Xl6siW<`<d;z^QKLJCA0 ;]rxyV4 slky(e _]I3tG#7EC/ g1}y (" zXF7-@Z{Z'"^Ke's~ucfsKGZ^STW_}yg(OJ&K QjN>W=enU,r=5\W&M) t![pZhDWyIhBF`Hx A)?~'_Qg )<Rp rW/p2B raao{;{O$Y>kb5 k;>cTX)?{/.^|kM)ZNHN`:6$NsROZ{70p'&urI=P2Pffhf}>*c8LMRZqN $)/72$g/Pc0c)W WsdMEC2x= AhD5( 1Gceimr~6vAzrY:'/FS_myjV8!J]nb? ` g[^sGyK  vwTI-::-./'N5U_Fn+d[j5T8exAC-2/," gR<6.9FXlpe_B =O4lr=d@d+Hc,?Zj{T&%cn?W;;Gd4sk1Q"?IF5aG24E\q4W40y/764.1*?-e`C  7^L /?6y$f-Sb`@pO>$ )>;p9(Es4m&QrA[W@rD# :R[]WE00Nw pFeRIITOS\dbs} ;s9IOXdmf_O`jJ}WNYszFc)!.+& 0<@PW`gmmlmaYQD:800/013/&->K\jz*m!z*HPRB:46Ik&u:m^D0 vQ*a d 6gzk6B%z9LRB+%5Wo5`x3EQ\k|~X" 1a \ uSD7ma zH;@V>{$Do(CZz%;RpxpaH!b3^vm^]cu3fpaS?8%Q r`^fw -M}/mrYG?F@HUX__cr uS.T&fI* '-7CTp!S3Wrqj]SKKTatzhWRYm kicbhjlT2mICPn52AkN>Ig*+*8d,>@?CC>Sm:w@Z^_I3(EZnb6h0OX<6=}E#'BdIw2Z)d'e.Khtxwxzlja[W]`XG3vT8).:8EP^k}{kip 5OUI'bA|fE! oU?.( #Am.NgtS5EC8( +;Whup_; yT%  ,)k@-:V{4?(aGQpLpzk^OD>==;>CTd =`snaJ<+#"5OuhIGWzV!/ZgUHRja5=_zmF0&'2>Oeo^:c :(@ jMl?:PIf`5>Mw$n Y%2?90) "-=MSWLE,lQ1{R(wS:8N @nlZD3!  1Ea{dF4ETXVK3 1Jeu<os`RPWYap &SKG $kQXr4KUWL>800:KY_f_]UVX\[XL:$ "Nt</IVP?%FRJ"xE',Ow3cy|jN:)+CjZ-AA=1 *S\.QX1 .4a\t?$"9ayJO)[wnQ"-d:E@&l0:z3DC@4$gH/ 1Rux?^ U# +Ebquzz~8F=w(Jm5JO>&m'~wlihdTL@AUxV{`B3   $$ W!382*"+Gv|T2  E~$#O LxbXf4kX!](+Ps j:Auk'^A4Nfp(@ xhOPXi~'<]!Pu{zww~x\+W2!2\+_|maTH=/!tyD-79@4ZvyfA #%!#%8Fb*c:\fkbZSNUa{jQGDOiyU;%$"/2<@8!  2[p@  ((  7^weYLHB;$  H9Y6Z^G=IUqoH?3YlD=jgW]c~u@S7*(1AFMVYKE1=b#NwT+ 0SoynU3$qOpdDb3)V.INSE/ $291xYH>=F\q}%Ge&4G^~<gwZB+%/4.' {ea`ooy|vcL8 !#)' W*+RimY9dI7Ly:fyw_;D5Sr~~|%$kI;>HROG2 {'O,*Ju!RptdCtiezFgnW4qB!%9\1AFKOHJDC@3+'5Iiy|iYIKENRUQ<nC&*e{tq{S hVL?.&$'(.349858Mf&Iq5ivdO80KRUG1tkfew 7XfcP/wdZl5?7"9UffdV=' &9PmcA'!8Ognj[= d50Or}I`Eth54Zq/K[kofZOQNTW`fc]ZF4$ yumlbT8{n`Y^j~-KQWRI4|x{.W!Dp>U^N+iQGMeIj/4WzrU0 /b) 2l *61zcN@763GfvZJGWlMFvg<,Y~\+f2}ms&*'bC+(<YZ i`c|G  $Dm.@HD<+& pL$xil~+20,((.:RkjU;+$1@Rdv{stnbis/495/!qkflz@[v|Y-9w% r> #;A>-l6V*\|pWH?FV%V}xZ<s^^i{zW*)=U[\PA- !DidQDOe-'N .f]=-5KlI|o416F^>MP@}no|%f  K 2Z %;DDA<66;DSiyt\5  9AJPOQSTSOE9 ybQMC><71-143$-;Ui!/@L]nuX=$nN&   .<CA) Z929LsW)@w  8c .AMV`eitnV?+ q?2=3v7zH! I{Gf $8LXbiqyiC% 6DS[^XVJE@;4.+')*-.+*%! vR) $If{{kQ54Mbw1Jau*>KOOD7(".41+rUA7+"""!"('%" )8IS_m{uk_QE5'y{>nzM*>_tls9ELJ?5.')9JZguxeN8#hE$ )/*kdA+.>UmzcH2$!.KmBj 1On qin~}~}jVG@94+ s]I2~pXH:66=KLV`k0^ $A]x#@bzwfWMLXfvv\3nP><JZmw`O=,# -=KYZSC-/H^kk_E%zgYLD:?GQ^mvy}|uiXH;23:Ib#-/)*+/>`3luJ% (G_jfZK5'+B_zX9  .E\kw|wiXC+s^:X8-4G`~=c4!#0R}Z!Et0Qy 3Ul}  jN8 !B_y|jZF9007DT^c`S=}ztqjjjebgrhP- 6KNMB17Pj-A^vveXPThAYaT9 y[H=E[xdC  z^B#sidlu 7[}y 9c}scWLQ[m~W51M{ Cpn_komi-1.04/komidata/sprites_electra.bmp0000644000175000001440000000606610075325104020331 0ustar allanusers00000000000000BM6 6(  3333333333333333333333333333333333ffff3333333333ffffffff33333333ffffffff33333333ffffffff333333fffff333333fffff333333ffff333333fff333333fffff33333333ffff3333333333333333komi-1.04/komidata/sprites_gunner.bmp0000644000175000001440000000606610075325104020210 0ustar allanusers00000000000000BM6 6(  ݻݻݻݻݻkomi-1.04/komidata/sprites_roamer.bmp0000644000175000001440000000606610075325104020177 0ustar allanusers00000000000000BM6 6(    tһutһutһ̙̙utһ̙̙utһ̙̙̙̙utһ̙̙̙̙utһ̙̙̙̙̙utһ̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙̙̙utһ̙̙̙̙̙̙̙̙̙̙̙̙utһtһ̙̙̙̙̙̙̙̙uu̙̙̙̙̙̙̙̙komi-1.04/komidata/sprites_diamond.bmp0000644000175000001440000000606610075325104020325 0ustar allanusers00000000000000BM6 6(  ffffffffffffkomi-1.04/komidata/sprites_scrollerleft.bmp0000644000175000001440000000606610075325104021412 0ustar allanusers00000000000000BM6 6(  ffffݻݻݻݻݪݪffffkomi-1.04/komidata/sprites_life.bmp0000644000175000001440000000606610075325104017631 0ustar allanusers00000000000000BM6 6(  fwfwwfwwwfffffffffffffffffffffffwwwfwwfwfkomi-1.04/komidata/sprites_diver.bmp0000644000175000001440000000606610075325104020023 0ustar allanusers00000000000000BM6 6(  ffffffffffffffffffkomi-1.04/komidata/sprites_komi.bmp0000644000175000001440000000606610075325104017651 0ustar allanusers00000000000000BM6 6(  f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3komi-1.04/komidata/sprites_shootpower.bmp0000644000175000001440000000606610075325104021123 0ustar allanusers00000000000000BM6 6(  fwfwwfwwwffffffffffffffffffffffffwwwfwwfwfkomi-1.04/komidata/sprites_tip.bmp0000644000175000001440000000606610075325104017506 0ustar allanusers00000000000000BM6 6(  jOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOjOkomi-1.04/komidata/sprites_skull.bmp0000644000175000001440000000606610075325104020044 0ustar allanusers00000000000000BM6 6(  ffffffffkomi-1.04/komidata/sprites_lasergun.bmp0000644000175000001440000000606610075325104020532 0ustar allanusers00000000000000BM6 6(  ~~~~~~~~~~圜~~~~~~~~~~~~圜휜PP~~~~~~~~~~~~~~圜휜PPPPPP~~~~~~~~~~~~圜휜휜PPPPPPPPPP~~~~~~~~~~~~圜휜휜PPPPPPPPPPPPPPPP~~~~圜휜휜휜PPPPPPPPPP~~~~~~PP~~~~圜휜휜휜휜휜휜휜PPPPPPPPPPPPPPPP~~~~~~~~圜휜휜휜휜휜휜휜휜휜휜휜휜~~~~~~~~PPPPPPPPPPPPPPPP휜휜휜휜휜휜휜~~~~PP~~~~~~PPPPPPPPPP휜휜휜~~~~PPPPPPPPPPPPPPPP휜휜~~~~~~~~~~~~PPPPPPPPPP휜휜~~~~~~~~~~~~PPPPPP휜~~~~~~~~~~~~~~PP휜~~~~~~~~~~~~~~~~~~~~~~komi-1.04/komidata/sprites_electrickomi.bmp0000644000175000001440000000606610075325104021364 0ustar allanusers00000000000000BM6 6(  ֒ ֒ ֒ ֒ ֒ ֒ ֒ IIIIIIIIII֒ ֒ IIIIIIIIIIIIII֒ ֒ IIIIIIIIIIIIIIII֒ IIIIIIIIIIIIIIIIII֒ IIIIIII֒ II֒ IIIIIII֒ ֒ IIIII֒ IIIIII֒ IIIII֒ ֒ II֒ IIIII֒ ֒ IIIII֒ II֒ ֒ III֒ I֒ IIII֒ I֒ III֒ ֒ II֒ III֒ II֒ III֒ II֒ ֒ III֒ IIIIII֒ III֒ I֒ IIIIIIIIII֒ IIIIIIIIIIIIIIIIIIIIIIIIIII֒ IIIIIIIIIIIIII֒ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII֒ IIIIIIII֒ ֒ ֒ ֒ ֒ ֒ ֒ komi-1.04/komidata/sprites_shooterkomi.bmp0000644000175000001440000000606610075325104021255 0ustar allanusers00000000000000BM6 6(  ffffffffffffffffffffffffffffffffffffffffffffffffffffffkomi-1.04/komidata/sounds_oneup.wav0000644000175000001440000017102610075325104017700 0ustar allanusers00000000000000RIFFWAVEfmt DXdata                $!&      #  #" "#!           #& -- #" $$    59( ?,-=sS=IV2)5# '+%1,W!:.< /%+1)L6y:4 M3Z65VdAcK7%3wE#O)W7Q B)>()#@6r} &QR 4hj0$wqTNl]Ckp:1]eW<e\A6tH4[&Pd\Q`_%8G +0G)?L:= 2T(1D$;D$ ,~{sxoye.$# +!);- 6dO/uI'$:cJ $?B2K4+CSXPD!wc}kQGs6%NiF> PVGS)xjoe2:(EQ-CFsV@7ATB _B%Mq(nO H[U*J[AWf7,)9,!4ez$S <lo   c3[(? % 8>R'  , $'#YddQqsYB]a1\D ;$9%*B! AF ;C 'AT @XSKU25vzWC|nA~G~\v+>+ (&4r`:)8  }5^ =c( e!@egyI|_YW!% )*9Xh_[ nQ> 'ox`^hIB .W.F  k&qs{3%cT7y F1fD*K" 4 f %AFB7d5JAOg,!8Lt{69W/A+ >[mQ EE%  6~N O47VO".$*8 !& 8(*  =6) GZ?gZd<s,^|feE.,R*qQ>~?!@t) NN zVeC&6;7u<oTU8p ivxnt~j"11e |5.Y+)K[}6mz3`)hXTqv8 x "*^_fWa"k|?K,Sgo]`ki|/ZF1?NHI[-)<Vs|UYio8JB> )Od}@/W8%8E?!TM@cr:} DI ~u@(M p29jwM0M_qR>?9t$N(;G"?^{.wV-5 (E`_v/uu4=_as+`mNzhdIvSFnp7Tr?u5"%.t]|F5D7+$ L#!R2 BTC-y)Eh+O90%U(#,>: & -Y%BxMP*`Z 1af,W> Vc  )$>cn$Y763(6!8G'<,_>cE*[}%MMAC5Um twg4]9tSQ7#N>N5;gl2fU9#(9#V:. 8R3 f_;84O=1(KQ}8e:neF|&fJuk w } 3 B T  n  Z U 6  H w < 0 : ] ] D 4   H 0`mi? 1DNu!8lb|d_Y'jj=Tb&8Ru8_?64O~_{Su|hN8&A'QrC R=N/ggYw- )U AyN{'';xhB\L~_     Md+e@;)>qVoe,7o7o`s!:|vhvBTuy#s-d]>xG9bO>FL ![-o2T|z dJYqNBp\(EsQKY [YT E:B3 e e " g p @ s I C /  ] h   / D  O  , ;  j V@? -dnWS'Q&b'UVI^z,2ql]oILT*FkY4uq~y}%f z -y X kwf -L"3X@$aW[6dS;q1pRSJm $B x  + 2 w ( y [ _ 7 < c x P R L  _5|gP ciYsFNWb8ZfES|~lQ8 Qm-skU5w1JNIdb{W'$&*U6"12te#_0]A.8S8EQi*OdLK 5 { T D # $_6mo; " k h V f J K >'K'q P]}8.Z:~CiPL@ 4[kZO# w 8#_~2m =?AcWbw\ j<%~JL2k3IG|%2wtWR@ a R|y+:I2zf/& i q!}9{@=?d:L*~x : v h2ab6{bU]K|N/_#+&:cn7<)a98XR=C0{x@6^v5R EDoC%#oA60lV@^xT{K4a 9 iYHMLPm8Gcltgh!(^4  y/Nw J . j n 3<jRsIb&=Gpb\Tv_h 0LE;GwQm<#cZOQmL_ #p}x~_#'y2{b(wirQL<-S@`"hJvC0 Q x$ 1 !$%i&j&&'C)G+h+*|*+G-n,8+X++D,+)c*#*(''&$##R" \[g*' 6 y ?1i%j0=LKQ1qF <32:3$%D&7L +M)>H.t> OHݛۆڧ8_HR԰҄ӓո" J/_{%' {!R""&+}--/)2456.89;;<{==;;<:8q7)76U4>241/,*)'p$!( co`  $Qp Kt.{ SRR|IbUf/ w s I X9&IaIY w o [ZD&:Ig!Fgڿ@՟#yvSܿ߾oN+?oĦj3^jߕold*+x _Rw#',/03$7=;=C?@B6FG3HHIK+LLfKJKLKI^HGEDLD|A>=<963v1$/{-)%3#k ys 2G-Oݩ!ݺ@ڙۺqہY8Kvri.hN`  r F3EmwG (wm  OR}'s'r0!Фͣˊ§Ǻ1 qz#f=?#FLXK]GZGLR R9MJM@QP`LkIJ=LcIECB@s>:7g5[30-^*E&#"r{#z  z$6o3NZK}1epPWR6t x C M!!~!"v%z'=&6#2#&'$/! ! h|5 _ .#;V"߳۬oЅI= (sSػݺx8^^߹CcLZ]zɺYst@X@cn2]D rn "P&(J),021145e65565)520.21.*&Y'&$N!vC _}T3=`iEfjQn$ cb2A "$9%&(+, ,l-/Q01 21L11u20|//X..v,)y'%%"yQJ   ;1%5q$ՋcĽIM5XÔ}ńTE̤UФӐ ָ׽ܹ~Q} RXQ}lj o t3sY<"OJ#I (/:IKpW1Yu y>aLX r)%v $' &<'),,s+,-....G.-;.. /-+,/5/,((,.*p&T')*'$#\%&X"y%D t0QmV BkޖSrټן`8m uU [ܯP,V]s(%Qb{ }޻݊Jv8pݏݢO=F}eXp J G @ 5 |s ( /  I .CD*Ly% { (QY:!"3#7%='+W,)'),h.*s'I')(#kD ; e fWO"}H#ܺJdؽ-L]hJӣgkդUهAڣTޓRGBbJIn '\"#%s($+.25)669^>@={;>0CB\A?;;=V@@c=_;;==: :8p8O8$556542M1P0[.,*(.#I[z PqNN+TݪZ" IO?}TQ{G-+6eQ 2# c .%(?*,l17:o6M3656a35;190($$"  3dw{cԯ9Cׇ I;T,m׎tCݒ ڐۿES;.Tߖ! -.J( J&"!H$#&1,D2555W:?><==A<;:H7;555A2,))(&".7T~c ?*NG S?(2ߥ Էӂ·ҁ֘Yz\?ރ߈5cjB5v#G c eMN!!"%>*\,,1]41./5x6_.='r%!):*$avM޲6ǃμǽ77ʿююG5Pkt& H  k@gu)yX?- .S "%'z'$@$&'%"Y "~n Y x,b1{qm>"4g7w{5Wz<} 6+?##H#"%''$u V Hn:sA\G;m̛_ݖܒ1I5""I!%Q \:nwL1;Ys}t6}` 7V2;BS\$k N SD7OXv$  %u`JGzV01 >Bc7XMlrUzD~?8tB/Md{ Uz!$.9AE>FHLtUsXQML,KLIA8D0W-,#j< WF%SbX&;\v V m0 ҘKu׽]!ҽl9gd OICEs7 "%%5%&i)*W+&]#[#%'&A" !&&Ci N#1!oH!#"q!7"## "B  p<8lj57/0jĴĢ ƛpŷ~̟˰ʉ)Tgrݨݡ\J X/~po 10(V19r>WC}KzS\aaaaaaaaa\VePJ%E9*x 7e &#n)SHbI2.?)6U۽_ҤҗUP"׌o;q?V} + # eD:*AhZ7i#\%#"$& !#!#L [:8I ھA:n˖̷`М%% '؎TA`@l)faP& Y:!(/{8/AMGJ]O)Y\YfWXXXRKHB/;0)6&!~g  3?DH###E$%C&&$h';]  [!>רՕ"CءޗM?CLaT41  m Zd=$Z*f)O),24T5R2n-. 10K/*))"))%L#0Vf[ݏ֒|փ1rغٖ/#ؼר'HԕЃλyX>.6>_~ l]*n59y?IPQU9]G[R*M?JHB9%-T#Z! uC) ZEV(/,_0q9<9;<;9699j1U+*a) $ xwW|i7GT'vukO۝ؗx k ˩[ϖ[Uϼ;8.QѪoЙ)fl}xZ5$-n14 rqdt#(-V,*p,+)$ QDK}*rF+L?O9i  @ z7JWT(gZKf a+c%,116;#?BLBoA?AB<567^3+(#R, -~9;B[g-'g`ܐבB^c'J.|6ēÀdj6ˍF[֜q$J(&-77/A,i1o41*! M#&7  q ?1 \ "7$"#'*+|#Y4sظj!=>h |(;fߣ  S.&((C1B=QABINRO*MPTQHDEC<9f6-$#-%Y XK!(kApX"bIfUPܦ+_C{=k]԰k]ʬl]|)Kw%@%)`.0/.%00-O'#+  b . Sw}]";E"Hzf{/Rܳ7n96(K2O t _{~y|/k!DC 7(.=.08;@WB>}?bEHG-CY<:;_<6/*I'$ "  O :)",.3Zm 3 >[t9]{1U;[5\Ѧ 6U  d!$(w*-=/0b-p(''*X("N5l".Dr%$ z  3 +;=lhNx"Q5OcNTD y~GXZСi{ht/y f")379=JAEGJ=IFC@=95+#p*  Ek|2wdV jPU { 2*{X8X@0ww/ Sޏ_W]ne#!RUH 3 p_\f* d )5 Ary8a `L!3P M  p  YofGqA<)>`fr6٫1bМ}ޞ] $(.,O1698695045d4 -"D* P\t) @ kC"U$)$##$:: ,O#^E'nLWmrm@rMm"y9EL,Fi-OjeޝthF;9N]A -EM;u _cd?D>uDeI~A1P[C0 '%c߈ar= 1+"&%$!&()t% vrKH?L @N #&%x&v')&t N  6.e1 5-)an=T]~٧_4{ŨǬEc?ۿIU<) I =gX!"  !k [( `|c(l(  #v$aMxcdiR T 3 SF2L4a@x|* $$r6e s LBP732 %|4MH . rL8޵ԙC+H;N>"SُjbO] &xO+ 2l m!#F$;$;%&^%W! k2IF2  ,U^"yOzH t 4  0 l b E 7 T B" C)j4 2G\YW!P#%R'(,)('&$ H E g d 8) # gWwA0EJVEmJk4uFO'݈*G3i{DO*ʴ1cQuS9iYHm |8>Qb\I  wN f-PVEG. k A 7 A#&0(&&y&&.'8&%$"!|2  GLn' u:cfTz=Q+@܊  s@Ktߩ܆ؿҰjxŬL&Ѳw^z[{X2: !Y :Nf[ 2 m` )#'g)*.1464P3343&0-+*&$"^ gv\h'Qv߳Dj3}f"|#L%#'\'>()*'R$#$"D#"^J`2W% !#W! kV.+tS(h%{=ک֭ј 'Ĵ}-̲RkD\a@ uli SkkUW d HB9_dB~t =ne!!$$H##h$ # N:c8>  O  F $ y)wX& % : 4+7;n@ x   !5f'4` 2 V y=cVu?MaF k3J6tD*ӿ`߶)Ga|[q4~qI 64>S SW^/]^ h!"&)q++?*B,+)&%&# R/Mb2 l!"O$"] !" ~KD 200kCyf7 hi%}   %N+ C -Kaf*2viUx& u!̣tť%T,ĔOBϽҫV*cf`'y}jܔT%2yQ @AYE",#%&*g*,'% %$!:S`mF}V0sQ SW=PV&D@`HlK=uy  V_Vt O";")"-"!'!>"8!LJcj$e  x . u v ` rS? q WuA-Hj_ ׏$ɶjƩdÕņȈq π2ڳ݃H[T[>=ޅڡFl߆(${x #(_ % >W ~ } q oO -dfvw  ;i;\h !"##$$$$+%9$ !Mh,rXK-hb  d  X e " : ^ ]m 1l>lR%<.c %sB1Srlޫgܪټ֟m{=`[g'Mk^ݭf޼޶ޗVWx.@W`Yxb0dm[h' !cQr~E'L+ 9M`Dx2o1 9 `]q[;5c$z{:U 2 t 0 R. x?uXm!=j A < K !U!Y[[ 5H!DI@!g qڢځ:,9oR7.i|Y!(ܔڻׯsnn߃+$.FAoO59"u%''&d%&'&%/"8G0( j v r:d"%^(+0e4F4<2p221-G)'X%"-<SCg Z2@qU^#Xt"*|!_2;. XۨeXY܊#S_;}f*?JzU$M LD"nN4ݫ/tSg Y3{15 ZB"Qu~Uu!# #\#:&'+.,,=.1b4n5>521>585\/-,,k-&,&w D"!Z, X X."'xj?}{ c^Y#)S=LV%cߔ֘ӜҁU ϕϨ zC{$;~z]:Q= :Hd,bYv)ٛڶ۞3ͻӸNSgj  $`l 1 I & C  x`<"+1,%i)488P33:;^82m042e-(',q)##=%))& "5%(C&!#3%2(x&"!= u~  M #0t% b]S5ܶܳ݁۠a۾ۛIXQъΉg7Ђ#jM6.Ү}BR:5" d 3 c J ' 3  b \IK3LiMJٴIF&/}0;P z# %$(-112]4Q5531.)((@%U 8>&_"']*n*p,P.p2F5F3293s1133p-A$J#B&"J 7O=Nr!{n5(1wbF, AOy_D5{>E ԓO٠۫*SbI>k(q>`Y 3R j ^?R 5@=PuIM bPXq }L]-h,r3<o  ;&8( #t(^%$ @(!6R *$N"0A2~.x-F388r611%.4.7.L,:& Y "Y z+T&yQ7G:Q'RmnW1'$ߓ؝AY.}èɨOX1 jJL [ &26K[zc-148!{*34ucjsM@& ;O %F ^ K =  $ iA6x" ! /",$#L#}#;$7$ X |O!W%O$"!j!#"8!iZg\Q h wpxUMv(oAd`mۦ אֿ?ҔѬ҄בٖ60cw\0+Kd"dzi9ujk, 8W r & eAOb-70G.Wq=9 -f f#|"cfsQE W ?b1_ \ Q  C )M/{00?5M<=~?v>Z>q>O<: 783//\+)&!O 1'<'l8 (x ])%2O y>3BXoʄƢ緔IR(£ix!:f!a( Xd j6V @mjQ3BXYM6aer V u)| 9 T'xg)_q j36 5 :fN@_!&})+}/35'4g5 :9984m0r-+)'%"(":$x$5# !T"}UDz@  9&4 "@ F _~wʇLZ$THӱ&٧a>yɱX  w    B T } ; $,N;5@b"*.Fop i=9nqO 1  1  mHx  N prR8( %+-B2&7:;@LDD@ARIGLD>g<>==7-(o+&)_ }\  _<G9OA}W$Y|(ߋ߂݆Cz%#Ɂ@úcɴRlB>EŒܭF@ D  Rs f +_eD|c+z A) U \! F 1 ~Q] s BG 1&/m00377=C@?8:oH KB >AFC=6/.-&vF xT-/"6X.ЀѪWX9-@y̨<>҄{Сم)VԘiG53*ד԰z2ς$uFȮW֥)^ߦ#̰& 9uG 8!(-04H8644'64.i%%n*/G)!4nj= c2 &:]@ p9 OH-"$"z"d&v Hp;!GSk 6 !< :  V%++,o/38F=K:w6q9e=;971-.e.P&a$&) '< c: "!d 5IOj&UfJ!PUʛ1-ϲ +:ҵλߵͫnY乕ȷk׎ R#+389>?GaHDBHKGCA@>:F7B764.-/Z0,F% ! s\B o |u&QI'ٛ߀P85 .'k(F&)/-?,;, '#&*%,4 k-2 4 ny/fw^1 #B 3"y(038q<= BDHFBB^C@;N5 1.+C#OH 0C0gU2մӡ;#c(ɢb('eΞ>җuվSՠӎ֩؅ٴiֽ%آdȭĢ &&#O瞔W֩,bÚͣټ5E AI#.48>EJKORPNQYV LH#H9IE@b8b0.,( { Er 4^jXx j cS@a ##$''n)+-Q// /,5.,i)&B#! mm @CGrr.yI ~"%%).0,S1x84143{-+/8,&0%%i#"r!b"$!;Q} E c9Zy$܉ْ%2ʹƛ'јX̄9!*`mk{Gԟ4+,ʵ䤞"`&n?RW Z pi %&Y&&/)44X46I 9 30- `Qq%+%r"&s..&x$;$$!+y>E_K uQu % ` " vP ~ TI = R  p Mr;]Y#P1 m`@)` C '?"t#o%+0,@+384+[.31,*1(X$R"# #3 \b  4~\#1ѹV.‘\e [̠У} u2&N\гɧýfH?T׮ظˇ] eF[<u2z3~C!!&W(Q())>+d'()(%& |n` g~27+2 ]2 ^k R f n >(I@Vi_C c^%*&Y*477:<2:<DDB::=;:6C/G&]!#! ^ x~^JD'ѤxNqY2@?1;6k775i.A&"S!c XEsop] < g!@_>%$M"""^"$G'2($ !;'( '(RrG!q l6s?ڴyӛʞ:ĎZK+͞![S[؅ڀޫS|pڱ}L}=4q_DøжmF2gAڧ&_v "!$)'%&>+^+''`('G&&&%$&'&X%"t3  $tu>*cA  9  }l. H -  UO! !":*/0;/[025@51/l-*(&#Y"1 48ZA+6 J Hk!!H&L, .//Z/0-c) ({$a`y]0>FbVgpE(VlޅڽԶBb`nۦKܩj\ˆʶkc󸐷p[, ٱ YK%*_.72V7:99;:78E:o5-,-+5%&!L_M#h%o_/ek  (&x*,,.*/P15$6/3364@1+%]"u B~R +?S;+v@%|(\; rMZ%(')B398!79?iAc=t999B6U41).p*g,,& h  /$=׼$7ϺхϊϥSҾpܪL >&:Zm4܎zJe1K~w67)J ] e2""$ (*q+~,?.#/,I*e)*%K.  0jEJ1B | G .~m d 8Sk{sy CBI~d!&)v+{--.-++~'!"0^ ~+C ;!($ 9#s(%'aF))IO{["M / .a)pU,a^#ӓφЬ|Őپ] vHڅx; S9?pVGJ/u  / s?V}t=r {=!Kgc ~,jF4[ g i #[t&1y 1K J#n#%')}+2+v)()**'$=! ^!h| S rumݯAԣňȵзмoǶBkˑG)la #f ]k<} ]u=H>rՒȽ<#TYSڙ)iV$y7~ _Hj~ x("$T ] I zKoy+ oH% M RHI;Pm] H A ;>8  E o:AJ.G9 b >cX"+Cl" bS9z@y"j ep (nxM68=s2|Er͚)ɅVHBֳV0 39"%'$$%`"g P. HjOOj~jjE;dWhaCW  =#!x%+.++0x42.11-2/,)w'&#`  5$;cXS 0 y 9)(>  ?!\ zT'0=uyw [ UbVs~ޤtӚ%=a;2ԣӴݏURY f HmH ]S)4QѾϴƩZɓsm ?/mp_ W kf a {J- Mw= VY.z [7*/ \)xPP dQuL"#n$g&((!*4+M(#"1$j!+ 4 ipD bC J g|}8 (}  F)PM.% |^]^ySv/` XB tu$'RܽekLͣwȚ#Ņ ȫXΘ]֋|H,& " (+M,*`+V-+V)L)\) &C K z~t:B21sRM{gmeNe' )k"!$%%'())*)W&$!;piE ,x-qMf;/v} T &}'&(*0-e-w*&n&q'#n:(%i \dLwesޖ~ ,-o),M#u2HWx)C{EatS"ҒВ`og,j 3xl/8 . = {T ~ 1q X7h7  # c'=11gf" ~(] {Lj^}sG[J_ ~ m $ o j 8%eޣE%Νq+eރg X +1 % -{,mnsdُآׅyڥݪ޲e>\J /Wn}3!v 8YR Xf~W&NM1E  + A j o f i[x%p`c  .H3( C VLem  L n = ~ [ Q&)-9wLYd_(^EqoRN*hhܽ۝AܘkZ osgFy ww L$wbmc  v mjs9 f8z_ n MI709w)d Azc9  #"!z! N|k: @.w/]=,5fbulD;l i =G9~R$ > QFQPu>]p|RX Z]7ߍvٝڽd8ޖ|fxem$ uf C k v  H V 0 8 "h!  ]Pr , V & &`V6 ; ${is*u 8 cf6u'(x-,/f It s@F^ ' 8 L w -w9bW~ (G%icr`ecW-W'<{c?-{O Fܱڬ;EKݴQW@CZs< AByQq`AkV 2 . sJxjc2"J+jR3X[ !u"y;` ^4hV`DVy)c8 clqKaz $JjW jIit%<xOXy>Gc Kj|(;z(bT (8h/>C'a"P^]>6da  IeWg B o X kcpZ[40G6~;j-e  W )IOdH +xF1-m}   t , E^nR6hJ;&up-\|O0@> z2|/z!ߊߩs4YeZ{K{} s '3` C . XN;. ri]V&r _ b e o   + r tn c 3 Q C8&y;(q t Dx:6M$UE R 84'~3VE>% 9t! ^ w 0 F l h U /_n" Kd!/~zC=]qC-6jVfh}D  ` : 5   FIHu.BzlX |b]^d R9e 3~\7{  1a&~ \[ Z) l D MH0\>K b}9=i/?Rr:!p]tPM#^)"s0 +:_ .`. s Bv H  n  5xlCZEmuBN)uMQ; Z]m\ G 94J$RkTC5 t # aO ` 3 <~}uZS#t.#kLvOlwga L/PlxJ%F@'FN9tU"W$`x8A7n0M  K 6OJtY$ NN  E   $ G ? #vE/R|r]qK:N  T%h%KMW9?cK36 PZw!Piypxi,Z_"`RN 3J 9 >qj  ri{YOCy!F0SF_YK6i 3Mu K   /E&DF~f6sQw5pU &T1    H2Y['u+ $ 2 _ r 6rR ~Hud alY`hfq] >:b#2s()FcmWq%Y%gxS|GD H<"zd![BQ{^O OpEpW v$$ " d K  <^)mMnX 4 / mr bRNN0(8;B/:98,g! ~=3>!a)7Sx|KSzW-Z^z0Y(j{`*g= s A  Z"b >.c\~)DGgET<];d>O /X& O >94 r9[@J}*\a 2 7  %O5  y cV,L}%c9Imb7ihQm:I"i(QMeg/Zn wpQU)))N:r\m&B.@hv{<Eck59?vovdPa#Vv780FXxyN("R7$*0*~##VmJtG 6X =u,%NiemGs WP6}*x'@-|REC~R8%T9" i  is31$yqw|e-% u5 ~ + a & & = Q  ^Qbl?e <Uwy  g U ^STI/VI ofm> |f$!R/<*Lwh_4 (^Y'X.0x:jEq!ub  K:q8x#%}m_B3|Yb}.X5_1@>^L-D6~} kGi!J 2XSk>$5F/r#q 6  ; . 4 z Z 2 r D ,Hx>/[{ @PTP)(/ -   5 D {  JJWc]+&~/a=SE(|& i(?H?  2 W Y  11Vr C_Z`X%P)S|`ukx]/D_#fN3N01z=GAgf0$K)<WSt?[Jz891C{cN9 M!^@? lzFM xi +H>m!eI& ?H}3[{?#YX$ Csoc03y ? -T8CmJKcp)sk>_x1_e A  gmMLYUkKk}|iq6?:P.CqgoQSFY{Bqwe26}BmP 6r!p`BjA#/ v  kr2z=7fmDFoTc],ICpNd1+$`W~x\EX|*Lqaau?7E}m ;It,q `4GOZ9KwX=W4 hW^DHVs'IiX64% A*%jA':)CjM>M8E3+M h"lF'zNi!%7bx[>s :UbIl {-?O.Z=uS+;LIG{?1O+tw q! 6D2- { }SVb2&pma/TVLKbp)o*rcAf`+cQ_&{[)~ ZY&,_- (z4,Y\ 8nO&fWB0/Y$F} /k/8I!L65e@^D"dma5 !)E:/!|+#~b|ZY+mp<`"~eq<& Q;.p'u6[Fy+YEM^;]v"FE-hl/N3*&zKd1Rj4t[y7<m5F{?(mNc!FhaH=#,xdo$'vrdA[y?(|C!hZeAN=[ {|lo  trCG lqDbbokI7!d'Hfz/sZAoE Lc@!s4pX*V"0yhFB 6~( XE=eFd*cM\F=cB/MNq./;;<LXqm;9j=\3;I?df\K3)BEebw Yy^6 /7(D6]+W.jwZdZ6h3$c7 ^iWG ]?iyM:;;EC|ZYx8Lc2Oc ]i|p:jwuF%rb*}FG'J=dPB-/ho{2LH6u\{vNPT_StL4c4G3(\G)X34 Qulq Vx`j EjZa41D2Z*p\tUD;VK=:yDGdF }pt34vrd&D8zr|DZ  ;71OM3eV  a*&0.O&zMR:^m\tk]S''FZ?K _Y^hpm79\W >2um1x!"2't@1H3s.-_I05m19BB,HqB3cld ncLCrw1! "ZYl7ot~^.9PT Ow$n e"4%a=cH5@fp<Pi%F7gdlB#LcItKc}}@cK^{ALS )8-7$+Dn!;Q[y6(mAbFzK?-Aq6I8 MZmz!~e!WAt pC6aCu:;= "o %Ty.m mGDCp@==PYU=YkK\/4&5}=4*_MM/Y0pgqY;23_#"yr*Eb|-f&]~}>j`7l+4&F\/-9 u jK^_I`r}Y<.(Mt?{o; %eW~*TXB GIC~(qaY2c{mYU:iH%>@EkUg KBSO^{ahv"FkV>sKr;C_O%&8[l<&ahZ,0^$rrHtd~/9g8%p\[*8 ZE mJ v]{u'DO+Nx;Vo|xe:Ho$1m8f .I8#uNp1T9pp \u #E7S9zQ^!Q/BiUpt\qZ- kmO99jXVfSB5)4GVx^&EnJ;ZIo1nf<R { hzYT%P`ltz $.8`L?/BCLx3t}~dGX-d6$I{'(MOvp40[.$/ srv " *U\qR+R~CBB<. V )C`LP_ Lv59 WxJxB= "68;vs@-]uM6"]LX#G?M&O-R a ^~]!{QVjdDiMKN3pmK~]mV wotkv)R|F8&e6m(W~\w:g]/#LI3%/  #vk2:+k}SO+!K 7WF`:OFi>C@{>dMz,Zgx`?Y\tD= s# HiNmlyR$A]KSz7DlbF?|3&6H1UH"Z|W%\dmxa`Meo`]M Azn?j?N _S3EqP&]7Wlq=%?I7ee5!&@IZ '(zpf+ h*f>j4_ :cSSevNWQs@k~D2_ww+HLO IgBYpeP>H_}Upt, Z~lL%!jnyg;34~k> )h#v_ ?3w8.0cN0xh43?.GR!@(M\j< 0P=pf;m!p>+ AJ"[he{ZXVO\QM|4] wn@![{dNHlyQ&('(|2Y_r~RO^RSzq"Jk"v_8nvI$nN*YlORS1Y&\+Ma35PAsc=CimmKw}l[FBI|f## + 8ux[?|ycs|t<  c{wjw+&_WMdp%KG$ %)@JnzaD|odl^zmBx6kC9?mD\lb}Nw3mmV+`nL< ;Tl~>L+*8;1^ 4|~YvZ.dYhKEku28+)myobt]PO=-A&N2TP<;$LI  l,$r<_WkZ Xp,^LU|G{=3 2D[{nD6RtN|( uI!BvrML`c#+7YwCia_sYuu}y,-@+0k_0kFulHN*!PfG3Bt`U`skZwZYGMfi[## !()Q> #:y 5in3|jl|}uLK+1vigzeS3w7^SC2a _p-sy,NL$-6"<^u!;*#/=9-  ~B60!%R MXmg`Evc)?s 6~2 ( (!Ah*#-"(UGamjM5ip])1*  )dohXXZm)v "VYEH9h 4jnBqo_$bd~~ShSRpxyahpwu1c}pP;+|m9 8EX}a\5o 5Joxkki]wuo^s_pcMJ=05){kk YtjDreGAW~mcH/&]yf[4-rfyoW74<78AC(6+dRQH,Hq\G J) %8&!z8;YL>:Rb~ADc+xH?$]'c4MOywRPhjP\hSLHcVBW :%4,  Zkn(9@02-4!$B\l-qs5 =; )hvMLguenJ3RHp]iF47am+p Bavi[YwhfIIZOI/>MhATmf/$'9^quvycm>A2L?EJ* S\m^DQs_2lY(* %MSu+5D`fWwS?%W*Qlo[^gOctju l}}8]q~]xH_O?;3XTI~ ,Ycm#X}X#/_S5jdVMh|tv`SefN,ZmWUe}o`O5lmu(D/?WOgO !.!!'9;c-" H5aR3H4!"EVHd}iU@`pdfvgL^O$1% ):KFOi}yZO4+- p_V44)%5/RV^iv ]E6-|dS Gv|{dITJWKMIG?(*BWftyqnCI,%!gA@MPSVfpLI`eyj[P&&nO:.>X`~ Gy  +#|R6:,<EqD" /?J^}xsftcN]RI_qmqdgEAE8A!*"0*5/8C^cl{rshukw}hcmpxyd_oXVF<-7VM: ~qfn_v| $0Cg^{nM@6NE/!yhm9/)$-:Li  (<JRugjYT<M*91" -p]Y^haR]x4N:Ub}slZ;3 fLJ5 "00BHbw}6T`jjSJP=1(?Rf7",$#2%7@8+0@:;O]edIB0=2! $-34:LU[e`k}{yoonuxplg`a__`hhejVL73! }~ 6BGWYZmz|of[aQ1*n`?632)0KUvxwyxt !$""+-224?*"  vip #/;QixgTdVLBFBA1()+!zeZJ:B7C?QYZlv3QnnRU\K(*.5F.#3,4HDISbt}}vnocdcd|~yflQS9959.-2)#&8PJOMXplqxww~xh\ga`WTVZPN[TDFY\JHFC+"$!%.)!#/4J?@<++ yxrfObR]qz    (6@HMOODE(/  ./<>Xcvia_L>61  we[Ud^fhfto-Jj}eSTH3$#/C+  &+6ILDD9A9062+9BBD9>)&(!' #+<@FRUWQTa`T]PQNJCE?CBFM>?BEJL=8B86+%"3/%!%?:HA0%!.) wws~{%.1H?@54%. .$5<MN^jpXDLBkomi-1.04/komidata/titles_title.bmp0000644000175000001440000020706610075325104017651 0ustar allanusers00000000000000BM66( P 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333komi-1.04/komidata/sounds_destructorkill.wav0000644000175000001440000010054610075325104021623 0ustar allanusers00000000000000RIFF^WAVEfmt DXdata:"&-& Hm]}Gv[T=HE0Z( LDn5-E?w"6>JDSODq5O$DLRPE5@#G M؊t+ݔ~ؚ=ײx%*1a7788>3H%Wپod*Az>ZF} d  SџI\4 nk#047'5z2,;X yH4 Ts߅QK4&*/L31h+! S]ɄM=w($:[`]H$9JPJ8^D1 |&#,CPSKF={*\ڻ,̊#ܚm $ u ! &V E=b:+4 ( 22+#-l6-ݳ`HPL\p,>IM!E+ Uе'SƷd%(W3e9=A:CEGEl>1vSqɴ@Ĵ5ɵY-AQakor,b*Fz)8T֣m>H%9HzN3MD-6&y;C rX xK 5$'i}+ؠʯ8ծ T:ThuugN/vݡ4+TIm:2.GuZ2bV]O;$ ߛZUT LB|tr8!q$ Lgz)mNlG~:65  A n# g .RWp\ 7%/8=@Am<2$  ;.w1$<6jTfojP,Id0r-$4?(DnA6Z(jIAt:tbZq#14A'z mΜz' :JSM@-.#A˷ =ժd :M XWsNB8.BgFn]"pG R {F"p+45 ,hg$=`ƾʌ7l&8CEtD?9%:lK)8Ѕ+ }$& i*h&/aH}յL6`;{y# #$#  qI`+ (`+&HKQIܯΆQW;R_saWG5!7ҴŸvÁiOǕCىx'o,.,$9 :%=Ahl ]9"2>CCA@9I(3z&㙧T#Հ !@.1(0!,8&""%(=*v)&!/h/>P Bv .Pq 0HT\c'f*`P9+k^oIا"O H&*-$5 ;:w9 80"`H~ۘϮ*ĒO,ݠh)[9?:-oE9.[ m `X,֠߷&A5@xC3?5&VX5ʆpu0? 46k5h7 tr&4'>_A=h1~Ӱhɢ͘aݨC(3C#i 1iI>>5Q 'V2760( ZRNOTVX A  2/"('!q6 ė.ڹ9 j>4Yl uiqdO2{8ƪjνO, wA#9&('N$Q!4 ""XVaн[Y 2} Y"C%$ # !t Z+3WzƘı+x Yn Ye\n6*v r/ 9Ia463z T / cmDTO|W"@?(& `> ! y pܾ~$'G!_8A?7) ;|a#}x)(@]Ei#=&!w d"G4q![G ("4 8qQ Km2k XJ KTW 5gi_=qa  / X ΐ$@#)("&7Ay MU> ~G(`fV - #^)y.a1/' P2RǟļZIe8~ '[2672^+"d o6Yts[$_{VJS'/20a* !0C5P i#)Y/t111t.q#(ךtj^Ӑ"0O:; 4~',% D9X C%Ctp  4\ 5]\oh Y" nK4Qޢے*ޢ"#| >R}J;nG- v"'T(M%+1 ic Ϣ  8*` :l_>YojU'+2p5:20* (S8_O܈{Y n B#&&n"l| Cn-fMn  y8 N hrl,qӑ֫ݮa8WX"w!65BްR)]13x1,/(M"_ \T\ %. ]" . )04485*-oξL6!#z aHx N:JwܡsФF i#'-20C,$< c&;(Zu[ * EmP%;ͅ))8YCIjL4KB3 9 ' (؊A  P d|Ľ<ӂp%,()/h0+o ĝvg)n |)$7ECE`@9/x םd6͵ x %x*0'52+[$x@ `3iJAՙO#.t37:!95c41&%D? )˄K}u <Mc!D'%$SVҭbeԻ' 3 *+ (a$C M/ޡfr06i%t.3<7L>=60#Ԙ Ěr/AQVQI;'!//fFmZs  $  +)tr b }v #=PҖðeƻ^c ] Q68HS_ZZ@Q{=R&5 B#໳ު:1&06R8^8-5-F%Bb Yy,"   u V dA iTxDz M  i%|+20LNYQ  :X=<*A " /| Tʜ̰Jf &-^6>BDAB2x2MNΫ'> b#D1;?q?3>7']d[לW\WqMs $"&0٢ؔd`"D '&"=#@'kYuR@)2:}>92&.z) !ZO׶{6j z w6G4 $1g'C^~3iJs  ;[1k^\  X !&,0131$8ɾʹv>%,$9gC7 Ԋë0O=x \y"F'*&+=() z=#e :I = gA ;F.S#_4 UP $ *e>1) 2-!%/)%!9t҃_{Wv bD O{] ? Q]zψEx{b ')/{.#WS2ЮXPZ % Pv7 !]&\o2fC  ;Ve''y44&x@9ӡҵ' E#,10*  QBFpqsq{aTd!#"5!`3KʽǶO1GQ  Q|vD =hUUKϽoh˼w$-4%896z, "ރܹߞ$Cy  Kp h@_b؎ӹ=V\#2*)!fi$&> j3 m3sO !fmP1D ]'3IM, V/""Rޢ1ZBh g\Yf${Bf+{e#@7A bhR("GNAI DbZ z= 3/vOзˈԋ& /;3E0I4E7# r9чT!Aϩ\xO$*Z,Q)&&()S,,# ev-ίR9=[^ @ $&R''&K#ld }ZܾT߉yu,a    Bm &zm'd> A"g2U(=_'i Is޳AFHrY: hvsm@GS% %Wc Sۤۿ|E 1}<t ,  d,9i*"|>cj Z -/L"e5q:|kX*eP6F tmp(v?YA i  D1ki>\h_BE  x i  X n CVO\8,hj uKk!dGs!W `| zLrJ c ` = ] , (Xi G mb)nyD }GjLH )0V] <xhb nxMX N-T, %{q@R#Hmܳ _ ,pQ""m h/ ]u wig&H7  d G X=gvp WD z^ݾށt0G|  &'%!<  [rvsU7@v,fq%hO4 )O c\ 22 B@ @V# 0zu BL=p=ߙk  B 4 >i_KU4 5A  LaT[m,+'t ]Wt/oz y@ " 1IXa(m(~ 6 sC~WJg]J<i x ޮݞpOCcd |S [  G fIKWD1& Gt~Cc&A,0/, (i#i]T%MD )= ,U* K :  3 zZ)tD2һޯ} R "" 9G Kw & ״iB ` } ?LAs q;"v%#a rp8k2t.8K@ z  F d  &CS@^G`o._2  ^%(EE'_!{[>_t &) $('z# xGߩTo8"Xj&@MrqXs Gg  ":#~ZةɩjĢڣC&; y  BTH@ = h ^"SfԋД~,֔Tl*276/&# 0wf& 0s I ,+1V>L0"1l#Vߺuq 7b#(*% CC g 2  v pFk޼=k]9w80+ F 7&(*+R'M%%$I gXh yWM`=ݛ0pP#K@M  \!g&*.S0.t+w'#n!zt->W2ɰϢD )5f# g}$ ),,^*%6^M<uP##0 Q% .kK Sh`$>*,*E$~u1 :W$:l ;i D OsDE (d}|U O 8}-:c , R@ (anv?*3@m2E k/U q \sn4}$ O|* LZTILwNy yuKCI-  S%1*v6L ^ ^ h_eu" JxhA 9Y" fi9b*cd6wMhQan s3(: K u E#nO ^VVhx{%*'Ba:Wtb ;p\^/9 E ( b#zt 5]3b-EH9#NY M  hXI oC*M   E 7 ;law~z; ;$0}3<*l h#V9Wd13we/Ng5 u  Z R 8?R A "^~o^ {4&i *XCug&  \ *L{k  oZ@( pou 8 Y *7JQ7 =';*=. s.n4U ^ . # 1*i_IBPK  Q H>G 4N]:_drFP-;Jde m Z7}KA 9 V ` `kq6,g/6 /$   jyUJ4OXAaP  i \  vZG$*Wido\\g~e=]] .  9 aA@ 8zpsSt  'Tds^2u{R!FUWAw %.~a -sW\ZzeyHfp    !Bv[: {Cz S$6 `5)q{}EL$q$Cw]Q2\%K X&L? vipbx@ Y U _dJnKd]g8:AAf5 t 3 [FL4*TB]d? R V^? '{sj QGHVc_HGhwi9 m`e<}8ۉ{I?p  ZRk|N H^ * Q ' O k.d6r_zj:`BT t%& - K-"/h _ n h? ZIx SD5"X(oq9 E D _ /:pfcqYI(޽'?LMX  X`K u, W_fV0r#Z(q &c+v kj( :itM3-# pEVz NdLGf'"d$/Cxe?QynggF^ ~D#{v  / L 5KsS: +)KG j,E' 5^Bc.x_G;M% RdbV]G_ 7; [ z*EQ<kmp7g f * s c ,Xgcj;7H|<U=.`"{ZACSC 9 \#J 2^W"zY(#=Qh E  n U ^ eE<1#_P Q:* X[H - ~ ? m!QQUKTK8?q)u 7 {j C,k? +QL'kse+yG[%+ Ny %;K6U\QmC`VYz )&,fG a0c&UWf# t,/3 ;x+&I\O[8:v2w@o39 o p;ZtgL1FMJ\[5Zdj( \)E 0RX"T ZJ; zB4PRo\dgO(:"   2 > > F *v({E?m^wst1)ASTX K1 nOMU XS? ZR6r9d>'}Pw&*%LlbN<<~: ^ ! $ MSUe&4V0g :ZRWUm%   mswGc+q_n+ [\LmK"rju{ { ) = "c&}Pq^gN!C/).fQ%d,mN  &;fL5 ,nm2%k7%D.3g3r:j-@vc/2b _ /  >f5e$w$+20$4E zAwn6  >w`E%ma8 Dv6']$l/~'z5Y`U{290a=5s  * s K:eW ]RsHiTap/ ~7d_-kDxUC<M"xE ~8" ^/Z9- &kw I ^ _,0%kP E H _03SEHHsc-AD | Q ; an`655 :VZYv 8 l K {'23@sYAo<~=NV33#/ k { =;k&IR&:hc*SuxK#d 5  W tjkJ!<0S)w+o]-UfomWq=o#e)DNvX67833,3F5h\>Q0vj`>-]q !)I.LD/,m=^ -BswD4 */3qzI#aTZ m `, $J?6TDgq* 9:c[CTm}x(AelLtww$|.c < XWoJIyVO+.g^6Ksq],qa3#GvntURZp+Wh+Q:rIU\(a;7mtlosz8E R4lM_t#M`MyYU~`sSH2]  .oG# ZRTZ )  %uMI[!()7g.(ldyu@a;cCs 7abEKP,iiE\u'^F ,)[a }rQc9U  &1'TxbaqfR/bU 3]GbWW+}Z-_)b<uH'mnZY Ny#kY#}jJ,Nf]:.ao+_ e3tV)92XC+dL=q=Q5oA] W'tw"'L1zKR! pSVx{~E-"F;S(%!tb2M9Y=B j1$LLr9}>c_p ~[HK{terJk5_'Zc62l[1a %w\@.\j~,<$V:utdxNH2 Oh v1y,L=UHi u5+Q9z|p`/{S*<l%! gO$1Y[,c8z3rmX,?|A!! N It,y>nwpC_&eVTjdtF. i-~(s`k+$e/7xed NyN{_|D]+Esw3<uY9kb{*s%V)-IK=> &q`&?^tFx'hgRE~Y0`tsGif|FWgOr9>IGtFA1~G?FE/Ig']v36A3&A\F|7UW5"NcOqQ j9vLQAKjUQq{OGoTUlOG3xDrUxR{Ap#=<~ivnm#_FV"U_?TI=fzcmrb9XPyalc3AE_g+e )xs:S$n c5Z8aF2Z/R""'|@u?mQr/K\s-YYFSfpSf$sf5"$/ulEcV$L:]2EHyF"Johe>Xg`07cHa0e DGN+FK;Q6U^=EbxSJ Y?Y[w_}BQK5%)u2b*:h<SGeFiIX6%YR*JYXRvB@N*7t6},tKB"';B| J\X #OwR.Uuuy) ~{a5h/8NH&M7b/rfPUmks"Q{[ibFa`9x1}`*TJ0WxbDpd~KG"oUUfV9SSPDp-! *qP><fI2@Z\6&YyvwJ<>Ily%%=+N/%dPXA9K H-Ju4He(GtbKdLMbO^K+JrS.W@N]u6~79w[=aOtpWf]6S'0:SRmo0V)$Z}7#frz`GVUV;'CDHk_-hd: h}|ELCOOQ":X11\]eLAeB44"/VOuh-0WU*naky~ K yj18N1e`TbVE #1++ ?-ZN/q1r:uXk}7C 'KSM'3I.DjB@1y02l:{nG2L&VGt d .Z_db:@v&P~uy8d+<=IQ?"#K*T]IyH&g@_5&sm9x$K][=gO= F&;Kv~ 2TSa_k/KO~B$&>cykC mc2PcKv%[60-16- Q1@v. .]?Ng+:WJ2'$'R[4DNp*?KE$E j=b>cj }g=F^gv NDAjP,- qdVp=^J,p>  XGFMd$\<aS78n0 3yJW5ct#Zu5f Lmk?:0q~mX63h<Kt2'RIb^>yWbU"Q5NWKF1CZApYE^ oc$u{tka{S /:l4z4)v"?,Ao:C9#p3O,4(9[vpy^fzl:D#d#]3qr.Lq;G}wDYSD t ~!.mBbAr*   lKL'(iZ y;NZ&iP|5+Y'7*s'DaVzNLs )Zt*::?X4 h $i'Ke19MK~1G~D0ECp*G%Ktz8?GDZ8++3+*Kafhdn9E~iPA3$ -.,<;;%pww$e6izxO<V'KMu\z]k B&YEHsQq^ct}|m\]{\% V$2b: gh ~\]qFC;-QxGDy)rk7+\sfpkLW- 9rF0AAVUFD+{ DqKm[EYA|4>yz(N@pdi},`..2CQpjK2!Rd ':4C_\TXAz,+G|N}5<zv{=U^'TKDD01+t"WcqJ'ba89x5k[>wldWlwpyo~xuk_G&*I[}&H_lcjZRktN"xF =\wLr{lly}rtza67LVPA#GbO [2-/2CUI1^IJpL^fR(2Ty{fHqJJg.rn3oWPQh~}qoyL9GScb6Ny\Qiwms -Eavskk_@ F q;P*o0~/B5\']AH{1q\;`k@zD ;^krNi%^~l)-rjbSn8s{jZC"^NKUmljXK>3#Tuz`A/3;Jhv[I'uC!5w(mc8Y+8NutuN?7,YzzKqZA$'H|(AOax_){rw"10~  3OghRD@ )=Wi{%Jv|mg^NOa`@!  $jRH[zuV1#(4^<.0g0p`\g *?I8  )B`vyumZC*vY@ 8nFX&9V_TD805B/ NIHNq&2.&ygl~Bs{D d]XZi~=Pf~v^E5<LTSXT>-'! ~7V_eiY=20VB@Mx /GZ{w@tow:TsDR>tDY^_P* 1Tpzt`OEHF@EI@3.39:62,x[B2.5C[9ghF' )F^s|yoeVC' |yuv#9KWfuzm_N7"-?M\fkmm`LF9 uN7-0Ej%7KXbg]D% 1AJQY^_aaZN@-y{u{  2IY_gmh^WJ6#*;DFIG?;;92+&  %/5:>?;61,)$   #'*+($ komi-1.04/komidata/sounds_eat.wav0000644000175000001440000004337610075325104017331 0ustar allanusers00000000000000RIFFFWAVEfmt DDdataF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}||zzzz||}}~~~~}}}}~~~~~~~~}}||}}~~~~}}||{{{{{||~~~~}}}}||}}~~~~~~~~~~oo]]\\TTSSSSff``LLGG^^||xxffZZNNAAJJVVqq~~vvii````eennvv}}yyooggllzzwwuukkTT88-88SSmm}}wwee``cckkoouuxxooccddeeffrr{{ee[[[[ccyy~||~~yyyyxxyy||}}ppcc``eettaa6611iimmXXPPLLMMSSZZwwzz^^LLLLIIMMVVppǺ}}``LLBBJJOOWW__xxç}}oo[[NNNNXXccggggssvvmmlooooii``oo||jj____eeggmmmmxxiiVVHHQQaacc``nnuujjddmmuuuuww~~wwii``iirr\\ZZZZkkyyrrrrttxxmmcc]]eeyyttggffrrxxuurroovv~~qqnnttww||zz}}}}{{zz{{yywwssqqpp~~zzooeeggiiqq}}}}}}ii[[ff||||ppllggllqq~~vv__ZZff~~||yynnnnss}}}}xx{{yyjjjj||uukknnyywwtt||uummnnvv||||{{||yy}{{mmooxxyyqquuzzvvwwzz}}llggmmzzkkffoo~~wwrrnnrr||~~||{{}}||zz||||ttyy{{vvww||~~}}}}vvttvvzz~~uuttrryy{{||vvss{{~{{||||~~||{{wwwwvvww}}yysstt~~}}{{{{}}||yywwxx~{{{{~~vvvvvvzz||~~rrffggvvxxqqhhllwwxxmmrrzzwwuuxxzzyytt{{}}{{ooccoo{{uuyy}}wwtt~||~~||}}yyppzz||||||||vv}}yynnoo~~uuww}}iieeqq~~}}}}~~xxww||{{{{}}~~{{uzz~~~~}}zz}}zzvvxx~~yyxxxxuuxx~~vvppyy~~ttjjllttwwnnnnrr__XX\\qqwwhhffllwwxxjj^ccww}}wwqqoommvv~~kk]]\\vvzzppmmiillww~~||~~wwxx||}}||wwvv||zzllkkrrxx{{}}}}zzxx~~||qqrrzz}rrllqq{{||ooccaamm||uuee\\]]ggssttuuzzuuiiZZQQSSYYiippyy||||kk\UUXXeettvvnncceewwssjjiihhggaa^^ffvvyyrrttzzyyff]]^^iissttwwwwvv{{~ssff^^^^ll{{~~{{||}}wwoommggffggkkqqxx{{xxvvzzxxssmmkkoooonnhhffiitt}}qqjffiioonnrrttyyxxyyzz{{xxsskkaabbeelluuttxx||}}ttnnoooorrppjjffmmvvzzllfggmmxxwwxxzzttwwyy||rrllkkkknnoowwxxzz}}nnddbbrrxxqqooyy~~zzzzwwlljjqq~~rroojjllyyssiiggeecckkttzzzz{{xxvvwwmmddbb^^oo~~ppmzzyyWWPPPP``rrvvaammrrYYSS^^kkyyvvssvvuukkeeccoo~~ttwwzzvvssrrssvvvvwwvvww||uujjmm||zzvvvvzzyyssmmvvzzxxttvv~~||ww}}xxulloouu~~}}yyvv||zzqqrrvvxxvvyy}}}}{{{{{{{{xxzz~~vvooiitt{{zz{{zz{{vvrrnnrr{{~~~~~~~~~~~~jjkkoonnhhiixxwwvvssrrnnkklluuvvxxzzvvmmmmnnmmjjpprr}}yyqqppmmnniillqq{{{{ttqqqnnoossxx||~~~~vvtttt~~wwssqqssww||}||}}||}}}}~~{{wwxxttuuzz{{{{yyy{{ppll~~xx{{||{{xxxx}}||{{wwvvzzzzxxqquu||~~|xxssuu{{}}}}||ssnnsszz}}}}~~}}}}{{{{{{zzyywwww||~~||yywwvvvvuuuuzz}}xxqqrrttvwwvv{{~~~~{{zzzzzzzzxxxx||~~}}}}~~||~~{{xxvvzz||}}yy{{zz~~~~||{{}}~||yyxxzz}}||{{yyzz||~~~~~~~~~~}}~~{{}}}}~~{{{{{{zzyy||~~}}|~~~~}}}}}}~~~~zzww||}}||||}}}}||||{{xxyyyyzz~~{{zz~~~~~~}}||~~{{~~||yyvvvvzz~~~~}}||~~~~~~}}}}~zzyyxx{{~~~~zz{{zz~~~~~~~~}}}}}}~~~~||||||}}~~{{||~~{{{{yyyyyy{{}}~~yyyyxxxxxxzzzz}}}}{{zzwwxxwwssttssvv{{{{uuuuxxvvwwuusspprrrrtt{||||xxssoohheegglltt{{~~uuhh^^YYXXZZ]]ccjjss{{}}uull``YYRRPPSSYY__hhoozzxxqqkkcc[[UUTTUUYY^^cciirr||{{nnff\\XXTTSSVVWW\\``ggrryyvvllaa]]ZZZZYYVVVVXX``jjss}yyvvrrmmffaaaabbddddggllsszzvvoojjggdd``^^_ddhhkkllppwwzzvvoojjeeeeffiiggcc__ccllww~~xxrrnnee]]UUVV[[__``aakkuuxxnniieeaa\\XXZZ^^bbeeffkkmmww~~zzrrlljjffbb__``bbccbbbbggppxx~~~~{{ttmmiiffddddbbceehhmmssww||~~{{yyyyxxwwuuqqppnnpprrvvyy{{~~||{{||}}}}}}}}||||}}~~~~~~}}||||}}||}}}}~~~~~~}~~~~~~~~~~~~{{zzzz{{||}}~~~~}}zzzz{{~~~~~}}~~~~~~}}{{zzyyyyzz||}}}}~~}}~~~~}}~~~~||zz{{||~~~~~~}}}}}}}~~~~}}||}}}}~~~~}}||||{{zzyyyyyyzz{{||}}~~}}||{{||}}~~~~~~~~}}}}}}~~||||}}zz||}}wwxxxx||}}~~||~~~~}}~~}}{{yy||}}||zz{{zzzz||~~}}{{yyzzzzxxyyxxzz||||{{yy{{}}~~~~~~~~~~~~~}}||}}||{{yyxxxxxxxxwwwwyy}}~~}}yyxxwwwwwwvvvvxxzz||||||||||||}}~~}}{{xxwwyy{{||~~~~||{{wwuussw{{||{{zzzzzz{{||}}||||yyyyxxxxyyzz||{{zzwwuuvvxxzz{{||}}||{{xxvvuuww||~~}}{{yyxxxxyyzz{{{{wwuuuuvxxxxyyzz{{zzzzwwvvvvxxzzzzyyyyxxwwwwvvvvwwxxvvwwvvxxyyxxyywwxxwwxxttrrssuuyywwvvttssttuuttssttuuxxxxxxttuutuuttttvvxxzzyy{{||~~~~}}~~~~{{xxuuvvyy{{||{{yyyyxxwwvvwwzz}}~~}}zzxxwwvvttuuwwyyyyuussssuuxxzz{{zz{{}}||zxxxxzz{{{{||||||{{zzzzzz||~~~~}}||||}}~~||yyxxyy{{zzzzzz||||{{yywwwwyy||}}||zzzz{{||}}{{{{{{{zzyyzz{{~~~~||{{{{}}}}}}~~~~~~~~~~}}}}~~~~~~}}}}~~}}}}~~~~}}||||}}~~~~~~}}}}}}}}}}}}}}}}}}}}}}~~~~~~}}|{{||}}~~~~}}}}}}~~}}||}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~}}||{{zz{{}}~~~~}}{{{{||~~~~||{{{{||~~~~~~{{llddll}}yysswwzz[[BBEEkkxxoommnnsszzttzz{{yyppff^^ffoossllmmvvwwuusssszzzzuussxxttssoovv{{nncccckkvv||}}uupmmppvv||||uussnnkkllqq||rrhheessyy``YY]]nnuu~zzyyxxxxzz~~{{wwww||}}~~}}~~||~~~~wwnnggkkqqww}xxwwqqttrrww||||ttiihhoouu~~}}llaaddnnvvssllhhjjoossttyy}}wwttrrssvvzz||yyrrlliillttyyyyuuvv}}mmWW0011KKƛllJJ11++//IImm¸rrTT88??JJ``tthhWW^^``VVOONN\\qqmmRGGOOddyy{{||zzrraa\\dd||wwuurrxxssttppssuu}}ii``ZZ]]ll~||||{{oommffoovv}}qq__\\bb~~ppdd\\aaeeiiggppkkPPCCPPdwwwwhhXXQQPPTT\\ppzzssttppttuuuuqqllddhhrr~~kk[[[[YYZZapprrUU??99GGZZggkk{{ʼnnEE&&**FFsszzAACCooƝvvDDMM߫oo44 ((TTⱱppBB&&!!::pp}}aaI22,,>>hhmmDD$$//RRttee]]\\``rrxxmmaa``ggiiggccffssuuff]]^^\\__ggss||qqppqqvv{{~~oocc]]QQNNVVll||xxzz{{xxttqqhhddggllkkiiggkkyyyyqqgg\\VVRRRRVV[[eeuu}}kkXXSSSS\\^^ffuu}}qqccWWNNNNTTeettŻzz``UU@@22**11BB\\zzǷkkOO9966;;II[[oojjRR@@88??OOiinnOO8833++))//AA]]yyzzddVVPPUU\\eepp~~}}kk]]RRRRSSUUVV^^nnvvee]]XX[[ZZ__ddllttzz~~||ooggiiiiiijj{{jjVVCC55////;;OOgg{{}}xx||zzrrffXXJ==<>7755BBVVxxxoohhddaa````]]ccppuullhhoo{{{{ffQQ@@7788BBMM\\mmxqqrrzzvvllcc^^ZZYY\\bbeemmuu||oodd]]XXVVUUUU\\ffvv~~aaSSFFHHLLXXll³ddMM@@??FFGGKKPP__vvoo__YYKKGG88;;GGee²kkVVII@@774499FFbbxx}}ccOOCC====CCII^^vv͹qq[[LL??;;9??MM]]oo{{nncc]]WWUUXXbbqqqqee__ZZZZTTSSUU\\bbddiivvzzttooiiffbbhhnnzz~~zzuuppooqqrrppiiaabbjjssvvyy||{{uullaaWWTTYYccmmss||{{ooff\\SSIIEEFFOOZZgguurrff[[QQHHEGGNNUUYY__kk~~zzllaaXXQQOONNPPRRXXccqq}}vvppmmjjggccdddggnntt{{yyrrkkffddeeggmmtt{{||wwttssnnkkgghhloossvv||}}xxuussssrrrrrrqqrrssuuyy||~~}}{{zzxxxxyywwvvttuwwyy{{}}||xxvvuuuuwwxxxxyyyyzz{{yyzz||~~~~~~~~}}||||~~{{yywwwwxxyyzz||{{zzzzzz||||}}~~~~~~~~{{xxwwyy{{||}}~~~~||{{yyzz||||{{zzzzyyyyzz}}||xxvvvvyy{{||}}}}}}||||}}}}||{{||}}~~||||{{zzz{{||||}}}}~~~~~~}}||{{||}}~~||{{{{}}~~~~}}}}~~~~||yywwvvvvwwyy{{}}~~}}}}~~~~}~~~~~~~~}}||}}~~||{{{{||}}~~~~~~~}}||{{{{||}}~~~~}}||||{{zz{{||~~}}||||}}}}||zyyyyzz||~~~~~~~~~~}}||||||||||}}}}~~}}||||}}~~~~~~~~~~}}}}}}}}~~~~}}}}||||}}~~}}}}||}}}}~~~~~~~~}}}}||||||}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}||||||}}~~~~}}||}}}}~~~~}}}}~~~~}}||||}}~~~~}}||}}~~~~}}||{{{{{{{{{{{{{{{{{{}}~~~~}}||{{{{||}}~~}}||zzyyyxxxxyy{{||}}}}}}{{zzzzyyyyxxxxxxxxxxxxyyzz||~~~~||yyvvuuuuvvxxyyzzzzyyxxvvvvvvwwxxxxxxxxxxxxxxxxxxyyxxwwvuuvvvvwwxxxxxxxxxxxxxxyyyyyyxxxxxxyyyyzzzzzzyyxxwwwwxxxxxxxxyyzz{{}}}}}}||zzyyxxxxxxxxxxyyyy||||||~~~~~~~~~~~~~~~~}}||||}}~~~~||||}}~~~~~~~~~~~~~}}}}~~}}}}||||||}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~||{{{{{{||~~~~}}}}~~~~}}||||}}~~~~~~}}|{{zz{{||}}~~~~}}||||||}}}}}}||||||||}}~~~~||{{||||||}}~~~~}}~~~~}}{{{||~~~~}}~~~~}}||||}}}}~~~~~~{{OOOOsll~~͹vvRRDDFFTT^^zz}}__LL>>@@AAPPppYYCCIIVV^^eeiimmwwbbPPLLOOWWaaggpp}}yy__NNBBII__yyȼTT55,,??VVnnww~~ppYYKKKKUUggvvppdd``^^``ffvvvvqqoouuvv{{xxffEE ++컻ZZCC===@@EE\\Դ]]??00,,55JJnnȯiiYY]]oozz||wwggWWTT__hhmmmmttyyrrwwuueeZZYYccoovvvvxx||{{yywwjjaa``ffrrpp``TTWWdd{rrff^^SSBB88AAVVrrֿ~~]]JJ>>BBYYvvuuLL++ ##BBVVĸxx]]SSRR__rr}}{{ttlleeccnnyybbYYSS\\aauuwwkkffbb__\\\\gg||ttkksszzqq||zz[[GGII\\rrqqiieess}}xxuuxxqq||||||zz||{{ttxxzzuu{{||rrppkkdd\\\\``dd``eeoozz~~rr__WWQQYYuu{{yyrriee^^ccffqqssyyww||}}}}yy}}}}vvkkiikkww~~xxggaaaaiinntt{{ii__^^bbaa__ggvv{{qqmmss{{ttbbXXTTXXkk}}xxff``aabddggvvwwww~~~~ssffaa``\\WWOOJJOO^^tt{{~~~~ttiimmvvzzyyssrrww~~ȹooLL22..??ZZxxyyjjggxxzzppllhhllssvvee^^eeqqoottww{{hhbbddqqttooeeffwwxxttpptt||zzww~~}}yy}}zzwwmmooqqxx{{xxttxx||~~{{yyyyzzxxzz~~xxqqnnppsszztthhaaaaffnn{{}}wwyy||vvssssxx{{yyuu{{{{zzttnnkkrrww{{ttxx}}wwoonnqqvv||zzuuvvxxxxww||zz|||vvppnnppppllhhggmmvv||~~zz}}yyuusspppprrttwwttttqquu~~||ssttssssttuu}}}xxrrqqxx~~~~}}~~}}||}}{{uurrppwwzz{{xxwwwwvvuuttuuxx{{}}~~zzvvssqqssxxxxzzyywwwwvvxx||~~{{wwzz|||zzwwyyzzzzvvttuuxx||vvppkkmmqqww{{~~~~}}~~~~}}}}~~||||wwssqqttwwvvuuwwxxyy{{~~}}~~~~}}zzuurrrrorruuzz||||}}{{||zz}}zz{{{{}}xxttppqqvvxxyy{{||~~}}yyzzzz{{yy||{{||}}~~~~{{xxyy{{~~~~~~||{{zz{{zzzzzz||{{yyxxwwyyzz||}}||||yyzz||~~}}~~~~~~||||zzzz}}~~}}~~}}zzzzvvuuuuww||{{zz{{||||}}}}zzxxwwz}}}}zzyy||}}{{{{||{{{{{{||~~~~~~}}{{zzyyyyyyyy{{~~~~~~~~}}{{{{zzyyxxxxxxxxxxyy||~~~~||yyxxyy{{||}}~~~~~~~~}}}}~~~~~~~~}}{{|||||~~~~}}}}}}||}}}}}}||{{{{{{~~~~~~~~||||||}}~~~~~}}~~~~~~}}~~~~~~~~~~~~~~3komi-1.04/komidata/sounds_freeze.wav0000644000175000001440000017761410075325104020043 0ustar allanusers00000000000000RIFFWAVEfmt DXdata` #<-{<  U "Ft ( <l8 M#<# VW! WX$ D HfE G5y P      . & 1 hag2[ JwZVXn4:u< M)c{wqtj/I= 7 5   b ( j  B F / Z % K H )F c#:nG]!a*xOTA1'U];azYm CTN  N s P V t=;cp kwfy%D0E[ (  V,O% y/2B6 r?[>(cgC!GA`7M2$32cY f|, gt #W y 3 O  p #RV {0%9+L Dhc~y ! {c dE }!"$&&' )***)(}&#!4  . C ]  W  IM ` c &6;D?]6 _F D&]Bn4 0Eg 4nL& @6aɂ?9Ϟ1Ҕӫ+St0|>1]",ws   *   * '9Hn9aag`n, ؖFם--_ֶ՚Ԇ_ C R _ L  _^!"""#"!h 8#q$ K9xIDBH<5O*ޚ#ޭ K_ _tUun:ho1 dy7, 5!!!!g!-!C!!"#$%.&&%$X$##R$%%'1(>) *|*e*)']%!C 9N='OCn ' %O St{v  U!C 8&\ T m RDuT1 5s޼; *lb)*>rTV+d HW} mP) 2#&_*-023-4343r21g1;131*100/.-,K,",e,,---,/+)&$"!!!! "!O!H &7dX- bs& 9( ^m|p&ZA,  x8HOG~#<X?Ig>8"#4 N P 'DY ]ۋ_ʷǴ'8Vu jFt mT :F Mf 2~b 9)PJ|hX Fg&[U^_g6{  T 5  ,g>IP qULDH?KcMe[rn-AJ)dRgM X!7$1!"$$$!%^%%D&&-''p&)%d#]!d.'XT $ 't) " >1s!؈<ʋŏE LIڱx%VmW*ŢȬSCLXN:>{j_Fv:C l l+Q\ d |vc "g/0Ke0;k Ž˻Z ʼ}р٘`-z "'o+E/i246389%9v86;40,(%>" k !#&*y-B0221.}* %/94 k7m>J!ǨĦą"yXiwŸƥ]ΠԥۅRatZdoW|u~|A C"$%&)''()*,8-:.//01z26333K32 21i1j1^10 0w.,*))()9*+[,+("-)H*֮!Dz5&Ϳύd=] q$U5oG< P'H H/I &0v;ELQde`h'fF (/^46e7654444"4U2/,(C&%%Q%$"z 0GD? e =ܽJqMke$U̪ȳLíڮ̱gȼtcŭ3̖X7Z\9b]4#!'P&!+J CAeX$,'1331.{)h$e~&JY X 2 aZ:Ohj 8B~{ؗŌϪ-xގ}z  0!".! v&]byC,N$Ov>18 xv^x,#)08N>6CFIJ{KKJ~HQEA=@; :H:G;<;94/* 'n%%&&b$   k 0mT nS6N/ÏlMCળxʦģ-ٵ*t \AԃN֫sZ& u%X,1s5<7:75o22.f)$!i !o%*R0C58;QGGOVcXVQKEpA>'0a8T=?? >D:4-%s^ Q $1<"GNnRRP{LGCAAqDH6NRVVUfQL;HDA?6=81( n4˽N?ǔaғ׈AڸкŁ-8[Wѷs1γK/ĜoB#+M<U H^!p * !"$6(-K5=ELP0RQO>NYM\MMMaLH6C;!4n,q%s p4߁vRL3/B02&-JXQ۬j!tعDa^kmѥlA~ҋ{rʩ$w՞*ϚY|`qR`2$*-P.-P+a'T!"w3%*g.k149@oG#OOVo\Badgh|g_ea]Y~V4UUVVTwOF';T/K%"'*+*(&!&&''1& "q 3x,øB}y+unTџxSHg3 &+jg~`.̶^!;͹ ~,6`=ADHFFD@t9 0 & u*5@IOTWY>\^O^\ W/P*ID=BUDPI OSSND9M-#C-M`˿4_$9_HՍ'0q'o+bybœ(򢩣ݕ)b'i3Y/ #.,8>BDEDFFGUH?HFDD{@9{7p +2R8;==F<70n%Z be6QT&]լKw ` `)P߅ղ0W݌l%t|=yz' '?252*@!7ZΘŅyobC8MO->0NZ]bg.kmbp1r}rUp>kcZRML QY|dcow|"}ztok jijkjCiggialpq_o,fU ?%; ړʧ{&E_X^ % ? R ~"ězTBGtܗEzPas %6IIZgptt.sqqqsJuus6p.ke`\ZFZ4[]0_a{bcbEbbbejgr{vd8O8]#vqFQ? U+O8 ; ԃL;֬˩7nrW2ƒ3d }xw@&63HQWZ[Y9SsH9&)? 5$n||ۡlϝ"ԦBfuSo dv q ywG1>;`v&)4 ?FJKhH@W5%]O~jǑ>^>piJ*N:EKKD8'JmyZV'x-LWYf);I U]bfi/jgaXK<_. ": x Cc$). b %c/43-p$!*N ?թڃՈtS_A/ vש@Fqx4CޖѸѪ𪮵ʎ8n"F}lI$D'_Er}zskIcZ^SMEJHH\HFB!<34*! $>.99DP\SiPuu\_pB!8;łԌ>3 WFˍw\0KGspWW^{(°>ΉoRBA"< 2#"+/|h)q(7;HNNH:(CL rӁ#=d$S--354G0'g ?z*R8dCfKPT.XZ[ZWQI@80L*$ r$!+#/-("= ݻMtv0I  Bڌy҇I{oH[+DZkuxt5k\JD7 $-oL '4?jGL`NKO'PQbUwZ`g>nswLz {yvnczR=x&42$ $)K')F~Pհݙ"#>i֋wcڐ3 ʔݳ,ƾd= $ht& V o*@[@ F RfYT|!*^4=E3KNNKG_A[;50,(y%!N 'EW_DޚַmQQA%5 @C@8 -=D9Ẕy†<ϱȲL VYWKP2D"4W! .9T. lk^0-D*9JZ6hqvxxvsn6h_SGD:.%3c $Ty+0ǴYR2 !4@{E D>=7/L&j P{{Q38vy Y`#'&!s?y`#2;?>>u8!0='zfJe16 WOwJΌ,R%)*(("= 5p!g$$Z t\Wۛ;GԊջ;+!6 uv+8BgHJJOJ@JJKJG@+6(rt 9$.ܧf>׈՟[ςIE;ftf2L\n1-ػlμ/Q<,KEd"p-O\ w$M,Z4<@EjM]TYZVXQG*:*Q N ̴ċ[ sh.N| X,)Z6CP\g\pHx~Wxpha[1WSP\MIpE@_qDWFC<'2& 04z}$7&#sw"IG Ĩu#ХB EAY"F$0$~"2`P TDmݻ߃5{nRRuoކݰݏrXef9ҕ(y"#C#!  f Az&wˋ~QL75bpbTO-w8LY_,_YQF<3-W(&&'*/j371;='? ?=V;V8[5(3n236=;@FJ N:PQURSST@SPQLE>>e6u/^*B'%$ #VBjtܳ|ټ22 ;^ 8Zcȕx>e蜃IĒǎ_ށtoݣxF²}-ɸ۹ѿ2Q3 6 &0 gn A'7vBFE@7~.o%Vw 0 p 'SN!*!h.P t o M9  Q"7 7YI1RatvGhʼmh-&Ȑɇ}!ϑfu <}y˕Ýҧ6u̾TDu >a8uGHf7W  )yd 2)Hb`ȶӡ݊p 16 9 }[=)V6AJP\SS SQbP_ONNO4ONMJF"A91_( Z*X(?%3yj əɣͲԾb+ud*gWŶtAϱ=޳hTb^ib.gW0 p!;+390=@ABGC1CBA=@=C:4Y-#pt ;y uG)=٭ Ǘ?.MhB՝;rx`|@6:&O8F2NP N:HA93.*'$" + "o$L'*.'38<ADEFE:FiGILOQQyPMJFIDB/A?f=H:p6r2.+)K('%$$)%&A):+O+( Kn]}L VX" epͥoU̳Ỗ<܄pn{ &!V #'!&A!Ka3&܆`w+$׾ٖ֞bhy ,$+E/.+'#"#'+/21,$s7<R8y~ 9 nk +~iwf Y}/ f Y;y, 6 )͗1κBszeح$p÷3%٩Ym2MZzQ : yP #s_U6%޶ 00mz }~)'E\۾?z&ۦdqy~؜n5uJ k!'{))$'$"\!  I:mpU3ENX [E`cv?YE %=důͫcțEs>Ղ D8i t 1 cvE\5U.*62e5B40=-, .2+8;;7_.#  d I '@ * e}oh&9 0 (Iu(:+ա=,|W *W~g)![+5<>N;c2&  [t "/:!BDC@;e87+9<@DFFDA=c94/*#}/#$ P)2{:BFHLsOOMHA'8x-"s 7 _ 6ιvԖpܟ 'eZ<*AM3mG6ǒ뵹ұB^[ՠڤe9T *ޖX :uu   M\,en ,tلS' @&+~04689:C9j740,g($$ ; q !/#!(,.08/S,I(r$z"#(31:BFC1::*H7XȥlZQyU#hbiyu<fǾø!uuʋTWdZHA O dz 4P1  o7֑^NF%'`9=7/%~%90I2 *\47B2/003C8A=CBF ZE [$.8CBVJoPUTAVVFVUU.UUV+WcWVkUSO LGB=B9m521|2f479;<<6<;<<,>>7>;?72|-Z+,190BHK5IA6j*~{ p -xa1 &x0d;7E$LNMRG?6-'!x n x|NTh?ô]ϼþÄE?Y{Ӻζϛ2Ӥ!HԠ{Č %iVǝš) I7wӤTBزߪwoS$ <)<A zJ i M F 6,$,3[89841/0F40:fAH~OUYh]`?c eeCdCa\XSPTPQQUYK^\begh Т)8 TDWH #%&/(4))&**)1)(D(K((N))!)X'3$ oe%,!3W651)!-jmT %+;2|9@GKMLJEAawy@yY \1$(,0>3?68:>TB{E`GlG`EuA1<$6/)$Lt apv~U/t/|jjmNo\bb2, 10 U/8*8ޅ 0ڗ3¹|򬀩JA )Թ rb+ǽr¿2Ǫԝةݯ\Z/:M5>t */"%((q(&H$ @Jv ` # ,#'*>-C/0J2M33Q31x.)#Z M>JJ ^  C59-HzrB^Qbq7{˟+fsu dZy5ۆ,P- _Sni'= ۾fFtzeϊ΢}̺x.Ƈǣˡ̊Nv/L}Hy0ռAnr+ӐқZԃ"#n^ g37 .#'9-{3F9=??>O=q=?uDJQW\]][xY5WpUTRQPPPZSX^Pfms)wwvqrmh d_!\XTQP5KDE>]7?0)8%"Q#E&*/\341M*   i ~ -Qw[\}  `ߦ-gY=ʅ}ɱʟ͉QC1{\ z(IvԤF <6 Mb*>^ڮxlN\úķʹ A _Y'rɲٿZ;SڭkݧWގco0Dջ׋ۅKmQS?xuA?pE 9>/ Wn +Sd ޅܪӥ_}&,kG6ҞVٝ?ژƗ]O|ɟ^㣾}+ b/fn֎}0͂gˡ["Ŕ#>ŢkhǾ pE]8nغ4;0&m~S+#){!'@.6?=B.EEC@?@NDzINQgQMGAN[DKQSGQxJ@7/8*)+.3W7G;a?KDrJQY`fhuhe`[UP]LHErB?5=m;Y:9f98h753$2<2O4k8>DIMOP[QQ%STUTQpL-E=7S56;iC?KwQTFTPRKME@t<:;<$?A8DEFEB=K6+-\#! V L& u^V. u 9 -V߷6yEY%ޞ޷B#г2٨-Sό`4®b8Ӱ"6p+mͷЩL֋؇m]Gs0BؕUXįīɭ͢=-/3-Mؠ5u۶4GHX58N"s?Z'"ɣ^y.y𽳿u^fֵƻ;Z򹍵MZQ_5diإ9ت) ɧɫ Qk"A 4-LjU#ŻIϬ]BEq@ (] $/''v'&&'I*I-011/+`&W )m["Q)/3Q6763100{24T7]8d7_4/t++(.'(+.08/+*"y 9- "%(<,%/C12321 0<-) &X#"%+5@yL9V\P`a```aein>suvvv?vkwcyL{3|Z{xtpm$mnr5w{}|yt%ogikd`#^\f\\>]]]\YdU)OG?70+^&C"3 li1 xQ!2gL0ҋR}֠fՌ9(nï,F2L֑M`ܫy̋ǀ'빩I#WMf*%ݩ 4Mަcw֬TìVձ0g˕q8FW m~8]ڍ+ݫ `OJhQՂэɏ×)Ö= }UtLں( Եӏօݖ=',Q.U._-+(w$.gqaC cS}Fp  ekX׍dpg&hhv8Wٝ`HW6i 7 a*^)([> 1!r$(j,p0291+!j*>|YĴ1Dn.촠šME`ޒۜ+=7ڊۃC1$Nت}М@*bؾ݆u:c YB+NEkARxo W)u 2~aSވmRK1قڊxۍي?/y P}̔Ѥf:Vx^1F$i énh伋x1y6 Kh#I 8q"o1+5a=DKRYp_^czdcbo]VOGA;5.% Bo>M #p ZYX1(g! 4];sӭȭbLibZۅ׼B\K5qV,Gցi JP;[$*/:3:4~2-&bq<_Mxk\ hjV I G6 }kSU& T*5%AJ2QR,L?-uf ߌ6؝=ұM+i+ܗAAș\vShŶnI PP:& _:""x!Dk :   En<%*.c11I/y*#. Kl\ܾ!H^J?w0iڮխF7*Ҿi͂Ѩt26,  %'X'N$j )b " xC%/9C&LR$VUPG;e.V!9 c@.{0 is6!x ciL!m }76.s ? fP ui*PN$.YkaGEb3@9_Ӧ0/[VD^ăĻ3>Ź:͘ۯS% Rz]$ qoqFފZK ! +139>@2=T55(QaBa溲Z;vAQy:*?Sð2adϠǐ,S7>I?h4cQ(xuj}7n%#  atj!%H+e/y1b1N/+'4">?e 9 ){ɽůܖ^ItQxnAʣ2/l߹ƊeA !T#u~&/8@EgHHEA=964]3210/-*&k"muv%f0=KZf?qx|U}y!rZfV1E2!5  V &*-c-b,U*M'.#<_ ) s}%O#&((%Z u+E1s W N F v \  ` H_үREC̶;Ǘ3N݌' 1KF 08ؓͮң٭{NDsX *!*$26(8F7*4!/( m"rj B (ug #s-6VӔɟzѺʼ׷ܼy~ϫMyK ֮;kyQb#@כݩTbAڰ۶:T|hiJi JZ2U,tWc d o#DR5Aݫ5{Xŀkݺ:\*Z.Cؐ/ Ac]R ~/L.zBD[ -i:!E1MRSQLE:.R!vWTWp0 "< \ -< @S~n}0+՛Կ4ӨђxM%:m*U#AMǿӸe٦9p٦# ArAoHto-: О)^nӷaERip-w(ߩd̹ūdcyEԌڊjC߬`ȿ.Dݟ \$DӕÕ6ʬӺy0cpތ1=0Fjbrۗ<]yn qY=7q "  0IGDqE68O5m2}qS^[Hcݯ߆dj?U hc .m~ORUYY z$$)B/5k=9E@LkQSRNH@8n1*$5Jc a<\: '3.>EtI|IE?5*5j ngu 8! "$&(*+,-,f+)&e",Z,dzj {C? {SG *E|CJ&̦Ŏ7Ltq`Ttn -   g 8G ^|FVjTh |J!"" CKJw` < Iy/Fs Qb,w FBҪ ɐئYD*vx7|kcuպ{Ȫc;CW[$ }1A=$y2 F  YJ|%8bT 4 t3NuݖgֻRy\Ss`m $+/oMlvԿو>9|32  nCb=E?kn YYͿ՜p,28E?A @:2) f`Mh a   A 92U  cMYu{ w&.@@:cl6ހDHBbзݸϴ԰ YpwWkȳnhDָıCx|J'l/    X*b o "_ uslleoc*\ƗÑUAy@tHߊ2;HscXQrA.2l]ӵҗ0|)pu%[w$pEh lx "p  2hMH\BrcF#j,W_xs`@ j{eZ Yi,=Yh}$dsXNf&O"mi]RY6)c(m28:9_6f1+R&  C a 5OVMXxlm\Kk"ٿך8+o)]U@Scda C~[ҕ_UͮaϾ; zÎʻ˖Yp`"t`'t Ms/!BL ~ 7#pO/ae)r2U0{w3+te@&}Iװۼ$:-8: 6~"' +^,2, +j)'&%\%$8$"@hP{|FLKx B76L6jk&2ֱUOyձe,poKV!+398p97:4/*% B u R gY s A[ J @ubyS? _n:UVilB5 } K bR= @j L]sB=KKt \J}"O58^I},Д͓ ҂ҰYڝS&q /+hE=uevZ =+@ ,  q  eJOLZ 0#B%%l#H! "t%)w++( #!F <A7qy Wl V!~!G! ! g @`D"%P'Mc`8#L(,@..f.A-+g*('$S"L# CI+ 4 E }Dxit̹ÓiWf͒ϔF 'ӏ#רV#H͋ɯm1*ϰDzԵ3Kľ™}ɑFԟق .ψő׾bԹ6dzG䶑pKAݰߦ D&eA% B :wP_l B! G 1 O bc%tMe\ e9 K  ];8) NaII1hjQr > ")T&!0AH V> r}ͷط$E Ye r۳&G{ᄎս;rgPܿVʼSҌe!&)W?ɝ<ëȴβـݺ"AgL%~rtL" K1\jh<?OgX ]i  ]A T #1[%O4_eIDhQ۸W\9h|Nɽh dƿ%SvT˿ݰPӣڜ nh6ԴeT'5ȅ;y(DeϦЁeۙ[tdLDDR'uM=''o:]eID"l#I&.Cf gWbW( >} a J ;K+R#jL+G8މU |oבlӨ9^J݁J tEt}D:YJrz!   $G a , { :(u 4 _FKl'C k qE<P 2 :s_]wif;tC"gz( JFK.-i7eq S)jGq޸ڠYdO֔'w˂oÀfS8չc&p"^'I&-,^P}Nf 9 !<?2 \ M(%1 % 4 [ 5a=\[n*a[ [Hg?8G %  ILM$euk.!mlWܨ܆Vޥ=7ۥٔٻ<ԯX',[ͽb]̰h͎4xlܳ$ٚSIޫ49ݲ)D$ـ ق/hQXJi-jE6K;85|T ]    ( 4   RM9ms6#%%X#m  \ !KYj< { w ;21e? \s6K/f| vM1#0-8 ՘̝ʬ)βۿީ{6_ܒYׯ ܦ2cIGcp7T!Y-[9 2>J0m m b  TepOf ncje1p}V[P94(gIVݲُԌDh=ܧEۛzx.'q>rײ6(OެWٍw^ٖV٫F|l*~;m,WSxۡK/bSۘ3ėq `{Ap;ߪ0E !>H B )Af 7M )T[u %)G-7/./H-*S&"y| li & E "hswph: R(Y  gJߜ#ښ`̩$ˤ̓GlP[/4/ټD;&`ׇw$6 "PߋޜWܡڍH!])w С/TʋƮŵ4E ƈŽĺÛe:CϾȿ}Ƕ[Ϙ2!ׅ؈1ڑچ1fҒ־w.oYv{$lf?2CbAI!kDΉX͠o[rk⺰jѳ߰nF髍ltFծدC񴘵"J vN7Ͻ RSdQӛX_׺֏֨לSف(^.mohyj3 VMFr30b95WqGB9 K  Pt2 l[/ vg46Z qz "G'*+)|&"w +S<$ur|#&h(('(R'& &j%#a!ta4 y$H&K%!~#9m [ -j+uf3(uXiok/bb&R94@nk݁0a׏ؔ߭ZP فE::#ԸձTQޤ[ޜݕm\syبw ۠%^r:~>ܔߢ6^ xJJA *$EBִ )Ӵ҅ѪUqбПhQ,{ȺO,̗G͠Оƍ8]ѥ{D "G!ZZ9+vBKEC= @&CV-_ L  |hw&t("* x] N 6mf # e v"(-011^1>1 2369<>@@@J@ @??=;Z96v4@3u305#8;?vAOBUA>w:50[,5)'\'^( *+,+,*L&p!*X{v  =3  n i{A- T ;|fUfi=4v݌Bۥ|n Іwΰn˕~g0 4BC?CGfFߗ5<:bj#E W3CbT9 !:<} DλΎ ץߋߘȖ_8@Ľ'~teĺ(sbŬ%ѥ=Bew[5RZeSz{w[y]n8FR4p[o)OIPLzK"3s)]ܾܮ5׵<;g[B~j*  K8h X""!sY ` a&y.&46M753200=12234567751+G$ l  N`.d& f  i 9 J w~%  iM*z jj cFc5#vaQuX:anx p wdV   #=p̐D)=5T `֏pƭøcźپĄ<:ylKk+"eY/1|)W/R1t ^;/oV} ty?Ыhl$ӺԠ xS6fCnXbM02U'C%R d b =ddf;d$C<)  :A4`mCۓt܄܇kCb - < 6xxud6 3: -C|ܜb޵k>Ң2ǧ«ٿmjYךصMJpۿֿIտxiǐH׎!uE}YT3*l".#*<-5b 9:M\z5+ p{[QBQQ/Iqzlޞݴ55{iUIi. [m"#y#:"a e2:!1lMd _ %,3B8 <0>><82.+7" cX +Qq>8 #b! j ? t )02Y_E(t _ M F \nkdn?1H#J2 t7Gs$`4g~i>j e-fa%  %D *gk  a !!!A" kgH`{ 3 YoZ/AZ(ast{D|-M!;ݍ0ݨ ~ <9X N j A/3:M 1"< Y!&([)r(% "R "tR|UZ(aH   $ ;Hz^tSuw x,>!'\4,A5ߒ܌گ\ 2J֊ە3]MA"-l v_'.r4UJ )N?9AZ&c4 ,`gCRoޣ=}bҝY2n['/r@rI [ثܧ._j"[t |  o{:jn3~m:Ptn]]Zf@w@W~(Y!W7)NUC>J>`_*r]a !z7"%(A)(&# 67  "CPD&ej ,"$*$x"3V ld=;@bK  s xh hoJ [ 3zWqg toDL, d k  j'5Y i['t*U߼gTkZ'~M"rdI9H&h>[t U\: # 4 =s|_gKLlKIg$0  2Q0T4מՠu"{ !ZU5tH3tEbJ%SWJU_CaZ)h36/_q#>sgM'p@et,H  + aLYlx`h*g!l?Pfxߤ{48fdtS{ F HXf`KA?sz4&KmT ` i$V<;?X^ d@Ro2KflM$4r`C>Z؟ӽ@+ӡԅֱh`@~٠&ب,ږܖ{% R [X)bTfX@ARVc|?3~&pN7e 7 ; e q^ w .SL_Dw_z2raUCe'z3]T$g9_L<$7UTXo(Y!~OdBEo )ߎ=)وv DDKlދf<6DPlCE)PRQ* b#y&G(J0x$ ^[OR 7 E s k j~Nm')D +?Ycv kpP 52Kz;5kF^), =GA@ $QYV >v6yj|!P H4UO7HL2!yPH H"wK(2Uf<|6aw YqF|a*A DR/e>in, : x " { a 1#_$&.~}o(,4LL C^!Muw2n|*7p\VBD\ > L n@{9xE~'|2n5f } 9   0`,quEboj'Qmo,9`HG\JTO5`"N:qY),6(`2S@ m;GdBW ܾڅ߷8d^r8{`DD\NA,Vk-}ZaBf>U8!$"cB2(be8(ptg-!Q;vRWXNpw3dBf %# A U 3MQ9V\ m.yYy  s n  Cz:P0qE4]m?F990\ il2m?r6Y/ k&!"+Wt6r"~U*90`mr e G'%lf}   9 7aQ/8F`B8CXQy b#N*A2 O-f4xC"F]\h:T"$  R;;RtTF5Cwwaetu] ;Nm CH izK %3}\Vk  r ZS  S)k+rF : lN28hph/p0UTIu:a&:}@J6*j٭:5SCJ\a)|߀]-ۃڰL%5^hXh`h,J34 F  6 ) uc>A}]?e d7*%B:Z^@*X$pU*$6\uV9!qY+ްݫݷݗo_D3 (kRJh=$4cH>U! ^Wf j G w >?3sk&%($%N!Q\ :R||kH1\G=TLJ? ېL+.YͶκЛD)PY-Oe1jhq?\2_ZcAjXMy; A)K/xv!~O;rPq3Vz$[.3& !  h# ":U.o~!,x6pPZ_&{nFA2 /e* 'Vv_(Kdx0\L3=~]o N z V S  %~B P d'  _X 9MYpWbnRZ'8UMi57=t #Qll[0>C6WJi@+<$;>m5cJޯ\ވ gJgta8YR6B<#jOw]f THEn)89)$yBmD!Cs*OzSp `?4, )W~)%!`bR nRF.:DZ9$+>pqReQJZ5dxqTG(@"ikoT&3c=U+kH]gl p J d D dT < 13h(l>Y*Hx . u_z1l-m+$A|Es)D\'7*ME$ Mva(tf *<miE+ ,HWuOUK2 +/m5 5tu$ 5Y0Zgc&*UAPf DlaGn'ty9b&Knn:s0}%VpAj# &r5L&~XF2  I F h L _^=/C5 ) s !h7  @Tj./R8= 9Q ix/X!!)JrH-Sm~"t~d`*(,#;~  N߮ N!B8.UY4K? &("I5dx=Hs3-;x@pr1o/ta1חُښ >ث׎ע}RvL܍pMWGkxWxB0OiT v#&k8u@'pB8 7Vq%?5/L";t`O) XbS#jN *ra F t l k x  I i 8 x,0H.v&4 z I/Z @ /[@8 j 0 ~  # h ,q7h2HUfixqV6 MyNt/2QaC&KLDR;VnX/+oF#>E8YjF(>!RDxj*ak!b(}dbzQ]bMKuK8k9otF|O: K<{G Q a"#  :?D &uEZdRjuk~ zXMt @ , iYhc 8Q=)G=BQRHty_ )~/2b YnHP"pN\R;nmP3;j$o2^zM{usbt8!RRVl ~g.W>4s&R>PݴmܱHHZ_"VZ@8-TSS8^eJYjP}QrFP~]Ufz J ,MIP}! l@pWf~z|h zqYol i% d a?A/`  Z ! l?^41Yi7rZ;7=g#;W0TaWAAy_7__R K   ?  .=^t[NN|z/Qw~vo  Y  } V,n%VK/C!\];s(UN[x wGw {TW|}>]u:K,hh_4 . u > bE1foPl}~&{|D`f&~ +;8R3)0-pNMUR V /H0L~mEaaDJ oNKS` hPsA5gV k} (jwb7_A`I"fai!+|D~JYv{ V 5 W4$\)0lMzxvG|1 FWga&i"S*{NO(!2&aj,7d?^IUz n[ h @wK M}Rug*oO88_ABL;nG N^c\|v{w_{w~C{+|JFGl #:`)4?XBR)FhN=-I'UN; T66MYQ#i*[Q:RMh8BOK^]A-\/D%T(4+d037B E8rP6)`3NyOf{$p-Oyqm!bPg kRRSJ.`<B)}U h G- A q}]$%g} 0  ,f q +B2FSGr   t #l z.EI,H;|\fVv< 0v:6az2=*RJQ0=K^HSWx}5{;Rz]o}[DYsBHcH2C+_hj '3s%<3*:%) ]Vr9?y:UlZtq5jA$Ld!g0Wn{)X|x+L~|\tDs'`%<?/}pN(^13:( v = 2 a ''?}({$ F 7$6p+|YE,^>{,dT/_qF2/X fx e}Qlt8x+?a>b[W"X_6m;QxeWxx}s}Y+q?$YDP|67bf9_R iw,U{-BM6;B I]91wyM4ny-Y$Q4`3voA&m"=DzD'nQf*, 6P!k0Dsb1 ?: DDAhEF;? > #  Oi(8+%3d-6yM\7O[0_=PQJ)L_>k7~D*>r"B{o6l/}yI sIA -0:_:h?VA<Qj<Z4)6<*HjNI$ \zXJ|_zWzJ6dkwCKr^+jY!QA &CC})/ &I?xHk@\ :x"F8n\qEuC0 47 O  { 1nIQo:&J2p'(<J-"'%I 5g5\R yd(^TAx)m{JI(gbP6Iu7ke(7e*1>q-vCrT5L';w7(?]vF:0iHqHNJ{R5ndzIex2{ 55:B9#EhmE{GLMniVJXj-yTA.W=d x8, }k0@z-|:pAd'|0RE-rEST1gR*ENlB92 AZd u) p2.kxIL-7?%Ft*RK@{7&Pp.HqlT:F,iK4=)-GGz>'^_o}Uz&P xyn!XA9er{Jmm<5y 0*kMa6E#A &) H_oH+mm] DT!1#1ki4:zu[fJ^Ge(1+8<TPb0A"s$ V4pn!eugkF}[~hK~#]|.3gTkR5x6 [+hj=qq>] AK?:c,0u#g+_'% &uTc1@PBKP~S= ^N|Gs>v/?sc"p%Nf. %eJ-2_'@W=,^=7;*O sja"`  bZ6WC1tNL|_'aKg6p^)Xt$;W$W"kjPrk` ' MZR{XXk$5)a# T7MA h! NQX'WVj)G=V6J=5gN QF${098%[5*Q(~[XwU GmE"1(o. 9\&$6c)B"CSM681>,. >Y8$j2rIc#/^7]Jg:-PCm`,<Nw%#QS:$5nM#BlK=-)CZ0 \Y   ='ebP.C5X!^(8%*$AHj&eG ; hX Cn Wva(ba 6n0&  %(9U F    %m?H&h8cSU X? Lb. 0N[)Q0B5th7M`0/HC#"$U6VH S[3?.: >sC*$95)?E#DA_{\x?k. Fd3N>J0yi L  o}c(1 YXc?zd[^ops7P?2} E~C #!D8 I9=#/TQ!m06|s5 E$G au m'  fQaAa* >l+)]c2Nk16bw4 T`7,5"m=NqRC RX  =|&$a `   Nb Q_]11O:R ,k1]#\e4d~'Can #sn9nL E(M>1$3+jl &0$y1 )/j3%J8&` +2"d9(8]'qpB +s`<D ]q/Ft=IL/i'' C 64=& "pFL#G?bO"   NcWGA{Rf%o .) .)w?wG HD%E!@T<}1*$  Q v1:.8"s;  L)s@T<z K *n7E-l3 At $'?i0GP/h'z?>%@h|}Pi_8#o 22O+_E,0 z'N:CX&=+&v1 BwBj5X^v ;L8:X-"/\5A)={5*ZR%#-!5l^9R%(_,D7 w32x6F0c% > +3oB 3xh=5 ^7 :}zE VoL 1];=G,F{bm@L 2_DJ"?/L,7c*0.]<0@s'dULt>  {rLa*5i"6d05MmISd,.lI$7,X[##ND M Q"&(wJ' b' _& {+E8%'<2qS%`m@v""0 \(*c)+*5# D =+ r3F8XC`# A  '^3J6k/#&d4)\32      >  )>`qwu$>7# \! _ a  [d"'' (<1U0(=l !L 5%  $X]bU %{C?y&)))s<=z&$; B  ;v3,Ff. _W9~{AO 8 /8& ]e!&' *94T.'?n"F H8k+*  L(o V#"Ma)=G  #-' c9);a$2-(e^  (o 7B-o3  &+g1Q5QCg#   @!   !<:    1s0?0t0  ##xCDv%" FDkomi-1.04/komidata/sprites_dropper.bmp0000644000175000001440000000606610075325104020365 0ustar allanusers00000000000000BM6 6(  >>>>>>))>>>>>>~9~9)>>>>>>>>>>~9)>>>>>>>>>>>>~9)>>>>>>>>>>>>>>~9)>>>>>>>>>>>>~9)>>>>>>>>>>~9)>>>>>>>>>>>>~9)>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>>>>>>>>>>>>>>>~9)>>>>~9)>>>>~9)>>>>~9)>>>~9)>>~9)>>>~9)>>~9)~9)>>~9)>>~9)>>~9)>~9)>~9>>komi-1.04/komidata/sounds_laser.wav0000644000175000001440000026021010075325104017652 0ustar allanusers00000000000000RIFF`WAVEfmt DXdata\` mC t   [a&Qs  zstwQ^ FM }1"("# $|Kvyu <i z8p g  >7AF ux9~p ]] c #  Z[ S &63BG)C5V" oT] av_fFg_0 ' Q0   W M+?a3ZQ84 &c&17X4z!/| $   l w  n. nim++O;!H JLD" /~   u )-w+F { I  "/W;[ANB:5|25:A{9 -  c) +!5x"B%D]A>.20[*G&L%)4 ?P|)19:a,.38ku!iD'(9;yN-@0F&b|3@h8 & 2 P:=*;5{)#oT B#O49=5;v,' B l 7 SQLE g%})m$ ! &.="Hp WL(7J * KfJuF  E E FvE6D4}$  = \K0 F  k/ :A8LB-I7UN P OJkF9W' a =08= 9( < H3'aC V"F -; O!"_ϋ΂1.98 <%y)*'*6)((&. #E)M'ķD)h-2l!"1*.0>2.3z320-,4$E +9,œ&ѫ޸֞" &3^=EL QoROI@e5+I! Xlѭ``K۾t%" /9@DEA;L4,#)" ^(,93*ʺH1ҵ*x %""}#$ $"!+bC7 V b_ ,WAʳK?0;m7 6 #}7f51!$()*+*'##+(3)I)ٛ'ުƥ'Ұ )`)!=+9"(<-=00z.I*%"!O"" >KQ#EǻB<)Ŀ)<5%(2;BGMHE?5A+ "G u.T91L)! -  0!C##["=;!!.aqޫwףݿ Fl! kA D+ b _ܲ楳 )^m 2VFYiu||~zrh!_VNlFC=2%WY,GáƧ%~;kMJS޺LNvѸBBڴ޷;8+ &4@WIPVZ*[Z@Z YVRNJ*E>6 -" /9i:ϰ4 ޏ+!Hg.9 Uv[ %^-4c:@G NMSVXX{UPJ,CM;3-@)%! EQ@?6+&b&̏, <2J6(18.#6h٣ %/8!?ELS"[ae~fc\TLDG<5X1.*%$$ .+'L0_c/ݹ46('^ GQ!M0ۯ0ޤ"K֙0 ;4j" +$'+"17>DHGA: 4$0.3//G12429/*$  }< R7'ȞTw(ԼM868%-!3'8F`N'U{[ah,osto1eUC0- *B.w5&r.36L9:93@(ɊcrT X&/463/(!2L 95ѓĿF*k˴Ӽ ~w "=(++[(J"LNu>тǺ,/ֿ*ɿ ց p( 29=??=g95/)#=S[qP"P4 $*%7:/1#8 5 c[' [ G vq'8ˈƷCZ>e6,+n $! PO"Ɲ!,סؚ&tЕי*ɴ/!;"6IYBelphrIrpm-iIbWI8=$+"33t # *08?FK"MIA58'jC۸B4xЗ#вb    #.#r1 r *$&&$:v @8V* %/:D/LVPPN6L'JF?#1j mzÊ \'@CbTjM )05>9:::0;<==='90#"ڊS2'Iܶ[^]L.A<Н7v&ɳҠj#$ `' : -->~FMmQݼQҿѪK-ƹ@ABCD]HNU\ a0`YNB=6,$[L!WMׇgs xp e&: M)7\D@NTW#Y;Z[]S_9_*\UL8C9/%/  ̨(a˩8h=9ݷʴ0&ǻHB>*5=CDEDvCCDGJJGC=6)-#   (#F R Gχ ʝ 4ŵCKIhv7ڨ_. i"t+28>YBD'FHKORS)ROkKC;3,&z3_814@ھ0+" aiiɨՄ)=.Qcr{D$~Z~~!s{vp^|K9y*j BOհ]ޕ=ѢͧSClj ٰaQ7h- x  (v-/g.+*(3$- A I|EЕR@̴:6Ҏ8]{? Jb-Q -%+3S<DHNIIGDCD0HDNU\aa]:UH8) $ zR> " "#c 1 5%-4.;BJQ-VVT Q'MIFDBAAVA >7.% 4  M Ҩ k(۪*O9+hl * Rz >s =1Z'O-00I-R($!!I$)1:1BFFB;01&/Q   x-I.N۵ײ'ƭ٪  _-g0" "#"$/$3!H. t}{'wڅ#w%j&5@C.OX]\IW6PJG`FEEhEgCs<.z`?Ihƺ+ ~G0ՙ@ըȱ F<>"-  '08@HNQRP LF@:4,%q {R!І('-2#0.7/+# / #b%$`! *ŝ0_#Ϳ£*:)'p)29 =K>>q@BEHHHJH GD?93-)#& !+H  I2P's{)ޡ(̫ܸ̆J܆\@4 n6/$[,5>9EQHFj@77.).*)/ 7?GL LF=3( - f7%8L$g] к !޷.l+ - - ; }R@XP޽ܹAݕ2]&{>J*5>FhM!SXZpZ@WRNKWI[GE?D\B=4J'O 5<ԋtjH vҶy e'W% y#%/c9@D!Ba;1("dJO,9ͪJ8ԧ&K}6 R  q Z { 6FEAGGںըDlA3 4^&+.35_4#0*%##%)-/,&  W҆ϦQ4ڛ)ѬǾ ĺʗӲ-   c!%'&" F!-9CIKIFLC@>?tCHCLNONlJD}>81+%  Cݱ }ΐa&bع:3ɪ-@:,DDȺA-2|q"o?L5 4)Iق۰X߀ߧ_]ݢ[bSvCh- H1'09AdFHhH/FCAr@>?=;_9A6S1) 6 $ق7  E >ϩY ߽   ) ""   .i2,*99.ʀU" )'0/k MHL yzO, @?1v5 'c ` %/:7<_??=<^>BFIIEJ<0$   ޳}XbpԌmp׆ ʦmZqZ Ca#)/573*Y T!Z <#0jA3$z}*s   3D L=oо'a3;@AAA@?>=:6"0$!kūrg'^)fC9/@z_ ; V!  7"(-1L577[4J.&+: scxy3VةJa D#!(09-ADsA9/&'e dM Rׯm#b% #ȅo35%/6,:>BHJMPdQMbC4+#"'(@$оBOy .> O]go uvsdmdYL?2U#\\U᥼ܠᡢ>J#a) 2J78ee4ŬX)L #$(,U01%.&P J 5촒 sh'-!2BOVXVPF;1!'. 3|: ؏ נ 8h Xo0/|ߢu 1$ 0<  R >#!ݜ0R[;]>i2Tt( `*C6Q J #l%X')+,^,W*%<OZ 7.? $ !"޿Ō&P 9 i z"#7"   !"",$ ihS̙ 4'S/#d/{$14ă;&,29 >zABB>J7.`&y ~.FAԘϰ+G˂͸M>n,L!* //-,-/// -'Mpyӣf764e bվז g:w $&''(=)+/3^3-!!.m=Яū/ Y "0?L&V[]%]1YQG<21%0(xZשB'*F,)ݔ#>-3Y 3   M/EKS JA-ٕߘ8T49& d+\<1 GR G 8f !@S߹P?ߵGG6L'!%c&'# 4QUD MG, y{g0b = ?U: /ޚܗۙ|Ұ{7Bt =+ %):+)# f-~ | 6P h ."Z-+Ҭ\#MS* h # BPB *  ' V: K< c:/Rq ~$C,022 35R:A^HIYA1j. 431ۤ$Xw ڦbP LH   # N @["-Eҿɾ1)5:<?;*!E#}%')E*)$^> 2w'| u63!P"(>s! &3?HNONN"NMLH*B9s/$b z,m>׆*at:ȷǹwNϳwGu1 x&2;AC A:1(z L dr 1 / ^f%.e&<!h 1@E|B 8+!x o붲y rS' A% qg ku" &+1563-")|1MƖ+H׭My 3+96N=@@C @5' % :N鲨جu-X7839#4!))*'r# ~!V&*.//+3(&'-7 CLOLCW5&7 k/+i0՞ fHLڤ=2[D٢Ygx|h %7/]8AJRSM[Jbgk:lJkg`'UE4$ 6 h0 $ Ӯ9̣ǢԤITVQ;C<' +X)7J\kqma1RFSBCDBl:+Fղ演d'*SیԄ,)9DZu m!<#1Z"\(3SNE9[*+ԡf-ݰƷPPoʹݕ~w |c^E$w} 4 B$088>/"x(  ɝ"ӫ\;ZaMO?RBџ#ߟp' !)/1s38AMW X;PB4*$"$&#~U/kꩈ?揿#E2ۿh=:{֒*- *&.//*!0r(8BK8\gib5SVB4c-;,t/49D;6*FpBM1vجDDݪ˻?ǪɹiUȵa۾Z L )(:1d53,!!^oI!e)8ٴMbYV %X)M& 6R 0 . L%=74"L AM EI7>"8ǻȀ+X 1R&"&*+)% Q!$' *)m'"m #'$Bx#;(ҽH"KԨ#qύގ4/i?$" +$2>DB<'4/1m:!HYWbf `TF;2+&!u; WUᴞ5nŪ~ǟ͓wgYϥ+:^!",& & '/9ZDOW YSH>7349 >zA@:/ 0 #$Յd!˭{Ƣ k /;?<7447=C,ILJB5& hԴ8,nUǝǥÚ]wȢNUUH> #9(-26/8I6/$#T n%ج5ͦHZ'lnn/s#o_7H[r'2J2("A 2!- 460! * $ q0ˎ93PVեفf h YTC0F `B%{,$gH & v %)w,-+%q$m }89Kw,㻔ԇq$,;9j*ׇ; S%#F& 1;AA^<3-, 3=IRRK'@!4*#*c1f:aƥE}UdHڷ_t@LӣN-w \  ?  kp%.,2.q$/  '-.* H e- cg !4&ׄ+~a#\AӾM( &$*>P^e,dX`F1 &+'y` ٳI@3nAQ q,:@><6*b +rAؼҬJCsNյC\؄'ʓuW1=QY=t1((6E:4) #&! ѫ ݩ$yٵ6B:Ϝ%'A _ %|r L  $  ߿+gׯ*M$ ׹ Ī 9 kDXKj -F43, #=n1%(('%+&#Y#Y2^ C wn&^%G !  f!%$rk 8!Q04:~<5p'B[E@$29.92& M  !0 6VZ ,Eª.@@+6 -9;4IT^\0`7a_Z\XTRsQN,KF>3$8W>1ipNNa /;P=6B+|+$6<:.2a;wGCC>ο@^U31ĉŭ޿ N:ؠ:"` &sh(& -+0-%-##*/80* F ffʻ >ղ* @ K }Hq"!0a \ T55D3Î˻DV M[òKA.2# .a,o! &((% p '< ;֦t cR?6ؽMiY4YRGٕ;՘)%, ,z< "$! !#f+* 1;̤;ռ0:oK έLܡ u):G$PASQMJHIZLOQQzME;+0$ G=U7Jо4ڶ`ظ/ G ^# )^'5$ ! .Ҍ:6/M)ҍӖ3> >@|N LBN ,b452 .+*-3:?vBAJ<4," @LC5*s$(F4] GeRG ~ N2{`  W `"~wњߵܪ꫋7֖C )%h A7#%"C K t%Q.21k,F%w6&2:":.s BQ_@{ _~a'4-32 ":;>=_ -$$!  C'*& 8 b0#q.O'`\iO֤ŞșA˜;6IJ̷7a:C 9(t6,ET`hi bUH=7%6676U3, zkO[kz'w<ԚT + ޒ=~Pʠ[1|S 7<!ZB8n@އݷ5Fб!&2ڋk /\D  EPzn+K489KjoR -["-6W<<6?+It8!&  V9 Wؗ߿5<ríz?͸%@\kE"-f1-#T 1 ?I*uA   y  (>))8>>Ѓ842l%c 5 !*`14K30. -,,, 0&5K:=?G>n:2'ZYW#-4U5;/%Dc%$L#֧oAH!r~ʯY'7~ 2ZF+ ANQ ֯ϿSwN ĖDTb8|C2V* J5k@#2CHM#-1/L)g!3& -L.+W%1![ wX}!҅rԁגuְՓWvӍЁ̀ZʑȔmP_ϐ֫nV}WYN X:%*!-l-,H, +Y(#O  [)#6( eDUO )LEޅXo٦_YSH -vl m(/30(' w   u. 8:oݻcEm>s(^&QZ=.K[k0 Z )k6:5)7S ""& EZĜ#ʟ!Ԃ9 < Yh ;Ix "C; Y1 s?{ /olOU*& DՔ lR ($&9" d G N 64wM!ާ޽YߧpR׾շ7 6B293=;?a;]-($D"3!z x:kC }A?< &/߾u !Ÿ Щi=yԆ%ٗά>MݺS,שW #-4K:4%+[.5 /q97*0x % )%O: ˃q5ոf`&lմ#-eܠ,h9'۶ӈ : "0" G 0'""@ ^ ~u܎νr??abHKƯ .ݷ.l /j ~zPlUOr   hp * "F  R9MΑǯ TTNܴ6%s5' HJh\'X6A=MC6@A{C(ݾFְR%YV I-a7<`;439'!  ٪ZcJx ص:!ސ +%K +H% 3-32/#* + %3) *($   8 [Ww 6#0J/C#ʆ'+*3>> ;#N$PXB8(ټa-`(")J!$# X %И e܌l ˤͮ w hՋ\Z z&.]46V40.,b.217 5'uXMF m o]Gs+L3wS;F t>;8X6#05.1)" 9ڤ0'R֘ji H h Q)6R>7?9,G 6| E  # '(vեD&¾SC:S{Fպ 9$#-s,3eKa  +ڿ%Sҝϝ#nɀn~yRq}s}i|% i~*qߗܱSыʿϼ%"'̅FͺGpݿ3z5  8 V [ka %="$E $_ g(*01+H0LvD[1ֲ߻c:#A"&8q  Y# Wtq%q7CxD;*]/<.?3Sg͆ӟә|YԀʊM; P-Օڎvo "6FON}MFL=@3g) 6'e -=С&Y¦H娦?_ _M#J*",*'.$"%,596n, <6sߚ̷7CŽ"Q0ܮI[hӥU KN1٧l%a'2`>) GL_M"  N sGQ3SO &B(C&"'dt bAGۦ>q7e)z]E׏d Թ!Gzlշre R zm%#'3: 8- j"ݳ伊ҳ8bҍ# vEn" _mr+hRf E;;f)/)/.)" R HŵmM.ȷïM觥hr֔E\MLR$),s-+l&!=mvD܋mQ#A[ yY^u N/ GK!# 41  f z*m=*d- pZ * ?  ܽ[ f̝!d2pM 7\!#&E*+)#Mnhk ]FC>*m+ʛ8˶Kܿ7^ k!,%y%# y|{}  r:Sܹښ+*١<6`5IMڹ,LiBU4T  Y  ! .] +f2  :W .oz /ހg݃zQe&SQ?C0#!r #YU ErP4b׏ Iě1'ŻTҨۙwqx 2 ]g#(H.38:I81&_^f{f_EИ(cj׺վ-H)h2/B?  F7 q, $ߋ Q[ g C"/63( =kpӒ#"ݐ V2Uwfk a D0*% ` 1G([]>c|Ruj]!)04h6641q-}($&#z$&}('#zs!ܖ\ϵϔ9&ݱݘOo…m*"9 #& 2n 66.BNN`ߠ`bׯJ'ޑ U I<]"++ `m<|bJSC'W, 'R& 0BU` D `Svӳ??G /ӉݻxҊѨп^3pFUPޫH  0 1  m Mړ#  t 0 q{߀uX2ʺBTޚޡٟm繍ns7fm=صK{ '! p^ԿRs͜& 6W+3y

\,տݫ /MHUS53L ; -q"өȦNߦ7bd*-3Kaߕݍhڑfg\ N D_;0sҏ$t hk q2!&+.E0/,7&RVޡtY_xfۥߗp70meW?Zխ,2!f n  K v?= =򼹷!^tʔ)J$f()['$ #i_M6S !  1:.:.ȻT˶q Έހ#"4 M L Lj PLO9f._bE N-?ރެא vU(i11#+/4/0*! )"&T# -Hŝ0q2(;)Y) 9(;)PLM3 | s  wKz ˊqg 2E .Xz"B%6, SL!PI~;LE3YԻG{I|1Y` V`<n S  kR;,;^e |c)2 io \!!W (56 / ހ 24cGOƴ ԃy'4 &/451,##K? 7E O  /8 * C!ޤ*2޽oLkWnt ` :C  a |8 ` j)Q,G0- +' ko.R*,Ȓ3lʴٹ,رѻ# |" &AS .WV S[pD %9Ĩ|3W   #'*P~6B9ѷͳ5ݎ%z p v  M 3x8 ;%O֠ooxjiR?2(0Y+,  * &O .  hR"Z}POc#J<00^ 4)23z;@B%B@=a8/#; ݌<| 9 (׋X>5%]uap~]U7Wb !m'E042e-'$$Q'#**&.DsNW*!"$ͳ'տ #$"_$(& lhV )+!&?B 6 S< k#tsӖ@b^9=3;v=  z2WU < @,  m2 =S33W !!A =)OѼ ¸a!-;ҹ/& Re{UPI!d),.'.(\.{#|&"} bڲгE,N],¿U7ԲXܐ>АӠ%t J y>  *(-01.)$/ EytLӸ@wξ%1e}/8.ŐRFOKK K;>^)t W7*.Й1ع.MZgxc sVS.O ߎۺ:!XD ۴!`0Q3n5ط1l% 6  Y  MU " 40o@CvWaswUr ɒBvZąHkjѧ3Cξϩm" 2t0 $ 0!_!}   *#% oD ZuU޴ړ<ӘZ'׏ͷu&5K)BN[Dc V ;.*3N9 94 -K&!)!9$(*u(T"8Nc+4& o )&1#O9~7 [^ b 2 !"a") 4^+|F#s0Ϋ w#3M"y F  "#Ӑǀ:Lvƪ`yԕw6^4| b 8 -~ 6 !%Y xݴdxٷK Y"K+kDK 3E?d>g!}O Tfen(ܠBN۾x5s('!( 2=o !<+ qD ##i' =j< (դTB3!4ۭDPܼF 6 / u(@) f9~Br |VrKWHl byu*%>AG2w"14p(/22q.% -Z C &Gҽ̘@Ǹ(,i  1  b q  V0oȢEٮXowXknTB5!Q ' (h$ J  !m4 [V\5 ",w33C8:HzB1Q `f4k_S߫GJv;0|ӃAb t=  ; f   % ^, % 0C;$ 8˱>ٲޤb (4XEHS9Y!FٹB 4 hj~xl h=Bs#"$8O: C͆MAͼ ϯv(>R >"l-59"9b5/)$"#$"@7 N[czW_̩L2&ݿ]i+? C P zA1c "_i߮:3]tЃˌʍzxڔ;fMCJ<0&, "| d7[c # mt!P&"5mI  l  4'Qp`܉۵~ߥ}}yhܐݏdM3    ^  $v"4  zi7+. |'v%md)? o9+=JGsH}<1w '|~93ͤѻ͞νļ 'C! 2v5&,/$.")#Ws q!!4*>C~?A7Üs3+NO]9!- ' (&dه ޵B$[6G٪fy}ֈ } ؉q X\?P!  ' ay d 9 3 ,44 ,  $!c v]q/eWB4Wt`d%ٞ ^:͟ab`Z^UNV8}   v tJ *8 9}+D8/p [! r9 % .   #-. , q J'߀ - ̻ P a͟t!" +$ I-(0\55v0( 0m(qDNqNju+T($wg'L5Xb8h!0 1An_U1"Ngc[ڍj̖iܝ_qL8E&m$` mr3GTvRWZWtVPLA 1 'a 0 S  ^,7\ M p D4{ B@ H4lAz: -1 knx%**+)i*(2!D~hu 8#3>J|Cx+ & {# إ Jõ5W׏#F"#'/'$! ~/n L"]b`pOqr1%a0+ >vޤM7ޮ0UhlP37Y$*,HguRE4-~O D !    Q Ws "y1:7X /GA?`Viۨؖcc֫Jd#@7;Td~^!Z!H`*<  PGM"% $ !J[ F ; ; T \ N K3  ޠ#܈0rl4/']5    e}:/E&SQQQ޶DL6V%} m qt0F  %`N `1 J  L<1:$%?_SQ?  $ Atz!r _k&U1 :> 2' uz&\? (e _n/ b  !.kiܶ4` 6W 2  Tn܏Ӧ~֧|6dmCeA 6 "` I $    Vt  * '964h*.5&]">{&Q# N "A ,43=)zg UM1\#(#U' M$0<0L {0 f'/; K]'lPjq5l  YG5* 1Y s.g!v'L${Eр1)ƌ9;ֺ̿J.TTkKw=)R   y ="9 l.f!k~  $ a  v   ,0,"r: joX}N    2  >  3  e/{96K+$6r.o> c  bl  _+5@Jf N#cJm @*",a S : T2sz6q1D J͝~طqmc? 9  lh   @  p >J(r)mZ eO'HW2L  sz| 1G;Y8|  5 ЙǤcӓ~|~ (=?84 NN !  IZ'#Z& z E H |;g r@^t(4-1/Ek+f#G%(w: ' .R>/b&Ak6hۨϰ*%Ӫ;7G $% %z q  s gyf 9 Pa  * m ` u@b=ٳԱTߦ] {Q:   ^(-̀C/k(tӓW2!"J./3 . #V%0M9= <6 /& 2U & Q y% Js %^>LkM +r'd#{O, f O+*ο9'ç R )X:f"900V|!8&     1Mt7v 7 /  pF N!B*v=YDuC_l?;J`9 R = 9<`3*p!Q ؆f"$*' V+ C =y   X;h\  YX!( *{% #:ݲR*z!. ? EHUL !B" 0r -  ߿2F<߱XfQZ̧Pz>^.b#'&" G  -  i vp-!O&դӟ%wT n83  =&B& Z#y212-&&=]>#+O1H@2)#cW , 9 5 V$*B&R~RPEM PZ] Xa K V 8)< 9~^J 8 qC  $~ ^`+5{?j8t<& G 38ٚf~y-+h_2v3. )#)%%$u#1" `:!&)=)9$E90[̮7@ C $$%(X*@408*6/'0 2@* 1j(%I&.  k"?IA4. "8 5 BE 9 &[lCv du   bs 1C54J8KO]a T(>_ $ 3   $ D G+_ߘ]g J.oPP M   /!Sv*d(  2 h</MڼO"F0&Ҩ~dO e|0HC P 1cogA Z AHu*"m  Bi-{H= F KWE8>.1 "fn߻5а'ܟU0K0/0;  ' O/# 6 ,  Du#;4`<FJH?_6VB)ODk   A ! 1IT@~m+;IK KDB=~ 1O#snZ 1?l?@-vnmN 3@$zd4S[> <  + } b -#|)Y )' X%&e%D#X!m ([+=:*=T0J[ " 5 J  i N Ox[ 9N\   DZ-A>ݹءJܳ=L:.%< )? X A Bp | Z i4 k ] l H v\nK%\% JQ b7$4i93XQ e*"q 6  sD ! $%d>5C oF!@2 B ;@  =l2X#\s&%}h6I)PMvC%5)"7#x9%!&8T :ux  { 3Nk%".\7w;8b;/|% 97  i1Qo z9 2 g P:j3]!$Q I#ڝ \G * '448*{ i S X v #gZ%))$ '# .Jh i*gnt<_9k$&: y % + +-9,R$=ncNO$Z7^A?}-<854!:S ;"9t2 j) &d&<('L("r#!t/H^ m-y Q ײجݫld !c   *"!dhNZ!j?Crr8,(R A-{:. < . c g rp/&E5+\~nGEy+Tg#$Am9Oq -o&-7{6a1 h vkC۝/؆BI]!f d=R A1($}z `" $hr aBC!2T>iCX8r%@ 8    G |!]? yV0I aF b!:j %*.  U cT"MG ) B #sqP ~K  `st cw 5^ $`W + <] 5_Zs*O9P^S_O/8bxHLk! t)')}y#!u   ": f,7!  Kpi+RS & &30,lGb . u>8P7Qn%}4 OXG;Tz# w 5 #+* !A]9 aGRC 5 ^  '"auNPN -g8_2= ! 6 #9@*QZ@\_ G} j%eM   j a$j3k4qF(A1Nu&  " !   [#  Z   qT./`5".`"O:)A=(` ?!$8H(/P;?Ar<|(|  ^1 NaG- A Oݖ 1k u>a#7 %!!i    ,]SO(`{s%U9gFHF+HMb|R0 oL 9P tM !.)&/ . ,$I%q^+51;)G& P  RNEe3ە _" %"  9  ,.  &F ިT2W'%~;oJx l( _ 3 ,0 z%L~Bo Q _ [iY  7^c k  2(&ߩ܃(>JL`{ I <*UQ-4z$T4=<7*AUc + X[+Aof%"vf> M2, < 4LVXFR߱FI7 "U  3 ( zxU pv ) ) 67<b7{$4@vBPmks/=v>% 5 f  ;K |#vMyk4   2  "1N1S; ' :ޠڤ -S-<`C@3#`s [H ^~  *[p5iK Jdp \R&T85I.MHT=j0$O9 |+  -   4z bxqr+f n  ^%&w &KX= Xj 2d c#!-2aw1L&}IV3D&V&C"TN  G )8w%_&#H%"W   #,U-P&B@" ^< N[XX|!Q $G/J:RDHJQ߹G=:)fQxu 02  0_  c 9X npR r/  #_[ uV$l49-7<4.".-$ T$   ^i  \)055-2H<)Lc !M9 D   ~/W?  F &E{qb $ > %U )&8a>b2: V 3YHNLn2&@PQ8{I7{0 E 3 ?U,$%%L'>r,5>FDL  @ e2h a 3)  26S .(i%B01 /PU*#vd:J?A r 1 I s+E }  g ["  '! g  n1 !K q ~  PE X!4,j.(VwC 9 p %'$u23!hU ?+  6  +:z}  tf Nt..>DlWC<:n4/iz$oH      6 pm"0XB+*"@+K:M_EO4^  ( Xxq!(3&Y2e"\F#A $p'%;>WGjN N A D<6# ," T$\/Q B#&,A*-y!.r|.3&1%)I? +M:/e:)1OXUpDP3(>Y$M9; ejX!K6G  2i :a+:- l&6.g5a[e .ip` q  [ d Ghd `},90+,!%mwBt E<   E[ i"RC:P; g Kq' | d dR | Kb^\"nb " 8nCz \&i}'47:>4 <  ; B6$h3 *BJo7G4z =$\*)% # # J X% D ;+00R'3&iQmLs.q 4G I \P,bO< x s9  ; |B ,yo #)!MWx3 5 C\P Q/&z!VL j.  hy$#$,+% K O 8 okEN%j lp< 7  %   e%a4<?Bq#] LAp lrF ) 6 cvz%z}r 1& f)LPz[ &JL  T I 9  T x1  q # 0 "!AK)M*o& Y z? Y i H 2 L B)'!%)!"E$H#%1xw B@6"#e_M v " E  )=>/de x X  Gp 2sN"W&M(&s   &'D/_1#)4!^Z P *+ x= A   /&&2J8{*_go"&8.B b0 ;Fj  7  tO$1&]  $ :"!AgF{ F  \Tn _b{ QN % ~ pGT   X  $2,V*( ' m  b8 &*/ .G~1&hU/b$v$[ 5  _  f$D. f" )S~ ` j12DnpON\!L@\ ] &a0. ? , E$p ba% /"]H)&k(+$n ! #)> >aG!&&%$9  x :9j@Ie ZS J    |  F9@ 3 lv * %)c$EB  t"wf!:8'#A+2kl$).)H;t"] z!/// 2 V*4 u8qWmLp0>;4%(%z k1"!2N5g-# ^%c H   1 R C-a6$(  D p47oe " 9$  F KYn R?+1k6|3Q%fH ( Q SWL &N@1kz&l&H& @ xphbCB W4] &\#8Ri B  ; q kh1 >eqK!%,*-$?4>%! , 2 X54l1V-o&[`6 L F+?&,@1g ,J'({'V }`0 0(G.r5b87, 5 W Ebq= u N:CH b   \ *'5 aO)FL#!$e O   Q*  (z1Uh<r0)I^P P e P X k+|)+%eq fg ~{=Vj#!\'!g N l2:{9L$P# 'A O_#A(A.13.z(''.. 9' %/X10q($"cK%\+.+I*X D.4AK Wae y  H7$POk:C7 6!!r$ 1S#i Db?Wt\]8s { x lLa!  \S% 1 / >;u$2 )0ot%2}Ls M W8K fS}w    -/F aO8bEZ&+^:4E \^K O> XF5%ei o$25#_%!"j+G<pIqj+z n -V(/8F$RH[B 8 7G,"bDGb$[:C!.#|"!TCG`A+v:M+u7 N?N$e4vAQVHKBGmE?4+m&  )@_ Xqs!oN#'&(of(o*&":/ 6:i6d^9M}u" s4j+"< vE"Sy&8aV>X^o s_<D1'r %R16t1H,!D? c | O8# Y<4q= $ ++1|/<1/*% rhjtx>&G-4;Z<G{9 61u-!'LYxJ:  'n:;w z :_  %  Sn@?j(o .q  k v2 6z I3S]oD3 8k'/|K+")N Ed9i4c X 4 ; wiSIR"D^m s j "~#*^-z7 250$W ]H5] |{]$,C?,&!!y?6( %Ff{ WG !aB'BY cxa"..*RG&v OF aTBe?Qt!} (TL 5 R Yt ;[   S % h%i  *O0?m% s#k,j/* q \ "I Ki` %ycv)5@856*F`%|+m+)-e< &O#$%',%5e@B:X- !r$B#$7I)[6;"3# >U SBH[@&lBj7'=S084p 2 Gg(z  =O <"/C30133T?--DNE i 4  7 q#@%CY#  6  LL b Wf"w - K oB~v UG}UR~ Q7e\ 1   E n,,O" ; 4  A  "X*]*kQ,}"/k.  ~@rf `@,1eQ6}5 2-T }R gq _ f8 S(? \)C {#AuYQ*!H"H##!*E" !=41 WKX@{7 <"' B\*nz Nin4O!Z' Q+ " ) # ~ "x9b pw p$ j   rv=n t wl"wi(-.4/F-&DUs!"#:Ihh $1Md|  &Hyc&K K Q 2_[ RaL^L6Ffj b)JUR ChW$)\#t #"'`'&Z$1XGCS !N m#JHZ{Ae4X    Z y #L S l =]^6 s Y U{!nL  HjlVnN89 BDm$&$O -6ZP'.01,"/GT7 w m 5?z)Lc=j MN94 UqkgX&L  8c  d|   B m 8"U %[{P #w;a@J5 P G  X T !fA .;' $G) /.-+"&'7[#$8.@+#a,' 4%Ua/W>. z* l? kw:?{ 1y  CoN#Z% 3 F npW r( g1;=#;- +$&3}~~IHM ~q fX Z? Z ~KGM ;/@XZ|.vy4[ AUq},x\Vu?nec_Fw_W`2cO D"%N#1r*'> X  \ Ca%,6 4rK7:*e;af= : Y2+!ir[h0;\f'j%2}750=&yQq`    " 1* O |b~5| ^.Sv { 3<OQ8n w?n 1}Z50: ! H &>'l (h )SJh]VD @` LP EH v  F tbG _.U 8!B q8m6" Q L   e #<5o$X W _-X/j': Q HVLHc{o@ -M*k> Bem'^ TS x= (jXYL7 7u,1E8c-j[%n*HGRgi a;nh" >"L#U%J+28:`E@;2&+M h%M5C"%D"0# Z= tC.QFi-#k(!')&$6 `<-xA e ^M'i|$>(p"#PI< P; XkM Ly%ichH|: ya u 6: | @j27B #\$ c$kH+%;q { N  #%([,+K$T n oOZB  q" 2'j(Icy:Wr`~  ZHA- ;F 7]av _*Sve  7!{:  (1] \4  1E37]  Lk%46 [!  8Wm5 D 3mT @ =!2-S#"N*.P7u`7;ROm#X#bI."B#ky - u \V)y83}?HK p(7$1  $}y" % ]LNh{`e `  #6T&q#i.1i(0$  5w  n H` 2!%))! pq o~  BJo LlW8e pCe  #}  |$  ';I bFp #(VP    Wn(  IQON e  %,B-"ny gx&d  a'A&t U3\b+   7 w6$x% '~S8  (rPTj VKx Fs $m%$ h  p QSe.IN!1Y%q $o'5v "c{, f  mFm-i% l,W**!  } 'z &x !o&$u# ##r  lEhmHj  #|| i l3x$- u   l OMlZFy  )t*   ,m z%  "~$    1a`/     U mDrN :v  #"   "xx!! "      /_`2   $  x"  ~!   ~w"  /_a0/`a0 komi-1.04/komidata/sounds_laserentry.wav0000644000175000001440000051350610075325104020745 0ustar allanusers00000000000000RIFF>WAVEfmt DXdata  "%-)*! !#$$   '.22/*# )>OdmzyxpbX?3 )8HSbbmfe]PH5/,1LZs{oM? ;XqfJ*'>3A-4/Qn{fB+(Num3iPSHdUxdyrw{oKI-91BYlHznB lOW8V?\\j!LirJ2LB("54gq\C.;y"hf/ k{6_`I ,Wvw^O2)  E @[sdZ)@*U@1K{HdNWrnaT# rx.Uzr-K.fULHnwHgTxx(<rf:N2ZUyLUpGhqDkZ"y91N2T]O-7'Oa9~2_AIB A^bJ%I\u]I#`3u3wd2cU\3 s<2x.i-RBB2 $JmkV3cH P  )sb> O>Oz5hue|@? '28mb2$FsU&7_wq=XUaDDF @L=]jre7Htz_e r 1G"FARS2"@z~p>=0x0Sv3 z1>) ZI`\1JM.h/CX  ;03~B/\a+ b8?@XsACa7:EgK<_8k?mcLVRzR([zv_ pgfOwX%(UMoD U54'&#n0 <W%(bb^3yoR/t!>o7aD?zR;Oo/=@3tEdO]U]Cy#2jE{Af--_5pI{7tXqRG,XLHnf6 9 ~}@Zoe\>"~V^=yh"^nQ]z>S!Y_zTch xrnOCUiW(e?:ft|ONytpVW"-] uUDV*N*TGyAl~leMfGUk#v79 k yhY24G+HThG/|I6rl.7v4*/adT)k#o6[~oXPONA?A2`h[kuP? h*g9c@!Pd*"m?D u,iS2oRCBT@VZs/;r&>7r1VXq!.k{p#[#:wc[OHSYcRev m%n%g f |H]N%hM;/H o!fR{:POC,Ul ot0X'pP9 L v!-vqCDT;Z&[Kl4PZZ cpXUC#$!Cxy\cle>#FNBasdNp )o|iMZAuRg-9Z[o(!TW*)WP^`|M\! 6~t=rU~66Mw$sSEY ?X4p-oY6o{Ox^$~`CA Ko,AsX(jBnu'vga63"z&R o?3{S'IdX/<[=[nJQ'.Tt;!s  ]RBSVS50&u h_/9CgVC|Bm@u6Xz>zd[)@AlfZ,FW:Qc&'fju'bD@A_ I]k*ResA T%w B~aJqVjuhaPgLrm^!u>| l`Jv af77'p>06CMeH%6 n e  D  m^+lZs#E;d`= W & k K?ae/'XEMe7F,SH{VQD]6F Pv<hEZS~`31.O})B*MS\$DAFSV9~DcuKkaw+|n*_oleYMeX-Ell,#"d[_g%S\evkY5Jp=YU*f$^~{w2$ /[ lQm0t7 s];Ej=|  1 )8?:'*]D= lw` c  X _ 2g[T?;`H" p  Q  j$i d?$lx4Z@rWYs|3+M N %R1y^iZ]E2'pCH3KiZ^ QlGlXr2HTx|)  z f b:N@pgO."+yc[dZZY/Qf) N v s  yj}|:N; (  F M5k ,$Dm50JL6 Oz * ~aa&mO(" k : 0 ~ % ^q2- m Q Ls?Zv` ` ?&\h KPi I 4vby(W9V[}n1GrQ*p & 6 O  qnw1   PWAtX _})I<u#\/T w ,= jJF(8 a1&/ s c`^   2xR m A1#g$M=%e g $ . ZO:F].t'-&j NW7%d[U WP*{_#}~eWS 04^4,? <]1Wq^(v.,eG;"lx%I3e w>Hw!-5.q"|1a P !;x   c f~VmrY [' XF4 FPn  "NM+X. 4  k FN9kv M tw!q f yu4',U! D|F{7* !4' !HP&S5*)gF@ u= x}pJzDL \aPw/^V]u9 [ir!D\ V  7w|qmN:IDWK+4EW|I%681h&o7VyPU K[ mD)k*_=<U5,r>cAe= IJgy >v)$_RK"1r icq moFqGO|+   hg4 w X+=$! A{xr Wz | 5L pxW_dB VOB -*#D>G b `  w70d{k_\f : O #( ~ ^EBOpK41^g/Sa)mw , o0g\oe Z Gb!hS%"<>?D-) `rf;4  U@F-? 5?\U!)$fi9:j_&O-pl\Adl(CCG[}">W> o Ga #&)ry{x` d A" ] 1=h Mi =qE =6_m  %T."bKr?a+. , < O C n rgL01'MJUE8 |-S  e^_r\y?) *7d I tNC(q r G%'~> e <f d6mO Lz#3 {A893P TisJKE"mg R  J\jW dSE5 d gv-NP@k(q'L<;ZwdBizh  V 2D:>o(`MSNi$ X h4<0 ~ dK|d`tYmw`F\z: gfgWDEY@ 9^#x a p1.`^5Y" ~!   bI%7^(K_0>\tY-O $! rH; G _bjN0"nD NYh_> fzEz / %y*_ q/yH#\ &  + L9t3z*tTcc PHv#@e~[0fy$?W 6   q (]D l]q0o2\ihp+jO6 9J @5 (  `4\LQHr( B?p1DPrqV}-z  DqK  L  zg@Ela;  = -zc/Ig &\V  Gk "SG5(*  YbV; Bsr'k;7]('%2}>w{~U 7/ s3 '8QW,{np  Q $>=6cE%R#7UG>I9~ & Q  8 b*3D jxO ^%[!Pc}4i;\$i 'cB](eDO )Tns~0d]9  m % gEGo;`%m{  * .3[^+b=p j( | gUvQ#63X =!4  #_0w> V[\0``n F;P&\vc \t6wXvb 0o XQO|v{ ZL X y\w/R pQ? +\&aNAIL;.&pV}K,G/;S -  Q2WJC[I; A > Fd)em f2ME >Ah] lPnf  )_"H88t}_ r p z 3X&,t3 :   ) Wr'Kzgpw1Tl{ P1hH<9\ C-cd-E C  z, Yq pK",s _u13f Jfnjd3%TllR/1{~)X{' b ($?  DtmZw2I )` t1Aum,oFDZ[xqmHyC4G Y )D V W<5_W4dz|,  dsaEyAx.T,`:fO? w{ sEiUm|L<  " M4K C }S> !*^j 1 2 M fLOa/XkC` aw W!7,0< )~\lB w oxC(  7q|^+w {v%@C.[ cEP q!)mi>l.wF760Uh2  5 HxoDl lj?3  m <6 Ale;$5yo4O~)|`Bgp < + Vul32A9kV ivp&BEl~Re*Nfma(Y 4qk[ i?w=JH#D GCh O5s^MZi * r y B { R'(Y2`7rp 2L{"yuslBT~< [ 98 c 1)mFuyV ])FC.X#y <=[kj y}Kz)lx e fN(e^zlR? ]  S lX0W"-r&E*mA k ~W5 eSUavz7DDav&jn#Cs($Hqj Z g 8 #d2z sRW|N Rgr? yU8gR "QRgH?BvV ]qd :!u> -  *3`\yaz w @DV$V$ p 3{QP29Bh6 E !7"0 D xi|i7ByS 'VT*eI )*o t \D0rf  (~=4: >:Zl oJ2VmqE L $ ~"3 21Qm[hdq(c {` [6j  3I:NDYn?3 a0  Y  C!e/iLk qVIMU 45a}AiL \v/4 immcadB7Ya:  `5gM} `TM(FOb,9  u wbWt?.U | @ RrarV5 ~##$") u< L A HQ c="!"_ V9L   n  :  U>6J)VBG }d5 i ui YAI t  x !  -+=) y*) 0M C^v }{Nla IS>  lwmxR;f|, -KuC}#~xߠ [ 3 0I ,r|_J@ W}G @ M|}&]y(97 Xb@ !m]+/ g >!X T/ 5#7="\ n;_ | D5 ;(s7"e"#! ( G(x[ }!-!"M%1 _ x6s1IS. 0 ) t'rv12 [G  aP\v + q-m0" Q4Z^D)+pAu);&:3 X >JQ0 -7#M>xaVH$k o Q{Kwfw1UURV^ު"T o6T!{ kB$ =gP 3S T?=  T i} G g R" 3d +"c! MRKc 4:(V, j O!NlO7R fRgj !z QC A  ]XI d Q\ R ;mrV?% + x7>9! 4D] hC YJ zd tn! mi/Mzw~..%uK)+VA? 2SV ],%e=  Cp|? [Oyiv c >v 6Gm :~vo%%85d!. mx^E. 1FS{ I {N n ,  IQ Dm9~58#v"+#,@ )(g'7Nd.%##'$$_!Sb l < pYPc 1" IU nDi2S~;]A d >L H V{ b !aOf  l% )`.% # (.[f>0yxW-{BzvfrW -Y]^x3 p- h#\\ |rb>! >3 V\0 %L>j! l-Pz' #w E3 ^ 1 WeA5_l( C | #  aUw(t< " $@% $u! *@RZ:"a9q" #~(&)!'&?#KR & MaF , pwh1^ +oTZ " A!3"#z TH %iBu BC6 y [g+"Cmslqa YJ;DT ' l+g"=KO _ PUY>֢.y6npe?(3F]v''   bAZ"t I%l  PJgPwm,} uz}K}Bd["8 , #a _ Z (L Kq_*"%%@$"~J ySvcu K 'aka [ nB\NG[u#)),))# F D~($JsF C8G="%)(+5-++z'%9; S .  t | M[j:Ix'3 }"#&l"l#y ~_fsb ,P9W XP=C+A8 f S p =Rx> T!  dWݟ7J9R/+ 4 #h=S:&W4VGި1%6 6 X! **91vxQ&D ~;.b2[P B5 p1, ^AWT l p$V((;'%Ofs mBUXvN X8yf |C *%(.-0-+'$"1y {|}m'""'+-70-,.8(F%R6sg ([u Pf@8Jw{ < %'(($O!Z v:hx |bj. #TvT4D xr6ބ.I m*"K HG lfox݋"D_ n2oU$ {L.H4 bq j|9 ۂתێnߖ \ {=U!')M../-,c'^$? ,D?r%vOwK"&+M,/,,%"oROxa v o}7 % +r23 WW1%&<(C(m%!ld!qc%.)=""%~!Z! B6;(iIG!@ `+x"ݹ'<e Q! !h y ,}{Ao;c W  iI_[f'5rW 0gPߔۜ؝|ҫ ݛ\/uhO PK`W 7u":w7d .    ?2kP|  J9Ol1 Y%# & \  %9Y% Al0,ZHyka]O.@ K !5/o,9"gW Y'|: Y. lI=Ca 9:ڞ:ۧ]k$/f| !eS{ d?_ wn H u52NsbS YpPJ F})b+*d-"C X!V$j%n#*!#DeOY6AFp !7X !##7"!Q D ="&f**t-})5+$$H\%P^,z5>s %a7!7$((\)#Z!pA+E [e] '$ YD% 4&gFSM RadJL7##H"sAPsxߥX+`#8ad@y~ 7? &* yx&}R ui'6 x: 2[wy$=R Gi߼ߣ> %zNq Lm~Gie 9)3"#$j$!]/ ,=p jACD $  ctegbdhT7^Ey G "&%h$/! $aagS  $l $%'&_%^#{ $ y C&;"9%_&|(%X&" ay y ayd3 dS!'3(*)X'z#A KiSn&H" d% , k Pn% 2  ubT_K*  G>?EQ  M6k +UJ; !J DRFz]޾1v?XM3`WDMn f; @gO}: P(RK KimI6t= SiDF~ H>0Ens(N gkqN,  H$I \$&'&%c!- A{pcUCX \{ d Sc}1 ?]>$%*$))+&"usF% g KA"')Y,**%#V  A+! K;( 3 rUe?# VF} 'Z()$)>$!C v= ^} U w"5\ /_}<Nre5 3%6r/j li9X b^h !ֶԶvIva?|ZS< __e =&D[`C ar6,72.z8w.,6?tVZQ>=v " l["F'&0(&#!hG gCGu7u@dp/y  EM ]d L&l',5+,(j%! IGCR b-%n),z/.y.(%q'$^@ * nb< < 3>\of6 lD _&/()])%!jn lOqguC :SWB tvG6a sF&"~=mQ@.W D{ Qyc ?rF`S^){s P]  5FG4` $V  W*ELB? J{;mBr W( Gj&$n#'  + ! oF{@*CTMG v YX 2 oV;2' %$(M&N%"; h-m f;p$ %Ev^4Oki y 7b!#'$($(&#II]!%R39 q $(*+-l,&,_&"1q b_L:2L c\Re? cL#g%'&T$E A "i!{Ldx 1 c"A L,5/ ^Gd6pV @(dh+\ As Zy )1bh-9 Fqc J3B [ WsYFkcG  * B]<28HKD֞ر܁wwh a \ ?SpYPJB *n s aV q( 4 ]e T NlWaWkqCR9  #q&%`%"ni=5.pC zb@.$ aA^myl #$M& $P$~0J  L^g.RF zQYX"&''_&x!R {8 k#0qnv K /q  RNmM2h J!!c ,I1n3 FWDO*j R!!R"/Jw[Gv_a)@\Dra59mU};j/) 7g k1U1pp\ e "uUHQqJM29[Rij=zCg"ޯߚi߉ۈߋ~X-c @uT3} X!~R!.  YbmkSk3$Z _ 3 t ,+Jm;=m(`/ 0W? "$#"IF1SZo K ` $!$3&$w#!6x    !)m"`#$""E; k+3 4G!V'j&\(}#)!)FL5z: x M =BW&zL] 8 J -@F c);q `ne "\)#  pe eT:iW #tk:(f)r9tdzk RrD-Xdp }"5S> Uu\`y=fsB߲0:41 Z(y*a WYmY]Mc Q!}""/ cK (\^[nK r A !Wu..`~N V!C&l%%"Q C S;65 I/ "+'&(&%"{) Yh ~c9Et ^?re^{j(c,ce[%~&'q&f";s #G7HH TB rc^26 ZuR,ywQ CMH NtqdR^ qN Jc  L ۋ29TY rXG\'2O 1D"We ! ;c "޾7޺q , O VMfta V%c+4Q d>.2 9D, S$ :M5 M "@%m$W#Z Z9cj _8A    4<Bgs\te "1#$@*(+'H&v! .w3!%*+-+1+&#P ;7 {'wa  \Oj" %!%%&&!ej T&)QX72 1$2wr + &`I+\ _l N [o_ w'=R1 v1&!9fEp.InJ2x_&{ N b+4:w݈6MTtX7  Gln[(JwguDnVVGl(  eF ;% w1H h&"#1%#2 QEV T#V w z- 8 @ @HB "&'-b,.k+)\% )}iygx:% `!C'*-/$--'X%J<\ c b `]-i}lqV1 t:p#%"'&#a E ]! QJ`rlZg? |pwn53 "jRu_iO W0*cuMh# (^| !ޢl{2u U + II07}PG>FIh"^ O Y WJk)c݆ٞmq 6   j)N8r\Kw(  EF Z1Gm| sgHKH@8}: !;"%C$f"+ vWJ k#G IpC!8 j}< n +  $~D h#m%0**',4* ).$)!B$ u\t= LD#'),)*#  v)e~!E (  R , {k=rT? !#/&#&$w |+"M 1 V L3Bjg_]]_,[?GzwI 1P1_ ,G/9%~ o?LP C ` v ZWJNRCi@gZ܉ړ;Mp$) U ac h<++cuW;d d 1 S LfLnU ut< 3 7 3}^dDk rf"%{%$!U=1!r#<@s qx|T ^ c 0"%&")&(#$"L)Vf6mn/e Z!6$%*%$= HgY>=*[ h  5 x5!h 0T ,,q2tT.Uq/YK` aV  o߻!#&&##6gUpZL s N H!x#"  m   A !/$E%{'$%  VMC%DF J{ $$%!]Fb bC /P<Q  { P| ~\c@K[% Xh :D#vQ -^w/R &.b ieܠIQt+neR`gRU i$y- f4j" RNn0xSJ Z \7 2Itwg9[=nA9 eVif40`I8G`L N<+lO NS; +#O# _ " +sq2e5V,(!f%w%.$ "iiG!4v X j0 G$$Q&%J#   <#E%e qh "/ qV  ^$2,7Ep"m$$$ M ~(Mrnkq'Jh 9b Y-3.Ii%: G| n6>k| eJ /b[ER7 \ P4tvdQ) z>f < G"x*f޶&$.7 |:(:>VT6v &T8!Tv 2.(W5B &i gn"=@L !&#J#f"xh~ 1`I U\ 5- . X!m~ '!$Y)(])&j#w{S (2+P/G4 "&(M**)7(#'! d25 /v(=m j~s_XFZ  0'r#Z$K%%!.) ^($nWv< 4 0*.+ ' 87U $iQ 9&]Z 6  c$w~j _ `, 04r_Z UW$߾syLهקW4Zho% L$s6 wn  q ޅM߉L ^l0 87ujK !g%)5zi|+9 m N&xf4nW= aZ!"$#o!b [A-( 00`mQE d k' E$&+a+.,)>&"\ 1 xYW. 9O$'+0-,,&#7( ) " WBSi  /! ?EC !E#%%7"Z' A'z& q+kP raJG\yKSN~}]hEq |iKCQM߮`^(&c)Cu ` O CdgR|- / , r e^ڏXׂ3;PptE viIM95 ?sLT( 5 v+7 N c C Q&]eBh l!w%$"!< usuQ c-> v$SB2T*  lN9l _ Z#A'J((^'%i f N^.g! Vj!c%((*))$ h ,Uk;IB N &?_o +T I|!'#H#!3Uv}-:U_ S- Ke{f~^?}Av9fhr 4# N!? ]IޘN^t= _tO[E O?ecn8UM4bSdךۃ)ils=XSC:Ql  ,n5d;q + fj Y:8`EB $ % {'9FMro  ### L?/kR g` q K}3=< M; gd "p$%$#q.  PB V>#^%&% F R}Gy%`D%D= 2 *`.Yt RwE_F{j ybhtUW2}PCEARM:^ 5Lc# kU"=ߑOFbw :E |!0ߑIB@{ZM)8j E<Uܻފ'_LCrM \B[S^ {i 4~ml{N}? dYmj:sAMO#( Xptq*Y7vP5LS  HAt6 EX^)p^  !"^!zw Xh[m E -  h$?iW3ah\s7'$#$!@r WUL,  ~w& "5'&u(X&$!V6CfW,>g Q j8"* ' G!#Nz`R"w$%5%!s  |g9_}k ! w5{ &.mXO\ * o sf1 vA 8k]An Q;v6ۍ'=U0ai+B@$g{.Z RL`I'ަVI D' *beLp=r+}n>X \6SS0 %Cdr6w2 ge";%%$!N -8xtd-o 38 /#i ef)!#(')&=% j |Gf~$ Hu!$)*,*A*E%#|E F #! l ?%7L< f + urI&I ;E!"^$% Q. d9  *2 =Q9{" p n S Q26 x0j3 HPW W )+c{ Oٌ/(p.i/S Hp.P@BEe @ lܻ߯rrJv4 #Z&$ c2^ ]dvx{f5h?'o)D4)uz'  V/ il!CH]?-!#)&r%" 4=J d[b dK1| ' O  DN  ^%&,+-*()+% s\bW<(83!.&*+.?,- 'S%La ` ? '#zP  tQ3Sy</ 0 #s$Q" gidWgjZ CjZ>4 }P"U_Zc6uklW +y%'Qq݆2.1[F 6  Wm':W^ <s"T#"!8 Bz:'nPu +tE8I?U{rY_>Spt#lBIgj %8%t [^Q bfߪkinAf g( 8T+ lZgD8 -mTXg6K \ڒ'^N 3= )D4t-#9  +y;   [V4f@i*  jU + ]d0->R| C!%%$"'TadJ&s*0oiI^ K =0Is T!$%'%&!? n $ a " #"&%%e ==$;cEK   ] O Xi)&aI8x U. iUBZa u"[,Bm.  uQp8_ ) /D+~l@.T`8xA{B 2x+ &S_ $.lqrAm;8 j.t܍ߡް (mfo R#:g*A5|L, b8r= _iLO&  J]k Q ` hH 6^&G  "5&*$$|@IsbT=: 05P "!0 At Y  , ]g G#]$&#$DL V+2 q C$$%"= tR,~p6;,| h  GtH(7 y] Q7 jZ Wcru|f J7hn E_A8ެG "T[bvtgf P-) 2LY+n<  K.& 2~UXh/OaHXWuZh$Yd}eI CtQTz^$E 5&Yi!V tK I29\f q t F & ? 1blY~t0l$!%8&a%# BfC\/U m'# #$S##"YC~oEND jWgu wd` e1-S#x%%%"z? md;0My 0 T Xlz-25!Z _& ;A>g( L  )af`R MY!߉ۗ]G "(jA{MdF  SsuEA#@8c = ? 6 =L0D;zxA!dK]v_z(fxS~@&p EKy!^$z%$" L KW{  ke I }/[m !%S***(%% lP \~"D#/&'!'&"s '>Y  Os,H}#  E2 :k$#O%!&'U#"Z2O 8VuR2 DY9=1HPE #  eGh367 ]fVC  r&\lܲݿwQ,$vK|$   .k qK[F { A 1j}e @ޟ5O ny4gL\TH()f\fn|;Ud bKv PbdDS`NK"%''#%"D*C5 !,l tt; ..F;EMPE`L ]~ G$M',+,"*&"A .a .+!u%(]+*8+%'$&I edWJ/ A= #)% '.qb e|!#%&$#^ {5 W ,`B H^J8+caG/Y~ly s2I}d'S- +YkF<l_t=;f -8Q`691 i ] - m`k* ecQ-3F|o5j . h hL";qOuYI t qC d MbB gO `Z o  _O/_yx[J? w!#'"'%$8r?u avq\ 7/=whU! = OZ > 1:!#(d(`)D' %/ Fheh|P* ra}#5&D)%(,)t#!6 ^E8, f%;j @ M(_94HRj %7!$$$Q" \ iPl \%! \{ xon\IE?\8,n nC <<p Io6qLU D^}: 6:C WKISD/ڊߘg #' w)?W11<  V2Q T ; f=l\F c >  _GlS Qi ^"&&&h$?'WjC[#$"1@h Z LN3"!$! I8m@ o YD!#$%#7# p4}E1`H_Z!$$% u. !  $  V"hVU#3A _Zd! 5W pEIgo|Z2 BjEe/[J +BZXm:{| &omxy l*(($KP~S i}X ~1P MbRJ"(MA@B߲ݝ9mK =b\! w ~;aq|<|, rPL  |6O=N w  6"N+u 8[ ^z "&%%"!$ UY&MA~Xm{A6!F"'m&)r'&#7F_G  {  ]3.!"# a% -;i+w0>T!*#$"B /a9zg} ig= M tI5)EA ,:; v\5 @w Y 1T.>Hv,X[k|UratN=Tl >  R p@ fS!?yb F3M'(5R('^$%;CU?vH! vns 8zV :45 Dd o#"!}. >O4G  ? x |mEb;qE 83!Y&&'%"L e$Da, #$(*(v+) ($ O k#8 \Y x#Lz_hOA~$T"$l%<&z"  bje F]I  lt O Nwm: `  l O fO.}n Hh xW:/j/9ٟۄwp ܃I6FY84C<.#+Gn Lw 86 stt w XG W- 3{cC+#Y$pYd;}"!$xw>Y9nT7 @.":9 %V8h$SgW 1!$&%#!Y R(Ive~EvA !ii W{Z  <"%+I+-*)D$f w j#e+L .4#_&[+p,.,,( & I j M  IqNrEg/ hR$V y\!H$%>'##$~ .%E;Y 4 \k p5Gv*ce@I u h  8R;5C@#*C ]S^g =2Uߎ`ڙc߅t;&h7 C ) ET]Z8 m-$ } f  ylDIaN1V |E +jkAlv~SMs~Jk|sA~Y~hq 7Xp4@uus"$'R'%u#4 HM'bpg g Ys(* d y >S D&(..O0u-}+L'"< R"IA$ 7#)"(+-0--'s$r ?(9 2B.PDAd x_d & ()(a$R  B(ye_T?Z '(8y H;c/L"K)KYpV3߬U^AE"! su{ ^oyg0b6pN* 2 }; f)QSܽZ$Zl5AH 84)nG hcj 1  8 '  bxxxgs, =!^  e1c|~'R9 C|P$?#&R#="IM  dB Qj \  )'($-I-o.I,+%# *9QRvCTJ!D%*"+#.+*W$' w{4N ^ dh nWhy;~Y v$&'&#' "BKA]w]+ "D">% 6 hO2p -$߱(ߍZjL  ! !OB s! c0qCUcf l 2 60 ou&] * ?-S!)W/ߺ*i; Q 9 Dgvb% lrf , ] w8=3q|z9<%= a ibn&%7=, W9!?"%#"Y pB {S 7o ] gCg$Jt hE ~ ]"%v)),l)@+d%`%4R{":q@2 $&',&$ p2 53jP\E h   W > 1eEPZNn ,?Y"7""oE :F@,V8TT ~Ad$|"$W @ YjHeF`nR,c?Qi?30`n= 8 !:W9k>l}7N h 4 JyJJ* b yݐ\ۖHE6QA LV6W L%i,6 thv<MDx 9I ,Nth  9 mES 7w[ { v)""   L/Ir kP[!o!T t  ])!$((x+u'>) #c#49 G4Ag9<^+p U : :+az }yU BfK= iD=h!&(v}""69CG`o4+n~Hx6>B9;?PN#a s;  py^mf [I m~y }w!bw6, /g 0k "L|h N  HH|R8 n `.N!".#r"5N 71a|n0{ w h Ec%h W $k#!ER .kH= j"#9%$ #F!Xv` Z!g `beL!1$>%/'$% 0< #uX\-c +4%%&$ {OT $=,kksp  C g-  <; +|' 5]<,Xe<T.j(j XمZm(A9n3uF HPnw V[ >S. { vh'CAac!HzU~ ~a+j'm __  TV& a#$%$V"D u#nBEWBC p h8[ I # A(mHr07 2P"" (K&& # i1RWs` Q!%')F((#w!H V  )j" xN  ?g QmnO%&'N&x!THM}7Y}Q$  \C[j *rzTo0 K7 ;~Q46DFO. HnKJ e5;.^ؗ׌֬گddH9ojO (1 3@Tݧe+  ;|?  _-kek*&ix ! qf; *JN : BT:!u] 3u< %H$U%"\  8&C]@ )   C Y && RH$%)6(({%E" %oN"G*`K =P"$<'*,@+l+%" rGNJJ: %:: Mr]ZrJ $*&e'&"_tPrOa[I !& ]8#$ $  }Pg($ iaG}: Hv BB߶ܕ)H9b.}' B QY1%W  mr }&oY;6Id5 )~z %q  7 R 8-:Q_  @  qMp SE9 GH#s"%#"9]!  %  Z9+$W | J 6 ^Q!$/%${# w=s~j< j  jV"&(5+))#* =9njv VC P c+k=ANT o"]#$$0!P 0W4`ED\/ ;! J[hvox;Q"Hzu?+%')@Xa   _ m](;a[R - Y A - = hE ) Xݺۦ:Rߕ_0kf6   wrNm?Ai-  g z 8?JQde y  .@@_19- JX  #p""e}lDB6l7a&d Lt/@H4 iw[_A(/!!#_!! K lZ=x%W/L{;  $d%D%m#4 DMNGKIt w Y V vaVIp<^vB  @s)Pq_ 8 *9c6|s$CG1VWeM6{H UR BY$R{%!f> b ;`od 1#e2THT>\ :w`|ߡr$"7L#- o&HA Z*q}X'e ~ U<O /-`_<f0A8 H  mw"i -`!$ \LP i2ih  7} M V X?0  G?}v =Do.k 4?N20~jnߢ\+z~F{<< r!v!\knda^O8@S;<qw FG2Io9*}F `,= yd5o%ce_ N j~S$X F $K!l0 @@# 5 x/ #2~Wv>q|b m InE'b{ ,J#'""$ 22y6n e$#%$"4 _V0 5 e'2"e]%9|S-X8##$j#;@ [-O[=|Y  y7 7([|CWU V m u?Y *F}IG  D % vJ>vl ,tݽFk(1W9 f3`~J ^Is4z  H8>mR8+N}{v }! Ju1-O 0N~i5 f#t "!_ H. NS b6 k n 5 U uy t5GD   r8#'(*a( (7#0!$x ]?1 t%~iB q 5(A$+arGf #0#$# 9SCIv- JEua iX~ Z6x}  ] X BPl7vKnszT]*i c 6"ݰ ٭׽])}38 ;Sf_QA@  X ,``1iJ s"10"K5q1&U'yY <J_t|pk-MH]y3&& ndOc'v W G k!2" n ,53(_]z  &  ar0 *#$ *(*b'%! ?cBz8 +$')(,)?*$"{ "rH )pl4 R\S;1=j w!"a$#v # '6Pi~7de hylea' &+wpVf/(; >xRdBgQ5-j -H2 YYI~ZDS0GVC/?Tݜ9K t2 ho~xu~E4m & T'i&`) nsT ! xXnJ@\,o V" ( I  #vB+N Nb  P# _ g B"&&(G&/%   r'`8Rq B!k%b&)&&!cv|P3Y o  =T  F |?  q!T#"! #Ro8G c/M?U5CK)d7GOZT:xg9$&]{ vp_ *x%NX ߎSqt4G- l A }Jwhx$lBFeڟTذܒ}  ?AD 7knXs  | 3FE1 =x " u ^D8.^o6 S"" Z  HzW_5Hnx aht XU 3[G"a#%j#$ b r xg/l= R"d#i"y!}a [XN|(uL c K I l KtdV '}tzX5 N>8, s d{Vp-NuE@/Bsn4}]!co0P HL&idC\ wv^KI$ .? %Kuk ~]Aw0A p"M $|pH@3 s z9H( ~xM ` 1 W r f|!K"|$!" u04gUl&c#$Z EjZ":",#IP9n4/5 !^5 ,?${ x8K g:{H zw$Q JO{ j92W\S3pBg <PKGh9c {E:9  )/[T / v  H jnHj",|+C|gd+aNk9N[ 6-4A 4s}W/]>_s:k Pv t B~NyywMX E ukY3+ |P^%~7"!w 8-lM FWIa!c'W 5-!! #!B ]  ~  .X ,U%!lkt !)" (9FQ de^Cq$.e9 ? S 1 X`l U 0RZ*}3= \ Z = /|][ RI8 e#(ؘٙeۀc~sp"_*`lB _37RcOarHuAsn ]/-} ,7yC .SO   re17kc^ mI6 j P SD3cYg f( %$&%"lV :q/~Go  &#%'%$ \[ KwW u ;g@ UV{ R / 9=!!r"i"x)<34 l8[bVde T$f2` vHQ 6    W/~y;{F'5 "> R۫M;JP\6k.X(uy  t ZoB mw&L+@ jUuLqZ)U gss&:o+P?j"3#F 4 vM/X> 9MAs 7\D7 zc @"! Sqxh!: { qS:a~g"\UcMm e+v|?<Dtngd" wbJ   [|0y.20 2 Nm{H3+l%%,M) Q P\ 0E~ZZ  7 p T,,B(\~7 5 Tmu!D Rv ; ;'5 >YFeQP l$ Z#N$$B# O+M*uz%o <:6 ri}(P_ \(4.uea_T:ilNzGr{- '[ W g1*Ft= c\ ^jVEujy{'Y*=n_J }m8Olm`kp9 / EJ_gZ|k9 &q! Jj;.jDEx s  Ft\!oC \o}zCdS  7% N" hzVN "[G  x gj_ t )y/S"72 /g`"!# 4hMZ[F Ib 0 im  92R  xU/  yO5c ,6@z *1+ Ux'6 YT(N"B[i`I?%y l+DFqL  G?8~;|F oj qvlJe"qLu34. 0^fY8jyz R HCj S*Bp _J% Z2'#;t  O S!A!;J\3L Pw  ;R nmzJ#"w$"6!Xx lqz V&| 6hx$]eOrx"' G!i"!&0 o- k[Th 76i T1&~)9c r = Q )1d;Cu6 YL 9<.*o߫yBp{1T "%/iF^y v ~B'R y   5{%-d5/ hfX+9 ! ,_9%o/<  "! L( r[vG?yZb C: |K<XU} ) sHq$#(%" )| ! ^ M!%&(&a&!BTy 5W4  _ (* ' d'=eJ+g  !U!l{K ^XQkz? W D z| ge+~x N x 7 hcVs\'aP 8n u{ 2WWݦ|bU&OOwMe#Ay:  "=8/b$p8s  b&Ja'(H:;#XSbw ]S @ 1biLXK ? J"G! 83F==D$ A 2 L Gm% e !#=(&(&$ t [ 4dOA"?&(C*((##J!|o ]a&$7!rpP` ^ rhb  Q h %H%&$ $ (b)V=o~T;X BEx($%'g%% vj n7     yy$R_}%^: TsTF W\-}}Y '  ?,O1lFZ]>(Pq'k"V Qb, +. J[M N }'y@XH    ;mXf_Dy]4aC0F& +q $-Ec   V' b  ^@rUJ(?U= ; S ? zF}%rZ "!y!m ^}$< Z?aIkAG <2vsa * : A :2!!#!"PA+I --I*0H;S. $-n'!""!\ `2UBS58 l q {  F~ /{fh]{  7 r Xb )|/<$1 *1j* +na$V9P~Y[CiQmW &xwcP _|}- s j2 Bm?#w# R$qgsISF(P 7 j] -z DZ hx [Bqm" 8 v$F.Cc ! M)!OwdmIL3 0 P6n ]]} 7 <  y d" nq9~ m 8+t#0N 5y!!e"a rBOl%AImJ9s $ l n  8 "&A ^@ Z= ~tR[^0  c N BxKc4h]/C?Y2 `9m3A>+ 8u'  P7ei69IT M"  9q7N~8QWTGOi/j f x&TI/p>C ] C : RD'Yw>,s / ;  O :6ubDzl!! ){FM\l%3 5H; f<n <D$ e r  9@[|>+u"2v !("!D)+ 4/H*  {,a _v,  +9 b $=hSeC*  A,^(] }xTwKyl . B+=8bKU) <& I[`u~3s* Sa9kK:,`snDK=o|q\D) wX )?` C 9!{ _V[(!,d4a xYi ) V_7 ,G Y !v l%$%" a( uk`r;ok_ 7"#"y" 2  it +XLvY Yrqg ENq !:"#%+D &UyCaUEMCs   < +/Za =  M~IB~2( Iw )#eyR!`XA.7:%~K = 5 c 66?9+r:;% CqK )@rXk3wVc:YR Y:N |2 AO wzXA>%hO & j "!epK T#T+}Q`( f fmK G OrOLnD h " 'B&'{$|!0 C7.L g SSi!$^&%% _ZP wTH 9Y &r3_$f^  !5"CqDg9Xo/ A 23Q XS$?"#}`3R)9aO[\RVwMBy 6 o l+y-`!7Yj Z C ?%AgCm$ s:tD 6;ߎ޻o \^ N,J$\5q  j h  _qS*EE wo H  u f z-Iolu't? |"?"! ,> =M_m~`ii" [? !  e '<G~""k#!q 0_^>El!:$##8q  ;jU.-  C A2w1As+ AS2P>+ B8h`v& u"6 OI.x%tMb<*HiY.WP-" //x B& ;> wj< h O y 6+ V$nIf-^+5M3L y'ުy$6 %AS 3WJl"8 # Y   .`;43 G "  fpU.Td-be$ | E! ( KL%< > gbg 6a<. #x 6Rja[ -FC( #{|Vh63M#r bV> c( fpj HZXwLYH 1 K ux HtHrEw~ q']^ P`, L\F+a X<j3o GvP "Vo~Djb\d~8= GRTVq9Ix C %>[> Q={ Q3`~}5ApuB}>y-bR% ,*SX J?SM3W D(x5 yc MUb3P  U <j 1+6\^O`X RD Na4u8w0} y ( " ? w  L k :U`A[:zP@\' PlGdL` !)!(te5 x G 8 Uy: g, $"7F +cc_;8s |wLJ1 PDo|WE=3 KCr6pA+ s D+9H"tMZ} N=e RzlP0E\$ k$YH-!U[ _"=C H]!H/k tG"  Ss3Dly0&@ - L~ahVp[H'mE.< P /!T7m! 8N N ""$"3!*- # :# e J l I ;(U N  [ .!1; b7 x;BL5 A  ' 7htAt>J( . & p 8s[,kKy *4 o3mW0ߵ}vVx_Z2Q?8X #[Boa3%8yZ Fj@#B7 3.+;_ rRpr% h 0/YH6K hn$#&#9"^ Tmx]5K \ #$&%$ 8LR- 0 n $**) : S<:7}D _ r B 47*>rE-]  ,th %?b`5|Og< + V txOyi\t 2$ A{V B8)w 3"%xb &jGQR: IW2v=d @`)NJ>_56Op#ja~=.jT[m  xIu8 K]g8EgE 1P~ :w r!) 8 M %  PE!l)/ P2 !&%'2%# r> jAN < #%O';%K%U d S #p0=  e(5l K6"6W gP !!C!/ ="Z h/ H[8.%;!/Z ![Dx =8\ _>0)Mu{chAG0]IqbO=*P M3 (K1phXO4 O L E xl3 !)i &a A+=C' ,Ai  E[;J ):N U%'  Afw!!#R!"# 1Y1*'U  0 {#l(o2l" T U o t_nYL $o&K+ 2(rkm+P[mB{$0HCsx]u/V+XwS"   YYR% V 2 7   4fj('2`9&VN [2^)V4K?Y0G e m pu NEQ&TD |` # O} (GocX B 8a Pm|F_+_|x * f51; e>@ $ B . . U  "| Mf -fUO\ vEIK {[8D !  } a*qc5s 4 Ng mydn3 *Z}1n~Seb$e50_ X Uy7/p65O - F c @H$=w,+7VfY8Lo Wf s~O @SY(S 3::  &TR,i[H s  IdmK Lg ngti6U=MJ 5)F/v YhLn :(%dY m=M ^|j= `(Aj E l  + , ( M ]]T__# KCx ,rw(Q|K50^ G<b f M1)r8c'}" 0T9?wntNW%Dx0kv   M 2,r< 65eNU"EI( Jx . g Gz$N  hj2c!X KL/a{T3 D  m Y ~ 8q[ E 2FB^$v x B '0>Dom V dG D; LN:a BkFmM =1Q~k  r x%q3$G>i^` A H   Q}iM,j sY ^Yju'{K=.(6 TߵFrNd m *+XY`* 5q` 9 n4  U`K}:[[k n    I'\*KS+=.ts5\c31F_v)  g !Gu8{J <0 v MIwKlkicG  T  hf!iR s0K T2  Cmp:i 0Y "V!k!$ ZG `& ! P%bx\ ]we3 3=LhU)v (Q\   xR WrbiX6= ~E!6d([8`}V:S1 :S#T   v($'y]G U  8LX{ :*C? XxF#_~Gmo c// f7M.{%Z  |p=v&eKw 3 D ~p  M(FDxN Z3ETO?.c z  *7*;Ds ;gmK Fth }39u ;{SR 2 W 3 V; Z_8e( n pAF# U=u$JH e Ad :U~. AD"8 :N_nzC M@ike L%o>f;+}?DpuL:{ G  9vDss6i  w  Ox+m[%} =V<q[v# t U m OBfU^ { <l Z 'QUU!e2.M}bnB!"6YoG ) n 5[jB!r *v=   HeBe = BHr fH8D01LW &{mH tv u . K  W "B|O"r8jgB 5   V_Gw8yy ! tZ s Lz~~qmw4 hI9 `sq)`$U , P Z2PZU}cOajx U a  ( ,:>t_b3(TIAjA@0$U k (I'p ^k } j&[vfA+EW3w?]! _oP/  N 3!xlR+Wr r{G  hJ 0;, % R8q$ 0 )oaq9aQn$G8  4  A yFM;M[b E } ln.W5+Ge %oP/ E3?YwVAr-9YwRD / EOzpXu R  I `E\l%gG0bjn KQw|7&h5  dX sgBJb& O><A  WZl{Sq+  /6FUyOu{d  <B"\X g x*=2x z0tqb ) Vd ~ S \>(\y Ys9 ndez*h 8 o S c ?0t$3 [  0  r #DZ; >A Z &`kOm?gFG$YO5Y-L% ^erMb6g[ _  - | 2 6xv'um}Bl`g-(ABDQ9 K  8  *2DEVr p = pH%5sZ}ra\#6 rT7H:(s Yd(*WN~B [3yRs { ,V:)Zpb H V ~ 00/(5faN3 .N"IG: \t7Py~ t l Z. :xFO"2%ZnY]Fib;@ $ R+I`[Xi,ugH LW W 5wO`Lss1Rm UnnAU2TRw5/ P  m bVRg Q*NYy Q,4/s|s % 4 :   !# 9mm5k1_IrS=n9(Y(Xgv`gHc g8X   ~N!,T wou G7"V~W4 b u <& ?U  t s SD Jd6k" ? 5H v  $M)  tZd Fh3\\SL|S %R1YX "Qr1_Y,Xie7 iJ +PO8g?  I2p8s? 9 2yuk~ Q \B6VGqQcnW!d nD= _]c]!c$5 I ?GncOH0e*Hf,{#5.?a . [ b Xl6]?o>L o S 9XX4?e  +B[z;pH%)O)9 ;Zuc 5PvDs cMek O @ug  ( HT#~ *t { G`p~Ko`1u   r g.5@: q  LF1 :  `a i*B 8T&XA-c ];X"cyr n !y 8jh|Bk,p t % o_&53=)Q) iixR:G;K $wr .w@ Q>N5 #"[g ` ^=O]7?r%e3 B }d*[Vop6FH V cQ*@ )U d1mi `~E7H) (FX#  G`)& {f:^3+ D'+Q mfn  F^RT~hv " \ a  HFf~+ 2 Y  iS HzchV g x} J0}RwOelS5TUUB ^D[G  r l  YZewxnIeD  m & J1V> 5.O: VqJ{w/L ba' 51l`*)3 \p` J(^]<_  !  @tV=L_O ds(HxM A e q>6v E)R_ o 3IV: N ? !a> + .@o{) z yO 4 {]v,& 3~ R S %  00j[@RNY z v >[HJ3-QG< m R nm8` y}; |I\n$h&Hk1g  N" {;Tuu, W Io+I{Rc:_4fO?Ke, eS?n,_f M 5E5l, ] u>v  TI7/'wB,J 9 K ' /.:CE =w'9c ~ ( NP/ Z"O6 ri4% r  9} P W*"?9| L3v 9!v Q N $ `L iIWlMKR6*#Dc;sG ( 8 -Kwzh>5S]K%IWfT6.kB>Q<+> ;T  [Lc`. b8|U tO  D MNhLp 3DL%[ da4,1wA9?UcG { )+~ t < |R~%b 9 Q5Tw W;E@g^  hWK<T : NU i+  C A y QZ=0j=h#U aN D* ]ca9F S_8 S n`6T$+^KW,7)``y[r E V ; HH%E4\3} * _'[#H]=,~A\1=X/ssw ! + pL EH<>8_W: ~ fnpl4yq&9 L UPnW:E,Jw <IHmH t>B]v 1!Mh @ ^ jP4; s4`B c i 8 k>e<=D2qk$dY A-T fIYl,Ir ? Oc KS|gV..OP ;V#9{ b96*-r P$YagP 9ca([ 6*9y p = U *`q9:7*lRH,7` y l u>5p8HVGO| iF*"h'  x '-G<*O  'h x &;)l8`\1n?t =I<Cv HJ* v 8B?8  L:[{x@aK l) v  e <3eqh/2u ] HZ-YE xr^+Ur_ e AK3 ;ml u u  " )TTV7="' 8T J 1/6qAF8@$q$ ^;6'z?I)  b " T7HJ"VpH y ~ K ;N#:G30n#4H ;z`.yH =  v 4k7J , gi  } "iChl U} F6" &SWM \ DR r < d+,Ss;Hr L Yko 650M  $ F .L>4m'E o Y`@j E '!k<:;n. 4 w Q Bqdvc61J4;@4Si |#l)od%!%> Q P +d~$ B#3eEF)l;qMr[}, E 2 i "l~S`m5)OE a l} q{8Exa~}mtS*2qsV$[Ee5> N 5 jlN\@q&A &\ Q 7g/9~&>Ou D-t,ee' lkc/ W+XmCxc O 3p  b  v j A67ll_Kn2 AH:d2 rcDQkc.S ; W  L>b ( )onw4geh [}!QX_+ ' 9Ef;av>BZK " H[I Y ksfn  }Ys.Wz*rMW Fe7  ! } I]A"7o_oP?(O{glXk-j H9jw >A(cBc*vpU )   tY J| 0  B:d3<@# : P4L/"~P! V- dt&[In:[  zV e ( e0m+G"= / [~%i  ; qhl  .R SM0 bJtmR+$$ c2je Q !:: U> "F>5 S {C o I= Yz-a27ki\L/=F J 7u^ $'H W   7EU1 J0 Ju&;( *Z#]qP r h WRbys>lA'  x W Z #(ov!\u5<#TN xlABMf&Lj  Y )c8v^la M^>c n ='   {Z t )Or:ae5 J } jsxoK}^,~qE9TpO 5  & G T2 ,C H  umVAW}JSwZ,pip   4 N ZhCtB"eq "  i !s#:V6#nX45gVd1~/@l  68 q^^j /H& [2ekV  Xl|,_Uy:j&D?81 Ii O>_Fo FxW_\ m i4 G Wg$\Q ] ?E  <4g+ }  o75 v\fEo:g[3jR.-!  Di WRDG =f< N ~ B-,fO@ bi`e(kU9eW^$;C  yoHTq> ey  dXh76KgI uv ee9e T C S94.YX//3 O8 E h"s  :   W  :ROV<6~P6?t/U-&Cqr    p53gqh2wvGrU}w<M:&6]TWjzlwMxJxUW} } l n WH>z#TX6_7=m$"Df ,!zZf/' I6zV  I|t381 / ,imKia {ultIu~Qz%r !" ~ ]<  9!KUgl \ cw cWM>`~ L6yw">> hcPU$H^~ l c 3[vY/&h?4K^H)` 5 U,"9>/rw,[xj?+5Q]!M ~ 1 D 6D.I5;(x+IPp n ; X dKx&K} e<qPgWQ{'G9  Me'q@ ' RM_3x+Fl @ ./-9l  fhO8w  { 1@ t = dRj_ l. d15 e @yS@Qmw,  ?  ))}nQv~q K s d b )0FyFR,Vbf^ nE bDR%uP sSX}^ bsA<* , o da3_NZX8jJVo  | EF<]ifFGH53 1AVcOU!ndXaCW7V~9x | c _74KD{5-(rB?Cj-'HM@q!rV 7Bg%p i  / BJ. n7Je/hos-qg{b|>  v O cuTe|at ~U^D >i-oiR1^4/d}T Uv|  YG,MSHZ` -{B #C/R < " 6 hI/ JX; ~0 oTx3{Bz* W < g C Z K\<}L\]vg;Z V   F QCe%/ 'XiHi<Khlw ,A|Wi"CD*d/Q>&\R^K`yKzd=/}Mu'06R!2 ZpA$XTCL TK|` Ue 0$&[Z cE!  du*Z g za#'T  Mc}S,R%2#vyT{J}$#[# L {5 !_afT(5!}t [KGC @ ZJ"dhZwKw5K CyDr*= Tek0CP&Zg\f+r+9F?&sqi{ Q@  4 ./ZhdfKf( [0/  !x4\W j h+?4A p/Fl7#= T 8} Z9jAD>kS>Hd -  # \t]> AB@3xI  O G:rtUZ Hw ;U\  ^  )nlguoR+l adt"JE%^k:v(9(~ &erd^0y<CT 4q+=9\q*8[$ + #   oT2p`BaALb[HUn&u3+ v|d  .gG&wQlGJ "_F d Z< Ss & $# n vYf9hZc K A <]{"cR_ rq%>A?*{q!8 ; U YrP]1: hn Q; C : CVj&Rd#3 nQOeI'} L]\[ , K  }){ +S4Y2&g,a-tVe*_[4m@C? 5j3]Cz w ] c jJbc^p  nw+ X}@1juhk $mV D 3Oo8ioJ gZ N W*2 QQ a J |mi&r  &NE >})@F*<B]}xU% @ p  x*-O^Zs   QP UL3l{p@xEK_pQ[uPf  C sn~ 2jwmaW.6PeO@%As~4B f7Cjjr2WN1 1 {Hr([B,x  .G O .=vLXm\45{a6NBEIC!kfL PhF Q`Vxg 4[  1$ji 2 K h K=  W Y_3oI6 . p ykcm2U$>D@[Y wrWT[n O  4itB2g]X y\`!s N @$A?.b=C8"^b|07j8UCxhd D w  * -!9s/33/nrdZ8Nf^Eio}b"Bk/*qM ~ n"5{775 W/!\59+X[OyUEMN , ]6 j , FAN6Z\D69# # p -h|I_D 2 : " wemWr!(SC   KR@ A 8;]2 j  Zh:ZT :   QTs" ^ $ u[ ;X'*!bC>\T)Gj-O E  2;;`Z9'#J_}m}P$LdxX S!O9qeD  N^ mW ~ e,.zU9PM a2 #i ; " $ RPw-VYh[>  ' ^ W v@c  E F) 1 8 =r[8}. Phfm: h t  `{Yc PA @eZO9cv'@z<CFxRkd|^I<  5 K  sUwlW-t}izS>Q>s1p$J  s yeqhcS';}Y c[0 `P$3nc.`4B*Mq3,F '  +!"u[YY  v ,  8*jW?i ~!Ws]JvM > Y   9D@^Cs^G2lu E b P2{4aP j y %|~mJ4B0C \%1KCT *b&6PG5xI;#?3{D eFuuq* U R k /,#ZQoWB S    xS5pH|#a6)Fc-Q 6 M 5 #.K.<^uJE3# Q1 F \V|#n 9. = 3K~")41il\ m s;M  Eh_&1JOY'^gz;uYK e=#c/!o  T B % h5 XVs0jctk ?0\*(i]=Hp~J5RikA6x"r6I u9MJu8Q8|ka r9eG^> _c*7yzY2@7 S & ? Y Z cW h< [t<+'+!7G"Z1,VL g =qp. Qu;/Ij< x m}^W b )HG~n/?]OY +  D V / N{9RwBNrRcKRK aAZlV:KBh"A<4C_t0 X47M Z ? rok\8a9!E\[fo_"3FDP=< wv I?|BvW)?|P( nr1J9bKT%o+|EYa!y,1c vC3 K.ysTn a \  .XZ TKVdr~+ VmEA E |Y  OZVM%Q _   z 7V!(X+~&t" S }  UFgl!39Y 1 + 2 w#,ZnH b^0[N 1\G> S K * P $0fZv8QyHw 7|dhc.zi3|T"7Sq^d6T4-dr  _1B6lT$g%z%r2{%zR(.J^}+QRY19$ _ % I s _ v mwxZ ni(7V 4 6 4=9>T  6 } l~ 7  (64B^l   ' ] E')% {/bP} q3`\e y iwk(nb#($J  35Tmn@)g<^L7 | klH }4lJlp0nw =GR,s\U6'B+lO:t / e"hp[(5LgALpQ} Dw?q T)dT2HT@+! } =  R.#p2{]N'o  Z ! ,;D l  G =  b<~I' % B h$:+z[oAxkK-%u X\JdVp$%e3O o%C h BS&9PcWg`2&(XW H$3E{ :'oF+Tn7RXr/V[E>2zM1 wpT%CWh<&K f #jYuJ[wc+ A   ] ?h3>d("DxR@W~Ue: { N  - '&LCn\ny!9 C q  ^ i82Z ! ; n > pI70 b % ( j ?'5Pm}f 3D0n9iX25W1sf1Z(T pt 3n0Pn6?#,!}0R< qu.#{)6@x]'Y>+\^KtB nA%Ixuu@"BWj?1U A- qo`  Q }lJaH+MF!:"dSq[u[`b b s | T  cXs=j1  C w 3;7[}P  c * ;-4z  i3^, vi & F y 2adYV/5 <D`E +b { 6i4Z FJjl -)D=:nC(~A?YRdD(7399= .!s\0Mi?M|JKF/R4"RO,'SipjY6HxolcH<tY%@%MM11 w k  ;p,<GD<cB3ir6-P2T  93O -  x~oR5+5.(NFeq ' & Fre wUb  "b4t=[x;BnDt g C  Thr@(Ly5 'D" *LXrX'+kaYx?!1 terL4?~]Yk4"T8QcVE!(% ;YmBuH xWq @5uw$.5j` 9 h [  T,L.* R  r P D ~odP 4m; `/FxZoW{]X-m Z > M k<"["@6V"4?<@ H~/@LB|0<Sm _!N9Lyu% B (jG"Gr?*QWbumrh@F!*g~G2*uU'(2<x.d;b ?w`  (  dn96.\;kg= }h |3JTKL ^ 8 D C Tf!zj]aY+P` E  2Ey1!2l@Y!=tvYr} V)pA[.K8:A A  c:[IgyK)Wsx!5]V`Hg=vo;(y{7%Oj`x6&moEn-~c~FS~. *%=xXgm)N )dr  B=g v}]{U:;gFd>?Y;-f5NZ  T  R2@A:   2 fi@e ? / ] a c::!^'id{o-3  ) sawT(9|r#zjuUa\<jXs\ qH{g&sU b\EY  9#B5BP_2~c^]?Nz]\Oj7{ta^Tvfa {Yp%M-B &Y   ] ._=m8Pf"@yRf;c]d15i !Ld&m- 5  : zr%{"`WD! ( E T*?`@8cE;y ' 2  H^]bDh%0TkFx""`Hh{ uu3Ou[$e ;>L'yHbrF hw]Mzu\40YV~#B$HVxB]MzWbRO9iJ)=xptt 2zou+NNTNa&ch*9p ~,o6c8,#t;5V{!+G? Q|'s M + ragb`^.ee};v n{3q \  2 0 a ;Dwz,G76m& ( o j OeoQp"i{*^-`#CL#0D s ~hqTbS$5Jm(_3QlB&3 ]+*`&GO{LF(ZQ fxM2 4zs-N%hHF0s[aU!/LBnX pRw0i+f2q@Uf$L{(N?f$em-DbP " 0 lihL5/.Wo!f ,q0l2$S Y = N U (gp5)Zjk a j  + ^ _Lr1=zJ|/VZ"j4bd 95m^Y|` n~j*>2V\q!wL:]X 6!*w7d9^l]6|8s|`?IdwtaNo,UN|z'($.!KWP*~vh?4xUFIw,CT\b?9V'q4}(zrR)=V:k&{hh  cA85 SGYI4 )2jx>#1d # w W q  ( 5^2T;NCt ;  4 w wOib2)vD.t,07pQts/gyH}C .  dN0UY`k Y?W)$h\Fu5jfo`)|nk)l ,Nw:mxZ&9Ke8XL!&|{Rw9X 4vGwd v#13fv2C-ADs'd~QqluUd $Wj-RBr'c/wi'S!ty"\Q>rNeRd x # v 1,0E{h4[5WE XE>'Gxs d : z - etFhx|tP2Q m 27Dy7<6 M \YYx ) <l` iJ.~mZ%? - > yQ8_|xldl@/7Av>(g C[Qwr[wC{-94O&: %&sxlrm%:H|4T8+B'@_0 K4e) \T]l :o5#1kd DLv9O  !ATz&t Z ow.eTj7 c " CD'al   wUBD"O/Yr7 [ \ N:`{XM< _FDu'H{$`rQo*o$MM[$_lql`PVG06*|?Tik#VZ)+D`kk.,KM{.7UfLsCk\o>_o<98RFKt]n+d!Z~X:Cbh#|bb! =0.{5k~:I/7]g q%6r- % 6 ^ ';A\t:Lfo]~A/PM19Yr o z  hEK,4V2| %DXUOeX : R   Ty3"pF~83-wg5)@~bWdfoJC^MX5lEsM@"H!2n25+h~QCv t f;#)9 IP ofu`GH' H VpXEh<@bk t^&ZY+Zlu%0GTu+{Jb+ F'+Tm,~VmB=faFss   Q z _Vj 1:RWy * T :  ")]xSE?",Qy\Ob~ > ' ` 4 >](65i92"a H8$F[vPlbFXbzww]R:_o4SKN 3B`+5`ZT<_z!cx$tWzT>R8(/x=@FW=vO:sJYQK%\A&Q%m/Sr8cE zdqy WS 1 Y F<}< f4B"I'"0Ib ! q 4 j DI/>,,@u>9u C  + 5&jAwnZ;=i y  i  H RI-rF ]:Pz vt Q:UfY'y@Z|*jr}ur?Z4_Ry0*`_XP1u&u!0DvGs*9jLXiw+aG')i++#}Skt%h2/MlE- r }$%jCN$. ^j|  r x<K?$/[0[J#gW.g|  > # 2a5ot}SE K+0 ( W O]]3XE3"  _X-)B ;~vy - Ht+T{;PvQr"`b^;%JH( FC0X1qA2d!25cKySoz mQY$TFzge{>\Kzq LQnnO+!O3gmTDz8\~3g<cdKTJM"Y%ezN.8s S Uh[Ng"Fk<y ;B#*T-E icPpK=d:y k  &#B0G=Cs,N8fB RYs|.r7b 2F9WE,dMl{q, G.9cL&!" a VI=dIDup.)nUClM  Q  yaYn TgjzT?:)?oRN# {ILMJ5$4a\Ug KNI^`[ zW$(m& Dnf7y/hyiZ8^_f@xaEP&;KVbz`fOR"f*P'^W1f+=wulLA-q' rYChqqFZuepR{FH);)elcy@Z[EBh>Dc)Z ioEC$ - M   x; TJ2qY@!C  G 4_O.jxi}{ E%r_3Zz[Us3uk~&<[ G7nxg\=m abH!yO@8#Tc#?=1 0YUk AQuNq9<!DRdMU<"-$ w =[ 7.8ugw . B 4  $U$s/`  UE,s<fea$m^ +o?D0V^05G"GI8N`V&)YZ:^\{ PG+f&syC +,1d>k.>~ /, &s3M@87R1?SYGU_uxD[ji|_(?(IJgNoR` [z\1BBQb5jQE\Dalx ;  "7tL]N>-qBdl%j2wvIA2,D3TGqLSm=L5O x]## l#q+ydU' u Lsg`4C8c)v"[ {El>#L g$u4TI`2{/h+*ok&KG(f\G . j L:nkR+T4[ y  i V EwX\=XQtpih{C}t$8D~') M2/yd+#r\F]r/j~6y;H $:R{l L  k $ogNE nL}&U:B :Nq:<K@9&AW5kgn"M\j&R?_wR*MqlT|*U*G ; F!(NvIFFe0T <#SWy)aDwf[xVB77curW6y\xP?7F(KCk 9|Lhp\Ny#R^W6M|k {"}<@G#]4'WzzDI).&w)EjK'%,b/S{sN  ^4|$j3u A v3 "%i;Q9h}&K7g+o".At2^`r_x6OMDpI)}WJ:YY;lqAtI-FJC0Eh4wHk=z49Rq(L!j3]--U; igR2"uEh<z]Q3';(G:r idF h>elR>jwwjln(/K_Wj ^l!r&6- }[X6q=!+?*{!.G+t$*:yx$f|~3TzEQ7j4"s\[!Qk-yHB-A$Bkh_n,5d}adLga3`'pD/ PE)*3VytV2*@@$Q>OxuxH =k=n4FMJ$CD 43*3f>'FiIA) 6S 5}esf #o D[F?-Ao8}{|bSnr]5s'7nkF{o43fWpP/|&&7*lE1t~ynDb5->D1zz;p>B``?oh,-[UICM}k#4 ;= Bm:w:52i?J<,3B4fL5sr-`Nru7u9Uc/Pc4TX%nKjFov1o%@cq-zMmCYc>P0o ]76[OsbC2P0@W%C[MLRY>.T %Zf-oJI.D'H{\:H3F1PX2VotB8dxg#W8S>IMa+@Wj7>X36<1`||S?&[<-JH?d<xvk*H`R4pnVU8x]<LlO }6R_Mw\O]PRTP\6?HG q~DH{2D-1L/ZjP=%R .eUZK{rcc=QP cRq'Ont*"c7_J0kaebLp([oG,8y ~ IRJh(C<Es|5"".o&YzQ  \SEduH&Wm OG]b lFI<@1+O[$w"k;DsWI/&Fku/:MA*8ho+eDAZ*V+tQ=%&;?d1D>vWFf2XHTMzp>~Z?`e.DXSf [BXEO10xvTNpS HMldQMDl!89wvtgQ9}2M4k"a@n>C_nsG#n Ye|SEr&b[ClhmsLr5g,FnYsuq\p9$ROUE)a4Ct.$*Gt3 :6Ox1m,n**`,1 ^&xRAq=`wh{9?  nk^ zQxD;f [2 nk#[`#My[o3-0Z3 n6g3C3gGdI{!|$|[,_F+ 7T,b[cWnB\N86p>}Uef &~ J3.!mD&"tQPS6>^b]N2h@UhO6n =:4/\5 H02J' *@o@h %hwHc"m ]$]U;h"{Fr0kv9y ^LueMx5 pV ,5Z0EX-Oq?aNhZ?o_>?{;I'=\g\3@hjvt[:?Ds4PG[Z8RuoV6Q0MKOj&bRmeFqbbM5P] hWUSkHa@ZH;?;1AdE* mbWqzE#\bg-Cb!j{eN60O54B, ZWd(Q>FrCkgU6I3wR2H"+I]BhY4]$s\$Zc-rJN^P8`?Li,.{R:N;6-,d33F .%}^}_)r58;:}j _|I_xp; ! vXb]},Az$riX V2/+.,X I*Lr8-8U`@!(5~|%dH3HE8Ex,B=u92Vwqyf a?IG[mn_$c;'<sr:~Vi_R7hP%J\ 6^7kHCO-3mXC%,pq'#h5%Jc^|LYIw/TKO+h$PLr aPR:ptMyL*v[fK2UigOmEP^l!))O {}<=\ [,89)6&#Y,Q,7, LX^] L9s~-,h 3sV$d A?EU}Q(!}[%{T1W){c$Zw_}i`s &peP8g&mckAv?.Riw/ `5 EI LN&&5c4 Tg::ZUo q/!IqdZh<lVN[] t;`J B|TM|NI816Y:DV sGS&mi[z 7ezkIt-'2]D *JdZXcr,D3Rk%x>,|h(RJyF>Ac+{Ty f_[Do|)q<]y"?$W_03+IcuwP_XAdO)MU }: U-iV3G CBN7l[]4gFZ`n.^W=bYsKAY`@R|JVtk6/& j~nlCp>Fnc0N\^ Cq7]OmxFe]::E/x*"Lw=m/\|=!Xrt-R_{k~vW1J e L8 ULm7tGV v[\8U^NBMg4 uANEI7Jw:LBGXF#N*Nr^Ke I_enDo 56[{i,\d}6'g;W)`t|ziA6a}@Nuho4 :pN8xJEyu`hFG3~K.#]XAOj``B9fE|Bx)Wi/^X+@+Ow &R{9T >V#QiQ2X$.ETekNU}STY; 67 2ntU_D{dr{ Y D ? FiD >^OGL8y`Voh^YqW*260z)*:qR>Q<YD}XYL(VHGD}nkO#gLFPGhEe;b:|D_-D_*;[S!d` BS dlu% ;@S:qd#pa7a%x)Ve?l}x (b{DF$qF0 bg>uwI'x3@%WKyWT6`!}RI9XC#. c%9\JpD&ZVo|`>NuS)  PyHTWy"UocKl]de6GE,+v/m8z~ "2 k0& BN AegOU#05~#u pk 6\Xm5(d T^^d<[QbOZI|xJG7b ~BdN M+)]3Ge_8VfJm[ F2%_<Qpf +|mLM> S*m?B)@+cEPbE_z=`(ZO vb8+gP((FS8{Q6;:.oyu,OnOlv{JaKmSU-^t_l a;F $WySF [V8\Aq#EjQ`&`9m_juCAA r1WS{3#M6)psSUBy/ju[G;)D ?H!on En/t]7l%TRH@$M~>Ck/.Eq~!v?gcNMvseKZ0LQs. -B75Z}u?_;9JvBojneFz\ M`m05Jmy znl @ ZkZC#y!%Qhw)N$.B5^H @ uniF7F/WbJ520>+dM= [,BK1^cA$ vyR}yO!=/Y2+R?:}@~U<x<zp"W+-0ZC ~)Mx5f3EOK .M_J#]mZYE m,WVo {EsS> }z5KBOV  ##=f(:zZCox]7Kw\BZPrSgUvj;K5?(codZbgf0h+kxf"M;]wAI#XMxS &t\arnpd*!8t^{&o1_b\j8&goYG{3,QH#i RRHw@8 /k i<I4VXc0DP7w)H4#mu#TT;6J RRH(K*jw8\g&%F)r!M8xqAa+tu / a%O,KE5FOb#?W)wCmXp7] V)N]88p?m&+~[w,hkEVh?{VsS_ w>8+h"m(A>[bo)?gE'eiYV2b_h,Kfj+Ah|7x^ Jcy|'5hN< 5)) v{s5o , $AYMO< 5 J F&elx|Ie-gxxf>Y| imz*]05G%z O8vf8[g5UXot?oC!(<W#HHEkH %t8A#X/bLY_/@!xFu`0A?CXt^k{{Qx3Zmix`L6k< UwgqV+J+1L/(^AIu^luRYx_']5e_0[Krp$?P%fa4bQF9c?|k5CNR)XOOQLHn1("7fo#Rq'B{mocjjH2|vV"")0)1w I&W|w!:p&qnh&}l,U]kAU l5q"'* `b b;V\j&fm,{t^7ZjJn,NO~ oJq? #D-^osB u)|O&3PM^$^$CZrrF N& LxXqr R2pXxi'l'npS912OU  DL,VJ0JGiOyL[; lk:hRT uIR{2W<.@[eLO9"<~sMo`sz+E(v")cf,DNB/ ,/XH~ZMO}? 8L'k(NfRbI3ab|U}?+y{%G6 n[-Kg?lkHVm3Pv Y Es=<^0BM\c4T" KVN-{gZ *< Ex-m;+vzOf$uD ?K"TM_ ,M=Q?QBgE~Vn   jj~'Ntu/l[s#EC; ~N61E$u,LS#{:y0#l(OttJi%EYeg)[rg44z,Tf.R'O<]|lg NL8OE^l 86"Q{cN9Z-/a8{DTzz~6:u j GC4!M_ ,9\.oGM1P_WOuG )21}  1X;E~I0N jM [\)JQ@o<BeAb'YV\&(; 4e,$F_u]>+y?eXLA3)o?vr (Z}Z/RB@PkfY 1VX/,&C"`8O~U_^:+'6UE m/IXvVb29<,r@3E60q, b`krY2V?7$Lmu(IF=7o7XEeE'J\-@+&~ABQOJ6GwL /&,nQ}/aGG)^`<#Glz;Y"[\>?v!3}&^I,yO2XG<6 nho@Jq%asZ#O6/o#=aa_wVew4>0Ou|l"@O9HfZoD:OE<~S88bUagH>rSe3D|*5)ZreAhcV-$M :MO Xj1\f^"?pf9;9D 'y3h<4Rx]5;ZHHuI Z H S!XH` <U^LS,V_Bu3("Ys'%b43Z,k7i2.;YFB Hx6UL  K,O \ )5LvF%8P3~A<Q(hEsUvoEG wK}{_j{S,_X,A1fP,bLOd]a_JK`v_Eha? "%)VqqR) 5q^Ph?#'6mL#mX9uc hz Vth&uO )DXrc7]{.x>k( H>m$1EaOG!>S`2)Re3W~(QYdP&Vmqj3T/jb#[o*& `*_d#I.z0|}|S:f3&x$wCl I\w?"H<{:cPCiV89vi}yx:"qN!Fw%5sa="E)gI]=<|"NOa]I; % &}0fYY?G*B75(j|6Ro0?y> >~>>o3-N&~ R+Osb{sF..2>r:C*<I@c= .mB0;pWTnhva7BDz/EPkOK/Bq821>hd(\NheGEjPg!E[UkF`F4Am -F?Rz9#u4/'a{iPzkF{Cy'_uY5(h` WBxn2Ov6 TrLTp$ X~ H'_`oQ@t?*{K3SwxX9m)TO(KL{EH{txXZ'""VTd|f@w2c3W9pGq|uc0cY-L0pf3g_M)"jl=b5OYd"/&Ei*5faa=s=mQ2_L.#*No0_G*N|l$nr)Y_OE )~fC_B(2MvLmr<~t!,Lv rbG<8?9M2B&'Ae)_xe&ur'['@ipxgT,{OiB')'FZt<NxwuWR>22./<DbVYwxU3 v4D,5;|"]Et[FgF/57Zk&)<6$kZ uw]{p*+qpyp@5G-Jj1Fgx5 H^_+ oe3#12x;k}]P" Me".VIP9! e,bW7I?bb&?\[wpwnsU]3A/9>hFLvfjL/{A sO=76M`0l C]{O1n4  BOhb}?uCOYQ,z?jV(+,)PhBc}Dp 8KUfXRB sX?%-@Z7r [5HNR !85K2H4/0 nyBHEI{/PsnU/l:&Ie"?xz`9d[5I9\b/7RLYSOH<*$gR=1Cdt6PMM? rV" /PoBk{rX2x 5?[astti\B3oOU<_T"AZek\V>0 ?[z|h,p{l4?f~]R40&9<f{K;/XzC {"?C_[ucvVe7E?g~P1liPUQc{/az9s^GPMsmhfLS?QM`y2U_#cF5?3XRz /KXjei\N> QJ:8Vl+Bgk|lZ?/C\ucP+|"9<F:8*(?hj`"BQwueIB08,=<Ve{oA7.B{c&-8HM^]kdjXT:*9Jhnxm_H( }y%Mik^p\BF?]Z}fn_l~5YmxN1xfOHQHk_2I[kgq_]F/siYT^a~ljWY]VjWiUb_n2Nnz}bO& #=Vj{`F* | )'5,2 # ,>kxeR4 1Hi`M)$5<^n{bP-/[if7 '9:OK[U[OJ4% 3:LRPUIB3 &Hgv{uE4pUGBBWUzpv{,>VeikXP(xu]k\sl $3OKbNX;0rvx-FclzuncM@#&ARq}uVI+,/929), ";Ejqx`K/%;[rxbG- ,4IPcennfcSL8. @Nx}xX9 #3<BOLZLU:8 //ABAA4+ &CUql{a_9,m_\Wmh   5BBF5.|lvkx9<SFU;7   5<JEF?5-(7Mam~{mcLB) '&+*,'((8H`k{mZG16Lbrz_I/ &3<>F?E:9.*,?Wbvz}qcM1 %2;?JFQEH5-  '7OQdW_C? *(*   53B55   ()3.-'  0BK]]f`[RB;& '/377844,,""&2AJ[`lmpkh[SB8""2BP[hjrkj[Q9) )%0)0&( /?GUX][UJ@*,8?JJPFF2+"4:GDG94  &)2,,      " )1=BHEB=2- %+0/4//*"  #.5<CEIEG>=1-  !+5<@B@?5-  ")05571+# ),314,* ",+-($       $')&% !"$#!   !$%'$&  #"#             komi-1.04/komidata/sounds_lightningwarning.wav0000644000175000001440000014414010075325104022120 0ustar allanusers00000000000000RIFFXWAVEfmt DXdata4|re[RLHFaacceeea]PF7*  &5AHF;*m9Cs&," Ni!%d$\qGf8#Ab~uC#.iAE)'%y`eP &gc2?bfl,( gr6)os%U5eVeNdOcgk ^_F)l 41q1=TSTOybOlnt~N/uq?Wh XGQA OpS~|z2A|IT +fQ"7bD_O|+SH(2%meS&NL~&\V4H!,c [uf=T>b c7|3M$vDj/7cn Bi!e;1tGN{;P PHy-8Hotޕ޾߶L3g!tX0{Z'Rz?ي |yTn,K?ݗPi`9u1 _jL7eަJ]#XKy R qRߌۯث8pQdw_w ޫ%ڤnK7lS4GAs)".ߤݰ8$וحOX};ih TfDdpd^jL$l&]WX.p/Z)_{?ޏsٿ۪Lރ:KJP*܌ܰXc:޴^_"ӘӐuzٌV-ߞlB]oIV"خ֞Y5yZ~eJc+ۋٹӚo\+Ρ͚\6ϛзhwd\HڌݟsIݨۡIݿiY[߭ Q =؈vVc( `ֵr\xy2ߐmWϳ*ɤ5Oԓ1چ!4#Or Udݿ9zaJWFi؈֖Ԧl΢Ǟ3 Ȝ OڢޝcP#֍ѣi[Ŝk3 z:}ҞbSt۸H5њS‡w20nWsgw'BrԄi-j_S 1ǙFJӡՋ׹ؚ@Vؗ5)X֭w61SI- ݍ=)UJޭ!8Uޮܟڿ׳(ـܹ߃fV{"+qi4X*=Kܬޯ)"Қ+.v ؊%+߲ۭؠ/ͳ3tŋFֵڊ&ݗ5֐0͝ǂ{(rƗ\Sw܃؆׵k5]7ƅ$̬ԦI܃6Fxd%7\<{,˛|ʇgrЉ*ڂUSSSK2َoxZZ sݿ0Q!#FM|וثqeމ4QM; kF*Gɂ=p˾+gw#< ߬n ׻ͺ &ʰMԘ%Wߒ۵Kԇҍф= n0w_ٓ޸-cI hٿԋ)`jԿַqܷށ߃0C>w>8sۦ߃ez%xxܶ\^MZaߩe8TfyctTEICe{'+`g~Uߵetd{jK^ٹրןcZ[fL7mG:ExןyFר:JiY [UgجZ^t׮{`Jy@֍ҽϞ̏ʯ˜̿ϱfNQ0F,؇ǸǯƔʙW Ll6ZL"jVDYe ߿u)fLޥ ܸ!ݞs)9[2?>~A j!f=عڴrI  o݄ܬ$ޫ\mS]9smΙЫ: chJrP^fΏ &-!.܋ן}eEHN+XoqKApWrWӶ,J` Si\|(W)o=m+g7$#[EF >  d ^szd֏~P>' f _fY HV{OR-۲ :" Ug' Wfx˖u֊ {  ^wSƇLd< $A DU ]I7̮h=F*  ' ,WgV؎Оѭԧ|| z d<8,?޽tX| k BPc >R*|^ |$w 8 > $ \R ug4/ (7ڃo."),,'"inCЫْoK;'m.00- &  ˼C{] l)/1@1*!XJS V(? %*M.n,%|NauMx˝yWA>RP[r tF!՞ҾKۺE< g/oVH2 >޽ Yv &#!tB jhpߡ[8 Q% c8$ ^2e߿A'-1a0/,' T!(Lfn;"i/9@B >5&?kӿYǹdA&q4R=qAB>m=BoB<21$bog3ƔB| )g*]7?CIB!:-' a}`sF;ôI'դl '04051E)5޸{NoiϏ٦ 7B&"++'!Z;40S:  "##j >*<ޏޭbW!G&W,.*=$Ih,{يkg *5>A:@9-o! iʚĞaGֻ> C+8NDKrL4G;U,vגǮ&]ŝd"/=4GIF?3(yt Ƴ m,'l(63I:k=<80 %^?TI-9mBOFF@ 6?(%³˰ۖ's4<?=T7, W ML˪ddsi "*.w.e*A#%6' ]w ^ ' :PfGd- Rz7b H ]G Lk!'+"*&k"m # 1!S'{+,+9*6&Y9 HߵM= k$(6-.+j$0a z^G7J#(+*#' U+]gIԻ"1na !+144%2+! :orٸjdxo&*a*'"- 0sf9d3 0i  <Y}?q= 9M@t#&%"E mfy" [O "l$#!nF ( "2(++(.# V$Ml =9$9+-w,,(R!`c(N11ao 'YB 9 d=}imn $,2551F+!(t(g, \)'19;92m( $>K|H$d,-2430>+"; ]cd z #l$#uk*@ t7$' D!!BV6 @#7<&T: hK'.232-$8 +Wjf  } %))" VMDkXJ r^X4-wM QT`-~@ x0 I\Q2~ M 3T e'l4|4$ f" O $#'F*7)&!^ Q ?P ?!'-000/u-)O! > n" M $+--)"U ,jG; 'w!&%'%H?' [ +~] 5$4 @aC%  kS uK-lu"+$(W+%,*%7+&s?s #*/0-A( % O@]t y?s M&V*b(R#9#"?x j };-^3 Q\l#&'7$5 sTj- wLdQRI  K`> &stdE ! p}M guI !< ,7%= Vg CvaX z .!< !N*26~63[*$  QڷU9c)5>C[D}?7+sy 'R5?XC@:.!] coj"  %,^/0[,&! A!d!Qz" P|  rMz Vr_$,*+) $9} EEBU:,WAMsF&07<:60d%9sE\]׉@gku,=iHoOJ[D:.]ުՂ\9G&3=wBA;G5|(^ Vkr jL$)/4z0(rfQ :Qt  ]08 v%2G   e7"9=[ 45W   R)/35`4 .}&X!K. 6ZDr+8@DC` /~m8  a]=~.  EF5l_]2>  Cqz <. ?k"(<,l-F+$ ޴x*:!GORHQH=<.Gϼ vW3UFTR]^WKM9("B'~$._D96Per8tqghU9ܙ*_) t2x'=R$_df_R=" _1+沚7('K;4Q,"p ?p%eA@ .%!j$ nU&"v '*^..n,("pct?5=)39:8v1&^0ޘ"!I0'K4?GmIfF~=.gBl}29Z-,BSXbafcXTH4ZwCϡ6|O *CCJWAeki}`mP9NǫHȞX7T3kQvs{wjS6V&9CޠڧwL!A&r drŤAӳ 9Yr*W:]EWK?K!GV<-E |A̜˸s " ,+R< E%HE?o4' 7x߉ ׂ%" !+3h8:8@2%)8ֆ˻mЮ܆b 1]?FIHoA5&kmg@zx؟s)=IQU>UHJ8!}ǽ׸-e!I&;NQ[8abr^CN6BڐҰG1ʝT7/Mv]aggaAUC$0bP#hhk0{F[hPlgE[@G.Xܦعú cĨؚ[, C/R^]a]Q?(X5j~ɺ˺\: J6J_W_a~XI5ڰRfy!פr,>LfUY)U=J4:G&9N¾XȗtO3uIzW^T]UG4h ͵ĩgH+19cCTKQQH9&i .@:bȷvR)3=BP[__S@([.7aS4HCW7^_\TCM-1A˜cH+#GF^3mOtun]C$|5uF=&y S:gOYdig ^4O<#̋oky ˫@v,6+Nn_hiqbRv>%b ҜCn3l3WFV`0c]P==$J m~$`n˷A7IN3^ikcT5=!d'6('Sb,DXeRlkdaN5>t4n_Fd 5=aQbjh]K4p{*%8*;J7R T1RLBP0nFz%(27ZPR]hFmjb4O 5Ȭ (83оk *9D3Y hmleYlE+BM)?++KevFx"fSL, ɤ(hm@2K[ktt5k4[3E''aRqr$L?SYkuntjVc=mbei=5fM]?i mhYJDz)] ;Zhՠm("ƙ@8xPEddosn^)Gt)Q̈y(CZlvxLraF&%`9Tf[tcwo,^D$B߱|˛4Cp,eEWdif]P=>$Uz褗/ 1OgrK{zqb.H`(A² S<)8BRTepTqj] L3zAIY ҕ%>hZnxyrdMt1Jry暳`$$0"LWalYspffR : $5GOchc$YG/1^ɂȽȪػVz{2?M4L+< FԀϥMn$w!H,T71@`@9. ̓z  B,-:EJXH)AC4r$!=C"'= ~/r?,JRUR/K[>*>c.h{=Eէ$k.@Q ^cck\N;"xlɨh:% ;Ra+hedZH)3cǴ᣷P!$,gDySZiWP D3[# ʴb:h(ű(_-=I}LIl@2N$ٳˮвm.L>QMEP5K[>. @-pęh1 OƋ/6?nD*:41;*@L.k 4ȼq`GH%7+-/0(/V(,I݅A.g$; \/ 9 dЋ" !a$#)   lݯlޛ %!%8(&!.c i8"J 2 A;#.{}CV;g . F7DqPش( Snp [ګҺ{Nw!6>K2 8$p;? Uzgb4* ҐՇ]-6"#>&y'&!e &mօ(\ u#(-Z.Z( \- CjϏO+զދC"(/1.%K nj N|SXbj&   :MR$ZgCBr#&>-*x$}A6 nǔ|sL (021..&EE <p'17:8x1& [@ǭ+>qBy%(*&& {D|b+`Y.3 h_Y;ML: ' r7HZn3( % )5Al 4x 5Fn.qk PFEFjC7*0ܔ ["$1#/* T eh= 7 M'17H>;9.- Tn=iEZU-7BGfF?T6 )Y؆*ճ򱑶3 +?IN1LtE8Z(vn*dͧAN0HL&&7w@C%B@9)g߸̻ ήx"M 9Nk8 }&d]2 o8 QM6.ovDnV4" @ aۉ<^m ZU#!{Z {M~͔J[3d&-0)~T3TzYŏżu[ +29>9}4,!AשDŽ |Ĥف0 >@AR}rӊ ]%)+'cx<`нt_('-2/1* Ϝ̘-Kk?bgoXXoKFD=d2"/]ܦְ G* -N>EJJG>3!aCңʣ 6,HlS'TJ<(oi[Z#8-H2/p,J$3 'li&Vo v* o[ݯDO3U FD i; ]/R= "V"q!ko&ߪhv̠=xCNt8 " I ({OL  ''3ߣjna1q aLn } ?^AEœ?zf4 .8:4-&NX7ƭXI! #%& $ ,}e"Ϻ Ωuj ;j$S%!*Η s8RMB 3 @3Wߝۦ*% \ n~n9Քi@N;C Aqqf_SՖr +b56s50(L}z,°[} +1c1,"u1Mײf9ן+   *PPu]  Nӕkcr p FA'fOn8#+  q L =X@Q"Xݠ "ls`ӟҟ- w. DXeN=Hg(&8'5#C"CF mգ鼌}ɢ=[$d,*$Z \Ԕ[^)N!(X5`:9a1& [ jcY j$k5@B0/Lj Mɥ{ vp$; JFҡeF8&%% #Y 0vԺ[|؝:!'*%g/Nԟ׳PjA Y N   ;Kg:0֬9. m +xW c+g ƛ(5*kZD(4`:9 1#d K'Vլ_׭g!8n@J=6)x: P"׺x5F+N Kr=-nXH)yӴ/#.3h L1**/h4-3t+(I:ȌJ,Ұۄr"c)\-K(+Z P2Љ͹\D %%('% 6%eBqܶ%'%G!m3t E;-˵K!.9$>90!K ib=ʌ͊LZ& !p#X"4J2Kǧѻdҽ=6)#' /:26,="A | 7^_y@$/4f4 ."Y0d󴥲$S't#9GlG`;<+P`‡,ͦ 05IVYP=% _Msb(}4%5@@>4# ֚FjƪV '],,N*($ h iIyν*=ZJf?2)7v>:6.%. g5: MP*!5980%]|aLmϱ-=IILF9% ֧мk[%kp%!c1^:? ?7(8۪k؍`V(8BA::(UJ ?H-q$ʮ D&-/,*#)jը˫ƫϽTK*@5ߴݩڌ6>̏ʎد6,H[Vbd[bHe/۱׫4)A =!{H c^̇֕ ! ! #&(c$ lp̼eҷ \6U$"10. %",D4=Ş 70A' ҵDD+g&;LT.VN>& TKܠ+" ~*7<>O;-P×p"-̑Ҏ]6ro *!" &ғ.,Ԝ_H > UK֯ΰB2HVYYP>P( ֤x1xcu&&% Q% ENՊ?Cb:G'@397a/E¤⥯Zȫ N* 40'zƹ ̤! + 8@D>?2FŵR̜ڢM-A.InKC40 L&Rj`|bV.=-G~J!Gz= 0&CA]əUZ2yjVeiR_Ih=u擟lxſܙ ~)65=@<0wf롲XVי(G \4DPTOA,* ʊ*"1f01sBPRM>C( "+":chȯ߼$ &`-i/!.*%+ *h)ȷUv%m=OX XMV;G"_ʒďޮX4GdSMUN@!-gRlSeH4ٱ`L#..661' pRnfQJm +P0ZC}2+w$Q9!u 5 *&~>$CBWbGa/T *d ~5t|,| 0?HICB130߸Rޚ`E (=KTSIQ9!φ3Ҩ 'D1:z<@:,0 . ,`ç.!&)%!%/ ۴&?`.:>;0rr Dރ̅FPº57C+Q:RBB;.JMĤ޴¸q?ߵ#+,)u IsR48m<`|aA{vGFG4ݠ!mG ! {  'ֶZh_<-PCQIUM>-|ǃ9zFCp(z03$1+< 04Eˇt 7>,4F9n81& U'ݺgnz4#+,Y* !! H  j!^ & $%>Q\&ҭҡ0 %z6AB;+ 2cίJ }L%~5S?@9+iԶ^^eɒ !-10@+u m%_ߏХ̸QHX w|&w4^{7m [i< 8W@qȌ+P5HSSbH( 6t64!u&|( (#+] gQϟ+!å&$0U43. & m w oAڳ , )21- Hrґ*Ǒؙ@"S~nbٟ϶ȜW_<@N)6z<,;29$7؟ ٹȌ=,6;5.#A<EȒӧsU?!]%%%  xڻTIܔl7PtT9gQcm(`ہ[!W!C51 fZ֢dwϚ64HSRZ=' C3R~0x+7=<4E(7u୪'w޻#23>.<3b'f::ÜH$.X460%iRpo#]#g/`53*tEx׺cuMe(+(!cW {β\c&HC4 ySliRq4(T ; %[ }".'" ֐Q9}HI c8. 'D \X(Pߔ;B-*; B@.J+e(FL 3&2;87.# 0{mEKθO9W'(% $Dث˵CĐ܉B $,-5*5J)UI %l%*|("#I3A7"٨Ԛ߅ ,I'-.)!RY-'L}bo}&d&D yQ6(hah(;9  `? SM< b  k܌vߑE'!<-2r0 XȟlvJH"#^ , 6ԥϱyԢ .t@M?3| P9DHM x=$()& f.߅fVײ8m\$m#"JG .!4xQ 2 Q6{B66d[;6 eoeU[ {fhM,kb_,gnlCtP2 p R}ڞ/ٍ J+1I/:!]ttvȿ(V| yICOҲL߫/> HNd)'Z W=\L{ ^p !w 6r@kz y'k)& i >V?N}02p$@+A*# g"؁ c," J&?y zxOXuR j 9=ph+" qO  2 vƫFzA1 B^I+FI5)ܮͬZ=4)i5<;`:2$x =Ҵɴ̌*Ka2 { H Ab~ yՓЅҒٰ< i'o4$ H6 Bkw(6  }&%j߅ُٗI NV,:V b@i"* tUi&@W9B? Q #1%T!QSYn%!V(*'8 7 `J߸ Dn>?s#_O1 tM6A>^ a" +4VCI8M yDK*PM L{tVy  B -Q ^  7 (WNH,E!i.i9uQyN=  7^Pm  ).-#=qbְl]M')U&LwW2UPMc\F M BN G x]G܊FAXF 1"}mj3rk x> #۝' . } 2  C1M{LlS%T>j.Or2ZWL.Z2 O l+=ءcؤާxJo< -l۱ٴa *E.)ڭ 7B d$aM.%S   IϤsRs &9+[* P׾e/#a07v1,"H5שJͦ[3 /O!& B=[ t0u&M/ 8  zEA3ދ߈R k@0$Mg6[ M!(*&UWq̅Ř̻ؾe^!$*"rG f0M/>).#=/#5S3) tѹs2$-L2-A!:V0g$ UE `&%}  v  WjO!G4-VNh`_=bG_D-AI I%ڨC S#'p%6I*u<3& E'*A(I!$( (T9̲ՉG#D {6 vlmSyQ`*.,*"-B1#+I D'%f,o-)Y _GM]وb4d um GG~mM~  ~Tn@, L4|and B i v_GS#I QL; d+͞ѓܵ3!J*$+%QfiWq U!S-20( ح˹_Jnt*300,# 2ݜTω>mQ) aZ FBPY< C# R}j0 ! Y-9K> ApxvNqX!  h)J @o:$] Z B%J0Ϛ˜t$${,-R(9mi2$: +%,-) !!AtJY*b ~s{S^S ^ [V{j5v @ O   *W"$!VUH^ *[00z*S|wܗQι9.W%-K-$L8 ߐ|x G&m/'2,!o`VGQ7t_G'0t0*7 7O'ՁPe?p  ! 0y `a q>c Qc2$'D$oYs8- -%2($%$[n=t"EQm" u |r MzsDG%?| Rl 7pK#(w") aM.  D]/l &---("?6_ {]k!/v77M'k/ڇg:C"+/+F$@[)Tdr% ..'" n k d DC#k=+ M 6\6% &!U Gդmۏ#>*Z׀&ظ! }Qe:5 ?w%(}'u! c")#-;)! W׎Әe['0<4P/&k T_߷޺m *1}2%-H U޼6u%! $#^ n w XM(/.&<q/,w U (Ux=S')#KQ=ׂW!1:91&L"өNM @$6=<631#K KZ3ƿkY"50R66.4 U`;Mœd)3>IhC/<DD<.܍Ŵ\yswS-8> ;2%X!/ݖSBs 4.5 6z*2 Z !`f F<dgD E9  dFH)F =px'&4;:c0jBL뽾{",?0J^I6u}dz'=г2UETCP C,yګ8b-@F=e/AƫľK{&06&{9:f7q" u|"$%!Y,[k`j#<+-)Z y:ӵŭS*+BQ^TJ{4iWUk/*v <:T`^(I+JYvŊAYid3S60'mի!/LZXJ)3HX_Ž{ǚ/%|0&6o:/"۸ky' ,56982)L xtz޾K݆j!  ?8y @| l~*XFr #XX i|NZf *;6}:=6'Piu/,m;S_9]K. 4G!: /\I7`h[DJ#ϲbķ ,">TlYQR>#oڻwudž/$!<>GC6!<3$֏Fv" %y')!' 3w5ʟͲ,EW(j3k6]1'U߂g-indE p W7U V  +{iC g+ e#V4?.RzX)[11+` qnKp/BNKzI %#I( v Hz},  BUN=IQz; R ( 60  b )\7U@d +v6: 7**鶇ˆA$R)`9lG|J>-,MͬVa"<(QVzPt>$)B_ʜ!R7BAD7D%PMե͏< k#()~(/6u%;Ջ` |*.r+ Oا^Q;!> *2  F0c90,b 50 # s e 1  f^XD )B\ym K jԗn d A$$+,c$9 m\[ԀymR+,743P#a+nYӺr 8()!ocݴth '  _q`WK9Fh](?}k!3./[i "%"0% t&'_ ""%k!;#'}M  ]\6@  )'5Q  ZYh9}ؑV>X  g!|ٔp!C 1i} Iq~PsM}o3TTV4'Exc c  ) :JWB)v-r u5 fw2j 84 }eUp pQABJ Y +,Z% 8B%%< hO9B͋py+$''y ,<HnqX95Rg,vpSS7S. +  @?F rs V 4$Y Uc"n& Fcׁ 3j?A9& q2€ B ! 6FuI?}-6>bBY3+$66x1#)$^+?ިI $E'3$1 >jjO,Udsa 5T jvL qFtQ3U?e# b l u mFvs P!_ٌՉ~$#x*Y*h ߽4"i6\BxCD9%9ng(!}&y&uBW]T?'!Nن͟K.6B + IJ eP dhmkj  G]Z?(*/K.%*OՎ?IɪA'00%\ɱErdC.:;1XXFW* ;OQ GK/Ze ˮޟ3ʲ6LoURC+!#9H/T"&/T=A<0 : z.+s- <D M$-Uq 4XB+Yg[ yVIXNC v44  C:]@C(2'@hNP)}H[lۗ5 l XHғ4/ (|0#~ Fh\㷌߂-;>9,'Ԓ}k(./*"1? nP GP; rKLAn%5 `S i?6/vtR_(e9I 4-  =/K3 ٗ\nddxAպ)a$y2;8*0Fƴu%vo ,d.(Yk~!H O7.p> u~ ՝WSV+^ gq :u.*HaZ^5TH~Hd  ~ڙވv ("`"WԈ _ <ȷK~!+q-$ۃdžtˬn`a$ գ ϒԈw <Y i1|;%f ` > I&]mWյO'P< 1/( 6$sV>}}teJ&GA8: N /7nT2A09K!{xE&acB ~# xLӒb5"&"wcoϕtY( 8 C~!-&n2QhقޓxC'D 3u-I܋,آٌgeSW ;'Htkcg_w%(%݁Kfy 0=Bbk"<D3SSc6: ,? {0ݢ~* @&4-,) M: /UUsn2+@ xQ64/] PT{mEea{  K$j[د\i}"  ڡ] o(p4sUHCW[hERyM d.,OPIH^Jަ`u=raqUپێBG"9կ^  j[ g%<^[ 4 +ipb  (,ڟo2s|{ZQ=o W0ߍz٤f #a"g/)ܠliϛ M ]4Ҟ &O-"ϮbZl^ %ژ،X,Q<@@)& %l'7ˢя6 5#7$@‹Ƽ_JN7NaHRעuR,>I Ζڏ: ,1-O! .{ [ҏeCa"|!+ G}ITF$,6"? 6B$Y PâͪޜP $C(*" މDRhګ2i3.;B+v$.{-#Eٸͮ% ba:&$p2c9C݃G.G\1O*AO%m7q5ޤגc*( i /]ڦ;Y "$  T+x &)E cS\I1kX?և1#!pj~:&2g=H?  !Fv3յؼvJM]֫B) =Lk*ˆ*֣C'+'F U߄˅4ol$Nv > q4P\NW %udaM!Es~,.J8">*Cܖo:N"&r# Ȕ?.Q&("qڐ%Ⱥc "$+/,8!Xn̘O ?x DPԯtp%,@ WH|sݸto) 4>3iE~ ۰֝ۓQ n~:گZ!E#!u !% e˼1:0DԨײb#f&p%9ٲоr3L9t},z ~;[ESj=v %"ݐj'V!'ݓp] N |D`J7! zo##yE=_0ܓ)!(-& fukoNޚ > w֌Dۖuv) [g,:Is"3Sn X m bۥ՟ԉX(M9z7|Fjf8a2mܸvgFD Dz 6߆ߩnN# fXZܐ{ [q? DC" FL k>rY  sl2Y P w\+-r<  X_a 5\,l$,- L G" +=6~Qi^ `<] =@}uZsN:Fg8(f \ ArM;,NRjO0.jr) 9oenx% $ z,5vu{ - $^nr"2x{J\S o d ?aDq* V K2ZZm5(ul-  W|\T{:fFq9 +*@VFUh w %8e9=F#_p0&^C{vs4LX_8T$Z4ev`PW 9nV7 C v3;jR. 6 4KU- jbZq+'Qrp*E#cCJKlmdP"j (cL p:=j \V'UlL"Iu4V@P!N@c xxuKsZ_n<a0zmuJ !j S3,<H r G'[}LltjM)U x i 5|gVq _ 0N uNK]4R0Qr!!FV5q9@& _  9 !.I tG* L8> =! U@AURKmx!+W@ex7qdg  g Pu F `)cV Wt(x6G!8  bcw- h  } U*\ # U7%Y/ ; ,}4z*0C0)aKpZy  '9- l @mml ' j4uTy I\= ) o { 9 vyWbPL 9u3G] i%1'2\n $ /F 1 Gi^p4qr+Op*\Gmh! v) lfE >5 (/'6&oKi` I0ZMc\ I m=]MXFY[bXpxBE_ 3 Rzw'Y pW5  gUg9vVI B9XQT MhI$7>*  sr^(B Q  |Rb'Z] ~nDn .8b>I:z=CyQ 3Z6v (8 9i=* ;^\7!' a = !Sc%BRmq W CG JL  N ?K:u|;e3g%VUNfmtuZZF,y(9>Tp#, q Y E8.dtF^B[}C:}L%Z2jGCwi4'Faii2,t:m1="aA; 7 mY=h~[+13.Yo0ab 3 "%z&E#5} Kg=*^ Gn 07M*rEn ,?rV t  _ KyEti'[qf t = Ah0 myEAC.z :P%  K Wq A g[/ z4XAH V [ xAe&9[1 X(r% ^ R 2 pu9 A \1B'IemL9=ENcw9 r p r V [Nd} B 1(  : 7 T?z :P93%<DiGyAb.mP. ! 4 n 7 + 0 daN i|i . ,U7lAn4T ] Xk8<s/'lhN`$&^ GLm[9x] } W ]  8<%CT=kk<X3 Z$' f(Vm/  Q (h]$ `2Kn?@t f kEB l  F UiE$cu!o P ? PWH  P yugL):Li [ , Xs*Im{$2GwCXD v W#j'X OC/-5SOy^A=$i0^5~*Fg* Y d $5CdlAwCjY 0 yJGi"Rv > I h gq&:V- HW_d) U w ?g\)ex ` ! :ped2$6Lj aU ,1& % s?[ $ y 3|b[z*](m|]W  | EqG+@$e(   }b) d 5 rA K3Wv \]  mK c@%#.zXq  9  U=:_ q^'b>_TD8M+2xX I b6Fp7,?U.zMOk6-]^8U ' JkN!EH )"8 z"0  )  6C W  ! 8 V~OTYg o rV {v?o. hgW"zLXm./ 2I! TsySA:XP;eP0uj,J V9 @E[  D   H gE(=O8TL w a2#e j S p R k ,.cA("#KFE  rF | ( {oLe. h ; MJL~R "re`Z0s = { ?:c*4~Mm/TK=I l`(0(uwCt5>ngU  k  (&xiea%!b=pu bh"g ElsoZ w-jr~XUnDn.P&W<<)IJec`E_eC53ou %FWv&"*F_lo^pU`R<a'yM+I!zg_=f)RuO{|eXw\.la@ X`89i$N.#A~%\?f,L{ gm(*QUO.XWS TUTi'C[0XvrO}8uQ=1{sC:)5PEKr;i9z,Kz"*'|NVX_O*M/Gozl'%\]VJ@he$ !J Li5vR+T 0OQW y2IL,e"_|x,] rc]:=7Xvpo7eT;?>d}}*Fi||Pd\1+a/Ez7R_81K$pi9 \4?qum#z4s;dhOiW=62*2( k'VZjg?7X;-",*k^mL1Dz0Pj/T&&8F1hlq4kpyuJrPZ?GN&jO}RXA0I_Cg`x6Cr.1vTAk]eLI3]76,EOU55I*ez&*Hemi!/&=]XR1[ T9 Xo1[ [[T$ bNjmE:Ji;?\6 6Tu.J3^KVTJ7~NLu| dUeA*X7=X^ P~?3ot`wk=~(*oPM ,2I=.AmXzXJ[7.\cw[f,Rm7af<oEc? *~Cfzm\#pgI- RiQ!?Xc*koZ'^wr(1.qeC{'CsKgAu&,$xIuu'%o=~qT*^A?qoVGMOXViyX# tPFFc,imigg^=s4ZCG]a~` m8 ,GIwCdV,Tm^ICdM'*iKr]tCqi xpGQ%'Tkkf.,:0AmwZ'Ios\QGOKIEC:# *6Tm{\K. #.?A6.%QuqZ:#:E<I%Im{q^:4M\TC<660% #8IK<6% *4662%##<XifXA*%<KMGC:80# !.8:20'  #,022,!  #284' #,*%# #!   komi-1.04/komidata/sounds_pause.wav0000644000175000001440000003163610075325104017671 0ustar allanusers00000000000000RIFF3WAVEfmt DXdatar3 0D\tAob %dsY0* oms  _ ~ + ] ,.}.rvHJ:I !"$&)+/c4:AJMA1%p)AT(bMm]spdXV#E3k%$/>N^:lquzyTt)b@^ ^"<]AXaswiIP 1 a'?H[@*~4Cw'ʳ(u]Ȋ,d5 Bzr.hC-9N2Q2dl"nQi_Q;B0| E_? ߗْъIo?XVa_dTwD0P E2l'X*%)2(c)22+*e OBXm ,&01+ f9iۣx9ݰTٖh j Wrc˲[xť C=c\p=Wj}ó V0Qe8k,cSGA-ayܤl$((H% [ޠ:t>P (h"QOp#&%3gx.}֭ I0): -'r["*.12M0 ) 2V[=@(X%|݂ݫFQ0Es{1. i&ol^}|I ީ<&& *F8Z@A3=3f'oL J~( 2A52(? Hn֘)30)nX*ƘM©ӯ('++`'Oj 37ӲQ1/r|ݣR!e!"R &EEճm\#0|54:+Q= ~Y٣@8 %/k! S݇4ͺA@! _ kSys ߭Nӌm;|  J -aNZUt7 f;">'"(%> z( SWAMm,/#ӕd 8 :OZYp!C!I* v %[]~ , KE q"1||ۖkbb1 QS s Tx$8nh Z~b_6k1 omgiSV,) aXU-EK  y09F?=ٝgW w˗$ !#{{\X^x(3 L-۵R,OY|p o ~ / x3/ #)7 ^bC  9 `PaI ; Bq* % d y&BMG6vS YQ t  rf( p)/363*Z 2IhZ:w!=   ݥyT1ŤǴ͛iX 9#78ct he4C ?.o{J:kN  xu9V/ )~@ <U&I 0*7ܞٟװiQ1"G#o> #9} XV 5@4 #Uqp D!~zLG\ C9 8MQ Bm@ho!۟[ARZlv?m*( '(<$SwQB905 Xq d/eny rLL9]m5up ~[gU5S5SSOyew ,E ?#ALn .Z Mjߊ{)pi= M IpAP dxU G51SBI n G^6ߓclJ=ZH"IM.cy81 b & (keZ  9C 6#" FN r& b8=Q?' dHiAqbi7 = Y 0 o' Rl >H7g / b s s %>-R 6 > 1Eq kB_* c$9njz 2v)H\o9 Z^|7\Y x7I  f KcV + 2 o*A` \H-= `bo\Tlbc rZ@j] cF00iLcUH ? h& /* C[mX- AZVr\"'(&!  e"CR " = kIw%I **s Z  M(q N2 t lz 9R/*/H=l AqI  J]=L "u[cqX)6//]$^T,fww'C)vzm]VLLq#L4ANJ  3 U h U6:(<F   W~ $ /gkcJ 45 ~B  MgN  ~ V&RC : V d  ] @ 2  PJ m D  \ \ g - z n ; TaZ ' t4. 2   = |^T)B J hG  X H}7^,g?g [ #H G n|q _c: pON, ; t t c j y l 5  fe'?\@ M k % / *z"PK%j]-/:<NClW~9z># $$qcHs[Q5xqds9Rh9Q~tz~4 SA   R2 &5 $ PSUC5 &)E t 2wfQKI &/uf gAXv t><Y32e"c"zuU , 67'K ^f=Qg7( > E  0)XAm}Un8[.=?0 Z v v 0v,8M4 2 wvA!Q]/`kE~={ ]vb2 9(= C$[KS:~-5v!`W y2qm)  ~ qTtU ; N UQYh _m ` E; c.`#&24=?m0x(!K7(HQ6NcX], C MDIpCPKI9^iewn)H3zX6^LF+|tEp}v}-<2+#+CE"fm*6pJ !} uo/[ -pn:.QCgWN6iY $IXu2CM[@%RWLAd\I#p~]^ P }U Jfnf"E>ED!b= cAErP%a$k{3l |./.x 1~4a;1<: 9Q5O:UBc0arl%ei1"f!0sssiEX9v3ORL}U5H|,qIDbO_>eSrS=6$.6%Nv/Rj:6TG|=+94ZsjN8 DH=n b>H)vR/`s!n&-3\x ;us7 Qfq%I>XoN*?Iu ~#t"L8n58sl&t7^\6(#@$~nOA 5<;#60$WxiH>K!;Q{Q |y}wx);`IS>n${*eDFzx@_b'}eUvkh6>6KFdE"O3K?7"(`|5/~TZGp~wsM5)UrvP ?i \ m|C0\1<  m].M%z&/P J)J&:tMIS7OTH'Ta 6KBx@+i!(m8C,sP0}%J_+KXdr&*! PU5eu ppI1#0'9h;n8=RMGQG<jQZ*: =q&XukxGGJH!7(9Dfq?8y,@X9J|8aC|pK: W-Y/QK!x>+ <=rM5 YxE:tUFc=3>o#'y=udIqx(`d{|.Bt90:&eF)Zd,D(O 1\)t9v9e(=E#*E2@4 C2 S&0c?$MQsV,9<PvzZ,OJ& 8Y/!.kE;5@sum{  T{o,koEZ&M! _`Bxw] d :r,^oiM"ugX]|ajQFDN`kyyxl`N;+ komi-1.04/komidata/sounds_powerup.wav0000644000175000001440000007700610075325104020256 0ustar allanusers00000000000000RIFF}WAVEfmt DXdata} !~  }$   | 'y+l"# | .#,x+q#!  +| %!q$"y.v%*p#\  }$#($ [5: M &kV4 %w \  R{'261%|\t&}.k(m f#Uh\5{'  $ o*iI n$" c `!>Tmd:!X ))    :h  n- S v/  (y.}0'wx ! o3y!s%&" \7ToY , r.t$Ut-+~& 2v'p" zY  } -!z%b~"};q B i  N Y   x "qz|Y  |""tmnY"|f9I s0e '*%r#  #q!0s s|G]    V\ MS a qn3h  g       h a\b_L%Z  b .b[3   _cn 0  ; _Dt   z1!n| a~r W _]e.y \ a~v X  py  p +    c  {$ jvgxnd {zagC , 0%8kab ~!["}RJ^y}w EZ +3p9h:g5n"0( A   r %     l e_] q`xUL p t #xxxD j4 jj- u1%&V~<x8S${-,/,(xqpZwvg zUr #q|~r Tmb^!r q!|&v(!h#xsc, x &mu){ Af   ?Vk9P}.ru gqjrjuu   v;g Y c  4k&((# #!mfs $ y`  5w#`1'1w+%w/ L {( ] ` t ;N }uiNXs o uV| O s"v +"###$$$## #"!6!  n([ v |4zW?H$< F i2b | HF  ,&wn   Z!! 01  |R]>d   RM2- tz 5l     & h$ g v'  rHd hM YkV"}&(J'qSi b  5&k t$L b&)9 xD  $l$ n#]"MdbHm  f  } v fY9O !$4l*oq ! y7E T   [!U 1  d. R   W[[  ~mr#Q*$*dp*$+Nka[krW! k -%2+*, O<Z<#       K  blncd% -(tr5 :hS A `  f u6!*},N VW + $!!! I !  \g"&%y)" E   V Q*pa rA a  [  } {     4_Z< {u_ #&i"mO .} 0,#T  H# +K 3 5D0J  X ;g3 rA"  }m"#yQ5]g%0V .  Z: \[9 a#q O G  C$/ "i#$R&&''&%9$"X~w  }l`}4^N>6?s6"# T 9?O5!S&!s *> w " Umyr ] "$&H&%G%$%"!M #&a&D 7PmU }F"I1 z a E^ I m V6o ] U 8Ao1 ' , z=7@A T6"3 D@g*Ja#Z |5='fI!<  du^ %s/30eV"  hC$O W,1 ' :auC'L. J 3 D  . 8 #38^*WCZ OfgX=! sKjQA   z!T'- d   W039K911GE0[EzEh`0Y '7/w:V/U.~,,u[w 1 CD67 /1NX!'>/, @.}3~3k, EM / $=$IT_  aU @ n  +"Q_ZfޚaGܪKܲ%߇59 A8{" < BE !#&'(( (&#P , > G!n%"%}3@Q0?R4Bx B J;i 2 1~ۅڏ\ { m'W` + Qn " "V### #!  H pq*CIE; # 1$v3Q"z#߂* 97"0`;5\26%Ak F `RpD` "Il^-m8{ 4a + JW  'iFwI >r(D6!<Q 4 z #   ( :>j0I36|':*02{۩'O-lP 1= 1G ! ?jL["D%Z'( )2(&$p" w8ޖ$6ٴ?j69r h1. f\Yr-) :3*5ҏj:C-^cճ2 $"$I&&'(((''$!"n 7 q0N  cY |&1/#O S$(.0&y  7#;.B J 3  < C eHdޮ5@ w s̖:׽rE8 !""!=} { u4. ; %6_, SJΑ7~ 3g:.`1Q4:  1 !#! y F ~oF)I 0!$#!N CUU.ٰ]Pĺ˼;¶ֵ<R;`'/D6;?ByCDB?[;60*$' ,)%9 " G ! &#ela}ʤ'*ۂ+' ""S&;$ <zݘZd #l&('C&#*  E&#P$Aڻ(r׸'NC" #m-5<AgDFPH-HEAN<16/(q!)Z ^"yM#J ,$!"@$%%%^%#ޡ-Ȅ Ú {k +v"$$$#!? {g2 JdT# #B*0068$97D3-&C[e X2ź5M˷>Mܥd -_:FOVB\ad'fd_YTLtD;1'& $Hܣ  ;%!*$&''%&#T 4׵ 2ؾュX   $/)"-6012,1/,(3$-  ﹭ս/8٘Bf#-6&7u/"&ڠȯѵ:̨J̺Fޥ4%C1??>: 60)!h%ݧ$HQ ˟e@K R  '_3ʸ5Э̮2ǔ%ۮ'/' 1:DKN V[_bdpc`\"XqRKD4=5-%9 7+$ D 1-05!* $kKw /qM iM&+S.036#89; =V=;83+".Z 9Q8r'ՅIr    ^K/ң1Ƴ!ʥׇ(3 $P,4G%NTX[]u]]p^^\XCUPKE?92,[(%" 0$Ep|K֯цЃճ&2"} 9#6W2S4r8 fAt"6$a%&($+-02 30+p% H"OW_+'*,"#a=!.DK:@6%/L9AvFHHGDB?=U=>f??>)<8400+6'$#1$9%&(**v*(=%$ 6` P^ UZЯԙls}  Wt  Y v "R#$6'*,/A/, (! (=f܁^&x8|BuFZ:1IC쵁 @ rw  W(C2;CINRSQNK6GC>A?I=;:8&61,'# !h!$E')+*'!  "a'ȚF*(*x4'}!th$l> !%(p))4*+,-- ,(# 6 N1߾f(! ' $v~?#O'+ ",'+051:>BF3JKJG8C=7\14+%!-!$')8(%|ׅ̋Q結I^g P #$"  ggT ^ܼ +6%08@G LO2SVPXXV%RZJ?'3)%,#-D<-щ,=,%"  ! Pe;r ļ. X+:HTM` jqv=yyvrlcXL>1&   Yf s ' ,.s/.+(s%!SÚKЗ &089>>; 6/' Ha{ EM '&,$N-6@(KU_glkfs^SUE5&  +D񖶔7* ʋzh ! &ٚٓ.;ϕ+ͪ"  %8J[hrLx'zzz2{+{szxu(pg\SP!C5(y#'* '#^#7.̴W=ŭΰ3εw!鳿؀ &-D1)1.*k&&"A WQ`s%&O3-@LWm`9f ih]e6_WMC-:0' #HY˺4US$+%, O"&u屃ú"I9("; E.AS`Vhlroq-rrstDtsro2kdnZNB6*U #`O##+3$p5K 15 5 ր߶kYZ㭤 ݾh$ <%l**w'!z! %{% aY T v!)4A?IR!Z^`_+\WR.N/J(GD>B!>7- š`?{  Q߼ D " ܶ1 t!'"8DLP$QJPNJM!L-LMP T?WYv[&[WQI'A7, ! lc!o. 3,,^*ϲ&ӉH$-А&;־)#  &$(&#!f #%'E(&!d q '18=@@>;7557`9;==8/" Iļݽ5!#ⲅ) '[G. ߫ #O 4.<IqS[a!ddba'`o^\~\,^"ac-e/ec_X)NA4'  lgc  2qѪ%6׷;-i+4ն(#ࣔ4X1 M U %(2N98 G#/+M3;CKPT8VSNH@9320/1>4B53.%BOCͭ½7̊] "p$Bں[QeUϩ]kqFĹ2oR$ q !'+-269<(=x=<:.72+j%5 %'1$k+3<+CGIjHD=6/ )Q# + iڡ/d r! T 7$B$\@/*< sN  - G",5995,cSk #`1.>-IQX<\"^]9\=[s[[Z!XSK?-"RQnˆϻrܖ(^.;^-d Z#ɥpyed򭠷.O ſ .54"(3@LV\`b-dddc2b^XO/E>:/%#vX&!## jMs $+()'"Z&sv0i5ӣҢ+՝ځYq1ݽʱw7 ǫ. ^$.452*|(r3+X* &r 9* 4s # g, "T).J2 4443100L/,b()"$C7;:ݜ'D4Ud@rb ͺPO.N B !*266 3100M1 37>F NdTY^`t_]0YSbMF>7Y1+6%A B%2;"%&%COFFC@>>>=<+;F7/Z$):LjŽ0˵r9?( \=ɼf uȍgޱ*7+́".CAOX[BYVQYKCi; 6I2.+G**+,q/P37:x=@BCYBy?;F7+2-(%#   'a >  ~# KٲȴnŪ$&ܴµ$60+(+'&&'<*-14B6543D31/"-C+Z*)(;'S%"&{ 1 7EFK@G#"EѮvZʞƤ/]Iq-҄ɭ9C؁:  GL j 7a7.#+3<;s?>8;/s# 'p > ,345g0.%FԹuDև > <6F!M›/iBz˭i>۾-*{R$%"]$ɽHL59+;KImSVhSMJJLoM#QW^^cWeed`XY{PGZ?67-0+* ,-/25:>ACCDzCBs?;84Y0,*1(&$C"/[ "u[& -K@z4CGl ‡Ю6m:RIXLk8KM} C %'4&#!!#(/5U;?5@=8,0' =%-66>BC? 8.$#'N07;9g1"%l٠϶R˴ѿ*a)Ϭ_6[Mgp#HOTT7PIC=85468:J:6.$b F (T4;;5"* :51h/>/011L.) JBk2W '^ '|m7г_ؽ*ŁCGVK)ɫ]'YClV]zXH/M>C t\6 %+8ENeSQJ4B@;v62/#..024"57O9;v;;E:864100'1&23E6,9;<<%;851--)&-&&%%&)t+,M-,`,+D(#=b n`wsT}&ز.Dk䯔oALʧˣp:3#±[M3A(˷U˼ݶ).}" %3@dJPQ#M?C5& ] 2 1bBPZ__]Y(SKKCV>=;|975R1+$ZV!+3G8;83t*= Eظ֮M޼G,9"}?Iɵύr؆XbHg˗/d4+P %#7dqQ,HY_\O7Bڍ!C9z) :FM.OMKH5EA>r;75+554:4465^544_5666+89s;6????K@B@>r;R73.A*M&#"#3&*/4 81: ;95L/8'& V_^W5O7 :  IaHɯqӵwÄʊ~y۷ؔLT+W砎dz-ЧS(߾")Hź54e6s j !2" A hK pN.>J=RTSNE8+ f!(/)4t52,6%T$ '/.1Y2.F$5Eq:,Ԋ C3;E: İIݩ:shth氛 ۫;2WBIE39qջ -~N 3Q`ec(\H*z 6*^9EP W%WSQPNLKKKLKJMJJOIG GGMGF>FFFFYFECBA@G>= <; ::<;??@h?<8 4.(" l "! ![% xՓھ.Ͱϱ0̫$n x޴//׳LlUװ3Dқ'ϩh@\Sloe z| &) (#0u [[i1 M&1w:6u3C1k001"3456 630+$6,A5> 7` - ˺3܈VޟdUʟŏOᶿ̱(t$EӶR3GH.Ȯk ˎpzQ( Uv,>" F __ Hv&-q3(79;l==P:60* $W)7DMTSUSNpE8) D%r++/0/-*,F,-c//+$ JkBl߶nM 98Ʈ^!"ߛϛ ۪#nָŇE)$ͫ~. ɫ$h;TFtéޥP_B9IK2C0bҭ 5 :S^_YfF)W ̈Xՠc 9 /?#MhTREM=I[GD?y;b9f99:=f9U2*!M c1 ?"" ^ QJX}>Ժ ȬӠBsӾT=GϿFj83JH.Gݾ  9۰ѳjH̊չ0*?.LN7K'B"18 B @{1}CMP@K<*6|J v>!! < %  !#$$#$% $= Ck $&((&P%$y##! # !!! "#%-'(():+X,,,C*N'#@ G?_ "-#$$z$"i[3 2<  @_J.!^:#6ِ"1 OA"ږ+*4l54>&Vq2 2EmݖJ`  5 |s h T!#L !!& (.   P 8"$=&$y!" TT*!" e  " ӺR. W 0{:ټǹ(.-DجBQqWJ$-wO~Cщ: 'n ! e?? T6DGAz3Z}ʤ&?ɨ8*=ESE~<+N_kNchKGu!!e m5D #Y1!CY!,07 Q* "$%%# #!'')H #&&%$u"*gA@+G  G9M '-bܶv R'K{*-4!mh6 pYp3(Hz/.'N!#  X#+  -R F -  l 6 A QL QR aMT E67) (pE)/1{42]/O8kӖiO7eLުضTΔ̩[N޻0Ar1r1 {7$w T3mC{A"6$%r Icr@s  (^Ao # y Lw'mF ^ O U$*L8(uv'y1: 9' (!g!&*d*g-~%y".+."yo3DS<X{boBy^' /,(%q&/ P Bj+ #t285*d w+7<8r*Y4"  p Bp  ! "=Ajay5h kz  .komi-1.04/komidata/sounds_shoot.wav0000644000175000001440000002303410075325104017701 0ustar allanusers00000000000000RIFF&WAVEfmt DXdata%   "' "146F]jjZ7R64L KCOl*B4EA(p1B[nV )~-ZPczF!,u%!x F1+PBChTO4rxt:DRUi`C|h+}E-E=0K5NE>+Q7o]bfa? QY(8x,DM W">-ji RT!l"a_%'gVGN2D }1 |Yur$B2Kb&MS: B17RQB{ubgL`'BNg19 c 0O[$ g,G5H QyDGN I AIm!$ q&R^1A",-<&(|1F%C';Osk_ I: m ]#(8 9+#;R0s6*1ݎ50MbOJXsqkV 9 mDbMN. zu&  )& %(n& I _"P*B1ځَ%=V I/|\Z}>z&GD@E J *}y7J3ec+ C%&kC# QM+y8n.!JJ $ۂъx޶7 2 UE 4Pӌ1Hy#)#VoCʠp)%z% r{1մmF*5 .^ Oپ\e 6)4 \I a x~u}(yw,hgY1 R2x-6Fns R7 ^aK&l ! k x79tAZRs7^@_>be?W :jzU@~N> T X38ߊ?ggCW&,;G3E&=jR]bB$_Dg Q <lu  .ti_[!rr3/sm~: > Z + K8 : a< %P3>.9Bg $*?*sE h wl Y. _q- d3Qj4!*>,K WgPmrz0mM>9_4g=eYzO NziBv\+3^<wgJܴ g#TzG lW7z[ =C/sAکږޟN"<;`,/X Cs uؽ^{!vA}/~$g \v {)GJ9V9{mNK ^ lJX?5?? q .^D ]  F/- ]1 @vz)J  >5F/67xe t-O\ 9 mR*WSp%"P7fjR9^ ?p[y!{OuuO{ wG,DpS\k} % (=|m/|/o( 0>6^- 0QLZ6 0a$A RN r0xUrz \x_MI~ڠ!!yZ" ,!BԔr.!7j2 x:*?i Wg Z # ;A H X2u 6S?k܃Nۯ>O 6 .<IelKrew K SH;m+PL _c72$,5b;04g'W uʹ ;>?q F`b6SYC4c-D@ݸހrZ >ʘE*,c3-0r'{;ߣ>%q/6(v 3;Uڤ@ u%0.2 OuhV;+މ)<~eD'̨Eҋݠ%)m 9 Ak )sym?A6b?vm9W/KX<[!!?"e ,Cl)TĖɎ1R>##=v Hߍy uT*-UpPfpnS ͒uj8 =#٠EҔچc D t PQ.GDgDW (D3+ FB4 +Xb\6Lx>I>4H i   I f$EgeM"Zl 6\گU  Nt Ou oyL_QiQ { `  e_yPr<(3$-+!7x~i`3ke$ "%# jm+oF %dp?(-& ~ظԽӈէڮu RM"(#{czŁ$! )|b׀)?-3& -NɩäǑռ SJe9G.84(l?!wʤ9џx8@MK\2dب6(ω+-#OU\O*Y ì`(HQ?8Ď8 d)+=! ~ﻴ̅;$578+)g؁ƿ8Ș $(""'H (vJ)E?RJ~.Zt|3/r$,`'YDE^cjdݵaV})Z19-e`yŒ D`n؀Iw,a'"S+ީ.$@9V !4K?A8^ IMݑjۮ1@3!8mBP>.xcz,d$-)jGEߔ # AѮϣՋY\))* /P<ƗӖy .4,R`0ߍٟםDOqF~U*c5߿K/dJfA$א d>#" >݇iԻȒګAO[7)+$Mm 0 sGiUȆQC D)*qېCBYڝ!>UJRB{$ͻbl/HL Y  "0|O>  r?[ u -3'D # nT  oH~Tl N O(~/ R|( ~ V B l (wkSbhPn`6m B , * W!B A .j=vy WY$Vb !  c  l z  9d+R 88X  3aS8< R{fh xe a # ^ E  S t b M 9 9 5 '  D % @  T % f  53R~Ua' _  p1 = a 1EL:-"" (gQ|OW=SQh  aGnOWc"Haij[QHE@7+*6Ru{j9$=H:&DX'F:GcDGy\)`Z`q{~~wrnkie_]co}~w`H5,3BT_bZM3y`c)JVQ;m`g~umjlpvyyxri[K7(!+=O`jmjcXI:+!%0:CHIIFB:4-'$""$$$$"!  komi-1.04/komidata/sounds_stick.wav0000644000175000001440000005161610075325104017671 0ustar allanusers00000000000000RIFFSWAVEfmt DXdatabS         "%%  $  ! 11B??$ !!! #!!77''KhhhB/S?? ((% )Xgg<)RRU@)) +440 00Ihvvurr[*SS\//&F||fivvW; ..PRR@1##&<<\Y>>?WWT:;=BB\AA (CCXN00 #NNH 2hhpHE88YuEEj**''}}F$//HII)=WeAennjnnrTT. %b|\qqD:{C22lrr..]Um((!!{vv\__>YYg .EE<! ''&&GGG]R2Q&& ;,<ffXee1MM ccL  D*! [}}GG)P~**78866ddD%%"*FFh~~T|wwd44NNQQ{{yy5\;!IvvTTi#]]vvFPPqs,,1%|WWW[+??doo_55kg//1XX&&iAA%%..3*7jj:sQnnrllA]<"//9(([ll]]\\?SAA}sWaa""==%%yyGQ  T0TWWzV:$||6ZM{{R>>we~VVN .&<e$>kZgg>S5BB --Cvv""ro,,qll&ii;o{{lr=##F884TTXXe 11B-;;))rrU``bb:^^SSS5LL/a&&bttwEo!!2$$M,(([ 8//6|ZZ/x5M9`33*=vcc[M(()OOxxF|:$$p~~KCC>I&dd :55rrvv(gg33`227ss*1s""TxtccddnnR1ooS@HHrr[SFFDCUb$RrrQm??BB:!COO44r]]7M@  vXXW)bHH,UU"55&oo4,@zz4zz@@:6 M8))Onf1hO2JJuGG  ~2ov99?,,ZZ[Boc\\T5ZZp?)ZZ~eei<<2aaeII  kk qLPP66D kk<XX|  ((\#!8f+bV[;JJ``r.\\P H H O ' ppww77:CC\   sLLU@M,,cVee`f[__Ak88 wwy~// "KommHHDD%PP<*ijj788//$$ PpZZbb+ZZgv~|<<$dd..'  qHWW z<SEE66 [[v@@G}6##Se|5::9926%%**.M##U5q,,7w]] QQX&\ss=;;'=}633G uQ??<<"u -@@.5XBB^;;rxxyy` ::| U`NN6ooIW^@;8?W ttSXN <<`bbN055V?|| "I33{#@@_aa##ff^ %%4%gg""tic{{d@{k11r FFo4F9oo8)]**AWAAw  {{ljpp'V`LLE9ZZI|kkOc##_<99 00jjs~~`__@.*|z ]   CQQR R p6))|H OOF^^55JllJG ppEy@[U{{)jMM5SP\\wwj??**^^( ( 00aM..7kr GG!!**(HH.VV'VVYJQQ::@]]`DDo 0 0   aii{{P %p,OG77RRo>>oo X"VVrx @ @ w l C!!P5 4 4 ` QO a**??&%` Xw##|vOO/PP@JJnnX o)Eb  gffC0ee((]ZZ#oKvLLR ^"(BBC  `==(8 }}4FY\\NNi_C(VVcMMCCW/y||$$Exx ** tt]]\  5Z %I))O!!x 8Du.YR > % l  jEEH H  F u+ WWNN**,,ppDnEOO.GUi i OV__LL* * &jjf wwl cc8CC#FF((Z 4 } wXXl    P$[ OOJJ"ZqXfE[  w&??AApL L N RsRRY9ssQ!=`T_pp?x   kkh' 11YY  )% O [ '  e cc CU^^ ** :!! PWq# >{M !g|),44 !!{ Rc &&X ,A EE}L^ V @@mom m Mw] peR;TjBDDW77 55 CC#B PP-`}}fKKf//kkcQ__wXXCV{{3!CSS1   6229BBD K9! ddUM 5 5 {1--g]~~E1Lff< //-U sskk%% ""Azz'VV,%~ 44ee} zz!##SHwwZ?&?&$TffG>>lNNJO44 SS1**h~AA,,l,K\\{ ## k##?ppܧS -E11e[[EHs" " 0=  ;; }/kk*b# OyMM d KK "GGppQZ ""T T 2 ??ffq O5"LL U (lG22"'++.eeeXqq3j994` h99X`  Z/WW"gS eD Q qb\00XXya^^Xjjh"u- zz MM_ _ T5 --6  \- - 7!!(  ,, [Y yKSSrYY Cjj1 6 KGGJh==++MMf^^@ qww~ JJOy]]#XXqCCt mmno(   EExOmmB U ZZ v[KKk _uu .[E f## p<U\\vv  :u447 ` ny 66]]== 55ii4cMM16 6  44VV jOOW[ 7  ==00WWw~:rrJ: KKkkW;;gg 11YYx N N ;{{HR//* AALAkkJJr$ 33J   )@w (( ?s   \TV*R   nn2uu :``~~=cXX 330xCC+PPQ::Ys| R;;^ _ >l>>Vhhg '99 9 9 pO uXXXGll  Z =`e 6@KKB ETT0 eei wp,,R / ``6 2@__@F //)}}QQ&G]]t{ dd 00C`}}kvv c I 3QMM(i\\OHll # > LLmCqD / @ @ f%%WW%#55XDQQ  FFT x1YYE[ IIb ^O ?  ffhssR IIP??J o =o.kk OO22cT OO*!0 0 e e w w <[<% % UUn mDM draJX:c""NNqF_ `8 8 **%yyVcu55pifss\ Qoo^vv# oo0݌" Kbb 33\;;SS%gh>>JJ  vJ ( i"" b b * )   ??``  ڢr),,22,&   A% 77&))(xee 4FyiC*[<k Ua y3y y ..}VVM S// P{{w WW$$:JJP 7q), ,  ZCCTI99 ?`` 3 bbO}}7  ``6`UUw5F;;% 'K> FYY yy i ~llwLgMM$I qq;44 ] \::c 5.` j  $mm:  S' 4ݠd!EEXH  FF>M\uX}kBBgMMY^^eQQ:_ xx uCC88 [ ccTmm11<>>\**6jXX;kkU9JJ{ m]]##O33BGGuHP e iP (77  )(jII..55v ??*)YY#@jjqv BBsRcc OW  1YIIcY,kkmX X < ppGG777~ q R KKv~~ hhtt_vv``C   ` a !!22 &&{|   ~EELLBB3f`ڕ::)+LL6i*:+dߣF4--l**ucc5((X'++c! MM6++p5 t|3< < MH019 9 p33"" @x)) B VYY44 iqqtSSww#ii ssakss fflppA   33c3y } 8 ccY>>qsHH6T ]==j"//}o T?TT% ( )dd8SE #  uz z ) %%UUO   || jj/HGSS/ ^Tssq@jjS4 99##[Փ+k&k&+(BOvvbv``A66nٲ٧""(1tY>+ % FFA M$ggq++8VMM 7ޚU / /.1AƮ76??3ZEEך{{,-%%&<ґ29p\ \ |TT =Q66n00N }4oob &&IOh VV661 ֽ???pw@ < II6QQC%""==|d(C%C%U h:II h ! LLCuuug)\\+q 33iiZ[+WXq: : .  e cc+f  j |y"S'' L <<f WeeU s s c    f  !Gee7{{33 !! ^^~MD33   "a}NUU 8UU NN~wp\N;JB B ((|!!y55 ~jjw) ) (l-- -F6 D}}h> VV}# #  n>>=!!hkk**S 88!! E$E$$&rv$5????ggCʠ||/ppg ???$oݖHHdd@]~~  ^^LFFhVV''!6֛ٛަ$ wA%%kkni *DD ""K T ` ` 5LL{qJ:Ec.DRK\\vorGgb ^^CV22GGu:11ogg$%11kjJ }}O00 wwr UU  mI ''UUbbJS  66[ii=!!/b55 ]gg5{YYyS 7tt@fYYp 4 A&&9FFxu{4++U.OM]rrO k II00NNtFrrw /W: 9VVy7U66\ ;;BBooe|##ssdUcd JJ 2  $EED j{rr88-!!-iEEx';;> auu e ]YYo(BBDDin""ʘ͘\P9 ?JJv04;4;)Pe   9j(]]I n LL %%:: Kbb*ZC  m==  u    hEE^)ikkT T pc yy&&_aSV V B++ KKD{rrk""y y nsMcG  Z Z `5uUU.,,77dd+e#"" 2\\z;I/ 88  KK h]44 YD}}{{=  R   n:6622I I H [tts3,__AT=U%y(p?4O]])%3/xxqXUqRP3:PS?cg_eldqsyu@I5WX05#XUgY/.3SS>"%,UD@dHQL"]hfizzxVU0/zvehytdc_41 $ komi-1.04/komidata/sprites_bouncer.bmp0000644000175000001440000000606610075325104020347 0ustar allanusers00000000000000BM6 6(  wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwݻwwwݻwwwݻwwwݻwwwݻݻkomi-1.04/komidata/titles_start.bmp0000644000175000001440000007706610075325104017672 0ustar allanusers00000000000000BM6~6(0~: : komi-1.04/komidata/titles_quit.bmp0000644000175000001440000003306610075325104017507 0ustar allanusers00000000000000BM666(`06a a komi-1.04/komidata/sounds_contactdeath.wav0000644000175000001440000006255210075325104021216 0ustar allanusers00000000000000RIFFbeWAVEfmt DXdata>eg=(i}(:++ yD tA^%U/d$"YFs==(OhyV` 7o G| 1c R L ~QI^qj\|L y%Gt$4jEGoF~ ", 8 I 6`!{57` |O %|GpT*e^>o38 }TMw^r<Ӗo†SA qt<,gi}5M`dwq)^Ih7*I%&-8BG?B3.[ǜҲA;d(*ήcKM&]-@(]Ӳک(a؇UّĽ $Lύ^5DJE;- _ .>_KQPE4 )5 NVn [uzz \ )7܎]o݃h6[m rC )"#%Z'(O))))))3)v'q$K' 4 X i AU] 'W}wn@S4DHrG ˱ʓej] ^gQ  a'-/M.W)V!M ~G>^l   t"I }@ \){fZUeݔj)Ց٘R6,nqn}; R&~ \`ow \ \% +ZtȔlA{lL }~.a?KT@WT~NeEp;3\.)j%L#!M[_FL)j0!gU F{\@4D۶~͒.əΰLbkK0 )%!*-,G*%f  K W {0g_c9)0 ,)vhx  / :l  .߻6kގ܊ 1=_3TAi.Hb D7`O{7EsZj^ f CP HBښң.H ƪġЗݍ~%).30a,% '_2}=}E1I=Gm>G/_ G=s\9^ޑ1 /5]4C-"fh+a3ɿ9^ey;ޟ_`! .7 :6w/$\l c"A/dT {-%))&!b(}=MOh ̀9Iέق3 g }6-=KSUNA. \ui  }Uy#8R'8!A/@j5[$TTO"T-10_)i9R Z #~(><HI*A=0]Icn3 \ (ʞS  "*,%{ =2(\,L*u"2Ո)Aީ{(޽ Ci  C T Q ~r=Mr15Jr P+ c ]WVn<&\S{!J aqa gaYI !i2'b&\6= _  oC  !fp Em[)eZPjP ޗ*Rp fhչFA #,5V6/"sU [,424)H(8Z&3dfb'JdokX:6|B֢ /RIk9tZjfM %k1Tȥ<LF0i :ݱf]FNDdodEƝ镑;TWD xÃ{T9ː/8Xpr_H='jU!R'Nk\uj&Mg%d-."7=3Xr𾎮wػd-=P+UJ3iܸ%/M,n]һn2F&#[ #2;=7+N* |إԎ E>%'#V |Y9U7V#G"  6LuB Jh~ý6Y)7#Y$rA S IN"i$!#X/ @V[n|cH70?{  %3==3!GY_ !,(/i܊qY}]1@<-5Qȴ56 #833%&? t@?ixXD6BA %BRZhh/X;"Ο\n(79+.V}ѵF`Òډ`'b2-pG÷[Ф#hU:U#=LOG8b&Z;7(2=NZ]{W%Hb2z%)%C 0BH[t |K!g<$uеDvl }%j0x *X7<=h;2A%U*Y*z0~/'A e,& (f+( &?y6'r  ?ݸɳǞ$at'AbGڃٵD-!ks 6[ 5"&!iw$,133/'B  o i}uҜ]U{}֥ؤ(g$ !p߇hkHq-q %[ &!{6Db[8,[20A+"]CbP( %  |6 h  s ޻(| U'1;m  Va%z GTr/![ jQ@=@fJBڕڲݯ{9y 5*47@}DECy=1R! q u lҥ̮SR B0y5/b"W֐8>+791GJM"Y"feL7+9GL&(" G,##K7lGhYҾc=!uG>l14֜f"/"W f2 E#$!Q0zr N<Hrk - [Z !K?{F %y*D_z_9EF'h`tjN` @ {w {T "vY7 x 2v 0, e uQLm k un18gsu+M X | ZLa8ou<#v5h%>m\Viq3319 .(68  n:   i Ue*aAFX4*f;jk/UBg>`p#;)I486/'e 'M18;8.!/(+ߪ4 Whߙ{ަ3> 5ӤӮIC = mw*P =J @ wl6h#9 =q dIO jDa 2}h<  E^&)EܪxU 8%U--& g)z-*D"[ a$"uOa[ @BdOmB ۟ڋiVb1'y ?ovonoi2!##4" ] a%@yw8Ok [>t,wa۪֮ФP]KtfЙivx =F | TT!&':%PuiF I?  C Nrk 1V~ d^ `N>-2) )5:-3c# 'ި_OFJ !$% -`ˀ!!,  2I<: .s٭)-56-fƯUD%/.O%cjW ,9;(48$v/܅ ru(9jߤ}$#vYI7Y{tXM:/ go/R6 4c !  AN"o&fq;T]> 867Z U, y7J_?2KK e J&p{ w8!L/ $ dztmi V(bP zb E HKMLMx(?WUM > $DMrQLm7 U_cs 1H@OK$$tY ]>]'##-22|1-+ >k   xH+ՀD a mA  ;#=7js6D w Ig w (En \i $1SKlhv#u|k+z#v)/z ,Mk$ C {[ & 0u2.coM 'z:N R0|C!GeA Nna Djwh5"G!,Y&} FM% V h  !# ?ELs >s7|6 *dw +V`.6"\d;)nu5ieaB }3 t sc ~ GJ#*-.W//.,*t( %!eA y?|9QMC,N9N~eݒݚ9(luy<;yR LMRI o  / p<| f2 H(. P A ?dNPOM3VA)( l +{2FF+ = OE3 PwUw  \ u , lC  C >v@JR3d ?W   '?3bwQ2TR i} Uj;9xQ hTB |7ct  !/ =i=J'|6pk H2{ BP  t5pd cTx ikO8 $K$ Z"""8F_UGj Q gs%hgw>=:D756|9->BEC>84&dQ=^-o"!*^ OV)*R K ؃P]E w } *)3x;.?p>#:3+"3sy  c0F  v H6 5 x(!O\ڣP.S [Hzhy4R 7; U * $C0?R7cnrqjS\Es*kb*Eݹ < L(:< 1u 'СPh6WJH4_ߘˍ S-:@VO^xR6Ӝ:=k_B2KVBڒ.?YbZZTA6׵֪O$T04$NWQ<Զg>p(*Kc.1Ֆy  XȎ4S5JTSG2[% E/7R7b.)ӛUS "w;IL4PI*H[j_vUg@%w at ,#:JLOEG1 bפ=M/ yKǜߐ.<"05F1J$Ļ͔>hlb.-d5e-)6;8/"j'V2!74*9ޓ8j3G7Y/Lx#++,V$խY kطeҺĂ6.:HW[SCF/H%j|ml$++s*L"< $ZJO? 2`*Xe*6 tV9=t IM tP @|R Z v    }q7܌ *Cmu (X$\ FRA!Ql,/~ 1,f  O,:^= al``ܠ~" AP '.'6<@@9-qe G/݌غV 7k 9$$x]ώT:x,>QFC-7# Jސ~rj {[w&2-p,%}SvP" <# -<1/' /Ed1 - 4# ?,AE +3:7%5.3$4Vmz5xۄڗ z - l =A ~4~Gٓ*KlT#+/U/s+W$qz IP\ 9hJJoK H[ m$FY a \o4 9Vo 2 i\S KsQIT=@[P<LLuTNcz8 EO; %Xt Bt :[ R<; ia Q_ stO` e aj} ;  Uu nWQ-K_Og K$Pn` b[ ~/T]#m}= JX 3 == :OLH! {Rtx/lBrW * b ;Q  %L m B) 1  I-3GM!GNwS}pTt8t1H7|V1 o M4zxez $+^~ ds/\,ә׌<$$(K5hb ~+4/|[<7^!"4"f lM;z1 B vTLn ,V5a2kyi&$ob%;F 0y w+UD p" #C|  u~Q ~HA X( SR w*t~v UsS"P%O  O>c׉Є۔D)~4o7g1#%T$۩< -2.n#{-P,(36c3) Qc ?'<+2) 7EZB'F Tl-ގgS1-<(%$j[\=8 i ;\E:1 *F7 %k-+U" ߄ %,/)(Z #=S^h^P 7eǕF }/O<`Z@:nތt,ōu)ZwwhZ*%"㶥, aDyb%w˓ PZ6 )v`D |=c{->˭(@o>curZ5ڎòv .-KXUeC'5C2 oʨ'1.!s ҴϽO!#!3ʼN|ߕ4EJrB.:8Ə2(GME0Էp}%DcX\P7AoDĉ<$ 4&?KG5Nbq )J?X܋  9ĩѽRi$'x"+ie֡Fd rhEݿI'+*&| ey!*15Y5s1e*!995Wv \!qy_=Bd tvWB]߷ڂeR+o'M:zew SUP #&*/73566W5320'01j59=?c?;3'aC *M bL][RIӿDfz0ĵ :k ]/m2)lߏžę,vHZ~_W=F4/EPO 5M_hUdgU=z!?ܭ5 (.v* 0|kr߅c M"KĆ̎ ޔT<ŢݚF;LGs$joO -_&G2N9:6-'!LZ$ow F -GOP4k5-1!<\v}B  < y $p+,'ARau~1 DaQT !# q>yB.)rt{^|2;+  ul, |pV'Cb -V $'OjPW "n%x$}H7E`,vZ t۠7T zmrI/D,  -Bm0![ ; ?h 5xj 7Z##xM,߃{2S/ A?6 R^qk8 ZSKxj\DLS^3x`1^[ &u [#321 E~P al*tKL! &  )uzY " mc/]מև^ptOߡS}ݬ]/"SU~ !/53g+Z1}4+x*/-%| BpEz:Z /!D!vD`έ͢gr /MoӾ׺l,xܜ yI(+& [u-R  !0Q9}90!= /'5<9/m U *22 )db,ˈ^ f|$' \W FNjF6%0)2)T!ٍҾ. ! 4=W>-64'a*;1#p/g4594 .!Fy- W)S  Y yC1]حiWMaYؗbB!h[ Ogz#O&=&}4YvN C)250J%8SkI $,j.( Uޕ:Bm |M h!ΗVS_EpKQ|q$V2O_ ^ %`A V}^ " 0+& ?~z?S9hpXltn"(N_~JbqV|D W NpyC O8 nUt lb'|Sc D4/ * N <^.Hj#'{))&Y"lTph _${4rU\+gbPiH=,K+j] =ECq t jEE+~FO<'KV(PP2, ڣ~Fp D$)/v6r;>@Ai?<88,2+&C"+k v n$ l߶\ $_e\m߉ߗdDBsxu6Ҳ2ۭz{N:$Z *'f0B7;;A94/h*&"F!!!l!E }}=T'\k8Xmګ !֯1܍ޯ:4i "%-''&%$#"q"L"*"!u  -E9*<3^e/?qtnxۭؽQDޯFڢ60~ w |6 &3h,ti % <4g 24!8(*)%g }or3߹Λ+҈۽?gI+Ec t!-T59G<  V`Iμh%$"!D m$[0=8:t7."Gc  S[jw plX61Y9VEF0{ MidW  yc0!M$%$!a {iU5%zUAw/CW}R_] X 3 #%M@) )Ib k "  ! Ry : ewLdVOU_$   jU1mv;+ A o>HC =ro#S=U*$ ' g V pDrTHX^ Y}6Twf BE 7J B O;i%.` h&@^*t#- v#<]4KV= )L -Dn slw9 E  IhK8 a2- 4Ll \V!, I6 xBiLOh6dIL9JQ<|d4jl#6+c VM''r+ 3Fsf !(&=_c|~L4 Zh `| h v4 :.^] !y#! HDSk)<'8^  l<k tY X! zlH 1bfj %` % tjyK3J)7TG 8 0A,Pl5z` = eH {F%FrtBFl[7F1KQdrF5_ YmAIb    ^rM  r;Ig A 5q4fY ) y % ~ m 9 !w+R_U @ y$cXSJssYR eGw~L- ' a dS \ $ ' b v ? \V$BmPA^0IasoSfY~?wi/h+ $ R F&o - @ A `CW6D%#q0؀iUԨɪ "Q g!%Bzic!L08)91o$1> ,021( u= #i*,!( DQާެvO6D٘ @sKy[| > i). ~nm0U; CQ8HiQ!~~h߾٧D}wvL71? > A ` cZ p+LRE z?16WDx"#oagײv2%[H*M `oa l+ tY| /=x^]L>P5eH4+kI +`d /  " / r Fa?b B sfA=-':o !3/K-~s G s {  { f % ?%Y6jrcI56%&  M ? T f `~ ;@6&(JJn\f o UxXhZZ  m  ?Cg\EFKm9wL , Aj}< R &E}{1zygW BdrqW Kd^R9 5 d 3Vo"w+  }2eX,9{g)[>G2P`ynypzZ  c h T 5 @ [~ D aX+%0sQp v"pf"cVpXA2tC j V ?^q;^dt T o m ~ N ({R)RJUHr'wZMdUn/^Q_ d dLb h c f @  3Lgl*(>;p,w{gC79/& 6 \ . 3hN__RjvdX;![+_r +9@ZM2 -5Nr4. f % QS = >S[1Vh[=J_o2kT}5*rf: ?oc+>F@,= 5H);;}|rAc :h%} :   7 uWtQf=[. D Y  ! 9 w  F  ;N*(?E$ws_nzo|AI8]<@-9nZPI= Pxlb$5qLkz_8B+MU@OWL"{^( _nD+ cd.A[k<&jV  9  )&J&`e={I?,<PDS 3 IhMP d $K%;W0h7(bec*U)( k%YNi - Z 1X j]|se};[V?ReUHN2Jz SaX2gM7 ~9Y1HLpf<vD|7CRdj_ L  h8*g.+fG+}m|Ap>;Z&>VKp!'Ys@o.%,'rkkg8yXhM##lB]%Hnl'uB>nhJx<W r.hI.(P>Vfrshns7GD0'v@/8.t1CewtY+jXUp~dRNUe$<JTPH;0  *<KUYVPC8)  komi-1.04/komidata/sounds_electricdeath.wav0000644000175000001440000007231610075325104021354 0ustar allanusers00000000000000RIFFtWAVEfmt DXdatat "*. zdz`xc :/ PR*u:eYF?2@~ym.3]@feJCdy.pgW/V 88q=#6Ao#L^]eK/WS4 xtCp:f6!Q+.n@@a^w`:)Wv,X/WggL;`~(`JnhvzQ*c(K4)J1NCa>P4jxq1o^$5aQQJ:+9-72:9M g\n LE|\ CV@Y4f#*" L/7P:j<N[ D 6.MRYRQ#J1aUYr .-m+b|lV{~*pG&rYvvz a z a qIU#QJX12IV<T|68d ] ݉Np[d H{KQgx`lCe N?$TL'74_>'  #SƠd(4 TO k,M t@j8%T#&$] iY7]StI 1oP ; < e?'($,5c*Xƚ>R [x#$ہу@qـN 1*>t1J0VI=(R5=:6+*7637x25(01)8]T!a^'8'>MB DvD<)= =0]  y'2,w$1W;V=4d6 //(Z!Q&d?=\i`L<5C6CN J8.o2D^_Kb9U Fvm7Ys|x|vso\dM:1_{ &/=7Q8(";Uchebrivr0ku[D&*7A;IKB&80O*[$E  D$" Ihu!+B5}<@J=@24 [B+  *><)^{Vܞۭ3,%ո E.3J*%$%<.+2*{zؗߠ#k3 B :%/(*Ǫ(!-~[UXT% I8lB< i &)7=/Za2+C&@!WX">8W8kd b3s=Y#Di-4{*s%-))9> _2;0`  0+DKnA/ 9 l,+-$/51 Ls ~#0!5&-F^UNB?*<=-< b8G*W@ ?l01 ==8;C3a#&x:3^ ?K/MZdhO9LדC`+ٲ [~  f:f 4[q1-96*%m+' hi No ;!$j$!p)"5lE\Y 8B`ӻKi~͇W_g(5j]m L(f wQagůѱW̄`/μp ׊ʉ$)4,(9%`!i!) "*84xD9 .0;0'h 7"i8(^r%g6>!.,!P)Ӄ7r)/P(  |.BFP:KC2 v w h;hx4@_#Q+ - XO}gZȫ*y0L(HvMqyݺmʨփ os0*oJS (ԝٵIN.LQ.޼iՌ2"ͯ ;ֺADӎ 6B*eO.`Աć#B'^yA )Y>"5&{D$-7'1P-#40y} _GXu@AR'#z &6/^ V7> M|hO   :ҋzpPC>1ɰN ))wJ 5;XfIxN7]̗ܤ;7ѨŚWxiَބ t}tʛx̏Lj׸كˡ sټ 0LW\Iy.o辱tCߧ\VXK͕2[<ܚѨPyuߊ IQ9fWx$v<D_:7) 1+_8L=ziUC,/  J/; c  H pZe+   rhFq[1O%GkUO;yujb1 Cg߶ٳ0-ݞ%١H 9Naqܙ&I E&}xԪНŒöʙ՝*ٽj]֨ZbݏPڑۗСD^NsUXÛ91.gҾ#̮*eYjW/̠G%x;\ϥ5 /.'ѿUNLW1 KTןܭ$R9ָTFfލ+@inZ3GQ\_Rp & 79ooti).Q> N|zkz$%CE H:xy9 Qly) k|[SH9nD8"_ߢ؊j ;DQtv!m^~( ܺLn X~AL{3QVofgc#t9Π}=ɽCѸ"bYbՎkC8%ͳK(L.ۃԴ׵<СP؀1AJC"'٥*9AN 2 91)J9Z!o71b&7l,*3aJVT|NWFvW0OD T 0 h A[oHi (< Y ZP]TX0 %A % 3O-9@hnV L݌Vx?;%xG|"I{A<}<{(ܧԯJ: I{X֤#_,پ%¡7SՆߎ.-ɐd<(nشҬr:yFBs1nXhܢMwg1F,q71Xz:4cxA;  d#' R = $ #a޴s%*11hV r8#G ' ) ~  tr"8+#f$S%2B$pKd8Oqq?13`AuZk<)s'=JPY zFZοs҂uSK>߳`3d-0xX݈<׆ Ԝ߅ފ W8>͐)ԟȤAMַʢ&o0c۽˱҂%iN%*o"a!E$6/K\ \ Q` )|qb1`  p}&#@ C O&)R8`l  sR[ 4z j < C 8 q]"!f&|t k  O ](Tt@iB_d}"7 4'^1ip'ۯ oB P?xp?/ 3  X5!Y)BޭWЎ֌֊ݠ2۶ߐhh%uLjr_|ޢ>ޯޏ.fNk %sMkޮ3aҹl FEF  ^- y&kYeDc '"r >Gy1`u"M&,+1. M . 2(ChZc{ C!=?o@%z :^` # \_i^;R M, !!G_ c>)B & H4$uD1.+ lEFb E~v$t7FjbW;-"MҮԋk޸^)C[B ^@P ?ӹٵ~#,QL^],pCB m %B7{G[}%M  T)%"~[0), s_ N;VB  $ R I,\GgRFA!a2? {R$,)%3 vx 'F$ 9u eDd a (=p=w} ^\`"v?` 5 E _W ?Qo  S$ -2nB]z\lލމSlg04Փ _>Ia2ݒet1eة3B( ~F }u16-R$ Zm5 d&,$v  ! '{f  cQv O\uk:Nf} w% ,$>(+V00D7#%'&060')0e*Fo, + * SIhX 6 ) 1SSV9 cKH3-r sMa #t ER_3 C7 xg s,hA c޻m_s{_az%iUL'[;ލtߊhuz=1J  pZ  M  [Q$#@(.*)!B 6 ;)"  !\U Ysd !  &'&&! )dasW1# jiK [; ]@'V8+3) I  Y Wwxp:  x W   JWTW' S 6 r[5uGY/Q'okN$ 3,gWyo,1O ߓ*TVf)6 אۡ9I,J@\\X$Cq.:,T`d(0+1A/,+#P @ m 7!<,~4)d$,.*7O4& AR [ l4 f~"#)%)!~1 <,x / Nm^)!" XRR 8Lx 8%e 8 R ]ULtKLN%M%&T'"#w!+ @ 'V uB9 qrG{= Cufuu3/!JGwX4s9Pyh үke#"K70jB!")ۮՅَm?f<7mS> Wm< n} ~ (V \Q? V!*, 7g=86&N Y 6M(![ ]|&3-!#|+)'( ec}_SacYP5xډ߾ ^;.= ݼO Ҏ>ܑ`nƛԋٹ:mLn^ s#vM(o6(Ym(\c Jk  #W% H%*&%},.)%  'L*r,)#!;,U7 1!S#$+57;<3W&")-"`< g@"$ &/9}>8h.+'"#%HI]8  T{ A 0? 8Lw:oL B F 7O ? S o#?|aY $=%&c7# Vw|pA% $ F&&Ks&  LyɚЕھ@N D$@JMP8ه=73Wa}ӣڸ٨<NjG@ug?M5GRA ` _*o5N T#$! u" :A,T% `7lA AK &.9/R]/6]N XAZ $+// ,e(M  }H9"l$g%+6;2=,!U&"v (p'!'.-` |F)   bf !i! !EfQe 'k0B(d*,/0)_t *Q#, $D,E)g Bcp  vAcR{.*v|cN &,p&U0iݶI̪[S 1P{w2353~s3yݹpтcšp'ոt־ГϢYגv g UI'huy AJ lP.E;*65ARSsC1Y+J& w&-4@3q/-|)w^ H3>CH%Il?5/"=L%a-478-k! 5h)F'&().%| @"#%`,(. C G_B\.O` )*Ex;RX"^$11g#H=KsjR{YOv/If4̃׈,"c Z8 (NQߓ];C-QVsNm͍&M{%Rjk`'Q *,?$]| }  ~,'^ d.!)-/--*# UOV| QY!w*Q//1,j)$RC &c ">= >| 8((d%G!T FoWKJx9"!E ^{] r ]%o-%x U*:M8$[=(%~*#$F' ${1t !T,L,-)Rm7? U" y 2o<څ(ŖϿٓS P"0֓s(,AYjV~زZ݁˦ z  bZzcEf:GEs'n1/& #s,8#3YY / K \ G 1+66G2,"$%-n- up{` @#Q5X1A%+P75.{+"J = Da"6KJ;H7o: 2^!EE+54.@+1h4$YcLUJ)%2a1t*A  ! a'k+5 7j O  p+04(1#O U HCel_rWkMiCήN̈2ؚʨq/zʛg߹|ˑهE3R9ߴڟ˳4ҡ޴70<wIbF:s#:4 ^8- ~* ]2}09MN8$N ##(n39'N$Sr ?  @DhQTD" [Mr 7 o ZB)ғB7 e Ϥ$*~=}ў GRaػ56\ۑC.8MU3ç mw^\ W>$B 9_V p+*(" O0#'(#]('vo!!& #O%l-#56_5~, 8 Qzj U%#} cN_VD FQ Y L Z J [B$%A)$) o< q`U'&n"O:9;4) ,=>-"  RB?} )&Vix IFv X O7 @hnXq$NrlcܡD?xο|[ׇIE#r>֤Қ>"`D %_Qw܈ӭeld&/ a m |d |5&"-,)+%1w'a(h"!&%m!,2+#o 2q|  ` M `%+r*{-4 :8& s 0(o?d{ < D7R9 {m "C% U 7ug  S*~C  J{ w ;%Q7%rC 80u uWǙD$ӴJ|_+/_B#=tl|ݳݚ>V ǛiJGDkx%+nZ L  ۄ<4g:hiS|11q+-3m2|%zD%5p +Q+",1Y+ o~$"<#m+21O,( w k[_"  t #%|(-X+"v S! /  5  w l) &&j2 W Jf db5''* " +*(,) 8 #aZ1io<(3[  lM*Y6UҞ̆ӀKXqC/xˍ=5ԛ̃ޒ pPߵ!V; bΐϪػηx}y݃niԐxAiܰVXn{' Wf7jB  wyL %+*27'{]V(  ,r l$&$-u7"9:0"(,  G r2Bd|$![!m7Y7e VG) 8M+ w+ W rA!$_h'S2Q) FS{K AH:@N!: .#(1(*-+!p)# g <#x > Z# $# J]*g%jCJпp6RXs@JȸbΠ8˒obֈǪ՟Я! (׽!|1ǛA  #s r^'QsU{X z A, r:*O'#)(c  l0Z P}D l"$jo"q%e ' $$+Z#d' P, 1'*  Ak c _@ U  = c" 3H< 4:QN #&d; "0v .Uc#4][zAx(&,egFֈwZsm2Hod d2Z!yUϾry1Q{bU3׎[JnE͢rCF 'n7c1y! M ~ X$S%)^&/=?6+!$h+0U-  %#!G r"'= <G ]!g&<+,*VH \O })= */)j"e $0 $ 2 S :V~3R  (rl! m\*1~r :#m5=W>\f)8<@ X kuLYlbJT /hgoH4<ͿVk4Гpqה gdGDz,S<'ByʻSDir9 m@].1%r%=rQq*9U>;BG@\1# :b0}z%cW`$,P+"6 %$)''$$,((~  _7J J34)_w 8f S: RY!+kIGm3 '&'i/jzbya[$45-&Lp`W   '$ 4c[,m -nhj!#X"9 " XU̼ &֛ݜPD)!LOޱf؏hޒQז(͓Єʡ+[CY҈%Ypj4|WdJ؎sņԿx| x zZ߽ݏtkNu4cc z(s/A# + "',Y ")*(/(-##" v|--6*#*T&(!I[-s!J& I8 M<u/#g"< L A \q@fc V  $% ^$S *&'a; tY "1-9776-"@ N7B|(% 6v1 L bzL  jB}(O*N Pܯ)ν+OU hANm؄>vԆTIK%#%Bk Nxr~X=R ebn89 /P )R-t#3=/H P%(1%Yo x!>M#1;56rz"M#T,ZQ"]1?l!O,$#n r 5 Eamoaq oB/ M%X "",; j,Ea{w& $Se El$(!1@E j?ڱZV HD !{ nr{ hTyAؚ ۼ ð+Mhвb%ݚސ xρݩ RcHtߐ ? 6%qhCWI  = 8 n % WP'X-5m.c{Wx$>'#0G93* "a" "27K[B) +!@,'sB(o.%z; 1,:!2  w > vGG !#"D{&X*O T  4 KCG #/$ #i-O :c%A.*"$ ~^J3  B<D] `H?z>E3ِJψm6!ʗ e$֝]Yܪјƒaaȅ69Ϛڷ6U ҙУӕs9nאCߎ)G% ,S"5 L? F۟'SB)w?GQ8R#%*-(b 1 y$b!E'<(u!BQ$1#~ *#11_( ."&+/, %5]1t?s,#.&*09EA>. 6; ?-DLC*>pPWi!&(=05*hc _C,:6&k$! ()j/' A h m )(E 1 3vh / gH' IfyZ }*W] BDS?\v2\Aq6-BZ5rD֭̾" yCc pd ~( ']uM  9w#~%E8;882*y/8Z2*`/2-%*3-{+?&x(+"8j6!+ NS"^"n '0)!,! n$  >" #i">7 Cj [ ;&w%3(,? I 4A9)0(xB*0`)S#0i nO395, P^N BLmn[R 0izO߸g*+^#t [tW 2=Rjjk uc5Tǜ;Ȑb9.<>լ;}s+ְk2yl$ ` 0*+4q mX K)(1 #n,/3A@~&c  ,5+V*A Jm@)l Y%/0Z0v#&?+5V6.6&w"+%b'5[:7v. \ 7+x3 DSY"p 7  G D3u Q3g&? Ph#o ,63"&pt;-V t ;ELx/P e!@NEڠQBg1|Lpձe,>:ٔlT|ڬޖʦֺǟȉ.?LsաO6רqQۛXb>Vc7|N1. 'vp}G "44("'c($3!2I%%7B6(  Q ,#0<;U-nN %37- 6LUL{8Hh-(Yw%j"ze) :=k(@M YOH0};C{  Yr~ v_(2&Cqh(I7(+)z0&*w.pA] &5-s$""E c. 2 7 J= {57}C< >׶ٲ{3T:\/ƊgʘɫNgx ܌3ed8ѥy-(߽׈aݓbYU-ld !̞ 75 c z%y"!~2_ s!$d1hS c UO mdW H{6f "s*/=4g/^ RTS2i:}4'`!!0/9qxT e%  Ih <7?  *<,;*v,D-!   q e  T i . (ol > &! r"M5 1ۍ/<оl8j޼r-xȿ7 y_fm4БZ S#x#y[YӰ}q+1 CY J wu U:P o~#"&qY#"$ $7"%:  A  S#XI c) P%i44] x>*&]!N# Ha^12g!o!s jr EU `EcN/JBq ~Qf `J Q d  _ : lRdV^ O*w+S3 E -RGKrϻw7 YPD'ChhheܙFqױџBђ+D*˲y Yھ@>ӸլP֤ߛDT 1ٹ,&b>^ _ +0[6#h#$#..Q'm ><e!R-L{ 7  F !XA y`(&kf|1   rB]h |!sH>V|m I l f Mj>O`Dwt&""qA$xy{ Z^h%"  Y:n_}eAd'4VѲ6bԌ&9 ^@ ?ױWwK- -ۻʢrնۡa+ǩڜهmT3fm#HY&^O8i 1O&.,%!sTB A-PZ% (i-,"~%k!!#H>L 4DO: w3 *M! 1G H||z sDTku6?j#77)(Z G$iK/.]W!0IQ[H! W!J OU~lC ' u]O ހwI/%A+_gy/j Ajҍ*LN#u4lC5[ʄh2sBۙP˻9ܥY<77N}ۄ6CJsL9j<וxy0ek I< h Cbz!& x!<& $ r0$%Q  }!0Xo%(%$ #  A' x& %$QyV NIZ ! I5 H.o&&ncX6{%`'7 78 j$-mz=ee )sbc6ńN c'0-ڷYHẌW m]*afָŏ ثrV5m[EDDX'.M@b"K]#c 1$cC\ oI,U::&c3!E7L 08< 3^'&&(m I2*"%-&;!Kc^ k x',^5#S *@ { +a E oCYu`)@9y`En??V N p  EkXE qhG  4 N2ss'`%s  AK'ޒ9-VJ!X۝hz<G kLmQ|t֒OI?%΃)wM8 &D>~,8bA|n 8)Qs53ܗ>" % r& V  R*CHS:4&""5w " l$%?r ,Pj! /|+"MF" e>I *  f 3:MU sA: U!L %<;! &sh!~dJ\' Ei ^ ms u+j:Yv ܷ!Բ)~rxs=e8PcGBU >[xHd\[8 l$S! /CY# _C`: t  |673 UUqT> ! !?  J 8YB1 "9*%rN $%"$"+\$ 1 ,: JO%Z9 (/YE`pjemy x7ik =}OV 092x,, 9O |  u u"  ^%8(aXkP(\p6Ybr#=3M0 7P.Nh p8Gs K}ݡww(Vm5ױ)4f +<_)NAaUW4S ;'.  XR,8L! M*$4"-%# QX ^aD(X!+.)<2!~'-y!a jD)$H-)z-& H+3 (5,#]+1$'W  m" >}B[k=!5D   LW jwx S Jy = ? /)3O . E/4#*%G Bx@ $^G W' NdoN3O@ S+vvELo>i (o!a ruL}*y|D kB p,:\HJZ:C>8 3 U@hu)"&8 qy%#v2 Ov)W)=4"DzLL Bu FL i"*  & r S-  '_aA [/9Yl $#'! `{G a$l2Y.0X" &,g u #' twt < O($; g " HMOdM1 T Ii!F}KH8pD|܍Bݻi )^B#R'wLe^M&cS .N{ ڻPMpo(E@OQ &5 Z SNl+D 8x  AR~A?H *}M"#2T$+ '!  M -r#" F H "!81( {.+R 2MLr+] ,. =$N6lM:M1 r Le? /73{kD/U 0vbOK 7 = k wS%;J;[, 4[| #2:&%G Q#X~V[ENkE  , 9 Qx Q)E2J+{`h) xV^ySex % _v  q # d ~z U%"^ * wDd9  >r  c^ ?QQ f1) 4d[? 8J  HMr fyF? ^aWz  :R|4 ` ^XaV.Guv@x}_PIvB\ (.yxQ" 1T*mEoue+ *@^_(Ypzp~2x}``&mwfywn BO m4JrU6B. hv  ^ 6}#kw d D-_$gW*ux' iU@w9F)y > ^k;KnG ; g a8A F  O^F#u%\BHK^<A)rjgK3<f.HU $hR4r\  !X<8MH|$ khia<`)[?Xza0X?%x 0^#Gn(cC eOO>u pAG|Y QA#z,Vw`M&TK% v`MSt_ '*6rH^T8J?s3_SZ;E7v2-NR%Wt^HNRpLJB $#`qNSdLj3WM Z 6S NB@^Vz E[OC;482  komi-1.04/komidata/sounds_laserpowerup.wav0000644000175000001440000033116210075325104021301 0ustar allanusers00000000000000RIFFjWAVEfmt DXdataF^*WF~Q(V|"+c=v:ZC [%z-|j(=p [\8K<08l#h@&o8NIR*|o&6B rcq6E-4_w)xbL-fXFp!bk36+T pEPP zG(qo`=Qj.&Bpc~*& QSiH|l4BER 08$-W>TrvK X2ZWJCsN8~.~kkoV6KH  d?>>_&}t^I0D @;IIhS|.JB>TU 0%NI PqBRt@NLjB"h_lQ3z HNzP?Lb@NF`ABh-\}bXlj:6069; >)f!}o!dc^=a& D[NTN36<*M7kj.CB162a] .W^@Q@`c#jD"5* 'b_v@P4?:|&[O]j8Onn}#[r@N5vVbc (_+' Nz+wt py"=H>DT26w~Bz#<HSYzwfu}[f+jP/ XztR^>%P#n?mOZ*IP<t) '7,{~AbKM|YX Kdyg9*fsufCq;?8 a( '\g BQ, )lO>xp  WN8px 02urgm>C[|CKa_>n$&aL+ZM{>:D85ZE0\v -z =ProV_sKn$`Pv;2l 4qm07\qEy }%+ ]$XX0\A:f\6t:@:1$ Y tSI*i.X\_AOHTz3_iO+5L}|8\9VE~jAD=at+[Db}CGl+I/2 ~ Q M  Z |vA9D{#QaG2Ba7:$zTvfNg T60 . Vk-N, .]e)5Mx`d zi) l3*u r L %}X>B0PhUP'(u&z3=(b D-i}'qF|Icj8bvIh . H8UQ d  i 8Gm\Q Bp!^D3 6$$7Is I p ? KbJt+ V 0 -sf  Z  4uE"R\$EIv m#  GJ$%Um @%BE@ &<8h ) dN2viwj}! 3wP :3aw8 zdmF@: ,(*EMt]g/1GWe`%YTI|/LE\8c ` /~Ry  p41}\pG~u*qz% o2e<{, <:Vl y )   SP~Zb!i.i1DDDpXBCz{R&Btu~\ ^ (;ufjNl \ k1 ll.5FV, p0 N . | Z.aGjpfqhR(d0BzaUVW-+E uun6XCT|Ah J "BZ ?`B!, X6?%jC? 6 T 0d &j=~4=Y6t8fVd~>r%RYSh a V 1$L ` 9)Z PB2fC@).=0V6vYd/p4 8 V N<1 @tjA0P{d6EbdEx>+ e"'nfka vB>B`rB*}kzamC F4uO'`sFLn+JHut335HimV~[.lf7p3,x m  f n>lT@rs(/jbnU.+R#(d;+ G+$j|J8neoT2SZj<Z.#$l'h~' r p l @ & * gro}A(:Z4C<ZDESdE@X&:lA Tt uX>o?z&_B4jjwu{dp_.3$D z@^8)n:Mxo~0f(1N.xb1>P&tnhWg|dm<RmPeYTM@_s+n~^v4E*[jJ H : 4 CP}a1 x (2 XXtt @^.LJ]>{&ldDq[ \D$ p  '&( rAx ^G'80v$*Q L  "y|h4q9N3>nt>o=>^<l`rz(.+MTKC   1h""B9  vx.*`K*l0%ZQ0wx7vJh  jb   H d Ac4L* . " y ]{  & 2@7$gZhPANucDF!z ;  X N  `e t P iKdw T OoDEmrJAq/0$VzpI 8nqX  k ^ k ! )+d-t?o $   ,RI3 yDdlp` % FF ^`  ! H ^BP1 R , ~ + ]> k H%t'',$d 695B( x  N pj&'vz] ` 2 J z&*6QK&FXn z)t+ j0l;z2 L B *D~2  OvD0uF<&jx ,bi.bOFm; M] 29w|hjq :  L.A 0 , $SA=_2E%z|>L{`>(W[O6\   "Z_O l |v0  LK j@ gBqV B0 n `|ll ZQ"<l2z G u  }lJwCfH 98k="p/|#V.MutQ^'alX40\,`@Sx-%eO[Tl*w\[ s - { [ |5P~V I k.߂v L ? t _l& b   9 b b c mRGTJd9- ^ `bN L  `A~^OFzZVP$nV0P@SuR. |%7 < 8 $  YZEFxd+?  u(5P!!.lieHIE! u 3 ""} 0!(#$^#&"j $w3JAP w52xtr a0G4#(PDDE 1 6%bS  S >g{f4   d cۼY) GCx< epCBNG R 7 zQ5Sx# 7  K`&} +**)H:y{$~~@b(D^   #~P~~ X  X ' -8#l )l4G ^ t D 6 h&XE#\R^K* yp<"D6q kkV \z / Z { =9P d3!%,*-x/0/-l*x%> ygBg~1]He-}3\ 2N/O@XvqaHn2a.zP y= / * h ?]o"%''&#2 o #xk{X MJq:pvo%,2M   Mz>:Dja7I~bn+h32|~ B> C f4 ?lP8K' /@kJ 0#OVRr F GrL(p/!"sQ `N`F m` >!N%'N('#  :54Fߪ I 8wz.."{*/V2M20.+$n6 VT4Yp? * ] {)9U(""-Xv( &45] Il-!$$$z#!ECD &h!du  &x6ca&LTI OOY0+T:1 T  ) !&O*,,+F'!DKm){ !V]a=2jM_:|! us%` >~P@V87 0p iI?PJXM:M>\[-3T B`#c')+!+(3%d@i-Bi-NN ,fz=!$(%w#Bo$tL:DHг; ?[2 |t CKAzi @!z&($)&!.^ 9 'JHe>zr:I*[kr y,eGHy^~DnaH6a}[\[d|!W7[>F( L ^ 1 eYWb/"ToL=7 _cc X#u(f,j/1B320,&) dN2P<a J v R`hu%>lpM#8ouO~ 6 > [ K (&^   N^%Qt  F @ S  <=xP| l  k C p  a : 1@u n RETէyے @I ~/& as!<))/2442 /2+"'4#R Fw+%^ UPVxn*U 2 u > b6hSJh!Ta gzlvf] ~X4NbbK8  : ` 6 aFV E%(**$(2%!&6ZIBh ``C k ML0V~XViRM|x5v]PaJh.: "_@oFG "$a  /${: j"s&*/36761*g xt3fxl B \ (ی:}Ld`. 2 '  9 8;m>>` | A }TPOHEZ+ѝ_з٘JpAv O>J  )3&!(p*,/13X56264`1,%xr4!4OjjE* ِx.?6&7(GH>FTHMFm5:P~!\DZ NDVJaEf( &%\+28b?CE~EVB(<3(q37 X"zԐέ"ɚɏE@ o.s!cZ$9S25JX|cfHv0aW%"i$dZB:Wl f| p\!m$'+.Y25j9EKOPZN4JB9.![ HY@~lv lޖؔc[ơŜHAmF ܘ߉E"pXqwk(.r A   ) m l6  6 + $ ` 6   O#+4;BkG JIF@$8,.#f   KMl> cHkE@Г(-WuxN$'c$s7 Hl@l7 H7o $p nD $ "$&'''))*+_,0,>+)"'y$B!~" 4 d T n H!߾/ڴ` ނV1k?$>vypk2`Dcy7O#NFLID_F(`.'j BY$+169:8A5/(m S `3S +{myN]"dzݎ݂,g SP 0%r a2l% r)k $(*E+C*'d#* 4 `JXF X:L:byHe 8sAIJ]F$*8$}߆d>3$Jbxs#z( |!%), /011!1/-*&"+"^ `O2fBDjdh28ߩS|6nlttE$2 ^&bx&Mw ^T:kYS? duhVJVj B >$'*+++*'$ n KR \ [ `/Ypm#X<@b\h| Jk^r aT!#$%0&%;%R#v HR L0<sQP=:EL u p  ];v*ck..%@M #$$!Zb_ H+piw0 M m  SFankeH5$m?1)`1@].a4 Z ~)D ?(;"/%i(W+|.02>4431-($U~jDBH XC9jD428qH(ZQlEf$nBgZB Sa&X? `R~bfph'N],@x=N8W} !2V:yV% +t17<@A Bn@H=b81D) )1u[(01hPK-D԰ХΥѺմzsh xw x%4 u![&:*,Y.e.},R)&$>D OfJN AKs al (QB`" o  B  r|5"t%Z'((''$ !NI8xXNvOt޾FMޒ2 #rjh a|U Xa' ),w"&**-..6.A,(# p PHr [  K ^ l K .L\n]2ZMB!'DhFZ&"0Q 0"q&d)+v,,+)"&! JHM?V[O/jt H Z r ߺJ-HQX r x F`%X+/,2W3^32v0-)$l&&2E8!Pt6Ne<ֆՖ 6o(rEF0$ `k : d* 3"#J$$ "le v! 34^YG Ny@xZn2 l k 6{KJ q>s8jX B 0Lqt\C.l6i #.dY&  Nld%fd #o%%$ "G5 41??3 Q S ] e V n /v݌ܰr]ONEJ#2>+Sy1rv 6"'*0,+:)$| G>KhڗYvw].l$&ݦۛڗ8~Ig   #~; v>  vb5d27 RRo ?J b:I^~x6H L < I h  x]3ofou" P Mgk  gY LDqY ! nNXL<H[  *7u :wXs 6f(f"#,5nB# Zm=R ,fd#a c@O.;! pV l4/@Bh81f @P /}kZ&(^r ; f  #kGEf^#% '&$( ,I"ӡTL8hkdbޛu۞oNt\k ` ` 8"\'+.N143333L0+$e},ZBw.C~?`6<HAm ^S/1m I~H z:AP  a  f  >e{h+PUwv)  UDLP N>hy(s$Q * l P  r,R \n :"x9X$,uwV Z V yf"q 6  ~ 08 q Y, pD43N ~ <0u97DLyi( f8y-~L 4*YW  vNRK4~D l 9ݨR^*m QN l j6 B% >">$#P v8 lhX;;{H,:x+cc*6ZT:DBha^6xT(j^ rBL^*_&x dEL Qm/u H? R-ZD!TXx*z8 ;(9vFQ vU jM w z  ah 3&w6 h o `VNP?L$vcK@{L= a ;DxH U<"~^} 6a+Rn92N^K} PsiHUNGyN( 30; I[ 'a3 nN"pXbB>i 3Z_*I(ob,i% ~=#ZfFLWX y_HTYdJ]2fl!K]q/ b*R/k-v~h ; R @  PB2W"2P,%G# )kYEoIA B uy; /^ $(Lw 0 ?  ^*C#'.*>*t'!)Hi^v5 n HZZ@rG\ O   \ F g 3frl4+MkVIX pA :.sPq6CkbTOGV0x" |J d >3s$(+$<-XjN* JQ.v"+&X)+- ,("`.ShI( p~JjZ\ 72jC`M~'d6 [,\ ACFAIKMN]LH?5&D8 t."r{ǀsŗtbPavpV @km$ p^{i Z#')) &U!N E f/M  $58L n|O:5d,t"J?fqld Xz" %$&?%v"F4-04c1ިX߳b$?v!KQEw{̿؞ޯw`B{. ~&d8 L ;#)z/F49=KBFJMOXPyNIB8-"N } !F*1441z*;p!߯Ί@ŷë~ѸRTKlq*7#V ~iD8 /f*|,8 .*) y!H$v%%$"d a" susp5y20EZ %2^GUZa^S` LBVOO+#h81 /`&}W! ',$2^7|~y9 (  6v}l TP !!!JNiJ <73~f 3\ &"!#H/p%%pERr! &M vbjoS   D 8(/ =  - P 4 #+e2t8E,[m},D$"^ $34 D|Fhv+\X!!%'(((8'%#"qq ;j>/ da/L @ $s4zݐެxC LVi O3)b=DMWxm d $Tb>TOf>aZ v %( )&? P*Yͽ ӣڿ' _: ) p;S(^4"CE L%-2675p1V* ݨdh ~ǷM:B>M H:/"D}\C˅a&.35%51{*!{=*܅U9wTT<X!%'V'#( YhRۆ,Ԕpԕ/ h&+,*L$=lYpZzyb0 P-<6 \(,: A@ !!L ~kڂՅ҄tմKޯXt B (i42y !(/Q3N55420-)&"'nD @ jJh@^5?80n}m$I^: 0 +G|%` fTHcL^r nN( U wEnYpq^ ( d%bKJ*f`RH(F q{Fp JpLAܕ\G= DvV- &PL$o 7 V~) !(-0.x)C! SOډӵΓ̔lB| LR{ *9 T>WYCY :E`V* %x 45R]" ڝyRפo  1 RbgB\ 03"`(+-.,*S(%"d<^ fb`fr\&UNPt(mkO PjH) 8aFeg) gYf i"###!c ~ ; FrSO  e|l bIsZ}s .//6T ' 2^ld4} ~4;L9SF{H81y:5M=~ H J ` V $  S Cn 0!G&M(&-"s5ɤx-x~;XU 0 \ !o"!m gQ)mb & fI P?&.t r \aJ=kL{Fb9p>z e: pt $:%$R#Kc2~!9|1 z (vA s8Y  ".4+@ HG2Y+j& [Ryz^'E2 KzfW|CQ \v&O0zl&6^ [^k+TEc< UW~}sn% ( :; I v > g D>E6d/~MPj N-wzbJi%n - s D{w~ U G2X ~ z uSah.2:?-CwI?crtvQlk.x\V d8 r@ v"GTL jj=|PL-  QY(MH ti!Q't-2Q6J9:961C*: A0$mԡٌ5 #U^7> Hg۪nۖd] $ pvX4~eK=|^A z\  P|&VvN/Xd^`40 6 X[ m`\o | f lh :[ 1Q;J^\0UVkCK|.se fy!cH&+AF S? 0 n{.B!&+03^435/j'$tH )n>gtt?T(n5z(ե|פ3b7+ f]_9P 4hhn&d.!#"H dZE  h YN $l6YJl9r yZ@!#%&&$!0:2TV{E 7 F Xz:P&?eH`1G2u]iqvI5< 9gyL1 F j]m66JJS /i3!&(,/t2!32/,Y&h:<^O5F-!IU!p `{P _ ~T dR ] ,JG  rE6A $yr   F Z~,@ !!#-N9/im#Ca[ߦ2ծבڔW]tlE s1= Ya=%X ; mB7z,6 )ێ' ~Ȏ8$֗rzYJ=L:^ީ%Ζ8bu C<? Iy@{J  EiLf7&9 > F1n(X[ >#&'L))(&"-*G8z(OO~`EXV^$`S, w.g8". 7dT 2 R([-i mz  xw8 y_  !#q#Z" O .( z ""t, }vWٲЈYļ۾!˚`r?5O/h.C[4ߎsݳ/  @#6* /1|20w,&Qr:A&Bu  Nv "m$* #P)-020B-&(W-( ՗_>m(5VXFCOV5lvjؐ ߟsRx /-fBRfB4obDF tK R # @\ r4 z^=W8 G X^PW!@cR|Q$UWRoMu7 p("&*p-b.- +8&n# S4 ͮƋ¥ \Xl! 2"D9AwIa| L#%4''&$!O   )n, Q LoP0J p,BvѤ"Ͱ4ZЍqJ* !6V/W" s(!%(g)N(j% +& -/ %} K zxTf^) 9  g$>) ,6-C,)#J@(،Dٽܬnvf82JftOEөԶ2d>Bb`nt{N ' S @bJ0 w tYMHNyBnA~ f^ 0#M%&&J%"] xA V=.qUb)ڿ:&p\Qtp vi7]b T&+N/0/+&: u\j;_1eKJJza D UNt.  2  8g\Qh< 4zUt}6|j[ $ ())]'4#Yt njP܌ێܰF ?*\ VV  lfpZ,KX /cs$ m    <  # }DONG^m k tSeM#GZG$ Q{Q|3oTE8&(RhX3 4 ) RDaw0N[% gKtww1~ s  + :{2FtR|8j< 'FQEHZ"&'0'#aX WU |^n|} X#'+,,K+'$"\$Q;9u.H } V  [ p m b c .fkBrcr6wo.#Y=tuC s i""0"ZF eY"`xCd}iD+ {"T  Y eJdA)= l t* l N , /> EiCARS#E0[:=16N$?(yx&^, EL Y-4_c*$>*;: T=u=Y%WOO( P5 E%Rf$QxJX1}>Rh  b',0330,& 5PPWܴ6ԄԙpQL b 7 Oa|,# :L` `t.R1 7   Sw -'{9NZ 1:ڔ|ޛ L i , 9 3!D=^T&0J32X'&s   g!  B%WaxTp)F=a!vqtxX.nGj & 9 h  L%W9( nD KcHEm9RH|Q i:)xN+Cjpf- s*~ y@d- >Ud*3"1 x#&'&"&5 d~\bXX#ZC>`x!QbF ` B z 6St3&d8 (|bw6 K < `|W63 |7N zn_ DY=6R ߆ Mg}QkLWA_ k"niT / c z>&5FWNK|>?HM'< Q  v ~^Z]&sm  TaUSY:VtUVh4kV.ElIb  _&p * j@)s VWo v3.'9   t>UF#ZE6$ x o   4\6T(<[F N> Dhr:A,Vh $(zB; |VH)  8:wm!$y8wa: (a 3'zE  ; 1 @&|Cl#&=*S i h U|`#Db|R5T3" : D  wDWjUK Sj6Y <v\dfI{[W2 @8rck.svE % 2dz` t &\C?q .nxAf b i{6iKLTXv > 8 D j G#Id~  ? ] mNDakl-PL*.$ . BY-trP 4y ks J6[ {\%Ju6 R26"+.0-PN x s  : zF:hu{/W=p\nwDa a[}K(W. h{ o4rp5_~ , l)t +V|UUq`"C b6@$J&r( : d4~E I -D\G (d,K| b :< G|}<$sugh | /G  :.ykhQXzC!/^" EN^n m$h F !! =]M6$Y6>">0iL27Zwj0/T /G K ' E$ j " GBBlx20>-3l@ ^c&H(L+n:;rj 9 YS xJSf);7(Z&eC> j ) = A a4-{l2OF 2-( `<dks\XT`  yD' v^6`ZM,:63 W,6dzCn^(~UgkVF0rFDw;87mH " #2Ba-:  @:OdHzR2IIJ *Do }"eC 4 : R !4-{(&a*3$e:Pm\^,~~ gHRP\/ -J%+814y5h3.q&16ڃ߬}q {7 ;tP of?un!*5yZ.V9^ X"  g ; @ ~b_wL[WFJa=|hTt'H04T";q|oK7.iRdpZJi1dUbFC$>Z 5[_[ZFhi{ wJ }RN D jF+q64LI?(2 xR ?y#.C{1 fpuV  h $ K ( :iwJ~heJv&1J.E\4a moh#'((%g~ ߡ'm" ]A#N R J\ۙVD,O.k6$,zN+'l  v a D   0Jpk_JW-B)  2  z|IB6r R&.5985O-# Ro.ۡzDޘ8|z<(_T3 %y HeOB`k F M3eX> [ "   9^ M m26tn H S v  slN v>f5^0%HG=AXzi(SM>gjuNy<Y4W< y>n m@>JK K ~  (oE ~0S T~_tI cO0wh c&Yt7nJ  F <0BfrL<6 <"%&#t) 68p7&nc|  Qd\F14[^c m  zV6a9+` u x` ' @ ,  1  z)!((i|CV R&.or%H*,,e)^#:Fx1N>ޤIԑV΁۫f!a  s`f8u_m + J c fMD 7 Ivb+u ~ X 0#k* ~b#**w :NT/L )   @nJvCkmJ~ H cv#YyH  c Z pHHk* _   dlB3> D$D6Nl2 - 5 _qk2 Hٽ T>RnF@. ~ ^^LSxlpm^&vH.* >[ ^nv $b(!*_)|&a!PV nLv|0? F &2Vc1r$kRitl "tPiF>j ^x Vx3BlQ" K > 0mdJH_r rc. . &Tln^r#,I~NpwPQFz>(DJ* 0 I^9dO"4>r>h6=\XOn.Ww vw BrUSVx~n:00 b 'W8  `6 ) 6YbDyV  w@ 'L#>' DS@Mq|ضڱc  ' # L h'-}2F5 52.h'|b `.T|pSXVW2[  :JiR |p_acc*i? U  @e* Z 2]Z9o. q5 jNl t g .>$:L)2J Cgr,F_GtO$kHYpVA*W$v2n %mt 0e` ; ? 4o{3(XW DLrd#Lz/#6 K gx/* > `{ y>Xkn:H%qDN H 3Dj2"$$$+!,  px8%2567gmu $\rGi"%'&$ / wMJzjL.a -JH %ks FV  < jLSCj' u - :Ag!"6"l >%` ,1S^u;D QJ-cC`bD" 0(O` X T ( Zw0 eJ%;kVV+8W)6W  P{qRbV !5###"Jl( 1(;.[X6#OWcuh0Z(ikw`TuL! n m : v M @Lhl&m.TnlQOa+nJ>Gc)mV3   > q|]Y]  % z  z3rH'Nr|zK[3A\*jMX'] -f`0 l9^r %Z:oG0^ F pe-x|i ` ghr`bW 00*  $ 9w1 W1A6׉gu9\ aR bI y3J1 73!T:  6s|"r `,$p?, !=4eI 6fRf. WW(0Q1qdt;{i5og>ZO@)}J$PZ -T7]x1\6 < T.rBd_,U>~ 8 3B ] N 3~#QM R3zStIE R !$'W(f('&#" 0t2t & v 6U_uvb6SR܍qى"ڰ9ި~ r>O <b Q ^ F|\$gz!6+ y Q C0/ F ob!2faBi kE $ 4 t  8 F :"m$\)T.3 8 <>m?=9)28*!e)(;bTu'r!הӍ ǯBѳ޳)L"RGK+2D ] iv fgkm*2NN J   S JRz[ t_rV<_4r. dX  R ~ M:0 l 2lpU>T!4}y4@Xp ly l"t##[#"!  4UW?1 8  ,  ? e4e>yGf`|}l4hߧEۄXnCn } u{I/  T__{Z. n ' 4 d5hR8,c7,l}NRF#F&h9  1 xc   G#(+-0220#,%uv 4E A#הp,7<+h "7 N6 Fh{TqE+TW D  F ~ 9 ^ S T8 l  h  Ozm $f7p'{Y0~ h@oX!Q"""!  =5  Vk 7 -PB:2J1d[W<:/LfV *Gx *  x=kN$"Z`$Zwiu5 q 6Dz Ynl|o:Yo LF4 [L/ !!& | `pa p?HyKH4:fT8%/>WPT.FH(H2fO#>ڣkA G_%j b "9$%"&M&%$" ; &LTB*#F^UzB- Tm bN %mbQN  hJ ? f > "i}^|r ~&;~;pv@"(y38>FoK'T4>k9'2Rg!oxkb~. x ^3 7fj,!"6*|LCRB<67- v~n~'4s2v <6>>k])S1@,  faec@&>l s/v|`+ j!!! ` hQH&/S'1T,N D F r ? Z t0Z6 @ U_3 `_x+tT]yZ$X:&" 0 U4>d<9'4erd(Ti/F4HDk1^\|+8^VFIh) z V  O]u}? s X]Nd $ .R h gg]! 1l<3 t0kj^=, N &0~R47R9mncaZVPg3X<>ThYt%: \ :^P<A f]y5"j,$2F[/ ^ iAHf ! Gh?\iBa+G'c%PAE6n; c z rSa8H+/~tjO| #a 5 d #Tb\v*o4 :ir`;L,DOT&o?f v Le V( ~ipnK|Y+ C THrX ޥ!܄ݧ3b$P 6<ޫs $4tRz `  V{N* j knWoDH9e  b ! h $MhhHYi(6G v h(^['@b * ]h*ks .1O"%:"tB]p: "^K v =  N e 1%O8olFL!fF}dlW6O%~=ph~$>VkS;zsK ex!'36i]KkU@X9r@jX\-V7 F ! l  ZI p V ,  c &M8R0 6V` r8+6>MBz`:Dn,8zg > " r ;FJX!g 3$3Bj9^E+J:g0D~R K O 3  N )HR+q3@Hb.fEpQ I - + s r ^$$ l~>T ,;z]t wXzldzpv!l2lOfN}:#oW<b>B 5a][:*UrTyXjo$mM67  S % & I <eh][/ |  fF > G$@P~$a\2)n~hJNpc1, &zb#~)hZJBV,JD^f>2JqM,A} \ 1hj'? (  >~ "AYCh9eD=|x ` F?C0 tC   BN  >i|iv@Cj${S C ] } 2 3 s~`XAmL',/b aOg Z rpXBa2WHIiFdh:Nj#3OXJXjG?6t {5 l{]&@fXK u $ ktX&4}Y4SiLa6s(*7K %*5 r 4wfk[x^y<~R v/%0]4.}qJ8:[Y~6M& : j{  }dZ30vX""evGxD6@^2.  N+I 1 d J { Ey 6+XZf( U DF 6 > ^%K"gqb$V,Wx%,  u=qK8@ l6}\k<[(:~q5b   G C  Ho@:#QD?^|7pLPu\ib]2x#L^6|bA x|\d+,o 4 j y8 a  h@DI^ t"'DLf`4`h4H&FTXa(dN6_}  } v , S [w6I[?.OM7/6 ` >G  >  *>G9BX*(O] 1 u * Y m '_\^AL inJnhmvyq4L&\ ]DF^7kRdzq{rSbVW4OSn\buXFeWDOt] $L(_ |j46h A 1 7 VxN*3g50_rl?P~GZ=,%!Cn:(fKf h\tTGfs6Q9 " }B   N P .  K v F t$7 ` . ) c z[i\BaPK(>+j4wz0~ =~h 8 N^</mF=  Ltp_ ("{T M~FW:eAbN<#fR*QWTm8!hrNHv|xle p ; ! 2`eRN i1h=?O `_o6jl4 $5Hjdze$X2)Br| 3Kv gS<PP9SVUj^;F$BKAp>!z# N   mTKT*e}Hj>qUkSl 2W|~ luH5 ", % s  JJ6 : r8|Mu^' ~ ^ p^L F 8 jhA}nN|Zd 4'5+7By^PPXjY& U'(HiiU|,T }w29?|J# z||~i b~h o+&WTTE |=m_^9v7nn{/I'_xr')fpep~]H3jT : O  N C  J k h , n".TdX,,P o Z^ q NL*>^ZQ`BdHHD__n z  Q f  R ni . @D{z  0  *d 8 ) $ I Q f>.&sxRg#]Nn,GdKHw8x]t:'NEt7d/ R"yZ8f9vc2t**Ph*cx)x(`4@GGz wJt.i(R n-wfnTACJBJ&PLEz,,vt Rae[FHfDJ2h$}}6ZZ(8 ( <   < # D : &v?4t ."3$&-(('#%L Vu`^5s,PxRcۏق BDc#~ A j H Y \  8z!""!Ef\ ^ h *w*[a f  P$n @  I/rU Eq v?4/ O F P<P  '  opK-'ft:-u i zYb` <t4 nF+DMOO /|Niv\ 60BXJcp`:jX\gV`szgg 05"d$#q|t ,bU^[JD(`g L3*f  :jd E x f ' i ? ;z0 5 . ie, 2FuFfW(4pB B]LpFPiX&\O>LK   t r  w;m:\7Ri44 3d:[T40_ ~+H d ! GM T.^Tz@   mN s ) q&"M4aVVwpz%"S K^6z `  T Sy\_"%nH^B6&1md6- b@r K" b;N!OsfA=B0J6 d  jtcfxJ!"w"! $tV]|` ( M O T  H 0.!$&"'%#.(T'XfA ,x|kF;~$kjqG>* Q $ oP s 8s$ Bh030r6_||wN =  |NPfyBR,{rbO3DGc$a a T  ~VPp*K S Q   %d\~n7L5)ierN.  /  j\q>2 f q u_srDGqPG%x2\V:(_2Kc!%d$>?" -ld+;CNdS0|Ko!A|<, wM{IN} .Ui|Q&$ ` ^]$Z u E OO^ T d28KIW F  3 T D0ws6HdD[ia95Gz#|4nP;@8[fEISS^lB'"5 J wXNIXXdoK l U<' " IR - N R 7 6(&Ek6^ TBN"S&(g*+\,}+($88 *H=5,٤Ծ ѠޟQ dy=`2x6nU[<0 R 5% i$W_Aj 4Q { Zg3Rfo ~  K r=ruHEB< iCj}~?  ,8  2H& .|Utp0n>u Y Sv k $ u l<(D. 'fAMN\< ?q V  >  n V nC\5 s$W>Gr H d!""! (IZ }߮ߚN~vEN| I k  .> 4 ^ 1:"v4S- "X }rXt d { ch7l4vs K @  O *iDv 3tGaHaz#n;$` < Qf L J k 2 p 1 ! O75/h~f,NHF=z  TNLQZ #P$#f 5q? Mg??ߴ͓֟uCW|Z$K<:N KI/ }G [16  + ^2WL_V l  *lybs\h P:0 2B(>R,K,=^dkR-.BSi^"0u ^ 4s41 EX*!|jh@+p`8G){pBz&*HFJv&=2//@AS 3d|^WuMl8< R  *F2[B IS e8e@&v+|Vu$Db k (t]"vs'T #ui-rT&߉8ޖNp_>_]h%@z |G Xst-C l V%x4uFL30>D#p  mb x *HJX& C N F ZP;M3pnlzP%UCP:C7}WHm | p D c k #Fx{ h =W:N$ AabqBxa_ _[k->y1coGI,3F h H  x4di$ +,021 .&Bf:"Txftx~RfJ}B|(*\0 F"#!Is kC;X Ma / . `\dtMe?d 1ky,u <  P c? p, +@^ Cu^L"Ge4 q  7 nz  nf@kxx -{ki{[R@xz ?f Xq `Z: "!#>Z4^32 l~(E+P ^ P.LRKv$0TSLX$~P;Pa%L]&Jhhig8G~ i q$(J*2)%efb 4&h ehhՐ҅B^k4_"<v2V ZX8 m A up>l}ts{{,fL}~B''y~7uzeuG?*? $dG  4-QBM#l 1$"  k Z ~ 2   m^AfJ,n/p|nTxV:.0H4 0 9ke6upU@#k><dP:2h{`6$RP!(_5s2^y3dYf>t;mh,V  j4 3lMP J 2ܛ݋UTC'x.v,J yJM 6Bm)b i ~\Z  B'8T<f4~b a]tRip`x&:(iF|:xS1J9 X  F nTRf3 {wnG 9TWAF7R f@nwA'): `  H BFnW%cqAr|jvX ) [", @ XWe%8 p0j2i  tbAn%|3KnTB=&8 T )ns"b5{`Aav o ]  L 4|  s  2  G oL$/ P Pw*'& Q xS J >j b m$^* o 9z = f3; E:-8L. p & 2r$/ V u F4[ {klK ~zA&X_6:'V&xku:u*KK e  FjaX8[}MT<x;9 I* t ~R-@a*G7|2O("l.!uh[Dd~~B2pE<<MK:JvkT U 6-/ ! h  ^ =#& N r d|uU.n2zh{ujk  ~0 I X j Gs0 Q  9  9 *Fm99m] 7':|H[O f6b38A  ) 4Mnn^   ' 4j#J:KQ 0iEx xF0Z,m&Y !oe{DJ?64u >  P "v~6Y]p^Id$a1OaVkh<[lj4< 2H,2j}]tED^ 1 p S M<  P uD_r6#6~F / l&'AJm! LA3jr'Y ]|P. g 0k*4Fk7Z@c.lm|w="EL*Jlw6{ ^T1 b'h\ +< g $B^$9 : @2x  ;  gbVzbe<&Z~jlkH c;>' ;F DD?3@Q I& n})9^ FkJVyon #^yH Bg {Gu@`&,4Ytbe=#>fjD3$gRdZ:hB;dpCx\wr! LS[h c c z K~1h|5 {.f`Y)+RJB(r'jF 'v\zsxxr x_ S9@$L 6S k:tk VZ?Dlp. ` |2_ibW>@ff$l~]de, % wef&+N!P4U[:tvL iT{ 6YE,:59 PyOZNtp(p"26oylvzJQupVKb1"O;}oT]CHA /Z_XX&|T2T0^f@ o.F>  OB;T ImU,>C$w 4}!TWTnnL8Jf|F-`s  K L@Zs / xB8cakGn* B^q w&1 [.&c ^D1:i`pdb nb?fk7 = NR:t #h^W9idrZo! -(#`:Zb. :&0@n(B'  / ] N {m16w>$eQ?=.%* j]u3u7s)!9/>s@<o& 4 <2+bnC7\9`&PhN([[PBY9,voVzF; }  [ K* 9X (a_F,^L.IcA{K ( ` 8   2X,U2n\.^i < OrW!1wG , 2pT F:Dk+:.#dPMMBDJ %ozAhX68qQ sZW f{> :mW+x XQYR~:rnFTPV`'>7x$ oJravN0*a@ V(k^` l 62H hPJ8HS>N!sV ? 6'<# # jpL f < v s Z @V.6XF~?58(<\(ZKvD-Yer T =bKa+q %{^0HUtc B } bSn(DY P3";g_/8] ; R{E58Av)k<o~NPY=I nKE @il-\+f?]Ey P,AKX 3dFR:yJ6\h$ g  Bu,b)N)O+w%(DXyu04\X JL$ n $e [  P  ON8W>$G,]\?D"xZ@LOu=\6e9*6mDV>ir  e ~ nq ;1h r `0 =O[d~X r4\\&  ,M>M >Xc jsH*Z'%^Ox[m;B F[,) }r!$ uP*2^^69c h~ Hh1 . H /U(o!4DLk 6 lH 7@:1 a)`|6kC(Mf0dPd4o8~Egs4$>o@z2WiuAscH~-Z{~,7!6`X ]==D#:U$0h(]rA(_|kQi]ZZKpg*iTc: *b*R3&.=3b:Q8Jl3xp0 wZ Z 7 u V;   a%-+*jf&fNO"gG"JV*% cT^  l!P*Dj7=.c{Yx+y?r-\d b k FXn)1*IH23+]ktl0km^UGU(Y  w ]cR10`:z T|M65_rK! D&khG 2 $ Futz8fXw8V?H\09\ j%    *A b J TtP18& ;a ;e +.rZ!+R*!^:j#`9|X]8a{cD<+ : ;  )7d$9`ut'd2X<UX={\ )R  K0wKK2EgK%L" * (   [ H[J-+ "+HH.Z dT!=lna7KW&^wIb= e |um2ZnL͍bpGG  _ Z!(,^-*$  L9F P Rw.G9uPBD(  H 4 ?* U-&*+*FNT)HxuPMi>'mDnNQh$~Juo g1A "p f.t2QPTTnph+\R 6^eGh##O,q:/OPC97r)h*.KNbp;a4kK\s?xH$FC ` / K m P /vAO 1jhD<\nZZڒ#h>P zW   z E#|(+9+'t! ztr{%dQ7D<%^}.[ [ &>gr T>rdS`^1]tXy-z;->PlRo_/P\*`K<:e!,:^&%J2Jd3V-MFdX&tSW $ fX  't ZI-HW,Xs' p4FK1pDX{-c#( D l X w D |   : , f S?:a*8Vsit*r~k > |-r rw8Bx\ nR T %8kELHc,7 u - I+6uQv8% c Pa~ :4Nf,Is&0@p pv|m_ $rZ^9o-8~G_Rxj8-"gLBbT|E~^N5 M!dv,M!  # U t 4hF'vt ? V` |DQz:pkzzNl -x ~( kl(24? K "&1 W kr> F * LU3 ) Us1 vB^DNA{nn&?a]=*} `a  NO&2$edjuqNR En5[ 6Np 9<?#->1e/dj0tW(28#9LO,t@#dMD~m 9f^ :Z*@`BgM YQ2l Fl'l@*<   s N9<I2S C>z |p[k[*Q5VQ+r x_ Eq & s C 4 z = 6V/ $ ! . 'yW$Loujaj+}_t>e+ vWpS Yub 0 uDUjxhXZaK t[GJRyMY 1 p ] {5 &E*$7JJOb9lv&m~< AwbH0%JB_1oOP-f25L3'n?<`Oo+yO I\ b2]U3lX vxb b c _zD[ t AX\*.xc6z$rA Fr_JWN} "   8.}FFXqo;~kB:N 'zb! >)AZydJH7>vDN]p |}mz mJ . d~&`l+U- b!a e` , =*t @ ( J xPi|T^NY25ZBmc9?Vedi&U!(^9[< mR8p4]09ST01J8DNxUf~, =dO2H\ }? U ^%:/1N{:`NIEJhXoaLU\# Z P  dMPU,fA<I0M Dc e zhz'tS6   !'Fd7o>u|,#2@ RK#be `} IDYO~IEQzd2fJWkTn`aV7 EP%HBGo.w0/(  ^Z:\&  (]x2f\Nd|)5SjsSPtTV\ K4 < h { "2   s[`8fVu>BaY [|?OroNB/Q N : |IL5{RlpCf#u jWJ%L  /" k6}P l.gfb2scT,1 & pPAiv#`]$W2|)Lc2[-gTRjJ)J8tktEbHP,f ]s<a -{ < }t{ndo;mpyfgE~l0/ ~ `BZ^T  f  ] . . L P 6`'KcXMZ)UeyY*L{dL `kQ2 R <   z  &_vccP}Qn u fhC>a:T ' Z FHc 1R7OXwRO{?PT Qw|N)q\L3_[R(Qj^G,nmlx tadFi_/PaSt-5QsMU:u]IlrF[ B  &QA:n  ykY\  qtL~%dKHZFL"PJA@ B, n k | C G /  P c $5J'ml~ uNpff@Llj}bzV@>s  9BH@v AX_6DS|#mi \a  7b !w* )*yG/J({,Ho4b%@R&21? -4fJ +li(|t7.Z3T\8L$:uBq:66b/f !oRL^:@{Pk 6 ? BZ & v xNVc*"m=qXV f >r   }@G.>v  ) . 3 rz' 7+P49Y"ogX,h)\F Q 69 B X < ( O A >xWNR5"T6"#TeM'  o  F l:%k\?oJ $suxZdv/J[$dNH2=Z~G4ZOx4C4$*5uq6"-,{Zh R`F" sPb]L:5 {0:0j& N 1T D b@ 5n~j.i&-ygSObBC|6 c1QMi_&:l(w@tO88wn0r5XB ,_ HOjaTS$X2p$ t * 8 \P#O:h{ P`|ZP&>q%T+-{.T|9}:l>alU k//>+hudtQD %=.)PTw96)R~C2E?WJ%x8d.lBr6~W.L!34@-te~jk~KzqFO%F%w$[=+d@ 5G~g\ l7V8kB>$$f y Fh"'6c1 ?wds:|<>  ^6?e.Q(J=(Zli $MD x  z .76 S TzY h i<1bwQ~A9zxr 7tX~>d>  !5vC^uI$j8o[\nEr$N9`;]tBy0=$P d(t~<S@{"{2fzz[ rlZ,jTYQ 5~(wG&W 7  <d)9$ ] `>@YzyoJ:!s o Y (;Q{ } A > 2Y}LbgnS_`iY!ze?H!CX6O~1P3uZw`OV.iJ2&<\Xr h3C>~g (>,TNx&6vU jW&'m-yzP6T]P~^bI9&5[y29oFhU  _t@3wgnJ ^  rW-YMXG bW23:rMj7Jbv(V2.2,C %I_$h,edCt r@.vEPLpSy+qGP#X[ t60 $ (Mb 4$PvRdd`At\<2:=Fc8j?  K 7 |6Veb">P><Uz!ZD!2dWf.FdZG#lHDJ`na#tu(]Rl 9eES] (>x#F"l@eb'i2 f6@+QVBT@l1:d"~[`C*u?r O 0P" 5g`  0vL 6 v  pI&c`$FG+_Hzn*B:? Y C  \e8l+ Xtj-g^kgVJDN+"VC!}F6\*xZA| X|JQ=,H *b?dZ(jgZYPC7?k||DpP`Drl0A^  ):b Jfz{Tx v F] ,nc% [sqW&\:e^J5Zh ^an N 2 fs % $&( i1rD>&    o v, kt,~ICfXDu^AD  4*Z " P 0"r'O^wFdm 91PCDr./wjtvsG8>d\WQk`b|VlSJ|DZLn|]uHDTs|Zak/ -5u=XSKZOrgu$e\6i]oR%1 .Lz4 h D'j < dpBLi~d KE2rO s % ?O  [ D % = q&L6aYt*zh`R?V5) t/@1QB9PHN=eD=7P Xg NlN|c #f0O*r5J6"F3+s\T?.HY.MJ8|nrT7ziV)*bL=&#~0Bvat:+oz@l ,K VkrmwU b Q X 0ax`c4u=v'O%foot: : J\p`b oWTdP.ia~w(Ye  V v   \A 9 8^h u ot r>H9:rAdFRM\d+ pkCH 4j: NnrH / &&A 6\a3 ONd  u AV C i  ` w  I u tDwiUgqK*>#(so>#`uK[PRH')L#E F  >0) > I Cl   ` F 0 Attz{ K r5<\HN BV  : <* &@~+(Ox!^b3]' tg#A .&(y3 x . xCrUjKrD$) 0:Pu`HqCQ h1f*5Tm<47.7i"wLC)Z | znrv^: f{[sߵMl!DbL@(4B1 =B [4  elaK )c3"-hn/5 +  {\(Uz.LmM.ojBaYz&R 'EQJ9=i|8-Of G `  z 9zP' -x T$=V'qb")%?\jDtp"r>.vM\F"TaY* l`6R n&%N(HUt$WT2.>RB`LB R Q ! W `  ,} J :\@3 w|5~4:/hS|X/ \ s X Z  X Z : F =E%B%.P?Ja Bv(JUG,-",-?wioNh6#M2eC]z r  $ +  V 8@y[h ! \ & *n 3 NP80r2Cfz0,h~si*b1u (:|[FP)#g4lfh]q0 M~UU|*[Zb$nf\J+W>HRm96D\  d ) jZdg` ( G` A  L B^$}r9w{%DaRX:s'sH  sJ `vLJ e [ B -&j1o Hkat zJ-e\  3tV yJ|eq}).6B['d@NUZV [ ;|l' X 0 xp]B'O|iIv% [Blbv( ~Ztn~P.a=4   zj{ 3ohY6> jq#+%P6AL [=l~f\~n%MvOj1;39v h ` [_, T  jO%Qq ?Fj:&N>t~[#v4*C EJgQ 1UDZ@d1O6xzNeV&a"F"@bdXS.PW^=L"8 Am|!48[=&T u ? ju{$KjPRBi2X l| t O O&G14cjG0*x<X[p= AAx*nZ~nI`+2]47RP|w (~v&"9 AReM2(C ^  (&{^|2/JTH0Jn89z;[uVTKzhP/qE 9tMv*$hK>O{ h@Q~x|B hBGuKmx6  X#E2jLj AjxDUOM\ Hp+hr^j%,ImPl$S>pmK|;i-4+,08HM*@vJo;{|r&Hf>W3u) =-{PFZz>8c  Qs ! F ) M4]&F29q@t5 ^o=|V C Qf\z.tXi%roJbu J[2^ } wU Ejr}ca$ } `WYUdNMrg#J{' L - |[>&`$, ^"G-@`R:<}es T 5L^[(l$~`sQ%3kNj3xPwl\<,FL)uj+)NN)JFS(7OP+P;f bK UYw7=HyMWE ~ ={# i>DD&S~X2rPc+, _#0LaQPmJj8XoR~PWbc;0L'28r' j&G.Ib1@P<NI2R810ug@pew ]RY_Da)[=A.EjHf HF3mu#"krlz( Xh14bZf%t&*w:bbz\~ps* K$3Kao=.rP/*r$+NBr~b[nb&EBM= \B v.BxPRo8R\ Y|I&:vrtgJJr(OUuHB"a\FBwHXY0,d;r&!^ h;>=>|h*Je6z.Uy1bR W4-M^hh/&,h?\>>UUu&#NVZ.d,W-Ej44raJ-t] !3`gf:X~t UzK>R39>|<s h30Wb27^Y:r] aoPdCwt +4`> v#c8N: &9oUEeg4Rr!4Ba9+3Ki<>#M 3; 3pO6`Z@J\F<-6D-V|bM.L+Kb&$yCdH. W6 jf~b]R~SG},&lbe\!?(zJW+#r>R6W#RP(a Xj_Hd-OFh |J8io.U\}<4=UUCJMwd8 6!@o$ "Ozc)`rNj64^g vN-!DR:jN[Nf!t| \{2zEPMJopd=zQ$z]1fm %rH+<#JpHuZ0 4#Ffw W_|HM*\i6j,Fcj3:(P"&6h9`Noaq:O+x #A&/&+aO "n>8]4 <+_:lVZ gdT<A~#_`,JB O^J F.]"dcw+Ky?AMzFMdU 8tGFM`EAd i[!}vf:6fT&z.da!4$L`LW&mfu^<^Mf@A* a>.U$Qct3b5?r9!6\57.dxJ9R\N#z4R^m^FO;S'oxF.v.&HM.UO^(*2nb-z%f_{JtVL6:EXMdN $ kJPP">9^{(gU:;1]hqg{dXENT(8_~ rPdlfWd[rj d(XH e .Z( pr(DbT'l{VSb^_-0LfT%j tLFa=4`[dv>6, >m6`ekoo> h Z v Fq'*KMI aH*R0"p4 4   N b   2wPjMa!ga0 dHy> =Kr d<ugE$'7|(*(ZMpB1L(GBWK\H(5\Wc8F%_EM NR^h&PV8 (F+ppnlqN gf,/\xLqvqv`7XP8 3j@pN8<ef!pR]nq1rOd0U  + \^?& l ]F(A$+.JOn,g$xg6F[p  }TD}rE R`Nph2'J8bbw38ND"V`) 2B>l$yZj$):hS82->.$;R D%*pi#*.$I:xPrz?:>jY5:|yaNN6 T |$% z^ @K3!.a?l<yCJgZy0z   dtJchT*hK,' 1;8:nwHK\ j~AUPsz+p A(^vr[-1:N\u%epquv|tc3w7S' )4XLTbd7si.JsZw`B_-jq(K oEEK]TS"h88/Oj]&}ra([|b F8#Bm>\o Xlt~(6]n!cUfpTtW OK[-R;0Ig]Gzp0}Sc{zlLdLXBD]Pczl'+R(!Ra M##\,z#T<.Xxu/z6<D328r h  tT+Z>$\`g .pW)M> [oj Gtv?QS fF-oA^4t_d\A '[BXmeB2 8War6d&`:vR(bHN O*OtK_h!3mHgBAEVRztDB<x+ Zo3fJvB~O;ADo|P .@\'+8^gC6CHw}fuj8]) l^.[vaI<(t~1vze+ 2b"" K:Y&')p\/t .kAnM84uL<A"D(0o|Z )c5hj8|]9"N:x0!r{JYCR~R=yP ~neda 0*dRY f""@Tuh0krW*M0JXURZX[|-=fsR|a Hdqo77IX=A 8oh2D;ck(.wl"]FML# 1lg)xAzrN n N : \Vi</ *$k\w,,o{`@S]fTNF47$/z&P$>.Ei$Y2\*D7>@Om1&vRV^fvcO=0EFpcB|qzBmEWj!r+a*4 @<jP.|zCPl||+@1|` ZF *&.43TC lz!E*p9d $byjwz1n7j;W&9yH^W|5\;pNCu&7M$hq[lg49%L^M 3l2}~W%HXtblgpPor0p+thR pk+5b v"z2P+1># b8~86)6T/t\nutPj: 88for:>&x*` | y!=#Bx2=]$:B t=~*J 17 iH\p;pA  2"!_8H8z+BDUD!3_mJ.U )9B+SpE@8bJXJYHDbXLfJb&V1J!yUV(2R2-]@Eh6J\M rig(U~= A{JtyME~\l gO]j9Lyc3fM,+[3&=D&Il  Tj% -jzoCpd.tQW rw4TPP2A&J93 zBet&^yVB14E f4@F ZD NSEl^~c.l_PdW^ [&rx0Xl36ii1RNWxg P8U'@:zR $U9.JtA;P Hv<3+d7Ja t4kf6 BSuX[B^! N%=ZKFOw79`tko&&l4.&f8 f1)$/h|sz%Q EinS 9lNJ-.Ilg(T llf_ =v(oZ3IzZx >f&y WVUzpp@)00ZE(M/X~FuU;V 6JzB %Zu*pgqO':B1  \!s&LK!")i){b^z Hu%+EtjXHEKK[zorp^6siWfgjzlpt9UcfX!0hO"s]:utlH;ipF=*^p>d;/8PB"]ul%x4rYZ @ PT 2Qd$o8h ErLA>OEQ.^fK94XH *^Es@ NUTa=Yu!(F#as8g"JXCsp=Fh-a66H3[F|:8L\ST6+z.3* PE:gy[XZcpcZKjDailD=$.++88&+<>bt&8ZpAzp9rB 0QfvyoO3xF$3F]|pXN++%<]s u>9Fd9!U7P$9JUtr8+ZC>bmT *f5:r+'=&NYLRJx<&P'op l*U~VR0 0I,~)*ax!d6Fn0 b-|CFV&rTjFJ9DE>7-2$-&3 b!fH ypO@8(( UR( -y s]I=4D]+=>L[QE0%"4@PZg~a1@ThQ>4yP==Z|4hfbN >H"B z3l%9Tb=&]b>v<+ZgLBx Os P!=H9!].8x ].8^tdgu"'P-(U1zzz(T,PVB8[;A[v$ l,*ZZo>!W,]4lKtZE2*BZ]9+!Z P4d'30*.00E>KQTPC@, ~*0.&g^UiXDlp< *pE]U+gW86pnvHJ."f d80l! 9~tF%&O~*4* fFfP !C]tpuha@ynTEJPXsxT4B| 1.X I ' &zgKOZgt%1>@B6' uiPEKRdzzaZpVX"\.D~OtfK,Lm{tZ1 y![c.ufWW^n~lfjdxpaX\dpxzosj^idnfflgWR98=X"LVO3T7$(<]f>&(N~T-b oTIFFUu+BH1 aTETx&9QXP@0yxz~|g]\iW. !B^ xfaiu"6HVJTJ8&','uUPXj\<+.Jy+'|WJOp.EX]^O@+3cf=x]byzN !azZ>7(.7@b~1JXVJ8lju&198 iT>\!" >ZorhT. ~.>:80&%>HE6. *,4:,+"zno||tjn yK2+P]]VF3 +6@:' &9JOPF4' .:B@6* *40+%&,,*&',,'!   %!  %030*   "&++*&! ! !&&%  '1443+" !&**'% &6>EF@6*  "*06600+!   !!*,+'! "*++%                komi-1.04/komidata/sounds_unfreezewarning.wav0000644000175000001440000002465010075325104021763 0ustar allanusers00000000000000RIFF)WAVEfmt DXdata|)Hq3k8A"p[56aM:WU^Up[| { V m >?:;%8=  C+83 }G$R ZvSSM:  S" "ېP<@ fb5V!wxܢj &nF ! ;I,=p :dO4yR%(&,76F!uaeƤ% & '%'`} JަfhMuEsyL5n㪣:ڕFG(;QK&UCGGN,7ة'q 4O>[Gf9]4J^3ffYJҗ֦"/f2M-B?|}ؗح '%/4J+'RSS S p W [_J y rw@?:;%8=  C+83 }G$R ZvSSM:  S" "ېP<@ fb5V!wxܢj &nF ! ;I,=p :dO4yR%(&,76F!uaeƤ% & '%'`} JަfhMuEsyL5n㪣:ڕFG(;QK&UCGGN,7ة'q 4O>[Gf9]4J^3ffYJҗ֦"/f2M-B?|}ؗح '%/4J+'RSS S p W [_J y rw@IC9 G2l6B}sj-d:vv/JzQDIsJF%Oe>i`AKOPM4<M[q1hN&TT<* 5>lDv3<(U0Cd#Lp.-O i `r@CW> a47ruFxp'1ZrPh+=;$f--F`|<]0IOKCz'wdVhn63QB`:Z],8oRe %|_(J^k;>|K`lM!/nqke HGgSach",P,cdv|OWVD"nm R{@f?(-a{e Vg-/2CEna'n6m\9B  BkN1R}r'^ '4S6YQ0<L1IG~. 3MV#XBg-%#GJ'SW}RJq;JMYr-I D]B QX8,1+%9C5nQC5qkl6` m@8Fg,zeaa5n3$ h<2)2+;]^4PNb.U5LPfuj*HZVl5(_/x" 3i<S/y?^&CJs`C[:\8aCv#/X8;MH ].k~ai!g) g; ($ o @'tZEk~-h6 Y>%,CXt7}Ue2Ht'n85{|H "|W9E9)3 M , N t@Z^T , 1 +z7_#DUYysasP, 2T;Y6K2AOUFF[{}kZ;/C}7G]14[/tft/ILN=QZP.Ir"t&IG4 )  O/M>{+.V>f^ y R &f151!`j? S x D we}Qnt  O @ I]s9B-<VB\_^om)ߙ_ AniT'm8FBv H f 5s#LZ) E!"q"!"##!# nb;[=V{Sy1 [MI"\)5],Xq4Gan3MI  r$ukOEp1@g T   rW{E]"js7v2ugߟݗ7܌R&ܫ).h @ } Q? j? "v#h###$E&&%g%&R'l&$$P$f#2" jP&Uj Ck w SVlEBh;(N0@:b?N7 _Z:%V)Op u  \}$!7$(@zT~j W WBv-9[K1`-gr!و_Fٹ=A;و@ۊܗB}Wy >Af!#,$$%'u())))*+*X(() )h'&d&p%#"!kUo / _`9, u5/O2| Y!&cY!XX F,U'N5uJr2 !0""!(!!f! R7*dZ  o<=Gb@= ޕޢmlJٱטXبٵK-hew3`%GN .pX  ~ |!#-#"6$I%%x%j&%$%R'F'%$$"! 9)G  S'X|Ziqb{}oC%0f$-a \TsMJ p : 67_b1zU:"eL 9 X~Nsr>nsd-)yMi;E Y4vp4ti3 =]^ suXcm)(|Xm;!gUu-fdTa֭֡Ի͇Ѣח*0A3  !#L+3/85v5:C=8=283$2+$$2p9 g7{ ~!G$OW<*d W?3  k '_}x},wedP[H' A}  g    " %)r>(^gge TqTq)oW^-@8q+Ըڈp* `x&*/68312L79s1&!`$X#Pl K~XL {}8 EM;S+w( )I !.~l Z^_Qv' /qB2w.f qZ&fYflm-r#YB?@S:A^yao9J9 ,~  #K$ *s6:7P:B?3/1532&:}8T&i|Ԫ]ڒV h # u7g [ Nnw>uZ_2T<Jq| f+uu-Kv# +ZJ p C@<88#;$Q= <%F1 689:85662J'Z 'lߓAѠNG=@ M I |;x1a(HE "PwLU1nP ~ 0 } ] dH?{Ac|=dn:߼:|3؅NQy.p dF7#2 4c:4:4r h ot5 } /Y6( TR> ^#; 0$?3=?)AEkGJL:E);2,&u(Eߕ٪[W˿ÕÜ,ַm<     $&#J% T o y sEr2 K Vvyf z . }dl3uٷNر|mҬТ(ЦаД-rIAGLdC9A5ud Q c lb(+I*+9JiLAC.RZUMMMG(=6/$& X'U^9VXSH`huZQ=_dfJ$5`=E2XH e/Ec܈Φa`{V" #I6OR0U2 ~? zd$/iuU2bCL/0asfَӾѡщ)b cDTi)κݻ!nTW[eU o):HEPb%nopppppppppp kb\;MY@F 0;AGjVgppppppppp`VYT?i+(Z-$8. <9Df"v~7Fq@O;_ 4 Y =2Z -]CL l7JgMy{df U)G n$O-Iho m* e DH  7J n Wj1zg%X#ffs9VV@ ͖̂˄̸bܜ٭)f)y}-"|$&2,x/-+Y/c52,4B:0&,/&^+W0[)# H   h 2)Q=_6N+\k [7 +a f  V Z _ ?d Ay  HdFu3Dm܄im . Ie_}` `|_.Σ>p𱂵 ٰ­_E kڇK'D3;AMHR[].Y[Y[YWSL3@0%]&˻$mswiN$)/b9jACIO_P7JbFJ NJ@7o30+`%YBoq ۟L~)ʨ &ݲ3 u#*)2*6k8:>eCBC>>?e>9p95O-4%"G!r_ pA=ؒT<4k` . _ !r$!#' 2̈¬F̨v˱oAֿĈHK #_.:uIOSXCa0aXXZU^NJ5BW41,_ X2ٔѿ͵ɺCd0JڽoMΙ{ѭu#+  +K2t  I,'/.17:;<=<;;; 852+#!S\ Xj n5 ɳ̍B|Qp7: 6t "Q5C߰թn{e[˦D޳2ǣ`l& ig&6 ?A(AGKSHWu5n2*#!%qIGK=R]JSADJi?::>7*n`qEnl5޵ִl}ֿy*6;WaQ rE `" Z l 0PS|;=NF-t2,.h@ ML%LRVWzU|L9Ey;>1%y2 ؘƮGVԦ0*9a4ve{ e LM]x Y  ;n#ݒ_V1ՠ۲)[E- ' Q-35A=@DD)A<:6b/))$u4 47 SӸnٹ.aޏBR)tG+CɎn󱙲`pد:ȥӣ׆9yy8 o('9l5);2ZFMC(?8JxO>)2w=@% !0._gX΍Lِ!)Mi9,&&,K jgUX|p"y $'+-p./q.6,&v X  fpD`  +$% F P\ Y1~ VS .j F #$(J[+]uy#լѲ!ϕ ϴLrˍ3^F۹@ݻùjKŶsȗȘ1˟_El-O? i%+/8DDKRGYO]`b2ghd`ZZMHEE}>) 1%#+h: 9rhp|X`l 2n !0*>,-t27`4 3W3[1.(^H? }(2__fP(,,G)S.44/*&T%/"wi}< - =MlI{=B)JÕ*l†Ľ;ƭJΎ}Dڏۜ:մҺy%h ЧOL%ȺWؚDui\,9HYqjpppppppppppn\IXEkG;,"'# 7+_{h|'CFM}ZH\S=PST NIQEk@<=4'*Y|@ݤr ųLطlq^S'-,i/7:87p::511 /1*%"bf ZqfLރ3؃؃gAUip_wpp 1 qK/}rihWi(w.iAT$4>DFMdWZ\UJIHRA2(' OX G;Cg39ќՍ$ ׶ٱKޥ6)[X8a| e~#).00243+578k713'#$. +O-^'C{)$  T +CB\a*EKBU SX2}" 3܌;CgSijX* ~n zF &+p'% *--(K (S : Bz 21YQpg%  h % Pun :  [ !'%)2.'12z1/,)-'$#n~ US(%y~a+b`6N >,; 6#!X([J )VN ̵ټ:6W"њ}c *=%9J>:p@pQ~\VOUXZqN G~D=/$* 3wHˣ,i'a))"[  } `3D(9lhD} z'E.H.5C t c X}I!W&Oc_=P(m2 ҂Eޢߏ7-$-38H?CHMcIsC@E>Aiz_Wǥzߴx˽ƙ#m׸#Tp/ ',&'K58^.*S14S("" v]&"K@L8fWx *b$$-4p-Tcd cO> Z :slT '&'$5c U  \ H{!fQ  1?PaLw N V \2 \;گ׀ Վ$(яǒˬˢ ɳe}`u I޵sMۧrTUCH^ h i#*3G<@8CJxKKJC<>9( !S FhL pX { E(nEe@>0; /`_$%g(-42//,$[L X[bP\ x @#@7 P~ _mNDa_Eoռ";ŇxbuyؖLv5fPB;г̬%ƧbKC"֥ٸm Wy, j-?!R@ Tm!y.Fy{N i5bjGtޘߦh׻Sh^,ĕ-Į /̭ɻaϽٴ?HSv ,&-/v0F-.6o;7Z:;:73:)p@SOhFXoPgظpϾS'Nէ]H(y"՝B -_a.=IDBEE5HJE@?6s%6$ yxw1B\K5, 7 M$ h)/-H+03,y.1-R+?' a/ 3Q5@XHG@=j%Hs&5.P0 +&M#z(6"2,3& Mu T W %-.4*2ж}; POЭ@^ΈI>@| g&F r/QQKzӱŴ7&l}KK8Ў (+B7CjFE~B`K} =]}0T\Ycd?!9u Lo ! N \ _ L 4} Q ("!&)~%T 3$ k _ c w.>GwG;T}E i `` V[ !\$=R 4n-XӈCӗ2θӇۦ=i# (J*(o4BaAbALeHB;83V2.C$ b IHwUvК+^܃l iq#8#G lI').E 3 4,! o(q?/Wy\ A e N#e'd&.52p%C>'O0y  0 r<}βҧɅ<&'9hZj   'x?hzqG2!.H~Jm,! A>yjv py*9KX| ' ,?E U :zh . 6Nb1s897_ $5 D \F ~Lkq$"RS ,ڶ #׍Ujrki?  #&&,B../56?W?8-+ 'X > VN 6f! /q& +oz[6Cp Hj2X lFX( L_[ X1  " Dc`# ,HvniUCeޥYk^s*E#\"(*%0=FCP*!d#.&d .=w!#L̡͸̅i̖ĥ"ҨԠhkYL\an4*:&0$#189/+1N2s$e 4*e$3 [Si,f*i~ 5 #m&#&((,"W0 k ]\V[eM, |48/>xM9 A =M7XP~}JK[̟r GaIOcLEE'Y3&K1 M88+"!' 4 kG/:fmB޲rD.'"t/2B1(6!X}(K-2 6+MIr !  vz )A N3e>vN s7# 25[ EH >\Eh -V Zw  Pw5Q9;cV߫Gܫb9BIۃ;#eAݮ].w$F 0m9 GT %'*\*/))6=104'#S f*w;=r{V ` P]".2M# / [t $t e> \ /   - i  6,m#Sw\XR>ZakԴיeDԹ֞e|T$KZ޴ޘ֑} ©ąž}U8@{K@ (R)3LS5F|G[9WmFGrF5'/B E(*1+qwN^`{ C::9s}7+ =i'  *!l7 "_hGYN' a  (Y "l%5C KO_gnXx;'_Ea%' >Y>P|r0Ro;LӁ̭]՗gڭ/ˉs>Y&+j4 O c+C&kW* ! 9h/5$+!"@-LEq-)9G /XY ^? / ] kx +GmR+H(& -%c5  n =p x7!<"5t(dRCݱ6܈ Cvxt \B P0 b&YRx0/6 ڍ[5lԫհHU $#*23/1G6 ,!,+ + | F(*lN  t BZ]J&<)E&]# U  6cdwZ] !(#V%]1-J   ArΗ.'\aG+A W c! &7Oߗ~߷mԧڡ~j0؜ބK@Nx]V 4+.?#z++&R0G8/_R(" ~ 7x/F'D>q6  0&n$'8H,f+C>6u $)5:"lPT?KfW?)'_ S*2#58#  *C o# =o Uol<.qX/@}!Q#$Nڈ^RdT֕ۊd҇^tb,zrSE e- *e#1,'' $A! 8 t _|@Hd)Nb`JE2j3~ XqE e% G3!Im IL5-  * {u : 1cADq*cqhY } -abm y V2 f .' $% ] `p >$pJeh_JkK$+ # EX ~ t&`'6'c811 lAwFDyKxx cw ZqKp E;8 1^5 M~34ge7`4T$fL\@ FNA =Mfw[\ uI.l NchԝьWDӑx+3 A #!#+'%35 7-o\$!   tԐ= ڰ@E!K /sx  cR" 2  - MK&Mvs"WlU=&b %%*$m $gPX_3 .U<5 RFu-['6`&| q> "!%_0&(q#l^  +WC Nw a:&^]`2% F JA_ecO  "?X<jBbcoKg  ~ u 6;i=eC 3dBU!:$#i>p+ B"s2tCr W~?| |"*Y P\*%}  .-0&yxXg 5 aH *Jz6 6!w$sort WF `  P7  F9% ^ H<  " ?yk\ng1\܀Vc=K)S q<## .!g.x4,)$v } $piT7b޷z qq'/> } ,&: a*H3 XK;- m77{~x\ )H# RIV {l@=9j@I%b9)+!^<% HEw {4( gaDkr"$%ѦjݓsC500T 7}rj \n3F4{ sqpOܔ2^% ]C"+d+,: W  6@AcD sVb b . A) P (Nm zU!) h99 #O T M(- ^9 _[' < W  #a C<!#r ozbS;Хֈ~c ݔې$wم 8P?S.:ZE1 $%l '-3*"q+e0A l F} 8XH#c=8 JW Q62#W? /MP mS /xH M*   } r .5Es a/ ;~|ևiV6 i{ߺ|&a&e0JK8cP*ۻ-Fja L,67,a.3=6'/31.'2l g  G  f:cvp x   hG.]3? nqY6z!%a1" ~-\>Kg%%T;5|I ,1xVs^(xfnR iے8CX`qf՝߆#ڠEtZ  L   l.A$1USgs-!x $)i m&!  O ^m; X  >   x; $a 'c E=T w 6  [ "Zq3/~9krn{CJT p`ert^%En! ^i  TYwe$ELR?;i DճԎ>}vhI GI/ -"/!9 PY L ') 41w:^4KEbF'> ? QM L"b%G1I .yBE5q&Ky W P:  |K'a &k CI]caL\7DIc!HI(tY@!  N=8  vhBZ4A 6l tv;= ocN!|N= LvI M V $| GtB F iFP a>'EMP#tg_] e l^1 hE}{ KQd{@6nk2p\; RR   qC P XgH!vpPJ&ZE $kb vQ . cW zwB"Q  W , D ( 3z?3y "fZi8Y <<vI\3f52 C$ T-$ue6ks;X!$ [.?]v>jhe{f &sZ- Qf"H2 u|tlfAF,=Xn!V 9 %b:)wzm oG3{Ya (@ o  x \P 9#1@f t Gbn,0B4 Uo* FKpo  4k (K Rf7+P dzc j c Xuv P}'O C'Ms>jz EKb^# cRzF+6a":w!Fny W0 `"&S "W K_  f! g O% ~ Bt)  0y%%a, co8 ] - .. jcD$ \_7 j H]0  pXLQ np ~%v!x R6XIz8Ju[m>sH[&B O 3o'~L+t 9 RB WW\msQ0  t U31 kwJK9 5 >(/ F$"{: E ! >(im DlSWbGA)s2W]W+ 5] "0 $7^4 < =:G @ `i ~ Mf1qvD. ys#)M^ B)d m ?!3 b {9 %  McoO5CbcpBqu& j; *1T:~upQ+[jyKy- 2e G 3D/  pW o>)sKNw2: jY94;  r VY`7u S1 C 00=-sn7dMAh 9jej:"% B><q1 O@#  =Jw L1qfp  i*4aV}B^45:_%GY"U#hKR _W 9W "$'5l2wKFx Y-.M# M4/ @J]%%.f4)D`N7 m `f ) } z W B+iX U  +9 \  e -@ J;@ " F2 *  zU  ^#=G f3bDU C  * PCe t~ -\ WubtNAz dk ZR&Nu>GO dCCw 0 3NJL iP<h q +D_ FO5j.8J)PI$>0$18XS q 7tZ:86NJ wi D I sb@ PhRt fo8,W ;ftmHgWo ߢGsR`-$k'Y9>;g.i ?I2qpL2_?>S  ] { pmj*  # t DKv W_b{=H  Q a> w O) zM  ;t-wdS !{0J H*IZ   ;?c\Q](Ji'8f6W+b#'=t,W~ 5: KG :_9 y5`Wm^ \ H p\  ~5.H H I $6g9x  XQ wI ].  #..>!w7 4tt`bpy } iEI- 5> z* 1;X aU P!EqN`FoK\r X c nU?Qd5IowN h /0  j  !Jz v L^KMgXZ;wL!r)!}F#I([vG5}"B>wmHa ?Y}  rs6=Z(NJt{/3rhfzB R ^\`n  Uu|KV(C r6 . aH"S [y z5E9m`[b -s  y Em J-Fmcr=YV 1;$4{R d  Y0 Q2 YDay@W6:yN q   ZGnQmwF+>2r$_It3e#IAlbTb& Y)  >iR*1X0! \46GglK S!JMyNY<|n=[ONMM [} }C#I%DOT@UyXz8.J,5l Yu|S9*b< ZXgYaW +E9|YJroCYiN9;Z ~v\. \  19 az9 Y}_mjl> }Om#1"):TO:=r`X%wh fa Y1bpiaCU ''5}:\ :%F E{ zY S t9#L;E0 x/Rz|(v'o#O=AT`a<g|OD[MIbM1Z ^B] {  "Xr]QY;}l\d6 v 8h ~ 13  8 M ZN9'| z's13T S<8  #;JD& 6_  .] Ch &A |G 1_w XG7fm^z<J[lz +,M?,q<;U6ULcI<K ~od~.\}\< Eb  A Y R%  5- bS,UGd ;%U(ta ?sV { @Ri  Nvs o%5 ' @m.  E /; -V 2~ tAXZIP&Cr qlA+dXbksR+c4sRj( ^ qVX{pt:rHZWRa4' x9 y v|/ 9nM" ,E. [} :s  8   ]^BF \ r `b_yBk9E*QLk 9m5fx@ mhT-:MbM A|8P7 2lP= ~@le3?:n6i J  v ]P ! j  p  t i j Gn Y d9# e(- SXUnNQDr 8.GNV!Q4o`Pc"hpq9'?LHh|TuE,AG Q w*  J 0  ' N a i  u 0 4}E hZIe & XQ UnX)!4//R8`k 3E[ j    r s <  N  2 . uI n2%%qw ^ |JIrz8mwQ3IpSRQ<)VqgM9D(  :r i k   o J j)73, O  wf6+Nm4DX v{ZuT h j O 5 H 6 X  ! 56q SaPEv3'+i2*_eW@Nn"N _27$ L x> e 6`dCPKxqo ME8^ v'crQo!Xlc3 >6x lCN ^ iY 0}i 1 !&> .n    AR-  h BNYGPIR?"jJ3DCBB)<~o x Z}8[i(@bI Vd } pj?lD0=4W+iYB@n( a|u4k>h48fHs T Je{E!I+[   d6 Q3rq(~k0em;:0#H 'x + R g t U & ' -E EZNMa < |#$ 8 3kfyybd^!]W\$gXOU o [CK4  7 ( 0n D - ( . \ . x  ] si uq3\CO{(M?D_HI!P &z  7 ?|# TT) opy]~(P\Z!b]I1ubnPE"yF*k]'3+K/Nj*K } |~M0yT X}gRC sLE 8C  T q P 1aZ*nK'|%tL`)LI (  gVR L 4 4Ex%* jpUDc3&#ceE=8t &Jr!l"$ &%(S,*O&,$:%((w$y 5 f8 ^@3z7/h]9M|:>OhOA  t{eYwWE J6{BtW.+P nBk1P\rk^M0YUWj J} R[vR@)&2N} =%'8>" A_`#(&%&(''*?*'$"(%%q: S`qv &0o!sYZhKu]XE_BU/xHVxcA&] 9 L"9#`^BM z[BB8?^5{| GvRN_G!KCdqSx+r-#E"IfiT|XB11o?!kh9m eso+aZ[N(w^j TmYb4Q8+o` # _-w( feaG2aNPY- x  B z[ VP d y_Vw#<|IFEdT0!G,ltm;;i|TPwcH/L&`d$ O y i(l[b*]1 } _&= k  'V o   $tcJL`["_ pU&bBF`>j i/3UM LD   9 @<5h=v O #-7~ 5   ~ R txWNgo53J>HgD[eK^("3V>WI:wiY [ UlJ @ #`  %4\=rMGI g/}ߗ r -R|q#D6$3[RrJ = E `d\`jstH|v~8rj0ayf?)wHW(B$S DLk? 6V6VaW _ Ve3%Dt1[IV:DrQRX/pD ]Y orm !"%& &&*.,h%#&^'%s&"BVVbO b ]^G+oKq*O6/ZN;ky';/8~%rqPSn$&Y  W FSL>XJ~H,I X rGV>vZA.f[@oi29P3$ke $wY.?qSTxIWP?D!*&x$R!R"(:)#%'$$$%#!ti~  ]=]#KZ7fS,]d_iY[>O LM?ip/E4?  ?<[* !$&%&'*$j#!Z:/ B G\OMhyO +eak$:}P}HbF+O/* ; 51# @ ["Z!! 1T C n Q=eMB8vۀ܇_SC)|0@ ;C N(|gQhSpH6p  =)h^ q%"A%!u%\$z# c" B gtP%2+oI.mMk- &o # 76no5y_!t2.9} % r 1;@48 =i |c8~V@RnTi6>+GTZBp/lCh  1sHW!! f { 1!e!U'5?A Lk E H 8  Y( Y 1^5q0\!idN x>|;rUH~@k:!%=6x}Se D    j m!l E   lKxl]fgA=Rp ?  $%E&([,"//11H0S233]/r))+&! gih:)zCSCt[ |*- x U FC X,qu9Hb,o 6\4H}B6/BI݊ڪTmoRcs / 4%X9S 6 CysXq[C"`vpTK 2D !t "*$U%%m" u!`&*&!8$  ;(y.!O6QD [ veCmI> N2XmF] 3U/v9Y.yvzq^4j}P'NnoQ&]va^&v 3NOui(%u D) ] C[ya?a ] U1Ua9#ZM- Bhka.5 ]6( ? T 6C An  =c*dK#j$>J2u`%$)]3<+ 5Jq^BIYK( fj1 aPW,u+T.ISM`O=Ee < Z  i5L.:tC ] h #  vW-zw :BG&)i $ o H 6 [* C _ d 8 : ?G6?DXl`\HSTc=jZJO^ VU#DN(a2&@g Q=>$. y(: . 5 U om] 92g N}M G: 5wH*+<7XM:t7!F %%iDz)]ޚ{ׁ[ i vNB l=Qi 6  g  TSGj ^rk|SQT c7y+#s-<B  fNeVETpUdU~R6 C J M@w"{"F! F &DFf6 EVfD2zHYfA~`[u)4wieFMV-hbkDN |3<gTc' [sXF_iaL<ߐݝy?r@o 8r;xp Ca!&)&" !"QPi q ]|`x,pRrp  3V&Wi0eYRQ G dv T R ! JI| D /byNpl0=pXuk 5|J.s1|1|&I%t w T +NL?u b N _SOJ@gE^6zܗ xד>9Mܓ܍7h=hfi  0 9o/ m +i$&%#[",&')E(""M%&%%&$""!%&!!$$"&}I \R"bFbW{"_aUcqL? YZC Y`/epmSg'$tE7}%c  I/~Uu =s C7 uo5)w/(f@ H0_u d2+ki!#P"#_$%'C)(!!L!"H$$$;!"#!JjGPM7G ' ^ Abe28 'az%PAt {$`} Rv\\zGQ0f  P t q _ ;  V! `l&%Fڕۜ$'UU.*4|95 (sP@ %""G#o"=Zkq3  Q noN(-'DOY mI}  E!%&;'W&"S!!!Z : yB)P;Xg;?h$R1;0d^.vB+Blc9Ys|A yUES!b"$r R$#}"#!zM x\}ݸ]ߢ$"L^t Z o 'm4\-z!$H!!,hpk 4 lAwIfOU{rb*O ~ 3bmT k1r<D I { 6O3G$@STNJ5gw/:' |wݗxܗl֜ЏамԹڰۣ}i%W&  $5 u #&*(%&)*+.. ,p-1-%#%4#+'X _qqb6 Y4"=Q}_3\L9! J+ P  ik3NbL gp;9*/D:+Kx+@,Cvf   !G]n=UL5JL}0,"~3jac^c  sw[y "##r' )'&$!xx=g,#?ok 0QPPL\44/" Ebu9hi<Iak;RP'0[X0Fx{B&ae>4D-;b%t^ m6<vskz5]p,@? 14b79B!!! *!!qFT L & Z sg  uc+)fU  ] M ! g 0 O[G[hQF\|@OJ58E06X2Kt18)d+WS2{5L0^#}k{ h/fAXnSBh0)(E DzRAEI@vQ7 IT62  r1u Zt!B` Ru:"nlAy[O=uQ \ Lt F ' G MW' 4 e,')Kuh\+;PU9>P!< )P\ {jd&2! ?{  mm0Yn<|Nt+ z -sSck+ XC#=I8:TJQp{Z ;O>"! !"[" 7T jz"\O ?FQKU~r&]sB@mRK;L  ~ {X%  I *Glp[uQ0Uwm6Kx(a  3 1!V%(*F'#"#$2ow| ; :,W^3Y'He~Y 2 , f ,QO" a f"t/  =    j,.$hIa03hX}n#3ܕݣu^] .:MKO1ai  OY4zqJ.) #UKEmR{"4M + DQ'O/#''&%j$%b%%)#?U/LyFu J^y 7'?V2"KZ2x@$Y 8 V : Y   , c | + ]L/- 4 &B Co}[& 3m8C79w 66zHRYYCj'^Y<.}WNxNpkvbNe P*1RDeF{( g? $ CJyIQ #%%8&%'|+b-1,&,$&z&'q**E)%p&(&#0 _ (9o% m&V~1$ 4TUl\ c(,7BF8s.yx ~iy@  t l 1 ` n H_eK'jۻ)ٰ;݃ݰޘދ5`ac2 |C Q / 8 =R=3X g^Eq R+q3>(4!>'(9&U&>*Y-,*,)&&8'l& b>`v+  1 JR .h)V\i6T j\EX]NsI@E(Q a} K a >$:!"~"MN m"[ <wN$zBFh0$ 7/:1"aB>W(=J  R 3 x #)0 Q$S\kaK&zC>  e6 o{o?$GsLxO v x9\p U J D%+3{[_*Y;c5݀gS6ߔߙY_3 L "(IY "$$K#%($ 5N5k Na&O#u g]L[$2wK f!?I C9P [&y'L HG0f=.$C_Mj u_/Eka/5 @ F \M byBu v7 h8DbC(Af8O ~ XJ*\=Xv,_ic 8 3, 94 _u 0+GJ-K5WbA<Ye| \w`uqQPd6}Og\91zS@6u# EFLV S-H%"3vxgb M?$X r [ V / Um z*)l- 5=%>8/I  + g& ^ +96q|mN ? ` 1 |_=7;  1X_QJ $  f w c v.bXRel#dB(&.CQ`l]?b;\H=Ix?RmML![dK7Ol DS*mLEPTr j:%wo YBz?U(NP!7  <GTfbm)$  1@O\\M { "8 "   X}s0:|3PUO >2yu ]X: p{`in&8|9N@/x= cctOYr%G&6W <  w M c n> ? m n<0f&(* ~ \ 4RGc  B j%7`m9^rCz-ZTkeRd} L~+@qx^b j QbS (^ l"s[^?)Zz LQU;29oixj73**6sA ~ "[)F}wFOd;*?{>o 2 Nh0Kwro &$%]#T!O![!K!j g 3 * FUWn afYV~d\ }  } q l`/ U L L k6 i U x"7H\lwDI&?e~J'=0ct4Y"j:WCZuOkAP#*<<C)! ]j]m  b 4 /;Kj-WlZmHFF Bi*Q rIK b oH0iy]4rF- n G   D E v&YM9`f[0HmB ^ >:(!c7Vj#Sw{\iEG}Q"i"hDqqE@B]{i l D ~  _WI ~[^ !y`h <28c0Tl j DeEs8Oa?z C;a>&Eb- &Zv@V_Ks ch5h$ @ o,xR1EY=& #SVtcO*e~$5pH\s.6G6jyF; ( oCSxET,=;& ? pWtM9  @Rv "! b = T=  E l($B"}[ KU,K UV2Z|`dy\XCnVk}  RuT $NI9.a r kUl0G^Q76Sx\=QTvL83,e <44H6dc4a U !\ h;CE  IU  ^?g (Ir ' (bf!;luBe}Kx'DsL 2Ujz Gb4!a^0[#K1 e AzZ5%Fg<_!`NElZg]Q+m16 C#G I.eR*HP;[C5{I ^i)bt l *E  YV B  %B q q " & a _I \t!#64j+Dv*w8J%8S^-L]7  Y o K FRe 7    W 8 ] j  [Q,?OEci_} /">Ij3\3"Pxp?rI60w]oUl:J_B2l93kiG[4 ;ki{7U@R~  DF }95;C&F[ZJ-Uos',!, uJ& b R2wX e  {>^ edX* 139V&" ,#W 5w}opW3`'+0SG$ }yTI5evG N,X6E5(o+P%^?Qi)ZLa1" BJh% I ~ _ E gI 9 - D- 4 a _ * 5 P _  0 X}.yXPG{&2-z3 yL U/:mv(3t)S(+xk  WkLBu,6alYM.FOHSv%&$q"gvM#pD}~Y; ( y Q2: }|[/FayH)c<  H U DbGwx ^  =k2NoPL8Z0jJ=HmqF $ irJ]&+eA qkgq-, [10w<#qD<PQKY $ < 2 *   C eTpj ' 7 O 1 |=[=3!_[7kIfi9sH)oyM - E iu~ ] H]ui= j$^UQ"1]R=0P@9 > K#fCluCQ+j6I3fxb&.2po4+7g]Y9:v !F 9 5 y)mh~Of&_ >  z  g ueGt2_\g"V&S%!5 ''))GR8lc5Y7>4fDLGv5  P 6 1a ,qvZ| f' Srl{0}EAw,P^T7cpWTK {(jxjs}{ %  H %}pXp > b   j  jrkD :w.<`?pH [%|487G`c,}m<}39e d ZV    e  $ YC Mc8*@}X^.^'W`iQ3X0c@gkN\vdpn+#S2Y#S  f  _ >   y 3      "9FH3 T6KE] fuWJd]HVh~e@ G 4 "   l 6$C) f t Fhl7 Y CE.(M5JeP6E7Bsr:43v;Sj}4 i)+b?yXf)]s`}xV| W  ` C p 1    'B K "Q ;t- h% {?4K]I.c[lfDcOu5TL5%3fDX      : 3 : + Z gWy_ xC}1raRia:.NQt~;vQE1(CD$8?>Z|\S8P0 " &)#1'Gn,M\UCeNtqIZgOH D4TP;tBID R}$H H   0[Z{b6}<xF$tKz8M}(B/f+KPz/ >/-c:.4+V8"_<u~j(Pb-\:Y>f$yttNqt9O/xA0]fLyN9 FTU:03GS5qC]{  )FLC  Kn W X7 #! Fw x'+}9L{=JO!>1j*(g78<C L6"tJ$X:'<kg/ @cD"SM6k( IyK?\KB\L .[Z9EJ vp|rDJ Fwspb`5ezVa#N7PokQ*%Y2 FYdck  j  7 nW   |7?<G wB" 6 G2 i'Zi M <>z.%c'{xoyCpk_y*GiM92X) dg(v e&tD&r .|DW 9u'B^YbQGHFAK41-y lF ~ K! 2   r Q  H   ) , $8QF-}C\5,s('CK*|.og  G 0 qa [J>hua%5nkujOiMvM"fcD[%z,YT>EV5&F+:&F7hqYTA$,U]DyNKvULbO&NLlz s @ ?] j  [ wo -X q  F(_$p^l lRFRD@ -Y.E=z'W KL8{PN49R  r 26XS)k%2rDN^-$.n PI#eu;CW=t cuo5 ( ,>U9v`v`7 5 <#  9  Q iL 9 Y P ; `a Gx > !h<6pbiT sjwY")=wS#l\/8/=q <bM | X Zb } y > U?Dt>er UPW1=)j\et cf#'Yvyns?n|;yhj[r t  ~h\G @+ZX(K|c1#zDEpS}7{qY<7z  m+=  -  y 7  v    ^PenlL>Nl.f6dc`x  JK4TV,@?\&J4/0mx_:^lCbQO[|>]U{ vwE 9-rS;9u-*@3wP3{lz4$#Zpz*0 -r ?Jt~_=|}m;N0F"eUmobk&bW- ^\`k#kW y u~kH< J'({#wJB|^{>w~t1=#CkPGB` 04-Mn$H"6t =8 + Us&*PbBPp10sDwSwUi\'>a[ UcOS |[,;M S7%3E*_Cax\,@n5)C*_"CfjI0^<EXUU9 :kQBWPYuv]Rgv?dq`wjv,G"ihSC:*\dO8 3ZD(p{wZLNh.^sj+pQ~ 3JZXufTg*|hm8*vKf ) J[AU8=t-"mO()<nsPm;597?k03raKQ.y"|nGzq[ A 6!VvW 6 W 1 gB69&@C'O0,(!7I K / dh& YCCkW? -[k-XE4r,z@SFwP:cWSQ<{/#pmS0*n4qeW{!^ xf!gky}p>"}oaW(dsOgO _R 4a D  6 i >Rs#1]THq_Q![76%xI@GR6p8Wor,}.YKB [a >x`r8$PEAfYIRh6D~,vK-Gb%Wl,STn'/%oFlbJ "T7A- ~5]u kOfL[#L   n 4x/c~wrK?\'n19O;a@ awL3;lQO  %n0b 6l)p!v-)+ D268sbe1QrG^!@gBLs2pri&h8V#zy&}?+x7+,OJs_Xk6M/-r;\eFyH~%f'[u>j ;hQK]G Gl ]+ZiF<sP|K`oL= \mx/q rz?_%C!E'7J}WAlP W2z ?%1N J\`[ tP~=B@7q('XVNA0&U2^{{NS^tk)R-^$~\^4<J  !Tna2u87],2q(,!HR~ w>S O8"v.9sdF1$.rzJ:qFAt`6\2 f*C{KT<gTt I MaMVnR>3_dwsB3!*xs<!Q e10e ^-5G.2a;q; L#aE.GC (wG`LE$0x  `p79E_Y!6,{@:g .'1OwRdZQ% "t,jhe@}a#{YMpUB(x G4ZO@lMeaz&L<Q9[_M @[BNmrh:=*`>_W2M#Wi}4}!I/O(7&7C(5Xq{Njs{MQ(Z{|hNA#"%gN0i[lo6DWcm~AF)IW*NqF{~o}<eO[XSjiaww)F*< !$|UE@*rQL*$= c-XSGM**,O&wAhTyln>Eo}}NP~Ad3QAS LKCJ= R?SP\o1~[u ~= Gc\Ui8ZI3Y%`Vy)*i=8QdZb^ Ju7|~h*uVuf*yIU,1x XvomB]A%7^<$'9 'lV4pE5deo0=l244D +^Y[Zr)I,ej6x]mQ3~lO>;VXHXfox6\axo;"% SSM?5D\)r(.z`ER3=@a`"% %Yx#CIRL(+$>v].o|ZAg]\wB|v/1L>ySx%=bb9oUx7/,G-pSv=G=i7uXw\-z_a<=C=LK>+_O2Ey!AX/57n>z cJ?Dcu$8^R8lv'j2@*NGlk8NgDq;LXAy"u6a(O;! hoObF GM,K48M-N'6;_.Ld{>"N.\H z{6r>kxG jj2d ZdFJHH@b'D t(FZ_( I`NK39AcTY@~tY8%pyB}8$ CuWvN9gGp}7bz#RnsxOX5*?6*#c$x1rRd(r)z~5;-4]'Z \BrZ/U Mb=34a jN&XUD3FSKEXJzHT\EB]})f|G~$8 \Af"2z\J-be?ZWu52`VU4! 8xCCKRgY&'2GZXc?ZPh*XO%_Q.Sqz#vwr*h{")cg6n}e].?w^%z{oli: 6O[i>;&&sR vDDbV)z2}$' sKykD8a/BQKNe=Pn#kvg(!D|ibJDy =0 Lx'1z<k B] W);m@;b-"L0tf672FrIL&]k:{_"-4`f 7r;25Ok@=6 ]8'{HH|0.3>7Bh!Z_*TJVe:u^\P CZ/6*Y8xAQ%d96IU)*oL(Es{m}'W+<&3eGT|swNE MA< %k_`~#:AXkor.Wja]bo@)p!j&7-4:V;.}v8Bk4ZG8P>9GFFYV=QkL.)W c5E|8|mY~tX2ZN\45`iX.K9 L8\hf]L&9fUB$>BxJla?^r3?6P}*VI\G|I`a\ (mUEed&ekq^?\DeZb52bW'8sx**,C'g|p2-<BOO('( *y5P=\S YBqpnf1g ^ouf' |}@6,p"n ~0Z9x`HB 9r>Gl,7q)mbiV[O0b  8i@?2+_O!? 8fdzw+lLm[ 'jX zs pC^n0EM=kvGhz)[TG#9T<"1+Zzmm GyM| tc1z tk"*] )1M wweI kK+~5C_ZA{V=F 7VpAXm:"%|TNIM`O.6* \.,,r#FwgtLdSiUtGm'wX!dT4n{;q8&sV8 2+L{QuQ.rz'kFC *dc.j.J )QQ1?@.\%E n>]Ntr lAv6f]hi~ e`<UX_ ?ot0RyR~y(:~*vB4kt#$VmI|Sf^O<<n [a,2I%ERe9/az ky1E<.`6P P2$s4[O*.T~B1ik8oU#X"7q)R]?q&{{dBX'Ul$%(f ;f.ui%Gp\hPb)w=f;H,gE.LoH2*p'*)8+zf4^frI}C(rW{'xE<WGy Z$`#HD)vvxfR/)0C'F3JrtiM@'AJDS%R Ku7r(CN\+n!0os%](3P iz_XXZ_` uE/:uycf;jH#WmNS-'5)/H.G?=|f5v    U(<x.nJRNO)f>kC(oG">0hrxi&aktI&!k[ Wwk8'1Dr4obs(L00:7 =WZ|E: Ex[249&PL^y5fwU~`HBh 13cI%2RSEL _"IrygwHl$$G1ob\$lFX(d4|1 IM]05\7jM0g{x{WuQ}]xE0 /9]O[:YUeURp60/c!6K/>h5o<A1 GgkZnE;/DIHZ0O\ye q"C,naG,\T:?xqj!23+*ignSh  nPUJNh,vAwG/8LQW/}GS>)};&9Ei7NmtLc}<|u5lScd'MrOFS$c4\N0 P5{JPM NXv%l[,-^}WpzHU<Q*8Rj 2RsDDhi@FsTu(hFIU7L9tX4&/0X3lA.McD<RNO^EK?hXE ?A=sh]  k8os;)asDjUYHlR0YGi{wd[>][,agYOFN;{ -MoNU~^Z8LEm`ASMJ:f*3v4h& =OT3X52h&:7 FNP>,Jb{ FLs\{0me$m# _QhA\*eg%O2W[yXO>Lt__!g=Vs&L'-~Bqd_M2$Bxw,w{ SPpDn }H$8>t3A='N[r|eSp/ND82D=0p#{&b|arIb}$&md ,=tQg^VL^hJ%:7)(Ts&B-fWEEj>=h uJVL^q 1}-efATG/_zd2Lse Gr#rk>GU0;!k'D[ik< SG\NM_18@[ _'`_8VC qM FC ?D! {n _[':#_TE;%G{;1;LpeR!?N:x( {CaDhua)-X[c!n/H.g)r]i'1;d`#}FI})hH}}!ICE $xLk!qu8m7g+b)y]0($F&h#8OnxJs33kr-{ackd"*Frq }v2s~0Jb|[j)YYty7v gTa2XLO$mSEB_ bO(dugWd?V COI6 "JIHc, y+z jUi>IYR"nUpk]=^RA5/(SRy-5`uBhl'BL2+O]kW Z_tH/SOtqXm3^.Iv0s/\9UAJ7=zSE<&<v~n7c?, c6i4Eoo?dtyM5JjiUO^o{;%]19I'>M j&#qj(G-}$L>mF!#Mnj`6?K2Q|`lO."N9l%<vZ-<4)D#tL31o'sV%XgN<:*l%C>#P> M(* <TJ>6819?jCa~,}+,aC8H&&y,PB-y'ZA8pF^w6BXO>?p{Q6dEvqc94=a{ow0-6NrM~Lk]_=J D[JJ<8 }v2y>_w";TYu-h"zDTh<[Q4X!MIF Ci23aNv7HMGPOZdlx5>O/{GBUOD=)l|5c|,(T%|:zi{tv>$ r.iS+!4xsw~*}r?X%DwHA&|Us)pj}2@#U"6:8!.H [U;@ XKc[|g1?/=4FZ!.iI!cBa5Oy P_+oMb`/eFex4Cx[cytd<q` xhJ1MY) 2009"oz,8!blzNHW#MC1 C<HZedwz1VFEm W$d"MU0 H-t>Rnl9p>M"W5AwhXr?P CG S'4/Rp|(y>$ 8'r7qA:#, [$ky}*:JP7Zl?1GE.*#`cS } 1t's$@(~Xu-9hNgC<5qCX4Q%>7HNiy68A9V$ 3SUv&/.LIw+PYx|wHV x*p{D\=AV/\/0p&'tE\Wm`9{;) \B<7 ;t%Knd!\&h EU%96 }8k `jtup#2$-3SDNFBQdOn)d|$DZAP Cyh)ARKm }'7;|sV.UGr[Ya~2musQVk ^0MZ}C~t[>byAKJ4Lb? @ /Zodyv0N xA;+}{ 9{Ft[C N2,0 b"m"OP>w|yYZX,6'n(WHEMXfW,G4K;SR}%.a<ph,gfeVY#eB|hL"$Bsiv3$\)*BQGvkc7";,]Eef/g 5bD"TOn9)~ oJTD_`5D#w3S14Zod+vuA@Iq:ar@9i-qg(l`yH*eaN|\n` [dsK\J(P/_> :]E:p"]ch\WpK9XC$=w.Ctc W^sRZ=`'^`"AJ9LiD)"EW}^/$}lPxo2 H48FXv%% -7C2D}nk_4k%KRh }/D^I<m v-E&:e87$_Lf6A RB%@K21RKp#@Q0n6u#{**q*PiOcL|<0:#05,pB,,4FO,=/%J#<!;_E W7pGfl:, C asH$~Fx4ar2n,OK1D:@ q bwolMe#3WMVa?p.XK1a|Yl;&q<$s*\oEcQPAw;JKT (C4AfFH:S>2l _'ZX~G`_<fGGk0!b[,:hpvszF#NLK ]GScvxn\G?h: Y?P&NLg:8.5{Hj#RHA]c6Pb6A!ld_# >cf~*wgN*YLeQQdjbr;DaaGlF~`8-<1TE(I Np oy %D\z{_d|g&GPgFaFA(#"E+,@p:? MVGW< vb#ZM}nk cQ <#;g`fE=D=:Z'}5$7*z?W\sb.$oA?DjP yt^Y(.rDk9"i8)?} @Q>a7_Q1C%J {nE/WS`Y3(N9T gWF%B$}k v=Dj?f~]Y.^t:o5-M8KC7RK4i Dtxsxe,8WQ.YUvr!h9 " h OO6(ZC5<hXnAie`86]D3]P%4k "EU$]xzx9C2 v9(yu;uV7<%* R.*wkN )@g [q!)}E!mq K'%pV=;ul,FN&R2(!aa=A'pcS= !8:/K! "` *//F'0[D _XG.o=/9#Z "$x + {%L7(0\^?hOHV&9=W 'm6?'~ BU-)fk pS \M5=`=. 9nm n#51 #VB$EK.'#_nzo%#wX;e&l!-"]Q5t0UZ 6 } "} g;BE?PG=W^nJB0n)',7#<I675 V!.-;! 00p+gGP Hi 2072 3H"6WKL;*-dKC5 KOmC\<T'2Pd>g2z "WWPU []U  E%% H+PtG^U(>5 <<Z0+" MZ" l aB:v!#(F8 R << 2B59kpr?"@?b4H<WHM 2 ej[lwk a<X Z22hgyO[63FVKAd;TLL^\_$c5c1Br% +   R00B;?bGb9BG a"04?% #lkccjo N\K0%*E!3HCL+."& , ,+ O8(uU0[;zuGRGB6,(=X#6&01/@# E):/)%6:k/F:%>73 ~z Z (: )| = /P?tR"9:%u4JQ4,Z ' 55 U[C5`N-N%?2"/(`+ C&)-*8+ &  ( %D#& -3,3$i F9c5/G?T8/"#?QZ8<LP)#(%"3SI  P H$26 B9f @&%H&=N .sC B73MYB(>! <R!%'^Pl/&rb:fg#8X2(- H@,5195-"0 4 ($?O# (?'; KT6R4 I7B >,"+M&/,w<)BQGYZSDF:M 2p 152DC="=/-2g&`N %=5?(=L:7"V 7(6. W;' &E#GD$C3!#0 D>, $&  ?>)?1!  & ,-57!^Y#  JL@80" !!U X,J 8*SL\4'6(  @# 6    ,   25 #<-(0!0 #% :/+"7$! ?  2 ' ( -A 3!92. A.5  !%&$-' 06>*komi-1.04/komidata/sounds_screenshot.wav0000644000175000001440000004032410075325104020723 0ustar allanusers00000000000000RIFF@WAVEfmt DXdata@  !  (4>?:+d[U^swX.W NB%BTlE NP}x|  fk#4h#K& % )X\^e  8w( * H,=r <` p55~?Q%&2 u&Q^)3,_ qK !;xq &   p %LD*}|&xq]#&,$:Vvc;!`ܲ$ s#))!#85 P!TXݵz $%t  xW۵'j$#WnRAQ q5Y=h? y rH/' I Q bgiJ0  (Oz)> \JZW(O\CEHt  H Q "j5=po)a 4cH g A !FlUm /+n-t q ) ym rhg u l R x#k9Q^F?c `1d HZN)7tyh3h?t R4 *-m5d@P Y^oP`k3 ylT  1n4wRNk@)ah7-N|_.q9H!* "Tc ap%.< CU E<9;{((?,[h,o[BGT0l O/K:{)c 0~ E: 9.>   _-X .f 2 D w.q5L-% )`R U)/ Q`uNTteNb  I\v+ N 7qO+ 7 mhCx@MM n  * !,qU x;_2&k.  <c f)5 ` +datfOh/)hKyP| NUR] ) SR^.P iN$G@A"pu /;0{1AxV s X 6"`5k?@f BzGz~8W[  $qfsXWZ w1$3~d'T I iR#V>CJ R8 c8.c` @ X#[D= 2:x~ 6G ]98QWo8 Op":N! 0 0  *>tW0N }M4)>vI"xyGBr>"(= A?E.BRR >/U~OYy I>\E6}J;C ^9 b by`D ]tS 4fcD- 8d{ v iek j vJ 2< : Nm J & $ moRj`heca}`O]A1fBd~cbYbkbcQԆ4"j4^X_aRcegZ6 JRoǺ0*rO_|asW=khԈwܰ]x <Dq [ 7 A d`tl3=["u$r+`܋ئ\ '-q* ڊ\% MC!!#.#`ȪȄ- 5ŪZSa !&'#gjbdЖѓ ; I1)01)f 4E8v qL&*V &^)'< l,a< n#(-*' iZa ¥f;/;=Z5# ءD(A7C<*8*NeBnМ̈ۦ) ),I( w.j,;D>'(( a r rB bY0t\6 T6A9Va@(Px^c B | IngM7H W & LT #- T}k K NKG2i c  gYP vUp&@ .44SLzV-r\ tOR  J evRi nF&8I:W 0 ' R. B,Ed) 5XcIRj SZ! DK[V \,j n  vRD`C { 1 gEV4cCT Rj`heca}`O]A1fBd~cbYbkbcQԆ4"j4^X_aRcegZ6 JRoǺ0*rO_|asW=khԈwܰ]x <Dq [ 7 A d`tl3=["u$r+`܋ئ\ '-q* ڊ\% MC!!#.#`ȪȄ- 5ŪZSa !&'#gjbdЖѓ ; I1)01)f 4E8v qL&*V &^)'< l,a< n#(-*' iZa ¥f;/;=Z5# ءD(A7C<*8*NeBnМ̈ۦ) ),I( w.j,;D>'(( a r rB bY0t\6 T6A9Va@(Px^c B | IngM7H W & LT #- T}k K NKG2i c  gYP vUp&@ .44SLzV-r\ tOR  J evRi nF&8I:W 0 ' R. B,Ed) 5XcIRj SB $+>= TW s M$   .'RR, | M%2d "j$ G = l G $x;9BB,g" D <?$.Ra M;0\ U- k SFZZ3EA w:N) ZZy_ g u8XluHIu)/NU'A:Q b|ndz=4k=g2K"Xh+?xH$ 8y kO; b  \`eR_sJ@Z#{U[ t3m \eL  -'Q > X zrEOF4 /<'$l$=VyS{V7 kgu#!:JDZRQ:vZl{mhNB[uTSt^mfx52]wI(ifh9 [|" tj (<[ HhyUa Jyh[\yrRwyK:STNrh30AAC 638)x<t#2TnUb|4CHqQ/}3 Q 6=MXh5"fobz( yN!#<(5-H"A%Jtu(klUM3c;c&K$B J`wlr]Ir3"8`(AR-QA8jyo.i\6, W5i][e-sjrymmy/q9v`[:Q,g9Ss`5-  [A. U9#<R 5"KJETg&LK]8Ke& ._A.yZ_~E-xBbS,ajQ<-O\=Q.Z?HWn :2 b*i#^7:<W'-H)=spFA`t&5 T}zTdWtE.s2O:/>U^{ ] WZ-9s~9c=8U#f[#2LD.KyQ Xg.sq>]ngM/cKBE[}Bfxtd<tv3B:#ji|8`xxd:nUQcAZ_Q2vt4GMG8!!   !   komi-1.04/komidata/titles_start2.bmp0000644000175000001440000007706610075325104017754 0ustar allanusers00000000000000BM6~6(0~: : komi-1.04/komidata/titles_quit2.bmp0000644000175000001440000003306610075325104017571 0ustar allanusers00000000000000BM666(`06: : komi-1.04/komidata/sprites_bomber.bmp0000644000175000001440000000606610075325104020160 0ustar allanusers00000000000000BM6 6(  ءءءءءءءءءءkomi-1.04/komidata/sprites_sniperleft.bmp0000644000175000001440000000606610075325104021065 0ustar allanusers00000000000000BM6 6(  mmmmkomi-1.04/komidata/sprites_sniperright.bmp0000644000175000001440000000606610075325104021250 0ustar allanusers00000000000000BM6 6(  mmmmkomi-1.04/komidata/titles_shuffleoff.bmp0000644000175000001440000007706610075325104020664 0ustar allanusers00000000000000BM6~6(0~ komi-1.04/komidata/titles_shuffleoff2.bmp0000644000175000001440000007706610075325104020746 0ustar allanusers00000000000000BM6~6(0~ komi-1.04/komidata/titles_shuffleon.bmp0000644000175000001440000007706610075325104020526 0ustar allanusers00000000000000BM6~6(0~ komi-1.04/komidata/titles_shuffleon2.bmp0000644000175000001440000007706610075325104020610 0ustar allanusers00000000000000BM6~6(0~ komi-1.04/keys.h0000644000175000001440000000111610075325104013763 0ustar allanusers00000000000000/* Keys for Komi. Adjust at will (then recompile). For key-names see: http://sdldoc.csn.ul.ie/sdlkey.php */ // You can use any of these keys to go left... int LeftKey1 = SDLK_LEFT; int LeftKey2 = SDLK_KP4; int LeftKey3 = SDLK_q; // You can use any of these keys to go right... int RightKey1 = SDLK_RIGHT; int RightKey2 = SDLK_KP6; int RightKey3 = SDLK_w; // Extend the tongue... int FireKey1 = SDLK_SPACE; int FireKey2 = SDLK_RETURN; // Utility functions... int PauseKey = SDLK_p; int ScreenshotKey = SDLK_F12; int LevelSkip = SDLK_KP_PLUS; // Only works if cheats enabled. komi-1.04/komi.c0000644000175000001440000034143710105754571013767 0ustar allanusers00000000000000/* Komi... Copyright Allan Crossman, 2004. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You 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 */ // Hmm, so you're reading the code? // This will only show you how terrible a programmer I am. :-/ #include #include #include #include #include #include #include // SDL... #include #include // Bitmask... #include "bitmask.h" // Komi-specific files... #include "declarations.h" // Definitions, globals, etc... #include "prototypes.h" #include "gfx.h" #include "sprites.h" #include "loaders.h" #include "info.h" #include "keys.h" // Edit that file and recompile to change keys... /////////////////////////////////////////////////////////////////////////////////// int main (int argc, char * argv[]) { int n; // Just check here that MAXRECTS has been declared to be big enough (else it might crash in --fastdraw mode) // Note that each sprite uses 2 update-rects - one for it's current position, and one for it's old one. assert(MAXRECTS > (MAX_ENEMIES * 2) + (MAX_COINS * 2) + (MAX_DIAMONDS * 2) + (MAX_ENEMYSHOTS * 2) + (MAX_FRIENDLYSHOTS * 2) + 50); setprefsdir(); // Determine the directory where prefs are saved. for (n = 1; n < argc; n++) { if (strcmp(argv[n], "--delay") == 0 && n < argc - 1) { gotdelayarg = 1; delay = atoi(argv[n + 1]); if (delay < 0 || delay > 50) { delay = DEFAULT_DELAY; gotdelayarg = 0; fprintf(stderr, "Please enter a delay value between 0 and 50.\n"); } } if (strcmp(argv[n], "--resetprefs") == 0) { saveprefs(prefsdir, PREFSNAME); } if (strcmp(argv[n], "--nostars") == 0) { nostarsflag = 1; } if (strcmp(argv[n], "--fullscreen") == 0) { fullscreen = 1; } if (strcmp(argv[n], "--gfxdetails") == 0) { gfxdetails = 1; } if (strcmp(argv[n], "--nosound") == 0 || strcmp(argv[n], "--nosounds") == 0) { nosound = 1; nomusic = 1; } if (strcmp(argv[n], "--nomusic") == 0) { nomusic = 1; } if (strcmp(argv[n], "--fastdraw") == 0) { fastdraw = 1; nostarsflag = 1; } if (strcmp(argv[n], "--hog") == 0) { hog = 1; } if (strcmp(argv[n], "--algorithmic") == 0) { algorithmicenemies = 1; } if (strcmp(argv[n], "--cheats") == 0 || strcmp(argv[n], "--cheat") == 0) { cheats = 1; } if (strcmp(argv[n], "--invincible") == 0) { invincible = 1; } if (strcmp(argv[n], "--help") == 0 || strcmp(argv[n], "-h") == 0 || strcmp(argv[n], "--usage") == 0 || strcmp(argv[n], "-help") == 0 || strcmp(argv[n], "help") == 0) // Accept multiple help commands.... { printhelp(); exit(0); } if (strcmp(argv[n], "--version") == 0 || strcmp(argv[n], "-v") == 0) { printversion(); exit(0); } if (strcmp(argv[n], "--copying") == 0 || strcmp(argv[n], "-v") == 0) { printcopyinfo(); exit(0); } if (strcmp(argv[n], "--path") == 0 && n < argc - 1) { if (strlen(argv[n + 1]) < sizeof(filepath)) // Check for buffer overrun... { sprintf(filepath, "%s", argv[n + 1]); } else { fprintf(stderr, "Directory name given is too long, attempting to use default,\n"); fprintf(stderr, "which is: %s\n", filepath); } if (filepath[strlen(filepath) - 1] != '/') { fprintf(stderr, "Warning: Directory name given did not end with a '/'\n"); fprintf(stderr, "Are you sure you've passed the full pathname?\n"); } } } loadprefs(prefsdir, PREFSNAME); saveprefs(prefsdir, PREFSNAME); // In case of command line arguments needing to be saved. // Or in case of first-run. if (nosound == 0) { if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) { fprintf(stderr, "\nFatal error: Unable to initialize SDL!\n\n"); exit(1); } } else { if (SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "\nFatal error: Unable to initialize SDL!\n\n"); exit(1); } } if (nosound == 0) { if (Mix_OpenAudio(44100, AUDIO_S16, 2, 2048)) { fprintf(stderr, "Unable to open audio. %s\n", SDL_GetError()); nosound = 1; nomusic = 1; } else { loadsounds(); // if (nomusic == 0) // { // playmusic(filepath, "music.mod", -1); // } } } if (fullscreen == 0) { virtue = SDL_SetVideoMode(WIDTH, HEIGHT, 0, SDL_ANYFORMAT); } else { virtue = SDL_SetVideoMode(WIDTH, HEIGHT, 0, SDL_ANYFORMAT | SDL_FULLSCREEN); } if (virtue == NULL) { fprintf(stderr, "\nFatal error: Unable to create virtual screen!\n\n"); exit(1); } setmaintitlebar(); srand((int)time(NULL)); for (n = 0; n < MAXSTARS; n++) { star[n].speed = 0; } loadsprites(); if (gfxdetails) { printgfxdetails(); } menu(); cleanexit(0); return 0; // Will never get here. } /////////////////////////////////////////////////////////////////////////////////// void menu (void) { int highlight_start = 0; int highlight_quit = 0; int highlight_shuffle = 0; drawmenu(highlight_start, highlight_quit, highlight_shuffle); while (1) { keymap.escape = 0; // So we don't respond to escape pressed in game. mousemap.button = 0; // Likewise for the mouse. manageevents(); // Highlight the start button, if necessary... if (abs(mousemap.currentx - STARTBUTTON_X) < start_title.pixelmap->w / 2 && abs(mousemap.currenty - STARTBUTTON_Y) < start_title.pixelmap->h / 2) { if (highlight_start == 0) { highlight_start = 1; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } else { if (highlight_start) { highlight_start = 0; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } // Highlight the quit button, if necessary... if (abs(mousemap.currentx - QUITBUTTON_X) < quit_title.pixelmap->w / 2 && abs(mousemap.currenty - QUITBUTTON_Y) < quit_title.pixelmap->h / 2) { if (highlight_quit == 0) { highlight_quit = 1; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } else { if (highlight_quit) { highlight_quit = 0; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } // Highlight the shuffle control, if necessary... if (abs(mousemap.currentx - SHUFFLETITLE_X) < shuffleon_title.pixelmap->w / 2 && abs(mousemap.currenty - SHUFFLETITLE_Y) < shuffleon_title.pixelmap->h / 2) { if (highlight_shuffle == 0) { highlight_shuffle = 1; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } else { if (highlight_shuffle) { highlight_shuffle = 0; drawmenu(highlight_start, highlight_quit, highlight_shuffle); } } if (keymap.escape) { cleanexit(0); } if (mousemap.button) { if (abs(mousemap.clickx - STARTBUTTON_X) < start_title.pixelmap->w / 2 && abs(mousemap.clicky - STARTBUTTON_Y) < start_title.pixelmap->h / 2) { SDL_ShowCursor(SDL_DISABLE); game(); SDL_ShowCursor(SDL_ENABLE); setmaintitlebar(); drawmenu(highlight_start, highlight_quit, highlight_shuffle); } else if (abs(mousemap.clickx - QUITBUTTON_X) < quit_title.pixelmap->w / 2 && abs(mousemap.clicky - QUITBUTTON_Y) < quit_title.pixelmap->h / 2) { cleanexit(0); } else if (abs(mousemap.clickx - SHUFFLETITLE_X) < shuffleon_title.pixelmap->w / 2 && abs(mousemap.clicky - SHUFFLETITLE_Y) < shuffleon_title.pixelmap->h / 2) { if (shuffle) { shuffle = 0; } else { shuffle = 1; } saveprefs(prefsdir, PREFSNAME); drawmenu(highlight_start, highlight_quit, highlight_shuffle); } else { checkspeedadjust(); } } SDL_Delay(1); } } /////////////////////////////////////////////////////////////////////////////////// void game (void) { int gameoverflag; shufflelevels(); level = 1; lives = START_LIVES; fastretract = 0; score = 0; havecheated = 0; resetmoney = 1; gameoverflag = 0; while (gameoverflag == 0) { switch (playlevel()) { case LEVEL_COMPLETE : level++; resetmoney = 1; break; case DEATH : lives--; fastretract = 0; // Currently the only thing that needs to be reset here. resetmoney = 0; if (lives < 1) { gameoverflag = 1; } if (lives == 1) { givelastlifewarning = 1; } break; case QUIT : gameoverflag = 1; break; default : fprintf(stderr, "Fatal error: playlevel() returned an unexpected value.\n\n"); cleanexit(1); } } if (score > highscore && havecheated == 0 && invincible == 0) { highscore = score; saveprefs(prefsdir, PREFSNAME); } lastscore = score; return; } /////////////////////////////////////////////////////////////////////////////////// int playlevel (void) { int n; int notedtime; int levelstarttime; int havepausedflag = 0; blanklevel(); choosenumbers(); makelevel(); komix = WIDTH / 2; komiy = HEIGHT - (SPRITE_SIZE / 2); tonguelength = 0; tonguespeed = 0; shotsavailable = 0; caughttype = 0; caughtnumber = -1; tick = 0; freeze = 0; rects = 0; keymap.levelskip = 0; keymap.pause = 0; mousemap.button = 0; cls(virtue, 0, 0, 0); SDL_UpdateRect(virtue, 0, 0, 0, 0); updatetitlebar(); if (lives == 1 && givelastlifewarning && fullscreen) { playsound(lastlife_sound); givelastlifewarning = 0; } for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN) { playsound(laserentry_sound); break; } } levelstarttime = SDL_GetTicks(); while(1) { tick++; rnd(); // Pump rnd() every frame for (hopefully) more randomness when it matters. playedshootsound = 0; // shoot_sound can be annoying if played loud due to simultaneous playback of > 1 instance. if (freeze) { freeze--; if (freeze % FREEZE_WARN_INTERVAL == 0 && freeze && freeze <= FREEZE_WARN_INTERVAL * FREEZE_WARNINGS && freeze > 0) { playsound(unfreezewarning_sound); } } if (nostarsflag == 0) { dostars(); } notedtime = SDL_GetTicks(); if (delay > 0) { if (hog) { while (SDL_GetTicks() - notedtime < delay) { ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; // I assume this gets us some NOOPs. } } else { SDL_Delay(delay); } } movesprites(); drawsprites(); if (fastdraw) { SDL_UpdateRects(virtue, rects, updaterect); } else { SDL_UpdateRect(virtue, 0, 0, 0, 0); } rects = 0; if (invincible == 0) { if (playerdeath()) { if (gfxdetails && havepausedflag == 0) // Display FPS if requested at launch. { fprintf(stdout, "%d FPS (%d frames / %d ms)\n", (tick * 1000) / (SDL_GetTicks() - levelstarttime), tick, SDL_GetTicks() - levelstarttime); } for (n = 0; n < 10; n++) // 10 delays of 50 ms, with event checking so user can press escape. { manageevents(); if (keymap.escape) { return QUIT; } SDL_Delay(50); } if (lives == 1) { playsound(gameover_sound); } fadeout(); // fadeout() returns immediately if escape is pressed while it's doing its thing. if (keymap.escape) // In which case, keymap.escape will still be set. { return QUIT; } else { return DEATH; } } } if (leveldone()) { if (gfxdetails && havepausedflag == 0) // Display FPS if requested at launch. { fprintf(stdout, "%d FPS (%d frames / %d ms)\n", (tick * 1000) / (SDL_GetTicks() - levelstarttime), tick, SDL_GetTicks() - levelstarttime); } fadeout(); if (keymap.escape) // See note above. { return QUIT; } else { return LEVEL_COMPLETE; } } manageevents(); if (keymap.escape) { if (gfxdetails && havepausedflag == 0) // Display FPS if requested at launch. { fprintf(stdout, "%d FPS (%d frames / %d ms)\n", (tick * 1000) / (SDL_GetTicks() - levelstarttime), tick, SDL_GetTicks() - levelstarttime); } return QUIT; } if (cheats && keymap.levelskip) { if (gfxdetails && havepausedflag == 0) // Display FPS if requested at launch. { fprintf(stdout, "%d FPS (%d frames / %d ms)\n", (tick * 1000) / (SDL_GetTicks() - levelstarttime), tick, SDL_GetTicks() - levelstarttime); } havecheated = 1; return LEVEL_COMPLETE; } if (keymap.screenshot) { screenshot(virtue, "", "komiscreen.bmp"); keymap.screenshot = 0; } if (keymap.pause) { playsound(pause_sound); havepausedflag = 1; keymap.pause = 0; keymap.left1 = 0; keymap.left2 = 0; keymap.left3 = 0; keymap.right1 = 0; keymap.right2 = 0; keymap.right3 = 0; keymap.fire1 = 0; keymap.fire2 = 0; while ((keymap.pause | keymap.left1 | keymap.left2 | keymap.left3 | keymap.right1 | keymap.right2 | keymap.right3 | keymap.fire1 | keymap.fire2) == 0) { manageevents(); if (keymap.escape) { return QUIT; } if (keymap.screenshot) { screenshot(virtue, "", "komiscreen.bmp"); keymap.screenshot = 0; } SDL_Delay(1); } keymap.pause = 0; } clearsprites(); // Do this last. } } /////////////////////////////////////////////////////////////////////////////////// void movesprites (void) { int n; int i; for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == SKULL) { if (enemy[n].x < komix) { komix -= 1; } else if (enemy[n].x > komix) { komix += 1; } } } if (keymap.left1 || keymap.left2 || keymap.left3) { komix = komix - KOMI_SPEED; } if (keymap.right1 || keymap.right2 || keymap.right3) { komix = komix + KOMI_SPEED; } if (komix < WALL) komix = WALL; if (komix > WIDTH - WALL) komix = WIDTH - WALL; if ((keymap.fire1 || keymap.fire2) && tonguelength == 0) { if (shotsavailable > 0) { addkomishot(); shotsavailable--; keymap.fire1 = 0; keymap.fire2 = 0; } else { tonguespeed = TONGUE_SPEED; } } if (tonguespeed > 0 && keymap.fire1 == 0 && keymap.fire2 == 0) { if (fastretract == 0) { tonguespeed = TONGUE_SPEED * -1; } else { tonguespeed = TONGUE_SPEED * -2; } } tonguelength = tonguelength + tonguespeed; if (tonguelength <= 0) { tonguelength = 0; tonguespeed = 0; } if (tonguelength > komiy - SPRITE_SIZE / 2) { if (fastretract == 0) { tonguespeed = TONGUE_SPEED * -1; } else { tonguespeed = TONGUE_SPEED * -2; } } if (caughttype == 0) { checktonguepickup(); } for (n = 0; n < MAX_COINS; n++) { if (caughttype == COIN && caughtnumber == n) { coin[n].x = caughtoffsetx + komix; coin[n].y = caughtoffsety + komiy - tonguelength; if (coin[n].y > komiy - 10 || tonguelength == 0) { coin[n].exists = 0; addscore(COIN_SCORE); caughttype = 0; caughtnumber = -1; tonguelength = 0; tonguespeed = 0; playsound(eat_sound); } } else { coin[n].x += coin[n].speedx; coin[n].y += coin[n].speedy; if (coin[n].x < WALL) { coin[n].x = WALL; coin[n].speedx = fabs(coin[n].speedx); } if (coin[n].x > WIDTH - WALL) { coin[n].x = WIDTH - WALL; coin[n].speedx = fabs(coin[n].speedx) * -1; } if (coin[n].y < SPRITE_SIZE / 2) { coin[n].y = SPRITE_SIZE / 2; coin[n].speedy = fabs(coin[n].speedy); } if (coin[n].y > lightningy - SPRITE_SIZE / 2) { coin[n].y = lightningy - SPRITE_SIZE / 2; coin[n].speedy = fabs(coin[n].speedy) * -1; } } } for (n = 0; n < MAX_DIAMONDS; n++) { if (caughttype == DIAMOND && caughtnumber == n) { diamond[n].x = caughtoffsetx + komix; diamond[n].y = caughtoffsety + komiy - tonguelength; if (diamond[n].y > komiy - 10 || tonguelength == 0) { diamond[n].exists = 0; addscore(DIAMOND_SCORE); caughttype = 0; caughtnumber = -1; tonguelength = 0; tonguespeed = 0; playsound(eat_sound); } } else { diamond[n].x += diamond[n].speedx; diamond[n].y += diamond[n].speedy; if (diamond[n].x < WALL) { diamond[n].x = WALL; diamond[n].speedx = fabs(diamond[n].speedx); } if (diamond[n].x > WIDTH - WALL) { diamond[n].x = WIDTH - WALL; diamond[n].speedx = fabs(diamond[n].speedx) * -1; } if (diamond[n].y < SPRITE_SIZE / 2) { diamond[n].y = SPRITE_SIZE / 2; diamond[n].speedy = fabs(diamond[n].speedy); } if (diamond[n].y > lightningy - SPRITE_SIZE / 2) { diamond[n].y = lightningy - SPRITE_SIZE / 2; diamond[n].speedy = fabs(diamond[n].speedy) * -1; } } } for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists) { friendlyshot[n].x += friendlyshot[n].speedx; friendlyshot[n].y += friendlyshot[n].speedy; if (friendlyshot[n].x < (SPRITE_SIZE / 2) * -1 || friendlyshot[n].x > WIDTH + (SPRITE_SIZE / 2) || friendlyshot[n].y < (SPRITE_SIZE / 2) * -1 || friendlyshot[n].y > HEIGHT + (SPRITE_SIZE / 2)) { friendlyshot[n].exists = 0; } for (i = 0; i < MAX_ENEMIES; i++) { if (enemy[i].exists && sprite_collision(spritemap[enemy[i].type], enemy[i].x, enemy[i].y, &friendlyshot_sprite, friendlyshot[n].x, friendlyshot[n].y)) { enemy[i].exists = 0; friendlyshot[n].exists = 0; playsound(destructorkill_sound); break; // Don't kill multiple enemies with one shot. } } } } if (goodie.exists) { if (caughttype == POWERUP) { goodie.x = caughtoffsetx + komix; goodie.y = caughtoffsety + komiy - tonguelength; if (goodie.y > komiy - 10 || tonguelength == 0) { goodie.exists = 0; caughttype = 0; caughtnumber = -1; tonguelength = 0; tonguespeed = 0; goodieaction(goodie.type); } } else { goodie.x += goodie.speedx; goodie.y += goodie.speedy; if (goodie.x < SPRITE_SIZE / 2) { goodie.x = SPRITE_SIZE / 2; goodie.speedx = fabs(goodie.speedx); } if (goodie.x > WIDTH - (SPRITE_SIZE / 2)) { goodie.x = WIDTH - (SPRITE_SIZE / 2); goodie.speedx = fabs(goodie.speedx) * -1; } if (goodie.y < SPRITE_SIZE / 2) // Don't change speedy in this case, to allow gradual entry into the screen. { goodie.speedy = fabs(goodie.speedy); } if (goodie.y > lightningy - (SPRITE_SIZE / 2)) { goodie.y = lightningy - (SPRITE_SIZE / 2); goodie.speedy = fabs(goodie.speedy) * -1; } } } if (goodie.exists == 0 && tick < POWERUPCUTOFFTIME) { for (n = 0; n < POWERUPTYPES; n++) { if (rnd() < levelinfo.powerup_prob[n]) { goodie.exists = 1; goodie.type = n; goodie.x = rnd() * WIDTH; goodie.y = 0; if (goodie.x > WIDTH / 2) { goodie.speedx = -2; } else { goodie.speedx = 2; } goodie.speedy = 1; playsound(powerup_sound); break; } } } if (freeze == 0) // Stuff that can be frozen by powerup follows... { if (lightningy >= levelinfo.fastlightningy) { if (tick % levelinfo.fastlightningcheck == 0) { lightningy++; } } else if (tick % lightningcheck == 0) { lightningy++; if (lightningy >= levelinfo.fastlightningy) { playsound(lightningwarning_sound); } } for (n = 0; n < MAX_ENEMYSHOTS; n++) { if (enemyshot[n].exists) { enemyshot[n].x += enemyshot[n].speedx; enemyshot[n].y += enemyshot[n].speedy; if (enemyshot[n].x < (SPRITE_SIZE / 2) * -1 || enemyshot[n].x > WIDTH + (SPRITE_SIZE / 2) || enemyshot[n].y < (SPRITE_SIZE / 2) * -1 || enemyshot[n].y > HEIGHT + (SPRITE_SIZE / 2)) { enemyshot[n].exists = 0; } } } for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists) { switch (enemy[n].type) { case DIVER : movediver(n); break; case SCROLLERLEFT : movescroller(n); break; case SCROLLERRIGHT : movescroller(n); break; case BOUNCER : movebouncer(n); break; case ROAMER : moveroamer(n); break; case BROWNIAN : movebrownian(n); break; case ACCELERATOR : moveaccelerator(n); break; case GUNNER : movegunner(n); break; case ELECTRA : moveelectra(n); break; case LASERGUN : movelasergun(n); break; case SKULL : moveskull(n); break; case DROPPER : movedropper(n); break; case EYEBALL : moveeyeball(n); break; case WRAPBALL : movewrapball(n); break; case BOMBER : movebomber(n); break; case SNIPERLEFT : movesniper(n); break; case SNIPERRIGHT : movesniper(n); break; } } } } return; } /////////////////////////////////////////////////////////////////////////////////// void movescroller (int n) { enemy[n].y = lightningy + levelinfo.scrolleroffset * sign(enemy[n].speedx); enemy[n].x += enemy[n].speedx; if (enemy[n].x > WIDTH + SPRITE_SIZE / 2) { if (lightningy >= levelinfo.fastlightningy) { enemy[n].exists = 0; } else { enemy[n].x = SPRITE_SIZE / -2; } } if (enemy[n].x < SPRITE_SIZE / -2) { if (lightningy >= levelinfo.fastlightningy) { enemy[n].exists = 0; } else { enemy[n].x = WIDTH + SPRITE_SIZE / 2; } } return; } /////////////////////////////////////////////////////////////////////////////////// void movediver (int n) { if (enemy[n].intvar >= 1) // Holds countdown to dive. { enemy[n].intvar = enemy[n].intvar - 1; enemy[n].x += enemy[n].speedx; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } } else { // Either we're in dive, or we've past it and are back at top. if (enemy[n].y >= levelinfo.diverhoverlevel) { enemy[n].y += levelinfo.divespeedy; if (enemy[n].x > komix) { enemy[n].x -= levelinfo.divespeedx; if (enemy[n].x < komix) enemy[n].x = komix; } else if (enemy[n].x < komix) { enemy[n].x += levelinfo.divespeedx; if (enemy[n].x > komix) enemy[n].x = komix; } if (enemy[n].y > HEIGHT + SPRITE_SIZE / 2) { enemy[n].y = (SPRITE_SIZE / 2) * -1; } } else { enemy[n].y += 1; if (enemy[n].y >= levelinfo.diverhoverlevel) { enemy[n].intvar = enemy[n].intvar2; // Reset countdown. Cycle complete. } } } return; } /////////////////////////////////////////////////////////////////////////////////// void movebouncer (int n) { enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].speedy < enemy[n].floatvar) { enemy[n].speedy += 0.02; } if (enemy[n].y > komiy) // Bounce... { enemy[n].y = komiy; enemy[n].speedy = enemy[n].floatvar * -1; } if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void moveroamer (int n) { enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > HEIGHT - (SPRITE_SIZE / 2)) { enemy[n].y = HEIGHT - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movebrownian (int n) { enemy[n].speedx += (rnd() - 0.5) / 3; enemy[n].speedy += (rnd() - 0.5) / 3; if (fabs(enemy[n].speedx) > levelinfo.brownianmaxspeed) { enemy[n].speedx = sign(enemy[n].speedx) * levelinfo.brownianmaxspeed; } if (fabs(enemy[n].speedy) > levelinfo.brownianmaxspeed) { enemy[n].speedy = sign(enemy[n].speedy) * levelinfo.brownianmaxspeed; } enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > lightningy - (SPRITE_SIZE / 2)) { enemy[n].y = lightningy - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void moveaccelerator (int n) { if (enemy[n].y >= komiy - tonguelength) { enemy[n].speedx += (float)sign(komix - enemy[n].x) / (enemy[n].floatvar * 2); } if (fabs(enemy[n].speedx) > enemy[n].floatvar) { enemy[n].speedx = enemy[n].floatvar * sign(enemy[n].speedx); } if (levelinfo.guardianaccels) { enemy[n].y = lightningy + enemy[n].intvar; } enemy[n].x += enemy[n].speedx; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movegunner (int n) { int i; enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > lightningy - (SPRITE_SIZE / 2)) { enemy[n].y = lightningy - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } if (rnd() < levelinfo.gunnershootprob && tick - enemy[n].intvar > GUNNERRELOADTIME) { for (i = 0; i < MAX_ENEMYSHOTS; i++) { if (enemyshot[i].exists == 0) { enemyshot[i].exists = 1; enemyshot[i].x = enemy[n].x; enemyshot[i].y = enemy[n].y; enemyshot[i].speedx = komix - enemy[n].x; enemyshot[i].speedy = komiy - enemy[n].y; if (fabs(enemyshot[i].speedx) > levelinfo.enemyshotbasespeed) { enemyshot[i].speedy = enemyshot[i].speedy / (fabs(enemyshot[i].speedx) / levelinfo.enemyshotbasespeed); enemyshot[i].speedx = enemyshot[i].speedx / (fabs(enemyshot[i].speedx) / levelinfo.enemyshotbasespeed); } if (fabs(enemyshot[i].speedy) > levelinfo.enemyshotbasespeed) { enemyshot[i].speedx = enemyshot[i].speedx / (fabs(enemyshot[i].speedy) / levelinfo.enemyshotbasespeed); enemyshot[i].speedy = enemyshot[i].speedy / (fabs(enemyshot[i].speedy) / levelinfo.enemyshotbasespeed); } if (playedshootsound == 0) { playsound(shoot_sound); playedshootsound = 1; } enemy[n].intvar = tick; break; } } } return; } /////////////////////////////////////////////////////////////////////////////////// void moveelectra (int n) { enemy[n].x += enemy[n].speedx; enemy[n].y = lightningy + levelinfo.electraoffset; if (enemy[n].x < 40) { enemy[n].x = 40; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - 40) { enemy[n].x = WIDTH - 40; enemy[n].speedx = fabs(enemy[n].speedx) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movelasergun (int n) { enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > lightningy - (SPRITE_SIZE / 2)) { enemy[n].y = lightningy - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void moveskull (int n) { enemy[n].x += enemy[n].speedx; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movedropper (int n) { if (enemy[n].speedy > 0) // In the dive already. { enemy[n].y += enemy[n].speedy; if (enemy[n].y > HEIGHT - (SPRITE_SIZE / 2)) { enemy[n].y = HEIGHT - (SPRITE_SIZE / 2); enemy[n].speedy = -1; } } else if (enemy[n].speedy < 0) { enemy[n].y += enemy[n].speedy; if (enemy[n].y < lightningy + levelinfo.dropperhoveroffset) { enemy[n].y = lightningy + levelinfo.dropperhoveroffset; enemy[n].speedy = 0; } } else { enemy[n].y = lightningy + levelinfo.dropperhoveroffset; if (fabs(komix - enemy[n].x) < 10 && enemy[n].y < komiy) { if (enemy[n].intvar) // So he can't dive if he started the level above Komi (intvar initialised as 0). { enemy[n].speedy = levelinfo.dropperspeedy; } } else { enemy[n].intvar = 1; } } return; } /////////////////////////////////////////////////////////////////////////////////// void moveeyeball (int n) { if (tonguelength) { enemy[n].speedx = komix - enemy[n].x; enemy[n].speedy = (komiy - tonguelength) - enemy[n].y; if (fabs(enemy[n].speedx) > levelinfo.enemyshotbasespeed) { enemy[n].speedy = enemy[n].speedy / (fabs(enemy[n].speedx) / enemy[n].floatvar); enemy[n].speedx = enemy[n].speedx / (fabs(enemy[n].speedx) / enemy[n].floatvar); } if (fabs(enemy[n].speedy) > levelinfo.enemyshotbasespeed) { enemy[n].speedx = enemy[n].speedx / (fabs(enemy[n].speedy) / enemy[n].floatvar); enemy[n].speedy = enemy[n].speedy / (fabs(enemy[n].speedy) / enemy[n].floatvar); } } enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > HEIGHT - (SPRITE_SIZE / 2)) { enemy[n].y = HEIGHT - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movewrapball (int n) { if (tonguelength) { enemy[n].speedx = komix - enemy[n].x; enemy[n].speedy = (komiy - tonguelength) - enemy[n].y; if (fabs(enemy[n].speedx) > levelinfo.enemyshotbasespeed) { enemy[n].speedy = enemy[n].speedy / (fabs(enemy[n].speedx) / enemy[n].floatvar); enemy[n].speedx = enemy[n].speedx / (fabs(enemy[n].speedx) / enemy[n].floatvar); } if (fabs(enemy[n].speedy) > levelinfo.enemyshotbasespeed) { enemy[n].speedx = enemy[n].speedx / (fabs(enemy[n].speedy) / enemy[n].floatvar); enemy[n].speedy = enemy[n].speedy / (fabs(enemy[n].speedy) / enemy[n].floatvar); } } enemy[n].x += enemy[n].speedx; enemy[n].y += enemy[n].speedy; if (enemy[n].x > WIDTH + SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / -2; } if (enemy[n].x < SPRITE_SIZE / -2) { enemy[n].x = WIDTH + SPRITE_SIZE / 2; } if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > HEIGHT - (SPRITE_SIZE / 2)) { enemy[n].y = HEIGHT - (SPRITE_SIZE / 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } return; } /////////////////////////////////////////////////////////////////////////////////// void movebomber (int n) { int i; enemy[n].x += enemy[n].speedx; if (enemy[n].x < SPRITE_SIZE / 2) { enemy[n].x = SPRITE_SIZE / 2; enemy[n].speedx = fabs(enemy[n].speedx); } if (enemy[n].x > WIDTH - (SPRITE_SIZE / 2)) { enemy[n].x = WIDTH - (SPRITE_SIZE / 2); enemy[n].speedx = fabs(enemy[n].speedx) * -1; } enemy[n].intvar -= 1; if (enemy[n].intvar == 0) { enemy[n].intvar = enemy[n].intvar2; for (i = 0; i < MAX_ENEMYSHOTS; i++) { if (enemyshot[i].exists == 0) { enemyshot[i].exists = 1; enemyshot[i].x = enemy[n].x; enemyshot[i].y = enemy[n].y; enemyshot[i].speedx = 0; enemyshot[i].speedy = levelinfo.bombspeed; if (playedshootsound == 0) { playsound(shoot_sound); playedshootsound = 1; } break; } } } return; } /////////////////////////////////////////////////////////////////////////////////// void movesniper (int n) { int i; enemy[n].y += enemy[n].speedy; if (enemy[n].y < SPRITE_SIZE / 2) { enemy[n].y = SPRITE_SIZE / 2; enemy[n].speedy = fabs(enemy[n].speedy); } if (enemy[n].y > HEIGHT - (SPRITE_SIZE * 2)) { enemy[n].y = HEIGHT - (SPRITE_SIZE * 2); enemy[n].speedy = fabs(enemy[n].speedy) * -1; } if (tonguelength) { if (komiy - tonguelength < enemy[n].y) { if (enemy[n].intvar == 0) { enemy[n].intvar = 1; for (i = 0; i < MAX_ENEMYSHOTS; i++) { if (enemyshot[i].exists == 0) { enemyshot[i].exists = 1; enemyshot[i].x = enemy[n].x; enemyshot[i].y = enemy[n].y; enemyshot[i].speedx = SNIPERSHOTSPEED; if (enemy[n].type == SNIPERRIGHT) { enemyshot[i].speedx *= -1; } enemyshot[i].speedy = 0; if (playedshootsound == 0) { playsound(shoot_sound); playedshootsound = 1; } break; } } } } } else { // Note: This working correctly is dependent on there always being a tick of tonguelength == 0 enemy[n].intvar = 0; // even when spacebar is continually held down. Thankfully, this is the case. } return; } /////////////////////////////////////////////////////////////////////////////////// void drawsprites (void) /* everything drawn here needs to be cleared at clearsprites() */ { int n; // Electricity... doelectricity(); // Skull pull... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == SKULL) { drawskullpull(0, n); } } // Draw pre-laser... (and play the sound if necessary - this seems the best place to play the sound) for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN && (tick % enemy[n].intvar) >= (enemy[n].intvar - LASERWARNTIME)) { frect(virtue, 0, enemy[n].y - (LASERWIDTH / 2), WIDTH, enemy[n].y + (LASERWIDTH / 2), WARNLASER_R, WARNLASER_G, WARNLASER_B); if (tick % enemy[n].intvar == enemy[n].intvar - LASERWARNTIME) { playsound(laserpowerup_sound); } } } // Draw laser... (and play the sound if necessary - this seems the best place to play the sound) for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN && tick % enemy[n].intvar < LASERDURATION && tick >= enemy[n].intvar) { frect(virtue, 0, enemy[n].y - (LASERWIDTH / 2), WIDTH, enemy[n].y + (LASERWIDTH / 2), LASER_R, LASER_G, LASER_B); if (tick % enemy[n].intvar == 0) { playsound(laser_sound); } } } // Electra rays... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == ELECTRA && enemy[n].intvar > n && enemy[enemy[n].intvar].exists) { drawelectricity(enemy[n].x, enemy[n].y, enemy[enemy[n].intvar].x, YES); } } // Draw tongue... if (tonguelength) { if (fastretract) { frect(virtue, (komix - TONGUE_WIDTH / 2), komiy - tonguelength - 1, komix + (TONGUE_WIDTH / 2), komiy, 0, 0, 0); frect(virtue, (komix - TONGUE_WIDTH / 2) + 1, komiy - tonguelength, (komix + TONGUE_WIDTH / 2) - 1, komiy, TONGUE_FAST_R, TONGUE_FAST_G, TONGUE_FAST_B); drawsprite(&fasttip_sprite, virtue, komix, komiy - tonguelength); } else { frect(virtue, (komix - TONGUE_WIDTH / 2), komiy - tonguelength - 1, komix + (TONGUE_WIDTH / 2), komiy, 0, 0, 0); frect(virtue, (komix - TONGUE_WIDTH / 2) + 1, komiy - tonguelength, (komix + TONGUE_WIDTH / 2) - 1, komiy, TONGUE_R, TONGUE_G, TONGUE_B); drawsprite(&tip_sprite, virtue, komix, komiy - tonguelength); } } // Draw Coins... for (n = 0; n < MAX_COINS; n++) { if (coin[n].exists) { drawsprite(&coin_sprite, virtue, coin[n].x, coin[n].y); } } // Draw Diamonds... for (n = 0; n < MAX_DIAMONDS; n++) { if (diamond[n].exists) { drawsprite(&diamond_sprite, virtue, diamond[n].x, diamond[n].y); } } // Draw Powerup... if (goodie.exists) { drawsprite(powerupspritemap[goodie.type], virtue, goodie.x, goodie.y); } // Draw Friendly Shots... for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists) { drawsprite(&friendlyshot_sprite, virtue, friendlyshot[n].x, friendlyshot[n].y); } } // Draw Komi... if (lightningdeath() == 0) { if (shotsavailable > 0) { drawsprite(&shooterkomi_sprite, virtue, komix, komiy); } else { drawsprite(&komi_sprite, virtue, komix, komiy); } } else { drawsprite(&electrickomi_sprite, virtue, komix, komiy); } // Draw Enemy Shots... for (n = 0; n < MAX_ENEMYSHOTS; n++) { if (enemyshot[n].exists) { drawsprite(&enemyshot_sprite, virtue, enemyshot[n].x, enemyshot[n].y); } } // Draw enemies... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists) { drawsprite(spritemap[enemy[n].type], virtue, enemy[n].x, enemy[n].y); } } // Draw generators... drawsprite(&generator_sprite, virtue, GEN_X, lightningy); drawsprite(&generator_sprite, virtue, WIDTH - GEN_X, lightningy); return; } /////////////////////////////////////////////////////////////////////////////////// void clearsprites (void) { int n; // Clear pre-laser for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN && (tick % enemy[n].intvar) >= (enemy[n].intvar - LASERWARNTIME)) { frect(virtue, 0, enemy[n].y - (LASERWIDTH / 2), WIDTH, enemy[n].y + (LASERWIDTH / 2), 0, 0, 0); } } // Clear Skull pull... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == SKULL) { drawskullpull(1, n); } } // Clear laser... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN && tick % enemy[n].intvar < LASERDURATION && tick >= enemy[n].intvar) { frect(virtue, 0, enemy[n].y - (LASERWIDTH / 2), WIDTH, enemy[n].y + (LASERWIDTH / 2), 0, 0, 0); } } // Clear tongue... if (tonguelength) { frect(virtue, (komix - TONGUE_WIDTH / 2), komiy - tonguelength, (komix + TONGUE_WIDTH / 2), komiy, 0, 0, 0); clearsprite(&tip_sprite, virtue, komix, komiy - tonguelength); } // Clear lightning... frect(virtue, 0, (lightningy - LIGHTNINGVARIANCE) - 1, WIDTH, (lightningy + LIGHTNINGVARIANCE) + 1, 0, 0, 0); clearsprite(&generator_sprite, virtue, GEN_X, lightningy); clearsprite(&generator_sprite, virtue, WIDTH - GEN_X, lightningy); for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == ELECTRA && enemy[enemy[n].intvar].exists && enemy[n].x < enemy[enemy[n].intvar].x) { frect(virtue, enemy[n].x - (SPRITE_SIZE / 2), (enemy[n].y - LIGHTNINGVARIANCE) - 1, enemy[enemy[n].intvar].x + (SPRITE_SIZE / 2), enemy[enemy[n].intvar].y + LIGHTNINGVARIANCE + 1, 0, 0, 0); } } // Clear Komi... if (lightningdeath() == 0) { if (shotsavailable > 0) { clearsprite(&shooterkomi_sprite, virtue, komix, komiy); } else { clearsprite(&komi_sprite, virtue, komix, komiy); } } else { clearsprite(&electrickomi_sprite, virtue, komix, komiy); } // Clear Coins... for (n = 0; n < MAX_COINS; n++) { if (coin[n].exists) { clearsprite(&coin_sprite, virtue, coin[n].x, coin[n].y); } } // Clear Diamonds... for (n = 0; n < MAX_DIAMONDS; n++) { if (diamond[n].exists) { clearsprite(&diamond_sprite, virtue, diamond[n].x, diamond[n].y); } } // Clear Powerup... if (goodie.exists) { clearsprite(powerupspritemap[goodie.type], virtue, goodie.x, goodie.y); } // Clear Enemy Shots... for (n = 0; n < MAX_ENEMYSHOTS; n++) { if (enemyshot[n].exists) { clearsprite(&enemyshot_sprite, virtue, enemyshot[n].x, enemyshot[n].y); } } // Clear Friendly Shots... for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists) { clearsprite(&friendlyshot_sprite, virtue, friendlyshot[n].x, friendlyshot[n].y); } } // Clear enemies... for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists) { clearsprite(spritemap[enemy[n].type], virtue, enemy[n].x, enemy[n].y); } } return; } /////////////////////////////////////////////////////////////////////////////////// void checktonguepickup (void) { int n; for (n = 0; n < MAX_COINS; n++) { if (coin[n].exists) { if (sprite_collision(&coin_sprite, coin[n].x, coin[n].y, &pickupmask_sprite, komix, komiy - tonguelength)) { caughttype = COIN; caughtnumber = n; caughtoffsetx = coin[n].x - komix; caughtoffsety = coin[n].y - (komiy - tonguelength); playsound(stick_sound); if (fastretract == 0) { tonguespeed = TONGUE_SPEED * -1; } else { tonguespeed = TONGUE_SPEED * -2; } return; } } } for (n = 0; n < MAX_DIAMONDS; n++) { if (diamond[n].exists) { if (sprite_collision(&diamond_sprite, diamond[n].x, diamond[n].y, &pickupmask_sprite, komix, komiy - tonguelength)) { caughttype = DIAMOND; caughtnumber = n; caughtoffsetx = diamond[n].x - komix; caughtoffsety = diamond[n].y - (komiy - tonguelength); playsound(stick_sound); if (fastretract == 0) { tonguespeed = TONGUE_SPEED * -1; } else { tonguespeed = TONGUE_SPEED * -2; } return; } } } if (goodie.exists) { if (sprite_collision(powerupspritemap[goodie.type], goodie.x, goodie.y, &pickupmask_sprite, komix, komiy - tonguelength)) { caughttype = POWERUP; caughtnumber = 0; caughtoffsetx = goodie.x - komix; caughtoffsety = goodie.y - (komiy - tonguelength); playsound(stick_sound); if (fastretract == 0) { tonguespeed = TONGUE_SPEED * -1; } else { tonguespeed = TONGUE_SPEED * -2; } return; } } return; } /////////////////////////////////////////////////////////////////////////////////// void blanklevel (void) { int n; // Anything that can be set by choosenumbers() needs to be set to a default value here. // Also clear all objects (with the exception of coins + diamonds if this isn't a new level). lightningcheck = LIGHTNINGCHECK_DEFAULT; lightningy = START_LIGHTNING_Y; levelinfo.fastlightningy = DEFAULT_FASTLIGHTNINGY; levelinfo.fastlightningcheck = FASTLIGHTNINGCHECK_DEFAULT; if (resetmoney) { levelinfo.coins = 0; for (n = 0; n < MAX_COINS; n++) { coin[n].exists = 0; } levelinfo.diamonds = 0; levelinfo.topdiamonds = 1; for (n = 0; n < MAX_DIAMONDS; n++) { diamond[n].exists = 0; } } goodie.exists = 0; for (n = 0; n < MAX_ENEMYSHOTS; n++) { enemyshot[n].exists = 0; } for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { friendlyshot[n].exists = 0; } for (n = 0; n < ENEMYTYPES; n++) { levelinfo.enemycount[n] = 0; } for (n = 0; n < MAX_ENEMIES; n++) { enemy[n].exists = 0; } levelinfo.scrollerspeedx = 1; levelinfo.scrolleroffset = SPRITE_SIZE; levelinfo.diverhoverlevel = SPRITE_SIZE + (SPRITE_SIZE / 4); levelinfo.divespeedy = DIVE_SPEEDY_DEFAULT; levelinfo.divespeedx = DIVE_SPEEDX_DEFAULT; levelinfo.bomberhoverlevel = (SPRITE_SIZE * 2) + (SPRITE_SIZE / 4); levelinfo.bombspeed = BOMB_SPEED_DEFAULT; levelinfo.roamerminspeed = ROAMER_MIN_SPEED_DEFAULT; levelinfo.roamermaxspeed = ROAMER_MAX_SPEED_DEFAULT; levelinfo.brownianmaxspeed = BROWNIAN_MAX_SPEED_DEFAULT; levelinfo.guardianaccels = 0; levelinfo.gunnershootprob = GUNNER_SHOOT_PROB_DEFAULT; levelinfo.enemyshotbasespeed = ENEMY_SHOT_SPEED_DEFAULT; levelinfo.electrasflag = 0; levelinfo.electraoffset = ELECTRA_OFFSET_DEFAULT; levelinfo.snipersflag = 0; levelinfo.dropperhoveroffset = SPRITE_SIZE; levelinfo.dropperspeedy = DROPPER_SPEEDY_DEFAULT; for (n = 0; n < POWERUPTYPES; n++) { levelinfo.powerup_prob[n] = BASEPOWERUPPROB; } return; } /////////////////////////////////////////////////////////////////////////////////// void choosenumbers (void) { int coins; // Local variables which will only be copied to the globals int diamonds; // if resetmoney is flagged (due to this being a new level). int pretendlevel; // Used for shuffled levels; we pretend we're on this level. if (shuffle == 0 || level > DEFINEDLEVELS) { pretendlevel = level; } else { pretendlevel = shuffledlevels[level - 1]; } // Set coin/diamond default numbers, may be over-ridden in a moment. // The values are not yet copied to the relevant globals (and might remain uncopied). if (pretendlevel > DEFINEDLEVELS && algorithmicenemies == 0) // If past greatest defined level, generate less money. { // Unless we're running in "algorithmic" mode, in which coins = ((pretendlevel - DEFINEDLEVELS) / 2.5) + 2; // case defined levels are irrelevant. diamonds = ((pretendlevel - DEFINEDLEVELS) % 2) + 1; } else { coins = (pretendlevel / 2.5) + 2; diamonds = (pretendlevel % 2) + 1; } if (algorithmicenemies == 0) { switch (pretendlevel) { case 1 : levelinfo.enemycount[BOUNCER] = 1; levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.enemycount[DROPPER] = 2; levelinfo.enemycount[BOMBER] = 1; levelinfo.roamermaxspeed = 2; levelinfo.topdiamonds = 0; diamonds = 1; coins = 2; break; case 2 : levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.enemycount[SCROLLERRIGHT] = 1; levelinfo.enemycount[BOUNCER] = 1; levelinfo.enemycount[ROAMER] = 1; levelinfo.enemycount[GUNNER] = 1; diamonds = 2; coins = 2; break; case 3 : levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[ROAMER] = 1; levelinfo.enemycount[DIVER] = 1; levelinfo.enemycount[LASERGUN] = 1; break; case 4 : levelinfo.enemycount[SCROLLERLEFT] = 2; levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[BROWNIAN] = 1; levelinfo.enemycount[BOUNCER] = 1; levelinfo.enemycount[EYEBALL] = 1; break; case 5 : levelinfo.electrasflag = 1; levelinfo.enemycount[DIVER] = 2; levelinfo.enemycount[DROPPER] = 3; break; case 6 : levelinfo.enemycount[SCROLLERLEFT] = 2; levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[LASERGUN] = 1; levelinfo.enemycount[BROWNIAN] = 3; levelinfo.enemycount[BOMBER] = 1; break; case 7 : levelinfo.enemycount[ROAMER] = 7; levelinfo.enemycount[DIVER] = 1; levelinfo.roamermaxspeed = 3; coins = 6; diamonds = 2; levelinfo.topdiamonds = 0; break; case 8 : levelinfo.enemycount[ACCELERATOR] = 3; levelinfo.enemycount[BROWNIAN] = 2; levelinfo.enemycount[BOUNCER] = 2; coins = 0; diamonds = 3; break; case 9 : levelinfo.enemycount[GUNNER] = 2; levelinfo.enemycount[DIVER] = 4; levelinfo.topdiamonds = 0; coins = 6; diamonds = 2; break; case 10 : levelinfo.enemycount[DROPPER] = 8; levelinfo.enemycount[GUNNER] = 1; levelinfo.enemycount[ROAMER] = 1; levelinfo.gunnershootprob = GUNNER_SHOOT_PROB_DEFAULT * 0.6; coins = 4; diamonds = 2; lightningcheck = 60; break; case 11 : levelinfo.enemycount[BOMBER] = 7; levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[ROAMER] = 2; levelinfo.roamermaxspeed = 2; // Mostly for the Bombers, which also use this value. coins = 6; diamonds = 1; break; case 12 : levelinfo.electrasflag = 1; levelinfo.enemycount[SCROLLERRIGHT] = 1; levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.enemycount[DIVER] = 1; levelinfo.enemycount[ROAMER] = 1; levelinfo.enemycount[BROWNIAN] = 1; levelinfo.enemycount[LASERGUN] = 1; levelinfo.enemycount[SKULL] = 1; levelinfo.enemycount[GUNNER] = 1; levelinfo.guardianaccels = 1; levelinfo.electraoffset = 0; lightningcheck = 80; coins = 5; diamonds = 1; break; case 13 : levelinfo.enemycount[DIVER] = 9; levelinfo.enemycount[BOUNCER] = 1; levelinfo.topdiamonds = 0; coins = 3; diamonds = 2; break; case 14 : levelinfo.enemycount[DROPPER] = 4; levelinfo.enemycount[GUNNER] = 3; levelinfo.gunnershootprob = 0.005; coins = 4; diamonds = 2; break; case 15 : levelinfo.enemycount[EYEBALL] = 2; levelinfo.enemycount[WRAPBALL] = 1; levelinfo.enemycount[GUNNER] = 1; coins = 3; diamonds = 4; lightningcheck = 100; break; case 16 : levelinfo.enemycount[DIVER] = 1; levelinfo.enemycount[SKULL] = 1; levelinfo.enemycount[BROWNIAN] = 2; levelinfo.enemycount[ROAMER] = 2; levelinfo.snipersflag = 1; coins = 4; diamonds = 3; break; case 17 : levelinfo.enemycount[GUNNER] = 1; levelinfo.enemycount[BOMBER] = 1; levelinfo.enemycount[ACCELERATOR] = 2; levelinfo.enemycount[ROAMER] = 2; levelinfo.guardianaccels = 1; coins = 7; diamonds = 1; break; case 18 : levelinfo.enemycount[SKULL] = 1; levelinfo.enemycount[LASERGUN] = 4; levelinfo.enemycount[GUNNER] = 2; levelinfo.enemycount[ACCELERATOR] = 1; levelinfo.guardianaccels = 1; levelinfo.gunnershootprob = 0.005; break; case 19 : levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.enemycount[SCROLLERRIGHT] = 1; levelinfo.enemycount[EYEBALL] = 1; levelinfo.enemycount[WRAPBALL] = 1; levelinfo.snipersflag = 1; lightningcheck = 100000000; coins = 6; diamonds = 2; break; case 20 : levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[DROPPER] = 3; levelinfo.enemycount[BOUNCER] = 1; levelinfo.enemycount[ROAMER] = 2; levelinfo.enemycount[ACCELERATOR] = 1; levelinfo.enemycount[EYEBALL] = 1; coins = 6; diamonds = 2; levelinfo.topdiamonds = 1; lightningcheck = 100; break; case 21 : levelinfo.enemycount[DIVER] = 5; levelinfo.enemycount[BROWNIAN] = 2; levelinfo.enemycount[ROAMER] = 1; levelinfo.enemycount[SCROLLERRIGHT] = 3; levelinfo.electrasflag = 1; coins = 5; diamonds = 3; levelinfo.topdiamonds = 0; break; case 22 : levelinfo.enemycount[DROPPER] = 5; levelinfo.enemycount[EYEBALL] = 1; levelinfo.enemycount[WRAPBALL] = 1; lightningcheck = 100000000; coins = 6; diamonds = 3; break; case 23 : levelinfo.enemycount[GUNNER] = 6; coins = 0; diamonds = 1; break; case 24 : levelinfo.enemycount[BOUNCER] = 3; levelinfo.enemycount[ROAMER] = 6; levelinfo.enemycount[BROWNIAN] = 6; levelinfo.enemycount[DIVER] = 1; levelinfo.enemycount[SCROLLERLEFT] = 1; levelinfo.powerup_prob[SHOOTPOWER] = 1; lightningcheck = 100000000; coins = 9; diamonds = 2; break; case 25 : levelinfo.enemycount[GUNNER] = 3; levelinfo.enemycount[SCROLLERRIGHT] = 2; lightningcheck = 100000000; levelinfo.topdiamonds = 0; levelinfo.roamermaxspeed = 1.5; levelinfo.roamerminspeed = 3; coins = 3; diamonds = 4; break; case 26 : levelinfo.enemycount[SCROLLERLEFT] = 2; levelinfo.enemycount[DROPPER] = 4; levelinfo.enemycount[ROAMER] = 5; levelinfo.enemycount[SKULL] = 1; lightningcheck = 100; coins = 7; diamonds = 3; break; case 27 : levelinfo.enemycount[ACCELERATOR] = 4; levelinfo.enemycount[BOUNCER] = 1; levelinfo.enemycount[GUNNER] = 1; coins = 4; diamonds = 2; levelinfo.topdiamonds = 0; levelinfo.guardianaccels = 1; break; case 28 : levelinfo.enemycount[BOUNCER] = 2; levelinfo.enemycount[GUNNER] = 1; levelinfo.enemycount[BOMBER] = 1; levelinfo.enemycount[SCROLLERLEFT] = 2; levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[ROAMER] = 3; coins = 5; diamonds = 1; break; case 29 : levelinfo.enemycount[BOMBER] = 12; levelinfo.enemycount[BOUNCER] = 4; levelinfo.topdiamonds = 0; coins = 6; diamonds = 4; break; case 30 : // Remember to increase DEFINEDLEVELS in declarations.h if we go past this. lightningcheck = 2; levelinfo.fastlightningy = START_LIGHTNING_Y + 10; levelinfo.fastlightningcheck = 1; levelinfo.powerup_prob[EXTRALIFE] = 1; coins = 0; diamonds = 1; break; default : algorithmicenemynumbers(pretendlevel - DEFINEDLEVELS); // Start at algorithmic level 1 once completed the defined levels. break; } } else { algorithmicenemynumbers(pretendlevel); } if (resetmoney) { levelinfo.coins = coins; levelinfo.diamonds = diamonds; } return; } /////////////////////////////////////////////////////////////////////////////////// void algorithmicenemynumbers (int thislevel) // Set enemy numbers algorithmically. Only called if numbers not predefined above. { assert(thislevel > 0); if (thislevel % 5 == 0) levelinfo.electrasflag = 1; if (levelinfo.electrasflag) { levelinfo.enemycount[SCROLLERRIGHT] = 3; } else { levelinfo.enemycount[SCROLLERRIGHT] = 2; levelinfo.enemycount[SCROLLERLEFT] = 2; } if (thislevel % 2 == 1 && thislevel >= 14) { levelinfo.enemycount[ACCELERATOR] = 2; if (thislevel % 4 == 1) { levelinfo.guardianaccels = 1; levelinfo.enemycount[SCROLLERRIGHT] = 0; levelinfo.enemycount[SCROLLERLEFT] = 0; } } if (thislevel % 2 == 0) { levelinfo.enemycount[BROWNIAN] = thislevel / 9; if (levelinfo.enemycount[BROWNIAN] > 12) levelinfo.enemycount[BROWNIAN] = 12; } levelinfo.enemycount[ROAMER] = ((thislevel - 2) / 9) + 1 - levelinfo.enemycount[BROWNIAN]; if (levelinfo.enemycount[ROAMER] < 0) levelinfo.enemycount[ROAMER] = 0; if (levelinfo.enemycount[ROAMER] > 12) levelinfo.enemycount[ROAMER] = 12; if (thislevel % 3 == 0) levelinfo.enemycount[LASERGUN] = 1; if (thislevel % 7 == 0) levelinfo.enemycount[SKULL] = 1; if (thislevel % 4 == 0) levelinfo.enemycount[DIVER] = thislevel / 4; if (levelinfo.enemycount[DIVER] > 5) levelinfo.enemycount[DIVER] = 5; if (thislevel % 4 == 1) levelinfo.enemycount[GUNNER] = 2; if (thislevel % 5 == 4) levelinfo.enemycount[BOUNCER] = (thislevel / 10) + 1; if (thislevel % 3 == 1 || thislevel % 7 == 1) levelinfo.enemycount[EYEBALL] = 1; if (thislevel % 8 == 3) levelinfo.enemycount[DROPPER] = 3; if (thislevel % 7 == 1) levelinfo.snipersflag = 1; if (thislevel % 4 == 2) { levelinfo.enemycount[BOMBER] = thislevel / 3; if (levelinfo.enemycount[BOMBER] > 5) levelinfo.enemycount[BOMBER] = 5; } else if (thislevel % 7 == 2) { levelinfo.enemycount[BOMBER] = 1; } if (thislevel > 10) levelinfo.topdiamonds = 0; return; } /////////////////////////////////////////////////////////////////////////////////// void makelevel (void) // Set the various objects into existence. /* The various enemies use the 2 intvar variables and the floatvar variable for different things. Here's the list... DROPPER: Uses intvar as a flag for whether it's allowed to fall. Set to zero so it can't fall if Komi is underneath it at level start. Gets set to one as soon as Komi is not underneath it. DIVER: Uses intvar as its countdown to diving, and resets it to the value in intvar2 when the dive is complete. BOUNCER: Uses floatvar, which stores its maximum vertical speed. ACCELERATOR: Uses floatvar for its maximum speed. Uses intvar for its offset from lightning, if in Guardian mode. GUNNER: Uses intvar to store tick (frame) it last fired in. Used so that there's a delay between shots. ELECTRA: Uses intvar to store the enemy-number of its target Electra. LASERGUN: Uses intvar to store what tick it should fire its laser. EYEBALL / WRAPBALL: Uses floatvar to store it's maximum speed. BOMBER: Uses intvar for countdown to shot, and intvar2 for what to reset count to afterwards. SNIPER: Uses intvar for whether it has already fired a shot since the tongue started its trip. */ { int n; int t; float spacing; for (n = 0; n < levelinfo.coins && n < MAX_COINS; n++) { if (resetmoney) { coin[n].exists = 1; } coin[n].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; coin[n].y = (rnd() * (START_LIGHTNING_Y - (SPRITE_SIZE * 2))) + SPRITE_SIZE; coin[n].speedx = rnd() * 5 - 2.5; if (fabs(coin[n].speedx) < 0.5) coin[n].speedx = sign(coin[n].speedx) * 0.5; coin[n].speedy = rnd() * 6 - 3; if (fabs(coin[n].speedy) < 0.5) coin[n].speedy = sign(coin[n].speedy) * 0.5; } for (n = 0; n < levelinfo.diamonds && n < MAX_DIAMONDS; n++) { if (resetmoney) { diamond[n].exists = 1; } diamond[n].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; diamond[n].speedx = rnd() * 5 - 2.5; if (fabs(diamond[n].speedx) < 0.5) diamond[n].speedx = sign(diamond[n].speedx) * 0.5; if (levelinfo.topdiamonds == 0) { diamond[n].y = (rnd() * (START_LIGHTNING_Y - (SPRITE_SIZE * 2))) + SPRITE_SIZE; diamond[n].speedy = rnd() * 6 - 3; if (fabs(diamond[n].speedy) < 0.5) diamond[n].speedy = sign(diamond[n].speedy) * 0.5; } else { diamond[n].y = SPRITE_SIZE / 2; diamond[n].speedy = 0; } } // Make the enemies... // The second for loop in each case is just an easy (but rather inefficient) way to locate the first vacant enemy structure. for (n = 0; n < levelinfo.enemycount[SCROLLERLEFT]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = SCROLLERLEFT; spacing = (float)(WIDTH + SPRITE_SIZE) / levelinfo.enemycount[SCROLLERLEFT]; enemy[t].x = ((spacing / 2) + (n * spacing)) - SPRITE_SIZE / 2; enemy[t].y = lightningy - levelinfo.scrolleroffset; enemy[t].speedx = levelinfo.scrollerspeedx * -1; enemy[t].speedy = 0; break; } } } for (n = 0; n < levelinfo.enemycount[SCROLLERRIGHT]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = SCROLLERRIGHT; spacing = (float)(WIDTH + SPRITE_SIZE) / levelinfo.enemycount[SCROLLERRIGHT]; enemy[t].x = ((spacing / 2) + (n * spacing)) - SPRITE_SIZE / 2; enemy[t].y = lightningy + levelinfo.scrolleroffset; enemy[t].speedx = levelinfo.scrollerspeedx; enemy[t].speedy = 0; break; } } } for (n = 0; n < levelinfo.enemycount[DROPPER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = DROPPER; spacing = (float)(WIDTH + SPRITE_SIZE) / levelinfo.enemycount[DROPPER]; enemy[t].x = ((spacing / 2) + (n * spacing)) - SPRITE_SIZE / 2; enemy[t].y = lightningy + levelinfo.dropperhoveroffset; enemy[t].speedx = levelinfo.scrollerspeedx; enemy[t].speedy = 0; enemy[t].intvar = 0; break; } } } for (n = 0; n < levelinfo.enemycount[DIVER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = DIVER; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = levelinfo.diverhoverlevel; enemy[t].speedx = sign(rnd() - 0.5) * 2; if (enemy[t].speedx == 0) enemy[t].speedx = 2; enemy[t].speedy = 0; enemy[t].intvar = 150 + (n * 40); enemy[t].intvar2 = enemy[t].intvar; break; } } } for (n = 0; n < levelinfo.enemycount[BOMBER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = BOMBER; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = levelinfo.bomberhoverlevel; enemy[t].speedx = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedx *= -1; enemy[t].speedy = 0; enemy[t].intvar = 80 + (n * 40); enemy[t].intvar2 = enemy[t].intvar; break; } } } for (n = 0; n < levelinfo.enemycount[BOUNCER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = BOUNCER; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = sign(rnd() - 0.5); if (enemy[t].speedx == 0) enemy[t].speedx = 1; enemy[t].floatvar = 2; enemy[t].speedy = enemy[t].floatvar; break; } } } for (n = 0; n < levelinfo.enemycount[ROAMER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = ROAMER; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedx *= -1; enemy[t].speedy = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedy *= -1; break; } } } for (n = 0; n < levelinfo.enemycount[BROWNIAN]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = BROWNIAN; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = 0; enemy[t].speedy = 0; break; } } } for (n = 0; n < levelinfo.enemycount[ACCELERATOR]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = ACCELERATOR; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; if (levelinfo.guardianaccels) { enemy[t].y = lightningy + ((n % 2) - 0.5) * SPRITE_SIZE * 2; } else { enemy[t].y = lightningy - ((n + 1) * SPRITE_SIZE); } enemy[t].speedx = 0; enemy[t].speedy = 0; enemy[t].floatvar = n + 2; if (levelinfo.guardianaccels) { enemy[t].intvar = lightningy - enemy[t].y; // Offset from lightning. } break; } } } for (n = 0; n < levelinfo.enemycount[GUNNER]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = GUNNER; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedx *= -1; enemy[t].speedy = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedy *= -1; enemy[t].intvar = 0; break; } } } if (levelinfo.electrasflag) { for (t = 0; t < MAX_ENEMIES - 1; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = ELECTRA; enemy[t].x = 40; enemy[t].y = lightningy + levelinfo.electraoffset; enemy[t].speedx = 1; enemy[t].speedy = 0; enemy[t].intvar = t + 1; assert(enemy[t + 1].exists == 0); enemy[t + 1].exists = 1; enemy[t + 1].type = ELECTRA; enemy[t + 1].x = 40; enemy[t + 1].y = lightningy + levelinfo.electraoffset; enemy[t + 1].speedx = 1.5; enemy[t + 1].speedy = 0; enemy[t + 1].intvar = t; levelinfo.enemycount[ELECTRA] = 2; break; } } } if (levelinfo.snipersflag) { for (t = 0; t < MAX_ENEMIES - 1; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = SNIPERLEFT; enemy[t].x = SPRITE_SIZE / 2; enemy[t].y = HEIGHT - (SPRITE_SIZE * 2); enemy[t].speedx = 0; enemy[t].speedy = -2; enemy[t].intvar = 0; assert(enemy[t + 1].exists == 0); enemy[t + 1].exists = 1; enemy[t + 1].type = SNIPERRIGHT; enemy[t + 1].x = WIDTH - (SPRITE_SIZE / 2); enemy[t + 1].y = HEIGHT - (SPRITE_SIZE * 2); enemy[t + 1].speedx = 0; enemy[t + 1].speedy = -2; enemy[t + 1].intvar = 0; levelinfo.enemycount[SNIPERLEFT] = 1; levelinfo.enemycount[SNIPERRIGHT] = 1; break; } } } for (n = 0; n < levelinfo.enemycount[LASERGUN]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = LASERGUN; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedx *= -1; enemy[t].speedy = (rnd() * (levelinfo.roamermaxspeed - levelinfo.roamerminspeed)) + levelinfo.roamerminspeed; if (rnd() < 0.5) enemy[t].speedy *= -1; enemy[t].intvar = 400 + (n * 73); break; } } } for (n = 0; n < levelinfo.enemycount[SKULL]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = SKULL; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = SKULLY; enemy[t].speedx = sign(rnd() - 0.5); if (enemy[t].speedx == 0) { enemy[t].speedx = 1; } enemy[t].speedy = 0; break; } } } for (n = 0; n < levelinfo.enemycount[WRAPBALL]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = WRAPBALL; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = 0; enemy[t].speedy = 0; enemy[t].floatvar = 2.5 + ((float)n / 2); break; } } } for (n = 0; n < levelinfo.enemycount[EYEBALL]; n++) { for (t = 0; t < MAX_ENEMIES; t++) { if (enemy[t].exists == 0) { enemy[t].exists = 1; enemy[t].type = EYEBALL; enemy[t].x = (rnd() * (WIDTH - (SPRITE_SIZE * 2))) + SPRITE_SIZE; enemy[t].y = (rnd() * (lightningy - SPRITE_SIZE)) + (SPRITE_SIZE / 2); enemy[t].speedx = 0; enemy[t].speedy = 0; enemy[t].floatvar = 2.5 + ((float)(n + levelinfo.enemycount[WRAPBALL]) / 2); break; } } } return; } /////////////////////////////////////////////////////////////////////////////////// int playerdeath (void) // Return 1 if player is dead. { int komideadflag = 0; int n; if (lightningdeath() || electraboltsdeath()) { komideadflag = 1; playsound(electricdeath_sound); return 1; // Must return now else we'll get the standard death sound. } for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && sprite_collision(&komi_sprite, komix, komiy, spritemap[enemy[n].type], enemy[n].x, enemy[n].y)) { komideadflag = 1; } } for (n = 0; n < MAX_ENEMYSHOTS; n++) { if (enemyshot[n].exists && sprite_collision(&komi_sprite, komix, komiy, &enemyshot_sprite, enemyshot[n].x, enemyshot[n].y)) { komideadflag = 1; } } if (sprite_collision(&komi_sprite, komix, komiy, &generator_sprite, GEN_X, lightningy)) { komideadflag = 1; } if (sprite_collision(&komi_sprite, komix, komiy, &generator_sprite, WIDTH - GEN_X, lightningy)) { komideadflag = 1; } if (tonguelength) { for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].y < komiy) { if (sprite_collision(&tip_sprite, komix, komiy - tonguelength, spritemap[enemy[n].type], enemy[n].x, enemy[n].y)) { komideadflag = 1; } // Now we check for a collision between the enemy and the long bit of the tongue. if (enemy[n].y > (komiy - tonguelength) + (SPRITE_SIZE / 2)) // FIXME ? This bit assumes all sprites equally sized. { if (sprite_collision(&tonguemask_sprite, komix, enemy[n].y, spritemap[enemy[n].type], enemy[n].x, enemy[n].y)) { komideadflag = 1; } } } } for (n = 0; n < MAX_ENEMYSHOTS; n++) { if (enemyshot[n].exists && enemyshot[n].y < komiy) { if (sprite_collision(&tip_sprite, komix, komiy - tonguelength, &enemyshot_sprite, enemyshot[n].x, enemyshot[n].y)) { komideadflag = 1; } // Now we check for a collision between the shot and the long bit of the tongue. if (enemyshot[n].y > (komiy - tonguelength) + (SPRITE_SIZE / 2)) // FIXME ? This bit assumes all sprites equally sized. { if (sprite_collision(&tonguemask_sprite, komix, enemyshot[n].y, &enemyshot_sprite, enemyshot[n].x, enemyshot[n].y)) { komideadflag = 1; } } } } for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == ELECTRA && enemy[enemy[n].intvar].exists && enemy[n].x < enemy[enemy[n].intvar].x) { if (enemy[n].y > komiy - tonguelength && enemy[n].x < komix && enemy[enemy[n].intvar].x > komix) { komideadflag = 1; playsound(electricdeath_sound); return 1; // Must return now else we'll get the standard death sound. } } } for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == LASERGUN && tick % enemy[n].intvar < LASERDURATION && tick >= enemy[n].intvar) { if (enemy[n].y > komiy - tonguelength) { komideadflag = 1; } } } } // if (tonguelength) if (komideadflag) { playsound(contactdeath_sound); } return komideadflag; } /////////////////////////////////////////////////////////////////////////////////// int lightningdeath (void) // This will be called from several places for aesthetic reasons. // ie so Komi can get drawn electrified, and possibly so that the // lightning can actually pass through him. { if (komiy - lightningy < 16) { return 1; } return 0; } /////////////////////////////////////////////////////////////////////////////////// int electraboltsdeath (void) // Is there a direct collision between Komi and any electra bolts? { int leftelectrax; int rightelectrax; int n; for (n = 0; n < MAX_ENEMIES; n++) { // If both electras exist and electra(n) is to the left... if (enemy[n].exists && enemy[n].type == ELECTRA && enemy[enemy[n].intvar].exists && enemy[n].x < enemy[enemy[n].intvar].x) { leftelectrax = enemy[n].x; rightelectrax = enemy[enemy[n].intvar].x; if (komix > leftelectrax && komix < rightelectrax && komiy - enemy[n].y < 16) { return 1; } } } return 0; } /////////////////////////////////////////////////////////////////////////////////// void cleanexit (int exitstatus) // Exit cleanly, shutting down SDL. { if (nosound == 0) { Mix_CloseAudio(); } SDL_Quit(); exit(exitstatus); } /////////////////////////////////////////////////////////////////////////////////// // // Mmmm. Pointers to pointers. Yuk... // Load the sound if it exists. void loadsound(Mix_Chunk ** thesound, char * directory, char * filename) { char fullpath[TEXTBUFFERSIZE]; FILE * testopen; if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Fatal error while loading %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); cleanexit(1); } strcpy(fullpath, directory); strcat(fullpath, filename); if ((testopen = fopen(fullpath, "rb")) == NULL) { fprintf(stderr, "Failed to open sound %s\n", fullpath); return; } else { fclose(testopen); } *thesound = Mix_LoadWAV(fullpath); if (*thesound == NULL) { fprintf(stderr, "Failed to load sound %s\n", fullpath); } return; } /////////////////////////////////////////////////////////////////////////////////// void playsound (Mix_Chunk * thesound) // Pass sound pointer to Mix_PlayChannel() assuming sound is on. { if (nosound == 0) { Mix_PlayChannel(-1, thesound, 0); } return; } /////////////////////////////////////////////////////////////////////////////////// void drawmenu (int highlight_start, int highlight_quit, int highlight_shuffle) // Draw all the graphical stuff on the title screen. Locations predefined. // Highlight the buttons if so flagged. { rects = 0; // In case drawing all this would push rects over the max. cls(virtue, 0, 0, 0); drawsprite(&maintitle_title, virtue, MAINTITLE_X, MAINTITLE_Y); drawsprite(&gpl_title, virtue, GPL_X, GPL_Y); if (highlight_start == 0) { drawsprite(&start_title, virtue, STARTBUTTON_X, STARTBUTTON_Y); } else { drawsprite(&start2_title, virtue, STARTBUTTON_X, STARTBUTTON_Y); } if (highlight_quit == 0) { drawsprite(&quit_title, virtue, QUITBUTTON_X, QUITBUTTON_Y); } else { drawsprite(&quit2_title, virtue, QUITBUTTON_X, QUITBUTTON_Y); } if (highlight_shuffle == 0 && shuffle == 0) { drawsprite(&shuffleoff_title, virtue, SHUFFLETITLE_X, SHUFFLETITLE_Y); } else if (highlight_shuffle == 0 && shuffle) { drawsprite(&shuffleon_title, virtue, SHUFFLETITLE_X, SHUFFLETITLE_Y); } else if (highlight_shuffle && shuffle == 0) { drawsprite(&shuffleoff2_title, virtue, SHUFFLETITLE_X, SHUFFLETITLE_Y); } else { drawsprite(&shuffleon2_title, virtue, SHUFFLETITLE_X, SHUFFLETITLE_Y); } drawsprite(&bolts_title, virtue, BOLTSTITLE_X, BOLTSTITLE_Y); drawsprite(&diamond_sprite, virtue, DIAMONDTITLE_X, DIAMONDTITLE_Y); drawsprite(&komi_sprite, virtue, KOMITITLE_X, KOMITITLE_Y); drawsprite(&diver_sprite, virtue, DIVERTITLE_X, DIVERTITLE_Y); drawsprite(&generator_sprite, virtue, (BOLTSTITLE_X - (bolts_title.pixelmap->w / 2)) - ((SPRITE_SIZE / 2) - (SPRITE_SIZE - LIGHTNINGADJUST)), BOLTSTITLE_Y); drawsprite(&generator_sprite, virtue, (BOLTSTITLE_X + (bolts_title.pixelmap->w / 2)) + ((SPRITE_SIZE / 2) - (SPRITE_SIZE - LIGHTNINGADJUST)), BOLTSTITLE_Y); drawsprite(&speed_title, virtue, SPEEDTITLE_X, SPEEDTITLE_Y); drawspeedrect(); SDL_UpdateRect(virtue, 0, 0, 0, 0); return; } /////////////////////////////////////////////////////////////////////////////////// void drawspeedrect (void) // The rect showing the speed at the bottom left of the menu. { int fillx1, fillx2, filly1, filly2; rects = 0; // In case drawing this would push rects over the max. // Clear it first... frect(virtue, SPEEDRECTLEFT_X, SPEEDRECTTOP_Y, SPEEDRECTLEFT_X + SPEEDRECTWIDTH, SPEEDRECTTOP_Y + SPEEDRECTHEIGHT, 150, 150, 150); frect(virtue, SPEEDRECTLEFT_X + 1, SPEEDRECTTOP_Y + 1, SPEEDRECTLEFT_X + SPEEDRECTWIDTH - 1, SPEEDRECTTOP_Y + SPEEDRECTHEIGHT - 1, 0, 0, 0); if (delay < LONGESTDELAY) { fillx1 = SPEEDRECTLEFT_X; filly1 = SPEEDRECTTOP_Y; fillx2 = SPEEDRECTLEFT_X + ((LONGESTDELAY - delay) * ((float)SPEEDRECTWIDTH / LONGESTDELAY)); filly2 = filly1 + SPEEDRECTHEIGHT; frect(virtue, fillx1, filly1, fillx2, filly2, 0, 100, 150); } return; } /////////////////////////////////////////////////////////////////////////////////// void checkspeedadjust (void) { int leftx, rightx, topy, bottomy; leftx = SPEEDRECTLEFT_X; topy = SPEEDRECTTOP_Y; rightx = SPEEDRECTLEFT_X + SPEEDRECTWIDTH; bottomy = SPEEDRECTTOP_Y + SPEEDRECTHEIGHT; if (mousemap.clickx > leftx - 20 && mousemap.clickx < rightx + 20 && mousemap.clicky > topy && mousemap.clicky < bottomy) { delay = LONGESTDELAY - ((mousemap.clickx - leftx) / ((float)SPEEDRECTWIDTH / LONGESTDELAY)); if (delay < 0) delay = 0; if (delay > LONGESTDELAY) delay = LONGESTDELAY; saveprefs(prefsdir, PREFSNAME); drawspeedrect(); SDL_UpdateRect(virtue, 0, 0, 0, 0); } return; } /////////////////////////////////////////////////////////////////////////////////// // // Keeps track in a global structure which keys are actually down. void updatekeymap (void) { if (event.type == SDL_KEYDOWN) { if (event.key.keysym.sym == SDLK_ESCAPE) keymap.escape = 1; if (event.key.keysym.sym == LeftKey1) keymap.left1 = 1; if (event.key.keysym.sym == LeftKey2) keymap.left2 = 1; if (event.key.keysym.sym == LeftKey3) keymap.left3 = 1; if (event.key.keysym.sym == RightKey1) keymap.right1 = 1; if (event.key.keysym.sym == RightKey2) keymap.right2 = 1; if (event.key.keysym.sym == RightKey3) keymap.right3 = 1; if (event.key.keysym.sym == FireKey1) keymap.fire1 = 1; if (event.key.keysym.sym == FireKey2) keymap.fire2 = 1; if (event.key.keysym.sym == LevelSkip) keymap.levelskip = 1; if (event.key.keysym.sym == PauseKey) keymap.pause = 1; if (event.key.keysym.sym == ScreenshotKey) keymap.screenshot = 1; } else if (event.type == SDL_KEYUP) { if (event.key.keysym.sym == SDLK_ESCAPE) keymap.escape = 0; if (event.key.keysym.sym == LeftKey1) keymap.left1 = 0; if (event.key.keysym.sym == LeftKey2) keymap.left2 = 0; if (event.key.keysym.sym == LeftKey3) keymap.left3 = 0; if (event.key.keysym.sym == RightKey1) keymap.right1 = 0; if (event.key.keysym.sym == RightKey2) keymap.right2 = 0; if (event.key.keysym.sym == RightKey3) keymap.right3 = 0; if (event.key.keysym.sym == FireKey1) keymap.fire1 = 0; if (event.key.keysym.sym == FireKey2) keymap.fire2 = 0; if (event.key.keysym.sym == LevelSkip) keymap.levelskip = 0; if (event.key.keysym.sym == PauseKey) keymap.pause = 0; if (event.key.keysym.sym == ScreenshotKey) keymap.screenshot = 0; } return; } /////////////////////////////////////////////////////////////////////////////////// void updatemousemap (void) // Keeps track of whether the mouse button is down, and what position it clicked on. { if (event.type == SDL_MOUSEBUTTONDOWN) { mousemap.button = 1; mousemap.clickx = event.button.x; mousemap.clicky = event.button.y; } else if (event.type == SDL_MOUSEBUTTONUP) { mousemap.button = 0; } else if (event.type == SDL_MOUSEMOTION) { mousemap.currentx = event.motion.x; mousemap.currenty = event.motion.y; } return; } /////////////////////////////////////////////////////////////////////////////////// void manageevents (void) // Manage relevant keyboard, mouse, and quit events. { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { cleanexit(0); } else if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) { updatekeymap(); } else if (event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP || event.type == SDL_MOUSEMOTION) { updatemousemap(); } } return; } /////////////////////////////////////////////////////////////////////////////////// int leveldone (void) // Return 1 if there are no coins or diamonds on the level any more. { int n; for (n = 0; n < MAX_COINS; n++) { if (coin[n].exists) return 0; } for (n = 0; n < MAX_DIAMONDS; n++) { if (diamond[n].exists) return 0; } return 1; } /////////////////////////////////////////////////////////////////////////////////// void dostars (void) { int n; if (SDL_MUSTLOCK(virtue)) SDL_LockSurface(virtue); for (n = 0; n < MAXSTARS; n++) { if (star[n].speed != 0) // ie if it exists at all... { setrgb(virtue, star[n].x, star[n].y, 0, 0, 0); star[n].x = star[n].x + (((star[n].x - (WIDTH / 2)) / 35) * star[n].speed); star[n].y = star[n].y + (((star[n].y - (HEIGHT / 2)) / 35) * star[n].speed); if (star[n].x < 0 || star[n].x >= WIDTH || star[n].y < 0 || star[n].y >= HEIGHT) { resetstar(n); } star[n].age++; if (star[n].age < YOUNG_STAR) { setrgb(virtue, (int)star[n].x, (int)star[n].y, ((float)star[n].brightness / YOUNG_STAR) * star[n].age, ((float)star[n].brightness / YOUNG_STAR) * star[n].age, ((float)star[n].brightness / YOUNG_STAR) * star[n].age); } else { setrgb(virtue, (int)star[n].x, (int)star[n].y, star[n].brightness, star[n].brightness, star[n].brightness); } } else { if (rand() < RAND_MAX / 40) // ie a 1 in 40 chance... { resetstar(n); } } } if (SDL_MUSTLOCK(virtue)) SDL_UnlockSurface(virtue); return; } /////////////////////////////////////////////////////////////////////////////////// void resetstar (int n) { float adjust; star[n].speed = (float)rand() / RAND_MAX; if (star[n].speed < SLOWEST_STAR) { star[n].speed = SLOWEST_STAR; } star[n].age = 0; adjust = ((rand() % 50) - 25) + ((float)rand() / RAND_MAX); star[n].x = (WIDTH / 2) + adjust; adjust = ((rand() % 50) - 25) + ((float)rand() / RAND_MAX); star[n].y = (HEIGHT / 2) + adjust; star[n].brightness = rand() % 256; if (star[n].speed < DIM_STAR_BOUNDARY) { star[n].brightness /= 1.5; } return; } /////////////////////////////////////////////////////////////////////////////////// int sign (float value) // Returns sign of value, either -1 for negative, 1 for positive, or 0 for zero. { if (value < 0) return -1; if (value > 0) return 1; return 0; } /////////////////////////////////////////////////////////////////////////////////// float rnd (void) // Random number between 0 and 1. { return (float)rand() / RAND_MAX; } /////////////////////////////////////////////////////////////////////////////////// // Called when Komi dies or level completed. void fadeout (void) // Not so much a fade as a series of black lines... // Note that this function calls manageevents() repeatedly, and returns immediately if keymap.escape is set. // The calling function can check keymap.escape to see if this is why it has returned. { int n; if (SDL_MUSTLOCK(virtue)) SDL_LockSurface(virtue); // Use of line() requires this. for (n = 0; n < HEIGHT; n += 2) { line(virtue, 0, n, WIDTH - 1, n, 0, 0, 0); if (n % 10 == 0) { if (SDL_MUSTLOCK(virtue)) SDL_UnlockSurface(virtue); SDL_UpdateRect(virtue, 0, 0, 0, 0); SDL_Delay(5); manageevents(); if (keymap.escape) { return; } if (SDL_MUSTLOCK(virtue)) SDL_LockSurface(virtue); } } for (n = HEIGHT - 1; n > 0; n -= 2) { line(virtue, 0, n, WIDTH - 1, n, 0, 0, 0); if ((n + 1) % 10 == 0) { if (SDL_MUSTLOCK(virtue)) SDL_UnlockSurface(virtue); SDL_UpdateRect(virtue, 0, 0, 0, 0); SDL_Delay(5); manageevents(); if (keymap.escape) { return; } if (SDL_MUSTLOCK(virtue)) SDL_LockSurface(virtue); } } if (SDL_MUSTLOCK(virtue)) SDL_UnlockSurface(virtue); SDL_UpdateRect(virtue, 0, 0, 0, 0); return; } /////////////////////////////////////////////////////////////////////////////////// void updatetitlebar (void) { char thestring[TEXTBUFFERSIZE]; sprintf(thestring, "Komi - Level: %d - Score: %d - Lives: %d", level, score, lives); SDL_WM_SetCaption(thestring, NULL); return; } /////////////////////////////////////////////////////////////////////////////////// void screenshot (SDL_Surface * surface, char * directory, char * filename) { char fullpath[TEXTBUFFERSIZE]; if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Error while saving %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); return; } strcpy(fullpath, directory); strcat(fullpath, filename); if (SDL_SaveBMP(surface, fullpath) == 0) { fprintf(stdout, "Saved screenshot to %s\n", fullpath); playsound(screenshot_sound); } else { fprintf(stdout, "Failed to save screenshot to %s\n", fullpath); } return; } /////////////////////////////////////////////////////////////////////////////////// void doelectricity (void) { int leftelectrax; int rightelectrax; int temp; int n; if (levelinfo.electrasflag && levelinfo.electraoffset == 0) // When electra enemies ride over the main lightning... { for (n = 0; n < MAX_ENEMIES; n++) { if (enemy[n].exists && enemy[n].type == ELECTRA && enemy[enemy[n].intvar].exists) // If both electras exist... { leftelectrax = enemy[n].x; rightelectrax = enemy[enemy[n].intvar].x; if (rightelectrax < leftelectrax) { temp = leftelectrax; leftelectrax = rightelectrax; rightelectrax = temp; } drawelectricity(LIGHTNINGADJUST, lightningy, leftelectrax, NO); drawelectricity(rightelectrax, lightningy, WIDTH - LIGHTNINGADJUST, NO); return; } } } drawelectricity(LIGHTNINGADJUST, lightningy, WIDTH - LIGHTNINGADJUST, NO); return; } /////////////////////////////////////////////////////////////////////////////////// void drawelectricity (int x1, int y, int x2, int electraflag) // Draw electricity between (x1, y) and (x2, y) // electraflag changes its behaviour slightly (and makes it red) { int currentx, currenty; int nextx, nexty; int finishedthisline; int brightness; int temp; if (SDL_MUSTLOCK(virtue)) SDL_LockSurface(virtue); if (x1 > x2) { temp = x1; x1 = x2; x2 = temp; } currentx = x1; currenty = y; finishedthisline = 0; while (1) { nextx = currentx + (rnd() * BOLTMAXLENGTH) + 1; nexty = y + (rnd() * LIGHTNINGVARIANCE * 2) - LIGHTNINGVARIANCE; if (electraflag) { if (nextx >= komix && currentx < komix && (y >= komiy - tonguelength || electraboltsdeath())) { nextx = komix; nexty = y + LIGHTNINGVARIANCE; } } else { if (nextx >= komix && currentx < komix && lightningdeath()) { nextx = komix; nexty = y + LIGHTNINGVARIANCE; } } if (nextx >= x2) { nextx = x2; nexty = y; finishedthisline = 1; } brightness = rnd() * 155; if (electraflag) { line(virtue, currentx, currenty, nextx, nexty, 255, brightness, brightness); } else { line(virtue, currentx, currenty, nextx, nexty, brightness, brightness, 255); } currentx = nextx; currenty = nexty; if (finishedthisline) { break; } } if (SDL_MUSTLOCK(virtue)) SDL_UnlockSurface(virtue); return; } /////////////////////////////////////////////////////////////////////////////////// void drawskullpull (int clearflag, int n) // Draw the circles from the Skull (enemy n) to Komi. { int pullstarty, pullstartx; int i; pullstarty = enemy[n].y + 16 - (tick % 16); for (i = pullstarty; i <= komiy; i += 16) { if (clearflag) { clearsprite(&skullpull_sprite, virtue, enemy[n].x, i); } else { drawsprite(&skullpull_sprite, virtue, enemy[n].x, i); } } if (komix < enemy[n].x) { pullstartx = (enemy[n].x - 16) + (tick % 16); for (i = pullstartx; i >= komix; i -= 16) { if (clearflag) { clearsprite(&skullpull_sprite, virtue, i, komiy); } else { drawsprite(&skullpull_sprite, virtue, i, komiy); } } } if (komix > enemy[n].x) { pullstartx = enemy[n].x + 16 - (tick % 16); for (i = pullstartx; i <= komix; i += 16) { if (clearflag) { clearsprite(&skullpull_sprite, virtue, i, komiy); } else { drawsprite(&skullpull_sprite, virtue, i, komiy); } } } return; } /////////////////////////////////////////////////////////////////////////////////// // Do whatever is done by the powerup Komi has just captured. void goodieaction (int type) // This function should play some sound, be it the standard eat sound or something else. { switch (type) { case EXTRALIFE : lives++; updatetitlebar(); playsound(oneup_sound); break; case SHOOTPOWER : shotsavailable += 3; playsound(eat_sound); break; case DESTRUCTOR : addcornershots(); if (playedshootsound == 0) { playsound(shoot_sound); playedshootsound = 1; } break; case GAMEMOD : switch (intrnd(1)) { case 0 : freeze = FREEZE_TIME; playsound(freeze_sound); break; case 1 : if (fastretract == 0) { fastretract = 1; playsound(eat_sound); } else { freeze = FREEZE_TIME; playsound(freeze_sound); } break; default : fprintf(stderr, "Warning: Got bad number from intrnd()\n"); break; } break; default : fprintf(stderr, "Warning: unrecognised powerup type.\n"); break; } return; } /////////////////////////////////////////////////////////////////////////////////// void addcornershots (void) // Add 4 inbound friendly shots - one at each corner. Used if we get the "destructor" powerup. { int n; for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists == 0) { friendlyshot[n].exists = 1; friendlyshot[n].x = 0; friendlyshot[n].y = 0; friendlyshot[n].speedx = 2; friendlyshot[n].speedy = 2; break; } } for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists == 0) { friendlyshot[n].exists = 1; friendlyshot[n].x = WIDTH; friendlyshot[n].y = 0; friendlyshot[n].speedx = -2; friendlyshot[n].speedy = 2; break; } } for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists == 0) { friendlyshot[n].exists = 1; friendlyshot[n].x = 0; friendlyshot[n].y = HEIGHT; friendlyshot[n].speedx = 2; friendlyshot[n].speedy = -2; break; } } for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists == 0) { friendlyshot[n].exists = 1; friendlyshot[n].x = WIDTH; friendlyshot[n].y = HEIGHT; friendlyshot[n].speedx = -2; friendlyshot[n].speedy = -2; break; } } return; } /////////////////////////////////////////////////////////////////////////////////// void addkomishot (void) // Add an upward travelling friendly shot fired from Komi's position. { int n; for (n = 0; n < MAX_FRIENDLYSHOTS; n++) { if (friendlyshot[n].exists == 0) { friendlyshot[n].exists = 1; friendlyshot[n].x = komix; friendlyshot[n].y = komiy; friendlyshot[n].speedx = 0; friendlyshot[n].speedy = KOMI_SHOT_SPEED * -1; if (playedshootsound == 0) { playsound(shoot_sound); playedshootsound = 1; } break; } } return; } /////////////////////////////////////////////////////////////////////////////////// int intrnd (int max) // Return integer between 0 and max inclusive. { int result; result = rnd() * (max + 1); result %= max + 1; return result; } /////////////////////////////////////////////////////////////////////////////////// // Add num to score and update the titlebar. void addscore (int num) // Also checks if we're over the points required to get a new life. { int initialscore; initialscore = score; score += num; if (initialscore / EXTRALIFEPOINTS < score / EXTRALIFEPOINTS) { lives++; playsound(oneup_sound); } updatetitlebar(); return; } /////////////////////////////////////////////////////////////////////////////////// void saveprefs (char * directory, char * filename) { char fullpath[TEXTBUFFERSIZE]; FILE * outfile; if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Error while saving %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); return; } strcpy(fullpath, directory); strcat(fullpath, filename); if ((outfile = fopen(fullpath, "wb")) == NULL) { fprintf(stderr, "Failed to open prefs file %s for save.\n", fullpath); return; } else { putc(PREFSVERSION, outfile); // Save preferences version (for check at load) putc(delay, outfile); // Save delay. putc(highscore & 0x000000FF, outfile); // Save highscore... putc((highscore & 0x0000FF00) >> 8, outfile); putc((highscore & 0x00FF0000) >> 16, outfile); putc((highscore & 0xFF000000) >> 24, outfile); putc(shuffle, outfile); // Save shuffle on/off fclose(outfile); } return; } /////////////////////////////////////////////////////////////////////////////////// void loadprefs (char * directory, char * filename) { char fullpath[TEXTBUFFERSIZE]; FILE * infile; int nextchar; if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Error while loading %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); return; } strcpy(fullpath, directory); strcat(fullpath, filename); if ((infile = fopen(fullpath, "rb")) == NULL) { fprintf(stderr, "Failed to open prefs file %s for load.\n", fullpath); fprintf(stderr, "Attempting to write defaults to it...\n"); saveprefs(directory, filename); // If we fail, try to save / create the file instead. return; } else { if ((nextchar = getc(infile)) != EOF) { if (nextchar != PREFSVERSION) // Check that preferences are of the current type. { fprintf(stderr, "Preferences file appears to be in wrong format,\n"); fprintf(stderr, "so attempting to write defaults to it...\n"); fclose(infile); saveprefs(directory, filename); return; } } if ((nextchar = getc(infile)) != EOF) { if (nextchar >= 0 && nextchar <= 50 && gotdelayarg == 0) // Check for sane delay values and gotdelayarg flag. { delay = nextchar; } } if ((nextchar = getc(infile)) != EOF) // Read highscore in byte by byte. highscore = nextchar; if ((nextchar = getc(infile)) != EOF) highscore += nextchar << 8; if ((nextchar = getc(infile)) != EOF) highscore += nextchar << 16; if ((nextchar = getc(infile)) != EOF) highscore += nextchar << 24; if ((nextchar = getc(infile)) != EOF) { shuffle = nextchar; } fclose(infile); } return; } /////////////////////////////////////////////////////////////////////////////////// void setmaintitlebar (void) { char thestring[TEXTBUFFERSIZE]; sprintf(thestring, "Komi %s - High Score: %d - Last Score: %d", VERSION, highscore, lastscore); SDL_WM_SetCaption(thestring, NULL); return; } /////////////////////////////////////////////////////////////////////////////////// int playmusic (char * directory, char * filename, int loops) { char fullpath[TEXTBUFFERSIZE]; FILE * testopen; if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Error while loading %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); return 1; } strcpy(fullpath, directory); strcat(fullpath, filename); if (music != NULL) { fprintf(stderr, "Error: music != NULL.\n"); fprintf(stderr, "Taking no action...\n"); return 1; } if ((testopen = fopen(fullpath, "rb")) == NULL) { fprintf(stderr, "Failed to open %s\n", fullpath); return 1; } else { fclose(testopen); } music = Mix_LoadMUS(fullpath); if (music == NULL) { fprintf(stderr, "Error loading %s. %s\n", fullpath, Mix_GetError()); return 1; } if (Mix_PlayMusic(music, loops)) // Try to play the music... { fprintf(stderr, "Mix_PlayMusic() returned an error."); music = NULL; return 1; } return 0; } /////////////////////////////////////////////////////////////////////////////////// void shufflelevels (void) { int n; int first, second; int temp; for (n = 0; n < DEFINEDLEVELS; n++) { shuffledlevels[n] = n + 1; } for (n = 0; n < 1000; n++) { first = intrnd(DEFINEDLEVELS - 1); second = intrnd(DEFINEDLEVELS - 1); temp = shuffledlevels[first]; shuffledlevels[first] = shuffledlevels[second]; shuffledlevels[second] = temp; } return; } /////////////////////////////////////////////////////////////////////////////////// void setprefsdir (void) // Try to get a sensible directory to save prefs to. // Set the global "prefsdir" to it, for use by loadprefs() and saveprefs() { char * dir = NULL; // Unix has $HOME if ((dir = getenv("HOME")) != NULL) { if (strlen(dir) + 1 >= sizeof(prefsdir)) { fprintf(stderr, "Could not set prefs directory - name is too long:\n%s\n", dir); } else { sprintf(prefsdir, "%s/", dir); } return; } // Windows has APPDATA if ((dir = getenv("APPDATA")) != NULL) { if (strlen(dir) + 1 >= sizeof(prefsdir)) { fprintf(stderr, "Could not set prefs directory - name is too long:\n%s\n", dir); } else { sprintf(prefsdir, "%s/", dir); } return; } // No variables - just return. prefsdir will be whatever it was set to in declarations.h return; } /////////////////////////////////////////////////////////////////////////////////// void printgfxdetails (void) { fprintf(stdout, "\n"); if ((virtue->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { fprintf(stdout, "Screen is in video memory.\n"); } else { fprintf(stdout, "Screen is in system memory.\n"); } fprintf(stdout, "Screen is at %d bits per pixel.\n", virtue->format->BitsPerPixel); if ((virtue->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) { fprintf(stdout, "Screen has double-buffering enabled.\n"); } else { fprintf(stdout, "Screen does not have double-buffering enabled.\n"); } fprintf(stdout, "\n"); if ((komi_sprite.pixelmap->flags & SDL_HWSURFACE) == SDL_HWSURFACE) { fprintf(stdout, "Sprites are in video memory.\n"); } else { fprintf(stdout, "Sprites are in system memory.\n"); } fprintf(stdout, "Sprites are at %d bits per pixel.\n", komi_sprite.pixelmap->format->BitsPerPixel); fprintf(stdout, "\n"); return; } komi-1.04/loaders.h0000644000175000001440000001657710075325104014462 0ustar allanusers00000000000000/* loaders.h -- functions which load stuff */ void loadsprites (void) { loadsprite(&komi_sprite, filepath, "sprites_komi.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&tip_sprite, filepath, "sprites_tip.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&fasttip_sprite, filepath, "sprites_fasttip.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&tonguemask_sprite, filepath, "sprites_tonguemask.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&pickupmask_sprite, filepath, "sprites_pickupmask.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); // To make things slightly easier, the coins/diamonds don't get black set as a no-collide colour here... loadsprite(&coin_sprite, filepath, "sprites_coin.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 255, 255, 255); loadsprite(&diamond_sprite, filepath, "sprites_diamond.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 255, 255, 255); loadsprite(&generator_sprite, filepath, "sprites_generator.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&scrollerleft_sprite, filepath, "sprites_scrollerleft.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[SCROLLERLEFT] = &scrollerleft_sprite; loadsprite(&scrollerright_sprite, filepath, "sprites_scrollerright.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[SCROLLERRIGHT] = &scrollerright_sprite; loadsprite(&electra_sprite, filepath, "sprites_electra.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[ELECTRA] = &electra_sprite; loadsprite(&roamer_sprite, filepath, "sprites_roamer.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[ROAMER] = &roamer_sprite; loadsprite(&brownian_sprite, filepath, "sprites_brownian.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[BROWNIAN] = &brownian_sprite; loadsprite(&lasergun_sprite, filepath, "sprites_lasergun.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[LASERGUN] = &lasergun_sprite; loadsprite(&diver_sprite, filepath, "sprites_diver.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[DIVER] = &diver_sprite; loadsprite(&skull_sprite, filepath, "sprites_skull.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[SKULL] = &skull_sprite; loadsprite(&bouncer_sprite, filepath, "sprites_bouncer.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[BOUNCER] = &bouncer_sprite; loadsprite(&gunner_sprite, filepath, "sprites_gunner.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[GUNNER] = &gunner_sprite; loadsprite(&accelerator_sprite, filepath, "sprites_accelerator.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[ACCELERATOR] = &accelerator_sprite; loadsprite(&dropper_sprite, filepath, "sprites_dropper.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[DROPPER] = &dropper_sprite; loadsprite(&eyeball_sprite, filepath, "sprites_eyeball.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[EYEBALL] = &eyeball_sprite; loadsprite(&wrapball_sprite, filepath, "sprites_wrapball.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[WRAPBALL] = &wrapball_sprite; loadsprite(&bomber_sprite, filepath, "sprites_bomber.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[BOMBER] = &bomber_sprite; loadsprite(&sniperleft_sprite, filepath, "sprites_sniperleft.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[SNIPERLEFT] = &sniperleft_sprite; loadsprite(&sniperright_sprite, filepath, "sprites_sniperright.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); spritemap[SNIPERRIGHT] = &sniperright_sprite; loadsprite(&powerup_sprite, filepath, "sprites_powerup.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); powerupspritemap[GAMEMOD] = &powerup_sprite; loadsprite(&destructor_sprite, filepath, "sprites_destructor.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); powerupspritemap[DESTRUCTOR] = &destructor_sprite; loadsprite(&shootpower_sprite, filepath, "sprites_shootpower.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); powerupspritemap[SHOOTPOWER] = &shootpower_sprite; loadsprite(&life_sprite, filepath, "sprites_life.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); powerupspritemap[EXTRALIFE] = &life_sprite; loadsprite(&skullpull_sprite, filepath, "sprites_skullpull.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&friendlyshot_sprite, filepath, "sprites_friendlyshot.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&enemyshot_sprite, filepath, "sprites_enemyshot.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&shooterkomi_sprite, filepath, "sprites_shooterkomi.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&electrickomi_sprite, filepath, "sprites_electrickomi.bmp", SPRITE_SIZE, SPRITE_SIZE, 255, 255, 255, 0, 0, 0); loadsprite(&maintitle_title, filepath, "titles_title.bmp", 288, 80, 0, 0, 0, 0, 0, 0); loadsprite(&bolts_title, filepath, "titles_bolts.bmp", 152, 24, 0, 0, 0, 0, 0, 0); loadsprite(&start_title, filepath, "titles_start.bmp", 224, 48, 0, 0, 0, 0, 0, 0); loadsprite(&quit_title, filepath, "titles_quit.bmp", 96, 48, 0, 0, 0, 0, 0, 0); loadsprite(&start2_title, filepath, "titles_start2.bmp", 224, 48, 0, 0, 0, 0, 0, 0); loadsprite(&quit2_title, filepath, "titles_quit2.bmp", 96, 48, 0, 0, 0, 0, 0, 0); loadsprite(&gpl_title, filepath, "titles_gpl.bmp", 480, 112, 0, 0, 0, 0, 0, 0); loadsprite(&speed_title, filepath, "titles_speed.bmp", 136, 48, 0, 0, 0, 0, 0, 0); loadsprite(&shuffleoff_title, filepath, "titles_shuffleoff.bmp", 224, 48, 0, 0, 0, 0, 0, 0); loadsprite(&shuffleoff2_title, filepath, "titles_shuffleoff2.bmp", 224, 48, 0, 0, 0, 0, 0, 0); loadsprite(&shuffleon_title, filepath, "titles_shuffleon.bmp", 224, 48, 0, 0, 0, 0, 0, 0); loadsprite(&shuffleon2_title, filepath, "titles_shuffleon2.bmp", 224, 48, 0, 0, 0, 0, 0, 0); return; } /////////////////////////////////////////////////////////////////////////////////// void loadsounds (void) { loadsound(&oneup_sound, filepath, "sounds_oneup.wav"); loadsound(&contactdeath_sound, filepath, "sounds_contactdeath.wav"); loadsound(&destructorkill_sound, filepath, "sounds_destructorkill.wav"); loadsound(&eat_sound, filepath, "sounds_eat.wav"); loadsound(&electricdeath_sound, filepath, "sounds_electricdeath.wav"); loadsound(&freeze_sound, filepath, "sounds_freeze.wav"); loadsound(&gameover_sound, filepath, "sounds_gameover.wav"); loadsound(&laser_sound, filepath, "sounds_laser.wav"); loadsound(&laserentry_sound, filepath, "sounds_laserentry.wav"); loadsound(&laserpowerup_sound, filepath, "sounds_laserpowerup.wav"); loadsound(&lastlife_sound, filepath, "sounds_lastlife.wav"); loadsound(&lightningwarning_sound, filepath, "sounds_lightningwarning.wav"); loadsound(&pause_sound, filepath, "sounds_pause.wav"); loadsound(&powerup_sound, filepath, "sounds_powerup.wav"); loadsound(&screenshot_sound, filepath, "sounds_screenshot.wav"); loadsound(&shoot_sound, filepath, "sounds_shoot.wav"); loadsound(&stick_sound, filepath, "sounds_stick.wav"); loadsound(&unfreezewarning_sound, filepath, "sounds_unfreezewarning.wav"); return; } komi-1.04/COPYING.txt0000644000175000001440000004311010075325104014510 0ustar allanusers00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. komi-1.04/TROUBLESHOOTING.txt0000644000175000001440000000723010075325104015672 0ustar allanusers00000000000000Troubleshooting Komi... Sound Problems -------------- Sound is by far my greatest problem in making Komi work properly. Under KDE, I often experience a segmentation fault. This seems to have something to do with the artsd sound system on KDE, which allows different applications to play sound at the same time, but seems to give grief to SDL, the media library which Komi uses. Turning of the sound system in KDE and shutting down all other sound-using apps may possibly solve the problem, as might allowing the KDE sound system to timeout (which by default it does after a minute of inactivity). But these are rather drastic steps. Komi can be played without sound, although the experience is not as enjoyable. Simply invoke komi like so from the command line: komi --nosound I do wonder if this problem with KDE is just me though - for me it seems to affect even well known SDL games like frozen-bubble. YMMV. There does not appear to be a segfault under GNOME. I normally use Fluxbox myself, anyway. :-) Music can be disabled with: komi --nomusic Speed Problems -------------- The game may be too fast or too slow. You can adjust the speed by clicking on the speed bar in the title screen. If things are too slow even on the fastest setting, as a last resort, try doing: komi --fastdraw The "fastdraw" option is experimental but should update only those parts of the screen that need updating. It forces stars to be off. The game runs fine on my computer, yet runs really slowly on a supposedly faster machine that I also have access to. The speed difference is about 400 percent. After investigation, this seems to have something to do with the second machine having hyperthreading and runnning in SMP mode. If you're running Komi on a hyperthreaded machine, I want to hear about your results. Jerkiness --------- Unfortunately, it seems that some speeds are better than others in terms of how "jerky" the motion of objects on the screen is - I suspect this has something to do with the refresh rate of the monitor. Some experimentation with the speed setting may be necessary. To assist you in this, as of version 1.03, you can get a rough idea of what framerate Komi is running at by running it like so: komi --gfxdetails This will print (to stdout) the framerate that the last level ran at upon its completion. Ideally, you probably want to set the speed of the game so that the framerate is close to (or possibly just below) your monitor's refresh rate. For example, my monitor runs at 85 Hz (refreshes 85 times per second) and, happily, I can get the speed of Komi to be about 83 frames per second. Keys ---- For now, the keys can be edited only by modifying keys.h and recompiling. Expect a more friendly way in a future release. Maybe... Difficulty ---------- Komi is a hard game. :-) Certainly when played at a proper speed... still, there's no shame in reducing the speed a bit, or even all the way down to its lowest setting. This is probably more fun when the shuffle option is used, otherwise you'll get all the easier levels first, which may be quite boring at low speeds. Installation and data files --------------------------- The directory where Komi finds its data files is set at compile time. By default, it's /usr/local/share/komidata/ but you can change this to be whatever you like by altering the Makefile, which may be useful if you don't have root access and can't do "sudo make install". You can also temporarily specify the directory by passing Komi an argument at launch, like: komi --path /home/bob/komidata/ Note that the slash at the end is mandatory. Other Problems? --------------- Other problems? Please email me at acrossman@users.sourceforge.net komi-1.04/README.txt0000644000175000001440000000134110075325104014335 0ustar allanusers00000000000000Komi Readme ----------- Komi is a 2D arcade game written in C, which uses the SDL library for graphics and sound. Komi is released under the GNU General Public License (see COPYING.txt for details). Installation instructions are in INSTALL.txt Problems? See TROUBLESHOOTING.txt (especially for trouble with the sound, or if the game speed seems wrong). You can email acrossman@users.sourceforge.net with bug-reports, questions, etc. -- The aim of the game is to collect the money (in the forms of coins and diamonds) floating about the screen. Move Komi (the Space Frog) with the arrow keys, or keypad 4 and 6, or Q and W, and extend his tongue with the spacebar, or the return key. -- Feedback to acrossman@users.sourceforge.net komi-1.04/INSTALL.txt0000644000175000001440000000157210075325104014514 0ustar allanusers00000000000000Komi installation: Komi depends on SDL and SDL-mixer. You need these libraries for Komi to build. See: http://www.libsdl.org/index.php (for SDL) http://www.libsdl.org/projects/SDL_mixer/ (for SDL-mixer) On Gentoo, you can do: emerge libsdl emerge sdl-mixer Once those libraries are installed, run (from the komi directory): make sudo make install This will: * compile the app * place it in /usr/local/bin/ * place the data files in /usr/local/share/komidata/ After this, you can run the game with the command: komi The locations can be edited in the Makefile (do this before compilation, so the app knows where to find the resources). If you can't install the data files as above (ie you don't have root access) then you can locate the directory at runtime with: komi --path /foo/bar/komidata/ Note that the trailing slash is mandatory. komi-1.04/prototypes.h0000644000175000001440000000612710075334357015261 0ustar allanusers00000000000000// From Komi.c void menu (void); void game (void); int playlevel (void); void dostars (void); void resetstar (int n); void drawsprites (void); void clearsprites (void); void movesprites (void); float rnd (void); void blanklevel (void); void makelevel (void); int sign (float value); int playerdeath (void); int lightningdeath (void); void cleanexit (int exitstatus); void loadsound (Mix_Chunk ** thesound, char * directory, char * filename); void playsound (Mix_Chunk * thesound); void drawmenu (int highlight_start, int highlight_quit, int highlight_shuffle); void updatekeymap (void); void updatemousemap (void); void manageevents (void); void checktonguepickup (void); int leveldone (void); void choosenumbers (void); void fadeout (void); void updatetitlebar (void); void screenshot (SDL_Surface * surface, char * directory, char * filename); void drawskullpull (int clearflag, int n); void algorithmicenemynumbers (int thislevel); void goodieaction (int type); void addcornershots (void); void addkomishot (void); int intrnd (int max); void addscore (int num); void drawspeedrect (void); void checkspeedadjust (void); void loadprefs (char * directory, char * filename); void saveprefs (char * directory, char * filename); void setmaintitlebar (void); int playmusic (char * directory, char * filename, int loops); void musicdone (void); void playnextsong (void); void shufflelevels (void); void setprefsdir (void); void printgfxdetails (void); void doelectricity (void); void drawelectricity (int x1, int y, int x2, int electraflag); int electraboltsdeath (void); void movescroller (int n); void movediver (int n); void movebouncer (int n); void moveroamer (int n); void movebrownian (int n); void moveaccelerator (int n); void movegunner (int n); void moveelectra (int n); void movelasergun (int n); void moveskull (int n); void movedropper (int n); void moveeyeball (int n); void movewrapball (int n); void movebomber (int n); void movesniper (int n); // From sprites.h int sprite_collision (struct sprite_struct * sprite1, int x1, int y1, struct sprite_struct * sprite2, int x2, int y2); void init_spriteimagemap(struct sprite_struct * thesprite, int width, int height); void drawsprite (struct sprite_struct * thesprite, SDL_Surface * screen, int centrex, int centrey); void clearsprite (struct sprite_struct * thesprite, SDL_Surface * screen, int centrex, int centrey); void loadsprite (struct sprite_struct * thesprite, char * directory, char * filename, int width, int height, int hider, int hideb, int hideg, int nocollider, int nocollideg, int nocollideb); // From loaders.h void loadsprites (void); void loadsounds (void); // From info.h void printcopyinfo (void); void printhelp (void); void printversion (void); // From gfx.h void putpixel(SDL_Surface * surface, int x, int y, Uint32 pixel); void line (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue); void frect (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue); void cls (SDL_Surface * bitmapstruct, int red, int green, int blue); void updaterectsarray (int leftx, int topy, int width, int height); komi-1.04/sprites.h0000644000175000001440000001551410075325104014510 0ustar allanusers00000000000000// sprites.h -- sprite functions // Copyright Allan Crossman, 2004 /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You 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 */ /////////////////////////////////////////////////////////////////////////////////// // // Interface to Ulf Ekstrom's bitmask overlap function. // Do the 2 sprites (or specifically, their collisionmasks) overlap? int sprite_collision (struct sprite_struct * sprite1, int x1, int y1, struct sprite_struct * sprite2, int x2, int y2) { int leftx1, topy1, leftx2, topy2; leftx1 = x1 - sprite1->pixelmap->w / 2; topy1 = y1 - sprite1->pixelmap->h / 2; leftx2 = x2 - sprite2->pixelmap->w / 2; topy2 = y2 - sprite2->pixelmap->h / 2; if (leftx1 > leftx2 + sprite2->pixelmap->w) return 0; if (leftx1 + sprite1->pixelmap->w < leftx2) return 0; if (topy1 > topy2 + sprite2->pixelmap->h) return 0; if (topy1 + sprite1->pixelmap->h < topy2) return 0; return bitmask_overlap(sprite1->collisionmask, sprite2->collisionmask, leftx2 - leftx1, topy2 - topy1); } /////////////////////////////////////////////////////////////////////////////////// // // Create SDL_Surface in the sprite_struct... void init_spriteimagemap(struct sprite_struct * thesprite, int width, int height) { thesprite->pixelmap = SDL_CreateRGBSurface(SDL_SRCCOLORKEY, width, height, 24, 0, 0, 0, 0); if (thesprite->pixelmap == NULL) { printf("Creation of SDL_Surface for sprite failed. Quitting.\n"); cleanexit(1); } return; } /////////////////////////////////////////////////////////////////////////////////// // // Draws a sprite CENTRED on the coordinates given... void drawsprite (struct sprite_struct * thesprite, SDL_Surface * screen, int centrex, int centrey) { int leftx, topy; SDL_Rect srcrect; SDL_Rect destrect; leftx = centrex - thesprite->pixelmap->w / 2; topy = centrey - thesprite->pixelmap->h / 2; destrect.x = leftx; destrect.y = topy; destrect.w = thesprite->pixelmap->w; destrect.h = thesprite->pixelmap->h; srcrect.x = 0; srcrect.y = 0; srcrect.w = thesprite->pixelmap->w; srcrect.h = thesprite->pixelmap->h; if (fastdraw) { updaterectsarray(leftx, topy, thesprite->pixelmap->w, thesprite->pixelmap->h); } SDL_BlitSurface(thesprite->pixelmap, &srcrect, screen, &destrect); return; } /////////////////////////////////////////////////////////////////////////////////// // // Like drawsprite, but just draws black pixels... void clearsprite (struct sprite_struct * thesprite, SDL_Surface * screen, int centrex, int centrey) { int leftx, topy; SDL_Rect therect; leftx = centrex - thesprite->pixelmap->w / 2; topy = centrey - thesprite->pixelmap->h / 2; therect.x = leftx; therect.y = topy; therect.w = thesprite->pixelmap->w; therect.h = thesprite->pixelmap->h; if (fastdraw) { updaterectsarray(leftx, topy, thesprite->pixelmap->w, thesprite->pixelmap->h); } SDL_FillRect(screen, &therect, SDL_MapRGB(screen->format, 0, 0, 0)); return; } /////////////////////////////////////////////////////////////////////////////////// // // Load a sprite from a BMP file into an SDL_Surface. // Set pixels to be transparent if colour matches all 3 of hider,g,b variables. // ie pass 255, 255, 255 for white pixels in the source to be transparent in game. // // Pixels of colour nocollider,g,b will be visible but will not trigger collision. // // FIXME: Currently only files with sizes a multiple of 4 will work, due to that silly BMP redundancy thing. void loadsprite (struct sprite_struct * thesprite, char * directory, char * filename, int width, int height, int hider, int hideb, int hideg, int nocollider, int nocollideg, int nocollideb) { FILE * infile; int x, y; int r, g, b; char fullpath[1024]; assert(width % 4 == 0 && height % 4 == 0); // See FIXME above. if (strlen(directory) + strlen(filename) >= sizeof(fullpath)) // Check for buffer overflow on fullpath { fprintf(stderr, "Fatal error while loading %s:\n", filename); fprintf(stderr, "Size of directory name (%d chars) plus size of file name (%d chars)\n", strlen(directory), strlen(filename)); fprintf(stderr, "is too long (over %d chars), and would cause a buffer overflow...\n", sizeof(fullpath) - 1); cleanexit(1); } strcpy(fullpath, directory); strcat(fullpath, filename); if ((infile = fopen(fullpath, "rb")) == NULL) { fprintf(stderr, "Fatal error: Failed to open %s\n", fullpath); fprintf(stderr, "NOTE: If you need to locate the data directory,\n"); fprintf(stderr, "try komi --path /foo/bar/komidata/ or whatever,\n"); fprintf(stderr, "and BE SURE TO use the trailing slash.\n"); cleanexit(1); } fseek(infile, 0, SEEK_END); if (ftell(infile) != 54 + (width * height * 3)) { fprintf(stderr, "Fatal error: Sprite file %s seems to be mis-sized or in wrong format.\n", filename); fprintf(stderr, "Expected %d bytes, got %d\n", 54 + (width * height * 3), (int)ftell(infile)); cleanexit(1); } init_spriteimagemap(thesprite, width, height); thesprite->collisionmask = bitmask_create(width, height); if (thesprite->collisionmask == NULL) { fprintf(stderr, "Fatal error: Failed to create collision mask.\n"); cleanexit(1); } fseek(infile, 54, SEEK_SET); // The start of the actual data is at the 55th byte of a BMP file... if (SDL_MUSTLOCK(thesprite->pixelmap)) SDL_LockSurface(thesprite->pixelmap); for (y = height - 1; y >= 0; y--) { for (x = 0; x <= width - 1; x++) { b = getc(infile); g = getc(infile); r = getc(infile); setrgb(thesprite->pixelmap, x, y, r, g, b); if (r != hider || g != hideg || b != hideb) { if (r != nocollider || g != nocollideg || b != nocollideb) { bitmask_setbit(thesprite->collisionmask, x, y); } } } } if (SDL_MUSTLOCK(thesprite->pixelmap)) SDL_UnlockSurface(thesprite->pixelmap); SDL_SetColorKey(thesprite->pixelmap, SDL_SRCCOLORKEY, SDL_MapRGB(thesprite->pixelmap->format, hider, hideg, hideb)); fclose(infile); return; } komi-1.04/gfx.h0000644000175000001440000001545610075325104013610 0ustar allanusers00000000000000// gfx.h -- some drawing routines for SDL /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You 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 #include #include #define setrgb(screen, x, y, red, green, blue) putpixel(screen, x, y, SDL_MapRGB(screen->format, red, green, blue)) // From Bill Kendrick's GPL game Vectoroids (http://www.newbreedsoftware.com/vectoroids) // (though something similar exists on the SDL docs site) // Puts a pixel on the SDL surface. Surface should be locked. void putpixel(SDL_Surface * surface, int x, int y, Uint32 pixel) { int bpp; Uint8 * p; /* Assuming the X/Y values are within the bounds of this surface... */ if (x >= 0 && y >= 0 && x < surface->w && y < surface->h) { /* Determine bytes-per-pixel for the surface in question: */ bpp = surface->format->BytesPerPixel; /* Set a pointer to the exact location in memory of the pixel in question: */ p = (((Uint8 *) surface->pixels) + /* Start at beginning of RAM */ (y * surface->pitch) + /* Go down Y lines */ (x * bpp)); /* Go in X pixels */ /* Set the (correctly-sized) piece of data in the surface's RAM to the pixel value sent in: */ if (bpp == 1) { *p = pixel; } else if (bpp == 2) { *(Uint16 *)p = pixel; } else if (bpp == 3) { if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { p[0] = (pixel >> 16) & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = pixel & 0xff; } else { p[0] = pixel & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = (pixel >> 16) & 0xff; } } else if (bpp == 4) { *(Uint32 *)p = pixel; } } return; } void _line_straight (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue) { int pixels; int n; if (x1 == x2) { pixels = abs(y1 - y2) + 1; } else { pixels = abs(x1 - x2) + 1; } for (n = 0; n < pixels; n++) { setrgb(bitmapstruct, x1, y1, red, green, blue); if (x2 > x1) x1++; if (x2 < x1) x1--; if (y2 > y1) y1++; if (y2 < y1) y1--; } return; } // See http://195.195.128.170/staff/scotty/fcg/fcgline.htm for the ideas behind _line_gentle and _line_steep. void _line_gentle (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue) { int error; int DXtimes2, DYtimes2; int n; int additive; // What to add to y1 when error int temp; if (x1 > x2) { temp = x1; x1 = x2; x2 = temp; temp = y1; y1 = y2; y2 = temp; } error = 0; if (y1 < y2) { additive = 1; } else { additive = -1; } DYtimes2 = abs((y2 - y1) * 2); // Might be going up or down, so abs. DXtimes2 = (x2 - x1) * 2; // But we know we're going right. error = x1 - x2; for (n = x1; n <= x2; n++) { setrgb(bitmapstruct, n, y1, red, green, blue); error = error + DYtimes2; if (error > 0) { y1 = y1 + additive; error = error - DXtimes2; } } return; } void _line_steep (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue) { int error; int DXtimes2, DYtimes2; int n; int additive; // What to add to x1 when error int temp; if (y1 > y2) { temp = x1; x1 = x2; x2 = temp; temp = y1; y1 = y2; y2 = temp; } error = 0; if (x1 < x2) { additive = 1; } else { additive = -1; } DYtimes2 = (y2 - y1) * 2; // We know we're going down. DXtimes2 = abs((x2 - x1) * 2); // But we might be going left or right, so abs. error = y1 - y2; for (n = y1; n <= y2; n++) { setrgb(bitmapstruct, x1, n, red, green, blue); error = error + DXtimes2; if (error > 0) { x1 = x1 + additive; error = error - DYtimes2; } } return; } void line (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue) { // Lock the surface before calling. if (x1 == x2 || y1 == y2 || abs(x1 - x2) == abs(y1 - y2)) { _line_straight(bitmapstruct, x1, y1, x2, y2, red, green, blue); return; } if ((float) (fabs((float) (y2 - y1) / (float) (x2 - x1))) < 1) { _line_gentle(bitmapstruct, x1, y1, x2, y2, red, green, blue); } else { _line_steep(bitmapstruct, x1, y1, x2, y2, red, green, blue); } return; } void frect (SDL_Surface * bitmapstruct, int x1, int y1, int x2, int y2, int red, int green, int blue) { // This should be safe for unlocked surfaces, assuming SDL_FillRect() is safe... SDL_Rect therect; if ((x2 <= x1) || (y2 <= y1)) { fprintf(stderr, "Frect: Failed because of coordinate inversion.\n"); return; } therect.x = x1; therect.y = y1; therect.w = x2 - x1; therect.h = y2 - y1; SDL_FillRect(bitmapstruct, &therect, SDL_MapRGB(bitmapstruct->format, red, green, blue)); if (fastdraw) { updaterectsarray(x1, y1, x2 - x1, y2 - y1); } return; } void cls (SDL_Surface * bitmapstruct, int red, int green, int blue) { SDL_FillRect(bitmapstruct, NULL, SDL_MapRGB(bitmapstruct->format, red, green, blue)); return; } void updaterectsarray (int leftx, int topy, int width, int height) { int rightx; int bottomy; assert(rects >= 0 && rects < MAXRECTS); rightx = leftx + width; // rightx is actually one pixel past the rightmost pixel. bottomy = topy + height; // and bottomy is one past the bottommost pixel if (leftx < 0) leftx = 0; if (topy < 0) topy = 0; if (rightx > WIDTH) rightx = WIDTH; if (bottomy > HEIGHT) bottomy = HEIGHT; if (leftx < rightx && topy < bottomy) { width = rightx - leftx; height = bottomy - topy; updaterect[rects].x = leftx; updaterect[rects].y = topy; updaterect[rects].w = width; updaterect[rects].h = height; rects++; } return; } komi-1.04/CHANGELOG.txt0000644000175000001440000001112610105750720014671 0ustar allanusers00000000000000From 1.03 to 1.04 ----------------- * Clean up totally atrocious lightning code, which was using 3 almost-identical functions. * Print last score for session at titlebar when in main menu. * Test for direct collision between Komi and electras' lightning. Shouldn't matter much. * Actually check that the virtual screen got created before trying to use it (ie check it ain't == NULL) * Report DATAPATH when sent -v or -h command-line options. * Reduce amount of money in levels > 30. From 1.02 to 1.03 ----------------- * For compatibility, remove use of snprintf() which seems to be a C99 specific function. * --gfxdetails argument will print some details about the SDL surfaces. * It will also print FPS information when possible. * Makefile does install -d for the BINPATH * All enemies now can be in algorithmically generated (non-predefined) levels. * If reached via normal game, algorithmic generation of levels starts with easier levels. From 1.01 to 1.02 ----------------- * Fix a couple of syntax errors that showed up on Mac OS 9 in MPW. * Remove --shuffle command line option in favour of clickable button in menu. * Save shuffle choice to ~/.komirc From 1.0 to 1.01 ---------------- * Save prefs file (now called ".komirc") into home directory, if possible. Thanks to Steve Kemp. From 0.95b to 1.0 ----------------- * Removed last uses of direct pixel access without locking. * rect() has thus been entirely removed. * line() only called after surface locked. * Added Bomber enemy type. * Proper behaviour if player presses escape while screen is fading out after death or level completion. * Levels defined up to 30. * Added Sniper enemy type (first appearance is level 16). * More level changes. From 0.9b to 0.95b ------------------ * Screenshot key moved to F12. Successful generation of screenshot plays a sound. * Q and W keys now move Komi left and right (for left handers). * Return key now extends tongue. * Failure to fully initialise keymap struct fixed. * Use SDL_UpdateRect instead of SDL_Flip. * Some level changes. * Create empty "prefs" file on installation, with read-write permissions for all. * Fixed issue where lasergun sounds wouldn't play if level was frozen, because the call to the sound-playing code was in the wrong place. * Level freeze affects enemy shots. * No high score when cheating. * Track actual mouse position. Use this for highlighted buttons in main menu. * Music infrastructure partially added, but no music is played yet... * More level fiddling, some levels moved about. * Collision detection slightly more liberal with the coins and diamonds. * Add --shuffle option for the levels. * Made --hog option undocumented. It actually seems to make things worse, often. * Using SDL_Surfaces to store the sprites, and SDL_BlitSurface() to draw them. Gives me about a 15% speedup. * Lock surfaces before directly accessing pixels, if required. From 0.8b to 0.9b ----------------- * Increased sound buffer size from 512 to 2048 - may prevent scratching observed on Windows. * Fixed a few possible buffer overflows introduced by sprintf() and strcat(). Thanks to Steve Kemp. * More complete acknowledgements in the title screen. * Level 7 was too hard - reduced enemies by 1. Still hard, but doable with a bit of patience. * Now save the speed setting in "prefs". * Man page by Steve Kemp. * Give audio warning of last life in fullscreen mode (since you can't see the display). Thanks to Amy Beeston. * Save highscore in "prefs". * Save prefs version in "prefs". From 0.7b to 0.8b ----------------- * Save screenshot to current directory instead of data directory. * Added freeze and fast-tongue-retract powerups. * Some changes in sprites. * Added wrapball enemy type (though it's only in one level). * Levels specifically defined up to level 28. If you get this far you are a God. :-) From 0.6a to 0.7b ----------------- * Added eyeball enemy type. * Extra life every 1000 points. * Added some comments to the code. * Can now set delay between frames directly with "--delay 10" (for example). * Can adjust speed directly in the title screen. From 0.5a to 0.6a ----------------- * Implemented "--fastdraw" option, which means only altered parts of the screen should get redrawn every frame. * Implemented "--hog" option which refuses to give up the CPU mid-level. * Changed shape of Komi's tongue so it looks a bit less phallic. Now looks oddly snake-like, but never mind. :-/ * Sprite collision optimised a bit - no checking bitmasks if sprites are obviously not touching due to their locations. * Using Ulf Ekstrom's Bitmask 1.3 functions instead of 1.0. * Removed #include for SDL-image since it wasn't being used. * Added powerups. komi-1.04/WINDOWS.txt0000644000175000001440000000141510075325104014534 0ustar allanusers00000000000000Compilation on Windows via MinGW and msys is known to work. But you must: * Install the SDL and SDL_Mixer development files. * Alter the Makefile so that you have: DATAPATH=komidata/ instead of: DATAPATH=/usr/local/share/komidata/ * Have in your path the program sdl-config. This seems to be distributed in the SDL development libraries for MinGW as i386-mingw32msvc-sdl-config so you'll need to rename it. * Run make with msys. * Once compiled, you may need to add the SDL.dll and SDL_mixer.dll files to the directory the komi application is in. In my rather unscientific test, the Windows version seemed to be quite a bit slower than the Linux version. Is it OK for you on Windows? Email me feedback to acrossman@users.sourceforge.net komi-1.04/komi.60000644000175000001440000000424310075325104013671 0ustar allanusers00000000000000.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH KOMI 6 "June 20, 2004" .\" Please adjust this date whenever revising the manpage. .\" .\" 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 komi \- A simple game for one player. .SH SYNOPSIS .B komi .RI [ options ] .br .SH DESCRIPTION This manual page documents briefly the .B komi game. .SH PLAYING Using the left and right arrow keys you may guide Komi the space frog from left to right across the bottom of the screen. Left-handers can use Q and W. Use the space bar to extend Komi's long tongue and capture the floating orange prizes, whilst avoiding the predators. .SH OPTIONS The following command line options are supported: .TP \fB\-\-delay \fR Wait for x milliseconds between frames, so lower is faster. .TP \fB\-\-fastdraw\fR Use a faster drawing method. Forces starfield to be off. .TP \fB\-\-fullscreen\fR Run the game in fullscreen mode, rather than in a window of its own. .TP \fB\-\-nosound\fR .Sp Disable all sound effects. .TP \fB\-\-nostars\fR Disable the starfield simulation in the background of the game. .TP \fB\-\-resetprefs\fR Reset preferences file (which includes the high score). .TP \fB\-\-copying\fR Show the terms under which .B komi may be copied. .TP \fB\-\-help\fR Display the command line options. .TP \fB\-\-version\fR Show the version number of .B komi .SH WEBSITE The game has a website where you can find updates and source code. See the following URL for details: .TP http://komi.sourceforge.net/ .SH AUTHOR This manual page was written by Steve Kemp , for the Debian project (but may be used by others). .B komi was written by Allan Crossman .