wolf4sdl-1.7+svn262/0000755000175000017500000000000011644522776013413 5ustar fabianfabianwolf4sdl-1.7+svn262/config.default0000644000175000017500000000001611056634156016214 0ustar fabianfabianCFLAGS += -O2 wolf4sdl-1.7+svn262/license-mame.txt0000644000175000017500000000333510740027511016476 0ustar fabianfabianCopyright (c) 1997-2005, Nicola Salmoria and the MAME team All rights reserved. Redistribution and use of this code or any derivative works are permitted provided that the following conditions are met: * Redistributions may not be sold, nor may they be used in a commercial product or activity. * Redistributions that are modified from the original source must include the complete source code, including the source code for all components used by a binary built from the modified sources. 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. * Redistributions must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. wolf4sdl-1.7+svn262/Wolf4SDL.dsw0000644000175000017500000000103511004437265015453 0ustar fabianfabianMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "Wolf4SDL"=".\Wolf4SDL.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### wolf4sdl-1.7+svn262/wl_main.cpp0000644000175000017500000014331611564046072015544 0ustar fabianfabian// WL_MAIN.C #ifdef _WIN32 #include #else #include #endif #include "wl_def.h" #pragma hdrstop #include "wl_atmos.h" #include /* ============================================================================= WOLFENSTEIN 3-D An Id Software production by John Carmack ============================================================================= */ extern byte signon[]; /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #define FOCALLENGTH (0x5700l) // in global coordinates #define VIEWGLOBAL 0x10000 // globals visable flush to wall #define VIEWWIDTH 256 // size of view window #define VIEWHEIGHT 144 /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ char str[80]; int dirangle[9] = {0,ANGLES/8,2*ANGLES/8,3*ANGLES/8,4*ANGLES/8, 5*ANGLES/8,6*ANGLES/8,7*ANGLES/8,ANGLES}; // // proejection variables // fixed focallength; unsigned screenofs; int viewscreenx, viewscreeny; int viewwidth; int viewheight; short centerx; int shootdelta; // pixels away from centerx a target can be fixed scale; int32_t heightnumerator; void Quit (const char *error,...); boolean startgame; boolean loadedgame; int mouseadjustment; char configdir[256] = ""; char configname[13] = "config."; // // Command line parameter variables // boolean param_debugmode = false; boolean param_nowait = false; int param_difficulty = 1; // default is "normal" int param_tedlevel = -1; // default is not to start a level int param_joystickindex = 0; #if defined(_arch_dreamcast) int param_joystickhat = 0; int param_samplerate = 11025; // higher samplerates result in "out of memory" int param_audiobuffer = 4096 / (44100 / param_samplerate); #elif defined(GP2X_940) int param_joystickhat = -1; int param_samplerate = 11025; // higher samplerates result in "out of memory" int param_audiobuffer = 128; #else int param_joystickhat = -1; int param_samplerate = 44100; int param_audiobuffer = 2048 / (44100 / param_samplerate); #endif int param_mission = 0; boolean param_goodtimes = false; boolean param_ignorenumchunks = false; /* ============================================================================= LOCAL VARIABLES ============================================================================= */ /* ==================== = = ReadConfig = ==================== */ void ReadConfig(void) { SDMode sd; SMMode sm; SDSMode sds; char configpath[300]; #ifdef _arch_dreamcast DC_LoadFromVMU(configname); #endif if(configdir[0]) snprintf(configpath, sizeof(configpath), "%s/%s", configdir, configname); else strcpy(configpath, configname); const int file = open(configpath, O_RDONLY | O_BINARY); if (file != -1) { // // valid config file // word tmp; read(file,&tmp,sizeof(tmp)); if(tmp!=0xfefa) { close(file); goto noconfig; } read(file,Scores,sizeof(HighScore) * MaxScores); read(file,&sd,sizeof(sd)); read(file,&sm,sizeof(sm)); read(file,&sds,sizeof(sds)); read(file,&mouseenabled,sizeof(mouseenabled)); read(file,&joystickenabled,sizeof(joystickenabled)); boolean dummyJoypadEnabled; read(file,&dummyJoypadEnabled,sizeof(dummyJoypadEnabled)); boolean dummyJoystickProgressive; read(file,&dummyJoystickProgressive,sizeof(dummyJoystickProgressive)); int dummyJoystickPort = 0; read(file,&dummyJoystickPort,sizeof(dummyJoystickPort)); read(file,dirscan,sizeof(dirscan)); read(file,buttonscan,sizeof(buttonscan)); read(file,buttonmouse,sizeof(buttonmouse)); read(file,buttonjoy,sizeof(buttonjoy)); read(file,&viewsize,sizeof(viewsize)); read(file,&mouseadjustment,sizeof(mouseadjustment)); close(file); if ((sd == sdm_AdLib || sm == smm_AdLib) && !AdLibPresent && !SoundBlasterPresent) { sd = sdm_PC; sm = smm_Off; } if ((sds == sds_SoundBlaster && !SoundBlasterPresent)) sds = sds_Off; // make sure values are correct if(mouseenabled) mouseenabled=true; if(joystickenabled) joystickenabled=true; if (!MousePresent) mouseenabled = false; if (!IN_JoyPresent()) joystickenabled = false; if(mouseadjustment<0) mouseadjustment=0; else if(mouseadjustment>9) mouseadjustment=9; if(viewsize<4) viewsize=4; else if(viewsize>21) viewsize=21; MainMenu[6].active=1; MainItems.curpos=0; } else { // // no config file, so select by hardware // noconfig: if (SoundBlasterPresent || AdLibPresent) { sd = sdm_AdLib; sm = smm_AdLib; } else { sd = sdm_PC; sm = smm_Off; } if (SoundBlasterPresent) sds = sds_SoundBlaster; else sds = sds_Off; if (MousePresent) mouseenabled = true; if (IN_JoyPresent()) joystickenabled = true; viewsize = 19; // start with a good size mouseadjustment=5; } SD_SetMusicMode (sm); SD_SetSoundMode (sd); SD_SetDigiDevice (sds); } /* ==================== = = WriteConfig = ==================== */ void WriteConfig(void) { char configpath[300]; #ifdef _arch_dreamcast fs_unlink(configname); #endif if(configdir[0]) snprintf(configpath, sizeof(configpath), "%s/%s", configdir, configname); else strcpy(configpath, configname); const int file = open(configpath, O_CREAT | O_WRONLY | O_BINARY, 0644); if (file != -1) { word tmp=0xfefa; write(file,&tmp,sizeof(tmp)); write(file,Scores,sizeof(HighScore) * MaxScores); write(file,&SoundMode,sizeof(SoundMode)); write(file,&MusicMode,sizeof(MusicMode)); write(file,&DigiMode,sizeof(DigiMode)); write(file,&mouseenabled,sizeof(mouseenabled)); write(file,&joystickenabled,sizeof(joystickenabled)); boolean dummyJoypadEnabled = false; write(file,&dummyJoypadEnabled,sizeof(dummyJoypadEnabled)); boolean dummyJoystickProgressive = false; write(file,&dummyJoystickProgressive,sizeof(dummyJoystickProgressive)); int dummyJoystickPort = 0; write(file,&dummyJoystickPort,sizeof(dummyJoystickPort)); write(file,dirscan,sizeof(dirscan)); write(file,buttonscan,sizeof(buttonscan)); write(file,buttonmouse,sizeof(buttonmouse)); write(file,buttonjoy,sizeof(buttonjoy)); write(file,&viewsize,sizeof(viewsize)); write(file,&mouseadjustment,sizeof(mouseadjustment)); close(file); } #ifdef _arch_dreamcast DC_SaveToVMU(configname, NULL); #endif } //=========================================================================== /* ===================== = = NewGame = = Set up new game to start from the beginning = ===================== */ void NewGame (int difficulty,int episode) { memset (&gamestate,0,sizeof(gamestate)); gamestate.difficulty = difficulty; gamestate.weapon = gamestate.bestweapon = gamestate.chosenweapon = wp_pistol; gamestate.health = 100; gamestate.ammo = STARTAMMO; gamestate.lives = 3; gamestate.nextextra = EXTRAPOINTS; gamestate.episode=episode; startgame = true; } //=========================================================================== void DiskFlopAnim(int x,int y) { static int8_t which=0; if (!x && !y) return; VWB_DrawPic(x,y,C_DISKLOADING1PIC+which); VW_UpdateScreen(); which^=1; } int32_t DoChecksum(byte *source,unsigned size,int32_t checksum) { unsigned i; for (i=0;inext) size += sizeof(*ob); size += sizeof(nullobj); size += sizeof(gamestate) + sizeof(LRstruct)*LRpack + sizeof(tilemap) + sizeof(actorat) + sizeof(laststatobj) + sizeof(statobjlist) + sizeof(doorposition) + sizeof(pwallstate) + sizeof(pwalltile) + sizeof(pwallx) + sizeof(pwally) + sizeof(pwalldir) + sizeof(pwallpos); if (avail < size) { Message(STR_NOSPACE1"\n"STR_NOSPACE2); return false; }*/ checksum = 0; DiskFlopAnim(x,y); fwrite(&gamestate,sizeof(gamestate),1,file); checksum = DoChecksum((byte *)&gamestate,sizeof(gamestate),checksum); DiskFlopAnim(x,y); fwrite(&LevelRatios[0],sizeof(LRstruct)*LRpack,1,file); checksum = DoChecksum((byte *)&LevelRatios[0],sizeof(LRstruct)*LRpack,checksum); DiskFlopAnim(x,y); fwrite(tilemap,sizeof(tilemap),1,file); checksum = DoChecksum((byte *)tilemap,sizeof(tilemap),checksum); DiskFlopAnim(x,y); int i; for(i=0;inext; DiskFlopAnim(x,y); for (; ob ; ob=ob->next) { memcpy(&nullobj,ob,sizeof(nullobj)); nullobj.state=(statetype *) ((uintptr_t)nullobj.state-(uintptr_t)&s_grdstand); fwrite(&nullobj,sizeof(nullobj),1,file); } nullobj.active = ac_badobject; // end of file marker DiskFlopAnim(x,y); fwrite(&nullobj,sizeof(nullobj),1,file); DiskFlopAnim(x,y); word laststatobjnum=(word) (laststatobj-statobjlist); fwrite(&laststatobjnum,sizeof(laststatobjnum),1,file); checksum = DoChecksum((byte *)&laststatobjnum,sizeof(laststatobjnum),checksum); DiskFlopAnim(x,y); for(i=0;istate=(statetype *) ((uintptr_t)player->state+(uintptr_t)&s_player); while (1) { DiskFlopAnim(x,y); fread (&nullobj,sizeof(nullobj),1,file); if (nullobj.active == ac_badobject) break; GetNewActor (); nullobj.state=(statetype *) ((uintptr_t)nullobj.state+(uintptr_t)&s_grdstand); // don't copy over the links memcpy (newobj,&nullobj,sizeof(nullobj)-8); } DiskFlopAnim(x,y); word laststatobjnum; fread (&laststatobjnum,sizeof(laststatobjnum),1,file); laststatobj=statobjlist+laststatobjnum; checksum = DoChecksum((byte *)&laststatobjnum,sizeof(laststatobjnum),checksum); DiskFlopAnim(x,y); for(i=0;i= (AREATILE+NUMMAPS))) { if (*map >= AREATILE) tile = *map; if (*(map-1-mapwidth) >= AREATILE) tile = *(map-1-mapwidth); if (*(map-1+mapwidth) >= AREATILE) tile = *(map-1+mapwidth); if ( *(map-2) >= AREATILE) tile = *(map-2); *(map-1) = tile; *(obj-1) = 0; } } } Thrust(0,0); // set player->areanumber to the floortile you're standing on fread (&oldchecksum,sizeof(oldchecksum),1,file); fread (&lastgamemusicoffset,sizeof(lastgamemusicoffset),1,file); if(lastgamemusicoffset<0) lastgamemusicoffset=0; if (oldchecksum != checksum) { Message(STR_SAVECHT1"\n" STR_SAVECHT2"\n" STR_SAVECHT3"\n" STR_SAVECHT4); IN_ClearKeysDown(); IN_Ack(); gamestate.oldscore = gamestate.score = 0; gamestate.lives = 1; gamestate.weapon = gamestate.chosenweapon = gamestate.bestweapon = wp_pistol; gamestate.ammo = 8; } return true; } //=========================================================================== /* ========================== = = ShutdownId = = Shuts down all ID_?? managers = ========================== */ void ShutdownId (void) { US_Shutdown (); // This line is completely useless... SD_Shutdown (); PM_Shutdown (); IN_Shutdown (); VW_Shutdown (); CA_Shutdown (); #if defined(GP2X_940) GP2X_Shutdown(); #endif } //=========================================================================== /* ================== = = BuildTables = = Calculates: = = scale projection constant = sintable/costable overlapping fractional tables = ================== */ const float radtoint = (float)(FINEANGLES/2/PI); void BuildTables (void) { // // calculate fine tangents // int i; for(i=0;i>2 // heightnumerator = (TILEGLOBAL*scale)>>6; // // calculate the angle offset from view angle of each pixel's ray // for (i=0;i=0) { if (lastsong >= 0) MusicMenu[start+lastsong].active = 1; StartCPMusic(songs[start + which]); MusicMenu[start+which].active = 2; DrawMenu (&MusicItems,&MusicMenu[start]); VW_UpdateScreen(); lastsong = which; } } while(which>=0); MenuFadeOut(); IN_ClearKeysDown(); #ifdef SPEAR UnCacheLump (BACKDROP_LUMP_START,BACKDROP_LUMP_END); #else UnCacheLump (CONTROLS_LUMP_START,CONTROLS_LUMP_END); #endif } #endif /* ========================== = = InitGame = = Load a few things right away = ========================== */ static void InitGame() { #ifndef SPEARDEMO boolean didjukebox=false; #endif // initialize SDL #if defined _WIN32 putenv("SDL_VIDEODRIVER=directx"); #endif if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { printf("Unable to init SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); int numJoysticks = SDL_NumJoysticks(); if(param_joystickindex && (param_joystickindex < -1 || param_joystickindex >= numJoysticks)) { if(!numJoysticks) printf("No joysticks are available to SDL!\n"); else printf("The joystick index must be between -1 and %i!\n", numJoysticks - 1); exit(1); } #if defined(GP2X_940) GP2X_MemoryInit(); #endif SignonScreen (); #if defined _WIN32 if(!fullscreen) { struct SDL_SysWMinfo wmInfo; SDL_VERSION(&wmInfo.version); if(SDL_GetWMInfo(&wmInfo) != -1) { HWND hwndSDL = wmInfo.window; DWORD style = GetWindowLong(hwndSDL, GWL_STYLE) & ~WS_SYSMENU; SetWindowLong(hwndSDL, GWL_STYLE, style); SetWindowPos(hwndSDL, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); } } #endif VW_UpdateScreen(); VH_Startup (); IN_Startup (); PM_Startup (); SD_Startup (); CA_Startup (); US_Startup (); // TODO: Will any memory checking be needed someday?? #ifdef NOTYET #ifndef SPEAR if (mminfo.mainmem < 235000L) #else if (mminfo.mainmem < 257000L && !MS_CheckParm("debugmode")) #endif { byte *screen; CA_CacheGrChunk (ERRORSCREEN); screen = grsegs[ERRORSCREEN]; ShutdownId(); /* memcpy((byte *)0xb8000,screen+7+7*160,17*160); gotoxy (1,23);*/ exit(1); } #endif // // build some tables // InitDigiMap (); ReadConfig (); SetupSaveGames(); // // HOLDING DOWN 'M' KEY? // IN_ProcessEvents(); #ifndef SPEARDEMO if (Keyboard[sc_M]) { DoJukebox(); didjukebox=true; } else #endif // // draw intro screen stuff // IntroScreen (); #ifdef _arch_dreamcast //TODO: VMU Selection Screen #endif // // load in and lock down some basic chunks // CA_CacheGrChunk(STARTFONT); CA_CacheGrChunk(STATUSBARPIC); LoadLatchMem (); BuildTables (); // trig tables SetupWalls (); NewViewSize (viewsize); // // initialize variables // InitRedShifts (); #ifndef SPEARDEMO if(!didjukebox) #endif FinishSignon(); #ifdef NOTYET vdisp = (byte *) (0xa0000+PAGE1START); vbuf = (byte *) (0xa0000+PAGE2START); #endif } //=========================================================================== /* ========================== = = SetViewSize = ========================== */ boolean SetViewSize (unsigned width, unsigned height) { viewwidth = width&~15; // must be divisable by 16 viewheight = height&~1; // must be even centerx = viewwidth/2-1; shootdelta = viewwidth/10; if((unsigned) viewheight == screenHeight) viewscreenx = viewscreeny = screenofs = 0; else { viewscreenx = (screenWidth-viewwidth) / 2; viewscreeny = (screenHeight-scaleFactor*STATUSLINES-viewheight)/2; screenofs = viewscreeny*screenWidth+viewscreenx; } // // calculate trace angles and projection constants // CalcProjection (FOCALLENGTH); return true; } void ShowViewSize (int width) { int oldwidth,oldheight; oldwidth = viewwidth; oldheight = viewheight; if(width == 21) { viewwidth = screenWidth; viewheight = screenHeight; VWB_BarScaledCoord (0, 0, screenWidth, screenHeight, 0); } else if(width == 20) { viewwidth = screenWidth; viewheight = screenHeight - scaleFactor*STATUSLINES; DrawPlayBorder (); } else { viewwidth = width*16*screenWidth/320; viewheight = (int) (width*16*HEIGHTRATIO*screenHeight/200); DrawPlayBorder (); } viewwidth = oldwidth; viewheight = oldheight; } void NewViewSize (int width) { viewsize = width; if(viewsize == 21) SetViewSize(screenWidth, screenHeight); else if(viewsize == 20) SetViewSize(screenWidth, screenHeight - scaleFactor * STATUSLINES); else SetViewSize(width*16*screenWidth/320, (unsigned) (width*16*HEIGHTRATIO*screenHeight/200)); } //=========================================================================== /* ========================== = = Quit = ========================== */ void Quit (const char *errorStr, ...) { #ifdef NOTYET byte *screen; #endif char error[256]; if(errorStr != NULL) { va_list vlist; va_start(vlist, errorStr); vsprintf(error, errorStr, vlist); va_end(vlist); } else error[0] = 0; if (!pictable) // don't try to display the red box before it's loaded { ShutdownId(); if (error && *error) { #ifdef NOTYET SetTextCursor(0,0); #endif puts(error); #ifdef NOTYET SetTextCursor(0,2); #endif VW_WaitVBL(100); } exit(1); } if (!error || !*error) { #ifdef NOTYET #ifndef JAPAN CA_CacheGrChunk (ORDERSCREEN); screen = grsegs[ORDERSCREEN]; #endif #endif WriteConfig (); } #ifdef NOTYET else { CA_CacheGrChunk (ERRORSCREEN); screen = grsegs[ERRORSCREEN]; } #endif ShutdownId (); if (error && *error) { #ifdef NOTYET memcpy((byte *)0xb8000,screen+7,7*160); SetTextCursor(9,3); #endif puts(error); #ifdef NOTYET SetTextCursor(0,7); #endif VW_WaitVBL(200); exit(1); } else if (!error || !(*error)) { #ifdef NOTYET #ifndef JAPAN memcpy((byte *)0xb8000,screen+7,24*160); // 24 for SPEAR/UPLOAD compatibility #endif SetTextCursor(0,23); #endif } exit(0); } //=========================================================================== /* ===================== = = DemoLoop = ===================== */ static void DemoLoop() { int LastDemo = 0; // // check for launch from ted // if (param_tedlevel != -1) { param_nowait = true; EnableEndGameMenuItem(); NewGame(param_difficulty,0); #ifndef SPEAR gamestate.episode = param_tedlevel/10; gamestate.mapon = param_tedlevel%10; #else gamestate.episode = 0; gamestate.mapon = param_tedlevel; #endif GameLoop(); Quit (NULL); } // // main game cycle // #ifndef DEMOTEST #ifndef UPLOAD #ifndef GOODTIMES #ifndef SPEAR #ifndef JAPAN if (!param_nowait) NonShareware(); #endif #else #ifndef GOODTIMES #ifndef SPEARDEMO extern void CopyProtection(void); if(!param_goodtimes) CopyProtection(); #endif #endif #endif #endif #endif StartCPMusic(INTROSONG); #ifndef JAPAN if (!param_nowait) PG13 (); #endif #endif while (1) { while (!param_nowait) { // // title page // #ifndef DEMOTEST #ifdef SPEAR SDL_Color pal[256]; CA_CacheGrChunk (TITLEPALETTE); VL_ConvertPalette(grsegs[TITLEPALETTE], pal, 256); CA_CacheGrChunk (TITLE1PIC); VWB_DrawPic (0,0,TITLE1PIC); UNCACHEGRCHUNK (TITLE1PIC); CA_CacheGrChunk (TITLE2PIC); VWB_DrawPic (0,80,TITLE2PIC); UNCACHEGRCHUNK (TITLE2PIC); VW_UpdateScreen (); VL_FadeIn(0,255,pal,30); UNCACHEGRCHUNK (TITLEPALETTE); #else CA_CacheScreen (TITLEPIC); VW_UpdateScreen (); VW_FadeIn(); #endif if (IN_UserInput(TickBase*15)) break; VW_FadeOut(); // // credits page // CA_CacheScreen (CREDITSPIC); VW_UpdateScreen(); VW_FadeIn (); if (IN_UserInput(TickBase*10)) break; VW_FadeOut (); // // high scores // DrawHighScores (); VW_UpdateScreen (); VW_FadeIn (); if (IN_UserInput(TickBase*10)) break; #endif // // demo // #ifndef SPEARDEMO PlayDemo (LastDemo++%4); #else PlayDemo (0); #endif if (playstate == ex_abort) break; VW_FadeOut(); if(screenHeight % 200 != 0) VL_ClearScreen(0); StartCPMusic(INTROSONG); } VW_FadeOut (); #ifdef DEBUGKEYS if (Keyboard[sc_Tab] && param_debugmode) RecordDemo (); else US_ControlPanel (0); #else US_ControlPanel (0); #endif if (startgame || loadedgame) { GameLoop (); if(!param_nowait) { VW_FadeOut(); StartCPMusic(INTROSONG); } } } } //=========================================================================== #define IFARG(str) if(!strcmp(arg, (str))) void CheckParameters(int argc, char *argv[]) { bool hasError = false, showHelp = false; bool sampleRateGiven = false, audioBufferGiven = false; int defaultSampleRate = param_samplerate; for(int i = 1; i < argc; i++) { char *arg = argv[i]; #ifndef SPEAR IFARG("--goobers") #else IFARG("--debugmode") #endif param_debugmode = true; else IFARG("--baby") param_difficulty = 0; else IFARG("--easy") param_difficulty = 1; else IFARG("--normal") param_difficulty = 2; else IFARG("--hard") param_difficulty = 3; else IFARG("--nowait") param_nowait = true; else IFARG("--tedlevel") { if(++i >= argc) { printf("The tedlevel option is missing the level argument!\n"); hasError = true; } else param_tedlevel = atoi(argv[i]); } else IFARG("--windowed") fullscreen = false; else IFARG("--windowed-mouse") { fullscreen = false; forcegrabmouse = true; } else IFARG("--res") { if(i + 2 >= argc) { printf("The res option needs the width and/or the height argument!\n"); hasError = true; } else { screenWidth = atoi(argv[++i]); screenHeight = atoi(argv[++i]); unsigned factor = screenWidth / 320; if(screenWidth % 320 || screenHeight != 200 * factor && screenHeight != 240 * factor) printf("Screen size must be a multiple of 320x200 or 320x240!\n"), hasError = true; } } else IFARG("--resf") { if(i + 2 >= argc) { printf("The resf option needs the width and/or the height argument!\n"); hasError = true; } else { screenWidth = atoi(argv[++i]); screenHeight = atoi(argv[++i]); if(screenWidth < 320) printf("Screen width must be at least 320!\n"), hasError = true; if(screenHeight < 200) printf("Screen height must be at least 200!\n"), hasError = true; } } else IFARG("--bits") { if(++i >= argc) { printf("The bits option is missing the color depth argument!\n"); hasError = true; } else { screenBits = atoi(argv[i]); switch(screenBits) { case 8: case 16: case 24: case 32: break; default: printf("Screen color depth must be 8, 16, 24, or 32!\n"); hasError = true; break; } } } else IFARG("--nodblbuf") usedoublebuffering = false; else IFARG("--extravbls") { if(++i >= argc) { printf("The extravbls option is missing the vbls argument!\n"); hasError = true; } else { extravbls = atoi(argv[i]); if(extravbls < 0) { printf("Extravbls must be positive!\n"); hasError = true; } } } else IFARG("--joystick") { if(++i >= argc) { printf("The joystick option is missing the index argument!\n"); hasError = true; } else param_joystickindex = atoi(argv[i]); // index is checked in InitGame } else IFARG("--joystickhat") { if(++i >= argc) { printf("The joystickhat option is missing the index argument!\n"); hasError = true; } else param_joystickhat = atoi(argv[i]); } else IFARG("--samplerate") { if(++i >= argc) { printf("The samplerate option is missing the rate argument!\n"); hasError = true; } else param_samplerate = atoi(argv[i]); sampleRateGiven = true; } else IFARG("--audiobuffer") { if(++i >= argc) { printf("The audiobuffer option is missing the size argument!\n"); hasError = true; } else param_audiobuffer = atoi(argv[i]); audioBufferGiven = true; } else IFARG("--mission") { if(++i >= argc) { printf("The mission option is missing the mission argument!\n"); hasError = true; } else { param_mission = atoi(argv[i]); if(param_mission < 0 || param_mission > 3) { printf("The mission option must be between 0 and 3!\n"); hasError = true; } } } else IFARG("--configdir") { if(++i >= argc) { printf("The configdir option is missing the dir argument!\n"); hasError = true; } else { size_t len = strlen(argv[i]); if(len + 2 > sizeof(configdir)) { printf("The config directory is too long!\n"); hasError = true; } else { strcpy(configdir, argv[i]); if(argv[i][len] != '/' && argv[i][len] != '\\') strcat(configdir, "/"); } } } else IFARG("--goodtimes") param_goodtimes = true; else IFARG("--ignorenumchunks") param_ignorenumchunks = true; else IFARG("--help") showHelp = true; else hasError = true; } if(hasError || showHelp) { if(hasError) printf("\n"); printf( "Wolf4SDL v1.7 ($Revision: 257 $)\n" "Ported by Chaos-Software (http://www.chaos-software.de.vu)\n" "Original Wolfenstein 3D by id Software\n\n" "Usage: Wolf4SDL [options]\n" "Options:\n" " --help This help page\n" " --tedlevel Starts the game in the given level\n" " --baby Sets the difficulty to baby for tedlevel\n" " --easy Sets the difficulty to easy for tedlevel\n" " --normal Sets the difficulty to normal for tedlevel\n" " --hard Sets the difficulty to hard for tedlevel\n" " --nowait Skips intro screens\n" " --windowed[-mouse] Starts the game in a window [and grabs mouse]\n" " --res Sets the screen resolution\n" " (must be multiple of 320x200 or 320x240)\n" " --resf Sets any screen resolution >= 320x200\n" " (which may result in graphic errors)\n" " --bits Sets the screen color depth\n" " (use this when you have palette/fading problems\n" " allowed: 8, 16, 24, 32, default: \"best\" depth)\n" " --nodblbuf Don't use SDL's double buffering\n" " --extravbls Sets a delay after each frame, which may help to\n" " reduce flickering (unit is currently 8 ms, default: 0)\n" " --joystick Use the index-th joystick if available\n" " (-1 to disable joystick, default: 0)\n" " --joystickhat Enables movement with the given coolie hat\n" " --samplerate Sets the sound sample rate (given in Hz, default: %i)\n" " --audiobuffer Sets the size of the audio buffer (-> sound latency)\n" " (given in bytes, default: 2048 / (44100 / samplerate))\n" " --ignorenumchunks Ignores the number of chunks in VGAHEAD.*\n" " (may be useful for some broken mods)\n" " --configdir Directory where config file and save games are stored\n" #if defined(_arch_dreamcast) || defined(_WIN32) " (default: current directory)\n" #else " (default: $HOME/.wolf4sdl)\n" #endif #if defined(SPEAR) && !defined(SPEARDEMO) " --mission Mission number to play (0-3)\n" " (default: 0 -> .sod, 1-3 -> .sd*)\n" " --goodtimes Disable copy protection quiz\n" #endif , defaultSampleRate ); exit(1); } if(sampleRateGiven && !audioBufferGiven) param_audiobuffer = 2048 / (44100 / param_samplerate); } /* ========================== = = main = ========================== */ int main (int argc, char *argv[]) { #if defined(_arch_dreamcast) DC_Init(); #else CheckParameters(argc, argv); #endif CheckForEpisodes(); InitGame(); DemoLoop(); Quit("Demo loop exited???"); return 1; } wolf4sdl-1.7+svn262/signon.cpp0000644000175000017500000240132611004437265015410 0ustar fabianfabian#include "wl_def.h" #ifndef SPEAR byte signon[] = { 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x04,0x22,0x24,0x21,0x22,0x23,0x21,0x22,0x04,0x25,0x25,0x22,0x22,0x24,0x22,0x22, 0x26,0x22,0x25,0x22,0x21,0x25,0x23,0x21,0x22,0x22,0x22,0x21,0x25,0x22,0x25,0x24, 0x25,0x22,0x21,0x22,0x22,0x21,0x24,0x23,0x04,0x28,0x29,0x28,0x29,0x23,0x26,0x25, 0x26,0x22,0x04,0x23,0x23,0x26,0x24,0x23,0x25,0x25,0x23,0x23,0x04,0x23,0x25,0x04, 0x28,0x25,0x23,0x24,0x22,0x25,0x28,0x28,0x28,0x23,0x23,0x04,0x23,0x22,0x23,0x25, 0x23,0x25,0x25,0x04,0x22,0x22,0x21,0x23,0x23,0x25,0x25,0x22,0x23,0x25,0x26,0x23, 0x29,0x29,0x22,0x24,0x23,0x22,0x04,0x25,0x22,0x04,0x23,0x23,0x22,0x23,0x25,0x24, 0x23,0x23,0x23,0x25,0x24,0x28,0x23,0x22,0x23,0x23,0x22,0x24,0x25,0x22,0x04,0x22, 0x22,0x24,0x04,0x24,0x24,0x24,0x24,0x25,0x24,0x28,0x2A,0x23,0x22,0x26,0x22,0x26, 0x25,0x22,0x22,0x26,0x28,0x26,0x28,0x28,0x24,0x24,0x25,0x22,0x24,0x25,0x22,0x25, 0x25,0x25,0x26,0x22,0x25,0x24,0x24,0x24,0x25,0x24,0x25,0x22,0x04,0x24,0x25,0x25, 0x26,0x24,0x22,0x26,0x26,0x24,0x24,0x23,0x04,0x22,0x25,0x28,0x24,0x26,0x22,0x26, 0x25,0x26,0x2A,0x28,0x23,0x25,0x25,0x25,0x23,0x28,0x25,0x25,0x04,0x25,0x24,0x23, 0x25,0x23,0x28,0x26,0x25,0x20,0x20,0x25,0x20,0x22,0x22,0x25,0x22,0x28,0x25,0x25, 0x28,0x04,0x28,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x28,0x28,0x25,0x25,0x26, 0x23,0x04,0x25,0x04,0x24,0x25,0x28,0x28,0x23,0x26,0x25,0x26,0x25,0x26,0x25,0x28, 0x28,0x24,0x26,0x28,0x20,0x20,0x26,0x20,0x23,0x04,0x26,0x25,0x24,0x26,0x28,0x28, 0x28,0x24,0x28,0x28,0x25,0x25,0x26,0x26,0x04,0x25,0x26,0x26,0x04,0x26,0x22,0x25, 0x25,0x22,0x28,0x24,0x28,0x25,0x26,0x26,0x26,0x25,0x25,0x28,0x28,0x26,0x28,0x28, 0x28,0x26,0x28,0x24,0x28,0x04,0x28,0x26,0x25,0x26,0x26,0x26,0x25,0x28,0x26,0x29, 0x25,0x22,0x25,0x23,0x25,0x25,0x22,0x22,0x04,0x22,0x23,0x25,0x25,0x23,0x22,0x22, 0x22,0x22,0x21,0x04,0x24,0x04,0x24,0x23,0x25,0x22,0x22,0x21,0x23,0x23,0x04,0x23, 0x24,0x23,0x25,0x25,0x25,0x22,0x04,0x25,0x23,0x25,0x25,0x25,0x25,0x25,0x24,0x25, 0x24,0x23,0x25,0x24,0x22,0x25,0x25,0x24,0x22,0x23,0x23,0x23,0x25,0x26,0x25,0x25, 0x24,0x24,0x25,0x24,0x24,0x21,0x25,0x26,0x04,0x22,0x25,0x25,0x23,0x22,0x25,0x26, 0x04,0x23,0x23,0x23,0x26,0x22,0x25,0x25,0x26,0x24,0x25,0x26,0x24,0x04,0x04,0x22, 0x25,0x24,0x04,0x25,0x28,0x25,0x26,0x26,0x04,0x28,0x23,0x25,0x22,0x22,0x26,0x23, 0x25,0x04,0x04,0x22,0x25,0x22,0x25,0x23,0x22,0x23,0x24,0x22,0x24,0x23,0x04,0x04, 0x28,0x28,0x21,0x24,0x25,0x24,0x28,0x23,0x28,0x28,0x25,0x25,0x23,0x23,0x24,0x25, 0x24,0x22,0x25,0x04,0x28,0x04,0x04,0x26,0x26,0x26,0x26,0x26,0x25,0x28,0x24,0x25, 0x28,0x24,0x25,0x04,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x04,0x24,0x22,0x24,0x23, 0x25,0x25,0x25,0x04,0x26,0x25,0x25,0x26,0x26,0x25,0x26,0x25,0x25,0x26,0x26,0x26, 0x04,0x28,0x28,0x26,0x25,0x28,0x28,0x28,0x28,0x28,0x24,0x25,0x23,0x26,0x25,0x25, 0x26,0x23,0x20,0x20,0x20,0x22,0x20,0x20,0x20,0x26,0x23,0x28,0x26,0x25,0x28,0x28, 0x26,0x26,0x28,0x04,0x28,0x28,0x26,0x26,0x24,0x26,0x25,0x28,0x27,0x04,0x24,0x26, 0x28,0x04,0x26,0x26,0x22,0x28,0x25,0x28,0x25,0x25,0x26,0x04,0x24,0x26,0x26,0x23, 0x26,0x23,0x26,0x25,0x24,0x25,0x22,0x25,0x26,0x25,0x24,0x25,0x22,0x25,0x26,0x25, 0x04,0x26,0x26,0x04,0x25,0x28,0x24,0x28,0x25,0x26,0x24,0x25,0x04,0x24,0x26,0x26, 0x28,0x25,0x23,0x26,0x28,0x28,0x25,0x04,0x28,0x23,0x26,0x28,0x04,0x24,0x25,0x26, 0x26,0x25,0x28,0x28,0x28,0x25,0x24,0x25,0x28,0x26,0x26,0x04,0x24,0x26,0x25,0x29, 0x22,0x22,0x25,0x26,0x25,0x22,0x26,0x21,0x25,0x25,0x22,0x22,0x23,0x25,0x24,0x24, 0x21,0x23,0x22,0x24,0x21,0x22,0x26,0x22,0x22,0x22,0x24,0x24,0x22,0x04,0x28,0x25, 0x25,0x23,0x28,0x04,0x23,0x25,0x25,0x25,0x25,0x23,0x23,0x22,0x22,0x04,0x25,0x25, 0x25,0x22,0x22,0x23,0x23,0x23,0x22,0x24,0x24,0x25,0x25,0x25,0x23,0x24,0x25,0x23, 0x22,0x23,0x24,0x24,0x23,0x22,0x25,0x24,0x26,0x25,0x25,0x28,0x26,0x25,0x25,0x22, 0x26,0x25,0x25,0x26,0x25,0x25,0x04,0x25,0x04,0x26,0x29,0x29,0x29,0x28,0x04,0x28, 0x25,0x26,0x26,0x28,0x25,0x23,0x26,0x04,0x28,0x28,0x28,0x28,0x25,0x25,0x23,0x23, 0x25,0x25,0x26,0x25,0x23,0x24,0x25,0x04,0x25,0x26,0x26,0x04,0x04,0x25,0x25,0x25, 0x27,0x28,0x22,0x24,0x04,0x28,0x04,0x26,0x26,0x28,0x23,0x22,0x23,0x24,0x28,0x25, 0x24,0x24,0x25,0x28,0x24,0x28,0x24,0x22,0x26,0x28,0x28,0x04,0x26,0x22,0x24,0x25, 0x25,0x25,0x28,0x25,0x26,0x25,0x26,0x26,0x25,0x24,0x26,0x22,0x25,0x26,0x26,0x26, 0x25,0x04,0x25,0x25,0x22,0x24,0x25,0x04,0x26,0x24,0x28,0x26,0x25,0x25,0x28,0x04, 0x28,0x26,0x29,0x28,0x29,0x28,0x27,0x25,0x26,0x25,0x22,0x22,0x04,0x24,0x26,0x23, 0x20,0x20,0x20,0x22,0x20,0x20,0x22,0x25,0x25,0x26,0x28,0x25,0x25,0x28,0x24,0x25, 0x04,0x28,0x28,0x04,0x26,0x04,0x28,0x25,0x04,0x04,0x04,0x25,0x28,0x25,0x24,0x04, 0x26,0x26,0x26,0x26,0x28,0x28,0x28,0x25,0x28,0x25,0x25,0x26,0x26,0x04,0x26,0x25, 0x23,0x25,0x04,0x22,0x22,0x22,0x24,0x26,0x24,0x26,0x26,0x25,0x25,0x04,0x28,0x24, 0x24,0x28,0x26,0x28,0x25,0x22,0x26,0x24,0x22,0x28,0x24,0x04,0x22,0x24,0x26,0x24, 0x26,0x24,0x26,0x26,0x26,0x25,0x25,0x26,0x04,0x28,0x26,0x28,0x26,0x26,0x28,0x28, 0x26,0x26,0x24,0x25,0x28,0x28,0x26,0x28,0x28,0x26,0x25,0x24,0x26,0x24,0x25,0x29, 0x21,0x25,0x22,0x24,0x22,0x22,0x21,0x25,0x24,0x23,0x22,0x25,0x25,0x21,0x24,0x23, 0x21,0x28,0x24,0x24,0x22,0x23,0x23,0x04,0x24,0x25,0x25,0x26,0x24,0x28,0x26,0x25, 0x28,0x28,0x04,0x26,0x25,0x22,0x23,0x24,0x24,0x23,0x25,0x23,0x25,0x25,0x26,0x25, 0x22,0x22,0x28,0x23,0x23,0x26,0x22,0x25,0x25,0x23,0x22,0x23,0x23,0x25,0x24,0x04, 0x23,0x22,0x26,0x23,0x22,0x23,0x23,0x25,0x22,0x24,0x22,0x21,0x04,0x28,0x25,0x26, 0x28,0x25,0x28,0x26,0x04,0x29,0x04,0x26,0x04,0x24,0x27,0x28,0x04,0x23,0x04,0x26, 0x04,0x23,0x26,0x24,0x28,0x24,0x24,0x26,0x26,0x28,0x28,0x26,0x28,0x04,0x04,0x25, 0x26,0x04,0x26,0x25,0x28,0x24,0x28,0x25,0x26,0x29,0x29,0x29,0x29,0x24,0x29,0x29, 0x26,0x25,0x23,0x29,0x28,0x25,0x27,0x26,0x04,0x22,0x25,0x26,0x28,0x24,0x24,0x26, 0x26,0x04,0x26,0x24,0x26,0x24,0x28,0x26,0x23,0x26,0x23,0x28,0x28,0x26,0x28,0x26, 0x26,0x25,0x28,0x25,0x28,0x25,0x28,0x25,0x25,0x28,0x28,0x28,0x26,0x26,0x26,0x28, 0x28,0x04,0x25,0x27,0x26,0x26,0x25,0x28,0x28,0x24,0x28,0x28,0x28,0x29,0x2A,0x2A, 0x26,0x28,0x28,0x27,0x04,0x04,0x25,0x24,0x22,0x23,0x23,0x20,0x22,0x24,0x22,0x24, 0x21,0x22,0x22,0x23,0x26,0x24,0x25,0x25,0x26,0x24,0x26,0x25,0x24,0x26,0x04,0x28, 0x24,0x28,0x26,0x26,0x24,0x28,0x26,0x26,0x04,0x04,0x24,0x24,0x24,0x25,0x26,0x24, 0x26,0x25,0x28,0x24,0x25,0x24,0x26,0x28,0x26,0x25,0x26,0x04,0x25,0x25,0x23,0x25, 0x25,0x23,0x23,0x26,0x04,0x25,0x26,0x28,0x28,0x23,0x28,0x26,0x25,0x26,0x26,0x28, 0x28,0x25,0x25,0x26,0x28,0x25,0x28,0x24,0x26,0x24,0x28,0x24,0x28,0x04,0x28,0x04, 0x04,0x28,0x26,0x26,0x04,0x04,0x25,0x28,0x04,0x04,0x28,0x28,0x25,0x28,0x26,0x04, 0x24,0x04,0x04,0x26,0x04,0x24,0x28,0x28,0x04,0x04,0x26,0x25,0x28,0x28,0x04,0x29, 0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x28,0x25,0x21,0x25,0x23,0x22,0x22,0x04,0x25, 0x23,0x22,0x24,0x24,0x26,0x26,0x26,0x04,0x24,0x26,0x26,0x26,0x26,0x25,0x25,0x24, 0x04,0x25,0x24,0x28,0x26,0x25,0x26,0x23,0x22,0x04,0x23,0x22,0x25,0x04,0x04,0x23, 0x22,0x23,0x23,0x23,0x26,0x04,0x24,0x25,0x23,0x23,0x23,0x25,0x23,0x25,0x23,0x23, 0x23,0x22,0x25,0x22,0x23,0x22,0x21,0x23,0x23,0x22,0x25,0x23,0x25,0x25,0x26,0x27, 0x26,0x29,0x28,0x28,0x24,0x23,0x26,0x26,0x23,0x23,0x25,0x25,0x24,0x24,0x25,0x23, 0x22,0x25,0x23,0x23,0x23,0x22,0x28,0x23,0x26,0x24,0x24,0x26,0x29,0x28,0x28,0x28, 0x25,0x24,0x28,0x04,0x28,0x28,0x29,0x04,0x25,0x26,0x04,0x27,0x27,0x25,0x27,0x24, 0x24,0x28,0x27,0x25,0x28,0x29,0x25,0x29,0x26,0x25,0x28,0x28,0x28,0x28,0x28,0x28, 0x25,0x26,0x28,0x25,0x28,0x26,0x22,0x28,0x28,0x26,0x25,0x26,0x28,0x26,0x24,0x24, 0x04,0x25,0x26,0x26,0x25,0x26,0x28,0x04,0x04,0x25,0x22,0x28,0x25,0x28,0x25,0x24, 0x26,0x27,0x28,0x25,0x04,0x04,0x2A,0x26,0x28,0x26,0x2A,0x28,0x28,0x28,0x25,0x26, 0x28,0x24,0x28,0x25,0x23,0x24,0x24,0x22,0x25,0x24,0x22,0x20,0x20,0x24,0x23,0x21, 0x25,0x25,0x24,0x04,0x25,0x28,0x25,0x04,0x28,0x26,0x04,0x26,0x23,0x28,0x28,0x24, 0x24,0x26,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x26,0x24,0x24,0x25,0x24,0x28,0x25, 0x25,0x26,0x28,0x23,0x26,0x28,0x22,0x04,0x26,0x23,0x25,0x24,0x28,0x25,0x21,0x24, 0x22,0x25,0x26,0x28,0x25,0x24,0x28,0x26,0x28,0x24,0x26,0x25,0x23,0x25,0x04,0x25, 0x04,0x26,0x04,0x28,0x26,0x28,0x28,0x25,0x28,0x24,0x26,0x28,0x27,0x27,0x25,0x28, 0x26,0x28,0x25,0x24,0x25,0x28,0x25,0x28,0x28,0x28,0x04,0x25,0x28,0x28,0x29,0x28, 0x04,0x29,0x28,0x29,0x28,0x28,0x04,0x28,0x26,0x29,0x29,0x28,0x29,0x29,0x28,0x29, 0x25,0x25,0x24,0x25,0x04,0x28,0x24,0x24,0x24,0x26,0x21,0x21,0x25,0x21,0x24,0x22, 0x24,0x25,0x25,0x28,0x26,0x04,0x23,0x28,0x28,0x26,0x25,0x28,0x24,0x24,0x04,0x28, 0x04,0x04,0x26,0x28,0x29,0x28,0x24,0x23,0x28,0x04,0x28,0x25,0x26,0x26,0x26,0x24, 0x28,0x26,0x23,0x25,0x26,0x04,0x04,0x24,0x22,0x25,0x25,0x22,0x24,0x23,0x04,0x22, 0x25,0x24,0x26,0x26,0x22,0x23,0x23,0x21,0x04,0x25,0x23,0x24,0x23,0x26,0x25,0x28, 0x24,0x22,0x25,0x28,0x22,0x24,0x23,0x25,0x23,0x25,0x26,0x25,0x23,0x04,0x22,0x28, 0x23,0x25,0x23,0x25,0x25,0x25,0x25,0x23,0x24,0x25,0x24,0x28,0x23,0x28,0x04,0x28, 0x28,0x28,0x04,0x26,0x25,0x24,0x26,0x26,0x25,0x28,0x28,0x25,0x24,0x24,0x04,0x24, 0x25,0x23,0x24,0x21,0x24,0x25,0x26,0x04,0x26,0x26,0x25,0x04,0x24,0x28,0x04,0x25, 0x25,0x23,0x28,0x26,0x26,0x04,0x26,0x04,0x26,0x28,0x26,0x24,0x04,0x28,0x25,0x24, 0x22,0x26,0x04,0x26,0x24,0x26,0x04,0x26,0x28,0x24,0x04,0x24,0x04,0x25,0x28,0x28, 0x29,0x24,0x29,0x28,0x25,0x29,0x28,0x28,0x28,0x28,0x25,0x28,0x28,0x28,0x27,0x26, 0x26,0x24,0x25,0x23,0x26,0x22,0x20,0x22,0x22,0x26,0x24,0x22,0x25,0x23,0x22,0x28, 0x23,0x28,0x25,0x25,0x26,0x28,0x26,0x25,0x26,0x25,0x04,0x26,0x25,0x28,0x25,0x25, 0x04,0x04,0x26,0x26,0x04,0x25,0x28,0x25,0x25,0x04,0x04,0x25,0x26,0x25,0x04,0x26, 0x25,0x25,0x26,0x26,0x26,0x04,0x26,0x26,0x26,0x25,0x26,0x25,0x26,0x20,0x22,0x24, 0x04,0x26,0x26,0x28,0x28,0x28,0x26,0x04,0x26,0x28,0x26,0x26,0x24,0x04,0x28,0x24, 0x25,0x26,0x26,0x24,0x25,0x26,0x24,0x25,0x26,0x26,0x04,0x04,0x28,0x28,0x28,0x28, 0x25,0x26,0x28,0x26,0x25,0x25,0x28,0x04,0x26,0x28,0x28,0x24,0x25,0x28,0x04,0x25, 0x2A,0x28,0x2A,0x28,0x2A,0x29,0x2A,0x28,0x29,0x04,0x29,0x28,0x28,0x28,0x25,0x29, 0x22,0x21,0x21,0x24,0x24,0x21,0x21,0x24,0x23,0x20,0x24,0x20,0x20,0x22,0x22,0x24, 0x24,0x24,0x25,0x25,0x04,0x25,0x26,0x28,0x26,0x26,0x25,0x26,0x28,0x28,0x22,0x04, 0x28,0x27,0x04,0x28,0x24,0x28,0x25,0x29,0x28,0x26,0x28,0x22,0x25,0x23,0x25,0x22, 0x23,0x25,0x25,0x26,0x26,0x24,0x26,0x25,0x28,0x28,0x25,0x26,0x28,0x25,0x24,0x04, 0x24,0x25,0x26,0x26,0x25,0x28,0x25,0x25,0x23,0x26,0x26,0x25,0x24,0x28,0x28,0x26, 0x26,0x25,0x22,0x23,0x22,0x23,0x23,0x24,0x23,0x22,0x24,0x26,0x04,0x26,0x24,0x21, 0x25,0x26,0x24,0x23,0x24,0x23,0x23,0x22,0x22,0x04,0x26,0x25,0x24,0x26,0x26,0x28, 0x24,0x26,0x25,0x28,0x24,0x26,0x28,0x28,0x25,0x25,0x25,0x28,0x24,0x23,0x04,0x04, 0x22,0x25,0x04,0x24,0x25,0x25,0x25,0x23,0x25,0x24,0x25,0x23,0x24,0x25,0x25,0x22, 0x04,0x04,0x24,0x04,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x28,0x28,0x25, 0x24,0x26,0x28,0x24,0x25,0x23,0x04,0x22,0x24,0x29,0x26,0x26,0x26,0x04,0x28,0x28, 0x26,0x29,0x28,0x24,0x25,0x25,0x25,0x28,0x28,0x04,0x28,0x04,0x28,0x25,0x25,0x25, 0x24,0x22,0x24,0x25,0x23,0x20,0x23,0x25,0x04,0x25,0x24,0x25,0x23,0x23,0x04,0x25, 0x24,0x23,0x24,0x26,0x26,0x26,0x23,0x25,0x24,0x28,0x25,0x04,0x04,0x26,0x04,0x25, 0x26,0x26,0x04,0x28,0x26,0x26,0x25,0x25,0x26,0x25,0x25,0x26,0x04,0x24,0x26,0x25, 0x26,0x28,0x23,0x28,0x28,0x26,0x26,0x04,0x04,0x25,0x25,0x22,0x20,0x22,0x25,0x24, 0x26,0x26,0x04,0x26,0x28,0x25,0x04,0x28,0x28,0x04,0x26,0x25,0x26,0x28,0x04,0x26, 0x28,0x25,0x26,0x24,0x26,0x24,0x25,0x25,0x28,0x25,0x26,0x25,0x24,0x24,0x04,0x28, 0x28,0x25,0x28,0x28,0x28,0x04,0x28,0x28,0x25,0x28,0x04,0x26,0x24,0x29,0x29,0x28, 0x29,0x28,0x28,0x26,0x29,0x28,0x29,0x28,0x28,0x25,0x23,0x25,0x27,0x24,0x26,0x29, 0x20,0x26,0x22,0x20,0x20,0x20,0x20,0x20,0x22,0x23,0x25,0x24,0x22,0x22,0x26,0x04, 0x26,0x20,0x04,0x26,0x25,0x24,0x22,0x04,0x28,0x26,0x26,0x28,0x26,0x28,0x28,0x25, 0x24,0x28,0x26,0x26,0x25,0x25,0x26,0x28,0x23,0x27,0x26,0x28,0x28,0x04,0x04,0x25, 0x22,0x23,0x25,0x24,0x25,0x25,0x25,0x25,0x26,0x25,0x24,0x27,0x25,0x28,0x25,0x24, 0x04,0x26,0x25,0x23,0x28,0x28,0x28,0x28,0x26,0x29,0x26,0x28,0x27,0x24,0x26,0x25, 0x28,0x04,0x26,0x25,0x22,0x26,0x25,0x22,0x23,0x24,0x23,0x23,0x22,0x22,0x23,0x23, 0x25,0x24,0x25,0x22,0x23,0x26,0x04,0x24,0x26,0x24,0x25,0x26,0x28,0x23,0x24,0x26, 0x24,0x25,0x28,0x26,0x23,0x28,0x24,0x24,0x22,0x23,0x22,0x25,0x25,0x25,0x26,0x25, 0x25,0x24,0x25,0x23,0x22,0x24,0x24,0x28,0x24,0x25,0x23,0x24,0x25,0x25,0x24,0x26, 0x25,0x25,0x28,0x25,0x04,0x24,0x25,0x25,0x24,0x26,0x24,0x24,0x28,0x28,0x29,0x28, 0x28,0x28,0x29,0x26,0x29,0x28,0x29,0x29,0x29,0x26,0x25,0x27,0x25,0x28,0x04,0x28, 0x27,0x28,0x26,0x28,0x26,0x26,0x29,0x28,0x26,0x28,0x25,0x25,0x28,0x24,0x20,0x23, 0x20,0x22,0x22,0x23,0x25,0x22,0x23,0x24,0x22,0x24,0x23,0x23,0x26,0x24,0x28,0x23, 0x28,0x04,0x24,0x26,0x28,0x26,0x24,0x26,0x26,0x04,0x04,0x04,0x25,0x25,0x24,0x26, 0x25,0x26,0x26,0x25,0x28,0x25,0x25,0x26,0x25,0x24,0x28,0x23,0x28,0x28,0x04,0x26, 0x04,0x24,0x25,0x26,0x04,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x26,0x28,0x25,0x23, 0x26,0x25,0x25,0x28,0x22,0x25,0x28,0x24,0x24,0x25,0x28,0x25,0x27,0x28,0x26,0x26, 0x27,0x28,0x28,0x04,0x27,0x25,0x25,0x28,0x28,0x28,0x28,0x26,0x29,0x26,0x25,0x28, 0x24,0x25,0x24,0x28,0x25,0x24,0x25,0x24,0x27,0x24,0x28,0x26,0x26,0x28,0x28,0x26, 0x28,0x24,0x28,0x04,0x25,0x28,0x23,0x28,0x24,0x04,0x28,0x28,0x04,0x26,0x26,0x29, 0x21,0x22,0x25,0x24,0x23,0x22,0x25,0x25,0x21,0x25,0x26,0x26,0x04,0x28,0x28,0x25, 0x04,0x21,0x20,0x20,0x25,0x22,0x25,0x25,0x24,0x28,0x25,0x25,0x24,0x04,0x04,0x24, 0x23,0x28,0x25,0x04,0x25,0x25,0x23,0x23,0x04,0x25,0x23,0x23,0x25,0x29,0x28,0x26, 0x24,0x28,0x25,0x25,0x28,0x04,0x25,0x26,0x28,0x27,0x25,0x28,0x24,0x28,0x28,0x04, 0x04,0x28,0x28,0x04,0x26,0x28,0x28,0x27,0x24,0x28,0x27,0x28,0x26,0x26,0x28,0x28, 0x28,0x25,0x28,0x25,0x25,0x25,0x25,0x26,0x24,0x25,0x22,0x23,0x22,0x25,0x23,0x23, 0x25,0x24,0x23,0x25,0x26,0x26,0x26,0x26,0x24,0x24,0x28,0x26,0x26,0x28,0x24,0x26, 0x28,0x28,0x25,0x23,0x24,0x26,0x24,0x22,0x23,0x24,0x04,0x23,0x22,0x23,0x23,0x25, 0x24,0x23,0x22,0x22,0x23,0x25,0x28,0x25,0x23,0x04,0x26,0x23,0x25,0x26,0x28,0x23, 0x25,0x22,0x25,0x22,0x24,0x24,0x22,0x25,0x24,0x22,0x22,0x24,0x23,0x28,0x04,0x24, 0x26,0x24,0x24,0x23,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x25,0x25,0x04,0x28,0x27, 0x28,0x28,0x04,0x28,0x28,0x26,0x28,0x26,0x28,0x04,0x26,0x24,0x20,0x22,0x22,0x22, 0x22,0x25,0x23,0x25,0x23,0x04,0x24,0x25,0x24,0x25,0x25,0x04,0x25,0x22,0x26,0x28, 0x26,0x26,0x04,0x24,0x26,0x24,0x25,0x26,0x22,0x25,0x26,0x26,0x04,0x28,0x23,0x28, 0x26,0x25,0x28,0x23,0x26,0x25,0x28,0x04,0x28,0x24,0x28,0x24,0x26,0x28,0x25,0x25, 0x25,0x25,0x23,0x26,0x25,0x23,0x20,0x24,0x24,0x23,0x24,0x25,0x26,0x25,0x28,0x26, 0x24,0x26,0x26,0x26,0x26,0x26,0x26,0x28,0x26,0x28,0x26,0x04,0x04,0x29,0x25,0x29, 0x26,0x28,0x28,0x28,0x28,0x29,0x04,0x29,0x28,0x26,0x26,0x28,0x04,0x29,0x28,0x28, 0x24,0x04,0x25,0x28,0x28,0x25,0x04,0x04,0x28,0x04,0x28,0x28,0x26,0x04,0x25,0x28, 0x24,0x04,0x04,0x26,0x26,0x23,0x24,0x04,0x26,0x28,0x28,0x25,0x26,0x04,0x25,0x29, 0x26,0x28,0x28,0x26,0x25,0x26,0x26,0x04,0x26,0x26,0x26,0x26,0x26,0x24,0x24,0x25, 0x22,0x25,0x22,0x26,0x04,0x24,0x28,0x04,0x28,0x28,0x04,0x04,0x26,0x23,0x24,0x28, 0x25,0x25,0x23,0x04,0x26,0x28,0x25,0x25,0x26,0x25,0x22,0x25,0x04,0x26,0x26,0x27, 0x28,0x25,0x28,0x25,0x25,0x25,0x28,0x26,0x24,0x25,0x04,0x28,0x28,0x23,0x24,0x22, 0x26,0x26,0x04,0x25,0x22,0x28,0x28,0x23,0x26,0x26,0x25,0x04,0x28,0x27,0x04,0x25, 0x26,0x24,0x26,0x29,0x28,0x28,0x26,0x26,0x27,0x24,0x26,0x04,0x24,0x22,0x26,0x25, 0x22,0x25,0x24,0x04,0x24,0x28,0x25,0x26,0x26,0x26,0x24,0x23,0x25,0x04,0x25,0x24, 0x25,0x25,0x22,0x22,0x28,0x25,0x25,0x22,0x25,0x24,0x24,0x26,0x25,0x25,0x23,0x23, 0x25,0x04,0x25,0x26,0x22,0x24,0x24,0x25,0x25,0x24,0x23,0x04,0x25,0x24,0x25,0x04, 0x26,0x04,0x26,0x28,0x28,0x24,0x26,0x26,0x25,0x28,0x24,0x25,0x26,0x26,0x22,0x24, 0x25,0x28,0x26,0x28,0x28,0x28,0x28,0x04,0x28,0x24,0x04,0x04,0x28,0x29,0x28,0x04, 0x28,0x28,0x25,0x25,0x26,0x26,0x23,0x25,0x21,0x24,0x22,0x20,0x25,0x24,0x28,0x23, 0x25,0x24,0x23,0x24,0x22,0x25,0x25,0x28,0x26,0x23,0x25,0x22,0x26,0x25,0x25,0x04, 0x26,0x26,0x24,0x25,0x25,0x26,0x24,0x28,0x28,0x04,0x25,0x26,0x25,0x24,0x26,0x25, 0x26,0x26,0x26,0x24,0x28,0x26,0x24,0x04,0x28,0x04,0x28,0x28,0x28,0x25,0x25,0x04, 0x25,0x24,0x23,0x22,0x20,0x24,0x21,0x28,0x25,0x28,0x25,0x28,0x25,0x26,0x28,0x26, 0x28,0x04,0x26,0x25,0x04,0x28,0x25,0x24,0x25,0x28,0x28,0x29,0x28,0x28,0x26,0x28, 0x25,0x28,0x25,0x26,0x26,0x29,0x29,0x25,0x28,0x25,0x04,0x24,0x26,0x28,0x29,0x28, 0x26,0x25,0x27,0x24,0x23,0x25,0x28,0x25,0x26,0x28,0x24,0x25,0x25,0x04,0x28,0x04, 0x25,0x24,0x26,0x04,0x26,0x26,0x26,0x26,0x22,0x25,0x28,0x04,0x23,0x28,0x28,0x29, 0x24,0x28,0x24,0x28,0x25,0x04,0x24,0x26,0x24,0x23,0x04,0x26,0x22,0x28,0x24,0x28, 0x04,0x25,0x26,0x25,0x28,0x28,0x28,0x24,0x20,0x22,0x28,0x25,0x23,0x23,0x28,0x24, 0x22,0x25,0x22,0x04,0x22,0x21,0x26,0x25,0x23,0x21,0x22,0x22,0x25,0x04,0x28,0x25, 0x28,0x22,0x28,0x28,0x04,0x04,0x24,0x22,0x25,0x25,0x22,0x23,0x25,0x22,0x21,0x23, 0x22,0x22,0x28,0x23,0x23,0x24,0x04,0x28,0x28,0x22,0x04,0x28,0x25,0x28,0x28,0x04, 0x26,0x26,0x28,0x28,0x24,0x04,0x22,0x25,0x28,0x28,0x28,0x26,0x25,0x28,0x28,0x26, 0x25,0x04,0x28,0x26,0x25,0x26,0x28,0x25,0x22,0x26,0x23,0x23,0x23,0x21,0x25,0x26, 0x25,0x26,0x25,0x28,0x25,0x04,0x26,0x25,0x26,0x22,0x25,0x24,0x24,0x25,0x25,0x28, 0x24,0x22,0x26,0x24,0x04,0x26,0x24,0x25,0x26,0x26,0x25,0x25,0x04,0x04,0x28,0x28, 0x24,0x24,0x28,0x25,0x23,0x04,0x24,0x22,0x04,0x26,0x26,0x28,0x28,0x26,0x26,0x27, 0x24,0x28,0x25,0x26,0x25,0x29,0x28,0x25,0x28,0x04,0x28,0x28,0x25,0x25,0x27,0x28, 0x26,0x28,0x24,0x23,0x24,0x23,0x25,0x24,0x20,0x22,0x23,0x25,0x23,0x28,0x26,0x04, 0x23,0x24,0x25,0x25,0x23,0x26,0x26,0x25,0x25,0x04,0x24,0x28,0x04,0x25,0x28,0x04, 0x24,0x24,0x25,0x28,0x26,0x28,0x04,0x25,0x25,0x28,0x04,0x26,0x28,0x28,0x28,0x28, 0x04,0x25,0x04,0x26,0x04,0x26,0x24,0x04,0x28,0x22,0x26,0x25,0x25,0x26,0x25,0x26, 0x25,0x25,0x22,0x25,0x23,0x23,0x28,0x25,0x25,0x24,0x22,0x28,0x24,0x26,0x25,0x24, 0x25,0x04,0x25,0x04,0x26,0x25,0x28,0x28,0x04,0x28,0x29,0x04,0x28,0x28,0x27,0x24, 0x28,0x27,0x25,0x27,0x25,0x28,0x28,0x28,0x26,0x28,0x04,0x28,0x04,0x22,0x26,0x26, 0x04,0x28,0x28,0x26,0x04,0x28,0x28,0x25,0x28,0x24,0x22,0x25,0x28,0x28,0x23,0x28, 0x04,0x26,0x28,0x28,0x26,0x04,0x26,0x24,0x24,0x26,0x25,0x28,0x24,0x23,0x24,0x29, 0x28,0x28,0x28,0x28,0x28,0x26,0x27,0x28,0x26,0x24,0x26,0x25,0x23,0x28,0x04,0x28, 0x28,0x27,0x24,0x25,0x24,0x26,0x25,0x24,0x23,0x25,0x20,0x20,0x20,0x25,0x20,0x04, 0x04,0x28,0x28,0x04,0x23,0x26,0x26,0x25,0x25,0x23,0x22,0x20,0x20,0x20,0x20,0x20, 0x22,0x23,0x26,0x28,0x23,0x24,0x04,0x25,0x23,0x28,0x23,0x26,0x25,0x25,0x25,0x28, 0x28,0x28,0x24,0x25,0x28,0x04,0x04,0x26,0x25,0x26,0x23,0x24,0x28,0x25,0x26,0x24, 0x26,0x25,0x25,0x24,0x25,0x22,0x28,0x26,0x25,0x22,0x26,0x28,0x25,0x25,0x28,0x25, 0x28,0x24,0x26,0x25,0x26,0x26,0x28,0x25,0x24,0x04,0x26,0x26,0x04,0x26,0x04,0x28, 0x28,0x04,0x04,0x24,0x24,0x25,0x04,0x04,0x24,0x28,0x26,0x26,0x28,0x27,0x28,0x25, 0x25,0x24,0x04,0x04,0x27,0x26,0x24,0x27,0x28,0x24,0x25,0x26,0x28,0x26,0x25,0x25, 0x25,0x28,0x04,0x28,0x25,0x28,0x25,0x25,0x28,0x28,0x25,0x28,0x28,0x25,0x23,0x29, 0x04,0x28,0x28,0x28,0x28,0x25,0x26,0x24,0x25,0x25,0x28,0x25,0x26,0x26,0x25,0x21, 0x25,0x23,0x22,0x21,0x25,0x24,0x20,0x25,0x28,0x23,0x23,0x25,0x22,0x25,0x23,0x22, 0x26,0x28,0x24,0x26,0x04,0x26,0x25,0x28,0x28,0x23,0x26,0x25,0x28,0x25,0x25,0x04, 0x28,0x04,0x25,0x28,0x26,0x28,0x28,0x22,0x25,0x28,0x26,0x04,0x28,0x25,0x25,0x04, 0x26,0x25,0x28,0x28,0x26,0x25,0x04,0x04,0x26,0x28,0x26,0x26,0x26,0x26,0x24,0x25, 0x25,0x23,0x25,0x25,0x25,0x23,0x28,0x24,0x22,0x25,0x28,0x27,0x24,0x28,0x26,0x28, 0x25,0x26,0x28,0x25,0x28,0x28,0x28,0x28,0x28,0x29,0x25,0x25,0x28,0x25,0x27,0x04, 0x28,0x28,0x28,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x25,0x24,0x26,0x26,0x24,0x26, 0x24,0x28,0x25,0x28,0x04,0x28,0x24,0x04,0x26,0x26,0x28,0x26,0x28,0x25,0x22,0x26, 0x26,0x04,0x25,0x28,0x28,0x26,0x04,0x04,0x24,0x24,0x23,0x23,0x26,0x25,0x20,0x29, 0x29,0x28,0x28,0x25,0x26,0x24,0x29,0x26,0x25,0x25,0x27,0x26,0x28,0x04,0x24,0x24, 0x25,0x26,0x04,0x26,0x23,0x25,0x22,0x04,0x23,0x24,0x26,0x24,0x22,0x25,0x24,0x25, 0x24,0x25,0x25,0x04,0x23,0x04,0x25,0x25,0x04,0x28,0x28,0x22,0x28,0x23,0x23,0x25, 0x23,0x25,0x23,0x23,0x20,0x23,0x04,0x26,0x04,0x27,0x04,0x28,0x26,0x26,0x24,0x04, 0x04,0x25,0x26,0x25,0x28,0x25,0x28,0x25,0x25,0x28,0x28,0x04,0x25,0x22,0x28,0x23, 0x25,0x28,0x24,0x22,0x25,0x22,0x04,0x26,0x23,0x26,0x28,0x28,0x25,0x25,0x24,0x23, 0x26,0x25,0x26,0x28,0x25,0x23,0x28,0x04,0x04,0x24,0x26,0x26,0x04,0x25,0x28,0x26, 0x26,0x25,0x28,0x29,0x29,0x24,0x28,0x04,0x04,0x23,0x25,0x29,0x29,0x04,0x04,0x29, 0x25,0x29,0x26,0x29,0x25,0x28,0x25,0x28,0x04,0x22,0x26,0x29,0x29,0x28,0x29,0x04, 0x04,0x25,0x29,0x28,0x29,0x28,0x25,0x28,0x28,0x28,0x29,0x28,0x28,0x04,0x28,0x28, 0x26,0x28,0x28,0x04,0x25,0x25,0x22,0x25,0x25,0x22,0x24,0x24,0x22,0x26,0x25,0x23, 0x21,0x22,0x24,0x21,0x20,0x20,0x24,0x22,0x24,0x28,0x25,0x24,0x24,0x22,0x23,0x28, 0x22,0x28,0x28,0x25,0x04,0x26,0x26,0x25,0x04,0x26,0x28,0x24,0x28,0x28,0x28,0x28, 0x26,0x04,0x04,0x25,0x25,0x26,0x24,0x28,0x26,0x26,0x28,0x24,0x28,0x26,0x24,0x24, 0x28,0x04,0x28,0x22,0x26,0x04,0x26,0x24,0x26,0x24,0x26,0x26,0x21,0x25,0x04,0x26, 0x23,0x28,0x28,0x28,0x28,0x24,0x28,0x28,0x29,0x25,0x25,0x29,0x28,0x29,0x28,0x28, 0x28,0x29,0x24,0x29,0x23,0x28,0x25,0x26,0x28,0x28,0x28,0x04,0x26,0x26,0x26,0x24, 0x04,0x25,0x27,0x25,0x25,0x25,0x28,0x25,0x25,0x24,0x04,0x26,0x25,0x26,0x26,0x28, 0x28,0x28,0x22,0x28,0x28,0x28,0x26,0x24,0x26,0x28,0x04,0x26,0x26,0x04,0x26,0x28, 0x24,0x26,0x25,0x28,0x26,0x25,0x26,0x26,0x26,0x28,0x24,0x04,0x23,0x20,0x23,0x29, 0x28,0x25,0x28,0x04,0x27,0x25,0x26,0x28,0x28,0x25,0x28,0x24,0x26,0x25,0x23,0x25, 0x25,0x96,0x96,0x96,0x96,0x4A,0x4A,0x4A,0x4A,0x4A,0x96,0x96,0x98,0x98,0x98,0x98, 0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A, 0x9A,0x9A,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x26,0x25, 0x24,0x25,0x25,0x28,0x25,0x04,0x26,0x22,0x22,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C, 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C, 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x24,0x28,0x28,0x28,0x25,0x98,0x98,0x98,0x98,0x98,0x98,0x98, 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, 0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x99,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A, 0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x22,0x20,0x28,0x29, 0x26,0x28,0x26,0x28,0x28,0x23,0x28,0x04,0x25,0x26,0x28,0x23,0x24,0x24,0x25,0x28, 0x25,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x22, 0x22,0x25,0x25,0x23,0x22,0x23,0x23,0x22,0x23,0x1A,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2C,0x04,0x28,0x04,0x28,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x24,0x25,0x29, 0x28,0x04,0x28,0x26,0x28,0x26,0x26,0x26,0x24,0x26,0x28,0x25,0x22,0x25,0x25,0x28, 0x28,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x9F,0x2A,0x26, 0x22,0x23,0x25,0x22,0x22,0x20,0x24,0x22,0x24,0x1A,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2B,0x26,0x04,0x28,0x28,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2E,0x28,0x24,0x29, 0x26,0x28,0x24,0x26,0x25,0x25,0x24,0x25,0x26,0x28,0x04,0x28,0x25,0x28,0x04,0x04, 0x28,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x2C, 0x28,0x23,0x25,0x24,0x04,0x23,0x25,0x25,0x23,0x1A,0x00,0x00,0x18,0x08,0x1D,0x00, 0x00,0x00,0x1C,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 0x08,0x1D,0x00,0x00,0x2B,0x2C,0x24,0x26,0x24,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x29,0x28,0x29, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x08,0x1D,0x1F,0x00, 0x00,0x1E,0x08,0x08,0x14,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x1C,0x00,0x1E,0x00,0x00,0x00,0x00,0x07,0x12, 0x07,0x00,0x07,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x3C,0x38,0x45,0x45, 0x38,0xD5,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x4C,0x47,0x47,0x47,0x47,0x4C,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x1D,0x1F,0x1F,0x00, 0x00,0x08,0x08,0x08,0x08,0x14,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x16,0x0F,0x1A,0x18,0x07,0x18,0x17,0x00,0x08,0x07,0x17,0x1A,0x1A, 0x16,0x12,0x1A,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x28,0x34,0x33,0x33,0x33,0x33,0x33, 0x33,0x34,0x3F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x00, 0x08,0x1A,0x1A,0x1A,0x1A,0x1A,0x07,0x0F,0x07,0x00,0x00,0x00,0x00,0x28,0x08,0x1A, 0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x13,0x1A,0x1A,0x1A,0x1A,0x1A,0x18,0x28,0x16,0x1A,0x1A,0x1A,0x1A,0x1A, 0x1A,0x1A,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x12, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2D, 0x17,0x07,0x00,0x00,0x00,0x26,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x28,0x21,0x36,0x36,0x36,0x36,0x36,0x36,0x36, 0x36,0x36,0xD9,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x96,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x32, 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x07,0x0F,0x00,0x00,0x24,0x19,0x19,0x19, 0x19,0x31,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x11,0x19,0x19,0x19,0x19,0x19,0x07,0x35,0x00,0x18,0x19,0x19,0x19,0x07,0x19, 0x19,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x12,0x07,0x19,0x18, 0x12,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x1A, 0x1A,0x1A,0x11,0x26,0x26,0x1A,0x17,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x29,0x23,0x23,0x23,0x23,0x2A,0xAD,0xAD,0x2A,0x23, 0x23,0x27,0xAD,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x4A,0x4C,0x4E,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x22,0x19, 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x32,0x00,0x00,0x35,0x19,0x19,0x19, 0x19,0x19,0x18,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x17,0x18,0x18,0x18,0x0F,0x28,0x2A,0x00,0x00,0x19,0x18,0x18,0x18,0x07,0x04, 0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x24,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x13,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x19,0x19,0x19, 0x19,0x07,0x12,0x11,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x19,0x19, 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x08,0x00,0x1D,0x13,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x29,0x25,0x25,0x25,0x28,0x9F,0x9F,0x9F,0xAE,0x27,0x25, 0x27,0xAD,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49,0x4C,0x4E,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x32,0x17, 0x17,0x17,0x17,0x00,0x0F,0x17,0x17,0x17,0x17,0x0C,0x00,0x1A,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x18,0x18,0x17,0x17,0x0F,0x00,0x00,0x00,0x00,0x08,0x17,0x17,0x17,0x18,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x22,0x17,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x18,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x12,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x29,0x26,0x26,0x28,0x2C,0x9F,0x9F,0x9F,0xAF,0x27,0x26,0x27, 0xAD,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49,0x4D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x07,0x14, 0x17,0x17,0x2B,0x00,0x0F,0x17,0x17,0x17,0x17,0x36,0x00,0x17,0x17,0x17,0x08,0x17, 0x17,0x17,0x17,0x17,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1A,0x17,0x16,0x16,0x11,0x00,0x00,0x00,0x00,0x04,0x16,0x16,0x16,0x1A,0x00, 0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x35,0x16,0x16,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x07,0x08,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x26,0x00, 0x17,0x17,0x17,0x17,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x29,0x28,0x28,0x2A,0xE6,0x9F,0x9F,0x9F,0x9F,0x29,0x28,0x28,0xAD, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49, 0x4D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x18,0x11, 0x16,0x2B,0x00,0x00,0x11,0x16,0x16,0x16,0x16,0x22,0x00,0x07,0x16,0x08,0x00,0x1A, 0x16,0x16,0x16,0x16,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1C,0x16,0x16,0x16,0x13,0x00,0x00,0x00,0x00,0x04,0x16,0x16,0x16,0x08,0x0C, 0x0C,0x08,0x00,0x00,0x00,0x1A,0x17,0x0F,0x00,0x00,0x00,0x00,0x0C,0x07,0x00,0x00, 0x00,0x1C,0x07,0x12,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x08,0x0F,0x00,0x00, 0x18,0x00,0x04,0x16,0x16,0x16,0x0F,0x11,0x13,0x00,0x00,0x00,0x00,0x18,0x13,0x08, 0x00,0x00,0x00,0x00,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x00,0x00,0x00, 0x18,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E, 0x16,0x16,0x16,0x16,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x16,0x16,0x16,0x16, 0x00,0x12,0x16,0x16,0x16,0x16,0x00,0x00,0x1E,0x16,0x16,0x16,0x16,0x16,0x17,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0xBE,0xBD,0xBD,0xBD,0xE6,0x9F,0x9F,0x9F,0x9F,0xAD,0xBD,0xBD,0xAD,0x9F, 0x9F,0xAE,0xAE,0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4D,0x49,0x47,0x47,0x47,0x47,0x47,0x47, 0x49,0x4E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x0F, 0x07,0x04,0x00,0x00,0x12,0x16,0x16,0x16,0x16,0x04,0x00,0x19,0x07,0x08,0x00,0x11, 0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x1A,0x11,0x0F,0x07,0x08,0x00, 0x00,0x1E,0x16,0x07,0x07,0x07,0x00,0x00,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x07, 0x07,0x08,0x00,0x08,0x08,0x16,0x07,0x07,0x0F,0x00,0x00,0x0C,0x07,0x07,0x0F,0x0F, 0x00,0x08,0x07,0x07,0x12,0x0F,0x12,0x00,0x00,0x0C,0x24,0x18,0x07,0x12,0x0F,0x07, 0x07,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x08,0x00,0x00,0x1A,0x19,0x07,0x07,0x0F, 0x08,0x00,0x00,0x21,0x19,0x07,0x0F,0x11,0x08,0x00,0x04,0x07,0x12,0x0F,0x00,0x00, 0x18,0x07,0x12,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x07,0x07,0x07,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x07,0x07,0x07,0x00, 0x00,0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x1E,0x08,0x07,0x07,0x07,0x07,0x18,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0xBE,0xBD,0xBD,0xBD,0xAE,0x9F,0x9F,0x9F,0x9F,0xAD,0xBD,0xBD,0xAD,0x9F,0x9F, 0xAE,0xBE,0xBE,0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x49,0x47,0x47,0x47,0x47,0x47, 0x47,0x4C,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x18, 0x14,0x36,0x00,0x00,0x13,0x07,0x07,0x07,0x07,0x04,0x00,0x00,0x07,0x08,0x00,0x12, 0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x19,0x07,0x07,0x07,0x07,0x07,0x07,0x0F,0x31, 0x00,0x1F,0x07,0x14,0x14,0x16,0x00,0x19,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, 0x18,0x04,0x0C,0x16,0x14,0x14,0x14,0x14,0x07,0x0F,0x0C,0x14,0x14,0x14,0x14,0x14, 0x1C,0x18,0x14,0x14,0x14,0x14,0x14,0x21,0x17,0x14,0x14,0x14,0x14,0x14,0x14,0x14, 0x08,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x08,0x0C,0x19,0x14,0x14,0x14,0x14,0x14, 0x0F,0x08,0x0C,0x16,0x14,0x14,0x14,0x14,0x12,0x04,0x14,0x14,0x14,0x14,0x17,0x08, 0x14,0x14,0x14,0x14,0x14,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C, 0x14,0x14,0x14,0x14,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x16,0x14,0x1A,0x00, 0x00,0x0C,0x14,0x14,0x14,0x14,0x00,0x00,0x00,0x19,0x14,0x14,0x14,0x14,0x1A,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0xBE,0xBD,0xBD,0xBD,0xAE,0x9F,0x9F,0xAE,0xAD,0xAD,0xBD,0xBD,0xAD,0x9F,0x9F,0xAE, 0xBE,0xBE,0xAE,0x9F,0x9F,0xAE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xAE,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x98,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x49,0x47,0x47,0x47,0x47, 0x47,0x49,0x4E,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x18,0x18,0x00,0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00,0x00,0x00,0x07,0x07,0x14, 0x14,0x14,0x14,0x14,0x04,0x24,0x17,0x14,0x14,0x14,0x04,0x14,0x14,0x14,0x14,0x14, 0x19,0x00,0x14,0x13,0x13,0x18,0x00,0x19,0x13,0x08,0x08,0x13,0x13,0x13,0x08,0x00, 0x00,0x0C,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x07,0x08,0x13,0x13,0x13,0x13, 0x18,0x13,0x13,0x13,0x13,0x13,0x07,0x35,0x13,0x13,0x13,0x13,0x08,0x13,0x13,0x0C, 0x08,0x18,0x1C,0x13,0x13,0x13,0x1C,0x08,0x04,0x13,0x13,0x13,0x13,0x13,0x13,0x13, 0x13,0x0F,0x08,0x08,0x13,0x13,0x13,0x13,0x04,0x04,0x13,0x13,0x13,0x13,0x13,0x13, 0x13,0x13,0x13,0x13,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x13,0x13,0x13,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x1A,0x13,0x1A,0x00, 0x00,0x0C,0x13,0x13,0x13,0x13,0x00,0x00,0x00,0x08,0x13,0x13,0x13,0x13,0x08,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xBE, 0xBC,0xBC,0xBC,0xBE,0xAE,0x9F,0xAE,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD, 0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBE,0xAE,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4D,0x47,0x47,0x47,0x47, 0x47,0x47,0x4E,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x07,0x13,0x13,0x13,0x13,0x2C,0x00,0x00,0x00,0x00,0x00,0x16, 0x13,0x13,0x13,0x13,0x04,0x21,0x13,0x13,0x13,0x13,0x04,0x0C,0x13,0x13,0x13,0x13, 0x19,0x00,0x13,0x12,0x12,0x1A,0x00,0x08,0x08,0x00,0x1D,0x12,0x12,0x12,0x1C,0x00, 0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x04,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x21,0x12,0x12,0x12,0x12,0x04,0x25,0x20,0x00, 0x00,0x00,0x1E,0x12,0x12,0x12,0x00,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12, 0x12,0x12,0x08,0x04,0x12,0x12,0x12,0x12,0x04,0x00,0x08,0x12,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x08, 0x11,0x18,0x08,0x00,0x16,0x28,0x28,0x32,0x07,0x07,0x07,0x0F,0x08,0x0F,0x1A,0x00, 0x00,0x35,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x1D,0x11,0x11,0x11,0x11,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xBE,0xBB, 0xBB,0xBB,0xBD,0xAE,0x9F,0xAE,0xBD,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC, 0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBE,0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4F,0x47,0x47,0x47,0x47, 0x47,0x47,0x4D,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x16,0x13,0x12,0x12,0x12,0x2F,0x00,0x07,0x17,0x18,0x00,0x17, 0x12,0x12,0x12,0x12,0x27,0x35,0x12,0x12,0x12,0x12,0x04,0x0C,0x12,0x12,0x12,0x12, 0x33,0x00,0x12,0x11,0x11,0x18,0x00,0x00,0x00,0x00,0x00,0x10,0x11,0x11,0x1E,0x00, 0x00,0x1D,0x10,0x11,0x11,0x11,0x00,0x11,0x11,0x11,0x11,0x0C,0x13,0x11,0x11,0x11, 0x11,0x08,0x13,0x11,0x11,0x11,0x07,0x08,0x07,0x11,0x11,0x11,0x00,0x08,0x00,0x00, 0x00,0x00,0x08,0x11,0x11,0x11,0x1D,0x00,0x18,0x13,0x11,0x11,0x11,0x00,0x13,0x11, 0x11,0x11,0x08,0x04,0x11,0x11,0x11,0x11,0x04,0x00,0x08,0x10,0x11,0x11,0x11,0x16, 0x1C,0x10,0x11,0x11,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x0F, 0x0F,0x0F,0x0F,0x07,0x19,0x04,0x13,0x11,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x1A,0x00, 0x00,0x20,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x1F,0x0F,0x0F,0x0F,0x0F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAD,0xBA,0xBA, 0xBA,0xBC,0xAE,0x9F,0xAE,0xBD,0xFF,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBC, 0xAB,0xAC,0xAD,0xAE,0xAE,0xAE,0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x4D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x16,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x19, 0x0F,0x0F,0x0F,0x11,0x23,0x23,0x0F,0x0F,0x0F,0x0F,0x1A,0x04,0x16,0x0F,0x0F,0x0F, 0x32,0x00,0x0F,0x0F,0x0F,0x16,0x00,0x00,0x00,0x00,0x1F,0x0F,0x0F,0x0F,0x00,0x00, 0x00,0x18,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x18,0x0F,0x07,0x07,0x0F,0x0F,0x0F,0x0F, 0x18,0x08,0x00,0x07,0x07,0x0F,0x07,0x00,0x00,0x17,0x07,0x07,0x07,0x07,0x07,0x08, 0x00,0x00,0x19,0x1A,0x07,0x13,0x19,0x00,0x07,0x00,0x07,0x07,0x07,0x00,0x08,0x08, 0x07,0x08,0x00,0x08,0x08,0x07,0x07,0x0F,0x08,0x00,0x08,0x18,0x07,0x07,0x0F,0x08, 0x00,0x18,0x07,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1E,0x07,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xBC,0xBA,0xB9, 0xBB,0xBE,0xAF,0x9F,0xAE,0xAE,0xAE,0xAE,0xAE,0xAE,0xAD,0xBC,0xBA,0xBA,0xBC,0xAB, 0xAD,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x4D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x07, 0x00,0x00,0x00,0x17,0x21,0x33,0x00,0x00,0x00,0x00,0x16,0x1F,0x00,0x00,0x00,0x00, 0x07,0x00,0x00,0x00,0x1D,0x14,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, 0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x2A,0x11,0x00,0x0F,0x1F,0x00,0x00,0x00, 0x08,0x00,0x00,0x00,0x00,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13, 0x00,0x00,0x17,0x00,0x00,0x00,0x14,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x19,0x00,0x00,0x17,0x00,0x00,0x00,0x1D,0x07,0x00,0x1D,0x00,0x00,0x00,0x08,0x1C, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x1E,0x1A,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAC,0xBC,0xBB,0xAA, 0xAB,0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAB,0xBC,0xAA,0xBC,0xAC,0xAE, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x4D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x19,0x2D,0x2D,0x2D,0x2F,0x00,0x2D,0x2D,0x2D,0x2D,0x00,0x2D, 0x2D,0x2D,0x2F,0x00,0x26,0x32,0x2D,0x2D,0x2D,0x00,0x12,0x1E,0x2D,0x2D,0x2D,0x00, 0x13,0x00,0x2D,0x2B,0x00,0x12,0x00,0x00,0x00,0x00,0x19,0x2B,0x2B,0x2B,0x00,0x00, 0x00,0x18,0x2B,0x2B,0x2B,0x00,0x00,0x2A,0x0F,0x00,0x00,0x12,0x2B,0x2B,0x2B,0x00, 0x08,0x00,0x2B,0x2B,0x2B,0x00,0x07,0x00,0x00,0x00,0x2B,0x2B,0x2B,0x2B,0x2B,0x1A, 0x17,0x00,0x18,0x2B,0x2B,0x2B,0x07,0x00,0x13,0x2B,0x2B,0x2B,0x2B,0x00,0x2A,0x07, 0x00,0x00,0x00,0x12,0x2B,0x2B,0x2B,0x00,0x0F,0x00,0x1C,0x2B,0x2B,0x2B,0x08,0x00, 0x00,0x2B,0x2B,0x2B,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x19,0x07,0x08,0x1D,0x12, 0x2A,0x2A,0x2A,0x2A,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x2C,0x2A,0x2A,0x2A,0x2A,0x00,0x00,0x00,0x1C,0x2A,0x2A,0x2A,0x2A,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAA,0xAA,0xAA,0xAA, 0xAC,0xAF,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAB,0xAA,0xAA,0xAA,0xAA,0xAE,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4F,0x47,0x47,0x47,0x47, 0x47,0x47,0x4D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1A,0x28,0x27,0x27,0x27,0x2E,0x25,0x27,0x27,0x25,0x2E,0x27, 0x27,0x27,0x27,0x0F,0x00,0x07,0x25,0x23,0x24,0x23,0x0F,0x08,0x04,0x25,0x28,0x26, 0x11,0x00,0x24,0x28,0x28,0x10,0x00,0x00,0x00,0x00,0x17,0x28,0x28,0x28,0x1E,0x00, 0x00,0x1C,0x28,0x28,0x28,0x28,0x28,0x0F,0x00,0x00,0x00,0x17,0x28,0x28,0x28,0x28, 0x08,0x00,0x28,0x28,0x28,0x28,0x17,0x00,0x00,0x00,0x00,0x19,0x28,0x28,0x28,0x28, 0x07,0x00,0x1A,0x28,0x28,0x28,0x1A,0x00,0x16,0x28,0x28,0x28,0x28,0x28,0x19,0x00, 0x00,0x00,0x00,0x11,0x28,0x28,0x28,0x28,0x07,0x00,0x19,0x28,0x28,0x28,0x1C,0x00, 0x00,0x28,0x28,0x28,0x08,0x00,0x00,0x00,0x00,0x00,0x07,0x26,0x17,0x00,0x00,0x0F, 0x26,0x26,0x26,0x26,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x2A,0x26,0x26,0x26,0x26,0x00,0x00,0x07,0x26,0x26,0x26,0x26,0x26,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAC,0xA9,0xA9,0xA9,0xAA, 0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAB,0xA9,0xA9,0xA9,0xA9,0xAC,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4D,0x47,0x47,0x47,0x47, 0x47,0x47,0x4E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x08,0x27,0x27,0x27,0x27,0x27,0x27,0x2B,0x27,0x27,0x27,0x27, 0x27,0x27,0x18,0x08,0x00,0x16,0x27,0x27,0x27,0x27,0x0F,0x18,0x04,0x27,0x04,0x04, 0x0F,0x00,0x04,0x25,0x25,0x07,0x0F,0x07,0x1E,0x00,0x07,0x25,0x25,0x25,0x1C,0x00, 0x00,0x1E,0x25,0x25,0x25,0x25,0x0F,0x00,0x00,0x00,0x1E,0x1A,0x25,0x25,0x25,0x25, 0x08,0x00,0x25,0x25,0x25,0x25,0x1A,0x00,0x00,0x07,0x0F,0x17,0x25,0x25,0x25,0x25, 0x07,0x00,0x1C,0x25,0x25,0x25,0x17,0x00,0x18,0x25,0x25,0x25,0x25,0x25,0x18,0x00, 0x00,0x00,0x00,0x07,0x25,0x25,0x25,0x25,0x07,0x00,0x07,0x25,0x25,0x25,0x17,0x00, 0x00,0x25,0x25,0x25,0x18,0x00,0x00,0x00,0x00,0x00,0x07,0x22,0x22,0x17,0x00,0x11, 0x22,0x22,0x22,0x22,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x08,0x07,0x22,0x22,0x22,0x22,0x00,0x12,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x87,0xA8,0xA8,0xA8,0xAB, 0xAE,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAB,0xA8,0xA8,0xA8,0xA8,0xA8,0xAE,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x49,0x47,0x47,0x47,0x47, 0x47,0x49,0x4E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x08,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x24,0x24,0x24,0x24, 0x24,0x24,0x17,0x00,0x00,0x18,0x24,0x24,0x24,0x24,0x12,0x36,0x24,0x24,0x24,0x24, 0x07,0x1E,0x24,0x22,0x22,0x22,0x22,0x22,0x33,0x00,0x0F,0x22,0x22,0x22,0x1A,0x00, 0x00,0x00,0x22,0x22,0x22,0x22,0x07,0x0F,0x18,0x00,0x1E,0x08,0x23,0x23,0x23,0x23, 0x07,0x08,0x23,0x23,0x23,0x23,0x08,0x00,0x07,0x23,0x23,0x08,0x23,0x23,0x23,0x23, 0x13,0x00,0x1C,0x23,0x23,0x23,0x12,0x08,0x1A,0x22,0x22,0x22,0x22,0x23,0x0F,0x13, 0x18,0x22,0x08,0x18,0x23,0x23,0x23,0x23,0x07,0x00,0x19,0x23,0x23,0x23,0x11,0x00, 0x00,0x23,0x23,0x23,0x12,0x07,0x00,0x00,0x00,0x00,0x17,0x35,0x35,0x35,0x08,0x13, 0x35,0x35,0x35,0x35,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x35,0x35,0x35,0x35,0x35,0x35,0x19,0x35,0x35,0x35,0x35,0x35,0x35,0x1C,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x86,0x8C,0x8C,0x8C,0xAC, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAB,0x8C,0x8C,0x8C,0x8C,0x8C,0xAB,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x49,0x47,0x47,0x47,0x47,0x47, 0x47,0x4C,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x08,0x36,0x36,0x36,0x36,0x36,0x26,0x00,0x36,0x36,0x36,0x36, 0x36,0x16,0x00,0x00,0x00,0x1A,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18, 0x00,0x1D,0x36,0x35,0x35,0x35,0x35,0x35,0x33,0x00,0x16,0x35,0x35,0x35,0x18,0x00, 0x00,0x1D,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x1E,0x08,0x35,0x35,0x35,0x35, 0x35,0x08,0x35,0x35,0x35,0x35,0x35,0x00,0x25,0x35,0x35,0x35,0x35,0x35,0x35,0x1A, 0x07,0x1D,0x1C,0x35,0x35,0x35,0x35,0x1A,0x08,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x08,0x1E,0x08,0x35,0x35,0x35,0x35,0x35,0x08,0x00,0x35,0x35,0x35,0x35,0x08, 0x00,0x35,0x35,0x35,0x35,0x08,0x00,0x00,0x00,0x00,0x18,0x34,0x34,0x34,0x0C,0x34, 0x34,0x34,0x34,0x34,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x0C,0x1C,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x85,0x8B,0x8B,0x8B,0xAC, 0x9F,0x9F,0x9F,0x9F,0x9F,0xAA,0x85,0x8B,0x8B,0x8B,0x8B,0x85,0xAE,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x4D,0x49,0x47,0x47,0x47,0x47,0x47,0x47, 0x49,0x4E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1C,0x34,0x34,0x34,0x34,0x34,0x34,0x1D,0x00,0x00,0x34,0x34,0x34, 0x18,0x00,0x00,0x00,0x00,0x1D,0x1D,0x34,0x34,0x34,0x34,0x34,0x34,0x0C,0x07,0x00, 0x00,0x1C,0x0C,0x33,0x33,0x33,0x33,0x33,0x07,0x00,0x18,0x33,0x33,0x33,0x16,0x00, 0x00,0x08,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x08,0x1E,0x00,0x08,0x33,0x33,0x33, 0x19,0x00,0x19,0x33,0x33,0x33,0x18,0x00,0x08,0x1E,0x33,0x33,0x07,0x08,0x1E,0x00, 0x00,0x1D,0x1A,0x33,0x33,0x33,0x07,0x00,0x1C,0x1C,0x33,0x33,0x33,0x33,0x33,0x33, 0x33,0x07,0x00,0x00,0x20,0x33,0x33,0x33,0x18,0x08,0x00,0x33,0x33,0x33,0x08,0x08, 0x00,0x33,0x33,0x33,0x08,0x00,0x00,0x00,0x00,0x00,0x16,0x32,0x32,0x32,0x32,0x32, 0x32,0x32,0x32,0x32,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F, 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x1C,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x84,0x83,0x83,0x83,0xAB, 0xAE,0xAF,0xAF,0xAE,0xAA,0x85,0x82,0x83,0x82,0x83,0x83,0x87,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49, 0x4E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x19,0x08,0x1C,0x1D,0x1E,0x1F,0x1C,0x00,0x00,0x1F,0x1D,0x1C,0x08, 0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x08,0x1D,0x1E,0x1F,0x00,0x1E,0x07,0x00,0x00, 0x00,0x1D,0x18,0x07,0x07,0x07,0x07,0x07,0x00,0x00,0x1A,0x32,0x32,0x32,0x18,0x00, 0x00,0x00,0x1C,0x18,0x07,0x08,0x1C,0x1E,0x1E,0x1E,0x00,0x00,0x1D,0x1E,0x17,0x07, 0x00,0x00,0x1D,0x1E,0x17,0x07,0x00,0x00,0x00,0x00,0x1F,0x18,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1D,0x18,0x18,0x00,0x00,0x00,0x1C,0x08,0x18,0x18,0x18,0x18,0x18, 0x18,0x08,0x00,0x00,0x1D,0x18,0x18,0x18,0x00,0x00,0x00,0x1D,0x18,0x08,0x00,0x00, 0x00,0x19,0x18,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x30,0x30,0x30,0x30, 0x07,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x07,0x18,0x1C,0x1E,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x83,0x83,0x83,0x83,0x86, 0xAA,0xAC,0xAB,0x87,0x85,0x83,0x82,0x83,0x83,0x83,0x84,0xAE,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x2B,0x2A,0x2C,0x2C,0x2B,0x2A,0x2A,0x2C,0x2B,0x2C,0x2A,0x2C,0x2B,0x2B,0x2B,0x2B, 0x2B,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49,0x4D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x2F,0x2D, 0x2C,0x2B,0x2B,0x2C,0x2C,0x2C,0x2D,0x2D,0x2C,0x1D,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x19,0x08,0x19,0x31,0x31,0x31,0x1A,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x10,0x12, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2D,0x2B,0x29,0x29,0x28,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x85,0x82,0x82,0x82,0x84, 0x85,0x85,0x84,0x84,0x82,0x82,0x84,0x86,0x83,0x83,0x87,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x2C,0x2B,0x28, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49,0x4D,0x4E,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x08,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x12,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D, 0x00,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAC,0xF6,0x83,0xF6,0x83, 0xF6,0x83,0xF6,0xF6,0x84,0x86,0xAC,0x85,0xF6,0x84,0xAD,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x00,0x00,0x00,0x00, 0x24,0x24,0x25,0x22,0x24,0x25,0x21,0x24,0x21,0x23,0x28,0x24,0x21,0x25,0x25,0x22, 0x26,0x9A,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x47,0x47,0x9F,0x9F,0x47,0x47,0x47,0x47, 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x49,0x4A,0x4D,0x4E,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x29, 0x28,0x26,0x04,0x04,0x25,0x25,0x23,0x28,0x23,0x1D,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x08,0x30,0x30,0x30,0x30,0x30,0x30,0x14,0x22,0x28,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x2B,0x29,0x28,0x28,0x25,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x86,0xF7,0xF7,0xF7, 0xF7,0xF7,0xF7,0xF7,0x87,0x9F,0xAC,0xF7,0xF7,0x86,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x28,0x20,0x29, 0x21,0x24,0x26,0x21,0x28,0x04,0x26,0x24,0x22,0x04,0x22,0x25,0x24,0x23,0x24,0x24, 0x24,0x9B,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x29, 0x25,0x23,0x24,0x24,0x25,0x25,0x23,0x28,0x25,0x1D,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1C,0x25,0x25,0x25,0x25,0x32,0x30,0x33,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x2A,0x2A,0x25,0x28,0x26,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x87,0x7C,0x7C, 0x7C,0x7C,0x7C,0x87,0x9F,0x9F,0x87,0x7C,0x7C,0xAC,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x29,0x24,0x29, 0x28,0x23,0x24,0x22,0x23,0x26,0x21,0x24,0x22,0x22,0x25,0x24,0x23,0x22,0x25,0x25, 0x24,0x9B,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x28, 0x24,0x28,0x25,0x22,0x21,0x25,0x21,0x22,0x26,0x1D,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1E,0x1E,0x00,0x00,0x00,0x2A,0x1A,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2C,0x29,0x28,0x26,0x25,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xAC,0x87, 0x87,0x87,0xAC,0x9F,0x9F,0xAC,0xFC,0xFC,0x87,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x27,0x04,0x29, 0x24,0x23,0x24,0x23,0x22,0x25,0x23,0x04,0x24,0x25,0x24,0x25,0x23,0x04,0x25,0x04, 0x24,0x9B,0x9F,0x9F,0x4C,0x47,0x47,0x9F,0x9F,0x4C,0x47,0x4C,0x9F,0x9F,0x47,0x47, 0x9F,0x9F,0x47,0x47,0x47,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x47, 0x9F,0x9F,0x9F,0x47,0x47,0x4C,0x9F,0x9F,0x9F,0x47,0x47,0x9F,0x9F,0x9F,0x2B,0x2A, 0x04,0x22,0x23,0x22,0x26,0x22,0x26,0x25,0x28,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2B,0x29,0x04,0x24,0x04,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x87,0x7D,0x7D,0xAC,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2A,0x2A,0x24,0x29, 0x28,0x24,0x23,0x25,0x22,0x22,0x21,0x22,0x24,0x22,0x23,0x23,0x23,0x24,0x22,0x25, 0x28,0x9B,0x9F,0x9F,0x47,0x4B,0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x47,0x9F, 0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47, 0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x9F,0x2C,0x2A, 0x23,0x24,0x25,0x24,0x25,0x23,0x26,0x25,0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00, 0x00,0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D, 0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2A,0x28,0x26,0x04,0x26,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0xAC,0x6B,0x6B,0x87,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x2A,0x29,0x29, 0x26,0x22,0x22,0x04,0x24,0x25,0x21,0x23,0x22,0x24,0x24,0x04,0x26,0x25,0x25,0x23, 0x26,0x9B,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x47,0x47, 0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x47, 0x9F,0x9F,0x9F,0x47,0x47,0x9F,0x9F,0x9F,0x9F,0x47,0x47,0x9F,0x9F,0x9F,0x2A,0x2A, 0x22,0x22,0x24,0x25,0x22,0x20,0x22,0x22,0x25,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x00,0x00,0x1D,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1F,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2A,0x28,0x26,0x25,0x25,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x6B,0x6B,0x6B,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2C,0x2A,0x04,0x29, 0x24,0x23,0x23,0x25,0x26,0x24,0x23,0x24,0x23,0x24,0x04,0x25,0x25,0x24,0x23,0x04, 0x24,0x9B,0x9F,0x9F,0x9F,0x4D,0x47,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x47,0x9F, 0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47, 0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x9F,0x2A,0x2A, 0x22,0x20,0x25,0x22,0x26,0x23,0x04,0x23,0x28,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1F,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1F,0x1D,0x00,0x00, 0x1D,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x1F,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D, 0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2A,0x27,0x04,0x23,0x24,0x9A,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x7F,0x6B,0x6B,0x7E,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2C,0x2A,0x26,0x29, 0x28,0x23,0x24,0x24,0x23,0x22,0x22,0x22,0x23,0x22,0x04,0x28,0x24,0x26,0x28,0x26, 0x23,0x9C,0x9F,0x9F,0x9F,0x4B,0x47,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x47,0x9F, 0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47, 0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x9F,0x2C,0x28, 0x22,0x22,0x25,0x23,0x23,0x22,0x23,0x25,0x22,0x1E,0x00,0x00,0x18,0x08,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D, 0x1F,0x00,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 0x08,0x1D,0x00,0x00,0x2C,0x29,0x20,0x24,0x24,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x6C,0x6C,0x6C,0x7F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2C,0x2A,0x28,0x29, 0x22,0x28,0x26,0x28,0x26,0x28,0x28,0x25,0x22,0x25,0x04,0x28,0x26,0x25,0x28,0x24, 0x26,0x9C,0x9F,0x9F,0x47,0x47,0x4C,0x9F,0x9F,0x4C,0x47,0x4C,0x9F,0x9F,0x47,0x9F, 0x9F,0x9F,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x9F,0x47, 0x9F,0x9F,0x9F,0x47,0x9F,0x47,0x9F,0x9F,0x9F,0x47,0x47,0x9F,0x9F,0x9F,0x2B,0x2A, 0x20,0x22,0x22,0x22,0x26,0x22,0x24,0x26,0x24,0x1E,0x00,0x00,0x08,0x1D,0x1F,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00, 0x1D,0x1D,0x00,0x1D,0x00,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x00, 0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x1D,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x00,0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D, 0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x1D,0x1F,0x00,0x00,0x2C,0x2A,0x26,0x25,0x22,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x6D,0x6D,0x6D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x28,0x28,0x29, 0x28,0x24,0x25,0x28,0x28,0x24,0x28,0x28,0x28,0x26,0x23,0x04,0x25,0x26,0x25,0x04, 0x28,0x9C,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x27, 0x22,0x24,0x20,0x20,0x26,0x20,0x24,0x22,0x20,0x1E,0x00,0x00,0x1D,0x1F,0x1F,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x1F,0x1F,0x00,0x00,0x2B,0x2A,0x04,0x04,0x25,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2C,0x2B,0x24,0x29, 0x28,0x25,0x26,0x25,0x25,0x24,0x25,0x24,0x25,0x25,0x23,0x26,0x04,0x25,0x25,0x24, 0x25,0x9C,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x2A, 0x25,0x28,0x22,0x25,0x24,0x22,0x20,0x24,0x22,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D, 0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2C,0x2A,0x26,0x28,0x28,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2C,0x2A,0x25,0x29, 0x22,0x25,0x25,0x25,0x23,0x22,0x25,0x25,0x22,0x28,0x25,0x25,0x28,0x25,0x23,0x28, 0x28,0x9C,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x29, 0x26,0x28,0x25,0x24,0x23,0x26,0x22,0x25,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x2A,0x2B,0x23,0x24,0x26,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x2B,0x29,0x28,0x29, 0x23,0x22,0x22,0x25,0x25,0x25,0x22,0x25,0x23,0x26,0x28,0x22,0x25,0x23,0x28,0x28, 0x26,0x22,0x2D,0x2A,0x2A,0x2B,0x2B,0x2B,0x2B,0x2B,0x2B,0x2A,0x2B,0x2C,0x2A,0x2A, 0x2C,0x2B,0x2A,0x2C,0x2B,0x2A,0x2A,0x2C,0x2A,0x2B,0x2B,0x2A,0x2A,0x2A,0x2B,0x2B, 0x2A,0x2A,0x2B,0x2A,0x2B,0x2B,0x2A,0x2B,0x2C,0x2B,0x2A,0x2A,0x2C,0x2A,0x2C,0x29, 0x26,0x23,0x25,0x25,0x23,0x25,0x22,0x25,0x23,0x25,0x2B,0x2A,0x2B,0x2B,0x2A,0x2A, 0x2A,0x2A,0x2A,0x2C,0x2A,0x2A,0x2A,0x2A,0x2B,0x2A,0x29,0x29,0x2A,0x2A,0x2A,0x2A, 0x2C,0x2A,0x2B,0x2A,0x2B,0x2A,0x2A,0x2B,0x2C,0x2C,0x2A,0x2B,0x2C,0x2B,0x2B,0x2B, 0x2C,0x2C,0x2C,0x2D,0x2D,0x2D,0x2C,0x2D,0x2C,0x2C,0x2B,0x2B,0x2B,0x2C,0x2B,0x2C, 0x2A,0x2B,0x2A,0x2B,0x2C,0x2A,0x2C,0x2B,0x2C,0x2B,0x2C,0x2C,0x2C,0x2B,0x2C,0x2B, 0x2B,0x2C,0x2B,0x2B,0x29,0x2A,0x2B,0x2C,0x2C,0x2C,0x2C,0x2C,0x2B,0x2A,0x2B,0x2C, 0x2C,0x2D,0x2C,0x2C,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2D,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2D,0x2C,0x2C,0x2D,0x2C,0x2C,0x2B,0x2C,0x2C,0x2C,0x2B,0x2B,0x2B,0x2B,0x2C, 0x2C,0x2A,0x2C,0x2C,0x2D,0x2C,0x2B,0x2C,0x2B,0x2C,0x2C,0x2B,0x2B,0x2B,0x2C,0x2B, 0x2B,0x2C,0x29,0x2C,0x2B,0x2C,0x2B,0x2C,0x2C,0x2C,0x2B,0x2B,0x2C,0x2A,0x2C,0x2B, 0x2B,0x2C,0x2B,0x2A,0x2A,0x2A,0x2B,0x29,0x2A,0x2A,0x2B,0x2A,0x2A,0x2A,0x2B,0x2C, 0x2B,0x2C,0x2C,0x2B,0x2C,0x2A,0x22,0x22,0x04,0x26,0x29,0x2D,0x2C,0x2A,0x2C,0x2B, 0x2B,0x2C,0x2C,0x2C,0x2C,0x2B,0x2C,0x2B,0x2C,0x2B,0x2C,0x2B,0x2B,0x2C,0x2B,0x2A, 0x2B,0x2C,0x2B,0x2B,0x2B,0x2A,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2B,0x2B,0x2C,0x2B, 0x2B,0x2B,0x2C,0x2B,0x2C,0x2A,0x2B,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2B,0x2B,0x2B, 0x2B,0x2C,0x2B,0x2C,0x2C,0x2B,0x2C,0x2C,0x2C,0x2C,0x2B,0x2C,0x2E,0x2A,0x28,0x29, 0x22,0x04,0x28,0x21,0x25,0x23,0x25,0x25,0x25,0x22,0x20,0x25,0x23,0x22,0x22,0x23, 0x24,0x26,0x23,0x28,0x2D,0x28,0x29,0x2A,0x2A,0x29,0x29,0x2A,0x2A,0x2A,0x28,0x2A, 0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x2A,0x29,0x29,0x2A,0x29,0x2A,0x2A,0x2A,0x2A, 0x28,0x29,0x2A,0x28,0x27,0x28,0x28,0x29,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x2A, 0x25,0x25,0x25,0x22,0x26,0x22,0x22,0x23,0x22,0x25,0x24,0x29,0x2B,0x28,0x27,0x28, 0x29,0x28,0x28,0x29,0x29,0x27,0x2A,0x27,0x26,0x27,0x28,0x27,0x27,0x27,0x04,0x28, 0x2A,0x2A,0x28,0x2A,0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x27,0x28,0x2A,0x2A, 0x29,0x2A,0x28,0x2A,0x2A,0x2A,0x2A,0x2A,0x28,0x28,0x29,0x2A,0x2A,0x2A,0x2C,0x29, 0x28,0x29,0x28,0x28,0x2A,0x2A,0x2A,0x2A,0x27,0x28,0x29,0x2A,0x2A,0x29,0x2A,0x29, 0x29,0x2A,0x29,0x27,0x26,0x2A,0x29,0x2A,0x29,0x29,0x2A,0x29,0x28,0x2A,0x28,0x27, 0x2A,0x2A,0x2A,0x29,0x2A,0x28,0x2A,0x2A,0x2A,0x2A,0x28,0x29,0x2A,0x29,0x29,0x2A, 0x29,0x29,0x29,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x29,0x29,0x29,0x2A,0x2A,0x29,0x29, 0x29,0x2A,0x29,0x29,0x2C,0x28,0x2A,0x29,0x2A,0x29,0x28,0x29,0x28,0x28,0x2A,0x29, 0x29,0x28,0x27,0x29,0x2A,0x2A,0x29,0x2A,0x29,0x29,0x29,0x28,0x2A,0x29,0x29,0x2A, 0x29,0x29,0x27,0x27,0x26,0x29,0x29,0x28,0x29,0x2A,0x29,0x29,0x29,0x29,0x2A,0x2A, 0x29,0x2A,0x29,0x2A,0x28,0x2B,0x28,0x24,0x25,0x24,0x04,0x28,0x28,0x2D,0x2A,0x29, 0x2A,0x2A,0x29,0x2A,0x2A,0x2A,0x29,0x2A,0x2A,0x2A,0x2A,0x29,0x2A,0x29,0x29,0x29, 0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x29,0x29,0x29,0x2A,0x29,0x2A,0x29,0x2A,0x29,0x29, 0x28,0x2A,0x2A,0x29,0x29,0x2A,0x2A,0x2A,0x2A,0x28,0x29,0x2A,0x28,0x2A,0x2A,0x2A, 0x2B,0x2A,0x2A,0x2A,0x2A,0x2B,0x2A,0x2A,0x2A,0x29,0x2A,0x29,0x2A,0x2A,0x28,0x29, 0x24,0x20,0x25,0x25,0x24,0x24,0x20,0x22,0x23,0x25,0x23,0x26,0x25,0x25,0x23,0x20, 0x24,0x21,0x22,0x25,0x24,0x23,0x23,0x25,0x04,0x22,0x28,0x26,0x26,0x26,0x04,0x25, 0x26,0x26,0x28,0x25,0x28,0x28,0x22,0x04,0x22,0x26,0x24,0x25,0x26,0x25,0x26,0x25, 0x04,0x22,0x25,0x22,0x23,0x23,0x04,0x23,0x25,0x22,0x23,0x23,0x28,0x22,0x23,0x24, 0x24,0x24,0x04,0x22,0x25,0x23,0x25,0x22,0x24,0x25,0x25,0x24,0x24,0x22,0x21,0x25, 0x23,0x25,0x23,0x04,0x24,0x28,0x04,0x25,0x22,0x22,0x26,0x24,0x24,0x23,0x25,0x25, 0x24,0x04,0x23,0x25,0x23,0x20,0x23,0x22,0x20,0x24,0x22,0x25,0x25,0x24,0x25,0x26, 0x25,0x26,0x04,0x25,0x25,0x25,0x25,0x28,0x24,0x25,0x26,0x24,0x28,0x28,0x25,0x25, 0x25,0x04,0x25,0x28,0x24,0x04,0x23,0x28,0x24,0x23,0x25,0x25,0x26,0x28,0x28,0x04, 0x26,0x24,0x24,0x23,0x25,0x28,0x25,0x26,0x04,0x28,0x28,0x28,0x04,0x25,0x23,0x26, 0x25,0x25,0x04,0x26,0x26,0x25,0x23,0x28,0x25,0x25,0x23,0x24,0x23,0x26,0x26,0x28, 0x26,0x28,0x28,0x28,0x25,0x04,0x04,0x28,0x28,0x25,0x28,0x04,0x26,0x28,0x28,0x04, 0x28,0x28,0x28,0x04,0x28,0x28,0x04,0x28,0x04,0x26,0x25,0x23,0x24,0x26,0x24,0x26, 0x24,0x22,0x04,0x26,0x04,0x28,0x04,0x04,0x25,0x26,0x24,0x26,0x22,0x24,0x26,0x26, 0x28,0x25,0x24,0x24,0x28,0x04,0x26,0x25,0x25,0x26,0x04,0x28,0x04,0x04,0x28,0x26, 0x28,0x04,0x25,0x26,0x04,0x22,0x24,0x24,0x26,0x28,0x26,0x24,0x24,0x24,0x04,0x04, 0x04,0x26,0x25,0x23,0x25,0x26,0x28,0x04,0x04,0x28,0x26,0x28,0x28,0x28,0x28,0x27, 0x28,0x25,0x29,0x25,0x28,0x28,0x26,0x25,0x26,0x26,0x28,0x24,0x26,0x28,0x04,0x28, 0x04,0x04,0x04,0x04,0x28,0x28,0x28,0x26,0x04,0x25,0x28,0x28,0x25,0x24,0x28,0x29, 0x28,0x25,0x28,0x25,0x28,0x26,0x04,0x27,0x27,0x28,0x27,0x27,0x27,0x28,0x04,0x29, 0x23,0x26,0x26,0x04,0x25,0x04,0x26,0x25,0x25,0x23,0x25,0x26,0x25,0x28,0x23,0x22, 0x20,0x24,0x25,0x25,0x21,0x26,0x23,0x28,0x24,0x28,0x25,0x28,0x28,0x25,0x04,0x04, 0x04,0x24,0x25,0x25,0x24,0x26,0x24,0x28,0x04,0x26,0x25,0x04,0x26,0x25,0x25,0x25, 0x21,0x28,0x24,0x23,0x26,0x24,0x24,0x25,0x25,0x23,0x23,0x26,0x23,0x22,0x25,0x28, 0x25,0x23,0x24,0x25,0x22,0x04,0x23,0x04,0x22,0x23,0x24,0x24,0x23,0x04,0x24,0x26, 0x25,0x23,0x25,0x04,0x22,0x26,0x28,0x23,0x23,0x23,0x25,0x04,0x23,0x22,0x20,0x22, 0x20,0x22,0x22,0x04,0x22,0x24,0x24,0x24,0x23,0x23,0x04,0x24,0x22,0x23,0x20,0x20, 0x22,0x20,0x23,0x23,0x22,0x21,0x28,0x25,0x24,0x25,0x25,0x25,0x22,0x28,0x28,0x25, 0x28,0x28,0x24,0x24,0x25,0x04,0x25,0x25,0x23,0x21,0x22,0x25,0x24,0x25,0x23,0x25, 0x25,0x24,0x22,0x22,0x25,0x04,0x25,0x04,0x04,0x28,0x23,0x25,0x04,0x25,0x28,0x24, 0x25,0x24,0x04,0x22,0x26,0x25,0x25,0x26,0x25,0x24,0x26,0x26,0x26,0x28,0x28,0x24, 0x04,0x27,0x25,0x25,0x29,0x28,0x04,0x29,0x28,0x04,0x28,0x28,0x24,0x28,0x28,0x28, 0x28,0x04,0x28,0x28,0x04,0x28,0x25,0x24,0x24,0x25,0x25,0x25,0x04,0x25,0x22,0x22, 0x23,0x24,0x28,0x24,0x26,0x25,0x28,0x25,0x26,0x24,0x28,0x04,0x24,0x26,0x22,0x25, 0x22,0x22,0x25,0x24,0x25,0x26,0x25,0x28,0x25,0x04,0x25,0x24,0x26,0x26,0x28,0x28, 0x25,0x26,0x25,0x25,0x25,0x26,0x04,0x25,0x25,0x04,0x28,0x28,0x28,0x26,0x26,0x26, 0x28,0x24,0x25,0x25,0x25,0x25,0x26,0x28,0x26,0x26,0x04,0x25,0x04,0x25,0x25,0x28, 0x28,0x2A,0x28,0x28,0x28,0x28,0x28,0x25,0x04,0x26,0x28,0x24,0x26,0x27,0x28,0x28, 0x28,0x28,0x04,0x28,0x28,0x24,0x28,0x26,0x04,0x28,0x25,0x29,0x04,0x26,0x04,0x25, 0x28,0x28,0x28,0x04,0x26,0x24,0x26,0x28,0x04,0x28,0x04,0x28,0x04,0x04,0x25,0x29, 0x24,0x28,0x26,0x28,0x26,0x26,0x25,0x26,0x22,0x28,0x23,0x25,0x25,0x22,0x22,0x20, 0x24,0x04,0x25,0x23,0x25,0x04,0x25,0x24,0x22,0x26,0x23,0x04,0x26,0x25,0x24,0x23, 0x25,0x04,0x26,0x21,0x28,0x24,0x28,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x28, 0x24,0x28,0x26,0x25,0x23,0x25,0x22,0x25,0x24,0x22,0x22,0x25,0x28,0x23,0x25,0x24, 0x04,0x25,0x24,0x24,0x28,0x25,0x23,0x22,0x25,0x26,0x22,0x25,0x23,0x22,0x25,0x24, 0x26,0x26,0x24,0x25,0x23,0x23,0x24,0x26,0x25,0x24,0x22,0x24,0x22,0x25,0x21,0x22, 0x20,0x25,0x04,0x22,0x25,0x22,0x25,0x22,0x24,0x04,0x28,0x22,0x22,0x26,0x26,0x24, 0x28,0x24,0x23,0x26,0x24,0x23,0x23,0x25,0x24,0x25,0x04,0x04,0x23,0x22,0x23,0x25, 0x23,0x23,0x28,0x24,0x21,0x22,0x25,0x24,0x24,0x22,0x22,0x23,0x26,0x24,0x20,0x04, 0x24,0x20,0x28,0x25,0x25,0x26,0x26,0x28,0x28,0x26,0x22,0x26,0x04,0x28,0x25,0x26, 0x28,0x04,0x25,0x28,0x25,0x23,0x26,0x26,0x24,0x26,0x04,0x04,0x04,0x28,0x28,0x29, 0x29,0x04,0x25,0x22,0x28,0x26,0x26,0x28,0x24,0x04,0x28,0x25,0x28,0x04,0x25,0x24, 0x25,0x28,0x28,0x29,0x24,0x25,0x24,0x28,0x04,0x26,0x26,0x26,0x22,0x24,0x22,0x24, 0x28,0x25,0x04,0x23,0x25,0x04,0x25,0x04,0x28,0x26,0x26,0x25,0x24,0x25,0x04,0x26, 0x28,0x04,0x24,0x26,0x28,0x04,0x25,0x28,0x28,0x26,0x27,0x22,0x04,0x24,0x28,0x28, 0x26,0x26,0x25,0x28,0x28,0x26,0x26,0x26,0x26,0x24,0x25,0x04,0x28,0x04,0x04,0x26, 0x28,0x27,0x23,0x24,0x26,0x24,0x28,0x26,0x28,0x28,0x28,0x29,0x29,0x26,0x29,0x29, 0x28,0x28,0x26,0x28,0x24,0x28,0x28,0x28,0x26,0x28,0x28,0x28,0x04,0x25,0x25,0x25, 0x28,0x29,0x28,0x28,0x28,0x04,0x29,0x28,0x28,0x28,0x28,0x26,0x28,0x28,0x28,0x27, 0x26,0x04,0x24,0x25,0x04,0x25,0x26,0x28,0x28,0x28,0x28,0x25,0x26,0x28,0x26,0x29, 0x28,0x04,0x25,0x26,0x23,0x22,0x24,0x23,0x04,0x25,0x28,0x28,0x28,0x23,0x21,0x24, 0x25,0x25,0x22,0x24,0x22,0x25,0x22,0x26,0x21,0x26,0x24,0x25,0x25,0x24,0x23,0x23, 0x26,0x24,0x25,0x25,0x25,0x28,0x26,0x25,0x22,0x26,0x22,0x22,0x26,0x25,0x26,0x26, 0x28,0x26,0x24,0x21,0x25,0x26,0x22,0x26,0x23,0x24,0x25,0x23,0x24,0x23,0x21,0x22, 0x23,0x25,0x26,0x25,0x25,0x22,0x26,0x22,0x23,0x23,0x24,0x04,0x28,0x25,0x25,0x28, 0x22,0x23,0x23,0x24,0x26,0x22,0x25,0x22,0x22,0x23,0x24,0x24,0x25,0x25,0x25,0x24, 0x22,0x24,0x25,0x23,0x20,0x25,0x21,0x21,0x23,0x26,0x04,0x25,0x23,0x28,0x22,0x04, 0x25,0x28,0x23,0x04,0x20,0x25,0x22,0x20,0x23,0x26,0x04,0x22,0x25,0x23,0x25,0x24, 0x24,0x24,0x23,0x25,0x22,0x22,0x22,0x25,0x25,0x22,0x22,0x20,0x22,0x20,0x22,0x26, 0x23,0x26,0x22,0x24,0x25,0x25,0x26,0x25,0x28,0x26,0x23,0x23,0x25,0x24,0x04,0x25, 0x23,0x28,0x22,0x26,0x24,0x04,0x28,0x04,0x26,0x24,0x28,0x28,0x25,0x04,0x25,0x28, 0x25,0x04,0x25,0x25,0x28,0x26,0x04,0x28,0x25,0x25,0x28,0x28,0x04,0x28,0x23,0x28, 0x22,0x28,0x28,0x25,0x24,0x28,0x26,0x24,0x26,0x04,0x28,0x23,0x24,0x25,0x25,0x25, 0x24,0x25,0x22,0x25,0x26,0x28,0x25,0x24,0x26,0x25,0x28,0x28,0x04,0x28,0x24,0x25, 0x22,0x22,0x24,0x24,0x24,0x26,0x26,0x28,0x28,0x28,0x28,0x24,0x28,0x28,0x28,0x26, 0x26,0x26,0x24,0x22,0x28,0x26,0x27,0x26,0x28,0x28,0x28,0x28,0x27,0x25,0x26,0x26, 0x28,0x28,0x26,0x28,0x25,0x28,0x04,0x28,0x04,0x28,0x28,0x28,0x28,0x26,0x28,0x25, 0x25,0x28,0x25,0x28,0x25,0x28,0x28,0x29,0x29,0x26,0x28,0x28,0x24,0x26,0x29,0x28, 0x28,0x04,0x28,0x24,0x04,0x26,0x28,0x28,0x28,0x26,0x25,0x27,0x26,0x26,0x26,0x25, 0x26,0x04,0x04,0x28,0x28,0x04,0x24,0x04,0x04,0x23,0x25,0x22,0x24,0x28,0x26,0x29, 0x28,0x28,0x23,0x28,0x24,0x28,0x25,0x28,0x26,0x22,0x22,0x24,0x24,0x25,0x25,0x24, 0x22,0x26,0x25,0x26,0x24,0x24,0x25,0x04,0x26,0x23,0x23,0x21,0x04,0x26,0x23,0x26, 0x25,0x28,0x21,0x04,0x24,0x25,0x26,0x04,0x26,0x23,0x24,0x25,0x25,0x24,0x25,0x25, 0x26,0x25,0x28,0x26,0x28,0x28,0x25,0x25,0x04,0x25,0x24,0x25,0x28,0x25,0x25,0x04, 0x22,0x25,0x22,0x21,0x22,0x22,0x24,0x23,0x22,0x24,0x22,0x21,0x25,0x21,0x22,0x23, 0x23,0x23,0x24,0x22,0x23,0x23,0x28,0x22,0x23,0x25,0x23,0x25,0x24,0x25,0x04,0x25, 0x25,0x22,0x22,0x24,0x21,0x24,0x25,0x24,0x24,0x22,0x28,0x25,0x24,0x25,0x23,0x23, 0x22,0x24,0x24,0x04,0x24,0x22,0x24,0x24,0x24,0x28,0x25,0x22,0x26,0x21,0x26,0x23, 0x24,0x23,0x24,0x22,0x26,0x22,0x25,0x20,0x23,0x25,0x23,0x24,0x26,0x25,0x28,0x25, 0x25,0x25,0x28,0x28,0x26,0x25,0x28,0x25,0x25,0x28,0x04,0x28,0x29,0x28,0x28,0x26, 0x25,0x26,0x26,0x28,0x28,0x25,0x24,0x25,0x28,0x04,0x28,0x04,0x22,0x25,0x26,0x26, 0x28,0x28,0x24,0x26,0x28,0x26,0x28,0x26,0x28,0x28,0x28,0x28,0x25,0x28,0x28,0x28, 0x28,0x25,0x04,0x28,0x25,0x26,0x26,0x26,0x04,0x26,0x25,0x25,0x24,0x24,0x04,0x04, 0x27,0x25,0x28,0x28,0x26,0x28,0x24,0x24,0x25,0x27,0x25,0x04,0x28,0x28,0x26,0x23, 0x24,0x28,0x28,0x28,0x28,0x04,0x04,0x26,0x23,0x28,0x22,0x26,0x28,0x24,0x25,0x25, 0x23,0x25,0x28,0x28,0x25,0x28,0x28,0x26,0x28,0x28,0x27,0x26,0x28,0x26,0x24,0x26, 0x28,0x28,0x28,0x28,0x2A,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x26,0x28,0x28,0x29, 0x23,0x28,0x26,0x28,0x28,0x04,0x28,0x04,0x28,0x28,0x28,0x28,0x04,0x26,0x04,0x28, 0x28,0x28,0x28,0x28,0x27,0x25,0x26,0x24,0x25,0x28,0x28,0x28,0x26,0x25,0x26,0x24, 0x04,0x26,0x27,0x28,0x28,0x28,0x04,0x28,0x28,0x27,0x27,0x25,0x25,0x27,0x04,0x29, 0x23,0x23,0x23,0x21,0x23,0x24,0x25,0x24,0x23,0x25,0x20,0x20,0x24,0x21,0x25,0x22, 0x25,0x25,0x22,0x24,0x23,0x24,0x26,0x22,0x24,0x23,0x26,0x25,0x24,0x25,0x22,0x23, 0x25,0x04,0x28,0x26,0x25,0x25,0x24,0x25,0x26,0x24,0x25,0x26,0x25,0x22,0x25,0x26, 0x22,0x23,0x24,0x26,0x04,0x25,0x25,0x28,0x23,0x25,0x25,0x25,0x04,0x23,0x22,0x04, 0x24,0x25,0x20,0x24,0x20,0x20,0x20,0x25,0x20,0x20,0x24,0x20,0x22,0x20,0x24,0x20, 0x25,0x20,0x25,0x20,0x24,0x20,0x23,0x25,0x24,0x23,0x24,0x28,0x24,0x25,0x25,0x23, 0x25,0x04,0x26,0x25,0x26,0x22,0x23,0x25,0x24,0x21,0x24,0x25,0x22,0x22,0x04,0x22, 0x25,0x24,0x22,0x22,0x04,0x25,0x26,0x23,0x21,0x22,0x21,0x23,0x21,0x25,0x20,0x25, 0x24,0x26,0x22,0x26,0x26,0x23,0x26,0x24,0x23,0x24,0x23,0x28,0x28,0x23,0x22,0x22, 0x26,0x04,0x28,0x04,0x26,0x04,0x24,0x28,0x28,0x26,0x25,0x28,0x27,0x04,0x28,0x29, 0x04,0x28,0x04,0x28,0x26,0x26,0x25,0x26,0x28,0x28,0x26,0x25,0x28,0x26,0x25,0x28, 0x26,0x04,0x23,0x25,0x28,0x25,0x26,0x28,0x24,0x28,0x26,0x28,0x28,0x28,0x28,0x04, 0x26,0x28,0x24,0x28,0x04,0x26,0x28,0x28,0x04,0x26,0x28,0x25,0x25,0x25,0x26,0x04, 0x24,0x04,0x28,0x28,0x25,0x28,0x04,0x28,0x28,0x28,0x28,0x28,0x26,0x25,0x28,0x22, 0x24,0x24,0x26,0x28,0x28,0x25,0x28,0x25,0x25,0x23,0x24,0x28,0x26,0x26,0x24,0x28, 0x24,0x28,0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x04,0x28,0x23,0x28,0x27,0x28, 0x25,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x24,0x25,0x04,0x28,0x28,0x28,0x29,0x28, 0x25,0x29,0x25,0x26,0x25,0x28,0x25,0x28,0x29,0x29,0x29,0x28,0x28,0x04,0x28,0x28, 0x28,0x26,0x25,0x23,0x28,0x25,0x28,0x26,0x26,0x26,0x26,0x04,0x29,0x28,0x26,0x28, 0x26,0x29,0x28,0x28,0x04,0x28,0x26,0x28,0x28,0x28,0x04,0x04,0x28,0x28,0x24,0x29, 0x26,0x23,0x22,0x22,0x24,0x25,0x20,0x24,0x22,0x25,0x24,0x04,0x22,0x22,0x20,0x23, 0x24,0x24,0x24,0x04,0x23,0x04,0x25,0x22,0x25,0x23,0x25,0x26,0x24,0x24,0x23,0x24, 0x28,0x26,0x25,0x25,0x26,0x26,0x25,0x23,0x24,0x25,0x28,0x22,0x24,0x25,0x25,0x24, 0x28,0x24,0x28,0x26,0x28,0x26,0x25,0x26,0x25,0x25,0x23,0x24,0x23,0x22,0x24,0x26, 0x25,0x25,0x25,0x25,0x24,0x23,0x25,0x22,0x23,0x23,0x26,0x28,0x22,0x23,0x22,0x24, 0x25,0x23,0x25,0x25,0x22,0x20,0x20,0x04,0x22,0x22,0x25,0x22,0x24,0x23,0x26,0x23, 0x04,0x22,0x25,0x23,0x24,0x28,0x24,0x25,0x25,0x21,0x23,0x25,0x22,0x22,0x22,0x04, 0x23,0x25,0x22,0x25,0x21,0x22,0x04,0x22,0x22,0x22,0x22,0x23,0x24,0x25,0x24,0x04, 0x25,0x04,0x24,0x25,0x24,0x25,0x23,0x22,0x04,0x04,0x24,0x28,0x28,0x23,0x28,0x25, 0x25,0x28,0x25,0x26,0x24,0x26,0x28,0x26,0x25,0x24,0x25,0x26,0x25,0x25,0x04,0x26, 0x04,0x28,0x25,0x04,0x26,0x28,0x26,0x26,0x28,0x04,0x25,0x26,0x26,0x25,0x25,0x24, 0x24,0x24,0x04,0x28,0x25,0x28,0x26,0x04,0x24,0x28,0x28,0x28,0x23,0x29,0x26,0x28, 0x28,0x28,0x25,0x28,0x28,0x25,0x25,0x25,0x22,0x22,0x28,0x04,0x28,0x24,0x04,0x25, 0x04,0x28,0x04,0x04,0x28,0x25,0x04,0x28,0x28,0x28,0x26,0x28,0x04,0x26,0x25,0x26, 0x25,0x25,0x25,0x28,0x25,0x25,0x28,0x04,0x28,0x26,0x28,0x25,0x25,0x28,0x04,0x25, 0x28,0x29,0x28,0x29,0x28,0x25,0x28,0x26,0x26,0x28,0x04,0x26,0x04,0x04,0x25,0x28, 0x25,0x28,0x28,0x26,0x26,0x04,0x28,0x25,0x25,0x26,0x25,0x24,0x28,0x25,0x04,0x29, 0x28,0x28,0x28,0x04,0x28,0x04,0x24,0x24,0x28,0x28,0x27,0x25,0x28,0x04,0x28,0x28, 0x29,0x25,0x28,0x29,0x29,0x25,0x28,0x28,0x28,0x28,0x29,0x28,0x29,0x28,0x29,0x28, 0x28,0x29,0x28,0x25,0x25,0x29,0x26,0x2A,0x29,0x2A,0x29,0x28,0x26,0x04,0x28,0x29, 0x23,0x25,0x23,0x21,0x04,0x28,0x25,0x24,0x22,0x25,0x22,0x28,0x26,0x25,0x28,0x25, 0x26,0x22,0x25,0x25,0x25,0x25,0x23,0x25,0x25,0x22,0x22,0x25,0x22,0x22,0x04,0x22, 0x25,0x25,0x23,0x26,0x23,0x25,0x22,0x25,0x25,0x25,0x22,0x22,0x04,0x21,0x23,0x24, 0x25,0x23,0x25,0x24,0x22,0x22,0x04,0x04,0x04,0x25,0x20,0x22,0x28,0x25,0x25,0x28, 0x25,0x26,0x25,0x26,0x24,0x24,0x23,0x24,0x21,0x24,0x24,0x23,0x23,0x22,0x25,0x23, 0x24,0x04,0x04,0x26,0x22,0x28,0x22,0x20,0x25,0x20,0x20,0x20,0x24,0x23,0x22,0x23, 0x28,0x22,0x24,0x23,0x22,0x25,0x23,0x25,0x21,0x25,0x22,0x24,0x28,0x26,0x04,0x04, 0x22,0x24,0x23,0x24,0x22,0x24,0x23,0x04,0x25,0x22,0x22,0x26,0x23,0x25,0x23,0x04, 0x23,0x25,0x23,0x26,0x24,0x24,0x04,0x26,0x04,0x22,0x28,0x25,0x04,0x26,0x24,0x04, 0x28,0x28,0x04,0x25,0x25,0x26,0x25,0x26,0x24,0x23,0x24,0x25,0x04,0x28,0x28,0x26, 0x25,0x25,0x26,0x25,0x26,0x28,0x04,0x25,0x28,0x26,0x26,0x24,0x26,0x24,0x26,0x25, 0x04,0x25,0x24,0x24,0x23,0x26,0x26,0x26,0x28,0x28,0x28,0x26,0x26,0x28,0x29,0x28, 0x28,0x29,0x29,0x28,0x28,0x26,0x26,0x22,0x24,0x04,0x28,0x24,0x25,0x26,0x28,0x25, 0x25,0x23,0x24,0x04,0x28,0x04,0x28,0x28,0x28,0x25,0x04,0x25,0x25,0x26,0x25,0x26, 0x24,0x25,0x25,0x04,0x25,0x23,0x26,0x28,0x24,0x04,0x2A,0x04,0x28,0x24,0x2A,0x28, 0x28,0x28,0x29,0x28,0x29,0x28,0x24,0x25,0x25,0x25,0x28,0x04,0x28,0x28,0x25,0x25, 0x29,0x28,0x29,0x25,0x28,0x28,0x25,0x28,0x04,0x24,0x28,0x28,0x28,0x04,0x26,0x25, 0x26,0x04,0x27,0x26,0x25,0x04,0x28,0x25,0x25,0x25,0x28,0x04,0x04,0x23,0x25,0x26, 0x28,0x25,0x28,0x28,0x28,0x28,0x04,0x28,0x25,0x28,0x28,0x28,0x28,0x29,0x28,0x26, 0x28,0x2A,0x04,0x29,0x29,0x29,0x28,0x28,0x29,0x28,0x29,0x04,0x28,0x29,0x28,0x29, 0x28,0x25,0x28,0x22,0x28,0x24,0x25,0x28,0x04,0x22,0x26,0x22,0x22,0x24,0x26,0x28, 0x28,0x23,0x22,0x23,0x20,0x26,0x25,0x26,0x04,0x22,0x25,0x23,0x04,0x24,0x23,0x04, 0x23,0x24,0x24,0x24,0x22,0x25,0x25,0x22,0x23,0x22,0x21,0x24,0x24,0x20,0x22,0x20, 0x04,0x20,0x20,0x22,0x24,0x22,0x25,0x22,0x25,0x25,0x25,0x24,0x25,0x24,0x24,0x24, 0x04,0x04,0x28,0x25,0x25,0x25,0x24,0x22,0x25,0x25,0x24,0x22,0x22,0x25,0x24,0x28, 0x25,0x25,0x23,0x22,0x25,0x22,0x04,0x26,0x22,0x25,0x04,0x25,0x22,0x24,0x25,0x24, 0x20,0x20,0x25,0x26,0x24,0x22,0x20,0x22,0x22,0x25,0x22,0x25,0x28,0x25,0x22,0x25, 0x23,0x28,0x22,0x25,0x22,0x24,0x24,0x25,0x25,0x23,0x25,0x23,0x24,0x28,0x04,0x24, 0x28,0x04,0x24,0x25,0x04,0x25,0x25,0x28,0x28,0x25,0x26,0x23,0x28,0x26,0x28,0x25, 0x23,0x26,0x04,0x26,0x04,0x28,0x26,0x28,0x25,0x25,0x24,0x28,0x04,0x26,0x28,0x28, 0x26,0x25,0x25,0x28,0x04,0x28,0x28,0x28,0x28,0x24,0x04,0x24,0x04,0x04,0x23,0x28, 0x04,0x28,0x04,0x26,0x28,0x28,0x26,0x28,0x04,0x2A,0x28,0x28,0x25,0x28,0x28,0x28, 0x25,0x29,0x2A,0x26,0x04,0x28,0x28,0x25,0x25,0x28,0x26,0x04,0x28,0x28,0x04,0x25, 0x28,0x26,0x28,0x28,0x25,0x29,0x28,0x04,0x25,0x28,0x25,0x28,0x22,0x25,0x26,0x24, 0x28,0x26,0x27,0x04,0x26,0x28,0x28,0x29,0x28,0x28,0x26,0x25,0x25,0x28,0x28,0x28, 0x28,0x28,0x04,0x28,0x26,0x26,0x26,0x24,0x28,0x28,0x24,0x25,0x28,0x26,0x28,0x2A, 0x28,0x24,0x26,0x29,0x25,0x29,0x28,0x23,0x28,0x25,0x28,0x25,0x25,0x28,0x28,0x28, 0x23,0x28,0x28,0x26,0x25,0x26,0x04,0x26,0x28,0x25,0x25,0x24,0x04,0x28,0x28,0x26, 0x25,0x04,0x28,0x28,0x28,0x04,0x28,0x28,0x26,0x29,0x28,0x28,0x29,0x29,0x28,0x29, 0x04,0x28,0x04,0x28,0x28,0x28,0x26,0x28,0x24,0x28,0x24,0x28,0x28,0x29,0x25,0x29, 0x26,0x25,0x23,0x22,0x22,0x22,0x23,0x22,0x23,0x25,0x04,0x04,0x04,0x25,0x26,0x04, 0x22,0x25,0x26,0x04,0x23,0x22,0x22,0x24,0x20,0x22,0x04,0x22,0x04,0x21,0x22,0x23, 0x25,0x24,0x26,0x28,0x21,0x21,0x20,0x25,0x24,0x22,0x20,0x25,0x04,0x26,0x23,0x24, 0x26,0x24,0x26,0x20,0x22,0x20,0x24,0x20,0x22,0x04,0x26,0x22,0x22,0x24,0x23,0x22, 0x28,0x28,0x25,0x04,0x26,0x25,0x04,0x28,0x28,0x26,0x04,0x28,0x23,0x28,0x04,0x25, 0x21,0x25,0x23,0x23,0x24,0x21,0x24,0x26,0x25,0x23,0x23,0x26,0x25,0x24,0x25,0x24, 0x22,0x25,0x26,0x23,0x28,0x26,0x25,0x23,0x26,0x23,0x23,0x28,0x22,0x25,0x23,0x25, 0x24,0x23,0x23,0x23,0x25,0x25,0x26,0x26,0x22,0x24,0x26,0x25,0x26,0x25,0x24,0x23, 0x23,0x26,0x28,0x04,0x28,0x28,0x27,0x25,0x28,0x26,0x28,0x04,0x26,0x04,0x28,0x25, 0x28,0x26,0x26,0x04,0x26,0x04,0x04,0x04,0x25,0x26,0x26,0x26,0x04,0x04,0x28,0x25, 0x25,0x28,0x26,0x04,0x04,0x24,0x04,0x04,0x04,0x26,0x28,0x26,0x28,0x28,0x22,0x04, 0x04,0x26,0x25,0x28,0x29,0x26,0x29,0x25,0x04,0x04,0x28,0x28,0x29,0x2A,0x28,0x2A, 0x25,0x2A,0x28,0x28,0x2A,0x29,0x28,0x25,0x25,0x2A,0x28,0x04,0x25,0x25,0x28,0x04, 0x28,0x28,0x28,0x28,0x28,0x29,0x26,0x28,0x26,0x28,0x25,0x22,0x04,0x28,0x29,0x28, 0x28,0x28,0x04,0x28,0x28,0x28,0x25,0x24,0x28,0x27,0x28,0x04,0x28,0x28,0x26,0x25, 0x23,0x25,0x28,0x26,0x28,0x28,0x28,0x25,0x04,0x26,0x28,0x28,0x29,0x25,0x04,0x28, 0x28,0x2A,0x28,0x28,0x04,0x04,0x28,0x28,0x28,0x26,0x26,0x28,0x04,0x24,0x24,0x25, 0x26,0x04,0x26,0x28,0x28,0x28,0x25,0x25,0x28,0x25,0x25,0x26,0x26,0x25,0x25,0x24, 0x28,0x28,0x04,0x25,0x28,0x28,0x25,0x25,0x28,0x28,0x28,0x29,0x28,0x04,0x25,0x29, 0x26,0x25,0x25,0x28,0x28,0x25,0x04,0x28,0x25,0x04,0x26,0x26,0x24,0x25,0x28,0x29, 0x04,0x28,0x23,0x25,0x25,0x26,0x23,0x28,0x25,0x28,0x25,0x23,0x04,0x23,0x26,0x23, 0x26,0x28,0x22,0x04,0x23,0x23,0x24,0x24,0x22,0x22,0x22,0x20,0x24,0x23,0x20,0x22, 0x04,0x25,0x25,0x23,0x23,0x22,0x20,0x20,0x21,0x24,0x23,0x04,0x24,0x28,0x22,0x25, 0x24,0x26,0x22,0x20,0x20,0x20,0x23,0x24,0x25,0x22,0x20,0x20,0x25,0x24,0x25,0x24, 0x23,0x26,0x23,0x25,0x28,0x25,0x26,0x25,0x23,0x26,0x24,0x28,0x04,0x26,0x24,0x26, 0x24,0x24,0x25,0x24,0x25,0x04,0x22,0x24,0x22,0x24,0x25,0x22,0x24,0x23,0x24,0x23, 0x26,0x23,0x24,0x22,0x23,0x28,0x04,0x28,0x24,0x25,0x25,0x25,0x23,0x23,0x24,0x25, 0x04,0x25,0x28,0x26,0x23,0x24,0x04,0x24,0x25,0x28,0x26,0x23,0x25,0x22,0x23,0x26, 0x26,0x28,0x23,0x28,0x24,0x24,0x04,0x22,0x04,0x23,0x24,0x24,0x26,0x04,0x28,0x04, 0x04,0x28,0x26,0x04,0x22,0x24,0x28,0x24,0x25,0x26,0x04,0x27,0x25,0x25,0x28,0x28, 0x28,0x04,0x28,0x26,0x04,0x25,0x28,0x23,0x28,0x26,0x04,0x04,0x24,0x25,0x28,0x26, 0x25,0x28,0x25,0x28,0x26,0x26,0x29,0x28,0x28,0x29,0x26,0x04,0x26,0x28,0x28,0x29, 0x26,0x2A,0x04,0x28,0x04,0x28,0x28,0x27,0x28,0x28,0x28,0x29,0x25,0x22,0x22,0x26, 0x29,0x28,0x26,0x28,0x28,0x28,0x04,0x25,0x28,0x26,0x29,0x04,0x2A,0x28,0x28,0x28, 0x28,0x28,0x26,0x26,0x28,0x25,0x28,0x28,0x23,0x28,0x28,0x28,0x26,0x25,0x27,0x28, 0x27,0x27,0x28,0x25,0x04,0x28,0x28,0x04,0x28,0x04,0x25,0x28,0x29,0x28,0x2A,0x28, 0x28,0x2A,0x28,0x28,0x2A,0x24,0x04,0x28,0x25,0x04,0x28,0x25,0x26,0x25,0x24,0x25, 0x26,0x25,0x25,0x23,0x28,0x26,0x25,0x25,0x04,0x28,0x26,0x26,0x04,0x04,0x26,0x04, 0x26,0x22,0x04,0x04,0x28,0x28,0x28,0x28,0x28,0x28,0x04,0x28,0x25,0x27,0x25,0x28, 0x24,0x22,0x26,0x28,0x26,0x04,0x28,0x04,0x28,0x25,0x28,0x28,0x04,0x25,0x24,0x29, 0x28,0x25,0x23,0x25,0x22,0x25,0x28,0x26,0x23,0x24,0x04,0x23,0x28,0x22,0x25,0x22, 0x28,0x22,0x24,0x25,0x26,0x25,0x25,0x22,0x22,0x22,0x23,0x26,0x23,0x26,0x22,0x24, 0x04,0x25,0x22,0x25,0x23,0x22,0x25,0x28,0x22,0x24,0x25,0x23,0x24,0x23,0x25,0x25, 0x25,0x21,0x23,0x20,0x20,0x22,0x22,0x23,0x28,0x22,0x23,0x25,0x22,0x28,0x24,0x26, 0x23,0x25,0x28,0x26,0x26,0x26,0x28,0x28,0x25,0x25,0x25,0x28,0x28,0x25,0x26,0x28, 0x24,0x28,0x24,0x23,0x28,0x28,0x26,0x04,0x26,0x28,0x04,0x26,0x24,0x24,0x04,0x25, 0x25,0x25,0x04,0x26,0x04,0x26,0x24,0x28,0x25,0x25,0x23,0x25,0x24,0x25,0x25,0x25, 0x24,0x25,0x25,0x23,0x22,0x25,0x25,0x25,0x04,0x23,0x04,0x28,0x26,0x26,0x28,0x04, 0x28,0x28,0x28,0x28,0x24,0x28,0x24,0x04,0x04,0x04,0x28,0x28,0x24,0x25,0x04,0x26, 0x24,0x25,0x26,0x04,0x26,0x28,0x28,0x28,0x28,0x25,0x26,0x29,0x04,0x28,0x26,0x28, 0x28,0x26,0x25,0x28,0x04,0x25,0x24,0x28,0x28,0x26,0x28,0x25,0x25,0x24,0x26,0x25, 0x24,0x28,0x27,0x28,0x26,0x04,0x25,0x29,0x28,0x28,0x28,0x04,0x04,0x28,0x26,0x29, 0x29,0x29,0x04,0x26,0x25,0x28,0x24,0x24,0x24,0x04,0x28,0x04,0x28,0x24,0x28,0x28, 0x27,0x29,0x04,0x26,0x26,0x25,0x28,0x25,0x29,0x04,0x29,0x28,0x28,0x28,0x28,0x28, 0x2B,0x29,0x2B,0x2C,0x29,0x28,0x26,0x04,0x28,0x25,0x28,0x26,0x27,0x28,0x28,0x28, 0x04,0x25,0x24,0x28,0x28,0x04,0x28,0x25,0x25,0x25,0x26,0x28,0x28,0x28,0x29,0x29, 0x28,0x28,0x22,0x28,0x28,0x28,0x28,0x28,0x24,0x24,0x26,0x26,0x25,0x25,0x04,0x28, 0x04,0x25,0x28,0x24,0x28,0x25,0x04,0x28,0x26,0x24,0x26,0x04,0x28,0x26,0x26,0x25, 0x28,0x28,0x28,0x29,0x25,0x28,0x25,0x28,0x28,0x26,0x04,0x25,0x04,0x28,0x28,0x28, 0x04,0x25,0x25,0x28,0x28,0x24,0x28,0x28,0x26,0x24,0x28,0x24,0x26,0x25,0x28,0x29, 0x04,0x23,0x22,0x24,0x25,0x25,0x23,0x25,0x23,0x23,0x22,0x04,0x04,0x24,0x26,0x24, 0x23,0x24,0x04,0x04,0x04,0x25,0x22,0x28,0x25,0x25,0x22,0x25,0x26,0x25,0x22,0x23, 0x22,0x25,0x23,0x25,0x04,0x24,0x23,0x25,0x22,0x28,0x22,0x25,0x22,0x25,0x28,0x22, 0x25,0x26,0x25,0x20,0x26,0x04,0x20,0x23,0x23,0x25,0x25,0x25,0x24,0x22,0x25,0x24, 0x25,0x24,0x25,0x28,0x04,0x25,0x25,0x24,0x28,0x25,0x28,0x28,0x26,0x25,0x24,0x23, 0x26,0x24,0x28,0x25,0x28,0x27,0x28,0x25,0x27,0x26,0x26,0x26,0x26,0x25,0x04,0x26, 0x28,0x25,0x25,0x28,0x28,0x26,0x04,0x04,0x26,0x24,0x24,0x24,0x04,0x24,0x28,0x25, 0x24,0x24,0x04,0x26,0x26,0x25,0x26,0x25,0x23,0x28,0x25,0x25,0x25,0x29,0x04,0x24, 0x28,0x28,0x24,0x25,0x04,0x22,0x26,0x28,0x26,0x04,0x28,0x25,0x25,0x28,0x28,0x24, 0x04,0x26,0x04,0x04,0x04,0x26,0x04,0x27,0x25,0x28,0x28,0x28,0x28,0x26,0x26,0x29, 0x26,0x28,0x28,0x28,0x28,0x25,0x24,0x28,0x28,0x28,0x26,0x25,0x28,0x25,0x28,0x28, 0x28,0x26,0x26,0x28,0x28,0x25,0x2A,0x28,0x28,0x26,0x25,0x25,0x24,0x25,0x24,0x25, 0x23,0x26,0x28,0x25,0x24,0x22,0x25,0x25,0x25,0x25,0x28,0x04,0x25,0x04,0x26,0x28, 0x04,0x26,0x28,0x29,0x28,0x29,0x28,0x25,0x25,0x28,0x04,0x28,0x28,0x26,0x28,0x28, 0x28,0x25,0x2B,0x29,0x29,0x04,0x04,0x28,0x24,0x25,0x29,0x28,0x25,0x28,0x28,0x28, 0x28,0x22,0x26,0x25,0x26,0x28,0x28,0x28,0x24,0x28,0x25,0x24,0x24,0x28,0x04,0x26, 0x28,0x23,0x28,0x29,0x28,0x04,0x26,0x26,0x04,0x24,0x24,0x25,0x25,0x26,0x24,0x25, 0x22,0x04,0x25,0x26,0x26,0x22,0x28,0x24,0x24,0x26,0x28,0x28,0x28,0x26,0x28,0x26, 0x26,0x28,0x28,0x04,0x04,0x24,0x04,0x25,0x25,0x04,0x25,0x28,0x26,0x25,0x25,0x25, 0x04,0x04,0x25,0x25,0x26,0x24,0x24,0x25,0x28,0x26,0x25,0x25,0x26,0x28,0x25,0x29, 0x23,0x04,0x25,0x24,0x25,0x26,0x25,0x26,0x25,0x25,0x28,0x25,0x28,0x28,0x24,0x25, 0x26,0x25,0x04,0x25,0x25,0x22,0x22,0x25,0x25,0x24,0x26,0x04,0x22,0x24,0x24,0x24, 0x23,0x23,0x26,0x22,0x25,0x24,0x25,0x28,0x25,0x22,0x26,0x26,0x25,0x24,0x28,0x04, 0x25,0x22,0x26,0x23,0x26,0x25,0x04,0x28,0x04,0x26,0x04,0x28,0x25,0x22,0x22,0x24, 0x20,0x22,0x24,0x25,0x24,0x23,0x25,0x04,0x25,0x28,0x28,0x28,0x28,0x04,0x25,0x28, 0x27,0x25,0x25,0x26,0x25,0x24,0x27,0x25,0x26,0x28,0x25,0x25,0x04,0x28,0x27,0x28, 0x24,0x25,0x25,0x28,0x25,0x24,0x04,0x28,0x25,0x26,0x26,0x04,0x26,0x26,0x25,0x24, 0x25,0x28,0x04,0x28,0x26,0x25,0x28,0x26,0x28,0x22,0x04,0x25,0x28,0x25,0x25,0x28, 0x25,0x25,0x28,0x25,0x28,0x24,0x28,0x24,0x26,0x28,0x28,0x04,0x28,0x25,0x24,0x25, 0x28,0x27,0x25,0x04,0x04,0x26,0x28,0x24,0x26,0x04,0x28,0x24,0x28,0x04,0x28,0x27, 0x24,0x26,0x26,0x28,0x25,0x24,0x28,0x04,0x26,0x23,0x04,0x28,0x04,0x26,0x29,0x28, 0x26,0x28,0x26,0x28,0x26,0x28,0x25,0x28,0x29,0x25,0x28,0x27,0x28,0x25,0x28,0x24, 0x22,0x22,0x20,0x20,0x25,0x23,0x04,0x26,0x24,0x28,0x28,0x25,0x24,0x24,0x25,0x25, 0x28,0x28,0x04,0x28,0x26,0x28,0x28,0x04,0x28,0x28,0x29,0x28,0x26,0x28,0x26,0x25, 0x28,0x28,0x28,0x2A,0x24,0x29,0x28,0x28,0x28,0x28,0x28,0x04,0x2A,0x28,0x25,0x04, 0x28,0x28,0x26,0x2A,0x2A,0x04,0x24,0x26,0x28,0x26,0x26,0x04,0x28,0x04,0x28,0x28, 0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x24,0x28,0x28,0x28,0x24,0x26,0x25,0x25, 0x25,0x28,0x23,0x24,0x28,0x24,0x26,0x28,0x26,0x25,0x28,0x29,0x28,0x04,0x26,0x28, 0x28,0x28,0x2A,0x04,0x04,0x04,0x24,0x25,0x04,0x26,0x28,0x25,0x25,0x26,0x26,0x24, 0x04,0x04,0x04,0x28,0x04,0x26,0x26,0x04,0x28,0x26,0x24,0x28,0x28,0x26,0x04,0x29, 0x24,0x28,0x28,0x23,0x23,0x22,0x25,0x04,0x23,0x24,0x22,0x26,0x25,0x22,0x26,0x23, 0x25,0x24,0x23,0x25,0x23,0x04,0x04,0x24,0x25,0x25,0x25,0x22,0x22,0x26,0x22,0x04, 0x04,0x25,0x26,0x04,0x04,0x25,0x25,0x23,0x25,0x24,0x28,0x04,0x25,0x04,0x24,0x04, 0x24,0x25,0x20,0x22,0x04,0x25,0x28,0x25,0x26,0x23,0x26,0x26,0x28,0x04,0x04,0x26, 0x25,0x25,0x25,0x26,0x23,0x24,0x23,0x25,0x04,0x28,0x25,0x28,0x28,0x28,0x04,0x28, 0x28,0x04,0x22,0x28,0x25,0x28,0x25,0x26,0x25,0x28,0x27,0x28,0x28,0x25,0x28,0x28, 0x28,0x24,0x24,0x22,0x04,0x04,0x25,0x26,0x25,0x28,0x25,0x28,0x04,0x28,0x28,0x26, 0x26,0x25,0x04,0x25,0x28,0x26,0x26,0x28,0x25,0x04,0x04,0x26,0x28,0x24,0x28,0x25, 0x04,0x28,0x04,0x25,0x21,0x28,0x26,0x24,0x04,0x25,0x28,0x04,0x28,0x28,0x25,0x28, 0x28,0x26,0x28,0x04,0x04,0x26,0x26,0x28,0x26,0x24,0x24,0x24,0x28,0x04,0x25,0x26, 0x28,0x28,0x24,0x28,0x25,0x25,0x25,0x25,0x28,0x26,0x04,0x28,0x24,0x28,0x26,0x28, 0x26,0x29,0x26,0x28,0x26,0x25,0x26,0x25,0x24,0x28,0x25,0x26,0x22,0x26,0x28,0x28, 0x04,0x22,0x20,0x24,0x21,0x23,0x25,0x24,0x26,0x25,0x26,0x24,0x25,0x25,0x26,0x28, 0x26,0x25,0x24,0x26,0x28,0x04,0x26,0x28,0x28,0x28,0x28,0x28,0x27,0x28,0x28,0x04, 0x27,0x24,0x25,0x04,0x29,0x26,0x28,0x28,0x28,0x28,0x28,0x28,0x04,0x26,0x2A,0x28, 0x2A,0x28,0x25,0x25,0x26,0x04,0x28,0x28,0x28,0x28,0x28,0x28,0x24,0x26,0x25,0x28, 0x28,0x28,0x24,0x28,0x25,0x25,0x28,0x28,0x28,0x28,0x28,0x25,0x22,0x28,0x26,0x26, 0x25,0x25,0x04,0x28,0x25,0x28,0x28,0x28,0x23,0x25,0x26,0x29,0x25,0x28,0x29,0x25, 0x29,0x29,0x25,0x24,0x25,0x25,0x26,0x28,0x28,0x25,0x28,0x28,0x24,0x24,0x25,0x26, 0x28,0x25,0x04,0x28,0x28,0x24,0x26,0x28,0x28,0x26,0x28,0x23,0x28,0x04,0x04,0x29, 0x22,0x26,0x23,0x26,0x25,0x21,0x04,0x22,0x25,0x04,0x04,0x23,0x25,0x04,0x28,0x24, 0x25,0x25,0x24,0x24,0x24,0x25,0x04,0x22,0x24,0x23,0x23,0x04,0x26,0x24,0x24,0x25, 0x28,0x28,0x04,0x28,0x25,0x28,0x23,0x25,0x04,0x25,0x24,0x26,0x25,0x28,0x25,0x24, 0x23,0x28,0x04,0x25,0x24,0x28,0x25,0x04,0x25,0x25,0x28,0x04,0x28,0x04,0x28,0x25, 0x28,0x25,0x20,0x22,0x22,0x21,0x21,0x23,0x25,0x26,0x26,0x22,0x22,0x24,0x25,0x25, 0x28,0x26,0x25,0x26,0x23,0x25,0x04,0x28,0x28,0x28,0x04,0x25,0x26,0x22,0x24,0x28, 0x26,0x28,0x25,0x28,0x25,0x26,0x23,0x26,0x04,0x28,0x04,0x25,0x04,0x28,0x2A,0x29, 0x25,0x25,0x26,0x24,0x25,0x04,0x28,0x25,0x25,0x25,0x28,0x04,0x25,0x23,0x28,0x28, 0x04,0x28,0x24,0x25,0x26,0x28,0x04,0x25,0x25,0x28,0x27,0x26,0x28,0x28,0x26,0x26, 0x25,0x26,0x26,0x24,0x26,0x04,0x26,0x26,0x04,0x04,0x28,0x28,0x24,0x24,0x26,0x25, 0x28,0x29,0x28,0x28,0x26,0x28,0x04,0x28,0x24,0x26,0x28,0x04,0x28,0x04,0x28,0x04, 0x29,0x24,0x29,0x29,0x24,0x28,0x28,0x25,0x25,0x28,0x28,0x28,0x04,0x22,0x24,0x20, 0x20,0x26,0x23,0x25,0x26,0x28,0x24,0x25,0x04,0x22,0x04,0x26,0x25,0x28,0x28,0x28, 0x28,0x24,0x28,0x28,0x04,0x28,0x25,0x04,0x26,0x24,0x04,0x26,0x26,0x28,0x28,0x25, 0x04,0x25,0x26,0x04,0x27,0x28,0x23,0x27,0x28,0x28,0x28,0x28,0x28,0x26,0x26,0x28, 0x28,0x28,0x04,0x28,0x28,0x25,0x28,0x28,0x29,0x28,0x28,0x28,0x25,0x26,0x24,0x26, 0x28,0x26,0x25,0x04,0x25,0x22,0x28,0x28,0x26,0x04,0x29,0x29,0x28,0x25,0x25,0x25, 0x04,0x26,0x28,0x28,0x28,0x26,0x28,0x28,0x28,0x29,0x28,0x28,0x04,0x28,0x28,0x28, 0x04,0x04,0x26,0x28,0x25,0x23,0x23,0x26,0x25,0x23,0x26,0x04,0x28,0x24,0x26,0x28, 0x26,0x04,0x22,0x22,0x22,0x26,0x26,0x04,0x28,0x25,0x25,0x28,0x25,0x26,0x28,0x29, 0x24,0x22,0x23,0x22,0x25,0x04,0x25,0x26,0x25,0x28,0x04,0x22,0x23,0x24,0x24,0x25, 0x26,0x28,0x04,0x22,0x25,0x26,0x24,0x28,0x04,0x04,0x28,0x26,0x26,0x25,0x28,0x25, 0x26,0x26,0x22,0x26,0x26,0x23,0x28,0x22,0x22,0x04,0x26,0x25,0x25,0x26,0x20,0x22, 0x24,0x04,0x25,0x26,0x28,0x24,0x04,0x26,0x25,0x24,0x24,0x26,0x28,0x28,0x26,0x28, 0x26,0x26,0x24,0x04,0x23,0x22,0x23,0x26,0x04,0x28,0x26,0x04,0x23,0x22,0x22,0x22, 0x23,0x22,0x23,0x25,0x20,0x20,0x25,0x25,0x28,0x28,0x25,0x25,0x24,0x23,0x22,0x24, 0x25,0x26,0x28,0x04,0x28,0x26,0x29,0x25,0x28,0x28,0x28,0x24,0x28,0x25,0x28,0x29, 0x28,0x28,0x28,0x28,0x04,0x28,0x04,0x28,0x25,0x04,0x28,0x28,0x25,0x28,0x28,0x28, 0x28,0x27,0x25,0x28,0x28,0x04,0x28,0x25,0x28,0x24,0x28,0x23,0x25,0x28,0x25,0x25, 0x28,0x26,0x26,0x28,0x28,0x25,0x28,0x25,0x23,0x04,0x24,0x25,0x28,0x26,0x28,0x26, 0x28,0x28,0x29,0x26,0x28,0x28,0x28,0x04,0x28,0x26,0x28,0x25,0x28,0x2A,0x28,0x28, 0x26,0x28,0x28,0x28,0x28,0x25,0x26,0x25,0x25,0x26,0x25,0x25,0x25,0x24,0x20,0x20, 0x22,0x22,0x04,0x25,0x28,0x25,0x04,0x25,0x24,0x26,0x26,0x04,0x25,0x28,0x26,0x28, 0x04,0x28,0x26,0x04,0x24,0x25,0x26,0x28,0x04,0x25,0x25,0x04,0x04,0x28,0x25,0x28, 0x24,0x28,0x28,0x26,0x24,0x25,0x23,0x04,0x28,0x28,0x25,0x24,0x28,0x26,0x28,0x28, 0x28,0x28,0x04,0x26,0x28,0x25,0x04,0x25,0x22,0x26,0x26,0x04,0x24,0x26,0x04,0x28, 0x25,0x28,0x26,0x26,0x04,0x28,0x23,0x26,0x24,0x25,0x28,0x26,0x04,0x28,0x26,0x29, 0x28,0x28,0x28,0x29,0x28,0x24,0x29,0x28,0x28,0x28,0x28,0x04,0x04,0x25,0x25,0x24, 0x24,0x26,0x25,0x25,0x22,0x20,0x20,0x22,0x24,0x22,0x23,0x20,0x20,0x22,0x20,0x22, 0x20,0x22,0x20,0x24,0x23,0x22,0x25,0x23,0x23,0x28,0x26,0x20,0x20,0x20,0x20,0x29, 0x28,0x28,0x25,0x28,0x04,0x26,0x25,0x26,0x25,0x26,0x25,0x26,0x28,0x28,0x04,0x04, 0x28,0x26,0x24,0x28,0x28,0x28,0x28,0x28,0x26,0x23,0x26,0x28,0x04,0x25,0x25,0x26, 0x28,0x28,0x26,0x26,0x26,0x28,0x04,0x22,0x04,0x25,0x25,0x28,0x04,0x26,0x04,0x28, 0x28,0x04,0x28,0x04,0x24,0x28,0x28,0x28,0x28,0x28,0x24,0x26,0x24,0x28,0x25,0x04, 0x28,0x28,0x23,0x28,0x24,0x24,0x28,0x26,0x25,0x28,0x25,0x25,0x25,0x24,0x22,0x04, 0x23,0x25,0x23,0x24,0x24,0x24,0x26,0x26,0x26,0x24,0x28,0x28,0x24,0x22,0x25,0x04, 0x25,0x28,0x26,0x29,0x24,0x28,0x25,0x28,0x24,0x28,0x25,0x28,0x24,0x28,0x28,0x26, 0x26,0x28,0x25,0x28,0x25,0x28,0x28,0x26,0x28,0x29,0x28,0x28,0x24,0x24,0x24,0x26, 0x23,0x26,0x04,0x25,0x04,0x26,0x04,0x25,0x23,0x25,0x04,0x24,0x25,0x24,0x23,0x24, 0x26,0x25,0x24,0x24,0x25,0x04,0x25,0x25,0x28,0x28,0x24,0x28,0x25,0x04,0x29,0x25, 0x04,0x04,0x28,0x28,0x04,0x28,0x04,0x29,0x04,0x26,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x24,0x28,0x25,0x04,0x24,0x23,0x22,0x25,0x23,0x20,0x25,0x23,0x25,0x25,0x25, 0x23,0x24,0x26,0x28,0x28,0x25,0x04,0x26,0x04,0x28,0x25,0x26,0x28,0x26,0x25,0x28, 0x04,0x25,0x04,0x26,0x28,0x26,0x25,0x28,0x28,0x28,0x28,0x23,0x25,0x25,0x28,0x25, 0x28,0x25,0x28,0x25,0x26,0x25,0x25,0x26,0x04,0x26,0x25,0x28,0x28,0x26,0x25,0x26, 0x28,0x04,0x28,0x25,0x26,0x25,0x28,0x04,0x04,0x28,0x29,0x04,0x26,0x28,0x26,0x28, 0x28,0x29,0x28,0x28,0x29,0x25,0x29,0x25,0x29,0x28,0x29,0x28,0x29,0x28,0x28,0x28, 0x28,0x29,0x24,0x04,0x24,0x04,0x25,0x27,0x28,0x24,0x24,0x28,0x04,0x23,0x24,0x23, 0x26,0x22,0x24,0x22,0x20,0x26,0x25,0x28,0x23,0x24,0x04,0x22,0x22,0x23,0x20,0x24, 0x26,0x26,0x20,0x22,0x20,0x24,0x22,0x24,0x20,0x24,0x22,0x24,0x25,0x24,0x28,0x29, 0x04,0x24,0x28,0x26,0x28,0x23,0x28,0x28,0x28,0x24,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x25,0x25,0x28,0x26, 0x25,0x25,0x25,0x25,0x25,0x26,0x28,0x04,0x24,0x26,0x28,0x2A,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x26,0x22,0x22,0x28,0x25,0x24,0x24,0x26,0x28,0x25,0x29, 0x04,0x28,0x28,0x28,0x24,0x25,0x25,0x04,0x25,0x24,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x25,0x25,0x26,0x25, 0x24,0x04,0x04,0x23,0x23,0x26,0x26,0x23,0x2A,0x28,0x25,0x2A,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x23,0x25,0x26,0x25,0x28,0x26,0x24,0x24,0x04,0x24,0x29, 0x25,0x28,0x26,0x25,0x28,0x26,0x22,0x25,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x25,0x28,0x26, 0x22,0x24,0x24,0x24,0x28,0x28,0x04,0x29,0x25,0x28,0x28,0x26,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x28,0x28,0x04,0x04,0x04,0x28,0x24,0x24,0x28,0x29, 0x26,0x25,0x26,0x25,0x28,0x22,0x25,0x25,0x24,0x23,0x2F,0x2F,0x2D,0x2D,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A, 0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x22,0x25,0x28,0x04, 0x28,0x28,0x26,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x28,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x04,0x04,0x28,0x24,0x26,0x24,0x28,0x04,0x25,0x29, 0x04,0x25,0x22,0x23,0x24,0x25,0x22,0x22,0x23,0x24,0x2F,0x2F,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x22,0x28,0x28,0x26, 0x29,0x28,0x28,0x04,0x26,0x29,0x28,0x24,0x26,0x28,0x26,0x25,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x04,0x22,0x25,0x23,0x25,0x28,0x26,0x23,0x29, 0x25,0x26,0x28,0x26,0x26,0x28,0x04,0x22,0x22,0x25,0x2F,0x2F,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x22,0x28,0x28,0x28, 0x04,0x04,0x28,0x28,0x28,0x24,0x28,0x26,0x26,0x28,0x25,0x26,0x2F,0x2F,0x2D,0x2D, 0x32,0x33,0x33,0x34,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x35,0x35,0x35,0x35,0x36,0x36, 0x36,0x36,0x20,0x23,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x24,0x23,0x28,0x28,0x28,0x25,0x25,0x20,0x29, 0x23,0x04,0x28,0x23,0x24,0x24,0x24,0x25,0x20,0x25,0x2F,0x2F,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x22,0x28,0x04,0x04, 0x04,0x04,0x26,0x28,0x26,0x25,0x04,0x26,0x26,0x23,0x22,0x22,0x2E,0x2F,0x2D,0x2D, 0x33,0x36,0x22,0x25,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x25,0x24,0x28,0x23,0x22,0x25,0x25,0x04,0x29, 0x22,0x24,0x20,0x22,0x22,0x23,0x23,0x23,0x21,0x23,0x2F,0x2F,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A, 0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x7A,0x7A,0x7A,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x7A,0x7A,0x7A,0x2D, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A, 0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x22,0x26,0x26,0x25, 0x28,0x26,0x26,0x25,0x28,0x28,0x25,0x04,0x24,0x25,0x25,0x25,0x2E,0x2F,0x2D,0x2D, 0x34,0x22,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x28,0x23,0x22,0x24,0x04,0x20,0x20,0x23,0x29, 0x22,0x20,0x20,0x24,0x22,0x23,0x24,0x22,0x24,0x24,0x2F,0x2F,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x22,0x23,0x24,0x25, 0x04,0x28,0x26,0x25,0x23,0x04,0x26,0x24,0x22,0x20,0x25,0x23,0x2E,0x2F,0x2D,0x2D, 0x34,0x25,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x23,0x22,0x04,0x25,0x25,0x04,0x22,0x22,0x23,0x29, 0x20,0x26,0x21,0x24,0x23,0x28,0x23,0x23,0x22,0x26,0x2F,0x2F,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x22,0x25,0x23,0x22, 0x22,0x22,0x20,0x26,0x20,0x24,0x20,0x23,0x26,0x28,0x22,0x25,0x2E,0x2F,0x2D,0x2D, 0x35,0x27,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x28,0x23,0x24,0x04,0x22,0x20,0x22,0x22,0x26,0x29, 0x25,0x21,0x25,0x22,0x24,0x23,0x24,0x24,0x04,0x04,0x2F,0x2F,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D, 0x2D,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x7A,0x7A,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D, 0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x7A,0x7A,0x2D,0x2D,0x2D,0x2D,0x22,0x26,0x28,0x28, 0x04,0x25,0x20,0x24,0x22,0x24,0x20,0x23,0x25,0x28,0x25,0x24,0x2E,0x2F,0x2D,0x2D, 0x36,0x27,0x28,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x04,0x25,0x04,0x20,0x26,0x24,0x23,0x04,0x04,0x29, 0x23,0x22,0x25,0x22,0x25,0x23,0x25,0x25,0x28,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x25,0x24,0x26, 0x04,0x24,0x21,0x24,0x25,0x22,0x22,0x25,0x26,0x23,0x23,0x25,0x2D,0x2F,0x2D,0x2D, 0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x20,0x23,0x25,0x23,0x26,0x24,0x28,0x28,0x04,0x29, 0x25,0x24,0x26,0x26,0x28,0x04,0x28,0x04,0x28,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x24,0x26,0x23, 0x25,0x22,0x25,0x23,0x22,0x26,0x28,0x23,0x20,0x25,0x22,0x24,0x2D,0x2F,0x2D,0x2D, 0x23,0x2A,0x2C,0x2C,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x20,0x28,0x26,0x26,0x25,0x28,0x28,0x04,0x24,0x29, 0x26,0x26,0x25,0x04,0x04,0x04,0x25,0x25,0x26,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x25,0x23,0x26, 0x25,0x28,0x25,0x28,0x26,0x28,0x28,0x24,0x25,0x25,0x22,0x04,0x2C,0x2F,0x2D,0x2D, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x24,0x28,0x27,0x25,0x28,0x04,0x28,0x24,0x26,0x29, 0x28,0x26,0x25,0x25,0x28,0x26,0x25,0x25,0x25,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x22,0x22,0x23, 0x25,0x26,0x25,0x04,0x25,0x28,0x24,0x22,0x26,0x23,0x23,0x26,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x04,0x29,0x28,0x29,0x28,0x28,0x25,0x25,0x26,0x29, 0x28,0x04,0x25,0x28,0x04,0x28,0x24,0x26,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x22,0x26,0x24,0x26, 0x28,0x04,0x22,0x26,0x25,0x25,0x22,0x24,0x25,0x23,0x22,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x28,0x28,0x28,0x25,0x28,0x29,0x29,0x28,0x25,0x29, 0x25,0x26,0x25,0x25,0x26,0x26,0x26,0x28,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x22,0x24,0x25,0x04, 0x24,0x26,0x25,0x04,0x21,0x24,0x20,0x24,0x22,0x25,0x25,0x24,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x25,0x28,0x25,0x25,0x26,0x25,0x28,0x29,0x25,0x29, 0x04,0x04,0x25,0x25,0x24,0x23,0x26,0x04,0x24,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x22,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x23,0x2D,0x2D,0x2D,0x2D,0x22,0x24,0x25,0x25, 0x22,0x20,0x20,0x20,0x22,0x22,0x26,0x26,0x24,0x23,0x23,0x22,0x28,0x24,0x24,0x24, 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23, 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x35,0x35,0x35,0x0C,0x0C,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, 0x34,0x34,0x34,0x33,0x33,0x32,0x04,0x25,0x28,0x24,0x25,0x04,0x28,0x24,0x2B,0x29, 0x27,0x24,0x25,0x04,0x25,0x25,0x04,0x25,0x22,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x22,0x23,0x22, 0x22,0x04,0x24,0x25,0x26,0x25,0x24,0x04,0x25,0x25,0x24,0x24,0x22,0x26,0x25,0x25, 0x24,0x24,0x24,0x26,0x25,0x28,0x25,0x28,0x28,0x28,0x25,0x24,0x26,0x24,0x25,0x28, 0x22,0x22,0x25,0x26,0x24,0x24,0x26,0x04,0x26,0x25,0x22,0x04,0x25,0x25,0x28,0x28, 0x26,0x26,0x29,0x28,0x28,0x29,0x25,0x29,0x29,0x25,0x29,0x28,0x04,0x29,0x28,0x25, 0x04,0x28,0x04,0x26,0x26,0x23,0x26,0x25,0x26,0x28,0x25,0x23,0x25,0x25,0x28,0x26, 0x25,0x28,0x26,0x28,0x28,0x25,0x29,0x28,0x28,0x04,0x24,0x28,0x28,0x25,0x28,0x28, 0x28,0x28,0x04,0x26,0x26,0x26,0x28,0x26,0x26,0x25,0x26,0x26,0x28,0x28,0x28,0x28, 0x28,0x2A,0x29,0x28,0x28,0x29,0x28,0x2A,0x28,0x2A,0x28,0x26,0x28,0x28,0x28,0x28, 0x04,0x04,0x28,0x24,0x25,0x25,0x24,0x20,0x20,0x04,0x25,0x25,0x25,0x26,0x24,0x25, 0x24,0x23,0x28,0x26,0x24,0x28,0x04,0x26,0x26,0x04,0x04,0x04,0x23,0x26,0x25,0x22, 0x28,0x25,0x24,0x04,0x24,0x25,0x25,0x27,0x04,0x28,0x28,0x28,0x28,0x04,0x28,0x29, 0x04,0x04,0x25,0x25,0x23,0x26,0x23,0x04,0x24,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x24,0x25,0x25, 0x28,0x24,0x24,0x24,0x25,0x22,0x26,0x25,0x24,0x26,0x23,0x22,0x25,0x04,0x24,0x24, 0x28,0x23,0x28,0x23,0x23,0x04,0x26,0x25,0x25,0x25,0x28,0x24,0x26,0x21,0x25,0x24, 0x22,0x26,0x24,0x24,0x25,0x04,0x04,0x26,0x25,0x28,0x04,0x25,0x28,0x04,0x26,0x28, 0x29,0x29,0x26,0x29,0x04,0x28,0x25,0x04,0x04,0x28,0x25,0x28,0x28,0x28,0x25,0x28, 0x28,0x24,0x28,0x04,0x04,0x26,0x24,0x25,0x25,0x26,0x26,0x28,0x28,0x28,0x25,0x26, 0x28,0x26,0x25,0x26,0x25,0x28,0x26,0x28,0x29,0x26,0x25,0x28,0x28,0x28,0x26,0x25, 0x29,0x04,0x26,0x04,0x24,0x04,0x25,0x25,0x28,0x04,0x25,0x04,0x26,0x28,0x28,0x25, 0x28,0x26,0x04,0x29,0x28,0x26,0x25,0x28,0x28,0x25,0x28,0x2A,0x25,0x28,0x28,0x26, 0x04,0x23,0x20,0x24,0x22,0x24,0x22,0x25,0x22,0x25,0x25,0x23,0x22,0x22,0x22,0x26, 0x25,0x28,0x26,0x28,0x04,0x04,0x28,0x29,0x28,0x25,0x25,0x28,0x28,0x28,0x28,0x26, 0x29,0x23,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29, 0x28,0x28,0x25,0x23,0x25,0x23,0x23,0x23,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x28,0x23, 0x26,0x24,0x26,0x25,0x28,0x25,0x25,0x26,0x22,0x23,0x26,0x25,0x23,0x25,0x25,0x24, 0x25,0x23,0x25,0x26,0x24,0x26,0x24,0x28,0x25,0x24,0x04,0x22,0x28,0x23,0x28,0x04, 0x24,0x04,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x24,0x28,0x28,0x29,0x28,0x28,0x28, 0x28,0x28,0x28,0x28,0x28,0x04,0x25,0x26,0x28,0x04,0x28,0x26,0x28,0x28,0x04,0x25, 0x26,0x25,0x26,0x25,0x26,0x24,0x28,0x28,0x26,0x04,0x28,0x24,0x25,0x25,0x28,0x04, 0x28,0x28,0x04,0x28,0x26,0x28,0x25,0x26,0x28,0x28,0x28,0x28,0x04,0x28,0x28,0x25, 0x26,0x04,0x24,0x25,0x04,0x22,0x22,0x20,0x28,0x26,0x26,0x28,0x25,0x25,0x04,0x25, 0x04,0x23,0x28,0x22,0x22,0x27,0x28,0x25,0x25,0x28,0x04,0x04,0x26,0x28,0x28,0x28, 0x25,0x25,0x25,0x24,0x24,0x25,0x23,0x24,0x23,0x25,0x25,0x23,0x24,0x21,0x04,0x26, 0x25,0x28,0x25,0x26,0x28,0x04,0x04,0x26,0x29,0x04,0x28,0x29,0x26,0x29,0x28,0x25, 0x29,0x28,0x28,0x28,0x26,0x2A,0x2A,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2D,0x29, 0x25,0x22,0x22,0x25,0x26,0x25,0x04,0x25,0x25,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x20,0x24,0x25,0x24, 0x23,0x26,0x24,0x24,0x25,0x26,0x22,0x04,0x22,0x26,0x24,0x28,0x24,0x04,0x24,0x25, 0x28,0x25,0x26,0x26,0x25,0x28,0x04,0x25,0x24,0x04,0x25,0x25,0x23,0x25,0x28,0x04, 0x24,0x04,0x28,0x24,0x28,0x29,0x26,0x28,0x04,0x29,0x25,0x2A,0x26,0x28,0x28,0x28, 0x04,0x24,0x28,0x28,0x28,0x23,0x25,0x28,0x24,0x26,0x26,0x25,0x28,0x22,0x26,0x25, 0x28,0x04,0x25,0x04,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x22,0x24,0x26,0x28,0x26, 0x26,0x28,0x26,0x28,0x26,0x26,0x25,0x04,0x25,0x24,0x26,0x28,0x26,0x25,0x28,0x24, 0x23,0x20,0x24,0x20,0x20,0x23,0x23,0x22,0x28,0x25,0x28,0x04,0x04,0x25,0x28,0x26, 0x28,0x24,0x26,0x25,0x28,0x04,0x28,0x28,0x04,0x27,0x28,0x28,0x25,0x28,0x28,0x04, 0x25,0x25,0x25,0x04,0x25,0x24,0x20,0x22,0x23,0x22,0x25,0x23,0x25,0x28,0x28,0x28, 0x25,0x28,0x25,0x28,0x28,0x04,0x28,0x28,0x28,0x25,0x28,0x28,0x26,0x28,0x26,0x28, 0x25,0x25,0x28,0x28,0x28,0x24,0x25,0x04,0x28,0x28,0x2A,0x28,0x28,0x28,0x28,0x29, 0x23,0x23,0x23,0x25,0x04,0x24,0x23,0x24,0x21,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x04,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x23,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x20,0x22,0x23,0x04, 0x25,0x26,0x28,0x24,0x25,0x23,0x26,0x28,0x28,0x04,0x25,0x28,0x28,0x25,0x25,0x28, 0x25,0x24,0x23,0x28,0x04,0x23,0x23,0x26,0x22,0x25,0x25,0x26,0x25,0x26,0x28,0x28, 0x25,0x26,0x28,0x28,0x28,0x28,0x28,0x26,0x04,0x28,0x28,0x28,0x25,0x25,0x24,0x26, 0x28,0x04,0x25,0x28,0x04,0x26,0x28,0x04,0x26,0x28,0x24,0x28,0x28,0x26,0x25,0x04, 0x28,0x25,0x04,0x28,0x04,0x28,0x28,0x28,0x04,0x28,0x28,0x24,0x26,0x26,0x24,0x28, 0x04,0x26,0x25,0x26,0x25,0x28,0x25,0x26,0x24,0x25,0x26,0x04,0x26,0x25,0x26,0x28, 0x20,0x20,0x22,0x25,0x23,0x24,0x28,0x23,0x25,0x04,0x25,0x28,0x26,0x25,0x25,0x04, 0x24,0x26,0x24,0x26,0x28,0x25,0x25,0x26,0x04,0x26,0x28,0x26,0x25,0x24,0x25,0x25, 0x22,0x20,0x20,0x22,0x24,0x28,0x28,0x26,0x26,0x04,0x25,0x24,0x28,0x29,0x28,0x28, 0x28,0x26,0x28,0x04,0x29,0x28,0x28,0x28,0x28,0x28,0x04,0x28,0x2A,0x2A,0x28,0x26, 0x25,0x24,0x28,0x2A,0x26,0x28,0x25,0x2A,0x2A,0x28,0x28,0x28,0x28,0x24,0x22,0x29, 0x24,0x22,0x23,0x25,0x23,0x22,0x25,0x23,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x26,0x24,0x25, 0x25,0x25,0x28,0x23,0x28,0x26,0x26,0x23,0x23,0x25,0x28,0x26,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x26,0x26,0x28,0x28,0x29,0x26,0x26,0x28,0x04,0x25,0x29, 0x23,0x20,0x20,0x24,0x22,0x22,0x26,0x24,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x04,0x04, 0x25,0x28,0x25,0x25,0x04,0x25,0x26,0x04,0x21,0x23,0x28,0x23,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x23,0x28,0x04,0x28,0x26,0x25,0x23,0x28,0x26,0x24,0x29, 0x20,0x20,0x23,0x23,0x22,0x20,0x24,0x22,0x20,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x26,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x23,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x26,0x23, 0x22,0x28,0x25,0x28,0x25,0x25,0x25,0x24,0x22,0x25,0x26,0x24,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x04,0x25,0x25,0x25,0x26,0x26,0x26,0x28,0x28,0x29, 0x20,0x26,0x20,0x25,0x22,0x20,0x24,0x20,0x25,0x20,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x21,0x25,0x25, 0x23,0x22,0x24,0x22,0x22,0x28,0x04,0x23,0x25,0x28,0x24,0x23,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x26,0x28,0x28,0x04,0x04,0x04,0x28,0x04,0x23,0x29, 0x22,0x22,0x23,0x26,0x23,0x20,0x22,0x25,0x22,0x20,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x24,0x04,0x23, 0x24,0x24,0x28,0x22,0x25,0x23,0x25,0x25,0x04,0x28,0x25,0x26,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x26,0x24,0x22,0x24,0x24,0x28,0x04,0x25,0x25,0x29, 0x20,0x23,0x24,0x20,0x25,0x24,0x28,0x24,0x23,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x24,0x28, 0x24,0x23,0x23,0x25,0x24,0x26,0x24,0x25,0x24,0x25,0x25,0x04,0x2F,0x2F,0x2D,0x2D, 0x32,0x33,0x33,0x34,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x35,0x35,0x35,0x35,0x36,0x36, 0x36,0x36,0x20,0x23,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x28,0x22,0x04,0x28,0x25,0x04,0x04,0x24,0x29, 0x24,0x22,0x25,0x21,0x22,0x23,0x22,0x26,0x26,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x20,0x23,0x23,0x25, 0x25,0x25,0x25,0x25,0x23,0x26,0x28,0x25,0x26,0x25,0x26,0x25,0x2E,0x2F,0x2D,0x2D, 0x33,0x36,0x22,0x25,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x24,0x24,0x04,0x28,0x04,0x26,0x25,0x28,0x29, 0x25,0x26,0x25,0x23,0x26,0x25,0x24,0x25,0x04,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x24,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x04,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x20,0x22,0x23,0x23, 0x26,0x23,0x28,0x24,0x04,0x28,0x28,0x28,0x23,0x28,0x27,0x27,0x2E,0x2F,0x2D,0x2D, 0x34,0x22,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x28,0x25,0x26,0x26,0x26,0x04,0x24,0x20,0x29, 0x25,0x26,0x22,0x25,0x24,0x25,0x24,0x04,0x26,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x24,0x26, 0x04,0x25,0x26,0x26,0x04,0x28,0x23,0x04,0x04,0x29,0x28,0x28,0x2E,0x2F,0x2D,0x2D, 0x34,0x25,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x28,0x25,0x25,0x28,0x28,0x28,0x24,0x04,0x29, 0x26,0x23,0x23,0x25,0x25,0x04,0x25,0x25,0x26,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x20,0x28,0x25,0x26, 0x25,0x25,0x26,0x26,0x25,0x04,0x26,0x28,0x28,0x28,0x26,0x26,0x2E,0x2F,0x2D,0x2D, 0x35,0x27,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x24,0x25,0x24,0x28,0x23,0x25,0x22,0x04,0x25,0x29, 0x25,0x25,0x25,0x28,0x25,0x24,0x23,0x25,0x23,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x23,0x28, 0x23,0x26,0x29,0x04,0x28,0x29,0x28,0x28,0x26,0x28,0x28,0x04,0x2E,0x2F,0x2D,0x2D, 0x36,0x27,0x28,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x04,0x04,0x25,0x26,0x26,0x26,0x28,0x25,0x28,0x29, 0x04,0x24,0x23,0x24,0x23,0x24,0x22,0x25,0x24,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x28,0x25,0x28, 0x28,0x25,0x04,0x25,0x29,0x26,0x28,0x28,0x28,0x25,0x23,0x04,0x2D,0x2F,0x2D,0x2D, 0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x28,0x26,0x28,0x28,0x25,0x28,0x28,0x28,0x29, 0x23,0x25,0x26,0x28,0x22,0x25,0x04,0x28,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x29,0x29,0x25, 0x28,0x04,0x04,0x28,0x28,0x28,0x28,0x28,0x25,0x28,0x25,0x28,0x2D,0x2F,0x2D,0x2D, 0x23,0x2A,0x2C,0x2C,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x28,0x26,0x04,0x2A,0x04,0x24,0x28,0x29,0x04,0x29, 0x25,0x25,0x25,0x04,0x04,0x24,0x28,0x28,0x28,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x20,0x28,0x28,0x25, 0x28,0x28,0x28,0x29,0x28,0x28,0x27,0x25,0x04,0x28,0x26,0x24,0x2C,0x2F,0x2D,0x2D, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x04,0x28,0x29,0x28,0x04,0x2A,0x2A,0x2A,0x28,0x29, 0x28,0x25,0x25,0x04,0x24,0x28,0x04,0x26,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x29,0x28, 0x25,0x29,0x28,0x2A,0x25,0x24,0x28,0x25,0x24,0x26,0x04,0x22,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x28,0x28,0x2A,0x25,0x28,0x04,0x25,0x26,0x28,0x29, 0x25,0x25,0x25,0x26,0x25,0x24,0x25,0x28,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x04,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x26,0x04, 0x28,0x26,0x24,0x22,0x25,0x25,0x25,0x28,0x22,0x20,0x26,0x22,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x25,0x25,0x25,0x28,0x28,0x2A,0x04,0x29,0x28,0x29, 0x04,0x23,0x26,0x28,0x25,0x28,0x04,0x28,0x24,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x28,0x28, 0x28,0x25,0x25,0x28,0x22,0x24,0x25,0x25,0x25,0x26,0x04,0x28,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x25,0x04,0x28,0x25,0x04,0x2A,0x28,0x2A,0x2B,0x29, 0x24,0x28,0x22,0x23,0x24,0x26,0x04,0x25,0x24,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x26,0x28, 0x25,0x22,0x26,0x23,0x23,0x25,0x22,0x20,0x26,0x20,0x23,0x04,0x28,0x24,0x24,0x24, 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23, 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x35,0x35,0x35,0x0C,0x0C,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, 0x34,0x34,0x34,0x33,0x33,0x32,0x29,0x25,0x28,0x28,0x2A,0x28,0x29,0x28,0x25,0x29, 0x04,0x23,0x23,0x24,0x24,0x04,0x28,0x24,0x26,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x22,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x25,0x20, 0x24,0x23,0x24,0x20,0x22,0x24,0x25,0x24,0x24,0x25,0x25,0x24,0x28,0x28,0x28,0x04, 0x28,0x25,0x28,0x28,0x25,0x04,0x28,0x28,0x04,0x25,0x25,0x28,0x04,0x28,0x28,0x26, 0x28,0x24,0x24,0x20,0x22,0x04,0x25,0x23,0x21,0x21,0x26,0x25,0x21,0x25,0x28,0x23, 0x25,0x25,0x22,0x23,0x25,0x22,0x22,0x22,0x20,0x23,0x25,0x23,0x28,0x04,0x04,0x28, 0x24,0x25,0x25,0x25,0x20,0x22,0x23,0x24,0x26,0x25,0x24,0x26,0x26,0x28,0x22,0x24, 0x26,0x26,0x25,0x24,0x23,0x23,0x24,0x25,0x26,0x24,0x25,0x25,0x24,0x20,0x20,0x22, 0x28,0x25,0x25,0x24,0x23,0x25,0x24,0x25,0x24,0x25,0x22,0x23,0x04,0x04,0x25,0x23, 0x25,0x28,0x28,0x25,0x22,0x24,0x25,0x25,0x25,0x04,0x28,0x25,0x28,0x26,0x24,0x26, 0x25,0x23,0x04,0x25,0x26,0x25,0x25,0x24,0x04,0x25,0x24,0x26,0x04,0x28,0x29,0x28, 0x28,0x28,0x2A,0x28,0x28,0x28,0x29,0x28,0x26,0x26,0x04,0x24,0x22,0x04,0x25,0x28, 0x25,0x26,0x29,0x25,0x28,0x24,0x28,0x26,0x29,0x28,0x25,0x28,0x04,0x26,0x04,0x29, 0x04,0x04,0x23,0x28,0x28,0x25,0x25,0x23,0x04,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x20,0x22,0x23, 0x20,0x24,0x22,0x24,0x22,0x20,0x24,0x25,0x26,0x24,0x25,0x28,0x22,0x04,0x28,0x2A, 0x28,0x28,0x26,0x29,0x28,0x29,0x28,0x26,0x25,0x25,0x26,0x24,0x28,0x26,0x28,0x23, 0x22,0x20,0x04,0x26,0x24,0x22,0x28,0x28,0x25,0x23,0x04,0x24,0x22,0x04,0x24,0x04, 0x25,0x28,0x25,0x28,0x25,0x24,0x26,0x28,0x04,0x24,0x22,0x04,0x23,0x04,0x04,0x24, 0x26,0x26,0x26,0x25,0x25,0x28,0x22,0x23,0x28,0x25,0x28,0x25,0x22,0x25,0x23,0x28, 0x04,0x26,0x28,0x25,0x28,0x28,0x24,0x25,0x26,0x25,0x28,0x22,0x22,0x25,0x25,0x28, 0x25,0x22,0x25,0x20,0x25,0x20,0x25,0x24,0x22,0x24,0x26,0x26,0x04,0x26,0x24,0x26, 0x25,0x26,0x24,0x04,0x25,0x26,0x25,0x24,0x26,0x24,0x26,0x26,0x04,0x28,0x26,0x24, 0x28,0x25,0x04,0x25,0x28,0x04,0x22,0x24,0x04,0x27,0x26,0x28,0x04,0x25,0x25,0x28, 0x28,0x04,0x28,0x29,0x23,0x25,0x28,0x26,0x25,0x22,0x25,0x24,0x22,0x22,0x28,0x29, 0x28,0x28,0x28,0x28,0x25,0x04,0x04,0x26,0x29,0x25,0x24,0x04,0x26,0x22,0x24,0x29, 0x25,0x28,0x28,0x26,0x04,0x25,0x23,0x04,0x25,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x20,0x25,0x22, 0x24,0x23,0x22,0x25,0x25,0x28,0x26,0x25,0x04,0x24,0x28,0x28,0x29,0x28,0x25,0x2A, 0x28,0x28,0x04,0x28,0x25,0x25,0x22,0x22,0x26,0x20,0x20,0x26,0x24,0x24,0x28,0x26, 0x28,0x25,0x28,0x28,0x25,0x25,0x26,0x28,0x28,0x04,0x28,0x25,0x24,0x25,0x04,0x28, 0x26,0x26,0x28,0x04,0x26,0x25,0x26,0x24,0x28,0x28,0x25,0x24,0x28,0x04,0x25,0x25, 0x25,0x25,0x25,0x04,0x24,0x04,0x24,0x25,0x04,0x26,0x28,0x25,0x28,0x24,0x25,0x26, 0x25,0x26,0x26,0x04,0x28,0x26,0x25,0x26,0x25,0x25,0x25,0x22,0x20,0x22,0x25,0x23, 0x20,0x20,0x22,0x28,0x28,0x22,0x24,0x23,0x26,0x25,0x28,0x25,0x28,0x28,0x28,0x23, 0x25,0x25,0x24,0x28,0x28,0x26,0x26,0x25,0x25,0x28,0x24,0x25,0x24,0x28,0x25,0x28, 0x28,0x28,0x04,0x25,0x28,0x28,0x25,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x28,0x28, 0x29,0x28,0x27,0x27,0x25,0x24,0x24,0x25,0x04,0x26,0x25,0x25,0x28,0x29,0x24,0x26, 0x25,0x26,0x25,0x24,0x27,0x25,0x25,0x25,0x04,0x28,0x04,0x04,0x28,0x28,0x28,0x29, 0x28,0x26,0x04,0x04,0x22,0x25,0x22,0x24,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x25,0x24, 0x24,0x26,0x26,0x04,0x25,0x25,0x28,0x28,0x04,0x2A,0x04,0x28,0x28,0x28,0x26,0x28, 0x28,0x28,0x26,0x28,0x22,0x23,0x25,0x22,0x26,0x28,0x24,0x25,0x28,0x26,0x28,0x28, 0x04,0x26,0x24,0x28,0x25,0x25,0x28,0x25,0x04,0x25,0x22,0x26,0x26,0x24,0x26,0x04, 0x28,0x04,0x28,0x25,0x25,0x04,0x28,0x25,0x24,0x26,0x24,0x04,0x04,0x24,0x28,0x25, 0x04,0x26,0x26,0x28,0x25,0x25,0x23,0x26,0x04,0x28,0x26,0x25,0x28,0x25,0x24,0x04, 0x24,0x22,0x26,0x24,0x28,0x28,0x28,0x26,0x28,0x26,0x24,0x24,0x20,0x24,0x23,0x20, 0x24,0x28,0x24,0x26,0x25,0x28,0x26,0x04,0x26,0x28,0x25,0x26,0x24,0x23,0x26,0x26, 0x28,0x26,0x28,0x22,0x25,0x26,0x25,0x25,0x26,0x04,0x24,0x28,0x04,0x25,0x28,0x26, 0x28,0x28,0x29,0x26,0x04,0x04,0x28,0x28,0x25,0x28,0x25,0x28,0x26,0x28,0x26,0x28, 0x04,0x28,0x25,0x22,0x28,0x26,0x26,0x28,0x04,0x26,0x29,0x25,0x28,0x24,0x26,0x26, 0x26,0x25,0x25,0x25,0x28,0x28,0x26,0x26,0x04,0x24,0x23,0x24,0x25,0x28,0x04,0x29, 0x22,0x22,0x21,0x24,0x25,0x25,0x26,0x23,0x26,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x04,0x25, 0x04,0x25,0x28,0x04,0x26,0x28,0x28,0x28,0x24,0x25,0x28,0x28,0x26,0x04,0x28,0x25, 0x26,0x26,0x24,0x23,0x04,0x28,0x24,0x28,0x24,0x26,0x28,0x04,0x26,0x26,0x24,0x25, 0x24,0x2A,0x26,0x29,0x28,0x28,0x04,0x26,0x28,0x25,0x26,0x26,0x26,0x28,0x26,0x25, 0x26,0x26,0x25,0x25,0x25,0x26,0x04,0x04,0x25,0x26,0x25,0x24,0x26,0x26,0x24,0x25, 0x26,0x28,0x25,0x28,0x26,0x28,0x26,0x28,0x28,0x26,0x25,0x25,0x25,0x25,0x28,0x23, 0x28,0x28,0x22,0x25,0x04,0x28,0x04,0x24,0x24,0x23,0x25,0x04,0x25,0x22,0x20,0x04, 0x26,0x25,0x24,0x26,0x26,0x28,0x26,0x26,0x04,0x26,0x25,0x24,0x25,0x24,0x24,0x28, 0x24,0x25,0x04,0x24,0x25,0x26,0x23,0x24,0x27,0x28,0x28,0x28,0x29,0x28,0x25,0x28, 0x2A,0x2A,0x2A,0x29,0x2A,0x28,0x26,0x28,0x28,0x26,0x28,0x26,0x24,0x25,0x28,0x26, 0x25,0x26,0x04,0x28,0x04,0x28,0x04,0x24,0x28,0x04,0x28,0x28,0x29,0x04,0x28,0x23, 0x04,0x28,0x24,0x28,0x26,0x28,0x28,0x28,0x28,0x27,0x25,0x04,0x04,0x28,0x26,0x29, 0x22,0x25,0x26,0x04,0x25,0x23,0x26,0x23,0x23,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x20,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x23,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x24,0x26, 0x29,0x28,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x25,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x26,0x28,0x26,0x28,0x28,0x25,0x26,0x28,0x29,0x25,0x29, 0x24,0x23,0x21,0x22,0x28,0x25,0x23,0x21,0x28,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x28,0x04, 0x04,0x28,0x28,0x28,0x29,0x28,0x26,0x28,0x26,0x24,0x28,0x28,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x23,0x28,0x26,0x04,0x28,0x28,0x04,0x29,0x28,0x04,0x29, 0x22,0x26,0x22,0x22,0x23,0x04,0x24,0x25,0x24,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x25,0x29, 0x26,0x26,0x28,0x28,0x26,0x28,0x28,0x26,0x04,0x25,0x04,0x22,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x25,0x28,0x28,0x28,0x28,0x25,0x25,0x25,0x27,0x29, 0x23,0x24,0x23,0x26,0x04,0x28,0x25,0x26,0x23,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x28,0x28, 0x28,0x28,0x25,0x28,0x24,0x04,0x26,0x04,0x28,0x28,0x26,0x20,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x28,0x04,0x04,0x2A,0x04,0x28,0x24,0x28,0x29, 0x24,0x24,0x25,0x23,0x28,0x04,0x26,0x26,0x25,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x26,0x28, 0x26,0x04,0x28,0x04,0x28,0x25,0x24,0x26,0x25,0x22,0x25,0x28,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x04,0x28,0x28,0x2A,0x29,0x28,0x28,0x2A,0x29, 0x28,0x23,0x04,0x25,0x28,0x22,0x26,0x28,0x23,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x26,0x24, 0x26,0x28,0x24,0x04,0x25,0x24,0x22,0x20,0x20,0x23,0x24,0x25,0x2F,0x2F,0x2D,0x2D, 0x32,0x33,0x33,0x34,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x35,0x35,0x35,0x35,0x36,0x36, 0x36,0x36,0x20,0x23,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x28,0x28,0x28,0x28,0x26,0x04,0x04,0x28,0x29, 0x23,0x25,0x04,0x28,0x25,0x25,0x22,0x24,0x25,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x25,0x26, 0x24,0x20,0x22,0x20,0x22,0x26,0x22,0x23,0x25,0x04,0x25,0x04,0x2E,0x2F,0x2D,0x2D, 0x33,0x36,0x22,0x25,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x29,0x29,0x04,0x28,0x04,0x22,0x22,0x20,0x29, 0x04,0x25,0x25,0x23,0x23,0x25,0x22,0x25,0x23,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x36,0x20,0x25,0x25, 0x25,0x22,0x04,0x23,0x04,0x24,0x04,0x04,0x24,0x04,0x04,0x28,0x2E,0x2F,0x2D,0x2D, 0x34,0x22,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x29,0x28,0x27,0x25,0x26,0x22,0x24,0x24,0x20,0x29, 0x28,0x24,0x25,0x24,0x26,0x22,0x28,0x24,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x36,0x25,0x25,0x25, 0x25,0x25,0x04,0x23,0x04,0x25,0x26,0x25,0x25,0x22,0x26,0x28,0x2E,0x2F,0x2D,0x2D, 0x34,0x25,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x04,0x23,0x25,0x24,0x25,0x23,0x23,0x04,0x29, 0x23,0x26,0x23,0x25,0x25,0x25,0x04,0x22,0x24,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x24,0x28, 0x25,0x25,0x24,0x23,0x24,0x25,0x28,0x23,0x23,0x04,0x04,0x22,0x2E,0x2F,0x2D,0x2D, 0x35,0x27,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x23,0x22,0x04,0x23,0x22,0x28,0x28,0x25,0x29, 0x25,0x22,0x23,0x24,0x24,0x20,0x23,0x26,0x23,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x35,0x22,0x24,0x25, 0x25,0x24,0x25,0x22,0x25,0x25,0x26,0x25,0x26,0x22,0x28,0x28,0x2E,0x2F,0x2D,0x2D, 0x36,0x27,0x28,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x20,0x25,0x24,0x25,0x26,0x04,0x24,0x28,0x29, 0x23,0x23,0x25,0x24,0x24,0x04,0x04,0x22,0x25,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x28,0x26, 0x25,0x04,0x25,0x28,0x24,0x22,0x25,0x26,0x23,0x25,0x25,0x28,0x2D,0x2F,0x2D,0x2D, 0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x22,0x24,0x04,0x25,0x25,0x04,0x04,0x28,0x04,0x29, 0x25,0x23,0x25,0x23,0x25,0x21,0x22,0x25,0x22,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x25,0x23, 0x24,0x24,0x24,0x25,0x21,0x24,0x25,0x25,0x22,0x28,0x04,0x22,0x2D,0x2F,0x2D,0x2D, 0x23,0x2A,0x2C,0x2C,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x23,0x28,0x04,0x23,0x04,0x28,0x26,0x26,0x27,0x29, 0x26,0x26,0x25,0x22,0x22,0x20,0x25,0x20,0x25,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x04,0x28, 0x22,0x26,0x24,0x24,0x25,0x24,0x25,0x28,0x25,0x24,0x24,0x25,0x2C,0x2F,0x2D,0x2D, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x26,0x04,0x28,0x26,0x26,0x04,0x04,0x25,0x25,0x29, 0x25,0x22,0x24,0x22,0x20,0x23,0x20,0x25,0x24,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x04,0x25, 0x23,0x22,0x25,0x04,0x25,0x26,0x28,0x25,0x24,0x04,0x28,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x25,0x25,0x28,0x04,0x26,0x25,0x26,0x28,0x26,0x29, 0x20,0x04,0x22,0x04,0x24,0x24,0x26,0x23,0x25,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x28,0x24, 0x22,0x24,0x22,0x04,0x25,0x23,0x22,0x25,0x23,0x24,0x04,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x04,0x28,0x04,0x28,0x04,0x26,0x28,0x25,0x28,0x29, 0x24,0x20,0x26,0x21,0x25,0x22,0x25,0x28,0x04,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x35,0x22,0x04,0x28, 0x25,0x23,0x23,0x28,0x25,0x25,0x24,0x24,0x23,0x28,0x24,0x26,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x25,0x26,0x28,0x04,0x04,0x24,0x28,0x25,0x28,0x29, 0x20,0x25,0x04,0x23,0x25,0x22,0x22,0x25,0x25,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x28,0x24, 0x04,0x25,0x24,0x24,0x26,0x25,0x22,0x28,0x23,0x26,0x28,0x24,0x28,0x24,0x24,0x24, 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23, 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x35,0x35,0x35,0x0C,0x0C,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, 0x34,0x34,0x34,0x33,0x33,0x32,0x28,0x04,0x25,0x04,0x26,0x04,0x04,0x28,0x04,0x29, 0x22,0x26,0x04,0x24,0x22,0x25,0x26,0x23,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x21,0x24, 0x26,0x25,0x23,0x25,0x23,0x25,0x25,0x25,0x24,0x23,0x25,0x26,0x26,0x23,0x25,0x25, 0x04,0x26,0x24,0x24,0x21,0x25,0x25,0x25,0x25,0x26,0x04,0x26,0x25,0x04,0x26,0x26, 0x04,0x28,0x28,0x28,0x28,0x25,0x26,0x04,0x23,0x25,0x25,0x25,0x26,0x26,0x24,0x26, 0x28,0x26,0x25,0x04,0x25,0x26,0x04,0x23,0x23,0x20,0x25,0x22,0x20,0x04,0x22,0x23, 0x24,0x04,0x22,0x24,0x26,0x24,0x28,0x28,0x04,0x27,0x04,0x28,0x04,0x25,0x26,0x28, 0x28,0x29,0x28,0x26,0x28,0x25,0x28,0x28,0x28,0x28,0x28,0x2A,0x28,0x29,0x28,0x29, 0x2A,0x28,0x28,0x25,0x28,0x28,0x28,0x04,0x26,0x28,0x28,0x2B,0x29,0x29,0x28,0x24, 0x28,0x25,0x29,0x04,0x28,0x25,0x2A,0x2A,0x28,0x28,0x28,0x29,0x2B,0x28,0x2A,0x2A, 0x04,0x28,0x28,0x28,0x04,0x28,0x22,0x22,0x20,0x20,0x22,0x20,0x20,0x22,0x23,0x04, 0x04,0x26,0x22,0x24,0x24,0x04,0x24,0x25,0x23,0x25,0x25,0x28,0x25,0x25,0x26,0x28, 0x25,0x26,0x04,0x26,0x04,0x24,0x28,0x28,0x28,0x28,0x28,0x26,0x04,0x04,0x26,0x29, 0x22,0x22,0x21,0x20,0x20,0x24,0x25,0x20,0x23,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x23,0x26, 0x22,0x24,0x04,0x04,0x26,0x24,0x26,0x23,0x25,0x28,0x04,0x25,0x26,0x22,0x23,0x23, 0x23,0x28,0x23,0x25,0x04,0x23,0x23,0x23,0x25,0x25,0x25,0x04,0x28,0x28,0x04,0x04, 0x25,0x26,0x26,0x26,0x26,0x28,0x28,0x28,0x28,0x24,0x25,0x26,0x24,0x28,0x28,0x04, 0x24,0x25,0x04,0x23,0x26,0x26,0x25,0x25,0x26,0x20,0x25,0x23,0x26,0x04,0x25,0x25, 0x22,0x20,0x26,0x26,0x28,0x26,0x28,0x04,0x26,0x24,0x28,0x26,0x04,0x28,0x28,0x28, 0x28,0x28,0x25,0x28,0x25,0x26,0x28,0x29,0x28,0x28,0x28,0x2A,0x28,0x28,0x25,0x2A, 0x26,0x2B,0x29,0x28,0x2B,0x2B,0x2B,0x28,0x28,0x28,0x28,0x28,0x04,0x29,0x26,0x28, 0x29,0x28,0x28,0x2B,0x04,0x29,0x25,0x04,0x28,0x24,0x25,0x2A,0x28,0x04,0x28,0x28, 0x28,0x28,0x28,0x04,0x21,0x23,0x25,0x23,0x24,0x26,0x24,0x25,0x25,0x24,0x28,0x26, 0x24,0x28,0x26,0x24,0x25,0x04,0x24,0x23,0x04,0x28,0x25,0x22,0x28,0x24,0x28,0x28, 0x28,0x28,0x28,0x28,0x28,0x04,0x28,0x23,0x23,0x04,0x04,0x26,0x28,0x24,0x25,0x29, 0x20,0x20,0x20,0x26,0x25,0x22,0x28,0x25,0x04,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x24,0x23, 0x28,0x04,0x04,0x25,0x25,0x24,0x22,0x24,0x24,0x26,0x25,0x25,0x25,0x28,0x28,0x26, 0x24,0x24,0x04,0x23,0x04,0x25,0x04,0x26,0x26,0x26,0x25,0x04,0x26,0x24,0x25,0x28, 0x26,0x04,0x26,0x28,0x23,0x28,0x28,0x23,0x25,0x04,0x25,0x25,0x26,0x28,0x28,0x25, 0x26,0x28,0x26,0x22,0x26,0x23,0x23,0x22,0x22,0x20,0x26,0x04,0x25,0x28,0x25,0x23, 0x23,0x24,0x24,0x28,0x25,0x28,0x28,0x26,0x26,0x23,0x26,0x04,0x28,0x26,0x25,0x24, 0x04,0x28,0x26,0x28,0x28,0x28,0x28,0x28,0x22,0x25,0x28,0x26,0x28,0x23,0x24,0x26, 0x28,0x26,0x29,0x28,0x29,0x28,0x25,0x28,0x25,0x04,0x28,0x28,0x28,0x2A,0x25,0x2A, 0x2B,0x28,0x29,0x04,0x28,0x28,0x04,0x28,0x28,0x28,0x25,0x28,0x04,0x28,0x26,0x28, 0x26,0x24,0x23,0x25,0x23,0x25,0x04,0x24,0x24,0x28,0x28,0x25,0x04,0x26,0x28,0x04, 0x04,0x25,0x28,0x26,0x04,0x04,0x28,0x24,0x28,0x28,0x26,0x28,0x04,0x28,0x25,0x24, 0x25,0x28,0x28,0x26,0x24,0x28,0x28,0x26,0x26,0x04,0x28,0x28,0x25,0x25,0x27,0x29, 0x24,0x26,0x23,0x26,0x25,0x25,0x25,0x25,0x28,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x25,0x26, 0x25,0x26,0x28,0x04,0x04,0x28,0x04,0x28,0x04,0x26,0x24,0x04,0x04,0x04,0x04,0x04, 0x26,0x28,0x26,0x25,0x28,0x28,0x28,0x26,0x28,0x28,0x24,0x04,0x04,0x25,0x25,0x24, 0x25,0x23,0x24,0x28,0x04,0x25,0x04,0x04,0x25,0x28,0x28,0x24,0x28,0x25,0x26,0x26, 0x26,0x26,0x22,0x21,0x25,0x22,0x20,0x25,0x23,0x26,0x25,0x25,0x25,0x25,0x24,0x22, 0x25,0x25,0x28,0x26,0x28,0x26,0x04,0x24,0x25,0x04,0x25,0x25,0x28,0x22,0x28,0x04, 0x28,0x22,0x04,0x25,0x28,0x28,0x28,0x25,0x22,0x04,0x26,0x28,0x22,0x28,0x25,0x23, 0x28,0x28,0x04,0x04,0x04,0x28,0x28,0x25,0x27,0x28,0x04,0x28,0x25,0x28,0x2A,0x26, 0x28,0x25,0x29,0x28,0x28,0x29,0x28,0x28,0x04,0x28,0x28,0x26,0x04,0x28,0x23,0x25, 0x28,0x23,0x22,0x20,0x20,0x28,0x28,0x25,0x28,0x24,0x22,0x24,0x28,0x25,0x26,0x26, 0x04,0x26,0x04,0x24,0x28,0x24,0x28,0x24,0x28,0x24,0x28,0x23,0x04,0x26,0x26,0x04, 0x28,0x28,0x04,0x28,0x28,0x28,0x28,0x25,0x28,0x25,0x25,0x24,0x28,0x28,0x28,0x29, 0x26,0x22,0x22,0x28,0x23,0x25,0x22,0x22,0x28,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x26,0x28, 0x28,0x28,0x25,0x25,0x25,0x24,0x24,0x25,0x28,0x25,0x28,0x28,0x24,0x26,0x28,0x04, 0x26,0x28,0x28,0x26,0x28,0x28,0x28,0x26,0x28,0x24,0x26,0x25,0x26,0x25,0x25,0x04, 0x25,0x04,0x26,0x26,0x28,0x26,0x26,0x28,0x22,0x25,0x28,0x25,0x28,0x24,0x25,0x26, 0x25,0x20,0x22,0x23,0x25,0x23,0x28,0x25,0x25,0x26,0x25,0x25,0x25,0x24,0x24,0x25, 0x22,0x04,0x25,0x26,0x26,0x26,0x26,0x28,0x24,0x04,0x04,0x25,0x25,0x26,0x26,0x25, 0x25,0x25,0x28,0x24,0x26,0x26,0x26,0x24,0x28,0x23,0x28,0x04,0x25,0x25,0x28,0x04, 0x28,0x04,0x26,0x04,0x25,0x04,0x25,0x28,0x26,0x28,0x28,0x04,0x28,0x28,0x28,0x28, 0x28,0x28,0x26,0x04,0x25,0x04,0x28,0x28,0x25,0x25,0x24,0x25,0x22,0x26,0x26,0x20, 0x22,0x22,0x25,0x22,0x20,0x23,0x04,0x22,0x24,0x28,0x04,0x28,0x28,0x25,0x25,0x28, 0x28,0x25,0x28,0x04,0x28,0x25,0x26,0x26,0x28,0x25,0x25,0x25,0x26,0x28,0x26,0x28, 0x26,0x26,0x28,0x28,0x28,0x04,0x23,0x24,0x25,0x25,0x04,0x28,0x04,0x04,0x28,0x29, 0x25,0x04,0x26,0x26,0x24,0x25,0x28,0x26,0x28,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x28,0x22, 0x25,0x28,0x25,0x25,0x26,0x22,0x23,0x26,0x28,0x25,0x26,0x26,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x26,0x28,0x04,0x24,0x28,0x04,0x26,0x28,0x28,0x28,0x29, 0x28,0x28,0x25,0x28,0x24,0x25,0x22,0x22,0x28,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x04,0x26, 0x28,0x28,0x04,0x04,0x04,0x27,0x28,0x24,0x24,0x28,0x26,0x28,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x23,0x28,0x04,0x28,0x22,0x04,0x04,0x25,0x25,0x27,0x29, 0x24,0x25,0x25,0x04,0x26,0x28,0x23,0x04,0x28,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x29,0x28,0x26, 0x26,0x28,0x28,0x04,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x25,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x26,0x04,0x24,0x28,0x28,0x28,0x26,0x28,0x04,0x29, 0x25,0x26,0x04,0x24,0x26,0x28,0x25,0x25,0x26,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x04,0x28, 0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x28,0x28,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x04,0x28,0x25,0x04,0x28,0x29,0x28,0x2B,0x29, 0x28,0x26,0x24,0x25,0x23,0x23,0x25,0x23,0x26,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x26, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x24,0x25, 0x28,0x26,0x25,0x26,0x28,0x26,0x04,0x28,0x28,0x24,0x24,0x28,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x36,0x04,0x29,0x28,0x25,0x28,0x04,0x25,0x25,0x04,0x29, 0x25,0x23,0x26,0x23,0x04,0x22,0x23,0x24,0x25,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x04,0x25, 0x28,0x04,0x24,0x26,0x26,0x25,0x22,0x28,0x26,0x04,0x26,0x24,0x2F,0x2F,0x2D,0x2D, 0x32,0x33,0x33,0x34,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x35,0x35,0x35,0x35,0x36,0x36, 0x36,0x36,0x20,0x23,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x35,0x28,0x28,0x28,0x26,0x28,0x04,0x25,0x26,0x26,0x29, 0x24,0x26,0x04,0x25,0x22,0x22,0x28,0x28,0x04,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x24,0x25,0x24, 0x23,0x04,0x28,0x25,0x26,0x26,0x28,0x26,0x24,0x04,0x26,0x28,0x2E,0x2F,0x2D,0x2D, 0x33,0x36,0x22,0x25,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x35,0x23,0x04,0x26,0x25,0x04,0x28,0x28,0x04,0x24,0x29, 0x28,0x23,0x22,0x23,0x23,0x28,0x23,0x25,0x25,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x04,0x24, 0x23,0x25,0x22,0x23,0x25,0x04,0x28,0x25,0x22,0x23,0x21,0x22,0x2E,0x2F,0x2D,0x2D, 0x34,0x22,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x35,0x22,0x04,0x04,0x25,0x28,0x28,0x04,0x23,0x22,0x29, 0x28,0x25,0x25,0x25,0x23,0x25,0x04,0x28,0x24,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x23,0x22,0x25, 0x24,0x22,0x20,0x24,0x20,0x24,0x22,0x23,0x20,0x20,0x22,0x22,0x2E,0x2F,0x2D,0x2D, 0x34,0x25,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x35,0x04,0x25,0x26,0x26,0x25,0x26,0x24,0x22,0x27,0x29, 0x28,0x28,0x26,0x24,0x26,0x25,0x04,0x25,0x23,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x25,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x28,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x35,0x22,0x25,0x25, 0x04,0x22,0x24,0x22,0x26,0x23,0x25,0x26,0x25,0x26,0x22,0x20,0x2E,0x2F,0x2D,0x2D, 0x35,0x27,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x0C,0x26,0x25,0x26,0x24,0x23,0x25,0x25,0x25,0x22,0x29, 0x25,0x04,0x23,0x25,0x28,0x28,0x27,0x29,0x25,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x25,0x23, 0x04,0x25,0x26,0x04,0x23,0x04,0x26,0x23,0x23,0x25,0x21,0x22,0x2E,0x2F,0x2D,0x2D, 0x36,0x27,0x28,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x22,0x04,0x25,0x04,0x25,0x24,0x28,0x25,0x04,0x29, 0x28,0x22,0x26,0x04,0x28,0x25,0x28,0x28,0x28,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x25,0x23, 0x25,0x28,0x23,0x25,0x22,0x28,0x25,0x26,0x28,0x24,0x24,0x04,0x2D,0x2F,0x2D,0x2D, 0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x2D,0x0C,0x28,0x25,0x28,0x04,0x28,0x23,0x25,0x22,0x27,0x29, 0x25,0x24,0x26,0x24,0x28,0x26,0x25,0x26,0x28,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x25,0x26, 0x26,0x21,0x28,0x23,0x20,0x20,0x04,0x26,0x26,0x28,0x24,0x25,0x2D,0x2F,0x2D,0x2D, 0x23,0x2A,0x2C,0x2C,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x34,0x04,0x26,0x28,0x22,0x28,0x04,0x28,0x25,0x24,0x29, 0x04,0x04,0x22,0x26,0x29,0x28,0x04,0x21,0x25,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x26,0x20,0x20, 0x26,0x25,0x24,0x22,0x20,0x24,0x20,0x28,0x04,0x04,0x28,0x28,0x2C,0x2F,0x2D,0x2D, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x34,0x25,0x24,0x04,0x28,0x24,0x25,0x22,0x27,0x26,0x29, 0x04,0x26,0x28,0x26,0x26,0x04,0x25,0x26,0x23,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x22,0x26, 0x25,0x25,0x28,0x28,0x04,0x28,0x26,0x28,0x04,0x24,0x26,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x25,0x25,0x25,0x04,0x28,0x24,0x28,0x04,0x28,0x29, 0x28,0x28,0x04,0x04,0x28,0x28,0x25,0x28,0x26,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x28,0x25, 0x24,0x28,0x25,0x04,0x28,0x04,0x25,0x25,0x28,0x28,0x25,0x26,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x04,0x25,0x28,0x26,0x04,0x28,0x28,0x28,0x26,0x29, 0x28,0x28,0x25,0x25,0x28,0x25,0x28,0x23,0x25,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x35,0x04,0x28,0x23, 0x20,0x24,0x25,0x28,0x28,0x25,0x28,0x28,0x27,0x28,0x26,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x24,0x28,0x28,0x04,0x26,0x28,0x24,0x28,0x25,0x29, 0x29,0x26,0x28,0x25,0x28,0x25,0x24,0x22,0x22,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x23,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x24,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x26,0x25, 0x04,0x28,0x28,0x25,0x04,0x24,0x26,0x26,0x24,0x23,0x26,0x26,0x28,0x24,0x23,0x24, 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23, 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x35,0x35,0x35,0x0C,0x0C,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, 0x34,0x34,0x34,0x33,0x33,0x32,0x29,0x28,0x28,0x28,0x28,0x28,0x04,0x28,0x26,0x29, 0x28,0x26,0x28,0x28,0x28,0x25,0x25,0x04,0x22,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x04,0x26,0x25, 0x25,0x26,0x28,0x04,0x23,0x26,0x25,0x26,0x26,0x28,0x26,0x24,0x28,0x25,0x28,0x28, 0x04,0x28,0x26,0x24,0x04,0x04,0x25,0x25,0x26,0x28,0x25,0x28,0x04,0x28,0x25,0x25, 0x28,0x25,0x28,0x28,0x25,0x28,0x24,0x28,0x28,0x27,0x28,0x25,0x26,0x28,0x28,0x04, 0x28,0x23,0x28,0x04,0x24,0x26,0x24,0x28,0x25,0x28,0x28,0x29,0x28,0x2A,0x28,0x28, 0x28,0x28,0x2A,0x25,0x29,0x28,0x26,0x28,0x2A,0x29,0x04,0x29,0x28,0x26,0x29,0x28, 0x28,0x28,0x28,0x28,0x25,0x28,0x25,0x25,0x25,0x25,0x23,0x04,0x20,0x24,0x24,0x25, 0x04,0x23,0x22,0x22,0x20,0x25,0x24,0x24,0x25,0x25,0x25,0x04,0x04,0x28,0x28,0x26, 0x28,0x28,0x22,0x23,0x28,0x25,0x24,0x25,0x28,0x28,0x29,0x23,0x25,0x26,0x28,0x26, 0x26,0x22,0x04,0x24,0x25,0x24,0x25,0x25,0x26,0x25,0x28,0x23,0x24,0x28,0x25,0x28, 0x28,0x28,0x04,0x25,0x26,0x23,0x22,0x24,0x24,0x25,0x28,0x29,0x28,0x28,0x04,0x2A, 0x26,0x04,0x26,0x28,0x04,0x04,0x25,0x28,0x04,0x28,0x04,0x04,0x29,0x2A,0x26,0x29, 0x04,0x26,0x24,0x25,0x22,0x22,0x25,0x24,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2B,0x2D,0x2D,0x2D,0x2D,0x0C,0x26,0x27,0x24, 0x25,0x25,0x28,0x28,0x28,0x25,0x26,0x28,0x28,0x24,0x04,0x24,0x04,0x04,0x23,0x25, 0x27,0x25,0x27,0x26,0x24,0x28,0x27,0x04,0x27,0x25,0x28,0x26,0x26,0x25,0x27,0x28, 0x28,0x25,0x25,0x28,0x04,0x28,0x04,0x04,0x28,0x04,0x28,0x28,0x28,0x28,0x28,0x28, 0x26,0x28,0x29,0x26,0x25,0x28,0x28,0x24,0x28,0x28,0x04,0x24,0x28,0x26,0x28,0x29, 0x25,0x25,0x29,0x27,0x24,0x28,0x26,0x25,0x25,0x24,0x26,0x04,0x28,0x28,0x26,0x26, 0x25,0x26,0x26,0x28,0x25,0x24,0x28,0x22,0x25,0x22,0x20,0x20,0x22,0x26,0x25,0x25, 0x22,0x20,0x22,0x25,0x04,0x25,0x25,0x26,0x28,0x26,0x25,0x25,0x26,0x25,0x28,0x28, 0x28,0x28,0x29,0x28,0x29,0x29,0x28,0x28,0x26,0x28,0x26,0x24,0x24,0x24,0x24,0x28, 0x23,0x24,0x25,0x04,0x24,0x25,0x24,0x26,0x26,0x23,0x26,0x25,0x26,0x25,0x26,0x28, 0x28,0x04,0x24,0x28,0x28,0x24,0x22,0x25,0x28,0x28,0x28,0x28,0x25,0x29,0x28,0x23, 0x28,0x28,0x28,0x04,0x28,0x28,0x28,0x2A,0x04,0x28,0x28,0x2A,0x04,0x28,0x2B,0x29, 0x25,0x26,0x26,0x04,0x24,0x25,0x28,0x26,0x25,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x24,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x28,0x2D,0x2D,0x2D,0x2D,0x0C,0x27,0x25,0x24, 0x24,0x04,0x22,0x28,0x28,0x27,0x04,0x04,0x27,0x28,0x25,0x25,0x25,0x04,0x28,0x26, 0x04,0x04,0x04,0x28,0x04,0x23,0x26,0x04,0x04,0x25,0x04,0x28,0x04,0x28,0x04,0x28, 0x26,0x04,0x28,0x28,0x28,0x24,0x27,0x28,0x28,0x28,0x04,0x28,0x26,0x28,0x26,0x28, 0x28,0x28,0x28,0x28,0x04,0x2A,0x2A,0x29,0x29,0x25,0x28,0x29,0x29,0x28,0x26,0x29, 0x28,0x04,0x04,0x26,0x04,0x25,0x20,0x23,0x25,0x04,0x20,0x26,0x20,0x24,0x20,0x20, 0x25,0x20,0x22,0x20,0x22,0x22,0x23,0x20,0x22,0x20,0x22,0x26,0x24,0x23,0x20,0x20, 0x04,0x20,0x24,0x22,0x26,0x25,0x04,0x04,0x25,0x28,0x25,0x24,0x28,0x28,0x28,0x28, 0x26,0x29,0x28,0x28,0x28,0x24,0x04,0x29,0x28,0x28,0x25,0x26,0x23,0x25,0x23,0x25, 0x28,0x28,0x26,0x25,0x26,0x26,0x28,0x24,0x23,0x26,0x28,0x28,0x25,0x28,0x28,0x28, 0x24,0x28,0x25,0x25,0x22,0x04,0x24,0x25,0x28,0x2A,0x04,0x28,0x29,0x04,0x28,0x25, 0x28,0x28,0x28,0x28,0x04,0x28,0x04,0x28,0x29,0x28,0x25,0x24,0x29,0x04,0x28,0x29, 0x22,0x24,0x23,0x25,0x28,0x23,0x20,0x25,0x26,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x0C,0x28,0x26,0x25, 0x28,0x24,0x26,0x26,0x28,0x04,0x04,0x28,0x25,0x28,0x24,0x04,0x24,0x25,0x04,0x04, 0x04,0x24,0x26,0x26,0x26,0x22,0x26,0x28,0x26,0x25,0x28,0x26,0x25,0x26,0x26,0x28, 0x24,0x26,0x24,0x25,0x25,0x28,0x28,0x28,0x28,0x28,0x29,0x04,0x24,0x28,0x28,0x28, 0x04,0x26,0x28,0x28,0x28,0x04,0x2A,0x28,0x28,0x28,0x25,0x26,0x29,0x26,0x04,0x25, 0x26,0x21,0x23,0x24,0x24,0x25,0x24,0x26,0x22,0x24,0x26,0x28,0x24,0x24,0x22,0x04, 0x28,0x24,0x24,0x04,0x24,0x24,0x23,0x20,0x22,0x25,0x22,0x23,0x24,0x20,0x04,0x25, 0x25,0x24,0x24,0x24,0x04,0x24,0x04,0x28,0x23,0x26,0x26,0x23,0x28,0x26,0x25,0x28, 0x28,0x28,0x29,0x2A,0x28,0x26,0x25,0x28,0x25,0x25,0x25,0x26,0x24,0x24,0x25,0x26, 0x25,0x28,0x28,0x25,0x25,0x29,0x25,0x2A,0x28,0x29,0x28,0x28,0x26,0x25,0x28,0x04, 0x25,0x26,0x04,0x04,0x28,0x28,0x2A,0x24,0x25,0x28,0x29,0x29,0x28,0x26,0x26,0x28, 0x28,0x26,0x24,0x25,0x22,0x27,0x26,0x28,0x28,0x04,0x28,0x27,0x04,0x28,0x28,0x29, 0x26,0x04,0x25,0x28,0x24,0x20,0x25,0x28,0x24,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x0C,0x26,0x04,0x23, 0x25,0x26,0x28,0x26,0x04,0x25,0x04,0x26,0x26,0x26,0x26,0x25,0x28,0x26,0x26,0x25, 0x24,0x26,0x25,0x26,0x04,0x28,0x26,0x24,0x26,0x26,0x26,0x26,0x22,0x04,0x04,0x26, 0x28,0x28,0x28,0x04,0x28,0x28,0x28,0x29,0x26,0x04,0x24,0x28,0x04,0x25,0x28,0x28, 0x28,0x28,0x04,0x28,0x29,0x25,0x2A,0x29,0x04,0x28,0x26,0x26,0x26,0x25,0x23,0x04, 0x24,0x24,0x22,0x28,0x22,0x28,0x26,0x26,0x26,0x26,0x24,0x28,0x25,0x04,0x28,0x28, 0x25,0x26,0x23,0x22,0x26,0x20,0x20,0x22,0x23,0x23,0x23,0x20,0x20,0x22,0x25,0x28, 0x04,0x04,0x28,0x24,0x25,0x28,0x28,0x28,0x28,0x28,0x04,0x29,0x04,0x28,0x27,0x26, 0x26,0x28,0x28,0x28,0x28,0x27,0x28,0x24,0x26,0x28,0x24,0x28,0x26,0x26,0x29,0x28, 0x04,0x04,0x25,0x28,0x25,0x26,0x24,0x29,0x04,0x2A,0x28,0x04,0x24,0x28,0x28,0x25, 0x24,0x28,0x28,0x29,0x28,0x29,0x28,0x25,0x23,0x25,0x04,0x26,0x24,0x28,0x28,0x28, 0x27,0x24,0x25,0x26,0x04,0x26,0x23,0x25,0x24,0x04,0x27,0x28,0x04,0x28,0x04,0x29, 0x24,0x28,0x04,0x22,0x22,0x04,0x23,0x24,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D, 0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x17,0x17,0x2D,0x2D,0x17,0x17,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x27,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x25,0x24, 0x26,0x25,0x25,0x26,0x28,0x26,0x26,0x28,0x26,0x04,0x26,0x24,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x26,0x25,0x25,0x28,0x22,0x04,0x04,0x25,0x23,0x28,0x29, 0x25,0x28,0x04,0x20,0x25,0x24,0x24,0x25,0x25,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D, 0x2F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x25,0x2D,0x2D,0x2D,0x2D,0x0C,0x26,0x28,0x26, 0x28,0x28,0x26,0x28,0x26,0x25,0x24,0x25,0x28,0x28,0x28,0x28,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x23,0x26,0x28,0x26,0x25,0x24,0x25,0x22,0x25,0x20,0x29, 0x24,0x24,0x23,0x23,0x22,0x22,0x23,0x04,0x23,0x25,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x24,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2B,0x26,0x27,0x27,0x27,0x27,0x25,0x22,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x25,0x28, 0x24,0x25,0x28,0x04,0x28,0x26,0x28,0x24,0x25,0x25,0x25,0x25,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x28,0x23,0x23,0x24,0x25,0x28,0x28,0x24,0x28,0x29, 0x25,0x23,0x22,0x24,0x23,0x28,0x26,0x22,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x24,0x26,0x26, 0x25,0x04,0x26,0x24,0x26,0x26,0x04,0x25,0x25,0x22,0x04,0x28,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x28,0x28,0x25,0x28,0x28,0x23,0x25,0x28,0x28,0x29, 0x20,0x20,0x22,0x24,0x24,0x23,0x20,0x22,0x22,0x22,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x26,0x25,0x04, 0x25,0x28,0x26,0x24,0x04,0x26,0x22,0x26,0x25,0x25,0x26,0x23,0x2F,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x36,0x22,0x22,0x25,0x27,0x28,0x28,0x26,0x28,0x28,0x29, 0x20,0x22,0x25,0x04,0x04,0x20,0x20,0x26,0x20,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x2D,0x2D,0x2D,0x2D,0x14,0x2D,0x2D, 0x14,0x14,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x14,0x2D,0x2D,0x2D,0x2D,0x14,0x2D,0x2D, 0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D, 0x14,0x2D,0x2D,0x2D,0x2D,0x14,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x25,0x22,0x22, 0x26,0x26,0x25,0x25,0x26,0x24,0x25,0x26,0x26,0x25,0x26,0x22,0x2F,0x2F,0x2D,0x2D, 0x32,0x33,0x33,0x34,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x35,0x35,0x35,0x35,0x36,0x36, 0x36,0x36,0x20,0x23,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x27,0x29,0x26,0x28,0x24,0x27,0x24,0x26,0x26,0x29, 0x20,0x24,0x22,0x22,0x22,0x20,0x26,0x22,0x25,0x24,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14, 0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x14,0x14,0x14,0x2D,0x14,0x14,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14, 0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x14,0x14,0x2D,0x2D, 0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x04,0x25,0x04, 0x28,0x04,0x26,0x25,0x26,0x26,0x26,0x25,0x28,0x04,0x04,0x26,0x2E,0x2F,0x2D,0x2D, 0x33,0x36,0x22,0x25,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x28,0x27,0x28,0x27,0x23,0x27,0x26,0x28,0x29, 0x22,0x25,0x25,0x25,0x25,0x24,0x28,0x25,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x14, 0x14,0x14,0x14,0x14,0x14,0x2D,0x14,0x14,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D, 0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x2D, 0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x24,0x26,0x25, 0x25,0x23,0x26,0x25,0x25,0x28,0x26,0x28,0x28,0x24,0x28,0x04,0x2E,0x2F,0x2D,0x2D, 0x34,0x22,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x28,0x28,0x2C,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x28,0x04,0x24,0x28,0x27,0x24,0x28,0x25,0x25,0x29, 0x25,0x24,0x25,0x25,0x26,0x25,0x25,0x04,0x25,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x14, 0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x14,0x14,0x14,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x14,0x14,0x2D,0x2D, 0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x24,0x26,0x25, 0x28,0x26,0x24,0x26,0x25,0x24,0x26,0x24,0x26,0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D, 0x34,0x25,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x35,0x25,0x22,0x26,0x27,0x28,0x28,0x28,0x28,0x25,0x29, 0x26,0x26,0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14, 0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14, 0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D, 0x14,0x14,0x2D,0x2D,0x14,0x14,0x2D,0x14,0x14,0x14,0x14,0x14,0x14,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x04,0x28,0x04, 0x26,0x28,0x26,0x23,0x25,0x04,0x26,0x26,0x24,0x04,0x28,0x04,0x2E,0x2F,0x2D,0x2D, 0x35,0x27,0x27,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2D,0x2F,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x24,0x28,0x27,0x24,0x22,0x25,0x24,0x24,0x25,0x29, 0x26,0x25,0x23,0x28,0x04,0x04,0x28,0x24,0x04,0x04,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x24,0x26,0x26, 0x28,0x04,0x04,0x04,0x25,0x28,0x25,0x28,0x04,0x28,0x28,0x27,0x2E,0x2F,0x2D,0x2D, 0x36,0x27,0x28,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x23,0x26,0x28,0x27,0x28,0x26,0x28,0x25,0x04,0x29, 0x28,0x28,0x04,0x26,0x22,0x04,0x21,0x25,0x22,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x28,0x25,0x28, 0x26,0x28,0x25,0x26,0x29,0x28,0x04,0x26,0x26,0x28,0x04,0x23,0x2D,0x2F,0x2D,0x2D, 0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, 0x28,0x28,0x28,0x2E,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D, 0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x0C,0x28,0x28,0x28,0x04,0x27,0x26,0x25,0x04,0x25,0x29, 0x26,0x28,0x26,0x25,0x22,0x26,0x25,0x22,0x04,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x24,0x26,0x28, 0x25,0x25,0x28,0x29,0x24,0x28,0x28,0x28,0x04,0x28,0x26,0x26,0x2D,0x2F,0x2D,0x2D, 0x23,0x2A,0x2C,0x2C,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x25,0x26,0x25,0x24,0x28,0x25,0x25,0x24,0x24,0x29, 0x25,0x24,0x23,0x23,0x23,0x25,0x24,0x21,0x24,0x23,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x27,0x25,0x04, 0x28,0x28,0x26,0x28,0x25,0x04,0x28,0x25,0x25,0x26,0x26,0x24,0x2C,0x2F,0x2D,0x2D, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17, 0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x2D,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17, 0x2D,0x2D,0x17,0x17,0x17,0x17,0x2D,0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D, 0x2D,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x26,0x25,0x28,0x23,0x25,0x25,0x23,0x23,0x25,0x29, 0x25,0x22,0x23,0x24,0x25,0x22,0x04,0x23,0x28,0x26,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x24,0x29,0x04, 0x29,0x26,0x27,0x25,0x04,0x24,0x28,0x24,0x04,0x22,0x25,0x25,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x34,0x28,0x25,0x25,0x22,0x04,0x23,0x25,0x28,0x25,0x29, 0x23,0x25,0x23,0x24,0x26,0x24,0x26,0x28,0x26,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x28,0x25,0x28, 0x28,0x28,0x28,0x28,0x24,0x04,0x25,0x25,0x26,0x24,0x26,0x04,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x22,0x28,0x24,0x25,0x25,0x22,0x28,0x27,0x24,0x29, 0x23,0x23,0x23,0x23,0x28,0x24,0x28,0x28,0x28,0x28,0x2F,0x2F,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x04,0x28,0x25, 0x25,0x23,0x28,0x04,0x04,0x04,0x04,0x27,0x28,0x28,0x25,0x26,0x2C,0x2F,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x33,0x23,0x25,0x25,0x27,0x26,0x23,0x28,0x26,0x04,0x29, 0x22,0x22,0x22,0x04,0x28,0x24,0x27,0x26,0x27,0x26,0x25,0x25,0x25,0x24,0x24,0x24, 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, 0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x32,0x25,0x04,0x04, 0x04,0x25,0x24,0x25,0x24,0x28,0x28,0x26,0x25,0x04,0x25,0x27,0x28,0x24,0x23,0x24, 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23, 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x35,0x35,0x35,0x35,0x0C,0x0C,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34, 0x34,0x34,0x34,0x33,0x33,0x32,0x24,0x25,0x22,0x04,0x27,0x04,0x22,0x28,0x25,0x29, 0x25,0x25,0x28,0x25,0x28,0x28,0x28,0x28,0x22,0x25,0x28,0x26,0x04,0x22,0x26,0x23, 0x22,0x25,0x23,0x25,0x24,0x24,0x24,0x25,0x22,0x28,0x21,0x26,0x25,0x22,0x24,0x25, 0x24,0x23,0x25,0x22,0x20,0x20,0x22,0x20,0x22,0x20,0x23,0x24,0x22,0x25,0x22,0x21, 0x22,0x22,0x04,0x20,0x24,0x21,0x24,0x22,0x21,0x22,0x23,0x25,0x22,0x21,0x25,0x22, 0x24,0x25,0x25,0x22,0x22,0x24,0x26,0x26,0x23,0x04,0x26,0x24,0x28,0x04,0x25,0x28, 0x25,0x25,0x23,0x24,0x23,0x26,0x25,0x24,0x28,0x26,0x26,0x26,0x28,0x26,0x22,0x25, 0x04,0x24,0x04,0x04,0x26,0x25,0x04,0x26,0x26,0x25,0x28,0x04,0x29,0x26,0x04,0x28, 0x29,0x26,0x28,0x28,0x28,0x28,0x28,0x29,0x28,0x28,0x26,0x29,0x29,0x26,0x28,0x28, 0x26,0x29,0x25,0x29,0x28,0x28,0x28,0x28,0x25,0x25,0x26,0x26,0x28,0x25,0x24,0x25, 0x28,0x28,0x26,0x26,0x28,0x28,0x04,0x04,0x25,0x26,0x04,0x25,0x26,0x25,0x26,0x04, 0x24,0x24,0x22,0x20,0x25,0x23,0x22,0x25,0x20,0x22,0x20,0x24,0x22,0x24,0x25,0x28, 0x23,0x26,0x25,0x26,0x26,0x04,0x04,0x28,0x04,0x25,0x28,0x26,0x25,0x26,0x22,0x26, 0x26,0x26,0x26,0x26,0x26,0x28,0x04,0x24,0x26,0x28,0x24,0x25,0x29,0x04,0x26,0x28, 0x24,0x28,0x25,0x25,0x04,0x22,0x26,0x26,0x24,0x23,0x22,0x25,0x26,0x26,0x25,0x28, 0x26,0x26,0x25,0x22,0x24,0x26,0x24,0x04,0x24,0x26,0x26,0x25,0x26,0x28,0x26,0x26, 0x23,0x23,0x28,0x25,0x22,0x25,0x04,0x28,0x28,0x25,0x24,0x26,0x27,0x28,0x04,0x28, 0x26,0x28,0x28,0x28,0x26,0x04,0x29,0x28,0x28,0x28,0x29,0x28,0x24,0x28,0x28,0x28, 0x25,0x28,0x04,0x28,0x04,0x04,0x26,0x28,0x24,0x25,0x04,0x25,0x28,0x26,0x28,0x28, 0x28,0x28,0x26,0x28,0x28,0x04,0x25,0x26,0x25,0x26,0x25,0x26,0x25,0x22,0x23,0x22, 0x25,0x24,0x24,0x23,0x27,0x28,0x24,0x28,0x26,0x26,0x27,0x22,0x28,0x28,0x28,0x29, 0x23,0x28,0x25,0x04,0x25,0x28,0x04,0x22,0x26,0x24,0x22,0x22,0x23,0x04,0x25,0x22, 0x26,0x25,0x23,0x22,0x24,0x24,0x26,0x22,0x23,0x28,0x26,0x25,0x28,0x28,0x23,0x22, 0x25,0x20,0x22,0x20,0x24,0x22,0x23,0x20,0x20,0x22,0x20,0x22,0x25,0x20,0x25,0x20, 0x20,0x25,0x22,0x24,0x22,0x22,0x20,0x20,0x20,0x20,0x20,0x22,0x21,0x20,0x20,0x20, 0x21,0x23,0x23,0x22,0x25,0x24,0x25,0x28,0x04,0x28,0x25,0x25,0x29,0x28,0x26,0x24, 0x28,0x25,0x28,0x28,0x28,0x24,0x26,0x26,0x24,0x25,0x28,0x26,0x24,0x25,0x24,0x27, 0x27,0x25,0x27,0x25,0x04,0x28,0x26,0x04,0x26,0x04,0x28,0x28,0x28,0x23,0x29,0x04, 0x04,0x28,0x28,0x26,0x29,0x28,0x28,0x26,0x28,0x25,0x26,0x28,0x28,0x29,0x28,0x25, 0x28,0x25,0x04,0x28,0x29,0x29,0x25,0x28,0x26,0x26,0x04,0x2A,0x04,0x28,0x26,0x2A, 0x28,0x28,0x26,0x28,0x25,0x25,0x28,0x28,0x25,0x25,0x26,0x04,0x23,0x24,0x25,0x23, 0x24,0x22,0x20,0x20,0x04,0x25,0x20,0x22,0x20,0x20,0x26,0x20,0x20,0x26,0x25,0x28, 0x23,0x25,0x24,0x23,0x26,0x26,0x28,0x04,0x26,0x24,0x24,0x26,0x25,0x26,0x25,0x28, 0x28,0x04,0x26,0x23,0x26,0x04,0x26,0x26,0x25,0x28,0x29,0x04,0x28,0x27,0x26,0x25, 0x28,0x23,0x23,0x23,0x24,0x22,0x22,0x25,0x21,0x22,0x25,0x26,0x25,0x24,0x28,0x24, 0x25,0x25,0x25,0x28,0x25,0x25,0x25,0x24,0x28,0x28,0x27,0x23,0x26,0x04,0x24,0x24, 0x24,0x25,0x24,0x25,0x25,0x24,0x22,0x28,0x24,0x24,0x26,0x26,0x25,0x28,0x25,0x26, 0x29,0x28,0x04,0x28,0x04,0x26,0x28,0x28,0x04,0x2A,0x28,0x28,0x24,0x28,0x26,0x26, 0x04,0x25,0x26,0x28,0x27,0x25,0x29,0x28,0x28,0x24,0x28,0x26,0x28,0x04,0x28,0x04, 0x04,0x24,0x25,0x23,0x23,0x04,0x24,0x28,0x24,0x04,0x22,0x26,0x26,0x25,0x25,0x28, 0x25,0x28,0x28,0x04,0x27,0x25,0x25,0x24,0x25,0x27,0x27,0x25,0x23,0x24,0x27,0x29, 0x04,0x26,0x25,0x26,0x26,0x26,0x22,0x04,0x25,0x04,0x25,0x28,0x28,0x25,0x25,0x04, 0x25,0x24,0x25,0x25,0x28,0x28,0x28,0x24,0x04,0x28,0x28,0x25,0x25,0x24,0x24,0x24, 0x25,0x20,0x23,0x22,0x23,0x22,0x25,0x25,0x24,0x25,0x25,0x28,0x25,0x28,0x22,0x24, 0x24,0x24,0x23,0x25,0x26,0x04,0x25,0x22,0x25,0x20,0x24,0x20,0x20,0x24,0x23,0x24, 0x22,0x22,0x24,0x25,0x24,0x24,0x28,0x25,0x22,0x23,0x28,0x28,0x25,0x28,0x26,0x26, 0x23,0x28,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x25,0x26,0x26,0x28,0x28,0x28,0x29, 0x28,0x28,0x04,0x29,0x28,0x26,0x29,0x04,0x25,0x28,0x04,0x29,0x29,0x29,0x28,0x28, 0x24,0x04,0x28,0x28,0x28,0x26,0x26,0x04,0x28,0x29,0x04,0x29,0x04,0x29,0x26,0x28, 0x29,0x25,0x28,0x29,0x24,0x04,0x29,0x2A,0x2A,0x28,0x04,0x04,0x29,0x28,0x04,0x29, 0x2A,0x28,0x28,0x28,0x26,0x25,0x29,0x26,0x25,0x28,0x24,0x24,0x26,0x23,0x20,0x22, 0x20,0x04,0x20,0x25,0x25,0x20,0x20,0x25,0x22,0x22,0x20,0x22,0x28,0x25,0x25,0x25, 0x25,0x25,0x26,0x28,0x26,0x28,0x28,0x25,0x25,0x28,0x28,0x04,0x28,0x28,0x25,0x25, 0x28,0x28,0x26,0x04,0x26,0x28,0x26,0x28,0x28,0x28,0x28,0x28,0x04,0x25,0x24,0x25, 0x25,0x24,0x21,0x23,0x24,0x04,0x24,0x22,0x24,0x25,0x25,0x25,0x24,0x22,0x25,0x28, 0x04,0x04,0x26,0x26,0x25,0x04,0x28,0x28,0x28,0x26,0x26,0x26,0x23,0x28,0x25,0x25, 0x23,0x27,0x28,0x24,0x28,0x27,0x28,0x23,0x04,0x26,0x28,0x28,0x29,0x04,0x28,0x28, 0x28,0x29,0x2A,0x25,0x25,0x2A,0x28,0x26,0x29,0x29,0x28,0x25,0x28,0x23,0x25,0x25, 0x27,0x25,0x26,0x26,0x28,0x29,0x28,0x04,0x04,0x28,0x28,0x04,0x04,0x04,0x04,0x25, 0x25,0x25,0x25,0x26,0x22,0x24,0x25,0x28,0x28,0x24,0x24,0x22,0x26,0x24,0x28,0x25, 0x24,0x24,0x24,0x04,0x27,0x24,0x23,0x28,0x24,0x27,0x26,0x28,0x24,0x25,0x04,0x29, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x2A,0x2C,0x29,0x29,0x29,0x29,0x29,0x29,0x2A,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x2C,0x2C,0x29,0x29,0x29,0x29,0x29,0x2A,0x2C,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x29, 0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x29,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00, 0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2C,0x29,0x29, 0x29,0x2C,0x29,0x29,0x2C,0x29,0x29,0x29,0x29,0x2A,0x2C,0x2A,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00,0x00,0x29, 0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2C,0x29,0x29, 0x29,0x2C,0x29,0x29,0x2C,0x29,0x29,0x29,0x2A,0x2C,0x2A,0x29,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00,0x00,0x29, 0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2C,0x2A,0x29, 0x2A,0x2C,0x29,0x29,0x2C,0x29,0x29,0x29,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00,0x00,0x29, 0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00, 0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2A,0x2C,0x2A, 0x2C,0x2A,0x29,0x29,0x2C,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x00, 0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00,0x00,0x29, 0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x29,0x00,0x00,0x29,0x00,0x00,0x29,0x00, 0x00,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00, 0x00,0x29,0x29,0x29,0x00,0x00,0x00,0x00,0x29,0x29,0x00,0x00,0x29,0x29,0x00,0x00, 0x29,0x29,0x00,0x00,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2A,0x2C, 0x2A,0x29,0x29,0x2C,0x2C,0x2C,0x29,0x2C,0x29,0x29,0x29,0x29,0x2C,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29, 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29}; #else byte signon[] = { 0x92,0x01,0x92,0x94,0x91,0x92,0x93,0x91,0x92,0x01,0x95,0x95,0x92,0x92,0x94,0x92, 0x92,0x96,0x92,0x95,0x92,0x91,0x95,0x93,0x91,0x92,0x92,0x92,0x91,0x95,0x92,0x95, 0x94,0x95,0x92,0x91,0x92,0x92,0x91,0x94,0x93,0x01,0x98,0x99,0x98,0x99,0x93,0x96, 0x95,0x96,0x92,0x01,0x93,0x93,0x96,0x94,0x93,0x95,0x95,0x93,0x93,0x01,0x93,0x95, 0x01,0x98,0x95,0x93,0x94,0x92,0x95,0x98,0x98,0x98,0x93,0x93,0x01,0x93,0x92,0x93, 0x95,0x93,0x95,0x95,0x01,0x92,0x92,0x91,0x93,0x93,0x95,0x95,0x92,0x93,0x95,0x96, 0x93,0x99,0x99,0x92,0x94,0x93,0x92,0x01,0x95,0x92,0x01,0x93,0x93,0x92,0x93,0x95, 0x94,0x93,0x93,0x93,0x95,0x94,0x98,0x93,0x92,0x93,0x93,0x92,0x94,0x95,0x92,0x01, 0x92,0x92,0x94,0x01,0x94,0x94,0x94,0x94,0x95,0x94,0x98,0x9A,0x93,0x92,0x96,0x92, 0x96,0x95,0x92,0x92,0x96,0x98,0x96,0x98,0x98,0x94,0x94,0x95,0x92,0x94,0x95,0x92, 0x95,0x95,0x95,0x96,0x92,0x95,0x94,0x94,0x94,0x95,0x94,0x95,0x92,0x01,0x94,0x95, 0x95,0x96,0x94,0x92,0x96,0x96,0x94,0x94,0x93,0x01,0x92,0x95,0x98,0x94,0x96,0x92, 0x96,0x95,0x96,0x9A,0x98,0x93,0x95,0x95,0x95,0x93,0x98,0x95,0x95,0x01,0x95,0x94, 0x93,0x95,0x93,0x98,0x96,0x95,0x8E,0x8E,0x95,0x8D,0x92,0x92,0x95,0x92,0x98,0x95, 0x95,0x98,0x01,0x98,0x95,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x98,0x98,0x95,0x95, 0x96,0x93,0x01,0x95,0x01,0x94,0x95,0x98,0x98,0x93,0x96,0x95,0x96,0x95,0x96,0x95, 0x98,0x98,0x94,0x96,0x98,0x8D,0x8E,0x96,0x8E,0x93,0x01,0x96,0x95,0x94,0x96,0x98, 0x98,0x98,0x94,0x98,0x98,0x95,0x95,0x96,0x96,0x01,0x95,0x96,0x96,0x01,0x96,0x92, 0x95,0x95,0x92,0x98,0x94,0x98,0x95,0x96,0x96,0x96,0x95,0x95,0x98,0x98,0x96,0x98, 0x98,0x98,0x96,0x98,0x94,0x98,0x01,0x98,0x96,0x95,0x96,0x96,0x96,0x95,0x98,0x96, 0x92,0x95,0x92,0x95,0x93,0x95,0x95,0x92,0x92,0x01,0x92,0x93,0x95,0x95,0x93,0x92, 0x92,0x92,0x92,0x91,0x01,0x94,0x01,0x94,0x93,0x95,0x92,0x92,0x91,0x93,0x93,0x01, 0x93,0x94,0x93,0x95,0x95,0x95,0x92,0x01,0x95,0x93,0x95,0x95,0x95,0x95,0x95,0x94, 0x95,0x94,0x93,0x95,0x94,0x92,0x95,0x95,0x94,0x92,0x93,0x93,0x93,0x95,0x96,0x95, 0x95,0x94,0x94,0x95,0x94,0x94,0x91,0x95,0x96,0x01,0x92,0x95,0x95,0x93,0x92,0x95, 0x96,0x01,0x93,0x93,0x93,0x96,0x92,0x95,0x95,0x96,0x94,0x95,0x96,0x94,0x01,0x01, 0x92,0x95,0x94,0x01,0x95,0x98,0x95,0x96,0x96,0x01,0x98,0x93,0x95,0x92,0x92,0x96, 0x93,0x95,0x01,0x01,0x92,0x95,0x92,0x95,0x93,0x92,0x93,0x94,0x92,0x94,0x93,0x01, 0x01,0x98,0x98,0x91,0x94,0x95,0x94,0x98,0x93,0x98,0x98,0x95,0x95,0x93,0x93,0x94, 0x95,0x94,0x92,0x95,0x01,0x98,0x01,0x01,0x96,0x96,0x96,0x96,0x96,0x95,0x98,0x94, 0x95,0x98,0x94,0x95,0x01,0x94,0x95,0x94,0x94,0x94,0x94,0x94,0x01,0x94,0x92,0x94, 0x93,0x95,0x95,0x95,0x01,0x96,0x95,0x95,0x96,0x96,0x95,0x96,0x95,0x95,0x96,0x96, 0x96,0x01,0x98,0x98,0x96,0x95,0x98,0x98,0x98,0x98,0x98,0x94,0x95,0x93,0x96,0x95, 0x95,0x96,0x93,0x8E,0x8E,0x8E,0x92,0x8E,0x8E,0x8E,0x96,0x93,0x98,0x96,0x95,0x98, 0x98,0x96,0x96,0x98,0x01,0x98,0x98,0x96,0x96,0x94,0x96,0x95,0x98,0x97,0x01,0x94, 0x96,0x98,0x01,0x96,0x96,0x92,0x98,0x95,0x98,0x95,0x95,0x96,0x01,0x94,0x96,0x96, 0x93,0x96,0x93,0x96,0x95,0x94,0x95,0x92,0x95,0x96,0x95,0x94,0x95,0x92,0x95,0x96, 0x95,0x01,0x96,0x96,0x01,0x95,0x98,0x94,0x98,0x95,0x96,0x94,0x95,0x01,0x94,0x96, 0x96,0x98,0x95,0x93,0x96,0x98,0x98,0x95,0x01,0x98,0x93,0x96,0x98,0x01,0x94,0x95, 0x96,0x96,0x95,0x98,0x98,0x98,0x95,0x94,0x95,0x98,0x96,0x96,0x01,0x94,0x96,0x95, 0x91,0x92,0x92,0x95,0x96,0x95,0x92,0x96,0x91,0x95,0x95,0x92,0x92,0x93,0x95,0x94, 0x94,0x91,0x93,0x92,0x94,0x91,0x92,0x96,0x92,0x92,0x92,0x94,0x94,0x92,0x01,0x98, 0x95,0x95,0x93,0x98,0x01,0x93,0x95,0x95,0x95,0x95,0x93,0x93,0x92,0x92,0x01,0x95, 0x95,0x95,0x92,0x92,0x93,0x93,0x93,0x92,0x94,0x94,0x95,0x95,0x95,0x93,0x94,0x95, 0x93,0x92,0x93,0x94,0x94,0x93,0x92,0x95,0x94,0x96,0x95,0x95,0x98,0x96,0x95,0x95, 0x92,0x96,0x95,0x95,0x96,0x95,0x95,0x01,0x95,0x01,0x96,0x99,0x99,0x99,0x98,0x01, 0x98,0x95,0x96,0x96,0x98,0x95,0x93,0x96,0x01,0x98,0x98,0x98,0x98,0x95,0x95,0x93, 0x93,0x95,0x95,0x96,0x95,0x93,0x94,0x95,0x01,0x95,0x96,0x96,0x01,0x01,0x95,0x95, 0x95,0x97,0x98,0x92,0x94,0x01,0x98,0x01,0x96,0x96,0x98,0x93,0x92,0x93,0x94,0x98, 0x95,0x94,0x94,0x95,0x98,0x94,0x98,0x94,0x92,0x96,0x98,0x98,0x01,0x96,0x92,0x94, 0x95,0x95,0x95,0x98,0x95,0x96,0x95,0x96,0x96,0x95,0x94,0x96,0x92,0x95,0x96,0x96, 0x96,0x95,0x01,0x95,0x95,0x92,0x94,0x95,0x01,0x96,0x94,0x98,0x96,0x95,0x95,0x98, 0x01,0x98,0x96,0x99,0x98,0x99,0x98,0x97,0x95,0x96,0x95,0x92,0x92,0x01,0x94,0x96, 0x93,0x8E,0x8E,0x8E,0x92,0x8E,0x8E,0x92,0x95,0x95,0x96,0x98,0x95,0x95,0x98,0x94, 0x95,0x01,0x98,0x98,0x01,0x96,0x01,0x98,0x95,0x01,0x01,0x01,0x95,0x98,0x95,0x94, 0x01,0x96,0x96,0x96,0x96,0x98,0x98,0x98,0x95,0x98,0x95,0x95,0x96,0x96,0x01,0x96, 0x95,0x93,0x95,0x01,0x92,0x92,0x92,0x94,0x96,0x94,0x96,0x96,0x95,0x95,0x01,0x98, 0x94,0x94,0x98,0x96,0x98,0x95,0x92,0x96,0x94,0x92,0x98,0x94,0x01,0x92,0x94,0x96, 0x94,0x96,0x94,0x96,0x96,0x96,0x95,0x95,0x96,0x01,0x98,0x96,0x98,0x96,0x96,0x98, 0x98,0x96,0x96,0x94,0x95,0x98,0x98,0x96,0x98,0x98,0x96,0x95,0x94,0x96,0x94,0x95, 0x92,0x91,0x95,0x92,0x94,0x92,0x92,0x91,0x95,0x94,0x93,0x92,0x95,0x95,0x91,0x94, 0x93,0x91,0x98,0x94,0x94,0x92,0x93,0x93,0x01,0x94,0x95,0x95,0x96,0x94,0x98,0x96, 0x95,0x98,0x98,0x01,0x96,0x95,0x92,0x93,0x94,0x94,0x93,0x95,0x93,0x95,0x95,0x96, 0x95,0x92,0x92,0x98,0x93,0x93,0x96,0x92,0x95,0x95,0x93,0x92,0x93,0x93,0x95,0x94, 0x01,0x93,0x92,0x96,0x93,0x92,0x93,0x93,0x95,0x92,0x94,0x92,0x91,0x01,0x98,0x95, 0x96,0x98,0x95,0x98,0x96,0x01,0x99,0x01,0x96,0x01,0x94,0x97,0x98,0x01,0x93,0x01, 0x96,0x01,0x93,0x96,0x94,0x98,0x94,0x94,0x96,0x96,0x98,0x98,0x96,0x98,0x01,0x01, 0x95,0x96,0x01,0x96,0x95,0x98,0x94,0x98,0x95,0x96,0x99,0x99,0x99,0x99,0x94,0x99, 0x99,0x96,0x95,0x93,0x99,0x98,0x95,0x97,0x96,0x01,0x92,0x95,0x96,0x98,0x94,0x94, 0x96,0x96,0x01,0x96,0x94,0x96,0x94,0x98,0x96,0x93,0x96,0x93,0x98,0x98,0x96,0x98, 0x96,0x96,0x95,0x98,0x95,0x98,0x95,0x98,0x95,0x95,0x98,0x98,0x98,0x96,0x96,0x96, 0x98,0x98,0x01,0x95,0x97,0x96,0x96,0x95,0x98,0x98,0x94,0x98,0x98,0x98,0x99,0x9A, 0x9A,0x96,0x98,0x98,0x97,0x01,0x01,0x95,0x94,0x92,0x93,0x93,0x8E,0x92,0x94,0x92, 0x94,0x91,0x92,0x92,0x93,0x96,0x94,0x95,0x95,0x96,0x94,0x96,0x95,0x94,0x96,0x01, 0x98,0x94,0x98,0x96,0x96,0x94,0x98,0x96,0x96,0x01,0x01,0x94,0x94,0x94,0x95,0x96, 0x94,0x96,0x95,0x98,0x94,0x95,0x94,0x96,0x98,0x96,0x95,0x96,0x01,0x95,0x95,0x93, 0x95,0x95,0x93,0x93,0x96,0x01,0x95,0x96,0x98,0x98,0x93,0x98,0x96,0x95,0x96,0x96, 0x98,0x98,0x95,0x95,0x96,0x98,0x95,0x98,0x94,0x96,0x94,0x98,0x94,0x98,0x01,0x98, 0x01,0x01,0x98,0x96,0x96,0x01,0x01,0x95,0x98,0x01,0x01,0x98,0x98,0x95,0x98,0x96, 0x01,0x94,0x01,0x01,0x96,0x01,0x94,0x98,0x98,0x01,0x01,0x96,0x95,0x98,0x98,0x01, 0x92,0x92,0x92,0x92,0x92,0x93,0x92,0x92,0x98,0x95,0x91,0x95,0x93,0x92,0x92,0x01, 0x95,0x93,0x92,0x94,0x94,0x96,0x96,0x96,0x01,0x94,0x96,0x96,0x96,0x96,0x95,0x95, 0x94,0x01,0x95,0x94,0x98,0x96,0x95,0x96,0x93,0x92,0x01,0x93,0x92,0x95,0x01,0x01, 0x93,0x92,0x93,0x93,0x93,0x96,0x01,0x94,0x95,0x93,0x93,0x93,0x95,0x93,0x95,0x93, 0x93,0x93,0x92,0x95,0x92,0x93,0x92,0x91,0x93,0x93,0x92,0x95,0x93,0x95,0x95,0x96, 0x97,0x96,0x99,0x98,0x98,0x94,0x93,0x96,0x96,0x93,0x93,0x95,0x95,0x94,0x94,0x95, 0x93,0x92,0x95,0x93,0x93,0x93,0x92,0x98,0x93,0x96,0x94,0x94,0x96,0x99,0x98,0x98, 0x98,0x95,0x94,0x98,0x01,0x98,0x98,0x99,0x01,0x95,0x96,0x01,0x97,0x97,0x95,0x97, 0x94,0x94,0x98,0x97,0x95,0x98,0x99,0x95,0x99,0x96,0x95,0x98,0x98,0x98,0x98,0x98, 0x98,0x95,0x96,0x98,0x95,0x98,0x96,0x92,0x98,0x98,0x96,0x95,0x96,0x98,0x96,0x94, 0x94,0x01,0x95,0x96,0x96,0x95,0x96,0x98,0x01,0x01,0x95,0x92,0x98,0x95,0x98,0x95, 0x94,0x96,0x97,0x98,0x95,0x01,0x01,0x9A,0x96,0x98,0x96,0x9A,0x98,0x98,0x98,0x95, 0x96,0x98,0x94,0x98,0x95,0x93,0x94,0x94,0x92,0x95,0x94,0x92,0x8E,0x8E,0x94,0x93, 0x91,0x95,0x95,0x94,0x01,0x95,0x98,0x95,0x01,0x98,0x96,0x01,0x96,0x93,0x98,0x98, 0x94,0x94,0x96,0x95,0x96,0x96,0x95,0x95,0x95,0x95,0x96,0x94,0x94,0x95,0x94,0x98, 0x95,0x95,0x96,0x98,0x93,0x96,0x98,0x92,0x01,0x96,0x93,0x95,0x94,0x98,0x95,0x91, 0x94,0x92,0x95,0x96,0x98,0x95,0x94,0x98,0x96,0x98,0x94,0x96,0x95,0x93,0x95,0x01, 0x95,0x01,0x96,0x01,0x98,0x96,0x98,0x98,0x95,0x98,0x94,0x96,0x98,0x97,0x97,0x95, 0x98,0x96,0x98,0x95,0x94,0x95,0x98,0x95,0x98,0x98,0x98,0x01,0x95,0x98,0x98,0x99, 0x98,0x01,0x99,0x98,0x99,0x98,0x98,0x01,0x98,0x96,0x99,0x99,0x98,0x99,0x99,0x98, 0x01,0x95,0x95,0x94,0x95,0x01,0x98,0x94,0x94,0x94,0x96,0x91,0x91,0x95,0x91,0x94, 0x92,0x94,0x95,0x95,0x98,0x96,0x01,0x93,0x98,0x98,0x96,0x95,0x98,0x94,0x94,0x01, 0x98,0x01,0x01,0x96,0x98,0x99,0x98,0x94,0x93,0x98,0x01,0x98,0x95,0x96,0x96,0x96, 0x94,0x98,0x96,0x93,0x95,0x96,0x01,0x01,0x94,0x92,0x95,0x95,0x92,0x94,0x93,0x01, 0x92,0x95,0x94,0x96,0x96,0x92,0x93,0x93,0x91,0x01,0x95,0x93,0x94,0x93,0x96,0x95, 0x98,0x94,0x92,0x95,0x98,0x92,0x94,0x93,0x95,0x93,0x95,0x96,0x95,0x93,0x01,0x92, 0x98,0x93,0x95,0x93,0x95,0x95,0x95,0x95,0x93,0x94,0x95,0x94,0x98,0x93,0x98,0x01, 0x98,0x98,0x98,0x01,0x96,0x95,0x94,0x96,0x96,0x95,0x98,0x98,0x95,0x94,0x94,0x01, 0x94,0x95,0x93,0x94,0x91,0x94,0x95,0x96,0x01,0x96,0x96,0x95,0x01,0x94,0x98,0x01, 0x95,0x95,0x93,0x98,0x96,0x96,0x01,0x96,0x01,0x96,0x98,0x96,0x94,0x01,0x98,0x95, 0x94,0x92,0x96,0x01,0x96,0x94,0x96,0x01,0x96,0x98,0x94,0x01,0x94,0x01,0x95,0x98, 0x98,0x99,0x94,0x99,0x98,0x95,0x99,0x98,0x98,0x98,0x98,0x95,0x98,0x98,0x98,0x97, 0x96,0x96,0x94,0x95,0x93,0x96,0x92,0x8E,0x92,0x92,0x96,0x94,0x92,0x95,0x93,0x92, 0x98,0x93,0x98,0x95,0x95,0x96,0x98,0x96,0x95,0x96,0x95,0x01,0x96,0x95,0x98,0x95, 0x95,0x01,0x01,0x96,0x96,0x01,0x95,0x98,0x95,0x95,0x01,0x01,0x95,0x96,0x95,0x01, 0x96,0x95,0x95,0x96,0x96,0x96,0x01,0x96,0x96,0x96,0x95,0x96,0x95,0x96,0x8E,0x92, 0x94,0x01,0x96,0x96,0x98,0x98,0x98,0x96,0x01,0x96,0x98,0x96,0x96,0x94,0x01,0x98, 0x94,0x95,0x96,0x96,0x94,0x95,0x96,0x94,0x95,0x96,0x96,0x01,0x01,0x98,0x98,0x98, 0x98,0x95,0x96,0x98,0x96,0x95,0x95,0x98,0x01,0x96,0x98,0x98,0x94,0x95,0x98,0x01, 0x95,0x9A,0x98,0x9A,0x98,0x9A,0x99,0x9A,0x98,0x99,0x01,0x99,0x98,0x98,0x98,0x95, 0x95,0x92,0x91,0x91,0x94,0x94,0x91,0x91,0x94,0x93,0x8E,0x94,0x8E,0x8E,0x92,0x92, 0x94,0x94,0x94,0x95,0x95,0x01,0x95,0x96,0x98,0x96,0x96,0x95,0x96,0x98,0x98,0x92, 0x01,0x98,0x97,0x01,0x98,0x94,0x98,0x95,0x99,0x98,0x96,0x98,0x92,0x95,0x93,0x95, 0x92,0x93,0x95,0x95,0x96,0x96,0x94,0x96,0x95,0x98,0x98,0x95,0x96,0x98,0x95,0x94, 0x01,0x94,0x95,0x96,0x96,0x95,0x98,0x95,0x95,0x93,0x96,0x96,0x95,0x94,0x98,0x98, 0x96,0x96,0x95,0x92,0x93,0x92,0x93,0x93,0x94,0x93,0x92,0x94,0x96,0x01,0x96,0x94, 0x91,0x95,0x96,0x94,0x93,0x94,0x93,0x93,0x92,0x92,0x01,0x96,0x95,0x94,0x96,0x96, 0x98,0x94,0x96,0x95,0x98,0x94,0x96,0x98,0x98,0x95,0x95,0x95,0x98,0x94,0x93,0x01, 0x01,0x92,0x95,0x01,0x94,0x95,0x95,0x95,0x93,0x95,0x94,0x95,0x93,0x94,0x95,0x95, 0x92,0x01,0x01,0x94,0x01,0x94,0x95,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x98,0x98, 0x95,0x94,0x96,0x98,0x94,0x95,0x93,0x01,0x92,0x94,0x99,0x96,0x96,0x96,0x01,0x98, 0x98,0x96,0x99,0x98,0x94,0x95,0x95,0x95,0x98,0x98,0x01,0x98,0x01,0x98,0x95,0x95, 0x95,0x94,0x92,0x94,0x95,0x93,0x8E,0x93,0x95,0x01,0x95,0x94,0x95,0x93,0x93,0x01, 0x95,0x94,0x93,0x94,0x96,0x96,0x96,0x93,0x95,0x94,0x98,0x95,0x01,0x01,0x96,0x01, 0x95,0x96,0x96,0x01,0x98,0x96,0x96,0x95,0x95,0x96,0x95,0x95,0x96,0x01,0x94,0x96, 0x95,0x96,0x98,0x93,0x98,0x98,0x96,0x96,0x01,0x01,0x95,0x95,0x92,0x8E,0x92,0x95, 0x94,0x96,0x96,0x01,0x96,0x98,0x95,0x01,0x98,0x98,0x01,0x96,0x95,0x96,0x98,0x01, 0x96,0x98,0x95,0x96,0x94,0x96,0x94,0x95,0x95,0x98,0x95,0x96,0x95,0x94,0x94,0x01, 0x98,0x98,0x95,0x98,0x98,0x98,0x01,0x98,0x98,0x95,0x98,0x01,0x96,0x94,0x99,0x99, 0x98,0x99,0x98,0x98,0x96,0x99,0x98,0x99,0x98,0x98,0x95,0x93,0x95,0x97,0x94,0x96, 0x01,0x8E,0x96,0x92,0x8E,0x8E,0x8E,0x8E,0x8E,0x92,0x93,0x95,0x94,0x92,0x92,0x96, 0x01,0x96,0x8E,0x01,0x96,0x95,0x94,0x92,0x01,0x98,0x96,0x96,0x98,0x96,0x98,0x98, 0x95,0x94,0x98,0x96,0x96,0x95,0x95,0x96,0x98,0x93,0x97,0x96,0x98,0x98,0x01,0x01, 0x95,0x92,0x93,0x95,0x94,0x95,0x95,0x95,0x95,0x96,0x95,0x94,0x97,0x95,0x98,0x95, 0x94,0x01,0x96,0x95,0x93,0x98,0x98,0x98,0x98,0x96,0x99,0x96,0x98,0x97,0x94,0x96, 0x95,0x98,0x01,0x96,0x95,0x92,0x96,0x95,0x92,0x93,0x94,0x93,0x93,0x92,0x92,0x93, 0x93,0x95,0x94,0x95,0x92,0x93,0x96,0x01,0x94,0x96,0x94,0x95,0x96,0x98,0x93,0x94, 0x96,0x94,0x95,0x98,0x96,0x93,0x98,0x94,0x94,0x92,0x93,0x92,0x95,0x95,0x95,0x96, 0x95,0x95,0x94,0x95,0x93,0x92,0x94,0x94,0x98,0x94,0x95,0x93,0x94,0x95,0x95,0x94, 0x96,0x95,0x95,0x98,0x95,0x01,0x94,0x95,0x95,0x94,0x96,0x94,0x94,0x98,0x98,0x99, 0x98,0x98,0x98,0x99,0x96,0x99,0x98,0x99,0x99,0x99,0x96,0x95,0x97,0x95,0x98,0x01, 0x98,0x97,0x98,0x96,0x98,0x96,0x96,0x99,0x98,0x96,0x98,0x95,0x95,0x98,0x94,0x8E, 0x93,0x8E,0x92,0x92,0x93,0x95,0x92,0x93,0x94,0x92,0x94,0x93,0x93,0x96,0x94,0x98, 0x93,0x98,0x01,0x94,0x96,0x98,0x96,0x94,0x96,0x96,0x01,0x01,0x01,0x95,0x95,0x94, 0x96,0x95,0x96,0x96,0x95,0x98,0x95,0x95,0x96,0x95,0x94,0x98,0x93,0x98,0x98,0x01, 0x96,0x01,0x94,0x95,0x96,0x01,0x95,0x94,0x94,0x94,0x94,0x94,0x94,0x96,0x98,0x95, 0x93,0x96,0x95,0x95,0x98,0x92,0x95,0x98,0x94,0x94,0x95,0x98,0x95,0x97,0x98,0x96, 0x96,0x97,0x98,0x98,0x01,0x97,0x95,0x95,0x98,0x98,0x98,0x98,0x96,0x99,0x96,0x95, 0x98,0x94,0x95,0x94,0x98,0x95,0x94,0x95,0x94,0x97,0x94,0x98,0x96,0x96,0x98,0x98, 0x96,0x98,0x94,0x98,0x01,0x95,0x98,0x93,0x98,0x94,0x01,0x98,0x98,0x01,0x96,0x96, 0x8D,0x91,0x92,0x95,0x94,0x93,0x92,0x95,0x95,0x91,0x95,0x96,0x96,0x01,0x98,0x98, 0x95,0x01,0x91,0x8E,0x8E,0x95,0x92,0x95,0x95,0x94,0x98,0x95,0x95,0x94,0x01,0x01, 0x94,0x93,0x98,0x95,0x01,0x95,0x95,0x93,0x93,0x01,0x95,0x93,0x93,0x95,0x99,0x98, 0x96,0x94,0x98,0x95,0x95,0x98,0x01,0x95,0x96,0x98,0x97,0x95,0x98,0x94,0x98,0x98, 0x01,0x01,0x98,0x98,0x01,0x96,0x98,0x98,0x97,0x94,0x98,0x97,0x98,0x96,0x96,0x98, 0x98,0x98,0x95,0x98,0x95,0x95,0x95,0x95,0x96,0x94,0x95,0x92,0x93,0x92,0x95,0x93, 0x93,0x95,0x94,0x93,0x95,0x96,0x96,0x96,0x96,0x94,0x94,0x98,0x96,0x96,0x98,0x94, 0x96,0x98,0x98,0x95,0x93,0x94,0x96,0x94,0x92,0x93,0x94,0x01,0x93,0x92,0x93,0x93, 0x95,0x94,0x93,0x92,0x92,0x93,0x95,0x98,0x95,0x93,0x01,0x96,0x93,0x95,0x96,0x98, 0x93,0x95,0x92,0x95,0x92,0x94,0x94,0x92,0x95,0x94,0x92,0x92,0x94,0x93,0x98,0x01, 0x94,0x96,0x94,0x94,0x93,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x95,0x95,0x01,0x98, 0x97,0x98,0x98,0x01,0x98,0x98,0x96,0x98,0x96,0x98,0x01,0x96,0x94,0x8E,0x92,0x92, 0x92,0x92,0x95,0x93,0x95,0x93,0x01,0x94,0x95,0x94,0x95,0x95,0x01,0x95,0x92,0x96, 0x98,0x96,0x96,0x01,0x94,0x96,0x94,0x95,0x96,0x92,0x95,0x96,0x96,0x01,0x98,0x93, 0x98,0x96,0x95,0x98,0x93,0x96,0x95,0x98,0x01,0x98,0x94,0x98,0x94,0x96,0x98,0x95, 0x95,0x95,0x95,0x93,0x96,0x95,0x93,0x8E,0x94,0x94,0x93,0x94,0x95,0x96,0x95,0x98, 0x96,0x94,0x96,0x96,0x96,0x96,0x96,0x96,0x98,0x96,0x98,0x96,0x01,0x01,0x99,0x95, 0x99,0x96,0x98,0x98,0x98,0x98,0x99,0x01,0x99,0x98,0x96,0x96,0x98,0x01,0x99,0x98, 0x98,0x94,0x01,0x95,0x98,0x98,0x95,0x01,0x01,0x98,0x01,0x98,0x98,0x96,0x01,0x95, 0x98,0x94,0x01,0x01,0x96,0x96,0x93,0x94,0x01,0x96,0x98,0x98,0x95,0x96,0x01,0x95, 0x97,0x96,0x98,0x98,0x96,0x95,0x96,0x96,0x01,0x96,0x96,0x96,0x96,0x96,0x94,0x94, 0x95,0x92,0x95,0x92,0x96,0x01,0x94,0x98,0x01,0x98,0x98,0x01,0x01,0x96,0x93,0x94, 0x98,0x95,0x95,0x93,0x01,0x96,0x98,0x95,0x95,0x96,0x95,0x92,0x95,0x01,0x96,0x96, 0x97,0x98,0x95,0x98,0x95,0x95,0x95,0x98,0x96,0x94,0x95,0x01,0x98,0x98,0x93,0x94, 0x92,0x96,0x96,0x01,0x95,0x92,0x98,0x98,0x93,0x96,0x96,0x95,0x01,0x98,0x97,0x01, 0x95,0x96,0x94,0x96,0x99,0x98,0x98,0x96,0x96,0x97,0x94,0x96,0x01,0x94,0x92,0x96, 0x95,0x92,0x95,0x94,0x01,0x94,0x98,0x95,0x96,0x96,0x96,0x94,0x93,0x95,0x01,0x95, 0x94,0x95,0x95,0x92,0x92,0x98,0x95,0x95,0x92,0x95,0x94,0x94,0x96,0x95,0x95,0x93, 0x93,0x95,0x01,0x95,0x96,0x92,0x94,0x94,0x95,0x95,0x94,0x93,0x01,0x95,0x94,0x95, 0x01,0x96,0x01,0x96,0x98,0x98,0x94,0x96,0x96,0x95,0x98,0x94,0x95,0x96,0x96,0x92, 0x94,0x95,0x98,0x96,0x98,0x98,0x98,0x98,0x01,0x98,0x94,0x01,0x01,0x98,0x99,0x98, 0x01,0x98,0x98,0x95,0x95,0x96,0x96,0x93,0x95,0x91,0x94,0x92,0x8E,0x95,0x94,0x98, 0x93,0x95,0x94,0x93,0x94,0x92,0x95,0x95,0x98,0x96,0x93,0x95,0x92,0x96,0x95,0x95, 0x01,0x96,0x96,0x94,0x95,0x95,0x96,0x94,0x98,0x98,0x01,0x95,0x96,0x95,0x94,0x96, 0x95,0x96,0x96,0x96,0x94,0x98,0x96,0x94,0x01,0x98,0x01,0x98,0x98,0x98,0x95,0x95, 0x01,0x95,0x94,0x93,0x92,0x8E,0x94,0x91,0x98,0x95,0x98,0x95,0x98,0x95,0x96,0x98, 0x96,0x98,0x01,0x96,0x95,0x01,0x98,0x95,0x94,0x95,0x98,0x98,0x99,0x98,0x98,0x96, 0x98,0x95,0x98,0x95,0x96,0x96,0x99,0x99,0x95,0x98,0x95,0x01,0x94,0x96,0x98,0x99, 0x98,0x96,0x95,0x97,0x94,0x93,0x95,0x98,0x95,0x96,0x98,0x94,0x95,0x95,0x01,0x98, 0x01,0x95,0x94,0x96,0x01,0x96,0x96,0x96,0x96,0x92,0x95,0x98,0x01,0x93,0x98,0x98, 0x9B,0x94,0x98,0x94,0x98,0x95,0x01,0x94,0x96,0x94,0x93,0x01,0x96,0x92,0x98,0x94, 0x98,0x01,0x95,0x96,0x95,0x98,0x98,0x98,0x94,0x8E,0x92,0x98,0x95,0x93,0x93,0x98, 0x94,0x92,0x95,0x92,0x01,0x92,0x91,0x96,0x95,0x93,0x91,0x92,0x92,0x95,0x01,0x98, 0x95,0x98,0x92,0x98,0x98,0x01,0x01,0x94,0x92,0x95,0x95,0x92,0x93,0x95,0x92,0x91, 0x93,0x92,0x92,0x98,0x93,0x93,0x94,0x01,0x98,0x98,0x92,0x01,0x98,0x95,0x98,0x98, 0x01,0x96,0x96,0x98,0x98,0x94,0x01,0x92,0x95,0x98,0x98,0x98,0x96,0x95,0x98,0x98, 0x96,0x95,0x01,0x98,0x96,0x95,0x96,0x98,0x95,0x92,0x96,0x93,0x93,0x93,0x91,0x95, 0x96,0x95,0x96,0x95,0x98,0x95,0x01,0x96,0x95,0x96,0x92,0x95,0x94,0x94,0x95,0x95, 0x98,0x94,0x92,0x96,0x94,0x01,0x96,0x94,0x95,0x96,0x96,0x95,0x95,0x01,0x01,0x98, 0x98,0x94,0x94,0x98,0x95,0x93,0x01,0x94,0x92,0x01,0x96,0x96,0x98,0x98,0x96,0x96, 0x97,0x94,0x98,0x95,0x96,0x95,0x99,0x98,0x95,0x98,0x01,0x98,0x98,0x95,0x95,0x97, 0x98,0x96,0x98,0x94,0x93,0x94,0x93,0x95,0x94,0x8E,0x92,0x93,0x95,0x93,0x98,0x96, 0x01,0x93,0x94,0x95,0x95,0x93,0x96,0x96,0x95,0x95,0x01,0x94,0x98,0x01,0x95,0x98, 0x01,0x94,0x94,0x95,0x98,0x96,0x98,0x01,0x95,0x95,0x98,0x01,0x96,0x98,0x98,0x98, 0x98,0x01,0x95,0x01,0x96,0x01,0x96,0x94,0x01,0x98,0x92,0x96,0x95,0x95,0x96,0x95, 0x96,0x95,0x95,0x92,0x95,0x93,0x93,0x98,0x95,0x95,0x94,0x92,0x98,0x94,0x96,0x95, 0x94,0x95,0x01,0x95,0x01,0x96,0x95,0x98,0x98,0x01,0x98,0x99,0x01,0x98,0x98,0x97, 0x94,0x98,0x97,0x95,0x97,0x95,0x98,0x98,0x98,0x96,0x98,0x01,0x98,0x01,0x92,0x96, 0x96,0x01,0x98,0x98,0x96,0x01,0x98,0x98,0x95,0x98,0x94,0x92,0x95,0x98,0x98,0x93, 0x98,0x01,0x96,0x98,0x98,0x96,0x01,0x96,0x94,0x94,0x96,0x95,0x98,0x94,0x93,0x94, 0x9B,0x98,0x98,0x98,0x98,0x98,0x96,0x97,0x98,0x96,0x94,0x96,0x95,0x93,0x98,0x01, 0x98,0x98,0x97,0x94,0x95,0x94,0x96,0x95,0x94,0x93,0x95,0x8E,0x8E,0x8E,0x95,0x8E, 0x01,0x01,0x98,0x98,0x01,0x93,0x96,0x96,0x95,0x95,0x93,0x92,0x8E,0x8E,0x8E,0x8E, 0x8E,0x92,0x93,0x96,0x98,0x93,0x94,0x01,0x95,0x93,0x98,0x93,0x96,0x95,0x95,0x95, 0x98,0x98,0x98,0x94,0x95,0x98,0x01,0x01,0x96,0x95,0x96,0x93,0x94,0x98,0x95,0x96, 0x94,0x96,0x95,0x95,0x94,0x95,0x92,0x98,0x96,0x95,0x92,0x96,0x98,0x95,0x95,0x98, 0x95,0x98,0x94,0x96,0x95,0x96,0x96,0x98,0x95,0x94,0x01,0x96,0x96,0x01,0x96,0x01, 0x98,0x98,0x01,0x01,0x94,0x94,0x95,0x01,0x01,0x94,0x98,0x96,0x96,0x98,0x97,0x98, 0x95,0x95,0x94,0x01,0x01,0x97,0x96,0x94,0x97,0x98,0x94,0x95,0x96,0x98,0x96,0x95, 0x95,0x95,0x98,0x01,0x98,0x95,0x98,0x95,0x95,0x98,0x98,0x95,0x98,0x98,0x95,0x93, 0x99,0x01,0x98,0x98,0x98,0x98,0x95,0x96,0x94,0x95,0x95,0x98,0x95,0x96,0x96,0x95, 0x91,0x95,0x93,0x92,0x91,0x95,0x94,0x8E,0x95,0x98,0x93,0x93,0x95,0x92,0x95,0x93, 0x92,0x96,0x98,0x94,0x96,0x01,0x96,0x95,0x98,0x98,0x93,0x96,0x95,0x98,0x95,0x95, 0x01,0x98,0x01,0x95,0x98,0x96,0x98,0x98,0x92,0x95,0x98,0x96,0x01,0x98,0x95,0x95, 0x01,0x96,0x95,0x98,0x98,0x96,0x95,0x01,0x01,0x96,0x98,0x96,0x96,0x96,0x96,0x94, 0x95,0x95,0x93,0x95,0x95,0x95,0x93,0x98,0x94,0x92,0x95,0x98,0x97,0x94,0x98,0x96, 0x98,0x95,0x96,0x98,0x95,0x98,0x98,0x98,0x98,0x98,0x99,0x95,0x95,0x98,0x95,0x97, 0x01,0x98,0x98,0x98,0x95,0x96,0x95,0x95,0x94,0x94,0x94,0x95,0x94,0x96,0x96,0x94, 0x96,0x94,0x98,0x95,0x98,0x01,0x98,0x94,0x01,0x96,0x96,0x98,0x96,0x98,0x95,0x92, 0x96,0x96,0x01,0x95,0x98,0x98,0x96,0x01,0x01,0x94,0x94,0x93,0x93,0x96,0x95,0x8D, 0x9B,0x99,0x98,0x98,0x95,0x96,0x94,0x99,0x96,0x95,0x95,0x97,0x96,0x98,0x01,0x94, 0x94,0x95,0x96,0x01,0x96,0x93,0x95,0x92,0x01,0x93,0x94,0x96,0x94,0x92,0x95,0x94, 0x95,0x94,0x95,0x95,0x01,0x93,0x01,0x95,0x95,0x01,0x98,0x98,0x92,0x98,0x93,0x93, 0x95,0x93,0x95,0x93,0x93,0x8E,0x93,0x01,0x96,0x01,0x97,0x01,0x98,0x96,0x96,0x94, 0x01,0x01,0x95,0x96,0x95,0x98,0x95,0x98,0x95,0x95,0x98,0x98,0x01,0x95,0x92,0x98, 0x93,0x95,0x98,0x94,0x92,0x95,0x92,0x01,0x96,0x93,0x96,0x98,0x98,0x95,0x95,0x94, 0x93,0x96,0x95,0x96,0x98,0x95,0x93,0x98,0x01,0x01,0x94,0x96,0x96,0x01,0x95,0x98, 0x96,0x96,0x95,0x98,0x99,0x99,0x94,0x98,0x01,0x01,0x93,0x95,0x99,0x99,0x01,0x01, 0x99,0x95,0x99,0x96,0x99,0x95,0x98,0x95,0x98,0x01,0x92,0x96,0x99,0x99,0x98,0x99, 0x01,0x01,0x95,0x99,0x98,0x99,0x98,0x95,0x98,0x98,0x98,0x99,0x98,0x98,0x01,0x98, 0x98,0x96,0x98,0x98,0x01,0x95,0x95,0x92,0x95,0x95,0x92,0x94,0x94,0x92,0x96,0x95, 0x93,0x91,0x92,0x94,0x91,0x8E,0x8E,0x94,0x92,0x94,0x98,0x95,0x94,0x94,0x92,0x93, 0x98,0x92,0x98,0x98,0x95,0x01,0x96,0x96,0x95,0x01,0x96,0x98,0x94,0x98,0x98,0x98, 0x98,0x96,0x01,0x01,0x95,0x95,0x96,0x94,0x98,0x96,0x96,0x98,0x94,0x98,0x96,0x94, 0x94,0x98,0x01,0x98,0x92,0x96,0x01,0x96,0x94,0x96,0x94,0x96,0x96,0x91,0x95,0x01, 0x96,0x93,0x98,0x98,0x98,0x98,0x94,0x98,0x98,0x99,0x95,0x95,0x99,0x98,0x99,0x98, 0x98,0x98,0x99,0x94,0x99,0x93,0x98,0x95,0x96,0x98,0x98,0x98,0x01,0x96,0x96,0x96, 0x94,0x01,0x95,0x97,0x95,0x95,0x95,0x98,0x95,0x95,0x94,0x01,0x96,0x95,0x96,0x96, 0x98,0x98,0x98,0x92,0x98,0x98,0x98,0x96,0x94,0x96,0x98,0x01,0x96,0x96,0x01,0x96, 0x98,0x94,0x96,0x95,0x98,0x96,0x95,0x96,0x96,0x96,0x98,0x94,0x01,0x93,0x8E,0x93, 0x98,0x98,0x95,0x98,0x01,0x97,0x95,0x96,0x98,0x98,0x95,0x98,0x94,0x96,0x95,0x93, 0x95,0x95,0x96,0x94,0x94,0x96,0x96,0x98,0x95,0x01,0x94,0x01,0x97,0x94,0x97,0x01, 0x96,0x98,0x98,0x93,0x95,0x8E,0x96,0x96,0x01,0x95,0x94,0x94,0x95,0x01,0x96,0x96, 0x98,0x92,0x96,0x92,0x94,0x93,0x94,0x95,0x96,0x94,0x1C,0x1D,0x1D,0x1D,0x1D,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x95,0x01,0x01,0x98,0x01,0x95,0x98,0x96,0x96,0x94,0x96, 0x01,0x01,0x95,0x98,0x94,0x98,0x01,0x98,0x98,0x01,0x96,0x96,0x96,0x98,0x92,0x01, 0x95,0x94,0x95,0x98,0x93,0x95,0x94,0x95,0x98,0x95,0x93,0x92,0x95,0x95,0x01,0x96, 0x96,0x94,0x94,0x95,0x96,0x94,0x94,0x98,0x95,0x95,0x8E,0x8E,0x95,0x92,0x8E,0x98, 0x98,0x96,0x98,0x96,0x98,0x98,0x93,0x98,0x01,0x95,0x96,0x98,0x93,0x94,0x94,0x95, 0x98,0x95,0x96,0x96,0x95,0x96,0x98,0x94,0x95,0x95,0x95,0x95,0x95,0x93,0x93,0x94, 0x93,0x94,0x92,0x98,0x98,0x96,0x96,0x98,0x95,0x94,0x96,0x94,0x98,0x95,0x94,0x95, 0x99,0x98,0x99,0x96,0x99,0x98,0x01,0x98,0x95,0x95,0x1D,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9A,0x96,0x98,0x01,0x96,0x95,0x96,0x96,0x91,0x96, 0x98,0x98,0x98,0x95,0x95,0x95,0x91,0x01,0x96,0x01,0x92,0x92,0x95,0x93,0x95,0x8E, 0x8E,0x8E,0x93,0x95,0x93,0x94,0x96,0x94,0x95,0x92,0x8E,0x94,0x96,0x98,0x93,0x95, 0x95,0x95,0x8E,0x8E,0x8E,0x95,0x92,0x93,0x8E,0x92,0x93,0x95,0x92,0x96,0x94,0x95, 0x94,0x98,0x01,0x98,0x96,0x98,0x96,0x96,0x96,0x94,0x96,0x98,0x95,0x92,0x95,0x95, 0x98,0x98,0x94,0x98,0x98,0x94,0x93,0x95,0x01,0x92,0x92,0x95,0x94,0x96,0x96,0x94, 0x95,0x92,0x98,0x98,0x01,0x95,0x95,0x98,0x92,0x95,0x96,0x95,0x01,0x96,0x96,0x96, 0x94,0x96,0x98,0x98,0x96,0x95,0x98,0x98,0x95,0x98,0x1D,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9B,0x96,0x98,0x94,0x93,0x93,0x95,0x01,0x96,0x95, 0x96,0x96,0x8E,0x95,0x92,0x8E,0x95,0x92,0x92,0x92,0x8E,0x92,0x8E,0x95,0x93,0x92, 0x95,0x8E,0x8E,0x95,0x94,0x94,0x92,0x92,0x94,0x95,0x8E,0x96,0x8E,0x92,0x92,0x01, 0x93,0x96,0x95,0x95,0x8E,0x8E,0x92,0x96,0x94,0x91,0x92,0x95,0x98,0x92,0x98,0x94, 0x98,0x96,0x98,0x94,0x96,0x95,0x95,0x94,0x95,0x96,0x98,0x01,0x98,0x95,0x98,0x01, 0x01,0x98,0x95,0x96,0x01,0x96,0x01,0x92,0x98,0x92,0x95,0x95,0x92,0x95,0x96,0x95, 0x95,0x98,0x98,0x96,0x92,0x95,0x95,0x95,0x98,0x95,0x01,0x98,0x96,0x98,0x94,0x01, 0x96,0x96,0x01,0x93,0x96,0x94,0x98,0x96,0x96,0x93,0x1D,0x00,0x00,0xA7,0x08,0x1F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA7, 0x08,0x1F,0x00,0x00,0xAF,0x9D,0x01,0x93,0x93,0x98,0x96,0x94,0x01,0x96,0x95,0x95, 0x8E,0x93,0x94,0x8E,0x93,0x95,0x92,0x92,0x96,0x93,0x95,0x98,0x96,0x98,0x94,0x95, 0x94,0x93,0x94,0x01,0x95,0x94,0x98,0x98,0x91,0x94,0x98,0x96,0x98,0x01,0x98,0x01, 0x98,0x95,0x95,0x96,0x01,0x98,0x94,0x95,0x94,0x95,0x96,0x98,0x01,0x9A,0x9A,0x98, 0x98,0x98,0x95,0x95,0x92,0x94,0x93,0x93,0x93,0x93,0x01,0x95,0x95,0x97,0x96,0x01, 0x98,0x96,0x95,0x93,0x92,0x01,0x95,0x96,0x96,0x95,0x94,0x98,0x94,0x98,0x98,0x95, 0x96,0x01,0x95,0x95,0x95,0x96,0x98,0x98,0x98,0x96,0x99,0x95,0x98,0x94,0x96,0x95, 0x95,0x92,0x98,0x95,0x96,0x93,0x95,0x96,0x98,0x94,0x1D,0x00,0x00,0x08,0x1D,0x1E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x10,0x10,0x19,0x1F,0x00,0x00,0x08,0x19, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x07,0x08,0x00,0x00,0x00, 0x00,0x12,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x1D,0x1E,0x00,0x00,0xAF,0x9B,0x9A,0x94,0x96,0x91,0x93,0x93,0x95,0x98,0x93,0x8E, 0x92,0x95,0x92,0x98,0x93,0x95,0x94,0x92,0x95,0x01,0x94,0x98,0x01,0x01,0x96,0x01, 0x95,0x94,0x96,0x01,0x94,0x92,0x01,0x95,0x94,0x95,0x95,0x99,0x99,0x98,0x98,0x98, 0x99,0x96,0x98,0x95,0x96,0x95,0x96,0x95,0x01,0x98,0x98,0x9A,0x01,0x9A,0x98,0x98, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x1F,0x1E,0xE9, 0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1E,0x11,0x19,0x19,0x1A,0x1A,0x1A,0x19,0x19,0x1A,0x13, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x18,0x17,0x11,0x08,0x00,0x00, 0x12,0x1A,0xEB,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F, 0x1E,0xE9,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1D,0x14,0x18,0x1C,0x1C,0x1C,0x00,0x00,0x14,0x1E,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x11,0x18,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x13,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x19,0x1C,0x08,0x17,0x11,0x12,0x12, 0xEB,0x08,0x1C,0x1C,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1D,0x14,0x15,0x1B,0x1C,0x1C,0x1B,0x1B,0x1C,0x1C,0x1C,0x1E,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x19,0x19,0x19,0x19,0x1D,0x1D,0x1A,0x17,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x18,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C, 0x1C,0x1C,0x1C,0x1C,0x1C,0x08,0x1A,0x17,0x07,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00, 0x1D,0x13,0x15,0x1A,0x1A,0x1A,0x1A,0x19,0x1A,0x1A,0x1A,0x1A,0x1B,0x1E,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x18,0x1A,0x1A,0x1A,0x1B,0x1B,0x1B,0x1B,0x1B, 0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1A,0x19,0x13,0x13,0x1E,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1E,0x1D,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x12, 0x15,0x1A,0x19,0x19,0x19,0x19,0x1A,0x1B,0x16,0x18,0x19,0x19,0x18,0x1E,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x17,0x17,0x17,0x17,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x12,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x1A,0x1A,0x1A, 0x1A,0x1A,0x19,0x19,0x1A,0x1A,0x1A,0x1A,0x19,0x18,0x16,0x13,0x1E,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x1D,0x1E,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E, 0x1D,0xEC,0x1D,0x1E,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x12, 0x19,0x18,0x18,0x18,0x18,0x18,0x1C,0x1E,0x1C,0x16,0x19,0x18,0x1E,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x16,0x16,0x16,0x16,0x1F,0x00,0x1F,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x12,0x16,0x17,0x17,0x17,0x17,0x08,0x13,0x17,0x17,0x18, 0x18,0x18,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x14,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0F,0x10,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1E,0x1D,0xEC,0x1D,0x1E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1D,0xEC,0x1D, 0x1E,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0xEE,0xEC,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x12, 0x17,0x17,0x17,0x17,0x17,0x17,0x1F,0x1F,0x1F,0x15,0x18,0x1E,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x16,0x16,0x16,0x16,0x1F,0x1F,0x07,0x13,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x07,0x16,0x16,0x16,0x16,0x08,0x1F,0x16,0x16,0x16,0x16, 0x16,0x16,0x1E,0x08,0x18,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x19,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x12, 0x12,0x12,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xEC,0xEE,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1E,0x1D, 0xEC,0x1D,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1D,0xEC,0x1D,0x1E,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0xEE,0xEC,0x1E,0x1F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x12, 0x16,0x16,0x16,0x16,0x16,0x16,0x1C,0x00,0x00,0x1E,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x13,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x14,0x07,0x07,0x07,0x08,0x1F,0x00,0x16,0x07,0x07,0x07, 0x07,0x07,0x1E,0x00,0x08,0x18,0x07,0x07,0x07,0x07,0x07,0x07,0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x10,0x17,0x17,0x1F,0x00,0x00,0x00,0x00,0x00,0x07,0x16, 0x16,0x19,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x1E,0xEC,0xEE,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1E,0x1D,0xEC,0x1D,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x1D,0xEC,0x1D,0x1E,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x00,0xEE,0xEC,0x1E,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x13, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0F,0x0F,0x0F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0F, 0x0F,0x0F,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x12,0x11,0x0F,0x17,0x08,0x00, 0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x0F,0x1B,0x1F,0x00,0x1F,0x10,0x0F,0x0F,0x0F, 0xEB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x11,0x0F,0x07, 0x1F,0x00,0x10,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x1E,0x00,0x00, 0x00,0x00,0x00,0x00,0x12,0x14,0x14,0x14,0x1A,0x1F,0x00,0x00,0x16,0x14,0x14,0x14, 0x14,0x14,0x1E,0x00,0x00,0x08,0x18,0x14,0x14,0x14,0x14,0x14,0x1A,0x00,0x00,0x00, 0x00,0x10,0x10,0x17,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x0F,0x11,0x1E,0x1F, 0x00,0x0F,0x0F,0x00,0x10,0x14,0x14,0x14,0x0F,0x0F,0x11,0x13,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0F,0x18,0x1D,0x00,0x00,0x00,0x19,0x07,0x08,0x00,0x00, 0x00,0x00,0x0F,0x11,0x13,0x1A,0x00,0x00,0x1F,0x0F,0x0F,0x11,0x1F,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1E,0xEC,0xEE,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1E,0x1D,0xEC,0x1D,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1E,0x1D,0xEC,0x1D,0x1E,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0xED,0xED,0xED,0xED, 0x1E,0xE9,0x1D,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0x1E,0x00,0x00,0x00,0x00,0x14, 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x16,0x16,0x16,0x10,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x15,0x16, 0x16,0x15,0x0F,0x00,0x00,0x00,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x10, 0x1E,0x00,0x00,0x10,0x18,0x18,0x18,0x18,0x17,0x1F,0x1F,0x11,0x18,0x18,0x18,0x18, 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x13,0x19,0x19,0x19,0x19,0x19,0x17, 0x0F,0x1F,0x08,0x08,0x08,0x10,0x13,0x13,0x13,0x13,0x17,0x17,0x1E,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x12,0x13,0x13,0x08,0x00,0x00,0x00,0x16,0x13,0x13,0x13, 0x13,0x13,0x1E,0x00,0x00,0x00,0x08,0x13,0x13,0x13,0x13,0x13,0x08,0x00,0x00,0x00, 0x10,0x18,0x18,0x18,0x18,0x1E,0x00,0x00,0x00,0x1F,0x0F,0x11,0x07,0x07,0x07,0x12, 0x0F,0x07,0x07,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x00,0x0F,0x11,0x11, 0x11,0x11,0x08,0x00,0x0F,0x14,0x14,0x19,0x1D,0x00,0x18,0x07,0x12,0x0F,0x07,0x00, 0x00,0x0F,0x07,0x07,0x07,0x07,0x19,0x1F,0x07,0x07,0x07,0x07,0x07,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0x1D,0xE9,0x1E,0xED, 0xED,0xED,0xED,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1E,0x1D,0xEC,0x1D,0x1E,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x1E,0x1D,0xEC,0x1D,0x1E,0x1F,0x1F,0x1F,0x1F,0x1E,0x1E,0x1E,0x1E,0xED,0xED,0xEE, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0xED,0xE9,0x1C,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1E,0x00,0x00,0x00,0x00,0xEA, 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1B,0x00,0x00,0x00,0x00,0x00,0x00, 0x0F,0x15,0x15,0x14,0x15,0x13,0x10,0x1C,0x00,0x00,0x00,0x00,0x10,0x14,0x14,0x13, 0x13,0x14,0x14,0x0F,0x00,0x00,0x1C,0x18,0x19,0x19,0x19,0x17,0x17,0x17,0x17,0x18, 0x19,0x00,0x10,0x10,0x0F,0x16,0x16,0x16,0x16,0x11,0x11,0x17,0x16,0x16,0x16,0x16, 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x13,0x18,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x14,0x1F,0x00,0x00,0x10,0x12,0x12,0x12,0x12,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x07,0x19,0x00,0x00,0x00,0x16,0x12,0x12,0x12, 0x12,0x12,0x1E,0x00,0x00,0x00,0x1C,0x12,0x12,0x12,0x12,0x12,0x1C,0x00,0x00,0x10, 0x17,0x16,0x15,0x15,0x16,0x17,0x1E,0x00,0x00,0x0F,0x07,0x14,0x14,0x14,0x14,0x14, 0x14,0x14,0x10,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x1F,0x13,0x13,0x14,0x14, 0x14,0x14,0x12,0x0F,0x14,0x14,0x14,0x14,0x08,0x18,0x14,0x14,0x14,0x14,0x14,0x1A, 0x0F,0x14,0x14,0x14,0x14,0x14,0x0F,0x0F,0x07,0x14,0x14,0x14,0x30,0x0F,0x1F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1C,0xE9,0xED,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0xEE, 0xED,0xED,0x1E,0x1E,0x1E,0x1E,0x1F,0x1F,0x1F,0x1F,0x1E,0x1D,0xEC,0x1D,0x1E,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1E,0x1D, 0xEC,0x1E,0x1F,0x1F,0x1F,0x1F,0x1F,0x1E,0x1E,0x1E,0xED,0xED,0xEE,0xEE,0xEE,0xEE, 0xEE,0xEE,0xEE,0xEE,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED, 0x1E,0xE9,0x1D,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0x1E,0x00,0x00,0x00,0x00,0x00, 0x1A,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x1A,0x00,0x00,0x00,0x00,0x0F, 0x12,0x12,0x12,0x13,0x13,0x12,0x13,0x13,0x1C,0x00,0x00,0x31,0x30,0x12,0x13,0x1D, 0x13,0x13,0x12,0x12,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x16,0x14,0x14,0x14, 0xEB,0x00,0x00,0x00,0x0F,0x13,0x13,0x13,0x13,0x14,0x14,0x15,0x14,0x14,0x15,0x13, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x13,0x14,0x14,0x13,0x1F,0x0F,0x14,0x14, 0x14,0x13,0x1F,0x00,0x00,0x10,0x10,0x11,0x11,0x11,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x19,0x00,0x00,0x00,0x16,0x11,0x10,0x10, 0x10,0x10,0x1E,0x00,0x00,0x00,0x1E,0x11,0x10,0x10,0x10,0x10,0x1E,0x00,0x10,0x16, 0x15,0x13,0x13,0x13,0x13,0x15,0x16,0x1E,0x00,0x0F,0x13,0x13,0x13,0x13,0x14,0x13, 0x13,0x1E,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x1F,0x1F,0x1F,0x00,0x0F,0x13,0x13, 0x13,0x13,0x1E,0x0F,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x1A,0x00, 0x00,0x0F,0x13,0x13,0x30,0x30,0x1F,0x00,0x0F,0x30,0x30,0x30,0x30,0x1F,0x1F,0x00, 0x00,0x00,0x00,0x00,0xAF,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0x1D,0xE9,0x1E,0xED, 0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xED,0xEE,0xEE,0xEE,0xEE,0xEE, 0xEE,0xEE,0xEE,0xED,0xED,0x1E,0x1E,0x1E,0x1F,0x1F,0x1F,0x1F,0x1F,0x1E,0xEC,0x1D, 0x1E,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F, 0x1D,0x1C,0x1C,0xEC,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xED,0x1E,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0xE9,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x1A,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x1A,0x00,0x00,0x00,0x0F, 0x32,0x32,0x32,0x18,0x1C,0x12,0x32,0x32,0x32,0x1C,0x00,0x31,0x31,0x31,0x31,0x1D, 0x1C,0x12,0x31,0x31,0x12,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x13,0x13,0x13,0x13, 0x08,0x00,0x00,0x00,0x0F,0x11,0x11,0x11,0x11,0x14,0x00,0x00,0xEB,0x17,0x15,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x10,0x10,0x12,0x1F,0x0F,0x12,0x10, 0x10,0x12,0x1F,0x00,0x00,0x10,0x11,0x11,0x11,0x11,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x16,0x10,0x10,0x10, 0x10,0x10,0x1E,0x00,0x00,0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x1E,0x00,0x10,0x12, 0x12,0x12,0x1E,0x18,0x12,0x12,0x12,0x12,0x00,0x0F,0x12,0x12,0x12,0x12,0x1E,0x1E, 0x1E,0x2F,0x2F,0x2F,0x10,0x30,0x30,0x30,0x30,0x1F,0x00,0x00,0x00,0x0F,0x30,0x30, 0x30,0x30,0x1E,0x00,0x0F,0x12,0x31,0x31,0x31,0x12,0x31,0x31,0x31,0x12,0x1F,0x00, 0x00,0x0F,0x31,0x31,0x31,0x31,0x1F,0x00,0x0F,0x31,0x31,0x31,0x31,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0xE9,0x1E,0x1E, 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E, 0x1E,0x1E,0xED,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEC,0x1C,0x1C,0x1D,0x1F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1F,0x1D,0x1C,0x1C,0xEC,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0xED,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0xE9,0xE9,0xE9,0xE9, 0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1A,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x1A,0x00,0x00,0x0F, 0x33,0x33,0x33,0x18,0x00,0x1C,0x33,0x33,0x33,0x18,0x00,0x31,0x32,0x32,0x32,0x1D, 0x00,0x1C,0x32,0x32,0x32,0x00,0x00,0x0F,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, 0x08,0x00,0x00,0x00,0x0F,0x31,0x31,0x31,0x31,0x16,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x11,0x0F,0x0F,0x11,0x1F,0x0F,0x0F,0x0F, 0x0F,0x11,0x1F,0x00,0x00,0x10,0x31,0x30,0x30,0x31,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x30,0x30,0x30, 0x30,0x30,0x1E,0x00,0x00,0x00,0x1F,0x30,0x30,0x30,0x30,0x30,0x1E,0x00,0x10,0x31, 0x31,0x31,0x1E,0x00,0x0F,0x31,0x31,0x31,0x00,0x0F,0x31,0x31,0x31,0x31,0x1E,0x00, 0x00,0x00,0x00,0x2F,0x10,0x31,0x31,0x31,0x31,0x1F,0x00,0x00,0x00,0x0F,0x31,0x31, 0x31,0x31,0x1E,0x00,0x0F,0x32,0x32,0x32,0x08,0x08,0x32,0x32,0x32,0x32,0x1F,0x00, 0x00,0x0F,0x32,0x32,0x32,0x32,0x1F,0x00,0x0F,0x32,0x32,0x32,0x32,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9,0xE9, 0xE9,0xE9,0xE9,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0xED,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0xEC,0x1C,0x1C,0x1D,0x1F,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1F,0x1D,0x1C,0x1C,0xEC,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x00,0xEE,0x1C,0xEC,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1A,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x11,0x00,0x00,0x0F, 0x34,0x34,0x34,0x18,0x00,0x00,0x32,0x34,0x34,0x18,0x00,0x31,0x33,0x33,0x33,0x1D, 0x00,0x00,0x17,0x33,0x1A,0x00,0x0F,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32, 0xEC,0x00,0x00,0x00,0x0F,0x32,0x32,0x32,0x32,0x19,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x32,0x31,0x31,0x32,0x1F,0x0F,0x31,0x31, 0x31,0x31,0x1F,0x00,0x00,0x10,0x31,0x31,0x31,0x31,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x31,0x31,0x31, 0x31,0x31,0x1E,0x00,0x00,0x00,0x1E,0x31,0x31,0x31,0x31,0x31,0x1E,0x00,0x10,0x32, 0x32,0x32,0x1E,0x00,0x0F,0x32,0x32,0x1E,0x00,0x0F,0x32,0x32,0x32,0x32,0x32,0x32, 0x32,0x1E,0x00,0x2F,0x10,0x32,0x32,0x32,0x32,0x1F,0x00,0x00,0x00,0x0F,0x33,0x33, 0x33,0x33,0x1E,0x00,0x0F,0x33,0x33,0x33,0x08,0x00,0x32,0x33,0x33,0x33,0x1F,0x00, 0x00,0x0F,0x33,0x33,0x33,0x33,0x1F,0x00,0x0F,0x33,0x33,0x33,0x33,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1D,0x1D,0x1D,0xEC,0x1C,0xEE,0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0xEC,0x1C,0x1C,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D,0x1C,0x1C,0xEC,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x00,0x00,0x00,0xEE,0x1C,0xEC,0x1D,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1D,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x35, 0x00,0x00,0x2F,0x04,0x00,0x00,0x34,0x00,0x2F,0x2A,0x00,0x25,0x2E,0x2F,0x2E,0x1D, 0x00,0x17,0x2E,0x2E,0x00,0x00,0x34,0x00,0x00,0x00,0x2F,0x2F,0x2F,0x00,0x00,0x2F, 0x2E,0x00,0x00,0x00,0x33,0x2F,0x00,0x00,0x2F,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x2B,0x2B,0x2B,0x2B,0x2E,0x33,0x2B,0x2B, 0x2B,0x2B,0x2E,0x00,0x00,0x33,0x2B,0x2B,0x2B,0x2B,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x29,0x29,0x29, 0x29,0x29,0x1E,0x00,0x00,0x00,0x1C,0x2B,0x2C,0x2D,0x2E,0x2E,0x2F,0x00,0x33,0x2F, 0x2F,0x2F,0x1E,0x00,0x0F,0x2F,0x2F,0x00,0x00,0x33,0x27,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x35,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x32,0x2F,0x2F, 0x00,0x00,0x2F,0x00,0x32,0x00,0x00,0x00,0x2F,0x00,0x32,0x00,0x00,0x00,0x2F,0x00, 0x00,0x32,0x00,0x00,0x00,0x00,0xED,0x00,0x32,0x00,0x00,0x00,0x00,0x2F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1D,0xEC,0x1C,0xEE,0x00,0x00,0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0xEC,0x1C,0x1C,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D,0x1C,0x1C,0xEC, 0x1D,0x1D,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0xEE,0x1C,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1D,0x2A,0x2F,0x2D,0x2D,0x2D,0x2F,0x34,0x00,0x00,0x34, 0x2B,0x2B,0x2B,0x04,0x00,0x00,0x34,0x2B,0x2B,0x2A,0x00,0x25,0x2B,0x2B,0x2B,0x2F, 0x17,0x2A,0x2E,0x00,0x00,0x00,0x34,0x2B,0x2B,0x2B,0x2F,0x00,0x23,0x2B,0x2B,0x2B, 0x2E,0x00,0x00,0x00,0x33,0x27,0x27,0x27,0x27,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x29,0x29,0x29,0x29,0x2E,0x33,0x29,0x29, 0x29,0x29,0x2E,0x00,0x00,0x33,0x28,0x28,0x28,0x28,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x08,0x1E,0x33,0x27,0x28,0x28, 0x28,0x27,0x1E,0x00,0x00,0x1C,0x2B,0x2B,0x2C,0x2C,0x2C,0x2B,0x2F,0x00,0x33,0x2B, 0x2E,0x2E,0x2B,0x0F,0x2A,0x2F,0x00,0x00,0x00,0x00,0x21,0x27,0x2D,0x2D,0x2D,0x2D, 0x2D,0x2C,0x2F,0x2F,0x35,0x2D,0x2F,0x2F,0x2D,0x2F,0x00,0x00,0x00,0x32,0x2D,0x2C, 0x2C,0x2D,0x2F,0x00,0x32,0x2D,0x2D,0x2D,0x2F,0x00,0x32,0x2D,0x2D,0x2F,0x2F,0x00, 0x00,0x32,0x2E,0x2E,0x2E,0x2E,0x1E,0x1E,0x34,0x2E,0x2E,0x2E,0x2E,0x2F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1C,0xEE,0x00,0x00,0x00,0x00,0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0xEC, 0x1C,0x1C,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D, 0x1C,0x1C,0xEC,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1D,0x33,0x31,0x32,0x34,0x28,0x2A,0x2A,0x2A,0x2A,0x34,0x00,0x00,0x34, 0x04,0x04,0x04,0x04,0x2F,0x34,0x22,0x26,0x27,0x27,0x00,0x34,0x25,0x25,0x25,0x25, 0x28,0x2E,0x00,0x00,0x00,0x00,0x34,0x29,0x29,0x29,0x2F,0x00,0x34,0x29,0x29,0x29, 0x2E,0x00,0x00,0x00,0x33,0x22,0x22,0x22,0x22,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x2E,0x33,0x24,0x24, 0x24,0x24,0x2E,0x00,0x00,0x33,0x25,0x25,0x25,0x25,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x22,0x08,0x33,0x24,0x26,0x26, 0x26,0x24,0x1E,0x00,0x1C,0x27,0x27,0x29,0x29,0x29,0x29,0x27,0x2F,0x00,0x33,0x28, 0x28,0x28,0x28,0x28,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x35,0x28,0x28, 0x28,0x28,0x2F,0x2F,0x35,0x28,0x28,0x28,0x28,0x2F,0x00,0x00,0x00,0x32,0x28,0x28, 0x28,0x28,0x2F,0x00,0x32,0x28,0x28,0x28,0x2F,0x00,0x32,0x28,0x28,0x28,0x2F,0x00, 0x00,0x32,0x2A,0x2B,0x2B,0x2A,0x23,0x34,0x36,0x2A,0x2B,0x2B,0x2A,0x2F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x1D,0xEC,0x1C,0x1C,0x1D, 0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1F,0x1D,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x31,0x33,0x36,0x37,0x37,0x25,0x25,0x27,0x27,0x27,0x27,0x35,0x00,0x00,0x34, 0x24,0x24,0x24,0x36,0x34,0x36,0x24,0x24,0x24,0x04,0x00,0x34,0x25,0x23,0x21,0x37, 0x2E,0x00,0x00,0x00,0x00,0x00,0x34,0x25,0x25,0x25,0x2F,0x00,0x32,0x25,0x25,0x25, 0x2E,0x00,0x00,0x00,0x32,0x36,0x36,0x36,0x36,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x37,0x37,0x37,0x37,0x2E,0x33,0x37,0x37, 0x37,0x37,0x2E,0x00,0x00,0x33,0x22,0x22,0x22,0x22,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x36,0x08,0x33,0x37,0x23,0x23, 0x21,0x36,0x1E,0x1C,0x36,0x21,0x23,0x23,0x23,0x23,0x21,0x36,0x2F,0x00,0x33,0x25, 0x25,0x25,0x25,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x35,0x25,0x25, 0x25,0x25,0x2F,0x2F,0x35,0x25,0x25,0x25,0x25,0x2F,0x00,0x00,0x00,0x32,0x25,0x25, 0x25,0x25,0x2F,0x00,0x32,0x25,0x25,0x25,0x2F,0x00,0x32,0x25,0x25,0x25,0x2F,0x00, 0x00,0x32,0x25,0x25,0x27,0x27,0x25,0x36,0x23,0x25,0x27,0x27,0x25,0x2F,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x1D,0x1F,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x33,0x34,0x35,0x36,0x36,0x21,0x21,0x21,0x23,0x23,0x23,0x21,0x37,0x00,0x00,0x34, 0x21,0x21,0x21,0x36,0x36,0x22,0x22,0x22,0x24,0x2E,0x00,0x34,0x23,0x21,0x21,0x21, 0x2E,0x2E,0x2E,0x2E,0x2E,0x00,0x34,0x23,0x23,0x23,0x2F,0x1F,0x32,0x23,0x23,0x23, 0x2E,0x00,0x00,0x2E,0x34,0x35,0x35,0x35,0x35,0x37,0x2C,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x36,0x36,0x36,0x36,0x2E,0x24,0x36,0x36, 0x36,0x36,0x2E,0x00,0x00,0x33,0x35,0x36,0x36,0x35,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x35,0x35,0x35,0x37,0x21,0x21, 0x36,0x35,0x1C,0x35,0x35,0x21,0x21,0x21,0x37,0x37,0x34,0x2F,0x00,0x00,0x33,0x22, 0x22,0x22,0x22,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x33,0x36,0x23,0x23,0x23,0x23, 0x23,0x23,0x2F,0x2F,0x35,0x23,0x23,0x23,0x23,0x2F,0x2F,0x00,0x00,0x32,0x23,0x23, 0x23,0x23,0x2F,0x00,0x32,0x23,0x23,0x23,0x2F,0x00,0x32,0x23,0x23,0x23,0x2F,0x00, 0x00,0x32,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x25,0x24,0x24,0x28,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, 0x31,0x34,0x35,0x35,0x35,0x35,0x36,0x36,0x21,0x21,0x24,0x28,0x2D,0x00,0x00,0x33, 0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x28,0x2D,0x00,0x00,0x34,0x35,0x36,0x36,0x36, 0x35,0x35,0x34,0x34,0x2E,0x00,0x34,0x36,0x36,0x36,0x33,0x32,0x33,0x36,0x36,0x36, 0x2E,0x2E,0x2E,0x2E,0x33,0x35,0x35,0x35,0x35,0x34,0x2E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x2E,0x00,0x00,0x00,0x33,0x34,0x35,0x35,0x34,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x34,0x34,0x35,0x35,0x37,0x37, 0x36,0x34,0x34,0x35,0x37,0x37,0x37,0x37,0x35,0x34,0x2F,0x00,0x00,0x00,0x33,0x34, 0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x2F,0x00,0x33,0x35,0x35,0x35,0x35,0x35,0x35, 0x35,0x28,0x2F,0x2F,0x35,0x35,0x35,0x35,0x35,0x35,0x2F,0x00,0x32,0x35,0x35,0x35, 0x35,0x35,0x35,0x2F,0x32,0x35,0x35,0x35,0x2F,0x00,0x32,0x35,0x35,0x35,0x2F,0x2F, 0x00,0x2A,0x36,0x36,0x36,0x36,0x36,0x35,0x2F,0x35,0x36,0x36,0x36,0x35,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, 0x31,0x34,0x34,0x34,0x34,0x34,0x34,0x0C,0x36,0x27,0x2B,0x2F,0x00,0x00,0x00,0x33, 0x35,0x35,0x35,0x34,0x2E,0x2E,0x2E,0x2E,0x00,0x00,0x00,0x2B,0x22,0x34,0x33,0x33, 0x33,0x33,0x33,0x34,0x2E,0x00,0x21,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35, 0x35,0x35,0x2E,0x00,0x2E,0x33,0x34,0x34,0x34,0x28,0x2E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x0C, 0x2E,0x00,0x33,0x33,0x33,0x33,0x34,0x35,0x35,0x34,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x34,0x33,0x34,0x34,0x34,0x35, 0x35,0x35,0x35,0x35,0x35,0x34,0x33,0x33,0x34,0x2F,0x00,0x00,0x00,0x00,0x2F,0x33, 0x32,0x31,0x31,0x31,0x32,0x33,0x34,0x2F,0x00,0x2F,0x28,0x34,0x33,0x33,0x33,0x34, 0x28,0x2F,0x00,0x2F,0x28,0x33,0x33,0x33,0x33,0x28,0x2F,0x00,0x28,0x33,0x33,0x33, 0x33,0x33,0x28,0x00,0x32,0x33,0x33,0x33,0x2F,0x2F,0x32,0x33,0x33,0x33,0x2F,0x00, 0x00,0x00,0x2A,0x34,0x34,0x34,0x34,0x2F,0x00,0x31,0x34,0x34,0x34,0x33,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x99,0x99,0x9A,0x98,0x9B,0x9A,0x99,0x99,0x98,0x98,0x9B,0x97,0x98,0x9B,0x98, 0x9A,0x9B,0x9A,0x99,0x98,0x98,0x98,0x9A,0x97,0x99,0x98,0x9B,0x98,0x9A,0x9B,0x9B, 0x9A,0x9B,0x99,0x9A,0x9B,0x9B,0x9B,0x98,0x9B,0x99,0x98,0x9A,0x9A,0x9B,0x99,0x98, 0x9A,0x99,0x99,0x99,0x9A,0x9A,0x9A,0x9B,0x9B,0x9A,0x1F,0x00,0x00,0x00,0x00,0x00, 0x31,0x2F,0x2F,0x2F,0x28,0x33,0x34,0x04,0x2A,0x2E,0x00,0x00,0x00,0x00,0x2F,0x33, 0x34,0x34,0x34,0x33,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x2B,0x2B,0x2B, 0x2B,0x2B,0x2B,0x2B,0x2E,0x00,0x00,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E, 0x2E,0x2E,0x00,0x00,0x00,0x2E,0x2E,0x2E,0x2E,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x27,0x29,0x2E,0x2E,0x2E,0x2E,0x2E, 0x00,0x31,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x2F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x24,0x34,0x32,0x32,0x32,0x32, 0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x28,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x2F, 0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x2F,0x2F,0x2F, 0x2F,0x2F,0x00,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x00, 0x00,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x31,0x33,0x33,0x33,0x32,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9B,0x9A,0x9B,0x98,0x9A,0x9A,0x9B,0x9B,0x9A,0x9B,0x9A, 0x98,0x9A,0x9B,0x9B,0x9A,0x9B,0x9B,0x9A,0x9B,0x9B,0x98,0x9A,0x9B,0x99,0x98,0x98, 0x99,0x9A,0x9B,0x99,0x9A,0x01,0x01,0x01,0x9A,0x01,0x9A,0x98,0x99,0x98,0x98,0x98, 0x9B,0x9B,0x9A,0x9B,0x9A,0x9B,0x9A,0x9A,0x9A,0x9B,0x9B,0x9B,0x9B,0x99,0x9A,0x9A, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, 0x2E,0x2F,0x2F,0x2F,0x2C,0x27,0x2D,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x35,0x32, 0x33,0x33,0x33,0x32,0x35,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x31,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x2F,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x33,0x33,0x32,0x32,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x98,0x97,0x99,0x9A,0x97,0x9B,0x9B,0x9A,0x99,0x98,0x9B,0x98,0x9A,0x99,0x98,0x99, 0x99,0x99,0x9B,0x9A,0x98,0x9B,0x9A,0x9B,0x98,0x98,0x9A,0x9B,0x9A,0x9B,0x9B,0x98, 0x98,0x9B,0x9A,0x98,0x9A,0x9A,0x9A,0x98,0x98,0x9B,0x98,0x9A,0x9A,0x98,0x98,0x99, 0x9A,0x9A,0x98,0x98,0x98,0x9A,0x98,0x9B,0x99,0x9B,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2E,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x35,0x31, 0x32,0x32,0x32,0x32,0x35,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31, 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x32,0x33,0x33,0x32,0x34,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9F,0x9B,0x9B,0x9A,0x9B,0x9B,0x9A,0x9B,0x9A,0x9A,0x9A, 0x01,0x98,0x9A,0x01,0x01,0x98,0x01,0x9A,0x98,0x99,0x99,0x98,0x9B,0x9A,0x9A,0x9B, 0x9A,0x9A,0x98,0x9A,0x98,0x9A,0x9A,0x9B,0x9B,0x9B,0x9A,0x9B,0x9A,0x9A,0x9A,0x98, 0x9A,0x9A,0x9B,0x9B,0x9A,0x9B,0x9A,0x9B,0x9B,0x9A,0x9A,0x9B,0x9B,0x99,0x9A,0x99, 0x93,0x98,0x93,0x94,0x92,0x93,0x96,0x91,0x94,0x92,0x92,0x95,0x94,0x93,0x92,0x95, 0x95,0x94,0x96,0x92,0x01,0x94,0x95,0x98,0x95,0x95,0x98,0x98,0x98,0x94,0x01,0x92, 0x96,0x94,0x94,0x98,0x96,0x95,0x96,0x96,0x98,0x98,0x98,0x94,0x98,0x95,0x95,0x98, 0x95,0x94,0x96,0x94,0x92,0x94,0x95,0x93,0x95,0x93,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x35, 0x31,0x31,0x31,0x35,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F, 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x34,0x28,0x2F,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9A,0x96,0x98,0x98,0x94,0x95,0x98,0x94,0x93,0x94, 0x01,0x98,0x95,0x95,0x95,0x94,0x95,0x92,0x95,0x8E,0x8E,0x92,0x01,0x98,0x98,0x95, 0x96,0x98,0x93,0x95,0x96,0x95,0x94,0x93,0x01,0x01,0x98,0x98,0x98,0x94,0x95,0x01, 0x93,0x01,0x98,0x96,0x94,0x98,0x96,0x98,0x95,0x95,0x96,0x94,0x94,0x95,0x95,0x01, 0x93,0x94,0x93,0x94,0x93,0x92,0x95,0x93,0x01,0x94,0x95,0x94,0x95,0x93,0x01,0x95, 0x01,0x94,0x93,0x92,0x95,0x01,0x96,0x96,0x98,0x98,0x96,0x94,0x94,0x01,0x92,0x95, 0x94,0x95,0x01,0x95,0x95,0x95,0x92,0x94,0x96,0x93,0x92,0x01,0x95,0x96,0x95,0x94, 0x94,0x96,0x95,0x95,0x96,0x98,0x01,0x95,0x96,0x95,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F, 0x2F,0x2F,0x2E,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x34,0x26,0x2F,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9B,0x96,0x92,0x98,0x95,0x92,0x92,0x95,0x95,0x95, 0x98,0x95,0x98,0x94,0x96,0x98,0x94,0x01,0x95,0x95,0x96,0x96,0x01,0x93,0x98,0x96, 0x01,0x92,0x01,0x96,0x94,0x98,0x96,0x93,0x95,0x95,0x98,0x96,0x01,0x96,0x96,0x01, 0x96,0x93,0x96,0x98,0x98,0x96,0x96,0x95,0x96,0x97,0x92,0x98,0x94,0x98,0x98,0x94, 0x96,0x98,0x94,0x93,0x95,0x92,0x92,0x91,0x92,0x94,0x92,0x93,0x93,0x93,0x94,0x92, 0x95,0x98,0x96,0x96,0x98,0x96,0x96,0x96,0x96,0x98,0x98,0x95,0x95,0x93,0x98,0x96, 0x95,0x95,0x95,0x01,0x95,0x92,0x95,0x01,0x96,0x92,0x95,0x92,0x92,0x95,0x93,0x93, 0x01,0x93,0x96,0x95,0x94,0x95,0x95,0x95,0x92,0x95,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x34,0x2F,0x2F,0x34,0x31,0x30,0x34,0x26,0x2F,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x01,0x93,0x95,0x92,0x92,0x95,0x8E,0x92,0x01,0x95, 0x96,0x94,0x95,0x98,0x98,0x95,0x95,0x95,0x95,0x98,0x95,0x98,0x94,0x96,0x98,0x95, 0x95,0x96,0x95,0x98,0x95,0x98,0x96,0x95,0x98,0x95,0x95,0x94,0x01,0x96,0x01,0x94, 0x96,0x98,0x93,0x01,0x96,0x98,0x01,0x98,0x96,0x99,0x98,0x98,0x98,0x99,0x96,0x99, 0x92,0x96,0x92,0x92,0x01,0x94,0x95,0x91,0x93,0x92,0x94,0x94,0x01,0x96,0x95,0x95, 0x93,0x96,0x96,0x98,0x98,0x95,0x95,0x01,0x95,0x98,0x01,0x95,0x95,0x96,0x95,0x01, 0x94,0x94,0x93,0x95,0x95,0x8E,0x8E,0x96,0x93,0x01,0x94,0x92,0x93,0x95,0x8E,0x94, 0x92,0x92,0x92,0x91,0x93,0x93,0x01,0x93,0x98,0x95,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x2F,0x2F,0x00,0x00,0x2F,0x2F,0x2F,0x2F,0x2F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9B,0x9A,0x94,0x95,0x92,0x01,0x96,0x95,0x01,0x95,0x01, 0x96,0x96,0x94,0x01,0x94,0x96,0x94,0x96,0x94,0x95,0x95,0x95,0x96,0x96,0x98,0x98, 0x96,0x01,0x96,0x96,0x98,0x96,0x95,0x96,0x93,0x95,0x95,0x98,0x96,0x95,0x95,0x98, 0x98,0x01,0x97,0x01,0x95,0x96,0x98,0x99,0x95,0x9A,0x98,0x9A,0x98,0x98,0x9A,0x01, 0x98,0x94,0x93,0x93,0x95,0x96,0x94,0x93,0x94,0x93,0x94,0x01,0x95,0x95,0x94,0x93, 0x01,0x94,0x98,0x01,0x01,0x96,0x96,0x98,0x92,0x98,0x98,0x95,0x92,0x93,0x8E,0x95, 0x92,0x94,0x92,0x92,0x92,0x8E,0x94,0x01,0x93,0x96,0x94,0x95,0x94,0x8E,0x8E,0x92, 0x92,0x93,0x8E,0x94,0x92,0x92,0x92,0x8E,0x92,0x8E,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D, 0x1D,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x1F,0x00,0x00,0x1F,0x1D,0x1D,0x00,0x1F,0x1D,0x1F,0x00,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1F,0x1D,0x1F,0x00,0x1D,0x1D,0x1F,0x00,0x1D,0x1D, 0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x98,0x96,0x96,0x96,0x94,0x95,0x95,0x96,0x98,0x94, 0x01,0x94,0x95,0x95,0x95,0x98,0x01,0x95,0x96,0x98,0x95,0x94,0x92,0x01,0x01,0x98, 0x01,0x95,0x94,0x98,0x97,0x98,0x95,0x98,0x01,0x98,0x95,0x94,0x98,0x01,0x98,0x98, 0x95,0x93,0x98,0x95,0x98,0x96,0x98,0x9A,0x9A,0x98,0x98,0x99,0x99,0x96,0x96,0x96, 0x95,0x98,0x93,0x94,0x94,0x93,0x92,0x92,0x92,0x93,0x92,0x01,0x98,0x94,0x96,0x98, 0x96,0x93,0x96,0x94,0x95,0x95,0x95,0x96,0x98,0x96,0x92,0x8E,0x94,0x92,0x92,0x8E, 0x92,0x92,0x92,0x94,0x98,0x92,0x8E,0x92,0x94,0x92,0x95,0x93,0x01,0x94,0x92,0x8E, 0x92,0x92,0x8E,0x92,0x95,0x95,0x92,0x8E,0x94,0x92,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D,0x00, 0x00,0x00,0x1D,0x1F,0x00,0x1F,0x1D,0x1D,0x00,0x1F,0x1D,0x1D,0x1F,0x00,0x1D,0x1D, 0x1F,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1F,0x00,0x1D,0x00,0x1F,0x1D,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1F,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9A,0x95,0x93,0x01,0x95,0x96,0x95,0x96,0x98,0x98, 0x98,0x95,0x95,0x01,0x95,0x95,0x98,0x96,0x95,0x96,0x96,0x96,0x96,0x01,0x96,0x01, 0x95,0x95,0x98,0x01,0x98,0x96,0x99,0x95,0x96,0x96,0x95,0x98,0x98,0x01,0x99,0x96, 0x98,0x01,0x9A,0x98,0x99,0x98,0x99,0x99,0x01,0x98,0x98,0x01,0x95,0x92,0x96,0x98, 0x95,0x92,0x98,0x96,0x98,0x96,0x98,0x98,0x95,0x92,0x95,0x01,0x98,0x96,0x95,0x98, 0x94,0x96,0x01,0x96,0x95,0x01,0x98,0x98,0x96,0x92,0x95,0x95,0x94,0x92,0x92,0x95, 0x92,0x91,0x01,0x92,0x92,0x93,0x95,0x01,0x8E,0x96,0x92,0x8E,0x8E,0x93,0x92,0x8E, 0x95,0x8E,0x93,0x01,0x95,0x92,0x98,0x8E,0x98,0x8E,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1F,0x1D,0x00,0x00, 0x1D,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x1F,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x00,0x1F,0x1D,0x1F,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D, 0x00,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D, 0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9C,0x98,0x93,0x98,0x96,0x96,0x98,0x96,0x96,0x92,0x94, 0x98,0x98,0x98,0x96,0x96,0x95,0x98,0x95,0x94,0x01,0x01,0x96,0x98,0x98,0x95,0x96, 0x98,0x95,0x98,0x01,0x98,0x98,0x98,0x95,0x92,0x01,0x94,0x98,0x98,0x98,0x98,0x96, 0x01,0x98,0x9A,0x98,0x95,0x99,0x95,0x98,0x95,0x95,0x01,0x98,0x01,0x98,0x95,0x98, 0x93,0x98,0x94,0x95,0x98,0x98,0x94,0x98,0x98,0x98,0x96,0x93,0x01,0x95,0x96,0x95, 0x01,0x98,0x96,0x96,0x93,0x94,0x98,0x93,0x96,0x92,0x92,0x92,0x95,0x94,0x95,0x91, 0x94,0x92,0x92,0x93,0x93,0x95,0x01,0x95,0x94,0x93,0x01,0x96,0x92,0x92,0x92,0x93, 0x93,0x96,0x93,0x92,0x01,0x01,0x94,0x92,0x92,0x91,0x1F,0x00,0x00,0xA7,0x08,0x1F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D, 0x1F,0x00,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x1F,0x00,0x1F,0x1D,0x1F,0x00,0x1D,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x1D,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00, 0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x1D,0x1D,0x1F,0x00,0x1D,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA7, 0x08,0x1F,0x00,0x00,0xAF,0x9D,0x9B,0x96,0x98,0x96,0x98,0x92,0x94,0x01,0x94,0x94, 0x01,0x01,0x98,0x95,0x95,0x98,0x01,0x98,0x98,0x98,0x97,0x01,0x01,0x93,0x95,0x95, 0x98,0x98,0x01,0x01,0x98,0x01,0x98,0x96,0x98,0x97,0x96,0x96,0x01,0x98,0x98,0x98, 0x98,0x98,0x98,0x94,0x94,0x98,0x95,0x96,0x01,0x96,0x01,0x95,0x01,0x98,0x98,0x94, 0x93,0x98,0x95,0x96,0x95,0x95,0x94,0x95,0x94,0x95,0x95,0x93,0x96,0x01,0x95,0x95, 0x94,0x95,0x01,0x94,0x01,0x8E,0x95,0x93,0x95,0x94,0x93,0x93,0x93,0x95,0x91,0x93, 0x93,0x96,0x92,0x95,0x96,0x95,0x95,0x93,0x95,0x95,0x96,0x96,0x96,0x93,0x92,0x01, 0x96,0x92,0x01,0x92,0x92,0x94,0x95,0x95,0x01,0x95,0x1F,0x00,0x00,0x08,0x1D,0x1E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00, 0x1D,0x1D,0x00,0x1D,0x00,0x1F,0x1D,0x1D,0x00,0x1F,0x1D,0x1D,0x1F,0x00,0x1D,0x00, 0x00,0x00,0x00,0x1D,0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1F,0x1D,0x1D,0x00, 0x1D,0x00,0x1D,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x00, 0x00,0x00,0x1D,0x00,0x1D,0x1D,0x1D,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x1D,0x1D, 0x1F,0x00,0x00,0x1D,0x1D,0x1F,0x00,0x1F,0x1D,0x1F,0x00,0x1D,0x00,0x00,0x00,0x1D, 0x00,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x00,0x1D,0x1D, 0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, 0x1D,0x1E,0x00,0x00,0xAF,0x9D,0x9B,0x95,0x01,0x95,0x96,0x01,0x98,0x96,0x95,0x01, 0x96,0x94,0x96,0x95,0x98,0x01,0x01,0x95,0x01,0x98,0x01,0x01,0x98,0x98,0x98,0x99, 0x99,0x98,0x98,0x95,0x95,0x95,0x96,0x98,0x99,0x98,0x95,0x98,0x99,0x98,0x98,0x95, 0x97,0x95,0x95,0x01,0x96,0x95,0x01,0x01,0x01,0x95,0x94,0x96,0x97,0x97,0x98,0x95, 0x98,0x92,0x95,0x95,0x95,0x93,0x92,0x95,0x95,0x92,0x98,0x95,0x95,0x98,0x95,0x93, 0x98,0x98,0x95,0x95,0x92,0x01,0x01,0x94,0x95,0x93,0x92,0x01,0x95,0x95,0x93,0x94, 0x95,0x98,0x93,0x95,0x96,0x93,0x92,0x91,0x94,0x95,0x94,0x94,0x95,0x96,0x95,0x95, 0x92,0x94,0x95,0x01,0x92,0x92,0x94,0x94,0x96,0x93,0x1F,0x00,0x00,0x1F,0x1E,0xE9, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D,0x00, 0x00,0x00,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F, 0x1E,0xE9,0x00,0x00,0xAF,0x9D,0x9B,0x98,0x94,0x98,0x98,0x95,0x96,0x01,0x96,0x01, 0x98,0x98,0x97,0x01,0x98,0x96,0x95,0x92,0x98,0x01,0x98,0x98,0x98,0x01,0x98,0x98, 0x95,0x01,0x94,0x01,0x98,0x92,0x01,0x01,0x95,0x95,0x94,0x98,0x99,0x96,0x92,0x96, 0x95,0x95,0x94,0x98,0x95,0x01,0x95,0x95,0x95,0x99,0x99,0x99,0x01,0x98,0x99,0x98, 0x98,0x93,0x92,0x92,0x95,0x95,0x95,0x92,0x95,0x93,0x96,0x98,0x92,0x95,0x93,0x98, 0x98,0x96,0x92,0x93,0x94,0x91,0x95,0x95,0x95,0x95,0x96,0x95,0x93,0x95,0x98,0x93, 0x93,0x98,0x95,0x94,0x98,0x95,0x94,0x92,0x01,0x94,0x96,0x96,0x92,0x93,0x93,0x96, 0x95,0x91,0x93,0x95,0x92,0x95,0x96,0x93,0x95,0x98,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1D, 0x1D,0x1D,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xAF,0x9D,0x9A,0x98,0x96,0x98,0x95,0x98,0x95,0x95,0x01,0x95, 0x94,0x95,0x98,0x96,0x95,0x96,0x94,0x98,0x99,0x98,0x98,0x98,0x01,0x95,0x95,0x01, 0x95,0x96,0x96,0x01,0x96,0x01,0x94,0x95,0x98,0x98,0x98,0x98,0x97,0x01,0x95,0x96, 0x95,0x95,0x98,0x96,0x98,0x98,0x96,0x98,0x99,0x01,0x98,0x95,0x99,0x99,0x98,0x98, 0x95,0x92,0x01,0x98,0x91,0x95,0x93,0x95,0x95,0x95,0x92,0x8E,0x95,0x93,0x92,0x92, 0x93,0x94,0x96,0x93,0x93,0x92,0x94,0x95,0x98,0x01,0x95,0x95,0x98,0x98,0x01,0x93, 0x98,0x95,0x95,0x95,0x95,0x94,0x93,0x95,0x98,0x95,0x95,0x98,0x95,0x01,0x98,0x98, 0x98,0x93,0x95,0x01,0x93,0x92,0x93,0x94,0x95,0x93,0x1F,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF, 0xAF,0xAF,0xAF,0xAF,0xAF,0x9D,0x9B,0x95,0x98,0x98,0x98,0x01,0x95,0x01,0x95,0x96, 0x95,0x01,0x97,0x98,0x98,0x01,0x01,0x96,0x95,0x95,0x01,0x95,0x01,0x96,0x98,0x96, 0x95,0x94,0x98,0x98,0x95,0x95,0x98,0x98,0x98,0x98,0x94,0x95,0x98,0x94,0x98,0x98, 0x01,0x99,0x01,0x98,0x98,0x98,0x99,0x98,0x98,0x01,0x95,0x98,0x96,0x95,0x01,0x98, 0x8E,0x94,0x8E,0x95,0x95,0x94,0x94,0x8E,0x92,0x93,0x95,0x93,0x96,0x95,0x95,0x93, 0x8E,0x94,0x91,0x92,0x95,0x94,0x93,0x93,0x95,0x01,0x92,0x98,0x96,0x96,0x96,0x01, 0x95,0x96,0x96,0x98,0x95,0x98,0x98,0x92,0x01,0x92,0x96,0x94,0x95,0x96,0x95,0x96, 0x95,0x01,0x92,0x95,0x92,0x93,0x93,0x01,0x93,0x95,0x92,0x93,0x98,0x9D,0x9B,0x9B, 0x9C,0x9C,0x9C,0x9D,0x9B,0x9D,0x9B,0x9D,0x9B,0x9C,0x9D,0x9D,0x9C,0x9C,0x9B,0x9B, 0x9D,0x9B,0x9D,0x9B,0x9D,0x9C,0x9D,0x9D,0x9D,0x9B,0x9B,0x9D,0x9C,0x9C,0x9B,0x9D, 0x9D,0x9C,0x9D,0x9B,0x9D,0x9B,0x9B,0x9B,0x9B,0x9B,0x9C,0x9B,0x9D,0x9D,0x9C,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9C,0x9D,0x9D,0x9C,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9C,0x9D,0x9B,0x9D,0x9C,0x9B,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9C,0x9C,0x9B,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9B, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9B,0x9D,0x9D,0x9D,0x9B,0x9C,0x9B,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9B,0x9C,0x9D,0x9C, 0x9D,0x9C,0x9B,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9C,0x9D,0x9B,0x9C,0x9D, 0x9D,0x9D,0x9D,0x9C,0x9C,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9B,0x9C,0x9C,0x9D,0x9D,0x9D,0x9C,0x9C,0x9C,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9B,0x9D,0x9A,0x98,0x01,0x01,0x98,0x96,0x98,0x98,0x98,0x98, 0x97,0x98,0x95,0x99,0x95,0x98,0x98,0x96,0x95,0x96,0x96,0x98,0x94,0x96,0x98,0x01, 0x98,0x01,0x01,0x01,0x01,0x98,0x98,0x98,0x96,0x01,0x95,0x98,0x98,0x95,0x94,0x98, 0x99,0x98,0x95,0x98,0x95,0x98,0x96,0x01,0x97,0x97,0x98,0x97,0x97,0x97,0x98,0x01, 0x93,0x93,0x96,0x96,0x01,0x95,0x01,0x96,0x95,0x95,0x93,0x95,0x96,0x95,0x98,0x93, 0x92,0x8E,0x94,0x95,0x95,0x91,0x96,0x93,0x98,0x94,0x98,0x95,0x98,0x98,0x95,0x01, 0x01,0x01,0x94,0x95,0x95,0x94,0x96,0x94,0x98,0x01,0x96,0x95,0x01,0x96,0x95,0x95, 0x95,0x91,0x98,0x94,0x93,0x96,0x94,0x94,0x95,0x95,0x93,0x93,0x9A,0x98,0x98,0x9A, 0x9B,0x9A,0x98,0x99,0x9A,0x98,0x9B,0x98,0x9B,0x98,0x98,0x99,0x99,0x98,0x9B,0x99, 0x9A,0x9A,0x98,0x9A,0x9B,0x98,0x9A,0x9B,0x98,0x98,0x98,0x9A,0x9B,0x98,0x98,0x01, 0x98,0x01,0x98,0x98,0x9B,0x98,0x99,0x99,0x99,0x98,0x98,0x9B,0x99,0x98,0x98,0x01, 0x01,0x98,0x01,0x98,0x98,0x98,0x97,0x9B,0x9A,0x99,0x9A,0x9A,0x9A,0x98,0x9B,0x9B, 0x9A,0x9B,0x9B,0x99,0x99,0x9A,0x9B,0x9A,0x9A,0x98,0x97,0x98,0x9A,0x99,0x9A,0x98, 0x9A,0x9A,0x99,0x98,0x98,0x9A,0x9B,0x9A,0x9B,0x9B,0x9B,0x98,0x9A,0x9B,0x9A,0x9B, 0x99,0x9A,0x99,0x9B,0x98,0x9A,0x9A,0x9A,0x9A,0x9A,0x99,0x9A,0x9A,0x9A,0x9B,0x9B, 0x99,0x9B,0x9B,0x9A,0x9A,0x9C,0x9B,0x9B,0x9C,0x9B,0x9B,0x9B,0x9B,0x99,0x9B,0x9B, 0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9A,0x99,0x99,0x9A,0x9A,0x9A,0x9B,0x9A,0x98, 0x98,0x98,0x99,0x9B,0x99,0x9A,0x9A,0x9B,0x9A,0x9A,0x99,0x9B,0x9B,0x99,0x9A,0x98, 0x9A,0x98,0x98,0x9A,0x99,0x9A,0x9A,0x9A,0x9B,0x9A,0x9B,0x9A,0x99,0x9A,0x9A,0x9B, 0x9B,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9B,0x9A,0x9A,0x9B,0x9B,0x9B,0x9B,0x9A,0x9A, 0x9A,0x9B,0x99,0x9A,0x9A,0x9A,0x9A,0x96,0x98,0x96,0x96,0x01,0x95,0x01,0x95,0x95, 0x98,0x98,0x9A,0x98,0x98,0x98,0x98,0x98,0x95,0x01,0x96,0x98,0x94,0x96,0x97,0x98, 0x98,0x98,0x98,0x01,0x98,0x98,0x94,0x98,0x96,0x01,0x98,0x95,0x99,0x01,0x96,0x01, 0x95,0x98,0x98,0x98,0x01,0x96,0x94,0x96,0x98,0x01,0x98,0x01,0x98,0x01,0x01,0x95, 0x01,0x94,0x98,0x96,0x98,0x96,0x96,0x95,0x96,0x92,0x98,0x93,0x95,0x95,0x92,0x92, 0x8E,0x94,0x01,0x95,0x93,0x95,0x01,0x95,0x94,0x92,0x96,0x93,0x01,0x96,0x95,0x94, 0x93,0x95,0x01,0x96,0x91,0x98,0x94,0x98,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x95, 0x98,0x94,0x98,0x96,0x95,0x93,0x95,0x92,0x95,0x94,0x92,0x92,0x95,0x98,0x93,0x95, 0x94,0x01,0x95,0x94,0x94,0x98,0x95,0x93,0x92,0x95,0x96,0x92,0x95,0x93,0x92,0x95, 0x94,0x96,0x96,0x94,0x95,0x93,0x93,0x94,0x96,0x95,0x94,0x92,0x94,0x92,0x95,0x91, 0x92,0x8E,0x95,0x01,0x92,0x95,0x92,0x95,0x92,0x94,0x01,0x98,0x92,0x92,0x96,0x96, 0x94,0x98,0x94,0x93,0x96,0x94,0x93,0x93,0x95,0x94,0x95,0x01,0x01,0x93,0x92,0x93, 0x95,0x93,0x93,0x98,0x94,0x91,0x92,0x95,0x94,0x94,0x92,0x92,0x93,0x96,0x94,0x8E, 0x01,0x94,0x8E,0x98,0x95,0x95,0x96,0x96,0x98,0x98,0x96,0x92,0x96,0x01,0x98,0x95, 0x96,0x98,0x01,0x95,0x98,0x95,0x93,0x96,0x96,0x94,0x96,0x01,0x01,0x01,0x98,0x98, 0x99,0x99,0x01,0x95,0x92,0x98,0x96,0x96,0x98,0x94,0x01,0x98,0x95,0x98,0x01,0x95, 0x94,0x95,0x98,0x98,0x99,0x94,0x95,0x94,0x98,0x01,0x96,0x96,0x96,0x92,0x94,0x92, 0x94,0x98,0x95,0x01,0x93,0x95,0x01,0x95,0x01,0x98,0x96,0x96,0x95,0x94,0x95,0x01, 0x96,0x98,0x01,0x94,0x96,0x98,0x01,0x95,0x98,0x98,0x96,0x97,0x92,0x01,0x94,0x98, 0x98,0x96,0x96,0x95,0x98,0x98,0x96,0x96,0x96,0x96,0x94,0x95,0x01,0x98,0x01,0x01, 0x96,0x98,0x97,0x93,0x94,0x96,0x94,0x98,0x96,0x98,0x98,0x98,0x99,0x99,0x96,0x99, 0x99,0x98,0x98,0x96,0x98,0x94,0x98,0x98,0x98,0x96,0x98,0x98,0x98,0x01,0x95,0x95, 0x95,0x98,0x99,0x98,0x98,0x98,0x01,0x99,0x98,0x98,0x98,0x98,0x96,0x98,0x98,0x98, 0x97,0x96,0x01,0x94,0x95,0x01,0x95,0x96,0x98,0x98,0x98,0x98,0x95,0x96,0x98,0x96, 0x8E,0x98,0x01,0x95,0x96,0x93,0x92,0x94,0x93,0x01,0x95,0x98,0x98,0x98,0x93,0x91, 0x94,0x95,0x95,0x92,0x94,0x92,0x95,0x92,0x96,0x91,0x96,0x94,0x95,0x95,0x94,0x93, 0x93,0x96,0x94,0x95,0x95,0x95,0x98,0x96,0x95,0x92,0x96,0x92,0x92,0x96,0x95,0x96, 0x96,0x98,0x96,0x94,0x91,0x95,0x96,0x92,0x96,0x93,0x94,0x95,0x93,0x94,0x93,0x91, 0x92,0x93,0x95,0x96,0x95,0x95,0x92,0x96,0x92,0x93,0x93,0x94,0x01,0x98,0x95,0x95, 0x98,0x92,0x93,0x93,0x94,0x96,0x92,0x95,0x92,0x92,0x93,0x94,0x94,0x95,0x95,0x95, 0x94,0x92,0x94,0x95,0x93,0x8F,0x95,0x91,0x91,0x93,0x96,0x01,0x95,0x93,0x98,0x92, 0x01,0x95,0x98,0x93,0x01,0x8E,0x95,0x92,0x8E,0x93,0x96,0x01,0x92,0x95,0x93,0x95, 0x94,0x94,0x94,0x93,0x95,0x92,0x92,0x92,0x95,0x95,0x92,0x92,0x8E,0x92,0x8E,0x92, 0x96,0x93,0x96,0x92,0x94,0x95,0x95,0x96,0x95,0x98,0x96,0x93,0x93,0x95,0x94,0x01, 0x95,0x93,0x98,0x92,0x96,0x94,0x01,0x98,0x01,0x96,0x94,0x98,0x98,0x95,0x01,0x95, 0x98,0x95,0x01,0x95,0x95,0x98,0x96,0x01,0x98,0x95,0x95,0x98,0x98,0x01,0x98,0x93, 0x98,0x92,0x98,0x98,0x95,0x94,0x98,0x96,0x94,0x96,0x01,0x98,0x93,0x94,0x95,0x95, 0x95,0x94,0x95,0x92,0x95,0x96,0x98,0x95,0x94,0x96,0x95,0x98,0x98,0x01,0x98,0x94, 0x95,0x92,0x92,0x94,0x94,0x94,0x96,0x96,0x98,0x98,0x98,0x98,0x94,0x98,0x98,0x98, 0x96,0x96,0x96,0x94,0x92,0x98,0x96,0x97,0x96,0x98,0x98,0x98,0x98,0x97,0x95,0x96, 0x96,0x98,0x98,0x96,0x98,0x95,0x98,0x01,0x98,0x01,0x98,0x98,0x98,0x98,0x96,0x98, 0x95,0x95,0x98,0x95,0x98,0x95,0x98,0x98,0x99,0x99,0x96,0x98,0x98,0x94,0x96,0x99, 0x98,0x98,0x01,0x98,0x94,0x01,0x96,0x98,0x98,0x98,0x96,0x95,0x97,0x96,0x96,0x96, 0x95,0x96,0x01,0x01,0x98,0x98,0x01,0x94,0x01,0x01,0x93,0x95,0x92,0x94,0x98,0x96, 0x95,0x98,0x98,0x93,0x98,0x94,0x98,0x95,0x98,0x96,0x92,0x92,0x94,0x94,0x95,0x95, 0x94,0x92,0x96,0x95,0x96,0x94,0x94,0x95,0x01,0x96,0x93,0x93,0x91,0x01,0x96,0x93, 0x96,0x95,0x98,0x91,0x01,0x94,0x95,0x96,0x01,0x96,0x93,0x94,0x95,0x95,0x94,0x95, 0x95,0x96,0x95,0x98,0x96,0x98,0x98,0x95,0x95,0x01,0x95,0x94,0x95,0x98,0x95,0x95, 0x01,0x92,0x95,0x92,0x91,0x92,0x92,0x94,0x93,0x92,0x94,0x92,0x91,0x95,0x91,0x92, 0x93,0x93,0x93,0x94,0x92,0x93,0x93,0x98,0x92,0x93,0x95,0x93,0x95,0x94,0x95,0x01, 0x95,0x95,0x92,0x92,0x94,0x91,0x94,0x95,0x94,0x94,0x92,0x98,0x95,0x94,0x95,0x93, 0x93,0x92,0x94,0x94,0x01,0x94,0x92,0x94,0x94,0x94,0x98,0x95,0x92,0x96,0x91,0x96, 0x93,0x94,0x93,0x94,0x92,0x96,0x92,0x95,0x8E,0x93,0x95,0x93,0x94,0x96,0x95,0x98, 0x95,0x95,0x95,0x98,0x98,0x96,0x95,0x98,0x95,0x95,0x98,0x01,0x98,0x99,0x98,0x98, 0x96,0x95,0x96,0x96,0x98,0x98,0x95,0x94,0x95,0x98,0x01,0x98,0x01,0x92,0x95,0x96, 0x96,0x98,0x98,0x94,0x96,0x98,0x96,0x98,0x96,0x98,0x98,0x98,0x98,0x95,0x98,0x98, 0x98,0x98,0x95,0x01,0x98,0x95,0x96,0x96,0x96,0x01,0x96,0x95,0x95,0x94,0x94,0x01, 0x01,0x97,0x95,0x98,0x98,0x96,0x98,0x94,0x94,0x95,0x97,0x95,0x01,0x98,0x98,0x96, 0x93,0x94,0x98,0x98,0x98,0x98,0x01,0x01,0x96,0x93,0x98,0x92,0x96,0x98,0x94,0x95, 0x95,0x93,0x95,0x98,0x98,0x95,0x98,0x98,0x96,0x98,0x98,0x97,0x96,0x98,0x96,0x94, 0x96,0x98,0x98,0x98,0x98,0x9A,0x98,0x99,0x99,0x98,0x98,0x98,0x98,0x96,0x98,0x98, 0x99,0x93,0x98,0x96,0x98,0x98,0x01,0x98,0x01,0x98,0x98,0x98,0x98,0x01,0x96,0x01, 0x98,0x98,0x98,0x98,0x98,0x97,0x95,0x96,0x94,0x95,0x98,0x98,0x98,0x96,0x95,0x96, 0x94,0x01,0x96,0x97,0x98,0x98,0x98,0x01,0x98,0x98,0x97,0x97,0x95,0x95,0x97,0x01, 0x96,0x93,0x93,0x93,0x91,0x93,0x94,0x95,0x94,0x93,0x95,0x8E,0x8E,0x94,0x91,0x95, 0x92,0x95,0x95,0x92,0x94,0x93,0x94,0x96,0x92,0x94,0x93,0x96,0x95,0x94,0x95,0x92, 0x93,0x95,0x01,0x98,0x96,0x95,0x95,0x94,0x95,0x96,0x94,0x95,0x96,0x95,0x92,0x95, 0x96,0x92,0x93,0x94,0x96,0x01,0x95,0x95,0x98,0x93,0x95,0x95,0x95,0x01,0x93,0x92, 0x01,0x94,0x95,0x8E,0x94,0x8E,0x8E,0x8E,0x95,0x8E,0x8E,0x94,0x8E,0x92,0x8E,0x94, 0x8E,0x95,0x8E,0x95,0x8E,0x94,0x8E,0x93,0x95,0x94,0x93,0x94,0x98,0x94,0x95,0x95, 0x93,0x95,0x01,0x96,0x95,0x96,0x92,0x93,0x95,0x94,0x91,0x94,0x95,0x92,0x92,0x01, 0x92,0x95,0x94,0x92,0x92,0x01,0x95,0x96,0x93,0x91,0x92,0x91,0x93,0x91,0x95,0x8E, 0x95,0x94,0x96,0x92,0x96,0x96,0x93,0x96,0x94,0x93,0x94,0x93,0x98,0x98,0x93,0x92, 0x92,0x96,0x01,0x98,0x01,0x96,0x01,0x94,0x98,0x98,0x96,0x95,0x98,0x97,0x01,0x98, 0x99,0x01,0x98,0x01,0x98,0x96,0x96,0x95,0x96,0x98,0x98,0x96,0x95,0x98,0x96,0x95, 0x98,0x96,0x01,0x93,0x95,0x98,0x95,0x96,0x98,0x94,0x98,0x96,0x98,0x98,0x98,0x98, 0x01,0x96,0x98,0x94,0x98,0x01,0x96,0x98,0x98,0x01,0x96,0x98,0x95,0x95,0x95,0x96, 0x01,0x94,0x01,0x98,0x98,0x95,0x98,0x01,0x98,0x98,0x98,0x98,0x98,0x96,0x95,0x98, 0x92,0x94,0x94,0x96,0x98,0x98,0x95,0x98,0x95,0x95,0x93,0x94,0x98,0x96,0x96,0x94, 0x98,0x94,0x98,0x95,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x01,0x98,0x93,0x98,0x97, 0x98,0x95,0x98,0x98,0x98,0x98,0x98,0x96,0x98,0x94,0x95,0x01,0x98,0x98,0x98,0x99, 0x98,0x95,0x99,0x95,0x96,0x95,0x98,0x95,0x98,0x99,0x99,0x99,0x98,0x98,0x01,0x98, 0x98,0x98,0x96,0x95,0x93,0x98,0x95,0x98,0x96,0x96,0x96,0x96,0x01,0x99,0x98,0x96, 0x98,0x96,0x99,0x98,0x98,0x01,0x98,0x96,0x98,0x98,0x98,0x01,0x01,0x98,0x98,0x94, 0x92,0x96,0x93,0x92,0x92,0x94,0x95,0x8E,0x94,0x92,0x95,0x94,0x01,0x92,0x92,0x8E, 0x93,0x94,0x94,0x94,0x01,0x93,0x01,0x95,0x92,0x95,0x93,0x95,0x96,0x94,0x94,0x93, 0x94,0x98,0x96,0x95,0x95,0x96,0x96,0x95,0x93,0x94,0x95,0x98,0x92,0x94,0x95,0x95, 0x94,0x98,0x94,0x98,0x96,0x98,0x96,0x95,0x96,0x95,0x95,0x93,0x94,0x93,0x92,0x94, 0x96,0x95,0x95,0x95,0x95,0x94,0x93,0x95,0x92,0x93,0x93,0x96,0x98,0x92,0x93,0x92, 0x94,0x95,0x93,0x95,0x95,0x92,0x8E,0x8E,0x01,0x92,0x92,0x95,0x92,0x94,0x93,0x96, 0x93,0x01,0x92,0x95,0x93,0x94,0x98,0x94,0x95,0x95,0x91,0x93,0x95,0x92,0x92,0x92, 0x01,0x93,0x95,0x92,0x95,0x91,0x92,0x01,0x92,0x92,0x92,0x92,0x93,0x94,0x95,0x94, 0x01,0x95,0x01,0x94,0x95,0x94,0x95,0x93,0x92,0x01,0x01,0x94,0x98,0x98,0x93,0x98, 0x95,0x95,0x98,0x95,0x96,0x94,0x96,0x98,0x96,0x95,0x94,0x95,0x96,0x95,0x95,0x01, 0x96,0x01,0x98,0x95,0x01,0x96,0x98,0x96,0x96,0x98,0x01,0x95,0x96,0x96,0x95,0x95, 0x94,0x94,0x94,0x01,0x98,0x95,0x98,0x96,0x01,0x94,0x98,0x98,0x98,0x93,0x99,0x96, 0x98,0x98,0x98,0x95,0x98,0x98,0x95,0x95,0x95,0x92,0x92,0x98,0x01,0x98,0x94,0x01, 0x95,0x01,0x98,0x01,0x01,0x98,0x95,0x01,0x98,0x98,0x98,0x96,0x98,0x01,0x96,0x95, 0x96,0x95,0x95,0x95,0x98,0x95,0x95,0x98,0x01,0x98,0x96,0x98,0x95,0x95,0x98,0x01, 0x95,0x98,0x99,0x98,0x99,0x98,0x95,0x98,0x96,0x96,0x98,0x01,0x96,0x01,0x01,0x95, 0x98,0x95,0x98,0x98,0x96,0x96,0x01,0x98,0x95,0x95,0x96,0x95,0x94,0x98,0x95,0x01, 0x99,0x98,0x98,0x98,0x01,0x98,0x01,0x94,0x94,0x98,0x98,0x97,0x95,0x98,0x01,0x98, 0x98,0x99,0x95,0x98,0x99,0x99,0x95,0x98,0x98,0x98,0x98,0x99,0x98,0x99,0x98,0x99, 0x98,0x98,0x99,0x98,0x95,0x95,0x99,0x96,0x9A,0x99,0x9A,0x99,0x98,0x96,0x01,0x98, 0x01,0x93,0x95,0x93,0x91,0x01,0x98,0x95,0x94,0x92,0x95,0x92,0x98,0x96,0x95,0x98, 0x95,0x96,0x92,0x95,0x95,0x95,0x95,0x93,0x95,0x95,0x92,0x92,0x95,0x92,0x92,0x01, 0x92,0x95,0x95,0x93,0x96,0x93,0x95,0x92,0x95,0x95,0x95,0x92,0x92,0x01,0x91,0x93, 0x94,0x95,0x93,0x95,0x94,0x92,0x92,0x01,0x01,0x01,0x95,0x8E,0x92,0x98,0x95,0x95, 0x98,0x95,0x96,0x95,0x96,0x94,0x94,0x93,0x94,0x91,0x94,0x94,0x93,0x93,0x92,0x95, 0x93,0x94,0x01,0x01,0x96,0x92,0x98,0x92,0x8E,0x95,0x8E,0x8E,0x8E,0x94,0x93,0x92, 0x93,0x98,0x92,0x94,0x93,0x92,0x95,0x93,0x95,0x91,0x95,0x92,0x94,0x98,0x96,0x01, 0x01,0x92,0x94,0x93,0x94,0x92,0x94,0x93,0x01,0x95,0x92,0x92,0x96,0x93,0x95,0x93, 0x01,0x93,0x95,0x93,0x96,0x94,0x94,0x01,0x96,0x01,0x92,0x98,0x95,0x01,0x96,0x94, 0x01,0x98,0x98,0x01,0x95,0x95,0x96,0x95,0x96,0x94,0x93,0x94,0x95,0x01,0x98,0x98, 0x96,0x95,0x95,0x96,0x95,0x96,0x98,0x01,0x95,0x98,0x96,0x96,0x94,0x96,0x94,0x96, 0x95,0x01,0x95,0x94,0x94,0x93,0x96,0x96,0x96,0x98,0x98,0x98,0x96,0x96,0x98,0x99, 0x98,0x98,0x99,0x99,0x98,0x98,0x96,0x96,0x92,0x94,0x01,0x98,0x94,0x95,0x96,0x98, 0x95,0x95,0x93,0x94,0x01,0x98,0x01,0x98,0x98,0x98,0x95,0x01,0x95,0x95,0x96,0x95, 0x96,0x94,0x95,0x95,0x01,0x95,0x93,0x96,0x98,0x94,0x01,0x9A,0x01,0x98,0x94,0x9A, 0x98,0x98,0x98,0x99,0x98,0x99,0x98,0x94,0x95,0x95,0x95,0x98,0x01,0x98,0x98,0x95, 0x95,0x99,0x98,0x99,0x95,0x98,0x98,0x95,0x98,0x01,0x94,0x98,0x98,0x98,0x01,0x96, 0x95,0x96,0x01,0x97,0x96,0x95,0x01,0x98,0x95,0x95,0x95,0x98,0x01,0x01,0x93,0x95, 0x96,0x98,0x95,0x98,0x98,0x98,0x98,0x01,0x98,0x95,0x98,0x98,0x98,0x98,0x99,0x98, 0x96,0x98,0x9A,0x01,0x99,0x99,0x99,0x98,0x98,0x99,0x98,0x99,0x01,0x98,0x99,0x98, 0x98,0x98,0x95,0x98,0x92,0x98,0x94,0x95,0x98,0x01,0x92,0x96,0x92,0x92,0x94,0x96, 0x98,0x98,0x93,0x92,0x93,0x8E,0x96,0x95,0x96,0x01,0x92,0x95,0x93,0x01,0x94,0x93, 0x01,0x93,0x94,0x94,0x94,0x92,0x95,0x95,0x92,0x93,0x92,0x91,0x94,0x94,0x8E,0x92, 0x8E,0x01,0x8E,0x8E,0x92,0x94,0x92,0x95,0x92,0x95,0x95,0x95,0x94,0x95,0x94,0x94, 0x94,0x01,0x01,0x98,0x95,0x95,0x95,0x94,0x92,0x95,0x95,0x94,0x92,0x92,0x95,0x94, 0x98,0x95,0x95,0x93,0x92,0x95,0x92,0x01,0x96,0x92,0x95,0x01,0x95,0x92,0x94,0x95, 0x94,0x8E,0x8E,0x95,0x96,0x94,0x92,0x8E,0x92,0x92,0x95,0x92,0x95,0x98,0x95,0x92, 0x95,0x93,0x98,0x92,0x95,0x92,0x94,0x94,0x95,0x95,0x93,0x95,0x93,0x94,0x98,0x01, 0x94,0x98,0x01,0x94,0x95,0x01,0x95,0x95,0x98,0x98,0x95,0x96,0x93,0x98,0x96,0x98, 0x95,0x93,0x96,0x01,0x96,0x01,0x98,0x96,0x98,0x95,0x95,0x94,0x98,0x01,0x96,0x98, 0x98,0x96,0x95,0x95,0x98,0x01,0x98,0x98,0x98,0x98,0x94,0x01,0x94,0x01,0x01,0x93, 0x98,0x01,0x98,0x01,0x96,0x98,0x98,0x96,0x98,0x01,0x9A,0x98,0x98,0x95,0x98,0x98, 0x98,0x95,0x99,0x9A,0x96,0x01,0x98,0x98,0x95,0x95,0x98,0x96,0x01,0x98,0x98,0x01, 0x95,0x98,0x96,0x98,0x98,0x95,0x99,0x98,0x01,0x95,0x98,0x95,0x98,0x92,0x95,0x96, 0x94,0x98,0x96,0x97,0x01,0x96,0x98,0x98,0x99,0x98,0x98,0x96,0x95,0x95,0x98,0x98, 0x98,0x98,0x98,0x01,0x98,0x96,0x96,0x96,0x94,0x98,0x98,0x94,0x95,0x98,0x96,0x98, 0x9A,0x98,0x94,0x96,0x99,0x95,0x99,0x98,0x93,0x98,0x95,0x98,0x95,0x95,0x98,0x98, 0x98,0x93,0x98,0x98,0x96,0x95,0x96,0x01,0x96,0x98,0x95,0x95,0x94,0x01,0x98,0x98, 0x96,0x95,0x01,0x98,0x98,0x98,0x01,0x98,0x98,0x96,0x99,0x98,0x98,0x99,0x99,0x98, 0x99,0x01,0x98,0x01,0x98,0x98,0x98,0x96,0x98,0x94,0x98,0x94,0x98,0x98,0x99,0x95, 0x98,0x96,0x95,0x93,0x92,0x92,0x92,0x93,0x92,0x93,0x95,0x01,0x01,0x01,0x95,0x96, 0x01,0x92,0x95,0x96,0x01,0x93,0x92,0x92,0x94,0x8E,0x92,0x01,0x92,0x01,0x91,0x92, 0x93,0x95,0x94,0x96,0x98,0x91,0x91,0x8E,0x95,0x94,0x92,0x8F,0x95,0x01,0x96,0x93, 0x94,0x96,0x94,0x96,0x8E,0x92,0x8E,0x94,0x8E,0x92,0x01,0x96,0x92,0x92,0x94,0x93, 0x92,0x98,0x98,0x95,0x01,0x96,0x95,0x01,0x98,0x98,0x96,0x01,0x98,0x93,0x98,0x01, 0x95,0x91,0x95,0x93,0x93,0x94,0x91,0x94,0x96,0x95,0x93,0x93,0x96,0x95,0x94,0x95, 0x94,0x92,0x95,0x96,0x93,0x98,0x96,0x95,0x93,0x96,0x93,0x93,0x98,0x92,0x95,0x93, 0x95,0x94,0x93,0x93,0x93,0x95,0x95,0x96,0x96,0x92,0x94,0x96,0x95,0x96,0x95,0x94, 0x93,0x93,0x96,0x98,0x01,0x98,0x98,0x97,0x95,0x98,0x96,0x98,0x01,0x96,0x01,0x98, 0x95,0x98,0x96,0x96,0x01,0x96,0x01,0x01,0x01,0x95,0x96,0x96,0x96,0x01,0x01,0x98, 0x95,0x95,0x98,0x96,0x01,0x01,0x94,0x01,0x01,0x01,0x96,0x98,0x96,0x98,0x98,0x92, 0x01,0x01,0x96,0x95,0x98,0x99,0x96,0x99,0x95,0x01,0x01,0x98,0x98,0x99,0x9A,0x98, 0x9A,0x95,0x9A,0x98,0x98,0x9A,0x99,0x98,0x95,0x95,0x9A,0x98,0x01,0x95,0x95,0x98, 0x01,0x98,0x98,0x98,0x98,0x98,0x99,0x96,0x98,0x96,0x98,0x95,0x92,0x01,0x98,0x99, 0x98,0x98,0x98,0x01,0x98,0x98,0x98,0x95,0x94,0x98,0x97,0x98,0x01,0x98,0x98,0x96, 0x95,0x93,0x95,0x98,0x96,0x98,0x98,0x98,0x95,0x01,0x96,0x98,0x98,0x99,0x95,0x01, 0x98,0x98,0x9A,0x98,0x98,0x01,0x01,0x98,0x98,0x98,0x96,0x96,0x98,0x01,0x94,0x94, 0x95,0x96,0x01,0x96,0x98,0x98,0x98,0x95,0x95,0x98,0x95,0x95,0x96,0x96,0x95,0x95, 0x94,0x98,0x98,0x01,0x95,0x98,0x98,0x95,0x95,0x98,0x98,0x98,0x99,0x98,0x01,0x95, 0x99,0x96,0x95,0x95,0x98,0x98,0x95,0x01,0x98,0x95,0x01,0x96,0x96,0x94,0x95,0x98, 0x98,0x01,0x98,0x93,0x95,0x95,0x96,0x93,0x98,0x95,0x98,0x95,0x93,0x01,0x93,0x96, 0x93,0x96,0x98,0x92,0x01,0x93,0x93,0x94,0x94,0x92,0x92,0x92,0x8E,0x94,0x93,0x8E, 0x92,0x01,0x95,0x95,0x93,0x93,0x92,0x8E,0x8E,0x91,0x94,0x93,0x01,0x94,0x98,0x92, 0x95,0x94,0x96,0x92,0x8E,0x8E,0x8E,0x93,0x94,0x95,0x92,0x8E,0x8E,0x95,0x94,0x95, 0x94,0x93,0x96,0x93,0x95,0x98,0x95,0x96,0x95,0x93,0x96,0x94,0x98,0x01,0x96,0x94, 0x96,0x94,0x94,0x95,0x94,0x95,0x01,0x92,0x94,0x92,0x94,0x95,0x92,0x94,0x93,0x94, 0x93,0x96,0x93,0x94,0x92,0x93,0x98,0x01,0x98,0x94,0x95,0x95,0x95,0x93,0x93,0x94, 0x95,0x01,0x95,0x98,0x96,0x93,0x94,0x01,0x94,0x95,0x98,0x96,0x93,0x95,0x92,0x93, 0x96,0x96,0x98,0x93,0x98,0x94,0x94,0x01,0x92,0x01,0x93,0x94,0x94,0x96,0x01,0x98, 0x01,0x01,0x98,0x96,0x01,0x92,0x94,0x98,0x94,0x95,0x96,0x01,0x97,0x95,0x95,0x98, 0x98,0x98,0x01,0x98,0x96,0x01,0x95,0x98,0x93,0x98,0x96,0x01,0x01,0x94,0x95,0x98, 0x96,0x95,0x98,0x95,0x98,0x96,0x96,0x99,0x98,0x98,0x99,0x96,0x01,0x96,0x98,0x98, 0x99,0x96,0x9A,0x01,0x98,0x01,0x98,0x98,0x97,0x98,0x98,0x98,0x99,0x95,0x92,0x92, 0x96,0x99,0x98,0x96,0x98,0x98,0x98,0x01,0x95,0x98,0x96,0x99,0x01,0x9A,0x98,0x98, 0x98,0x98,0x98,0x96,0x96,0x98,0x95,0x98,0x98,0x93,0x98,0x98,0x98,0x96,0x95,0x97, 0x98,0x97,0x97,0x98,0x95,0x01,0x98,0x98,0x01,0x98,0x01,0x95,0x98,0x99,0x98,0x9A, 0x98,0x98,0x9A,0x98,0x98,0x9A,0x94,0x01,0x98,0x95,0x01,0x98,0x95,0x96,0x95,0x94, 0x95,0x96,0x95,0x95,0x93,0x98,0x96,0x95,0x95,0x01,0x98,0x96,0x96,0x01,0x01,0x96, 0x01,0x96,0x92,0x01,0x01,0x98,0x98,0x98,0x98,0x98,0x98,0x01,0x98,0x95,0x97,0x95, 0x98,0x94,0x92,0x96,0x98,0x96,0x01,0x98,0x01,0x98,0x95,0x98,0x98,0x01,0x95,0x94, 0x98,0x98,0x95,0x93,0x95,0x92,0x95,0x98,0x96,0x93,0x94,0x01,0x93,0x98,0x92,0x95, 0x92,0x98,0x92,0x94,0x95,0x96,0x95,0x95,0x92,0x92,0x92,0x93,0x96,0x93,0x96,0x92, 0x94,0x01,0x95,0x92,0x95,0x93,0x92,0x95,0x98,0x92,0x94,0x95,0x93,0x94,0x93,0x95, 0x95,0x95,0x91,0x93,0x8E,0x8E,0x92,0x92,0x93,0x98,0x92,0x93,0x95,0x92,0x98,0x94, 0x96,0x93,0x95,0x98,0x96,0x96,0x96,0x98,0x98,0x95,0x95,0x95,0x98,0x98,0x95,0x96, 0x98,0x94,0x98,0x94,0x93,0x98,0x98,0x96,0x01,0x96,0x98,0x01,0x96,0x94,0x94,0x01, 0x95,0x95,0x95,0x01,0x96,0x01,0x96,0x94,0x98,0x95,0x95,0x93,0x95,0x94,0x95,0x95, 0x95,0x94,0x95,0x95,0x93,0x92,0x95,0x95,0x95,0x01,0x93,0x01,0x98,0x96,0x96,0x98, 0x01,0x98,0x98,0x98,0x98,0x94,0x98,0x94,0x01,0x01,0x01,0x98,0x98,0x94,0x95,0x01, 0x96,0x94,0x95,0x96,0x01,0x96,0x98,0x98,0x98,0x98,0x95,0x96,0x99,0x01,0x98,0x96, 0x98,0x98,0x96,0x95,0x98,0x01,0x95,0x94,0x98,0x98,0x96,0x98,0x95,0x95,0x94,0x96, 0x95,0x94,0x98,0x97,0x98,0x96,0x01,0x95,0x99,0x98,0x98,0x98,0x01,0x01,0x98,0x96, 0x99,0x99,0x99,0x01,0x96,0x95,0x98,0x94,0x94,0x94,0x01,0x98,0x01,0x98,0x94,0x98, 0x98,0x97,0x99,0x01,0x96,0x96,0x95,0x98,0x95,0x99,0x01,0x99,0x98,0x98,0x98,0x98, 0x98,0x9B,0x99,0x9B,0x9C,0x99,0x98,0x96,0x01,0x98,0x95,0x98,0x96,0x97,0x98,0x98, 0x98,0x01,0x95,0x94,0x98,0x98,0x01,0x98,0x95,0x95,0x95,0x96,0x98,0x98,0x98,0x99, 0x99,0x98,0x98,0x92,0x98,0x98,0x98,0x98,0x98,0x94,0x94,0x96,0x96,0x95,0x95,0x01, 0x98,0x01,0x95,0x98,0x94,0x98,0x95,0x01,0x98,0x96,0x94,0x96,0x01,0x98,0x96,0x96, 0x95,0x98,0x98,0x98,0x99,0x95,0x98,0x95,0x98,0x98,0x96,0x01,0x95,0x01,0x98,0x98, 0x98,0x01,0x95,0x95,0x98,0x98,0x94,0x98,0x98,0x96,0x94,0x98,0x94,0x96,0x95,0x98, 0x98,0x01,0x93,0x92,0x94,0x95,0x95,0x93,0x95,0x93,0x93,0x92,0x01,0x01,0x94,0x96, 0x94,0x93,0x94,0x01,0x01,0x01,0x95,0x92,0x98,0x95,0x95,0x92,0x95,0x96,0x95,0x92, 0x93,0x92,0x95,0x93,0x95,0x01,0x94,0x93,0x95,0x92,0x98,0x92,0x95,0x92,0x95,0x98, 0x92,0x95,0x96,0x95,0x8E,0x96,0x01,0x8E,0x93,0x93,0x95,0x95,0x95,0x94,0x92,0x95, 0x94,0x95,0x94,0x95,0x98,0x01,0x95,0x95,0x94,0x98,0x95,0x98,0x98,0x96,0x95,0x94, 0x93,0x96,0x94,0x98,0x95,0x98,0x97,0x98,0x95,0x97,0x96,0x96,0x96,0x96,0x95,0x01, 0x96,0x98,0x95,0x95,0x98,0x98,0x96,0x01,0x01,0x96,0x94,0x94,0x94,0x01,0x94,0x98, 0x95,0x94,0x94,0x01,0x96,0x96,0x95,0x96,0x95,0x93,0x98,0x95,0x95,0x95,0x99,0x01, 0x94,0x98,0x98,0x94,0x95,0x01,0x92,0x96,0x98,0x96,0x01,0x98,0x95,0x95,0x98,0x98, 0x94,0x01,0x96,0x01,0x01,0x01,0x96,0x01,0x97,0x95,0x98,0x98,0x98,0x98,0x96,0x96, 0x99,0x96,0x98,0x98,0x98,0x98,0x95,0x94,0x98,0x98,0x98,0x96,0x95,0x98,0x95,0x98, 0x98,0x98,0x96,0x96,0x98,0x98,0x95,0x9A,0x98,0x98,0x96,0x95,0x95,0x94,0x95,0x94, 0x95,0x93,0x96,0x98,0x95,0x94,0x92,0x95,0x95,0x95,0x95,0x98,0x01,0x95,0x01,0x96, 0x98,0x01,0x96,0x98,0x99,0x98,0x99,0x98,0x95,0x95,0x98,0x01,0x98,0x98,0x96,0x98, 0x98,0x98,0x95,0x9B,0x99,0x99,0x01,0x01,0x98,0x94,0x95,0x99,0x98,0x95,0x98,0x98, 0x98,0x98,0x92,0x96,0x95,0x96,0x98,0x98,0x98,0x94,0x98,0x95,0x94,0x94,0x98,0x01, 0x96,0x98,0x93,0x98,0x99,0x98,0x01,0x96,0x96,0x01,0x94,0x94,0x95,0x95,0x96,0x94, 0x95,0x92,0x01,0x95,0x96,0x96,0x92,0x98,0x94,0x94,0x96,0x98,0x98,0x98,0x96,0x98, 0x96,0x96,0x98,0x98,0x01,0x01,0x94,0x01,0x95,0x95,0x01,0x95,0x98,0x96,0x95,0x95, 0x95,0x01,0x01,0x95,0x95,0x96,0x94,0x94,0x95,0x98,0x96,0x95,0x95,0x96,0x98,0x95, 0x94,0x93,0x01,0x95,0x94,0x95,0x96,0x95,0x96,0x95,0x95,0x98,0x95,0x98,0x98,0x94, 0x95,0x96,0x95,0x01,0x95,0x95,0x92,0x92,0x95,0x95,0x94,0x96,0x01,0x92,0x94,0x94, 0x94,0x93,0x93,0x96,0x92,0x95,0x94,0x95,0x98,0x95,0x92,0x96,0x96,0x95,0x94,0x98, 0x01,0x95,0x92,0x96,0x93,0x96,0x95,0x01,0x98,0x01,0x96,0x01,0x98,0x95,0x92,0x92, 0x94,0x8E,0x92,0x94,0x95,0x94,0x93,0x95,0x01,0x95,0x98,0x98,0x98,0x98,0x01,0x95, 0x98,0x97,0x95,0x95,0x96,0x95,0x94,0x97,0x95,0x96,0x98,0x95,0x95,0x01,0x98,0x97, 0x98,0x94,0x95,0x95,0x98,0x95,0x94,0x01,0x98,0x95,0x96,0x96,0x01,0x96,0x96,0x95, 0x94,0x95,0x98,0x01,0x98,0x96,0x95,0x98,0x96,0x98,0x92,0x01,0x95,0x98,0x95,0x95, 0x98,0x95,0x95,0x98,0x95,0x98,0x94,0x98,0x94,0x96,0x98,0x98,0x01,0x98,0x95,0x94, 0x95,0x98,0x97,0x95,0x01,0x01,0x96,0x98,0x94,0x96,0x01,0x98,0x94,0x98,0x01,0x98, 0x97,0x94,0x96,0x96,0x98,0x95,0x94,0x98,0x01,0x96,0x93,0x01,0x98,0x01,0x96,0x99, 0x98,0x96,0x98,0x96,0x98,0x96,0x98,0x95,0x98,0x99,0x95,0x98,0x97,0x98,0x95,0x98, 0x94,0x92,0x92,0x8E,0x8E,0x95,0x93,0x01,0x96,0x94,0x98,0x98,0x95,0x94,0x94,0x95, 0x95,0x98,0x98,0x01,0x98,0x96,0x98,0x98,0x01,0x98,0x98,0x99,0x98,0x96,0x98,0x96, 0x95,0x98,0x98,0x98,0x9A,0x94,0x99,0x98,0x98,0x98,0x98,0x98,0x01,0x9A,0x98,0x95, 0x01,0x98,0x98,0x96,0x9A,0x9A,0x01,0x94,0x96,0x98,0x96,0x96,0x01,0x98,0x01,0x98, 0x98,0x98,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x94,0x98,0x98,0x98,0x94,0x96,0x95, 0x95,0x95,0x98,0x93,0x94,0x98,0x94,0x96,0x98,0x96,0x95,0x98,0x99,0x98,0x01,0x96, 0x98,0x98,0x98,0x9A,0x01,0x01,0x01,0x94,0x95,0x01,0x96,0x98,0x95,0x95,0x96,0x96, 0x94,0x01,0x01,0x01,0x98,0x01,0x96,0x96,0x01,0x98,0x96,0x94,0x98,0x98,0x96,0x01, 0x01,0x94,0x98,0x98,0x93,0x93,0x92,0x95,0x01,0x93,0x94,0x92,0x96,0x95,0x92,0x96, 0x93,0x95,0x94,0x93,0x95,0x93,0x01,0x01,0x94,0x95,0x95,0x95,0x92,0x92,0x96,0x92, 0x01,0x01,0x95,0x96,0x01,0x01,0x95,0x95,0x93,0x95,0x94,0x98,0x01,0x95,0x01,0x94, 0x01,0x94,0x95,0x8E,0x92,0x01,0x95,0x98,0x95,0x96,0x93,0x96,0x96,0x98,0x01,0x01, 0x96,0x95,0x95,0x95,0x96,0x93,0x94,0x93,0x95,0x01,0x98,0x95,0x98,0x98,0x98,0x01, 0x98,0x98,0x01,0x92,0x98,0x95,0x98,0x95,0x96,0x95,0x98,0x97,0x98,0x98,0x95,0x98, 0x98,0x98,0x94,0x94,0x92,0x01,0x01,0x95,0x96,0x95,0x98,0x95,0x98,0x01,0x98,0x98, 0x96,0x96,0x95,0x01,0x95,0x98,0x96,0x96,0x98,0x95,0x01,0x01,0x96,0x98,0x94,0x98, 0x95,0x01,0x98,0x01,0x95,0x91,0x98,0x96,0x94,0x01,0x95,0x98,0x01,0x98,0x98,0x95, 0x98,0x98,0x96,0x98,0x01,0x01,0x96,0x96,0x98,0x96,0x94,0x94,0x94,0x98,0x01,0x95, 0x96,0x98,0x98,0x94,0x98,0x95,0x95,0x95,0x95,0x98,0x96,0x01,0x98,0x94,0x98,0x96, 0x98,0x96,0x99,0x96,0x98,0x96,0x95,0x96,0x95,0x94,0x98,0x95,0x96,0x92,0x96,0x98, 0x98,0x01,0x92,0x8E,0x94,0x91,0x93,0x95,0x94,0x96,0x95,0x96,0x94,0x95,0x95,0x96, 0x98,0x96,0x95,0x94,0x96,0x98,0x01,0x96,0x98,0x98,0x98,0x98,0x98,0x97,0x98,0x98, 0x01,0x97,0x94,0x95,0x01,0x99,0x96,0x98,0x98,0x98,0x98,0x98,0x98,0x01,0x96,0x9A, 0x98,0x9A,0x98,0x95,0x95,0x96,0x01,0x98,0x98,0x98,0x98,0x98,0x98,0x94,0x96,0x95, 0x98,0x98,0x98,0x94,0x98,0x95,0x95,0x98,0x98,0x98,0x98,0x98,0x95,0x92,0x98,0x96, 0x96,0x95,0x95,0x01,0x98,0x95,0x98,0x98,0x98,0x93,0x95,0x96,0x99,0x95,0x98,0x99, 0x95,0x99,0x99,0x95,0x94,0x95,0x95,0x96,0x98,0x98,0x95,0x98,0x98,0x94,0x94,0x95, 0x96,0x98,0x95,0x01,0x98,0x98,0x94,0x96,0x98,0x98,0x96,0x98,0x93,0x98,0x01,0x01, 0x92,0x92,0x96,0x93,0x96,0x95,0x91,0x01,0x92,0x95,0x01,0x01,0x93,0x95,0x01,0x98, 0x94,0x95,0x95,0x94,0x94,0x94,0x95,0x01,0x92,0x94,0x93,0x93,0x01,0x96,0x94,0x94, 0x95,0x98,0x98,0x01,0x98,0x95,0x98,0x93,0x95,0x01,0x95,0x94,0x96,0x95,0x98,0x95, 0x94,0x93,0x98,0x01,0x95,0x94,0x98,0x95,0x01,0x95,0x95,0x98,0x01,0x98,0x01,0x98, 0x95,0x98,0x95,0x8E,0x92,0x92,0x91,0x91,0x93,0x95,0x96,0x96,0x92,0x92,0x94,0x95, 0x95,0x98,0x96,0x95,0x96,0x93,0x95,0x01,0x98,0x98,0x98,0x01,0x95,0x96,0x92,0x94, 0x98,0x96,0x98,0x95,0x98,0x95,0x96,0x93,0x96,0x01,0x98,0x01,0x95,0x01,0x98,0x9A, 0x99,0x95,0x95,0x96,0x94,0x95,0x01,0x98,0x95,0x95,0x95,0x98,0x01,0x95,0x93,0x98, 0x98,0x01,0x98,0x94,0x95,0x96,0x98,0x01,0x95,0x95,0x98,0x97,0x96,0x98,0x98,0x96, 0x96,0x95,0x96,0x96,0x94,0x96,0x01,0x96,0x96,0x01,0x01,0x98,0x98,0x94,0x94,0x96, 0x95,0x98,0x99,0x98,0x98,0x96,0x98,0x01,0x98,0x94,0x96,0x98,0x01,0x98,0x01,0x98, 0x01,0x99,0x94,0x99,0x99,0x94,0x98,0x98,0x95,0x95,0x98,0x98,0x98,0x01,0x92,0x94, 0x8E,0x8E,0x96,0x93,0x95,0x96,0x98,0x94,0x95,0x01,0x92,0x01,0x96,0x95,0x98,0x98, 0x98,0x98,0x94,0x98,0x98,0x01,0x98,0x95,0x01,0x96,0x94,0x01,0x96,0x96,0x98,0x98, 0x95,0x01,0x95,0x96,0x01,0x97,0x98,0x93,0x97,0x98,0x98,0x98,0x98,0x98,0x96,0x96, 0x98,0x98,0x98,0x01,0x98,0x98,0x95,0x98,0x98,0x99,0x98,0x98,0x98,0x95,0x96,0x94, 0x96,0x98,0x96,0x95,0x01,0x95,0x92,0x98,0x98,0x96,0x01,0x99,0x99,0x98,0x95,0x95, 0x95,0x01,0x96,0x98,0x98,0x98,0x96,0x98,0x98,0x98,0x99,0x98,0x98,0x01,0x98,0x98, 0x98,0x01,0x01,0x96,0x98,0x95,0x93,0x93,0x96,0x95,0x93,0x96,0x01,0x98,0x94,0x96, 0x98,0x96,0x01,0x92,0x92,0x92,0x96,0x96,0x01,0x98,0x95,0x95,0x98,0x95,0x96,0x98, 0x92,0x94,0x92,0x93,0x92,0x95,0x01,0x95,0x96,0x95,0x98,0x01,0x92,0x93,0x94,0x94, 0x95,0x96,0x98,0x01,0x92,0x95,0x96,0x94,0x98,0x01,0x01,0x98,0x96,0x96,0x95,0x98, 0x95,0x96,0x96,0x92,0x96,0x96,0x93,0x98,0x92,0x92,0x01,0x96,0x95,0x95,0x96,0x8E, 0x92,0x94,0x01,0x95,0x96,0x98,0x94,0x01,0x96,0x95,0x94,0x94,0x96,0x98,0x98,0x96, 0x98,0x96,0x96,0x94,0x01,0x93,0x92,0x93,0x96,0x01,0x98,0x96,0x01,0x93,0x92,0x92, 0x92,0x93,0x92,0x93,0x95,0x8E,0x8E,0x95,0x95,0x98,0x98,0x95,0x95,0x94,0x93,0x92, 0x94,0x95,0x96,0x98,0x01,0x98,0x96,0x99,0x95,0x98,0x98,0x98,0x94,0x98,0x95,0x98, 0x99,0x98,0x98,0x98,0x98,0x01,0x98,0x01,0x98,0x95,0x01,0x98,0x98,0x95,0x98,0x98, 0x98,0x98,0x97,0x95,0x98,0x98,0x01,0x98,0x95,0x98,0x94,0x98,0x93,0x95,0x98,0x95, 0x95,0x98,0x96,0x96,0x98,0x98,0x95,0x98,0x95,0x93,0x01,0x94,0x95,0x98,0x96,0x98, 0x96,0x98,0x98,0x99,0x96,0x98,0x98,0x98,0x01,0x98,0x96,0x98,0x95,0x98,0x9A,0x98, 0x98,0x96,0x98,0x98,0x98,0x98,0x95,0x96,0x95,0x95,0x96,0x95,0x95,0x95,0x94,0x8E, 0x8E,0x92,0x92,0x01,0x95,0x98,0x95,0x01,0x95,0x94,0x96,0x96,0x01,0x95,0x98,0x96, 0x98,0x01,0x98,0x96,0x01,0x94,0x95,0x96,0x98,0x01,0x95,0x95,0x01,0x01,0x98,0x95, 0x98,0x94,0x98,0x98,0x96,0x94,0x95,0x93,0x01,0x98,0x98,0x95,0x94,0x98,0x96,0x98, 0x98,0x98,0x98,0x01,0x96,0x98,0x95,0x01,0x95,0x92,0x96,0x96,0x01,0x94,0x96,0x01, 0x98,0x95,0x98,0x96,0x96,0x01,0x98,0x93,0x96,0x94,0x95,0x98,0x96,0x01,0x98,0x96, 0x99,0x98,0x98,0x98,0x99,0x98,0x94,0x99,0x98,0x98,0x98,0x98,0x01,0x01,0x95,0x95, 0x94,0x94,0x96,0x95,0x95,0x92,0x8E,0x8E,0x92,0x94,0x92,0x93,0x8E,0x8E,0x92,0x8E, 0x92,0x8E,0x92,0x8E,0x94,0x93,0x92,0x95,0x93,0x93,0x98,0x96,0x8E,0x8E,0x8E,0x8D, 0x95,0x98,0x98,0x95,0x98,0x01,0x96,0x95,0x96,0x95,0x96,0x95,0x96,0x98,0x98,0x01, 0x01,0x98,0x96,0x94,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x96,0x98,0x01,0x95,0x95, 0x96,0x98,0x98,0x96,0x96,0x96,0x98,0x01,0x92,0x01,0x95,0x95,0x98,0x01,0x96,0x01, 0x98,0x98,0x01,0x98,0x01,0x94,0x98,0x98,0x98,0x98,0x98,0x94,0x96,0x94,0x98,0x95, 0x01,0x98,0x98,0x93,0x98,0x94,0x94,0x98,0x96,0x95,0x98,0x95,0x95,0x95,0x94,0x92, 0x01,0x93,0x95,0x93,0x94,0x94,0x94,0x96,0x96,0x96,0x94,0x98,0x98,0x94,0x92,0x95, 0x01,0x95,0x98,0x96,0x99,0x94,0x98,0x95,0x98,0x94,0x98,0x95,0x98,0x94,0x98,0x98, 0x96,0x96,0x98,0x95,0x98,0x95,0x98,0x98,0x96,0x98,0x99,0x98,0x98,0x94,0x94,0x94, 0x96,0x93,0x96,0x01,0x95,0x01,0x96,0x01,0x95,0x93,0x95,0x01,0x94,0x95,0x94,0x93, 0x94,0x96,0x95,0x94,0x94,0x95,0x01,0x95,0x95,0x98,0x98,0x94,0x98,0x95,0x01,0x99, 0x95,0x01,0x01,0x98,0x98,0x01,0x98,0x01,0x99,0x01,0x96,0x98,0x98,0x98,0x98,0x98, 0x98,0x98,0x94,0x98,0x95,0x01,0x94,0x93,0x92,0x95,0x93,0x8E,0x95,0x93,0x95,0x95, 0x95,0x93,0x94,0x96,0x98,0x98,0x95,0x01,0x96,0x01,0x98,0x95,0x96,0x98,0x96,0x95, 0x98,0x01,0x95,0x01,0x96,0x98,0x96,0x95,0x98,0x98,0x98,0x98,0x93,0x95,0x95,0x98, 0x95,0x98,0x95,0x98,0x95,0x96,0x95,0x95,0x96,0x01,0x96,0x95,0x98,0x98,0x96,0x95, 0x96,0x98,0x01,0x98,0x95,0x96,0x95,0x98,0x01,0x01,0x98,0x99,0x01,0x96,0x98,0x96, 0x98,0x98,0x99,0x98,0x98,0x99,0x95,0x99,0x95,0x99,0x98,0x99,0x98,0x99,0x98,0x98, 0x98,0x98,0x99,0x94,0x01,0x94,0x01,0x95,0x97,0x98,0x94,0x94,0x98,0x01,0x93,0x94, 0x93,0x96,0x92,0x94,0x92,0x8E,0x96,0x95,0x98,0x93,0x94,0x01,0x92,0x92,0x93,0x8D, 0x94,0x96,0x96,0x8E,0x92,0x8E,0x94,0x92,0x94,0x8E,0x94,0x92,0x94,0x95,0x94,0x98, 0x92,0x01,0x94,0x98,0x96,0x98,0x93,0x98,0x98,0x98,0x94,0x96,0x95,0x98,0x98,0x96, 0x96,0x98,0x98,0x01,0x96,0x95,0x94,0x96,0x98,0x98,0x01,0x01,0x96,0x93,0x96,0x95, 0x95,0x95,0x98,0x98,0x98,0x98,0x01,0x96,0x95,0x96,0x01,0x98,0x98,0x96,0x98,0x98, 0x96,0x98,0x96,0x01,0x98,0x98,0x01,0x98,0x98,0x96,0x95,0x98,0x95,0x98,0x01,0x98, 0x92,0x96,0x96,0x98,0x96,0x96,0x95,0x97,0x98,0x96,0x95,0x01,0x01,0x98,0x95,0x96, 0x01,0x01,0x96,0x95,0x95,0x94,0x01,0x01,0x98,0x95,0x01,0x96,0x98,0x98,0x93,0x01, 0x01,0x95,0x96,0x98,0x96,0x01,0x98,0x96,0x96,0x94,0x98,0x95,0x01,0x94,0x94,0x98, 0x93,0x95,0x98,0x01,0x98,0x98,0x98,0x98,0x96,0x01,0x01,0x95,0x98,0x96,0x95,0x95, 0x01,0x98,0x92,0x01,0x95,0x96,0x98,0x94,0x98,0x98,0x94,0x01,0x95,0x94,0x95,0x98, 0x96,0x95,0x95,0x95,0x95,0x95,0x96,0x98,0x01,0x94,0x96,0x98,0x9A,0x01,0x99,0x98, 0x98,0x01,0x99,0x98,0x01,0x98,0x01,0x01,0x98,0x98,0x98,0x98,0x98,0x95,0x98,0x95, 0x96,0x95,0x95,0x95,0x98,0x94,0x93,0x93,0x01,0x92,0x92,0x98,0x95,0x93,0x94,0x92, 0x94,0x98,0x95,0x98,0x95,0x95,0x96,0x94,0x96,0x96,0x91,0x98,0x96,0x95,0x98,0x98, 0x94,0x95,0x94,0x96,0x98,0x95,0x95,0x01,0x95,0x94,0x01,0x98,0x96,0x98,0x98,0x96, 0x94,0x95,0x98,0x98,0x96,0x92,0x98,0x96,0x95,0x95,0x98,0x95,0x98,0x94,0x95,0x98, 0x98,0x98,0x95,0x95,0x98,0x01,0x96,0x98,0x98,0x93,0x98,0x98,0x96,0x98,0x98,0x96, 0x98,0x98,0x01,0x01,0x98,0x98,0x98,0x95,0x95,0x01,0x98,0x01,0x98,0x01,0x98,0x98, 0x98,0x98,0x01,0x01,0x95,0x96,0x96,0x98,0x98,0x98,0x93,0x98,0x93,0x96,0x95,0x95, 0x94,0x8E,0x8E,0x94,0x92,0x94,0x95,0x95,0x96,0x93,0x01,0x8E,0x95,0x94,0x8E,0x95, 0x95,0x92,0x8E,0x95,0x96,0x94,0x92,0x92,0x92,0x98,0x95,0x94,0x94,0x96,0x98,0x95, 0x92,0x01,0x98,0x98,0x98,0x94,0x95,0x95,0x01,0x95,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x96,0x98,0x95,0x96, 0x95,0x94,0x01,0x01,0x93,0x93,0x96,0x96,0x93,0x9A,0x98,0x95,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x97,0x96,0x95,0x96,0x95,0x98,0x96,0x94,0x94,0x01,0x94, 0x96,0x95,0x98,0x96,0x95,0x98,0x96,0x92,0x95,0x95,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x96,0x92,0x95,0x98, 0x96,0x92,0x94,0x94,0x94,0x98,0x98,0x01,0x99,0x95,0x98,0x98,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x94,0x98,0x98,0x98,0x01,0x01,0x01,0x98,0x94,0x94,0x98, 0x98,0x96,0x95,0x96,0x95,0x98,0x92,0x95,0x95,0x94,0x9F,0x9F,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95, 0x95,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x93,0x94,0x95,0x98, 0x01,0x98,0x98,0x96,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x01,0x01,0x98,0x94,0x96,0x94,0x98,0x01,0x95, 0x91,0x01,0x95,0x92,0x93,0x94,0x95,0x92,0x92,0x93,0x9F,0x9F,0x9D,0x95,0x10,0x10, 0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x95,0x95,0x10,0x10,0x95,0x9D,0x95,0x10,0x10, 0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x95,0x95,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D, 0x9D,0x95,0x10,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x95,0x9D, 0x95,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x95, 0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x95, 0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x10, 0x10,0x95,0x9D,0x95,0x10,0x10,0x95,0x95,0x10,0x10,0x95,0x9D,0x93,0x95,0x98,0x98, 0x96,0x99,0x98,0x98,0x01,0x96,0x99,0x98,0x94,0x96,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95, 0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x98,0x01,0x92,0x95,0x93,0x95,0x98,0x96,0x93, 0x99,0x95,0x96,0x98,0x96,0x96,0x98,0x01,0x92,0x92,0x9F,0x9F,0x95,0x10,0x11,0x10, 0x11,0x10,0x11,0x95,0x95,0x10,0x11,0x95,0x95,0x10,0x11,0x95,0x95,0x10,0x11,0x10, 0x11,0x10,0x11,0x95,0x95,0x10,0x11,0x95,0x95,0x10,0x11,0x95,0x9D,0x9D,0x9D,0x9D, 0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x95, 0x95,0x10,0x11,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x11,0x10,0x11,0x95,0x9D,0x95,0x11,0x10,0x11,0x95, 0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x95,0x10,0x11,0x10,0x95,0x9D,0x95,0x10, 0x11,0x10,0x95,0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x95,0x11,0x10,0x11,0x10, 0x11,0x10,0x95,0x95,0x11,0x10,0x95,0x95,0x11,0x10,0x95,0x9D,0x93,0x98,0x98,0x98, 0x98,0x01,0x01,0x98,0x98,0x98,0x94,0x98,0x96,0x96,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x95, 0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10, 0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x98,0x94,0x93,0x98,0x98,0x98,0x95,0x95,0x8E, 0x01,0x93,0x01,0x98,0x93,0x94,0x94,0x94,0x95,0x8E,0x9F,0x9F,0x95,0x12,0x12,0x95, 0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95, 0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x9D,0x9D,0x9D,0x9D, 0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95,0x95,0x12,0x12,0x95, 0x95,0x12,0x12,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x12,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x12,0x11,0x12,0x95,0x12,0x11,0x12,0x12,0x95, 0x95,0x12,0x12,0x95,0x95,0x95,0x95,0x9D,0x95,0x12,0x12,0x12,0x11,0x95,0x12,0x12, 0x11,0x12,0x95,0x95,0x11,0x12,0x95,0x95,0x11,0x12,0x95,0x95,0x11,0x12,0x95,0x95, 0x11,0x12,0x95,0x95,0x11,0x12,0x95,0x95,0x11,0x12,0x95,0x9D,0x93,0x95,0x98,0x01, 0x01,0x01,0x01,0x96,0x98,0x96,0x95,0x01,0x96,0x96,0x93,0x92,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x91,0x94,0x9F,0x9D,0x9D,0x95,0x10,0x11,0x10,0x11,0x95,0x9D,0x95,0x11, 0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11, 0x10,0x95,0x9D,0x95,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11, 0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x95,0x94,0x98,0x93,0x92,0x95,0x95,0x01, 0x98,0x92,0x94,0x8E,0x92,0x92,0x93,0x93,0x93,0x91,0x9F,0x9F,0x95,0x12,0x13,0x12, 0x13,0x12,0x13,0x95,0x95,0x12,0x13,0x95,0x95,0x12,0x13,0x95,0x95,0x12,0x13,0x12, 0x13,0x12,0x13,0x95,0x95,0x12,0x13,0x95,0x95,0x12,0x13,0x95,0x9D,0x9D,0x9D,0x9D, 0x95,0x12,0x13,0x12,0x13,0x12,0x13,0x95,0x95,0x12,0x13,0x12,0x13,0x12,0x95,0x9D, 0x95,0x12,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x13,0x12,0x13,0x12,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x95, 0x95,0x12,0x13,0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x13,0x12,0x13,0x12, 0x13,0x12,0x95,0x95,0x13,0x12,0x95,0x95,0x13,0x12,0x95,0x95,0x13,0x12,0x13,0x12, 0x13,0x12,0x95,0x95,0x13,0x12,0x13,0x12,0x13,0x12,0x95,0x9D,0x93,0x96,0x96,0x96, 0x95,0x98,0x96,0x96,0x95,0x98,0x98,0x95,0x01,0x94,0x95,0x95,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x93,0x96,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x12,0x12,0x11,0x12,0x95,0x12,0x11, 0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95,0x95,0x95,0x12,0x11,0x12,0x95,0x12,0x11, 0x12,0x95,0x9D,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95,0x95,0x95,0x12,0x11, 0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x94,0x98,0x93,0x92,0x94,0x01,0x8E,0x8E,0x93, 0x8D,0x92,0x8E,0x8E,0x94,0x92,0x93,0x94,0x92,0x94,0x9F,0x9F,0x95,0x13,0x13,0x13, 0x13,0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x95,0x13,0x13,0x13, 0x13,0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D, 0x95,0x13,0x13,0x14,0x13,0x13,0x13,0x95,0x95,0x13,0x13,0x14,0x13,0x13,0x13,0x95, 0x95,0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x13,0x13,0x14,0x13,0x13,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x13,0x13,0x95,0x13,0x13,0x14,0x95,0x13,0x13,0x95, 0x95,0x13,0x13,0x14,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x95,0x13,0x13,0x13,0x95, 0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x95,0x13,0x13,0x95,0x95,0x13,0x13,0x13,0x13, 0x13,0x95,0x9D,0x9D,0x95,0x13,0x13,0x13,0x13,0x95,0x9D,0x9D,0x93,0x92,0x93,0x94, 0x95,0x01,0x98,0x96,0x95,0x93,0x01,0x96,0x94,0x92,0x8E,0x95,0x9F,0x9F,0x9D,0x9D, 0x90,0x93,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x13, 0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13, 0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x93,0x92,0x01,0x95,0x95,0x01,0x92,0x92,0x93, 0x92,0x8E,0x96,0x91,0x94,0x93,0x98,0x93,0x93,0x92,0x9F,0x9F,0x95,0x14,0x14,0x95, 0x95,0x14,0x15,0x95,0x95,0x14,0x14,0x14,0x15,0x14,0x15,0x95,0x95,0x14,0x14,0x95, 0x95,0x14,0x15,0x95,0x95,0x14,0x14,0x95,0x95,0x14,0x15,0x95,0x95,0x95,0x95,0x9D, 0x95,0x14,0x15,0x95,0x95,0x14,0x14,0x95,0x95,0x14,0x15,0x95,0x95,0x14,0x14,0x95, 0x95,0x14,0x15,0x95,0x95,0x95,0x95,0x9D,0x95,0x14,0x15,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x95,0x15,0x95,0x95,0x14,0x14,0x95, 0x95,0x14,0x15,0x95,0x95,0x95,0x95,0x9D,0x95,0x14,0x15,0x95,0x95,0x14,0x95,0x95, 0x15,0x14,0x95,0x95,0x15,0x14,0x95,0x95,0x15,0x14,0x95,0x95,0x15,0x14,0x95,0x95, 0x15,0x14,0x95,0x9D,0x9D,0x95,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x93,0x92,0x95,0x93, 0x92,0x92,0x92,0x8E,0x96,0x8E,0x94,0x8E,0x93,0x96,0x98,0x92,0x9F,0x9F,0x9D,0x9D, 0x90,0x96,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x13,0x13,0x13,0x95,0x13,0x13,0x14,0x95, 0x13,0x13,0x13,0x95,0x13,0x13,0x14,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x14,0x13, 0x13,0x95,0x9D,0x95,0x13,0x13,0x14,0x95,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13, 0x95,0x95,0x13,0x13,0x13,0x13,0x14,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x98,0x93,0x94,0x01,0x92,0x8E,0x92,0x92,0x96, 0x92,0x95,0x91,0x95,0x92,0x94,0x93,0x94,0x94,0x01,0x9F,0x9F,0x95,0x15,0x15,0x95, 0x95,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x95, 0x95,0x15,0x15,0x95,0x95,0x15,0x15,0x95,0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95, 0x95,0x15,0x15,0x95,0x95,0x15,0x15,0x95,0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95, 0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95,0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x15,0x15,0x95,0x9D,0x95,0x9D,0x95,0x15,0x15,0x95, 0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95,0x95,0x15,0x15,0x95,0x9D,0x95,0x9D,0x95, 0x15,0x15,0x95,0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x95,0x95,0x15,0x15,0x95,0x95, 0x15,0x15,0x95,0x9D,0x9D,0x95,0x15,0x15,0x95,0x9D,0x9D,0x9D,0x93,0x94,0x96,0x98, 0x98,0x01,0x95,0x8E,0x94,0x92,0x94,0x8E,0x93,0x95,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x14,0x14,0x14,0x95,0x95,0x15,0x95,0x95, 0x14,0x14,0x14,0x95,0x14,0x15,0x14,0x95,0x9D,0x95,0x14,0x15,0x14,0x95,0x14,0x15, 0x14,0x95,0x9D,0x95,0x14,0x15,0x14,0x95,0x95,0x14,0x14,0x15,0x14,0x15,0x14,0x15, 0x14,0x95,0x14,0x15,0x14,0x15,0x14,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x01,0x95,0x01,0x8E,0x96,0x94,0x93,0x01,0x01, 0x95,0x93,0x92,0x95,0x92,0x95,0x93,0x95,0x95,0x98,0x9F,0x9F,0x95,0x16,0x16,0x95, 0x95,0x16,0x16,0x95,0x9D,0x9D,0x95,0x15,0x16,0x95,0x9D,0x9D,0x95,0x16,0x16,0x95, 0x95,0x16,0x16,0x95,0x95,0x16,0x16,0x95,0x95,0x16,0x16,0x15,0x16,0x16,0x16,0x95, 0x95,0x16,0x16,0x95,0x95,0x16,0x16,0x95,0x95,0x16,0x16,0x15,0x16,0x16,0x95,0x9D, 0x95,0x16,0x16,0x15,0x16,0x16,0x16,0x95,0x95,0x16,0x16,0x15,0x16,0x16,0x16,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x16,0x15,0x95,0x9D,0x9D,0x9D,0x95,0x16,0x16,0x95, 0x95,0x16,0x16,0x15,0x16,0x16,0x16,0x95,0x95,0x16,0x16,0x95,0x9D,0x9D,0x9D,0x95, 0x16,0x16,0x95,0x9D,0x95,0x16,0x16,0x15,0x16,0x95,0x9D,0x95,0x16,0x16,0x95,0x95, 0x16,0x16,0x95,0x9D,0x9D,0x95,0x16,0x15,0x95,0x9D,0x9D,0x9D,0x93,0x92,0x95,0x94, 0x96,0x01,0x94,0x91,0x94,0x95,0x92,0x92,0x95,0x96,0x93,0x93,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x99,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x9D,0x95, 0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15, 0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x15,0x15, 0x15,0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x8E,0x93,0x95,0x93,0x96,0x94,0x98,0x98,0x01, 0x92,0x95,0x94,0x96,0x96,0x98,0x01,0x98,0x01,0x98,0x9F,0x9F,0x9D,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x93,0x95,0x94,0x96, 0x93,0x95,0x92,0x95,0x93,0x92,0x96,0x98,0x93,0x8E,0x95,0x92,0x9F,0x9F,0x9D,0x9D, 0x91,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x16,0x16,0x15,0x95,0x9D,0x9D,0x9D,0x95, 0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x15,0x16,0x16,0x95,0x15,0x16, 0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x15,0x16, 0x16,0x95,0x15,0x16,0x16,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x8E,0x8E,0x98,0x96,0x96,0x95,0x98,0x98,0x01,0x94, 0x95,0x96,0x96,0x95,0x01,0x01,0x01,0x95,0x95,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x93,0x92,0x95,0x93, 0x96,0x95,0x98,0x95,0x98,0x96,0x98,0x98,0x94,0x95,0x95,0x92,0x9F,0x9F,0x9D,0x9D, 0x94,0x9B,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x95, 0x17,0x17,0x17,0x95,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x95,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17, 0x17,0x95,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x94,0x98,0x97,0x95,0x98,0x01,0x98,0x94,0x96, 0x98,0x98,0x96,0x95,0x95,0x98,0x96,0x95,0x95,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x93,0x96,0x92,0x92, 0x93,0x95,0x96,0x95,0x01,0x95,0x98,0x94,0x92,0x96,0x93,0x93,0x9F,0x9F,0x9D,0x9D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x18,0x17,0x95,0x9D,0x9D,0x9D,0x95, 0x17,0x18,0x17,0x95,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x95,0x18, 0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18, 0x95,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x99,0x98,0x99,0x98,0x98,0x95,0x95,0x96, 0x98,0x98,0x01,0x95,0x98,0x01,0x98,0x94,0x96,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x93,0x94,0x96,0x94, 0x96,0x98,0x01,0x92,0x96,0x95,0x95,0x92,0x94,0x95,0x93,0x92,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x98,0x98,0x95,0x98,0x99,0x99,0x98,0x95, 0x98,0x95,0x96,0x95,0x95,0x96,0x96,0x96,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x93,0x91,0x94,0x95, 0x01,0x94,0x96,0x95,0x01,0x91,0x94,0x8E,0x94,0x92,0x95,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x98,0x95,0x95,0x96,0x95,0x98,0x99,0x95, 0x9B,0x01,0x01,0x95,0x95,0x94,0x93,0x96,0x01,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x93,0x94,0x94,0x95, 0x95,0x92,0x8E,0x8E,0x8E,0x92,0x92,0x96,0x96,0x94,0x93,0x93,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x01,0x95,0x98,0x94,0x95,0x01,0x98,0x94,0x9B, 0x98,0x97,0x94,0x95,0x01,0x95,0x95,0x01,0x95,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x93,0x94,0x92,0x93, 0x92,0x92,0x01,0x94,0x95,0x96,0x95,0x94,0x01,0x95,0x95,0x94,0x99,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x95,0x95,0x97,0x01,0x98,0x98,0x98,0x98,0x01,0x98, 0x95,0x01,0x01,0x95,0x95,0x93,0x96,0x93,0x01,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x94,0x95, 0x95,0x98,0x94,0x94,0x94,0x95,0x92,0x96,0x95,0x94,0x96,0x93,0x92,0x95,0x01,0x94, 0x94,0x98,0x93,0x98,0x93,0x93,0x01,0x96,0x95,0x95,0x95,0x98,0x94,0x96,0x91,0x95, 0x94,0x92,0x96,0x94,0x94,0x95,0x01,0x01,0x96,0x95,0x98,0x01,0x95,0x98,0x01,0x96, 0x98,0x99,0x99,0x96,0x99,0x01,0x98,0x95,0x01,0x01,0x98,0x95,0x98,0x98,0x98,0x95, 0x98,0x98,0x94,0x98,0x01,0x01,0x96,0x94,0x95,0x95,0x96,0x96,0x98,0x98,0x98,0x95, 0x96,0x98,0x96,0x95,0x96,0x95,0x98,0x96,0x98,0x99,0x96,0x95,0x98,0x98,0x98,0x96, 0x95,0x99,0x01,0x96,0x01,0x94,0x01,0x95,0x95,0x98,0x01,0x95,0x01,0x96,0x98,0x98, 0x95,0x98,0x96,0x01,0x99,0x98,0x96,0x95,0x98,0x98,0x95,0x98,0x9A,0x95,0x98,0x98, 0x96,0x01,0x93,0x8E,0x94,0x92,0x94,0x92,0x95,0x92,0x95,0x95,0x93,0x92,0x92,0x92, 0x96,0x95,0x98,0x96,0x98,0x01,0x01,0x98,0x99,0x98,0x95,0x95,0x98,0x98,0x98,0x98, 0x96,0x99,0x93,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98, 0x93,0x98,0x98,0x95,0x93,0x95,0x93,0x93,0x93,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x93,0x95,0x98, 0x93,0x96,0x94,0x96,0x95,0x98,0x95,0x95,0x96,0x92,0x93,0x96,0x95,0x93,0x95,0x95, 0x94,0x95,0x93,0x95,0x96,0x94,0x96,0x94,0x98,0x95,0x94,0x01,0x92,0x98,0x93,0x98, 0x01,0x94,0x01,0x98,0x98,0x98,0x96,0x98,0x96,0x98,0x94,0x98,0x98,0x99,0x98,0x98, 0x98,0x98,0x98,0x98,0x98,0x98,0x01,0x95,0x96,0x98,0x01,0x98,0x96,0x98,0x98,0x01, 0x95,0x96,0x95,0x96,0x95,0x96,0x94,0x98,0x98,0x96,0x01,0x98,0x94,0x95,0x95,0x98, 0x01,0x98,0x98,0x01,0x98,0x96,0x98,0x95,0x96,0x98,0x98,0x98,0x98,0x01,0x98,0x98, 0x95,0x96,0x01,0x94,0x95,0x01,0x92,0x92,0x8E,0x98,0x96,0x96,0x98,0x95,0x95,0x01, 0x95,0x01,0x93,0x98,0x92,0x92,0x97,0x98,0x95,0x95,0x98,0x01,0x01,0x96,0x98,0x98, 0x98,0x95,0x95,0x95,0x94,0x94,0x95,0x93,0x94,0x93,0x95,0x95,0x93,0x94,0x91,0x01, 0x96,0x95,0x98,0x95,0x96,0x98,0x01,0x01,0x96,0x99,0x01,0x98,0x99,0x96,0x99,0x98, 0x95,0x99,0x98,0x98,0x98,0x96,0x9A,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9D, 0x92,0x95,0x92,0x92,0x95,0x96,0x95,0x01,0x95,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x96,0x94,0x95, 0x94,0x93,0x96,0x94,0x94,0x95,0x96,0x92,0x01,0x92,0x96,0x94,0x98,0x94,0x01,0x94, 0x95,0x98,0x95,0x96,0x96,0x95,0x98,0x01,0x95,0x94,0x01,0x95,0x95,0x93,0x95,0x98, 0x01,0x94,0x01,0x98,0x94,0x98,0x99,0x96,0x98,0x01,0x99,0x95,0x9A,0x96,0x98,0x98, 0x98,0x01,0x94,0x98,0x98,0x98,0x93,0x95,0x98,0x94,0x96,0x96,0x95,0x98,0x92,0x96, 0x95,0x98,0x01,0x95,0x01,0x98,0x98,0x98,0x96,0x98,0x96,0x98,0x92,0x94,0x96,0x98, 0x96,0x96,0x98,0x96,0x98,0x96,0x96,0x95,0x01,0x95,0x94,0x96,0x98,0x96,0x95,0x98, 0x94,0x93,0x8E,0x94,0x8E,0x8E,0x93,0x93,0x92,0x98,0x95,0x98,0x01,0x01,0x95,0x98, 0x96,0x98,0x94,0x96,0x95,0x98,0x01,0x98,0x98,0x01,0x97,0x98,0x98,0x95,0x98,0x98, 0x01,0x95,0x95,0x95,0x01,0x95,0x94,0x8E,0x92,0x93,0x92,0x95,0x93,0x95,0x98,0x98, 0x98,0x95,0x98,0x95,0x98,0x98,0x01,0x98,0x98,0x98,0x95,0x98,0x98,0x96,0x98,0x96, 0x98,0x95,0x95,0x98,0x98,0x98,0x94,0x95,0x01,0x98,0x98,0x9A,0x98,0x98,0x98,0x98, 0x01,0x93,0x93,0x93,0x95,0x01,0x94,0x93,0x94,0x91,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x91,0x93,0x92,0x93, 0x01,0x95,0x96,0x98,0x94,0x95,0x93,0x96,0x98,0x98,0x01,0x95,0x98,0x98,0x95,0x95, 0x98,0x95,0x94,0x93,0x98,0x01,0x93,0x93,0x96,0x92,0x95,0x95,0x96,0x95,0x96,0x98, 0x98,0x95,0x96,0x98,0x98,0x98,0x98,0x98,0x96,0x01,0x98,0x98,0x98,0x95,0x95,0x94, 0x96,0x98,0x01,0x95,0x98,0x01,0x96,0x98,0x01,0x96,0x98,0x94,0x98,0x98,0x96,0x95, 0x01,0x98,0x95,0x01,0x98,0x01,0x98,0x98,0x98,0x01,0x98,0x98,0x94,0x96,0x96,0x94, 0x98,0x01,0x96,0x95,0x96,0x95,0x98,0x95,0x96,0x94,0x95,0x96,0x01,0x96,0x95,0x96, 0x98,0x8E,0x8E,0x92,0x95,0x93,0x94,0x98,0x93,0x95,0x01,0x95,0x98,0x96,0x95,0x95, 0x01,0x94,0x96,0x94,0x96,0x98,0x95,0x95,0x96,0x01,0x96,0x98,0x96,0x95,0x94,0x95, 0x95,0x92,0x8E,0x8E,0x92,0x94,0x98,0x98,0x96,0x96,0x01,0x95,0x94,0x98,0x99,0x98, 0x98,0x98,0x96,0x98,0x01,0x99,0x98,0x98,0x98,0x98,0x98,0x01,0x98,0x9A,0x9A,0x98, 0x96,0x95,0x94,0x98,0x9A,0x96,0x98,0x95,0x9A,0x9A,0x98,0x98,0x98,0x98,0x94,0x92, 0x91,0x94,0x92,0x93,0x95,0x93,0x92,0x95,0x93,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x96,0x94, 0x95,0x95,0x95,0x98,0x93,0x98,0x96,0x96,0x93,0x93,0x95,0x98,0x96,0x94,0x96,0x96, 0x93,0x96,0x93,0x95,0x94,0x91,0x92,0x92,0x93,0x98,0x92,0x96,0x01,0x98,0x94,0x98, 0x01,0x95,0x01,0x95,0x95,0x01,0x96,0x01,0x98,0x01,0x98,0x96,0x97,0x98,0x95,0x94, 0x95,0x96,0x95,0x96,0x98,0x95,0x92,0x95,0x98,0x95,0x96,0x95,0x94,0x93,0x95,0x95, 0x95,0x95,0x96,0x96,0x98,0x95,0x96,0x01,0x96,0x93,0x98,0x95,0x98,0x01,0x95,0x96, 0x96,0x96,0x94,0x96,0x96,0x96,0x96,0x95,0x98,0x92,0x96,0x96,0x01,0x98,0x01,0x96, 0x94,0x95,0x8E,0x98,0x95,0x95,0x95,0x94,0x95,0x98,0x98,0x95,0x95,0x01,0x98,0x94, 0x96,0x96,0x98,0x96,0x95,0x98,0x01,0x95,0x94,0x95,0x96,0x94,0x98,0x94,0x95,0x8E, 0x8E,0x8E,0x94,0x95,0x01,0x95,0x96,0x95,0x95,0x94,0x98,0x01,0x99,0x98,0x98,0x98, 0x9A,0x99,0x9A,0x9A,0x98,0x98,0x94,0x98,0x98,0x01,0x95,0x9A,0x95,0x98,0x9A,0x01, 0x95,0x96,0x01,0x9A,0x98,0x98,0x9A,0x96,0x98,0x98,0x99,0x96,0x96,0x98,0x01,0x95, 0x94,0x93,0x8E,0x8E,0x94,0x92,0x92,0x96,0x94,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x95,0x01, 0x01,0x95,0x98,0x95,0x95,0x01,0x95,0x96,0x01,0x91,0x93,0x98,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x97,0x94,0x98,0x01,0x98,0x96,0x95,0x93,0x98,0x96,0x94, 0x94,0x8E,0x8E,0x93,0x93,0x92,0x8E,0x94,0x92,0x8E,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x91,0x92,0x95,0x96, 0x93,0x92,0x98,0x95,0x98,0x95,0x95,0x95,0x94,0x92,0x95,0x96,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x94,0x95,0x01,0x95,0x95,0x95,0x96,0x96,0x96,0x98,0x98, 0x96,0x8E,0x96,0x8E,0x95,0x92,0x8E,0x94,0x8E,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x91,0x95, 0x95,0x93,0x92,0x94,0x92,0x92,0x98,0x01,0x93,0x95,0x98,0x94,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x96,0x98,0x98,0x01,0x01,0x01,0x98,0x01,0x93, 0x8D,0x92,0x92,0x93,0x96,0x93,0x8E,0x92,0x95,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x94,0x01, 0x93,0x94,0x94,0x98,0x92,0x95,0x93,0x95,0x95,0x01,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x96,0x94,0x92,0x94,0x94,0x98,0x01,0x95,0x95, 0x95,0x8E,0x93,0x94,0x8E,0x95,0x94,0x98,0x94,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x93,0x95,0x94, 0x98,0x94,0x93,0x93,0x95,0x94,0x96,0x94,0x95,0x94,0x95,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10, 0x10,0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95, 0x9D,0x95,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x10,0x10,0x10,0x95,0x95,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10, 0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x98,0x98,0x92,0x01,0x98,0x95,0x01,0x01,0x94, 0x01,0x94,0x92,0x95,0x91,0x92,0x93,0x92,0x96,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x95,0x93,0x93, 0x95,0x95,0x95,0x95,0x95,0x93,0x96,0x98,0x95,0x96,0x95,0x96,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x91,0x94,0x9F,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x11, 0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95, 0x9D,0x95,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95, 0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95,0x10,0x11, 0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95,0x95,0x11,0x10,0x11, 0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x96,0x94,0x94,0x01,0x98,0x01,0x96,0x95,0x98, 0x98,0x95,0x96,0x95,0x93,0x96,0x95,0x94,0x95,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x91,0x91,0x92,0x93, 0x93,0x96,0x93,0x98,0x94,0x01,0x98,0x98,0x98,0x93,0x98,0x97,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x93,0x96,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x11, 0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95, 0x9D,0x95,0x12,0x11,0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95, 0x95,0x95,0x95,0x11,0x12,0x12,0x95,0x95,0x95,0x95,0x12,0x11,0x12,0x95,0x12,0x11, 0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x11, 0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x98,0x98,0x95,0x96,0x96,0x96,0x01,0x94,0x8E, 0x93,0x95,0x96,0x92,0x95,0x94,0x95,0x94,0x01,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x95,0x94, 0x96,0x01,0x95,0x96,0x96,0x01,0x98,0x93,0x01,0x01,0x99,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x93,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x13, 0x12,0x95,0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95, 0x95,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x95,0x13,0x12,0x13,0x95,0x9D,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13, 0x12,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x96,0x98,0x95,0x95,0x98,0x98,0x98,0x94,0x01, 0x93,0x96,0x93,0x93,0x95,0x95,0x01,0x95,0x95,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x98,0x95, 0x96,0x95,0x95,0x96,0x96,0x95,0x01,0x96,0x98,0x98,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x90,0x96,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x13, 0x13,0x95,0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x95,0x13,0x14,0x13, 0x13,0x13,0x13,0x13,0x95,0x95,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x95,0x9D, 0x9D,0x9D,0x95,0x13,0x13,0x13,0x95,0x9D,0x9D,0x95,0x13,0x13,0x13,0x95,0x14,0x13, 0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x13,0x13,0x13,0x13,0x13,0x13,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x94,0x95,0x94,0x98,0x93,0x95,0x92,0x01,0x95, 0x96,0x95,0x95,0x95,0x98,0x95,0x94,0x93,0x95,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x91,0x96,0x95,0x93, 0x98,0x93,0x96,0x99,0x01,0x98,0x99,0x98,0x98,0x96,0x98,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x15, 0x14,0x95,0x14,0x15,0x14,0x95,0x9D,0x95,0x14,0x14,0x14,0x95,0x9D,0x95,0x14,0x15, 0x14,0x14,0x14,0x95,0x9D,0x9D,0x95,0x15,0x14,0x14,0x14,0x15,0x14,0x15,0x14,0x95, 0x9D,0x9D,0x95,0x15,0x14,0x15,0x95,0x9D,0x9D,0x95,0x14,0x15,0x14,0x95,0x14,0x15, 0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x14,0x15,0x14,0x15,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x01,0x95,0x96,0x96,0x96,0x98,0x95,0x98, 0x95,0x01,0x94,0x93,0x94,0x93,0x94,0x92,0x95,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x96,0x98,0x95, 0x98,0x98,0x95,0x01,0x95,0x99,0x96,0x98,0x98,0x98,0x95,0x93,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x99,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95,0x15,0x15, 0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x95,0x15, 0x15,0x15,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x15,0x15,0x15,0x95, 0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15, 0x15,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x95,0x98,0x96,0x98,0x98,0x95,0x98,0x98,0x98, 0x93,0x93,0x95,0x96,0x98,0x92,0x95,0x01,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x99,0x99, 0x95,0x98,0x01,0x01,0x98,0x98,0x98,0x98,0x98,0x95,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x91,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x15,0x16, 0x16,0x95,0x15,0x16,0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x9D,0x9D,0x95,0x16, 0x16,0x16,0x95,0x9D,0x9D,0x95,0x15,0x16,0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95, 0x9D,0x9D,0x95,0x16,0x16,0x16,0x95,0x9D,0x9D,0x95,0x15,0x16,0x16,0x95,0x15,0x16, 0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x16, 0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x98,0x96,0x01,0x9A,0x01,0x94,0x98,0x99,0x01, 0x95,0x95,0x95,0x95,0x01,0x01,0x94,0x98,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x99,0x98,0x98, 0x95,0x98,0x98,0x98,0x99,0x98,0x98,0x97,0x95,0x01,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x94,0x9B,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17, 0x17,0x95,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x95,0x9D,0x9D,0x95,0x17, 0x17,0x17,0x95,0x9D,0x9D,0x95,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x95, 0x9D,0x9D,0x95,0x17,0x17,0x16,0x95,0x9D,0x9D,0x95,0x17,0x17,0x17,0x95,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x95,0x17,0x17,0x17,0x95,0x95,0x16,0x17,0x17, 0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x99,0x01,0x98,0x99,0x98,0x01,0x9A,0x9A,0x9A,0x98, 0x96,0x98,0x95,0x95,0x01,0x94,0x98,0x01,0x96,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x98,0x99, 0x98,0x95,0x99,0x98,0x9A,0x95,0x94,0x98,0x95,0x94,0x96,0x01,0x9F,0x9F,0x9D,0x9D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18, 0x95,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x9D,0x9D,0x95,0x18, 0x17,0x18,0x95,0x9D,0x9D,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D, 0x9D,0x9D,0x95,0x18,0x17,0x18,0x95,0x9D,0x9D,0x95,0x17,0x18,0x17,0x95,0x95,0x18, 0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x95,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18, 0x17,0x18,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x98,0x9A,0x95,0x98,0x01,0x95,0x96,0x98, 0x98,0x95,0x95,0x95,0x96,0x95,0x94,0x95,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x96, 0x01,0x98,0x96,0x94,0x92,0x95,0x95,0x95,0x98,0x92,0x8E,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x95,0x95,0x98,0x98,0x9A,0x01,0x99,0x98, 0x98,0x01,0x93,0x96,0x98,0x95,0x98,0x01,0x98,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x98, 0x98,0x98,0x95,0x95,0x98,0x92,0x94,0x95,0x95,0x95,0x96,0x01,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x01,0x98,0x95,0x01,0x9A,0x98,0x9A,0x9B, 0x99,0x94,0x98,0x92,0x93,0x94,0x96,0x01,0x95,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x98,0x96, 0x98,0x95,0x92,0x96,0x93,0x93,0x95,0x92,0x8E,0x96,0x8E,0x93,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x99,0x95,0x98,0x98,0x9A,0x98,0x99,0x98,0x95, 0x98,0x01,0x93,0x93,0x94,0x94,0x01,0x98,0x94,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x95,0x95, 0x8E,0x94,0x93,0x94,0x8E,0x92,0x94,0x95,0x94,0x94,0x95,0x95,0x99,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x94,0x98,0x96,0x99,0x98,0x95,0x98,0x01,0x96,0x01, 0x98,0x01,0x01,0x93,0x98,0x98,0x95,0x95,0x93,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x8E,0x92, 0x93,0x8E,0x94,0x92,0x94,0x92,0x8E,0x94,0x95,0x96,0x94,0x95,0x98,0x92,0x01,0x98, 0x9A,0x98,0x98,0x96,0x99,0x98,0x99,0x98,0x96,0x95,0x95,0x96,0x94,0x98,0x96,0x98, 0x93,0x92,0x8E,0x01,0x96,0x94,0x92,0x98,0x98,0x95,0x93,0x01,0x94,0x92,0x01,0x94, 0x01,0x95,0x98,0x95,0x98,0x95,0x94,0x96,0x98,0x01,0x94,0x92,0x01,0x93,0x01,0x01, 0x94,0x96,0x96,0x96,0x95,0x95,0x98,0x92,0x93,0x98,0x95,0x98,0x95,0x92,0x95,0x93, 0x98,0x01,0x96,0x98,0x95,0x98,0x98,0x94,0x95,0x96,0x95,0x98,0x92,0x92,0x95,0x95, 0x98,0x95,0x92,0x95,0x8E,0x95,0x8E,0x95,0x94,0x92,0x94,0x96,0x96,0x01,0x96,0x94, 0x96,0x95,0x96,0x94,0x01,0x95,0x96,0x95,0x94,0x96,0x94,0x96,0x96,0x01,0x98,0x96, 0x94,0x98,0x95,0x01,0x95,0x98,0x01,0x92,0x94,0x01,0x97,0x96,0x98,0x01,0x95,0x95, 0x98,0x98,0x01,0x98,0x99,0x93,0x95,0x98,0x96,0x95,0x92,0x95,0x94,0x92,0x92,0x98, 0x99,0x98,0x98,0x98,0x98,0x95,0x01,0x01,0x96,0x99,0x95,0x94,0x01,0x96,0x92,0x94, 0x95,0x95,0x98,0x98,0x96,0x01,0x95,0x93,0x01,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x8E,0x95, 0x92,0x94,0x93,0x92,0x95,0x95,0x98,0x96,0x95,0x01,0x94,0x98,0x98,0x99,0x98,0x95, 0x9A,0x98,0x98,0x01,0x98,0x95,0x95,0x92,0x92,0x96,0x8E,0x8E,0x96,0x94,0x94,0x98, 0x96,0x98,0x95,0x98,0x98,0x95,0x95,0x96,0x98,0x98,0x01,0x98,0x95,0x94,0x95,0x01, 0x98,0x96,0x96,0x98,0x01,0x96,0x95,0x96,0x94,0x98,0x98,0x95,0x94,0x98,0x01,0x95, 0x95,0x95,0x95,0x95,0x01,0x94,0x01,0x94,0x95,0x01,0x96,0x98,0x95,0x98,0x94,0x95, 0x96,0x95,0x96,0x96,0x01,0x98,0x96,0x95,0x96,0x95,0x95,0x95,0x92,0x8E,0x92,0x95, 0x93,0x8E,0x8E,0x92,0x98,0x98,0x92,0x94,0x93,0x96,0x95,0x98,0x95,0x98,0x98,0x98, 0x93,0x95,0x95,0x94,0x98,0x98,0x96,0x96,0x95,0x95,0x98,0x94,0x95,0x94,0x98,0x95, 0x98,0x98,0x98,0x01,0x95,0x98,0x98,0x95,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x98, 0x98,0x99,0x98,0x97,0x97,0x95,0x94,0x94,0x95,0x01,0x96,0x95,0x95,0x98,0x99,0x94, 0x96,0x95,0x96,0x95,0x94,0x97,0x95,0x95,0x95,0x01,0x98,0x01,0x01,0x98,0x98,0x98, 0x94,0x98,0x96,0x01,0x01,0x92,0x95,0x92,0x94,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x8E,0x95,0x95, 0x94,0x94,0x96,0x96,0x01,0x95,0x95,0x98,0x98,0x01,0x9A,0x01,0x98,0x98,0x98,0x96, 0x98,0x98,0x98,0x96,0x98,0x92,0x93,0x95,0x92,0x96,0x98,0x94,0x95,0x98,0x96,0x98, 0x98,0x01,0x96,0x94,0x98,0x95,0x95,0x98,0x95,0x01,0x95,0x92,0x96,0x96,0x94,0x96, 0x01,0x98,0x01,0x98,0x95,0x95,0x01,0x98,0x95,0x94,0x96,0x94,0x01,0x01,0x94,0x98, 0x95,0x01,0x96,0x96,0x98,0x95,0x95,0x93,0x96,0x01,0x98,0x96,0x95,0x98,0x95,0x94, 0x01,0x94,0x92,0x96,0x94,0x98,0x98,0x98,0x96,0x98,0x96,0x94,0x94,0x8E,0x94,0x93, 0x8E,0x94,0x98,0x94,0x96,0x95,0x98,0x96,0x01,0x96,0x98,0x95,0x96,0x94,0x93,0x96, 0x96,0x98,0x96,0x98,0x92,0x95,0x96,0x95,0x95,0x96,0x01,0x94,0x98,0x01,0x95,0x98, 0x96,0x98,0x98,0x99,0x96,0x01,0x01,0x98,0x98,0x95,0x98,0x95,0x98,0x96,0x98,0x96, 0x98,0x01,0x98,0x95,0x92,0x98,0x96,0x96,0x98,0x01,0x96,0x99,0x95,0x98,0x94,0x96, 0x96,0x96,0x95,0x95,0x95,0x98,0x98,0x96,0x96,0x01,0x94,0x93,0x94,0x95,0x98,0x01, 0x95,0x92,0x92,0x91,0x94,0x95,0x95,0x96,0x93,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98, 0x17,0x17,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x95,0x01, 0x95,0x01,0x95,0x98,0x01,0x96,0x98,0x98,0x98,0x94,0x95,0x98,0x98,0x96,0x01,0x98, 0x95,0x96,0x96,0x94,0x93,0x01,0x98,0x94,0x98,0x94,0x96,0x98,0x01,0x96,0x96,0x94, 0x95,0x94,0x9A,0x96,0x99,0x98,0x98,0x01,0x96,0x98,0x95,0x96,0x96,0x96,0x98,0x96, 0x95,0x96,0x96,0x95,0x95,0x95,0x96,0x01,0x01,0x95,0x96,0x95,0x94,0x96,0x96,0x94, 0x95,0x96,0x98,0x95,0x98,0x96,0x98,0x96,0x98,0x98,0x96,0x95,0x95,0x95,0x95,0x98, 0x93,0x98,0x98,0x92,0x95,0x01,0x98,0x01,0x94,0x94,0x93,0x95,0x01,0x95,0x92,0x8E, 0x01,0x96,0x95,0x94,0x96,0x96,0x98,0x96,0x96,0x01,0x96,0x95,0x94,0x95,0x94,0x94, 0x98,0x94,0x95,0x01,0x94,0x95,0x96,0x93,0x94,0x97,0x98,0x98,0x98,0x99,0x98,0x95, 0x98,0x9A,0x9A,0x9A,0x99,0x9A,0x98,0x96,0x98,0x98,0x96,0x98,0x96,0x94,0x95,0x98, 0x96,0x95,0x96,0x01,0x98,0x01,0x98,0x01,0x94,0x98,0x01,0x98,0x98,0x99,0x01,0x98, 0x93,0x01,0x98,0x94,0x98,0x96,0x98,0x98,0x98,0x98,0x97,0x95,0x01,0x01,0x98,0x96, 0x92,0x92,0x95,0x96,0x01,0x95,0x93,0x96,0x93,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x95,0x94, 0x96,0x99,0x98,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x95,0x94,0x01,0x94, 0x96,0x93,0x95,0x93,0x01,0x94,0x95,0x95,0x94,0x96,0x93,0x98,0x98,0x94,0x95,0x98, 0x95,0x95,0x98,0x98,0x95,0x98,0x98,0x98,0x9A,0x94,0x98,0x98,0x98,0x98,0x01,0x98, 0x01,0x98,0x98,0x96,0x96,0x94,0x96,0x01,0x98,0x01,0x98,0x96,0x01,0x96,0x96,0x93, 0x98,0x94,0x95,0x98,0x98,0x96,0x98,0x96,0x94,0x95,0x94,0x95,0x96,0x96,0x92,0x96, 0x96,0x94,0x95,0x95,0x94,0x95,0x94,0x98,0x98,0x96,0x94,0x8E,0x94,0x95,0x01,0x93, 0x92,0x96,0x94,0x98,0x95,0x98,0x98,0x01,0x94,0x96,0x94,0x98,0x95,0x98,0x96,0x98, 0x95,0x98,0x96,0x95,0x98,0x98,0x98,0x93,0x94,0x98,0x96,0x98,0x96,0x95,0x95,0x98, 0x01,0x01,0x98,0x98,0x98,0x98,0x01,0x01,0x96,0x99,0x99,0x98,0x96,0x98,0x99,0x96, 0x01,0x01,0x96,0x98,0x95,0x98,0x95,0x98,0x98,0x01,0x95,0x9A,0x98,0x98,0x96,0x95, 0x01,0x98,0x98,0x95,0x96,0x98,0x94,0x98,0x96,0x98,0x98,0x95,0x96,0x98,0x99,0x95, 0x98,0x94,0x93,0x91,0x92,0x98,0x95,0x93,0x91,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x95,0x98, 0x01,0x01,0x98,0x98,0x98,0x99,0x98,0x96,0x98,0x96,0x94,0x98,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x97,0x98,0x98,0x96,0x01,0x98,0x98,0x01,0x99,0x98,0x01, 0x98,0x92,0x96,0x92,0x92,0x93,0x01,0x94,0x95,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x98,0x95, 0x99,0x96,0x96,0x98,0x98,0x96,0x98,0x98,0x96,0x01,0x95,0x01,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x94,0x9A,0x95,0x98,0x98,0x98,0x98,0x95,0x95,0x95,0x97, 0x95,0x93,0x94,0x93,0x96,0x01,0x98,0x95,0x96,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x98, 0x98,0x98,0x98,0x95,0x98,0x94,0x01,0x96,0x01,0x98,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x91,0x99,0x98,0x98,0x01,0x01,0x9A,0x01,0x98,0x94,0x98, 0x93,0x94,0x94,0x95,0x93,0x98,0x01,0x96,0x96,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x96, 0x98,0x96,0x01,0x98,0x01,0x98,0x95,0x94,0x96,0x95,0x92,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x99,0x98,0x01,0x98,0x98,0x9A,0x99,0x98,0x98,0x9A, 0x94,0x98,0x93,0x01,0x95,0x98,0x92,0x96,0x98,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x95,0x96, 0x94,0x96,0x98,0x94,0x01,0x95,0x94,0x92,0x8E,0x8E,0x93,0x94,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x95,0x10,0x10,0x10,0x10,0x10,0x10, 0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x99,0x98,0x98,0x98,0x98,0x98,0x96,0x01,0x01,0x98, 0x96,0x93,0x95,0x01,0x98,0x95,0x95,0x92,0x94,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x98,0x95, 0x96,0x94,0x8E,0x92,0x8E,0x92,0x96,0x92,0x93,0x95,0x01,0x95,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x91,0x94,0x9F,0x9D,0x9D,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11, 0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11, 0x10,0x11,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x99,0x99,0x01,0x98,0x01,0x92,0x92,0x8D, 0x94,0x01,0x95,0x95,0x93,0x93,0x95,0x92,0x95,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x8E,0x95, 0x95,0x95,0x92,0x01,0x93,0x01,0x94,0x01,0x01,0x94,0x01,0x01,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x93,0x96,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x12,0x12,0x95,0x95,0x95,0x12,0x11, 0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x11,0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95, 0x12,0x12,0x12,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x99,0x98,0x97,0x95,0x96,0x92,0x94,0x94,0x8D, 0x92,0x98,0x94,0x95,0x94,0x96,0x92,0x98,0x94,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x95,0x95, 0x95,0x95,0x95,0x01,0x93,0x01,0x95,0x96,0x95,0x95,0x92,0x96,0x9F,0x9F,0x9D,0x9D, 0x90,0x93,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x12,0x13, 0x12,0x95,0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95,0x95,0x95, 0x12,0x13,0x12,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x01,0x01,0x93,0x95,0x94,0x95,0x93,0x93,0x01, 0x94,0x93,0x96,0x93,0x95,0x95,0x95,0x01,0x92,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x01,0x94, 0x98,0x95,0x95,0x94,0x93,0x94,0x95,0x98,0x93,0x93,0x01,0x01,0x9F,0x9F,0x9D,0x9D, 0x90,0x96,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13, 0x13,0x95,0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x13,0x13,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x13,0x13,0x95,0x13,0x13,0x13,0x13,0x14,0x13, 0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x95,0x93,0x92,0x01,0x93,0x92,0x98,0x98,0x95, 0x92,0x95,0x92,0x93,0x94,0x94,0x8E,0x93,0x96,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x92,0x94, 0x95,0x95,0x94,0x95,0x92,0x95,0x95,0x96,0x95,0x96,0x92,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x14,0x14,0x14,0x15,0x14,0x15,0x14,0x15, 0x14,0x95,0x14,0x15,0x14,0x95,0x9D,0x95,0x14,0x14,0x14,0x95,0x14,0x15,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x15,0x14,0x95,0x14,0x15,0x14,0x15,0x14,0x15, 0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x92,0x95,0x8E,0x95,0x94,0x95,0x96,0x01,0x94,0x98, 0x95,0x93,0x93,0x95,0x94,0x94,0x01,0x01,0x92,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x94,0x98, 0x96,0x95,0x01,0x95,0x98,0x94,0x92,0x95,0x96,0x93,0x95,0x95,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x99,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x15,0x15, 0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x95,0x95, 0x15,0x15,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x8E,0x92,0x94,0x01,0x95,0x95,0x01,0x01,0x98,0x01, 0x92,0x95,0x93,0x95,0x93,0x95,0x91,0x92,0x95,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x92,0x95,0x95, 0x93,0x94,0x94,0x94,0x95,0x91,0x94,0x95,0x95,0x92,0x98,0x01,0x9F,0x9F,0x9D,0x9D, 0x91,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x16,0x16,0x15,0x95,0x9D,0x95,0x15,0x16, 0x16,0x95,0x15,0x16,0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x15,0x16,0x16,0x95,0x15,0x16,0x16,0x95,0x95,0x95, 0x16,0x16,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x93,0x98,0x01,0x93,0x01,0x98,0x96,0x96,0x97, 0x92,0x96,0x96,0x95,0x92,0x92,0x8E,0x95,0x8E,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x94,0x01, 0x98,0x92,0x96,0x94,0x94,0x95,0x94,0x95,0x98,0x95,0x94,0x94,0x9F,0x9F,0x9D,0x9D, 0x94,0x9B,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x17,0x17,0x95,0x9D,0x95,0x17,0x17, 0x17,0x95,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x16,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x17,0x17,0x95,0x17,0x17,0x17,0x16,0x17,0x17, 0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x96,0x01,0x98,0x96,0x96,0x01,0x01,0x95,0x95, 0x92,0x95,0x92,0x94,0x92,0x8E,0x93,0x8E,0x95,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x01,0x01, 0x95,0x93,0x92,0x95,0x01,0x95,0x96,0x98,0x95,0x94,0x01,0x98,0x9F,0x9F,0x9D,0x9D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18, 0x17,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x95,0x17,0x18,0x17,0x18, 0x17,0x18,0x17,0x18,0x17,0x95,0x17,0x18,0x17,0x95,0x17,0x18,0x17,0x18,0x17,0x18, 0x17,0x18,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x95,0x95,0x98,0x01,0x96,0x95,0x96,0x98,0x96, 0x99,0x8E,0x01,0x92,0x01,0x94,0x94,0x96,0x93,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x92,0x95,0x98, 0x94,0x92,0x94,0x92,0x01,0x95,0x93,0x92,0x95,0x93,0x94,0x01,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x98,0x01,0x98,0x01,0x96,0x98,0x95,0x98, 0x92,0x94,0x8E,0x96,0x91,0x95,0x92,0x95,0x98,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x92,0x01, 0x98,0x95,0x93,0x93,0x98,0x95,0x95,0x94,0x94,0x93,0x98,0x94,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x95,0x96,0x98,0x01,0x01,0x94,0x98,0x95,0x98, 0x8E,0x8E,0x95,0x01,0x93,0x95,0x92,0x92,0x95,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x95,0x98, 0x94,0x01,0x95,0x94,0x94,0x96,0x95,0x92,0x98,0x93,0x96,0x98,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x98,0x01,0x95,0x01,0x96,0x01,0x01,0x98,0x01, 0x8E,0x92,0x96,0x01,0x94,0x92,0x95,0x96,0x93,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x96,0x91, 0x94,0x96,0x95,0x93,0x95,0x93,0x95,0x95,0x95,0x94,0x93,0x95,0x99,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x94,0x98,0x98,0x98,0x98,0x98,0x96,0x01,0x01,0x96, 0x94,0x92,0x92,0x91,0x8E,0x8E,0x94,0x95,0x8E,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x94,0x93, 0x96,0x92,0x94,0x01,0x01,0x96,0x94,0x96,0x93,0x95,0x98,0x01,0x95,0x96,0x92,0x93, 0x93,0x93,0x98,0x93,0x95,0x01,0x93,0x93,0x93,0x95,0x95,0x95,0x01,0x98,0x98,0x01, 0x01,0x95,0x96,0x96,0x96,0x96,0x98,0x98,0x98,0x98,0x94,0x95,0x96,0x94,0x98,0x98, 0x01,0x94,0x95,0x01,0x93,0x96,0x96,0x95,0x95,0x96,0x8E,0x95,0x93,0x96,0x01,0x95, 0x95,0x92,0x8E,0x96,0x96,0x98,0x96,0x98,0x01,0x96,0x94,0x98,0x96,0x01,0x98,0x98, 0x98,0x98,0x98,0x95,0x98,0x95,0x96,0x98,0x99,0x98,0x98,0x98,0x9A,0x98,0x98,0x95, 0x9A,0x96,0x9B,0x99,0x98,0x9B,0x9B,0x9B,0x98,0x98,0x98,0x98,0x98,0x01,0x99,0x96, 0x98,0x99,0x98,0x98,0x9B,0x01,0x99,0x95,0x01,0x98,0x94,0x95,0x9A,0x98,0x01,0x98, 0x98,0x98,0x98,0x98,0x01,0x91,0x93,0x95,0x93,0x94,0x96,0x94,0x95,0x95,0x94,0x98, 0x96,0x94,0x98,0x96,0x94,0x95,0x01,0x94,0x93,0x01,0x98,0x95,0x92,0x98,0x94,0x98, 0x98,0x98,0x98,0x98,0x98,0x98,0x01,0x98,0x93,0x93,0x01,0x01,0x96,0x98,0x94,0x95, 0x93,0x8E,0x8E,0x8E,0x96,0x95,0x92,0x98,0x95,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x94, 0x93,0x98,0x01,0x01,0x95,0x95,0x94,0x92,0x94,0x94,0x96,0x95,0x95,0x95,0x98,0x98, 0x96,0x94,0x94,0x01,0x93,0x01,0x95,0x01,0x96,0x96,0x96,0x95,0x01,0x96,0x94,0x95, 0x98,0x96,0x01,0x96,0x98,0x93,0x98,0x98,0x93,0x95,0x01,0x95,0x95,0x96,0x98,0x98, 0x95,0x96,0x98,0x96,0x92,0x96,0x93,0x93,0x92,0x92,0x8E,0x96,0x01,0x95,0x98,0x95, 0x93,0x93,0x94,0x94,0x98,0x95,0x98,0x98,0x96,0x96,0x93,0x96,0x01,0x98,0x96,0x95, 0x94,0x01,0x98,0x96,0x98,0x98,0x98,0x98,0x98,0x92,0x95,0x98,0x96,0x98,0x93,0x94, 0x96,0x98,0x96,0x99,0x98,0x99,0x98,0x95,0x98,0x95,0x01,0x98,0x98,0x98,0x9A,0x95, 0x9A,0x9B,0x98,0x99,0x01,0x98,0x98,0x01,0x98,0x98,0x98,0x95,0x98,0x01,0x98,0x96, 0x98,0x96,0x94,0x93,0x95,0x93,0x95,0x01,0x94,0x94,0x98,0x98,0x95,0x01,0x96,0x98, 0x01,0x01,0x95,0x98,0x96,0x01,0x01,0x98,0x94,0x98,0x98,0x96,0x98,0x01,0x98,0x95, 0x94,0x95,0x98,0x98,0x96,0x94,0x98,0x98,0x96,0x96,0x01,0x98,0x98,0x95,0x95,0x97, 0x8E,0x94,0x96,0x93,0x96,0x95,0x95,0x95,0x95,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x98,0x95, 0x96,0x95,0x96,0x98,0x01,0x01,0x98,0x01,0x98,0x01,0x96,0x94,0x01,0x01,0x01,0x01, 0x01,0x96,0x98,0x96,0x95,0x98,0x98,0x98,0x96,0x98,0x98,0x94,0x01,0x01,0x95,0x95, 0x94,0x95,0x93,0x94,0x98,0x01,0x95,0x01,0x01,0x95,0x98,0x98,0x94,0x98,0x95,0x96, 0x96,0x96,0x96,0x92,0x91,0x95,0x92,0x8E,0x95,0x93,0x96,0x95,0x95,0x95,0x95,0x94, 0x92,0x95,0x95,0x98,0x96,0x98,0x96,0x01,0x94,0x95,0x01,0x95,0x95,0x98,0x92,0x98, 0x01,0x98,0x92,0x01,0x95,0x98,0x98,0x98,0x95,0x92,0x01,0x96,0x98,0x92,0x98,0x95, 0x93,0x98,0x98,0x01,0x01,0x01,0x98,0x98,0x95,0x97,0x98,0x01,0x98,0x95,0x98,0x9A, 0x96,0x98,0x95,0x99,0x98,0x98,0x99,0x98,0x98,0x01,0x98,0x98,0x96,0x01,0x98,0x93, 0x95,0x98,0x93,0x92,0x8E,0x8E,0x98,0x98,0x95,0x98,0x94,0x92,0x94,0x98,0x95,0x96, 0x96,0x01,0x96,0x01,0x94,0x98,0x94,0x98,0x94,0x98,0x94,0x98,0x93,0x01,0x96,0x96, 0x01,0x98,0x98,0x01,0x98,0x98,0x98,0x98,0x95,0x98,0x95,0x95,0x94,0x98,0x98,0x98, 0x92,0x96,0x92,0x92,0x98,0x93,0x95,0x92,0x92,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x96,0x96, 0x98,0x98,0x98,0x95,0x95,0x95,0x94,0x94,0x95,0x98,0x95,0x98,0x98,0x94,0x96,0x98, 0x01,0x96,0x98,0x98,0x96,0x98,0x98,0x98,0x96,0x98,0x94,0x96,0x95,0x96,0x95,0x95, 0x01,0x95,0x01,0x96,0x96,0x98,0x96,0x96,0x98,0x92,0x95,0x98,0x95,0x98,0x94,0x95, 0x96,0x95,0x8E,0x92,0x93,0x95,0x93,0x98,0x95,0x95,0x96,0x95,0x95,0x95,0x94,0x94, 0x95,0x92,0x01,0x95,0x96,0x96,0x96,0x96,0x98,0x94,0x01,0x01,0x95,0x95,0x96,0x96, 0x95,0x95,0x95,0x98,0x94,0x96,0x96,0x96,0x94,0x98,0x93,0x98,0x01,0x95,0x95,0x98, 0x01,0x98,0x01,0x96,0x01,0x95,0x01,0x95,0x98,0x96,0x98,0x98,0x01,0x98,0x98,0x98, 0x98,0x98,0x98,0x96,0x01,0x95,0x01,0x98,0x98,0x95,0x95,0x94,0x95,0x92,0x96,0x96, 0x8E,0x92,0x92,0x95,0x92,0x8E,0x93,0x01,0x92,0x94,0x98,0x01,0x98,0x98,0x95,0x95, 0x98,0x98,0x95,0x98,0x01,0x98,0x95,0x96,0x96,0x98,0x95,0x95,0x95,0x96,0x98,0x96, 0x98,0x96,0x96,0x98,0x98,0x98,0x01,0x93,0x94,0x95,0x95,0x01,0x98,0x01,0x01,0x98, 0x92,0x95,0x01,0x96,0x96,0x94,0x95,0x98,0x96,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x92,0x98,0x98, 0x92,0x95,0x98,0x95,0x95,0x96,0x92,0x93,0x96,0x98,0x95,0x96,0x96,0x98,0x98,0x95, 0x98,0x95,0x99,0x01,0x96,0x01,0x96,0x01,0x98,0x96,0x95,0x01,0x95,0x98,0x01,0x93, 0x98,0x96,0x96,0x94,0x96,0x96,0x95,0x96,0x92,0x94,0x95,0x98,0x92,0x92,0x98,0x94, 0x93,0x8E,0x8E,0x92,0x93,0x95,0x01,0x94,0x95,0x95,0x95,0x94,0x92,0x95,0x93,0x93, 0x94,0x95,0x98,0x95,0x98,0x95,0x95,0x95,0x01,0x96,0x96,0x93,0x96,0x95,0x98,0x94, 0x95,0x01,0x98,0x96,0x95,0x98,0x98,0x96,0x95,0x92,0x96,0x01,0x96,0x93,0x95,0x98, 0x98,0x98,0x9A,0x98,0x96,0x95,0x96,0x01,0x98,0x98,0x94,0x98,0x01,0x98,0x9A,0x99, 0x99,0x98,0x98,0x96,0x95,0x98,0x01,0x01,0x01,0x96,0x01,0x92,0x92,0x8E,0x93,0x94, 0x95,0x93,0x8E,0x8E,0x92,0x94,0x94,0x95,0x01,0x94,0x95,0x96,0x98,0x96,0x95,0x93, 0x93,0x95,0x92,0x95,0x96,0x98,0x95,0x95,0x95,0x96,0x94,0x98,0x94,0x01,0x01,0x94, 0x96,0x98,0x98,0x98,0x01,0x96,0x01,0x98,0x01,0x94,0x98,0x01,0x96,0x98,0x98,0x98, 0x99,0x98,0x98,0x95,0x98,0x94,0x95,0x92,0x92,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x01, 0x96,0x98,0x98,0x01,0x01,0x01,0x97,0x98,0x94,0x94,0x98,0x96,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x97,0x98,0x98,0x01,0x98,0x92,0x01,0x01,0x95,0x95,0x97, 0x98,0x94,0x95,0x95,0x01,0x96,0x98,0x93,0x01,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x99,0x98, 0x96,0x96,0x98,0x98,0x01,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x94,0x95,0x96,0x01,0x94,0x98,0x98,0x98,0x96,0x98,0x01, 0x95,0x95,0x96,0x01,0x94,0x96,0x98,0x95,0x95,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x01, 0x98,0x95,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x98,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x91,0x98,0x98,0x01,0x98,0x95,0x01,0x98,0x99,0x98,0x9B, 0x96,0x98,0x96,0x94,0x95,0x93,0x93,0x95,0x93,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x96,0x94, 0x95,0x98,0x96,0x95,0x96,0x98,0x96,0x01,0x98,0x98,0x94,0x94,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x99,0x98,0x95,0x98,0x01,0x95,0x95,0x01, 0x96,0x95,0x93,0x96,0x93,0x01,0x92,0x93,0x94,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x01, 0x95,0x98,0x01,0x94,0x96,0x96,0x95,0x92,0x98,0x96,0x01,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95, 0x9D,0x95,0x10,0x10,0x10,0x95,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x95, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x10,0x10,0x10,0x10,0x10,0x10, 0x10,0x10,0x95,0x9D,0x9D,0x90,0x98,0x98,0x98,0x98,0x96,0x98,0x01,0x95,0x96,0x96, 0x99,0x94,0x96,0x01,0x95,0x92,0x92,0x98,0x98,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x95, 0x94,0x93,0x01,0x98,0x95,0x96,0x96,0x98,0x96,0x94,0x01,0x96,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x91,0x94,0x9F,0x9D,0x9D,0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10, 0x11,0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x11,0x10,0x11,0x95, 0x9D,0x95,0x11,0x10,0x11,0x95,0x11,0x10,0x11,0x10,0x95,0x95,0x11,0x10,0x11,0x95, 0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x10, 0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10, 0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10, 0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x11,0x10,0x11,0x10,0x11,0x10, 0x11,0x10,0x11,0x95,0x9D,0x90,0x98,0x93,0x01,0x96,0x95,0x01,0x98,0x98,0x01,0x94, 0x95,0x98,0x93,0x92,0x93,0x93,0x98,0x93,0x95,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x95,0x01, 0x94,0x93,0x95,0x92,0x93,0x95,0x01,0x98,0x95,0x92,0x93,0x91,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x93,0x96,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x11,0x12,0x12,0x95,0x95,0x95,0x12,0x12, 0x11,0x95,0x12,0x12,0x11,0x95,0x95,0x95,0x11,0x12,0x12,0x95,0x11,0x12,0x12,0x95, 0x9D,0x95,0x12,0x12,0x11,0x95,0x12,0x12,0x11,0x12,0x12,0x95,0x11,0x12,0x12,0x95, 0x11,0x12,0x12,0x95,0x95,0x95,0x12,0x12,0x11,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x12, 0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12, 0x95,0x95,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x95,0x12,0x12,0x11,0x95,0x95,0x95, 0x95,0x12,0x12,0x12,0x95,0x95,0x95,0x95,0x95,0x95,0x12,0x12,0x11,0x95,0x95,0x95, 0x11,0x12,0x12,0x95,0x9D,0x90,0x01,0x92,0x01,0x01,0x95,0x98,0x98,0x01,0x93,0x92, 0x95,0x98,0x95,0x95,0x95,0x93,0x95,0x01,0x98,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x93,0x92, 0x95,0x94,0x92,0x8E,0x94,0x8E,0x94,0x92,0x93,0x8E,0x8E,0x92,0x9F,0x9F,0x9D,0x9D, 0x90,0x93,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x13,0x12,0x13,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x13,0x12,0x13,0x95,0x9D,0x95,0x13,0x12,0x13,0x95,0x13,0x12,0x13,0x95, 0x9D,0x95,0x13,0x12,0x13,0x95,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x95, 0x13,0x12,0x13,0x95,0x9D,0x95,0x13,0x12,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x12, 0x13,0x12,0x95,0x95,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12, 0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x13,0x12,0x13,0x95,0x9D,0x9D, 0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x9D,0x9D,0x95,0x13,0x12,0x13,0x95,0x95,0x95, 0x13,0x12,0x13,0x95,0x9D,0x90,0x93,0x01,0x95,0x96,0x96,0x95,0x96,0x94,0x92,0x97, 0x96,0x98,0x98,0x96,0x94,0x96,0x95,0x01,0x95,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x92,0x95, 0x95,0x01,0x92,0x94,0x92,0x96,0x93,0x95,0x96,0x95,0x96,0x92,0x9F,0x9F,0x9D,0x9D, 0x90,0x96,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x13,0x13,0x13,0x14,0x13,0x13,0x13,0x13, 0x95,0x95,0x13,0x14,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x13,0x13,0x13,0x95, 0x9D,0x95,0x13,0x14,0x13,0x95,0x13,0x13,0x13,0x95,0x13,0x14,0x13,0x13,0x13,0x95, 0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x13, 0x13,0x13,0x13,0x14,0x13,0x13,0x13,0x95,0x95,0x13,0x13,0x14,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x95,0x13,0x13,0x13, 0x13,0x13,0x13,0x14,0x13,0x95,0x9D,0x9D,0x9D,0x95,0x13,0x14,0x13,0x95,0x9D,0x9D, 0x95,0x13,0x13,0x14,0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x14,0x13,0x13,0x13,0x13, 0x13,0x13,0x13,0x95,0x9D,0x90,0x95,0x96,0x95,0x96,0x94,0x93,0x95,0x95,0x95,0x92, 0x98,0x95,0x01,0x93,0x95,0x98,0x98,0x97,0x99,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x98,0x95, 0x93,0x01,0x95,0x96,0x01,0x93,0x01,0x96,0x93,0x93,0x95,0x91,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x14,0x15,0x14,0x15,0x14,0x14,0x14, 0x15,0x95,0x15,0x14,0x15,0x95,0x9D,0x95,0x15,0x14,0x15,0x95,0x15,0x14,0x14,0x95, 0x9D,0x95,0x15,0x14,0x15,0x95,0x14,0x14,0x15,0x95,0x95,0x14,0x15,0x14,0x14,0x95, 0x15,0x14,0x15,0x95,0x9D,0x95,0x14,0x14,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x14, 0x15,0x14,0x15,0x14,0x15,0x14,0x14,0x95,0x95,0x14,0x15,0x14,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x14,0x15,0x14,0x14,0x14,0x15,0x14,0x15,0x14,0x95,0x95,0x14,0x14, 0x15,0x14,0x15,0x14,0x15,0x14,0x95,0x9D,0x9D,0x95,0x15,0x14,0x15,0x95,0x9D,0x9D, 0x95,0x14,0x15,0x14,0x15,0x14,0x14,0x95,0x9D,0x95,0x15,0x14,0x15,0x14,0x14,0x14, 0x15,0x14,0x95,0x9D,0x9D,0x90,0x98,0x92,0x01,0x95,0x01,0x95,0x94,0x98,0x95,0x01, 0x98,0x98,0x92,0x96,0x01,0x98,0x95,0x98,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x96,0x95, 0x93,0x95,0x98,0x93,0x95,0x92,0x98,0x95,0x96,0x98,0x94,0x94,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x99,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x15,0x15, 0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95, 0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95, 0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x15, 0x15,0x15,0x95,0x95,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x95, 0x95,0x95,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D, 0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x9D,0x9D,0x95,0x15,0x15,0x15,0x15,0x15,0x15, 0x95,0x95,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x95,0x98,0x01,0x98,0x93,0x95,0x92,0x97, 0x94,0x95,0x94,0x96,0x94,0x98,0x96,0x95,0x96,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x96,0x95, 0x96,0x96,0x91,0x98,0x93,0x8E,0x8E,0x01,0x96,0x96,0x98,0x94,0x9F,0x9F,0x9D,0x9D, 0x91,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x16,0x16,0x16,0x95,0x95,0x95,0x16,0x15, 0x16,0x95,0x16,0x15,0x16,0x95,0x95,0x95,0x16,0x16,0x16,0x95,0x16,0x16,0x16,0x95, 0x95,0x95,0x16,0x15,0x16,0x95,0x16,0x15,0x16,0x95,0x9D,0x95,0x16,0x16,0x16,0x95, 0x16,0x16,0x16,0x95,0x95,0x95,0x16,0x15,0x16,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x15, 0x16,0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x95, 0x95,0x95,0x95,0x15,0x16,0x16,0x95,0x9D,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15, 0x95,0x95,0x95,0x15,0x16,0x16,0x95,0x9D,0x9D,0x95,0x16,0x15,0x16,0x95,0x9D,0x9D, 0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x95,0x95,0x95,0x16,0x15,0x16,0x16,0x16,0x15, 0x16,0x95,0x9D,0x9D,0x9D,0x90,0x93,0x01,0x96,0x98,0x92,0x98,0x01,0x98,0x95,0x94, 0x98,0x01,0x01,0x92,0x96,0x99,0x98,0x01,0x91,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x98,0x98,0x98,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x96,0x8E, 0x8E,0x96,0x95,0x94,0x92,0x8E,0x94,0x8E,0x98,0x01,0x01,0x98,0x9F,0x9F,0x9D,0x9D, 0x94,0x9B,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17, 0x17,0x95,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x95,0x17,0x17,0x17,0x17, 0x17,0x17,0x16,0x17,0x17,0x95,0x17,0x17,0x17,0x95,0x9D,0x95,0x17,0x17,0x17,0x95, 0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x17, 0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x16,0x17,0x17,0x17,0x17,0x17, 0x17,0x17,0x95,0x17,0x17,0x17,0x95,0x9D,0x95,0x17,0x16,0x17,0x95,0x17,0x17,0x17, 0x17,0x17,0x16,0x17,0x17,0x17,0x95,0x9D,0x9D,0x95,0x16,0x17,0x17,0x95,0x9D,0x9D, 0x95,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x95,0x16,0x17,0x17,0x95,0x17,0x17, 0x17,0x17,0x95,0x9D,0x9D,0x90,0x96,0x95,0x94,0x01,0x98,0x94,0x95,0x92,0x97,0x96, 0x95,0x01,0x96,0x98,0x96,0x96,0x01,0x95,0x96,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x95,0x92, 0x96,0x95,0x95,0x98,0x98,0x01,0x98,0x96,0x98,0x01,0x94,0x96,0x9F,0x9F,0x9D,0x9D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17, 0x95,0x9D,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18,0x17, 0x18,0x17,0x18,0x17,0x95,0x95,0x18,0x17,0x18,0x95,0x9D,0x95,0x18,0x17,0x18,0x95, 0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x17, 0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17, 0x18,0x17,0x95,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18,0x17,0x95,0x95,0x18,0x17, 0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x9D,0x9D,0x95,0x18,0x17,0x18,0x95,0x9D,0x9D, 0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x18,0x17,0x18,0x95,0x95,0x17, 0x18,0x17,0x18,0x95,0x9D,0x90,0x95,0x95,0x95,0x95,0x01,0x98,0x94,0x98,0x01,0x98, 0x98,0x98,0x98,0x01,0x01,0x98,0x98,0x95,0x98,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x01,0x98, 0x95,0x94,0x98,0x95,0x01,0x98,0x01,0x95,0x95,0x98,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x9D,0x9D,0x90,0x95,0x01,0x95,0x98,0x96,0x01,0x98,0x98,0x98,0x96, 0x95,0x98,0x98,0x95,0x95,0x98,0x95,0x98,0x93,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x98, 0x93,0x8E,0x94,0x95,0x98,0x98,0x95,0x98,0x98,0x97,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x94,0x98,0x98,0x01,0x96,0x98,0x94,0x98,0x95, 0x96,0x99,0x96,0x98,0x95,0x98,0x95,0x94,0x92,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x95,0x96, 0x95,0x01,0x98,0x98,0x95,0x01,0x94,0x96,0x96,0x94,0x93,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x99,0x98,0x98,0x98,0x98,0x98,0x01,0x98,0x96, 0x98,0x98,0x96,0x98,0x98,0x98,0x95,0x95,0x01,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x01,0x96, 0x95,0x95,0x96,0x98,0x01,0x93,0x96,0x95,0x96,0x96,0x98,0x96,0x99,0x95,0x94,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x01,0x95,0x98,0x01,0x98,0x01,0x01,0x99,0x9A,0x96, 0x98,0x01,0x96,0x94,0x95,0x92,0x92,0x95,0x94,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x9D,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9A,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x96,0x97, 0x94,0x95,0x95,0x98,0x98,0x98,0x95,0x96,0x98,0x98,0x94,0x01,0x94,0x01,0x01,0x93, 0x95,0x97,0x95,0x97,0x96,0x94,0x98,0x97,0x01,0x97,0x95,0x98,0x96,0x96,0x95,0x97, 0x98,0x98,0x95,0x95,0x98,0x01,0x98,0x01,0x01,0x98,0x01,0x98,0x98,0x98,0x98,0x98, 0x98,0x96,0x98,0x99,0x96,0x95,0x98,0x98,0x94,0x98,0x98,0x01,0x94,0x98,0x96,0x98, 0x99,0x95,0x95,0x99,0x97,0x94,0x98,0x96,0x95,0x95,0x94,0x96,0x01,0x98,0x98,0x96, 0x96,0x95,0x96,0x96,0x98,0x95,0x94,0x98,0x92,0x95,0x92,0x8E,0x8E,0x92,0x96,0x95, 0x95,0x92,0x8E,0x92,0x95,0x01,0x95,0x95,0x96,0x98,0x96,0x95,0x95,0x96,0x95,0x98, 0x98,0x98,0x98,0x99,0x98,0x99,0x99,0x98,0x98,0x96,0x98,0x96,0x94,0x94,0x94,0x94, 0x98,0x93,0x94,0x95,0x01,0x94,0x95,0x94,0x96,0x96,0x93,0x96,0x95,0x96,0x95,0x96, 0x98,0x98,0x01,0x94,0x98,0x98,0x94,0x92,0x95,0x98,0x98,0x98,0x98,0x95,0x99,0x98, 0x93,0x98,0x98,0x98,0x01,0x98,0x98,0x98,0x9A,0x01,0x98,0x98,0x9A,0x01,0x98,0x9B, 0x01,0x95,0x96,0x96,0x01,0x94,0x95,0x98,0x96,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x9D, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x97,0x95, 0x94,0x94,0x01,0x92,0x98,0x98,0x97,0x01,0x01,0x97,0x98,0x95,0x95,0x95,0x01,0x98, 0x96,0x01,0x01,0x01,0x98,0x01,0x93,0x96,0x01,0x01,0x95,0x01,0x98,0x01,0x98,0x01, 0x98,0x96,0x01,0x98,0x98,0x98,0x94,0x97,0x98,0x98,0x98,0x01,0x98,0x96,0x98,0x96, 0x98,0x98,0x98,0x98,0x98,0x01,0x9A,0x9A,0x99,0x99,0x95,0x98,0x99,0x99,0x98,0x96, 0x99,0x98,0x01,0x01,0x96,0x01,0x95,0x8E,0x93,0x95,0x01,0x8E,0x96,0x8E,0x94,0x8E, 0x8E,0x95,0x8E,0x92,0x8E,0x92,0x92,0x93,0x8E,0x92,0x8E,0x92,0x96,0x94,0x93,0x8E, 0x8E,0x01,0x8E,0x94,0x92,0x96,0x95,0x01,0x01,0x95,0x98,0x95,0x94,0x98,0x98,0x98, 0x98,0x96,0x99,0x98,0x98,0x98,0x94,0x01,0x99,0x98,0x98,0x95,0x96,0x93,0x95,0x93, 0x95,0x98,0x98,0x96,0x95,0x96,0x96,0x98,0x94,0x93,0x96,0x98,0x98,0x95,0x98,0x98, 0x98,0x94,0x98,0x95,0x95,0x92,0x01,0x94,0x95,0x98,0x9A,0x01,0x98,0x99,0x01,0x98, 0x95,0x98,0x98,0x98,0x98,0x01,0x98,0x01,0x98,0x99,0x98,0x95,0x94,0x99,0x01,0x98, 0x01,0x92,0x94,0x93,0x95,0x98,0x93,0x8E,0x95,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x98,0x96, 0x95,0x98,0x94,0x96,0x96,0x98,0x01,0x01,0x98,0x95,0x98,0x94,0x01,0x94,0x95,0x01, 0x01,0x01,0x94,0x96,0x96,0x96,0x92,0x96,0x98,0x96,0x95,0x98,0x96,0x95,0x96,0x96, 0x98,0x94,0x96,0x94,0x95,0x95,0x98,0x98,0x98,0x98,0x98,0x99,0x01,0x94,0x98,0x98, 0x98,0x01,0x96,0x98,0x98,0x98,0x01,0x9A,0x98,0x98,0x98,0x95,0x96,0x99,0x96,0x01, 0x95,0x96,0x91,0x93,0x94,0x94,0x95,0x94,0x96,0x92,0x94,0x96,0x98,0x94,0x94,0x92, 0x01,0x98,0x94,0x94,0x01,0x94,0x94,0x93,0x8E,0x92,0x95,0x92,0x93,0x94,0x8E,0x01, 0x95,0x95,0x94,0x94,0x94,0x01,0x94,0x01,0x98,0x93,0x96,0x96,0x93,0x98,0x96,0x95, 0x98,0x98,0x98,0x99,0x9A,0x98,0x96,0x95,0x98,0x95,0x95,0x95,0x96,0x94,0x94,0x95, 0x96,0x95,0x98,0x98,0x95,0x95,0x99,0x95,0x9A,0x98,0x99,0x98,0x98,0x96,0x95,0x98, 0x01,0x95,0x96,0x01,0x01,0x98,0x98,0x9A,0x94,0x95,0x98,0x99,0x99,0x98,0x96,0x96, 0x98,0x98,0x96,0x94,0x95,0x92,0x97,0x96,0x98,0x98,0x01,0x98,0x97,0x01,0x98,0x98, 0x98,0x96,0x01,0x95,0x98,0x94,0x8E,0x95,0x98,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x98,0x17,0x17,0x17,0x98,0x9D,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x96,0x01, 0x93,0x95,0x96,0x98,0x96,0x01,0x95,0x01,0x96,0x96,0x96,0x96,0x95,0x98,0x96,0x96, 0x95,0x94,0x96,0x95,0x96,0x01,0x98,0x96,0x94,0x96,0x96,0x96,0x96,0x92,0x01,0x01, 0x96,0x98,0x98,0x98,0x01,0x98,0x98,0x98,0x99,0x96,0x01,0x94,0x98,0x01,0x95,0x98, 0x98,0x98,0x98,0x01,0x98,0x99,0x95,0x9A,0x99,0x01,0x98,0x96,0x96,0x96,0x95,0x93, 0x01,0x94,0x94,0x92,0x98,0x92,0x98,0x96,0x96,0x96,0x96,0x94,0x98,0x95,0x01,0x98, 0x98,0x95,0x96,0x93,0x92,0x96,0x8E,0x8E,0x92,0x93,0x93,0x93,0x8E,0x8E,0x92,0x95, 0x98,0x01,0x01,0x98,0x94,0x95,0x98,0x98,0x98,0x98,0x98,0x01,0x99,0x01,0x98,0x97, 0x96,0x96,0x98,0x98,0x98,0x98,0x97,0x98,0x94,0x96,0x98,0x94,0x98,0x96,0x96,0x99, 0x98,0x01,0x01,0x95,0x98,0x95,0x96,0x94,0x99,0x01,0x9A,0x98,0x01,0x94,0x98,0x98, 0x95,0x94,0x98,0x98,0x99,0x98,0x99,0x98,0x95,0x93,0x95,0x01,0x96,0x94,0x98,0x98, 0x98,0x97,0x94,0x95,0x96,0x01,0x96,0x93,0x95,0x94,0x01,0x97,0x98,0x01,0x98,0x01, 0x99,0x94,0x98,0x01,0x92,0x92,0x01,0x93,0x94,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x95,0x95, 0x94,0x96,0x95,0x95,0x96,0x98,0x96,0x96,0x98,0x96,0x01,0x96,0x94,0x98,0x95,0x96, 0x01,0x96,0x96,0x96,0x95,0x96,0x94,0x01,0x96,0x94,0x96,0x95,0x98,0x98,0x98,0x98, 0x98,0x95,0x95,0x98,0x98,0x95,0x95,0x99,0x98,0x98,0x98,0x98,0x98,0x01,0x95,0x98, 0x98,0x98,0x99,0x95,0x99,0x98,0x9A,0x99,0x98,0x01,0x94,0x93,0x95,0x94,0x95,0x96, 0x96,0x94,0x96,0x94,0x96,0x98,0x94,0x98,0x96,0x95,0x98,0x98,0x95,0x92,0x95,0x96, 0x92,0x8E,0x8E,0x8E,0x96,0x95,0x8E,0x8E,0x8E,0x92,0x92,0x91,0x8E,0x95,0x95,0x94, 0x98,0x01,0x95,0x95,0x98,0x99,0x01,0x98,0x98,0x96,0x98,0x98,0x98,0x96,0x95,0x95, 0x98,0x9A,0x98,0x98,0x01,0x94,0x01,0x94,0x01,0x97,0x96,0x95,0x95,0x99,0x95,0x98, 0x96,0x98,0x98,0x95,0x98,0x93,0x98,0x98,0x95,0x98,0x98,0x95,0x01,0x96,0x98,0x95, 0x96,0x95,0x01,0x95,0x96,0x95,0x97,0x95,0x96,0x01,0x98,0x96,0x94,0x98,0x98,0x98, 0x94,0x95,0x95,0x01,0x96,0x98,0x95,0x95,0x95,0x98,0x92,0x01,0x01,0x95,0x93,0x98, 0x92,0x95,0x98,0x01,0x8E,0x95,0x94,0x94,0x95,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x98,0x98, 0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x9D,0x9F, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x98,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x96,0x98, 0x96,0x98,0x98,0x96,0x98,0x96,0x95,0x94,0x95,0x98,0x98,0x98,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x97,0x95,0x96,0x98,0x96,0x95,0x94,0x95,0x92,0x95,0x8E, 0x95,0x94,0x94,0x93,0x93,0x92,0x92,0x93,0x01,0x93,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98, 0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x17,0x17,0x17,0x17,0x98, 0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x98,0x17,0x17,0x17,0x17,0x98,0x9D,0x9D,0x9D, 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x96,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x95, 0x98,0x94,0x95,0x98,0x01,0x98,0x96,0x98,0x94,0x95,0x95,0x95,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x94,0x95,0x98,0x93,0x93,0x94,0x95,0x98,0x98,0x94,0x98, 0x96,0x95,0x93,0x92,0x94,0x93,0x98,0x96,0x92,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D, 0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A,0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D, 0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x98,0x98,0x98,0x98,0x9D,0x9D,0x9D,0x9A, 0x98,0x98,0x98,0x98,0x98,0x98,0x96,0x93,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x94,0x96, 0x96,0x95,0x01,0x96,0x94,0x96,0x96,0x01,0x95,0x95,0x92,0x01,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x91,0x94,0x98,0x98,0x95,0x98,0x98,0x93,0x95,0x98,0x98, 0x01,0x8E,0x8E,0x92,0x94,0x94,0x93,0x8E,0x92,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x96,0x95, 0x01,0x95,0x98,0x96,0x94,0x01,0x96,0x92,0x96,0x95,0x95,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x9D,0x9D,0x95,0x95,0x95,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x92,0x92,0x95,0x97,0x98,0x98,0x96,0x98,0x98, 0x95,0x8E,0x92,0x95,0x01,0x01,0x8E,0x8E,0x96,0x8E,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x9D,0x9D, 0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x9D,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D, 0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x95,0x92, 0x92,0x96,0x96,0x95,0x95,0x96,0x94,0x95,0x96,0x96,0x95,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10, 0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x95,0x10,0x10,0x10,0x95, 0x9D,0x95,0x10,0x10,0x10,0x95,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x95, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10, 0x10,0x95,0x95,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x95,0x10,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95, 0x95,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x97,0x99,0x96,0x98,0x94,0x97,0x94,0x96,0x96, 0x8E,0x8E,0x94,0x92,0x92,0x92,0x8E,0x96,0x92,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x95,0x9D,0x9D,0x95,0x14,0x95,0x95, 0x14,0x14,0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x14,0x95,0x9D,0x9D,0x95,0x14,0x95,0x95, 0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95, 0x14,0x95,0x9D,0x9D,0x95,0x14,0x95,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x01,0x95, 0x01,0x98,0x01,0x96,0x95,0x96,0x96,0x96,0x95,0x98,0x01,0x01,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x91,0x94,0x9F,0x9D,0x9D,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11, 0x10,0x95,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x95, 0x9D,0x95,0x10,0x11,0x10,0x95,0x10,0x11,0x10,0x11,0x95,0x95,0x10,0x11,0x10,0x95, 0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x11, 0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x11, 0x10,0x11,0x95,0x11,0x10,0x11,0x95,0x9D,0x95,0x11,0x10,0x11,0x95,0x11,0x10,0x11, 0x10,0x11,0x10,0x11,0x10,0x11,0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11, 0x95,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x98,0x97,0x98,0x97,0x93,0x97,0x96,0x98, 0x92,0x92,0x95,0x95,0x95,0x95,0x94,0x98,0x95,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14, 0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x14,0x14,0x14,0x95,0x14,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x95,0x95,0x95,0x95,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14, 0x14,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x14,0x14,0x95,0x95, 0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x94,0x96, 0x95,0x95,0x93,0x96,0x95,0x95,0x98,0x96,0x98,0x98,0x94,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x90,0x93,0x96,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x12,0x12,0x95,0x95,0x95,0x12,0x11, 0x12,0x95,0x12,0x11,0x12,0x95,0x95,0x95,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95, 0x9D,0x95,0x12,0x11,0x12,0x95,0x12,0x11,0x12,0x12,0x12,0x95,0x12,0x12,0x12,0x95, 0x12,0x12,0x12,0x95,0x95,0x95,0x12,0x11,0x12,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x11, 0x12,0x12,0x95,0x95,0x95,0x12,0x12,0x11,0x95,0x12,0x12,0x11,0x95,0x95,0x95,0x11, 0x12,0x12,0x95,0x11,0x12,0x12,0x95,0x9D,0x95,0x12,0x12,0x11,0x95,0x12,0x12,0x11, 0x95,0x95,0x95,0x11,0x12,0x12,0x95,0x11,0x12,0x12,0x95,0x95,0x95,0x12,0x12,0x11, 0x95,0x12,0x12,0x11,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x98,0x01,0x94,0x98,0x97,0x94,0x98,0x95,0x95, 0x94,0x95,0x94,0x95,0x95,0x96,0x95,0x95,0x01,0x95,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x14, 0x14,0x14,0x14,0x14,0x14,0x95,0x14,0x14,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x14,0x14,0x14,0x95,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x95, 0x14,0x14,0x14,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x9D,0x95, 0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x95,0x14,0x14,0x14,0x14,0x14,0x95,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x96, 0x95,0x98,0x96,0x94,0x96,0x95,0x94,0x96,0x94,0x96,0x98,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x93,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x99,0x99,0x9D,0x9F,0x9D,0x9D,0x95,0x12,0x13,0x12,0x95,0x95,0x95,0x95,0x95, 0x95,0x95,0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x95, 0x9D,0x95,0x12,0x13,0x12,0x95,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x12,0x95, 0x12,0x13,0x12,0x95,0x9D,0x95,0x12,0x13,0x12,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x13, 0x12,0x13,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x13,0x12,0x13,0x95,0x9D,0x95,0x13, 0x12,0x13,0x95,0x13,0x12,0x13,0x95,0x9D,0x95,0x13,0x12,0x13,0x95,0x13,0x12,0x13, 0x95,0x95,0x95,0x13,0x12,0x13,0x95,0x13,0x12,0x13,0x95,0x9D,0x9D,0x95,0x95,0x95, 0x95,0x13,0x12,0x13,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x97,0x95,0x92,0x96,0x97,0x98,0x98,0x98,0x98,0x95, 0x93,0x96,0x96,0x95,0x98,0x98,0x98,0x98,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x14, 0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x14,0x14,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x95,0x95,0x95,0x95,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x95, 0x95,0x95,0x95,0x95,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x14,0x14,0x95,0x95, 0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x95,0x95,0x95,0x95,0x95,0x14,0x14,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x01,0x98, 0x01,0x96,0x98,0x96,0x93,0x95,0x01,0x96,0x96,0x94,0x01,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x96,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13, 0x95,0x95,0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x13,0x13,0x14,0x95, 0x9D,0x95,0x13,0x13,0x13,0x95,0x14,0x13,0x13,0x95,0x13,0x13,0x13,0x13,0x14,0x95, 0x13,0x13,0x13,0x95,0x9D,0x95,0x14,0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x13, 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x95,0x95,0x13,0x13,0x13,0x95,0x9D,0x95,0x13, 0x13,0x13,0x95,0x13,0x13,0x13,0x95,0x9D,0x95,0x13,0x13,0x13,0x95,0x13,0x14,0x13, 0x13,0x13,0x13,0x13,0x13,0x13,0x95,0x13,0x13,0x13,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x13,0x13,0x13,0x13,0x13,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x97,0x94,0x98,0x97,0x94,0x92,0x95,0x94,0x94,0x95, 0x98,0x96,0x95,0x93,0x98,0x01,0x01,0x98,0x94,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14, 0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14, 0x14,0x14,0x14,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x95,0x95,0x14,0x14,0x95, 0x14,0x14,0x95,0x95,0x14,0x14,0x95,0x14,0x14,0x14,0x14,0x14,0x14,0x95,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x96, 0x96,0x98,0x01,0x01,0x01,0x95,0x98,0x95,0x98,0x01,0x98,0x98,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x98,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x14,0x14,0x15,0x14,0x15,0x14,0x15, 0x14,0x95,0x14,0x15,0x14,0x95,0x9D,0x95,0x14,0x14,0x14,0x95,0x14,0x15,0x14,0x95, 0x9D,0x95,0x14,0x15,0x14,0x95,0x14,0x15,0x14,0x95,0x95,0x15,0x14,0x15,0x14,0x95, 0x14,0x14,0x14,0x95,0x9D,0x95,0x14,0x15,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x14,0x14,0x14,0x15,0x14,0x15,0x14,0x15,0x95,0x14,0x14,0x15,0x95,0x9D,0x95,0x15, 0x14,0x14,0x95,0x15,0x14,0x15,0x95,0x9D,0x95,0x14,0x14,0x15,0x95,0x15,0x14,0x15, 0x14,0x14,0x14,0x15,0x14,0x95,0x95,0x15,0x14,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x14,0x14,0x15,0x14,0x15,0x14,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x93,0x96,0x98,0x97,0x98,0x96,0x98,0x95,0x01, 0x96,0x98,0x98,0x01,0x96,0x92,0x01,0x91,0x95,0x92,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x95, 0x95,0x9D,0x9D,0x95,0x95,0x9D,0x95,0x95,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D, 0x95,0x95,0x9D,0x9D,0x95,0x95,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x95, 0x98,0x96,0x98,0x95,0x96,0x99,0x98,0x01,0x96,0x96,0x98,0x01,0x9F,0x9F,0x9D,0x9D, 0x90,0x98,0x99,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, 0x1F,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x15,0x15, 0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95, 0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95, 0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x95,0x95,0x95,0x95,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15, 0x15,0x15,0x95,0x15,0x15,0x15,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x15,0x15,0x15, 0x15,0x15,0x15,0x95,0x95,0x9D,0x95,0x15,0x15,0x15,0x95,0x9D,0x9D,0x95,0x95,0x95, 0x95,0x15,0x15,0x15,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x98,0x98,0x98,0x01,0x97,0x96,0x95,0x01,0x95, 0x8E,0x96,0x98,0x96,0x95,0x92,0x96,0x95,0x92,0x01,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x96, 0x98,0x95,0x95,0x98,0x99,0x94,0x98,0x98,0x98,0x01,0x98,0x96,0x9F,0x9F,0x9D,0x9D, 0x91,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, 0x99,0x99,0x99,0x9F,0x9F,0x9D,0x9D,0x95,0x16,0x16,0x15,0x95,0x95,0x95,0x15,0x16, 0x16,0x95,0x15,0x16,0x16,0x95,0x95,0x95,0x16,0x16,0x15,0x95,0x16,0x16,0x15,0x95, 0x95,0x95,0x15,0x16,0x16,0x95,0x15,0x16,0x16,0x95,0x9D,0x95,0x16,0x16,0x15,0x95, 0x16,0x16,0x15,0x95,0x95,0x95,0x15,0x16,0x16,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x16, 0x16,0x16,0x95,0x95,0x95,0x16,0x15,0x16,0x95,0x16,0x15,0x16,0x95,0x95,0x95,0x16, 0x16,0x16,0x95,0x16,0x16,0x16,0x95,0x95,0x95,0x16,0x15,0x16,0x95,0x16,0x15,0x16, 0x16,0x16,0x15,0x16,0x95,0x9D,0x95,0x16,0x16,0x16,0x95,0x95,0x95,0x16,0x15,0x16, 0x95,0x16,0x15,0x16,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x95,0x96,0x95,0x94,0x98,0x95,0x95,0x94,0x94, 0x8E,0x95,0x94,0x93,0x93,0x93,0x95,0x94,0x91,0x94,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x97,0x95, 0x01,0x98,0x98,0x96,0x98,0x95,0x01,0x98,0x95,0x95,0x96,0x96,0x9F,0x9F,0x9D,0x9D, 0x94,0x9B,0x9D,0x9D,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x95,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17, 0x17,0x95,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x16,0x17,0x17, 0x17,0x17,0x17,0x17,0x17,0x95,0x17,0x17,0x17,0x95,0x9D,0x95,0x17,0x16,0x17,0x95, 0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x95,0x17, 0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x95,0x17,0x17,0x17,0x17,0x16,0x17,0x17, 0x17,0x17,0x95,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x95,0x16,0x17,0x17, 0x95,0x17,0x17,0x17,0x17,0x95,0x95,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17, 0x95,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x96,0x96,0x95,0x98,0x93,0x95,0x95,0x93,0x93,0x95, 0x8E,0x95,0x92,0x93,0x94,0x95,0x92,0x01,0x93,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x95,0x94,0x99, 0x01,0x99,0x96,0x97,0x95,0x01,0x94,0x98,0x94,0x01,0x92,0x95,0x9F,0x9F,0x9D,0x9D, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F, 0x9F,0x9F,0x9F,0x9F,0x9F,0x9D,0x9D,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18, 0x95,0x9D,0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x95,0x18,0x17,0x18, 0x17,0x18,0x17,0x18,0x95,0x95,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18,0x17,0x95, 0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95, 0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95,0x9D,0x95,0x17,0x18,0x17,0x18,0x17,0x18, 0x17,0x95,0x9D,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95,0x95,0x18,0x17,0x18, 0x95,0x95,0x17,0x18,0x17,0x18,0x95,0x95,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95, 0x95,0x18,0x17,0x18,0x17,0x18,0x17,0x18,0x17,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x94,0x98,0x95,0x95,0x92,0x01,0x93,0x95,0x98,0x95, 0x94,0x93,0x95,0x93,0x94,0x96,0x94,0x96,0x98,0x96,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x98,0x95, 0x98,0x98,0x98,0x98,0x98,0x94,0x01,0x95,0x95,0x96,0x94,0x96,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95, 0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95, 0x95,0x9D,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95, 0x9D,0x9D,0x95,0x95,0x95,0x95,0x9D,0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D, 0x9D,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x93,0x92,0x98,0x94,0x95,0x95,0x92,0x98,0x97,0x94, 0x93,0x93,0x93,0x93,0x93,0x98,0x94,0x98,0x98,0x98,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x01,0x01,0x98, 0x95,0x95,0x93,0x98,0x01,0x01,0x01,0x01,0x97,0x98,0x98,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x92,0x93,0x95,0x95,0x97,0x96,0x93,0x98,0x96,0x01, 0x94,0x92,0x92,0x92,0x01,0x98,0x94,0x97,0x96,0x97,0x9F,0x9F,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x95,0x01, 0x01,0x01,0x95,0x94,0x95,0x94,0x98,0x98,0x96,0x95,0x01,0x95,0x9F,0x9F,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 0x9D,0x9D,0x9D,0x9D,0x9D,0x90,0x98,0x94,0x95,0x92,0x01,0x97,0x01,0x92,0x98,0x95, 0x95,0x95,0x95,0x98,0x95,0x98,0x98,0x98,0x98,0x92,0x96,0x96,0x96,0x95,0x95,0x95, 0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x91,0x91,0x91,0x91, 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91, 0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x98,0x95,0x94, 0x95,0x98,0x98,0x96,0x96,0x98,0x98,0x01,0x01,0x95,0x96,0x01,0x99,0x95,0x94,0x95, 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0x94,0x94,0x94,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93, 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x98,0x94,0x98,0x96,0x96,0x97,0x92,0x98,0x98,0x98, 0x98,0x93,0x98,0x95,0x01,0x95,0x98,0x01,0x92,0x96,0x94,0x92,0x92,0x93,0x01,0x95, 0x92,0x96,0x95,0x93,0x92,0x94,0x94,0x96,0x92,0x93,0x98,0x96,0x95,0x98,0x98,0x93, 0x92,0x95,0x8E,0x92,0x8E,0x94,0x92,0x93,0x8E,0x8E,0x92,0x8E,0x92,0x95,0x8E,0x95, 0x8E,0x8E,0x95,0x92,0x94,0x92,0x92,0x8E,0x8E,0x8E,0x8E,0x8E,0x92,0x91,0x8E,0x8E, 0x8E,0x91,0x93,0x93,0x92,0x95,0x94,0x95,0x98,0x01,0x98,0x95,0x95,0x99,0x98,0x96, 0x94,0x98,0x95,0x98,0x98,0x98,0x94,0x96,0x96,0x94,0x95,0x98,0x96,0x94,0x95,0x94, 0x97,0x97,0x95,0x97,0x95,0x01,0x98,0x96,0x01,0x96,0x01,0x98,0x98,0x98,0x93,0x99, 0x01,0x01,0x98,0x98,0x96,0x99,0x98,0x98,0x96,0x98,0x95,0x96,0x98,0x98,0x99,0x98, 0x95,0x98,0x95,0x01,0x98,0x99,0x99,0x95,0x98,0x96,0x96,0x01,0x9A,0x01,0x98,0x96, 0x9A,0x98,0x98,0x96,0x98,0x95,0x95,0x98,0x98,0x95,0x95,0x96,0x01,0x93,0x94,0x95, 0x93,0x94,0x92,0x8E,0x8E,0x01,0x95,0x8E,0x92,0x8E,0x8E,0x96,0x8E,0x8E,0x96,0x95, 0x98,0x93,0x95,0x94,0x93,0x96,0x96,0x98,0x01,0x96,0x94,0x94,0x96,0x95,0x96,0x95, 0x98,0x98,0x01,0x96,0x93,0x96,0x01,0x96,0x96,0x95,0x98,0x99,0x01,0x98,0x97,0x96, 0x95,0x98,0x93,0x93,0x93,0x94,0x92,0x92,0x95,0x91,0x92,0x95,0x96,0x95,0x94,0x98, 0x94,0x95,0x95,0x95,0x98,0x95,0x95,0x95,0x94,0x98,0x98,0x97,0x93,0x96,0x01,0x94, 0x94,0x94,0x95,0x94,0x95,0x95,0x94,0x92,0x98,0x94,0x94,0x96,0x96,0x95,0x98,0x95, 0x96,0x99,0x98,0x01,0x98,0x01,0x96,0x98,0x98,0x01,0x9A,0x98,0x98,0x94,0x98,0x96, 0x96,0x01,0x95,0x96,0x98,0x97,0x95,0x99,0x98,0x98,0x94,0x98,0x96,0x98,0x01,0x98, 0x01,0x01,0x94,0x95,0x93,0x93,0x01,0x94,0x98,0x94,0x01,0x92,0x96,0x96,0x95,0x95, 0x98,0x95,0x98,0x98,0x01,0x97,0x95,0x95,0x94,0x95,0x97,0x97,0x95,0x93,0x94,0x97, 0x93,0x01,0x96,0x95,0x96,0x96,0x96,0x92,0x01,0x95,0x01,0x95,0x98,0x98,0x95,0x95, 0x01,0x95,0x94,0x95,0x95,0x98,0x98,0x98,0x94,0x01,0x98,0x98,0x95,0x95,0x94,0x94, 0x94,0x95,0x8E,0x93,0x92,0x93,0x92,0x95,0x95,0x94,0x95,0x95,0x98,0x95,0x98,0x92, 0x94,0x94,0x94,0x93,0x95,0x96,0x01,0x95,0x92,0x95,0x8E,0x94,0x8E,0x8E,0x94,0x93, 0x94,0x92,0x92,0x94,0x95,0x94,0x94,0x98,0x95,0x92,0x93,0x98,0x98,0x95,0x98,0x96, 0x96,0x93,0x98,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x95,0x96,0x96,0x98,0x98,0x98, 0x99,0x98,0x98,0x01,0x99,0x98,0x96,0x99,0x01,0x95,0x98,0x01,0x99,0x99,0x99,0x98, 0x98,0x94,0x01,0x98,0x98,0x98,0x96,0x96,0x01,0x98,0x99,0x01,0x99,0x01,0x99,0x96, 0x98,0x99,0x95,0x98,0x99,0x94,0x01,0x99,0x9A,0x9A,0x98,0x01,0x01,0x99,0x98,0x01, 0x99,0x9A,0x98,0x98,0x98,0x96,0x95,0x99,0x96,0x95,0x98,0x94,0x94,0x96,0x93,0x8E, 0x92,0x8E,0x01,0x8E,0x95,0x95,0x8E,0x8E,0x95,0x92,0x92,0x8E,0x92,0x98,0x95,0x95, 0x95,0x95,0x95,0x96,0x98,0x96,0x98,0x98,0x95,0x95,0x98,0x98,0x01,0x98,0x98,0x95, 0x95,0x98,0x98,0x96,0x01,0x96,0x98,0x96,0x98,0x98,0x98,0x98,0x98,0x01,0x95,0x94, 0x95,0x95,0x94,0x91,0x93,0x94,0x01,0x94,0x92,0x94,0x95,0x95,0x95,0x94,0x92,0x95, 0x98,0x01,0x01,0x96,0x96,0x95,0x01,0x98,0x98,0x98,0x96,0x96,0x96,0x93,0x98,0x95, 0x95,0x93,0x97,0x98,0x94,0x98,0x97,0x98,0x93,0x01,0x96,0x98,0x98,0x99,0x01,0x98, 0x98,0x98,0x99,0x9A,0x95,0x95,0x9A,0x98,0x96,0x99,0x99,0x98,0x95,0x98,0x93,0x95, 0x95,0x97,0x95,0x96,0x96,0x98,0x99,0x98,0x01,0x01,0x98,0x98,0x01,0x01,0x01,0x01, 0x95,0x95,0x95,0x95,0x96,0x92,0x94,0x95,0x98,0x98,0x94,0x94,0x92,0x96,0x94,0x98, 0x95,0x94,0x94,0x94,0x01,0x97,0x94,0x93,0x98,0x94,0x97,0x96,0x98,0x94,0x95,0x01, 0x01,0x98,0x95,0x94,0x92,0x93,0x98,0x95,0x95,0x01,0x95,0x92,0x95,0x94,0x96,0x94, 0x96,0x96,0x94,0x95,0x96,0x96,0x95,0x01,0x95,0x93,0x96,0x95,0x95,0x92,0x94,0x92, 0x8E,0x8E,0x8E,0x98,0x92,0x98,0x96,0x94,0x96,0x96,0x96,0x96,0x01,0x96,0x98,0x01, 0x94,0x98,0x95,0x01,0x98,0x01,0x95,0x95,0x95,0x95,0x01,0x94,0x92,0x94,0x93,0x94, 0x96,0x96,0x01,0x95,0x94,0x96,0x94,0x96,0x98,0x95,0x98,0x94,0x97,0x98,0x92,0x96, 0x96,0x94,0x94,0x95,0x95,0x94,0x93,0x95,0x01,0x95,0x01,0x95,0x96,0x98,0x98,0x98, 0x99,0x98,0x98,0x99,0x95,0x9A,0x99,0x99,0x9A,0x98,0x99,0x98,0x9A,0x98,0x01,0x98, 0x96,0x98,0x94,0x94,0x98,0x95,0x98,0x96,0x99,0x98,0x9A,0x98,0x9A,0x9A,0x01,0x99, 0x99,0x98,0x95,0x99,0x98,0x96,0x99,0x98,0x96,0x94,0x96,0x95,0x94,0x98,0x01,0x95, 0x01,0x01,0x01,0x96,0x98,0x95,0x95,0x96,0x94,0x94,0x95,0x95,0x92,0x94,0x93,0x8E, 0x93,0x94,0x95,0x92,0x98,0x96,0x93,0x8E,0x93,0x95,0x93,0x95,0x95,0x96,0x98,0x96, 0x96,0x98,0x98,0x94,0x94,0x94,0x96,0x01,0x98,0x95,0x97,0x98,0x01,0x01,0x98,0x98, 0x98,0x98,0x96,0x98,0x98,0x01,0x99,0x98,0x99,0x95,0x95,0x96,0x95,0x96,0x93,0x92, 0x94,0x96,0x93,0x93,0x91,0x01,0x92,0x94,0x98,0x94,0x96,0x94,0x95,0x95,0x94,0x95, 0x96,0x95,0x95,0x93,0x96,0x01,0x98,0x01,0x96,0x95,0x94,0x94,0x93,0x95,0x96,0x98, 0x96,0x95,0x98,0x96,0x98,0x96,0x9A,0x9A,0x9A,0x9A,0x9A,0x98,0x96,0x9A,0x9A,0x98, 0x98,0x98,0x96,0x98,0x9A,0x98,0x98,0x98,0x95,0x99,0x99,0x98,0x96,0x95,0x98,0x98, 0x98,0x98,0x99,0x97,0x01,0x98,0x01,0x94,0x01,0x98,0x96,0x94,0x94,0x96,0x94,0x95, 0x98,0x98,0x95,0x94,0x98,0x95,0x94,0x96,0x92,0x95,0x95,0x98,0x01,0x95,0x94,0x92, 0x93,0x98,0x96,0x01,0x95,0x97,0x95,0x98,0x94,0x94,0x95,0x97,0x98,0x98,0x94,0x01, 0x98,0x98,0x95,0x92,0x94,0x96,0x92,0x95,0x93,0x94,0x95,0x95,0x98,0x96,0x98,0x96, 0x96,0x98,0x95,0x01,0x95,0x98,0x01,0x98,0x98,0x94,0x95,0x01,0x95,0x95,0x8E,0x8E, 0x8E,0x95,0x95,0x95,0x98,0x98,0x01,0x96,0x96,0x95,0x93,0x94,0x95,0x98,0x93,0x93, 0x93,0x98,0x95,0x96,0x98,0x95,0x94,0x95,0x95,0x95,0x98,0x95,0x96,0x92,0x96,0x01, 0x94,0x92,0x95,0x98,0x98,0x95,0x98,0x01,0x01,0x91,0x95,0x01,0x95,0x95,0x01,0x96, 0x98,0x95,0x94,0x01,0x92,0x94,0x98,0x98,0x94,0x96,0x94,0x94,0x01,0x01,0x98,0x98, 0x98,0x98,0x95,0x95,0x94,0x98,0x98,0x98,0x01,0x95,0x98,0x98,0x01,0x96,0x93,0x97, 0x95,0x95,0x94,0x97,0x94,0x98,0x01,0x95,0x98,0x95,0x92,0x94,0x98,0x98,0x94,0x95, 0x96,0x96,0x92,0x95,0x95,0x01,0x96,0x96,0x96,0x96,0x96,0x01,0x94,0x01,0x93,0x95, 0x95,0x96,0x98,0x94,0x95,0x94,0x95,0x93,0x95,0x96,0x96,0x01,0x98,0x98,0x96,0x01, 0x95,0x98,0x99,0x99,0x98,0x98,0x01,0x98,0x01,0x99,0x99,0x98,0x98,0x96,0x98,0x95, 0x98,0x01,0x95,0x98,0x98,0x96,0x98,0x01,0x96,0x98,0x96,0x98,0x96,0x98,0x98,0x98, 0x98,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x97,0x95,0x95,0x93,0x92,0x96,0x95,0x96, 0x94,0x98,0x98,0x93,0x95,0x93,0x96,0x92,0x92,0x95,0x95,0x95,0x94,0x93,0x92,0x93, 0x93,0x95,0x95,0x95,0x96,0x93,0x93,0x95,0x94,0x98,0x93,0x01,0x94,0x01,0x96,0x95, 0x99,0x96,0x98,0x99,0x01,0x99,0x96,0x98,0x01,0x01,0x98,0x98,0x96,0x95,0x98,0x99, 0x9A,0x9A,0x98,0x9A,0x98,0x98,0x99,0x98,0x96,0x95,0x99,0x96,0x98,0x9A,0x98,0x9A, 0x9A,0x9A,0x99,0x95,0x93,0x96,0x93,0x98,0x94,0x92,0x98,0x01,0x95,0x92,0x96,0x95, 0x92,0x96,0x95,0x95,0x94,0x01,0x98,0x95,0x95,0x95,0x95,0x94,0x97,0x98,0x96,0x96, 0x95,0x92,0x01,0x95,0x97,0x95,0x98,0x94,0x01,0x93,0x95,0x95,0x98,0x01,0x96,0x8E, 0x95,0x95,0x95,0x93,0x01,0x95,0x98,0x98,0x95,0x01,0x96,0x93,0x95,0x94,0x98,0x98, 0x01,0x01,0x98,0x98,0x95,0x95,0x98,0x98,0x98,0x95,0x96,0x95,0x8E,0x93,0x8E,0x93, 0x98,0x01,0x98,0x94,0x01,0x98,0x96,0x95,0x95,0x92,0x94,0x94,0x93,0x93,0x01,0x93, 0x93,0x93,0x95,0x95,0x93,0x95,0x94,0x96,0x94,0x95,0x93,0x95,0x94,0x96,0x95,0x94, 0x95,0x95,0x92,0x98,0x97,0x96,0x96,0x96,0x95,0x98,0x96,0x98,0x95,0x98,0x98,0x94, 0x96,0x01,0x94,0x92,0x01,0x01,0x98,0x99,0x96,0x96,0x98,0x94,0x95,0x93,0x95,0x98, 0x95,0x98,0x98,0x93,0x96,0x97,0x97,0x95,0x96,0x98,0x94,0x94,0x98,0x01,0x98,0x01, 0x98,0x98,0x98,0x98,0x95,0x95,0x95,0x98,0x94,0x96,0x96,0x95,0x96,0x98,0x96,0x95, 0x95,0x95,0x94,0x94,0x94,0x95,0x93,0x01,0x95,0x95,0x92,0x93,0x94,0x95,0x95,0x93, 0x8E,0x93,0x92,0x94,0x8E,0x8E,0x92,0x8E,0x8E,0x94,0x96,0x98,0x01,0x98,0x98,0x98, 0x95,0x95,0x96,0x01,0x98,0x95,0x95,0x99,0x98,0x99,0x99,0x99,0x95,0x98,0x98,0x98, 0x95,0x01,0x95,0x98,0x95,0x01,0x95,0x98,0x98,0x01,0x98,0x96,0x01,0x96,0x98,0x95, 0x98,0x98,0x98,0x98,0x98,0x96,0x96,0x98,0x96,0x95,0x95,0x95,0x95,0x96,0x97,0x95, 0x96,0x98,0x96,0x95,0x96,0x97,0x94,0x95,0x98,0x93,0x95,0x94,0x95,0x01,0x92,0x96, 0x95,0x95,0x96,0x95,0x95,0x96,0x01,0x96,0x96,0x95,0x95,0x96,0x98,0x97,0x96,0x95, 0x95,0x92,0x97,0x98,0x97,0x94,0x97,0x93,0x94,0x96,0x96,0x01,0x95,0x94,0x98,0x98, 0x94,0x97,0x96,0x98,0x92,0x97,0x98,0x98,0x96,0x98,0x94,0x98,0x98,0x94,0x01,0x98, 0x99,0x98,0x96,0x98,0x94,0x98,0x01,0x96,0x98,0x01,0x94,0x96,0x94,0x98,0x96,0x95, 0x01,0x94,0x95,0x96,0x97,0x96,0x95,0x96,0x01,0x95,0x97,0x98,0x95,0x95,0x96,0x96, 0x94,0x98,0x95,0x98,0x95,0x98,0x96,0x96,0x98,0x01,0x01,0x98,0x92,0x95,0x01,0x98, 0x95,0x94,0x96,0x93,0x98,0x98,0x96,0x95,0x98,0x98,0x95,0x98,0x95,0x95,0x95,0x01, 0x95,0x95,0x93,0x93,0x96,0x95,0x95,0x93,0x95,0x94,0x95,0x92,0x8E,0x94,0x98,0x95, 0x96,0x94,0x98,0x96,0x95,0x95,0x95,0x94,0x92,0x95,0x01,0x92,0x98,0x93,0x92,0x95, 0x01,0x93,0x92,0x94,0x92,0x93,0x94,0x92,0x95,0x92,0x94,0x94,0x95,0x93,0x95,0x96, 0x95,0x94,0x95,0x92,0x97,0x94,0x95,0x01,0x01,0x94,0x98,0x01,0x01,0x98,0x95,0x98, 0x01,0x98,0x95,0x95,0x01,0x98,0x01,0x96,0x98,0x94,0x97,0x01,0x01,0x95,0x96,0x98, 0x98,0x95,0x96,0x96,0x96,0x94,0x01,0x96,0x94,0x95,0x98,0x92,0x94,0x96,0x96,0x98, 0x17,0x17,0x17,0x17,0x98,0x95,0x96,0x96,0x93,0x01,0x93,0x93,0x01,0x96,0x95,0x94, 0x95,0x93,0x95,0x95,0x96,0x96,0x95,0x91,0x96,0x93,0x92,0x92,0x94,0x95,0x91,0x94, 0x92,0x93,0x8E,0x8E,0x8E,0x95,0x92,0x91,0x95,0x93,0x92,0x94,0x96,0x95,0x95,0x01, 0x98,0x98,0x93,0x98,0x01,0x98,0x95,0x01,0x92,0x93,0x94,0x96,0x95,0x98,0x96,0x97, 0x95,0x98,0x98,0x98,0x98,0x01,0x98,0x17,0x17,0x98,0x01,0x98,0x98,0x96,0x94,0x95, 0x94,0x95,0x96,0x98,0x96,0x94,0x95,0x01,0x98,0x01,0x94,0x95,0x98,0x92,0x01,0x98, 0x98,0x98,0x98,0x01,0x98,0x98,0x96,0x98,0x9A,0x95,0x99,0x98,0x95,0x97,0x97,0x95, 0x98,0x95,0x98,0x98,0x95,0x95,0x98,0x92,0x98,0x94,0x95,0x95,0x96,0x96,0x94,0x96, 0x98,0x92,0x96,0x95,0x01,0x98,0x01,0x98,0x92,0x92,0x98,0x01,0x98,0x98,0x01,0x96, 0x92,0x94,0x95,0x95,0x95,0x98,0x95,0x96,0x96,0x95,0x93,0x01,0x01,0x94,0x98,0x96, 0x01,0x98,0x99,0x98,0x98,0x98,0x01,0x98,0x01,0x96,0x9A,0x9A,0x96,0x96,0x98,0x9A, 0x95,0x98,0x96,0x01,0x98,0x94,0x97,0x93,0x96,0x98,0x01,0x95,0x95,0x97,0x96,0x01, 0x98,0x96,0x96,0x01,0x95,0x96,0x01,0x98,0x94,0x01,0x01,0x94,0x95,0x96,0x97,0x98, 0x93,0x95,0x01,0x98,0x94,0x94,0x95,0x94,0x96,0x95,0x95,0x95,0x94,0x96,0x95,0x95, 0x93,0x92,0x94,0x95,0x98,0x93,0x92,0x92,0x96,0x94,0x96,0x95,0x93,0x92,0x94,0x95, 0x96,0x95,0x95,0x95,0x01,0x95,0x98,0x93,0x93,0x93,0x95,0x93,0x94,0x95,0x92,0x95, 0x01,0x92,0x95,0x94,0x92,0x95,0x92,0x95,0x95,0x95,0x94,0x92,0x93,0x95,0x01,0x95, 0x95,0x98,0x94,0x96,0x95,0x98,0x94,0x01,0x98,0x01,0x94,0x98,0x96,0x01,0x01,0x93, 0x94,0x92,0x97,0x01,0x98,0x96,0x01,0x01,0x98,0x94,0x94,0x95,0x01,0x94,0x96,0x01, 0x01,0x98,0x96,0x96,0x92,0x96,0x01,0x95,0x96,0x96,0x94,0x96,0x01,0x96,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x94,0x98,0x98,0x98,0x98,0x98,0x01,0x93,0x94,0x93, 0x98,0x98,0x98,0x98,0x95,0x94,0x01,0x95,0x94,0x92,0x93,0x95,0x95,0x93,0x93,0x98, 0x98,0x8E,0x93,0x94,0x98,0x98,0x94,0x95,0x98,0x98,0x98,0x98,0x98,0x01,0x94,0x98, 0x98,0x93,0x01,0x01,0x98,0x98,0x94,0x94,0x98,0x98,0x98,0x98,0x95,0x96,0x01,0x98, 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x96,0x98,0x95,0x94, 0x92,0x96,0x96,0x96,0x95,0x96,0x96,0x98,0x98,0x01,0x96,0x98,0x97,0x98,0x98,0x95, 0x98,0x01,0x98,0x98,0x96,0x98,0x98,0x98,0x96,0x95,0x98,0x97,0x94,0x94,0x93,0x01, 0x95,0x94,0x96,0x98,0x01,0x95,0x96,0x98,0x01,0x98,0x95,0x01,0x01,0x94,0x01,0x95, 0x01,0x96,0x95,0x01,0x98,0x92,0x95,0x01,0x96,0x94,0x01,0x01,0x95,0x98,0x93,0x96, 0x95,0x94,0x96,0x96,0x01,0x94,0x95,0x96,0x01,0x94,0x95,0x96,0x91,0x95,0x01,0x97, 0x95,0x98,0x96,0x96,0x98,0x98,0x01,0x98,0x98,0x96,0x95,0x01,0x98,0x01,0x01,0x98, 0x99,0x01,0x9A,0x99,0x98,0x96,0x94,0x98,0x96,0x96,0x95,0x95,0x98,0x94,0x95,0x96, 0x94,0x98,0x94,0x98,0x01,0x96,0x98,0x94,0x95,0x01,0x94,0x98,0x98,0x98,0x98,0x95, 0x95,0x92,0x98,0x92,0x93,0x94,0x93,0x96,0x01,0x92,0x92,0x96,0x98,0x92,0x01,0x93, 0x94,0x93,0x95,0x92,0x93,0x93,0x01,0x93,0x8E,0x92,0x92,0x96,0x96,0x93,0x95,0x94, 0x95,0x94,0x92,0x93,0x01,0x96,0x93,0x92,0x95,0x93,0x92,0x92,0x94,0x91,0x95,0x95, 0x01,0x95,0x94,0x94,0x93,0x95,0x95,0x01,0x95,0x93,0x96,0x01,0x94,0x95,0x92,0x96, 0x95,0x01,0x94,0x01,0x01,0x01,0x95,0x98,0x95,0x95,0x98,0x98,0x94,0x95,0x98,0x98, 0x96,0x99,0x01,0x96,0x98,0x99,0x98,0x98,0x98,0x01,0x94,0x94,0x98,0x98,0x96,0x95, 0x95,0x94,0x01,0x98,0x94,0x95,0x96,0x95,0x96,0x95,0x94,0x96,0x96,0x96,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x92,0x92,0x98, 0x17,0x17,0x17,0x17,0x98,0x95,0x93,0x92,0x96,0x95,0x94,0x98,0x96,0x96,0x98,0x17, 0x17,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x98,0x17, 0x17,0x98,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x96,0x98,0x17, 0x17,0x17,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x95,0x95,0x01, 0x01,0x94,0x95,0x96,0x96,0x95,0x98,0x98,0x97,0x98,0x96,0x95,0x95,0x98,0x95,0x95, 0x96,0x98,0x92,0x98,0x96,0x01,0x94,0x94,0x92,0x96,0x94,0x98,0x94,0x98,0x95,0x01, 0x01,0x95,0x01,0x98,0x01,0x98,0x01,0x98,0x94,0x94,0x98,0x95,0x96,0x01,0x96,0x01, 0x95,0x94,0x01,0x94,0x95,0x95,0x95,0x98,0x96,0x01,0x94,0x98,0x92,0x01,0x95,0x01, 0x92,0x96,0x98,0x95,0x01,0x98,0x01,0x95,0x98,0x96,0x96,0x96,0x01,0x98,0x01,0x98, 0x01,0x97,0x94,0x98,0x01,0x96,0x01,0x95,0x99,0x01,0x98,0x9A,0x9A,0x95,0x98,0x9B, 0x98,0x98,0x9A,0x98,0x9A,0x01,0x99,0x95,0x96,0x9D,0x98,0x9D,0x98,0x96,0x9B,0x98, 0x01,0x95,0x9B,0x9D,0x9B,0x94,0x01,0x95,0x97,0x01,0x94,0x98,0x98,0x98,0x98,0x98, 0x93,0x98,0x96,0x95,0x95,0x92,0x93,0x93,0x95,0x93,0x96,0x94,0x93,0x95,0x95,0x94, 0x93,0x98,0x92,0x94,0x95,0x95,0x94,0x92,0x92,0x92,0x98,0x93,0x96,0x92,0x95,0x95, 0x92,0x91,0x94,0x96,0x94,0x95,0x93,0x98,0x95,0x94,0x01,0x98,0x96,0x98,0x93,0x94, 0x93,0x92,0x93,0x94,0x96,0x01,0x98,0x93,0x93,0x96,0x96,0x96,0x96,0x01,0x95,0x96, 0x95,0x94,0x95,0x94,0x98,0x01,0x94,0x95,0x96,0x98,0x99,0x99,0x98,0x96,0x01,0x95, 0x98,0x98,0x98,0x98,0x01,0x01,0x98,0x98,0x01,0x95,0x95,0x94,0x98,0x94,0x96,0x96, 0x01,0x94,0x95,0x94,0x95,0x93,0x96,0x94,0x96,0x95,0x94,0x01,0x96,0x95,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x01,0x93,0x94,0x92,0x96,0x8E,0x93,0x8E,0x98,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x01,0x96,0x98,0x96, 0x96,0x01,0x95,0x92,0x01,0x98,0x95,0x98,0x95,0x98,0x98,0x95,0x98,0x96,0x01,0x95, 0x98,0x01,0x95,0x98,0x96,0x94,0x96,0x96,0x01,0x95,0x96,0x98,0x94,0x96,0x96,0x96, 0x98,0x01,0x96,0x01,0x01,0x98,0x01,0x01,0x96,0x96,0x95,0x01,0x92,0x95,0x01,0x96, 0x96,0x94,0x96,0x01,0x92,0x93,0x01,0x95,0x98,0x94,0x96,0x01,0x01,0x95,0x01,0x92, 0x98,0x01,0x98,0x01,0x98,0x95,0x01,0x01,0x01,0x93,0x98,0x96,0x95,0x98,0x01,0x98, 0x95,0x94,0x95,0x96,0x98,0x98,0x96,0x97,0x95,0x01,0x96,0x99,0x99,0x98,0x95,0x98, 0x99,0x98,0x01,0x98,0x98,0x01,0x96,0x98,0x98,0x9D,0x99,0x9D,0x98,0x9B,0x9D,0x01, 0x96,0x98,0x9C,0x98,0x9C,0x97,0x95,0x01,0x94,0x98,0x98,0x98,0x98,0x98,0x01,0x98, 0x96,0x98,0x96,0x92,0x93,0x94,0x95,0x95,0x92,0x93,0x93,0x91,0x96,0x94,0x95,0x95, 0x98,0x96,0x93,0x95,0x92,0x92,0x95,0x92,0x8E,0x92,0x93,0x94,0x98,0x95,0x95,0x93, 0x93,0x92,0x96,0x93,0x96,0x95,0x92,0x92,0x94,0x92,0x95,0x96,0x95,0x94,0x92,0x94, 0x96,0x01,0x01,0x95,0x95,0x94,0x96,0x94,0x93,0x95,0x98,0x94,0x98,0x01,0x01,0x95, 0x95,0x95,0x96,0x96,0x01,0x99,0x96,0x99,0x96,0x95,0x96,0x99,0x99,0x95,0x94,0x94, 0x01,0x98,0x96,0x96,0x98,0x96,0x01,0x95,0x98,0x96,0x96,0x98,0x93,0x98,0x01,0x96, 0x96,0x95,0x96,0x91,0x01,0x96,0x01,0x96,0x96,0x95,0x96,0x95,0x01,0x94,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x17,0x17,0x17,0x17,0x98,0x94,0x95,0x98,0x8E,0x92,0x91,0x92,0x93,0x98,0x17, 0x17,0x98,0x17,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x17,0x98,0x17,0x17,0x98,0x17,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x01,0x93,0x94,0x98,0x96,0x95, 0x98,0x98,0x01,0x95,0x96,0x98,0x98,0x97,0x98,0x98,0x98,0x98,0x93,0x96,0x96,0x95, 0x98,0x98,0x94,0x98,0x96,0x98,0x92,0x96,0x96,0x96,0x98,0x96,0x96,0x95,0x01,0x98, 0x93,0x96,0x01,0x95,0x98,0x95,0x01,0x95,0x96,0x96,0x98,0x01,0x01,0x94,0x98,0x98, 0x94,0x96,0x95,0x95,0x95,0x92,0x98,0x95,0x01,0x01,0x95,0x98,0x95,0x98,0x01,0x96, 0x96,0x98,0x01,0x98,0x98,0x93,0x93,0x95,0x98,0x01,0x01,0x96,0x95,0x95,0x96,0x95, 0x98,0x94,0x98,0x94,0x98,0x94,0x96,0x98,0x95,0x95,0x97,0x95,0x98,0x98,0x01,0x98, 0x98,0x96,0x98,0x98,0x01,0x98,0x96,0x98,0x98,0x9D,0x98,0x9D,0x9A,0x98,0x9D,0x99, 0x96,0x96,0x9D,0x96,0x9D,0x01,0x98,0x97,0x94,0x98,0x98,0x98,0x98,0x98,0x98,0x98, 0x93,0x95,0x96,0x93,0x93,0x95,0x93,0x94,0x91,0x94,0x92,0x94,0x96,0x93,0x93,0x95, 0x93,0x96,0x8E,0x8E,0x95,0x8F,0x93,0x94,0x91,0x92,0x94,0x95,0x92,0x93,0x93,0x93, 0x92,0x95,0x94,0x92,0x96,0x94,0x96,0x95,0x95,0x94,0x93,0x01,0x95,0x92,0x95,0x93, 0x92,0x95,0x94,0x95,0x94,0x95,0x93,0x95,0x98,0x98,0x01,0x98,0x97,0x98,0x98,0x93, 0x98,0x95,0x98,0x96,0x95,0x99,0x99,0x01,0x95,0x98,0x98,0x98,0x96,0x96,0x94,0x95, 0x96,0x98,0x95,0x94,0x98,0x98,0x94,0x98,0x95,0x96,0x98,0x98,0x95,0x94,0x01,0x95, 0x96,0x01,0x01,0x96,0x96,0x94,0x96,0x96,0x95,0x98,0x93,0x95,0x94,0x92,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x98,0x98,0x01,0x95,0x92,0x8E,0x01,0x92,0x95,0x96,0x95,0x98,0x17, 0x17,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x98,0x17,0x17,0x98,0x17,0x17,0x98,0x98,0x98,0x98,0x01,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x96,0x96,0x96,0x98, 0x17,0x17,0x98,0x94,0x95,0x98,0x98,0x98,0x17,0x17,0x98,0x01,0x96,0x95,0x01,0x98, 0x17,0x17,0x98,0x95,0x96,0x98,0x96,0x96,0x95,0x96,0x98,0x01,0x98,0x01,0x95,0x96, 0x95,0x98,0x98,0x01,0x01,0x98,0x95,0x98,0x01,0x98,0x98,0x01,0x94,0x98,0x98,0x01, 0x96,0x95,0x96,0x93,0x93,0x98,0x93,0x96,0x98,0x98,0x98,0x96,0x95,0x98,0x96,0x96, 0x95,0x96,0x95,0x94,0x95,0x96,0x01,0x01,0x96,0x01,0x93,0x93,0x01,0x98,0x96,0x93, 0x93,0x01,0x95,0x01,0x01,0x96,0x01,0x94,0x98,0x95,0x01,0x95,0x95,0x96,0x01,0x97, 0x97,0x96,0x98,0x98,0x96,0x96,0x94,0x96,0x95,0x9C,0x98,0x9C,0x96,0x98,0x9D,0x01, 0x01,0x98,0x9D,0x95,0x9D,0x01,0x01,0x96,0x95,0x95,0x95,0x95,0x01,0x95,0x98,0x98, 0x95,0x92,0x93,0x95,0x95,0x92,0x93,0x93,0x92,0x95,0x96,0x93,0x95,0x92,0x95,0x95, 0x96,0x92,0x92,0x91,0x94,0x01,0x94,0x96,0x95,0x93,0x93,0x93,0x92,0x95,0x93,0x92, 0x91,0x95,0x96,0x94,0x91,0x98,0x95,0x96,0x92,0x93,0x93,0x95,0x94,0x95,0x96,0x94, 0x94,0x92,0x95,0x01,0x96,0x98,0x98,0x94,0x95,0x95,0x01,0x97,0x94,0x97,0x98,0x95, 0x98,0x01,0x98,0x93,0x99,0x96,0x95,0x95,0x98,0x01,0x01,0x96,0x92,0x96,0x96,0x96, 0x95,0x92,0x96,0x95,0x93,0x93,0x96,0x96,0x96,0x95,0x95,0x93,0x96,0x96,0x98,0x96, 0x01,0x94,0x96,0x95,0x96,0x96,0x96,0x95,0x92,0x96,0x92,0x95,0x95,0x95,0x94,0x98, 0x17,0x17,0x17,0x17,0x98,0x95,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x98,0x95,0x98, 0x17,0x17,0x17,0x17,0x17,0x98,0x8E,0x8E,0x92,0x95,0x95,0x92,0x93,0x92,0x98,0x17, 0x17,0x98,0x96,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x98,0x98,0x17, 0x17,0x98,0x96,0x98,0x17,0x17,0x98,0x98,0x17,0x17,0x17,0x17,0x17,0x98,0x98,0x17, 0x17,0x98,0x98,0x17,0x17,0x98,0x98,0x98,0x17,0x17,0x17,0x17,0x98,0x96,0x01,0x98, 0x17,0x17,0x98,0x97,0x95,0x96,0x95,0x98,0x17,0x17,0x98,0x98,0x96,0x96,0x95,0x98, 0x17,0x17,0x98,0x95,0x95,0x96,0x96,0x95,0x01,0x95,0x92,0x95,0x95,0x01,0x98,0x96, 0x01,0x98,0x98,0x98,0x01,0x95,0x94,0x94,0x01,0x98,0x98,0x98,0x95,0x98,0x92,0x01, 0x01,0x98,0x96,0x95,0x98,0x95,0x94,0x01,0x01,0x01,0x96,0x01,0x95,0x95,0x01,0x01, 0x01,0x93,0x94,0x98,0x01,0x01,0x01,0x94,0x95,0x95,0x01,0x95,0x92,0x01,0x94,0x92, 0x96,0x94,0x95,0x95,0x93,0x95,0x01,0x01,0x94,0x93,0x95,0x01,0x98,0x95,0x95,0x94, 0x93,0x98,0x96,0x95,0x94,0x93,0x97,0x01,0x95,0x9B,0x9D,0x9B,0x96,0x94,0x9D,0x98, 0x98,0x98,0x9C,0x99,0x9C,0x98,0x99,0x9A,0x99,0x96,0x98,0x98,0x95,0x98,0x95,0x01, 0x93,0x92,0x93,0x92,0x94,0x93,0x95,0x92,0x92,0x94,0x93,0x93,0x93,0x98,0x01,0x94, 0x8E,0x94,0x01,0x93,0x01,0x94,0x95,0x98,0x93,0x95,0x01,0x93,0x94,0x93,0x94,0x93, 0x92,0x92,0x95,0x96,0x95,0x92,0x96,0x95,0x95,0x94,0x92,0x94,0x95,0x01,0x94,0x92, 0x95,0x95,0x95,0x95,0x01,0x95,0x95,0x95,0x98,0x01,0x92,0x98,0x93,0x97,0x92,0x93, 0x98,0x99,0x01,0x99,0x94,0x97,0x98,0x98,0x95,0x96,0x94,0x95,0x98,0x94,0x95,0x96, 0x98,0x94,0x95,0x96,0x93,0x95,0x94,0x95,0x96,0x95,0x96,0x98,0x96,0x96,0x95,0x95, 0x95,0x93,0x93,0x95,0x95,0x95,0x93,0x93,0x95,0x95,0x92,0x93,0x92,0x95,0x92,0x95, 0x98,0x98,0x98,0x98,0x94,0x94,0x94,0x98,0x98,0x98,0x96,0x98,0x98,0x93,0x92,0x95, 0x98,0x98,0x98,0x98,0x98,0x94,0x92,0x92,0x92,0x01,0x92,0x94,0x92,0x95,0x94,0x98, 0x98,0x96,0x98,0x96,0x98,0x98,0x95,0x95,0x98,0x98,0x98,0x98,0x98,0x96,0x94,0x98, 0x98,0x95,0x95,0x93,0x98,0x98,0x96,0x96,0x98,0x98,0x98,0x98,0x98,0x98,0x94,0x98, 0x98,0x01,0x94,0x98,0x98,0x98,0x98,0x94,0x98,0x98,0x98,0x98,0x98,0x01,0x01,0x95, 0x98,0x98,0x98,0x01,0x96,0x92,0x98,0x95,0x98,0x98,0x94,0x98,0x01,0x98,0x95,0x96, 0x98,0x98,0x01,0x96,0x96,0x96,0x96,0x96,0x01,0x93,0x01,0x95,0x98,0x98,0x95,0x95, 0x94,0x94,0x95,0x01,0x01,0x01,0x01,0x01,0x98,0x94,0x92,0x96,0x01,0x01,0x01,0x94, 0x98,0x94,0x93,0x95,0x94,0x95,0x96,0x94,0x95,0x01,0x95,0x94,0x94,0x01,0x01,0x01, 0x95,0x94,0x98,0x01,0x01,0x98,0x96,0x95,0x96,0x96,0x98,0x96,0x96,0x94,0x98,0x96, 0x01,0x95,0x96,0x96,0x01,0x96,0x01,0x96,0x98,0x96,0x95,0x95,0x96,0x98,0x01,0x92, 0x95,0x01,0x95,0x01,0x94,0x98,0x01,0x97,0x95,0x98,0x9D,0x01,0x01,0x01,0x9D,0x98, 0x9C,0x01,0x9B,0x9D,0x9B,0x96,0x9A,0x98,0x9A,0x01,0x95,0x01,0x99,0x98,0x95,0x95, 0x92,0x96,0x92,0x95,0x94,0x94,0x93,0x93,0x93,0x96,0x93,0x92,0x93,0x92,0x8E,0x92, 0x92,0x92,0x92,0x95,0x92,0x91,0x92,0x93,0x92,0x92,0x01,0x92,0x96,0x92,0x98,0x01, 0x95,0x95,0x95,0x94,0x95,0x95,0x93,0x95,0x95,0x95,0x93,0x01,0x94,0x95,0x01,0x01, 0x96,0x95,0x98,0x95,0x95,0x98,0x95,0x98,0x98,0x98,0x01,0x98,0x97,0x97,0x01,0x98, 0x94,0x95,0x98,0x93,0x97,0x98,0x94,0x96,0x95,0x94,0x95,0x92,0x98,0x93,0x95,0x95, 0x96,0x01,0x93,0x01,0x94,0x96,0x93,0x95,0x93,0x01,0x96,0x96,0x95,0x95,0x96,0x95, 0x98,0x95,0x93,0x96,0x94,0x95,0x92,0x95,0x96,0x92,0x92,0x91,0x92,0x96,0x95,0x93, 0x93,0x95,0x95,0x95,0x93,0x92,0x94,0x93,0x95,0x92,0x94,0x95,0x92,0x92,0x92,0x91, 0x8E,0x92,0x92,0x8E,0x93,0x94,0x94,0x91,0x94,0x96,0x94,0x94,0x96,0x96,0x95,0x01, 0x95,0x01,0x95,0x98,0x93,0x01,0x95,0x98,0x96,0x96,0x96,0x98,0x93,0x96,0x94,0x98, 0x95,0x95,0x95,0x95,0x95,0x95,0x01,0x01,0x01,0x98,0x98,0x01,0x95,0x95,0x98,0x94, 0x01,0x98,0x94,0x01,0x01,0x01,0x01,0x95,0x01,0x95,0x94,0x01,0x01,0x97,0x96,0x98, 0x96,0x94,0x95,0x95,0x95,0x95,0x98,0x95,0x98,0x95,0x96,0x95,0x98,0x93,0x94,0x94, 0x95,0x96,0x98,0x96,0x98,0x96,0x98,0x95,0x98,0x94,0x96,0x94,0x98,0x01,0x98,0x96, 0x01,0x94,0x01,0x01,0x94,0x96,0x96,0x01,0x95,0x01,0x98,0x98,0x95,0x98,0x96,0x98, 0x93,0x01,0x01,0x01,0x93,0x01,0x01,0x95,0x01,0x92,0x98,0x94,0x96,0x94,0x95,0x95, 0x94,0x01,0x96,0x01,0x98,0x96,0x01,0x01,0x01,0x95,0x95,0x01,0x01,0x01,0x95,0x98, 0x95,0x95,0x94,0x96,0x95,0x01,0x98,0x01,0x01,0x98,0x96,0x01,0x96,0x98,0x96,0x96, 0x96,0x96,0x96,0x98,0x93,0x96,0x95,0x01,0x96,0x94,0x94,0x95,0x98,0x95,0x98,0x96, 0x98,0x98,0x99,0x9A,0x95,0x94,0x01,0x98,0x98,0x9A,0x9A,0x98,0x98,0x01,0x96,0x96, 0x95,0x95,0x93,0x96,0x92,0x92,0x96,0x8E,0x94,0x8E,0x8E,0x8E,0x94,0x8E,0x8E,0x8E, 0x92,0x98,0x01,0x94,0x93,0x96,0x98,0x98,0x01,0x95,0x94,0x98,0x95,0x98,0x98,0x98, 0x98,0x01,0x98,0x95,0x01,0x95,0x98,0x01,0x01,0x98,0x94,0x93,0x98,0x96,0x01,0x01, 0x95,0x95,0x98,0x95,0x98,0x01,0x98,0x96,0x98,0x95,0x98,0x99,0x98,0x94,0x94,0x95, 0x94,0x98,0x01,0x96,0x94,0x95,0x98,0x95,0x93,0x94,0x95,0x93,0x92,0x94,0x95,0x95, 0x94,0x95,0x94,0x95,0x92,0x96,0x01,0x96,0x92,0x95,0x94,0x01,0x92,0x95,0x95,0x92, 0x96,0x94,0x92,0x94,0x95,0x96,0x94,0x92,0x96,0x95,0x8E,0x8E,0x8E,0x92,0x92,0x93, 0x93,0x92,0x95,0x93,0x95,0x92,0x94,0x92,0x94,0x92,0x93,0x93,0x8E,0x96,0x8E,0x92, 0x8E,0x93,0x95,0x92,0x01,0x94,0x95,0x96,0x95,0x93,0x01,0x95,0x99,0x96,0x98,0x96, 0x01,0x98,0x94,0x99,0x99,0x98,0x98,0x98,0x94,0x99,0x98,0x99,0x98,0x98,0x99,0x96, 0x01,0x96,0x01,0x96,0x96,0x95,0x98,0x96,0x98,0x94,0x98,0x98,0x99,0x99,0x98,0x98, 0x96,0x96,0x99,0x98,0x99,0x96,0x98,0x01,0x96,0x98,0x95,0x95,0x94,0x95,0x93,0x94, 0x92,0x95,0x96,0x96,0x94,0x96,0x94,0x96,0x94,0x96,0x98,0x01,0x95,0x96,0x96,0x96, 0x95,0x95,0x01,0x94,0x96,0x95,0x94,0x01,0x01,0x95,0x95,0x96,0x98,0x98,0x98,0x01, 0x01,0x01,0x01,0x01,0x96,0x95,0x95,0x94,0x01,0x94,0x95,0x96,0x01,0x01,0x94,0x98, 0x01,0x98,0x94,0x01,0x98,0x96,0x98,0x95,0x98,0x98,0x01,0x94,0x01,0x95,0x95,0x98, 0x95,0x95,0x94,0x01,0x95,0x96,0x95,0x94,0x01,0x94,0x96,0x95,0x94,0x96,0x95,0x95, 0x96,0x98,0x95,0x98,0x95,0x94,0x95,0x01,0x98,0x01,0x98,0x01,0x01,0x96,0x01,0x98, 0x94,0x96,0x98,0x97,0x97,0x95,0x95,0x95,0x98,0x96,0x98,0x98,0x94,0x98,0x01,0x98, 0x98,0x96,0x98,0x99,0x99,0x98,0x98,0x9A,0x98,0x01,0x98,0x98,0x9A,0x95,0x9A,0x95, 0x8D,0x8E,0x94,0x93,0x8E,0x8E,0x94,0x8E,0x8E,0x94,0x8E,0x92,0x8D,0x8D,0x92,0x8E, 0x94,0x99,0x96,0x96,0x01,0x98,0x01,0x9A,0x01,0x9A,0x01,0x98,0x98,0x01,0x99,0x9A, 0x01,0x98,0x98,0x99,0x98,0x9A,0x01,0x01,0x98,0x98,0x99,0x98,0x9A,0x98,0x01,0x99, 0x92,0x9A,0x9A,0x98,0x94,0x9A,0x9A,0x01,0x98,0x9A,0x01,0x9B,0x01,0x9A,0x98,0x98, 0x95,0x95,0x96,0x95,0x94,0x95,0x94,0x93,0x93,0x92,0x98,0x96,0x94,0x95,0x94,0x95, 0x93,0x95,0x95,0x96,0x93,0x98,0x94,0x92,0x8E,0x8E,0x8E,0x94,0x8D,0x92,0x94,0x8E, 0x8D,0x8D,0x8E,0x8E,0x8E,0x8E,0x92,0x8E,0x8E,0x8D,0x8E,0x92,0x8D,0x8E,0x8E,0x8E, 0x8D,0x92,0x8E,0x8E,0x92,0x92,0x8D,0x8E,0x95,0x94,0x8E,0x95,0x8D,0x01,0x8E,0x8E, 0x93,0x94,0x94,0x96,0x94,0x96,0x99,0x01,0x9B,0x99,0x9A,0x9C,0x98,0x99,0x98,0x98, 0x98,0x01,0x01,0x9C,0x98,0x9A,0x98,0x9C,0x98,0x01,0x98,0x99,0x9C,0x9C,0x96,0x9A, 0x98,0x9C,0x98,0x9C,0x98,0x98,0x9C,0x98,0x99,0x98,0x01,0x99,0x01,0x9C,0x98,0x9C, 0x98,0x9C,0x9C,0x9C,0x9C,0x98,0x98,0x98,0x98,0x99,0x8E,0x95,0x95,0x92,0x8E,0x95, 0x95,0x8E,0x8E,0x94,0x96,0x01,0x94,0x01,0x95,0x94,0x96,0x96,0x96,0x98,0x94,0x01, 0x98,0x95,0x01,0x96,0x98,0x94,0x95,0x98,0x95,0x95,0x96,0x94,0x96,0x96,0x93,0x01, 0x96,0x96,0x8E,0x8E,0x8E,0x92,0x92,0x92,0x92,0x8E,0x8E,0x93,0x96,0x98,0x01,0x95, 0x95,0x98,0x98,0x93,0x92,0x95,0x95,0x94,0x94,0x95,0x96,0x01,0x98,0x94,0x01,0x01, 0x01,0x98,0x96,0x8E,0x8E,0x92,0x94,0x8E,0x8E,0x01,0x94,0x95,0x94,0x98,0x96,0x94, 0x01,0x01,0x01,0x97,0x92,0x94,0x01,0x95,0x01,0x96,0x01,0x94,0x01,0x95,0x98,0x97, 0x96,0x97,0x94,0x96,0x95,0x96,0x96,0x98,0x93,0x96,0x94,0x95,0x98,0x95,0x97,0x01, 0x97,0x98,0x94,0x93,0x97,0x98,0x97,0x01,0x98,0x98,0x98,0x99,0x98,0x9B,0x9A,0x98}; #endif wolf4sdl-1.7+svn262/wl_agent.cpp0000644000175000017500000007433111150771163015713 0ustar fabianfabian// WL_AGENT.C #include "wl_def.h" #pragma hdrstop /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #define MAXMOUSETURN 10 #define MOVESCALE 150l #define BACKMOVESCALE 100l #define ANGLESCALE 20 /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ // // player state info // int32_t thrustspeed; word plux,pluy; // player coordinates scaled to unsigned short anglefrac; objtype *LastAttacker; /* ============================================================================= LOCAL VARIABLES ============================================================================= */ void T_Player (objtype *ob); void T_Attack (objtype *ob); statetype s_player = {false,0,0,(statefunc) T_Player,NULL,NULL}; statetype s_attack = {false,0,0,(statefunc) T_Attack,NULL,NULL}; struct atkinf { int8_t tics,attack,frame; // attack is 1 for gun, 2 for knife } attackinfo[4][14] = { { {6,0,1},{6,2,2},{6,0,3},{6,-1,4} }, { {6,0,1},{6,1,2},{6,0,3},{6,-1,4} }, { {6,0,1},{6,1,2},{6,3,3},{6,-1,4} }, { {6,0,1},{6,1,2},{6,4,3},{6,-1,4} }, }; //=========================================================================== //---------- void Attack (void); void Use (void); void Search (objtype *ob); void SelectWeapon (void); void SelectItem (void); //---------- boolean TryMove (objtype *ob); void T_Player (objtype *ob); void ClipMove (objtype *ob, int32_t xmove, int32_t ymove); /* ============================================================================= CONTROL STUFF ============================================================================= */ /* ====================== = = CheckWeaponChange = = Keys 1-4 change weapons = ====================== */ void CheckWeaponChange (void) { int newWeapon = -1; if (!gamestate.ammo) // must use knife with no ammo return; #ifdef _arch_dreamcast int joyx, joyy; IN_GetJoyFineDelta (&joyx, &joyy); if(joyx < -64) buttonstate[bt_prevweapon] = true; else if(joyx > 64) buttonstate[bt_nextweapon] = true; #endif if(buttonstate[bt_nextweapon] && !buttonheld[bt_nextweapon]) { newWeapon = gamestate.weapon + 1; if(newWeapon > gamestate.bestweapon) newWeapon = 0; } else if(buttonstate[bt_prevweapon] && !buttonheld[bt_prevweapon]) { newWeapon = gamestate.weapon - 1; if(newWeapon < 0) newWeapon = gamestate.bestweapon; } else { for(int i = wp_knife; i <= gamestate.bestweapon; i++) { if (buttonstate[bt_readyknife + i - wp_knife]) { newWeapon = i; break; } } } if(newWeapon != -1) { gamestate.weapon = gamestate.chosenweapon = (weapontype) newWeapon; DrawWeapon(); } } /* ======================= = = ControlMovement = = Takes controlx,controly, and buttonstate[bt_strafe] = = Changes the player's angle and position = = There is an angle hack because when going 70 fps, the roundoff becomes = significant = ======================= */ void ControlMovement (objtype *ob) { int32_t oldx,oldy; int angle; int angleunits; thrustspeed = 0; oldx = player->x; oldy = player->y; if(buttonstate[bt_strafeleft]) { angle = ob->angle + ANGLES/4; if(angle >= ANGLES) angle -= ANGLES; if(buttonstate[bt_run]) Thrust(angle, RUNMOVE * MOVESCALE * tics); else Thrust(angle, BASEMOVE * MOVESCALE * tics); } if(buttonstate[bt_straferight]) { angle = ob->angle - ANGLES/4; if(angle < 0) angle += ANGLES; if(buttonstate[bt_run]) Thrust(angle, RUNMOVE * MOVESCALE * tics ); else Thrust(angle, BASEMOVE * MOVESCALE * tics); } // // side to side move // if (buttonstate[bt_strafe]) { // // strafing // // if (controlx > 0) { angle = ob->angle - ANGLES/4; if (angle < 0) angle += ANGLES; Thrust (angle,controlx*MOVESCALE); // move to left } else if (controlx < 0) { angle = ob->angle + ANGLES/4; if (angle >= ANGLES) angle -= ANGLES; Thrust (angle,-controlx*MOVESCALE); // move to right } } else { // // not strafing // anglefrac += controlx; angleunits = anglefrac/ANGLESCALE; anglefrac -= angleunits*ANGLESCALE; ob->angle -= angleunits; if (ob->angle >= ANGLES) ob->angle -= ANGLES; if (ob->angle < 0) ob->angle += ANGLES; } // // forward/backwards move // if (controly < 0) { Thrust (ob->angle,-controly*MOVESCALE); // move forwards } else if (controly > 0) { angle = ob->angle + ANGLES/2; if (angle >= ANGLES) angle -= ANGLES; Thrust (angle,controly*BACKMOVESCALE); // move backwards } if (gamestate.victoryflag) // watching the BJ actor return; } /* ============================================================================= STATUS WINDOW STUFF ============================================================================= */ /* ================== = = StatusDrawPic = ================== */ void StatusDrawPic (unsigned x, unsigned y, unsigned picnum) { LatchDrawPicScaledCoord ((screenWidth-scaleFactor*320)/16 + scaleFactor*x, screenHeight-scaleFactor*(STATUSLINES-y),picnum); } void StatusDrawFace(unsigned picnum) { StatusDrawPic(17, 4, picnum); #ifdef _arch_dreamcast DC_StatusDrawLCD(picnum); #endif } /* ================== = = DrawFace = ================== */ void DrawFace (void) { if(viewsize == 21 && ingame) return; if (SD_SoundPlaying() == GETGATLINGSND) StatusDrawFace(GOTGATLINGPIC); else if (gamestate.health) { #ifdef SPEAR if (godmode) StatusDrawFace(GODMODEFACE1PIC+gamestate.faceframe); else #endif StatusDrawFace(FACE1APIC+3*((100-gamestate.health)/16)+gamestate.faceframe); } else { #ifndef SPEAR if (LastAttacker && LastAttacker->obclass == needleobj) StatusDrawFace(MUTANTBJPIC); else #endif StatusDrawFace(FACE8APIC); } } /* =============== = = UpdateFace = = Calls draw face if time to change = =============== */ int facecount = 0; int facetimes = 0; void UpdateFace (void) { // don't make demo depend on sound playback if(demoplayback || demorecord) { if(facetimes > 0) { facetimes--; return; } } else if(SD_SoundPlaying() == GETGATLINGSND) return; facecount += tics; if (facecount > US_RndT()) { gamestate.faceframe = (US_RndT()>>6); if (gamestate.faceframe==3) gamestate.faceframe = 1; facecount = 0; DrawFace (); } } /* =============== = = LatchNumber = = right justifies and pads with blanks = =============== */ static void LatchNumber (int x, int y, unsigned width, int32_t number) { unsigned length,c; char str[20]; ltoa (number,str,10); length = (unsigned) strlen (str); while (length>=2; if (!godmode) gamestate.health -= points; if (gamestate.health<=0) { gamestate.health = 0; playstate = ex_died; killerobj = attacker; } if (godmode != 2) StartDamageFlash (points); DrawHealth (); DrawFace (); // // MAKE BJ'S EYES BUG IF MAJOR DAMAGE! // #ifdef SPEAR if (points > 30 && gamestate.health!=0 && !godmode && viewsize != 21) { StatusDrawFace(BJOUCHPIC); facecount = 0; } #endif } /* =============== = = HealSelf = =============== */ void HealSelf (int points) { gamestate.health += points; if (gamestate.health>100) gamestate.health = 100; DrawHealth (); DrawFace (); } //=========================================================================== /* =============== = = DrawLevel = =============== */ void DrawLevel (void) { if(viewsize == 21 && ingame) return; #ifdef SPEAR if (gamestate.mapon == 20) LatchNumber (2,16,2,18); else #endif LatchNumber (2,16,2,gamestate.mapon+1); } //=========================================================================== /* =============== = = DrawLives = =============== */ void DrawLives (void) { if(viewsize == 21 && ingame) return; LatchNumber (14,16,1,gamestate.lives); } /* =============== = = GiveExtraMan = =============== */ void GiveExtraMan (void) { if (gamestate.lives<9) gamestate.lives++; DrawLives (); SD_PlaySound (BONUS1UPSND); } //=========================================================================== /* =============== = = DrawScore = =============== */ void DrawScore (void) { if(viewsize == 21 && ingame) return; LatchNumber (6,16,6,gamestate.score); } /* =============== = = GivePoints = =============== */ void GivePoints (int32_t points) { gamestate.score += points; while (gamestate.score >= gamestate.nextextra) { gamestate.nextextra += EXTRAPOINTS; GiveExtraMan (); } DrawScore (); } //=========================================================================== /* ================== = = DrawWeapon = ================== */ void DrawWeapon (void) { if(viewsize == 21 && ingame) return; StatusDrawPic (32,8,KNIFEPIC+gamestate.weapon); } /* ================== = = DrawKeys = ================== */ void DrawKeys (void) { if(viewsize == 21 && ingame) return; if (gamestate.keys & 1) StatusDrawPic (30,4,GOLDKEYPIC); else StatusDrawPic (30,4,NOKEYPIC); if (gamestate.keys & 2) StatusDrawPic (30,20,SILVERKEYPIC); else StatusDrawPic (30,20,NOKEYPIC); } /* ================== = = GiveWeapon = ================== */ void GiveWeapon (int weapon) { GiveAmmo (6); if (gamestate.bestweapon 99) gamestate.ammo = 99; DrawAmmo (); } //=========================================================================== /* ================== = = GiveKey = ================== */ void GiveKey (int key) { gamestate.keys |= (1<itemnumber) { case bo_firstaid: if (gamestate.health == 100) return; SD_PlaySound (HEALTH2SND); HealSelf (25); break; case bo_key1: case bo_key2: case bo_key3: case bo_key4: GiveKey (check->itemnumber - bo_key1); SD_PlaySound (GETKEYSND); break; case bo_cross: SD_PlaySound (BONUS1SND); GivePoints (100); gamestate.treasurecount++; break; case bo_chalice: SD_PlaySound (BONUS2SND); GivePoints (500); gamestate.treasurecount++; break; case bo_bible: SD_PlaySound (BONUS3SND); GivePoints (1000); gamestate.treasurecount++; break; case bo_crown: SD_PlaySound (BONUS4SND); GivePoints (5000); gamestate.treasurecount++; break; case bo_clip: if (gamestate.ammo == 99) return; SD_PlaySound (GETAMMOSND); GiveAmmo (8); break; case bo_clip2: if (gamestate.ammo == 99) return; SD_PlaySound (GETAMMOSND); GiveAmmo (4); break; #ifdef SPEAR case bo_25clip: if (gamestate.ammo == 99) return; SD_PlaySound (GETAMMOBOXSND); GiveAmmo (25); break; #endif case bo_machinegun: SD_PlaySound (GETMACHINESND); GiveWeapon (wp_machinegun); break; case bo_chaingun: SD_PlaySound (GETGATLINGSND); facetimes = 38; GiveWeapon (wp_chaingun); if(viewsize != 21) StatusDrawFace (GOTGATLINGPIC); facecount = 0; break; case bo_fullheal: SD_PlaySound (BONUS1UPSND); HealSelf (99); GiveAmmo (25); GiveExtraMan (); gamestate.treasurecount++; break; case bo_food: if (gamestate.health == 100) return; SD_PlaySound (HEALTH1SND); HealSelf (10); break; case bo_alpo: if (gamestate.health == 100) return; SD_PlaySound (HEALTH1SND); HealSelf (4); break; case bo_gibs: if (gamestate.health >10) return; SD_PlaySound (SLURPIESND); HealSelf (1); break; #ifdef SPEAR case bo_spear: spearflag = true; spearx = player->x; speary = player->y; spearangle = player->angle; playstate = ex_completed; #endif } StartBonusFlash (); check->shapenum = -1; // remove from list } /* =================== = = TryMove = = returns true if move ok = debug: use pointers to optimize =================== */ boolean TryMove (objtype *ob) { int xl,yl,xh,yh,x,y; objtype *check; int32_t deltax,deltay; xl = (ob->x-PLAYERSIZE) >>TILESHIFT; yl = (ob->y-PLAYERSIZE) >>TILESHIFT; xh = (ob->x+PLAYERSIZE) >>TILESHIFT; yh = (ob->y+PLAYERSIZE) >>TILESHIFT; #define PUSHWALLMINDIST PLAYERSIZE // // check for solid walls // for (y=yl;y<=yh;y++) { for (x=xl;x<=xh;x++) { check = actorat[x][y]; if (check && !ISPOINTER(check)) { if(tilemap[x][y]==64 && x==pwallx && y==pwally) // back of moving pushwall? { switch(pwalldir) { case di_north: if(ob->y-PUSHWALLMINDIST<=(pwally<x-PUSHWALLMINDIST<=(pwallx<x+PUSHWALLMINDIST>=(pwallx<y+PUSHWALLMINDIST>=(pwally<0) yl--; if (yh0) xl--; if (xhflags & FL_SHOOTABLE) ) { deltax = ob->x - check->x; if (deltax < -MINACTORDIST || deltax > MINACTORDIST) continue; deltay = ob->y - check->y; if (deltay < -MINACTORDIST || deltay > MINACTORDIST) continue; return false; } } } return true; } /* =================== = = ClipMove = =================== */ void ClipMove (objtype *ob, int32_t xmove, int32_t ymove) { int32_t basex,basey; basex = ob->x; basey = ob->y; ob->x = basex+xmove; ob->y = basey+ymove; if (TryMove (ob)) return; #ifndef REMDEBUG if (noclip && ob->x > 2*TILEGLOBAL && ob->y > 2*TILEGLOBAL && ob->x < (((int32_t)(mapwidth-1))<y < (((int32_t)(mapheight-1))<x = basex+xmove; ob->y = basey; if (TryMove (ob)) return; ob->x = basex; ob->y = basey+ymove; if (TryMove (ob)) return; ob->x = basex; ob->y = basey; } //========================================================================== /* =================== = = VictoryTile = =================== */ void VictoryTile (void) { #ifndef SPEAR SpawnBJVictory (); #endif gamestate.victoryflag = true; } /* =================== = = Thrust = =================== */ // For player movement in demos exactly as in the original Wolf3D v1.4 source code static fixed FixedByFracOrig(fixed a, fixed b) { int sign = 0; if(b == 65536) b = 65535; else if(b == -65536) b = 65535, sign = 1; else if(b < 0) b = (-b), sign = 1; if(a < 0) { a = -a; sign = !sign; } fixed res = (fixed)(((int64_t) a * b) >> 16); if(sign) res = -res; return res; } void Thrust (int angle, int32_t speed) { int32_t xmove,ymove; unsigned offset; // // ZERO FUNNY COUNTER IF MOVED! // #ifdef SPEAR if (speed) funnyticount = 0; #endif thrustspeed += speed; // // moving bounds speed // if (speed >= MINDIST*2) speed = MINDIST*2-1; xmove = DEMOCHOOSE_ORIG_SDL( FixedByFracOrig(speed, costable[angle]), FixedMul(speed,costable[angle])); ymove = DEMOCHOOSE_ORIG_SDL( -FixedByFracOrig(speed, sintable[angle]), -FixedMul(speed,sintable[angle])); ClipMove(player,xmove,ymove); player->tilex = (short)(player->x >> TILESHIFT); // scale to tile values player->tiley = (short)(player->y >> TILESHIFT); offset = (player->tiley<tilex; player->areanumber = *(mapsegs[0] + offset) -AREATILE; if (*(mapsegs[1] + offset) == EXITTILE) VictoryTile (); } /* ============================================================================= ACTIONS ============================================================================= */ /* =============== = = Cmd_Fire = =============== */ void Cmd_Fire (void) { buttonheld[bt_attack] = true; gamestate.weaponframe = 0; player->state = &s_attack; gamestate.attackframe = 0; gamestate.attackcount = attackinfo[gamestate.weapon][gamestate.attackframe].tics; gamestate.weaponframe = attackinfo[gamestate.weapon][gamestate.attackframe].frame; } //=========================================================================== /* =============== = = Cmd_Use = =============== */ void Cmd_Use (void) { int checkx,checky,doornum,dir; boolean elevatorok; // // find which cardinal direction the player is facing // if (player->angle < ANGLES/8 || player->angle > 7*ANGLES/8) { checkx = player->tilex + 1; checky = player->tiley; dir = di_east; elevatorok = true; } else if (player->angle < 3*ANGLES/8) { checkx = player->tilex; checky = player->tiley-1; dir = di_north; elevatorok = false; } else if (player->angle < 5*ANGLES/8) { checkx = player->tilex - 1; checky = player->tiley; dir = di_west; elevatorok = true; } else { checkx = player->tilex; checky = player->tiley + 1; dir = di_south; elevatorok = false; } doornum = tilemap[checkx][checky]; if (*(mapsegs[1]+(checky<tiley<tilex) == ALTELEVATORTILE) playstate = ex_secretlevel; else playstate = ex_completed; SD_PlaySound (LEVELDONESND); SD_WaitSoundDone(); } else if (!buttonheld[bt_use] && doornum & 0x80) { buttonheld[bt_use] = true; OperateDoor (doornum & ~0x80); } else SD_PlaySound (DONOTHINGSND); } /* ============================================================================= PLAYER CONTROL ============================================================================= */ /* =============== = = SpawnPlayer = =============== */ void SpawnPlayer (int tilex, int tiley, int dir) { player->obclass = playerobj; player->active = ac_yes; player->tilex = tilex; player->tiley = tiley; player->areanumber = (byte) *(mapsegs[0]+(player->tiley<tilex); player->x = ((int32_t)tilex<y = ((int32_t)tiley<state = &s_player; player->angle = (1-dir)*90; if (player->angle<0) player->angle += ANGLES; player->flags = FL_NEVERMARK; Thrust (0,0); // set some variables InitAreas (); } //=========================================================================== /* =============== = = T_KnifeAttack = = Update player hands, and try to do damage when the proper frame is reached = =============== */ void KnifeAttack (objtype *ob) { objtype *check,*closest; int32_t dist; SD_PlaySound (ATKKNIFESND); // actually fire dist = 0x7fffffff; closest = NULL; for (check=ob->next; check; check=check->next) { if ( (check->flags & FL_SHOOTABLE) && (check->flags & FL_VISABLE) && abs(check->viewx-centerx) < shootdelta) { if (check->transx < dist) { dist = check->transx; closest = check; } } } if (!closest || dist > 0x18000l) { // missed return; } // hit something DamageActor (closest,US_RndT() >> 4); } void GunAttack (objtype *ob) { objtype *check,*closest,*oldclosest; int damage; int dx,dy,dist; int32_t viewdist; switch (gamestate.weapon) { case wp_pistol: SD_PlaySound (ATKPISTOLSND); break; case wp_machinegun: SD_PlaySound (ATKMACHINEGUNSND); break; case wp_chaingun: SD_PlaySound (ATKGATLINGSND); break; } madenoise = true; // // find potential targets // viewdist = 0x7fffffffl; closest = NULL; while (1) { oldclosest = closest; for (check=ob->next ; check ; check=check->next) { if ((check->flags & FL_SHOOTABLE) && (check->flags & FL_VISABLE) && abs(check->viewx-centerx) < shootdelta) { if (check->transx < viewdist) { viewdist = check->transx; closest = check; } } } if (closest == oldclosest) return; // no more targets, all missed // // trace a line from player to enemey // if (CheckLine(closest)) break; } // // hit something // dx = ABS(closest->tilex - player->tilex); dy = ABS(closest->tiley - player->tiley); dist = dx>dy ? dx:dy; if (dist<2) damage = US_RndT() / 4; else if (dist<4) damage = US_RndT() / 6; else { if ( (US_RndT() / 12) < dist) // missed return; damage = US_RndT() / 6; } DamageActor (closest,damage); } //=========================================================================== /* =============== = = VictorySpin = =============== */ void VictorySpin (void) { int32_t desty; if (player->angle > 270) { player->angle -= (short)(tics * 3); if (player->angle < 270) player->angle = 270; } else if (player->angle < 270) { player->angle += (short)(tics * 3); if (player->angle > 270) player->angle = 270; } desty = (((int32_t)player->tiley-5)<y > desty) { player->y -= tics*4096; if (player->y < desty) player->y = desty; } } //=========================================================================== /* =============== = = T_Attack = =============== */ void T_Attack (objtype *ob) { struct atkinf *cur; UpdateFace (); if (gamestate.victoryflag) // watching the BJ actor { VictorySpin (); return; } if ( buttonstate[bt_use] && !buttonheld[bt_use] ) buttonstate[bt_use] = false; if ( buttonstate[bt_attack] && !buttonheld[bt_attack]) buttonstate[bt_attack] = false; ControlMovement (ob); if (gamestate.victoryflag) // watching the BJ actor return; plux = (word) (player->x >> UNSIGNEDSHIFT); // scale to fit in unsigned pluy = (word) (player->y >> UNSIGNEDSHIFT); player->tilex = (short)(player->x >> TILESHIFT); // scale to tile values player->tiley = (short)(player->y >> TILESHIFT); // // change frame and fire // gamestate.attackcount -= (short) tics; while (gamestate.attackcount <= 0) { cur = &attackinfo[gamestate.weapon][gamestate.attackframe]; switch (cur->attack) { case -1: ob->state = &s_player; if (!gamestate.ammo) { gamestate.weapon = wp_knife; DrawWeapon (); } else { if (gamestate.weapon != gamestate.chosenweapon) { gamestate.weapon = gamestate.chosenweapon; DrawWeapon (); } } gamestate.attackframe = gamestate.weaponframe = 0; return; case 4: if (!gamestate.ammo) break; if (buttonstate[bt_attack]) gamestate.attackframe -= 2; case 1: if (!gamestate.ammo) { // can only happen with chain gun gamestate.attackframe++; break; } GunAttack (ob); if (!ammocheat) gamestate.ammo--; DrawAmmo (); break; case 2: KnifeAttack (ob); break; case 3: if (gamestate.ammo && buttonstate[bt_attack]) gamestate.attackframe -= 2; break; } gamestate.attackcount += cur->tics; gamestate.attackframe++; gamestate.weaponframe = attackinfo[gamestate.weapon][gamestate.attackframe].frame; } } //=========================================================================== /* =============== = = T_Player = =============== */ void T_Player (objtype *ob) { if (gamestate.victoryflag) // watching the BJ actor { VictorySpin (); return; } UpdateFace (); CheckWeaponChange (); if ( buttonstate[bt_use] ) Cmd_Use (); if ( buttonstate[bt_attack] && !buttonheld[bt_attack]) Cmd_Fire (); ControlMovement (ob); if (gamestate.victoryflag) // watching the BJ actor return; plux = (word) (player->x >> UNSIGNEDSHIFT); // scale to fit in unsigned pluy = (word) (player->y >> UNSIGNEDSHIFT); player->tilex = (short)(player->x >> TILESHIFT); // scale to tile values player->tiley = (short)(player->y >> TILESHIFT); } wolf4sdl-1.7+svn262/dosbox/0000755000175000017500000000000011644522672014704 5ustar fabianfabianwolf4sdl-1.7+svn262/dosbox/dbopl.h0000644000175000017500000001646711644157635016176 0ustar fabianfabian/* * Copyright (C) 2002-2010 The DOSBox Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if defined(_arch_dreamcast) # include "dc/dc_main.h" #elif !defined(_WIN32) # include #endif #include //typedef uintptr_t Bitu; //typedef intptr_t Bits; typedef uint32_t Bitu; typedef int32_t Bits; typedef uint32_t Bit32u; typedef int32_t Bit32s; typedef uint16_t Bit16u; typedef int16_t Bit16s; typedef uint8_t Bit8u; typedef int8_t Bit8s; //#include "adlib.h" //#include "dosbox.h" //Use 8 handlers based on a small logatirmic wavetabe and an exponential table for volume #define WAVE_HANDLER 10 //Use a logarithmic wavetable with an exponential table for volume #define WAVE_TABLELOG 11 //Use a linear wavetable with a multiply table for volume #define WAVE_TABLEMUL 12 //Select the type of wave generator routine #define DBOPL_WAVE WAVE_TABLEMUL namespace DBOPL { struct Chip; struct Operator; struct Channel; #if (DBOPL_WAVE == WAVE_HANDLER) typedef Bits ( DB_FASTCALL *WaveHandler) ( Bitu i, Bitu volume ); #endif typedef Bits ( DBOPL::Operator::*VolumeHandler) ( ); typedef Channel* ( DBOPL::Channel::*SynthHandler) ( Chip* chip, Bit32u samples, Bit32s* output ); //Different synth modes that can generate blocks of data typedef enum { sm2AM, sm2FM, sm3AM, sm3FM, sm4Start, sm3FMFM, sm3AMFM, sm3FMAM, sm3AMAM, sm6Start, sm2Percussion, sm3Percussion, } SynthMode; //Shifts for the values contained in chandata variable enum { SHIFT_KSLBASE = 16, SHIFT_KEYCODE = 24, }; struct Operator { public: //Masks for operator 20 values enum { MASK_KSR = 0x10, MASK_SUSTAIN = 0x20, MASK_VIBRATO = 0x40, MASK_TREMOLO = 0x80, }; typedef enum { OFF, RELEASE, SUSTAIN, DECAY, ATTACK, } State; VolumeHandler volHandler; #if (DBOPL_WAVE == WAVE_HANDLER) WaveHandler waveHandler; //Routine that generate a wave #else Bit16s* waveBase; Bit32u waveMask; Bit32u waveStart; #endif Bit32u waveIndex; //WAVE_BITS shifted counter of the frequency index Bit32u waveAdd; //The base frequency without vibrato Bit32u waveCurrent; //waveAdd + vibratao Bit32u chanData; //Frequency/octave and derived data coming from whatever channel controls this Bit32u freqMul; //Scale channel frequency with this, TODO maybe remove? Bit32u vibrato; //Scaled up vibrato strength Bit32s sustainLevel; //When stopping at sustain level stop here Bit32s totalLevel; //totalLevel is added to every generated volume Bit32u currentLevel; //totalLevel + tremolo Bit32s volume; //The currently active volume Bit32u attackAdd; //Timers for the different states of the envelope Bit32u decayAdd; Bit32u releaseAdd; Bit32u rateIndex; //Current position of the evenlope Bit8u rateZero; //Bits for the different states of the envelope having no changes Bit8u keyOn; //Bitmask of different values that can generate keyon //Registers, also used to check for changes Bit8u reg20, reg40, reg60, reg80, regE0; //Active part of the envelope we're in Bit8u state; //0xff when tremolo is enabled Bit8u tremoloMask; //Strength of the vibrato Bit8u vibStrength; //Keep track of the calculated KSR so we can check for changes Bit8u ksr; private: void SetState( Bit8u s ); void UpdateAttack( const Chip* chip ); void UpdateRelease( const Chip* chip ); void UpdateDecay( const Chip* chip ); public: void UpdateAttenuation(); void UpdateRates( const Chip* chip ); void UpdateFrequency( ); void Write20( const Chip* chip, Bit8u val ); void Write40( const Chip* chip, Bit8u val ); void Write60( const Chip* chip, Bit8u val ); void Write80( const Chip* chip, Bit8u val ); void WriteE0( const Chip* chip, Bit8u val ); bool Silent() const; void Prepare( const Chip* chip ); void KeyOn( Bit8u mask); void KeyOff( Bit8u mask); template< State state> Bits TemplateVolume( ); Bit32s RateForward( Bit32u add ); Bitu ForwardWave(); Bitu ForwardVolume(); Bits GetSample( Bits modulation ); Bits GetWave( Bitu index, Bitu vol ); public: Operator(); }; struct Channel { Operator op[2]; inline Operator* Op( Bitu index ) { return &( ( this + (index >> 1) )->op[ index & 1 ]); } SynthHandler synthHandler; Bit32u chanData; //Frequency/octave and derived values Bit32s old[2]; //Old data for feedback Bit8u feedback; //Feedback shift Bit8u regB0; //Register values to check for changes Bit8u regC0; //This should correspond with reg104, bit 6 indicates a Percussion channel, bit 7 indicates a silent channel Bit8u fourMask; Bit8s maskLeft; //Sign extended values for both channel's panning Bit8s maskRight; //Forward the channel data to the operators of the channel void SetChanData( const Chip* chip, Bit32u data ); //Change in the chandata, check for new values and if we have to forward to operators void UpdateFrequency( const Chip* chip, Bit8u fourOp ); void WriteA0( const Chip* chip, Bit8u val ); void WriteB0( const Chip* chip, Bit8u val ); void WriteC0( const Chip* chip, Bit8u val ); void ResetC0( const Chip* chip ); //call this for the first channel template< bool opl3Mode > void GeneratePercussion( Chip* chip, Bit32s* output ); //Generate blocks of data in specific modes template Channel* BlockTemplate( Chip* chip, Bit32u samples, Bit32s* output ); Channel(); }; struct Chip { //This is used as the base counter for vibrato and tremolo Bit32u lfoCounter; Bit32u lfoAdd; Bit32u noiseCounter; Bit32u noiseAdd; Bit32u noiseValue; //Frequency scales for the different multiplications Bit32u freqMul[16]; //Rates for decay and release for rate of this chip Bit32u linearRates[76]; //Best match attack rates for the rate of this chip Bit32u attackRates[76]; //18 channels with 2 operators each Channel chan[18]; Bit8u reg104; Bit8u reg08; Bit8u reg04; Bit8u regBD; Bit8u vibratoIndex; Bit8u tremoloIndex; Bit8s vibratoSign; Bit8u vibratoShift; Bit8u tremoloValue; Bit8u vibratoStrength; Bit8u tremoloStrength; //Mask for allowed wave forms Bit8u waveFormMask; //0 or -1 when enabled Bit8s opl3Active; //Return the maximum amount of samples before and LFO change Bit32u ForwardLFO( Bit32u samples ); Bit32u ForwardNoise(); void WriteBD( Bit8u val ); void WriteReg(Bit32u reg, Bit8u val ); Bit32u WriteAddr( Bit32u port, Bit8u val ); void GenerateBlock2( Bitu samples, Bit32s* output ); void GenerateBlock3( Bitu samples, Bit32s* output ); void Generate( Bit32u samples ); void Setup( Bit32u r ); Chip(); }; /*struct Handler : public Adlib::Handler { DBOPL::Chip chip; virtual Bit32u WriteAddr( Bit32u port, Bit8u val ); virtual void WriteReg( Bit32u addr, Bit8u val ); virtual void Generate( MixerChannel* chan, Bitu samples ); virtual void Init( Bitu rate ); };*/ }; //Namespace wolf4sdl-1.7+svn262/dosbox/dbopl.cpp0000644000175000017500000011722211644157635016520 0ustar fabianfabian/* * Copyright (C) 2002-2010 The DOSBox Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* DOSBox implementation of a combined Yamaha YMF262 and Yamaha YM3812 emulator. Enabling the opl3 bit will switch the emulator to stereo opl3 output instead of regular mono opl2 Except for the table generation it's all integer math Can choose different types of generators, using muls and bigger tables, try different ones for slower platforms The generation was based on the MAME implementation but tried to have it use less memory and be faster in general MAME uses much bigger envelope tables and this will be the biggest cause of it sounding different at times //TODO Don't delay first operator 1 sample in opl3 mode //TODO Maybe not use class method pointers but a regular function pointers with operator as first parameter //TODO Fix panning for the Percussion channels, would any opl3 player use it and actually really change it though? //TODO Check if having the same accuracy in all frequency multipliers sounds better or not //DUNNO Keyon in 4op, switch to 2op without keyoff. */ /* $Id: dbopl.cpp,v 1.10 2009-06-10 19:54:51 harekiet Exp $ */ #include "../version.h" #ifdef USE_GPL #define INLINE inline #define GCC_UNLIKELY(x) x #include #include #include #pragma pack(1) //#include "dosbox.h" #include "dbopl.h" #ifndef PI #define PI 3.14159265358979323846 #endif namespace DBOPL { #define OPLRATE ((double)(14318180.0 / 288.0)) #define TREMOLO_TABLE 52 //Try to use most precision for frequencies //Else try to keep different waves in synch //#define WAVE_PRECISION 1 #ifndef WAVE_PRECISION //Wave bits available in the top of the 32bit range //Original adlib uses 10.10, we use 10.22 #define WAVE_BITS 10 #else //Need some extra bits at the top to have room for octaves and frequency multiplier //We support to 8 times lower rate //128 * 15 * 8 = 15350, 2^13.9, so need 14 bits #define WAVE_BITS 14 #endif #define WAVE_SH ( 32 - WAVE_BITS ) #define WAVE_MASK ( ( 1 << WAVE_SH ) - 1 ) //Use the same accuracy as the waves #define LFO_SH ( WAVE_SH - 10 ) //LFO is controlled by our tremolo 256 sample limit #define LFO_MAX ( 256 << ( LFO_SH ) ) //Maximum amount of attenuation bits //Envelope goes to 511, 9 bits #if (DBOPL_WAVE == WAVE_TABLEMUL ) //Uses the value directly #define ENV_BITS ( 9 ) #else //Add 3 bits here for more accuracy and would have to be shifted up either way #define ENV_BITS ( 9 ) #endif //Limits of the envelope with those bits and when the envelope goes silent #define ENV_MIN 0 #define ENV_EXTRA ( ENV_BITS - 9 ) #define ENV_MAX ( 511 << ENV_EXTRA ) #define ENV_LIMIT ( ( 12 * 256) >> ( 3 - ENV_EXTRA ) ) #define ENV_SILENT( _X_ ) ( (_X_) >= ENV_LIMIT ) //Attack/decay/release rate counter shift #define RATE_SH 24 #define RATE_MASK ( ( 1 << RATE_SH ) - 1 ) //Has to fit within 16bit lookuptable #define MUL_SH 16 //Check some ranges #if ENV_EXTRA > 3 #error Too many envelope bits #endif //How much to substract from the base value for the final attenuation static const Bit8u KslCreateTable[16] = { //0 will always be be lower than 7 * 8 64, 32, 24, 19, 16, 12, 11, 10, 8, 6, 5, 4, 3, 2, 1, 0, }; #define M(_X_) ((Bit8u)( (_X_) * 2)) static const Bit8u FreqCreateTable[16] = { M(0.5), M(1 ), M(2 ), M(3 ), M(4 ), M(5 ), M(6 ), M(7 ), M(8 ), M(9 ), M(10), M(10), M(12), M(12), M(15), M(15) }; #undef M //We're not including the highest attack rate, that gets a special value static const Bit8u AttackSamplesTable[13] = { 69, 55, 46, 40, 35, 29, 23, 20, 19, 15, 11, 10, 9 }; //On a real opl these values take 8 samples to reach and are based upon larger tables static const Bit8u EnvelopeIncreaseTable[13] = { 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, }; #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) static Bit16u ExpTable[ 256 ]; #endif #if ( DBOPL_WAVE == WAVE_HANDLER ) //PI table used by WAVEHANDLER static Bit16u SinTable[ 512 ]; #endif #if ( DBOPL_WAVE > WAVE_HANDLER ) //Layout of the waveform table in 512 entry intervals //With overlapping waves we reduce the table to half it's size // | |//\\|____|WAV7|//__|/\ |____|/\/\| // |\\//| | |WAV7| | \/| | | // |06 |0126|17 |7 |3 |4 |4 5 |5 | //6 is just 0 shifted and masked static Bit16s WaveTable[ 8 * 512 ]; //Distance into WaveTable the wave starts static const Bit16u WaveBaseTable[8] = { 0x000, 0x200, 0x200, 0x800, 0xa00, 0xc00, 0x100, 0x400, }; //Mask the counter with this static const Bit16u WaveMaskTable[8] = { 1023, 1023, 511, 511, 1023, 1023, 512, 1023, }; //Where to start the counter on at keyon static const Bit16u WaveStartTable[8] = { 512, 0, 0, 0, 0, 512, 512, 256, }; #endif #if ( DBOPL_WAVE == WAVE_TABLEMUL ) static Bit16u MulTable[ 384 ]; #endif static Bit8u KslTable[ 8 * 16 ]; static Bit8u TremoloTable[ TREMOLO_TABLE ]; //Start of a channel behind the chip struct start static Bit16u ChanOffsetTable[32]; //Start of an operator behind the chip struct start static Bit16u OpOffsetTable[64]; //The lower bits are the shift of the operator vibrato value //The highest bit is right shifted to generate -1 or 0 for negation //So taking the highest input value of 7 this gives 3, 7, 3, 0, -3, -7, -3, 0 static const Bit8s VibratoTable[ 8 ] = { 1 - 0x00, 0 - 0x00, 1 - 0x00, 30 - 0x00, 1 - 0x80, 0 - 0x80, 1 - 0x80, 30 - 0x80 }; //Shift strength for the ksl value determined by ksl strength static const Bit8u KslShiftTable[4] = { 31,1,2,0 }; //Generate a table index and table shift value using input value from a selected rate static void EnvelopeSelect( Bit8u val, Bit8u& index, Bit8u& shift ) { if ( val < 13 * 4 ) { //Rate 0 - 12 shift = 12 - ( val >> 2 ); index = val & 3; } else if ( val < 15 * 4 ) { //rate 13 - 14 shift = 0; index = val - 12 * 4; } else { //rate 15 and up shift = 0; index = 12; } } #if ( DBOPL_WAVE == WAVE_HANDLER ) /* Generate the different waveforms out of the sine/exponetial table using handlers */ static inline Bits MakeVolume( Bitu wave, Bitu volume ) { Bitu total = wave + volume; Bitu index = total & 0xff; Bitu sig = ExpTable[ index ]; Bitu exp = total >> 8; #if 0 //Check if we overflow the 31 shift limit if ( exp >= 32 ) { LOG_MSG( "WTF %d %d", total, exp ); } #endif return (sig >> exp); }; static Bits DB_FASTCALL WaveForm0( Bitu i, Bitu volume ) { Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 Bitu wave = SinTable[i & 511]; return (MakeVolume( wave, volume ) ^ neg) - neg; } static Bits DB_FASTCALL WaveForm1( Bitu i, Bitu volume ) { Bit32u wave = SinTable[i & 511]; wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); return MakeVolume( wave, volume ); } static Bits DB_FASTCALL WaveForm2( Bitu i, Bitu volume ) { Bitu wave = SinTable[i & 511]; return MakeVolume( wave, volume ); } static Bits DB_FASTCALL WaveForm3( Bitu i, Bitu volume ) { Bitu wave = SinTable[i & 255]; wave |= ( ( (i ^ 256 ) & 256) - 1) >> ( 32 - 12 ); return MakeVolume( wave, volume ); } static Bits DB_FASTCALL WaveForm4( Bitu i, Bitu volume ) { //Twice as fast i <<= 1; Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 Bitu wave = SinTable[i & 511]; wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); return (MakeVolume( wave, volume ) ^ neg) - neg; } static Bits DB_FASTCALL WaveForm5( Bitu i, Bitu volume ) { //Twice as fast i <<= 1; Bitu wave = SinTable[i & 511]; wave |= ( ( (i ^ 512 ) & 512) - 1) >> ( 32 - 12 ); return MakeVolume( wave, volume ); } static Bits DB_FASTCALL WaveForm6( Bitu i, Bitu volume ) { Bits neg = 0 - (( i >> 9) & 1);//Create ~0 or 0 return (MakeVolume( 0, volume ) ^ neg) - neg; } static Bits DB_FASTCALL WaveForm7( Bitu i, Bitu volume ) { //Negative is reversed here Bits neg = (( i >> 9) & 1) - 1; Bitu wave = (i << 3); //When negative the volume also runs backwards wave = ((wave ^ neg) - neg) & 4095; return (MakeVolume( wave, volume ) ^ neg) - neg; } static const WaveHandler WaveHandlerTable[8] = { WaveForm0, WaveForm1, WaveForm2, WaveForm3, WaveForm4, WaveForm5, WaveForm6, WaveForm7 }; #endif /* Operator */ //We zero out when rate == 0 inline void Operator::UpdateAttack( const Chip* chip ) { Bit8u rate = reg60 >> 4; if ( rate ) { Bit8u val = (rate << 2) + ksr; attackAdd = chip->attackRates[ val ]; rateZero &= ~(1 << ATTACK); } else { attackAdd = 0; rateZero |= (1 << ATTACK); } } inline void Operator::UpdateDecay( const Chip* chip ) { Bit8u rate = reg60 & 0xf; if ( rate ) { Bit8u val = (rate << 2) + ksr; decayAdd = chip->linearRates[ val ]; rateZero &= ~(1 << DECAY); } else { decayAdd = 0; rateZero |= (1 << DECAY); } } inline void Operator::UpdateRelease( const Chip* chip ) { Bit8u rate = reg80 & 0xf; if ( rate ) { Bit8u val = (rate << 2) + ksr; releaseAdd = chip->linearRates[ val ]; rateZero &= ~(1 << RELEASE); if ( !(reg20 & MASK_SUSTAIN ) ) { rateZero &= ~( 1 << SUSTAIN ); } } else { rateZero |= (1 << RELEASE); releaseAdd = 0; if ( !(reg20 & MASK_SUSTAIN ) ) { rateZero |= ( 1 << SUSTAIN ); } } } inline void Operator::UpdateAttenuation( ) { Bit8u kslBase = (Bit8u)((chanData >> SHIFT_KSLBASE) & 0xff); Bit32u tl = reg40 & 0x3f; Bit8u kslShift = KslShiftTable[ reg40 >> 6 ]; //Make sure the attenuation goes to the right bits totalLevel = tl << ( ENV_BITS - 7 ); //Total level goes 2 bits below max totalLevel += ( kslBase << ENV_EXTRA ) >> kslShift; } void Operator::UpdateFrequency( ) { Bit32u freq = chanData & (( 1 << 10 ) - 1); Bit32u block = (chanData >> 10) & 0xff; #ifdef WAVE_PRECISION block = 7 - block; waveAdd = ( freq * freqMul ) >> block; #else waveAdd = ( freq << block ) * freqMul; #endif if ( reg20 & MASK_VIBRATO ) { vibStrength = (Bit8u)(freq >> 7); #ifdef WAVE_PRECISION vibrato = ( vibStrength * freqMul ) >> block; #else vibrato = ( vibStrength << block ) * freqMul; #endif } else { vibStrength = 0; vibrato = 0; } } void Operator::UpdateRates( const Chip* chip ) { //Mame seems to reverse this where enabling ksr actually lowers //the rate, but pdf manuals says otherwise? Bit8u newKsr = (Bit8u)((chanData >> SHIFT_KEYCODE) & 0xff); if ( !( reg20 & MASK_KSR ) ) { newKsr >>= 2; } if ( ksr == newKsr ) return; ksr = newKsr; UpdateAttack( chip ); UpdateDecay( chip ); UpdateRelease( chip ); } INLINE Bit32s Operator::RateForward( Bit32u add ) { rateIndex += add; Bit32s ret = rateIndex >> RATE_SH; rateIndex = rateIndex & RATE_MASK; return ret; } template< Operator::State yes> Bits Operator::TemplateVolume( ) { Bit32s vol = volume; Bit32s change; switch ( yes ) { case OFF: return ENV_MAX; case ATTACK: change = RateForward( attackAdd ); if ( !change ) return vol; vol += ( (~vol) * change ) >> 3; if ( vol < ENV_MIN ) { volume = ENV_MIN; rateIndex = 0; SetState( DECAY ); return ENV_MIN; } break; case DECAY: vol += RateForward( decayAdd ); if ( GCC_UNLIKELY(vol >= sustainLevel) ) { //Check if we didn't overshoot max attenuation, then just go off if ( GCC_UNLIKELY(vol >= ENV_MAX) ) { volume = ENV_MAX; SetState( OFF ); return ENV_MAX; } //Continue as sustain rateIndex = 0; SetState( SUSTAIN ); } break; case SUSTAIN: if ( reg20 & MASK_SUSTAIN ) { return vol; } //In sustain phase, but not sustaining, do regular release case RELEASE: vol += RateForward( releaseAdd );; if ( GCC_UNLIKELY(vol >= ENV_MAX) ) { volume = ENV_MAX; SetState( OFF ); return ENV_MAX; } break; } volume = vol; return vol; } static const VolumeHandler VolumeHandlerTable[5] = { &Operator::TemplateVolume< Operator::OFF >, &Operator::TemplateVolume< Operator::RELEASE >, &Operator::TemplateVolume< Operator::SUSTAIN >, &Operator::TemplateVolume< Operator::DECAY >, &Operator::TemplateVolume< Operator::ATTACK > }; INLINE Bitu Operator::ForwardVolume() { return currentLevel + (this->*volHandler)(); } INLINE Bitu Operator::ForwardWave() { waveIndex += waveCurrent; return waveIndex >> WAVE_SH; } void Operator::Write20( const Chip* chip, Bit8u val ) { Bit8u change = (reg20 ^ val ); if ( !change ) return; reg20 = val; //Shift the tremolo bit over the entire register, saved a branch, YES! tremoloMask = (Bit8s)(val) >> 7; tremoloMask &= ~(( 1 << ENV_EXTRA ) -1); //Update specific features based on changes if ( change & MASK_KSR ) { UpdateRates( chip ); } //With sustain enable the volume doesn't change if ( reg20 & MASK_SUSTAIN || ( !releaseAdd ) ) { rateZero |= ( 1 << SUSTAIN ); } else { rateZero &= ~( 1 << SUSTAIN ); } //Frequency multiplier or vibrato changed if ( change & (0xf | MASK_VIBRATO) ) { freqMul = chip->freqMul[ val & 0xf ]; UpdateFrequency(); } } void Operator::Write40( const Chip* /*chip*/, Bit8u val ) { if (!(reg40 ^ val )) return; reg40 = val; UpdateAttenuation( ); } void Operator::Write60( const Chip* chip, Bit8u val ) { Bit8u change = reg60 ^ val; reg60 = val; if ( change & 0x0f ) { UpdateDecay( chip ); } if ( change & 0xf0 ) { UpdateAttack( chip ); } } void Operator::Write80( const Chip* chip, Bit8u val ) { Bit8u change = (reg80 ^ val ); if ( !change ) return; reg80 = val; Bit8u sustain = val >> 4; //Turn 0xf into 0x1f sustain |= ( sustain + 1) & 0x10; sustainLevel = sustain << ( ENV_BITS - 5 ); if ( change & 0x0f ) { UpdateRelease( chip ); } } void Operator::WriteE0( const Chip* chip, Bit8u val ) { if ( !(regE0 ^ val) ) return; //in opl3 mode you can always selet 7 waveforms regardless of waveformselect Bit8u waveForm = val & ( ( 0x3 & chip->waveFormMask ) | (0x7 & chip->opl3Active ) ); regE0 = val; #if ( DBOPL_WAVE == WAVE_HANDLER ) waveHandler = WaveHandlerTable[ waveForm ]; #else waveBase = WaveTable + WaveBaseTable[ waveForm ]; waveStart = WaveStartTable[ waveForm ] << WAVE_SH; waveMask = WaveMaskTable[ waveForm ]; #endif } INLINE void Operator::SetState( Bit8u s ) { state = s; volHandler = VolumeHandlerTable[ s ]; } INLINE bool Operator::Silent() const { if ( !ENV_SILENT( totalLevel + volume ) ) return false; if ( !(rateZero & ( 1 << state ) ) ) return false; return true; } INLINE void Operator::Prepare( const Chip* chip ) { currentLevel = totalLevel + (chip->tremoloValue & tremoloMask); waveCurrent = waveAdd; if ( vibStrength >> chip->vibratoShift ) { Bit32s add = vibrato >> chip->vibratoShift; //Sign extend over the shift value Bit32s neg = chip->vibratoSign; //Negate the add with -1 or 0 add = ( add ^ neg ) - neg; waveCurrent += add; } } void Operator::KeyOn( Bit8u mask ) { if ( !keyOn ) { //Restart the frequency generator #if ( DBOPL_WAVE > WAVE_HANDLER ) waveIndex = waveStart; #else waveIndex = 0; #endif rateIndex = 0; SetState( ATTACK ); } keyOn |= mask; } void Operator::KeyOff( Bit8u mask ) { keyOn &= ~mask; if ( !keyOn ) { if ( state != OFF ) { SetState( RELEASE ); } } } INLINE Bits Operator::GetWave( Bitu index, Bitu vol ) { #if ( DBOPL_WAVE == WAVE_HANDLER ) return waveHandler( index, vol << ( 3 - ENV_EXTRA ) ); #elif ( DBOPL_WAVE == WAVE_TABLEMUL ) return (waveBase[ index & waveMask ] * MulTable[ vol >> ENV_EXTRA ]) >> MUL_SH; #elif ( DBOPL_WAVE == WAVE_TABLELOG ) Bit32s wave = waveBase[ index & waveMask ]; Bit32u total = ( wave & 0x7fff ) + vol << ( 3 - ENV_EXTRA ); Bit32s sig = ExpTable[ total & 0xff ]; Bit32u exp = total >> 8; Bit32s neg = wave >> 16; return ((sig ^ neg) - neg) >> exp; #else #error "No valid wave routine" #endif } Bits INLINE Operator::GetSample( Bits modulation ) { Bitu vol = ForwardVolume(); if ( ENV_SILENT( vol ) ) { //Simply forward the wave waveIndex += waveCurrent; return 0; } else { Bitu index = ForwardWave(); index += modulation; return GetWave( index, vol ); } } Operator::Operator() { chanData = 0; freqMul = 0; waveIndex = 0; waveAdd = 0; waveCurrent = 0; keyOn = 0; ksr = 0; reg20 = 0; reg40 = 0; reg60 = 0; reg80 = 0; regE0 = 0; SetState( OFF ); rateZero = (1 << OFF); sustainLevel = ENV_MAX; currentLevel = ENV_MAX; totalLevel = ENV_MAX; volume = ENV_MAX; releaseAdd = 0; } /* Channel */ Channel::Channel() { old[0] = old[1] = 0; chanData = 0; regB0 = 0; regC0 = 0; maskLeft = -1; maskRight = -1; feedback = 31; fourMask = 0; synthHandler = &Channel::BlockTemplate< sm2FM >; }; void Channel::SetChanData( const Chip* chip, Bit32u data ) { Bit32u change = chanData ^ data; chanData = data; Op( 0 )->chanData = data; Op( 1 )->chanData = data; //Since a frequency update triggered this, always update frequency Op( 0 )->UpdateFrequency(); Op( 1 )->UpdateFrequency(); if ( change & ( 0xff << SHIFT_KSLBASE ) ) { Op( 0 )->UpdateAttenuation(); Op( 1 )->UpdateAttenuation(); } if ( change & ( 0xff << SHIFT_KEYCODE ) ) { Op( 0 )->UpdateRates( chip ); Op( 1 )->UpdateRates( chip ); } } void Channel::UpdateFrequency( const Chip* chip, Bit8u fourOp ) { //Extrace the frequency bits Bit32u data = chanData & 0xffff; Bit32u kslBase = KslTable[ data >> 6 ]; Bit32u keyCode = ( data & 0x1c00) >> 9; if ( chip->reg08 & 0x40 ) { keyCode |= ( data & 0x100)>>8; /* notesel == 1 */ } else { keyCode |= ( data & 0x200)>>9; /* notesel == 0 */ } //Add the keycode and ksl into the highest bits of chanData data |= (keyCode << SHIFT_KEYCODE) | ( kslBase << SHIFT_KSLBASE ); ( this + 0 )->SetChanData( chip, data ); if ( fourOp & 0x3f ) { ( this + 1 )->SetChanData( chip, data ); } } void Channel::WriteA0( const Chip* chip, Bit8u val ) { Bit8u fourOp = chip->reg104 & chip->opl3Active & fourMask; //Don't handle writes to silent fourop channels if ( fourOp > 0x80 ) return; Bit32u change = (chanData ^ val ) & 0xff; if ( change ) { chanData ^= change; UpdateFrequency( chip, fourOp ); } } void Channel::WriteB0( const Chip* chip, Bit8u val ) { Bit8u fourOp = chip->reg104 & chip->opl3Active & fourMask; //Don't handle writes to silent fourop channels if ( fourOp > 0x80 ) return; Bitu change = (chanData ^ ( val << 8 ) ) & 0x1f00; if ( change ) { chanData ^= change; UpdateFrequency( chip, fourOp ); } //Check for a change in the keyon/off state if ( !(( val ^ regB0) & 0x20)) return; regB0 = val; if ( val & 0x20 ) { Op(0)->KeyOn( 0x1 ); Op(1)->KeyOn( 0x1 ); if ( fourOp & 0x3f ) { ( this + 1 )->Op(0)->KeyOn( 1 ); ( this + 1 )->Op(1)->KeyOn( 1 ); } } else { Op(0)->KeyOff( 0x1 ); Op(1)->KeyOff( 0x1 ); if ( fourOp & 0x3f ) { ( this + 1 )->Op(0)->KeyOff( 1 ); ( this + 1 )->Op(1)->KeyOff( 1 ); } } } void Channel::WriteC0( const Chip* chip, Bit8u val ) { Bit8u change = val ^ regC0; if ( !change ) return; regC0 = val; feedback = ( val >> 1 ) & 7; if ( feedback ) { //We shift the input to the right 10 bit wave index value feedback = 9 - feedback; } else { feedback = 31; } //Select the new synth mode if ( chip->opl3Active ) { //4-op mode enabled for this channel if ( (chip->reg104 & fourMask) & 0x3f ) { Channel* chan0, *chan1; //Check if it's the 2nd channel in a 4-op if ( !(fourMask & 0x80 ) ) { chan0 = this; chan1 = this + 1; } else { chan0 = this - 1; chan1 = this; } Bit8u synth = ( (chan0->regC0 & 1) << 0 )| (( chan1->regC0 & 1) << 1 ); switch ( synth ) { case 0: chan0->synthHandler = &Channel::BlockTemplate< sm3FMFM >; break; case 1: chan0->synthHandler = &Channel::BlockTemplate< sm3AMFM >; break; case 2: chan0->synthHandler = &Channel::BlockTemplate< sm3FMAM >; break; case 3: chan0->synthHandler = &Channel::BlockTemplate< sm3AMAM >; break; } //Disable updating percussion channels } else if ((fourMask & 0x40) && ( chip->regBD & 0x20) ) { //Regular dual op, am or fm } else if ( val & 1 ) { synthHandler = &Channel::BlockTemplate< sm3AM >; } else { synthHandler = &Channel::BlockTemplate< sm3FM >; } maskLeft = ( val & 0x10 ) ? -1 : 0; maskRight = ( val & 0x20 ) ? -1 : 0; //opl2 active } else { //Disable updating percussion channels if ( (fourMask & 0x40) && ( chip->regBD & 0x20 ) ) { //Regular dual op, am or fm } else if ( val & 1 ) { synthHandler = &Channel::BlockTemplate< sm2AM >; } else { synthHandler = &Channel::BlockTemplate< sm2FM >; } } } void Channel::ResetC0( const Chip* chip ) { Bit8u val = regC0; regC0 ^= 0xff; WriteC0( chip, val ); }; template< bool opl3Mode> INLINE void Channel::GeneratePercussion( Chip* chip, Bit32s* output ) { Channel* chan = this; //BassDrum Bit32s mod = (Bit32u)((old[0] + old[1])) >> feedback; old[0] = old[1]; old[1] = Op(0)->GetSample( mod ); //When bassdrum is in AM mode first operator is ignoed if ( chan->regC0 & 1 ) { mod = 0; } else { mod = old[0]; } Bit32s sample = Op(1)->GetSample( mod ); //Precalculate stuff used by other outputs Bit32u noiseBit = chip->ForwardNoise() & 0x1; Bit32u c2 = Op(2)->ForwardWave(); Bit32u c5 = Op(5)->ForwardWave(); Bit32u phaseBit = (((c2 & 0x88) ^ ((c2<<5) & 0x80)) | ((c5 ^ (c5<<2)) & 0x20)) ? 0x02 : 0x00; //Hi-Hat Bit32u hhVol = Op(2)->ForwardVolume(); if ( !ENV_SILENT( hhVol ) ) { Bit32u hhIndex = (phaseBit<<8) | (0x34 << ( phaseBit ^ (noiseBit << 1 ))); sample += Op(2)->GetWave( hhIndex, hhVol ); } //Snare Drum Bit32u sdVol = Op(3)->ForwardVolume(); if ( !ENV_SILENT( sdVol ) ) { Bit32u sdIndex = ( 0x100 + (c2 & 0x100) ) ^ ( noiseBit << 8 ); sample += Op(3)->GetWave( sdIndex, sdVol ); } //Tom-tom sample += Op(4)->GetSample( 0 ); //Top-Cymbal Bit32u tcVol = Op(5)->ForwardVolume(); if ( !ENV_SILENT( tcVol ) ) { Bit32u tcIndex = (1 + phaseBit) << 8; sample += Op(5)->GetWave( tcIndex, tcVol ); } sample <<= 1; if ( opl3Mode ) { output[0] += sample; output[1] += sample; } else { output[0] += sample; } } template Channel* Channel::BlockTemplate( Chip* chip, Bit32u samples, Bit32s* output ) { switch( mode ) { case sm2AM: case sm3AM: if ( Op(0)->Silent() && Op(1)->Silent() ) { old[0] = old[1] = 0; return (this + 1); } break; case sm2FM: case sm3FM: if ( Op(1)->Silent() ) { old[0] = old[1] = 0; return (this + 1); } break; case sm3FMFM: if ( Op(3)->Silent() ) { old[0] = old[1] = 0; return (this + 2); } break; case sm3AMFM: if ( Op(0)->Silent() && Op(3)->Silent() ) { old[0] = old[1] = 0; return (this + 2); } break; case sm3FMAM: if ( Op(1)->Silent() && Op(3)->Silent() ) { old[0] = old[1] = 0; return (this + 2); } break; case sm3AMAM: if ( Op(0)->Silent() && Op(2)->Silent() && Op(3)->Silent() ) { old[0] = old[1] = 0; return (this + 2); } break; } //Init the operators with the the current vibrato and tremolo values Op( 0 )->Prepare( chip ); Op( 1 )->Prepare( chip ); if ( mode > sm4Start ) { Op( 2 )->Prepare( chip ); Op( 3 )->Prepare( chip ); } if ( mode > sm6Start ) { Op( 4 )->Prepare( chip ); Op( 5 )->Prepare( chip ); } for ( Bitu i = 0; i < samples; i++ ) { //Early out for percussion handlers if ( mode == sm2Percussion ) { GeneratePercussion( chip, output + i ); continue; //Prevent some unitialized value bitching } else if ( mode == sm3Percussion ) { GeneratePercussion( chip, output + i * 2 ); continue; //Prevent some unitialized value bitching } //Do unsigned shift so we can shift out all bits but still stay in 10 bit range otherwise Bit32s mod = (Bit32u)((old[0] + old[1])) >> feedback; old[0] = old[1]; old[1] = Op(0)->GetSample( mod ); Bit32s sample; Bit32s out0 = old[0]; if ( mode == sm2AM || mode == sm3AM ) { sample = out0 + Op(1)->GetSample( 0 ); } else if ( mode == sm2FM || mode == sm3FM ) { sample = Op(1)->GetSample( out0 ); } else if ( mode == sm3FMFM ) { Bits next = Op(1)->GetSample( out0 ); next = Op(2)->GetSample( next ); sample = Op(3)->GetSample( next ); } else if ( mode == sm3AMFM ) { sample = out0; Bits next = Op(1)->GetSample( 0 ); next = Op(2)->GetSample( next ); sample += Op(3)->GetSample( next ); } else if ( mode == sm3FMAM ) { sample = Op(1)->GetSample( out0 ); Bits next = Op(2)->GetSample( 0 ); sample += Op(3)->GetSample( next ); } else if ( mode == sm3AMAM ) { sample = out0; Bits next = Op(1)->GetSample( 0 ); sample += Op(2)->GetSample( next ); sample += Op(3)->GetSample( 0 ); } switch( mode ) { case sm2AM: case sm2FM: output[ i ] += sample; break; case sm3AM: case sm3FM: case sm3FMFM: case sm3AMFM: case sm3FMAM: case sm3AMAM: output[ i * 2 + 0 ] += sample & maskLeft; output[ i * 2 + 1 ] += sample & maskRight; break; } } switch( mode ) { case sm2AM: case sm2FM: case sm3AM: case sm3FM: return ( this + 1 ); case sm3FMFM: case sm3AMFM: case sm3FMAM: case sm3AMAM: return( this + 2 ); case sm2Percussion: case sm3Percussion: return( this + 3 ); } return 0; } /* Chip */ void InitTables(); Chip::Chip() { InitTables(); reg08 = 0; reg04 = 0; regBD = 0; reg104 = 0; opl3Active = 0; } INLINE Bit32u Chip::ForwardNoise() { noiseCounter += noiseAdd; Bitu count = noiseCounter >> LFO_SH; noiseCounter &= WAVE_MASK; for ( ; count > 0; --count ) { //Noise calculation from mame noiseValue ^= ( 0x800302 ) & ( 0 - (noiseValue & 1 ) ); noiseValue >>= 1; } return noiseValue; } INLINE Bit32u Chip::ForwardLFO( Bit32u samples ) { //Current vibrato value, runs 4x slower than tremolo vibratoSign = ( VibratoTable[ vibratoIndex >> 2] ) >> 7; vibratoShift = ( VibratoTable[ vibratoIndex >> 2] & 7) + vibratoStrength; tremoloValue = TremoloTable[ tremoloIndex ] >> tremoloStrength; //Check hom many samples there can be done before the value changes Bit32u todo = LFO_MAX - lfoCounter; Bit32u count = (todo + lfoAdd - 1) / lfoAdd; if ( count > samples ) { count = samples; lfoCounter += count * lfoAdd; } else { lfoCounter += count * lfoAdd; lfoCounter &= (LFO_MAX - 1); //Maximum of 7 vibrato value * 4 vibratoIndex = ( vibratoIndex + 1 ) & 31; //Clip tremolo to the the table size if ( tremoloIndex + 1 < TREMOLO_TABLE ) ++tremoloIndex; else tremoloIndex = 0; } return count; } void Chip::WriteBD( Bit8u val ) { Bit8u change = regBD ^ val; if ( !change ) return; regBD = val; //TODO could do this with shift and xor? vibratoStrength = (val & 0x40) ? 0x00 : 0x01; tremoloStrength = (val & 0x80) ? 0x00 : 0x02; if ( val & 0x20 ) { //Drum was just enabled, make sure channel 6 has the right synth if ( change & 0x20 ) { if ( opl3Active ) { chan[6].synthHandler = &Channel::BlockTemplate< sm3Percussion >; } else { chan[6].synthHandler = &Channel::BlockTemplate< sm2Percussion >; } } //Bass Drum if ( val & 0x10 ) { chan[6].op[0].KeyOn( 0x2 ); chan[6].op[1].KeyOn( 0x2 ); } else { chan[6].op[0].KeyOff( 0x2 ); chan[6].op[1].KeyOff( 0x2 ); } //Hi-Hat if ( val & 0x1 ) { chan[7].op[0].KeyOn( 0x2 ); } else { chan[7].op[0].KeyOff( 0x2 ); } //Snare if ( val & 0x8 ) { chan[7].op[1].KeyOn( 0x2 ); } else { chan[7].op[1].KeyOff( 0x2 ); } //Tom-Tom if ( val & 0x4 ) { chan[8].op[0].KeyOn( 0x2 ); } else { chan[8].op[0].KeyOff( 0x2 ); } //Top Cymbal if ( val & 0x2 ) { chan[8].op[1].KeyOn( 0x2 ); } else { chan[8].op[1].KeyOff( 0x2 ); } //Toggle keyoffs when we turn off the percussion } else if ( change & 0x20 ) { //Trigger a reset to setup the original synth handler chan[6].ResetC0( this ); chan[6].op[0].KeyOff( 0x2 ); chan[6].op[1].KeyOff( 0x2 ); chan[7].op[0].KeyOff( 0x2 ); chan[7].op[1].KeyOff( 0x2 ); chan[8].op[0].KeyOff( 0x2 ); chan[8].op[1].KeyOff( 0x2 ); } } #define REGOP( _FUNC_ ) \ index = ( ( reg >> 3) & 0x20 ) | ( reg & 0x1f ); \ if ( OpOffsetTable[ index ] ) { \ Operator* regOp = (Operator*)( ((char *)this ) + OpOffsetTable[ index ] ); \ regOp->_FUNC_( this, val ); \ } #define REGCHAN( _FUNC_ ) \ index = ( ( reg >> 4) & 0x10 ) | ( reg & 0xf ); \ if ( ChanOffsetTable[ index ] ) { \ Channel* regChan = (Channel*)( ((char *)this ) + ChanOffsetTable[ index ] ); \ regChan->_FUNC_( this, val ); \ } void Chip::WriteReg( Bit32u reg, Bit8u val ) { Bitu index; switch ( (reg & 0xf0) >> 4 ) { case 0x00 >> 4: if ( reg == 0x01 ) { waveFormMask = ( val & 0x20 ) ? 0x7 : 0x0; } else if ( reg == 0x104 ) { //Only detect changes in lowest 6 bits if ( !((reg104 ^ val) & 0x3f) ) return; //Always keep the highest bit enabled, for checking > 0x80 reg104 = 0x80 | ( val & 0x3f ); } else if ( reg == 0x105 ) { //MAME says the real opl3 doesn't reset anything on opl3 disable/enable till the next write in another register if ( !((opl3Active ^ val) & 1 ) ) return; opl3Active = ( val & 1 ) ? 0xff : 0; //Update the 0xc0 register for all channels to signal the switch to mono/stereo handlers for ( int i = 0; i < 18;i++ ) { chan[i].ResetC0( this ); } } else if ( reg == 0x08 ) { reg08 = val; } case 0x10 >> 4: break; case 0x20 >> 4: case 0x30 >> 4: REGOP( Write20 ); break; case 0x40 >> 4: case 0x50 >> 4: REGOP( Write40 ); break; case 0x60 >> 4: case 0x70 >> 4: REGOP( Write60 ); break; case 0x80 >> 4: case 0x90 >> 4: REGOP( Write80 ); break; case 0xa0 >> 4: REGCHAN( WriteA0 ); break; case 0xb0 >> 4: if ( reg == 0xbd ) { WriteBD( val ); } else { REGCHAN( WriteB0 ); } break; case 0xc0 >> 4: REGCHAN( WriteC0 ); case 0xd0 >> 4: break; case 0xe0 >> 4: case 0xf0 >> 4: REGOP( WriteE0 ); break; } } Bit32u Chip::WriteAddr( Bit32u port, Bit8u val ) { switch ( port & 3 ) { case 0: return val; case 2: if ( opl3Active || (val == 0x05) ) return 0x100 | val; else return val; } return 0; } void Chip::GenerateBlock2( Bitu total, Bit32s* output ) { while ( total > 0 ) { Bit32u samples = ForwardLFO( total ); memset(output, 0, sizeof(Bit32s) * samples); int count = 0; for( Channel* ch = chan; ch < chan + 9; ) { count++; ch = (ch->*(ch->synthHandler))( this, samples, output ); } total -= samples; output += samples; } } void Chip::GenerateBlock3( Bitu total, Bit32s* output ) { while ( total > 0 ) { Bit32u samples = ForwardLFO( total ); memset(output, 0, sizeof(Bit32s) * samples *2); int count = 0; for( Channel* ch = chan; ch < chan + 18; ) { count++; ch = (ch->*(ch->synthHandler))( this, samples, output ); } total -= samples; output += samples * 2; } } void Chip::Setup( Bit32u rate ) { double original = OPLRATE; // double original = rate; double scale = original / (double)rate; //Noise counter is run at the same precision as general waves noiseAdd = (Bit32u)( 0.5 + scale * ( 1 << LFO_SH ) ); noiseCounter = 0; noiseValue = 1; //Make sure it triggers the noise xor the first time //The low frequency oscillation counter //Every time his overflows vibrato and tremoloindex are increased lfoAdd = (Bit32u)( 0.5 + scale * ( 1 << LFO_SH ) ); lfoCounter = 0; vibratoIndex = 0; tremoloIndex = 0; //With higher octave this gets shifted up //-1 since the freqCreateTable = *2 #ifdef WAVE_PRECISION double freqScale = ( 1 << 7 ) * scale * ( 1 << ( WAVE_SH - 1 - 10)); for ( int i = 0; i < 16; i++ ) { freqMul[i] = (Bit32u)( 0.5 + freqScale * FreqCreateTable[ i ] ); } #else Bit32u freqScale = (Bit32u)( 0.5 + scale * ( 1 << ( WAVE_SH - 1 - 10))); for ( int i = 0; i < 16; i++ ) { freqMul[i] = freqScale * FreqCreateTable[ i ]; } #endif //-3 since the real envelope takes 8 steps to reach the single value we supply for ( Bit8u i = 0; i < 76; i++ ) { Bit8u index, shift; EnvelopeSelect( i, index, shift ); linearRates[i] = (Bit32u)( scale * (EnvelopeIncreaseTable[ index ] << ( RATE_SH + ENV_EXTRA - shift - 3 ))); } //Generate the best matching attack rate for ( Bit8u i = 0; i < 62; i++ ) { Bit8u index, shift; EnvelopeSelect( i, index, shift ); //Original amount of samples the attack would take Bit32s original = (Bit32u)( (AttackSamplesTable[ index ] << shift) / scale); Bit32s guessAdd = (Bit32u)( scale * (EnvelopeIncreaseTable[ index ] << ( RATE_SH - shift - 3 ))); Bit32s bestAdd = guessAdd; Bit32u bestDiff = 1 << 30; for( Bit32u passes = 0; passes < 16; passes ++ ) { Bit32s volume = ENV_MAX; Bit32s samples = 0; Bit32u count = 0; while ( volume > 0 && samples < original * 2 ) { count += guessAdd; Bit32s change = count >> RATE_SH; count &= RATE_MASK; if ( GCC_UNLIKELY(change) ) { // less than 1 % volume += ( ~volume * change ) >> 3; } samples++; } Bit32s diff = original - samples; Bit32u lDiff = labs( diff ); //Init last on first pass if ( lDiff < bestDiff ) { bestDiff = lDiff; bestAdd = guessAdd; if ( !bestDiff ) break; } //Below our target if ( diff < 0 ) { //Better than the last time Bit32s mul = ((original - diff) << 12) / original; guessAdd = ((guessAdd * mul) >> 12); guessAdd++; } else if ( diff > 0 ) { Bit32s mul = ((original - diff) << 12) / original; guessAdd = (guessAdd * mul) >> 12; guessAdd--; } } attackRates[i] = bestAdd; } for ( Bit8u i = 62; i < 76; i++ ) { //This should provide instant volume maximizing attackRates[i] = 8 << RATE_SH; } //Setup the channels with the correct four op flags //Channels are accessed through a table so they appear linear here chan[ 0].fourMask = 0x00 | ( 1 << 0 ); chan[ 1].fourMask = 0x80 | ( 1 << 0 ); chan[ 2].fourMask = 0x00 | ( 1 << 1 ); chan[ 3].fourMask = 0x80 | ( 1 << 1 ); chan[ 4].fourMask = 0x00 | ( 1 << 2 ); chan[ 5].fourMask = 0x80 | ( 1 << 2 ); chan[ 9].fourMask = 0x00 | ( 1 << 3 ); chan[10].fourMask = 0x80 | ( 1 << 3 ); chan[11].fourMask = 0x00 | ( 1 << 4 ); chan[12].fourMask = 0x80 | ( 1 << 4 ); chan[13].fourMask = 0x00 | ( 1 << 5 ); chan[14].fourMask = 0x80 | ( 1 << 5 ); //mark the percussion channels chan[ 6].fourMask = 0x40; chan[ 7].fourMask = 0x40; chan[ 8].fourMask = 0x40; //Clear Everything in opl3 mode WriteReg( 0x105, 0x1 ); for ( int i = 0; i < 512; i++ ) { if ( i == 0x105 ) continue; WriteReg( i, 0xff ); WriteReg( i, 0x0 ); } WriteReg( 0x105, 0x0 ); //Clear everything in opl2 mode for ( int i = 0; i < 255; i++ ) { WriteReg( i, 0xff ); WriteReg( i, 0x0 ); } } static bool doneTables = false; void InitTables( void ) { if ( doneTables ) return; doneTables = true; #if ( DBOPL_WAVE == WAVE_HANDLER ) || ( DBOPL_WAVE == WAVE_TABLELOG ) //Exponential volume table, same as the real adlib for ( int i = 0; i < 256; i++ ) { //Save them in reverse ExpTable[i] = (int)( 0.5 + ( pow(2.0, ( 255 - i) * ( 1.0 /256 ) )-1) * 1024 ); ExpTable[i] += 1024; //or remove the -1 oh well :) //Preshift to the left once so the final volume can shift to the right ExpTable[i] *= 2; } #endif #if ( DBOPL_WAVE == WAVE_HANDLER ) //Add 0.5 for the trunc rounding of the integer cast //Do a PI sinetable instead of the original 0.5 PI for ( int i = 0; i < 512; i++ ) { SinTable[i] = (Bit16s)( 0.5 - log10( sin( (i + 0.5) * (PI / 512.0) ) ) / log10(2.0)*256 ); } #endif #if ( DBOPL_WAVE == WAVE_TABLEMUL ) //Multiplication based tables for ( int i = 0; i < 384; i++ ) { int s = i * 8; //TODO maybe keep some of the precision errors of the original table? double val = ( 0.5 + ( pow(2.0, -1.0 + ( 255 - s) * ( 1.0 /256 ) )) * ( 1 << MUL_SH )); MulTable[i] = (Bit16u)(val); } //Sine Wave Base for ( int i = 0; i < 512; i++ ) { WaveTable[ 0x0200 + i ] = (Bit16s)(sin( (i + 0.5) * (PI / 512.0) ) * 4084); WaveTable[ 0x0000 + i ] = -WaveTable[ 0x200 + i ]; } //Exponential wave for ( int i = 0; i < 256; i++ ) { WaveTable[ 0x700 + i ] = (Bit16s)( 0.5 + ( pow(2.0, -1.0 + ( 255 - i * 8) * ( 1.0 /256 ) ) ) * 4085 ); WaveTable[ 0x6ff - i ] = -WaveTable[ 0x700 + i ]; } #endif #if ( DBOPL_WAVE == WAVE_TABLELOG ) //Sine Wave Base for ( int i = 0; i < 512; i++ ) { WaveTable[ 0x0200 + i ] = (Bit16s)( 0.5 - log10( sin( (i + 0.5) * (PI / 512.0) ) ) / log10(2.0)*256 ); WaveTable[ 0x0000 + i ] = ((Bit16s)0x8000) | WaveTable[ 0x200 + i]; } //Exponential wave for ( int i = 0; i < 256; i++ ) { WaveTable[ 0x700 + i ] = i * 8; WaveTable[ 0x6ff - i ] = ((Bit16s)0x8000) | i * 8; } #endif // | |//\\|____|WAV7|//__|/\ |____|/\/\| // |\\//| | |WAV7| | \/| | | // |06 |0126|27 |7 |3 |4 |4 5 |5 | #if (( DBOPL_WAVE == WAVE_TABLELOG ) || ( DBOPL_WAVE == WAVE_TABLEMUL )) for ( int i = 0; i < 256; i++ ) { //Fill silence gaps WaveTable[ 0x400 + i ] = WaveTable[0]; WaveTable[ 0x500 + i ] = WaveTable[0]; WaveTable[ 0x900 + i ] = WaveTable[0]; WaveTable[ 0xc00 + i ] = WaveTable[0]; WaveTable[ 0xd00 + i ] = WaveTable[0]; //Replicate sines in other pieces WaveTable[ 0x800 + i ] = WaveTable[ 0x200 + i ]; //double speed sines WaveTable[ 0xa00 + i ] = WaveTable[ 0x200 + i * 2 ]; WaveTable[ 0xb00 + i ] = WaveTable[ 0x000 + i * 2 ]; WaveTable[ 0xe00 + i ] = WaveTable[ 0x200 + i * 2 ]; WaveTable[ 0xf00 + i ] = WaveTable[ 0x200 + i * 2 ]; } #endif //Create the ksl table for ( int oct = 0; oct < 8; oct++ ) { int base = oct * 8; for ( int i = 0; i < 16; i++ ) { int val = base - KslCreateTable[i]; if ( val < 0 ) val = 0; //*4 for the final range to match attenuation range KslTable[ oct * 16 + i ] = val * 4; } } //Create the Tremolo table, just increase and decrease a triangle wave for ( Bit8u i = 0; i < TREMOLO_TABLE / 2; i++ ) { Bit8u val = i << ENV_EXTRA; TremoloTable[i] = val; TremoloTable[TREMOLO_TABLE - 1 - i] = val; } //Create a table with offsets of the channels from the start of the chip DBOPL::Chip* chip = 0; for ( Bitu i = 0; i < 32; i++ ) { Bitu index = i & 0xf; if ( index >= 9 ) { ChanOffsetTable[i] = 0; continue; } //Make sure the four op channels follow eachother if ( index < 6 ) { index = (index % 3) * 2 + ( index / 3 ); } //Add back the bits for highest ones if ( i >= 16 ) index += 9; uintptr_t blah = reinterpret_cast( &(chip->chan[ index ]) ); ChanOffsetTable[i] = (Bit16u) blah; } //Same for operators for ( Bitu i = 0; i < 64; i++ ) { if ( i % 8 >= 6 || ( (i / 8) % 4 == 3 ) ) { OpOffsetTable[i] = 0; continue; } Bitu chNum = (i / 8) * 3 + (i % 8) % 3; //Make sure we use 16 and up for the 2nd range to match the chanoffset gap if ( chNum >= 12 ) chNum += 16 - 12; Bitu opNum = ( i % 8 ) / 3; DBOPL::Channel* chan = 0; uintptr_t blah = reinterpret_cast( &(chan->op[opNum]) ); OpOffsetTable[i] = (Bit16u) (ChanOffsetTable[ chNum ] + blah); } #if 0 //Stupid checks if table's are correct for ( Bitu i = 0; i < 18; i++ ) { Bit32u find = (Bit16u)( &(chip->chan[ i ]) ); for ( Bitu c = 0; c < 32; c++ ) { if ( ChanOffsetTable[c] == find ) { find = 0; break; } } if ( find ) { find = find; } } for ( Bitu i = 0; i < 36; i++ ) { Bit32u find = (Bit16u)( &(chip->chan[ i / 2 ].op[i % 2]) ); for ( Bitu c = 0; c < 64; c++ ) { if ( OpOffsetTable[c] == find ) { find = 0; break; } } if ( find ) { find = find; } } #endif } /*Bit32u Handler::WriteAddr( Bit32u port, Bit8u val ) { return chip.WriteAddr( port, val ); } void Handler::WriteReg( Bit32u addr, Bit8u val ) { chip.WriteReg( addr, val ); } void Handler::Generate( MixerChannel* chan, Bitu samples ) { Bit32s buffer[ 512 * 2 ]; if ( GCC_UNLIKELY(samples > 512) ) samples = 512; if ( !chip.opl3Active ) { chip.GenerateBlock2( samples, buffer ); chan->AddSamples_m32( samples, buffer ); } else { chip.GenerateBlock3( samples, buffer ); chan->AddSamples_s32( samples, buffer ); } } void Handler::Init( Bitu rate ) { InitTables(); chip.Setup( rate ); }*/ }; //Namespace DBOPL #endif // ifdef USE_GPL wolf4sdl-1.7+svn262/wl_game.cpp0000644000175000017500000012027511150771163015525 0ustar fabianfabian// WL_GAME.C #include #include "wl_def.h" #include #pragma hdrstop #ifdef MYPROFILE #include #endif /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ boolean ingame,fizzlein; gametype gamestate; byte bordercol=VIEWCOLOR; // color of the Change View/Ingame border #ifdef SPEAR int32_t spearx,speary; unsigned spearangle; boolean spearflag; #endif #ifdef USE_FEATUREFLAGS int ffDataTopLeft, ffDataTopRight, ffDataBottomLeft, ffDataBottomRight; #endif // // ELEVATOR BACK MAPS - REMEMBER (-1)!! // int ElevatorBackTo[]={1,1,7,3,5,3}; void SetupGameLevel (void); void DrawPlayScreen (void); void LoadLatchMem (void); void GameLoop (void); /* ============================================================================= LOCAL VARIABLES ============================================================================= */ //=========================================================================== //=========================================================================== /* ========================== = = SetSoundLoc - Given the location of an object (in terms of global = coordinates, held in globalsoundx and globalsoundy), munges the values = for an approximate distance from the left and right ear, and puts = those values into leftchannel and rightchannel. = = JAB = ========================== */ int leftchannel, rightchannel; #define ATABLEMAX 15 byte righttable[ATABLEMAX][ATABLEMAX * 2] = { { 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 0, 0, 0, 0, 0, 1, 3, 5, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 4, 0, 0, 0, 0, 0, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 4, 1, 0, 0, 0, 1, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 6, 5, 4, 2, 1, 0, 1, 2, 3, 5, 7, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 5, 4, 3, 2, 2, 3, 3, 5, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 5, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 6, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8} }; byte lefttable[ATABLEMAX][ATABLEMAX * 2] = { { 8, 8, 8, 8, 8, 8, 8, 8, 5, 3, 1, 0, 0, 0, 0, 0, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 2, 0, 0, 0, 0, 0, 4, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 2, 1, 0, 0, 0, 1, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 7, 5, 3, 2, 1, 0, 1, 2, 4, 5, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 5, 3, 3, 2, 2, 3, 4, 5, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 6, 5, 4, 4, 4, 4, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 6, 6, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8} }; void SetSoundLoc(fixed gx,fixed gy) { fixed xt,yt; int x,y; // // translate point to view centered coordinates // gx -= viewx; gy -= viewy; // // calculate newx // xt = FixedMul(gx,viewcos); yt = FixedMul(gy,viewsin); x = (xt - yt) >> TILESHIFT; // // calculate newy // xt = FixedMul(gx,viewsin); yt = FixedMul(gy,viewcos); y = (yt + xt) >> TILESHIFT; if (y >= ATABLEMAX) y = ATABLEMAX - 1; else if (y <= -ATABLEMAX) y = -ATABLEMAX; if (x < 0) x = -x; if (x >= ATABLEMAX) x = ATABLEMAX - 1; leftchannel = lefttable[x][y + ATABLEMAX]; rightchannel = righttable[x][y + ATABLEMAX]; #if 0 CenterWindow(8,1); US_PrintSigned(leftchannel); US_Print(","); US_PrintSigned(rightchannel); VW_UpdateScreen(); #endif } /* ========================== = = SetSoundLocGlobal - Sets up globalsoundx & globalsoundy and then calls = UpdateSoundLoc() to transform that into relative channel volumes. Those = values are then passed to the Sound Manager so that they'll be used for = the next sound played (if possible). = = JAB = ========================== */ void PlaySoundLocGlobal(word s,fixed gx,fixed gy) { SetSoundLoc(gx, gy); SD_PositionSound(leftchannel, rightchannel); int channel = SD_PlaySound((soundnames) s); if(channel) { channelSoundPos[channel - 1].globalsoundx = gx; channelSoundPos[channel - 1].globalsoundy = gy; channelSoundPos[channel - 1].valid = 1; } } void UpdateSoundLoc(void) { /* if (SoundPositioned) { SetSoundLoc(globalsoundx,globalsoundy); SD_SetPosition(leftchannel,rightchannel); }*/ for(int i = 0; i < MIX_CHANNELS; i++) { if(channelSoundPos[i].valid) { SetSoundLoc(channelSoundPos[i].globalsoundx, channelSoundPos[i].globalsoundy); SD_SetPosition(i, leftchannel, rightchannel); } } } /* ** JAB End */ /* ========================== = = ScanInfoPlane = = Spawn all actors and mark down special places = ========================== */ static void ScanInfoPlane(void) { unsigned x,y; int tile; word *start; start = mapsegs[1]; for (y=0;y= 90 && tile <= 101) { // door switch (tile) { case 90: case 92: case 94: case 96: case 98: case 100: SpawnDoor (x,y,1,(tile-90)/2); break; case 91: case 93: case 95: case 97: case 99: case 101: SpawnDoor (x,y,0,(tile-91)/2); break; } } } } // // spawn actors // ScanInfoPlane (); // // take out the ambush markers // map = mapsegs[0]; for (y=0;y= AREATILE) tile = *map; if (*(map-1-mapwidth) >= AREATILE) tile = *(map-1-mapwidth); if (*(map-1+mapwidth) >= AREATILE) tile = *(map-1+mapwidth); if ( *(map-2) >= AREATILE) tile = *(map-2); *(map-1) = tile; } } } // // have the caching manager load and purge stuff to make sure all marks // are in memory // CA_LoadAllSounds (); } //========================================================================== /* =================== = = DrawPlayBorderSides = = To fix window overwrites = =================== */ void DrawPlayBorderSides(void) { if(viewsize == 21) return; const int sw = screenWidth; const int sh = screenHeight; const int vw = viewwidth; const int vh = viewheight; const int px = scaleFactor; // size of one "pixel" const int h = sh - px * STATUSLINES; const int xl = sw / 2 - vw / 2; const int yl = (h - vh) / 2; if(xl != 0) { VWB_BarScaledCoord(0, 0, xl - px, h, bordercol); // left side VWB_BarScaledCoord(xl + vw + px, 0, xl - px * 2, h, bordercol); // right side } if(yl != 0) { VWB_BarScaledCoord(0, 0, sw, yl - px, bordercol); // upper side VWB_BarScaledCoord(0, yl + vh + px, sw, yl - px, bordercol); // lower side } if(xl != 0) { // Paint game view border lines VWB_BarScaledCoord(xl - px, yl - px, vw + px, px, 0); // upper border VWB_BarScaledCoord(xl, yl + vh, vw + px, px, bordercol - 2); // lower border VWB_BarScaledCoord(xl - px, yl - px, px, vh + px, 0); // left border VWB_BarScaledCoord(xl + vw, yl - px, px, vh + px * 2, bordercol - 2); // right border VWB_BarScaledCoord(xl - px, yl + vh, px, px, bordercol - 3); // lower left highlight } else { // Just paint a lower border line VWB_BarScaledCoord(0, yl+vh, vw, px, bordercol-2); // lower border } } /* =================== = = DrawStatusBorder = =================== */ void DrawStatusBorder (byte color) { int statusborderw = (screenWidth-scaleFactor*320)/2; VWB_BarScaledCoord (0,0,screenWidth,screenHeight-scaleFactor*(STATUSLINES-3),color); VWB_BarScaledCoord (0,screenHeight-scaleFactor*(STATUSLINES-3), statusborderw+scaleFactor*8,scaleFactor*(STATUSLINES-4),color); VWB_BarScaledCoord (0,screenHeight-scaleFactor*2,screenWidth,scaleFactor*2,color); VWB_BarScaledCoord (screenWidth-statusborderw-scaleFactor*8, screenHeight-scaleFactor*(STATUSLINES-3), statusborderw+scaleFactor*8,scaleFactor*(STATUSLINES-4),color); VWB_BarScaledCoord (statusborderw+scaleFactor*9, screenHeight-scaleFactor*3, scaleFactor*97, scaleFactor*1, color-1); VWB_BarScaledCoord (statusborderw+scaleFactor*106, screenHeight-scaleFactor*3, scaleFactor*161, scaleFactor*1, color-2); VWB_BarScaledCoord (statusborderw+scaleFactor*267, screenHeight-scaleFactor*3, scaleFactor*44, scaleFactor*1, color-3); VWB_BarScaledCoord (screenWidth-statusborderw-scaleFactor*9, screenHeight-scaleFactor*(STATUSLINES-4), scaleFactor*1, scaleFactor*20, color-2); VWB_BarScaledCoord (screenWidth-statusborderw-scaleFactor*9, screenHeight-scaleFactor*(STATUSLINES/2-4), scaleFactor*1, scaleFactor*14, color-3); } /* =================== = = DrawPlayBorder = =================== */ void DrawPlayBorder (void) { const int px = scaleFactor; // size of one "pixel" if (bordercol != VIEWCOLOR) DrawStatusBorder(bordercol); else { const int statusborderw = (screenWidth-px*320)/2; VWB_BarScaledCoord (0, screenHeight-px*STATUSLINES, statusborderw+px*8, px*STATUSLINES, bordercol); VWB_BarScaledCoord (screenWidth-statusborderw-px*8, screenHeight-px*STATUSLINES, statusborderw+px*8, px*STATUSLINES, bordercol); } if((unsigned) viewheight == screenHeight) return; VWB_BarScaledCoord (0,0,screenWidth,screenHeight-px*STATUSLINES,bordercol); const int xl = screenWidth/2-viewwidth/2; const int yl = (screenHeight-px*STATUSLINES-viewheight)/2; VWB_BarScaledCoord (xl,yl,viewwidth,viewheight,0); if(xl != 0) { // Paint game view border lines VWB_BarScaledCoord(xl-px, yl-px, viewwidth+px, px, 0); // upper border VWB_BarScaledCoord(xl, yl+viewheight, viewwidth+px, px, bordercol-2); // lower border VWB_BarScaledCoord(xl-px, yl-px, px, viewheight+px, 0); // left border VWB_BarScaledCoord(xl+viewwidth, yl-px, px, viewheight+2*px, bordercol-2); // right border VWB_BarScaledCoord(xl-px, yl+viewheight, px, px, bordercol-3); // lower left highlight } else { // Just paint a lower border line VWB_BarScaledCoord(0, yl+viewheight, viewwidth, px, bordercol-2); // lower border } } /* =================== = = DrawPlayScreen = =================== */ void DrawPlayScreen (void) { VWB_DrawPicScaledCoord ((screenWidth-scaleFactor*320)/2,screenHeight-scaleFactor*STATUSLINES,STATUSBARPIC); DrawPlayBorder (); DrawFace (); DrawHealth (); DrawLives (); DrawLevel (); DrawAmmo (); DrawKeys (); DrawWeapon (); DrawScore (); } // Uses LatchDrawPic instead of StatusDrawPic void LatchNumberHERE (int x, int y, unsigned width, int32_t number) { unsigned length,c; char str[20]; ltoa (number,str,10); length = (unsigned) strlen (str); while (length> 8); demoptr[2] = 0; VW_FadeIn(); CenterWindow(24,3); PrintY+=6; fontnumber=0; SETFONTCOLOR(0,15); US_Print(" Demo number (0-9): "); VW_UpdateScreen(); if (US_LineInput (px,py,str,NULL,true,1,0)) { level = atoi (str); if (level>=0 && level<=9) { demoname[4] = (char)('0'+level); CA_WriteFile (demoname,demobuffer,length); } } free(demobuffer); } //========================================================================== /* ================== = = RecordDemo = = Fades the screen out, then starts a demo. Exits with the screen faded = ================== */ void RecordDemo (void) { int level,esc,maps; CenterWindow(26,3); PrintY+=6; CA_CacheGrChunk(STARTFONT); fontnumber=0; SETFONTCOLOR(0,15); #ifndef SPEAR #ifdef UPLOAD US_Print(" Demo which level(1-10): "); maps = 10; #else US_Print(" Demo which level(1-60): "); maps = 60; #endif #else US_Print(" Demo which level(1-21): "); maps = 21; #endif VW_UpdateScreen(); VW_FadeIn (); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (esc) return; level = atoi (str); level--; if (level >= maps || level < 0) return; VW_FadeOut (); #ifndef SPEAR NewGame (gd_hard,level/10); gamestate.mapon = level%10; #else NewGame (gd_hard,0); gamestate.mapon = level; #endif StartDemoRecord (level); DrawPlayScreen (); VW_FadeIn (); startgame = false; demorecord = true; SetupGameLevel (); StartMusic (); if(usedoublebuffering) VH_UpdateScreen(); fizzlein = true; PlayLoop (); demoplayback = false; StopMusic (); VW_FadeOut (); ClearMemory (); FinishDemoRecord (); } #else void FinishDemoRecord (void) {return;} void RecordDemo (void) {return;} #endif //========================================================================== /* ================== = = PlayDemo = = Fades the screen out, then starts a demo. Exits with the screen unfaded = ================== */ void PlayDemo (int demonumber) { int length; #ifdef DEMOSEXTERN // debug: load chunk #ifndef SPEARDEMO int dems[4]={T_DEMO0,T_DEMO1,T_DEMO2,T_DEMO3}; #else int dems[1]={T_DEMO0}; #endif CA_CacheGrChunk(dems[demonumber]); demoptr = (int8_t *) grsegs[dems[demonumber]]; #else demoname[4] = '0'+demonumber; CA_LoadFile (demoname,&demobuffer); demoptr = (int8_t *)demobuffer; #endif NewGame (1,0); gamestate.mapon = *demoptr++; gamestate.difficulty = gd_hard; length = READWORD(*(uint8_t **)&demoptr); // TODO: Seems like the original demo format supports 16 MB demos // But T_DEM00 and T_DEM01 of Wolf have a 0xd8 as third length size... demoptr++; lastdemoptr = demoptr-4+length; VW_FadeOut (); SETFONTCOLOR(0,15); DrawPlayScreen (); startgame = false; demoplayback = true; SetupGameLevel (); StartMusic (); PlayLoop (); #ifdef DEMOSEXTERN UNCACHEGRCHUNK(dems[demonumber]); #else MM_FreePtr (&demobuffer); #endif demoplayback = false; StopMusic (); ClearMemory (); } //========================================================================== /* ================== = = Died = ================== */ #define DEATHROTATE 2 void Died (void) { float fangle; int32_t dx,dy; int iangle,curangle,clockwise,counter,change; if (screenfaded) { ThreeDRefresh (); VW_FadeIn (); } gamestate.weapon = (weapontype) -1; // take away weapon SD_PlaySound (PLAYERDEATHSND); // // swing around to face attacker // if(killerobj) { dx = killerobj->x - player->x; dy = player->y - killerobj->y; fangle = (float) atan2((float) dy, (float) dx); // returns -pi to pi if (fangle<0) fangle = (float) (M_PI*2+fangle); iangle = (int) (fangle/(M_PI*2)*ANGLES); } else { iangle = player->angle + ANGLES / 2; if(iangle >= ANGLES) iangle -= ANGLES; } if (player->angle > iangle) { counter = player->angle - iangle; clockwise = ANGLES-player->angle + iangle; } else { clockwise = iangle - player->angle; counter = player->angle + ANGLES-iangle; } curangle = player->angle; if (clockwiseiangle) curangle -= ANGLES; do { change = tics*DEATHROTATE; if (curangle + change > iangle) change = iangle-curangle; curangle += change; player->angle += change; if (player->angle >= ANGLES) player->angle -= ANGLES; ThreeDRefresh (); CalcTics (); } while (curangle != iangle); } else { // // rotate counterclockwise // if (curangleangle += change; if (player->angle < 0) player->angle += ANGLES; ThreeDRefresh (); CalcTics (); } while (curangle != iangle); } // // fade to red // FinishPaletteShifts (); if(usedoublebuffering) VH_UpdateScreen(); VL_BarScaledCoord (viewscreenx,viewscreeny,viewwidth,viewheight,4); IN_ClearKeysDown (); FizzleFade(screenBuffer,viewscreenx,viewscreeny,viewwidth,viewheight,70,false); IN_UserInput(100); SD_WaitSoundDone (); ClearMemory(); gamestate.lives--; if (gamestate.lives > -1) { gamestate.health = 100; gamestate.weapon = gamestate.bestweapon = gamestate.chosenweapon = wp_pistol; gamestate.ammo = STARTAMMO; gamestate.keys = 0; pwallstate = pwallpos = 0; gamestate.attackframe = gamestate.attackcount = gamestate.weaponframe = 0; if(viewsize != 21) { DrawKeys (); DrawWeapon (); DrawAmmo (); DrawHealth (); DrawFace (); DrawLives (); } } } //========================================================================== /* =================== = = GameLoop = =================== */ void GameLoop (void) { boolean died; #ifdef MYPROFILE clock_t start,end; #endif restartgame: ClearMemory (); SETFONTCOLOR(0,15); VW_FadeOut(); DrawPlayScreen (); died = false; do { if (!loadedgame) gamestate.score = gamestate.oldscore; if(!died || viewsize != 21) DrawScore(); startgame = false; if (!loadedgame) SetupGameLevel (); #ifdef SPEAR if (gamestate.mapon == 20) // give them the key allways { gamestate.keys |= 1; DrawKeys (); } #endif ingame = true; if(loadedgame) { ContinueMusic(lastgamemusicoffset); loadedgame = false; } else StartMusic (); if (!died) PreloadGraphics (); // TODO: Let this do something useful! else { died = false; fizzlein = true; } DrawLevel (); #ifdef SPEAR startplayloop: #endif PlayLoop (); #ifdef SPEAR if (spearflag) { SD_StopSound(); SD_PlaySound(GETSPEARSND); if (DigiMode != sds_Off) { Delay(150); } else SD_WaitSoundDone(); ClearMemory (); gamestate.oldscore = gamestate.score; gamestate.mapon = 20; SetupGameLevel (); StartMusic (); player->x = spearx; player->y = speary; player->angle = (short)spearangle; spearflag = false; Thrust (0,0); goto startplayloop; } #endif StopMusic (); ingame = false; if (demorecord && playstate != ex_warped) FinishDemoRecord (); if (startgame || loadedgame) goto restartgame; switch (playstate) { case ex_completed: case ex_secretlevel: if(viewsize == 21) DrawPlayScreen(); gamestate.keys = 0; DrawKeys (); VW_FadeOut (); ClearMemory (); LevelCompleted (); // do the intermission if(viewsize == 21) DrawPlayScreen(); #ifdef SPEARDEMO if (gamestate.mapon == 1) { died = true; // don't "get psyched!" VW_FadeOut (); ClearMemory (); CheckHighScore (gamestate.score,gamestate.mapon+1); #ifndef JAPAN strcpy(MainMenu[viewscores].string,STR_VS); #endif MainMenu[viewscores].routine = CP_ViewScores; return; } #endif #ifdef JAPDEMO if (gamestate.mapon == 3) { died = true; // don't "get psyched!" VW_FadeOut (); ClearMemory (); CheckHighScore (gamestate.score,gamestate.mapon+1); #ifndef JAPAN strcpy(MainMenu[viewscores].string,STR_VS); #endif MainMenu[viewscores].routine = CP_ViewScores; return; } #endif gamestate.oldscore = gamestate.score; #ifndef SPEAR // // COMING BACK FROM SECRET LEVEL // if (gamestate.mapon == 9) gamestate.mapon = ElevatorBackTo[gamestate.episode]; // back from secret else // // GOING TO SECRET LEVEL // if (playstate == ex_secretlevel) gamestate.mapon = 9; #else #define FROMSECRET1 3 #define FROMSECRET2 11 // // GOING TO SECRET LEVEL // if (playstate == ex_secretlevel) switch(gamestate.mapon) { case FROMSECRET1: gamestate.mapon = 18; break; case FROMSECRET2: gamestate.mapon = 19; break; } else // // COMING BACK FROM SECRET LEVEL // if (gamestate.mapon == 18 || gamestate.mapon == 19) switch(gamestate.mapon) { case 18: gamestate.mapon = FROMSECRET1+1; break; case 19: gamestate.mapon = FROMSECRET2+1; break; } #endif else // // GOING TO NEXT LEVEL // gamestate.mapon++; break; case ex_died: Died (); died = true; // don't "get psyched!" if (gamestate.lives > -1) break; // more lives left VW_FadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); #ifdef _arch_dreamcast DC_StatusClearLCD(); #endif ClearMemory (); CheckHighScore (gamestate.score,gamestate.mapon+1); #ifndef JAPAN strcpy(MainMenu[viewscores].string,STR_VS); #endif MainMenu[viewscores].routine = CP_ViewScores; return; case ex_victorious: if(viewsize == 21) DrawPlayScreen(); #ifndef SPEAR VW_FadeOut (); #else VL_FadeOut (0,255,0,17,17,300); #endif ClearMemory (); Victory (); ClearMemory (); CheckHighScore (gamestate.score,gamestate.mapon+1); #ifndef JAPAN strcpy(MainMenu[viewscores].string,STR_VS); #endif MainMenu[viewscores].routine = CP_ViewScores; return; default: if(viewsize == 21) DrawPlayScreen(); ClearMemory (); break; } } while (1); } wolf4sdl-1.7+svn262/id_ca.cpp0000644000175000017500000005742411577434171015166 0ustar fabianfabian// ID_CA.C // this has been customized for WOLF /* ============================================================================= Id Software Caching Manager --------------------------- Must be started BEFORE the memory manager, because it needs to get the headers loaded into the data segment ============================================================================= */ #include #if defined _WIN32 #include #elif defined _arch_dreamcast #include #else #include #include #endif #include "wl_def.h" #pragma hdrstop #define THREEBYTEGRSTARTS /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ typedef struct { word bit0,bit1; // 0-255 is a character, > is a pointer to a node } huffnode; typedef struct { word RLEWtag; int32_t headeroffsets[100]; } mapfiletype; /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ #define BUFFERSIZE 0x1000 static int32_t bufferseg[BUFFERSIZE/4]; int mapon; word *mapsegs[MAPPLANES]; static maptype* mapheaderseg[NUMMAPS]; byte *audiosegs[NUMSNDCHUNKS]; byte *grsegs[NUMCHUNKS]; word RLEWtag; int numEpisodesMissing = 0; /* ============================================================================= LOCAL VARIABLES ============================================================================= */ char extension[5]; // Need a string, not constant to change cache files char graphext[5]; char audioext[5]; static const char gheadname[] = "vgahead."; static const char gfilename[] = "vgagraph."; static const char gdictname[] = "vgadict."; static const char mheadname[] = "maphead."; static const char mfilename[] = "maptemp."; static const char aheadname[] = "audiohed."; static const char afilename[] = "audiot."; void CA_CannotOpen(const char *string); static int32_t grstarts[NUMCHUNKS + 1]; static int32_t* audiostarts; // array of offsets in audio / audiot #ifdef GRHEADERLINKED huffnode *grhuffman; #else huffnode grhuffman[255]; #endif int grhandle = -1; // handle to EGAGRAPH int maphandle = -1; // handle to MAPTEMP / GAMEMAPS int audiohandle = -1; // handle to AUDIOT / AUDIO int32_t chunkcomplen,chunkexplen; SDMode oldsoundmode; static int32_t GRFILEPOS(const size_t idx) { assert(idx < lengthof(grstarts)); return grstarts[idx]; } /* ============================================================================= LOW LEVEL ROUTINES ============================================================================= */ /* ============================ = = CAL_GetGrChunkLength = = Gets the length of an explicit length chunk (not tiles) = The file pointer is positioned so the compressed data can be read in next. = ============================ */ void CAL_GetGrChunkLength (int chunk) { lseek(grhandle,GRFILEPOS(chunk),SEEK_SET); read(grhandle,&chunkexplen,sizeof(chunkexplen)); chunkcomplen = GRFILEPOS(chunk+1)-GRFILEPOS(chunk)-4; } /* ========================== = = CA_WriteFile = = Writes a file from a memory buffer = ========================== */ boolean CA_WriteFile (const char *filename, void *ptr, int32_t length) { const int handle = open(filename, O_CREAT | O_WRONLY | O_BINARY, 0644); if (handle == -1) return false; if (!write (handle,ptr,length)) { close (handle); return false; } close (handle); return true; } /* ========================== = = CA_LoadFile = = Allocate space for and load a file = ========================== */ boolean CA_LoadFile (const char *filename, memptr *ptr) { int32_t size; const int handle = open(filename, O_RDONLY | O_BINARY); if (handle == -1) return false; size = lseek(handle, 0, SEEK_END); lseek(handle, 0, SEEK_SET); *ptr=malloc(size); CHECKMALLOCRESULT(*ptr); if (!read (handle,*ptr,size)) { close (handle); return false; } close (handle); return true; } /* ============================================================================ COMPRESSION routines, see JHUFF.C for more ============================================================================ */ static void CAL_HuffExpand(byte *source, byte *dest, int32_t length, huffnode *hufftable) { byte *end; huffnode *headptr, *huffptr; if(!length || !dest) { Quit("length or dest is null!"); return; } headptr = hufftable+254; // head node is always node 254 int written = 0; end=dest+length; byte val = *source++; byte mask = 1; word nodeval; huffptr = headptr; while(1) { if(!(val & mask)) nodeval = huffptr->bit0; else nodeval = huffptr->bit1; if(mask==0x80) { val = *source++; mask = 1; } else mask <<= 1; if(nodeval<256) { *dest++ = (byte) nodeval; written++; huffptr = headptr; if(dest>=end) break; } else { huffptr = hufftable + (nodeval - 256); } } } /* ====================== = = CAL_CarmackExpand = = Length is the length of the EXPANDED data = ====================== */ #define NEARTAG 0xa7 #define FARTAG 0xa8 void CAL_CarmackExpand (byte *source, word *dest, int length) { word ch,chhigh,count,offset; byte *inptr; word *copyptr, *outptr; length/=2; inptr = (byte *) source; outptr = dest; while (length>0) { ch = READWORD(inptr); chhigh = ch>>8; if (chhigh == NEARTAG) { count = ch&0xff; if (!count) { // have to insert a word containing the tag byte ch |= *inptr++; *outptr++ = ch; length--; } else { offset = *inptr++; copyptr = outptr - offset; length -= count; if(length<0) return; while (count--) *outptr++ = *copyptr++; } } else if (chhigh == FARTAG) { count = ch&0xff; if (!count) { // have to insert a word containing the tag byte ch |= *inptr++; *outptr++ = ch; length --; } else { offset = READWORD(inptr); copyptr = dest + offset; length -= count; if(length<0) return; while (count--) *outptr++ = *copyptr++; } } else { *outptr++ = ch; length --; } } } /* ====================== = = CA_RLEWcompress = ====================== */ int32_t CA_RLEWCompress (word *source, int32_t length, word *dest, word rlewtag) { word value,count; unsigned i; word *start,*end; start = dest; end = source + (length+1)/2; // // compress it // do { count = 1; value = *source++; while (*source == value && source3 || value == rlewtag) { // // send a tag / count / value string // *dest++ = rlewtag; *dest++ = count; *dest++ = value; } else { // // send word without compressing // for (i=1;i<=count;i++) *dest++ = value; } } while (sourceRLEWtag; // // open the data file // #ifdef CARMACIZED strcpy(fname, "gamemaps."); strcat(fname, extension); maphandle = open(fname, O_RDONLY | O_BINARY); if (maphandle == -1) CA_CannotOpen(fname); #else strcpy(fname,mfilename); strcat(fname,extension); maphandle = open(fname, O_RDONLY | O_BINARY); if (maphandle == -1) CA_CannotOpen(fname); #endif // // load all map header // for (i=0;iheaderoffsets[i]; if (pos<0) // $FFFFFFFF start is a sparse map continue; mapheaderseg[i]=(maptype *) malloc(sizeof(maptype)); CHECKMALLOCRESULT(mapheaderseg[i]); lseek(maphandle,pos,SEEK_SET); read (maphandle,(memptr)mapheaderseg[i],sizeof(maptype)); } free(tinf); // // allocate space for 3 64*64 planes // for (i=0;icommon.length = READLONGWORD(ptr); sound->common.priority = READWORD(ptr); sound->inst.mChar = *ptr++; sound->inst.cChar = *ptr++; sound->inst.mScale = *ptr++; sound->inst.cScale = *ptr++; sound->inst.mAttack = *ptr++; sound->inst.cAttack = *ptr++; sound->inst.mSus = *ptr++; sound->inst.cSus = *ptr++; sound->inst.mWave = *ptr++; sound->inst.cWave = *ptr++; sound->inst.nConn = *ptr++; sound->inst.voice = *ptr++; sound->inst.mode = *ptr++; sound->inst.unused[0] = *ptr++; sound->inst.unused[1] = *ptr++; sound->inst.unused[2] = *ptr++; sound->block = *ptr++; read(audiohandle, sound->data, size - ORIG_ADLIBSOUND_SIZE + 1); // + 1 because of byte data[1] audiosegs[chunk]=(byte *) sound; } //=========================================================================== /* ====================== = = CA_LoadAllSounds = = Purges all sounds, then loads all new ones (mode switch) = ====================== */ void CA_LoadAllSounds (void) { unsigned start,i; switch (oldsoundmode) { case sdm_Off: goto cachein; case sdm_PC: start = STARTPCSOUNDS; break; case sdm_AdLib: start = STARTADLIBSOUNDS; break; } for (i=0;i= STARTTILE8 && chunk < STARTEXTERNS) { // // expanded sizes of tile8/16/32 are implicit // #define BLOCK 64 #define MASKBLOCK 128 if (chunkBUFFERSIZE) free(source); } //========================================================================== /* ====================== = = CA_CacheScreen = = Decompresses a chunk from disk straight onto the screen = ====================== */ void CA_CacheScreen (int chunk) { int32_t pos,compressed,expanded; memptr bigbufferseg; int32_t *source; int next; byte *pic, *vbuf; int x, y, scx, scy; unsigned i, j; // // load the chunk into a buffer // pos = GRFILEPOS(chunk); next = chunk +1; while (GRFILEPOS(next) == -1) // skip past any sparse tiles next++; compressed = GRFILEPOS(next)-pos; lseek(grhandle,pos,SEEK_SET); bigbufferseg=malloc(compressed); CHECKMALLOCRESULT(bigbufferseg); read(grhandle,bigbufferseg,compressed); source = (int32_t *) bigbufferseg; expanded = *source++; // // allocate final space, decompress it, and free bigbuffer // Sprites need to have shifts made and various other junk // pic = (byte *) malloc(64000); CHECKMALLOCRESULT(pic); CAL_HuffExpand((byte *) source, pic, expanded, grhuffman); vbuf = VL_LockSurface(curSurface); if(vbuf != NULL) { for(y = 0, scy = 0; y < 200; y++, scy += scaleFactor) { for(x = 0, scx = 0; x < 320; x++, scx += scaleFactor) { byte col = pic[(y * 80 + (x >> 2)) + (x & 3) * 80 * 200]; for(i = 0; i < scaleFactor; i++) for(j = 0; j < scaleFactor; j++) vbuf[(scy + i) * curPitch + scx + j] = col; } } VL_UnlockSurface(curSurface); } free(pic); free(bigbufferseg); } //========================================================================== /* ====================== = = CA_CacheMap = = WOLF: This is specialized for a 64*64 map size = ====================== */ void CA_CacheMap (int mapnum) { int32_t pos,compressed; int plane; word *dest; memptr bigbufferseg; unsigned size; word *source; #ifdef CARMACIZED word *buffer2seg; int32_t expanded; #endif mapon = mapnum; // // load the planes into the allready allocated buffers // size = maparea*2; for (plane = 0; planeplanestart[plane]; compressed = mapheaderseg[mapnum]->planelength[plane]; dest = mapsegs[plane]; lseek(maphandle,pos,SEEK_SET); if (compressed<=BUFFERSIZE) source = (word *) bufferseg; else { bigbufferseg=malloc(compressed); CHECKMALLOCRESULT(bigbufferseg); source = (word *) bigbufferseg; } read(maphandle,source,compressed); #ifdef CARMACIZED // // unhuffman, then unRLEW // The huffman'd chunk has a two byte expanded length first // The resulting RLEW chunk also does, even though it's not really // needed // expanded = *source; source++; buffer2seg = (word *) malloc(expanded); CHECKMALLOCRESULT(buffer2seg); CAL_CarmackExpand((byte *) source, buffer2seg,expanded); CA_RLEWexpand(buffer2seg+1,dest,size,RLEWtag); free(buffer2seg); #else // // unRLEW, skipping expanded length // CA_RLEWexpand (source+1,dest,size,RLEWtag); #endif if (compressed>BUFFERSIZE) free(bigbufferseg); } } //=========================================================================== void CA_CannotOpen(const char *string) { char str[30]; strcpy(str,"Can't open "); strcat(str,string); strcat(str,"!\n"); Quit (str); } wolf4sdl-1.7+svn262/wl_atmos.cpp0000644000175000017500000001643611463005243015736 0ustar fabianfabian#include "version.h" #if defined(USE_STARSKY) || defined(USE_RAIN) || defined(USE_SNOW) #include "wl_def.h" #if defined(USE_RAIN) || defined(USE_SNOW) uint32_t rainpos = 0; #endif typedef struct { int32_t x, y, z; } point3d_t; #define MAXPOINTS 400 point3d_t points[MAXPOINTS]; byte moon[100]={ 0, 0, 27, 18, 15, 16, 19, 29, 0, 0, 0, 22, 16, 15, 15, 16, 16, 18, 24, 0, 27, 17, 15, 17, 16, 16, 17, 17, 18, 29, 18, 15, 15, 15, 16, 16, 17, 17, 18, 20, 16, 15, 15, 16, 16, 17, 17, 18, 19, 21, 16, 15, 17, 20, 18, 17, 18, 18, 20, 22, 19, 16, 18, 19, 17, 17, 18, 19, 22, 24, 28, 19, 17, 17, 17, 18, 19, 21, 25, 31, 0, 23, 18, 19, 18, 20, 22, 24, 28, 0, 0, 0, 28, 21, 20, 22, 28, 30, 0, 0 }; void Init3DPoints() { int hvheight = viewheight >> 1; for(int i = 0; i < MAXPOINTS; i++) { point3d_t *pt = &points[i]; pt->x = 16384 - (rand() & 32767); pt->z = 16384 - (rand() & 32767); float len = sqrt((float)pt->x * pt->x + (float)pt->z * pt->z); int j=50; do { pt->y = 1024 + (rand() & 8191); j--; } while(j > 0 && (float)pt->y * 256.F / len >= hvheight); } } #endif #ifdef USE_STARSKY void DrawStarSky(byte *vbuf, uint32_t vbufPitch) { int hvheight = viewheight >> 1; int hvwidth = viewwidth >> 1; byte *ptr = vbuf; int i; for(i = 0; i < hvheight; i++, ptr += vbufPitch) memset(ptr, 0, viewwidth); for(i = 0; i < MAXPOINTS; i++) { point3d_t *pt = &points[i]; int32_t x = pt->x * viewcos + pt->z * viewsin; int32_t y = pt->y << 16; int32_t z = (pt->z * viewcos - pt->x * viewsin) >> 8; if(z <= 0) continue; int shade = z >> 18; if(shade > 15) continue; int32_t xx = x / z + hvwidth; int32_t yy = hvheight - y / z; if(xx >= 0 && xx < viewwidth && yy >= 0 && yy < hvheight) vbuf[yy * vbufPitch + xx] = shade + 15; } int32_t x = 16384 * viewcos + 16384 * viewsin; int32_t z = (16384 * viewcos - 16384 * viewsin) >> 8; if(z <= 0) return; int32_t xx = x / z + hvwidth; int32_t yy = hvheight - ((hvheight - (hvheight >> 3)) << 22) / z; if(xx > -10 && xx < viewwidth) { int stopx = 10, starty = 0, stopy = 10; i = 0; if(xx < 0) i = -xx; if(xx > viewwidth - 11) stopx = viewwidth - xx; if(yy < 0) startj = -yy; if(yy > viewheight - 11) stopy = viewheight - yy; for(; i < stopx; i++) for(int j = starty; j < stopy; j++) vbuf[(yy + j) * vbufPitch + xx + i] = moon[j * 10 + i]; } } #endif #ifdef USE_RAIN void DrawRain(byte *vbuf, uint32_t vbufPitch) { #if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS) fixed dist; // distance to row projection fixed tex_step; // global step per one screen pixel fixed gu, gv, floorx, floory; // global texture coordinates #endif fixed px = (player->y + FixedMul(0x7900, viewsin)) >> 6; fixed pz = (player->x - FixedMul(0x7900, viewcos)) >> 6; int32_t ax, az, x, y, z, xx, yy, height, actheight; int shade; int hvheight = viewheight >> 1; int hvwidth = viewwidth >> 1; rainpos -= tics * 900; for(int i = 0; i < MAXPOINTS; i++) { point3d_t *pt = &points[i]; ax = pt->x + px; ax = 0x1fff - (ax & 0x3fff); az = pt->z + pz; az = 0x1fff - (az & 0x3fff); x = ax * viewcos + az * viewsin; y = -(heightnumerator << 7) + ((((pt->y << 6) + rainpos) & 0x0ffff) << 11); z = (az * viewcos - ax * viewsin) >> 8; if(z <= 0) continue; shade = z >> 17; if(shade > 13) continue; xx = x / z + hvwidth; if(xx < 0 || xx >= viewwidth) continue; actheight = y / z; yy = hvheight - actheight; height = (heightnumerator << 10) / z; if(actheight < 0) actheight = -actheight; if(actheight < (wallheight[xx] >> 3) && height < wallheight[xx]) continue; if(xx >= 0 && xx < viewwidth && yy > 0 && yy < viewheight) { #if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS) // Find the rain's tile coordinate // NOTE: This sometimes goes over the map edges. dist = ((heightnumerator / ((height >> 3) + 1)) << 5); gu = viewx + FixedMul(dist, viewcos); gv = -viewy + FixedMul(dist, viewsin); floorx = ( gu >> TILESHIFT ) & 63; floory = (-(gv >> TILESHIFT) - 1) & 63; // Is there a ceiling tile? if(MAPSPOT(floorx, floory, 2) >> 8) continue; #endif vbuf[yy * vbufPitch + xx] = shade+15; vbuf[(yy - 1) * vbufPitch + xx] = shade+16; if(yy > 2) vbuf[(yy - 2) * vbufPitch + xx] = shade+17; } } } #endif #ifdef USE_SNOW void DrawSnow(byte *vbuf, uint32_t vbufPitch) { #if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS) fixed dist; // distance to row projection fixed tex_step; // global step per one screen pixel fixed gu, gv, floorx, floory; // global texture coordinates #endif fixed px = (player->y + FixedMul(0x7900, viewsin)) >> 6; fixed pz = (player->x - FixedMul(0x7900, viewcos)) >> 6; int32_t ax, az, x, y, z, xx, yy, height, actheight; int shade; int hvheight = viewheight >> 1; int hvwidth = viewwidth >> 1; rainpos -= tics * 256; for(int i = 0; i < MAXPOINTS; i++) { point3d_t *pt = &points[i]; ax = pt->x + px; ax = 0x1fff - (ax & 0x3fff); az = pt->z + pz; az = 0x1fff - (az & 0x3fff); x = ax * viewcos + az * viewsin; y = -(heightnumerator << 7) + ((((pt->y << 6) + rainpos) & 0x0ffff) << 11); z = (az * viewcos - ax * viewsin) >> 8; if(z <= 0) continue; shade = z >> 17; if(shade > 13) continue; xx = x / z + hvwidth; if(xx < 0 || xx >= viewwidth) continue; actheight = y / z; yy = hvheight - actheight; height = (heightnumerator << 10) / z; if(actheight < 0) actheight = -actheight; if(actheight < (wallheight[xx] >> 3) && height < wallheight[xx]) continue; if(xx > 0 && xx < viewwidth && yy > 0 && yy < viewheight) { #if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS) // Find the snow's tile coordinate // NOTE: This sometimes goes over the map edges. dist = ((heightnumerator / ((height >> 3) + 1)) << 5); gu = viewx + FixedMul(dist, viewcos); gv = -viewy + FixedMul(dist, viewsin); floorx = ( gu >> TILESHIFT ) & 63; floory = (-(gv >> TILESHIFT) - 1) & 63; // Is there a ceiling tile? if(MAPSPOT(floorx, floory, 2) >> 8) continue; #endif if(shade < 10) { vbuf[yy * vbufPitch + xx] = shade+17; vbuf[yy * vbufPitch + xx - 1] = shade+16; vbuf[(yy - 1) * vbufPitch + xx] = shade+16; vbuf[(yy - 1) * vbufPitch + xx - 1] = shade+15; } else vbuf[yy * vbufPitch + xx] = shade+15; } } } #endif wolf4sdl-1.7+svn262/audiowl6.h0000644000175000017500000001037110763630362015310 0ustar fabianfabian///////////////////////////////////////////////// // // MUSE Header for .WL6 // Created Tue Jul 14 15:04:53 1992 // ///////////////////////////////////////////////// // // Sound names & indexes // typedef enum { HITWALLSND, // 0 SELECTWPNSND, // 1 SELECTITEMSND, // 2 HEARTBEATSND, // 3 MOVEGUN2SND, // 4 MOVEGUN1SND, // 5 NOWAYSND, // 6 NAZIHITPLAYERSND, // 7 SCHABBSTHROWSND, // 8 PLAYERDEATHSND, // 9 DOGDEATHSND, // 10 ATKGATLINGSND, // 11 GETKEYSND, // 12 NOITEMSND, // 13 WALK1SND, // 14 WALK2SND, // 15 TAKEDAMAGESND, // 16 GAMEOVERSND, // 17 OPENDOORSND, // 18 CLOSEDOORSND, // 19 DONOTHINGSND, // 20 HALTSND, // 21 DEATHSCREAM2SND, // 22 ATKKNIFESND, // 23 ATKPISTOLSND, // 24 DEATHSCREAM3SND, // 25 ATKMACHINEGUNSND, // 26 HITENEMYSND, // 27 SHOOTDOORSND, // 28 DEATHSCREAM1SND, // 29 GETMACHINESND, // 30 GETAMMOSND, // 31 SHOOTSND, // 32 HEALTH1SND, // 33 HEALTH2SND, // 34 BONUS1SND, // 35 BONUS2SND, // 36 BONUS3SND, // 37 GETGATLINGSND, // 38 ESCPRESSEDSND, // 39 LEVELDONESND, // 40 DOGBARKSND, // 41 ENDBONUS1SND, // 42 ENDBONUS2SND, // 43 BONUS1UPSND, // 44 BONUS4SND, // 45 PUSHWALLSND, // 46 NOBONUSSND, // 47 PERCENT100SND, // 48 BOSSACTIVESND, // 49 MUTTISND, // 50 SCHUTZADSND, // 51 AHHHGSND, // 52 DIESND, // 53 EVASND, // 54 GUTENTAGSND, // 55 LEBENSND, // 56 SCHEISTSND, // 57 NAZIFIRESND, // 58 BOSSFIRESND, // 59 SSFIRESND, // 60 SLURPIESND, // 61 TOT_HUNDSND, // 62 MEINGOTTSND, // 63 SCHABBSHASND, // 64 HITLERHASND, // 65 SPIONSND, // 66 NEINSOVASSND, // 67 DOGATTACKSND, // 68 FLAMETHROWERSND, // 69 MECHSTEPSND, // 70 GOOBSSND, // 71 YEAHSND, // 72 #ifndef APOGEE_1_0 DEATHSCREAM4SND, // 73 DEATHSCREAM5SND, // 74 DEATHSCREAM6SND, // 75 DEATHSCREAM7SND, // 76 DEATHSCREAM8SND, // 77 DEATHSCREAM9SND, // 78 DONNERSND, // 79 EINESND, // 80 ERLAUBENSND, // 81 KEINSND, // 82 MEINSND, // 83 ROSESND, // 84 MISSILEFIRESND, // 85 MISSILEHITSND, // 86 #endif LASTSOUND } soundnames; // // Base offsets // #define STARTPCSOUNDS 0 #define STARTADLIBSOUNDS LASTSOUND #define STARTDIGISOUNDS (2*LASTSOUND) #define STARTMUSIC (3*LASTSOUND) // // Music names & indexes // typedef enum { CORNER_MUS, // 0 DUNGEON_MUS, // 1 WARMARCH_MUS, // 2 GETTHEM_MUS, // 3 HEADACHE_MUS, // 4 HITLWLTZ_MUS, // 5 INTROCW3_MUS, // 6 NAZI_NOR_MUS, // 7 NAZI_OMI_MUS, // 8 POW_MUS, // 9 SALUTE_MUS, // 10 SEARCHN_MUS, // 11 SUSPENSE_MUS, // 12 VICTORS_MUS, // 13 WONDERIN_MUS, // 14 FUNKYOU_MUS, // 15 ENDLEVEL_MUS, // 16 GOINGAFT_MUS, // 17 PREGNANT_MUS, // 18 ULTIMATE_MUS, // 19 NAZI_RAP_MUS, // 20 ZEROHOUR_MUS, // 21 TWELFTH_MUS, // 22 ROSTER_MUS, // 23 URAHERO_MUS, // 24 VICMARCH_MUS, // 25 PACMAN_MUS, // 26 LASTMUSIC } musicnames; #define NUMSOUNDS LASTSOUND #define NUMSNDCHUNKS (STARTMUSIC + LASTMUSIC) ///////////////////////////////////////////////// // // Thanks for playing with MUSE! // ///////////////////////////////////////////////// wolf4sdl-1.7+svn262/sodpal.inc0000644000175000017500000001046310740260657015365 0ustar fabianfabianRGB( 0, 0, 0),RGB( 0, 0, 42),RGB( 0, 42, 0),RGB( 0, 42, 42),RGB( 42, 0, 0), RGB( 42, 0, 42),RGB( 42, 21, 0),RGB( 42, 42, 42),RGB( 21, 21, 21),RGB( 21, 21, 63), RGB( 21, 63, 21),RGB( 21, 63, 63),RGB( 63, 21, 21),RGB( 63, 21, 63),RGB( 63, 63, 21), RGB( 63, 63, 63),RGB( 59, 59, 59),RGB( 55, 55, 55),RGB( 52, 52, 52),RGB( 48, 48, 48), RGB( 45, 45, 45),RGB( 42, 42, 42),RGB( 38, 38, 38),RGB( 35, 35, 35),RGB( 31, 31, 31), RGB( 28, 28, 28),RGB( 25, 25, 25),RGB( 21, 21, 21),RGB( 18, 18, 18),RGB( 14, 14, 14), RGB( 11, 11, 11),RGB( 8, 8, 8),RGB( 63, 0, 0),RGB( 59, 0, 0),RGB( 56, 0, 0), RGB( 53, 0, 0),RGB( 50, 0, 0),RGB( 47, 0, 0),RGB( 44, 0, 0),RGB( 41, 0, 0), RGB( 38, 0, 0),RGB( 34, 0, 0),RGB( 31, 0, 0),RGB( 28, 0, 0),RGB( 25, 0, 0), RGB( 22, 0, 0),RGB( 19, 0, 0),RGB( 16, 0, 0),RGB( 63, 54, 54),RGB( 63, 46, 46), RGB( 63, 39, 39),RGB( 63, 31, 31),RGB( 63, 23, 23),RGB( 63, 16, 16),RGB( 63, 8, 8), RGB( 63, 0, 0),RGB( 63, 42, 23),RGB( 63, 38, 16),RGB( 63, 34, 8),RGB( 63, 30, 0), RGB( 57, 27, 0),RGB( 51, 24, 0),RGB( 45, 21, 0),RGB( 39, 19, 0),RGB( 63, 63, 54), RGB( 63, 63, 46),RGB( 63, 63, 39),RGB( 63, 63, 31),RGB( 63, 62, 23),RGB( 63, 61, 16), RGB( 63, 61, 8),RGB( 63, 61, 0),RGB( 57, 54, 0),RGB( 51, 49, 0),RGB( 45, 43, 0), RGB( 39, 39, 0),RGB( 33, 33, 0),RGB( 28, 27, 0),RGB( 22, 21, 0),RGB( 16, 16, 0), RGB( 52, 63, 23),RGB( 49, 63, 16),RGB( 45, 63, 8),RGB( 40, 63, 0),RGB( 36, 57, 0), RGB( 32, 51, 0),RGB( 29, 45, 0),RGB( 24, 39, 0),RGB( 54, 63, 54),RGB( 47, 63, 46), RGB( 39, 63, 39),RGB( 32, 63, 31),RGB( 24, 63, 23),RGB( 16, 63, 16),RGB( 8, 63, 8), RGB( 0, 63, 0),RGB( 0, 63, 0),RGB( 0, 59, 0),RGB( 0, 56, 0),RGB( 0, 53, 0), RGB( 1, 50, 0),RGB( 1, 47, 0),RGB( 1, 44, 0),RGB( 1, 41, 0),RGB( 1, 38, 0), RGB( 1, 34, 0),RGB( 1, 31, 0),RGB( 1, 28, 0),RGB( 1, 25, 0),RGB( 1, 22, 0), RGB( 1, 19, 0),RGB( 1, 16, 0),RGB( 54, 63, 63),RGB( 46, 63, 63),RGB( 39, 63, 63), RGB( 31, 63, 62),RGB( 23, 63, 63),RGB( 16, 63, 63),RGB( 8, 63, 63),RGB( 0, 63, 63), RGB( 0, 57, 57),RGB( 0, 51, 51),RGB( 0, 45, 45),RGB( 0, 39, 39),RGB( 0, 33, 33), RGB( 0, 28, 28),RGB( 0, 22, 22),RGB( 0, 16, 16),RGB( 23, 47, 63),RGB( 16, 44, 63), RGB( 8, 42, 63),RGB( 0, 39, 63),RGB( 0, 35, 57),RGB( 0, 31, 51),RGB( 0, 27, 45), RGB( 0, 23, 39),RGB( 54, 54, 63),RGB( 46, 47, 63),RGB( 39, 39, 63),RGB( 31, 32, 63), RGB( 23, 24, 63),RGB( 16, 16, 63),RGB( 8, 9, 63),RGB( 0, 1, 63),RGB( 0, 0, 63), RGB( 0, 0, 59),RGB( 0, 0, 56),RGB( 0, 0, 53),RGB( 0, 0, 50),RGB( 0, 0, 47), RGB( 0, 0, 44),RGB( 0, 0, 41),RGB( 0, 0, 38),RGB( 0, 0, 34),RGB( 0, 0, 31), RGB( 0, 0, 28),RGB( 0, 0, 25),RGB( 0, 0, 22),RGB( 0, 0, 19),RGB( 0, 0, 16), RGB( 10, 10, 10),RGB( 63, 56, 13),RGB( 63, 53, 9),RGB( 63, 51, 6),RGB( 63, 48, 2), RGB( 63, 45, 0),RGB( 0, 14, 0),RGB( 0, 10, 0),RGB( 38, 0, 57),RGB( 32, 0, 51), RGB( 29, 0, 45),RGB( 24, 0, 39),RGB( 20, 0, 33),RGB( 17, 0, 28),RGB( 13, 0, 22), RGB( 10, 0, 16),RGB( 63, 54, 63),RGB( 63, 46, 63),RGB( 63, 39, 63),RGB( 63, 31, 63), RGB( 63, 23, 63),RGB( 63, 16, 63),RGB( 63, 8, 63),RGB( 63, 0, 63),RGB( 56, 0, 57), RGB( 50, 0, 51),RGB( 45, 0, 45),RGB( 39, 0, 39),RGB( 33, 0, 33),RGB( 27, 0, 28), RGB( 22, 0, 22),RGB( 16, 0, 16),RGB( 63, 58, 55),RGB( 63, 56, 52),RGB( 63, 54, 49), RGB( 63, 53, 47),RGB( 63, 51, 44),RGB( 63, 49, 41),RGB( 63, 47, 39),RGB( 63, 46, 36), RGB( 63, 44, 32),RGB( 63, 41, 28),RGB( 63, 39, 24),RGB( 60, 37, 23),RGB( 58, 35, 22), RGB( 55, 34, 21),RGB( 52, 32, 20),RGB( 50, 31, 19),RGB( 47, 30, 18),RGB( 45, 28, 17), RGB( 42, 26, 16),RGB( 40, 25, 15),RGB( 39, 24, 14),RGB( 36, 23, 13),RGB( 34, 22, 12), RGB( 32, 20, 11),RGB( 29, 19, 10),RGB( 27, 18, 9),RGB( 23, 16, 8),RGB( 21, 15, 7), RGB( 18, 14, 6),RGB( 16, 12, 6),RGB( 14, 11, 5),RGB( 10, 8, 3),RGB( 24, 0, 25), RGB( 0, 25, 25),RGB( 0, 24, 24),RGB( 0, 0, 7),RGB( 0, 0, 11),RGB( 12, 9, 4), RGB( 18, 0, 18),RGB( 20, 0, 20),RGB( 0, 0, 13),RGB( 7, 7, 7),RGB( 19, 19, 19), RGB( 23, 23, 23),RGB( 16, 16, 16),RGB( 12, 12, 12),RGB( 13, 13, 13),RGB( 54, 61, 61), RGB( 46, 58, 58),RGB( 39, 55, 55),RGB( 29, 50, 50),RGB( 18, 48, 48),RGB( 8, 45, 45), RGB( 8, 44, 44),RGB( 0, 41, 41),RGB( 0, 38, 38),RGB( 0, 35, 35),RGB( 0, 33, 33), RGB( 0, 31, 31),RGB( 0, 30, 30),RGB( 0, 29, 29),RGB( 0, 28, 28),RGB( 0, 27, 27), RGB( 38, 0, 34) wolf4sdl-1.7+svn262/Wolf4SDL.VC9.sln0000644000175000017500000000154111011347655016055 0ustar fabianfabian Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Wolf4SDL", "Wolf4SDL.VC9.vcproj", "{411B026A-F58B-4E25-840B-4FE67710F762}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {411B026A-F58B-4E25-840B-4FE67710F762}.Debug|Win32.ActiveCfg = Debug|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Debug|Win32.Build.0 = Debug|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Release|Win32.ActiveCfg = Release|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal wolf4sdl-1.7+svn262/id_vh.cpp0000644000175000017500000002523311644157635015213 0ustar fabianfabian#include "wl_def.h" pictabletype *pictable; SDL_Surface *latchpics[NUMLATCHPICS]; int px,py; byte fontcolor,backcolor; int fontnumber; //========================================================================== void VWB_DrawPropString(const char* string) { fontstruct *font; int width, step, height; byte *source, *dest; byte ch; int i; unsigned sx, sy; byte *vbuf = VL_LockSurface(curSurface); if(vbuf == NULL) return; font = (fontstruct *) grsegs[STARTFONT+fontnumber]; height = font->height; dest = vbuf + scaleFactor * (py * curPitch + px); while ((ch = (byte)*string++)!=0) { width = step = font->width[ch]; source = ((byte *)font)+font->location[ch]; while (width--) { for(i=0; iheight; for (*width = 0;*string;string++) *width += font->width[*((byte *)string)]; // proportional width } void VW_MeasurePropString (const char *string, word *width, word *height) { VWL_MeasureString(string,width,height,(fontstruct *)grsegs[STARTFONT+fontnumber]); } /* ============================================================================= Double buffer management routines ============================================================================= */ void VH_UpdateScreen() { SDL_BlitSurface(screenBuffer, NULL, screen, NULL); SDL_Flip(screen); } void VWB_DrawTile8 (int x, int y, int tile) { LatchDrawChar(x,y,tile); } void VWB_DrawTile8M (int x, int y, int tile) { VL_MemToScreen (((byte *)grsegs[STARTTILE8M])+tile*64,8,8,x,y); } void VWB_DrawPic (int x, int y, int chunknum) { int picnum = chunknum - STARTPICS; unsigned width,height; x &= ~7; width = pictable[picnum].width; height = pictable[picnum].height; VL_MemToScreen (grsegs[chunknum],width,height,x,y); } void VWB_DrawPicScaledCoord (int scx, int scy, int chunknum) { int picnum = chunknum - STARTPICS; unsigned width,height; width = pictable[picnum].width; height = pictable[picnum].height; VL_MemToScreenScaledCoord (grsegs[chunknum],width,height,scx,scy); } void VWB_Bar (int x, int y, int width, int height, int color) { VW_Bar (x,y,width,height,color); } void VWB_Plot (int x, int y, int color) { if(scaleFactor == 1) VW_Plot(x,y,color); else VW_Bar(x, y, 1, 1, color); } void VWB_Hlin (int x1, int x2, int y, int color) { if(scaleFactor == 1) VW_Hlin(x1,x2,y,color); else VW_Bar(x1, y, x2-x1+1, 1, color); } void VWB_Vlin (int y1, int y2, int x, int color) { if(scaleFactor == 1) VW_Vlin(y1,y2,x,color); else VW_Bar(x, y1, 1, y2-y1+1, color); } /* ============================================================================= WOLFENSTEIN STUFF ============================================================================= */ /* ===================== = = LatchDrawPic = ===================== */ void LatchDrawPic (unsigned x, unsigned y, unsigned picnum) { VL_LatchToScreen (latchpics[2+picnum-LATCHPICS_LUMP_START], x*8, y); } void LatchDrawPicScaledCoord (unsigned scx, unsigned scy, unsigned picnum) { VL_LatchToScreenScaledCoord (latchpics[2+picnum-LATCHPICS_LUMP_START], scx*8, scy); } //========================================================================== void FreeLatchMem() { int i; for(i = 0; i < 2 + LATCHPICS_LUMP_END - LATCHPICS_LUMP_START; i++) { SDL_FreeSurface(latchpics[i]); latchpics[i] = NULL; } } /* =================== = = LoadLatchMem = =================== */ void LoadLatchMem (void) { int i,width,height,start,end; byte *src; SDL_Surface *surf; // // tile 8s // surf = SDL_CreateRGBSurface(SDL_HWSURFACE, 8*8, ((NUMTILE8 + 7) / 8) * 8, 8, 0, 0, 0, 0); if(surf == NULL) { Quit("Unable to create surface for tiles!"); } SDL_SetColors(surf, gamepal, 0, 256); latchpics[0] = surf; CA_CacheGrChunk (STARTTILE8); src = grsegs[STARTTILE8]; for (i=0;i> 3) * 8); src += 64; } UNCACHEGRCHUNK (STARTTILE8); latchpics[1] = NULL; // not used // // pics // start = LATCHPICS_LUMP_START; end = LATCHPICS_LUMP_END; for (i=start;i<=end;i++) { width = pictable[i-STARTPICS].width; height = pictable[i-STARTPICS].height; surf = SDL_CreateRGBSurface(SDL_HWSURFACE, width, height, 8, 0, 0, 0, 0); if(surf == NULL) { Quit("Unable to create surface for picture!"); } SDL_SetColors(surf, gamepal, 0, 256); latchpics[2+i-start] = surf; CA_CacheGrChunk (i); VL_MemToLatch (grsegs[i], width, height, surf, 0, 0); UNCACHEGRCHUNK(i); } } //========================================================================== /* =================== = = FizzleFade = = returns true if aborted = = It uses maximum-length Linear Feedback Shift Registers (LFSR) counters. = You can find a list of them with lengths from 3 to 168 at: = http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf = Many thanks to Xilinx for this list!!! = =================== */ // XOR masks for the pseudo-random number sequence starting with n=17 bits static const uint32_t rndmasks[] = { // n XNOR from (starting at 1, not 0 as usual) 0x00012000, // 17 17,14 0x00020400, // 18 18,11 0x00040023, // 19 19,6,2,1 0x00090000, // 20 20,17 0x00140000, // 21 21,19 0x00300000, // 22 22,21 0x00420000, // 23 23,18 0x00e10000, // 24 24,23,22,17 0x01200000, // 25 25,22 (this is enough for 8191x4095) }; static unsigned int rndbits_y; static unsigned int rndmask; extern SDL_Color curpal[256]; // Returns the number of bits needed to represent the given value static int log2_ceil(uint32_t x) { int n = 0; uint32_t v = 1; while(v < x) { n++; v <<= 1; } return n; } void VH_Startup() { int rndbits_x = log2_ceil(screenWidth); rndbits_y = log2_ceil(screenHeight); int rndbits = rndbits_x + rndbits_y; if(rndbits < 17) rndbits = 17; // no problem, just a bit slower else if(rndbits > 25) rndbits = 25; // fizzle fade will not fill whole screen rndmask = rndmasks[rndbits - 17]; } boolean FizzleFade (SDL_Surface *source, int x1, int y1, unsigned width, unsigned height, unsigned frames, boolean abortable) { unsigned x, y, frame, pixperframe; int32_t rndval, lastrndval; int first = 1; lastrndval = 0; pixperframe = width * height / frames; IN_StartAck (); frame = GetTimeCount(); byte *srcptr = VL_LockSurface(source); if(srcptr == NULL) return false; do { IN_ProcessEvents(); if(abortable && IN_CheckAck ()) { VL_UnlockSurface(source); SDL_BlitSurface(source, NULL, screen, NULL); SDL_Flip(screen); return true; } byte *destptr = VL_LockSurface(screen); if(destptr != NULL) { rndval = lastrndval; // When using double buffering, we have to copy the pixels of the last AND the current frame. // Only for the first frame, there is no "last frame" for(int i = first; i < 2; i++) { for(unsigned p = 0; p < pixperframe; p++) { // // seperate random value into x/y pair // x = rndval >> rndbits_y; y = rndval & ((1 << rndbits_y) - 1); // // advance to next random element // rndval = (rndval >> 1) ^ (rndval & 1 ? 0 : rndmask); if(x >= width || y >= height) { if(rndval == 0) // entire sequence has been completed goto finished; p--; continue; } // // copy one pixel // if(screenBits == 8) { *(destptr + (y1 + y) * screen->pitch + x1 + x) = *(srcptr + (y1 + y) * source->pitch + x1 + x); } else { byte col = *(srcptr + (y1 + y) * source->pitch + x1 + x); uint32_t fullcol = SDL_MapRGB(screen->format, curpal[col].r, curpal[col].g, curpal[col].b); memcpy(destptr + (y1 + y) * screen->pitch + (x1 + x) * screen->format->BytesPerPixel, &fullcol, screen->format->BytesPerPixel); } if(rndval == 0) // entire sequence has been completed goto finished; } if(!i || first) lastrndval = rndval; } // If there is no double buffering, we always use the "first frame" case if(usedoublebuffering) first = 0; VL_UnlockSurface(screen); SDL_Flip(screen); } else { // No surface, so only enhance rndval for(int i = first; i < 2; i++) { for(unsigned p = 0; p < pixperframe; p++) { rndval = (rndval >> 1) ^ (rndval & 1 ? 0 : rndmask); if(rndval == 0) goto finished; } } } frame++; Delay(frame - GetTimeCount()); // don't go too fast } while (1); finished: VL_UnlockSurface(source); VL_UnlockSurface(screen); SDL_BlitSurface(source, NULL, screen, NULL); SDL_Flip(screen); return false; } wolf4sdl-1.7+svn262/Wolf4SDL-DC.cbp0000644000175000017500000000523411644157635015725 0ustar fabianfabian wolf4sdl-1.7+svn262/wl_dir3dspr.cpp0000644000175000017500000001475411034161254016345 0ustar fabianfabian#include "version.h" #ifdef USE_DIR3DSPR #include "wl_def.h" #include "wl_shade.h" // Define directional 3d sprites in wl_act1.cpp (there are two examples) // Make sure you have according entries in ScanInfoPlane in wl_game.cpp. void Scale3DShaper(int x1, int x2, int shapenum, uint32_t flags, fixed ny1, fixed ny2, fixed nx1, fixed nx2, byte *vbuf, unsigned vbufPitch) { t_compshape *shape; unsigned scale1,starty,endy; word *cmdptr; byte *line; byte *vmem; int dx,len,i,newstart,ycnt,pixheight,screndy,upperedge,scrstarty; unsigned j; fixed height,dheight,height1,height2; int xpos[TEXTURESIZE+1]; int slinex; fixed dxx=(ny2-ny1)<<8,dzz=(nx2-nx1)<<8; fixed dxa=0,dza=0; byte col; shape = (t_compshape *) PM_GetSprite(shapenum); len=shape->rightpix-shape->leftpix+1; if(!len) return; ny1+=dxx>>9; nx1+=dzz>>9; dxa=-(dxx>>1),dza=-(dzz>>1); dxx>>=TEXTURESHIFT,dzz>>=TEXTURESHIFT; dxa+=shape->leftpix*dxx,dza+=shape->leftpix*dzz; xpos[0]=(int)((ny1+(dxa>>8))*scale/(nx1+(dza>>8))+centerx); height1 = heightnumerator/((nx1+(dza>>8))>>8); height=(((fixed)height1)<<12)+2048; for(i=1;i<=len;i++) { dxa+=dxx,dza+=dzz; xpos[i]=(int)((ny1+(dxa>>8))*scale/(nx1+(dza>>8))+centerx); if(xpos[i-1]>viewwidth) break; } len=i-1; dx = xpos[len] - xpos[0]; if(!dx) return; height2 = heightnumerator/((nx1+(dza>>8))>>8); dheight=(((fixed)height2-(fixed)height1)<<12)/(fixed)dx; cmdptr = (word *) shape->dataofs; i=0; if(x2>viewwidth) x2=viewwidth; for(i=0;i>15); if(wallheight[slinex]<(height>>12) && scale1 /*&& scale1<=maxscale*/) { #ifdef USE_SHADING byte *curshades; if(flags & FL_FULLBRIGHT) curshades = shadetable[0]; else curshades = shadetable[GetShade(scale1<<3)]; #endif pixheight=scale1*SPRITESCALEFACTOR; upperedge=viewheight/2-scale1; line=(byte *)shape + cmdptr[i]; while((endy = READWORD(line)) != 0) { endy >>= 1; newstart = READWORD(line); starty = READWORD(line) >> 1; j=starty; ycnt=j*pixheight; screndy=(ycnt>>6)+upperedge; if(screndy<0) vmem=vbuf+slinex; else vmem=vbuf+screndy*vbufPitch+slinex; for(;j>6)+upperedge; if(scrstarty!=screndy && screndy>0) { #ifdef USE_SHADING col=curshades[((byte *)shape)[newstart+j]]; #else col=((byte *)shape)[newstart+j]; #endif if(scrstarty<0) scrstarty=0; if(screndy>viewheight) screndy=viewheight,j=endy; while(scrstartyflags & FL_DIR_POS_MASK) { case FL_DIR_POS_FW: diradd=0x7ff0+0x8000; break; case FL_DIR_POS_BW: diradd=-0x7ff0+0x8000; break; case FL_DIR_POS_MID: diradd=0x8000; break; default: Quit("Unknown directional 3d sprite position (shapenum = %i)", ob->shapenum); } if(ob->flags & FL_DIR_VERT_FLAG) // vertical dir 3d sprite { fixed gy1,gy2,gx,gyt1,gyt2,gxt; // // translate point to view centered coordinates // gy1 = (((long)ob->tiley) << TILESHIFT)+0x8000-playy-0x8000L-SIZEADD; gy2 = gy1+0x10000L+2*SIZEADD; gx = (((long)ob->tilex) << TILESHIFT)+diradd-playx; // // calculate newx // gxt = FixedMul(gx,viewcos); gyt1 = FixedMul(gy1,viewsin); gyt2 = FixedMul(gy2,viewsin); nx1 = gxt-gyt1; nx2 = gxt-gyt2; // // calculate newy // gxt = FixedMul(gx,viewsin); gyt1 = FixedMul(gy1,viewcos); gyt2 = FixedMul(gy2,viewcos); ny1 = gyt1+gxt; ny2 = gyt2+gxt; } else // horizontal dir 3d sprite { fixed gx1,gx2,gy,gxt1,gxt2,gyt; // // translate point to view centered coordinates // gx1 = (((long)ob->tilex) << TILESHIFT)+0x8000-playx-0x8000L-SIZEADD; gx2 = gx1+0x10000L+2*SIZEADD; gy = (((long)ob->tiley) << TILESHIFT)+diradd-playy; // // calculate newx // gxt1 = FixedMul(gx1,viewcos); gxt2 = FixedMul(gx2,viewcos); gyt = FixedMul(gy,viewsin); nx1 = gxt1-gyt; nx2 = gxt2-gyt; // // calculate newy // gxt1 = FixedMul(gx1,viewsin); gxt2 = FixedMul(gx2,viewsin); gyt = FixedMul(gy,viewcos); ny1 = gyt+gxt1; ny2 = gyt+gxt2; } if(nx1 < 0 || nx2 < 0) return; // TODO: Clip on viewplane // // calculate perspective ratio // if(nx1>=0 && nx1<=1792) nx1=1792; if(nx1<0 && nx1>=-1792) nx1=-1792; if(nx2>=0 && nx2<=1792) nx2=1792; if(nx2<0 && nx2>=-1792) nx2=-1792; viewx1=(int)(centerx+ny1*scale/nx1); viewx2=(int)(centerx+ny2*scale/nx2); if(viewx2 < viewx1) { Scale3DShaper(viewx2,viewx1,ob->shapenum,ob->flags,ny2,ny1,nx2,nx1,vbuf,vbufPitch); } else { Scale3DShaper(viewx1,viewx2,ob->shapenum,ob->flags,ny1,ny2,nx1,nx2,vbuf,vbufPitch); } } #endif wolf4sdl-1.7+svn262/macosx/0000755000175000017500000000000011644522704014674 5ustar fabianfabianwolf4sdl-1.7+svn262/macosx/English.lproj/0000755000175000017500000000000011644522704017412 5ustar fabianfabianwolf4sdl-1.7+svn262/macosx/English.lproj/InfoPlist.strings0000644000175000017500000000054211564033631022732 0ustar fabianfabianÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Wolf4SDL"; CFBundleShortVersionString = "Wolf4SDL 1.7"; CFBundleGetInfoString = ""; NSHumanReadableCopyright = ""; wolf4sdl-1.7+svn262/macosx/Info.plist0000644000175000017500000000205211564033631016640 0ustar fabianfabian CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile wolf4sdl.icns CFBundleIdentifier com.chrisballinger.wolf4sdl CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleSignature ???? CFBundleURLTypes CFBundleVersion 1.7 NSMainNibFile SDLMain NSPrincipalClass NSApplication NSServices UTExportedTypeDeclarations UTImportedTypeDeclarations wolf4sdl-1.7+svn262/macosx/Wolf4SDL.xcodeproj/0000755000175000017500000000000011644522704020226 5ustar fabianfabianwolf4sdl-1.7+svn262/macosx/Wolf4SDL.xcodeproj/project.pbxproj0000644000175000017500000007437611644157635023332 0ustar fabianfabian// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXBuildFile section */ 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; D901F4C20FC0DB520040C290 /* SDL_mixer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D901F4C10FC0DB520040C290 /* SDL_mixer.framework */; }; D901F4FD0FC0DBCB0040C290 /* fmopl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4CB0FC0DBCB0040C290 /* fmopl.cpp */; }; D901F4FE0FC0DBCB0040C290 /* id_pm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4CC0FC0DBCB0040C290 /* id_pm.cpp */; }; D901F5000FC0DBCB0040C290 /* wl_inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4CF0FC0DBCB0040C290 /* wl_inter.cpp */; }; D901F5010FC0DBCB0040C290 /* wl_game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4D00FC0DBCB0040C290 /* wl_game.cpp */; }; D901F5020FC0DBCB0040C290 /* wl_floorceiling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4D10FC0DBCB0040C290 /* wl_floorceiling.cpp */; }; D901F5030FC0DBCB0040C290 /* wl_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4D50FC0DBCB0040C290 /* wl_draw.cpp */; }; D901F5040FC0DBCB0040C290 /* wl_dir3dspr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4D60FC0DBCB0040C290 /* wl_dir3dspr.cpp */; }; D901F5050FC0DBCB0040C290 /* wl_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4D80FC0DBCB0040C290 /* wl_debug.cpp */; }; D901F5060FC0DBCB0040C290 /* wl_cloudsky.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4DA0FC0DBCB0040C290 /* wl_cloudsky.cpp */; }; D901F5070FC0DBCB0040C290 /* wl_atmos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4DC0FC0DBCB0040C290 /* wl_atmos.cpp */; }; D901F5080FC0DBCB0040C290 /* wl_agent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4DD0FC0DBCB0040C290 /* wl_agent.cpp */; }; D901F5090FC0DBCB0040C290 /* wl_act2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4DE0FC0DBCB0040C290 /* wl_act2.cpp */; }; D901F50A0FC0DBCB0040C290 /* wl_act1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4DF0FC0DBCB0040C290 /* wl_act1.cpp */; }; D901F50B0FC0DBCB0040C290 /* signon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4E10FC0DBCB0040C290 /* signon.cpp */; }; D901F50C0FC0DBCB0040C290 /* sdl_winmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4E20FC0DBCB0040C290 /* sdl_winmain.cpp */; }; D901F50D0FC0DBCB0040C290 /* id_us_1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4E50FC0DBCB0040C290 /* id_us_1.cpp */; }; D901F50E0FC0DBCB0040C290 /* wl_text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4E70FC0DBCB0040C290 /* wl_text.cpp */; }; D901F50F0FC0DBCB0040C290 /* id_sd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4E90FC0DBCB0040C290 /* id_sd.cpp */; }; D901F5100FC0DBCB0040C290 /* wl_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4EB0FC0DBCB0040C290 /* wl_state.cpp */; }; D901F5110FC0DBCB0040C290 /* wl_shade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4ED0FC0DBCB0040C290 /* wl_shade.cpp */; }; D901F5120FC0DBCB0040C290 /* wl_play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4EE0FC0DBCB0040C290 /* wl_play.cpp */; }; D901F5130FC0DBCB0040C290 /* wl_parallax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4EF0FC0DBCB0040C290 /* wl_parallax.cpp */; }; D901F5140FC0DBCB0040C290 /* wl_menu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4F10FC0DBCB0040C290 /* wl_menu.cpp */; }; D901F5150FC0DBCB0040C290 /* wl_main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4F20FC0DBCB0040C290 /* wl_main.cpp */; }; D901F5160FC0DBCB0040C290 /* id_in.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4F30FC0DBCB0040C290 /* id_in.cpp */; }; D901F5170FC0DBCB0040C290 /* id_vl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4F70FC0DBCB0040C290 /* id_vl.cpp */; }; D901F51A0FC0DBCB0040C290 /* id_vh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4FB0FC0DBCB0040C290 /* id_vh.cpp */; }; D901F51B0FC0DBCB0040C290 /* id_ca.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D901F4FC0FC0DBCB0040C290 /* id_ca.cpp */; }; D901F51F0FC0DBFC0040C290 /* SDL_mixer.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = D901F4C10FC0DB520040C290 /* SDL_mixer.framework */; }; D94B84D50FC0F2F800EADB6F /* wolf4sdl.icns in Resources */ = {isa = PBXBuildFile; fileRef = D94B84D40FC0F2F800EADB6F /* wolf4sdl.icns */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ 002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( D901F51F0FC0DBFC0040C290 /* SDL_mixer.framework in Copy Frameworks into .app bundle */, 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = ""; }; 002F3A2B09D0888800EBEB88 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = SOURCE_ROOT; }; 002F3A2C09D0888800EBEB88 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = SOURCE_ROOT; }; 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* Wolf4SDL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Wolf4SDL.app; sourceTree = BUILT_PRODUCTS_DIR; }; D901F4C10FC0DB520040C290 /* SDL_mixer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_mixer.framework; path = /Library/Frameworks/SDL_mixer.framework; sourceTree = ""; }; D901F4C70FC0DBCB0040C290 /* id_in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_in.h; path = ../id_in.h; sourceTree = SOURCE_ROOT; }; D901F4C80FC0DBCB0040C290 /* f_spear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = f_spear.h; path = ../f_spear.h; sourceTree = SOURCE_ROOT; }; D901F4C90FC0DBCB0040C290 /* fmopl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fmopl.h; path = ../mame/fmopl.h; sourceTree = SOURCE_ROOT; }; D901F4CA0FC0DBCB0040C290 /* audiosod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = audiosod.h; path = ../audiosod.h; sourceTree = SOURCE_ROOT; }; D901F4CB0FC0DBCB0040C290 /* fmopl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fmopl.cpp; path = ../mame/fmopl.cpp; sourceTree = SOURCE_ROOT; }; D901F4CC0FC0DBCB0040C290 /* id_pm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_pm.cpp; path = ../id_pm.cpp; sourceTree = SOURCE_ROOT; }; D901F4CE0FC0DBCB0040C290 /* gfxv_sod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gfxv_sod.h; path = ../gfxv_sod.h; sourceTree = SOURCE_ROOT; }; D901F4CF0FC0DBCB0040C290 /* wl_inter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_inter.cpp; path = ../wl_inter.cpp; sourceTree = SOURCE_ROOT; }; D901F4D00FC0DBCB0040C290 /* wl_game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_game.cpp; path = ../wl_game.cpp; sourceTree = SOURCE_ROOT; }; D901F4D10FC0DBCB0040C290 /* wl_floorceiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_floorceiling.cpp; path = ../wl_floorceiling.cpp; sourceTree = SOURCE_ROOT; }; D901F4D20FC0DBCB0040C290 /* gfxv_wl6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gfxv_wl6.h; path = ../gfxv_wl6.h; sourceTree = SOURCE_ROOT; }; D901F4D30FC0DBCB0040C290 /* gfxv_apo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gfxv_apo.h; path = ../gfxv_apo.h; sourceTree = SOURCE_ROOT; }; D901F4D50FC0DBCB0040C290 /* wl_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_draw.cpp; path = ../wl_draw.cpp; sourceTree = SOURCE_ROOT; }; D901F4D60FC0DBCB0040C290 /* wl_dir3dspr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_dir3dspr.cpp; path = ../wl_dir3dspr.cpp; sourceTree = SOURCE_ROOT; }; D901F4D70FC0DBCB0040C290 /* wl_def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wl_def.h; path = ../wl_def.h; sourceTree = SOURCE_ROOT; }; D901F4D80FC0DBCB0040C290 /* wl_debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_debug.cpp; path = ../wl_debug.cpp; sourceTree = SOURCE_ROOT; }; D901F4D90FC0DBCB0040C290 /* wl_cloudsky.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wl_cloudsky.h; path = ../wl_cloudsky.h; sourceTree = SOURCE_ROOT; }; D901F4DA0FC0DBCB0040C290 /* wl_cloudsky.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_cloudsky.cpp; path = ../wl_cloudsky.cpp; sourceTree = SOURCE_ROOT; }; D901F4DB0FC0DBCB0040C290 /* wl_atmos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wl_atmos.h; path = ../wl_atmos.h; sourceTree = SOURCE_ROOT; }; D901F4DC0FC0DBCB0040C290 /* wl_atmos.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_atmos.cpp; path = ../wl_atmos.cpp; sourceTree = SOURCE_ROOT; }; D901F4DD0FC0DBCB0040C290 /* wl_agent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_agent.cpp; path = ../wl_agent.cpp; sourceTree = SOURCE_ROOT; }; D901F4DE0FC0DBCB0040C290 /* wl_act2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_act2.cpp; path = ../wl_act2.cpp; sourceTree = SOURCE_ROOT; }; D901F4DF0FC0DBCB0040C290 /* wl_act1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_act1.cpp; path = ../wl_act1.cpp; sourceTree = SOURCE_ROOT; }; D901F4E00FC0DBCB0040C290 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../version.h; sourceTree = SOURCE_ROOT; }; D901F4E10FC0DBCB0040C290 /* signon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = signon.cpp; path = ../signon.cpp; sourceTree = SOURCE_ROOT; }; D901F4E20FC0DBCB0040C290 /* sdl_winmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sdl_winmain.cpp; path = ../sdl_winmain.cpp; sourceTree = SOURCE_ROOT; }; D901F4E30FC0DBCB0040C290 /* audiowl6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = audiowl6.h; path = ../audiowl6.h; sourceTree = SOURCE_ROOT; }; D901F4E40FC0DBCB0040C290 /* id_ca.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_ca.h; path = ../id_ca.h; sourceTree = SOURCE_ROOT; }; D901F4E50FC0DBCB0040C290 /* id_us_1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_us_1.cpp; path = ../id_us_1.cpp; sourceTree = SOURCE_ROOT; }; D901F4E60FC0DBCB0040C290 /* id_us.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_us.h; path = ../id_us.h; sourceTree = SOURCE_ROOT; }; D901F4E70FC0DBCB0040C290 /* wl_text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_text.cpp; path = ../wl_text.cpp; sourceTree = SOURCE_ROOT; }; D901F4E80FC0DBCB0040C290 /* id_sd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_sd.h; path = ../id_sd.h; sourceTree = SOURCE_ROOT; }; D901F4E90FC0DBCB0040C290 /* id_sd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_sd.cpp; path = ../id_sd.cpp; sourceTree = SOURCE_ROOT; }; D901F4EA0FC0DBCB0040C290 /* gp2x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gp2x.h; path = ../gp2x.h; sourceTree = SOURCE_ROOT; }; D901F4EB0FC0DBCB0040C290 /* wl_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_state.cpp; path = ../wl_state.cpp; sourceTree = SOURCE_ROOT; }; D901F4EC0FC0DBCB0040C290 /* wl_shade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wl_shade.h; path = ../wl_shade.h; sourceTree = SOURCE_ROOT; }; D901F4ED0FC0DBCB0040C290 /* wl_shade.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_shade.cpp; path = ../wl_shade.cpp; sourceTree = SOURCE_ROOT; }; D901F4EE0FC0DBCB0040C290 /* wl_play.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_play.cpp; path = ../wl_play.cpp; sourceTree = SOURCE_ROOT; }; D901F4EF0FC0DBCB0040C290 /* wl_parallax.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_parallax.cpp; path = ../wl_parallax.cpp; sourceTree = SOURCE_ROOT; }; D901F4F00FC0DBCB0040C290 /* wl_menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wl_menu.h; path = ../wl_menu.h; sourceTree = SOURCE_ROOT; }; D901F4F10FC0DBCB0040C290 /* wl_menu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_menu.cpp; path = ../wl_menu.cpp; sourceTree = SOURCE_ROOT; }; D901F4F20FC0DBCB0040C290 /* wl_main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wl_main.cpp; path = ../wl_main.cpp; sourceTree = SOURCE_ROOT; }; D901F4F30FC0DBCB0040C290 /* id_in.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_in.cpp; path = ../id_in.cpp; sourceTree = SOURCE_ROOT; }; D901F4F40FC0DBCB0040C290 /* foreign.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = foreign.h; path = ../foreign.h; sourceTree = SOURCE_ROOT; }; D901F4F50FC0DBCB0040C290 /* id_pm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_pm.h; path = ../id_pm.h; sourceTree = SOURCE_ROOT; }; D901F4F60FC0DBCB0040C290 /* id_vl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_vl.h; path = ../id_vl.h; sourceTree = SOURCE_ROOT; }; D901F4F70FC0DBCB0040C290 /* id_vl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_vl.cpp; path = ../id_vl.cpp; sourceTree = SOURCE_ROOT; }; D901F4FA0FC0DBCB0040C290 /* id_vh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id_vh.h; path = ../id_vh.h; sourceTree = SOURCE_ROOT; }; D901F4FB0FC0DBCB0040C290 /* id_vh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_vh.cpp; path = ../id_vh.cpp; sourceTree = SOURCE_ROOT; }; D901F4FC0FC0DBCB0040C290 /* id_ca.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = id_ca.cpp; path = ../id_ca.cpp; sourceTree = SOURCE_ROOT; }; D94B84D40FC0F2F800EADB6F /* wolf4sdl.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = wolf4sdl.icns; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */, 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, D901F4C20FC0DB520040C290 /* SDL_mixer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( 002F3A2B09D0888800EBEB88 /* SDLMain.h */, 002F3A2C09D0888800EBEB88 /* SDLMain.m */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 002F39F909D0881F00EBEB88 /* SDL.framework */, D901F4C10FC0DB520040C290 /* SDL_mixer.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* Wolf4SDL.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* Untitled */ = { isa = PBXGroup; children = ( 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = Untitled; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( D901F4C70FC0DBCB0040C290 /* id_in.h */, D901F4C80FC0DBCB0040C290 /* f_spear.h */, D901F4C90FC0DBCB0040C290 /* fmopl.h */, D901F4CA0FC0DBCB0040C290 /* audiosod.h */, D901F4CB0FC0DBCB0040C290 /* fmopl.cpp */, D901F4CC0FC0DBCB0040C290 /* id_pm.cpp */, D901F4CE0FC0DBCB0040C290 /* gfxv_sod.h */, D901F4CF0FC0DBCB0040C290 /* wl_inter.cpp */, D901F4D00FC0DBCB0040C290 /* wl_game.cpp */, D901F4D10FC0DBCB0040C290 /* wl_floorceiling.cpp */, D901F4D20FC0DBCB0040C290 /* gfxv_wl6.h */, D901F4D30FC0DBCB0040C290 /* gfxv_apo.h */, D901F4D50FC0DBCB0040C290 /* wl_draw.cpp */, D901F4D60FC0DBCB0040C290 /* wl_dir3dspr.cpp */, D901F4D70FC0DBCB0040C290 /* wl_def.h */, D901F4D80FC0DBCB0040C290 /* wl_debug.cpp */, D901F4D90FC0DBCB0040C290 /* wl_cloudsky.h */, D901F4DA0FC0DBCB0040C290 /* wl_cloudsky.cpp */, D901F4DB0FC0DBCB0040C290 /* wl_atmos.h */, D901F4DC0FC0DBCB0040C290 /* wl_atmos.cpp */, D901F4DD0FC0DBCB0040C290 /* wl_agent.cpp */, D901F4DE0FC0DBCB0040C290 /* wl_act2.cpp */, D901F4DF0FC0DBCB0040C290 /* wl_act1.cpp */, D901F4E00FC0DBCB0040C290 /* version.h */, D901F4E10FC0DBCB0040C290 /* signon.cpp */, D901F4E20FC0DBCB0040C290 /* sdl_winmain.cpp */, D901F4E30FC0DBCB0040C290 /* audiowl6.h */, D901F4E40FC0DBCB0040C290 /* id_ca.h */, D901F4E50FC0DBCB0040C290 /* id_us_1.cpp */, D901F4E60FC0DBCB0040C290 /* id_us.h */, D901F4E70FC0DBCB0040C290 /* wl_text.cpp */, D901F4E80FC0DBCB0040C290 /* id_sd.h */, D901F4E90FC0DBCB0040C290 /* id_sd.cpp */, D901F4EA0FC0DBCB0040C290 /* gp2x.h */, D901F4EB0FC0DBCB0040C290 /* wl_state.cpp */, D901F4EC0FC0DBCB0040C290 /* wl_shade.h */, D901F4ED0FC0DBCB0040C290 /* wl_shade.cpp */, D901F4EE0FC0DBCB0040C290 /* wl_play.cpp */, D901F4EF0FC0DBCB0040C290 /* wl_parallax.cpp */, D901F4F00FC0DBCB0040C290 /* wl_menu.h */, D901F4F10FC0DBCB0040C290 /* wl_menu.cpp */, D901F4F20FC0DBCB0040C290 /* wl_main.cpp */, D901F4F30FC0DBCB0040C290 /* id_in.cpp */, D901F4F40FC0DBCB0040C290 /* foreign.h */, D901F4F50FC0DBCB0040C290 /* id_pm.h */, D901F4F60FC0DBCB0040C290 /* id_vl.h */, D901F4F70FC0DBCB0040C290 /* id_vl.cpp */, D901F4FA0FC0DBCB0040C290 /* id_vh.h */, D901F4FB0FC0DBCB0040C290 /* id_vh.cpp */, D901F4FC0FC0DBCB0040C290 /* id_ca.cpp */, ); name = "Other Sources"; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( D94B84D40FC0F2F800EADB6F /* wolf4sdl.icns */, 8D1107310486CEB800E47090 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 8D1107260486CEB800E47090 /* Wolf4SDL */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Wolf4SDL" */; buildPhases = ( 002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */, 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Wolf4SDL; productInstallPath = "$(HOME)/Applications"; productName = Untitled; productReference = 8D1107320486CEB800E47090 /* Wolf4SDL.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Wolf4SDL" */; compatibilityVersion = "Xcode 2.4"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, Japanese, French, German, ); mainGroup = 29B97314FDCFA39411CA2CEA /* Untitled */; projectDirPath = ""; projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* Wolf4SDL */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, D94B84D50FC0F2F800EADB6F /* wolf4sdl.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */, D901F4FD0FC0DBCB0040C290 /* fmopl.cpp in Sources */, D901F4FE0FC0DBCB0040C290 /* id_pm.cpp in Sources */, D901F5000FC0DBCB0040C290 /* wl_inter.cpp in Sources */, D901F5010FC0DBCB0040C290 /* wl_game.cpp in Sources */, D901F5020FC0DBCB0040C290 /* wl_floorceiling.cpp in Sources */, D901F5030FC0DBCB0040C290 /* wl_draw.cpp in Sources */, D901F5040FC0DBCB0040C290 /* wl_dir3dspr.cpp in Sources */, D901F5050FC0DBCB0040C290 /* wl_debug.cpp in Sources */, D901F5060FC0DBCB0040C290 /* wl_cloudsky.cpp in Sources */, D901F5070FC0DBCB0040C290 /* wl_atmos.cpp in Sources */, D901F5080FC0DBCB0040C290 /* wl_agent.cpp in Sources */, D901F5090FC0DBCB0040C290 /* wl_act2.cpp in Sources */, D901F50A0FC0DBCB0040C290 /* wl_act1.cpp in Sources */, D901F50B0FC0DBCB0040C290 /* signon.cpp in Sources */, D901F50C0FC0DBCB0040C290 /* sdl_winmain.cpp in Sources */, D901F50D0FC0DBCB0040C290 /* id_us_1.cpp in Sources */, D901F50E0FC0DBCB0040C290 /* wl_text.cpp in Sources */, D901F50F0FC0DBCB0040C290 /* id_sd.cpp in Sources */, D901F5100FC0DBCB0040C290 /* wl_state.cpp in Sources */, D901F5110FC0DBCB0040C290 /* wl_shade.cpp in Sources */, D901F5120FC0DBCB0040C290 /* wl_play.cpp in Sources */, D901F5130FC0DBCB0040C290 /* wl_parallax.cpp in Sources */, D901F5140FC0DBCB0040C290 /* wl_menu.cpp in Sources */, D901F5150FC0DBCB0040C290 /* wl_main.cpp in Sources */, D901F5160FC0DBCB0040C290 /* id_in.cpp in Sources */, D901F5170FC0DBCB0040C290 /* id_vl.cpp in Sources */, D901F51A0FC0DBCB0040C290 /* id_vh.cpp in Sources */, D901F51B0FC0DBCB0040C290 /* id_ca.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C165DFE840E0CC02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_NAME = Wolf4SDL; WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Debug; }; C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; GCC_AUTO_VECTORIZATION = YES; GCC_ENABLE_SSE3_EXTENSIONS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = "-fast"; OTHER_CPLUSPLUSFLAGS = "-fast"; PRODUCT_NAME = Wolf4SDL; SDKROOT = macosx; WRAPPER_EXTENSION = app; }; name = Release; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; FRAMEWORK_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks", /Library/Frameworks, "$(FRAMEWORK_SEARCH_PATHS)", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks/SDL.framework/Headers", /Library/Frameworks/SDL.framework/Headers, "$(HOME)/Library/Frameworks/SDL.framework/Headers/SDL_mixer", /Library/Frameworks/SDL.framework/Headers/SDL_mixer, "$(HEADER_SEARCH_PATHS)", ); PREBINDING = NO; SDKROOT = macosx; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; FRAMEWORK_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks", /Library/Frameworks, "$(FRAMEWORK_SEARCH_PATHS)", ); GCC_DYNAMIC_NO_PIC = YES; GCC_FAST_MATH = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks/SDL.framework/Headers", /Library/Frameworks/SDL.framework/Headers, "$(HOME)/Library/Frameworks/SDL.framework/Headers/SDL_mixer", /Library/Frameworks/SDL.framework/Headers/SDL_mixer, "$(HEADER_SEARCH_PATHS)", ); LLVM_LTO = YES; PREBINDING = NO; SDKROOT = macosx; VALID_ARCHS = "i386 x86_64"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Wolf4SDL" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4B08A954540054247B /* Debug */, C01FCF4C08A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Wolf4SDL" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Debug */, C01FCF5008A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } wolf4sdl-1.7+svn262/macosx/SDLMain.m0000644000175000017500000002557411564033631016313 0ustar fabianfabian/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #include "SDL.h" #include "SDLMain.h" #include /* for MAXPATHLEN */ #include /* For some reaon, Apple removed setAppleMenu from the headers in 10.4, but the method still is there and works. To avoid warnings, we declare it ourselves here. */ @interface NSApplication(SDL_Missing_Methods) - (void)setAppleMenu:(NSMenu *)menu; @end /* Use this flag to determine whether we use SDLMain.nib or not */ #define SDL_USE_NIB_FILE 0 /* Use this flag to determine whether we use CPS (docking) or not */ #define SDL_USE_CPS 1 #ifdef SDL_USE_CPS /* Portions of CPS.h */ typedef struct CPSProcessSerNum { UInt32 lo; UInt32 hi; } CPSProcessSerNum; extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); #endif /* SDL_USE_CPS */ static int gArgc; static char **gArgv; static BOOL gFinderLaunch; static BOOL gCalledAppMainline = FALSE; static NSString *getApplicationName(void) { const NSDictionary *dict; NSString *appName = 0; /* Determine the application name */ dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); if (dict) appName = [dict objectForKey: @"CFBundleName"]; if (![appName length]) appName = [[NSProcessInfo processInfo] processName]; return appName; } #if SDL_USE_NIB_FILE /* A helper category for NSString */ @interface NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; @end #endif @interface NSApplication (SDLApplication) @end @implementation NSApplication (SDLApplication) /* Invoked from the Quit menu item */ - (void)terminate:(id)sender { /* Post a SDL_QUIT event */ SDL_Event event; event.type = SDL_QUIT; SDL_PushEvent(&event); } @end /* The main class of the application, the application's delegate */ @implementation SDLMain /* Set the working directory to the .app's parent directory */ - (void) setupWorkingDirectory:(BOOL)shouldChdir { if (shouldChdir) { char parentdir[MAXPATHLEN]; CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) { chdir(parentdir); /* chdir to the binary app's parent */ } CFRelease(url); CFRelease(url2); } } #if SDL_USE_NIB_FILE /* Fix menu to contain the real app name instead of "SDL App" */ - (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName { NSRange aRange; NSEnumerator *enumerator; NSMenuItem *menuItem; aRange = [[aMenu title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; enumerator = [[aMenu itemArray] objectEnumerator]; while ((menuItem = [enumerator nextObject])) { aRange = [[menuItem title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; if ([menuItem hasSubmenu]) [self fixMenu:[menuItem submenu] withAppName:appName]; } } #else static void setApplicationMenu(void) { /* warning: this code is very odd */ NSMenu *appleMenu; NSMenuItem *menuItem; NSString *title; NSString *appName; appName = getApplicationName(); appleMenu = [[NSMenu alloc] initWithTitle:@""]; /* Add menu items */ title = [@"About " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; [appleMenu addItem:[NSMenuItem separatorItem]]; title = [@"Hide " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; [appleMenu addItem:[NSMenuItem separatorItem]]; title = [@"Quit " stringByAppendingString:appName]; [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; /* Put menu into the menubar */ menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; [menuItem setSubmenu:appleMenu]; [[NSApp mainMenu] addItem:menuItem]; /* Tell the application object that this is now the application menu */ [NSApp setAppleMenu:appleMenu]; /* Finally give up our references to the objects */ [appleMenu release]; [menuItem release]; } /* Create a window menu */ static void setupWindowMenu(void) { NSMenu *windowMenu; NSMenuItem *windowMenuItem; NSMenuItem *menuItem; windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; /* "Minimize" item */ menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windowMenu addItem:menuItem]; [menuItem release]; /* Put menu into the menubar */ windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; [windowMenuItem setSubmenu:windowMenu]; [[NSApp mainMenu] addItem:windowMenuItem]; /* Tell the application object that this is now the window menu */ [NSApp setWindowsMenu:windowMenu]; /* Finally give up our references to the objects */ [windowMenu release]; [windowMenuItem release]; } /* Replacement for NSApplicationMain */ static void CustomApplicationMain (int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDLMain *sdlMain; /* Ensure the application object is initialised */ [NSApplication sharedApplication]; #ifdef SDL_USE_CPS { CPSProcessSerNum PSN; /* Tell the dock about us */ if (!CPSGetCurrentProcess(&PSN)) if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) if (!CPSSetFrontProcess(&PSN)) [NSApplication sharedApplication]; } #endif /* SDL_USE_CPS */ /* Set up the menubar */ [NSApp setMainMenu:[[NSMenu alloc] init]]; setApplicationMenu(); setupWindowMenu(); /* Create SDLMain and make it the app delegate */ sdlMain = [[SDLMain alloc] init]; [NSApp setDelegate:sdlMain]; /* Start the main event loop */ [NSApp run]; [sdlMain release]; [pool release]; } #endif /* * Catch document open requests...this lets us notice files when the app * was launched by double-clicking a document, or when a document was * dragged/dropped on the app's icon. You need to have a * CFBundleDocumentsType section in your Info.plist to get this message, * apparently. * * Files are added to gArgv, so to the app, they'll look like command line * arguments. Previously, apps launched from the finder had nothing but * an argv[0]. * * This message may be received multiple times to open several docs on launch. * * This message is ignored once the app's mainline has been called. */ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { const char *temparg; size_t arglen; char *arg; char **newargv; if (!gFinderLaunch) /* MacOS is passing command line args. */ return FALSE; if (gCalledAppMainline) /* app has started, ignore this document. */ return FALSE; temparg = [filename UTF8String]; arglen = SDL_strlen(temparg) + 1; arg = (char *) SDL_malloc(arglen); if (arg == NULL) return FALSE; newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); if (newargv == NULL) { SDL_free(arg); return FALSE; } gArgv = newargv; SDL_strlcpy(arg, temparg, arglen); gArgv[gArgc++] = arg; gArgv[gArgc] = NULL; return TRUE; } /* Called when the internal event loop has just started running */ - (void) applicationDidFinishLaunching: (NSNotification *) note { int status; /* Set the working directory to the .app's parent directory */ [self setupWorkingDirectory:gFinderLaunch]; #if SDL_USE_NIB_FILE /* Set the main menu to contain the real app name instead of "SDL App" */ [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; #endif /* Hand off to main application code */ gCalledAppMainline = TRUE; status = SDL_main (gArgc, gArgv); /* We're done, thank you for playing */ exit(status); } @end @implementation NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString { unsigned int bufferSize; unsigned int selfLen = [self length]; unsigned int aStringLen = [aString length]; unichar *buffer; NSRange localRange; NSString *result; bufferSize = selfLen + aStringLen - aRange.length; buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar)); /* Get first part into buffer */ localRange.location = 0; localRange.length = aRange.location; [self getCharacters:buffer range:localRange]; /* Get middle part into buffer */ localRange.location = 0; localRange.length = aStringLen; [aString getCharacters:(buffer+aRange.location) range:localRange]; /* Get last part into buffer */ localRange.location = aRange.location + aRange.length; localRange.length = selfLen - localRange.location; [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; /* Build output string */ result = [NSString stringWithCharacters:buffer length:bufferSize]; NSDeallocateMemoryPages(buffer, bufferSize); return result; } @end #ifdef main # undef main #endif /* Main entry point to executable - should *not* be SDL_main! */ int main (int argc, char **argv) { /* Copy the arguments into a global variable */ /* This is passed if we are launched by double-clicking */ if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { gArgv = (char **) SDL_malloc(sizeof (char *) * 2); gArgv[0] = argv[0]; gArgv[1] = NULL; gArgc = 1; gFinderLaunch = YES; } else { int i; gArgc = argc; gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); for (i = 0; i <= argc; i++) gArgv[i] = argv[i]; gFinderLaunch = NO; } #if SDL_USE_NIB_FILE NSApplicationMain (argc, argv); #else CustomApplicationMain (argc, argv); #endif return 0; } wolf4sdl-1.7+svn262/macosx/SDLMain.h0000644000175000017500000000056611564033631016300 0ustar fabianfabian/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #ifndef _SDLMain_h_ #define _SDLMain_h_ #import @interface SDLMain : NSObject @end #endif /* _SDLMain_h_ */ wolf4sdl-1.7+svn262/macosx/wolf4sdl.icns0000644000175000017500000133204111564033631017311 0ustar fabianfabianicns´!is32—ý‹ûüþ𬬫¬®ª«‚®¯«³Ý+-5,%53$$&%%&&Aá;O„€azw[]b_b_8Oß0)s‹–‚Œ•‰’’Œ:KÛ#$epGJXahi6LÛ #7.Mdo‚7LÜj 57p^a}.IÚ 1P, TI&;Ú;WOMo!B &Ú7(S†€yfKRÛ J70zQ^tqutÚ-9g_9::56;<7878;;<;;<;;<:;<;;>,´ÿl.;9^nP^91MvatA3€6Z2576:6579<*³ÿl/7LŠ”™]=ot‡v>CGBIW|A>ZLE@7<*³ÿl.;;P™i–§¥œhŽª¬«°Ÿ‚—™¬¢¦¶t.>*³ÿl-950mm}Šv}dZw€solyyp~}wY2=*³ÿT –¦Wk£n®´«—‚—…‹§Ž—l6<*³ÿM  iÅH=<:<8?YB*³ÿO ?WC889:5jwl0Z€O3<)³ÿQ AwD=7;+|Ì\!ɨ=:@(²ÿL!2ŽH *:=dSz©*  ­ÿN2luL!NIC„†cgX?* §ÿM 4b~šq—wƒƒ‡…vocT1³ÿL (0T*)=uz·n„msrqpnprxhÀÿL 5Q_3%tpmH2jqnƒoq_¾ÿK;.)K\hrm\]sop‚ora¾ÿMR>@\ZvpbPSepqqƒptc¿ÿJO:"^Dqikjmomk…jn[»ÿv3EYTAMdA9JGB@6;(²ÿk,9E>=8P;>3;?=;@\I7KSJ97;(²ÿN   )7576771k`3y†”a1<(²ÿL  2977884gU]n}{j.<(²ÿM -:+88787U6;;5$$08:)³ÿP/N/978/X}A/UfZ7:?$±ÿJ#&Z0A5?hb\f`:ALcB9IGC@6;(²ÿk-9;L•c„œŸl‹­—¶’…z—™¤†’¿j.=(²ÿl-;677DW=@K;PO`@OIIUG`QNTH@7;(²ÿZ)*34!:6LMH[CCF3?E>>9P;>=;A\H7JQJ97;(²ÿSKQ+2!8‚{N/‚70j`2y‡“a1<)²ÿ]GH#&:6‹ÖÿM+*=Ue:tksz}O*>94.kÈÿI 2ltSC‰\od€“0+2kkjfZQI>?aÅÿN11P€ha|nwwQ:+!Tw‚rmg]WÀÿV(0S7?dq‚ygkqaA!Yu€rqopqvb¾ÿL6R_3<Œ‚~tkqt`$^snonora¾ÿ\ =/)LZT~urwno_csop‚osa¾ÿbT> BW[~pvpqcQQdoq€pq€psb¿ÿJO;#WHˆqpk€jmom†jn[»ÿr/BZS9Ngb„{zwxww†x{mɆÿþþ“ÿ€ýþþý€þ’ÿþÿl8mk`…‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡…/¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX³ÿøûûûûûûûûûûûûûûûûûûûûûûûûû÷ÿW¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿX´ÿùüüüüüüüüüüüüüüüüüüüüüüüüüøÿW¶ÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿXŒÏÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÐDit32~Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿþýóþýÿÿ€ÿþÿÛÌåàïáâÝ·ûÿüÿ¦I…Šr@üÿüÿª5ð03#8‚ÿüÿ©@ð;>.:þÿüÿ©>ð9<+9‚ÿüÿ©>ð9<+9‚ÿüÿ©>ð9<+9‚ÿüÿ©>ð9<+9‚ÿüÿ©>9;:Þ9<+9‚ÿüÿ©>9/6;‚9:Ž9;:9:99:;€:€9:‘9:9:‡9:9:“9<+9‚ÿüÿ©>†98;66::@I/@67977€9<:9:9:947;59=9,294:;4-484:8<4898Ž93947;::€98893956:‡98998998€9<,9þÿüÿ©>†93:;.9=@H‰¯-67882@84=8::88::37:67(<ªW7?-1E¨m5U5:719:8:Œ9747:3798€977<::7889:9899689989979989989,9‚ÿüÿ©>†98594Nl_JŒ¾_&:9Bm§Y :€8;8857;?>`£´¹”š7f‚½­Á;7659€8‹9879::16;889985:=6:>897Ž98;,9‚ÿüÿ©>†9856;H‰xbja•ܤ<:yx‚Éd&579787769†ª˜„bi§š‰„iUa ,9:8<88:98998†98;36;69;9789956.%4=9986Ž9<+9‚ÿüÿ©>‡9/8+®dpjrmlÓkf r^Û•18:9758:8ˆdReœ“zxa}„§½b*967=€8€9878†97/Ii758896760>RK-5::87:9<+9‚ÿüÿ©>†93:60¸™{nS£‚r®tŒ¢wn|Ý„,;:76:95„Š‚j|wVe„w¯t808;64889:€9$;8899:9;;9;9*K›—-789:7982EˆÙi,7:89:;:‹9<+9‚ÿüÿ©>†9];;-§¤‹H^§Œ‰¿t–¡‚®”„¢ .<3,0@84t—um-†9`:<%™Ät>\•—½|·–P’˜¶‘78GeR+,8j‚a5Qtž›“‚g¯:6j8'4KE+-G[‡9a8+]Ùt9U‡¤£¼m¤•=Š˜ŸÇ†L9[¡Ì®w9Hœ ’]5‰›¡ª—‚›}†9a;835EI„µ­¼fJ¯\„®­Ä€^—³Ÿ°½àž4¡¸œPM«Æ¯³¥ž‘d¥°­Ðu ¼¸ÝŽo´»Ý±¶”¯°²½or±´²—L†‡§°µÅ\™³µÉÒ¬¼ºÓŠk°µó~*<88…9<+9‚ÿüÿ©>†9b:9582‘U=~À¼®T*`Wt¸Á¼­Ã»¢µÂ»ÂU§Å¡I@qd«ÇªaQÆÊ¹¸Ú—°¼ gʺƥµä¼³xĺFCÕ '€Ëº¼Á´ÇʛĶьy¼ s̸´¯Q396:8„9<+9‚ÿüÿ©>†9X7978170A„ÒȘ[O6CeÄÉɎнÌ®ÏÉ©`±Ò¢E9/=·Ò´|4¤ËµÎÇÓy´È¾ÀÄÃÎÃ{ÅѬ;]r:e¦Ú¡3T¾ÊÁ»ÔÇÇu¶Ìá›c«ÊÀЀÃÒ^066::„9<+9‚ÿüÿ©>†9c67887:4@oõÿ•O¸¨]Màÿã…ßóÛWiÚö±UÂÿºE:F/¬ÿËm8›ôún~øß‰³þý¿ZåýÛC†ÿàƒ70ZÁùÑJKËÿèL¯ú¼iµý÷|xËúð¿XæõÕY378:8:ƒ9<+9‚ÿqüÿ©>89988989967:8:81N9Jj\Kyj?D{ÅM\†cAm’@&s›X2<6&fŒhc^Nw†AG–n:U€‰!9~Ÿl0Odg}6UN§iqGW‚v%kŠ?C\‘j}^U}‡%@z˜S45;9:8ƒ9<+9‚ÿzüÿ©=7797889787877:72IW'#42)'P8a†B2)5+\I"Ih,8N<"(bnu$0%lTqI DR&2mƒ,(,%svˆWNx‡J*7GP7bZ$)d‚=!VJ%=Y04::99886899<+9‚ÿüÿ©<879978:9:978:€9eCu‹‹kƒŒ‡f“€`œˆœY€„ŠLz„˜‚>c„ŠgmZŠ„I†„(`‰”i9[Œƒ\DSfk‡ˆ–n‰††_n‡‘m´fz¹~u|p€ˆpM\€†XP57<658868799<+9‚ÿ ûÿ¨=5721.-€+a,'(#&&$2†ª«­œ–´µ®—¿,I³ª¯·r—¬©Rš­Í€Ou£®ž~Kˆ³¦ ‰ 8^©ª¦\@¦«‘E2`‡«±_™±ªVOš³Ÿ«_$>hª¤¥|U©¯¬RK¦¶“?0:73€688€9<+9‚ÿzûÿ£  ÔÉâ}âÔÖ¶]@ÐÚÅ‘¥ÔÈ‹AÂãÄÀÍ”–ÆÕ¿†8ˆÜÏÂÆeb^§ÉĪQÉ˸Me°²°ÕéM¡ÙÔ¢;©âÈŨ\o[ÕТT°ÐÏ OºÜÁG3@@=<88759:8<+9‚ÿnûÿ    L¾ÿúôdŒÿù×W,Ýÿí»ÿõ·2AÝóûñì­|Üõå†-ªþùïîÁ®Vºÿõªfùöãa†ûéíàžmBËüî®QÚÿöêàÔ=´ÿíÓ]¼ÿô¨nóúÜiDNK€?945899<+9‚ÿzûÿ£    H¿¼»´ˆ>{¸·Zjµ³£¢¦62Ž­ÂîÕmVàùð„)~¥Ãéäâ˜CnÁÚUM§êž8tjßÖ\6'F çë[;Œµ×íéÓƒ>|Äü˜0tÆÕYd­èœ>BBHGC<8568:8<+9‚ÿzûÿ¦    C=,# .7  $1,Ik]%bÙøât+@8a}[HL810i5>&UP2O jd1:891O„254Cr{\;A83A”75-.g;4&XX87.9>8257;;97<+9‚ÿûÿ¤ €€€'   :„¨|ËÿÞe32:667+378964<93€907,07657:3)57<6498-258?*27/*5=@643;669864599:99<+9‚ÿûÿ¤ƒ5    “ÿÿðõå‰M258879:87:89;8€:,9989;9669)C`+588;<83==4J›96]f-3179:89:998778:€9<+9‚ÿ?ûÿ¤         ZùÃûöy0=?39789878ˆ9 =<:51ŒD¢…7$686685>C=¸o`ÏeA='5;:‚9 6899899<+9‚ÿûÿ¥ ‚3       _a:¢˜4;68:99:967ˆ9 7345=B]\jªºŽD574;6Obr`‡‘j}\¥–9-…988699<+9‚ÿûÿ¢ €,    966?:57€8:8‰9!7366:IO‘™WqxÆc/77;g–€{rrytrt®Â‚2…977:9<,9‚ÿûÿ¥ ‚-     :656:899:9898„9#:@=;65I˜"ˆ´\2;8> ¥‹o~‡Šˆ‹–†sŽÎZ1<ƒ96897<+9þÿûÿ¤€:      %<889489:9899:988ƒ9#5598455<@-•¡¼N79:<®¥£W^š¢–Š„Ÿ›°e.:ƒ98:78<+9‚ÿûÿ¤ €1        )>=6379787:8988:€9%86753834>2›°«E56:5ƒ¶Ÿ?X𰬤_Zž±¨›N4857…9<+9‚ÿûÿ¥ €.     298878€7869979897€9%8::58:4CPB´Îw053;?d¦ƒ:\¡¿¸¨N2ˆ½½‡>7;67…9<+9‚ÿoûÿ¡      76887879689987996899629<;:7Nº`/Z‡gUk¯›ª&dÁßá±P,‘äã348>;…9<+9‚ÿ ûÿ €99PTOS\V   89788:688:689977€9%65::983G–ÂÖ”ŽŠÔ±•Œ“SÇFM‹ëû´K'Uïú‰466;:…9<+9‚ÿ ûÿ¡   &LW^VWfˆ’q€   %€898879:8€9,68:7979;87(SC6*I›Y51#$_7L=I'Bh@. >eH566898ƒ9<+9‚ÿ ûÿ   HHPQL2#b? €    1€8788ƒ9798€9(;760Z¨M %i`;O609?<. 9-"+Ab283978:9€89<+9‚ÿ ûÿ   /@EEB@:5'/Q<„   :577868898‚979€8!4A°mQP~ƒ¦wAJA78<&~[[–ŽX<`vœYM2@:879899:*9þÿûÿ¢€8  *:A9=`jmS6+!      789867798ƒ9188941NÀšzG‚¶ºÀ^(;53431w‹lÍÂw¥³ÁÎÉk<3:66897799:8<+:‚ÿ ûÿ¢€)3C98€989766;)8‚ÿ ûÿ¢?KFZ\T(!a?€   -8778:87„9&8439I´î÷œ[çý»<368<==-ùôïõÒßôíêo.5;A;:;€9757:>-9‚ÿûÿ € D:M]~”„dr€€! 27799799889&887;7xáûê’ðð‡6402579.ÿôùöýþùÿ«+6942788€97159=,8‚ÿûÿ¤ ƒ,(PS[z”¡‚ƒ!€  €> 879779877:99:;;:924cáÿý·Y<;>:635B2„ÓŽlopmhnQ4>613978€983678(8‚ÿûÿ¥ ƒ^1'Pm]h‹‰qD€V   8898978798695327633*Që’74.06>?:I<1Ya<281*1)6=427==9::98:??8;,;‚ÿ ûÿ¡ ^> J‰qƒ¨€n9€  €I 57799778977=IPP729>:(L-4>2585! !/64::92:<;:44;;5689:;:4+2‚ÿ ûÿ  Cj %@Š¡¯º°¤H €V   58795569;Xhƒ´’39;8:17938;?"UXF'<5>;988>:997:9485/'$!2‚ÿûÿŸo&a&.*J¦¿ÆµO     86876785DJZ…³U.8:79:9;:37<—É™0<2:99897;7:981! &4‚ÿûÿ €!KC/0,#4P_R €S    :78::7,Lbx¢Ét-;74578=;8<2*85/<65898:780.    A@8þÿSûÿ¡ ',?&-73(!#% %$&    69;;99O^sct‚8==6303465778€699:2)   G†o:þÿzûÿ  +(;;*0=LYeW@FXXTJ9    6;7=-Q„­ŠFbU1<<><;64:86D@64:1+*    d‰:2‚ÿzûÿ¢ "'+F3E8'4?Vbeqmv„zdG      %7892e̽ï¨O6(,5722522/*42!&      0R.4‚ÿ&ûÿ¢  3l)‚ÿaûÿ¢ &1% LRj\•D ./97KA,(4uŠZ.     *$#"1 7WcD>1N-   ?G€    4(‚ÿzûÿŸ &)Cw‚s­h"Y0:A'Mgzc2    7, Fnf;9(b[‡¢™G  '6      8'‚ÿûÿ¡ €&#G[†¦ºG :D&XA;dzŒŽl-M /2YsbHtdlm©ßÊá©   1    1&‚ÿzûÿ¡ .* 4HQ]kv|G% 2AnŠn)   K6a_^;€‡Š©³š•ÃÞ[    %        +'‚ÿzûÿ¡ ":=/|ƒ{”x]4D|‘ŠŽ`     Y0 nKTez…‚~vw™áŒ           %'‚ÿ*ûÿ¡   &rTw’‰Œ‡Y9FeR  €L a/Jl<@‡o/Œ”™¢\™ã¯4    !(‚ÿûÿ¡ €o "W_[m`v‘}H*+Uo‡G    a,Rm;*eR3šŽDq½ÐšREJFHJKF?. &      +‚ÿzûÿ¡  " 'ESNZ‡‘‡‚zzb‰!   ^Kk>LkwC`m>q¸Í‘qvyvtutvwq`fO-'   +‚ÿûÿ¡   C->l{~y€{q–l€S  ^O~T \t) *ŵ{lopnnonmnqpnrtm^G5"   -‚ÿûÿ¡  €C)#Jgr]†euu3   )d T|}K&`„H%/Ÿàšuort€p!onpputqoorvsplVO5)   +‚ÿûÿ¡ ‚ ‚D  DP[eI``X     LYSyr–•M‚¤¨‡_hdS~­¼‡trpqo€poonn€pqpqvtsn_S:)&   -‚ÿûÿ  ‚†e26B;E!  $/Swk¨ŽjÄÏ£]x¦áß“prnqoopopponmnoorrppooponpstwslaR;*/‚ÿûÿ¡ ‚‡ +" (€U   +]YtslyvkŸ°£|Gnާºè¥msy…‹Ž‹Œ‹ŒŒŽ‹Š‹‰ttpqppopoqqrsumdX??@)?‚ÿûÿ£ †€E$ ,X6    8{qsrqnxh€°Æ¿‹A948M9@P[–[.    -eqonrsqpw†Âžаûÿ  2?EID7 /COVYUb~u_UO  Zqoppoopp‚ordI+tmopopooppo€popoopo€po€popopoopoo€p€os^Kþÿûÿ € #-=DVP:%88=E58Vs…tZ€,  PwmqoopqpoopormvF<Uuoopoƒpoopopp€opo€po€po€popopos^Kþÿ9ûÿŸ .?JWD5-&**"%8LLc‰j. /roopop&qoongae4-Yumopoppopooppopoppooqo€pˆopopont^KþÿûÿŸB 0FMNLE,+"-4;TaE\{?  gonoppoopoli\UPC=- 143@Qo popopopopp€opoopoppopoopoopp€o ppoppos^KþÿûÿŸC!AKQNESJ. $"%.Fj[;\R   "dqmpoopooplaVJD=7358=CJUcnup€o€p opopoppoppo€popooppopopoppo€pos_KþÿûÿŸ‚? !4H\?BM4  7@NYrR5M Yvmpoppooqqj_WPMLOQTS_chmopoppopopop‚oppopoppopoppopopopop€ot^KþÿûÿŸ€L$>XdQ?20:>:;Cvp<5  2ymqoppqppoppkfaaddefjoqoopoqnpopopoppop€o ppoopoppopo€po€po€p oppopot^Kþÿ#ûÿ   =K`eaR=2 !2-*8Ln‰X" kqpopoppoppnlmomlppooppoppop€o poppoqoppopoo€popoop€opopooppoopqoos^Kþÿûÿ  ƒ, ,9K_ed^R@ !(;Pc‡s' bqspopop€oppo€pop'oopooppoopopopoopoppopopopopopoppoppopoo€p oopoppos^Kþÿûÿ  ‚'09L^aa]J3  %6Rayˆ6 $jqo‚poqppoppo poopopoppopop€opoppoopoƒpopqƒpoppoopopooppopos^Kþÿ2ûÿ¡ -7DTZYVC1"6N[v> oyono€popopoopo€p€opop!ooppoppopopopoppoppopoppoopopopopp€o pooppos^Kþÿûÿ¡ €) '2! --*A[py9 D€uyxyzxyxyyxyyxyxyyxyx‚y€xyxyyxyxyxƒyzyxyyx…yxyyxyxy|gOþÿûÿŸ† ‚ "& „/.€/0//..€/./././/./‚.‚/.//./.€/./ ..//.//..//€././././/././.1"6‚ÿýÿÄVb„`a_^€bcb_‚`^aedfie€ba`_bpl„kl€klklkkl‚klkl‰klŒklklg†ÿÿ‚ÿýôûüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿþýóþýÿÿ€ÿþÿÛÌåàïáâÝ·ûÿüÿ¥HŽ„î…„‰q@ýÿûÿ©4ð/2"8‚ÿüÿ©?ð:=-:þÿüÿ©=ð8;+9‚ÿüÿ©=ð8;+9‚ÿüÿ©=ð8;+9‚ÿüÿ©=ð8;+9‚ÿüÿ©=8:9Þ8;+9‚ÿüÿ©=Œ89/59”8;989€8::9:»8;+9‚ÿüÿ©=78ƒ718868974;†H2:78988:7677877669899796'244876-11-77599‹7€876€97887877898989778ƒ78‰7:*8‚ÿ"üÿ©=78877878876<78+:„¯1)=88:821986€76597897-<­^658378787…8776:839678877898;9>58787:*9‚ÿüÿ©=7…84683Hƒnwlodp¿oPwp{Ì”38788788,rwlRElP%shabU$:78737887€877ƒ87887:/C69787879=36L/9778778787…87;*8‚ÿüÿ©=7…837:-Š€tT¡yy„ZW}~‚{uÕƒ+99:9791J}mS#/w|•p0<98;96887€8987€87:9898? J•.9778979;*9Ê\2;89‹87;*8‚ÿüÿ©=7…8G69)¢®‰0\®†’w<}ެ“ˆ˜,:4/28;2:ŠŒzj3<&€’x-D:54/;8746;96/7;87890/8085#œ¡ €843981VVN…755;:5/7;87‡87;*9‚ÿüÿ©=7…8l68.”ÎTZ˜“›sHŸTš’”™e-8HZN*+54‰™`0/z‡TJ¥36@R298>>(,EY:+566-uo+T2/vº¸K?65GI38=Q$+9A<&-FZ:.6976788787887;*9‚ÿüÿ©=7887‚8`584SÚF!V£vE¦|/‹›¢‘.+*]¦Ê´z3A”¦]1ZUˆ£•uˆw5JsÆ|'2sÇ¡`OÂÓ<'), ã¨ÎTx§¦è¦07U…ÈX-(Š«M0tÅœ^RÂÁD696878787:*8‚ÿüÿ©=7887‚8a66:.–€6K†«³t6R„2„¦³”*x®¨²Áá5ž²”PX ­¨«±³z,i•«¨×W5¦¯Ó˜m­´áhG{˜¼½µHi·©§˜<4y¦ª¶ÊHB”Áɶb °Ô“t°¸Út.<87€87€87:+9‚ÿüÿ©=7887‚8c66:5;|RCu¸Æp1K5j³Ã”“Á¬F€±´ B¦Â˜GCqa¡À©\%‰»º¼³À¿T¶¾¢kÁ¸»y-Ͱr¡q&G’Ã.8¢¼¼½²Ë±Bµ¹­4@¹ÀŸg¸Àr87:8787ƒ8:*9‚ÿüÿ©=†8a7789705E}ÐÔp)K4G_ÆÏš0Îκ/TÄÑ~BµÕ£?8/;±Î¸|0 ÎĸÕÅ×V™ÖÄǽÈ̘)€×².6s®Ó«2K½É¾ØÅÍF€ÒÅK§ÏÀÆ»ÆÏ™A3:96„87:*8‚ÿüÿ©<7‡8a778:6BiòÿŠ6­²hFÝÿ±AÛþã4?Üÿ¡EËÿ»C4=/´ÿÇq>üÿm€ôÝn–ùðÊXâø®8zÿíŠzD+]ÀÿÖLO¿üéI°ùÈLÿïQ5±ööÉZåý©>4:9787‚87:*9‚ÿüÿ©=77877887Z:3K:Nn^P€hED‚¢EI^ŒX ?w‰;1vY199.kŠh`\OzS#rY;a…g- 5E)OA^5 (ˆj/``„^epb(FC-N197877566887;*9‚ÿmûÿ¨?:7561.,--.-+*)'(6+10¨D[R3Ìt3` }A9ƒ%Bh2D#;F1oŠ#SKM dg!BtBRT5A>F7;€87889€7:*8‚ÿtûÿ¢  9 ;Z+m[@A35)ƒ8A´O7]*"Š(aIO>_&.£A,•= tŸHN\ŠS)%‘']V5-0335899€7:*9‚ÿrûÿŸ" DPB@L15F@QB"TBAAHA]4/L?>,5^vW/Wƒ4NE=5TTVLABI~?D4kV0C1ANHl8J8J„IHC=:_P`99A>–MABH„—9+BZ.26<€8778787877887;*9‚ÿûÿ¥€2   Z¥nyÏÝU$43:7887„87‚8!75788*‡D¢€>.58899;9!?’¥=)¿gID,5:7ƒ8787;*8‚ÿûÿ¦€/   Z_Q€)=978877Œ89877$9ˆcv¥À•F39858(7r_q`Rv…[Š9,„8€7877;*8‚ÿ9ûÿ¤     76855878€7878788787ƒ87841!Ksanv³b*982,8zv~t{|xmjy±Ä‚3‡877;*8‚ÿ9ûÿ¦ "     89:9588€787…8#736787,/3‹„V.974>x‰Œs€Œ‰…†Œ„ÎY/9„8787:*8‚ÿûÿ¥€       !<6678€7„87ƒ8986€9;4+0—˜€K/9765 c^””–”’‡›‘¬c.:„8787:*9‚ÿ$ûÿ¥    €  ,747868986‚7877‚8%77895:938­µq99=83¥¥?O“¬©š`[”¬©¡R39987„8:*9‚ÿûÿ¦!  €  2767679867877877878688€6;)?¸Ã\18607B¡‡<=й¹ŽD3‰¿¼Œ?577€8788787:*8‚ÿ)ûÿ     € 9876688‚78€7‚8$977899m22¾X25-SKc´›¨+4•äÞ‚7,•äÙ…1:637„87;*8‚ÿ ûÿ ‚)6556:5€    "=€6?7799878787887789877996D|²×•‡;y¡˜’‘RÁR"aôû‚&#Wöþ„.;87787887887;*9‚ÿ7ûÿ¡ 8;69BGRUA    "87897„8-787867890[@6*S”202$$W3FJ+ #HG-/&FaG399878787€8;*9‚ÿ!ûÿŸ 64488%=LL/€€    /96767‚8)787878991Y¡F#cC{"&'2%8738877887€9;+9‚ÿ ûÿ¤€ .8-3:;F%  € -<698€7ƒ8$78983@„^\^;O^k?8:85377N[TOTWSWP~[0:52€7 88789978*9‚ÿûÿ¡ 3'5ERcT?JY €   5878‚7‚8'78796`’–™`–Ÿa99=<:984iœœž ¡¤›°œ4978:8877€8:96:*9þÿûÿ¦ ƒ(9:;U`jST]‚  ;678„789899SÊÚà—R30569;743}¹{cZ[RInW-67:€977€8769;+9þÿûÿ¤ ƒ7b+3E;;UT@(   >678778€7863318€91NÝž:/>;7535M96\X=<430*10589656876344;)8‚ÿûÿŸ‚ ^<2`IKpUX0‚€ € €C:4868877886*9KoY,UU6:35599:7:717;405.)€   TÍÜŸTüÿ$ûÿ¢ '2':4*8?Tdcqnw„|gI ƒP  %§|->9=*D†h–p7=40460.002/3145Yf=   P®Ã¤Tûÿ{ûÿ¡ $M7(%9FUSaacf}ŽyX5   +¬€94,,*/{|‘]AN’wMHžßl    K¦Â PüÿWûÿ£  7BuY5*$99=GUVEXK`jfH!+©„L$2Bdb/y”·¯ŒZ € ·ÖW€  N¤Â”Lýÿ(ûÿ¡ (0 70D2e/",-<8GA-%3t†^.  7   &±ˆM$$ 0A@6?Aƒ“‹\   ÂK€  VœµŒLýÿ{ûÿŸ* 2PTDtH%X0;A&Pg|d0   )¶‹ UV@5)gDJwv†„Z ´C      P‘´„Kýÿ*ûÿŸ '1<_s~19C'XA?czŒh/  €M  #­ŽKSB0QFPSrˆ„[   ‰±I   Qˆ«‡Iýÿ(ûÿŸ-- &589^h3   RŠ—{Dþÿ#ûÿŸ $ )DSQY„”„ƒy|c‚Ž#!€ €&   :Ó‚6>,1HR-AL,Krwtv€wvrovV3'  S‰wFýÿûÿŸ‚ G,?k{€v}€~n“p €M  4Õ>T;Ym, UyrhopoopnnonoqrvupbI6&  WІkEýÿûÿŸ‚ )"Miq\‡itrƒ4€ ‚M  DÜ€ VbM2! [|@eˆkkrprpqqoqponpmlqtuuqjTL4* UƒƒrHýÿûÿŸ‚ … BP[fN_`Z $    nÓ}U{XWf3Vfm]BMG7Rizon€q%opqpqoolqnmmpmnppvuvo]T<)*  Sx„qIýÿûÿŸ‹67A9F 1  C‚[Qxohr\@dl~v8KTn“£dkqnnpnn€o pnpqnnmomnn€opstwtplbR>Tp|`Býÿûÿ ‚† * *€€ €O  *miqprmjVFigdO-K^hh¨krw„ŠŠ‹‰ŠŠ‰Š‰ˆŠ‹Š‰Œ€rroopnnpnprpurohW[ddPFþÿûÿ£‰W$  ,V8    8zonoplqXTrƒy`,02KSftqt„’–›™š™š™š™›š™šž—~topoppompnprsrms`Lþÿûÿ£…€A+17GK;!    4woopoov[Lo}uP&2>]cfroopssrqr qrqrrssrqpopq€popnqopopnooqs^Jþÿûÿ „W!" /992.F;       Wsnppqqrhfz||^+6LUpopqooqnpooppoonpopnnpoppo€popopopp€os_Kþÿûÿ ‚0 .KWa`edSC?MZT!  €3NxmoqoqpqpotV,..&Ytooppopopopoqooqopoppoopopo€popoopn€poot^KþÿûÿŸ„':@AEF@92/=@JJHV(€  )oq€poqoppoov&C? hsqppo€popoopoqnqppopoppqopp€o poppqooqopt^KþÿûÿŸƒ  )9E4:Ut†rX Owmmppq€poppqowG>Xtop€opqoppopopopopo€poqppoqpopoppqoor_Kþÿûÿ  0BJPF5-&.(%&:LN`‡p/€  0tpqm€opoqponfag60Yvoo…popoppopooppoqop€oppooƒpoou^KþÿûÿŸ„ 3HNMMH.- .3=Q^G^|B€  mrnr‚pqni]RNC<+ 266BRprqpoppo€po€pqopo€pooppqp€o€popopot^KþÿûÿŸ„!>MQNJQJ/ %'.Ij[<_S €  #bslqpoqkaWJJ@867=>EJUanu€popooppoo€pooppo€poqo€popoppo€pons_Kþÿûÿ ƒH #4HZEDM57ENVpS7M Yulqqpopoprj_VQNMPPQS\`ioopopnppop€opo€popopqooƒpopopopo€pqpopot^Kþÿûÿ „ %>UfS>21:=>9Ewo;8€€0vlpqroopo€p kdb_`bbhiprqppoqpoqpoqpopoppopopo…poppopq€p€opopoos^KþÿûÿŸ„%3!40*5OpƒZ"l€qrqo‚poro‚nqpoppo€popoo€popo€p oqopopoppopoo€pqnqoo€po€pnt^KþÿûÿŸƒ. .9L\dd]SC ';Pc„v(gtprqqppoo€popoppq€po€pooqpoqoqopopopo€p opoqopnqoppo€poƒpopou]Kþÿûÿ ƒ.:N[bb^J2  &9P`xˆ7€!jsqnopon‚popopo€poo€p opopoppopo€poq€popopoopqoopopo…pq€ot^KþÿûÿŸƒ /6FRYXUC2€ $4L]uŠ<€ mqnrpnopoopopnqoppqopn€poqopoppoq€poppop oppopoqoppo€pooqpoo‚pos^KþÿûÿŸƒ,1ZJм\+98' CL)<8878768870Ía3989‹87;*8‚ÿüÿ©=7…8^79*£¨†1\¬„‡u9‚Žz«’‰›œ,:4/19<1=‰“|n.-(‹Œx)?9;30;8956:95/6;7899//9092%•œ(87843990WWL†656;:4/7;87‡87;*9‚ÿüÿ©=7…8l68)˜ËUY””–tKž‰G““œ˜_,9F^T'&18Œ ƒc+*"wŠ[M¨96?Q28.<=*-D]:);4./vn,R35u®´M?56EI287N$*6>9&-G]<)4976788787887;*9‚ÿüÿ©=7887‚8`672ZÚG$UŠž£z@¦-…¨Ž*,([¥Î­t2E•£Z-VS…§”o‚u6LsÀ|#(wÆ£_SÃÁŽ?'*3 à§ÌPv¥ªí§-9W‚ÇZ+"†¥M0sÇš\UÅÅ>796878787:*8‚ÿüÿ©=7887‚8a66:3”†9Kƒ®±t4Qˆ1«·-|¯œ©ÁæŽ7£´™ORŸ©§³­¦v,p›­©ÔY>¦®Ô™m®ºÙdO}™²¶µIfµ«²•78{¤­µÉHD—¹É²d§±Ò”r¯·Þs-<87€87€87:+9‚ÿüÿ©=7887‚8c67867~QAvºÀp-M:mµÉ”•Á«K~»¼¢B­ÁžKBoa¤Ä­Y"Á¼¾·ÁÂU®¸£iÁµÂu-†É³j—p%I•Ê¡+: ¿¾½³Ì°J±·³4?¸½£mÆ·¹u67:9787ƒ8:*9‚ÿüÿ©=†8a7789813D~ÍÐn*L3D^ÂË3ËÄ·6XÅÑ}?·ÏŸC<1?µÐ¶|/ÍĶÑÅÕN—ÐÁƼÂÍ–$‚׳-3q«Òª5KºÉÁ¹ÑÄÍ@~ÒÈO ¦ÑÁÉ¾ÃÆ—?3:97„87:*8‚ÿüÿ©=7‡8_788:8EeðÿŠ5³²fGÚÿ´:ÛøÝ3AÚÿBÇÿ¿B6@3µÿÅu:—øýn}óÝh™üôÈWÞ÷¯1xÿâŠ~@*W»úÖMNÆúçL°øÁI”ÿîP3µöòË\ä÷©=4:97„87:*9‚ÿüÿ©<78€7‚8^7767:7N6Mq]P}iBF‚Ÿ?Jb‹]BsŽ?+wœV09<-iŠneYR|„@H˜j6^†>z}p6Qcm}Œ7tPX¦fpL^ƒv+m‹8BZ˜X\DR‚ŠC|ƒB3;€78787;*9‚ÿoûÿ§A;58;=:63489::75/D5 #I[z(GM;m35BjqX%dP{+EH,p{arˆ:9|ƒ'*{?a@ d~#VB3T2:88€767887:*8‚ÿlûÿ§@82596:;56859;:93~8*…8 <«O9b)"†)ZSTE]2œ?/”8 rœCO\#€S.'ˆ$ [R2/1226799877;*9‚ÿzûÿ© ;:>;)$)(8GAB495LLDBG(5HBJW8GNQEDEL?ZP?DA05ZvT3V…5IF@7QPVOBFM}52<;<794*:7:56:218;89*;;/0;:7€8;889798767787:*9‚ÿ@ûÿ£.ffb[VSKIIC0BL-)KLA-(%F?=5/#T mŽœ‘ˆk‚ÙñËÒÉP1>36:778977…897689;88-AT*4:9<869;75B—7,?X-86€87787‚87;*9‚ÿ9ûÿ¥(^epu_B;=HD' 7)'A<3+"C=GE;'V’†zgŠ•Œ‚r„¡vvÎà_%28678 75787)’L©‚;*59989;9$C‘¡8*ÂiH@'6:„8788787;*8‚ÿ:ûÿ§&]gofW<0.2#'%-&#@;5)%J67?6&R—„qc…‡‚s‚~\,O~2>2488789€8%9‡`u©»C39<92:sbn`Xv„]Œ:,…878877;*8‚ÿEûÿ¤$_ffRUQ>3/")"@>@.*B//0-2K£Šp_…’„€ylq„z8+2565<8787878788787ƒ87844Dm\nw¸c+:?6)8sv‚vxwunm{±À3ˆ87;*8‚ÿ<ûÿ¦*[_cXXYM?3&*&$!K;3-!);()!(1R£‡ob‰”…{…ƒh…‚aI-497:8877Š8#757786-33‰ƒ•\-8=,?v„Šrƒ‹…ˆ…†€ŒÎY09„8787:*8‚ÿ;ûÿ£,]UY\K?@E;6$((>3*+$6+) _–|sfŒ—ˆx‚zl}vv[66A55887„87ƒ8987€97*-2˜ƒO,7<,2—¢^\—“œ–Žžœ°c-9†87:*9‚ÿDûÿ¤-cYQF@<@;)-!$;:9# ! W|pZ”‰‚id‚zpnL1857689864788787ƒ8%7789772<9¡ªvD79=%¬§DM®«–__˜ª¨žR6;987„8:*9‚ÿ?ûÿ¥,ff^H;BA0-*$ 9>>3! IinO’“{…k]‚‚jrjG@<45799537€87„8#788665;.<´Å_04026A ‡;:Œ»¸@6‰º¸‰A887€8788787:*8‚ÿ<ûÿ¢ /a]b_>7::*&%%%& #*=AQUŠ„vu~`Vy}kW}G;44788€7„878"77897m60¿_-,0RRj®˜¥$.“áÚƒ5*“áÛ‡/435…87;*8‚ÿ>üÿ©%1VBO^C;<3!$ #MB-1faT{L<=„ŽzpwaTs€sQI}e94667899€8787„8.788:9Bw¯Üš‡;y ™”’SÆJbðûƒ*$Xòÿˆ.878787887887;*9‚ÿ>üÿ¬$(/TAINIC5#"(% KI&-d]\q‘“uKMe}|lbYwteHc†b>798789…87€8/77890YA 3.V200$#U:ME( !HI-1#IeH7;9878787887;*9‚ÿAûÿ¨"(XOQB?3,!# '4'eVVo ­£ŠdO\d_^Ysym_ˆyl~V;;7677877ƒ878 9.U¡M#_Aûÿ¨ $PEJB,!'#4iZOxŸŸ¢¥oK6KUXnod`‹[dT@:8556„87€8%79956˜QSXrx^)BD-2K.*(=v&*,-";739977€8€9<+9‚ÿ@ûÿ¥5B4>DF8!&,3\@,bMAxŸ§™’wbŽ—voTGU\}}x{luN26:87‡8":85G‚^a_:S`k>78:>?<5M^TQUYYWOsS7C52€7 8878998>,9‚ÿ?ûÿ¥ JZLTcl_, +,9.$'=6?/'eTGu ‹‰ud—™y˜|R3>…|scd‹‚nE<8787„8$6;9a’›b™a=7.,.25-eŸž¢ž¥©›¯’3@@469878987;)9‚ÿAûÿ§=RCJQc]5 "( 4;A.3I?+#0eXPu˜—‹„…nc›™o‡‚}LVyvf[vv‚j24887‚8'789898987UÇÙã–N5654776@/x¿z[U\SCf[/63589ƒ85338(8‚ÿ?ûÿ¦ <^[WET^K!_" 0'%8>(-gZOy˜“‹ƒ‚lb›[Œth{|tSpoƒu419€8*7878854319678/MÛ™:7767>?9J:4^_<1770+0<6255687769879)9‚ÿLûÿŸ 5cl_87GH!_; :(&E0>.=<.g]Q}“Š}jbˆgŽak€‚}WDqvsb22788797887=HNQ:€5A+H75=48:6 #5-3@:<<978:€9 7157899;=BIH5;‚ÿ ûÿ§ 6[jX2:TFDh 8FDFET-=C/€YKg•†Ž…ggŽqƒƒj_}}yXN[YhtldF58<0><96Vj|¬”12:9B<.6@39E VVD &83=668856=68:6>F€@IL/S‡{Püÿ{üÿ¯"8S\S9NR5(_ 8GTZR48A 5cNH[£Š€`cŒƒi‚iY‚qgapyVOc…ƒZD747:96/DO\¼S,B54@35@,2AB˜Áœ35/89776567+9=,,/16>.7@<;?D€>P5B`@>A8LNT¦»œQüÿ{ûÿ§"DdK:$*,A&+,)37'-T3=fv„~oY[ƒ‘sjXjNTFa™…GEt‘•}~o=/=?<;6;#!9;@IZWG[ObecK!9U[FL`SRVXJ|€eCcŽYlˆm‚n¡ xsbHi\eF0/0MFuެ¥mJMAj¡Â—Lýÿ{ûÿ¤ $0$ !K".,<7J>-%5q‹‡`($4Yu~n}Ÿ—”‚‚\}{Y\ƒ„U|šj~j¬žg|{I^OL)501DI~“Ÿ‰eb`l^Liqx,Kª¾vOJHAU`[X@>FADe68R93Q9=nœ»”Kýÿ{ûÿ $ .5#Q4"&[.9B&QhzŠi3'>c‹„t°¬¥žo|~CG„ƒXx“b\vj«¡duxFPC+/!g?8W`y‡gve|‚KixnBf”°xQADGLTcM;NP:;`+/>.2=<@kº‹Hþÿ{ûÿŸ *8H[%6-1,7A](#(8@<1N[dcjrVMWQeP: d70&6I7T5 22=5E#'9,1J9+f©€Gþÿ{ûÿŸ# !!d„t[3JxŽ‹Œd()cblŠpNYKUl7;{ƒc?[eCRWOÑžy‰_>/)>)4;0+KVttb_lcabTCEbsL3<>ZXOHLP32hUIM/RU>c‚•zGþÿ{ûÿŸ $ )BVV\ƒ…yy^…‰†>*!-f‰ˆn¤‰ƒ„rUvziUnk€q\Pti\aÌ¡}…tA  &2 *8.ISewokrqqrvxunyfOD4@:F>DQE9W?Bq>-B]qNa€ŒyFýÿûÿŸ€q F+Am{~y}{vs’l34%1g‹nŠžyƒhK€nFRy“Ÿh[k¨}aƒË¡~mK2  Ol. 3MF[umiqnnoppsmjs~xd^PA72=;4S39W09bDPW8^‡rEþÿ{ûÿŸ '"Nkr_ƒhpx|:25)8r‰rn‰œŽrw^QaM=T‚™bUg“ph•Ó–lo^, Ux8 '3-%4BK8kpXšyqiV=_£’YH‡Qdtp|kgmxkjrN7%A;;-'9@CŒifrz†Šˆ‰ˆ‡†…‰…„Œˆ‚‡~uuq€rplnmo}iyteVVhgXEþÿûÿ© ‡j#  2Y8+C55?i…pYœ~m\H>\§†SP}‹Uho…vlivmonorjC0HSI;)%Rimu…–œ›š›š›š›™šœœ™•ŒuqrrsoonlntkrqorqsubLþÿûÿ©! ƒ@+26DT7'A1(.W{{d€nOEVkn‹|hnŒ‘Zfnp\gzhpnqsrP$AQF"8H_popoopooppoopop€opop€opopp€oppop€opot^Kþÿûÿ¦(‚K 2@B959R6CS`}Ž\2;90rlB@Zxo‚™›wo‘wm„~nJdn]`ˆrlmloqpiSOIHPF)8Qkppoppoopoƒpo€poopoppoo‚po€poopos^JþÿûÿŸ J #894-!",Kkox††gG2//$=EFe‘˜`|žtk’xhƒ{mMdgd{pkwomntrfZ802AT)5Bgsqopooppopp€o poopopoopoop€opo‚pnt^KþÿûÿŸ K %3BFWk}v_?2:& 1e‰˜—”a’‰f‰|gŒ„tNdc~toduunossf*(,.()!*;ftqopoopoo€poopo€poopopopopopoppop‚os^KþÿûÿŸ„C-MXX "0*Xšš £‡a†‰ƒxqŽsa‡ˆcSi…zoslopoppoqP '#Vuqp€oppoppopopooqopo€poppoppoqopoopopoos^KþÿûÿŸ ƒ-(9@CIFB7.1>BJKKV/">7mž•š›\„ƒnv’q\z‡bW€kpo‚p€ov$E=oqmpopopp€o qopoppoopo‚p€op€opoppos^KþÿûÿŸ ! D  )5AEJKEKXi?-<5q••‘Œ~`…ŽˆutoZsˆenkopopopooppntb_8;{nmo€pooppopoppoopoopoppopopopoop€opot^Kþÿûÿ¤ ! €42>GKH9/CRYZU_{p^]O/62qŒŒ€{a„‘Žvq‡na{l„yhopnpoopp€org V=yqqpo‚p opopoppopopopopopo€po€popoos^KþÿRüÿª "%0=GZQ7&67;C68Yu„rU.00lˆŒx€c…“‹pi…j]‚ystqopopooppqmvF@^ytqo€popoppopp€o€popoppo€po€p ooppopot^Kþÿüÿ­&#€E /?NWD5.$-('%7QRd†l:13l‘‘vˆn…–‰fd‚lQzŽrrnwqopopropolbi81]xq€popo€poƒpopopopoopo€popo€pos]Kþÿüÿ«"‚F 1IRPPG.- .2:U`K_yN=Bpž™’yŠr‡˜‚dazhY„…qqhrqpnoqnj_ZPB@- 213EUmlloqopoppopopopopooppoppopoppopos^Kþÿüÿ«"‚U ALRQFWO- %#'.Ii\=_RAJo“”Ž‚‚f„‘rngpae†wqpkppooqj`[NF:757:?JLQcouomoppoopoppoopoopoop€opoopoppop€o ppoppops]Kþÿüÿ­)‚B!#2L[>CI26CPVsT4MAGp’…ƒ€d†šu_]tn|solorqoqqkbWRPPQVSY]bgmoon€popoopopoppopopopnoppoopoopop€oqoppos^Kþÿ9üÿ­ " $@YbU=229?;8Dup>3FEm”‘€‚g‘ŸtZ]“~psolqrq€opkfc_bdbhgoopooppqpopopo€poppo€po€poopo€popopp€os_Jþÿüÿª€€>=M`ecW>3!20+3Rm‚] 6Fm•–ˆƒ„dˆ’l_pŒioolmqrpopnponmommnoppopp€opopopoop€opo€pnpoppop€o poqnqpnpopopos^Kþÿûÿ¨ƒ+ .:O_eb`V?);Se€u'+@l˜—‡…]~faz‡vollmo€popoop€o€popopoppo€popoppop€opopo€popo€poqopop opopopoos^Kþÿûÿ¢ƒT09O]_c_J1  "8T`v†5%:d•”‹ƒ†[|„jnxrlsppqqopoppopooppnpoppopoppopoopoopoopoopoppopo€p€opopopopo€p oppoopos^Kþÿ2ûÿŸ/5CW\\Z?5$5N]sŠ8"7i—’z…[ƒ‹oxutgo€rqonpopoo€po€popo€po€ponpoo„p oopopoppoo‚poƒp opoppopr^KþÿûÿŸ€€,+29GKJG@0 -4EZlz:$n£‰s{}]Š‹~qqmmnopono€nonononnoononononononoo€no‚nmonoonno„n onnomnr\Kþÿûÿ¡ƒ -:AFCD=#/.)B^mz9$n«…‹‹ir—†}yu{|yxyxyyzxyx‚yx…yzxyxyxyxzyx€yxzyxzxyxˆy xyxyxx}gOþÿûÿŸ†€  ‚#$ #F<:8<$&B1..-00/.//.„/.€/.€/ ./../../..€/./././/../././../././€.//./..€/2!6‚ÿýÿÃUb…`^^bc€b_`_]`eefifbb`honnmnmqi‚klkllklklklkkl‘kl€klkl‚klƒkl…klg…ÿÿ‚ÿýŸû‚üûüËûüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿt8mk@<ªŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸž¥‡`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ^ÿ÷ûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûùÿÕ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ^ÿ÷ûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûùÿÕ`ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿØ<ªŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸž¥‡ic08*M jP ‡ ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cÿOÿQ2ÿR ÿ\ PXX`XX`XX`XXXPPXÿdKakadu-v5.2.1ÿ )`ÿ“ÏÁ_‚¶®C ¦IM÷ì"X42m³" ›Ô9oòl¢¨1aŒ”mV³6RûˆFÌ=â¢[}ý‡(†–-°Ö~–9+çÏÀ¨K(–zFO9¾Â}äÊü¥^#Ä•H ·€lÍ…ˆÌ@Ù $¨‘°ºò% Ãê)$ÑÔª$k… ±Œ­iôáéN Ø ³´E®Z[ÀP­k =íîÍ5ÏÀüRÆ|ôtû†v<«Eb‚ɰY ý|“‘D&'÷8šåØ0U+I<ß6;G°œ$²Š¶I²Z—¢·Â8Çàsô?°e=Ýp'/Ù°û×"Q6È©Å]†GwdmÉqmP›@ge~R üZ¤§å¿x&àA_‰fB:"䦥¥é¶„J»†$ÃÚ–nÅPUÙ_·_/«(`V_Éñlj¶b›Ê¨'$Vðò‡¨çÔ#˜×*v¤=¿Ç– 2Žù¸@þÞF?h Êc·Æ®ðuÍ‹Y›B4Ï™žO‡?è•)rZÝZ’ÉR ê&‡ÚÃí*ƒê+ƒí.‰úóœæ¥è.¶™áín°¤W«ïžú™WJØ Å»ß‡Ä¶-RöV—©Úì•’Ý¡ˆjgK”™H­˜ô¶JÃôÏ Ñ•Œ¿Ëƾ¿4+Å‘–÷Ûÿ¬%I6#ƒÎ®º¤§Hó5‰–#áó¢†îSEˆ)7׿Å|@·ÏåÃí*‡ÚSÚ\]Ùñ:_ÛÔÁ:õ7æI³,ÆOUß2: V6ÛÄÃñ—C%ïËÒ¡ü^‚­ZYz: Ðà&(šùsjÀÐMóÌw¾ICb°?´Èi¶SPG+16 :/»u¸‚Dö]/2óuëˆhyý‘¸ìݱøºbÜmŸÇà-?1è~ ;9kÒQü•àb¹Qï62¯CžDuï†3Ô¤ç“]’÷I‘'yUPठ:!KP>†Ø,Ô ýd‡û(>»È\Çá_GáfÃð®€`VC¸hJë7•kìDÁ57þƒP´Ÿ‹uË¥kÄ”½Ù dÓý;eýÂøJr;”‚Æ{¼Žl£ñoIL§8 Iù°þýGØí–hovY`âKn¿dÞ=L:™Ø Ç ùÄ7œ0)†3áf š(Òlñj†T‹N…,t°EG.ã)Ò'´;÷Üï DëÈAzε…Í]Me‘ÒL··ß3šóç°’йØÑˆ;®§È ,òbWó‡ìð™{Ú3E­øY®%~®Ð éoKú8¸qa%aù ô?„Ä7[þ©yyŸà´+Þ‹cð—Ù#ir¿aÁ7/ëlKeSŒ ¸)¹å¯çsáìÅ,R#X¶šõ«J¦¸ˆCûþgV A¶PòøÌ~‹ðCÇ ð¹Læs¾E‰›d§šý¸’,w é$Eëçž¡4›s¬ø}$£ÄŒûšèž©„þèáE •ìëd7€Ô\™>'Ê¿n¹¤aòT=BvûÊ—š” Ñk¿è…U+°g{WÍ„*{_ „Þ+àŽÀ€·^×<épƒ5VÒ-©Ù·«¨@@VG9±Sëhé ¨l¬Ùޝ½NÌQÍ àfFr†µ>+c»§Öu> î£}(U‹;ŠøEœ?Í·æ·Í™F´y. ±“ì¸'SÿKç³S+·~ÅXW«––Ýb=·2 k;UÚ|ì•h´³œÜËJ•¾eäšþ¾/ëTÀðú‡#B‰ÀF)–¨°öõ}˜ÒœÒÛlȘ·}"¥ãí’¯F’ÔÿidNØ£,]Ç¿±ÃÚ¯—M5ì/Åðwô²ÀßµcqÇáEGáBÃð¥ÀœËhº“Ž0Pº½>ì 6ÿC#¹½®;“¹šŠÇ﬘¡}BÄ?ÞuœJvfÌý½$ìøð¤E3. ÉñÜ…“ðʆ¦k{¶vG G†P8dË,«œáŸu§ÿ$jm7ŽîGùx€Ý©_\bÑês)‰ÔU=²L0?%v>âÚÍÍ¥]œ rö7åÃdú8Ÿ$$Þ¿ã½´ÃFU÷ø oôô/è+i2_5»2Þ$ 'IaHÛß‚dñ函 )o”rgóãêqCþs‘!* …ÈŠzwÜÜ€1ý“XŽ€ü:õ;ä0UÓ-‰L€ÿ ¾´Â˜Ã?c)E?oئUZ›œ7Ý¥_3|‚éY9“Þ¤›ÑØ4Üì‚ÍIò÷™%œˆƒ€¢ˆU¦2–z­:o3ttéð±,ìmùÒZ†Úgë%¡¶Ô ¡XŒÉàA §<=O€Lw«ë¢_¤@¥xÉ ——$§½4ë‘Ë‹…2ñ› `-@r›‘3½2["‡$U;•Ê/­°—«óÑRÅ•}Y‡å”ÏÌÎ?X~€bX @ŒÃ;Ry «r7«î Ã<ƒÒ£ðI(Ö¹Ky[†Õø½°h›µÙÈÎWÚ:¾*ÔžÙDgäÅê†,CúR¨š³iü­˜à¦ßÖ·ôè DkW ¸ºFú ‘ó£`æÂÐd­Ú!+!…îüXf,¶³îwSÇáÓ ~,ÃðèäŒ&$TSP‰¤ó ëïÕ0ª |¡;<RO=)´ydê§Ÿ?*‹RJþwÜžoXªî9 ªÆÎçÝ™yôßWðž ]OrBd0yË2¼%}ôGåGô;€™ì‰$<Ö£aM(ÚaL(Šg=üiʘ(ħ" »u›zìpˆ¹Y£µ{®ÉRä[2„.ÜãjjÑ]×<ÿ@`v“‘ÿ^wÐb ˆ:Ï0ш]sqöó7°þDõ椭ȵ¥®§sõ¿¦Û]tÉã(J†(DˆÇ=DÏM L?Ôkj~3c6·Î É"_bikí6BµµÅ#ƨd&ÿpȶ5Ô’ Mtš²°ŽÏSÊàVÓýDæç*Z.9 Ͱ y+io#¡¥Õ!ZÏ—^mH(Ae ß»bÍ4TY…íµÖÕ¢c½ü®üØ”×R­(TUÛ-!÷¬óºb°¡š~0T"ÉÎÐä ý*’ñžØùm¾¥Ä,|y?ª=H€B›ùa÷¶õË~qQÄÐwOxt»"9¡.)~·*Ap9u`;ü‡oü N¶.Ö°]„t£•Ï""õÒ1G{†B{Œ ªi«\§æòÕÁïÁù ,²Àr23…OŠ?1Éq›À2ìfí Ÿ †ú'Ú•"Ú%U°ùc:íÝ ŽKÈ<µ5 c2|²j-,{ÃÒ¤3¡mh2íi±Å¶ÛÝ̨šXèÕ¡—tõ›óŠÙ„M³dJ¯ÎŽ GÉô7<­àã¿¥‰‚Ô$D1†ïä YÃ{…¼Yâ!W£Q‘„šA¬;g‚È•ºüê¼êΔuZý ~!pT›§iŸb »ˆ°^úr¹·ÉØH¡¶ãxHÄd¬ŽÖ†ßÓýK·²‹Qèwê ‰ÓÄ@k>èkÏ0Qu+¸ +ÐÙ¾¨†ÊÿJ ,‰“þ  )¶eÇá»ûvö·{ÀйðæYyž@ÕîÞ¯BÊœÝN%ÚøöµºKG½™GÐÞHDà¯í=¦:=\†êÔûl/ús‡µü¯cÚD¯ˆS—géÐbz÷aK§ùDÝlýPµgÆP+qèC»ÿ@BT¼ÜÀãØ¬T·Ûǽ”vŠj=övá|–.ËÖý$À J J·cFàÊzÄa²>­,à×j ¦¨Ú,±c+OXžOÃù¼—%×b<)õÌ‹r¾jBRé)˜åËp€šeG¾§-øš1qš1hìÁذoOfÇN#@ð~úÕœV«^hˆ*C%âmÖXÅ=6Q©‘W³¸‹§¡¬À`š±Ôè²$¹Vm±ÏÝüõKW>Ët²Aß›:»õÏʺ#†Çä5¼·ËÖ¿*¯bób)¾OXZŠH"Á¶ÄNÎNü‘’fˆ;̈ùm´ }çìj;Âe†cË]»†>¸˜ôÿ ˜ímP0`}ÚœY÷TLÚu}'0=d‰ýÞV‡€¦>å=r£Kkè1õ…’˜½s€.ž«J0˜Ä%XÖM³²U¬õ€ÖÕ}'æÆ&[Ô:{ׄÓɹ0¶KL`ðü£ÜÎæL8Víĺb´‚B(‰0Ìì}ƒÔ óŸ¢>—§Z».=/ +5„à 0¶µ„|g¼È½SÌ×úÝ!©KÿàQˆ±¸Ðmê둆ƒ[{$ЍfæÓªm¾ûpMQÏ®…Ü¡ëƒÓÿlš”Ø;ÛI1EB,ö6IûX¿QkõO©ÊÙs;a‡l,h¾`&É­ÐG×@‡õØ&ôñ¾¼—µ ĬLõ#ZŒ¶ã‡¾lÛÝ?Y̽Ðà|²,”ï>¸G(ZÁOÂß"*Ô"ÜÎ2ëoÌì«-)÷¨Æßé RÅ9n«M¼e=UÞѨ—•ñß´±W;+f}ú¼À­.~Žn®#¼’œkß©D9(Cè¡m¨Kax ìÿ`faºÊíñhºiªâ¤ A cd#zô,”ÿ<ºpN6[ðnÇÑÉv™¡÷ o„mX×<™?‡Äxøx ]Ðß–ÅÑLMÕ9ןÀ­MØÂÚ¢@’n½¸„Ú\{š 1˜D†~Ñ`B7{¨¤’è£ÿRŽuôÐ2ýù3À˜r§k§Û¹š>ƒzAxtÉ,bÒh¨Öã›ÎðÈЖ!ª*Ý%¸ìHªÌ“»ëÑWýðÅipÄ F" ÄîÎÜ—-b¿ô/ü±õ)TÌb§ßžú2:¸mn‰Là.ê±÷]QÑ¿X‚´ºë˜¥“5,PÐþ'Äžñ7씑y‹þ3›º­î‘N+)!Q'´ÍÇòÅÂm^?£p™äA¡mg•9}£µ :FŠË<à•ÖøÉÔFu£¾f¨f·^Ãç 0H²;wjnü»ÆÿXù[3Q‡äD}5„Œü$R‰L1›l#le].œ§ ïàå•{½­S¶'£ŽîÁ½Írù‘}ä‘1)€Ú¤¯6 XãtmÞ3Wœ‚%>…9ˆƒK¥èLMÝPϽ€í°D€>˜Ù›°DoÚfƒï7=6€-zã€@Kÿ<ïÂÜ£¢ã-fç,äHIgܲLw‰~ÐK™{üÒgp8Àr‚ó·­öPÇд€×N  І;åY¿¦§$¢Ça¿Ž³`ï­'ª?qZ\Çá¼qøn? ó¶(ð 4³œ¬GŠHæ2LŸ²¶~²­qõЪoüÒ“-´è¦VbÏ/öàè‡?½ì ¨»“­«äÅä/ "zYÜ}n²ÒöÙ×9;{“,ÌúY•npìØ/–ÛC\b¸ ü÷>‰wž\zç/Œ÷ðzaŠýƒ æ€ÊÞ•³TåõÀv •‰PŽ™\~Þ‘íHgM︳6ºò*‰ˆÏtˆ Ìù`r,ØÖÆ0+q å5Øuûˆ®&ðŽÉRa„ac8h-{WRcõ´.Åÿ C±ºÔi5£3¤7`³Ÿ˜vÉ(Ê3Qô½ÄþÛDžÎ¿LÐ<Ðַ¢G~¡éC¯we º$™I¹3¨¥¥Zù‰;g¬„â ð{ÍÓœ­I6н?åŸOolzŒtóð£ÔÕÕÀ­äÂrÊ®¬ã«¡?4ºÜ”â²È*ËËÍgÏ–®8L,='êï™/—&îmlB“ŸÛ)ªU4·ŽýïVk Nv}Æzu²²þŸ®8˜t–ß²XqÂ’SÞöt(àòlö:XZ·&û~e°ä)—ù•hñHß½–7ýOß°ÁûGúÔýìö­s†ð OšÉ×ûÁxà;¨iOÙg»iwj‘ß`}gqìø4EŽD\!®±aBêóþÏ&+s^Úö! ûLBYudÈŸ¬ ©²CÔÒfr"{—œÿ ¶ýÝpfnF,.§–² ŠfНŒÜ“:oôí0wÊá7®ŽËþ7õC„¢ÕqÙ_ûði¥ Ȇ[dP‹·†ó±LäÅQe'"9‹¨®ßܧ~"Jã'ŽÃ«mšÏëvž‚f„\Ç´)ÉJy¿s¸&»·V„éð3£Î¡N ÒÆAË?k^T°ßõ¶=/ä¿á«'‡Ñ?æ#@«åb„㤠™w„D‰¯çÇUͱåZ1ä?/Ž1e¦ô;¿mÖ¿0n†S/2myyÅŽÙ.µm¸ªå°¢7¼“¢xÝ d{Èoî«ÿ0NC‚dS¾Ö¦üX·_µ³s¶^Ý®ÀEÍ'æÜW¢Ê"_LÊžÐå^‰Î£ˆAÛœ»§¬"úÒj#n‰×ÅETÖ±œ1'€ÇŒ¬•¬šx2U^<´Â6 ±™; ó0¤T)oÚ@‹Z •háVà&Ùˆô3`”qŒ•žý+°ã®ø]\[0…>•°en¦IÝÙý¯·T32É&ï™3T1õ8}æ.[5 ‚Þ+6á~… †;…­ÆÚ÷-ÂäÆç“YÙ|g¿Ù€ÓTÞ£tBWK"ɘ#–šÍöc}R+¢ÿ:¼œ{À¯{Ú’qÛÚ=Á Ñ"{nÂF„èÁñ$ Î0ñT$0|ÔØ™Ó$#Á¦Ž¨o-öjí²¦NòGÝ>‹ü_‚¬MÙתá©F¯µ ¾$W}cÇLÍ\ž®¿Œ‡µ¿Üãá…`ã`pƒØüÛ‡3æS²¾$' |ÞBÕC(þ^‚R(ó·ÁÉ_B°xƒ_*ïÆ/F½±G˜]u[1n Å2•­~ÿm¨Ä÷Æú¾òä ·»’õ\0§?×8¾{¹Æ•S<Ù&¢»È‚Ce”Ê3 ¨?‰Ên»Zm}Õ— (i¯7¤ƒº¤OYD2í;T›J·‹ÁÎ 6ðsÔEÑK¾Y , ÅHJözãD½3(Ï f=ÀT^²ÏžwH¬˜“€{c}<¯-j±1–î :­]T‘SXÚVª &{KÔˆ(¹¾óq1Ën¬ò¤_¼* ±ø…p†ŠÛ‘F4ñ+<†B%¤žÈ*âðŸ{Ã*æßQâØä<âÄÍŸÇà•‚thÀ‹ðõͺ G-gˆA”  Ê J#‘ÒwÛÁtû˜+AF¦ã;š¥þ4ž®‘³’Ù#u9Q’ŠŠ0oq¼Q¶ÊSJ0ùKÊÞá©îE–¸” †GÒìŸ   #šÖÁhª‡aÒüìÙ€aæ¬m±µàIŒ} ´~†Ë&ÞQ„yѧIŠâN¡ÏÖ•r©#Dqz0ö¹N_çüâðž0UTö³Ï·ÇáìüýÒ@ÜÔÝõzÀWÓ«"•P½X il&ɱ8~ý¼×ÖæZ«6z Uw-_  $J`Á “ ìw3m òEoÙÇu v]ŸÛ¢+ÕÄÐêYÀ¿l¸€ÑçëÔ/Yè#¾ÃPà~'д¶z¼þ¾ Ò§µW  r,ÖkÀìdQÿvÁàÞöY‰ì(c¢ýXï}Ó'†@ú*]"©Db1—F3)§ºï%OŽôÛ‚ªsŒ. ïiÅ1‚(ËZåÿž^¦Ë’Ie¾ò¶ ìÓé S#›ÝÛÞ—IOMëJå4/Ó±æ!e^mËÙêç«(Wvô˜0×2);ói©øÑAX"ÊŸ:¦·ua}ÕiÝV=ýD±&tçwQª¢Zcùh0ðfš=m¢‹‹ˆž"êÈ¥š$ù«MT'Åò‚¸\ùÒTÉóeÞ¾;Ò°‰®öºR¬M02}±jÎìÎ=K¥ÚŒÍgô—ß¼F,öæÝ.\º@ k""­‹»›Àt é#O/aºÜ›ƒùbš9½«Ÿ`|S€««ç…“͈˜ÚBk8J¿í6JÞBNFgP*‰¿à+5š 7VǪ‰èÚŇ((Dÿ@æb}ÅUKֽД¤–üG4x…(y•äõ»GEÍ-È»qT N©Ãö;QÿaðŸ›ÚgŠøõæ¬TìWdEÅkœo²aî¡ûeÄ6¯µØËb¢²ÏŒ±!(‡çÅL™²J§ >ÈêµVRrØèŒkGb¸µÂ¯F2´ý#rI­ ½:#Ë:èèBÒ۫ݘ5¶Q`0QÂf•ÐÂÑ7)Y?¾ì‘užZ¥8cQ¹$ïÅÅhTùß()ÿâÅ»XÀö|’¶H¼ÏÛkFîO%ÈÍ;Mmð' Aaø§¥*tÃѳ€L@\•ô¼›Þkb°ò!ãÎV lóN•2 ÷:væÖJ1ËÈÍMÓíÒz~¤oÇÇ•›HìÓ„úC&e “J8M£J^™µ¨áëÌ"WQ@ ²ý‹F§kUoJa@Ôß]¦q™9›2 ŒGÔ\2àôÔ¥YÖåè<ú{ÝÄ8ln¤F@íg rQ :À¯Iqîzi®¬Æ:¬ítVû[‡¢µ¨<’c±K?eƒ]•r¤Þ˱é'?é\¤Bâ’Fcš¿qãÐņ«l`'bŠ“d\ðÚ¹p³%(1¸ìk]u‚ï±ÖnÖÈèè~í Ù¿ª¦Û<+pZSç +e<ï4Õp$§%^àÊÕ¾=i°×UK^w7~kx$²:y€ô®"°Í`äm6|G;&çÖîxÙ­zA°Ö%œäŒ<„‘Aš4*eZp}(–0ÂÙ~…5 l¤u;3ëRr.!²ée±¸&¯¡·Ó¶ üº@0-ŽK=´D^ìˆB´Ð]Äzd”u œ”d”ÙŠLÈ9}1Ê„þÄnK¿Å˜@±¬KÌÜ™VS|üˆneŸi¤Ò1Vi©NZ†¿½JÄ¥Ä_=Lj·ë >ªCÔF|X3貓)Ö¶muä·P¨^jêewúh°÷þöypçOW UÖÕz«r_]y›Øž×ÆèBþ—ø~”ž8D’¦)ÉÏ3¨ª‰Æx±56)IJº¶²¡Ú, x<~õÿOÚ Óƒ:®}dc y0¹Šâ ×OœÆkpÙ^Ãuõ‡™ø¯¶¨l ý¶˜BÛsmµúl‚©Îc–§ÑVùZä6þ¶òSze:ðVOßìŠ&VÜŒK°Ã­£Ñè‘0€µö=ÀíYš©>ÿBi–oVåÎåÙ¿òÞY1-:œ°Dtv8t)«õWsN°ÀF8€b65×Åzұ‰t>Õã’æ)kö”®ÕŠ©j”øø¬u÷’É Zö–•,Ñè)šÀ. 'U.Ûüû»rPkd9å×MTÔÀ±Z£¢òos¨UÜäíÏfvΗ’ÂþZªËðÆS\ÞŸËôÿN"<ϲ•–±€‹íXBå/72þB¹þ³·¤‰ä©ÎÝ×yt0ØÇrD6Œ•u=P Wà£N!l 0&Ñ}õh‡ÇAF‹ ×? ÃÌmtÁµšðäðùܸ¸ÔŒZÏ‘ºÓæ+š8ýÖO†\>ô‘•Z«>¥Œ™(£8ð—Ò‚«½÷T‡vôD}eÒnHsË]ËzØÀîm6x\Rǯ¸MdÍ] ±#Ê!vëYRÛTôj,p•ôÂÇî¶B1!•#ÆYdÞ£¹³éwfo ëÝy7à“öS]—þOÐrÂékå¥0¹‚Ï?‰~£ÔOÐ{²ÔR»sž[ÜÛ˻Ύ¤ ±±yz²ûïA €…H”O¯û‰X˜NBÑ›íŠeI@"«ß³‰2˜ÜÛážIíig ¹¸4—–tÎ! æòº÷L¨RõyX‰Arí:?˜Ì„øÒå窢_Ó½®ÿ/ê*ƒPðkÅ.™VƒÇ]ÂäUë¼—ÜŽ%Ͳ£‚[Þïέ…^O¬Þ™Þn¸ûyB之ðD—ZÔóW®Ýï| Ô!rº•3èO@Üh*϶÷­~¯Ž7"jÓÓ0N„Ñ­5Ô1ìZ-ÊUw9¢Hùm%ÿ+Ïœ«ˆ7Ê•4íË‚Ü4^„ßZ˜VT#î’ô:?è•\Œö•LÝ]qtE~QÓ.¥ ®<ÀkHVž—š7ˆe#:|­ýF³o˜ß3‘Bèµ·/ÿ*«Dé#üÆÈ" ‘üÏ'" 6_©‹BlÐoóîüÙf­í€T^**ÆìÀX#½©±û¤ÒQŸÏÂßï'Ÿ¥ø%¿™Es\œqˆ …ÕW«£úÑEø5Û‰€™%>´Áô'µÛÜqÍ~±*`'ðIÛJ³<¥Y‡/ÓMî+ç/¨c E Ãa¡ˆ.ùÅwìÿÿ~i(DV]…ò6û*s[Ü3¦ “sUê“ +u†À*úÆdP¤ SM<ØNò”©7ÜþÈÔ-p¯ô›e?¬>¡¾T+Tó¢2Ÿœ#,ªç>ó[¦BÚ O˜&[õ y ‘ú8@pQ›9£ÏU@å5gq…!¿od~ÔER´"ËmŽÀ©=ºx˜|R¸h5uû¿Ç†hXŠC˜ä>3ÙÄákúzÂ×N£Õl=[j­[\3OñŒc ð‰ûë†;Bså=´˜­MZ³ ôBÁlØ4þø`¦ŠýجqL'qñ#9ùb`;™I˜ù£ÒúTàOaM`aј•Š;Ù  Lb9úðY•ÕÿÕêC/§™bXÒé§ÜŒM;6ÙEÍ«Ìåy÷· é Ø-dÐ%ʬ«ãßßyäáîÒ cbϱôQÁ™} Ö"`Ùà»-E tEéUFU7°¶Ú¡c~•Ä ¡"Ãe˜{Å(ÞK鯇¨æ¡1I€Éåök5+›¢ÁÎÿ={"…§®vbZÛZ<™ X* ˆ$xnÁ.åö.D¡/‰ÿyÿ9ô_Íæ@y?; ¬ÂÜ»"NFØÑ ’ ?¬<øOÌNütbÓIPvíA 8VÚŠsòÎN®QE²Eöß_˜f¯$ǘb`ƒ{=ùKë^gA­–ˆÑ‹üä¶nF);~µÃ£@"†ó]ÔYÞ.$Q;$‚|åòÎíõEDi[=EnªåoåÐ/欺—"siñëÑOŠÍÕöžIh}5@åò½Ÿþs-æ]…ùr|3R;L0Âhæ l!äoð0>ÔÓ8Ÿ—;˜Ô’»‹†Ì*ÄéCعµ[·ÅsÂŽ\oW¬Í9O±ÊÖŸô¬£ ´Ü®Pk• <‘­eÛ°dnêý©[>þ‡k¬Ø:EÙx?î´k ¿žèFøñtŠr 9YíÔ‘ìñ%d£U¡sQP¡3ØÍü´R>¿ï¶7üþmY¬j„$\¶A¤ºGHt¡b¾%F¤¡Íi¤(U?ƒhϱ!V4ùuyhz ¥õúŠüær]ÜK^6öK"Mø¬;8ô¢öžô$¡Ì(/1>8ݘܠ‡ ãˆYf%ö#"jùác·0äÏV]‹{É%kºÐν.Þ¾/ÎOÅ´rZùBû<O¯¿&1á Nv-â]éÁ:°,pÅG]­¥ÛáoÇ{ÎA=÷ ̸íÑ%X`ŠK ›È𬣚œàÉ#ãb)Óø3ŒSßßã#ÑôMºMâ÷>#çõÝ·„·TR]ô Ȫ4òåÕ°w8²a-<+Ö‹¬à0ÁñÐhÄ’îá&W¿%@uúŽÀl4eRœ¡ÕπЅÚB8† @ £±\æ±ÇŸ»âÚ¦e¨+ÈÌú*d²uù“#A³_¬ï—}ð†%ž±&ô2YF.v©”·¶Ò÷™röÞìCµ­ü¤œR•ÁÀèÊ0àô%¥`2qÅÏHeä|n5³'ùñ€~OøÐ„ .¶XäUó>/ÐôÐÒ÷ù•¹ä÷ç([Fæ ¢â˜+óvŠÜªJÀ«0Šê è¨.˜_aV UJévâëÿ!¬Õ‡»788øp;×~ºzo;ˆXGÙfk"s. ÿˆUŽ=ù•â—¸=+4ÁÊZÑFõuÇV× IŸci£Ht¬/êÖä?Ø@˜B?[šßüž4‹ÎºÌokê îkn)áu'»9%¡YðĈG:Ö>¦ïüÃ8_i’»wf’fè8 [á ÕM‹ÌB{"ñ=3P@ÖD%™¬[Ê ØQ‚Œ›1ÿsŽI ÕS]xþ5«½î2{zæÞ®Û™´XUK‘ UÕ¡03"û¯Œ *;ÇÏr’Mˆ11çQê  ø¾ƒáˆò]i\RÓ=ñHs䨢Æ2«üñ›ÓˆbÂÈÜ™Ôr”k­bˆléDAi­ÿM­ ¸ùì €êÓyÐÌ&«Î>œ´°—[¶o4™Ž˜+»Í\#±‡¹Šªõ’ým7-ïHm; Ç;q¬m¯ê]Ó@ÒgLy6õ@¼fªšQ xˆ 2܃ý¥MƒOpóÜEOQâÑv±øo禩XÁâ¡™°SÆb¦¡áÖúÃÁ•LZ8ÞV=éšð\º±î;¼®mÒ4n|\‚º0kÓj–÷KÛ€sÉ 'sDþ—JüÑõšýË…o·¼LÁ‚×ñJC·àû’ŠªkZ÷ÉŒ9Žkq“± i[^¤Òò]j³¨éÙî<­(âHmO0œ0–¨‘>N›ÃJ¬5ÖHÈðäûia£1,Ò!w™x žÁ´¨1³m[[Jìôt–1*¶³ÌÄ´ø aÚãßÊt͈‘÷P–»})Z£ßaÔr§ÄØTF­6­x@ ºwmíVcL»T×è–Ž¯ÿ0ѯþ8À…_~æ›ÏÄXD\5Oð–÷ð ú†W¥¤h .lL ÃnÓQ¹ þ¯‹ð×V]Tå ä†Ñ™¤bãúbôŸüÏ †Sk3§ÙÕçù¦8¦ƒ+( ÓøLôÿ†2[¸Wi:Tþv<ŠF’´{HmK9h7õÊ zÇY¡i}‚¤¨‘¾TÓÄ ÃŒ$ƒ˜Tpèc¤wÒ{E D9Œuí•4ìÚøZh¤>œœÑa£Èš² c Ó7Uù|ëRèº9uft5ÚÔŒ· ] Ê>oŽ~ÑsÊnMQ4¬4Ã*Áýï;H ÙU¥´_̽E6­ƒ-%H=V–»<—Sðõ[0Š9Þ3fÙ.M•K|à)­ÛÊ;©Œ¨YÂFz\Öÿf"’mŽ7JŸ«rÞV›•iœ¯-´¨£"hYÃ6qÈy¬H›îûž³’ów)î€â¬›Ç€®oº¹¹¬?À¬òp3>.[ݯ¥QC:·TD{•mòÆÜÅ”⾎›èïï@•›mábrM-áfÏØïÉw¿ÿ³‹kÝ‚ÿH]à™ZSÒµ°†F@¶(7ƒ¤ÙçS€íM,F|_R¢gn4Óåp^I‚óJȵuDÜ\òa˜yfT£òÓ¸x~¸Ághå{TÉÀ¡Aà Þ‹FJõ­{¡_=Ú¥Ÿõ,˜ËÒÞä`zëüö7Çf¸gÒã'Š,ˆ‰­n˶£fôÿcðw±Y¨¼f_HV‘k šõr…B´èâ@MšÉÁhTŸ4uÒjMe¡ÍY´¥UöOsi€#óU)i¥™C|ÄT{°Ñ¢ÅjºÐȈOk„zTøÝà«÷7“Ž]åÏ»xHIeÑyÀ7A(m6š ¢ƒ?9O;[˳¸PzDc=j¾‰[.-åά§bÙ \ÕÕ™‚¤Ðä:ãóøÌqú![Ó‘«plÑZg€æûÀÆ!Æã[Å8~„9í$vóaü˜$ÕƒŒ^ÐýТò$ý^Šœ=­œ·ü™\ÚÜœñ'²l±º~/õÑ'¯FM³5oÇÁ›DÁž­Å–‘oï˜B èÔ*{Gø(Ó‘ XÂÃíö‰‡Ûì+·Úé*Ò¥¥¯ ÍÐôÛ°kxëwýÐà´ÖPü¥^‹ÂîúäÖòàâÅþA)Oé=ýú-oyýJÉSޝ"òw&Ýk+u)>ªw=ų4üÊS“£úÝl=3éÏ%5Rdâc/Jä¿{oEÅÔžÚãÐÎ+Ù6›u˜ªPçæfØ¡èЏïv<`'°09Ý“§ ×Q`t 9٥Ņ·ÇÒ:ŽÒg3xD -íÝ­IwÜѱ"Pî—¾S<9ÎçôYªe„)SLÁíHWÄ­QÓýTI·UTøRb§1ƒ×³Ó0@<œ¤ÒIö‚¢|0+WõŠg³ ¤áòø‘Í@Á†@6±#PËO?ƒ@wËýð]{ܽq¼V‡d5¯s=‹¡slFõÀ±†„ p‘~!iVû&Ú<䱑a‡®{Î|cÑ ¢%Ýx‹ý=ò]ÇÓrÓ2Ñ™K¹3e±¨âÔÐlt |³î9¼`¨æq{§=ÛWÑ×ÎÕ@“@´ú˜ø˜×˜²?ò-þ¸Ø1еúœ«^Yî]éëô$ ¨®Šœu8†«Úž)Ô$}~œ…ÔŒºèËM¯(pJ…{‡Hêlf… ABJʉÿyÐ¥ûftˆAXVÂGèôŒfä³ìÄYÅÝ&Az߃‡ÅèvfpÍ{,6#òIÔ\È.“ÓT9,ÄåÉü&S3vdsPä¯_!٧šïõ8¦ÙžŽ®«LšÍ1é0À2-…0—\9l7ô{¨6i]i¦©xQ…õ´Ù&Xõ1Þ–^¥»ãplý7,XKòïƒ{™þo‰º¬2&¼µ3%³öË^rb]¤aÃ\ÁzÀ3/ŠbKù,ŸPã©,Ú0¨‚ŒA7«Ëí±Zû²æ·JÏ¿`+¹©C7Á‰”ÆøEpJ”œoüîíêJ®ý±*˜_³—sâÁEÿ~!¦Pަ ±éSkËgrÃŽC>7ïw¶r¯Ë4›;JBÀ¡÷èLÜóϸМ¿D^tÛé“ûÛ’ßU%™eÿr‡â ¶cÆ €Å{šQJȦ›ºhVäøÀäNꎽçç)q’=CJ.GX¬ò€±ÿˆÃLÄ7$-­0j½–2[ÄQ=óf@tá×€<§!Ìiغ\;:cœîOÿq¬¡;3Ñ–¤”+g>·Œ¶&šób¶¼¾“ãùæ M_=Èùb¸…á¦îXoÀE±µÖNP{ð”S©w0E^M ¼JŠ ¦ƒ¿Íe}qÊy[Ó=`û2d ìµ(_øÃ|Fô]7)%|Í*l"n§5´N<‰4´¤f”ˆ q“Æ÷Öá¾üOúÝ’<°¢§¤è[ÛÙVÔJ—íÎãúä3sqH Jf¤—ïN5Ï;õâ±M#å\rŠúë Ù-6je)ŸfÉÛevOd}ñ=Ž‚ÿb:£I׆f§¥ÏôÏh5ÔF*QKZdÈE?:Y‚—gÿyôÕ5:÷õWZ"¶Õ¼I¦I–íåCd'øì®sÞú‰dTE;]ð8©ûò@Y6–z¼‹Ñpz+HÓ¿´ÎÄÆÏIÐJL¯ëïwG¾;E§[ã$a8ZþÌ‚_€<ÃãzËW—޹ނ¡·Á:¯3‘™§Î ŒIäûæŽ B…|f‹íÎåëùÉ­'­%±Ø%R%‘ÜI?f§ÌŠHC<¾Ê?ªÝB é\n‹„øUkùšOß_’³–çiªû¤–Z´–aÎÝ‚oežP—X\6þ3ô3Ë=YT×rñWÊ:5÷sr:¿-x:•b3%Ù…xmžÙ½ƒ68Ø·oo½;Æú>†è0Š céáR0ɤڰÁƒ)ÙÞ'9T±€hcö|ܾGù¢þ˜aRDr›8cÉPyüc;5qÎàTbs×Í:ç7úÉZöŸ²=L¯'•±×qÇ:qB¨ç÷Õ¯Jò¨ªíŒ™_<ý4ÜxUCô?Œü¯¤'úSQ¶Š¦¶`<”00M ®x1xJ²ñЙ©»‰Üjœƒt³cܼã:o†#Nn¾eXzå7H úwÖõ¨õ¤)»ƒ˜ª‰óÅ–\2;oÚñ½4–C“—Fœþ5 Ĺ2½øZ¤ìŽ,ty1 ¯9ô&êØ<ÃÖ mépv¹-7íQörœö¾a12VœŠˆ“ôÀð –ª•^N×Ê­Ò¬§lŠE69ý3Á@˜b¨}P <ðÉMicĹb¤G‰ש"W8û.g…B}ü#áÞ­¯æŒÌ±ñÝiµãMùÙ5tô³œ}`ÌòUD™TÛ‰1`dÁpç ‹ºésbô££m»YteóøË¨½-¢j¢¾Ù{ˆü \¥Gz#Ä -ëžâíø]Pekà ú)øÃE QwȤí õõõÐx6Õç%-¦áï)á]'Ø›_IÒª8lº`®æ†q0&ôÐ@(b mm¥ï¥‹¿»-Òœ,´úÔKHí…kh÷ßÿo£À¼‹½ ×`ãÓYí’ž+óHMù\]Û–Ãò±o ÷ôwIÖ"Ž6D\øÝýfžAbSP>˜tJ^Ô4‡ØJa¨˜8—^âÙ:Ϙ²*†@iùQ˜Õû £I¸Ëú@tÖáÚƒzlÓl$3´PŸÑÚ,2EÑIåZ=Eðú´:)/Ȩþ!n¶Ââö/"€ék) ¨ÖáÓìy8W×ײÓÁß1‹Ö¬Î%H³Ù,U!}2æ²¹¾†4  IY±ó³…l>q9n 'º‘/s%â*ÊwJ{í8Yßõ¤‡h_„ ;PW.EŸË_å’$}ðÔ‘ð,Âqz8åùÆöu ÄEõÿP-Äxû)ÉþIgo€_axœVÙIÍ/ø…„K¯]_ÇõÀýJ¦T®~‘ÛF‹[É4„æ»5 h]gÈÿP¦d­\6_û™TÉ긔Dh\k®lœÕ,qòþítFºÚ>`ßm\°zCY*&V«|Ó‚§YqŸí†S…”Ú³×­.&ÐiÄ>% *<ÎæL<«ùñZ´©|+%54úS% ŒQG¬¬5J=×,ëüaг$ì4ö‰†Þ5ò²*|’› )úõÀÁ¥1v]Y× îÁƒ9Ÿ ¥ßrÓ“Û—Yò¾5ÞĪùˆõ .„‡éĆ k®†ÑЏ'}éw:[;—$¾§²…üƒ>J«È“ˆ£Æ£cS<ø{•¶”– B¤X´ÉÜîö ¬ëVGÞ2WKY Ë› ø|!ácpJu晾Ö.C€XUtTÏ׆ÐÖô°Äøî¢­½ãâj¸°ØÍ‡ó°êZ.Bmm?µa칸fŽ+">³Ì <ôå/LžZ!èŒZ?±Sh»û¬t'ÑW²àÃ[Xür>ð#$q{Šô+©­gIÑQþ ÞÚµr{D¨9†áßa2Ü}#` ì—PŸ4ƒg±––wp–ýÒÕ'ºOÚ¨-»ÉöHH­Ö÷Ã̶“¶²VÎ[ M·ˆd´õœ.1æ×oÌJUîXstw˜<Ã,†5ÓŽÊi·ˆûÏKÓ À “Œ<¨'›Ñ,D%ù„g DY¥úܲÁ ,•á_ú§v‰ÞîñùM‚IÕB¼ªžq)>­‚à¹Ù¼8IjàÔ{·"j¦ô€òU{B’—ºÓ耈ÿcY-jáÎÍm¸Ü&俦ë¾ë d{¾$V–Àö+Û?#æ$ÄB÷‹º’6cF9HWù„{kÂS*¤ãå†ñ´š*¼š,ナU”FÄ,‚6qõ,V{urF±u]ü«J‚Ã]¾}´cKñ…*ÇŠˆEÔ Ï¢£%µ6ÑäáØYË%ÞR®ÏzµzTxi¶`àáÁ€[WŽž qÈ+ÃѺUú›a[.jM#Ôh©_üê œ‘C ~fÄ}4rG¹¹ø¨.ó.À6ê\Ÿ®ÙÖÏàÃ.9¶,þY.¸¶Ìÿp£ôþØ¢jþúJÇ—ôR÷ËõÍø¢„žÌ]GnRóK„, Ö,Ô€Lì8º›š[ž§q¹A<ÞÔfƒÍ8ýn)aé³?™­ëø ¸LðÀ Û âÿ Ÿÿaí2`ÔóûSôG³$¬_-ó5v¨Å#éïØ²SÃh²!×ÁÙ•^SÀ áDá =š(A3€ùbï½e -ïl • †êÂÀAí zd†ƒÙ›¼àÒSSéeͼH ú]x>^t+àW+÷ºáhÀáúGi¹jöã¾Kã$¨¤ÃƒÔ‘Ëõ©8 Ëçq¤0L”HÜ.…ê"UC]3jªúeÙ0¥F»¿‹Ų³Œf!5Õ – õì¼Ð˜´D™ú²¸œ Wð*”m¬HS …ó€‘4‹“ÎÏõwäÁº8«‰'&I·Âйkû‰ë)W¤‚;¸ÿ „}HO—ÜDí¡p¡#ê¹e¼ªL·ÅW†E․F³£þ’Í,q ”ÌV”Á`¶È|6IyMu¿V³ŽìVnÅ7´»ÿ1¹…È!Ó– 2«¬ÊÔ±ñ70 f[›%¤KŽç¤YWÛ`4+°Gw.,¬ˆ}†.4.“„˜šÒ Åía³íIÎeÜ®ç| 1U@¼KXù}–Æz!9ÓMh/ta색¨#þÝq…‚>jƒá+ç³üÚb¿Ï%¤Uó’™5–2àŽC…_p?ä‘òoC%Ãsˆ$±¼Ñ¢¢Ìù®Mí0y»Åð­ý€Ãìi%`ß(êÇξ 2K›Í‹÷èU—¿çã',è,¯õ°¿ëØ{wXAKÚ(|qóÆê ×ɸ»µ«Ùò×Bž˜:vàþÊÑeè£Ë R6X÷=»¦‚6^Ž…]¬4¼Æ̱T’ÿ‚ºÉ¥㎓Á úoÛAG‹GQÄûiy%³u˜Tã%žipÀE¸h³Ó$P’”ì/Ü2X~Åß÷·½Ä˜Š5 oþ>G2°¥ÇØ-”Úôñ¨%žòî#ç…RÞÝlíC3ƒ¸}ÖPŸáÕ±Þðõ.ØÑR‚Ñ#³2Mˆ®¬-ca×ã+|Ž÷øÄI@ˆÿš¿ 1`Lh¨¾Ý¼^z¨ª ¡s¿à×`t¾ù»Ç™#.,–íM͉`=s/Šÿ!èÙ2T™ted‹k¢éâMnJ½·µ±k»qëX¬°ÜU¤à©HÀ6¹Túæ±5L Š@H¿ÄRÜØ[@ñ©Çáí·ØJ?l°èú•Dº±‚ÙÃõrõx×ú=d=ò5[žòÞ cå\0m†jš´@oö¯ãwŸ9—-²Z™¤ßº…Yõ÷OeúŠåâÓi/€v£†Öuy€ ’ÛKüQ¤|½?ß±ö´ sÙZ–÷ÙÍž\!!Ó«zNÄæ¾ñE‰íõ-¨óïâÕɽ¬š/V}eæ«W…ô®ö_KƒË‘œ·ZªåjÄìF³ ÇýX%Hµ@Ön¶vŠ×p~I6z%VVùßÀkNš,¦28«›‹ÆƒX'˜QÖé¿U†DÐ \ZÙ‰BóˆyBÃâÊ”¤9A€ÙÊê ¨Q=YðTrEáÿédûg¿UE>ŸyC÷vƵ…éÐŽ“F½â‹KÍ>þ#퀔ov¤1áÿ Ø¡¼0’`F¼ÀØ"P}Ö±þo3![JÑ5 ½<Öxµç Ð"É¢øÛœ°ó¨k<‘=%rwp¨–æµAcg€1¶É-ú­Elàß5NÿÏRׂ†÷Œ~jUÚÄ/qòŠ»j€ ÀÛG|Ï”JT$a^èo`¶ã¶žWßo°ÿUdÇüxÆld Å¨#wµ·â;…ða1(^—J1ŠD…¨Xd±þ8s_ŽcGÇäØósé®jÅ£¶ˆËe1èäº@V¢õeÔA˜Úºì”G¡5ú6$õ1ÿ83€/¬LðëO9Jû€-BWmÒ‰Ÿ-ÀºGjÚZX­ÿ}zhw‚«e ™*’°àßv†–‰–Ê.q`]¢I 8Jx9gˆiP»Ò¦þØUŸÆ'· ÷ƒçf)ä8*8µ—vmu¥“ruïËlxp-ßßgºBG¹5óæ ~M(ZbêQu9÷/ÕªÞÚØVÌL^òöÂÚQ>ƒC€×óožã#ž¬<±ƒôzÄ7ú‡šä<²Í‹:äu‡W°Íù4:N À½þÐ~´ùDµ´$0¸Õgª¦¿5í­!Yd~óùþup±¡O2Aq©¶žmÚ–Žˆòçî¦D.ç ˜L«ÄÍÿyŒöãÂÖÁQ"Ú.¼Q Ó‡-šQL£ªK\Úf+Mú•¹'H½ä«g®³8Å4¯dÙ&‰¯Å~ÿ6Åjæ–×¶©Gfÿà¶NæœecÍr†ßæŽ5óÕÂ{Š>VÚV˜ƒhÌÖ|^lÈó@Ù¸âGž»”½A9V¤ÞwNþçµzFh6¸Š%7®\Ù—±[é}/Š'ývª„êÀ²—zõkÛ¿âXÑt˜·ª÷«¼)·ÓU užêH΀~ˆ²ù ì¦=¡êbí¾äÄ|æ‹ê¤(Å9ù/À§•g5-{”égÓ¤½áððê«Ãn骋ЪY´Ê[óK ÙÔ'?ÂÂQ¤Û¬s¸»Þû‘÷7ˆJç! ¬H4ú§¯Ðx¸pEóùGzÕ†5¨“™uÐþÿaì[f¸¶"‡(¬Ø&àMZ÷$q B¹ú0€U£%—Q*dݲ#.ÜáRq©4wÈXøßgÀHÄ#·tmÓUì’Œ9†U/öŠ2B‹{OWæ± x¯ñXe:ˆÇAå”ð¾ÂP=ñ^—ȯ­¾Ð…Ò‰ÉH«!|Kàu¶l€®ÓÓ{ÿTifñň8 5mªÅt'Û‚´æì+ EÉD¶o¥‰)Ô‡hšß ˜•ÔF§×ÿƒ:z#3m ü~#Uº ‚{>z£‹UP¾ÞAÔÄôøåûÂ4¹DHƒcFw­LŽgÖyú'¡äÐ3Ðf)P?‚¬cÖò±*Cu½Ü!qÅ'Nÿ!Ø`¤,àhEá¨ÍçŒbu¸Ìðó É4H\1–õà_ÙJ&O¢‘£• !Š(_ùŽ‚06èGôXÓÓµ…o…™y·“PþŽ!×°ÄÈÖ|Ýô uGåá™ãüF™êmbÁ,Q.u®üäcc‰BÅ ùŠÈM¶/9z‰Õ'Þ¡¯+BÊÙg{°4?©Ð8Æü{Öt=Œ'üü©94AgE!I!+I1:/{©LIïÜd¬yþ@²~¯Ì#0V‡©¿¨†dv­|D‹ëXixXÞOÈ-,BMÿîÑ÷¸çš‘,tW£Õù¯­ËÎ/ëp C,–7b5ø'{‹oHf¾–ÖÆnâ=N£ JŒ,×”ÓM´ÉI³ÈŸ:NVU.ß`ì‹êŒõi8I÷ΪXy4åR“›èÙÉ.* ^¸ODç¢ ôšN£‹I'BFû_b™TYa¯+A¨;!‰¨™5bAô<µ±óX-žå«%цa@8/©°óíRI¼ü”ú7Zž¡ˆ¤äöX—ÃʲÂIZ‚’C»E‚…YzIäz:â«ËeRÏKóT/wêwTOÏÁ0sÚ+ÿÜeVªý´±ülb¶¬#2Â.xJª¿ãA´›e0äèÎÛULõ‹JèoQÉæðÛ)\dØlµŠúX–Ýò#•8È;I%ëJš,«+¾ê§` Š‚Ïöä^ $‚ Ë뛊嬫úRg\=½—EšÈ ¸N /¾MdÎ'wÈoreÍ‘a28ÑàT½§sÅ Ì5zü}Ù§I5P·ûô¥ôÌ×fB éCŽ2œ$ L=5y’·¼'ÒÉ&ÀÕ⊱B^ñAñêP!áâ7çµ7šòŒ>ùØk@ ãŸNÕHŠ$oÑÛÃ&Œ8÷ÿYælÁH ÔÛ`!#ä/P—[ÓKÅõEÿzµ–hdüa̽ b€ƒGÍ+‡¡ªk`’ÛŽÜIM çO ™ \˜û2¿ÕO5ñZ¯P¯.û[Šöü-TecŽvh+Ĉ§‘Ês—í ^]ÛÐcÃ…þq¶W9Þ.{ž¯¶ˆ½þh§„µË]œ{ºyÉ7Êx¼Ú€VQ/:t®²ë°§ò£Áïþô\%6FÁ¨&öwí̱9i³\ààj!Ä,W "p…;³ì°MJÿPM{ÆäÃÜß…]/G#MÞŸ€„s®Ô ²¯­©5û ýàæ‚ 3 An[×c&B”Ü´,¾Æu=µÌTãc‚4}Ä)’åêG•é–Â'¢‚믺ù1‡qBÓIÿ)™E/« Þ3:w˜N4¿˜k†zÓ[N¦ äƒV«êÊ¢²t]©™¾>OÊÐÒ¬˜÷tæh±Uy ãJ…0jËnU6š”x±c[WÅI7õ—ÎàŽw3N4˜Í–…ój æ;š?ʽñ¸:° Œ/OÇŒÐ&›ÆÆßb_p”»gË—ªCJ6 „,ö~&ï×–ÉwjNzéÿaeª#;"µÉ—ñ\x>Qq×gÈÓ5Í2Lõ"ƒ¾¬†H™³ëŸ…BO@sÁVÙ&“R¡×8Jä%ê½¥}>6ÖÓÉE&Ô@ZF¼û'yVEX2ù !‘¯ )ÇPPGè®C?ÓwËf³M 1jO(_§¾ÓÏeœg¯…€Ãàç•¶é¹ !0â¥þ3¸hj"ÀÞWœØË-š6‘ì¤0¿ÿrjéR{uæd}OR s‹¹t›3j-8r©Z SvDw#ûÑ[ŽCo×YmT|ªêÛ#7ñ¥oVÜø[ØA1ßw³ÍЍk³l¹š¸R£€î¯x1¼Sà‘†D¶QͲêÇ@)µì@Ã8%YŸ•7Cîê|þá(Ào8A½[9ÓàJÔ;"Ã\|¨-2ASh+©m`¢¾t¬úž•»Ç¸²#Ñ( Þý7åËááa oiz<íºDƒ*ˈˆÚÜ\lÊCï§dÞ—™^fg²Åòz.¿èWœYáÃÌT­/’Aïê`¼ 7ÓË8[{,#jk€ÛùæW¡ªÓ޾i_)LÛÔ^L­ë ¾Î]A7˜tÉrðÿhzkø1¾3Ø:|~¸!«/+:@†®…õÇm¾PøMÊL¬-¬?>•ìÕ»Qß~tÖnú»ðœFØämÛr­®Åv:Ç pfHyÔ¶Ÿ]ß>g…5uhpÈ/EFo–Xô}­†àjÞ ͲeçŠ?ýz`þçþ‹#ÁÝqDŒ¿]åq;P†yX‰Õ_?|Mv¸xŒ+^Ÿê§LAÅÑþ¶"Ž‹úxß*º-xʺvJó VuÁå­ƒ…>–°}1Cú·‡¦kç¯~áÀÈײ2Î0ÑË{t­É i›~5B ku`Å“é((åŒ.Óq”Ÿ>ófj<5µ«ârß JoŸ1!¨é6¦Då"¨)”€®¸6(K_Ô€$áìrÞhtyð”>âx­ÌWÚpRè—_Nâá<ò²?þY?^íQ¢äÛCžÚ%à-8ªŠ4ڷ®º÷·Ä_¸‡jêÙOØ{¼)^zØÙÆ€Lså &¿çrÍ×}Ó;¥à¿:üü #ÕÞ6J-Å fšÍ”üÑ“H»#ír.é<âN$ðm.B­N$4Kj!’ÎLÕvfµÛÌÇ4Zy`‡“GÅH‹cØQa˜¥m•èô(Ÿ b8ªSÇõM°À³òíç°ôö`«wx´ÔçÆ©ÙžÐ»òùo·¹’ àÎÔà±KÔA•8JÌ\tÖt’ÙkGü É¢) Ân)˜’-ùΠ’s;›ë½Ò«VèL;¡“5\t§>F¦{îJ³Ñ:²Úüáoðˆ.þ})éØiZ±Ï<ÿ~t,t\g,Š;8_šg¾?'UŠOfvîd÷[rfbœ´<ÅňrjG`·;«tê<ÎÞU:¹[Ü0òž'§lVpwüÁ-õ—0_êdÈê€Ö‰…¯H+²I’v´o´¯mÙt‰?Ù·HqõÚE©Øì Ñ—¾µ ÒAµˆ×³¬2â]„e”g‡†›ÎiÿyŪØDªÎèž4/ΜÙf.Øo( pðþ?Vù áÅïø^, K=ÖXjž`ZT#è6S›¸w0ºoׂ¹‚h’7‡,ÓL ÑuAã”~Ћ¿ät±Çœp³_^ß¿”'Ôäí»aíYˆ½Éº„ºQA®Í2“:Á7ií mÙŸj0ð”¾ä –Ø÷ÈöNaÝø T€&Êú1l@ëg ÞÓâãô¯øÂÇÞ‡­ŽPšp`¡ü#3F~r¼Ô>»oßP†ySº¦Ú¢ÏSv&±³Ú½”t‰”Ïb±è«ä³oÁõFxÕ ‹“%zo­Ôõ>±. ÙZáá1.A o¿ÇÔÞ9§8EpÀt³_·ìsý°9ó”’µ°X ¥ˆu’ñ° w®ÑG^ ¿túÈÇ“;?ñ÷h«˜.wŠNdâz”ZÔ–,‡ÊÒ´LW.ñæµýÛ‚ß/H“ VÙwÉÚòç —LÍGgøZ•ž‰L5égÎÓ¥«cÂ)iZxf†p¥¬†} Çàѵž¨løL "ô‰ 3AjIá1?ØÕù!Îp¹¦þ ý»éî»À¼É§ÝürK­I9 '‚[~ÆRò—”¼¥å/)yKÊ^I’tþñ›P{|òùŒƒ‡ÜõÝÓkZر4Û‚:‡ò¶oð¿ªHW‚êìl†—‹DgåŒ' „6‚HJÂcŸlVþt uw0€ÂB$¶ªüî )Œ$"†k§ÉõÎ>R¯ݰ1Á„„6‚ öð¤(ºæÖ0a!JÑ2ùJ¡€ÂB^Ëí}½Œ‡nÈÛxòÐLóÞtÆ%s8 ß[‚çðö-þµWÛí•}¾Çyü=rÿCÕ~û}¯·ØËÛê·û}^¯«×—öúéãÈÅn3ÿcRwtÉσ],:΃ps%è~ø—bcòì!î…Úû˜1ßRPþPv]â¸øõ¡3ÁLm®¤¨–ÿ!áy)–¿\ìzð±u}—h’ùÚ7º|ÛÙ+ä–­ÊÅ–äOÅ|‹¼Ñ¥ž_dʪ¨–­Lv³Y¯ÝER{‚ïi"3r«›S*"ºqf¡,æö‹u RÆa»AZ¥Deÿ‚bsû´H`Ž466Èf66¡Y*ÓÜîRà#ÈÓÅmóQÜÚ:Pí/‹¹~dâm—:¯Ëv^£·Hb6d]»ÎÅtÍ_ÇÐ-%ýºvé¨7ú*_Ñj0þØ,âîŒEÄ ’‡`¢«"Ù¤ê÷dôgm²ç.7M5úQ ƒû²!Æyá’”§^W  ¿—G¦‹´ûbòùE­Tí c°Ü¯‘/.»qX(GãÍÝÔ¦æg_µ)þܹ~’‰ž¼Q=Ë$wÀ‹¨u?E‹Ï@¬žüS  WºÄ!ñGöSˆSë¤Ï׊»VCeÎã6sºÍ¯.Ph\ÊÀ¨;.­”]û …ïu¯Ü Q¥ÂuĪ.•j_û¬º'Ã]é$ Z3\ ²|Æ_.¥æ´É+š±Á/oòìζüw|öN¿¶oÄ{ï÷|œ§»¡jÒÃ4 ¨ÖQyÊrÌ‘7'ªz¾tk¹xR î=¿‰‹OpÊмüƒîPN_jïøS'9ìl³MÛ]ì¤Éð'_ÑÆ³Ï4 ô¾çM#ªPöýÜñ-<ÿX§El•uÔ]x»1þ7wŠ÷[À‰Ô«»4Ct°í¬’"Mn|éÊ[p«šê `;ªNÜôù„WÆ*¸ïSÕÿ=å‚rÁ¢¯D1äªßÍ ÈD~no²ß†GÌ›v8ƒýš6 ÈûHØê¼j£G|Ã3˜žUжßN*F Úy> sañ·xÕ¦Ùàl¢Ál¬VßÒ®ZB¡œŒ–-_DâV‘WÂ0¹Ù¸Ô×*›A2‡]>"»²À©jâp4vÑ+Iøéh¼TWßp­×¸£f7FŽêv‰ UÛd_Ø\€®>»7Ë÷m(±G¼*¬šÄ:;D'ßEŒS8¿\rߪ½aq¢x•a|ŧ©³1£2iù}äóSiÂ)+9PƒñòÆ-–f ·€ßë¸Æéçͤñ¾µhœ6ÇŽ©vÞÕ› •ÊŸnŸ [ëè$f´;–èä0‹?Uüw:ÛÃ{ž…"á*ªEä¤E| ¼(u nïH8à÷glwxUéJ l˜¤òõî“<¹dÊÔ-ÉØª•s;#>ë`‘ã=AÖ;­Ðعپ0þáy¡—'Ïy]…Næ0æF«2ƒzÓºº)1ï{ÈšWR˜=7«;eUµí¯¶jÒ5{²°•p?Æ”s=«+ñ«V5™z Ú#/®gðï }¦iÖ\ä8ü%˜ÇjåBЧ743:¬:DŽʲ"Þ÷[GÑ,ÁïBz\ƹýxõ=iˆ'Eµ‹Ü²‘Ù=p<‹çÆÌ`ãsÔ‡ðÑçõ?ã4Ëd„±Á këî™gB`/2›dõ˜ ‹&Z ƒºbÅüyyÛSó ê/1iÚ´aÖÂ:³™dt¶qAmh‘Ê“ÕóDmíö`¨Z /kY-üí¹ñ³«¤o¹m7j§GAb²’¾~Y4:›*l6%}’¹ãhFOAˆ’‚ol#—¸‚h~›xþ¸%fh¼®!a–úÉíø᫞ˆ86¢‚à*/¢,ô†ÈDšmëƒa.»§9w'“ÊŒP0SÙMîšÆLvŠtGet‡ÐÿQý£M¿ú€u½-6a’Î"ëÿ&¦Ã\vûu“ å18íjæ§?çÄx~¥Õ½°ËW (û\ ÷k)„áÏ'Ä]8®ycíé}Ræ, ¦‰IçCGi½¹ˆ¼dX†³8?3õvKجËEHbÜ”ÀÁԧ GtŠ0œ‘P±õfû¡~ÖO6&ßÓ#ÒqZ&x鲪/²î>ƒk‘¬C¼O–õ“mN' ;»šªÁ¡Sz?lU1_ôµ_òHlñ¡Ðå°RÆ.Æ]Ã:0d™;×gÞ¾L¿Ãa¬K1û`Qx7 }ÅCÊn—C=Ì&W ^Ä•Åhq‡Á¿u%<¦¶¼ìÂNFè{|KÝuâìÍ¿¶Ú`µYK²“2ÉŒlçeäŒÏ!ÌH“S„©*}8$›ñӱDž7=\”¡Àg›IοñÇÅ÷~䳇çvHVyqˆ7uìâ‚+ïw*k¢¬µ‡«ÌOu¥Nþ½ UU³þ`”isûø—ˆÁ‰póc†«:ÙJ÷ãÕkÐßèWÄÊ8þcmW¨p®ZL>gB Ézªn"|ÞÊÞÐ4/ª¼ˆVj˜¦…˼î÷é~®ÓŠz´{Š…Êj]iÒC:EÌùù¢kâÉ·òïw"™®§Š¿¯Rý!ÌÆÕŒ•ô4‰º¦Õ®´^·_þœbt F O˜þb÷׋ƾ£ O[%ŽŽÈgNkâ“s¢Ï`2E4¢ªJ,ù5”Ë\@.ec[K&þó-ÙMN¯ŽEß fitgæÕ>ˆóa5ØýÕÏ©žàE;ÔXyô¸õÍ¿h‰w¦¼Lø ÕÒø-ÁbƒŒ<xÁBݸd‹Õðþ¾\6Çü eR}6Û!‰>¿’*zZ&íÑ]â¼/ÆÄu75M—õÁ=¬Ý3+3£3_yf(Úß§åè?ŸêYÛ]€{nROæ(›á Š`1õdß® õ•³)áoI7ô:HË¡¶Ø@{» ޞDŽÞGçOíKxœqÒüìñ0û `ÛTÏ<j¤`!û¡±£UÌéÙ“UÌ· 1œIHúç™ žõ‚>Ì“hô#G$Wþ?² ,”ìØÍ×è|Ÿ5‚…ö`e ©4óùüîÝfSÙòN´´îáŒ-SƸ™h)0×û¡ï2žz䯦ç}®+Žt϶ùÒ\‹±¬ †$ DÉv•ÿR_M›¿E]›/r!ÏfüwŒ–xÃ3ú)ñå}bJŸŸ;àM¼~̾k4J}¶jFDs"T9Ó$Î9Ô_½ªL¼N"5møjÒ]A ˆñ°þË»X ¾¬²E( úEÑQKægÛžq}œ,^=í}Íg÷?'ò4zÛƒéWÒžÏÿ)eãç±’FÊÊÁBÀ„ãB™lõm‹+{×è-¼¡=vW¥±?í•.<´Eh?ÌZÅœÓk¢gôY,Šç¶‘òžÆãÀ¼Hë2tïnתòÏè—Øc#@kÌ&œl"Òî6ÁÏ>,Äç%"ƒFÏ@fôgÉ_ƒ* Ô)Q¶ÊÇ–¿œÁ˜¬Yžø½_ÿãMŽ>±FòŒi[>BÒ}i¡¬¾“ç<"†-H4«–íÛ7ÊÓ‹šÂYÂn‡Í 9}­-Ì'Ùa™‘ÐÅ0䩘˜bðDM ¤’Må¡àB€S)² „•w"?â5r £”m÷CÉѹHž¥}Ù¤ —á—ÀŸ~¾±\ƒÎ©Õ2´IDA+úO'I"×µå7I¨‘×K¢ƒ‹žTñ R*´±òò‹qZýF»wÌ °ÚÜh²Ég‹ÈeeäØ&è%Ÿ¥·©ç0¦WgÒäÚÁ…ÙSªâ  ð›¢p- ¥zIä›híFf¹ª¸¨ƒ±«<3Òy4g6.Š€$/ô¥õïá`ýOg&Ñáï ªhë0]±ÿ|Î#ÌIÍ•ÒùÁ` HsÅ_@3^ÚNÚ3ÿz‹ºa†Àê!Œ1W8£Ñ¤JáF¦ü?þ®™UÏÔ¹^yÿ=àiþ 3¦®8,r1‚>+™4% t1›1@”F-„©—g~WÜ¿EŽ˜Ž2˜ÜÜRðçN$ W%ÏÓݶ¨’O‚¸Õ¡Iû}úAK˶…&{@ñù'5 åø§?ûm3ÐSz™ñ<¤?¨EG=éÈm*s™8OÓÙiîe^ºøû|þ‘ï¨5¥ÿZFR{Å‹Œ^Ç÷‡Õ,'<âî¢ú–VÈ0j÷KÄj‘ x§Ô ù­¬ÃëØÒÁè™H„ò\;š ¼Wl¨°’ó}ŠMS¨¿ ÉH—!ç/u–á)Ê_ÖÉH—7c"'~ æ=pªXZ^üNyjFÞàÿ ÎÒVë{OˆÎŸ1ÔlËËÜFE*YÑÚTFžšÙ Å­C/ü-dmü²×]aæ1ÆéW+1<ð= ~#> †@|ÌãPø:m¥¿SRañ7 Ä‹«ÁÜÂhöžÈHÛÕI ZãZx·Ö1Ùa% ®çÌÇQ&½L´¦Ý®`‹9\d‹›ëƒØ5‘lÒUßzëO9Ø _šSð»ZjDL«—ø0ßþyƒ<µpkAY ™û7Ÿí{hâ¸Cš¸DQ2ÀWõšMoáhÉ™ MSŽ»)Ýù;4‹RªO‹Ü„L°µûŽ6…wßìü@­“åhžÞŠ˜`6™ÂøWÝ®ßè çÞ¸åÅéÄEo›,|Þc¯õ\­þg˜N <_FqÒG^Žå›¯Gé¦<ò¼C–†/Ô…¨b§W×D2ÉÿaR¿ç½ˆI]Çzíu”¡Uá«ÿc_˜åY€i_8ŽÎï?˜)k=¸ý‚âÚ ‰§µY4bœý/¿£›A£cñ8€Wü¸ëÈú'ÛÝF ê¦õq(×-~ã"ÿ ‘Ô‹Àæ¤ùÔ³¾˜õÏŒV]ŸÅ«öø?Œ&1þV¢¡A d;”Wrã¡'˜vÕAlTg¬ jN9ï‚ÓÀ_M|ze‰âN›Eò‡ëf4+/ÔÞ)h»î݉cí;îcnÙ4ë̾éNÃü4Cn]õK‘2Î8ˆüø0k÷=ìH§!ùúgç$[ÒQtöÅP§®„²ÕPöÓôÛ½ÎOÝ=\ûuéæˆ¥Dβ Ïe]Qk¡þæSn4á|Šf—.ýÕ S“,š]Û6Bp×qSê³yë[Ù§82¸á7"~5E Ýþ¸U°GßÑÅ:g³YèªÅè)Qª6QjÇï­Äš9œX®‹ '±rçQ¹‹~Õn¾*È} ?ž¶¥~f“÷Â/[êBm–.IŠ äWìŠjß)³}šVéîÆ£ŠâQG*oDï¼fÔõN>¡ fв(~¯i>¾ú´/4çvJEn Ãp¢pBÛSERÊK" ÈRhYúùÇi,¡ªrû†Î5n¤9I®?þ¥N鮿 ϲޏàoï¨Ú™:çäbt·8š7¡ûPŽéÀavJÁ:e$YòÉ’Ðåð® ÕD‘&þöo,OÿKc5¦$Qq€™èÃ5=3ô¥…91‡ŸÂdVoCvâ×#dw™¹8]W8 ³9"P@³MO6Éé¤#Õ¶56˜¥G)—Pú&Ó=0ý6=ú9™à¹‹-Ä7@¥4𶯉\HO žíÃ:é=l Å‚ê̼so—£Lw‚¿o|¬¶:ÙW!† •16¾¶ò`ñ?«¶JE•‘RÙo2~†"I+Úʉ*#À渿b9fš%¸Ùi,NK Àë~ðgkmÎ P¨4†"|u~ó}âÚV(Ü=—NÛMd³"¶XèÒ'­¡=f’dô2óÃû÷çÂìíóTuë4ˆ6†÷ÔíûR÷íëðB¶øº)‘þåì¡=ý]ý„£¢Á\~™• ò£uÖ{=ÀÐhýsFvᲬt:£S 1Ýý}½’ëŠC5¦c 287÷xL¥UuMea÷ÏÁ·£Óé˜ HZýeXÝa3/VÙšï,bë±/f/8¸sŠ)¸és¼M Ž‘Ú ãv؆Ôm¶ÔÓ^µ‘Ö#…‹y-S¼EL+$zÜWö£rÎ Ðé³_˜ù¸.ÁߘԭáªÁ0{‘¦°áäT8å&MUiÇøØnŒu§ÉFé7¼AÚ¢9Ñ´† !L‚AÎN½Ž–mÎí ôðä÷ÎTz?+ƒÛ58·^ ϼ—9hÂÅre\#pßrdh…ðN;˜Äþ.`áde²·€º`/¢§Çf£²sü5Ì‚®ÛÌBvLDm»¨mŽi¿L4:Miû¬.ó$œ©Ö†VóøÕUÑ÷q ³ÈÈF¤:¯Žuhßÿú°JÔ,€dñ®¥4Ì÷Fž%{“ß;A£f.5;¨ˆÏ`!¼ 6IÇÎ,Ùà'¢ZYÄÊÝ×a):9q òÏØ.-<×LpêßÏÃ…ÍaBÍ-@D#`ùçŒÏÏÐÅöñ—È×뺬ïzôEÄ‹X»¶Áh¯Û‹Âqîsp«æàÜLÛ[è×M;;œEäëÒV–Tú+£ ©389ƒ| ±§w\ë¤óõ‰Ù®ÒÌÝ,Aþå¯kˆo ñ®¬Â׿vVOøqX´ñêKÇŠ£õaž;PŒ¡Ê¸öZsl”ŒqE!ØBŠÏÝØBód’%}r@+”# {0ÖG¯°—ðœJ,äŸçO^Wa¤Ô¼¨/,òU:€JÂÐ÷!,ó$œÌ⥫ÝUWn˜}/»8;˜ý¡=i^›æN„ž÷—€±¨(M‹bHX ïo±¡·Ò·ºK€ŸCßñÆ'DÏ…ÜÛ :ÃäÆé Ð,œ ú6œO”ÛfËBžÌÍP×Ô)ØRíG53Þ\ÞI,{YM}"©IÂͽO;ìâ¾óT Þ/°™ž&§“Ó»=‚±:úæ[‡Ð…j2™ÿòô6‚íVr 3!«#Æ2Sƒ¢ºçN^>$z´¼½ñº92Ù{µõöЉÔo½"‡ž~$ØcK€IxY“éÏ¢Ú*U?á"YØóä¨kQJ G‘oatƒœ%C`û’Ô Â’ÐTDŒ 8©Þ«Zã‚Å^ÆüfÅ´óÎ+¿9uã§zˆ&ºŽ›ó$’ÝõÐ^¢Jã™ÝÙH ¯u6ããA®¸y9m×9©¦t»žwAI¢ |C8KNýõC9À ãáYUi˜ùjb¡›·òã>rD ;ØÒ«†² ®`ϳbú9ÄÊÿþ8I„ÿj„ìD/»Ú¡ o”½Í”ûÅQ(Ÿ!t YÙwé;„Å™ú ~@ŽñþþjDZ‹öL쉘E˜O˜þ@~ܺ¼‰s>Ðïàag<É+Ü÷fqq—éûÙ¿GI?Úg#Ü8ï¿þ#ñ6]O¶c3(>HOìþ¿ÃÉPc×™óÉPjWzq‡‡dÚjñêð9:T9-}7gb ƒáîm¸‹ñÚp<ÍÒßW‘ß^BÝ»Õé‚^ç‚ç²fÒû)ÞÙOì•%@䨳aMJh*²™ 1çÈ'7jÓŒ®QïßCîämGB9+ßÃô¯xs»ÿ.~¡‚‘çòÅ> Âû¸ÀÔξVú9R|ñ¶øŠÙµ»­&ÈÇê+kE›h¥"WàÅ&iŘøm©5ÎëpÝ'ê³½T</IÑîßŒÌ 2 ÌžÜ|›âdƒˆOæ¤}¸=í—,UvDJˆÉb½Õ?Žâ—A T‘p(:k¾­}¬Ò)33w˜ÂX¯ÿ|Ú\c)Òò” D¸Ã÷x*ôô.ù·¹Åó›LÞP¶(–Tê§@øŸÎfÏŒPÿwñ.gÉD­$EØظâOâ !°hãTêìmfÈ©'A8íŒûúuø~Õ¢£e ÞWT|‹Óñ̲[¢1,—j˜™¡ÕœOmzxGŸÄq¡Iì@ò_0 fÏžÓðp_yx»T Ñ.¬TB›ª ›‰ùˆb! PÐ/k7ÅI9¾-¢Rý¾yvG„Ó˧ÎOª€²¬ e·@”W™Åb9¡*œ4T’™ 5\4-wµ»a/|áŸç²ÙQÏîT=Z‚÷w]#ÿ§™g‘ß`NM!|ÏÅ]£«)&»{Öu:*0=ai¬‘BW¡ŒžÍÎ’j‘ÂÄÉ ÔÞ*l0ªÍúæ6޳ú°®xÍ{°ÚÊO4 R«ÅÍêJõv9¼½Š b‹Ë@ $%õr@hw¤øRöè|h©Weõíºê¥KãÙ3;Wö¹Oµé–›•ÐØ6£‘]ý¥‡­Åð‹+Ù¹#G`šûd'—ûHÜ×OéÍêð*mÚ}Ú^ÚW‰:¼×èã¶µäZàõ¥ÆH[tÓùn;L´6é.h‰ÑZvÇS!^±AŽ0Æ_ÉK[ ÓëèéZÁ‰A(£`ÎËxä ¥ÓdjÏ*Æ`Š­‰ÏúíøfµuÏB9ˆwÃ%@4Ê‘¥YlÐêí_Jd Ï5vÇnê¡ ]ÿD/N•Û )W"?õÅ$ x¤Mlh+m@æmŸ“¼¾hPD¥•rDøÚx{lý^±ª®š»‹1¿n™Y’93Rs^Ÿëen¬÷O5×Þñþ í5°¯‰‡Í ;üG¡—v‹Ø=Ù¼+ö‚^Rè|'ÜÔ¨q/q€‘dÑRZk¦ ïÙÿ~ _•ŽDÞJÞò‚Ö©À¢0C¼?Pº¡Û­üxͪÞG‘üÐéüÅVB4ã{²¦$>ÀÉ:]ŃŸ}#dšÙŽÓ¿ÖÇ‹ð* ’x¥eDËžp² ‘IOSD^Ù ý3¯;?&gOŒ# é_¥áíotN/h!û‡Ÿž„e7;çOÖLîD†1«}‘¿–œž´Vù&Ó¢Âè •N…ˆžö‡òª™§G}ù @Z¯Ï"GÎ-jIX4o­¸gˆˆòŸj €ùê![M›ÙÎÑâgì± S§ùd¨MÄ>‚ªqúF$ŸÌºòî“jíˆ-ߺýRˆ®û¢Ô÷häÛF§~rŠw~ ®žVG4 ºì1àû¡Ö]“žk¡#6HÝ$ì¢'¡úGÌF…ŸÒ6©=ÛÛ´&ÌÕäz”ì ÑA$Ô™;ëTàÙÞ²¡È0ÆW· f%“šÂªù9öyùƒýf-â±q.=e·wP…Á”(!q—¹kÞcRWQU:ºõÔ:³=uïׂYÃ2å ®©Œ‚ê)…ªÇ† Ò•?òq{>“Ë´´b}­`ŸFªÀžùXQá· :!èÇ%vö°ôñ°Üîì`÷ÐOB†û¶ÿ`h¯ÉðŒppGn®úôøHFW”?áh*à%ÅÄ—VPúÓ5(ZP_+ˆ— `ä!-ó('"+‡õ›vì¢È»|>FQò/Ð]&Êf.:óCØ›}ET²:tu~m°tÎäÏ,-öÉ t]ÎòcëUvx™<:Å*Ä Ý(øÓwKó™7sG[E”ÆÏø‘ÃsþýX°2¯=*Ç'NVÓ4%N(-/)"åØþôí½ø÷øs£Q‘§EÔ½QÊ2\/½ ãOZgeLþ6. ËÒ„TÆ}…ÀNT þ»¡òU(á°4àK·MI-§5<‚`¨%1ÅgÆ8ž‹`íäÒn¾o^sU6Û½ý{Ró!ÏÏÕuÜO~£¼nÙˆØÝ¡IIîQZÊ/î%ðóÓ$z;ýæÎ¼›œ>åtm´ÎíÁ¼ÛYû›Ã_†Ì ©it° =¿µ¨Ê‘èF4\UÛGïSÇÀ­‘“%)6m¾òÃl?b0¨5Î#|¹OªuÖ#Ù£šQ­šl!X}…›?!R2t:&¼MÎ2+~æ>è:Š:®3¨Ä]bØ"1ÄʸÇîeÜqkGšX/¤O;öPœ8ЪJ|(Ld”º½W!À‰Š½l9ÜoÚóövÓþ»£ãý—/;§ŸO5LÏ÷ó„#+<<•C+–Ç,Ù°N„–j£q•Ù¹½ÿ>Ë{Ḵ&%ðH8·/Ÿ`оc#öuïÑìfuŒOŸŒÁµiµSÝ?—ÄÞ{Ô°@ÓØÄõ°ƒ vœQúÉïŒ)þÀH“Â+MŠNüq£W¥ÆXãp—±¸û5õ¬3å)‹y^hr Ö:ò¼Ï=áÞ²í»a=]~ãïÜRZçc1’‚„¯µ]Yâó»&á´‹´¥D>y{“ÊùûCŒuå‹UJÏeÁ÷ñ(Tê˜(»3üóvï¹nGr·ÒHÙIZ7BA•¯ÄÅ™„8ÁÀX¡L·Ðýá4×)v&ðX½š+½T\÷ò5+ÙFbV.º¹2B;‡\Mƒ?¿þêЃƒûœ‚2÷+ã¶4ýЯR:¢W„ôXƒETR'öy„¹âå1ßÑObm†jäI¨“;n`v´ÏEh9)>QŠÑ9‚ˆ dP°Ú–xíb_2€¬|Eùݽåõ$ˆ¯ý—íw„€X„‘KH-±rlLÁ-¿¯òø "ç”ò\+£ÿ5wrkrégL^ZÚ#Ô½`¡'“Z›©(ÀÒžn…‡Öür¶åÙ×–zLâÒƒÁaà= •‹»o©Pz#‚´Î{¦6±Äö»,ttd 9P7k™©€5_¥ ›(ëjé) HåÙM ¹ƒj 4Ø^âj&`f ±ËôCO]Õ ™¯Òú ;±  |iÐ-eór–VâÌ{áÀkùh$aNÃt®A²0ÉP¢H#’ˆ¯üAX¹Ä§èiIÆ=£I)çõ;}ZTwñÁŽî„"5oV´N4\ƒ$Úp< %Ťä%,ÇñÅSj,p¨q—D‘1\ –L-Æ–Š½Ë¥G‰4Õ*Ä~íƒ â“âÌgÈ/q²tYâ÷Ç…x–ÿF¶áp,ñgʶÒÑ·ÁðݺÄôïQ&›3–šì½7ƒ¡¹¡¸ ̈¡Î†¸§«¦ÝÅê§Ã,¦äÌiõ ;r•)^"Žý«UÒe‚¯’^F ×ו,!½)ŽŸ³ž¼ºÊ§Šˆ±¼xÈ2å V¤r<íáX@þŸGJ®òÖ¥§Ê×uôw=-,É*¦5ða4Çmª2/õ4ýh]#VñóNsñMâñ¡P])Êm°/Ý ^¯á}Agˆ,^¡>:u,LGƒ j„„C‘¬àH­Q_œÆu^>0åçœìÆæœ‡§ë œÿ:+ö4ǯͮsvßµ N-à —å"Xœ‡çÍH™ VåŸ.,;Dj¥Ö@~~ wÔî^§"¡ªM*eosVëW^_e[ ›©;4!@?¦úŸf}n0Žçs?Tˆl ã®Ö[ûÃcÏA½ú¯gt¡$ñ¼×ÝÓL¿x±G=0e’?©Xµ©ÄaðzÅ|LxxÎÞ§ÿÚoŽ,ß VÒéKÃf§_eo³Þ<Êö=0b.`η$h‰Ž†Â[Štð&×`ñ:žè”–ÍePßÎÓ9ÑEþñËä;Â$9ÚÑO¢óD€¸)•7¹]²™XkšÿT‡g?ob׿~íIð¯Îm£~õ®Œ+€dUÚUIòq/~á-"ÿw½‡À‹šgk4“V¾%ß” Ø‚uúâQÓCÍf.ÆIá¢øñ3…GA¦chxDV»zå©0–Æ"ÐÓû…Ê¥'=±”1;úàyäÿGWT~ ÆPŘ˜U ¥¡/J€øÃ\—oNíó,Ù…ÞHaZÏʽ£!ˆw8¼:1¿Ȥ'¤™Ä›lŸèÂι ºÚG¹²‚1h¼†jJD"¡U†W`ÖcùÉ'¡zÌÍ­×µ¶Ò…ý³b`ÊŒðìþàç|ËNE–ܲà˜æ×|Á,èx‡"‡:…•ÿ!§ãÒÑ(éIå!Úié+Ä(vz6Ž$§#'T¥¯-2&Ì*žIé~é6: ¯)ê4ÄäËv1zå“JyX÷ëcÍl_Tö,MË䢋{Î%RcºµiÍox0Q@½KU^›×dõ5ÑÌ.V¼9=ÚòǼa¢ˆšçbGpDzã ׇ¦{8M{øJ3ŸšÐ£Mõ Ò¡I蘈(éà€î¥£%“+7ë¿XŸÕrØZLw椤ØãK½GôÀCõ {=‚ƒ:cÿ6<ÍèùÿFh“O„Ö‘ÓaƒSœŸä7 Æ ‚*êK:*”©ÆéÚáŠ~)*4$T´3)Å\§©ºÌ² Œ](ÈX ÈÜÊ‹O 3Âq ƒ„¡¥ôbmL`ªY5ë#&^ˆ§^ª ‘Ê T>´YwX©þj ³—øÇ8úµ†oUQ½ÙÉàô¨¼Çã;~+ù Ô>‡ñ´igî×Mí:I—¡ŽZ" a`¹õ&¬0k"Xz"¦ÛN [Q•V””Þ•Èü*š¯ÉÓ8Ò)»Ž¾R, wè†í^‚ªUp½T| rR{5кöÍqç:ñn@•o¸ˆŒvô,£xõb&+,ÍëEm¿h{¿<þ§ùê—7S8B4™->¤\ÄÉdÛ‰†F ÃqX¡U’³Þ±R|1ݘìm®§U§°íœsô”JÞè°KA±…†­!]¼€Ô©1ìh©<¼W ÆëÉôânˆw3®ûˆå8÷uSÛu=ú¯¯`O’´$\™¦¼Æ©éPjÊ­L/á<ìãâ íHo¢d4Á6Óž;{P ƶµÊsèÇßÒcT%döÈèòÄoÏŠÂÊ2ÙÙ‹^AgÊÁ«Saä+§UU„ò`£Ó‘yG3¸? 6Ú?Vo5Ö&øNÞí£tÄæÝeêÅ¥,³x] xÔ%ô‡$lôc™bàpŸhôàzpˆ$’®·Å4E8áNK$6UɪUBJ”6UúÞh!»þ„¶¬ÂmqˆpÏŽ|ä&į"8° ÕätƒK<3iM²oUâñf  Õõªmõäv®t¸fAX¿}+QY«¹´@y®ô%šFq¥šß‹'p-I©¬xQ—~iýü 6†Ñ‚Êw‡‘AiöÀ#´Y è+›Ùæœø¸°Wˆ¾oG¿ýŠT¶F`‹=«<ÄÓž0fßž{¾É –ÏÃç«z%h`²Ÿ~ÆO«±:NPy…n³/Ì·[hÛÙ!Wü‚ŸðSž¾Øâø$’X#$]îmËa#”ŠðG™789oÈX´FûKV°‘vwêæëǧΖQx¤:´®øX_&*3g‡ÒA¹<•Ѿæd„gLÙÙA1"UÌ&+‡ÿÈtö~"÷P5Ë]qÌ :BóÑ»·?ÁÆÅœìÄš€ .¬¾´’ÇÕÑm-ÌP »8‡¸Û ñ>E.˜©#«N­•êãf1P«#9¢‡?©‡®,D™ûb(küÁÙø¢Aži[Eµ™.›…M ¡ò’E¦¿%›fú7+)^³8tÑð·lçÝ[X]†²²ýl˜ Xáf¶Yé_Á\ô2þÖÜ'éô4›]«—y§B;Zœè¨e’»ŒÖƒçO*ÌçÚð —­ãVè‡>w/%ªîp‘Â#õ±å÷1RÅø°à#l®„ËÊ`NªýFÔ-`|——Où=[ëEù-ЬI(„©Å Bbß!†ÇðÕ—r“ÜÍEË)tÀ-€ºlZÿOp@z’bïÉdU#8ã.é¿­@€ÈN ² zöÊÝÄWæó2+>ðš³ØdU¬¥>5nýâºQ›¥[8óòmCTYœ*χš~8ài¾,ÙR¢ñ“õzb{݇Z[©Ó:úÔñ'Èwì#} Ãhþ /þ•@À’(,ÕƒÁRPfs¶“º-—÷N•†_½^j”:=}©žYîuÐ#Çü™ú-Í)iàËûlÓM1(âGa¢¾>Àÿ¢2Ãòð§“àâ3ò€oýu>µ-3¶ë¨óy“.š`rö5i´šŽÉ túüÑ[8ÙL­wúGñ)±½é£nO1—DÑä=ѵˆ7ü¦Ï*ò-lÑEQ.† u2ˆà0{;är»ékg1„‹DYÈd.‚oç:ï…ñg^åÕ‘ïÐø¥‡ÏÛÓä½ÕøLû(ØA–üjU«wW aýª¢X7"³ZèdO·ÞCý¸˵9m¤²wÃ_™PéåµcQ±…fº•¼½;-ßÏØ0oß|†"„³Æ¨’éIEÐU®}‡®7O4t |ñOÌßìÁ+/½é:=WpÌ ] E&;mÝç zL¡½ŒÊš( "f¸^Ï×Õ¯'ŒPŠYu.x™x€ÓŽ·*H /qCˆÆHï´Nšö„²Ç*Óæ¿³<0Mpu×Õ4…0WîÆá@¸ äK¼ QmG˪u°Zâ0Ob› mÚÓÕŠÛÀcñ,HÑ L}h/ &½—;i¶mÔ\ b”©—`þ”•훯¨‡ðO9råE¤¸Í“ü±´õD²`Dcz4 Ê©N¹‹¹…b Z$ûOPbúð › ˜˜é¾/+ãeY³§ÎÍ¡«ÿ?Ï锫BÁ‰Ã`ñWªŒ!^¿Ô#ß,6f¶öŽºó£Ã§.:ô‘ŽÇ³Â•–´I¡¸åÕéâìÎÛ¤ç'JþRá¸" wοÕáBZ¬Wš.”-F¸ê¾ñ¿:¿™èk$@j4£aTW•Øzxp$Ó[.azt#Æ[ð¦êù@:ÜÛÒ•ý¥úÐÞ˜£ðÉoÚ«“ì¬0â=¼‰‘åS¢ÝU£ ç ƒ³Ë{¥œ7wÂk±þ‹ûÔj_LW–$ÀÉüýÅxq,>Qš{™âè¾éX ¯wŠkÞÃIÐÉ&öOA¶½Ï`¯Õ î®U@÷8—/2ýü­JÈi°¹ÄÀ¢‡n´oÅ0(ë‘™å]¸TEÌ^¨[çFqf+XÕ‹š.ì\9TúWDP.¯î«¢R6§n\š=mwÉáÿ¨7˜œŠÆ. í`ujÃv‡X±@ؤƒ~ j‰Ùr£6×ÕjHÚ™¨õ÷Ï>$KòÛ¯z›ôÛ"Z–Ï(û¾6Õ1ß®Ÿ!Ô÷iYx >pÂ6OÓÎH¹8_»•pV®êO hއص_àsòÁŽBÔÛNT©‰Çi@q#ÿ/¦.E 1ýàªÞµæ‹ù¤”iæoùSÿ·Cë¸<ž‘jZ:âåeÕ>6ƒôγ2ÉLekѹ¶–¶ÏT+Ÿw–dW;kž«Ž²'†íŽI*ŠÎ¾ÕkÜÒôHÍ;ýx°¤):£Ùi°š¼.¥È­²UwO;„øc^¯[é[ªuT‘P±ü\=ú ïœïù°!oÊΩ›|2¦†ȃËЊ_"Ý=Ó¬Œ<…Ý{vˆ—f2óè–¸§í9ëX"eÊI¥»°°ÄŸœSÉ#íÔý,À×ߌT%õYx°tܱx”¶¦ú–›h.èU#”)¢:W9 Q¨C`Ný\™ ]´TpcL³<,ÎTRõáþqpÌ ˜Ÿ††³‡Ts D»^í½>ÊôH3ýpP^ðýÿ]!0‹†".³(6R$… ‰¾æ\§Ÿwæ­O-åó¿P8ñºÏ¡"ó¡?‚TûÓÚdÍ:1M¿ÈĶqO*3ö ZzÊÿ%£ óÞÄ\r5ÖXÒQ8PÃM•x ÕÇ#åÐèÛœCó%mï¡Æ!ð(J3 ‡‰ ;&6;x2ÐeYºWÿbgl\ÏVˆo€dé¡Ò{Û«&tœÂ©£ƒðºY¦gNkA+fš¢I÷”‘Óƒ¹r’饷S ¤©o%:!eºÚ~ÿI%Ï H†Ù°#f8Ån()w¿­]–ðë`,a5çÒ\½™:ê¶•±ü+€¤š^ÖÙ?$Ëêô)mÿo¨¦I_¢¹ÛŒÌYAÎÜA7ÌÝõµñ™Ûu‰;µød=ܸÐiNsRp ØjJGcžØß˜âû1{bùI5«Ò›¦Xx€‚ü~¿†ÌåÛ-(ˆË´ØL³(öîu³_É óø¤HÞ­äeç @’éF¥I7Õ3âš°?>]Ož|'’Ëëì#èM%+n ÷dV¶§ €Z15Þ2ûpuKØþÀvzo‰‰¡;éZ}5´š«ãL—Ÿ…(ysÅÁœ€Zÿo)V0„ZÏ(n¬¢÷:ó†Sü;Îìó.ˆ FÓA ™Nµ\Kbôå@|ޝR\Š ¼×ÄÀGYwš,ªi0+gÆ´¨l<¢$›” nS…)µ´k.¼;!ââE6öëjibb¡N2]k‹øF…„¿ñ†ß©äÐF_F¶ÅÊÚÆ)CYÓ©[%ŒÓu0º@}â6ÆT–fseØâÌ4J6\ŒÒ(`_ÂQûä6é[*§ä›ªŒÙJÈÅÞû 4_R$w \>æÿ_"ž²¾Ds$ýÒ8èäÉ £Oô“7²ÃÏWsè|½3×Z…ŠšÄ wò–ãy©µiÌ‹E«[jdy»ÆJ/f/Žó× óޱӕ‰ë`³¨˜cåÈ(£ÀÛêßiDæõô¬ð¨'[¦ð©û~Yd ø ,3sÄ[3ÍFq‰w;”£(•ã8 „Ý¿:ï¹Ì??ì‰Èý‰G¹P4J¡¤¬ªR}kì5a*£4op»§|ã9)9óÊo½›M…§«ö̽4ìþ*MrÌc‹¤¾Æ¨H˜›¢YàS¤:¶+o!y¤0¤‚v’~àJÄ–2aŸ•7$¶A0ÆyÜ †Ë—Ó)¿Æ‹ŒQž¶¾ˆv‡Ç‹K±åS†ÖÛJ¢ Œ¡Sö÷˜Fœ3ÂU²úÊåEE?µªêm^èfhÆs¹À¹äèua²Ù‰¼šÎ*æÝõY³Üzë³pG(6X´Ðó€UϱW5M-ÝÁ=Y²n¡eºò @>¥ìƒ(]žµH„þ€²ŠR3òÎÙŸ+• =Þs Pø&³yéDhšX.¹?!ÅäfÓ„dÄ­ž&P8!l”}L»÷T ¯âPßQ€”mÅ2~†„a^ýA8( Žó´IµUáºÀiæ,—:s õí7³ÑÉ­õ¥¬ŒžÀq?¡£Ý¡õLæ]91ïŸþo¸°Î –—ªuPÚŠøõGæ©’Ý©£N³9Õ{/1îèÉJ-*¬ýó[¥Ç%m@d@͚ѥ IwF¸!õžºÁI‰_G(CjÑ–”Ïme‰£A˜½cCŽþЬYw†³ÿ â ÒÉ”4€|sÙ@1N,㡃îfo£(b4t$ÂôwåĨYCx0ß@xùåëÿ~;NÞ¦ ©6«Ë´Ï«M©žGFâ$Ò¨ ¹v äœ~ÖBÞtÅýŒ):ZÐáí'HgØë‹B‚BÀƒ’Ÿ¼E¤èÖá²@áÎíðÜŠ¿AALE=ZWk2abÈõœ‰(Ñõe]6F­¡Ã)Í‹ÏüÀûï*(pWÞµAâ©´YiÎhql ±DZÄüNúGbÁÖ‹!Q•–¨ð& ác€ÉBz]¯ÅÕѹè^ÒIôqîó$ß­Óý~âÅ&¶}»éïCn•—©hH}Ž·Ëv£`ôHÞûþgº¬á³IðaqI¹€¢º|)ûw^œ=¦²2ƒø!»å¸Dj~ëY³a3L¥Ý2ÞLx¯ÜÁtø›«=Bùææàöñ¢ù·üi)dÛ'‰`¬·@€Ïøæ±@åŸû,÷aAz"Ëø´t±ô'j—¶Ûà‡¯i-|áäw6Þç¢vÒíèJÞP>$h ¥þßÃ%3¾à‘öRìÚkјûÖbms©^,ûÉhëI.gÔ×Û#†N«Ùl­Lb‰¡èšêt@*p0K9SŸ†ít÷é©ýf?ʘW¹_¼@DÀ¶g›‚„@ï°JÀ¨¥æËÔN´…bÖÆSýoÒ¸¥çœlï½W»rñ ¼¾|µ£`Û˜žl°Ö`6ZýˆÊÇqfˆGfÒå{Îj;Õ™™­Ÿ›²ƒät!|Jä.”YØþ‰è¥J_A/󳨑°oä†x¹ÆŸ4_bUCcêÒº zˆ÷†çôùÅ XCk\¸G1ãçË;~_YEüÄí÷vË Nüêõ2²/8 ÛÝð-ꂃ®@\;¨ó-n+‚þa-1V®Àí®–˜ _¥Ã1@ÞÊY–h/÷ÔöŒ«3gÿ^ù^$H4F]GŒþ1Uñ¹öTž:®<]gÓB,Ù1 >Iιvýacô1ÅÏfžO)nÁ«SêÂs´ŒVDÈÿ]?§Ï‡žX¸¡Ö´Ï9¼.³L hÈ©ÑsÀ8°N«Ÿ'\¯*Ÿrrµpø…Dc…šY(。®gó]+]»§¥w(®AŠTõ=¢rèã—•^©ÿ€´ pì3KüÅ'§ ê÷ô:°»Å·`œ°¨ÓØò¢Ê9y´ÚpïNd…9¦=ƒ9>%ž/7a nƱ’d%.!¼âê~!O„×gy¿åk¢(Z‡UíÀa“fTÝþ®ÍŸIô°Ri|‰þŒ˜þ‡bÒeÕZ×êšI²K•v~éë†îJ›÷…j¨M‘Ì¢ l©íÝbìë½kÚ+A°<"r’§üÑ8 ™¢ØÎwÔz$âÔ)B}ÐÆ˜ßg1t׃^ÁÎ=šA6EÊ"=]7ïž’áP\î¥gáoî–> ?½'k #¬àùæ+Þ&ŒÆ¿§> rZÚ²ëðÍod×ÝZZ…À-¦±ýíÑæ–㱓ÿ°š…æ?!‚…@è@é;Å,Jaž4=@W²ÊBQ^öuáÞÿ"?„΄‹Û #‘½4ÓpEgH¾ÕËåèL·EÚ%‰×Ñ®Nä¦Â$%5çõËõuìÊßEr+5B¢JƒœØ½à”Z^׃W[ŒœwÂTK0>Žv6¦‚PÒ‘_=sA7Я‘=¹Þ (8ER4'\h|†~þVl b8” O=wÐÒœ¯‹.VtG¤B´ŒiV2î Ö”uÀÄ^Å õ›ˆàÿjîy±;^ß;ãHh6o(“¿›o8 D0`FïXsÙs)ü¢@um=«.5‹-þÈû»H Á6õ{Ù/†Â½—áb©[èGÄ)ôÌåòÔ®K×®Ø …qC)Å–-­MqÀó.møØæ¼ß ²|ÂÎùi¬ØáÅ[ž\õu@NŸ Fc¡þQm:^W@`lƒÒsó¼šý ò,2Cp§ô’Œ’ñR¢4yQ†hKr3zMv~ˆeÌ1Žõ5›ûúÉV' "kýobsìiYy¸%°kü( ¶¤7¯fë:ðÆÞjŽT ÙÛ¹£º…‹ÐÊ/ù­[:Ú‚f*G4éää#Œg2t Dhä¿’N?>·ZðFí~ç ?í¾©HØ rôc^f®ÿ3.&wVïÉ&ñzòûBqçü~1àC"ZXI€öè=“nTËçØ¹nƃGôfã&Y;Ïá2£¨Uvœ\°OºÀ`èPº¯ÛÐ*ÿNÚi ëX„–õ‘ø’b%Áfùïq)Ì¢ñåôæÞ17 0\°¦$°Á»Ï„ïè²°Ì­†9îQÖYQAKÔ“µgž@ëÁ>²Dün[”0^a/®ì8³é¾äÁP?Wqɸ¥ìÂÞÛËÈëLy™CVÓrGȨ›\2²oÛû¹%„etæÌïá®&o7jMv¿Kmƒ7>®šdù¦¹ò0 ‘îÀæ©|§¿Khr¯šÝ¡•‚î‘wå?StI1üã#”;Ò¿]WñUÞCÕYAtjêHaâÊÀªŒ3Öýô§]×ñ„TÒS^±¨Ñ×’¥°dÄÕ驘žè·ÂØþúl«‘|IiÎʬ͙ր剪 ÙBMDš ‚ã à Jüì[´Ydãœ1qY戞 Ý߯Î4_ú ø +Î99ò J—á-}Þto@þŠ…€caq:±°€i¸ÀŽD‚-Þd„t"õ$ŽqÅó=-À¸Í ÉvV®G¾ÇÇûº^g2öuxñ¡€l1ÔŸ…šäÁâÀ_¿<âmû–m•=†&"‰ ƒU¯Ê™„z´Öx_¥–…³Ûîb¡1Ù¢C{ÊáÑíÝK&ÒÖ>P‹Õ›óAª‡œsŸ®ž,«.¨ô¦§Ö‡…&V°åš÷b"“cÓÉ?9¹ïíªj]tQxU]ÃÖ´¸_qUXòÅÐVÕÒÚ½\Uæ2׿kŠE(;*Ô}ʘ€õ¤¤bÞ/ #=¬ËœiÝÑKvæöÔo‡ œ_;(½Ù£ï¬Úùõ2™Áh‰"XHµdîU³½þä=·À8 ‚ÌÿP…±u®&Ué$—â|tÝ䳨“óÒc]h8„ºô¤SF¾ª÷Ï(:÷ßÙLbô<«w5”V}ˆ)*fмÛðþßW¯™hdÔÍŽ{òD«’ @ ¥•ŒsŸißôä3–íש'ý†º3Páì¢Τ*ðVÈ'bļî“. >Vt†OU2ŠÛþé2‡Y[?ÝiíGŒ˜æWùi°Æ¬FÑ۾܌Ï—ÇT&ôƒ%ÆØ,ïSŽ Oœ9Õ-Æ»r±µŠG/¯©Pš.Æ€­í¦6…‘q2þyo{ý­èN97ïÛˆ[÷Š“W Òoÿ íÓS]—¶l˜P—ìõè5q¾÷ÁŠßÙº!O «­½ªà­•/ɰ9–ö’c]”±Ì*¨‚} =ú"…Ü£ê,ÐÝýïG£Ru9Úåò5U;Wª‚â‹E&¶“„·«èªI ˆÖÉ[‹°ÏÚäÙ‹Åè΂žæC VQ§"¤€<‡¾–6*zZýÅYªK­8à÷d°TS,@IJ±]·-zc~§éa‘¿QÎâ•zV(ëUÿHWOùpséÖé´eý¥ÀQJãeSèw¦Ç•»¥nþ·Œó?TŠÿ÷Tý(†ªåŸ“”v­÷Ü…móñ1ÉuY=à5Ë¿„A¬m©ÁwpÑJ†Ôí £žé³¥è±x)zG%—£ ÷ƒ®5ÊL^Û a³M&)ƒ÷ãE-ÂA¦ ¶æ%ÜÝÆµÐ”×–Û1ó\¾/Ê*°åÏáP'û0N®<»Ðq¿@=èPé"|C– æ–Ú†‘R)\°&8¡ðBcñg•YÁÎ=]= :Ç$YfÀL!·N†µlç 9hv©üM0(…›4x©ãªRnr\ûcÕó—×<Ø—“{p':ˆP,3$ÿîÁö*¦ŸË3²®Ž®£,ÑÇo㳈 Hùb×£gšjošý3ï 0ÿ*ב㜦_á-¢ë­(´”ßÉ­8óŸVÇu>ú˜+Auú™E‡b°7Úsb™ûÝr»lqVÒdÌ/N¨GëÝô©y3h%®›£ÿOöõú(“°~2R×Ð2ŠopþVd4m’J †Áj3hTGb4Äd•Ò†"r0pL®÷^PzšiœFÍIºCRn]ýZ&ŸžC&éët' ’Y<¿(˜á¦‘x¥ `m„ÜL¶õ(1™|q?7Ft·ZÚÖ61[C¿ž¥”r&Ï3g1='åÃù/pù;ú~ õÇQ’°|r-÷¸—¾±ÏÌ‹‘ÁÝ4‚Ü¡àwÌŠPzA•ݶˆùTž:0ˆâ¯eÛÃ;Ò¦#‚æŸ+p?ÖÅ®½ÑÃÐ#¸Èóà[„ƒë¢ÆÄÊvó³¸þÌÜ6‡Ù”«Æ 2otÅvâ—Éä¬r"$:e 5p;¨©%™}t³zJáÙvƒ€Ù=œöU Àþ>°qú[¡ÍV¨3¢÷K7šYMÚÅUۈ鸻kó Õúj ³óà$'U4\ùì—äX9Ñ…ô{Õ†º|ì3P )ÖpZáO/sDûGZ­0^ÉžVÅ-AâªÜÝ}Rzé QŸÀ8Ÿ4ZµÅBКûiµv‚™h”¿²wåW£µüÊüŽ8|¨a·(Ãnê;OhÔþ€²Î6ü _ï¸$Ù?7fÀ=ïdþ6Þ½,*€uÛ€ºÄœ†¿â§È  ½íèÂÜ4°”RF*Ø$8Ê‹ª” ò}nÖ! •-Œ5úTJÃo¿\ޱéqS£óG;J°¡¹+y· ðÅÛÉ5¸Gºy ý¬ŒÚdk„õkѼUŠs\Š‚Û×GÎ8àÉ„'Àvûçðai~²º#ëf¡uùN§Kšq¹Ó`“T…Ïul=õ‰îW2Ä?÷íiJ#NijYœH>¢É1Óà§^îW]sX.Á Gp§‰¯.&ø‰šîv‘02`æ]/п¡Þ“»³S°ð¸Ý^Ó†¶ßlpªn%a¢X#¿ÿSÒdÙ„”ËMh¾U‹~¯‚m ×ò„'MvEé¿®ß-zÊ:‰ª4‹þ×·±m¬k@¹ØÐóOe@SçEº<§6^F<ð²7Û• džDçï— 1¸2W“àÚwÂqiÌOW€í½¬(dAº4&ÞNút[±ÅZýEöÞZ‰£‡'!ª)ºRÕ’ŽÙËL‹øbȾmG缋<º_7¶FÒ[ôNÏ šÉëQãqݾ¿hãWÈA¯~VíÖ.S‘‘-›º+ln» »YÍ¥{÷g‡–š:ňæAðŸá“‘*¹>J€KÕ†èÏÐžŠŠ]Tø-,‘µŒy¾=4eEx8Fe—}ù§:Ÿ½°V(püŽ%c3áðY®ûPqT—PX¨Ó‘ÎIÏäÞÃ;~U!e9$ÖUHÇg†XãD å˜y]Ô‡s ¹¹º¤©É&¤î°Ok4,Á£Q ‹›‚ë;¾«c\uÃñ–óÚ[ÀM¹l™»ÖÔ³æÆMqMSS¨¯zPÏMýØÏñf¦úl9\ì9+›5Ô°¥ÇFÜrÚBdeJóö;âŽü—¢ËGZ}Z´K¥`Oµl_‡¦‘'ëº^Ì•öP½³Å„‡2| üw]SÓ‡ZâË;•"„Z-Žq"Ž: \†ÿ(R‘>ÕN¸¶×Ec*E¦Þq°÷¶>‚à0ÛIˆu:…kMJBNe™ËÒî Jx¤†Ïy^øíÛ ÷a 8 äÂ@¦ƒT³ÊòAØ_;SžtîÌ p3ØÝ¬à]É[ žg¯Qáé µÉ˜àò¾¶Ž ZeIFƒ¼ÜG7¨‰§õúÆ…¢Öɦ˜íðG÷Œ<…Ö¡5züäJ¶§’ôÖÍBÒqfÌÓ=­-ëŒêýƒʹNºˆ¢¤ˆOZjxtêÙpLeO©«2ˆOU‚¸Ê.\;15IÁ>% )! ³Õu²;Í+w¨CNÖbRS"¶žâ—=H…¢Lgý¢Ø¹¼&C2í¿t &‘L «­DRÐêõžt@ÂÛM¾– ŽG,¨î¤ˆ’ôiGsù8¸¡JÞK4_t¥D fç’ Ûàr  ¯¶AäG­2L47ä€ZMJñc>0IUÂè¾8-J&]ýø•üv,5§Ài½C0šî©;Q°bƒb®H|T¬iuïhcCÌß)5(º GEÉä?Fª^Šß|ÍÊZ¤ß‘tA+÷û”ÜòîN$+üC4vˆ€¡Y­ë–JNcéE}œ_C£Æa¬ Ýô?¬ÿ>eåÏ!ädhA¨GI ·É7|¯¬D,zFšs€?ýˆŒ=Œo|û!ßP~ëq¥Ùˆ–$9x‡·"òÿY^U ZEÆ£s5ˆLf|"ºiaÍî«ê¬ôÿV¤8¢ž Ú•ô´ü-À@{RtÚ¡l ´Ó»r#ÛÂ/´—y$'(s¹°•ùÓU%ûê}¦„ ‹+ÙžÚœ›þXÀ.T•?ª æËÕFTÝêÔ…ø ò)Ͻ÷U>2Úæ2ƒS„o/qdõ­A{7T_–д4†öÍà^j| ê­½Æ(1œütìjÉ]ûI|‡a¢ ·z—¿+à’»¨ ]/Êì‹H;]DÁÝT§M£ùLÿM§FáhòÜ“X±ò“°æær# ôCu*þaÓÖ‰?³5´9UÍeű584¼ÍlàV×)²p߀#ÓnÜŸª4¦îà]Ô s?,bK¾¬£Ó’ƒ[îïÝ‚ÅÚÃãôBˆÞƒü£+—§Ñ{ß„J3;53šR˜h,MuÑëWdQYݤ“â ËúMÏ®ˆcazëÐk ´»§²œé^éaesÎ0¸2›}œ"l ‡¤êô°SË=ßô×>Üù®"x÷œ¾â¾Òj>±ƒ%®,4Ìr»¸åœÀìQ£Aì-ÄÝ}¥÷ »5ÕéE‰&7Y Y6GÌ#f²/Ãg: ˜(L}‰ —1ú´KŽÔ䘠¸ý;OøÛÒЗ.íŸÙ?ëÿuf‘¡~\bã¾ÎTŽ&Ž€þ]¤Æ=¥‚![ãT%¹Ÿøµ&5}“ç~Õ1Ð'N–kDzbê_E|eò{ùžæqrÆÌÜ4\£Þ8eSy¯óì~ÕÆ^¸¯tëŒàQ)\h³¼¸”Ü)A ªÀǺ´– ~ÃrÑE`šÌn#ç«ö>‘/1z†âÅÉÚ:¹~¨^CíÝ9ËõNߪ7Y^á6ÛóTJnþÉ’‘*åWCé¡‘é'6Æ»Åü¿ÂA!؇.2C~É{½¯µPýrM’—¦­”¹‡roFÝè¥ÔÀôk“xöËEw·î:G½ù'²ño"›ßü¸Æ˜Ö¶A+ _kg€`Ü}Ê %h](ˆÞ~@5”Ã7ˆ3‘1îẋµ0N…Ãøò$GyØ9J°T1(B]M8„ûí¤–Ësi_í"k̪Fkò›Åš€S”¦|yi†ö·©žº´4K¾••v$2¨µ›²6žã™´U42 Clx-e×ÕUV𙕠Õz&ÔÀn"ž•"RBuÀ FèE¯~S¢ÞÍùiŒþ1àšL-H¿û͈SÆæt’Ö´L/> <‹Ðl$ceF`~2ÆæüšQ34]S˜’|ê?ã˜@X”ô¦ ilÑÉJe `ÁâŸmƒü-ýÆÇŒX}I^AFHÒßM³w…Ék¤Ýý±m†¹û¹³H^º“ب°çÊi^¨uËâ i„_Ëô#Ôãõ#ÉìÓNpæXJŒBŠš"i[/¢þ×÷-Øhå½}ð¯*Žo™á-$MàéÞÇ8W¹ —1 |%L,‘’qðhÀœ1u£ðÀ;â(òÞ>½&IfqQ¶CVþ,?T ¡ˆqû¿«_ÛwüvEÄè¿_vc,¼­"9[©ˆw8k‚kt|I…¨Ì|XÂR¡žªÝÿYc½q”îÚFgô"i>i…Ëx-cœRû{ló”“F`$ï?½ÑBp<•ÐjÈ(,—x)Õ!ÿ‚ž„÷uÚ#GœøV©®*²XòìJ7³¿Þx$Q³Bá{½CjvƒnelÝ*ŠrŒ0FKÞœÒqb´@E˜¼9·ªBWB0¸Üì !šm&¾†[)Áªsöy@rUòo_M×W(3šëñnÂçúÂ%?ît®¥Á‚®f0ŽéëœÛ_¾é¸ç b&VÙŽ¼ƒð úÛ‹šOÎ1Ѫӄ¤fÌ>Ãös‘—n!eòêFR5Ì®‰†âcô‹·¯y9N°a7þA¥(ŸÁ0•8òÚ¦'¯ôxûà!(Ip§ó¡U3¹ÐÏ=:aÕ×éŸHޞɎ&ÆTq¦dŸW›Îù4R¯‰Ô»ð×Hõ «nz}`äzýù”Ц-¼†,ƒ!H>È5Îè)S⺟þ4¶ïØõNù<ÆfëšÎÛ_cV”i½®¢,²Š¬ üúy›ô0U_»ê“±—ác fèIRXr/ï o÷KG³-‰J G 2)ZIz<0&?áŒZFñ¹“ƒ¡Í3ðOdƒx…ó‰¹êE¯n @ÞV:«Õ«MD n*ļ%5Žy“CÓ1Oºn¶ÞÓÖŠD’1 üSŸS 5SF›¿ˆ©ù_p®.âS uiœéŸV)ŽÑmJÔM?}ZÒÀ'I&òe.ÆùÁ?š7$@eÛ“Q-“üñ;h—Ε*êÕÁñN²vx¯Ý‹Èö>PRâ;¹øü÷¾wVsñ€»7 àePk&su`h3fK—!@•(¡ß=¹L`ðâjÒöGLÊ\]“ˆb#˜~¬6Bgãíd|X—y5oû}>–™¸xïô*'èé uœC¯çïïŠÂÿbç[Ñ÷,Ojà×wHðqHïc‹~éGßþøâ‚¬ð©;|áÙqZåÆˆçå<[QJ‘:VÕÞ›(¶;PëP&ð*±hx^¡DŠÀ "6;—l­»fY¶ðÉÕ훦 ƒ³q*6.or.˜¾7TòWdj€1­øßr½Fº~JÈ^´/JËT8]}×?âA—œ8ìZŽ~ú¯ÖN½[z•ÏÎ(_èš|GKšLµ´o„»c$ó?à13<þÿ{ocp× Ãx4wŠÍFƒjV­üQ6ÖëðÆì’»tŸ²CÊï ih¯× ˆ¾·!‹ÈGÀiÍ¡ZJ{ƺàKtút^›â’É+;‰vÖS·­Aq}‚­Œ'Û3sT¨?ûj™‘øT%òãÕýZPz¨Ç0}c®«}Ö Ö³Ø@G]¦Òaï¬mj•Ç—X…ý[ÔlWÃfÑIàW|©ìNø¸nHS»‰Ó)iZM+¦ØÞ«Ç2–_°Ý±”tÈꌶ=©±¹;œžËZ=õ”#‚X¯ìq“®âÖê•»Aì® Ë j’É%Ye©;â‹«&— ‚@3Lñ‡Õ+|‰b™Á\Zªy0xÞx1ß¶ÝnyåJ~!¥ Þ" I,LžGØ}>ôð‘4ô,¯ý "M0v§;5ë¾ÇÄw°jøê‘ÆÄöÒÚKÐ{ò-ÿY%KïVî|8Ü ÷*(ßÍ2Ùåwg™>¸•sè™–”Ö3š¢ßÒ?é矎ˆbÈ!Xe{ð€ ³=ÁÆØ¾ÒÞ [V'*±a1y˜0¨ú³»lüÖ=†Iú.кá („}QÌC³lè»óÐbMT+¾Ú]`u&?ñ¡Wf,(öúGý_VH®¾¾{ˆ£åФ'iUrj…4öŠžÅä$ú|ô×pŠ—Y‘½%g€7ö šØs" ²“kƒ¯tI:«­%^­u§SRBÀ'ùm³Ïžƒ ¬öNpzÒ„#}²¹Îº@½ÊüÓÊ?–«/–`YZwß÷Q¥–¨TáUyÑ^"ôìº0Ôçƒ,…ºñ¯ö³rIYPhûŠà€ìx_6Q¯«”™ú6Ž&† Œ|Ÿiåx1,b(8DFxiqÚ=¸Øoë{Ø€ß@ä[ŒÏ;Ìq9ûà]‰O;ìã*˜RqäýDÜ%›IõÜo¿ÿ˜4”’È¢4Î.!=¸ò‘3ã¿Øm Ñ×[€‘ûÞÛrZK‡,<˜9^ÀA:“‚’&,Ë2\¹´#½â‰¯6q:¬Æ!]½ÏnÓQaÝ$A†èùHÊ›ê¿l'*RÐë‰l@µ9Š„b/±GNµQþ_6ÿV¿sdûA)ÛÚ”? èYë§«¡Lí•UèÖI™Jª’₩Ɇ¿¾L[ÿmX Ò‰S—ÈnQ'9‚ú.øÑ~QÏÈz±/Åv$&+ÂÒ« g”ßš–E[ö•pþÂxÄ6}SvÑB öªöMÿôýÄÙVd2أñ#jÅt~I¦djÃ){˜ @Š2öëü®•|bÒ•ðYp0hWóÝL‹’þœ)¤h ­ öx¥5Ý¡¼ncß@Ht@Êþ´¥E0b% ÊO[›¹®=Q%ávV‚ÕÕ‚~?©#xFBóeèŠ$"“*êvΖC[ÁÆÙvÍ%é2Ÿû¦ú+ôÚù¾æ%·ºn‘2C-etp x*d—hB¸“{IÙ—]E½À»mEº!rpiT^ã(œ.$¸öŒÔ³Åm yLÌÉLPÏ¢1EzÕmï çàXšý_ÄǪÝ»CµœècuÄ—ÔbëçWÓº5cü?D‡ùY‘ßcÖ/<2·Fµ¥ó2YxÏ4¬k«‹áA5u¨ðÌáü8ÎÿN³‰x ÌÝiã™úˆÃ”¥PBŽqõôº¹Lê˜u¾WŠ&‰§ÿ²&æÃ6jØ ®N+†Kfx˜ö±¿q\ ÙË$þAŠ;`.N‹Ã¤]=Ql6Xp´_\¥q?jÑÁäå¶Te¿"JEf6½*£Ô1¢æ±À}#­ ·±˜…Þ%NüL¾,teå™?[U˜ù’à÷ÆrÔIüLŠØ}ïîQo,ɈRLK+b#“çkX3’±<™7H5¥Pæ x(¿Ø¦÷'F[6ilÜ€‰ƒÉ0ÏgŸ ó]o³¼À|Tœ ºÑg´%snE è±èrçÙÚˆR½Õ9ç¹üuœ¥£dôÓ_‡½b‡|ýR†èÁEàIÔ€ÌtMê._R^R}¬ ìøü<Þ¿Àà1%†÷øŸ­Ì{'dùë6 ž|΂–#ÚT„o:WôóŽI‚–PïÍpÐâüÝßà Xb JR“#®;í9•´YïÍ,žìÝ¿w4LB·,…"foe°7f²¬ü>¡or‚cå"uH¨xÉ£;)×]nð„½ †èØK}91ûÆáo¥ø>é ñ!àÜš$cÏKÑÔY¶v¡‰˜ì@Q‰ó ±¿?ß÷¤‡-´±'LIt͘¤è¹Òb~d ¢ÿ>5ëÿCɾÒO[ÆXv0\³‡å§šY„®ÍSz ‚… ïÍ>ò•VM ±°Ö“ËnŽ/ñûÍkN(õô3 pŸÈ•zTOMßOñ+õ Ê*‚ƒ÷¼Ðþr®ýì9ºN¨Ú_7`=Ü€­ùYYÓ*RÞ@KÖÖDZl²vø¾ÓDZQy ;ÔýZ®5P =>^ÏÒ3‘¤ÏÓÙ¶7ܨDz›•³t.ÁYäE@Lö–lnY†$NWÏMá)s…ÆÝ‡b’݇7ñ€È¬áEr—ÐüCyØÞ²ÏðÊ‹ÚZõ|· w ï1zâb’Ml³•èígµ÷"¾ë¢ j,‚¸é±?¿ÿÜðÁÒÔ"\€ü§yFH·Òß’"ÁQjhPê~Ù½[ÖÔ\$¬¶/6#º$·¥‰Š/¾€&a¥²á}iÒ1 p5>ÉÐÁé ·nS­Rt³E²wiºÿFÞElëba‡jIOuׯ:ûÈõ[û¦!KWZëÅ2ï’ý#$Úž¥$P­ÏŸóêúµÃVSö×­XÊ>µm˜Qk  ¥­spÅé[J æ{m‡”·JÕ©êŽÐöáJ±×#_U‘ð¶~UêfÀ;úªÆ¿õ‚ªZÌBÎe;¤À…±jÚƒW„˜iŠ(™¢Æ!ª–1ªºÙ‰!¦ýËíön×"ÞµýI á5bXA4åo…ÀR-ëP+*zÓJ˜IZƒþ}¹Šú ÚÜß§`’fÙ\ýÔ±ïê‘ .x#:T—M» V_`§Õ=½Â²r»‡‡8æi9È Ež?™šd³¡6‘ŠÌÐBº3üæ 6ùŽ£Z1\Ïu²_‡­© (»ˆ°ã=(®n5º'ŽÃ}ׯŽþgÇ*ú{ϦšÝ#qJ[»'ôw¿Ë†äxŽzë]Ä[¸‰‰R˜v>¢;ƒÎà4×AýÌlN£Ñzæ|Ÿ †î‘$+C‰ëF0Ĺ5EùËq“–“ßÙöNyY ùªP%837LùüûÔëÏ•J™#™œònX4Eú<ìŠS‚Z‹AÌO7»91ˆLE³ùïÞ›ºÃh6¬5ú{†½dFn÷ô Xë…µn ÆÞêL:MÚô‰ÁcATž|÷yuךFŒŠ†ÄdfûzáÅùPܪ:¬H>}¯XiCD®¤®»=qú@·Õü¢l¢ ™¾4ûo1›¬[›ÊmÈeÓܸZ n<¦ê†¢ÒÎ(Ò!ã]~×î&á2´@ï3 $Ñ4ÄÑ= Eç)Pªå´ºÖƒDm©jÖð§!SËÀç2>¾);ëúê½€Ráž%èÌ4¡©£Î8Û‡ç¾Ø¨{•jnMZÀÔ­oB©6îÿ‚Æž¯.Šx"\ÛÕ¼ ú¬ž ­JXLCí슭F9Rój¡®VÌbb£¬ÒþXm%Ô5t­ë´¥öëüƤ J£å»ln[!× -,I^aöµ½Âb «™µÔ¼ Õ=ŠQdä^ ‰\f"œ‡d(ètÝà'Brû mv¥þ\5¨ß¸Ìâk7yf Ú¬²v“¢„È0ƒý|¶9RÌJºW%ˆ ©ó¼­–O¬AMS©W䨠ñe´TD¹Xü+Ûëˆ+o6Š2 ƒ™Çb,Îj"}7ez­º˜Ü2¹eš”f3ÖX7¢g§Cf]eÙ€tÙ«Ñå~àÿ33 )à® ¸‘æð`¢0ª|È@²¸ì²Eèéé„-’:ÂnñÑËZÛ²µU„Fk­~ cÚFg£m¾¿'¯Â ¬ÈŒ.$¹2^*)È“_ŠÛA„ߨ&pDŠW÷;æß!Ê›‹¤Á9ô2Öפï÷°Ò>ÝÜŒáhZ€2ý›üd~*šz@éqõ ‘bCô¾@”žÑü “ú¬ nôÔLE: õùjÚ_‡A¦·¯BbË=XÓÝd;‡KHQsܶ–XGÀêÔS[˜%ÆbÛWë›mò»z "kh{ôl!ùèÍ69WŒ wM§/ß1¹É±¥Ô¯šü*žÜh´‚e2|š)X: ®„°ù/ˆ½[ßð°B0·ç¥ RÃ1Ímt.Þˆœ”5ü@Ä|pÃ5.4;Ú»[§ò_ü,ÜçÅ#aMË!(u j½â6=ð<…†‚“L1(Ü64J×™³¡CZä EÛ‰(D‰„“¦cðÇgœšÌOšÄbD@—Qà.ÍõÒɧ¸Z&9^Øà€ ZðK~ÂÆðÃcX@cS5QBH^>\úÚõŸqÕ¿ÞwðâYØ#š[¡Ç›húåÌÓ¶Ÿ&;3Ϫ¼E… /dº4§õÞÐT0Û@¹ÔÙ?6˜ù«¢ewç¬~2ÞüF‰ø„qTr4UoLÍ•1@{ʃ‹ÔvxÆšTÙY‚m«LCô\x‘¨¦Ï;Ãâa®Ã;¥Ç4̦¸JRs:9Í¿[ðjH(i¶tø¶ôf}ii0«îŸØ»4öoX¿ížÆu‹”ïâò:8Ce±ùwAizÃ4YjÄ<ßd7·œyÕ¡G£ ä ……Hîb¸\Î =ò–ŠŒ:€*q±q‹@…Rë‡ùhóØ˜Æ¹¬b©@=s] ‹ø+ Ø»ÓhßÔÊî-ï¶.„‰‹½ó)¹2×Ý%Ã0>Ü”«!‚º+æÓï½Ó5 IÃÆó Ê÷àÕXV¿9e³@{m­°àâÁeáŒÉ¯_Ãúð#a<„Üg,E<‰ÂYÓI¾•gË ùÁ©]œ¼:Ê‹"¯s¾JPÝwVÌËÌ+ %ÁdÁJ¿ÕMênŒP BRv‹£8kg²‹ëìeã˜î+U­=ŸØGfõôô™GKõ©t¼ìIýèA‡?P|[wºV’ª¾k’â\øW÷æ¥ÑF<ÓémöáQ… ŒeNö<þβW'£|ÿG&T¡Á@»ąä(\§A…hfêEˆ™;{Ȱ߬Ma÷‰9³«é  ÇjÍëì&Æ…}EåH=6üxd>Ñ@võV—õÃ#p›â/ò¾yª®°®ˆ²º„mÂmXCy.=4¬;ŰFªôï†ò:Hçÿ8oì£e«yáÕ”ÿð"òÑùûá #ŽN;« ¼Ýh¼Ñí>³¼hô>4©f[?Ð?+mê¡hr:‹`K·…5ÞJ –?˜pY!'´£1&_ßóÁÍ,è}ݦ 'ºê H-¹}Ê‹öxžæd-¢®7&ò¾6»ÏLÆ´JÃè hÜLÉù6ÿ7Þg$uRÔTÙJÊwýªËnööF b­ËcÔ+‡5"õ¨]·ŽÜ—°Ž@KÓË5£ßè(AÔÕôìRæÁpÒ û/Ľ®Ïcɤ¼*}«…{¨å†^©5~î܈ˆrùz œ ó¦ûïžã8/¦*æâÜ ÷Xäa›*ˆ»N]-à£ÄÓ—ÏšPF⇃¯"J„HÀ ߢ2Võmåzx|ŠZoVw!øÿÙô#[Eª2Län½T°R¦›¤¶jCc²µÅ‰ùƒÝ´3Ê™TO-‚%£ôTˆ$P›vgÎ]¤Yȸ—<{…Œ¥uQ:ÐŒb¶ ß-ô>%²:B'œ?¡ä½ï8ë‡ðW¾Òô]€Õ¿ýèã¢òï÷ÕŠ«=¾D¢Ë pªtºT@*â±|çBµøêBæ{‘™ì+ð2!8ï.´¢è2€£ ¾ŠÀLS £M˜–ž˜Žâ™ø®·¸˜~?ž) #P‡}°W/šGÞÁ~îuÉì OCÀL; '¦Ó=@¾Ðž÷?ÓçTzž´*ZMV;œšnb©¥ÛDöaoY 2¥¨)^¹”†`øÇjBÛbÏBMuî=(‘ï5¯=ç !}ômôÄq;_4ÁçWÆíÃÓ{bŸjåÌó;t@™‘I½€[.UXfª±ƒ„ô1_£â'Ü{K€´3b#"F,ëX¤Cë{IMÂP˜Ü“¶ÏZÖ• ¿ª¹ܳY°*»MhtÖ¡ÙHð’Г¦$sÐv5|Ö£4Xù7=È`üm}—³¸ô®«odÝÌ ÐAVXÛ1åZ '3ùÊ&Úå²ìùÂnsûàh£5 3ï Í5¶ÄÔJŸê`h@=ƒëvmǧ5l¿>r˜†ëwyß×½¶JŽr4IézÌ7Í¥ËfÌïON¿ŒÞ©yÛœ±Æ+-’ ¢Á§›B '&"å/@†9Xà#]–9Äuë®BZ72T÷<ÍuŸÿ ~$©_ÂýQøNo½Î®%9t×31× éü?zîA/Ð8qRzL潤u^‚?¹t$‘44VÆ K™|ÉgãO™Mîš'CâRPÅ‚ü¨Âê¥ÆüÅùí1è锌£_§³C fÿ?F”#ºïWU²W£«ht—rcõ­Ç ãå¼Hlj`Ü[™ì¯Jª†Á/NuhÓËþ:ö<ð¤ò•{Qø­/+‘h¢~“«ò2:÷=pz@èµu¹ó¬8j^éÍÙ:-ƇtuÎ ©3weç' u¢Ðo™.à½ïê+] Is½%_Š÷þqóç ô“ø%þ·ÿWÈÔ½z@ºK/ç¹´ Ü|‚/}æò÷Sì£,¼ù‰i[œV5¥ò„<g¬g_”:¹ÌE¹)ž—l’ò:dP±ò û£(P©7`§74ϨŒ4W6îÌÚÛ @’ܲÀ[?'¶¬b[ñ)8¯ª å“RzÍŠœ±*Œ*,5u–ÔPŒ0î{Õ»#eš±¨97‚J$º2 2€ìì #w—.Ÿ´¡H‡¸ã¯ ŠÈá<ÍꚉêÉa[º¯*ž6ßÂaØoÁïÁ:ä} +Ý©ÿR?§Â¨øBè¶ÒLàá>Ìí•ÀhŽ߆âGù“§ »{ùÑ“c—ß¼V›T\xp)·äþ¨3»ów‚±Ù›úVAUÀ©ZÑ9üÇ6’•ÛmÞ„rê·°ioáÚ~ww‹ñ_6F1FmÁ™síNÔBëb×i!vvGAçY÷–ŸØZù:e…ž¦¡hꟜ·ì{WËq4ðT5¹®¦LœòxýØQÞ1a$8é½ {¤6„ÞJ-ýù+Tâ§í1Ù7HàÓÞøkŠu'X¬»ç '¥0_T€âÓk½öÂ/—x ‹­`GüˆPa©†Ù[hGõ¢mB4±íÄÑ?«£Ú>! ?][„VS<ïÔ îFrøúwÅ¿.*顳ƒ¿q*ƒþÍ Ò½ „wÊÕŠ¤Â1¿•¹Ç…Ú“ÏÅlhÈ0(¾x2«¾O}Ýl´êÜ òaí?ˆüñ™®E$–­FLüÙYÞØÓ3W³F‚‚»(çZ¸O& –¨1¬¢ÌмN&Õ€b¨#Þ|úOx£ä)”Sfíuùq–ì½¶/ÐúB|´|`dïÛpMïÜšŸnp;h\<*rZ©…ä<Öû¢ qzú}ÛжAת¤›ú÷Qê5¢“Á„Dø¨›¾D[ûäÔˆ;~¢c‰²¤>qOì|FËÙØÊ¼¯›bgöËP:60ýV!<4›fÎ]d h£öØá ;{˜ô‡–½&ÎÂßyÑS\Ì,Rd]þO?‘ZX³€‚Œ=)ä/B3•§vÛBÌOFÔDó?œÑSän°$IVÚùýê–]mR0{w ©*/déÝ•$åOäë,­8Ì›{Q‹½Í.€µ§t¼S÷ÅÓRf©¨ke>ˆ3Û˜Zjø…W°©Ñ¾ €i)Go ‚àL3&áçË.ŒS‡Z-‡¸d›–ûcŽ U-É%ƒ‚ pš²zIè"”*V1 «@“K)±^*P®öBä ¬³­JÊìfR[%ý¢ô¨šø1ªíýî°ž¡Vའ»s\dvmõž¯Ðj¸Ðã2;?èC¢yZßâßX®WŸÿýdä -¹»gvŽè80€éÒc©œUÀÓ*Ë-cFòªNµ²ð‚O©«nOñž§Pð»&.Ìbnœ÷|?·°Cï%ù÷ë .n‡ŸqÖe8Ý•ØÊ¡{yÅ5À¨‚:Œ†ˆ0)‚ìŸôj©E%îK#ýfá@ÇúRß·¬2ñOŸv³õßn#»:øÐb㸇¿'ŠO­DõÌ3 ÏRÏö}ê†$Ï8(åÄ-'Ÿ“QIÃÞÞš 4^Ò´5›íó°^B¯(' Šd£¬g¼1œÎîÍE‰—6Ù,V"àh$5k4æÿiú ðQÕÃ*°jAióÑ@î( ä‰C³ÐP]‚çÜßq;ƒö« EѲv)§ ½ä¾xÐQòViÿxÜSµ°Cß÷:ç·|ø/æìp &Ûë܆S“Ö”b·Ž‹KœðàÕŽqŃtQ¥aƒBÌg~†À’ë{Óp‰2Õ3¬ö%Rö¶±(Y!6Yï¶Sd¬˜©'÷,ã y#&PTNLŸài ¾új/z‚H‚°ØiµP…d¨BžM Z”ìrìtd¥Öí¶¶ Žˆf¢ÿYd/{B͈ Û°ÇèIÖÔ‰æ!ž»eÖ½™ÕUK ± k¡tÿ_üqë{Þ§ÿˆVIªøèYBù®‘³+Q˜n!“)hìÎØ!),˜ä>ÙФÕbƒE,.”ÿo{þˆbæ‹1â1Ç×5nÏ emÜüËÖ“EŸN+¸šÄm9ÔÑ6®hn£Sn¤ {CÅ\HÚÓ³:ñââssùÞë”&#CkÖµU5rìâÇk„;7ƒ›.\iP鄯*«éesØ~Rƒ«ÀÊF(é0Ö”ëë$É]ì»Ôøˆ*¡¾óˆÚ<½ÅµL¯"•ÔbSÎ\p ¾ Y2ò}ÐEÎï®Në·Ôœ1"« Šh¶?¤-k !â1›7.#ášß߆‰™¾ºÎäoiÎŒœá¨Î}ï”Å/ué8òÀµMÆ!…nÌxÍó‚0(vg×®R™…YÓ¿Ù1ÏHV„)ã ª"ÁˆÓb¼DÄÊ4œC~h²·KjÙûÂñäyµCšŸ‰:9Ì…ô@åq¶“Ûbó‘ª+Á¿®å–Î \(î|î³âÍozûË7œá~\[‹`æÃ¦#£çHººp¾pt˜¿>o©ŒÿA¹XÎÅ7[DópgéùÓ½N‹ס¹qBÍ®E º«ÈÄ1©V™’Œ­,'عÙ{°È¶km8Þ¬º$_TfGÞE¼A/­'*ƒk«²X^dE;¦›*R“eé1QÞ@%QPk…H…–i[ÍkzùËêD I9ÖN[µœÜ‡é«´ÅC=»ûdÆvú>QïYûU ’äÔ’½Ç:vÜD¯}tªÕÌ›&õ‘d Ûãm|5Húc˜tàlÐN,9ÀYÈ»O˜3(8ó›*ºõÈñSåÚÁU."Ýô"JÛoGI˜‹^Ÿãöú¹þßW êö$¾¯g\_W©MõzŒ_W«ÏíõöÁú½V?W¬…óý~W´XðyO&ÙI‡(­ƒuÿÚ°~MzDSð44õWVÖ^€2æåÑ<ñ(p“[ÎT‡"¥õˆâé~Ô¹-Z·q5•ŸWR>ž‘Íw—`sM½m0ºî`);ýðl¨/¾¾ ÒëGx|¢Ð “›Ÿ2ú£m@'U£5᧬뾦w²8ÇbÕ“†u!¡-*ö|×¶ ¼2™ù¬Ä* -óÖuZ¡àóÇÀ€*/‹r>‘Ûï·–DúÞ[dµžAÑk ¾Àb:"'Óûñ…åä¢\Éøz$$J„|µ ?c˜V¤òs·ô°c·2qd³$,wŸ‘~Ô/¶ñØbœ'fÇ(œ)?¨´5Òd2yÀa.¥5ÚÁ¾òy”Œ”’í¹lTB;¢1î*rîß9IDŒã›j©5r"ôh§’æ6Õ}oÎà.Â Š€!ˆ”Bc¦M"mDä¸úzmí½ItNBB°æ}œÚ”Lt ~[äŒ|œ›þO‰Rˆï Œs,DVðÙ…Ê¥ *Úßg¸ËyWv|rnÓ(\BfDFFL:åñ{š;¶¶ˆsò¢ øàž.fŸ(Û€Z°Ìøº˜Å›FÓµŸ.?ÝJ€µl1pW^`#ä²ɧ·`­KÄŒQ'*±[Zåµj 'y×ÊÙôùÜÚû$’ûÜ€L¦9É0¸Ò!ô,ÐÞ²zuþqdLE6*]ú-‚á.·å¹ueè\-- ÷•X¥XuÏ*cÉyVB ƒÔ¡l 'vgéð$¼¦À3 ¿p†ØÃNšaóÏržúœÂÝ= ZAéû~JÁ«¾Kÿf÷ÓC(bxß6Zшi„½µ,«r TŠW« 2ñÙ¥ìAû2KiX¯‡¥†%ÖýÓI˜Î¶P³KZÍÌ]+0lÜõVöO•™qoîÍÝÉòìÇñkAà×*ƒ“›Y[ „žY¡(FòÎDZu0kY÷+Œ®o¹oû/oŽ1¢‘ I‰s„[ òœ¡ææôú£p3À¡Ñ®*n¢‚•þœ·A:‘üüÊض·³–¨Üa¹Ôü½XëÙ¨ÎGøÑbç)ÎmVå£*¨:¾aîk¨Û ðð¦¿Ï„@d™ï*¼zèÊQ¾Ò‰ò^vÍXkÒÂIâ‹ZÇvˆ×òŸ§WÝôMJXˆ‹ear“W“ŸÈ¬a ÒzC.5y9ý±Y”Ó& út \P(†æB8Ú?ëL·5¬KÕîá» y¤¶Ïœ|K'-å7|ò/ôyø‰þÕÍe¾ô´$@çÒªAȪèž)j}þ=•þŽûmeØŠ«‹º2ÔÃnˆòXmÂ!6£ê,=é•qÞ˱¬<î‘T"Yši‡y¦º:(E‡ŽÞDßÌ×8 O^ž–µ]%fh€Î¶5U¿v])5nb#Ñݘ“éÁjj·ŒíÐsÄ_†Óêž/åçšèSBãÁnEÿ2Ýë'Ë”ôžü6ö4UØíˆüœk¢ž—¾2ú ˜ðÒwqZiËJFô5žxfÐÛ«È!©£5].ßï8?1$ ¤æ’`q¦/„LF`bÓ"ñCß®vë2;Œé¿wQl#”Ï[¯ŠkƒÐ74'ª±F›æë~IêSåaahôêÈ*j¿±­*á ÍÖª"*@ï uK›äç-)œ)‡«é(¥Gm‚ðo#¨Ö)¿ÓÁx+×÷^‰›LÏÓ“Aå[¿v1ÍYKïëUèÞÍ,‚øUH„Lèag¶žú¤t3’";:U[ö-ž/Ð/j˜»m…!pÖ.mtè0VnRuÜÈ15äiô…åñ©A$×ò€+&vAì¶·îz·OJ¡^Ãߨ=V’"i£KS¦¹ÆýÞBuüAŸòܹXÜ|@À ØA¦¸¬ùeyåÁÎÁÈ›™ª.‰kÁ„¹÷ uéÉd"àiX™—+v€µJQÎj±4ÿ%vŸBM—`zÔ³Ds½ÿ(¬ˆ½¯ûÌñûïGÂSq³—¯¶GR°,v Ï›…UBö*&•dñ¬~ãY°×!9Úã|ÈÍeĺÜËêIè)Ì»•mW jCE>:CV8‚K`}Q~ó4¥÷-ØŒöfCõ® %LP¹%d"㚦P%'§™~=[+â3„ýŒ[×Á¦&=DR€™!#2h)‚šŠE$ s™Lö?üŒ²¶6HSé »¤ÆA¦Ú §Å˜º$_4ÍäçaЖ°•=²·+†‚¸é€m‹`}]Óõ±ø@S<&+úÒ”Ó~$êòj»ç?´Û}^ R#íµS73/ÃÖÑTb"”?wA<ÆÊ>ê‚ÿ/î°ưàúɹ—]}¾²3c¦„¯–Òfslw÷µBƇÉÓ¨Üm½b-+ZY.aã˜7ZI½•ÿéT¦½¾Ö_Úãd¾§ ™W(Ð}Ô'…HI¼’§ Žíz‚t¸/OöŒ,m¢ÆöiÃÊ9óæAÙ3ý^V  PÚg¹Š+Aú2SŸt¬ÚGsÕ³ì°ÁHø°îÕyÛŠäbeNÑ k?ZŽÓJËÈÛÓIù¨²24ú5©žœ÷ŠèSªþ«oÿx³_eã’v£3ïÍüV¬N#¶yp CëØ_•êEîé _Èåv»] óÞŒ9Õ§ ¶OÕÛýï&’^àË•l=–V”ó%ìL]‹8uø.*Öó9ü©š Íçpƒá{·Î¶­uËWÖÀl¦J.;ûQÓ=sø·ßª¿÷-PåãWx>ëȬ<Ô\x8†”콃p{ ›qÑc'ÿ\ø¶Í÷Jö^ïqG ã\m¶‘´¸´!ÛûBù)(šÅµí´†i¹¯>®­iuN¦~éUÌGð­AE7§9•WÞ‹Ù8öÊ)xÕL ³¥ÐêÓ&†Äv^‰°]”;KÄ>²É‹ªÍ¾U<”Ôw}„קꍗ0?ƒ\Ä’aœì¡zÇE³Âµ xÿPÛ-Qõ¼î™Ù>ÌÚ·PðkµüSäž’…&ýXº®˜ÝÐÕ mïÆr¬ S5y\B2Í2`Ký¡¦ßÐCšÏX‹=8ÕÔ wŽÄjWæžÚe†+{ß*ô¼F¤ËFB‹Ms„/‘ &§Á窘ÁsÑ(ë«!DlƒÇ ŠÀЇp”†‡ïœ+¨ß–Ð$w2Š%‘+0–w‰âð%ÆbÓN"zÓ`¼½&p5œis?®ã/}´.ß'ãÀ…ËR_ HÚB,·þ(ëñƒá¯4”Û ˆnv™š¹Š‚„0Ä}$¢—i}óó}>„)/R[¤'ÇhŸ¥ÊȤpÖÒ[Ò*%Ìý$¶‚ÙµÖ˜ ì›"€gð˜Ã$賺rÉÌöÃ3É”m_Ø`Ó èLëf€Õ–Aƒ:Ãý¤¨Ó{4ó.y̸Ҟûº›1T؉A¯ò!ÛFλ†ýÍò,1k†i4·ÒòAöèž]IµÏo§Jø"þ2é*}ÝæUáe‘·¹‹ÂPã4zÞ’¤!lyt#ž²©ôhê ’%ßLçú0ܘ·{¾{8MRàö*!øÚõk¿Æ%ÿhððEÔäeJ¥¢§ÝÀ6ª/˜Ðà6Ç645 àñ ðá­WsƒN@vüÐÒ; |ÀïðßJ ˜4d^ô©æäh3º!*Ù5ŽÅ«9âJ°k†è¾¥×c¾µQ“l&9o¤WdÇÂÖ£Qßú-¨]gÏémoâé/—m?Žm+ïp{øýæê\^LTsƒÑFúDºýäAÝ*UsqÚïøÓ4e¶j«N‰»ZØ¢»åmßhÞ—D‡^‘yÁÑ$âÅ­¬Ö´pÖV=æ Dõm ~AÁÙµÉAÁ ªý"“”›®–ôJo˜aÙðyð[k„ñthëfÄ‘Î`Y´¦J¬tán÷€t“E¬ü»†˜…µ±‰á'Zý{®Êâ‘Pùé ¤ƒF•n;‘8¹k¾%AØèÃ1wàÒµ1n2aÿ1{áVãa\¾…Æ÷ÿüþ]Ð ¢\4TœºÍÎ )D$X (7õBê É ðÇÈ•çj÷‘•÷GΆ/]ɨ‘̧¼Â¯«EŠrÑQQ Ó0ö>+dg÷„X*,–N8–ßÏîaœ„laòiTÃýšíÒOÌeÒSö§Lj4ÑKÁõå&Ôóþcml ×›¯0óX¿o,FÁ¿È‚ ºœ5¼ ^ÛþîȂ÷Bâ4¦¼²Ô\¸ÊÌ¦é« „€HG¥×'…U?o—Óf``¼ø^-@+ÙÕæ4 »Â×µw7ñ0¦™Èè ˬœˆžß»ØñøÕÛššA ø¡’MÔì-”´c¦Ï[»N%Y½ W¯ÖÇS²^ž¡®¿a@žƒEé<^¿Ci/ÍëŠòÀ­ÊZÓÝFs&Ñ*#hZ?æ•ëGE¬r¬Óy«‘ ±ÌŒµ'eMwÒËÆVç6£BæCÚÜ?é!âyÎ:N"v¾ˆ´'sÔ9‘K£Õ}¬8KˆŒF­mY© @,Ï_¢åBª%’ªø‚u Å77cšX+t…×w 둱.Þ)?¼Jtöû×Ï^¶äPU¬kÞµ„V$Aµkv¨‡P7mîF£Ñ l£Áºzˆ¹ú¥ÝÇ|ƒWC=ÉüM‘w?0¸i»BsÀ|߀rÑ#ƒGÀÉŠ$èç™g¶`)ZèX—­" „4 È»zþÝn™áغZ¢¡vÊw´¨Ø!b²¯%î[pÐKéô¬¨7´̺$'‰‚¡2q‹ãšèh†ÿCÚ¦‘öI-ëW…20Á:ò/Ĥ‹OšÐ¯r—™loq,óÌ;²Ð½Z²ëA+þ$øæ¯¨_•À¾ËÏ;êOk¼½ÄV™Y*±™kêÅgƒG5’¦<«Ax<¼ÀŒuh¯˜ïˆJŠäfçð\HÏ踙r‰Ûýí-t¥cÄ%§d4£’†âÝ“ @J¯q2Ž«!ÉLup‡ ã2ùÛ>Tø–ß6EPµf CÚ\ÊhÌÒå-T2'-Nzm±·òOÚ&ýøÒ^Mõ¶Räë!ì[lT“âËCôœ”ÝÀ(²83 @„¿£¦%ÿ^¹Ï«¼ûÖÊJù7j)Y™,çÂÓIQKOÑ.EìF:wBè¾’²!÷‚ÂÞϪQÆ—…eû¿žaL@GÚÄOT~¾=¯V*A{í°UûñGÙì{’ÁÖ.j.LkÕoÕœÅUŠnx×¶€ÁLT¯&>xà€BDâ<¦à¬Z¿9Gª‡¹ŠÊõå1WMA–`Ÿ[{Uä¾ó;ÆñÀO“’IV°@ÁÉÓžU¯7OË%Hh á¹ƒ{¬NL3|»‡´³&Qƒ,K( Š]t{•M~Àh¢Wͤ÷'¬<ØKúQp¡2èO6Ï¢Cšr¡•ü ÝZŠè[¡t¤1·J˜ÑÐ×c”Ô‹&ËŸ¤|ÎëhOÇ ½³W§øN4ÛYf…×!¦\1t%ÊŒ¾4ÂÛA*Ëà§J–ãÁѾ¹$1:ÐYJ¡½uìöä#ÈrˆE2Ãz¸2ÃÕe˜¤uvÂiŒûî°ufÁó$´Òyi4Äšv4B‚(ùEîuËD Åiù|Ù•—Ÿ1! L/ùóÏ%Åyaoè‘Ñ¢½²R*QlŸ˜SÁX¿H/”OšdSÿ%º-I ]ù×Ù„WkôD“«… ëM¶¤Olè¼ [”*Ê4RZ¼zÓqž%>Ÿe†ì>XZp KÑàÛ„•ü€žAº^yÜKSIéBïKðmhJ€s³¬hoÈ!Üp€óSZtxýRH”{Êh-à^ÿ6¹-P%Ú­ÃÕ#ßRž¢N Κò¬í9å»Q¼…r%f†Øòýæ ZÔìÀ‰Î‘ìk©íœû§—Uï29ÔÚw™*‘øÊ;dëŠã)ÉWõp&ÍÏ”/kÕч½Æql¬ðù=×Ôi‡ƒöÏ+_¾†xÛwpˉæS"Y±t)̶ Œ…¶@Æwv“8bJ÷àÊAu°l$^ˆ÷•Ú@c/@ žàÆHN÷Spa­Ç¡G% T" 2Î3„dÀìlÔî~ÃIsz=5”tú“:µ«†¯ÜܘÊß¾À¿‚KÎûëN/>™æÄîHQ·Ò‚„ÑæŸ,½®¶DQ²¶Å1t¼Ò iÍÎ5µ˜DÿmkÅÐ)s˜è0ÐÁ€Ù®pQfÕ­ \ã¸áô*Z¤JÊ}èܶoz½‡Б~uX}¸¶.D—ÔÌ[=Nä‹÷ÒçC!ƒBË)éòÿM3>c7 ÅïNlÅ4K;›"œ;eœ°²ÿ °k˜G„k@ƒŠ(•{ñ ŠåÒ^¥¸VlD?•Jÿm 28Çk¨ü¤õ^Ëý¶›µ^UùÃÓíð®ó:‡•™ð˜/kݶöÙh\æmä„f÷ïÔPf ñERã!á# AØ€¹s@ÂûÊ0æ¦ÏAV"TÈD¾&16.PSúÓöýi/Ô6§+h,¢¨€sW)J¦‘a1úiLQ|3¨mÜDÀ”°ŒôÙÒdÃ;Ø6bWIú zZÿ|#VVŸ6¯v#”7èj›ƒšv y\Iž î’·M¿!¯«N ôÃÝkëÊGòé1£Ãµ•Lò©+4o©×% WW~Ëê Ye"Gœ<%#…~j™øNèw»DÁ.~ïê³S\ýñÝeþ.|ubmñg*$÷üô* @ÜÓ§Ç`WÞ×P ‡ÙR×0Yâ¶©ù±8\ >rZ@¹¨é—سoöΊ´«Ñ b´óßô֗צ¦Ef“D"‘È˘—679Пã|–:ø§&(¶CU®¥!îÑðœ%uÉ.x> ©2ñ!¯þ¯c>®5ÝåÛ8”Rãò‰¨Nˆ§W-]×5aûÀqf@ÜHu‡7¯¥5 -r«óÀ'ã|†,ÔÐ # ˆŒ÷hi¼ú)ÊCUnºVý”…j©5zäðNî²V–†ö@¬ómzŸK‹©r÷¼3°Ü™QßÃüìÁ̘Áø*5; ;@ŒV•[Ý‹«¦>¡˜0Gcg@ÕT±?V´€ò/hOßGŸä™jMzRýóýÅÁRêŠ>±Ö0TLÎ }ðìxêZûW¼}nN˜'{€­ -(ìÌÙŒ Ô2ŒŸhxÉÞö˜b…"N>»NgU{œà‹áAcØ&w)êqÞ©Õvsµí< 5ÔEÈž5Ïi1b»ã{q.Qý§ˆ>9Ÿ‰U^£¹ð+Œžº°mÔ­(~¤}‘¹Ÿ|1¹hØQ“ìòu›À’#‰±À¿-µuŒÙfÏ`Ǹ#¶.1Mþ¹^ªî Á‘:j Œ8EqAp=Ñÿ,¾‚ö+™RÎ褟@ÔªÅÓ±¦§2ørÑbeµÊâè‘Î×·Ì ¡ï0M™âAî¼Ðš3!t#9ìá2µ„Æ>¼g$8zŒÕHC×ób_…Pâ¹Ñ°;Q³ÕúUK!ä/ 3ÉG¢”.ì_–”{ŽŽ£±'\йg`3÷G‰‰´"0„ °À±‰(õû±Â{ ¸ŸQ† ™îYÕåÜZ]ÑÈ:Ì»§ÁêÓú%ö®Pbþ†Êh:ï>:|±‹(O±ÍÙYã;ýÁ3F$—m™«®³ò9Ëbjæ…,¦Ç;’ä _^F~4°:¨º¤ñ§¼í•/fzŒU«Èü†Q0Œ“Õ"ôyº)ó¥³ ¡åH¹ ¢f‰‡«ãÁYSðu œ9S‹!ìÎ §ÈL-fœì ëý÷a.jÏÿ…¬@÷(¡3böò‹]­(ŸÒâ÷šLøu¬£ÝáÐü=ÿ €Ô¼‚YywÕúÖ$Êxû¹ð[ÆçšÙcv éœÖ¨Nç¶”`$ÍóeÝšF×{z¸qmºuÿ„Š÷ iöç°M´l%®òƒ[%– C<8ǃ=…ÆÊÈ`®|h?ÿ3?ì¿LkÇyyé“ö® ¦Nmï¢>ô-±”ðÎÊN3ëA`Bkìý ¹Ë5«efßé…Ìm!£Ï+ä>&‹Â¶·›Ú "DËÓˆxV¹”0wPAû›`gö§æ× @Öäç †S¶ÕÄJÝî»â˜z†…Ÿä”äe›õÔ[ußÀLB­±L³|‚/ v:ûJx ºÒ¿`Ï…¯3jï%]⎤îæE¤wÌC×}ΈzèafóŸAŸ¡2·HlÿXÏm'Ëøl\‰æÚðI“CáÑŸ† ÷ÍJ¼£[¢À,e…'07Ý{sì—îÄaQƒèÂh}òþ a-»ös7x]ßT\{JjeÆU$Hò›È±Ÿ{µðWT­nk» 1ÿKœƒ ¯žºÕ‰O}Á3Å‹ØdøâøœÔé„(Ûq¶eó³õFc5‚òs¥ù­ª¼½Ô_RÊr¹0}¹,¼mCwÉú­Æö4ØCh¹p=ÿTiÈ«uv]ÌóÄõãB™Eø‰2cÌË`fä ÑÀ•ž XކøsÇ/Ü_üQRfI¨A楠/¼üÊ'›[Í' ¬E_§Q ŠQB1NZ!GfA ôñ® eÞÉCpË•§&tÉ'ëGý"› V=¬åÊòÈøî}*‘¸vÞÓBOõûZ5 Ú3NêÔÑÜØ5šÇDœÿGÛÛÚ÷ŒªñZ5Í^pú•öNà¹ÚìÒƒ,4—¦1o”»Ýýì–~Á7é¯Èi ØpBe˜!à”.71©f~{WMa+?Fb“ÌW¡¼…“ì«fƱqÍý!qF±`@èΆף]Ò$ÑZ¿T?þ$ý¢æm‡Øâ‹ÃP‘†ÿ@ž‰ÁN–]W¬•®™ôy ªÖ/õ [Ð"Á®1oéóYâu®žW\¸=˜‰}ST0ÅñÉÙ£ôj ö]#>Wj)HM;¡äwñºì_rJ[,Ö˜ÔQN,(ŠÇipwÕ³8ýÖV-&Lúæß쫇7XZĦÙ?ÌÛúË|Èþ÷!g`&·¡ã¯ªã7õl 8÷(ìÎc¾ÉGò+—‰x¥ÉÚúõñòœÐ_¢lf—_üúM&ÿn6îgžE•ýîO™œxë$ŒèöLs¥òìL V‚j 5u}\Û“Q‘½Û=ù'ödÖÅÓü„ï„Êé&|±ý>×Ï%ŽJà¿à¦ÝzÊ”j¬càØ|È!…ÒRÔâC”™&7FwqÀ{ð"Ž+2À¢{!Çô½ÇhéþÒKÔ¿¦þCˆz¨X?‘‹È%Ò®µÔ}Ùsì.æœ [±¨Ne/ÎÕíq± Â˜ŠÇ/m¡×\è WK2/†/ç3‰O(åo-–Me–iìá"Ús 6æÜø–…U1« @ ¥£@ä8„jïÃØ'X®z¹áîÚzÅqqçø?9žÈI ÊÊÓ·¤ŒÉÄlx$Òcn0åýí ¹°ù%)”–oiÃÀ…´K´jÃBw’zd ipS&ØHo7ù>\»[0NŠì'1…s±³áx <— 7>MwÁ˜àã-l† t¢7’ÑCÚbM þ4¡ƒt½S%¢ÆjÅó’Há‰[á[ü¹±‚ÌÇÙ: »kÓÙòæÚLóvÇ^â¶`Ÿ¢ëèÛaÞS%ºf‹à“ ý¼ëÁvö²”¦{"P5ò{`u)ùI_½‰s]áµÓ¶^lþãÍÜN·‰m Ïô ¦]gÆÔÚt.X²5œIÈ+Ÿk6 å_•ÏDÉ&ÉÛãn»j ÛªG·m1\Òtkðu$Îu‰í€1¤Ÿ¯g{e\…oL¨LÖP|¡ox3«ÙE§Éz ”±„æQ} hü’åšâŽp¬wD o-j¸ Ü}E);zÚ¢ÈY×ç‡ - ,²5ÁLùØ4À ~@P:È‹áû?“#*<\·ÿ`þ”^À …éwÊ„)KÛ™¯@å’Å †ýÞ:Ô¥9 7hÌ|IfC{·×Í% >‹‚¾Óëé[ærÀ"Pëw¡±cœ®±?Q”þS·_BåJnmÔÔz ˆ6z&èE|¬&‘⻹«Œ6õ6%𙯀ËC“l å#„ âó¶¯#¬WNŠ[“xÿEïvìÿ/Y%iùùµ‡'ÈKÈ=Íç"RœÝ”(ºkúB‡ Òx5 MõV˜ôƒ"pñÎ&·«ûŸt|ëFÂB'kÒÙö•ÊÑéT^‘$À:˜/$H¿¯ šÚo¾Š’z‡³òv ÈÍbTZ%yû4cn 7Ö¢à¦eÆŽ|¨£×”hÝçÿÓ ¨ªd=7ÓD²gSD¼™VÔ\¡ KŽöé›ô‘è bÿ­¾1Ez<Ìi4J@ Øj"¢È…L©ÅÅc”T’bL ²”„iÛ¼¯µ[_IÆ[bC„~egB„Ú¸7ÞLv}UaÃe(˜5ŠxÔžY4§Iñ¹ŒfWš8,º‰N …í²5¹¸{šÊr”k¸,gf ~©•ø¨Ë‘ßÕÖ´€ñß|?ÒFIüÖ^QßÔók¾ùÀæ;HÉù2¡`ç‹UP±àŽ×ëà³Êòu‰ÙOK‹ÏÑ ónïk`JÕÎÝsmU<Ž7Q(o¹vZéÏæ-Ëè Ó„nmŽf´€ú§Fñ·Íû¤4üQ+d ÁƳF_£R§ ?i¸ôð¼Ì㥠î|P"‹Zk }¡O~úϪ¬¶µËp©AêtÁïKÓ<è8ðñì䬡¾Uë&*$QöGpO‹‡y/÷›šf>²Cô·ø*‘ä/öNWOà`9’zƉÄ[:²‡Ë¼3pò.\,ó å ¡-7ê8+8…eÕu¸]˜¦&åûWJ²þ)`‰˜°ÏáDÎ;óšõµõk—ûI〛~9À׃ÎåhÎÞ ª'*²©Jœä ¢ÇÔæÓ{ý€öÀ¾Ô!’Ì*VYTø¥Ž–úÙ{ÕEm¹ÈËÈÉ4 ÷Þ±9V¾È'epeœòÇ[{ am)`0xúE½¦üáÙÁNôÿKØ)?q¹ßÏé—Hl: 0Kj1aÙŽ©xðÉ•`ˆ>•´n:& &— Zöœ¯ÚçäbÅžsLf±½èB/¹>F%ÊM\s@ptÂlÌ1fûÕ›ÿY•/ˆл۾úÝu©Öd8·Ù¦¦í¶ F œHP™Gw r1 œs¨5ª'ú¥2òSp¢ÀubÐW2™Ê¦ï€$wœòlZO±3·ÊG¬›Ó€Ý*½cÿpYάζ˳ôÊ‹û…‹abFoò¥#™çš÷ak¯Öݵ*¾Þ~Fkd>vmzhä]=N…+3Ê {©G~‘‘עʨFvÿ›†¼B8‚ç6K÷ŸK¿ˆ0x·HñµfaéìT“YœÚa^›p+N¾û ñ센8•4§ô2• ¦»‡Éÿ<æµ®êä(Ld õ±ê&ÖKs¨£EÝk_´©yi¡Üe»€ñ:ÿFçà12pv´ “Äq¢÷â†×PXµäHFNAâúï”à­œòb…ˆ`>zOœÃ::4·hæ2zdÑ®[b ì”GÆtQÐÔþêBšg¹Œ©4C->Éuà‘¤’ê&`«ªªP4©ê'n Ž&à'šŸI眵+X螺Z"Ývm§R ²L-tMf Ô7? SI›™½ÜK*¥õ• v%:cÚ£1N¥Å׬ÖÕ ·¶±(ë­ˆQ]1v/_ø@y­üæ×Ò0k-â/ïfãå¢7ýX¿êØYPÕÁåpºÉÒCÇ3SÔàßïCw±¤ä+¿/«­  z@ñK•ÿ4žç;pŒ/}¥…ËqþÚÕ“ö:GÄz£“=#(Ô€ŽÎ:6¢«ÅÛ9Å5Õ©ž@(ç&b%&ˆKWæ7áuf£[ë"pp‡ÞMôÔ­ux8´Õ³’¬{äƒË3Þ™r`ôî°ž©Is*{)!ÁðŸZɉ“s¥ŠÕˆ`)Âi¨5·ËP^ŒV"?Ež¿þ–‚õ³z´µÍæa<[t¾³ÄÍÈ–Éöe<éè¡Z§FŸ˜Ë ¦6¨ã&ü²Ië– ”ñ$Â8+®ÿ2®b¹\[L7uh‰ÐñY»iàŠY$éÍ`n­:¹Á]ÔÔ+Šñ¦¿VÖguð˜p`z³C•ŽÐìÁ;Ò+~“mÞ‡’K û\)yXÕvT2Íiî}*pKõø+2G¿ú‚'ªžŠ0KR1…RNž÷ô›àÌÁ˜XÀ™´[úM<ƒ êÝcZŒèX>‚ïÕ%ÈÑÂÃÈñÆ$MæêP=‘ËRm)ƒXUCÉ"‰ÐNQ°dþŒ²’‡-ÚKÖž˜?Ïl­kl;Ú÷?`¨;åk{¤m‘ <›Z?‘wTëÅ©„#þÄ’M)Sw¥uJ‚0öœØÁ}­€âÕñ>œ{ìö|´‚}›Ì]¥Ð:†Ã½J¯»Ò:~A×Ëížo–Moã•ô%%P È:&Zï´}çÛ@²_ØÇ”Ž<¹Í%–çÕM’Á×Nt#儳¨Ô8%†µ)ÝT|¡T#D¤¤Cne«±²È4$KŸÇî[nö¾=½¹ Wß!øôŠßî…Ž[‘}¿µí–ºZÿ*ϸÍœûRQž–åteÕ'H8Š‹Úܾhº¹zr£Í¥óxSÜš&é V Ñ8®[£Îjá⳯潰5½\|œqÂv¢™†BEÛà T¾ëkÑùYp¼¬;Þ0\ñãÍñœ çÒ‡žDÉ ;öä§ ¥}Ô²Ícõ%–s”LÛNDz<+©¹ºk*ç5‹PÊzÌ#S‘ôÎÔIJ›7ÂÅ£ô}žTP4 ¤h6ÓtÙx%áãHˆ7P×RÐnŸ4feµ=ðõ)EÔ‰¬›xÛ̘µQ„‘K‘ÂÂË)hÈ_$á¹_F¡oí(„i³sÐf(#ùèó~Ǹb †—a“Z'< lD6l{^ïU85Å‚É[OÙÏ=RÎÞ¦ç§+Ä8/Ùz›$ï°A¨çÆ,óW–³F™¨·ô¥År6(LößM©½µ¥q¾G»8?ÂÁð"Bj6¡êæc8l Ok4¤R¦ýRãZ›=޾¤Î×÷È)bêGËî "ý_p‹w2å]~9À„eöU9žð¡-à^báλ3¨Ö² €–ùñÄëos‚Ï«µÖßé©nGM‚LÉF" |ÈYR#¥KY1ªcR5"VH™EÈ.ߢ&©ó8AÒÜ•GÒ`[Äi¾õ›÷Yt|§›Â¬«õŠD ZÚUçâdâ:{ñ8{QSCí ÉGSèˆ}Ñy{ö•¯íyË"‹ãš8”Xx%çú ¹ÈºD³2Î(É)Ñ›B³ hB[ÈÐÌgßɯ…ÃùÁ#¶%ÃÔá·^}ôÿyÇNÕF'ÓV’õB ¯àIvH,ì‚Äîדúš_Û;$åÿ‡R†ƒæ‹± q²juÏò#8GbW‚ÏÎLãÝÒ[X×̳ö̹¡ *%Amï¾p´3.½Á­ù ¿ÞAæJKñ¢k?F£ù^äø¥"¨Ì)Ëhû ÃÏïÚÝ}‘„U!«à."ÅoÅ™ É ŽWÛîH¸¦ïî¶±@çÕVÔOÓ ä…Us×ÑB%K6ÃOýŒ˜%ÇO!`³ü”'÷âéܰ¹»Óc ³r£’ã2üq‰è§B(½I8»7 þwÔ6fÑ!Ú£žÚÌØY椵Ü>´èÐ:Ï™²¬•Õú±GÅ*K3›J×;Á†üдû›´8Ô@I¯s1ð®Ù+F¾Ì­p< Ü5vB¿¶4íI#›Cçè³Z’ÊFm3rŒÝiÊnˆoYäF¥L>V2+nS߉/bô. !q9><=k&®)*ðÌü1PuÖP ˆyr5Ÿ;DTíDLUj_]ÞkÌ·ûú Ç\Å6¯Ø”5óïZy¢¤þ…„y9qˆi-Wû,Ü ‚ëlÃÜÙv¯‡4pðly½íÝ­Ÿ‡Ñ°4a‡Ããô±‰¡Gª‹öÙ‘æýÃa£„%¯þñ]¶+Ñð @Eý¥ŽŽ˜FͱËÝ …±dT2'ù¢PŒéX3ßn# ×ÈvÀ˜êŪ$¤Œ°€‚b}s:õ<þbN†ûª§¸A‘ǵãÞ¾oÛªbÇŸ}ÐY îU¼NÜ”Em&_€IÛOô0÷ã6Ž2ü‘®H ‰òÑïÈ£œÎLMG²m>TŽY†¯¤‘¾wÿ^&út7zlªÀ3¿pWHÓãOº!`‘gg‘¸×¨I  °rž$¬`UÞêË–2bÞ‘[r¦w[Náñ»ûÃ-¿à«Ì;å6x•ذ ÔÅe²ÐØÉØJMTvÁ€¼äŸ ¼'Pnò9$*$Ÿ©ì{½JY†ŸOÓ]?6o5‹A¶Úج`ñÄD~Ø6X–“à:Ý`¸&zD¸©d­gß/O ;ÃMws¸IRIL†µÚ'þö¬G4DCôJÌàkÆsh¢ÛÍ"nåJª"U–ÕŽž'C¦A€Àéýd[°Ñ5ÃR„õÔHeJœ¶ • f~{? àƒÂqgB¶W©¸K*Ôp ¦¶ƒ‰µ£àISzu©Q©õ·Ÿ¡»)DXfŒÕZïtŠ˜õ°àä¿kPåœ`âyÑiá“a§ÀIê€êædxïÙÓ®]8Ù·¤o“Íà4ʃ³]/èqÞ†| ÊLC—ä ÆhŽ&– ¼í* %…¸?ÆÍ˜šŸ¹_¤4ªht®Î×þw:5/U|Ζ'ÇÝ´‡kppKÄ í1Žbl¸ÑÐ'7_–w›ê¸{n«UVõY#€pL[ï €í^´b8-ì§`¤êª|h4[‰&jæ~€—F9_‹[ÇUuѼsÉÆ}+T\Hö Ä[¨~B¼tûâ'òÆÿ:?^%A“D“¹ñZaÙê‘hE•÷«ùÃ|ÜÞÄûä"Y†^ Ã)ñ.úÉÛÒùàêô£³±¬®6ÒED½]VIZèJ ­Á¬î7hø¿ªß„õm’Q&]”Ü­KÔοldrIJoÇÝÕ2È*—EbItŒ`­ýÓàè¶!ý um?&@ Gѳ;{‘º{ep¡fAÛá%[V=ÎñYÙ#æ~Šì#âÖ‹ŽwêVÝ^¾ÝKœ+u%ÕïtW\’â2 ýu®s•–¥&Õ6ƒd«yÛ7Ì :S§"š^$§†"ÂÎ$—ÉÇ3ÌËÂ(àÞ²¦eÅ¢ã9UÄ ÇAhXl>A*¨nÑÌ(JÄŸp7]³ŒÑ´ZXpa×§µý%³ÃÐ8ùOÝÀÖYˆeš•À£2ÊÈÒÇLꥱDýp‰'8 lèäv®dû©RA4ÔM”vÜF5¾‚BáLë†ZéFÖ–÷Ä^j)ø]îQ3¼ìÊðÓ¿DV5? ÄÖÿ]C6ÉYÈùû“_ñu[Õ' 0R¹ÎCµÚ#à’ÔyÖ"jrçâØØ(6¢àÜÛ=›õ±ÃÚÓ·÷*)>Ñú, RNhaâ¹¶Ñta`¡¾'; ¶tƒ ExFx hw6`@³É ü‹VµLæ"®Øš¢La&ø,¸q!e¶Ø/ ´ndiWið­Á¢°º›>±ÒgOâ]Ûøø>þû@¤ó¦LØäsBWœ0 Û”vº`).Ô)o'ø¾O•W+ç“5îEÖ96âú˜ã‹´/tv—MbôÛ: ô› À®ðÆ®Èf&¶éO°3ìküK«U›w ¢Šœ™Ç¸ Õ„Ò:×lD*Æ=টæíh‹Q{3øÒèñ—+Ü&&ÛMB׬΢=¼ gÚès²´§_Go‡y™Þ¢ó×ã¯ò¾yæO*ƒI7ð"Æ‘+ÉŽ€ÃòEÝó$ˆ“:È4N³×AU Ôr¿Ô«Ø{èÞ–lý¯çN@pÆÕ¼—àœ­s&Ö‹*›N ~†D_MŸ„>gÊwÃ>ôhþ‹ÊÙJÀ3(N\ˆ!X²4…òS|wè,2‚}7Œ BÆæg€° ãBPÔ2û;;u+aþlÐŽÀ)?þ×è'`¤{½Ô4}ÿL –<ˆ%|>Ž!t›/½r†•}ª›ÅO!ü°¹Ö‘Ü~IÙ©(üÿ,a¶ :Ðz†ÖdLLζ“JFm¢‹¯Ûœ&¥#Œ“„î$ïßÕcìHëԙ휡K4dê˜s©Gf ¼ÎòZ6 [-¹öhBíf¾ÚÇIƒJbxÓ>ŠUþ19ƒ±ÞÁ¥Äo@°l%²Ä»#w³ ‡"Ôªbÿ{aÙŠ'øø{øpXc~¸Ÿ³è"viÑÔR ÖàX:§)Yª|rÁ—(†(2 kîò=QÆsýbCuˆ Tî°m˜¿IÞ–5áÃágÓEhèÄä¤è½Ÿ÷X^§Ó÷YFuúp>óë ›Ÿ@ÛŠ‹<ZÃÝq±¸.Ò{ÏsÆSNÎøÖ0GÔŘ”²t;|’q¾j¹ˆ¿&mß ,©°è¦}±Uoo§m–¤¶õ|.Æh¢)Ë¥B…bá÷9«›–1cÈUzîîóرHôÝÐö{3ËÚrÓ‚DSbù®Þ3ò}ª;^n‘Qé’ õè‡ó&]e$ÂZ±#[Pó½éç?-㥿zD\¶»æû¨wS+xÞK-iUó¾‰ÿ\Á¶ æ—õ²üŒ«-áRv2û´¬2KÜ/ÇÌ![Sÿ/Ó—Y#®y7ælíbPØéßËN?òoˆ9J2®äs›ÕȈ³1$Ð:`U-ؘø¬qÓud—µ›ç¦‘ØqýA"YY»5/qåWz™wVšLÕl¡=¨²KîÇÿulíËÉYäñÅAȾûù1ãºïæ†øa®ùçŠLbÜäÈc3ojŽj-ß ¨ÿ]¾Ä¿;xŸœ´5Sˆ|P”•®‹-¬€DkàÈîö G}°Oi¢ÿq6†!Ž!~zÒþWžŠá|4À¸Vdã@[¤GZÒqNBêüᨎëÆw‹nËÏðîá´8UoŸ·rÊÆE´ÿ(ÆYÌß8o¥v¼®À(Œ/[ûÑ;C`±¸‡Kä<>×᎘6ø%|­~2d ¢” ~ñz ºƒ!ŒëŒPëXÆy~}Ü3¬ ¡“TÓÒy±Š& ' NSÒýVú±LQæÃ?®ôÎ ÷n߉Xÿ ZÒVMÆvy\7®²Î#¿4ËO‚¹8ÊÈ:˜2Ö7g‡˜vþ‡ÊEŠHÅ¡ì•>w¸Þˆ°­"€0e#ø"}€}à4þ½ ™=,“sÍ ¢–mí*ÍfÝ]T×”§yr! ‘æãâYô·ä5…pW÷´û ¤ ¯IÔkÙN½ nîqJ“•… 7P&ª@'!}ÌÄ<Ò®çôެñQñs1Q;~!cw e‡“Ð*€ÑRÿƒ§<¢#Ï}ÊPPöÞüš»(ˆ“,öÈtJ*õ²V‡x¤œ-fÙ’*îÔ¿í¾²¡Ó>e$009–&”ÒË?Çèym¡ByAÞrre½ämš`£]LVT6 ;‚å#QQUÔœÍÑBàö¢r2šÝÁª GÑÉc<¡H><÷•RÃì÷%gP1àýá×rÈÄ&Rr«_Îp@{œ†V«"PemÄ—xÅ ¨M2ûËÌZïÎNyëͳ("B5„ÁñþÙAƒC`­mšù™wÚ?ït~µvE&Ú”°Ã#Æœs„€`ÿ6€Î4°®E”*²zTÔ×^׬ö €P°yPÓe3˜ gw"(;è>z±J°íº§àÞfMÓϼz9U£6Åôþ\˜ê¿bµá –¿—þ\ÇÑŽ…!Œ DRÌ0á´¹eÛ€þâà cœ«ûñ®6ÕÏ¿ªá‹»¾Ï ¢µ‘q 5má$À›0l§Ÿé~ú•hBSò—ÚÙ4@åÖê§©_†éº'LÔùÎ)®ÎŽÎj*‰wį$ª[Ù"`ÙNDg]æ/NJÃSà}­'ýÓ«‚½ïöjUþÌHrWðÍÞPAnüÂôuNßE°$pÚÖqWŠ»K…(™¯eX¯òØš šbdzB,ù4êÄxŽx êŽ"y[}¤§@|T:Ý~; Ú{ŒáaÓMÎïä&ÕK½zñ‘®‚ÓÊM4–ºwŸ“x§K 0A¡iƒøÞ'>z¨R?š_?2å·013«¿C6¤Ÿ°ßíkWòPüY)¶ '• Ÿ(‚bÔcÈÃÉç+)I Yø&§¶ý›G£fB l9Ãl*ê¯#Ï®|âé›WV¦ÁõF· øð—PP¾jÅÝjþDÆ› ×ÏÀ‚!ábØÿRæƒ.­—žˆ7tŒÇG Fçz’NèJO_ÑsÓ JCŒ}Ô?¢3 ±+•ÖØKÜÏÍ âï$½ì‘o Gsd%½ÿKð…36¶*¿d‹g¦KÑqü,¹Ëì>ßæì›í¯jªi/ E3ʾ õ’¨ ¨£­¡î¨e££›0æ5t£0ÉHžõ»”“Ž?Q¿Õ¬¸tÁAÛ)åï½ I¶øû"ýÒ3uM|¾»¥5ãØx5î–ïw=Žéð&Q_àqñЛ˜}f.½,ÝEÁiü)Œ[œ€ÝÞBCg„¯5¯¬âMõ–óûàyØ[Ê—#Ÿ”Ì©Á0¯ëwÙk8µŒÄUí üêl3¡@õ£†÷àyƤ c¬,¨biúT'ÝúXÈ^M{”·®z׸VFqÖtøü§(ÓÏ`¹£€ ì/BùÄ‹vv%þadx%wÊ ›Ò﩯ZQ4ÖlOÒ#û{¤‚ym/WkÛêZ~Rz¢5×ôd°Ë ìš+Ì /5%è^˜âïUâÈ9FìnZöÀ, ò-`¼$É‚úݦͯWÕ˜+Y׳›0Ÿa½¡î}¯¡²A.„I˶#ÒÇñB,$ÄÕQ-+Œ¿G ô¶ÇÑïž½ ig©Œ…B»M$6Þ|÷$™înL^åÖg;ØW“©läã-‘;•p[I o(Ú‰z"!²É»xƒ–d|\µ$Z³9Æ!,Gù9år¶ÅéDt@ß—]†ÇÚo~XÎ)_hköä22#}ŠT}Nq8¡’[”Ñ*™ÔnŒâCxxJ„D_®ô`.œ.Üz6"læ~ù³œË õàa€Ç&ŽºÌ^¬%?kÍÛÞSc¸ûà;6ž€”©ÝsèÆ2Ãï8kiå.¿k¦of^/BdÖfBFh&?!ù}Z%ùÉ0q»{/Ê1wï‰^4Ú}'G`eâ&‚ÐÓ”ãö”~Ñ¿ÚSûG1ûK¿iŸí?ý¨X?PUóŠýAWÎ(ãÐÄÈø)/ït×|¸A·aí¯ ~Cðc.gíH¡Gî”F $Bù…¿çkËÔ‰î+A-ðGF`4/”«ÞI’—š"µ·ù7%§w&ì¹)ƒnÅ)ÎÚMýìtP‰íl¤4êD_Î_¯öÏè vØ–éi5lã‚W‚ @;õen@«ÞÙê“{€r%Úôér0‹-Œ¨„8ëÕšÈÝ20Š„+É´h‡:C?ÝÈê’«g-€ÞSÞ†a!/"K­Žu¯Ÿç–SÕ`„„skÆVÔéý±¡ÎÏ­yõÓŽ¾ÈA÷ï> lèH”æôg^nS9ÀnvNÃda’ É R‹ õÁN¼Ò.a›q-¹Û6$JruæÏÏØ>Ýþöý\p6F*E]*ÿh®¦TÞ—9äÝD¹ ãN˜ Ë3*%õÏH@%_óàöÏ?p«!Wë~ÿÙic09ºX jP ‡ ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cÿOÿQ2ÿR ÿ\ PXX`XX`XX`XXXPPXÿdKakadu-v5.2.1ÿ ¹kÿ“ÏÂîÑà#á„>{æ;¦W>ü¹k¤±Ä\ÕñšÃÙÀn~Ðãý$fZøÊ­òLýÖG{Ôëêæ1˜SÚkðÈÉJóªþÅýÐÑ+wº+írÌcè Ù²’°’ KÄÛÑ´ºò©ê†LBХ̃€àG¥üÞUZc¹úG|¾Ôî]} tbe~Ûªjg„cø,/ÿH¸Ñ‡¤ü˜slb\â[- Z¿­î†·XböDÕ9ÿ>•ÈBaÖîyô[Ûdz« îH÷³ût\=ösþ7á³P™¼ø±f¢Ö§°îò£S´OÖ¹»Ì.¢‡­N¡†ÏÂð±x:ƒý5šÚ×1ûMŽE`áîYüã"ö-äœïVód1’0#W·¸,™ŠP:øÞÔ4±jƒ«%3¾‰¡ze½•9°\ñÏd; ?à~Ü^7=çsWßæìŸRTª÷bsù `çòq6Zü1°[A>NpÞ !fÉòt³\ª¾+ç± ÇÛDrí äAœ¦)~*.ÇáŽ3€ƒcÓü¥^5i‰È8¨hîxÓš­Ä)ÑåÖƒ âœØyï«Ñºä¦ÜÒgÅç³ábÀÙž½ç¨&ÜyZ¹ûê°é1ÎkwR Ûˆ<$™¾U›«c„á?N¾Où¹¿fêÃT´øb IÞP› 2T tø°‹ØˆÏ°|\úZÓòjh˜'óïqW’žvšóàÿnÃehЀÂB2[wáD?^6AydüÛrHå)Ô„6‚qHÕ =&Ôvlé‰uª! ÛLuÃ÷—Gñ`(‚ &àÒ’I!@ÉdƒÜ‰!×D¨„m–@ ªªª¡%Bb¦LŠ qwP°—•JNsœç:' úäffffXxÔ,‡]¢’{5ÐÛl‡Çá`ÇáhCð¯`VC¸iaŒBÀhUÀì1,m5­T™ç;JÊjÄ=šÎ Q36eì 0k*6+¿¬‰qoöžZ¤ñb¦c„´®ØS#Á]8i8¡.^ÀìE£b4 >v· 9 :b–_Ovm&q_„À´š]ÊöÒd,îÞVY»¥Jû+‘SäÔ˜‹*²ÍX³ƒpß½:œ¶û¾Ø}gÄÓHéˆèó?`ëìab™|=mkª¬>¤O/ê*fhaŠR§Ñ÷²©rI~& „å·´ {²Í­Ì d/›ÜUÿRkÚÏdVgïá*ú‹'Aâ|OqÔ“Qù ?$b©»G’<YK¢ÈZ"ïdÉq©Äd¿`üU"JW·Q(SpvÂÒ›(ÍŸz~ÆìWH±Ñ’‰¯´§Äü*¿VUÇBm{<=ema…‹“ë"UÅB[”8_‚†Â#TlOó=ÉÝYôƒËD®ús™ ûª¤•n¤²ýî0f‚_̬Ð3í<±³A`H¿~ÙîL©Ž–Òns¾E‰›d§šý¸’/y¨róu‡LyÔÑ‚S® ¹J‰Äö1^HÞ'˜.ßKPàl© Ð*ߢ8ƒ=’¸®þ! õ™YªnkEEXš‚ãJ+1Ø…}uòíž‚\Ðu¿Œ3@HéJÖ¥þÅÓº®üˆW°‹/|¦P¼°­20N&ðºqÇp®| É*…pã«æj/£9ÍÑMë¦Éƒ¿­ãÔb-…]xøå"Ás?ýß.Aoé`Ãí áöÐP}´ht﷣úcÒ-áO`þZѾ<Ф\yË4Žj(\º¥ØôÅ$™ö㊰çÈÉ^m@º\¿uQŸûN8õÿ’ÞuÛȬØÒLµ¾å¤ÏêÉ&ÒÕÔÃpÆÑó©í€VÛS…U»"!²÷”7¢pßaäU#¾Y¯Æ,rŽe¸Âɸ—Í|™_çk)?ÐIèÈÏGFŸ¹¢¦È„ça±å[ä#è=º dî©'ƒñ8Ä-[HvÑ6§±­ú]<¾7ýFËà'¤þ*©£^bh쳨¹¶+-ݧwµCSá!"‰8Ó:Ä-¾PRlT=ÙY„>c ºŠö¹dÛ}ßýLšøž´y. ±“ì¸'SÿKç³S+·~ÅUæ.Z>Õœ¶¼-1gjƼ}àø°!1/‡E±Eý’  3Û¾œó5iv¨’DÉ3("“é䳂ãþÕÉX7Q1êBÆ¢0õñÁïŠãY¿þKH @¹¯;ßPxÙA‡˜³&¥¡W8ù¿wíÇáEÇáEC𥀜Ëhº“Ž0Pº½>ì 6ÿC&¥)åÿ(Æ¥m ¨Ðm¿Ÿí½vó¡Ì†ñ-ã¾ oñPÚÿw‚Å=S‡T 9FÎZ¡]„¢Ž%j-U‡ 7ÁÂwËDç7 X.Îøìù^QJTB÷bôõøå¼ö»q6˜Ý‘qXPs›ø²ß0»cErõíR2 8í»Îe‹v@$ö¡¨¿Yù„‚ž~d»‡ö¬–ûǨlT¨áÃ÷÷G³$é–­&«Ó•¾)Ùäߦ€í±AÿD‡%Š…vô‡ý€ï_僗µ¬%LZ;ëS34ºÉ„)ìÝ›¼NI€¿ F„|¯tÀu”y„©,`ƒ«ÖÅrBj¿¥§8…£ I7TXš(§ó®-ÖýšÏ ›­qþѽ>YÅíüžv0‡Öy8w$ìZ‘•´ä9ÿ"þ° ®3ìýaÂ8éÑù=Vx„ÂÚØÀ¦y{ žûÚpWàfu§+ N ìÒDLuiñj€ßtƒH£uÄ~†ý—S¼„ºC¾ÜÊb¢¬_¦Ghÿ\bØ£_Üa†¤ðÏJ´ÆÅd—J¤,Üu(ôZယ©é¢à#¹ÈoâºnvnÓ <ûw²ZT³Þ€ 8ˆWSY¤ÇEêÞ¥b\¤½YTDÖÐf¥¢Ÿ{qqÖóÊíF½¼9~ûڜڪ„ßll̺B nûYv-/𺙵¢spTFø±aü^Éö´mt scàüÄøÁ^9×ræ]&#NûëÿF1~L?d'Iߤ,~^=ì…Šžd¥£áw=|ß ‡a“^jl/|~ãiP¹ömh,÷3´-›Ý@ò\ó{Î œG8¡`2芎MMqŠ i£¬Ã Ôi2b=_ù¾½à ·íåÞʑ͵Sxž»î˜ìÁÞ™ ¶Ôo"¬)…+’ù”¾JoÍ ÓY¢NrHâ¸Ê[eK¨GjâºV43t›Ú%­ÓŠmòo±šu ’«b§õ —<‚mâRÜpÀùn…EÉø2{­òTôdÆlJ´RðÎiùœZ¤écNT|*q»ˆä\6:–Ä't¡úˆvÒÑŸMà RQC ™?K¾ =´o«!2þ÷`¨¬* *ðwòkÕ:3ɱF£_›”YláSØ/?Ä^æofY2|¬‰°‡Ì$ú9LÍø÷F&`fVH5zùZ"kºkµO—@mÓÈ~L«©,Ö{ÎJ£x?¾ŽWº ê¯ kM(Ù€¹S„”Êþ«âí ,ÖU¡ êê %@é(Ã|9R,‹YÆ?àŽì8& W—÷énïÊÛÌ¿‰3ËB¥NˆÜUr=TíT,}àE×Fen{ú¢4¡‘¨£8ù„àÖJ_ÔìÝOqTMž,ƒ¼Àz½‰ý€÷5Û;é¥h@)M©o¥#º{ø§‰'õ¶ª!‘ ôÇÉF誔ȗxü{Õ—òÚ,äYêÙ5¯JÑ};Ñ2 ¬Z “s0L¤ yºóü”¾ùpž ÀM¡þûÄíH·Ê.f•%¥æ/QþN©îZݱ@xÎÞZ²I˜ÐæjPþ5ÇK?¯{Q®nD`À…öú…–g’…™#`fgõ¢wBÓœHJ³dLRƒVªDÜ6gœœ"ͰRœY´0ah%š€X ˆö–#U\"™ò)PmYP“ÛßPøš2ýʘ‘BaÓðZÃáÊãèšyªÞJ¿¸NÇM§ƒ ²¬Ð–‡ØKU‹€!p¤ì¿FÅØÎ³ivû©n=Áëhì”yÍåùæpkcôwº;!<ߊó"š6/½N’ vGæ¹ÙûrÂ=Á˜˜ R©™‘Ïîsº{z²°0l=ž²îD6æmkÑzsÞûðçÕ™adÝךä<‹úÿ0Ä$«†Ì\.ÂÙg‚'OD¾÷7ÐŒ„R-fn‡Ïž¨¡ Ùe?+³=Þ£7A«Ó*Ä×Íð|A2I(à„É.V2ã|a™9¨§úXŒËØãݱÌë»ø2f&Ó¦+Ýw’ŽyÝã8w fb¿YÇU*øÒÖ&2é¢*ox£m•„Ž9¿paž ÄLš}ˆ?ƒÕ\NlÂ2kàT±a‰zNœ¦}Y¦îdËî¤n¼]nw¹àI£‚4zˆeL)ÆVís5n^” k”ÊPO²kÎH ‚$JΟŸ¿@)M:µ›¼ ¥k ôV‚ŠKyŒñvñÝÔl”¨ÒDÓò:Òürè84¬àù•Äôæ–åh†¡,¡M•WS?Áô)`)«_b£›2‘æêi•‹~wÀöÞŽ•’ZÄôlCµ¸¶l¢†æâùŒTXãAW Ô¨Hr¶Kkåó¨ùÿ ]»„Ðÿi2 DwÖ/œW$Íçy‰zìäìúÀ¼ú+ä¹J.³Ä_ŒâT¼©L¾Ûî(‘9ãk½ÎOÞ“•Gi *pèüZaµ\Ûr7Áç]ψiù¡¯Ÿ¡¦ÌÖ|Nˆõ|cž®O€ L/ù¯“±¾‹)y'Iód© rKss¿-G‡ ÃÊ©š6·¥ É&yzHOƒè_[F™á”²[˜—ÓGÇá»0ûw·}Àй©W‚έQFŒÃüÒ8"ÞþºîöøÚ9Qƒ} žòèÊ?B|µ§/*µIÅ]`|~}"Ó{4<ËSF›¬üF\Ò¬çñ»OAêe§hP­†š¤¥ÛÇë#`—?TïS¿FÕ2öÐòûŒ3±”ü!!!ío)T„‡öqé§~êÕõÏÓìèh}%ÿ y*ˆqE—ʈª¢¦° ù­+]“Ðjø×Wf¿ðIË!H[©Ãšœ9ÇÄÆÈ+ö˜ZnJô xq ä‚í$h¯^ÖÄ% ò®l¬ _÷­3 !kCšbýi9$ý–›”VA…þµ´î¨¢"SùH÷›}ß,_ƒ‘Ú¡ôÿ,@pGÿrMúõ^Žƒ ¢ò/3j™„“”èA®PƧ¸3X¬PÄèNgÌôs%îôK÷Ž•§~5s<¥¹ä.E!²ýÞ¶`Çô>e§Eƒ«rB¦ÓøêŒ÷öʈ¯" ãŽ+ĦH(/;™…íkZ#fJir‘•æ÷w÷vÉÖ§Ç<œU\8"z¶k ÄÚõbà,@¦ÿxEo .J@ˆw$d‘û곚¥&DꇹØyBˆc? oµ4OÝLÜÚø ¼ P^ß’_È`VÅĺb´Þ£Í"LŽªÖá0àæ–ýÇîÙ=ño­¨ä•m>bŠÛ´dƒ_<œàð;r¼åõ}óЋ3ó£…XºR­é¶ˆ@VB Ìʨã/fJ U»)[•IQº¬çêϹ?~NÒ›nµ4ÂZdC¢{&û½¥'Çž•ÞMàÒÔ•júÞ%²æôH?,PÃH{8AÄÉk„#¤ƒ£ÒÛ¾eoé8Qž\íòà;»G€”Á8D r†é2Sª¡Äõ‡øÕ!4µØåŸ \Õûδ­6óVy°R•uzëò‰­p÷Mþ¹ˆÈLz¡Ý? aQÁÍÃ"Q æ}†s<³ïCoKu]èŸØ.ã(¯ÙXë¢ ×-1ˆ>äí»¢³R¹ÜÚýž Á#æœè®YºGëÞXdxƒ.¡†PòWå¯âÎyNù­?ë„w¼LÉÝùꃊ.ɹzSnrÓR¤`;û Їã¡w{zYÖ¤i›îU! dóp­I¤’9JcÍ@¤Ã³DÎJ‘æGöýÝíÈ`àF ¿1Z³k‡ékñÛÝîWF×\ðYžpAx&»)`'Ɖ‘ß²!aùºÃÄ…å†'gÒ¢í­'=jR‹\” ¿kD”¨÷>¡tÏûâoCêõ%ff,óôr89Ìãkh£ è€ñ,e5tüø>oÈÀ(…ÖW–¨Â4†¹:#ÆÆÓÒg—FØq†Ô@} vÓ¸Y^¥ƒ`ê´¿ô8eâcPŠ¥9ãI ?Þey÷÷í2,R"Ùô—ôæ<ºñMS„ÒbéÚŒ+¼èZý-”Âü½úƒïæ‹' hMB·†X²2¦›þ¼I÷Ê+‰sdövªI•¨6CP«{‰%©-¬Qi¢‚Ë}²Äû1Úð+Õ0Î2õ§V|,uÅ,a‹ã 1‡ª5†AÍJIm çÄîºn Â¥ÖQ:º(´ã4Œ³6s.6Pþ–S…º Ø I™‡½°p…Û+Н˜ñ‘Ò)Ìqžö'À Å…ÄFN~ˋá- ñ¨t'–ànZo÷­-¯ç2r›â¥KN6ÜÏÕÇá½Qønl? ÿ¶(ž6)®ª¼ŒÒÑZ¡üè"¸émn2¶Û\‘Ö37Ÿ4ÏTú9MºödüMÓ; RSþžqo¨äéÃÞØÍ¦`â{3¼aò$qæo€Uˆ¿èFO\Öì2 ±cn:eŽëŒ\)ŽYžè"¬ w™æ™þ—hr¿ò2n¬Û“wä­q¢`j¹lú’!m(ä›bË_[ã!'ô‰<•iJ‘j]Õt°}¡h‰ÁHÆøF$PndfŠVÞb˜] ¤°˜ìÅéÁ2žZÁšýZ Ü-i1+½»€X4¬ÒÊG’MÝC|¦¹Ùêßb‰sá!¨È¤Ï ]n1GÊïö! ú' ‡€=Z8:ÈèS´4… êuÚ:ЊqçªùFKC‰vÅŸéÉà©UÌÙÚþ)}¹«gâ‚;Òu¬Ám£aTç™7" ®W9-I‰šæó ü4Ïxæ6¨,;É+'‹lcó ›IçÌÏ¥¹ÌW"Bøyî7SRë¶MÀØrì`1­Z'Ù6§\9ºqeè—åç…Àîˆ¦êž –§âÈ¿¤-½BÔã¯aCŽV¡åÚ Nóø;Iÿ?.³h¹Ìæj‰I€Ž®þÄrÿ0Æ!r_4Ï'þâxýå¿|ãÀ!¯ópž»iwj‘ß`}gqÛs"dYÔª"å»5éûånŒp8JÑå!•sŒgÁvžbJ™ÕÍQ &—]&HKGå«ÿ ¬^gÃvh™i¯€@»(X÷2Sã-ó5eÖ\öubÚ†ˆéäß»e¶Dô¥ÇÃLæ ÎW8Ý*’q§ ,ôQ• „êÁžš&R´t/`ç¥Ì–‹É‘M Ñ i—¼8 w¢Ôk%»×ÔøzkôòþL“jVùº¢n¹È3½in _ƒð_!&2 ]ÙÎ¥ïÑ ßáË—2Äz@‰\¤è|áK{ Ô[H¬yôñà˜7¼¬5+x½öH·ÎîØ^¢³\ñã–\ÌÈ ÎÓ<Ÿ>¿vùµLØi£òå5*Ñ3ª†_0eco¡.díà|5Ê$ðºÈq{%Œ 3@a$Šðàd}¥c¨üµ‡f¿Õ's—DLBÀš2¦kïyTöÙÌ¿ºÓ˜ßi‘‚ÂeKkx 9±gµMþ³î‹èHæúµÉH¥b*ÎI[BŸÐÄm¤£ûˆÈù<ÕÕÍA…D¨œëÊ%ñÈþˆŽôEp•€(è —Åͬ9l\·T32É&ï™2·ºùugb¦Ï‡ú®ðcj¸2'˜Ío­ßuˆtX4³ßh36SXE3¯É·æVŸ·Õg¦“€d0ûl<+Ú“¹<É'´’å³Â%w>//{ž¤ÿNÖOθEpkú¯ñt^ ñ?òñ.ÈX¯Éûñ– á̺}–^ì½§y1G6M”… t¿ÂžÂê+­ƒœN£î=E¶¤Í#hø´{¥£R#{"”ˆ¬?:Ô’^Éì”—Å5›æÈÆÁaIî˜:Oñê~ÁJ, ëršÓy–rµMŽ÷äíª†5ú“Æš7“‹ÞJ:DÓ‰#nµ}pÊ·î©]¸Pp•W†6­µ&Y%׳9áo –ºr…”]wª‘Ì bëÛ·ˆY‡g°ß|CògQÖ¢VξèvWÓRÍAÁPåLyT"rZ3ÿ6ƒ°MJ4N¡ï&ñ§ãHb÷þrßL#]ZX¬ÄÍ|µì z6WûS³çWI²R†Ü\Χ„×7˜ ‡ÍoKb7$Ñ¢øð:’vHººÄÑ•X)Œk/È6º[Ž»ÍÃäèó?õsS³È6½›d3ÏT*HÍMB9M"k‰<Ì9{ þ‡­!Õ¦OꮆÈñ¯Ë\;§—2c5鬼È.ñ¡¦w¢*rÞö‚?+ÒÓ­Ö¡ Çà‘‚”hÈ‹ðõͺ G-ÃïÅ@ú1’CˆF5înÍk‚ÓV?]<3Å4éDÊÂúÚ][K«iu1mRc²O¸]Oج¨Ãå/(ÌŠrðPÒ³€Aң܀a)¿I, FÄ‹ó…2xÈëgö¢=S徯*)cüÈawô×ç«5©ñõ×taãüzJd9ó#¹`çcê  cÞ2©/ÒTúà&¨°e/JÇá½ ~~òÜÔÝõz—*½¨V¨–;¿E<ŽOj…÷üª¨4K©('>1v¨¦1Ìeis$¾ö¬Î×%'.Œ Àƒ4JvoØ~Ÿ±ÈHn<†`SþT"銇‚ÐÅ4¼ß„ÅYY§ j7?cœc‹Ùø9Ÿ¤Ïž,P»ÜpÌ|1qŠŒ°ŽÏ½³tŠ&µåkëÿ#Þ˜_‚DÖ¸s(›ø­2òE!ê"KÕaÉH>tgÖ}Kɺ+‘sf‹b;ç^¶Üˆ;ð ÈÝô¯Ä”~Å\†KYÈóæ Uo“·· M£J«±k±é÷ÉÁZtG´U>ñ.Q¯}²b.¯™’*+[¾z>Xì·kª’«si%irK‘7è*çN=ΦÌßæÀ:ä:ïö¦jèY0ÂfÁbÑÕza#m=«YP   ÞHrËjX^çï¾>¸ìì Ú²¸·`²«7ޱzì{ pÄŽâððå2?TÝW¬ËÑ;”‘ê ·@Yx¼Qš=*WgGœŽ…äèe†}qOË'Xõz/Ǭ§l¦6À,‹nmÄ_§iHºÝ½jøEÞ$[™ZNÅUm%åsÊv~ú6ŸÙ}Uf…ͤKèåììgK!©„¢Å•VVû†ð–[yå<ì Õy˜Ûw¼{#Mªwo=ÀgÕÿ•|Í ?Vto—_ÚÍÉØÏ´SžxZÐf Žª.Ꟛpˆ¦ëªÌ·aUo€Õ‰ÀýK9†Óx¦fÒ[¬è™&O&Õ«¤i6ÂFAwFS?ü}`jÿbÒÏëê æ¥xš?‚su¿%J9Pœ¬L¤{SÏ\ËbR *†E—ä‡ Â“”ÆøÎ¦Å[I¤‡¤ï[»áOÆ“ýY7÷›ù%|@ODŵ€£X#)Jš…SLÝ“cPOhOñ8öâK/bŸ8 Á—¸mc±^Þ‡Äæ¡»ˆ¬;Œ ŠIVVºû0Jµ÷Köl<ÿP#³ÊÌ@M•Ê(—-æØ|j&Àz‹s1¼áAØ«* œãy¤m¯&Äq½ öîTÇ!!øóÓâåZ:IµåχKôz ï>n¾€P¬wg'‘Ê@ª¼_t`ƒeÿ`ø&¨~ðüÏI ¼\~}®§zºé“¯;>ôOìÚú9jNtÉaGæÕ&ýúöêÍ% ž)SÀ««„Y…ú>Mò65z]꜉föm8×þ6âíÕ}OñÕ!¦/àδTxÊdÏÒ3¤ÆÐi$5Iq.NÔÁ?ÍGyxÄ%²HíM3·èlµ‘ÉCmI[Á_ñ’ð§v Q26Y Š“—n©ì¬R’D#ßÔÅH× sƒuÆ¢<ªk,Ÿ‰T2ÇliDzJ¡”Eå¤~(‹ý](¾ÓrÿhB„ªýˆ›bp4*A«°@úu„ÒÕb“21©8a­Êÿ À»?òù‹°¢‰÷:k¡“ÖœLØÑË¥02šv*s8êÒRÙ8¶ˆy’ïÿTsþ±0óå‡ñ•¾¿†àL+:²w·ôi}LÌä¶'°í—õŽ ƒ"HP7>å\}$©’;Á]v;3T=v"¨E}ÌòKBÏ)^TªvæZëzǾ†( /°xôî-„üµ-,¨wáœâj,Ö¶Iö‚¾4¢†Xk ýàZæ9*±Ð’Ñç¹øðßõ.xƒ ho,6StRè…æýV韫÷å·öÌQÖ$bC;YRÃY¬Q±ÈTŸ"MHýSû®Ø´ôÿO›¦ÂÇé›uL©¥1oï¬9#™ î¨ÔÛPQËLΞôÑ.Ò†«‹©³Ô-Eqh×Ö±d¡ÔôÞìXH¹ºþÉ m ¹\Añ Ì Ãœ[ätφ’l [¨d%œ0õ®:öJZ‰ÆÌã׈™Ó@nDVõ†7³Œ )~‡YYƒÞM“´©Ö#ò8ÞÀ“龓.æ~ EÞ|ìzóÄ}œÚóÁ‹î*|“[ð"5=5$?Œ`:ê%CLõnáMjÛ 0ÌêP¢Dö›J#Gxj[gl³½œäÖçøŠƒÛ¡¡-ª,AìíÚSyW#z ÝŽ4^Òì–ˆIws©¿vð SØWvò,Ϋvs,,ìe,›çí])ð¡KÑÃBç–©r.BƧDÔ”ßå^À:ånSR;h²£Ìæ /º«P)ÍȽ„“8-:6!%Â#SY•DAÔöÝL›£0úú",j{aýU{w¿>!ˆ_áäõ'<õ ÿt­Þ·¦ÉpeÂX‹ÎZÔå£nâ! ¿¤¢©n¾/eÀ‘Þå yœ±AÀgf 5Àô³[j^U߇$…˜æå $!A½p¡ö Éu4`úÉ€‡Ôºá9€HpRpèˆáB¸Ä¼näX ¼ ½ÿó®h… žæMzÔ…ØÅ·s?Ÿ[¢x2Ïg©lì¦Ü’°ÇxRp­›ÇÿIÚÈІ«z/€Íz¨ËA96ÛK|®ë.VßA˜•|}¡€l¿še þ å?ÿü”JZ•¦ÕO¢*TÍ™:'ƸýQg´øTó+ÇšÈ9[6÷Ñ”4Y9• Õ›¡[—¯•Ò‚µåŠØ \Xˆ¦žé`¥a“¡ê“¢\\¥s¦SˆW^ãr¯ŸÿK“w}Ú˜óP²Ý ‚+ÄÎ"K U0É«ö¨ÌŽJ×P"§Moó<¡å¨sŽ5Ÿg Ø3ñU5·ïý¤dǧ¹t£·£RÞü%€†å[Ô‘ÐhŒ’ é>ADÞ«XÆ&Ñ³Ï w ôà¿(´2’µB–>èÖØÿÖ’Ç<Ç^ CÝV "DLòN“© Vj1¿³’³I]ÓDkœ?Œ®lž¢Æ@þ¤½‚ÙÊëÿtY¤ ª¸X•ÎV6o0¥Ê}ç´´}½C̨ùψªä–vß‹ý²Óíà>hãc`†qNRû‚Ùhù[æ%Ñ& r˜qvë…/!¯»¦VK³K&1n3`4fÈî*!|ê@0dF£üæ²-TÁ|©ÜKH/¢m}$èÿ!e‘xB&9KµXÕ¶ÊŒž‡KͼŸÚîC¸²ðDm„‹õ3C•¿7ˆÎfZeœZpï ¿wâ¦-yEÑ5t¼Üó;9˜*3ž_‹oôãÁƒ„c LXÞy—£>H0óÅÒ¥xËV´vŸ¼äœsfF™èPk¬ð­ 8?5мì5¥m¡}+øwì‚ÕP Ž{Ê yNg±¨ãÃWJûÿy &D$#a¶§ÝsîD¢’É™«l“FÒ‘h0’Eµ!Ý=Q”*Șkëš÷ ÷žHÚÏŒÚfp¹&ñl&‘Qy-ž-¼„6x`ôFtÄ8A~£ÄɃãT0Ÿ\ãb‘4i8Dbc'çyS™’©ÏF8þëȰñV*~Uø5È Þ3Ý¢UÅâú6³É’šò+  ä¿ÇÛÿy«¡‹àpeÉðÓ@¶± Ný3/vHlGÀ%j`±Dõ´Hr™-ê'*QÓE‰hCÞʃ³™×:«Žaþ!›tD7‰h™3gy$CÍTÇR#ã¦[žÑ €K De9ITÌ«]×ü¾ÙxeÏÓ†dJ¼aÀmc©5îüf¾½W^|ÅÙíqwRzà}/,3ΙÎvjIåŸv1®×Ë|` C$K3`ÇåÌRùñö¤:sv/·Áò›i”ïJî¨õõ‘P(Êi$Öj(ÁQwCõ}å•í 8PÔ‹5L2— Fàæb,GÙIãØä…ªdÞtT[ͽ#ËS‘7ü+aÕ!}[qW2©ØªEBäk©1rØÕÖÌ8˜Aù@Ã/õ‚&ÄQ©ÕZÏâ ™å2÷e}PL(—›5´Úîr>aòÚû$,0ëL|UŸ (·¸CSÕNžX¯C¨ï×`_>«Z ¬»ÿ ŠÞú2ºâ—ªˆ9 ®ѬûÔ`2k«+KdDâÂ-¿ðköBq€ž„¡â -÷ùö…êÊÛýA›H8Ñ8lVôÄÓB"R‘€¢ÇF?:Gð ¿ç˜÷$:¯Œ«Â ’Ôg-)çÂv¢Ñ£gO+ú]~í»ç…ëy«xH±…tc÷¿ î䨛«×O™õK*G¡G6c¶= M¹¯é㊕e.”ÎOu,¯ã‰Ï…Ì9zÊ š¯Å@í~^Qï±ñ§·Ìqó ëk>T:þ``¬Ïͽ© KNO°)OdxÚk—ÂËhÑqiÙó‘jkýšYÂ]Â3;ÆÆ[bÖÛk:ŠåÒäX½£dÆž ®Ð­·FYË œžÞœð,hà°Óã,fÑ€2ð•ÆÈ\„¡Ëƒ}¸Ë‘÷ÛF ‚{–± œÀ©¦ò‚8Ë2új j³ H¿ k©Itî–*à¾÷9·!Þ}‹¿Źù; Ǹ¬ƒwmB¬u F~dÀõæLìÏôè>ºÌé––…žäc Ÿ‚$¸/µð&þQ‘½.àv5Ü9aÙq³òÄ XãWHÁ®©f¹béèÛXG‚Sœèy¨è&;©ªµ[­ss ]~zêU.ŽWyXšR¤åsÜ$þ—øÚð»"ÁEÛ‚Ò]‚+au.Ý=ý.9—eŠ«Ä_7ÒçMɹïÕË+ cí§HšNsqÚùïR èuEߪNu•»6Ίϥ(³º E1îaüìÒ¤ ”Qü05Æa†*š#•µj€å`WWíÍql…<ì¤î;¦ÐØY€"CSŒb†R3øµóv…mÄT#i5 µêàU Ú´’µ!-É»äšô?ÖJS -7qö"PØWIüµ5t7ÜjBίõÿY„×°¼mµâ½Oý"Ûp©02AôSÓQBÆ2ÞžŸþY·ï³Èÿb²m.š©Íà¾ã”r¨£Å‚Z ƒ¬¢™È>*Ö™;øÄy  ÷“6®g•\ÿM¤¤;Ça"»KÚ*ç‘ödòÊ xØ¥šl¾ÿ?=y7–dVlg´ÈA”!–CE¾ê¸ù»q€ØË.Ç82÷)<Ô%Uš‡Ñì-ŸA5.i>c|%&Ö(o»Íq (G'’û¨ˆQ¢"ýûE›2ëÓ/ù\ƒaO ì…ðµŸâã¡Þ©–k%XÓƒýÄ6“nœÊ9¡1óæõ™`*–Å+ng]¬¤å»ÓøS²÷ôò*–õ½ÄËT÷¤ƒ^Õ^Xt[fÓ|’”çýa=-[IYhë„VÈ—Ö¶‘¢ª.ˆl>fÒsý]jkw{V¾Wé¥é#næú:µ€=ŒHsÿ~ðY”##ôïôc¡+|ûo_,–)¦bl IÀmoZ#‡Þ°üÕ̲ïÀ£ª*ìëñX-'%Aõv¿X]Ê’¬òqÕâäJGܨ4Œ@Kï‡N¾[P1¿à¿› ·4/\|áêoð+É{Éoùʵ”9‘¤ý 0Ôÿau±ÓlY¾¬dÒH|c‰’âö¶Hm¬.hL÷órTÍÉ–?(Žöó–p5–êsø­€µz“ðà&¿²¼0b˜*œýEú¬Ç˜ }Ê›W + oµñ}×·Ní¢¶¹•c#òõKxKsÎÌ#ŠÑhÞ²Áö#Oþ¨(Áhè8zÕ pV‹ÔnLÓIûm½Û3¥‰ûw»»_û»©râ)zË¡9%UcÁJ˜b„UÁ±µZ—] ½Û÷ñÀý´^%¸Ñ­ãsÒßc¥f«môț؄»ú!SÝ?*çà³–˜Ãʈ–ûþ^ßV'1GãzÛYVŠb´–Þ)éøTn §H$Y˜2|žØw(ƒb&`² ‡Ú÷)¼Úê”0~ÆÇÜ·ºÙ½;ç–6!Ë.“÷Û0†g¯/Ü©>M Ì“¤CŠ$ `að½õýö„·§ô´•ÁI¨X¾ÿS yñïçý2…ŠOàa‘hPšóÉÔ•sãRÌþ 3Ãî°Åb‚׋â‡õMeMIKÜû8 ŽÇØxßÖÚ3¬¯ˆKÐI4™z¶ýâUy¸Çè‘ÕhD@ÃÙÎéÂ'IÅ=¹U°íO gÖ‚ó1¢Wý«)©€Ü$5™Ìµn€ vrAª¶£Ö•ñ•iûƒ»ÊŸ²J£/©qìVQQdï"cpF±–z›_Ãíö¶‡Ûì“ÛíÌéú3X‰üx¹\`¶(U3ß´¼}U•OHyC ^–•·Ê‚[è…V)RbvÁ})¤2ˆfµŽ¼¡Ú8æèdó™$ˆ&ÞH_LµÕf2`—[*IIhÆ1¼“³2ÃÔçLyA¯ó;#ÜãÃ-W©fæAêìÓrÙˆ8ªˆÕ‚c}r¢ûú©IÚ‹±eZó ‹Q[¹³ì<%}‰™'Tœ] цÐ&Fߺ’ø€©¹Ñ Dml·ôva;êuPʨ¿ ¸³)ÿ)MD’"J¹b¥¥¡ÖÂ8É~Î:Ìÿ>¿AÑúñÛ‡ `£ë:vE‹Â[o½¬´æ©û~°ìð4m¯»ÌÒ¸nc­°Ó= äêÆ›û†Ívpß ¦b›0£Ú–‰¤ô{¢¼_ ŒÐÖ=ô¡(È64Ÿ›Zù§CÔªSÖ‘ùE·Ï.=¢I$ZcC†©P§#.Z”tËp ðŠ](ÎÑÈ~¨„(tÄný (8eåQóz´Q_G‡×š,Ì ?}¯‹Z;/™2iCñ¦'z°ý‹…1Yâ O4ƒãÅXF(3K~&ŒîY/jù)ʲŠ~â²æŸIiä˜wgŠp|þ ÅmÄÞØà€ke¬Zïcèí³ ‰›ó³ü.-µýç…e‘WÓ_6{Æ,¢È(ýQw9€ÊŒ\ÔKsè÷"£"7 ;j‡ÚÜWk`~LÃ!–>ŸMAUà…”²·L)½­éÝ[½IÄmƪ>µôúüGĵZÊ_Ø[h€‰ÑÃ×V\¦¼}0+z:+¾#uᚉTç`©ž6úÏÛ[nÑì’Ш®i€Y¡(¡³Ë}–úÚ€|!!¶>r6ÝÛ¥@”°n6û_Ÿwj§ëDáeBѬ¾ïXðYžD•´¦¾kÁ­.h±lAq=õl4•E‚YðF%˜x)z£Ý€c´¹{«qÓ&{cƒ»òu¤Ÿ#WmÐdŽ:œV¦>Ý2¼¦Gó$sä²_æTdAcÁ '•àÝ51¬ɣ—±T¦Ó}±$1XnQùÜ"“Ž€·øÐ”¢´ïчZ¢šS5*ÂQݬn£ëêÃÞ|Š|þVÀËÛRÚÓ iÖù+½¼¬%Þ¶b™„§y þ L¾qŠ`ù×c2yALþ_2Ÿõ“?&Ú«_À—=yÏ½Âøæ+‹ƒÝ(@Ÿ±Pþ»Õ†ŽhZ ®iyÁû~OXKvg?UF‚ו¹&Ä$•ä½òâø¡E3«=(Àý.Í™&†BÎÆȺKšÚý׋`KT g*K´X·:®H ÿRwO¬ÕvðÓQOVÊ„›ó3ú&üMWyš%§kVe5Ûc¾u·ý¹^Ʒ☽1ÐÑ_4%è=ô~ã˜.iwÙ¶úØÉ/Ázœ“”.ENzg·Ïöz¹ÐxZ²…·>˜¨sð»AéÓÅñi“Ûäuñ¥¦1,†ŽÕÜž!R  ýѸ?IJԩ>i“ÍŠµ}$Ä«^Õ&D—OÁþäIc9Ò×$¡øÄÃî¸jÙŸ%íVê\eK¬O·I=½¸ùd^÷®˜á^¨¬k‡“í‡åž ä¡5³ü OQ&LœÑ•ë9]¡ PótÕ| <™CO® Ún QÀx]¦:®É¶Ñdô„Q#PôJÝ }4£›ž^QÏw|nø³{%Fuèiõ*Œ33š1°AÀ ñŽÓòª‚ȇž¨¨çNÕðë|ɾÆ/FĶô!€zûÁªµÁ>¢åU!ÓT¹Ü‰ÎÈû§é»sÑi†C)úNR €|cv"\+rQ æ,Sy¥Þ¡°š•œÊúÒÍœŒJÆÕ0ꢹý“Ö>ý[Já­/qÿ>G5ÝÅ;@æñ/Éß ¥8z`8T–/àjœKâúÞ©!ÄÙêi“ÏY¸Ñ¨}Ueܾ†,Ýæ4&Noˆ&n:/]‘µŽ»‰C‘Q6íŸ2÷vx°·Ûb&]а+IÖÛ“òöìÛ*#†ã­C[ÈHˆÎ݇T|ÖgB’À‘ ˜L©Öígs¼3+„ðÜ>€E0îä6å.g™—dJ¨L]"ç¿NCžý¤¨ò•+]lÀ+|œÿ*Э Ö[´¤Ðh[Ÿ¥8®XÙÿ?&Û2·JºŒ ð_ªó0€{:sm ÜØ95AÎòtòØ{“§V§33Zr£J^¾™Ýk`¨¦5Q[Þ™òÏ#ÙçªQ$é' BBjç¹äå$ªór #¬ Õ x[;ÒH¢X ¥G'N{¬LÂõ€ ¦×¢åóUËÊ‹¨Û]ƒaX¨àLYÁ8˜)RøWÕòE¸W*ÀžÈp W4¤¨zÀó\cÁ“wvÓ4Éä_QÖôOåkAYüä!DžÿE²2²,o«ëzh­ŒZ^Žáø˜ÁþØG ÆÍ×`ã†& ïÔ/‹Ð:hµåűl^ãÞIVØyˆ¿ ˜¬ÉýQn¾ ÉŸ€›{Ϲ¾èqˆä„y¥C®ä¢÷ä¹KTGWâ:þË`<âÉ-Ï›Bš} .î‰ÅÆ?rZ ¹2} ß“0Pì!§W?ׇÿ˜•:ÆÇ ÝîИ˜*B†¼ô:Y£‘_–õˆ&;Wø÷Lnãa§tTðiOyÞñbâZ¦ê5”´ ¥ò|ÏÃÜ˲&­^³ñvú‹Õ¢Ã “ÔUVPQë;¦¶²{¤ÖŠb3è/ÈÆ„aq¡¡ÃÞ‡æü‡‘•åCºW‰ŠÉ»¸b`ƒ­?©;Îíg‰r±§­´!¾ƒÒÈEør—¡€ k78‰b ÚÚæ csñúSª“&åÅ {ý®-×¢.ظ˜4ÄÕœjqÝ0?®‹ X*ëN¹c[Ú\kUôu?ÜLÿ\6DáIÛU\R4ŽçØm$¶á$¬B¥§)‚‘`A?ÕaŒúEÛþâD@mš4ÍàYH§~n0§ÑrØžˆKÛ9ÝÔG±»å˜þ»é,] Ɇñ“C˜ØÛs„Ì)ƒŸ|Ü€˜í“V!Ö¬.8˜pì§ÆŸnDº¸ÌoÈiÔj "üÊ#2æ—ãFš½-NýÏDòkf‡e'«žåJˆßvYÞšn¶À¯„Æo‰üR ¤oKô ¥&èOW’yõn§ FJüÉ@äJ‰ž¸„ä{ÝØùócEŸzüÀ<È2 ÁôÆ×h¬U '¥r°¤ÆûÙÅÅ›/9z˜VOšÜPâÅØ–¹f…ñ yŠ˜ÀöT¹”Ô3òNnØ–«½jµAòêÅwüâY0C ïR£¹ƒ?5â4ƒ?½Œ¬“çè}g—=E—»† Ì.¢ÛЭêĤ¡ÃJœRQ9øÒ»WÒ㛄¦«¥J÷0¬Ûæ#"Ò=ÛRx!C[BÐ:PRž¹ሮ5¶DHh¨ -Z·V§ ”f›—½ûc0DX`¼møÏŠ¶Ã®Å#]2D\_™ҼשšEl0Šh/­·ìe϶wÑÓ¡”zƒ&oàîì2‡Ý‰Ú|YÍjy¡cÏ-ßhVÔùDR¯XÆ?$ (ª-ƒÃ;_uºÏÜ=ÓÒºÖ'?û³Äå ›CØ8q\¾¯„Íl\ u¤À+XNÄtA¥îTJT)Ÿþï6¸;Á ù.»Ö7í†S„áIËԯ榨Ÿ›Ã> Ò¦Ç0¼j ß0cÏ©Wf½ÎȬæuÑE‘F b‚Þ ]<.TýM)’Á{Ù¶ï÷Å<åùͺgΜvé틜©2!³¤MV½tàxz$Ï¡ä`ˆ$2§ÕHëN€ä)†ÁLãýæÄOj÷§‰9” ¬‰Udº|UEÔÙ­µ¸ptÚm’~P­½{ù‚@ÿNæd=£wgK{º½z ÿGîµ´>8)Lwò±8ë_Oe °g üÇž /5ˆÞµ )úëúÚFz\.±Œ¸#KÔB‰z„`=TÞ3‚gOìwDm¹“¢Àwøu­Ñ™$”ú­EòVp è¼hq “•øe~²ÆTÃNsÌ ZR52úcçµÏMÞæÞíÝsÙðB¤Ö> S5·X÷î&q¶ËêÖlOÔ^—Rò’°Vî¸I@kÁKÚ噢ឰ5µW£KÔ•Up†9îp#$ÆÈ‰ÿðÇ1‡+#•+k'Ü^ù8|ËSªbi/@˜¾œ|ÌÂWÊÒ2WVÄé®ßZU"ø= ¼ŽDÊ;ó×–zl”Ñçõ+»‘þ“ãª÷>€Þ=>mÈtsL”’„ÛÜùÅW6‹œaA†4 +µ¾># *Ût †X8ç³bäÄ«ݱ'ö="4gAxME™”#%A™>èN1¢ªÙ’u&g5Ú„¾ƒ” ªàT'=5ƒæï8Ó6Ï€Új{Ç%n<ÇÔ †ïP ³ËGv®Ó"HU'¡Ð¼c&ÿé'<Î ¯L¥Ù .1•”âï1Û¶ª÷ª;£võ¼&ùÀjÞý¨)2–2ˆ_ÿZ0˜€uïvt»íx¼÷Y’IpóY¦CP<|ÐP1·%#À϶~šGÑ2—qú=ú{îÈ`l¾ DŒ‚:“ÆoÃWòr1ö®Oƶ~Ös*vVÌðÁSé¨\PøGå‘W¢Rfm…·9Ç¥€¦q—µ<°8í|$£ØMJ0tg“ÛÛ`¹ÿI Hç‡WÊl­!œo8ârZ¦3ùa èÚ ¥á®Æ›ßÙ7ˆ ˜ô´'®Ád¦H‡K7wEë€wÂÚÏ-æÌ|ŽzçžÜÜXGÁN tåÑäஊ­!x×[\ì@ö£ê>²WX-ðhÙW&yB®5˜z¨©pk‚¸ü.}R™µÄ‡J›CèLÖPâTcÙåÉ«yøemнu¦ÒEKÕwL_,•ÚèBÚWdÌ[ZL{€V‡5DO/ä„'7ÈboÆ¹ÃØ )‹%¨·0ÎòyiǘÑìÚzìcì:ÝÉèO¶>v.~Ü]s(~rÑ«=ùLï@´& ˆ’%MHíý…5Ywžz£Ja/tñ9ÿi‚LµâÅtê†càé+>?_q³"Q(&-fƬŒc"5p¹QÁ_eJ¿x›ü»¬ÌÚ’q9Î5Ò²…wj‚˜µ…èm&JÛKUì¥tž©pkÌ¡"þ&Ëq¯5p¤ÏéSóËE»d›lk°¼‰Ë`ÝòYï& 6¦÷w.Q]KçªìTÇÑÓ“P&7Dxq:é!dó$FQÏ8>èqkP$X‘ÂxÐ÷ª²OgJ=süvMÅyzwϦ€WŸ =v(€JãŽÇÎÞ(Ü©›dh€(|5²c‰0ÞTæd±0SëY/Ù’vjšO®§mLã¸p±Hž²6AX±ÏYË÷ßY¿I¹¥õ¢#–¼DÄ ›o@tì¬E)ÒÒ¿ÌTG–GnDÉ?;aßèoþDWeݺyŽhãÀÁ w x¨Â+|Ýåbñ Cr±«‰×k»XÞÊ(Ê%œ‹Øþ«ôWW=íæ;+¡sØâ^¾ØŒ ¦m¤í7/jtÞì‚m™B€]??©4ªÂ„3%¬ÛÇV ô*w?Ãôvñ÷Ó¦}Œ„ƒÝÛK£Àyg? ù…RÕIãâ?Øæ?,Ü4륪õ`Æ¡³ÕÖ€¹d`”ãæ1GÙÝšBpD¥'éÇû…/²€ða’H?>W§½¢Âäx†6eÞö,À2ÜpŠÑ«0ܦU•ûe¢$$ÿ!Ÿ4ЄV…eN¡šɦ®9Ÿ\®4ßA ÔCB/¹‘"’u.߯oávÉ´¶þ?'¼¦èÒ[;"¾Øº-ñ”Ó+F³}ˆcN::'H!Ý^jûkäôÏIºîmÐ ”᪒ò¦hŸ,ñ_. ꤮€Ê™œD™ÀŽgÓ’;Ío˱*Þ?#пÂчo(æà0` ûr¬.?ÏË(Çá탷Ù:‡¹ èú“ã«Ø$®&(%›¼_ÂAê3ѲÎsÖ/“ßQÝž0˜»XFŠÅH×AFløîŽ,AöÍ TœP³þº$ý…9¶} vlÉÑÉÐa[SU<ñ}¾t•36â€YwöÊd;\éq[Ûh‹Ó0P¶~ž-v"ULIçÍÎ{È–¶e`FÁßlµD¤ãôÀ€9×.„ÍO<Í{ºÅ9¨D2pN1§ î“ä“ÿiq Sa“¡f¨+KÄÑÛÌoÆi|ªS`JyQ&«LžÏÜ-猱8»Ü¨%×hЊ#b"žYœó¶§¬ÐfJŸ„x± 4lJ´ ~øqˆžP«Yç¾OlT3F ([¦4uÃ)î=è±E «š0mçÏ`ƒ=S*Ç-~4c7ð1…˜¶ÿqþô×ë1¢@ Y]!y_ú/_è wa?Éoæ†Å@½ÈÄÕÌ(ä6ÑàŒã¿*> zwöÈåœ2÷Ÿñ¹Hú <:Ÿñ €±uB¥Ùf{LF£s¼©]9‹ÿ\Ï@,2–@ìk‡—Ôu‘e÷@WŸ|JfQσ^Ácô:¤'°NõdBzÉÓ§04º*¿öÃÉÚøs½bFÕuMçM÷ÚeĽ§#lØ2¯Á\KæÖ)†ýõPþK…w\‰eXñPoæªóûI&œÂ)æUán: t¼½.û§Ú +Å.€oÑÿ‚õbƒÊ]Ú“ƒ¯Õúz€w×¾G+rÁk2=Ï< Ÿð–9tHŠ /PÅaÌYµš&Kh<‡jà,b§¿@RŶr4‰GÙ‡?…‡W¿Ö“ýWî½ù'3c©iôÖ[D)QeIB÷ë˜[Í^Ÿ×ñQd^¨ý7»˜þ×ÜhÕ˜='Ò(wU©ÌBÔ¶VrÃS¾aŸ•’X k äãñ/Ø+WwB¬‡3{´pÿt£OéQµžõ$ƒjYzãM†¼6A³´¹ùÏpfìôð›tBbÎSÝx}áÖ:*"ñö›cIîó¼1jºâÃe qÄóø§#BéÅ! °¨õ,ÈœZÐØÉË0º¼;­9ºïUÖ ‚;ùK91r¶®WÝ£QÖÇÏúE7q5Ú©+c®‰æA<È“ø$”Á›ó„ØJg×2$pñR’¼„Ët¦l.£º%VÈ“$áúÕ—”禢wÚï‹â(k3OäÖ(O@bGÙG721öËÍ65V¸y[p™¡Ü𠉫²ç-–r|Pç¡ÎÍx_ɹú~úçäŒk:ò¸ÆÍójW'!£q<æEÙÊìPس:à?ùÖ,l>»—Í‹¿*A³Å­Î9[ ­xCF n‹6EzrûÄ+Xd4|fE¬[h˜•áдŽàÄtÞb»" ¡ §æCb (Î+D-·p?ƒ¶4T¸N7Ÿä(Ÿà;~ ðÇ'(,dB¥Ìúà–Õ)@a,¯“žM÷XÖ÷„ F«@ñ°œ]IÛŠ6Jçù_ã8ƒØ~y Õö4ˆo häXè±Ëp: f„j%@¨‰×µÿ-QK¨úâ$Àt•Š… ê ëÝ:hDËÔÈ}ýBPÙÒÒÙ[‡IÆÃ$&dâ› ØüEI œ!8LŸŒ)@¸Vbø‰v…,§p‚i³dnÔ¤L üª¶õq@ÖtÕ"âÁð—BŠãìug‡Âb}bì†Ü<l_ý?^Œ{ù<9EX ÜWòÓ×ø:cÏž,±'!ÄVû»î ÃN9çÌ - ( €¥-¿«áŸ3-–•ºz|ÉÁÒ…³ùo)iÉM‹!´X¼@˜ß ^ÑPâ—œåkúÜ[Ñz>0O៣ö›ÚB¼Y³1Õžü=³¯u4¢§¬£™¾ôŒ‹Æ2® Ù.÷s ”,%PWšxc—O…óWE/|YÓ“Ö|}°ñq—­skZ‘çL\˜†øî„l0òxäBN¶ 4±YGýó×ôo`u¹ÈúèÊćLÄé!šïá×ÚÆŽ–í¨ŽVôôÄWóŠ(Šétí¹pûÔ%llÉðµ¾y“‹‹Ü¶Â¼ÚµYêí)RUô-Û¡>¬Db wÈ 0êñeÊw˜>–ËŽ½jÏðû0¨I?,Q×xÛ¶ û3ÞæÌ] Q³ã+GZµ"yPêÔK>ˆ+‰Ø­ WTáf0¹¢WÕ–Y!áD©¡H1M¤¬‡© ñ5l®_OÑòA½U îúX—àhCÀ Î&o=Ë‚e‘ºõkVvì© ¡‡ýÏUJ+ÓÊzÔ/`ùvÍÛHä/2’£-\+À_¤ž0ßHà£SS~ÄÞ’™‹µðv=+#âBÐ7í:]É&xçá¶ ¨Ö:fꜵ¶ìòÒ^5ûÐ÷Üj`©“®´|ýJ>ÇȵV­X¦2ŒpÔ&hÅgl?Í=uXCù(Ú\Ü ÿ7;1¡†ùð^z%ì1:Mñ­‚Ó„Œ²”šrE®3 x<…¨Ïn¶%ú/F]mɸ?‹Ò½¡èEe:8ÜžÈâvL“Å“”žm3˜ïðîP稰‡ˆ:Æ\ÅG›ãxš¡¦Ñò»ƒ2XpÚL‚o1]šÈ½`ú a9Zi°ü›è›Ð“~E‘"ëý©sŸÄ£šU6i1•´*¹+ãcb'„R@í¥p¤`~esÕ)d.êum1‡¤´JêÏuOôG<“ÇÌ“DúØ/8o ®|âÖqÚ«™çä+¥á-·8T—>~¬íÐ%ÿ0ñy»QŒAõReUIJ1ü³›­6±º»¨Ì=ë~7™uuLkêÕwnÎàï‰Ó'ØG’^¾w»æ«ýøÈÙ-º)CQ° §]x± O/.)t¦W ¦ªÙ{’:Q½™KPquÊËZ/çƒõ½9Èw˜òw%Á/Mæ¶e²ÿ1ñ\™ <05HüàÇI†ß“´S¿àM‡´£9L¹â0r,ÜË[­¼¿œaʦ—.*D¶º»r µ"Ó\nãŽd,w©­¸øPc±|} F6Š*K·Á-éêiˆ ‡–äBÔUëG]»Hb½]Š¢w|ëÁ]É:Žéüu¿[ôœŽÙ ~òJsÆ÷Y7€òvƒ ¾q†U¹+¥‘]%H’.ë±äå>šÐbrÄ÷¤?Xüˆ˜b¢¸lº©B]¯Œï“uR¯Ç÷Ù G2mæFð(±RØfB:ûIÅ]Zý«Ï§³¨Œ»ñTS§ÒÏïä¡N' SÕ ²‡Û{‰à3yá9ÛpÅÖ¾ ˜n§Ä·h-Õ~)ʘbîý›«Në¿÷t:éS[¬Ê{tê‘U׸䕄²¡C1lcŽ‚Pã,ôlõ ãEâr{=Íõ¶Ù —å`±‚µ%?µµ/ê¹1…è\WLì©pžNågÆOÆåªnÍ‘‰\6_$(˜¯ZÛFuÂ;¸«Žª œË ÊÔ֓Ѷ4 YidÕûPÞ[%Ž?7ô„Ö¼†IP/ùEq~€Å1ûù›e&u ¨oñã‰ÿAÉI¢9_ëþ$aµ?ì`]Êÿv‰ê¶ïÚÈþ_—Lß9[ã#/ÆÎº i ZjþÐÈóÆ;bÛâÅm @b@_޲÷Ô8â ç\uF0¶FEîA5¬2×’ŠâÅ{ LóK¹¨ dàbYÒY‚‰3Ñ|3cbyøžT™×õ; !Å÷þwL#ù¤šk‚8³*DY·fç:å>åèºLnÆŠwëúrz…l·~‡$U‹‹M‘ž6,^í. ⃪ €@¿Çá—˜©â‰7¢Ï:ÜÒx=€Æmc.ÎPŠb%,(”Y£ˆ·›‰f¢ˆëà9ÀÛÄ„îÕÀ\t¢iYÓ‚QïšIÀãý ìx<Õ¥èËT÷w Ù£¤XêÃMÅ0Nà–MŽߦ:¶—!ðÛÉ·CIA!bXâ)†©Ìİá•j›h„7ÐeÒá»D2³síw ɶék(!g¶ØÌ5µâû*ÛŸÔ¥l´|ÿ~~(XÕžÇgi '<”oØ9×%ÏÕÃÖx-m¨£ù(Z‰¢XGsO]dxk®•’l¤ KXÈ;àéߨ`—tÛ‰Õkòi›áN'{íÖWTGþ„.¶ ]û_ƒ[«:rè"?_‚{0ãŠÕ7õLÍÒ")¿Aå[\n+–ÿf­ú®®`YàeªÔÙ£õW¼ôÕ¥…6s )D¨¤øÊø¼³‘«Ñìz³‹ù'B¿˜Z2e¥äï~9ph~åüá~˜µ5:Î NŠGé@‚Z¤ÚÀ’‚1YoçƒEu²á¦}žÑ$ 3Ðl|ß®ñéjŽšå^ “¥ «Êº™¬È´gy(S;ß™^<¡X[;&¹ÀæEÊ6{´ŒcŠo‹\4UÞ’Gµ'(ÙfïõФ|5Þ­K¸Žë…†r@U{KxaAW36ór@ù¨Õ°/ák7È@õ\,9^/Õ¼ÈQ¦Ùí,À˜ç?H„H¿Á¬)ˆ’¨ ”Ü·ùXW—ä5‰5©­™æïr.¡É qËUÙ¦:G ‹ x6h@…@dy1dX3}†a¬×/ˆi÷×-0ÄHUZ¦ƒ×·<‚þóü]Â?C ¨úzçóNlÝKµr"Áyåê5ýb‘îÏ2ã(åÐ<¼/2¨$rÁLT‘ˆËëÅ kTÏŒéNIRå|HŽ…Þ­x;yènh3Pµ@µt?I‚k‡¨þ™§œ›îû8>ù­©¿p3-œ\+õù~£j§ze©,KþX~Ä›’¶mãÎâ;c³—xŸ:ûø–o<¬òÿtbâ¾--ªxË5å¾”yÇÇkAá€(å9nFª[‡CSMÔ]²ˆ³•4×|?&Rp8N Ýâ|ºÉ2­¹MÀÌá ¦c¯Ô¸Ä»ih ØxØ´6“3V²?ÝHèrºTµÛòqô ² û©‹X@C‡I€Ò"Û.÷3Äöÿ.Bø†®d7Z„Ê ÈF$¾Î/WV¹LÅ£üZæ€[ ÁïÞ“€gl^f äïiój@Ló3Ñ š*Ùÿôаj—!> ˆ:ȘÝÐ<ã›n~®UCÚvã‹$“¢YÕ3«Ç®yN¡¨ã-ÿ7ó_°Ãï¾T¦¢ÛûaW–$L|="<ú< Ö)å¤à‰Ÿoc/a?9‹ àªofxÙ,ú³I7S¢n8¹R­Ëm„ó«(‘…=`Œx/Q¿÷Ö<©¹²ðæ?OE~¾¦áä·z² .þ@Y ”¥“ %81úü™Ö„®"툤ÏPBdª<[úÑ“ ðÿ$&‚cä'æg2Çvýœ ”Û»ù¦c—S3=˜Œ[EþTÊn™1é[€¢ÌG°þºÖü3I§é{,¤}}w׃¤ ÀÒ«"sB[Þg h¦Ø+ÁZU‹pêÏm›zë)‚<‰ÛU­@ìþ!½‡$H•µ÷Y¥ù)ÞØÓk#=xß’>Úùge^d$zÏ×-8ÀÕ~ç’©ó¢èyAˆÕ· ¾9¹.ÄHnÞà^ŒËÆè®½àH£&áS°ÙdÀÆ•a³ŒU½–9’£Vô©âÒniSN ã4ÕUͬ»3ÕÐ’ËÇU*K9(‘"‚å¯<)¡ÜÕ+ÎîP0K<¾†Þ|:òš2œÔE :?ð„¨³}Ép¥ØJç361amè…Xð¨jVððkJŸØŠ/†TÛ>aÕàˆ’²UEÜ5ÿ=L¦ ;©¤ãš 6 ÁE/gŠ)žŽóƯבùÍ8}¬¡! ¸m‡Ö/óÝÎlˆGŠM|}S˜9þ“ñµZ'¤õ†j Bak-wÖºÌãTÓ‰b¸\ÄLÖaÝP[/’=ˆ*¿ð?| G×åñ¥Å…­À¶w°ô_Q€X¦ôÆ´eœßæ;Ûýy.ðúAØ?|ƒåvPåÈ»©;‰ƒ‰P>ÀÏ*—8eÆ/$iŸ5º’×½t¥›+þÈó„`é½B­wí“ì»^]‰M}µ@BvfHZLê.žH¨Õ¯#søÂv-gÃlNækX¬³ò#4% ¹%:ø(³ˆ~\-Ç~hì‘¢Xç;=» Ðò!*¤M( Z38Šá"Œºæ§•E‚`î+ƒJèäu“ÖÝ}†±+ÏÞî5†WAÓ—0nó¶½w*yi´hc¶THcÛ!š SZÝA 6a$´»³…8ËØ“4l  ½~ƒY”V˜fô˜ƒÆa9”¬ìt€GHº?“ÖZ=ûn4j»¶SFJ´~»g%¬’ À ôUig=n¤d…K¿íñzàÄ÷œ´Þéf3kJ1áˆ%ŸŸ; rzñïÿeò>;Q¼¯*Ö.¾Ö°¯”OR@Ú8ÿMˆüG±¡b”OÄ*LÛwôÙʇ߈Crn¼§’{D9qÃæi3„¦š:¡«ïR`¼Üø§^Ç wŒ»Ò"ä·ÇáHGà×Ú8Üß /å ¡ùÀNÎ (²$•ìð&RÐAb¶ëæù¾o›æùÁÀ\y ü?'''''''''HÿΣ%þJ ¶bEƒ”×Ù_^ÖQñæŠH<âÏ% ëšÅšãUÓ;c+*0ùKÊ^Rò—”¼¥å/)y7+¼œ‹öÛ£‚¾ÔC} &5 ´Œ7vjÚó¢ÏK=”®°¿ªHW‚ë) ªøfÝÖnä,EàvD €a!JAü“ $%×8uÏÒg Ò…„HBI1Œ„» Ôףǀ0‹D‘„„Q…ÞŒ•OònÒÏ$k n!£&Ëí¿êæËÜdaXÀæ‡ÖG߃aŽƒ·ãø{Lÿ°ÿx{Èp bÏáë{ü=®¿‡µþ?‡³'ðöe¾ßr?áîZãÈÿ¹ •†ØÌýÒï•É®îÛ\¡¥6ÿ8‰—,ø›ºêøÖDƒ'ˆB2^xß'Rt˜‚‚%ÒõäE{è½sEÏOб 5Øc†þøvzH÷)Jœhÿl²RŒ².å…ëü9òÝY“¯9¨bg½ˆË‘’„•¾Zà¥õ’¦/Ðl‡gáäÈ/˜íùªEè.›™©û ñVƒk•ã åŽÌì`È#Ñ Ý|VVé^+ZnùsTo›Ô¹”=†EÛ*bÇñÉÛ'ãjûwûX¶G »œÂ<„Ï–Å‹®<9‹ùŽôìai°ïð~oîí„A­Ö‹ÐQŒ\ÂåÓ&Ê3XjœNAáWÄfO,V J›¶ €eLzÿˆ¶–Ôjo?N©y”ŽÊb?8£‚@ ¬ÑÄÕ¥Íùh›`,zn²>)*q{£°gE?- /Y¿ÌÝ,/äåG%ƒãpî¾Ïn?¥wó °^K§¤NÛcö>g>a0‹Ôd8xsùV`í;2{Ýnõ.÷ý±ï,í6'‚r¢E¹ødw†£­¥«û¸j}ÙÃ6ŠŠ×í4·%ñ'¿!r‚O?*'ð“$í±™Œ¨‡å•dª«Ÿ}¤¶ªÃ­5 N·Ò’Å$«6ŸŠ:¿µ8^.3¦'r½a*@Z·pU™w„i=’vZªi¯¹`× pKnê‡û)xC\’úäÀKXšMýŠ¢'¥Ý ‘Còrû!}')6ÆÆmÒÂjÜÊä£PH I1i·5ðæ¬H"wÊ¿ÊWe•›ãàm91ZÈoeˆ(ªY«K€yq^OÌ!µJâëX‰'—õ¥APB&~÷DšÓVاÞðé‹‘Í* YNÒ—à<™³'/vj]ž‚/b¤éšýºí×&¹J¼Èºß˜·ùmÆ©=±ý¬Íï5˜ã(m/òN9Q{é ”Kß‚AÙ!&åëy®·LÚôÝù?¹œ Ÿ2äO™{˃´ˆ°¢fOÌ؉qKŸ…ùm3¬²‘[±5?wisÒJ¿Û'$†œ@¡å%EÆÿ›XFC2“Ä#!&d‰#ŸóÔY`2ï™äÇo¡…2ELél‹ÿâ”¶€Ò›>{Nà/×)¥’nššDݽò^¬e,G&+gG²ðê ¤lK3‰Cr¯x`Œ’%IbVˆ(äk1W½Üëð³’„ kåY§B±ßÂÄŒ¡vsicX0ùC2ÔÂgþ.ì„£`V™ß'‚è´†ióWÚPÌØ³ø}šeÜdKN²ðèÄy€4§v6lã{°—¤šdºb)^w·ó¿[‰]êCVŸÚ.QTá~c×f—x0é×Ð[é_<;¿Ê7+¦)ÎU³ªe”8"§>ÁŠí:ºNÙÊÞ¯Õ5Ì/8GT“† çéUf“e¬jËÀ I“Ó‹Æv±ë²PÀ5û s©–Ápã>N“ÑWd’à†ÉöU¨¸=Üb_VÕ»Uøzk³ó;ÓF³–=D24ð;”ö võ˜sDSqRJ‰Íô9=;ÕÅ]œÊm1b‚ü 稉«=imp‘tüP öÕH‘"ËU»œË#Øë÷à›˜1!Ã-YErBÍ uÒ´†AÀÝkîÅmÉÆ´ñû‘jùmDIr2sÙª¸›G8 £Ìž_è2(·uh[ä•]6ñÚ'T:™}Pû ­a g±ÏÞ`˜²•€Q¢ýF3l¢ß¯Î ÑÄlÖŠö”’àG€8c—ùr3ø›NÑþͪS€x½¯‘0žµYòvx‡é䫔刼±©ã#Ô‚€Vj·‚•ÖæÞ=µì…Ÿeµäñ…ô¾ð”zEÉzÈÖ/Ôµ $ÇØ}ÅÚ`G û¥Õ74r—OËFÖûs(smY– j°x'Ù¢—‹t9[ƒ±PÃÖª½ìœ ôlƒ¤â‘d·Ž·ïL á ÖÆ]Ÿ/L8ê=€¶Hkvz¼sæ+Ýš7- ‚xÔ¥¾éè«kwÒåçùEç˜2,–4÷ùJ¬ô'§Èn˜r”‰Ðf+Å@ek‹1å6éÀõ¾ö¼. ya´R)P¤¾>®`É'ð^ççáÓŸ"ÂÂ5ð4W™b€\õÅ8 èÜI ®1A>ä9õ€ë/âø (- ¿ÛùI¢O<ç¡ßB,é^|…×4ÑèÈc©Q-Hh_ú˜©Œ{ôK”‡ÚÕM„×°ðuçØ4ÝöïƒR3óv:RõÎU<¨µf"s@D×p~Y©M¤XÊ»zUàŸ„ÓK2¢?}Qµå”óUË·à³P.AM¥£¼v׬v@隺zñ8Z³œÈûr,¥²qÖ—>/—\äê¥éý;'¸EÂ<˪×Ký/ÌL!TU^Î4ç­´Q7|j¾àb “½R=Í“:JbºKy³–ònÈ ‹Ñõù [ã/©‘uÐIÓ+'½–}½¤-6Ç¢O®B"¦Á ÝtÍ‘l²9•ct×w&"ÙtV'Ò/ƒH¥’?ˆL%&ÓôÌ·§w¬øøÙS¶èŠd°•ë«Ö4Ndú®Á‹VumV5ÛP<=¢sÕ&1åñÙ-[äUîÉeôáXÚ{£§žsk+ƒÕ‹o\Ö±rÅßô0{„Žài3XÉ?,R,©2ÕïÚvËÃzçAë/8¦]רíô‹•öý¸©Y˜êù¾¸Qb¶¹ï Ï+,L©ÛrD&¹w–¨…iI~­ÓïúJ,?ÉB¦zŒÆ¶ÇAññúÛ¿âFl¿–\Ñ|ögþTV¢ÂR,(½fÅ@Ö:¿ 9B³–h8 ë©{µ`V ˜ýìf@ñå‹r¥#ì‰#ÆÕÅñS1ÜïtpjŽÚ…Ó£ÏPct˜ >“ñ"s³n47ˆxïŠ%èp¾L‘·ÖÐËv*‚êÝÇàßz yj©[ëd–ÛÌôØlW:è(ó*$渚_Teܯ2w‹5è5/?'%ÈŠM,W9átª„Œô/”²;ìýÿ5DÓu8µ‰á‡Â ƒK¶†­Ëì]yª·¿bþDZžaÚL÷/íb|]Žºî•‡ëô‚Ä4«øRþEcâo²é0x¦š¼½?' I( þ`À}.€ æëäÌЛ`âa:4¦Ë9.¼®ÖÍ~צéKæg545P¡>ýñÑι ¦WUªáð-ÿR+ àÄpø¼t2+ŸŽ=IõG!íP~|ÅTHÔï&©?ø™˜PR2´,qh^ï’ªèæ¤~ÜiÑS˜ý²š ãåî óžö88*ƒq…A ›C½Dð9sq ³Ý2ÀàðkÆ8EBÉE¹±Û§ñõƒcŠ.D±ìÉÐ-·®a^Û2P> C6¿ì4›j‘yð¶ < @GµÉ:b¢&ýßÓ¨ê+FÂfŠä¿PW‘± ý Ó^s·>ýÂýî_;:¼k¨¤À€Dv±@^å$—H-” ¾œ){ÜQù‰zÞˆ'þÿ#yA¤×ê)œV¦£MU‚¸d/omì’ïýÿ~†2:H«Y=%eŪ#è©JñÜVåabùS¨R 1¾É<ÿ#“kŽ·9‡ šÌYª“0re–p7fò-š…ÚÁâ—M¤3LÑHžS§CpŸì5 ÖÙ´þÑ ‹^¾¸ÝôÄž 6œ÷þÊžaU-iÔ_˜P}a²ór;!{8*&ŽcÓ\ïó,‚‚ X£ïp¨ïºbf&bäØÀö v\Ò²}äãiÙìÈòÓèîX}û&L©›?üÚK¸d òÌçŽãŽ XMyŒ0†œb÷MUZíÀÉÊWcû‚ªuöV:ä5\”Õ`[8ù¯ßÔ¨Ñ(År?Ÿc>U:¡6hf Xaé/ÍãLQv©\Å<9ÒŸ®e­…G“–Œ>rŽ–P>+x<ŸæÐý_ç)ÖÓ;µ¸xº—}±BFμ¾½lÒÓfh“7ç×…bÂΈÍp¶âüïÂÝyV(JÖ¬Ðp ïªf£ç噯 Æ1ä¡\"w)͹ "ä@¾åÕ¨tmV²ÇƒAéBmqìšäÖ5Ö½ÊvçL·«¦œgŸ>Kû¸'\/†S»3í‘è¢*Ä_ãt0°DìÅ„{1gŒr3>„BR¯ŽIOkyM}α܊­ß y—P¨]³üR86cFÀjµÉd mÆ©J…õØø—9IËâ‹Z%‡GZäs‘è¿9®¢±Ùo‹ }ïMݪŽuÀ§…o’eåÌ5Ñ׊`%RZ#n¼01ȵDNä1†àaa£a "aðêúÒ=Y¡Ö“"H½%¬!™4î‹"HEf²ÚÔ§SþBl²£öÞý̬ö#~XPÚ´Ý1†ù†À,€,)ö:"‚ ó6®Ï»ýíæœ µ1ô: yìĘÙͦÝ::;ôÛhÏh”ßxÌÔ{«³n’øÍqòϯ{ (ÌBœ£)ÿqÚ†Xºo¢´p|Oº yñ*6üY<ÿ8¿dôˆ^š]]5×gö+•W6ë;ÔyÔ®Ù7P·ƒq?d=5®Íâ‚Ûä+"ûX2Űž„Úߛ2Öþ6ƒQÃس½¯jÁ¿Á”æ•6N€Ö­¦P”Ã0_\iCE.¶Þß²V?Õ7Ák:ë@Õl!¿ïØöæ@þ,Z éÀí‚*3þ‰‰"A.…Ѥ¶§Ýí®pKÜÏ.ç›rýri" ОÐÆM]fD?-ø.ÑYg™«K'cn‰'§j°mΧ)õžæ¹â6”±¶ž2ì™Òyuz1û¦G¾”ËyÄcñÛžÐ\R%¸¤Q8ýx†ŸÃÔQY@Ùx´®¨Ýª€Åðû©WhÔrƒ|¹á q{¥wi°,V`ÿQ‚®2º˜›ƒÑ~gq &¯12„D(…4çÊÑbZÖyÞõ7ø Qri·’žwã; ªÃAìpâ4fÈ#fuâmA¤RTÿjÔòL0¹œo8˜OÊ0Üö¦j?ãð`â˾`l¥âb|àç)íÕµ¡d±Y§jwßã—ëÝ®\P‹ÓÒ†ƒ ¥‡°þq`¿‰ä8Tö÷˜#ùVÚĨ­ó¾ì1É*d?M*šR;nFSù†g# OÙ˜Ü1ÀÃ’ò¯éÄ•A‰ƒ!ø¥mv#ºânISeA ƒÑá Ÿé²A`î‘2ªùdð‡âo¾·¢ÇÖ7&|…WmM¡“+qäoÍóÇúg>¥„G89C}ùŠ*¬æ#9­g+‰SdÁeª˜ö=¬µ¥¬<;r>ì½3$§éù6´›ÁY-[Å0)9ZS3=e•Ž£b©½ƒÄ¦ƒ´o±ýÍ׃oCLÆ›Ÿ7JZ%\˜Ç}hÜ@2¥cDm›[Pµ/ô68øºÊ¼sïki¡´‘`Mßú&i¢MמoÉ0³ù™ÖÖˆ!ºï˜ÌuAM §n?—‹û=¹ÿ*—³²3¨R•¬FÐlŒ§â™ú¥¹Ìç—AÉ%°?ƒ«A£ — ÷±‹`@}dÙ\Ua­¥}eJ>ŽÐù'Ü]àóo>q©ë9›É,ÿ Ü“}<šz³Ñ±>~ ý%6:ãmåÓ¯™Ÿe!¼_¹øÓœ{ÛnÚ2qv uSA"Bf|7~£Ãg-á•­­–i3ùˆ ƒj[ç%O /xÉI%±^„º:Ç$jËc~¶Z‰å:ÂÊBÞÜå5ÂùS°UÖ@œ7wq¤‘Ö|È™ôôåÊ~Ølˆšø‰ñsÅ|– $™M68À‹ iÝ‚#Ä«v#¬8º98`hHj\gI=å[þIãµ9Øœ3Z-gÂçgȸ t³ÈÁ[oÛÚ¯’°ÂôÑlfuò°ÙÔ‰´ºs\ž &b[¢9Iúòm‡èÁÙùd€!„’…³¸© Ô*?:óp#‚6ð­F:ãÖqås ¾C–\zqëý{q¯ìâ¹4»†jf¼·PvbÄÊTtÏ~„ƒ1JSåÔGë¥-¸Rc@NY¤§Î»a[ÏͤàT#¯yùœoÅL½BÊkÌaZµ¤E›CgØ#ÔKÁ0ÌTºÌ+ñj ÃnœQrT;uÊRn¶ÆÜ *à%©‡¨MÌC;\‘ $€»¹%8öĈÿz‚¢Ë:€œÿ!ÊâÖ¬²wÏÜ5Šü=Õ§Š÷/né”14Q=…eÆÒO­DArXÊûmYÕ;·"i‹`?…>ÛõC˜½­.û8þ¹}F/[\ÏÀôêr žÎíq­J+Âãh´–ãêàJ<VõrÀu óø!ÎåY½óce0Ü÷"íQ©i3–;…kíWbSKØó©ÍŸЩ¹ìŽŒo Kº¡‰µGpZþÖ+åA Lp÷¼dEÍχރ,É…‡JÃÕµÕ:g5\Qwx¸¥—zOʤ4¡O äZ˜‡C(꥔ Ÿ²ã()kâ.Ô_W–ç÷°¬OG™0êb¿9o@ê‡ñ‡vÚë9Œ]©å)ºÿ˜ÊßUýcåõÙ“ú3@öšýK$δp; Žæ¼‹ 5”Kí¾â™lý4™]°*AkÍÄááÂåY·Äÿi:·áœ%:Xjû&ëd¸™úB˜ƒÿ.ÊžæD¡É¥Ö÷þÐpIkÔ2ãg·(Æ ñԟöŽBã R|_H³ƒ[mU*$îc·É=D0[jtx šÖÌù^çÈ׎¡ü«Œ–ö¬9E/#ºjº×¼0u¬îd–9_Oˆ^†å«’­% C_u¬)=ýam°/^œŠ!£!¾_%ª ¼î=qÌ>]/>ϬEY;ð-ÚIØ;£G©ÿ ì=ð‰DË¥€û+E­»nÍA©ÑãI;[AÌ+hºF»”h Iòe} n?¶”áЊ»#Ö®ìgÕúÂ$…òcïãøôÈذѸϪ? –6º£V>L•ø¤…ô“ƒ‰dn’Aæ×Õ˜.£ Ýo–˜PòXȹþ–3®¨Í„è¼ÿzëiu‡0Ä£¢…ÃÏhóÒùYTÃàÏð§ ^ © ë(«rÉZØ<3`уÍ?gŽ.òÀ6Ä8ˆ^®¦º3æíßyßÒWUõzNÆ#—ûí>E ™5<Æ•%Mm¸ù“hÙ3"9~püet˜Ö U!Ÿ$”þ¯J  þªA•Ú¦ ¢·HæK{†Ë XÛ¢ªr¿ {Ë*\íÀÉØ;Ù\›Œ!‘º¼ãu7söXÿWfŽƒ¡Ïj;ì9WÕƒ’½™ C­:BˆXPú€ßSh¤'Cédkÿ?@ÍÃ{ Úk·‡„ªêBE¿ZÔ¦õ¬Š<Ð1Ïäv¥Ø"¬=î"·ÐËM™  çZ=¥dä*[f õëbüW|q oZ‚…ÞÇÐæI>Ò‰S{Y à`‚"É‹Ê]!7åëȹrkŒO´±¨âÞb!:ádý4Qw†§Õ~ŸÊ„¢ÃÓü+Ý—óZÛ|þAl]\Ú1j‹ìܳXíëøªÕ2™¶oýÜ¢<Õa" jÈЃ?…I!5úl*Æí}q/ÔöˆÊ‹×ÍHðŸ™),`£E¾E=Œä¢7ƒ¡ó‰ m©½ßšF×RœlœLæ³–Rûd`H°ÏYœÔ„Æ$Õ²×[q ãvíeðäŽ j#3cÔÔJµEjec ‘„ö#ÃI«ÕÚù@nà“ˆ§<õ|þÀ—•£3#9óG¦\½ÍQ^í|Ñ€™!Ö “piªÛN4 'C°•0+Ùûx¼´þ,­k!U´øâub’ºZ//Ù‘=/Cd¬h„l¡„†/.EˆPa -¯Y{ûÕOõÊs¤ð´–2Ù…‘†„кúFÞM¥øØ«Bɲ²Ï=}Øi!÷@ÿ—Jüˆ®à~B~ej½FDZÞhnN`þ¿–0BÁšÈzu®;%ÙFøùJð ñ"ËUd|°Pذ9…‘½m*žƒÎ]µé+Ã'·–íôÄÔË%$ï&ÆÊÌGì8s0t¤„?È9‚ÐÁ±ÎϘ&¼JÀÝ5Є`ŠŽ¡ ØGú\Ö 0çÅ9m†»‚ýÃOéTÿj½ô”^a“µŸ°­dâSÞ¬sâ2׌0缎 ¼„«Î0Z¯—â©=ßT™|z®È¶$ëjêå=¨PF&¿gþSg’çš/´êÒ”D½‡/øžäLív §S…W<÷ÁMiáÈz®Wn¾Ü:›Çë“¥dãÿ'ñ#ñ[à|É1XÞFì±N÷ ÂD°^š× PÝJ,ì0YSÇ2î’擲Õ¸éÎÀÉkodÎNNNÙÀ¬ŸíJU°¢"î§B¬Gþ¾ £ÌÿåáÊ”ÜÚd?‹75CuÃ;q˜‚!Hf£Îç“ðŒ]'íÚ¨Š"0Ã^@f]SBö•ÛÌÙÛÑâZ¨)o‰Kã‰$ƒ¯Ð Éd\zÚ'8C48áÛˆœ ñßU ƒ‡?¼7©Áׇ™ÂŸ)?²‡‰Ñy¦;'úO\½¦9ê (ÃׯOgá–Â=aUß¡d„ˆZ>8…à7““ß2¬R;ãÿõK?ì›ðk áîíz;ÚV(ú𿯱‹Á0y½…Ï€e|Ò‡ˆ¡Wt)W£ìÖ<¡9éKX™ƒ :èoªû‰I§ø80åY:€H+r–ÿ$‚âµ.ÊË0¶ð.(4–;sþO†Uj ÝW|´€†{K£{ }ç.KNRbUç,U´üPVì~Ö\0m©Xs 6È ì£©-Œ‹xpìô·C³+2¦-N¸}¤ÎÏ ­¹ö]£\Ë RéЩº({Ç‘Bx¾iñz`½Bʶ½ôALß³åoO2FE~¶ÀHÌÛ‡sÄ#ï.ƒQW§Úa[%76¹ÍØi_œ´ç’Ê;~qa 6I«‡y [ >¹Fÿj¯1󢿃0übßûŽG <ÛùÝZ@m¾c¬%þ`äi€Vå†WVNZ>’TÕ Óô‡DîÏò푱ʜx+[è,ÈLD¯KZV+ìá¯5ûn±™ý R“B@=¸kŒÍVá#ðÙSyÖ,~‹9æ¸G…O[É1Ìf}ƒçÜŒ1L^tÐ “±rZ9ôÏ3[v"H…˾W/ùRŒõ»©'|[pekª5Íó˜ñœkÈ´÷‰¿nÚ ×Ó]Ýà°ïÞPMœË½" 3…v¹Cf)^‘v–æž! Þ©Ö¶nÝ-æw¹ HÔ€ãPºW½-–ƒÜ›Éñ܉½e‚‹pïÎ4üãÏó;A‹íIjÒ©æ`9%! *‚\<ƒ"Éecû øØ*'Oeø{¤›;Yºyüý)f¶?¿ÁOÏ Ÿ$æòÉA¼mÓ ¦ÜßÅ]¿RÍT «eÌÆ&< rÿ9¸ ú:Ü™WÌ[Deuûÿ|Úâˆ#âµlÿa;À‚d,¹XÛ0x¥k¼ø±± ¼bý¬#YWÝ#Å@ù–Ë“‹¿®ÎGµb1’/ñX%ú5ŸÄOµ=PãÛKàÆú4⃪Ú/–Îo¦ÏÄc&´`>—}Øí»ôIâòi{ƒfÓBNv  ËR…~G¤V[`¿8JQ¤ç=C·\.ßOJìï|xPŠT¬2pÁ Txãñ¢‘ibç]ul¨gr”¾K80âœçÎD¸) n>{ëµidìÚƒ‚ÛÚÔRÄ«ÝVc'eðP)w{e¢„…XHKÉ­àÉîs~_Õ%®Ø}iº=ñÎ’w(íö\pÞ&=ÿ)®Äj–â‘·ï7,Xm~q“®hªÒpÍÖÞÑË÷&YÃè!ýÈ fŽ,_ea¹YG ÄL÷(꽪ïŽþ Èv¶®(ã=¯ˆ8þFr`±`¡ØÀÔãÉ ÿ›Ç¢˜ti AltŽ>‰É2A¿&8»0†©÷xêÕf>a¼£ã[|‚··ü• â¿&ÀM~`Þ/òŠOø7£ò • _ñMck—LÝØ[K^ïþC“Üë©áv˜l%)QàóÞ“òû§¨¼dí4ôë6? %TRx©(˜÷܊錼:VâHzaÊÆüI°û°ŒÔë÷Ôâ=ÕCqsÑeÌÉâá#}¹9$g‹|Ò»-,,Oõ: Žñöv†óMϤý6#ú7’{ô0s”'PRù]5»rï2Q&±“ÈÚÔ§‚«Ýr4¨FǨHÆ«€Ãª_ •ã¡gsH' ¨Z%^DûrøÛ.Þq™¡õ‘ãWgͶGcû—•C¥àÊ<×]½·|j_QtW¤N,Úœgræö -]ö¥Gx;uWÈ€uŒÜøæù“`ãäûêæYË›N—û¿ú«(d©í–B8Âf×!ùÂln ðSèlÞ^ùã+$¶Ó0 ïÕ»+´˜qØqQ 3sz¥ƒ@¿§Ì9¦º b—«Š<'Uc²Ø2ÄY$ ^›~àvaHðŠá4Ì’[Ä[5bÓÊ9V€rúYŠþØ?§\ÉmsŽ…#O`d¢šÓ5 —ñ üèW͸òšPt£è%Ò8«Ýõ$Ô2Ûž+„»&KÈ|a}kÀƒ´MÛhÌ™ÑuUŽRºª7a¨Uc+pëÆt5༶uÀ êÛ ÷‡J]ÃâuBµ=B Û¿™%[ŠÍø¨õ÷yð_‹-B =(7´6T{è:l4½7ÃGÎxî«S‚ÐTÊf û}v=Iž×\&mCd#pÑ8_¤WbÁM‚. ì?ÓíýCÔ—QB Žg){ʇÍX´›‘Ķÿ&A²§ÀL¾Rбi£,acO>bsÄÚÛ¡„$Æ‚2'’E·¨µÒ¶Úóò¡Ô^4´• HK¦r&–^ !Ë^«¶^œ2q¢d%_T5ݼH Âø³ÿ:ÝÜZ.­Y2ƒž+E]¼ºã¥zVåš×=lÜy¯ÏÍçgYâ@GËs9«­&ˆû‘Æu€ÒÃÎѯl‘ßÀ­H2Ü|â¦9gÂQƒøUä*\aCŠ€—n¢¹ŠîoÏO~‘mâÑZòó¿à+>¸YUÏÅÌ„ó¢”wû\F‰ÿýø¥qÀÃz `õÔ:²dÓU*¾†Ç7c'þ)€Äâ†Á^—Oº†;öÅeÊÃ$ÕK£k–ðUG/¶M$zЫU‘†¹kú¢º¸Ì_QÛ|„Ò?÷ü³WÙòT,^åj Cµ>ýIm–ûf!"yñ%È!¡qLÆÓ`ª(½Ò˜”ìW‡}hû’owL€û\Q= ÉçÀœ@ÓœQ`&£!–•ÔÜf¥«)±1Û´¼·7*õú—ó M&÷ÑÀÔIiíw§¹õ~˜v®CÃÂöÜf*RÌê`‚ b:a?”•9ϼS®]ÜZ¸ ñâhf~„¯¦x–h¤ÐRfÚV ’_=´€ÏBbÂDÔe0cœŸ—t¤ˆ=še®HŸïïŠë%ð*_ÌÊÔ̶•bËp´W—z+bP|-Å×Í{?n–ð=êįÊZ£|­zvÄ£‚C€-¼Š(¬þõŴآ≬%Í'ªó¦ô¶OµasW=‰‘‰Œç{ ….yYJ„U_5i”´¦ã~Ì4ÀJ Dò8 <$ K`uˆŸÙóåï†Îm­g«e9Þ< ž¾¬ûÔöCÆšöÁõ +ú4+×¹õ/rƒy÷󖥯xä¢S9ƒ }xä*'¸çšöÉãTñŸÒUz›:Š¥aBPGf4ü¢ôE Ûã* #¹"ûJ˜-ñ<9˜ŒÄÌœk6 ™Šó{ÁP´ÉÀíe.üc¿ù±$ö,ëqK êê^%ØvÎKq¼šüš (þBUý n¶ERº/0&Ûò²_Gª£¶xEF¥sj‰ l×,ÑÈ\Œ"1#ÝI'0Wñõ "íÏ+ê¬å1æeÅ!èÖÀÿ‰ýö0JöZªfDšÙºŽ†Í‘Oùw+ÅÁt¨Šê)b´²ŽV¯Ú… Ó€Z­öøMáZ¥®#ãÚ£К?¤0]gªÙ¶€S⪉˜)ш—j?LÙba$.´uÌi“Çõe›±,æâíMð´éÀI[œ3Ú÷U$þª ñûݦTù\ˆ7fº}/{ž+ꯛ–ø'®èÜ"ÐÄD­t'É4‹jã$’÷ÂWƒrÿR±0ÅŽØ»gg‚Ú@Sp ݥוH÷£Ä}ž.®Jž’J”ú71c|¿7Ðk™#Cn~Àp†ZÝZøËÉPdƒ7cv®ÝÝ¿úV×ò#ÐU²»¿o6‘€‡!ÖcB0S¯Ÿ§¥‰¨!¡VŒÚ„€•©è;Ì& çÎ¥T|¢Á&óº6E[j q| R€$D£,É#æ–œÙJÇîD…¬ÇÕÃ|­»Á"J­WÃg[ÏGg4 2‚ýÿL*Å&·‡` =¨#ÿzÈ Rº9¢Ý$¶˜ßd¯K(ÿLŸê"Œã|éTbÐ"&ƒ‚€BЇºMÉ(£dIXÚI$cISyʸBçÁêõ` /Íßuü„ õVMœmûp·ÎŸÌcíŸu[x#mhaQZyQ§÷éB+G?/xbûð@ly×l©ûsö»~èýAe–ò@ßl@¥Õ;¾”XÇPžjW· J}•ÃÓ”ˆâC½\?ü‹¿©¼IhWlmW«è\ñzc›b„® m¸¿u‘B 'q*ŽtF¬á;©þ}èba¨{6“@ côg,ñ÷™•šV,•ÓŸÿD¹8Ùó/Åà5\¯ÔÀ—?ïÄA¸R©›Â›»iϳ| `ApGÅ›·¹ÙWoïT¯éΗ{l¾è8Q/„Ql® ·Ø°,bB8ßr6B•~ÖÓøÂø^ îOö„ØIÑæ½ ZDYáüq¦ Ú Ú–›xÁ2Yú:É%êÔ: Þ>h0’ïC©•]–ñ»ÈÛÕæœ÷šc¦'‹¤ó=ûƒ7XãYÍ&³²€ ®Ò¬°¶ã˜Üù’ à0Ýðç$kæ}ÏV‹Ò<çÜjm·¿d-WK±n+õ޽GÓ qÌÞÁq;È)2[¾çò?ßðXM 2OÓ„º¡ íá\æ1©*™hH:qßέ[™“r‚¼€6Õ(Ñ…êLš@ãbÒïk‡õ;ÛÚ¼™ÐˆtÝ´RJ#ë!vì±=¦47ÚpÅšhaÇ`4¿7D Y"/–¹–òõÂ3áïœ<÷œšâä´{†GÖò9”*2çpJDì3 }§@]Þ¡r 7²¤¶s€vt'G.ïf­‚¬NjI"lÁš8ÖC–x$ „¬[‘Ç=tê_M>AÅIÅê—Y³[èèw¨u…ôÚUq››ù—ìCæÌU=ƒú!W UÜ´ÏÑ;Ë…Ý0f¡Ä †‡H,ý‰› ¼T×ÉÅ8¬âÁoF^ å€ìÚ2qO(ˆ¢ ¡m™!¤‡iC›±(ùVOØÊ%$º±ì­ýz¨ D§ ­—ŸF÷jÙ%§ô”©iëÌĬƨ Ò;ºž±1¬&Ûøo¥ß™§Ó‹ApXQj‚Q†¸zûYç+b½åþú{Ú"bаJ¢>Üô› GŸ…þÞAù¨\=ލ––™x7N= Ùkç—js”]͉^Ê‘Œ8haË}²0 ÈLÇ?Ëø+çS(•i6æƒbñ´Ôëšìj¯,*_àó5š§H“¡‚~TÀ{íªøqbËðÆøj¢¡u ðOÆli¨@Ô>sǽ^ꄵÝ=ŽE°–ÂMÓioØ• ¼j0‹ p?ÁóÈ–ð#.ù[vý6Á¦ÑPIN¶ 柔¦"˜„}F €K‹½¿ÓVÑ‹ -‘% .<;lÚJ¦¢ù½Ø?V@ªB«]Ûª¡%™žíŒ·+vˇÈÂý#b•Ã×8ÈÚàÙwõmB¶`ëp£o™ŠÚȸРvT™$*­MõÔù@K€"Ê5ðᦶ/<(8ºý~é Þôë´éšL>Îh÷ÍèŒt‰6¡ì‡©¨˜ä7ï2>®ö­ªÌ¥?)Áß+93ŒüACT%f½ŠìÇÑ?y_2 , ›ÔÚøÚ܆rìRƒTÝdXïRÙ^TÁX_X„$lb¬¢’ÂN'L9VÎ_Ë¾Íæ"'©çʌҌH‹ßUäžÅ2-/ [ȪÈQ ®HÔo=¨Þaû-i;Ý8{xOW xÝ[½Ú›úYß­á6ûÛîŸÀ&D¦Ðoo<3þÇ<]¾5D2pLLU¸ˆv”³‘$©ïìèÞöôUÔÕ¼{òX¹\´ng™Í ªpP‡ùÔë½Ö!mf¥ÿe2½–¡„ùmÂßì1ßkÁ} ×1Øñ›úY$!³ïÚ_zrB†U/0¬µ¦9ÁËP€øò¥ç3°tí)SIîwE /»¶D:#é},4¹_Äh ô"ñ ½MÃ6[é‘¶ÎïùPKñ¬Êv 6Ëm¤Ââr¼½ÆS`@S¬déL8HN R‡‡emyäcÛ€;š õ½_Êi%–è¿Mmhù 0Ú°IF] ·HOµ‰Â’,†ØñÕþA ÏòÈ£®Ì…ÎÇ÷:ChÞY6¼7ÆÜ{빊«ý öªì¥´»Å„iT] ý“ŠºœB‰éâž%)Ø úÈuÙX¼¿ÔNYï™0Ï“°É_I-oD!SÓf¦ÅÃQØ…47R‰„Wsá¾KuŠý ë+ÙKkr®Ý=êiÒÓšg˜>ÒÂÉg|µÝá8O}¥G>q/1‚Ê(El£‘`ps?Ò×φw, ­&Æ”o·® íäÓ«Dù˜Jáü‚ÁR{ÑÓÛØB¬73p¡r¾¹mÒ³°¢èE9×™M;ëù,çÒÛ˜Jeènø%’ùð3òÿw^—?0ÕæêA¥Geß<—"ÉŸÅ£¬¦àg=ú/%® ²‘¸]—{N.N3¶RmõîŸIb–ž–ž6–]™I´lHJ¬u§íNÅUqí²]”]¶‹Ê´Qrê<ço]`ï[ªŠîs å<¬ìÊ¥"Ð|óf Œ5!P¥¶0yÇòŽ(µ¦l:ºýKMvÚ¿?>ëEaw±“xK˘¾'!åÛw Œ±KºÞ~í¼¢Ñn5ÅýOÖlý€˜l:ÎÅS‚PeÅwã,nÝ? Ž8_Øß#]K_?bYlØþŸùy¬Ë›@F1Õ âKè÷i¬Îߢ;8wö^|"=õ9…ü Í$!›é·¢»+¨ñ' á§eÚ©,æJ ™ Ý .6d#F À|Ù‹D|ØžÙ¢Á½ÿ5M*ßéµðrN«ÈYϾ7H!zÕB<’ì¨Í íé$_S¨¹MLÄÆm6+%½§^=Âì˜îÒ­Rƒp½[ÕÀþ?WÐ/…äE.¢1Q1W5ýiß¼8bÝ>|Ü–rç VÈÐ5xýYü¥‹û?(Ó¹ª„쳕KŽxa%ßH«.*B™²›•ˆ/j›Kk€$G_5»VsoÉ8í¤ájÀ¨å ò¯ô$-:¼bž¸;½ßžÔæ"CúT‹PúVJÖS+²kªHbܨ¨¤ä7¢ZÂ:?lHíïTÝ3…¢ÉÄìHƒõà$\‰)Úõè/:JL,]õt=C=Ðç\[,“Ñ”R¸ºÃ­MBj.34Ø6 ï }|Úb3”á`ßmÂE2ÐoLÞú½X12®„¼Æ )Þ»«™jÄ–3]»2”Œìh±‹´ztã'³?œ1Dü¿Õ`¶²ÔëŸÙy¹Æ•o†›º‰<郌zpð“ Ö »Á¨Oˆ°ÆJ™-«¼=Qìˆ2×5<#m„û–%0ù?ÄtF¤ tu4²J ã1©½¤<7SiÈ‹—Ä•1¼A3Ò2ù•s›×™ƒRÁý£ªŸ„dYqÏoXùóʶ{ã n¿Œ{ÛIQµØëò‹äЫ=hYy ftò¶6‚³4WNÞd;ïI¦Ò4ìh€¿]@a²ª=C¸LÞ¾±4ç>ï‡8褵S¬v@ò”UÙL?•jÔf¡';‹þ í ù›Fù_r ‡€ŽO·¥=‘A5ñ¥¿ÑèâMˆ”ö UèCÒÚñ¨/Àºdð€[ÓÕ¨¾až€C0÷ÛzYŠ’_s¿¶j·í&TfÝ.eò¶$ÚÄSGè+®ÒÉŸÚk»Ê$ƒ %V€[ßÑI›ÅêÂP‹ÆÞ©k×F7P†˜™¤äÂn¦¯S#—Up´ä“½ôê—þâCa6LÔ¨TÁ©Žx>߯–@íøº¥©Ô<ÿzqÓÜ#e³Âr\WŽ(-&B¾ýô”mÁ¨Í÷hQÁ8wxiÙŸK¡e “Õò}™iü “žS!ÓŠ,eG`íÐjëLžÆ«?·{M¦ÂϹÃ7 „ Ðegå°w¬Ó1ù,T5²+5Neì“ýÉÀ5òôqžßÅ©$Zf`ÈZ­õ~8z!“2tp>YÛGþ7û5<A<"î#Á@6˜­®oœÛP}R?`Œ)§¹T$^½ý¹ },V´ˆÛI6öc…¹¨òר|ªm¶Åt_ãª}0<Çm±O\9íä[±ÙUÍ@Œ]Av(’§'SÅdcWA_Ë÷\VÞÍ‹Ê{ —PBæÞÄ1\Ú]êÞƒ8Þ¸¸‰´wJá6_±,cìüL3aê¯ ò˜Ïûòé˜+éýkX­`o)%tž‰J.{jÒĤÇÑàq+¦lû Uõÿ §‡*‚‘#+lÞwítt7XdŸŽRdfµ)®r·ƒ·€dœõ™û™Ôì'yÐ#m2ÀS96õx‘åçU"N™‡Hx 8öCw·€Ïruî†?ßÛÂlwïæ;qª¬KÓè¦Ï마Ü}w…„)EDè”ðE‚³'Äišÿ)ª³šÒuA°±aÐA¤Fè4ø½D“©“`h%æ>RÖÆôcÌ“ùöåeëAɦGuúx.$¸¤Ž¾¼rìÛÜÇÿx%”$É¢× 1Ìǽ)*)N ?‰`üúQOÅœÙ}kM¯5 b ýÞŸ>øµçŠT:¡h.•Õ W‰É°+Xã+äb2þ³l®HDŠV6pL¾»…*jÎL<¸^AÅÃïo[S>÷Ø7£!pif ÆÎúÌzØfs°uy$ ÷”!{‡ÌYž!Šü‚<u—Èԓܱƒ}h+eb~‡øWî¬FC EÈCÍi¿Ö,öµí8-PÒçñŠ“œ· ¯ž»2‰WÔVHV7Î)ðÀOÍЊÅ6Ì(åêds"Gö9'®rå“ïâ烅igµ5íì“Y±Û4†oŸ‡"• ±zùÐw¤1æ(çâË‘Í]VÈDx)¯ˆo åÝ}äÜÚh"¢úÓ„U¢KÂd>Rï¡dJU»ä™o†¶æ6tà|¦;U?iß‘;–ýŒ;6¤´p£‡¯²xXÝÒ£({‰Î±ÇA!y“³\×í†ÑÙ¡ÓT±,[Ó6y¨… ü¨ƒ tB‘ 8¢Î;ý©q@‡Q•Ò¿ŒŒ,vmƒLAÎÕ5Õé€þ3#‰—:×Kê»É×¾°-¾]A}0‰°Ö†,Lig›2ÂKyZïQ“DNS頻I0Äßþ§‰ÊSÙˆÚ”7TÛë6y÷«óBÙ7—×ÒÁ’D­µˆ¯QwW€“|k„ÝDîGQä4vµPØzu`“î2'£ty¼bqKLi¶‚óà(s–Ú>>O1‘4~ë(¼º|ì\ÇÀdÌìéâÅ¥È j=œ97I[È¥Ô]v¶4>WÁ•R†-JüÉ]­®ûÖ;…}nF3\eÐRå.X6¿@îÝXX®2àÁìÞlx›Ký ÓRg³Ð×½–¶ªÃRqIí–À÷÷wý_k–Lý¹ñcùr¸ôT{2¿×œÃÉÕ‹¢Lñ©}ù,ê.!†yÿv‡Ò˜Âs»J{Ûc15ŸY<9KÊŸ`™ ´sX[³ä Ñr¥Äcy=ËÙôœèM·>fédÇ×Fw;ÏpÆÍ-m²â{˜Æ¼„u3–,Kµü¥¾PÆjÊ´Üøƒâvc«lsÔ¶PY³LÈÝåoAˆY,xÉ­/»Š‰Õ“É’Ê¥,®½0hqô'ߣO?\÷IÍŽiK mH/žÖüŸÙµÐ× q9½ÊÚ ÑynåÀD¿r¥XçPœç@m•…åÙìû¿ÿ˜l^ý+š-)Ûù»PáÊ'l’[Í9-ábã¹€©ê”²ìþÿ].ªÇ‡˜`~ÄÉÿ †ƒ°–ù·­®Á ‡Áö òÎöQ½çËøf ÆöÐôÔgž´ë±³¹@âuë1`¢q~ƒc¢<­  ½™æ žE[¡Ô»At ÆÌÎY[N*ÍN€=7©@`)HDLå@qÓ^ú…A0 Hªµ/xâ"Ý5U$î9Kß;æF½΋ëåÓžDk(ù>•3ØÅtÒo#~çMúÄ9˯#ˆˆ–•§ôƒ½ |zˆpw¥Jê¹Áukd»ð¨ºü ˜¿Ç¹K$¢&Fª'œ!aݬdÙ]ÛŠAô¦%“4·ÁlXЉy çîÜÆ¡]M™rföñ‘;¬ž1ŠUà f€‹é€K”´Ñ÷À–ë¶÷K»oï©Û‹ú_¹f[`Mô‹mÊ»‰ À²M”~Í ò_*ˆ Í’¼(OÛ«ìÈiã(ýó*·5£©ðÏy§~Šf"ÜlyœD÷Ðàõ´ù;r/T¼Îÿû]¼µâƒwhöæ?²\¢óÙÙ€.Qß3¬1ôä+ÐË2²¶ÿs=Ô¬Eت/ÙBAk¬ü;lV5§è°Žé–ÀˆõëGá ýÅ\‘Hh.Gzò‹Åá«*Kœ²Ñºe– ¨¢J=F2n®™«/ƒÆöxªb(Èü tÎù‚¡Â6£©Ê9‰ ®ÐÉŸþY1`†t@Øø2ºé­Ò9õ»z¥—0Œ'ÎMH2 ð¼9qu8¢dZkï…X€V•h³.™ÈÍœVÃí9þ¥Dœ*¬h>¹0ÔÂ*o+ÍÂ[‰GÇêSÝ+ ¢&rÿkmÁg`f0su å©‹"–‡E1¤\®1è$Xr6 Ÿˆ@Q5¾¾„AÚˆºf¿õ® X2.¿ FXeÇÐ÷™}ïZ¼§.7^èÈ’èƒvFMGäɾ½ºAꄟ`Þ¹ [¿¯Cç„G¾™ã²nr ®˜¥’Ö|éäL7·mxKãÀÎÍWòø3ÙŽ[éí’ëoQXÜcä_p'Šë­r1rV‰ ˜œ.l&8ÏDz^ÕO«”`Y/ÿòFò9 Ÿúž¹Ée3ãäÊÔ¾ :¾:3v-o² ”$=ªüHú{Ž£žþ©nùZWŽçqBkÉÌÎÊé2ðFªüSJò›W¿F4IwŽDZb¬ŽeV²¶¾qÂ#|¹jªÊ…åÖÛ»¸•H"ÎË&âÐG4Ä[Wm‘>ø2äQzã®®¯«” ìN°óŸH;“Žo¾,€a­<£¹8s”VP²B!Id|:ÑÉÉ|O}y_-^›:ï§š§ñp² ùÙûÆäîxÏç•j!õ· Nò«Kuóh~1ˆo-¯—sf•[ôO ÑðiÂ}kRæw|{sµŒð ¨ •"düÆ1* íLç)ãÞ©ÛÓFºKÆü›QÎozض1X’Ìþ«÷,„Ž+Àà*TÕÖ¾^’¶¾;Ã4Ûp™Çbš«3Õ#ß0T»{ ²àKì3¾Ÿ²Úï­òþ3Û4u¯”Þy‹A ŽK™$²zBšˆ•–º™¯4Åèÿf†”Ž­ÕB&îà=*ÓÓ¼°pð°ý —vW¶d¯! Ð2m[Aïgý(eon¸èØËÖFå0 ¥¾ áwº¹á¡Vô¡Êd±›.ý’Ĩûàl”ÿ®P¯•{)’ûÑ7FãVŠö“0pÖ *ÀûDœl6¨«¤X€g½©ÈdÑÒr›?|ü-3° \ ¸b2'âmè”s¿50¤ï*>·cBGÇcôða‰Ð${Ì|ìcß×ÚŠaÐÿR8š+>6 †…€ îI,»Âˆ·åOí!ÀSå·ë3ÍÞëÃ-Ú©G·ð ¾e#¢k^󸩊Í,Ó„¢ AÛð©¨dÝw¸PŠ‚|“øæÂKñ)Ÿ«Úº%¿Äâ¢ØS¥‰ ^¦ÝÒôª3gàŒ¡ û¶ípžbˆâ\=9³ö|ð©R…Å¡pÄv^Û¡•Œ -•ØÔð3}ŒÃþ~' ˜ôQrp‹øyµÜLpªŠx(áFYõ,Lµ i+–ç?VÄçÊtM7®ÂAQÅþºRš´»baæá p¿>tÎU'PÛmÝ|-T>Ù¥ÜØ6e.×g¾ è ¶Û#‰é€FÁ&jÃHÆmÚtiE×ÒÈÞŒXF3÷â‡#V—$ôÁªAÁ ¼ê§|]A‰/~¿›ðÂæE—{0øÌ{efð¼2òß܆ D:à©¡mþ¥î» Ð$øú)¼6‘4ó,ZèQÛòƒŸ |ð9µW]B Ãh¼} ra|­¡¯»RÁÚÇÿ‹”H«Ø•Õ˜j¦†ÀTÚ~ð¿v!QJHäüJqæ1½wiŠ’&QæL‘ÝrèW°£‹Aç}gèÕ4ÿ~Zö¯ÿíCIeòˆ{mÞF·èÓÿþÿBµ¨…¤ù{}Ýe8¹•…Oêñ?ÂËØÛ­P«_»A7¶T­œt®ì`šf’N’»#J6ÌøÙf×Â~âîP¢áXŸn_XLUjO•âÉí ƒ&“Íä,äiâ¢kfÞOÕþÀB3Ýñq3$/}=Ì J\Ápë‰EÚg(2 Þa¿©£h»v‚ N-@Ó²×êƒcR™Å‡w›Ô5íÔ#X7Œ@«\ݰÜ+´6âßmï~bœa @z€ù± JÓfŸ¶sã‘Òêë â¼àH¬8ŸTyüÔÏÀŽê×TW6QCªÆžã]gPØ;”X¢OL›t\þeûk—¸²Š–Hd5znÿS)Uz¸ù¹ˆÿ{~Òùùœs÷#wr ‰^¥w!+ÂìªDr—µv,µÓFu"UÃóÕJUpñ©Q¸¦®Q7ußf¸]ˆªËÔó9Z¥Ò­u÷À¸SžÒ¨ì©ã@Õ¾{ÅÙ·©u+¤Ü蓜Â}¹Ø9`ÀBUܶa)É'¸ÙìvD¹Hßn4bƒ ÞÁWë‹b“8GÎ$:0êF—}w¿rSK[ô~RÁ/:‘5ªïÿq#釪‚š—fñë–>š<Á¾Žqäfñßgº";4DûªþvÝÌ·— ÐæÖ§¶QÁÜ&RAZX•W<‘gÁ…,aõÖ2°é éMŸÞâ(O?‡˜p¦JRM…åÉñæ9ž Íÿ&­NàÏm4âݶµéÂ5á–TñŽJØP ']¤–O ÐqÂGê€ß[Æ Ä†¢eÑÕãiZ—’!æÒ¶øÃ{[£¢•ð= çhj9ð'#„=…ý¸\/|߸bxP{üÝ«)¢³áû}h/«¾ÿm÷ò¾¯{¼/«Õr|þòï«Ûköû’àý^À«Ñ»õ{Þþ¯¡$õc—Î2âÂuTWCê„îÜ…ÿ!\Êx0Z“|L¦FÐé²§Uê^ì£8Ú ­{l1w§Rõ &Pó¸:t¥ø.‹ -o•\«÷ÌyM˜h¤ö”¶ø'.Û²õS^±[eJä·“âÌ%¦±$iŽJy¼ßº¤Æý±íðdSÛu4¿D;˜ÏÈÍèÐâ‹O Ä_Ýôä3kžéÙÆí¨Ï 1¶`æ¡ióU!h›º^u¼*jðZõf9Â,GBkª Ð2tôÊ_ã,'”}óA¿¤e 3ÆŽÈX+•Wâž§V´çÄ#;ÉýôË%ÌæXå³o^çwQÁ+—ìh½T¬Aõˆ¬G&"p¨ €è#ù}]£Qªá Þy±}/ø W„g(¢œÙ;¼Ë;ûwèþE¹ØÎ¢v€” dqãÌy¢½WòDä,è=§Ix†¨4ÇL¥­cÙšd°b HÆÓ¼«“Šó«)c?ο‰î.!Ö1võbVa¶í5i˱/Õô@T_¬0ˆIò+OZ©e@ ÒŠ…¿'Ì'?}‚øÔ ÍR¢žy•YG®°Áó£N)̤Û&ÆØäA¼ÓˆŒ·"TQ´Š1]C¹s•sø*%AZ}߈‡ªÇ5üÇßINI$Žá­ü½zñF=msëu`˜:$±;%‰ÿ?3˜%NU´>ZM‘\ñˆ*çV8蜧B¨L=·ú-Ìœüòª‡·¸7.ÔE4 €®YZêNº« ÂL¤`‹ÐÈÚÚô>ÃàíE\,Äó_E§ Ùº]þ²ü,æMÚðœ¾z[Œüî@˜Ã6ev•pʱÿQvGÿàj„·:ÞB$ú¸q¨kÑ.Sž¡ ¸KAÉJç%,[–>ä#òs#¸EgªƒeƒO‚âsåcN›á÷ŠD>«y×m6N‹ºgO³Àœ6Å›—+ðEëÍ Ã:êקúƒäßU“R)Ý «K¯sßÂ|ä2 ÷#ÿ}º°ûSÖšÕ‚ÕýâkÚ›M`\†‡ƒBa\KN‰ºÇßg÷H#³Âr­Ôâ«ooöØQZ*¹!\a"Üî’3’Ge¯W­rÈìyÇ a X€H¥ŠñÙ³ŸÞrf€ s×XT!%CU,s,˜A€»6«ñm^÷\È@ãô³ ‡ëù:Z>;'º6Ã5Yhsh­pByÉciÍ$·ˆž Â’*÷¿úÏa%|ýíÊÈ&bFÞ@¯ï¢¿Öã©.*—Ø¿47Q#vÂí_y88¯rúšr ‰Ü¹À<ÞÂr»£»5;–²hEÆÚ RÕòuf.(R£æç6Ù?ãÞËù†Âk£¢„÷·§ÐQ™÷j,™XŒ÷éÐS20Öüì@â¦~‚*f&AÌù„+Ý=m¼Ù9b3…—= p"㟾=-hc$ÝÂÒ²õŒnE™’ÊÊ…–©t¿JÖ "R*ÊÊ=lE¹Œ~)‘L˜Wã(¨^F áÆm.†%9Dl­l¦0i†qp`ô¯³6êÒ ee2£ïówœq½€%©>M¬—‚î-:Í“eýxKà6êT†ýžÏŠVÒå{’©÷jK@‘ dZ[ò|’Öx¡Y‡°i/Õc1Øf9®8–ÅÆ˜=!îjkßY+_ÌšîªCÜ·¿«ñd°ïÃøÞÿ=Åžm6ü©ÈÚ4‘¶À€B&ßx~af®ØÆ¶q¹ÞöL5<z IJˆ’KÈ\¶¨ÄSØ×ÍÌ΀6gâø:i$1ë ¿×¯1¾nä¾!¢‚YqûŒhnÏõs–%·‹ƒOâU×ûqÒrŠvCϺuO>#] {Žô“æ¾÷Nç¢Yx‚ÇÞ‹;q—òÔQÓ¤Ñ@Òñ³þÙÿp‹"ïÐõf˜îAâ’”0H¼)Ü×fhÁß$YwžBæöT{kö P5¤$ʶ“:'çÅ@m't«®®:Ý­ƒViFäÜ©ù:·‘µS? óÌò‡‚ª^vQ¦ÄòeA^ »b7ïÌØâu~B¾ˆ.v“„² Qè<õ×#îüº!$DqÃ?ª“l×#î?àú}Û;gìÂ7Mt§ 4=)ÑŒy0A:Lœº˜[¯•Ê5ÕjEͧJîX‘k-ëàÄ~f¹ßÖ!m›o'ÃUœ9äG©¢í`ÆsP)™ŸÃEÅCxqcÍG™¥N£Û·oÔÔêrþ9RÆkgföâòìŸT‚¿6÷õ\šb›“R^M £æ+N°"œîñ¼Ô*H^¹|¢®„ÌÀÖçV²ì#uOº•'a@gÖ‡Q{1s†¢Àƒ‰Áx-I‰P¼ŽöcòÕ7!œ¡ ›+91ÑÒå‚ÞÚýÈ@_ã®à­?ÑÇ‚”Ìd`Ÿý»ß‹JCû÷5Îkb! H¼ËÈšw묢CÅZŽèFÎÂÊ…IKOmí­ø7™ˆ²Œ¨M‡­­}Î!ETï¶ŠGŽaSt€Úèsw*£B›vI·c§f«¼¡Ùs°*12„PO˜‹}Æ¡'“Âs§x# „®PŽùMMx&&"\rÇh(NÐý>Ì*@€Ê¡8QÍ!¸³¿aòqÅD!<ÿp¾ö›§ûE|oÊ/«${PÂ9S­¹?|!I/̽u­å'?ÃÛÎ%KZ E†iá¼ûA ž{p²³(~cW4°Ï@6°ú4 à¬É1š‰WÕ#ÍÎx/Ã?Fë½½f¯X û5?~mo´CP¾ð6#-ð^í>æ2 é^\ÒBš€ô+˜ÖÔXlQ'ÿrö³Å ì„† Iw1·ù£V’h§SªôdZn%ÙÍëÕmìN ºÞí Øz›²ÁÂ_B‚>\·Þ©Ð3£N Z\a'²Y ] ‡™Ý—`QlõÝ… Ð5/½vø­eS4Eжnò±´Ùâ.hÜ!—&]+¥È îp{ã¾Q¤€Ä1uñ@qbê,ãÉ~©Z JFRZhÉáe¼ŒDÁ3¤*º,¬ÈíÂÖ ÁÀnɯYÌâ’™å>ùa?‰1¡N/Xd {,Üù…Ÿÿ®¤fRŠV„Ço4¼¡ ³!/‡ìG²ŠTÅz2q¶J©¯$~–J^m& /Hð»a© »GRÓ§µM/¾² q˜¢[Õ!4Ó¥½S «c!‡ÍÙñ}¢ôvÇN¡_«°ËµUй‹ÿ}¶aÚ°d0û ëlŽ9kgn‘×dcm!ís û$U†:…Ó'=>2JçêÈø¬õ!ìy“¼ +r½ê•r[€fžû[]º¡:A;u¥ÿ)²›¼`—µÁó">#èw  L9†vJ1Îø¦×è¾Ñé [çÑ4¼ËŠ‘Úl Ìoâ¦AAû‰ ˜qwbVÌÖJ}7‹öj=¹‚í%;X؃ Ðò$þ!vÈÖþÄåÊ€A²ýv¶üoC뀠7µn._ÒȈ±ELB5´¢2Õ. Ë&¦óÁï•SøIHÜñ‡t*¸žQTn²fXˆ"Ò2f-G@-¢ëŒßÀ…d3zè‰æ C›Äâë-9¼Õn·‡ñ R¥Pa}´l—1P×· ÔŸÂþðÏ­HtPAgÂ6~3àÊ!Á pni³ÈD¡‹ø=;ù1ó‹± ›èii¸/ajZÝï:ý}PG «ïÙk!„j <°P¼y°|²Ùðe“6ÎÞg— AãKsWð}¸>°†US±„—ìiÊ"ôÓ êÓ1›e,÷ˆ—5ñÁu®Ÿ6ùlòÅ.ÜJF³ó¥R¹Å…cÚ¢Ý*÷8ëI±P²úËW/'ç¾J¼jï—Ÿ ‘>Æ\ðÆh4U Vc>.L„v_Ïùî… Ïz3?6Ö¹5ŒèƒÉ,||®Oç4ª©±ÅD’¾j‡ÚÓ!âÜ3v>SÇØëÓ]*ÚÏŽ'“À&ßYqÖi)FÈä”M.PŽðÝ|o]Àú‘(T9è,Ùm.§‚¿«Fn—ÉÄ®c‘ª¨KŠº/›=8=D0*6^ì #:;ߪx‚ºd$rK¢ÿ>œº"²}«C6M}Êû¤U°3¤»Ò²Æo˜#H°‰O=¢‚Âç@ÿŽ4ëäá"ÛE©–@°ÐëôÅÙD´î¢‚LhƺJ÷s»6á#íŸËJ ãæäCƒ„ˆh€}#Nw”ÖžªYwÜñÑ4<Ó¾Æ$ãy¦à #qCD‡è˜ïƒ‰á­0&p[Û–@ú»¥×?àÇËwˆífyò;~rSÔ¹Ï\%P~áN}o€¦žº˜NâƲùê|:¶] ÇþDa¾XoÆî»ñ)YOÛÍXw¯cB̾ziÕ(1·ŒßCá$4tu»õžĪöJOûÌÖ&»çògâ™ïèŒ]íl¼TÛH|€åâµÐaüÅ;ÇB–cTÙbe¦cl.×Rû!Q™ËeŸÉøó*êõr3¶€ˆìæŽwûâp3öeКéX áÓÞ'²ï²¤u©ùô³Ëšuˆ¾GÍ/ïîŽ\•¥»ý´,k¶L´)Sb"8…ô[F"Z/Ìšž}5k|òKô5lƒVI¤pÓNß×’æÝœ» ¹©—~Êyô$Žžë9²³ãÞ¨ ÖÜ·+¡•ÞÙÓJÖ`¾Tk"Ý ô2ñmý©µui~|÷OŒÐ_tÿ7<ª÷™d ŸÐ»jÊÊž°¾igÉ¡™:2%Ѿ©èÅ‹Ñã÷ð©ÂÀæ¨,2f9 TW’ètHÜÍnó«ešØª¨î†o JN1¢þ’¨»úç‰LG´ÓtJ#VÖ„}†ÂŸëHÉ«^- ÿ@ '#ª >芜R©¥rùÞ‚óÕ“^“D{±ÜMñXøƒÁÒŽc–¼£ºð‚³ˆCÛ}ÅxšìÄr_GµZ=ã¢ÿ%)_ ¹wP?RÝLHAA^²Ó jŸ¢:ÞÉ«GÕ¤+…Ûß–­gðK@Ìß$ æÂqiÈp°²ÖˆÙ®»Aaþõ¿÷Q$žeXg@„iÈ#«ÝMü$ºÃeY~ùS¡²$ Lrÿ3|º?jhR~¸ôè…½yŠÿl¡W7Ù7ž7äJöÕ¸`ÚÉîWPÒvƒ Ììâö3-̓ÍôÖ³<iI "2iÚÅŸ“:çÃÏo/ Ôb`äaKЄږÒ[Ѓ±mšIXE+Ü¿iýä9ÔWL²ÿ^—.ð—•µ¦4ÄÙ^Hw ò £­¥( •Ú¹/ å,Ý”¢Ì½è ¯“XÆC»)ïŠ27ÍœÅÇóãÂȸExYl•ŽRG­ÊìáXÊ|ôã{IKÄW̓À¾–¥R÷Э‰‹˜™œÕÇ$»hrƒß®EµvÌ_ÚWpêáµ}d8>*wYŽËI·J[Ÿ.UëÄÄØ°Ö/cµ_¸ÉˉÝÃ_§r¾v)ñÐŒ#½5•:ôC")‰°ô/ÔÈœ*h©ka -FÕ\Nì0-¥õùõ,¯U0Úúº@2œdâj0]Å 36JÈcåöy·gØau=Ùy²â c¿$¹T¡[¿¸â¹T…ÛEF]ÿ<Jÿÿ}ûë˜|`!Ù|H$¸’kƒþÐmLíQ¶| å—ÖcOæ"¤8F7ÀžDMÎzjÁXˆ¢ÅÆôÿQÕÕ/·çÌe3jráG´Œ=(éÍC5…­7 œqÄÔÈJݱNÌ»wô!4_—º«ó˺èÏJïºwÿI"ûcn‰W7?E=…óY+º–F~ÀÕ¯7$èÂõÎæ„ú 3…ˆ«ü²‚£¿t†ª`D­IQyÊé»Êõ ‘Ó–_¡»WlC%?Í ÷#|óÑ•ºÐ`x[Àõ8/OµQÜŠ2ïa&К2º K•hw¦É[.øa&”³ý¥ÂH ,£Èpg/vOJ•˜ºu+ºj¢íšÊhFYüô-%äXI^ŠÝB‡"óÐõ’¹ÂŸÿ"y,7çÄûÃ:»Ÿ97ac»ñBD‰ó—ïþ"x!¶v¹S“¶ ¸)æFð³îÍ¡¦këm<¹_Ð:xïötú[jÈð䙯uÓWúyŠr°2Ä¿ÑÐõÜ|–@ ˆåá ¿SiêÃFŠCéGÔê©j Ηf-yR¾Ýé Þ”JÝÖ÷½ÔmCåòŒnó¢4ÍÓŒן?¥»‹²b¿I/2Ü®(l“ ÀÐèrOñ¬|OzCÛ,žÁB$n31 bEúmgŒXùPñî"ÏA ¸± ¦“°Åu#;]A)¥Ô*¼š,ý#$ÙÔŒÔaòaã[{ >+÷ˆÁX uÄ©¹8YÓP@v:5¿ÉÚñÅ5 OÊF#-jñ{‹§(py‰¯VæŽòA"ÙRÂqÉòVʈ{¼–­¾aŸ¯UÓŠ'ƒ`Á[(Æ–7ø6[½­k’Í–B-Ë÷}ƒ-Éà)¦Ýæúaxë°ä¹ó¯[7LK)¬û²b$Ê;«‘6£9®ÙTN¯la€Ò5ø^ýÔªÀò´x‰ù(_+.µm ìÖä’Já@ž¤3èÏÕ-œÜunÔaˆ·_y’ˆ~wU}(xÞ<éÓ”yùž:†!°t¥<ÕµGtsϾaùd‰R!ŠŒÅ*¾²GÅn}k<Ë_Ec €/‰e’UP«‹KG{]úG„pR|Vþ´K]zÕ¼Þ~®à¶B«”îß)v9|cl˜þõ#Ù=›-+îð—F%=hT}ÏÅÅFꕦ$(˜Š‰ô'Êœ¨¦m+¸ˆÅhÒ *|ÂàB°3Îé7õÃ**ÎçyšµôŠö—;[û_ÜŽ§£uÉŠ-ï/دjßdØÐæ6¾!² Q¼D]+V±ê.]$£ l@‡L·¹9zN…£Øb¦#fã^àòÂõh#îXËìðw® D{L‰´*Æž\¼ª½@Ǩ³8FæÀN ý2Ã#™m/Õ®ø@¸]”ž~Bk ‚Ð;ˆY§”´;RN‹,G “é]3ôÌ[%Ä…âêh,“oWâûÚ7ù‚„ë‰ç]»4À]ã?º/ÔŸYˆ½µú$š/ªcYÉ{ó©´Vñca@~6Wd²‹à Ddcà{Q Ç }ß§F²9#ehˆ¦‡¡³ ò"Ð*“Ú­Eih”Ø7˜ ûØÚœªƒ¾§FÓ9@¤é£^.ÛìÇzT äÚ§\-Ù-ѵ£a޹zU¢’H±)ƒÕß0ÖÇ+ÌògE€ûzZ9ëº(ôúèâÔx,,ªH£.»Í\¢úÃ${M£¬¤ãÇíõÑ—¢.,T@è_§9Êó^Fi2”+U×óWåâó,µáJdfÿkðþ„úÂévˆ`ôæV; œ³ÖPâØë ~°šSR•BÄÉÐ<,½|瀛5+&¨pûb-‚ù¤⬠ˤ' $hç¤øl¡VâC1xS\øÝ *…3ʪؿ[«ì­vy êç"Ûuû¤H˜Ï‹ì,œÆù¯Å$+{&‘!kfÿ_ÙSØÜ­¨ŰÓÁ÷÷mïh'ÃWþŽ¿2BÌ©ýÅ9Q¤,vŠбî‘)±#ZPÀv ¶£MI°ª:™‡<ž×?ô|KéµvƒqÜ£líÈ3œ¹;ÕòO!Å'“ü»ëm«•¤9µ.ë«üâDçs^‘厙5ÇF˜ß ’êï ÕóL0úÍ3  ù0?ˆ!c hx5“ÙéQH Àð/êÛU@Ú4™HÛ¡Y¼y¶üþ‡Q©Û \Ÿ§g¼C„Nj£¾Gù²ÁgÝM–…®êÚlj1K!£ú­ßׄ^öQ+×n‰Ã+ whùXÜ8P›KRZ÷,#ŽÄ§ÇMŠ›¶Ôúú‘lysòKàÚÞ½èè¾:ÐÆtË ©Æåx§@[Œþ$“÷½qúrr21¢ì*O’3(´nÒŸº2ø %ê «j}qИ\G=©,Þ•ýPöêú Š‹ÒÐ#šë¤g­Û*ÖJÀ†­/ÑDvãÝô5«Ú{C+yÔÐÊÐÕö£ M^Óƒ‘Lõ¼¹¹Ù¿JLªt³ófÛY­6úqêE·ü¢+nÏW"µ8¼“T¨$ÄÑõíZlPÏ“!s´ß•gìGfA¨Ûîñ´˜2€ûèLox‡É÷^=¨ÓDðq´"Å*­ÿ/[æí‰Rì~'Üsðã ‚¸ë‚fÖÃJÛì6tA±,Þož^ i4§áRÄhi0ØyTuLÏNž æðЮ%1VG¹ÕüÎgþ‹GiT"•¦Ø~@ÛÊ×}úø 'ðKˆ‘h¢¥Vit;éÿDðË©&ª]P°Çkó”þL;XÔÜ?iD–u1±œòäDr3SÌnÒXêr.7ás´ô 2›/mAP› 4Á:f(VÐüÿ}»ã_G—êXK/Ì~~@²ÏíÖ+ 9àK[+Q©#+OÛEÛv¾—Q²÷]8 Ql[ž ¨dB ÏÑ_‹Í!S2—0ø¶Z¿ N\ÓÖÚOj†N|®+Qjœ Û|Œ‡ ¢ÎµŒl—#è»ãø°0U}n9îžÍ–°j5N×4âA|á“xÌ uF r‚‰¹c;íõ-Ìê¿?,Wõ ì¯’ãâ [6Ì¡'“e±/Ûî€]’)¬âƒÿ -ÛBŽÁëH܇l…"v¡Z®ç¡GpÄ͉V¯šË7R@v_’0¦"^ãíV³Ì+ÞÊ›Ñ×tîdt­÷ŸÃ•ò8-P)éL4b@dKU*^3ôšØ·ÊÈ»øS7'cªº0Ûó„ Bŧrµ¨ñ6­¢Á7»LIØ@RøÆùWÊ-jîàÙYèø•Ÿ ο±vwþÀ5.¶$§Ÿm<ÿç¢|µ<ÝÔKàó°6;â…yAƒÑÚð›zñõ ’þœ¿¹ù'=«nÕ6;Mz3}çùMlÂ:@ÉV¯î°ã‰ÞÅßSÈÊÓ|Ü$›u`«1ø8=qûJ "”às¡äþ ´¤^´™áÑ^ó„͇™Y¿Ñëlp>ÕP#®Á¬pKí³B iì–&èó>ŠÝ÷žËêE!C…Ù-^~71œ®g$òë5d¾fËëÌRO€yû½6ž¦S’·(R#£ˆÃF[üÒl˜QÔö©:û~„†WœºõNñ†œ»^“^Ulí–±¾«ÍÝ®•ºŠžíãô–¥jD–ßÛ·¾NÍ?K˜ôÖ;ÕGýu(¹Í$A(8ÌÆ·ÿ!s dýua|lÍ>mUõNì[Áf½„ÔNPðbW¦_ž^Ö4ªêݤën:6´J gçpÁ0W¬Lv—âu)™ÞÞ…QÞ8¢ÆAj“L²\ºøèõÓÁç B¤ü F2åÏŒâ7YU’¤Á8<#( Ó¿S{þŽ|“˜µë/%,à=-øïAÞüÿ>ÆDéG©%›Ýù£¿3;íëiœ­åj6§iÖ¡Ô/•O š‘_³ ü®ÞyåfÃsuoÈf9]쨜öøZŒz6ÀÝø Ò¢ý[•YÚiCeö/d[Ð~ËҌ\‘÷¶bÌh?(wí,›'Äk!RY‹"¢C9ÍdÅæ “I“”€.ƒ\>Z^Lûì|ÚcŠÝ·—›»žW+‹húþüÔüé¤Õ5³ý ‡¨jú£ü¶VZ–1ǾßÔg²2£¿0ï]ï`ܱ‘Û|F'D¤¸m0¾"ÚÐÖt²•à‚&Ε§CˆäÖ»^ƒ$õ”ß"Úê¥Dûù1§BU.’:u¸VCiw345Ãɼã€xBr.7í0ïíÌRûW/`ª†Ä*hX±¯ù©ºKš°dÿ-0þ“âɆÊ'©ÅË;»ª¤GuÔ߉£ßJ‡tÌ5G\á3ïnÛG£ @G¶Õ½¤Gät<< ëŽBN=r£Ç«ð:ÀóáÕzç8Åísj “ ào§ñQ›½§3ëH gâÓ©~tqEÙÇòjµ²J´„d\Yºåû˜ØwâÕª«’;­Z4Jå´‰Qº:0×·•¯‡AGQbP½ÎŠ,Å—bÙ[–êi$7ÂËIúmž‘cH6ª¯ ½Ü˜+ˆ/wƇèz'3¿Ù’H|(Îß³>ðÌ(êqðùvó˜Î¶½:Ñ¥oúôcíw‡æ³îïkÿXµØ0Ǩr«&[õ3kù½’Óhæ.6»Nô[ÓÕ¶Pà6.vcEþÌÝr8SyVr׋ù½¬Ùx…cH`›+P®šÓ—ÐÝAßÇ ×ò:œ½b'Ì{hÐ2¿ä ‰ÛHéïuÿ^ѤTbìÍù|o0nIjÞå“["{Í&/5£v}¿P̹ÆÈøün69QЍÜSÎfñ¼¼àayßÐ×_véNO8iqÐÿ|"cØãD ∯ýb{(?Ï:êlP.«?’á 9„ÚÊtJù\„7C³ó+-»òŒŸƒÊÜÊIQnå~STZ{D/AÌFPü,ë0}CAšM_þsÄ»Z5*__š¿Niñe*\†f`Õïávn¡§4±>¤vñ19 \ÀÞ”8½ˆÂ¦ ñ‹ADѵëXÉõý/öéOpèi†ý,ÿDƒ JjÓz¬øÊz\¦=6•Þ1ðuïfÁ×"+Ùƒ³€¸lKõ—¿ÀƒÍ`EfeÝ W^Ñoœž…ê-S Ž1tû;êU´ÒoØ"åÒŸ<äË«wEªªHäF|Ù¡h þˆÝ‘`uL¥®{èŠH­B&&¯ld«ŒNÛI4‡‘ÀZ½Â¶e¼kÏèÔÜ[KÊbüjOÝEq5'qÿ?(‘ ™O(°'4*ƆœÓŠÃXÑæ•Z_E°FïÓŸæ£piÀN½æV†_þÂketaþØ ¡=bäG°… ¶ª¹°/‚¡ OéÃø‰µ‡]ðn}a(¶O#bj ? ³É¹‹ØW@»×(UÏJp ¾>s!XŦkRW‚Bf_ðoóaÎÞ?׳ˆN4Æå—zP"n›¦røJÒñ5RØC˜€Ôëkî(‹Ð5ó@P£$ÍÆA*­Ír$ŽË\š¨¨½ãM!,®ú‚$¨òß¶ê?æÆÑ@3Îá±Aƒ'Cš €;8ïs 5=Wà® á1Ã]]éä‹[ã¸îõ¯©pMá=$|û•Q}ß,¬¾¡0çžÃßFqú›k:rŸd±8j-ê‹=Fï• lhŠ|UìrÚ{¨ð Âod‚Êû›’ Ü;ëOÆ’Ì~l} %X„œ™h×Ó•9ƬõB¦;]ÊU#$\åâÀ ä]<ïým6;}gv€ÞwÞÿm~}½“hìÝœS÷ÔLVÜYlÜçaøÀ~<”‹c›=Í;~»‘AÑOÎaÆæ$[—¯C¡ÜÔ Z¹yfBd†O¼ž¿‰þÊ\Ò-ÂÌîã@—½µÐ¸¤ç‹+M°ËÓC–ú™]Ú¿6ÕÈå”yš1E™Å|"Ò¦ÀòOž™MÔÌô¹ùË÷©Ôí^—ÓÅ:®Œl; ¡áà‚ÛÓºMåÐæßv‚|Yž|~Í î~1 ņ;4‚ˆ>u-ßc—Š;Ê‹w `3Ä»lŽJøX¥EY@´vü~¶e 2tvHèB0Ôf ¡æ¨²qðs&¨Áš€¨¼qw\ï9Í és|÷ðñ¨Ù@Hц½(ËßÄ"‚_ás®H¤´ã±CD–}޼A½?L{ŽWëööœ+ý²ºG–Ò²œ‡³ÄY•g*¹õlòTe'ØR`Œc [Œ6á–ˆ2&T²eºéA³,Š{tªÉ•ÏO¦·ßô>D½‡¬¶y´$ã!X”Ú9ào™f–t„ðö=|RùúE¿M¨/íãÐòty½ÿS'ä0è6;Z¡¨.í›|v‹l €çrÒä×DÌ‘²¤'î.“&¼€ç)o–uo~ùp7Ú‘ƒ¿}¹·^‚ÖcëP^sþã3xC0ÒaH›¤ì¬?Uf”K%–Ãz¹æ{"U³EoÐ*‘7†T¸i®$0Àr„Ò]ÛÜû/xï”$üPD¦1…Ætúê ù·¨ÓN{qmü° &ñl~ögÓx’vŸ w’‰jçP¦Bx‰ÁzoZ\Ÿk &ƒ£¯hÂoãÚ¿¥QÂ~+´Jní´Yr®¿¥„ÝëëÆO Qºž™3³šM™¥ÞD8Á;ö•#®Ë6Ä¡{CoϯÔWСÝöÄÕJô49öŽTµ¼&§ = ‹¿å¿ÿG½°qÓ©˜ªÝxÖì<[ÿX*—¹ªw±tT“o7«Xé8¾ÖjT_  êsî”&·Áþ_«¿@«&ßE5à‰¬S§§v3¯)ì gw4C1 •îüң̹6%è0™Šª«Ö´zÄKA8–5Ù nÌ ³y©ú±€5mÊÎÛŒNíBãÑ¿«bg‚†¹6Pc?Ï0ï],ìAT»ÃîÙá.¯;Î"è1§†´Íxtʯd`¯‚àÆwc­ÜÛ®tÞ#è×­›1£4Î@`ë4:O?ß/Mý ñt$6“ጠìÊ“EÿZGŽ¬Î (-J ap¶ˆ­÷Ë~÷*Å^‰§ÜÃû¼M9o‘ÊqT#ÙÑp,H"ÖúŸr3¬>Ø”1pg#=‰7?Ù²òêB±ðÿ=ÒŽˆògL`¡yÅçý$ÛF¸( %9@â› ÛßÝøä-`ôUZéÖwàŒÙì‚IL ÷÷„è2YбNï÷÷íâvø[(Üi„ÇÃ…!‘“€{…ÀGB:íáUŸî¦•9Ò\=Y„%Þ£U¿'Z‡ŽXusÙuÜÕ.< øÐ]Ëgä¨J†ã~­!L¾*,41‰ì8J3ëÌ#è`×»±7AC¨Y1Y׬_\[o6ˆD°£ØaX× ˜‹± @ž ĘîÉ›a|„ü„.ÃZ‰–5¥”NõòŠWŒ æàYjœ;ׯðJˆ÷¨Ä{ó•¹)öÆ¡­V%=ÜéãÏ`ÌWáoøbêdå#­TG¤,rïÒ3ä»?ÂëLcÔÝåÔPÿ;×£'}wfìææûh;*H±jH†-ôyÓèH×h±Ÿ“Ö0Ú;Â(}Ð&ˆf%mö‰bûT&»ýÊèÇhavgÌìÇËŽ€.â—szÕ¯¬1/'v½æJÞÉFI½“ùÌ•AlÝ^UN=ÊõÿA)n•š7¦êï½·A*ÿ^²°ìCž°j’+öػ|¬"LrJg«Q}TíÛ»ZR>¼÷iW^€ži$ä 6T‚óœ Q?HÛwÚ£ÛA‹wà?uä® ˆˆga Gö-*½ÚGÑt>øÿVêVB¥3¡n¢”´ÝÔ“”‡áOl·)Ò”JÝofà‚)¦ƒò™Åá=˜Þ!w7ÇAóÑ*N<ÂA¯ahÅÖ®yKlÇ‹31Nƒ´†3n‰þ•a&öö¢E²â}ôåpQ£dT½ESÍ›\[Ìiǽ¶UK¯]’ ƒˆë½rÔ,d€š+s…)i½·q Œª>Ìž5ïMÙ'S‰Y-{ÆßsˆGÃo €‰²¥€§F— éIúáªæ 4Øþƒ˜át²ÛAÙ°åÒùý#u'+(3rNáŸñ?²…JÓò,"ÆBÁ-3?wòj]ÝtWc¥ÕòQŠlÕâ‡Úu‰ÅLñ©&œ·œrä…‘/ÎY-¿°Ý@cš †ˆ†þi`¨›×ŽIŠdŒÙUÇ+I»»L&ÁÙm¥þš»lËæËœe½”ízÊFe«ƒY㦽pÅy’ n'éÊ—¡ ¡óâK›ç6`Ø\¸¼‰Nd‹XÖjœÏ:È¥EÁE´fœÏ³¹=D¤ô®5i‘©%­œÈ8u-¥vcü¸æZëŸ#Q¨6þ@èö Ä^³¾o¼{ò<ÒuÒ'‡¨l¸¨F’²B êß®€›Ÿ@óvDmš0±edeHšÊNmq¹Ž‡Ó Ê+d…I·DûxNÄ©HA˜Œé½×U¿¾Åî)ª-÷WœñpÚ ¶Ð¾êÅq6á²FåpT/¡œ{*¦»™G¦‰ÓƒgYºV!¯—rÊ]ÂŽÖ&ÆçÌÛE¯åzÙÕ4ülh…–]g£*³ý›ql H¢ °æNˆ@ŒצÅc§D?¥„UGñb¿Fj²‹ ÚÚ¬ÇVü,”ñ¬{œõ¦Oá9Œ€ºÕàp™±8˜j]b7úà‚ÿL~]þ+´Ûs‰ŠWݼöñÑð¿C¢—¡Í¬ØjïžþñöDè"«â ;Ì*ëëÞCpõ¼„°­e¶‡Ä«Ztí(1™«!ì’߃YëÚúØÕ‡˜Ú`JÆ“f:’ŵÛ%’®—ÈêÊ,°úd¿·Q{ùÑF|kwæÃØV9\š¡’5Ù]eH<×Ö~¬é˜KC/ý‰œÙØmçÁ•t2Emçàá)\ãd?¸x@#› ‹)»FÖ„Q-÷òOG8ó#«r\iþÂîº5tÄk†Š‹d›@Óïœ7grB¸)¿Ò;€RSa Ρ°Xë[Hn¾;©Ëƒ¬Áè.DÆD<ø™‚؃,EØiÁyãÐ…gØJ/²:À„Ð3»ýùªš²Îþ¯7’©Ùçs4–'h^C’Î]Ùcœ9å09)ó¡‹1Ù,¼ôa‡«Xæåæ ñ0þd¤ß0‚Òxó{hо‹âºDü; Ž%Y wö 0ú¾\Û/b›ÓS0V·ç¤¦²¸ôñµõ¨gçòÅ"¹oeŸøìÖP”_‰Ì¾FÐZ:—â{v±®¬‘,¿ìD¿B{ý»í‡EgÄ ê=+ïìá)‚ÚHótLHßHÛŒñVô•·¾ª N¥ÙÔòÄKËlÔRÔ×@|q S18°UYóé'-õÂ7‹ eDnrwxÆ«³èÒiÉò™O–uËp„Ù´k"Ŭк&ÍjFe nŽ\ó¤³]ŒCGgZüa‚–ÍøÔYñ×¥žTGŸ^èþ½“»‡šÝ"xˆp\R¯mmÈÉ !Hˆþköó¬vÂÅ~HJlVºv¸j¦‰TþR¸Š â?pyQR´²@d°¦Vɰ¡> É0¾XD2pÅFäèfëº{JÑ~¶>£Jé@ ò䘙Uöß‘n´ó¯mã4 –N»°ñëW<Ô…Øˆã¥ÆºZQìÃãD­âC3 *{O·ÇpOþ¡gêB¦¿rívX¯)~ûÉipÃHÏ‚Û.ý¿¯4Ĭ ͽtùÆÜgÊ¥ciX£ªqça:"¶´zûâ4J6Îë‡hpÈ3›¤íßAÎ}êlnÓ_¨[+e°?JHñEØŸ}Žo) 0»C‹˜®ËN[ ²øÜø0rìJ©y©k«Ô7S‡'1I°—ó¼Âìõ˜¹Å4ðQ œ%‚Þ®Z¯ñäYг {£7‚EeªSÚ‰œ$Z†²¤¥<¿Î’©[jyLYßPiØŽpYS„XëÑMýbm×NWâUê3 äø·z¡jv,`‚˜*9j¤\M—ïÇh#_ŸÔ$²ìÕªênìÀÔÂn±}j–'RíBdM̈üPžó× )Ö{ëe/&Íø2dõBË;ùpzmÔ œ­rJ> ë¿ïoˆl±*P8–¥†vGæøG*²K¹LÝÿÏ‘o‚úASB‡ûé]ÆÜŸ V—=&ÊÖ†£„‹ºæàqHyç«bâ¦õ+)&_ô骸‡ÆeÑœޝWWÕµß(!ê™—Ù„±^§5Aÿcöæ[”|sš-jì=…Póõ+´t=l<±˜^N,ô;C_Öµä9š‡e]='=%7Åò¾›ížžAb@Õòžá_L/´2ct¢³c ]|Š»<Òæa`ßE¡øþEØâÁ÷Ö†Žçd^‚ è2£èP·‘·ï?nnMûjÛ†›ð E˜û ÞP „·W¿êϹ/Ïщ®óx¤R^æSG";•óK©Û F}ÊJå;h˜úJKÏ1ê©g.¹­‘¬F"]Õפ^*¬6p9×k`%™°LVU¤€B,Fz83ÆZ/ðåú`ókŸ=QòÀÈ$rRù_9"‰{ æ%?% Ù-:‚¾šËŠ.ÖxŠîó8©þdg!¯…¾[ÙÄút Êè®ï•˜È4°!§‘M“@ÿ7b'(Å¥‹“Š¢žÎ*wè¡¡bÁqÆyȦ{;"9ú¤û:Œ¥Èþ=%66³€÷¯TwS-GÏFzí0š=f?«¶Æ›,èBᾯ]«ktÙ-i I}P.ìì•6Ÿ"ê…Vž¹,×}ôæÛ^î <“‚9ß¾õ2|Ïì‡ÀÖr9iÖÈú²F8EÎï6ÙÔŒií E‹SvU !ů/V…ZyÕ o‰$|xÀÝ[Ó»^% ïûÍX'À؃pïÑìðmû-âþI÷‰Ã™Ï& _ñÝFGó g•z7ôýÉÿd UBBsa½H·S+¦æf ¦h_²ä p®'ڎƼdÇÓwÇ}=–7º.Dø6º²+yw|0¢‹2Õüfµ¯êõJ±Ý1å!ÿ?–Švýɼ±ä,Û‡À; M)”¨X£“×ä¢ñ[ QŒoÂdûÊŸÖ†?Á+ÑHVÙÑÞ·KX”…ÊT†jà²áж[©ùÉE¹»p;䂉ou¯]H9…Ä®ºØ$¶f†Î¤  {èßþ’æ§ö!«©1¬ †ß×ÉDä‚5Ó‡ÄϨ’-¼$‘»_wùý÷™®ú¹~ K±ŒÁ„—*àæ9¤‹ƒýù‚Óöê0öäÞÔ  Ñ´¿€@îµ³èœÁ‚åp™A4dSöY#¬d=w·ë4gØ×îKW^œÈ€ž ©§q±äÔ§ó ¶±UðãM‰DÐAY]–nÊ$üÆ3ãQLŒ+Ù³w¯Á94Óæ²â³Wò=X`²x±ßÖäï;ª®äÙ36¶âŠ¿³‹Lâ‡{út§ºÌÝsÍõ£» ©·|NÕ%ðêeBäŽìŒNç•dRªG$EÌEsE ˜¯Ó ûÞºæÅÌKz!€`Òë ÇS¦dßÀ]•o9ÄòoeS;¼á~šÀCü‚ÿ|R6nP S³ÖÙDŒ\ý°òÁònà %ûù/ÛµhVÁ1}l4@J ‹-E±Ÿ†Xà~wÃ0Ø9A ßèÐl¼¹ Þ©¸#$Ì\fš¯fûÅF¼W9• ¡ÞÊäé)v{4)G‰Zõ`ôi]šfƒÔ{Ì"êMIDíI¸†ª+ NL[L&/V‰¼ÈïBéô-@OA§Šà$ÄÆk¥7,õm¤tÞ߉þ> hŽ<¨6¿ul.Í”É9;f ³Å“UòŽöd¹ É?Ð…¶¶eã…&.Ñ©Ñnº'ßUÉ”mß.šâ·ÙN.Ÿ 8ÚæŠ±qÂNì|h:˜ÜIE¼Ùób# Ñèrıâdшàz6iÈßõ<¨¶æ;4›"xÏ‘]SûÀ•ñÙª˜XB$ëQAÊ FÅÖ$ ´gG…nš(·=ôþŽæ”øƒ×Þ›ðpòʵÆ[§MåYPBd8¨ÇïÉé¯É¨¸qZ‹7X\÷wŨ]Òÿη Jޏ2âf!3>Ö‰£çôrb•nyQO0iìþ%§÷súóÍ2x®{+™ÉX€k ?‰¹Ž´€¾K%x;À·‡c}½ÖxI=¨AÂ/,É%³¢Eè½ÚÙ¬ñx.øOƒÈ±wùyE ?®£¢×|ÄŠ7gã{Ÿ%L»lûåø@CÁ>º×šnÃþi„J¦Ô÷qË-%lÄæ#™”̾P„Oöê¾ffŸTbq™Þò•ò°¾bZ@ŒwY”Ö¿`™æ]Í€1Ïa!@¥­§ç’¶äÒ|ÏK>Ä®òZs·b¹@ô§˜Ç¶W¾ýŒ²½žm»d‡ê ˜ëp_ò›¦°Sn#¨,dÆj<(A”^ÒcEþtçôO¼òƒÁ,J™Í¢ÍR×ùc3&h‹J9ª+‘ërö–3j;Ìž\CÝc•L—]Yþz]/a ÔI+°(Æ; R¢„·¤X<“> ñ#5K)›gÏ Œ >áé\rò¸ "¸fÁÁÄ©ÿ%®DB.ÄN=¿’'ø¼ÁxD‚zØá B*k3×øHÎä¡4íu·¼„Tv4U]•Á Ø z%6tOz ç_ÚÜC˜ÌÓ¦ˆ’®Á@CúOQ,í­*mÖ<ÔnßÞþ"—àÆRÜwèDÜ|ÝvJ0¢H¥nsçÛ8k±„J[Á›ÁÒQLuî»Ö{uŽuxÅÅ÷"aÂ|`h« üù¼½Id=]çr %“)°úu¾¶hòœ]ås|uÇÕ”Üvj‹.RäÑ£ 寠ÄU·Pµ}ÝÿB?;"½aµ²¸ºº]€ Ê ès±o'Kýe‹zmf]œÚ…Õô¾öÊ3D‹‡fH‰"an߬¦Ü•DWþˆ6Ór4ÖR©YÖãø{_o°Åöûz_o»f·ÖëöúÍßW±wíöÂÃöû@~ßl+ê÷Mý¿@óöï•ÁM›#±‘£Ö,àø"ìЊ¦a§›ˆJ:fï·¾wSrˆ@+óI­6"2â Ô1üRT¦…h%¤ì ÙÞ¯ 2fl¼ä“°]”-è{@4åžñ~ùsE†èe-‰³Ni‘Ö@¼Š`a ÛK<xC_^M-ç~"TŸÂ¡fæ.˜Úž¥õN¹Yã#:”Ø,Ußæ˜Â¼yj=y\ÈŠ]Ÿ¬e]f @ƒn„º=˜å=ÚÑlgAýìÞgó ƒ)±SÄ­¥‡–ç4ý›‰%B·?±„ øGJ×Àá4,¨™G ¿Šá-ÛºÊjk>ñæi,”Ãdª ôsIZûh ~Þ ÜÕwÓ8y1“SŸÉq û'ÌÁ)}¨l ¡e$½V –È ñ󫈑é [$® öI‹úGÓpL{»·Ä;–¢„nÙÇT<ˆE±¯Ð¡eûÌ8’åd?á`Ù5_K£³ (Ü Œ²c-ªazs½ïx¬(—^:f9Šzù³T˜]=ÍfQßg’¯^:% p‹W´6Ï+$ö%Ô¤G%¤þý>îQ9Y‚§Ù³Ò©— ® ()ZÁÈô|»9 ¿5Ài)‰z™èì8yV‚dòAĘ<ø“Ó†£™5rª%›ÿy—`˘®U¥G1ì+ŠƒBjDüGyJ0–€æ‡Ë(ŸVÌo‰ìϤ£=wa Æ©¸ý>EšùYÞ5—’Æû …p(íWCCüWy@h9›ƒäô;¶¶ØEðÙvÜØ¸4x˜.Üß­0í̧êÝÑ1‹eÉ ñ=†Á¤Ê÷[˜ 9l°UЪ?ê¬6žŒyhÍñM€üý•‡•ÿDiÜ9|ñ§ðÈÇøå¼‘¾²FíÁšŒ+"eàS5’$ä‹î „–ç°Ôà‹ª¹»žå=ïœ`2´]çòÂ)U·vŽÆØ‘œÅðB•5Ú±ºõ¢¡Ã¥ ¡¡kH_?¿XIÝîa×Ж†VÚùEËiñ¬kê÷ ¶=Ýz’b)ÿh.ŠD`ÿsÓ•F<ÍåKˆ>é–ÎÍ_užM YFª¢.Ø®!ÍNãµlLøÃ—jÒ$ ^äb_ùÁ;\Y J×áЇ.»þ¨d§½ÊßqN¢)_ø½™†’( ©’qP¤RùÞS‘y—íØHƒ¡“y8OgšÌDð@¦fPñBÍ?=’’Å‘M ‘«$lÆÒ3ØjB.EÁÀeæÝ¥ÃZb`+”£%Òeˆ«ù¤96,#ÛìÞ¤€Ä¡f*VCÒÎ;âž¶Rt?\KÐçOnk ¼/ÂæW‰P£ò¯™x^fßnµVná‡qáÐW°î¹¿)E̸ÿ$68Û•ab6¥zB®üë4.ìcCìÚAhM% faǰr•½lBá¼õ}$GPþ×n§ðí/ÇÔ»,{ÐÅù2ÙôËmc6Ni‘ðS¤oÁbâ>RŸ—] êŽbêì›ìÒÉTYw|†-*ìÛîI7¿ÃÔ«n @ñ0,Œ›HË5orlðÎ>Ê*æ –°Àƒv¶XŒò€)oP›¡Eò“½Ê&­‡‹k)›—á­Í¬G™ £R¨Yd%Lz¾ t&FÁ‚¤÷ówÿ_­;:€%¥'MtçÔEm%Ä_£©Ä›W/|ò­¦(j6‘7L(ì²bzWz»ØWH¢„8›vŽ!RPí«n¨hð̵_†ª~þm°m5óׯ¼o~Ùú²Pýµ™yßU¹qrÜgŒ'ô'r¬m;b‚ <_¾ƒÝð'›~l¼|å#W}fîaèÂe¾9r›žƒyANÜpLË-éõp«k^áL7<¿`Ï®ÄVƒ£”9[®™¨OÓáͼ¿m+4bWéЙ±c‹+í©Ç¥,aÐdï tvZ!ü|F%ã_'ÔÖ6!'î¶è¬;ªn›Ìƒê9Â1¡Õ^ZŒ€PQË‚qÈZ 7ÈÏRa„öÙEg¹r*)kÃ(ëpÏ¹ëŒææ? 37Û²Fv•BUµ›ŠôÙTæ; ‡ ¹ÇÇ!`Eý‘VR 9c1Ò˜:ÏF÷^GúáØOäðÀc<^(€¶z Ò+°Â‘À›åç ‘õJ«O~:›ª¼'\—2“ÑB$©ÊjŠÇº+βÂõŸ©Ìî,D¸ždäír­ÙMÙ7Ç·™Š8£\{FbíQUF’¼îÑOô¡oCž4²UÚŽ–ìm'F sBÜ!cÇØF n”Ò—‹à]Hk×9ünµR4Ö±au,Zžs®æþx—¦‰;p{º˜F>¦ŸCÝ5)ábš®ÃH˜oþ™=÷Ö1.a¥Otn‘p‚Ž(h¼uüÌu¡¥þÏÿG„'j‚Þñ 7[ãb=v,”^mM_Gù+u{Pö:üpj5Ð÷Œ ÈÁ&Ý=X ź#êuàlöóü\ø:ÄÍþÜñV+Ð-ýJÓܳ%'[—ý.:‡IÝ;óP[QYéÐ2`dbAª5yÁsÁii.³bß‘tá\DÒÒk%óâ›uÊê2ÞRõ™ÄÂmcCÙÐpø\‰CS;Xì·žV‡–÷ÙäÞYÒ¯Å'¦4ód=Ðw²ÍŠ>ûÅøFEÊÉ~5Ò}ÂPnÙ»»Y²ÒíIÒ<$NعÍyׯ=;Ðö@2áM{aÇ á%­ã½ñãËÔg«LoS&b4øãõØâæ<Ñ1¨ô¶w:i½=E|¦éX7ök§3yÔ`GLFNaÆê@¸^ídÑ·x™B¤LyŸÒF}9Ìø¢dÀŽó");Ü~jÿMÚZÏÀ8ö´:\æÚ2¨j—k+ZøËbNШw—ƒä·ý±Ò#šèä©èm²R,»<^ê|± –øÖG{dëý´Ap'1ÿ'=Ë «}.™W^lP–ëÊŒ¡§ì©†9ä›rªök©«»ö)¾`¤ z³e¢qW¢–AS6=¤€çá^#²WÌ#gÌ_ó(¶^u£RõaòbNö;ðžW3Tù&ôQ¦Ê¿Ä‰ã«†g›ïxûýH=/BÍ)…!¹v%¦Ö ü5æ@ \@ ¯ÿQj‘=Éhü64êÈ~¹’"às!Õ·uëë7ݸ‹µ";Á¹ú\„†‚Y>.³e3mŪ6†âá';p¾[Þé‹÷:„ç aû_B;:kæ=`™ÝÅ/>E5–¬~/F@í´¯õ3‡()„¹Ú‰Ò¸ݱp*ÂC«ÂaDž†LÌ|‹ÄÈÔ7ß³Fg|kîÈå°È €&aï‘;”"1UéYŒ¥Œ§­úZÀX*‹s/hkG“§®E‡ô7°Ê‹^é¨h)ª€œÍ|ÏÄÙ˜\dgJ ^ŽñÄ îé!ëK‡¢œ­#‚Æ" âŒãJŸ†LÆfq{Wa#¿0PÐA&ËÕRÀ£…pQÛ‚µ ¹[ÌvdÚéÇÒ¢©óíà“œñ€Ü|ƒáQ_>G¾Ë»ªtZBªxæRÀL8žOsÎNÌþ\OË*i_‰n´>V¯º(`î›üÓ¼»;ð6Ã{À«ï$ Ÿ4à>¡ºrJMn?UtžŽÜŸÀ’¤y"QiHŠòQ<.ƒ z0Q#y–¡McCcàu“Ò×fÅC²ïz~˜T&â#¸¹æZ¬ÑO‹kòÃ%,§Ÿ]º·„¿U±ŠŠÔyÛLî#g|×ÅŠ, so’·Lù°Œ¨¦ì_ ;XϦÑÛŸW?%.6éwzv<ìS´ °·)çëèlk  wž!7?ó‚ñcšRTlœµ¾}¸fIþr‹¾vì@³ëá¯âßà÷¹-£­lUF»þömy”6Üá•Wób¢O‹<Ò|w»rAþsŸlâ_¥=ÁêRÑô§Áfý±KüvBθv­bÌ*©”N.bâÊAþæ—¤à%õÍ"Õ”+7åÚ#’Û×4òÜÞ%ŸR€ukš=£^  …o½ïÕòyòã «=[ wÓçªm\£ ©œ‡§F²r“¥hÛC´Å¶Æ=F´¬\ü\5yâè|[ÏŒ­ëÿ&të’,pWÂûW¬r˜Dk§‰wãÊë†ýШ¥¬eð‘ämãYkÏ¿ù›ƒr®¨šý®*pcåêñmj£/³P wcŸJz¾®cûñjÒL 8(,pQ¨‘Ä@ëgƒAlï„c”.ùÁŽ!fq{…Õ—ÌUú]ŠËaZù‡,”2¼Ô4£”´[ÿò 0c®ý|8«ÈñFg«tÐ\Ñ•'àcŽ p0!‡×ê³ÁT«]1è¼¹1Ðb¹NÇä¤üÏ>¼¡wÔ}ƒcŶNcèdS6ºÆÿúÊbc]xrÚå¥âÅh›¥£ I˜æ]Ï¡Î4XíÎñ/,ŠÀÅ(ˆ u© úÕ{®½ öƒ±+¸U¡Æ_ra‹cÃãI*'€ 5NÖôûô–™~6÷™bf©xŠ@—)$¶ šîÅÚù±›¥r°lžZCÈÍ›Œù"6í»ïÌ&ÕGÍ^"+ã¡‹þ’#˜k/£O]üaÙɳ‚(msИL¶a{×Z`5Ð.NiP@%àÇ·¤'ê•ø--šçÜq—v¿SÏà–t5’æb‚…„z’˜“ÔO]T‹@õ¦œ·ŽýÊ+}¡9™¶¹ü}ð`S²5¢æ¸§>¥hx×üÙ?ql üâó¿*Ç ÷ljAÕg‘jåUeUÍkç‡ÎÔöÖ<§u=ù²þ0ȈÖ£M6 É¿äú"¨wň[l´o>7¹ªÂ÷‹Î°tÓHæÔgÕnþ=LÅ 7Áï,¬˜u%º„ß~¹B„çlà/ÅâgYÌÆé‘ÿÿWH~R$ÚÙ‰hGðô¤ˆÀŸñ$ÈXA+‹`òÕDbÌ6J"ÐÜ1fvŸ©”E†;uF·1&Ò87|b*w#ø‹è¯€NdJÇkÞ0¾Ei yD@𯺟Ž4ð´ku§ À0”.ì…cÊ©W¿n¼æ-ü!ÀÂñkRý×7;àïô åÜ èxEë¿}ð/õ.Ù8]¡¤ïi =H»¢¾QZÜHmå$­ËÝlüÁcWóPn|eÆr÷œåÌB¤”#©óv¬A»OU|99G›ZÓ¿cKâMHó¯6¯©0y¯ !¿Ô–s/¯¨2ó؃°4ª˜Š"‚Àßë·ñ¿¿ç‚4U~ ¬€×fù% ÊÇ CáÃÑ|“p_'¸"]šSfVEãÓ2ü‘ꤙOÏyþÎÿ{ ¡z¢[‡žV¼ç¡æîb¿° ùÒS¾ÛÆ%’·ë+k¿“¼f'áö*æw`‰2±ß^bß¶Ræu¬Žf–„d;<³¦pF±Ÿ‹ÃÉ7=¦˜ø.~=x"yo€{ÆcŠî7¢T«QXˆŸÖçžt[VŽ‹²ÅLíž0Ô]~$mR1‹Ao/Uw\ÜëP²\¡ÊÞS£¤³¯˜Né_6dƒ%%SEÓßF’SH›ãá6ahÇ|?T¯¼À=ª Ä­_ä2¾¢§ož~¿}æÕsé3;½Ëâ½ïçú×ÊáŠHp×ÛGc·T*ƒ~½t°ÝrKÁ㨇]pHW¸ ¯¢YÌ 4ì¯Ö¢Õãª,š ™q>/iÇF¾@ »Þs ¹º<vX¿þ¦q;¹^êâèäË{—f"ˆ>VHJv‚˜C£]áåèš8NfÏÎBD3Ù>PÒ b%ýÇði»w ÅðÍÎ8–[£² ¦( û?¦ 9tP—ñèÔ¯Ã-*G•”à(êÔ„çKÂ%.›¾¬ÒÒ«={çùä#¿ÎŽè.1¼ø_SÍ»òTÎ]H4dM&ÊØƒ2¸ß“qÁ«ÀÛ5 熿EÐXz_¶zLpjC1Õµ*™Ë¬\Eòna¦UÀ×àl¯ù„¨2Ìn‡ñ ¯`Ëyª¢UEÚ (V‚hÿNÙ½ˆÜ…âäúD à7½ØÏp gÜñ¬¸ñnjŠ¢K}–V%2ôb~,9³ÿ3·ÍŒ ”¼CÒHÚgl#7C› $=¶êƒb°€a3!4<Õä6³‹ÌÝži8OÎvlÒÝí4ÈýÃiñ¨Å»Dm\ùaª^¢ÊÕÜPY`ëñÑÊHQ¯-)¹¯¶2 zÑ6Û¡fßT„®ÜMâÞb·œm‡Ûc.¢mÇÏ"†Â$ó¶ç)‘Í4tMMÍ}ÖlŠ8@¼vÝüd•¶ßJ> ¶æß—ÕÁFm‹'yŒiëô_«X–ƒÏ›)í’ŸJïnˆ´cÓæÛ u|ôÑ|&…ß¿{Û˜RÀÒN¬O7trlÜtÓ©E/Ä{=rÅ)O{Xø|{GudT·šePYÕ«^nðÔ©tÏ &ÚÏŽdA™¹JŽäø¡CÁæóFº ˜3ÅÑ®çÔ‰“Lqù}vûQ\eèÎÐâ°Gjº~WLSO”3äZ1ÌŠ¤¯ÁÚfà4J¼lß:Á`7RTŠŸ…Õ‰£ç1VQK1SV²C¶­÷Õ¯Ùõ]ЏØY— ”øÅlrf'lýà¸Fc ºtj$uk3ýþ\±€¡LjU'*48Çíõëá¸áè’–C²/5†[¾ÔC2QªþÉâ½BZ5}ˆ8™Øk88’DÍsýúÄð‰‘ùJüäf!áKdÜvŠO‰#÷ð {ÔŒwa׆Ê4ÐUp?z²9—É¢ÜdŠ ÔJ¯KŒï©*³ŒÈ‘¼ ÏìE¾³ÍDµ«=ª'lf‚EÌ ÏYu_.qö‡@m[¹êDTÉMξ‹‘º/‚µL«‘“VŸ=_Cú3ØÌimëŠ1ð¬éT£þbdŬ~€PÓ“KÑðÞÜ2.Žù.9IF@î½Mž›d@¦´×â×Ç¿ÆA}¸%¢—3¡Öá„ÁOalé³pçàL)ó4huš.÷‘Œÿ’^¶´[ôØåÓ8ñœç+¬Ío5$WžF¸¡%ýº] Ãàæ¿Ð~ÍÃÏ’œñso¸ÇIEeêÞœÊá ›½ž$ïCÀ/ÅÍ6ßú ~²³Ãk]xéG¨˜ïàç5øáÉ;C ?ç•«'ð ß(ˆºT“\÷ª=ù,Ò7ù)ìòºµ9Ž˜íxÛ=W') ÈÀ'ÌQ0šÉ23­¢Ú~˱£žm}Hõ•ñG“á_™ aZ³AùNç½± Øb¿NÒCO‹àÃüiÔ ›m¿¶áý0!¾ZšjgÓ•›7øp@wfÆñD&VÙø9ï”&2c¬Ã©¢Žú~ÚŽÛ6¸ë™W^¥¸áyE‚o.ö«¨£¯„ÊzÕŸCàå.ð§äBãø’@³±J&ó¤i»i¹r4M”a{c}ASQ?Êÿ,´ð¾“Ý]°¾½Aòøh‡¹Â= tn¢c ­d寣]$ùÇ^®ê÷”ÛlÐÛ«úkÈ÷u)¥qú“¨Áˆ*èRWCZÆó ž%Ìôyo_|Ñê²¥štGùŸ¹6Í=a.5.€^®|þÊÔ)o)ÆÃˆƒš%9.uE³*fëìUé>ô …‡¾N韢´ºâ_HæÏ%¨Çë[Á¨;ÓR•t¯U$Š–€û#8xÍ÷‚ÿ{5‰Å÷gSfLدTW¸h÷r20Y²•ÑæÎêˆöàAqtª »ñwìÞ¡g 4Š0Àl=Ïw^ µaÍ*6âê&PÒ&`¾e™k=ºN–ÊÔRõk²ã½c—T:†.ÒÑ4¦äÍZ«Ì#`ïJÙÌ z7oà ñ%ˆøl ýÜÅ?PVyÿ‚‹ºy€'2u(mc°Z`ܲ9b¢8$ËújF?ÿQRѱª/GÃý‘B¤OrM›aå»w×{}NêϤYF201W1ÉÝÎq÷ØÈÑG×’(Twi8*%©$(\/ËÎÀºz’Œ¬ý[+X ï÷-6ëÙ@î¶rz£ ¡U!ä8õßÍ/Hµm~QÃÃkîíY—tôÒþm”¿ú ƒ'q6¤7iÑOÁËPàFÀHÆNœe 9çØuœØüe)íäÅíqVÍìÈð¼ö]k'Ýõæ;lÚ3„z^DŧëR¤º, Sé{b6M{¦¿BÝÉ’>¶$ØLH΄->´ÍA‘¾Å·ƒçÝ‘S./÷Æz [°‡Ï91Ž”—Ï@u´‚497a~ÃxD¥ê £·ð¹&NÊk¡Sá…RcôÅ,Â8ÝF¿³¦ÓbjKݸ‡|dNó¤}$k0¾ú®ôçÛ—ûZï¾aIpª³ºØ58¦ªiŸî=€«L%.ÄâçÆ¥×<¶ÈÛÂLçqˆ–(¸È…Ë¿¹è—ÑßògÚ(ÓwNô¯hÓ¼ÔõÐÆªŒó¢*8‰Y]0Ñ7—†¼]Ÿò'0<›fCåηøñÛ»r²y²œ’t3º¢‚Zœì‘ýÇ7¾CI‡ƒè¡Û71©Ø‰ h;¸È8¼&`¿¿øì·× â[MòÇ®ÝèÅ$Ë”Z0ðÿ@q¾{`2zfÒ¹rËKàW†YJeyŸ,[rJP¾ žåÐ)F2GÙI´jN*ãMoÒd˜½-3tÕ7”~g#›=uñD´0§a¸ø´bR]Œ±a—6 :­š´4|œ_ª ƒ]°¹­@OíˆÛ»)0ó‚„m›(½·+Zæ¢B±Œ=#¶Þl4;ÔÓ(¦Z~ÏÚ#+Ï©N¦{q?ž{Ë ç£J9ÕónÂÖ¸âŽF}Ç&ÈÔ³wã/Z¿(ÕëªÆÛËKפ½‰C8¬"}ݾôZÇOI5$êÜì]Þ%¬£"zy@Wiª$Ë+Bè#Ö±½»YÔòáEYvØòçZ#·?Vä¦òÃ2×#(ëkaÿ1Ä×{jµû"cøä•º:¥(ƒ0£mÁ HŒpümx´¥†SU>&ŠÄøw=eZ$h~ÞÓÆ±eMåi53†NL"˜2“ö’Zö/“®†‘Õ|R·%׉NdwcLÌÛô½±Ä RÌcýÒ½ŽñB{©<•OÚd%NtÔ9" ±n¡¼(4&MÏôŒNq¹ûey“Y-%0Áïe5?ý¸4««P<7_dJZo2R \Ä…GF­ƒgZÄCðGÉüˆf“[(ft»ŠÒxW¹}óR£bå ‡;°Æ+÷rŒ×#éw¯/Ô@g‰ñ€±>¢Ö?ŒÅêÚ8M:ÉVßîÀÁdàê¾hë›þ·q47#ÝgÙêå8yàORû‘u’½9¹0FE5>•ó߇ ä;„8ÂlFÕ{;÷è»Þ’8ù»ìEÝq’˜QvçÒÞo3ïíW‹kEñ‘-–‹-~úƪ!.a $*¥-ï<þ½=kÕ‡¤:'|9)ÁôëZ —@›ºÁaìæFÔN(_<{{3«ÉD3öJ®'/_éZ·4Í's>_n€˜ÎTp1º(§.@k›’tº ÇýžtT}%,DM`–{ÿ=•5íKf3Þh:‹ ßp¢ŒÚ=UãqáÈqP‰[ш)çÊ(OX›»±‚ŒÕ¤áÄxP50¹Gé@ˆ×~ÓÙqÏÿÿs…6`¨!î$WÍJ5vGfu£5è÷åæù6eEôË ~­šúÿ*§¡ìŽÄæ<a*¯ä‹^ñýëñcå`ÝΨ¾óé0æ„Þ‰æÙ"¤s+þY›’oÐ{u3Ì9q$:Q…ìœÐi‹Óœ¦®-' ¼×º+n½±Š:©oö <¯TTioÜÝm_õ…Ñþ}^§¡: ÜÍš"=ô¡RA0 Šª5RRx(ŽcrnÇ$Q¬tíØÏáüüeû=ô¡sØÑ»%èŒï÷Æ:ÞÍ<8³IxÁÄ'š6€#Ú„eŒëÉYÖҤܕò3Ó&C†V¹ÐQ<žuÆÃx.yFôæ®ïøIÁ ³x½,` ãv ‚€¶î]GÚÞºá ¸ä„-ßÈ¡}F¸Äh/*¾ Œ’J¼Û¼öùˆMꆮ 70×X¢z§ °òýÕ„š^ÖÿH™4a–a¹ª[Þõè%´2'p+‹3öe_jt¿³!Y@vFZÆW åk}Ÿ2²žh]ÆS#"òÝ.,âóO)Î ÆNÍŒ–˜Gý×èEºcІgŠÙsc&%~œNÛgŽJª~µä~F£6l\¦×y×âÖ#ÿQ á™V U ÀÒMžàö\Eä’nAˆ]Š ²¼9™;ê›e~iÜ´]u æ&ŽîÒÐ¥äÇÍü|A®ZjÜEUåâ+ü‹HŠk™!ü>/{;¯jd{#Ò8% OŸwõÏ­»' C²ƒ(–Dþ³{˜vaÝáIÜeÂg÷& ÉkM €ž¿êSP¤ÔòÇ¡!E±®WàJ”Ôf·ÇË |à3\ˆ=$?¾¤°'¨ªà…¬!tl¶Ã?Dù£õ ¶xXºŽýorï0 ǰÉð·7ŽúfŽõ€e×›[ñ±ŒëSÓ²mä ð#Ý4Ä¡¹p§ò"ႜõ‘ÖAœ£ÿhQ*B&ñ™»Aî6ÍŸÇ옢Çq×ô@¢#Рܢ{×ø½`¨…çû@NFzw1Vz NÕ‡jÂ`Ø&xã 0ý󊉩1ˆ»/6y+b•xÌ@Þ+ÃF˜µê ¡w2 h<(>É~ $–ØEÂBwG4*?óLƒ0|³-ù.G(œ§æB6z/?ù_ïò†qŸÇ>r\ü1â×¥Œ·ïÑOgAs=rÑ0dY.ÆÉ\ŽŽÕÅèGäE µšëElAÀ[¥Ëí|ô.a2ä]9•)ßÅF=¸©ÌASÓ+¹•H(ÀïÑ“&âÜŸ „Ò˜ør|Ÿ•Zçôñ0»ê·),–»b~¸>ÕµÍ0!Q¡ðäÜ«Œ$XD’UßQÔ›˜šLQ7©ºÆ1±%„;&¬t‚ Ïæ÷Z@œDȳ@{MÂZRöG%>†ÜÞùäeç~Š-è&‰GjTtUá†o ê+‘²¥¦÷Ê ³'ì;«Ä¿÷^.á6D&S÷e£&AÁ]ÀÌÏ: GTz°auÔŽ’ÚQE„s ª‰sST27¸ Ò¨ Ëžx´šÎ¥ãåi1ñׯÛõ !;Ø, mµ¤¯šDyÌÜ®(Ä>!~¹ĀiùûÃß³KH`=NÓc2“sMcJ,Q€y¯ºfW“;_ Sjƒ²÷>ÿVw)•+–º~aéÚLŒ·èO¸{~fÏa²4c·ßèmß{˜zú$0±"±ðB`E‡päÀ&Myæ4$ôÚ° Ážã4DÁúSE¿d…<Æù3­º¦S….ôt‚&ž¤è-¢g=*Û9™²…&ÚÈÁçèR¡ñÕ¤’Ü—)†u09«n>‹{/FLó™bܳPö]ˆ f¬¼=þß ÜiQègjX)Ç”‹ ¥ wÚa9ÔCdTCH@rPÄZ@&à¯kFKF¦-´Ã)’™)íFuá«™LøKX$¿×1ñ6JoâB-«]£šóaõº&‘¥Œ6žµãÞøÆ˜Q ÞzîõOÕs<‹Ã+¬_¥[róOªì¶óë.뉸ӥÂÿ,¯*FüÈ‘^y¡‹èüà˜‰+y†TÓ’È][úÄFí-¥›Ê©«Í6Ù"yºÛÚÁ/cÞ¤²QU׌gFiøDÅqýÖEl—6èêó&Ùè1+ß¶‰½*°n© &b¦‘ÆÙóøH§2ë[É®Yœê*Å%BùLÔåúß’-ÿbÙü*÷pÀˆÊÚÆÖ)7”åî'o†OjíyÃX㿃ÎîXº¨ö©ÿôåÇ7¥r €èýGű8¡dÜa­wþ úºHψ®±šb=ªÀ)ŽJŠßÕ,Å¥ýžXøÌÎ9‘åÎx6™Ð@wJ@>'úÞb×¹¶\ÅúÌÑOÄûô3|?°¡!«9e&U潎X j¶ÖÜ7S41DÏfm€\°§íäNõМ]Ùvô ëÇç0£_¨´e6µ™Õçÿx©Ã4•ùØ=±]œÿdÝüL×ÇAÀor‚æ—0㨪Eø™Ä öD‹›]ùÈ9å§Í»¼;=FŸ‡—Rë0ÑEhÎIl ­S°¸W†f)² ÊC$zÏ;ÆñìPÚoÙ{ÓAþ‹OÖu½-qÎ(¸ _ <|;õº;ëæ†9èº=¹ögópDõœŠI}½Ô ò¦H+z#éÃľB_êzÃNCKT©Š¹W´H'D´ˆRIZŸïuñ®$&*†á‘¢'`ò¦l‘‡l(‡ôM`–q^²èKà0Q5£Çìd‚û'¡Òh+ãÿ"@0FÓÑÿ„í°’¿11Ø=‘}ÏîÚ4–u¿˜’9`n¬ {㫪(LÎMÉP¼µ/%vfðÉJãï13ðU1æý»ÈUæÉÓÅy$zpjÀµà‹¥»2=¸ñù¶1fPF7ï_Ε$Ϭ¶ô¿µôX ;ð‹õîìr50Ø9®=¯Ð¤1ÇÇrYÛõ)Ÿ*¤zSšáÑbÉ‘OÆYÛé¼€kÂ#¦ ÿ7aÙ¬Òç¸rÎ÷f*Y‰+ˆ›ñ`ÅÞê¢ÄP@ˆZ ÄËêV/(ƒä(rÇÜÃÜÿ^³Ù<Íý[%øOdMã‚Ú[§ÌEúzháêÏ`¶\áf_æ"åV$+K†$Rœ5½q3È~r+»Å¹¥/i:M*#g@3.:±˜aUÜÜû«„vO± "÷"ôó×[Uë÷ £ÒziaÉeù]ŽEÀòq•m(¶·Dʈ ̸<ù Ùku, O:xYäÿtGþ7òÌ&ÄöìõÔ—‡ÍË2” 4”¨/TµIÕÌ{ÄàOž Ì[á"Þä ]¤o™½¡‘™µŒ¾rÅ/+_pàc³6»ÁàÀóHŽÐ’ cÐKµßc2/ì¦m³Øx“^ ’RÐý? ¶9Äð–áOÂJ óCÉòЩÞRX]‹è"—÷×e6£ó0¬ðõ¸Kû¢`ÞÜZÚýón\™øëB?4½ÕÉJ©E¤÷ôŸ{ì°zZ†Ü™ÁŠUÚƒ}Ø!~L¦Þþ ¢uÙÐÌ §’fÄŸìÑeû¥­QŽÜÉaûÝÜjÍiΚØ+4¶á)t6¢™§WY'~òûOtaŸ”NfÐç6²b°†›ï@›qI5HÅžAk$ÇrÛ¡±¢µ0Þk®í“zQÅ­Ê 8z­Nõà[ß•¸%hÒd®R㬧¬E÷6}yÀ“W•ãÅ1ÜŸÓ%Ã?ÏÔ_Åþ‰ð?a c¨•]R˜ò/²è¤ºNÔêªeÅ´¾ª?7@´ÜèqW÷P”¬DI¢*:úíÌ—éKÍjö~8Äþ vÃ௮ÅckDntÈÀl¶¡6_P¯ž*bº§­-O2qM¥EÕ‡–š‚€¤½ZÓѢ͜ªñ\›žx*R?_È@.ü˜4F91·Ñ SènöæÒ5o€™)ß…ñ^¾p©lž_js5Œ¶ê«8N Ö¡:Œ+zC,Wz§‰ ¥ö˲@é~ƒ}°×ùÎÙ¿2æž¼¶k/)smô ¼y~ÍÒ¬¼™{aT;c [ƒÀßp¼—Ü ·©a’XB Sï°Ã\~ÙO@¡šB¯ÀY]°×?]ú­$f ÅÔØ3‚þrÀûÒŽØù„. LÆ28Æ!“êjEÚH%¥Ìç9ô>¹Ñ˜™ÜÂѾß6=´5awær(^ZD»¸l+qg.U›ªù¶SI4:œ@;­yª#–ϬL½/u)Ýù b{¡yÌâš‚ÄQ^Çë5RuÑžû-LÐΧŒH 4©´I%K%‹‚ Ï×úâazçôQgÞ£…ôïƒÁdsLxBL€Åÿgn‘8¬"<Õ44ê,~©ó€Û/ß+Rê|hxâ——<ÄgÇ·ºFj9ïx½¢§R6­¡Ó64oUé0”·C ){yÊ‘îëÍýä‹÷ë×è)ûyV¤´àÛhÕƒapDÛŸì³Ð$ƒAõ×W*¥ ß°2÷Åùðõu³wgk±Á˜0 B»È¶Æ0µ’þ¶q™DO7u†¼+£õ>⿯{¡PÚgÈÌy»Ü]q4ètZ¯€òÏ%]È÷·Àñ+'¾\ Î:õÈ…Œa‹Ml÷(§@ÇŒ¢'L˜ö ëÁø5€t]„„X¼@»F~å¤ócË“‘»¿X•(<ÍqÀ—æá'þ¶:˜YVd|onb¢3Áb $ÃüLäYX½•iÅ nÀ'ÛX³mŽm‘ìP ¦˜‚ ò„ÂXˆŠ%D“iÁ¼QšöècL£lçªÓJ’Úð™ýé½eùÿhfkÿRÙ['g嬚”°¯èå쩲OD…2ä¬ÍÏáƒÃ #!T׬ÿ%¿Z•Š‚ D2ýe—¼ŸXpTµ©œPsGoÀ ô?¡(¢ŽUe1Óî0B™ 3HB™›ú¾þoÙnw«¨B€…‚ÓeÉV .œr]mEù›ÞôÒ¦„«µ[V”º]eŒ6ã4–"!ÐtU ¥Y[ç4jL¯»™Œ”#lV,á!}_]XZçMµð=2ÄÒü rÜO 2T‡6Œï”‡eì7ô%å+’8·LxG¦Ë¬åf{Å¿dÓ{§¥v@Ãe$iS_ñ&.§ÑÞ)·ƒ^Öv€¢¹Ø‹‹"’gj‡t5ʧõýgÑ*ÿ:ù,cQëzìXsPÓvö›>½0bÜ®¨"ÚQ»ï!’‡9ú½î !ƒ f³®1â³ÐÝ7¨èÒðË9m¿>À‡¨þHËGbj¨0õÈ~kù|™G`D*»N‘EÀöˆ6á~‚ff&ìzqÇ`ób*ÆÈ¼¨Á$j7ã¶4—|ïÖ ˆì,d‡šÁ?5q©Ô)õl%úÄ&±ã–Ÿ‡vYúQŠQâÛÏÆ@+U0>^ê CmJtžÛ¦}Û/>ô1Œ×æšc~W ³Rü[=ë*É÷ø;"ç}>䟙ѧ Ûýë&/ý%ïh×@Kô–Žxã|@·ƒƒ·Ђ߬]úÕ&íÍ|^iO`šîY6H‚ÌOù£¢ËĽX-ðÃ$éâ_TIDë $Åâ³¹’jXµá›?ÖIÃÓïðåÀ°Tž@”|ª õñ¼cwyxþÀ}ÇwÁF¬ qÇŽ± ü œ„*¼O~Áõ 6“ÛPSUÑ "/\úË}—»q–¡” ÙÌVô¤‡ƒtÆ1$k9àgùS9¸Ó÷”O'—.º ºÁð×\ÁLí'r•…xÐø«ŽÙ~}ž4ÊÔ„÷E‚3ñ”L|]ŽQo}ßôKþf»!Ὺ „v¬Bü0z¸¾V†‹4-SØÃq–º%æ– ¶XDæÂ¨Án€K!ÆãØÖná¶‘€Dç1’4§¥©æCµ‰Vž˜¯ðß»·å |b– ²kcß2"7³êÊÄ>[ŵM½žá×7BK¢ŠÜxÒžàÄ>xS†BšaÎvÑv:Eÿ^.Å?¬ó XÔ| ÌT÷>_p¾ ¢Œ€¡;Ú½ßZ÷käÁrµ ‘®éìi0õi®’íN‡Ù»áÖï¼LRpEä2K€ E¥ëùô8=§äù«„^«Šù¯æ(¸Ýv6Ô-M¶‚úwƒ1@h,¾†aV§rÆm1dz¬»¦)e€K6Ô?ö¤w’¡n'ŒŠIÚùÌDŠÚ¢¯Žzø·íR§AC‡²_ÞíF¾nÂtºng<ÏÒ£ãW9ˆ1µê׆¥+„&¹ó (ªk}9 ÷x0ŒlÖ/ïÊ:”͉.ÙÍNö½ANñjÚ¦@ÝÎÉ¥»LX­ˆ!ý­‚ŠsƒîJ‰“!›Ôxphk{7­Ó´Òîªò ”Yˆ-¹MؽÐ3räç†ñI”úoû[µ0å?Qp‰]–6× þTl€Z ý²‡y²ëeÅŒc‰hìz(nªaª+4¬ø$E›´ å`êÒÞ#ÔÔMñ}ïÓJÅ¢S‡lãØþê/ÏÌeá5„HZ1jdBÙxÔ¡”šË7bô ½Z°È«‰ÎŠUÓ†Ö!' ]û®—4X ¡%=ùöQ°–ÐaÖ1(P{˜ ¸àbq Û’p²×åyÄ Û@3‡À’¨ÝƒÇ…•ؤD”“ª#’4¹/œYńۮ¡|Q`{7<„¶hä”*þB*'‚³oXW騽   A.ŠHbá߃ê‰ðö9I8o žCÝxQ© ?®#1ðâû÷ç& eAœ @À6e ¥q*«ÝiI8(VËÒqÞæoËZÀTQ¹i”@~üųñ¬Yhš’BOÕ•YH‰|? Ù~YJ–ÐŽ'g¼á5F‹ði*9˜ SâW8„,»/Òxk+ŽrVm¦‡¼-*µ}W.š¿öð*ÒѨ !¤·’D´òïÝOÊ¡r'pb^8 QÁà>¼øPÇ´}¾S&ͪ˜ø®Ú–43ÞÆî»õKxè×-î[»‚¼$(¯j¤ å£ÕET`‡0SüA$s k’B…’¿üA×7n}“yÙöY PÕ¤!éç[ˆ…KŽˆ­Ö{]ô.cAMƒëÚïïïÏL=®Râ#XWè\ÕÐ0cŠøeÿ7èe¼ZÄyó½ÖLSÓ+·³K“wÆRûs q ‰]Z?ûÙPÁz³R‡õ… iþßà|Iøž#]Â×ûAP\*–yÁP*KMê2¸Þöº'µõRøÒ‹*ƉԠÀIcC¨Â€C×¹X«¬¥)ŽÕ—™”mÓ<Ö {‰v±rèÎ×*¯E²ÿAXœ8RÈ6úË ØåË< áô)ˆb„<×A•!"To¡„‘es¬¼í#ߤøE…ûeôž°EöŸƒ¦D±žú™JÑ$v€Êu¨ŠÎy€¾”o9z:a îWëæÞ|Û /m[¤°¥Ù¼‘lü5óÜkòÈßÚGKä„Õ6hñýõÙ«+åÇ¢Ô(d±Kæ¨8åŒbŠ?–Ç«ë¹EV†žgáÞ†Ü`– dËá[¸¨ˆ¸ –úÞ‹±W½Ú hfÖœ-ÌÔº „k´?`@éhêPµj?1 íÆ¶wèVJp¢c#piEöAµâÁöc¥’ôbHý%ŸYK¹¢¶RŸÿhT`&hZ×@•5ð×á‰ÃÞ·ÿW¶Bˉ7Ÿ%«ñ›Rxæ±1k‡Éê£7ᓤ²z#(õIñ–Úú½ž†MGYƒùñ›ÒšsaÀ߃ä¯ù;¹ 1Ý8Ãs ¬£è9í-Á6 Éy&äŽ)s z ê¡ãHRõµ”ت~µ‰òèï9œJ¼<‡½ŽôÅžçj³JÓ*ž™ä8§‰˜1tƒ C˃ú*ñ¿‘ó ¨üß;DÕ1ë!9AŒ»Mʢ߂krwm*bo—ìF˹l_ °‰±O§ÿ[¥P>T‚ñ£àež8»2§L‚[~)yi#Z§†Õ®n[Uõ§§Øþo&úÞÅå­”FKÖí…¬€ÉÕ$’/èþΆbZyõÚ€=Szø\¨gåa(#kD›žæ®,B&œg¤^¥ƒ¶¤‰ãçÓ¬µ³Â ã{’Z ±?^á„þÕ$¾ZŒ!?ë£-×C'æÂ@$JÙ‡C\íynY]éÄÖÉCk.í®­Ž‘Ê–2qXrß„Qd!.ª¦”œ\4?éŠ{íç,—&©,ß„z× ½·‚ÖQoȦ¢ìï:Pp¡œgekÔ:E—ö‰Q%„üþX%WÓ$"þ-­;ç ’zñh«x]’×ÌüšxO’äý>LJ>á®Á%A¬›WU…´Éš‰õd(A}Ïúg4S ŸWih¡˜Ðy¾f;n3÷Ògi4ÔSäh ý6L.ŒÓ…öGÅa´šlWÏûöÆ™»£ˆu¦`ˆÐrÝIµ©Pï4Ùõóñ¤; ±®èÞ¯ž§žE¡*9‹H·ëöÍùk ÙR›3G+Ålι0/B“¼ \æ)€ÈC'ß}UÙÙÆî0aî^¼6ÇîZHœSððºáŠ5<á†FÓ›zäÄjz/ ÿKj( +Þ€_á_Ä>ÀfÛ.ž Wý»,›ŸJ•ïÔèÀ`nódÕte¯mÐç?×>•Jy§ñœŸý ¯1†ûs{/e0 ù21Ñlé Èf lý ;¹¿1B*¯{Ñ—Ó=^W‘0×M§Þé¡N¢]/ó©òÚ¤÷Ë‘šU`)œ(½®½:øy›¼&’L0õöÝEh2|áú÷Ý_©^£Æ}xƒa!é(01)`ët&3øúB$/¥G)¯úX°x÷Þh1eøì#Å”»…0è4—ŒrØè8k?Rq˜Ñ(º„¹±€ÆVÉ‹ÃkrÁø|ÿjc ¨†ÁÌ…xª¡µß“^Q§H}}ú [íp w9³ƒÇîÊõ’2}”érëƒUcaÈgR¸fIä8D¶²âä’ð”ènIˬGsfùé„Á!2^Þ@ß,•Ÿp–àf*R :BAoˆ).G°<Á úµ3}ÉÆ&¦oøX,W ã™§Ž¸ +êpuÔ¹¥!ZÄì@Tò¥±Ý¼3=1BKÓpÖ•Çß'õ3:¦ÓÇ£ëö—U•‡rA 59¢ ­†qƒ7–dÈaítòuB*Æ# ÀÞâ',A•ÀÄî45Z?Vñ»M8GÙ{ ƒ˜„Vé-_©ãé›m´"æ÷_ßÓJV«Ök˜‡&s–voD…ýs±<—¥;œ"û-S ËÐþÃ*~WaQ²· ›ÿd޽e»B_(O6Æóƒ0)„Í„È$Ü«^+0>)R7±÷§°TÈi”D$Z Û >Úg¾{lÔD ëjø¶ªÌVÅõ`½,J+Ô–]1„°ð‘ ÌÈ¢uëVé¥cöõì¼DíÍBiõ5Ÿ\(+‡Û4Ëã¥›× Ñ\)CXÛ¢9IŸÅ£îDøeœ(_–úßh¾ÒuklϺ{ƒN;&Pœà/–ãGŠ›uc%?¤]àðý¨^h½~ƒÏ¥Ë…Nn=…œþ*€¶¤[  F(†Ÿ¤i-%ÖX[#5‘=!>’+ü²uM÷‘R¾’XPÄË7 KR¸R¦Õ%N³`/U¶UmºA"¬D.% £.\<:¶Þ•´ù#åÌYèK°ÜY|Z Uàøí µÒÑNK‚ÿ!÷´=”𧔊a,f8,Ù<²ßê¿"I„ø²öŒ[äØqÀþhcþüy*á%âBÄ4çV.Sé0&SŽ3u:µBi¾J{š£@è' K–º‡ (¨Ö™p‡ƒ«G:*i¥W¦ÈŸK\IwÊÿOÖ,a€„4AŸyÚV ^“à5xbÖxÚݪ2›ë…tòæiýÒ€Ó%¸_ŸX´]‰í^øåHŒ0¤&{6;'%dO0H…—}_C»Ó¦ˆì‘MœˆFí¸@F¹IíçkcÜ| iÙQ¶fñµÞÂÛþÉÝxÂd†¬B·²0 XC9޶M07ðp,WWÞ´Õu¬øÈ9˜½Q 3tÜ“óqе;ñÏ›G2ˆ#¶t@‡ØJLY’(x~›õU~šl³9L#,±æû<ýk!‚«"eý9—¾I¸ÖÁ‡5¡C< ޤö3Ñ>þYë{Yò˜`ü1õú^®Ñ”––Š)Ÿ+õoײ֎Fˆ¼•Q³@ ^‡DZ>À¼^mk£AG:ªÑ¬ªB—°¼ÞKZ{3F)¾[Ö̲ud‰C_I=îSÀkÖ:?Ý«ž2} Áú8µï¼HÓˆxKRõ/´Åc|VZæ?{ïF%ÂàB;ØY^S9=éëZe{ñrfÂÂÒú¯¯ˆøêªµT¨ž<ºK _a—©½³­m\–¼ŒË+§‘i-ït°pòi˜(ònÀøJ¦ýR½*:ua»Ð Ì»%gøPËùm?GBl[¼\ºŸ=¬Æ8v#O€¥¨GI„â8E÷ˆvtá(v(³ã"ËBá&*£"5<; ëÑO±ß+/#ïî3ï¹wÆvÅ5 _Ôó‘P¶%5Š“9ƒ†â˧ÞêO‰<¨Õä†*—’Û›Ú¹kÄñ…‹n(ìMã—Qf ˆI•/µÎ¼bË uŸÿÿj˜,×Òò+ÉÏ„Ï:=,-Dí³"ãÑ"Í:άW'N­N¬ÑSFÝn-KJqfÝøYgCþ”JÝìlKEâjÔc+²r/˜Š’“Gqî•S8h¿ìU«†Ú\<Ÿ¤‰—ºXT™/d¯fý²¼U§løz@Øiãÿ:XãàÕÊ\´ñ Ê.,Þ‡¤i=áqu ªÑ6½Ò7O@3µ¤dqEIñqÆÛÓþ«„•rû »,Qº¢~ÄÁ@íWäb*ÇÅÞ±,ðÁ…¥ü–ñÍÛŠæç;¥í¦»šÊc7:êÕ$ÓDbôƵ‡I½OKk"•6è–@_aAÊU´èb·¢3¾%£zÅâ åv¶ÈÎ>{_ãtæ\ æy^ á5Ç‹4Ô£a½bËöÆö{½ñ8-ÆMO«§ûO]Ø{*Ši­]™ÐÉH=Ûn ÜS>ªüýXVx·Ý°ì¶ ìÍÕÙƒ† G×éXdƒçévƒ$=‚Ó Ÿ'˜(îTåXAÛ¸Õêà4m~4ôìiž —@®§‹×˜YŒ³%ÎT´T¨‚sÊA{z^B»Oöî³ÃmEÀ=ñŠ”Š^›5ºrŸ’>ϯiê®@J„½+X ¾¦ƒm¢@E²š« &Þn ûœ/߽нG‘™÷EðæHõ7D21›¤õ,δfe#J¿ŽQw£ÌŸíl{›6NGyæààRK²±f/“ q¦IŠŽ©0lÿt'F•î 'F°ùpmz}1rürvZêCbÉawr»Dh…&­iwû-aò¶Ùò‘É9 ¹"ò—¿=S5õëŠ3òD#±F'‰6®íõ”²µ—jö=$Ýá^F1וþ"PE—žk`ïØ4æ8˜À*æÙ@Έ_÷]8 tH»ú ¼I -:ǸVWg¦›U(G Y±ïÀËT÷7+1~OÀØ3—j·A@°i½B¢FÛýFR“êöÕ^^[¢»dLûžm¼wÏ ûçÜK´éÖ'ý”+àdÈP°O°õ!áåM È$¶§¢úÑ¥\¸]«_T…©Êj'„¶‘€DìW¨Ê‡ò“n~(Š ŒÌÂKŠ)ÿ%·kçá­}Ïf““­ý1 3">O"!®VkYôL– â yº’õ÷Ü !á+`´›)-Ó›ö˜qsbä Éxp±’û€XzrÝFB}©Ý 7Jšl±Áµ¨É%X}7=^KÇ3}­!RÝÀï•Z6E ÇòŒàÁB#CD8MB§ù×-Û÷SF“ŠÿgBlK§bK8sÇ: xÿ9ÝÐï+}ýP]êd>F¤xG‘2ÚÓ¯Ýk:äÓ$ *29÷¼‰Ò÷˜û ©°ë7ÊƒŽ“ÁÄžŽÐ\¼I¹‰ùöR[7„Z%QÆâúÛÝ„Šðx°õÍ«v,Lqµ°ä¦jÛŸ©›Æ:o†“]uÆÔœImÿ|ŒÏ錨6N;…)~ŽÇà·¼Q$6À!“ÁðqøŽ©nü:ìNbàû±”ËRdXòâÆKLÁFF©gšáq™#Èb"Õ9ÆTŒSл“Í q%Ðh¹²³Qÿ–¸E”܈Ûí¾ŸôŠºƒ÷zÁªXôšðÌ©k M"ÿ~IÒË4U“6>©û øüŠ»” "wÏ}üßXrû•Ç2±mÔ5`<>)RQ°«vœ $@Í:)Ø6S²“TÉOŒ®Då‰GÃnn‡‰†_ïeöòfíIÓ¤8°Í¦ãøßjGð ¾Ô¬?àgüÿAÚ}A´&ú‚ãÊÈ ÿk›¿lgv` T­µÃ×w©çpg¼Ç|ã}¾ÉŽn\ÿx…d\vJ;ü°OJÐüß7Íó|ß7Íó|ߥÍïn †Ãa°Øl6 ˆpžù¾o›æù¾o›æù¾n"µ·ù)®•„Úná~” ÂA¢©ŽyVÔ˜qlt©1Oók³QüËSw³“)Í ¹ð›ÿ4vä,-n¾o›æù¾o›æù¾\?³@Øl6 †Ãa°Øl%¬¢î¾o›æù¾o›æù¾oÞÙê“{©*Éé2žøšovfÂBBÀ¾HI‚Ê¢1„„k Œ$# #ú $#$a! ÝÈê’«o8t‘sCKË„ $$JuG „„‚¤þ0ŠHrHJ r0Œ@‘„„€õÓŽ¾ˆ .=£ÛEþЕü ”©¾*ÑÒÏnü(õÁN¼Ø‰÷½!æÇ¢ÝòœÊþP Lko# •éÙÀ1wÀÞ—h´’¢zãN˜ U;VYõÏomª=_­öÏ?q=úï«ó}»;ü6ëŸV…_n…ÿ·ðú>?‡Ò‰ü=¸¿áîK}¾â½öý ÃÛJû{ŸWv“êí‚ûzÄåûv¦ú·ë_V¤þÝ;ý¾Á?·Þ·öýÿ[ëýßo²<|ÿ+÷>¯z)õzçºÿC²›íë«øtoÂýZkúµSŸ>辫õzgþ¯dŸÛîEû}F»êõŸ?Ò?~¯^ËçúS~Þ†'Ïéî|žŸW@`ñMéÀÓ2¢ÊfÝKÕ?ÄO¯Gc$µmŒL³=ø]I[¢;Ú©îÝËwô†–Ý/šá¬A õû½Uú\,°n$¢`Ø‹JZU<¸ ~+¶ªÍê§ Æ;Ñ;ζYj0áYÖe—?äÿ5oRä6àµÏ& µðuÎÁ÷I"ìO‡Q#òôlcÃâp‹uJ ¡=aåð^`aý^[KÇnrU®$»sõèY>´—Í>?aDb»´-¢ˆˆ¨©Î/œ™ø/ yâV{¦)ŽnÅî_$Õ¢ ¾)ìÍäƒsþÆÌÜÉMˆ4ÐB†WA4rŒ  lBÒ}~AEãj|È”3òÇ=U[àˆö8ªÈŸ(oj“ù×%žÏP P—ÉŒóuP£•kx4îë\Ðp %JW™^^ü¸÷ùË 4;<œ¨¡frÿveúuïêßågŸJ ¥S…Nk1ãÙi°{Û€³9€ÅúOyã®ê0" Ki¡w1Àrû€‘a}s{ªlÏtBèëî‰á- ü:hùDW_×´-ct oþ—mŒ!øt5º$„ÕmMêÔjÚåcž½‰aÎÏt‡Z2ûä³=\×h‹„eÂ.N-µ½9€©I×Ûâ”M×gò Òµ%s9ÌIC~eË¿])0ÆÁ,ëóŸ-ã¹`K½8)ÊWk¾›3lZÌÅW !‰ûõÓRš½»³Ák–||X™ÆBï0óÃ*Ú(Tà ußÍlßç‹–µÕc•"j¤ÇEï©ÄƒÊNñó>Ñý²Ý?láI¬hyæ3ˆˆAª ¬}±0¤,å®pAÓ…<Íþ[Mˈï²[ÂÅG ×Àî9…³Šowíß¡ûŠD9ˆ{¤ùù #x&ü4Ý’ýØ8oÆ“.~>Q»•Û%Šk/š, ˆ†ÓËÕ!X$Vɓ޺%›˜L £·ÅâZNm©;ñ^/qJ•ƒ$ys"R2¾ð4Ÿ,qMÐýÅÿTøHö²¸‡wÄ®qȘï?Ù"{n8 |mi©Z#—{ô«p(½ùŠOöoþè‰Jûõ¯Ê÷Þ£‡ü§éÈv½ EÝdݼŒEÆŽ© }I°Ÿþ&Ã}q„¿5- V´Ø´vø~Åž˜Êä8^ðê‚ÜÖÄÈSqš¦4äf1_W¿òŒ(êê„ц}Áçˆ!‹%7¦ö~Åyi”.€™¿G|½e;NÞ—U}×òî¤$»½àŒlù’äI’W3xÞË’¥EH•fûþüçh„H° 7Ý®#@Mv¶ú™&¨j£ðƒÓž®¹¥µ]]‘ÚÜ<(•^’|2•»të@2 ·WJLÇíš@ƽ¢ 3b×ô°•5–r˜ÝË%nµc•×ñSˆ$!çZ™Î/IRÕ=—‡~ºˆHài\bl˜¹m¨‰»Æ5j%Ûô•l/•«zé’FÿöÌ<,Õjò(éÁ5`#³d='懈‘oNͼlü¾Æd>2¤ÉÁ‹6 ƒõ…jæ¹"/Õ†€Ö&ÉŠm÷19ON4ÀoÂ-ÜÙ‰P²sa:?¼à TÄqy¿´¸‡½„¾7Ö:·”5²IÕ0äëþ#}€äƒ’).ëãúÚí~¡÷ã/ðÛbÞˆ•ä¾XÀ·[ bãL£ÏÍ¡Å+µpJÙ½±°¦§_9|%xÀWBÉÛ Óˆú–…îÿ~Húþ²Dè µäùÔ":Ó+ü÷ReDù²ïçkˆF%C°|÷œ~°+]8Áh8·¬‚–*×1Q®‡Ö.ÿúOGõçuÇ9òtjÏXy+ x¸3ÔDjz»­µ¡Ã›Ž¯ÇD4L–ûÞÜC@3S W(ùÑ´À®´Ï¯ïÁè…ѾĤUÚGöŽRáŒ/ÚTy¹ÍóuÖoÉ5ë™FÉw†H«+""5„6«þ¡åSfwž£òè PR,eh¥QwžûuË2w‡+IRÍ?¹Ó²™Ï9túR“ûÿZhûº˜vâðˆ®Ú·×͸võ³] Ì ¾ÀCÔ‹Ün#M@ò'Ý÷@˜i†ØH7¨øØ¯vä¾.n^ªZòùÿžâ¹Ð«ÿ_QF äÊsà5üÃFs@á1‡"¢{Þ¶€•© BÙ*Öy¸»ùNñ7UY 3'jkWÞöœ^¸»ÏÛ&Äø{k´"(ôNåJ#‹Â·á¯!\Z9»ùÐÖ@ö“ùþ™Yi7ÒÿÏÀ¦„Jݰ›r×ZƒØº÷¢Ž¦Æ#,ׄRmN=Xòï˧žÃ=¸ ¥4_˦ýš»ÜôqÊrÈóžQ¨Á{n¦T5ÀüøµgSðÏÚѤA×R¨Z>‚õËwKZè,B®=ð7Hí{?u4΀¨Æ¨:ëÓ{vI‰Ùª´(%H&ñìŒíkÅoz¥ß(„,¹ªxk×ËqãžóªÏæÄ{è¬q’a–…o!ôRº^1|ÇF ÆÔ—ôŽT3y6œ;2ÿþÎ-·ÊûƒŠ<~Xþ‰*Ió? ½šçù6WŠdMWÐ%æf‘s˜éxw·§#¡øXª[¥=%Žû °` ûE5¸'ž»£ÐìÁ½†f½˜Eõl©Á5¯}û0Ëî­)ÓEÎæeC4ÿ}îÞ&Mߦ²á´wâH¾µ0öAÂ!¹¾áF=3³cL®áŽÏš'£æ1R¢L‡ì‡ü=„+›‚,'@ßýØx!¹K‚[#œ¸cÝïJ81Wµ²¡çô"­5X 7WÜ“¦7P6·ú/pÛë•ÂI‰ªRÅV†°²Ó ׌Y¾hžu¡ HZ¤ÐÙ£0n(® Øäª9<嵟Œ×²'ºíåÕŠXÆÛA²ÏhÛU†mã“ÃÜ—.‹¯Á‚ÊzæŽ-CÁdkÀb%@…µ@dCu–ýi×)]¶jiöö‚0×’À 2’í"O‚øp`‚‘Ð>ß6¢¬•VçuÖûÃè¢I—¼\ó˜ÏLˆõjúJ³‚ƒj}»–³ExwAAuŒý¯¤ŠÀþóEwHàÕÒ²MbÜí¤SŽÚìøû ‡L“‰ÿ,°«Ÿ®-1©Ê˜L{Šñd´Åû÷¦U@ –<.¹Ñy -µ88;3ùÞ0¼|´hð µQ;’JÄ»é!Ëóî]g"ÖCLDZ™K¨Wž¤¿ •n1 ¿jNÚ/a˜rÔ@ËÇÈ]öÎGyJ”¢ƒ"‚ÔêÚèD0·,Sž¼#¹àÌÃ6ó󸣫^‡ŒÊ<ø+,½Qà$õɬ¹Ó®ðA¼gæ‚Þœ†„´/k¢žÒCóäJòÝ –_c|f#ø)r(¦ø)œƒLbê žÉÅf ïÇ‘)Ê=V69Yçï•m»§¾Õp° AZâÕÌìíU®…W°³ñʆW”=¢º\5 YtK™ s¿ü¬ž©]dæ,kñ\@SødŠwQ|¨¡mnQõÙ¤KÀ_‘û³Ï ZľOcýµ$+j=íÙø¤ˆ%矲$«(ä”»Eeà§tÁO›ó©—lå²Sú=ë4»ý).d#Åfc2R„my ¥»|ùp=æ¥Í†n*VI5h²KË¢I$«ÍŠŠè]b¸Í5§œÖ¬Pß—OR(áè^¡s²:Â|À'ôQÉì^©+fe¡Ï-B©$ΤÁÊæbóÑ®=Cÿù©ÒÁÊóîÎ ÊïƒgQúnƒÂÏôù¡†,än:›†P,÷Ιo„Q…d…/“îUZ´MGO]ù›}[`Ýòa祾;A½­…v‹nhì:t¼‹è¯d”ãq"Þr¿Åöx¶Ò¨>ú—o.ìd©`tté+‘×Û°Ñ[Þ;q‰ Î]ÊZØŒz–A—ÔŒn÷Ö$ï¦×• R02Èéýó¦ ªÀ¨”ï½±ø:Ž­Ðã[™æþ=)(j–›%+ze”Ȩ’ƒsªJ°ký0ÃYuÜQ'’Þæ!bútiÙ}l\Ô°È”í„Sªd`´uï`¥7ÜÝ|9/} 8oUß,¨:'Ñjiâ%?·¾È¨Sé{èkÎ(Þÿa/œ!•”ê6³fÖi]•´9ºYòýLÉȳN˜p#ÍÖ¥|ÿNŒ0ÞV& ³GÓHy ¾ˆóœ »MÖtlz9â ?•y™™Ïá+€gÎä G.JÎçùt§˜´‰×Ç| .¨×÷kÜãMûÀš6ç†wÛ×›-×ÊÀ0_Áp¼”Äôm9زæ?H} ópnÌJ~~3É[Ÿåéq¼S.%d(¥îÊ¡W]Ùñd"ìÚbªé=4½øÔ¸ÓÿjÁ¤jŸ¬ouÍ«V^¹YìÍPAuÅÑzë£T‚™„c³ÙhJÜÇæ¼­™k[ÿT½šüY‘­YùÁ‘:M9lï]Ç«KÅK­ÁsØ~«¦Ãt©SFìuŠ«ø¿æeE¯Ä¿œgÀhÜÖ/6Ô×WöºUêG3j¸#EòéùRš¹Æ1ZÌÅþj·ÝÕ)@Òü^Ž¡ìÃbk1«ìa-¹‚_þ 0æî~Iþÿ#çÕRï;0®aõAý·ÎÚSù/]*ÇÆ Ý“Ú[ÑqŽDšV<#%ÙYJZº ¦Úyò Õf^8¥£îëwkØÅ»~­p¥á_-zž@8–l…B3îlj’Ò÷äºK¾­Ad‘‡²«UIãÕaŠì €&›åUësÌðh ’ø™n(XHĬÀ"ë 4t{ŸV××ê:ËѰF˼5U>¶.ì§[>_FíÒ¹ßGf^ü)AhqÉΑ°¥rŽÃÌÏw1g­¾GÈ”ê =šÂ© +]ŽÜžèr#eé_¾ªJT-·F’–ÛKMZwÚ€%JB–…®æÒ>©5ÚB£žŠ·¬FùháLÖ@BºZ°3nbgI®ÖæÓÁÅ´¯ãøVX:éæ§Gä•ÙnhÔm‹ëľ]º‘OYL·³éozÆ„¨pU§ž²Íb½¤Ì² éÚè1õ™"•cZw ‹Ê EÅÞ‹[ĉ©8M¼€Á7#Ú¾ým°Û¼«sE‡„27~PÌ;n)ìý}¹¹GÑv¢ <úü½eí:õ/­Fãƒ×AÏ烚Û&aGë1 }`¿?´•¢CaÕˆ«ˆñ¼›¸þg¿TâØM}"<vžu™ÒÑwC?2ʺ,D¡û:“ü‹¢„¸v.˜ÄÁKÉÜÖŘ©{mS³5ꈉoÙiwÆÆºÎþ+«ña%×å È8"²‚9KTõ«dkã¢G)Â9Bˆ6$D!9c èJœ\gj‰Í/WÅtQ$rìA{ÉúÊ)ñ5J§jP@a~ÇMÒ͘ Øpº[G@½>´|œ‘*ÿ+N:äÁ*¥n;F?”ÞQrj¿æ; §oK6»jòá1âÀ¤28vd¬@¤ÉÃ$†hÀä®Í;¡ú'í®uÐá‚ýDÜÜ—ñ|Øxg\+Ïå-ä‹eqôfi³Í%¸s…å»<’8æªÉ8¶Aíz¸Çã!숟à—sŸÎeÂ4,§ÛòÇüPa´òÂüâ%iú çãêÄ"Ztå·ÿ)<|\%)šþX¯¾OÖLÿR_š/I¤BDŽáÑ$å »ª 1iKé°"Œê Ï|¶uàV-ôï°ÅW×¹€(gí 1ÌŠC†xYÙ„ùN¢×ޱܰOºŒ4m¡ò‚&C3‚ÆÛ„}‹5‡h£0ʀ堾¹û2ü5pU¡£óa Å¡VXÙ^=Ô™‰¡qæùSÄ4‹ ]ý ©˜jVÄ¡àÈĹsx¨[ídô•92ïÝÐ…ÓŸZ§9ߦãï?„«t,z*Oª¨?VjG^ȰIPüQçA<£Z4RŠ’5ÍMkçñ×,Ûx8ˆq8nÀûqYÕ)|ú ê™¶d~ÍùǼ^6‚N¹5ì¢D€^Qx¥L" &v„ºkã4Dv9<©SaêÌø¾-è;OÜöÉÅE“`yâyIÆÇ¸‚´r*AÒdVóö!äú¢Úf›cI˜dÝØª•Ü$ƒÚQîv…λ›®Ì®ÿÐ*Jåû“”W(h&BZ3N‹2²ÇÜ =sN–øù0möÇw­ÿw‹ûØ)ózˆ—ÝÕÇâÙî½`´¹À Ž3”Ÿdò^`Qª©9j[eʷɢ *††ŒìÌ}®út7ß°L†â××C¸ºn·MH—…ÍNÿ,|4!>½ÀgÜâzìÃY^é›yCô‰›Ô[ð<:oóÁ‰­=ŸÄŽiï ˆÂÉŽø–uˆ‹Tw{.¶0¨âYÃ즊_eäOÄÿ€Ò1ùmRq¼‰}¶zñç6ŸIw†´XžÒ¸W?N2¬ íÜ X¢ÐÕ¿x(@A© ÷ÁwO5^îùÝLªðÔhç‹PLGìu" _¹´×‰¨¦^”­D~&_ ôòo_¢§ºÞð>óÓ èŠoi©0>OŽD]ì"8#"6êÍÛ‘Ù‘T»‹XØBn"óÏÜ-:’â5ˆu¾ˆé.éøì ŠÈÿ'“¡Òˆ±€µæÞöŽŽœ"“9\LC[ö'½›Q¢‘Ï Ôö+Û¨™CcÓþGo¨m«M;q_ó)Ôüj¶êjg?“z óa1cÕµ©ž„º ¡¯ÒlÂ9¨ñßRèÓ>“cp­*ÈâLZÔ=+v`·ÿ ?³è[§Òî˜ê2RÊ;2,“@¾ƒASÃJ'ÕŒ§ÒÆáãÈúͧ ëwÕÉÑÁKŸAYe:Qiô£•6u×í†+yò½èøãiNÕåáÖK¿Ak5n,özVÒ”oyÁ´Å˜§´P¼Ý‹­Ü}µyÝ–W¸kZÂ]ÉŒ t6´¬³þ)Ûj$Ÿæçì½Ø,2ÝqÚzn½,‚–|™‰›ÃfœÌpk„{Gç3¢ Q 3ö9•¨–¿Áö´÷nœ¶Þ5&ꮉš+ŠÀVPžé[²†ÿJ$È3–—‘†°(4‚´_p@:ß®çÊw¼H¶4O Þ=Ö[EýßKšx­±¤N|ﯲ£â¼5U Û"÷R+|òÕ“Æéý¦£,*Z:sÐÊTkÀ|KŒ‰¾rš°dÐYn ÏÏÏ«Úr¼d¥qûØcùk£„1\–FæÆ¿®Œ±úÝŸ³OòÖ1H"5X½òEåÝ•³æŠ'©×ñ˜!vý—âÉ‚óPz8'¢^O´ŒŒ‡œ˜ø®+’ð·TO Ö™ý ^E…zeK૎=·[‹a#“ëë©RÇÜØ†¥“¤Š]$Ÿ|¢ÕAÛL™Ç7ð ú‘˜fçëþ‚+H3§¿dJKäWB_èO™äRp­ #C‹¦õ‚‘¸¹aЛV8ƒ4ˆÕ@ äYµ ̓U˜×ëP¬Ñd7 •©vc\ò¿÷ðÚΖAtçÆ@ŒMί>_Þa9ä„ò'´mev²*Šà¥çY)Fø6G±®ßÊžÐô®|Ë7Á<ûÚŠjš “ˆ ºÕöƒ_ÎpùšC|~ÆFE _Dz"µ´ã½Ãò5îIA'i’†¸ÄYfÑ=V¬À{?1EogCò·ZÜY QÁgºÆ˜·\²|¿=]¤2öؾ3÷Rqôó6˰'—£ðõ÷ˆêØ0>öÜ(íCŽvå>¨+‘é>µ­ó*è@X÷o÷ÅãÏt7¼‰ˆºXsDº@Þ@5‡¾‹éHvz~æÆÿuÞ¢Ýy-™=çŒ/\©Z@ùÈ ªmü®¼1®åQB®í»,·Ó–ü­X@åsb÷¹‡øÕíù·ZÚÑ·êŠ:\®ZÍš\v±ØÒþJR/¦_+øŸmŽ}#‡á#+F|(Ùðúšô¼ ¼œLm{ü#S7Y†Bq"cëui Hô<+“7xÁ õ!9ë¹¢YÏs q\Àå¨ D~ù¯ü#æHj«×þfíJ‰ö9†Êc†m J‘»HEf Ú\7æ’IÜ¥s“Æ%ùܶ U/ÚÏ!=ø#º–Gž5™«Y¡Ñ½«·HÂÖwº,¨1AhkI¦7Âv-Óäœw˜1ë\G—Ê+äÁ(´©ÐL4ÜRaÞ¯~‰º·ze™+MÙ >|é´ê(þzÎ,[½WU:÷°8—€/IhÎ [yÃÇ4±Ø;«±Híöæ¼{NÒ.SOqßZ{÷­…P+8uÄYSHù!‘®L¸q¢î† y´å^•¦Åò3_“˜sÔÇSÞžFýp|Q ßâŸÌ»“O(ƒ€^ÄÀŸ±¡$o¼ÀûHå¤|šF\ˆ äû”õ<ä t[Çè®2/TÙÏË"J&4uol÷wÖÐ07´ø~+ŒLËÛ»„Œµµæxe‹"n2AíÃ0¥q€Ó©`ahM|c¶\wz5O’ᣢ‰ƒ'¯Ïå ™¼³­´þÕçè€ra ì`Õ8ƒZ«ÃzE2z6)()ºïOqüþnL†Þá×ÂP`Ì|PÖî4eµT *›ì³® í¿–•ÖOzI‘Gï³ÙujÊG_m‡¦ˆ¤aW„>C9;Ëa™/² x×°…Ç,Ýì8692ÔÛdn¢oìì°ãÅâ¤nwŸèâ•KþtqüÒ€¼}´Iea@±*“oLÝãÁŠé^ù²›—ÎèIݘBß?ùKòô•Mæfžµ;þQÄ)hL½SØë³odû’HK6oÁ«H¬MD%<½z ÌÞŠÞ>oë´ª0Pº' 9Ö”´×½µ]u‚‘'@ ĦÌ0®2¿°ÔÓz9^xÌ^œÙ±:8àuæœ$3ÁnfjÌæ6+Ùß DÔm‰Jsº;qÔï0vü c€ƒw ×àÕÎ89žƒ©ÆˆLsó!1ÈJ‡ÍáŸiû´ß \ÚzZÈ[o Gîy ª†wD›gÞÔÙ‰âÝÝ{ôãþRùGh€ÞØé(ž#®ËØÈ*5&`.l¬®t;¶i:=uðÁ’¸±}½²®ì\¶—. 11áöº<#±·ÅŠ mÚþlš.9öu¼£øG‡"†¡§ÍW»"4¶½'èJû.‹\¸Hæ/ØJòÊv…:N 0R¢ãëS2ò ´“3 $öž‡É“}®'#•9g=èßþ$Œ»Äp¶L\úò+û®ôÜJÞ3Ç]â·1d¼d“RþA­QÙ}ߟ‘¨ 7€Þ¸PU8p»sh} ãê×?„ÞNÔ׉ºÍ×À~Áø‚É‹Ý4ÃÆJ‘]YCÂ;q;ÚÀï&ºÿN]ÒÎùîKEÿE%mFòu,`Œw6ÀV¢ªDŠÅE¼ÃFDÿX|°¤0ìÉ÷Ã8Œ"v$’ cÖ"ϬàfeCœ·»q(Ð b6}ž:Í[M[mœ“¼ArË þ©þ§öÖŠ!š{³ê„'Œb~Ú’/¡áùÖÿ[w’ÂÉicpve˯㌠¬žßÜç¤i„‡ë®XøŸÕÊ“íÚ<%Úܨ«Üĉ­gf†¿a­ºZ ;¾v!™qDÉçöÝm­Ë)Í­µ#ý ÞTÊoÆ7µûǸ\’‘LíŸ@ u¹¬ Ußú¾ùaΰÆcp=é Xµ¨zY´Þ>ú~ èÁI vk*{Ü„+/}þ ùþ¶ê\/e­øÅY×ÍàÁ¡B!:“?B†iºl©îõˆ?h"÷ Ë4¨*œê¾¨…Æ^—Ùã¯+Ã1b¢, ¨±zM%ÿR^Ô£Ðú†Ï~ÚV¸%¦ä¾.ÂþßNrMËî9Eÿ5Óz´Žby-’U²ú[1ÕaÂeåü쑸ӗFe¢W•2r¢FòÁnýæO+®´eTO[BSIEaÀõ±/º-µò¾{,Åsû¹ê ¡¹ä‘î³PkÖ,F¸_',]"V>«'ÖŽ2œ¹c¥Ðûiù%NMO­À®ñëƒÆ éžÐѺªÊèò›–ÞzœãRÅf¯b%=ÄZ>sUÿœ6²;ú‹Ývæqp|$@Y³9fäð·èœ×S>¯Û;füÅ£ޤ‰ðqÃ8Nmƒ>þWÉЧ® #9ù:ÛsèsÿýÒ— ƒH݉/ª~:†ŸÒ<òTݺâ´x«›P)Õˆ„Ÿ¹ù‚©NL/ÖÇ öˆ..|ibEowh÷MŒè¶’Jh1yDZs à>ÁÕ„ „>·XEgø ®M”Ubù%7Š„¬@;¨Ö$èN¶æ R Y[™?6Rõ½„!ç’IJUIµ÷”ˆØç˜£ÎTØ(¸× ¶Û¼·k&y kÌ­@b…º]žþl v”W6|n÷Ù™=[†¼ ǃ3dóg6‚êÊΞ”0ºF[QãöM¿,P¬§4¸ž¬59‚J?K(jÊSöô´ Æ} /÷_ó¡RT²í%ÓofˆCäÚM €VÏ=Pª —§§pY¬U@¼Ùá ÙÒÁ,û”(‡«T’D÷ÓVîQ)£òþÊèõv§ü6ëÏ(`)ýT:=1íJ’üòß¿-²ùOU/RH(?uIcýVÊyûÝMFt ¶ÒÇp|ÍOÍSúÚ]&s˜ƒÎ!Æ­Rwú—o㎮2ÞFšD¶Â¾¬5hܸš÷‰SÇ^Áò.¤:B¿SÉj¬xw4„S@sÿ#«Ð/æûÙ;sxÙ»ß²Ñ ^ñ\Ì*éÁ·/¶C"DAÌ/W#{P@TËÜ“Ú[paHl¯<%UË?xâ}ÊFÊ‘ŒÒ§õ¨­ü Ô’âýë p  ¨)B÷cȾéë9¥$9F¬ûO”õ׉?ÑëcºD¦f¥;CÜ€0ú˜V¦D;Iwnápм÷Îg§uá; a5hñúŒ +„WG' îñF𔠾ݽÑUŽ9ØhÌCÔš£Â5¹DÑè;ÿu „—רw“œíËWC± 7 £ÏD(<'æq/÷2kíòFp™µ4KîôöGW½ž4¨®Ëñk9ÒïHO=Ï…¹Â1õ¡MÁœ”jöÁzÖS펚²0PŸˆ=AB³¸M)@8=op†ÅýdÝ|ÅQèøöÛ°:uD,ÎCî]kA‚Uãþ{­ µ.ùÓè6ÁÇË÷_æã@ª}h$ CPÉtʿۿ?«\hz?÷ãšØ•“*»Ëï—{¼áùZy_|4 ኹxÖRx‘Á`Ì ·¬rr9ÔHˆšéo(ù#œâaÆtnþÜÐÕÖêÔ£´v+7{ä—²ÎvçూQ¬t£c)7å!V!MSšË×ô·¢`§Ýõ7ZE°R˜=ŸÛ—΃l£Úù)ïZ~ö±m‹"ÆŠl4E¹(ûªKTk‚ÄHaßä¢Aû>À”޼¡ Di@S±P ‰[ «””<¢ªºQ„¤%²H%Uä†(bõ¨|õiüô.Pî°ƒòºåëHóçÎï0ÆñÆ›âv#XHø†ãДjsh<ðç_kž€‰åAüs{r8Ñ»w†“­òXÊ@‘Üð‰6¦é&—·@Ñ=×G5ž'¾ ›rS“]ÉžŸ#®w™’O_&ý&3¬Ý=A5‰W,ò#<i¦??Qj‚Zö_VÎ J1Pa£¦Î§{[§iúÈgHÙ˜Õ@.˜oô¤ùnîªu »û jÒ¶üó•M“øGÔ7 r¡QñL±¸‘€Úúͦ׃Ì?,ÎÒ÷-«¾! –¡\_±"pÚ_6cVõ0q& ŸSíÔÀæu¶PåÊ4ƒVKö0§Î„ê´LÇ@S;³É}|ØÐ4c‰Z§”H+òïÕ¥:{ l›—½Ú†¡ÒÔ0Šc9öuÐÓ2Ž”Å5ŸH×áPè‘&ú¾ù©5\hpóOÞò!ÈМQÌÑ)uiikãF‚…ƒ!¹ŽBüÞï‡ÿR°buÕëN9Ý,žõÑÆ|6å·(JªG“øì¤Žç'NûKçïÉ(á®)¿LÓÄO·~Ä<Îùá¬tÔ†b„LnÇi©ô½jŠDNeã5óíJBЦÔV¤Q€&+óZг0´-Ñ.@ešC'ÔNÉ.Üt€Qûú M}z‹ùɘÝ7vÕ¾„=µÒNÂôîé<l§þæ(Â-¶YLéÔôÝ»™*÷^§uQ׆¿ô‹ÅÛÍ¢½+eEÌ9bÌÌÀöjá«{›ƒ¥æÞªøÈĽ“F$X/o²ÐSÜ+ ÑÂ'<ÚÖ6áÌÁki¨2ˆ Umž5ÅÑÿ,î¨<ˆuμRZ h¹N{ú4fl†uBÂ-‚EžO*.5pœ' DùYáIcað»ïkrÁ%>Ο¹ÃˆÈÚ¿úè‚~àË ½É¨ô‚?:Äàœ+|^ì7g%ì"ì½Iþ4ÔÕL\]vU‹Ói0òCƒPˆ”w‘ˆ¼fÌ›FÊ-+®ã·"Ù”Þ^&’ömÆZg€ªNÑL7¤B‰Ë vz¸¯DÏze³WL¡Ð ’ZSôûHsèõ©õ–½ 'T•ìY®"˜Ñ“´ ß-WÉu´i¥Z¯ÍâT7õî럭³ÔædHCZC…Ç"IˆÃ ‹ÛƸ q…(¸ôžè[Ön6ihZ–F‚Ê´lZÜÓ%•Ë­zÕiøkušü7" y, ÓÑÎ5?Ú™²Ö5(ù.‚¯R‹†ÛšÚÝÅ›¯”ÆÂÈ ¥%´:H­-{äc!5ýVvGÕ2‡9©Ÿ·1‰F£îfù =ŽÖý?Nv¯îD†PWñz.©ܰ„ D~q–UÎyw½mêÒ£B~êÂð½%ž°VŸg#­Ç=Šs†ðyn›°Êîñ+˜,:òh€=ÔÓ&/(ÉákƒU®ºÃXsö:ÒW¹#EÂà§¥BÜòr‚¢(á.RŒÁ9/ŒGTXUêˆVKíIDÄ#e|)c—˹¿8|Ÿ«š•üý/‘Å¥lJ’ϵB–™¿HÉ^5ÆŒú]°w}|»GMP뙥ÜÔÄîMª4 gÉOPN’ ú"àæ°ŸP§Ed­h®È©Ü£åã­ñù?  åä&liúw*°´c$ÖNSà”Ÿ•Jû© Ôz*pŒük¡j&:¤™Êت´yò¹™aU¾‹Øw­Ò*Œìt¶”ö+PçÐÕVCx«H—Â×iÕ,ë Ê55YÀY¨ðKtÄò(³:6mçôÁfÐz•Pãÿm2³{ÙgãÖ ýœDŸJK2ÛfÕø­ï¦pZ’TÉ% ÿI!‚J•Áz/Õ¥D—%IèǬõÌÊÏ-[ØÔ´gDØ^°Oúg®Ö!-¼vne‘O¤‡hÊÝ7¹ÕébM%ݲÔ=‰â™q<çrQÛ&ÑK¼cbL9ÍtÜrÿ%ë)7,¦°®‘¡ ˆ'f¨+|<)Sèu*OØëá³;T£u`ßQ/Z'1-¬òŽÖÕ\cú$Å`C~ÿ‰z`¸÷œHs=!Zm‡Ó¢,ƒÈÊgÐ=ƒ0àœ÷™œt¦/É!”ôž§Ë¤†i÷Êz¾‘Sí³7ã''c¤ÈÄò× v¹vËnŒ¼ÖãU­=5'-Çgƒ|]!vQ”ì×, ½Cñî͘FÜDT _ab°†¦±Ä#„Þ. ÿ/Úºû£ã1€]æÊAçþîÆ§ s'Ͱ¸"Ö4ÄhìÄW t‚«)!iP’Ú’"ø~ðÜ.m."òâ&=} ÔdhEнoÄøº²hÀÇn1JV‡yª"}QPš*¦wE }ð~0-è+.|KÜûªÍL‰³jÖî& -©I] yc§ðFé‘^PßÞÌ**·]î2€†’É0µy·µ ’B?OgI¤â·±—`ÑcmÚD9óˆý)’ÖÍ(_êEƒ°–¯’~ôå ìà÷YÕõÉå£ÐþHËJÌXõZE)q6ŒðRá¥åÒ¶¸pOàÕS3˜!¼Ç …Tz©Èá´¸¬"K!ãzE¼¯¹ª¹©H"Ù +¾G¶‘нm þ€Õèã”o ö‡À&.•ûôŽFSðÑ‚¯ñ9¨N|ŽèÊÊ;ù}0ëýó åW±ÑýEcšgÊ_ãφ}_,£š-d ¤}BØFíœNÂô¶1ªÉüò9г SnvÍÏí#íÈ„op"9ÕOX´sàvoÚ„Èe{r­‰G fZK)Ð0蘣ºT@VŒE÷ÙŒD‡Ñ6 –U?ù:N¿#o>“U$ލò ¥Ó¼ì†xöéyFº’J:Yîê|‚5· Ñ3 ¿âncƒq^ú@ñë”wÉZͶËg}wVu°Š’¸ï­ç$”pª‹—T³}yei¦) îa)§¿ê\y%G"ØŠÍ÷Ÿ)Uçœ!pòqÌ'2y‘õÞVŸ¡‘;/¯vQˆ¾ !hŽEIß³JÕ39 ˜ãB¼Ë¯6º ž]Â"'½GX ÉÞŠø 4‚§©£ErÎ{;øõn,ˆ7Ϧ™T¯ˆ…8!÷8Bãö©:--Á/¢¶~atPpµ¹UCì¸4/+Û#uÄd¯F„/´óŸD)b0øJwÅ #rb  ƒUU½‚Q¤ü€bÎÖ­Ùå­Âõ”ø4®áÓ¹¹¾C ò–-®g”Ÿw-J‹DýŒkŠà)¦°0ÀR±z$Á€hñÛ>|˜¾#Û'O‚cZ¯nŽ@°ù^´br>ÚþÁ27}÷Ó2äØ˜¼ÄòiLD‰‚£uÝä®,•æ „q1ƒx%Z‡p© ˜ˆŽM¦'Óyê2q©Öæ[á U2@åSŬäþŸ#ÔøJnóÀ’¦œ½,ý»j£•ü¿Ç^¡]8^ŠLãÊv]Ô.Ýøq×?lfYÕ` Ø?rL&Éâ%-dÎ}D‡.pÿ# %t­6,fݳ¢ šp¢ïû¹§ CYšÅˆ [pUŒº´eÍÊûôjÿ('¼´ÄbTU4î)Þœ‘Q`é)-ÈõgRiagŸŒÕæ/Ï«·¡T˜]‚iÅ»ÝÿH{ÎEJ™ EÄ0N3wd³pöC’2®£ T¡±øÜŒ9äS³ÿIbÊ‹öãŒZm#`[:ÿ´…+|Õmÿ't|6BHŒ§2_åéûìU¶Ïi_9 À/ÑjÒ‹‹wýSð÷ª©ƒ t4$}Iuذ©Q8D•xýS%†ÐìŸù{æþhÑX‹ƒ }«Ø«Í¾…|JlâA*ð\ŠGЫqaªxIÙ…eñ2·ww6|Ÿ)w¨€ÀêU¹¼qÙ@h8Hñ¥w.\( gVq4ŽtŽ;±óÐ@…kñ1úÁbŒ„g1ë‚þË5¨ùÓnOˆO%(f˜—.ø_ƒñ`¬Åô”úe£•ûŒuo#í¢¤zpÖ†Ù®Ilè¶#]ƒÞpE0ßò WN8 T_«&ÌõN…cguE½7KWÁ¤E©¬å:1ƒ;ŒÞ?XÀ¶U³‹ÉÇ!{î*$qà{÷ÕehNÜ~ƒÏ¼ö‘åäq” $<±¸ÈI¨Ö1+b²¦ª OP\ º®¼Í$¹þÙT**Pù¯—(ÛôE´%ït^ØR}­SêZ (s}=8 c¬•«Ó•ñy÷x$,Q¯æ_üÛ1Jè6[.ËOŽ¥ˆÖV厯{£¡Sè¼ü–PH(çEü‹2NCh¼;7Éa Ût‹$I/ïÀj= ¼¶@©[lesFŒ9B[Žn¼Æt4"Ô:Z±aóôp;"2›«jë]¢.·‚}4Í0Ìd|”b°XíjùÿOŸq!ÐOš”ßÒ™(œóeÒ‰e¬Áž\Æ""±ÂØÖsÛ jÿ4<\Q&ó'Ç?)ë}?Øuµ@u©õÒ±|‚\cÒÁo2‘Ù8ùZZ j7„)Ý,è-ùe¨â8ž«x Nš[ïˆ Þ+21¿/ÕF¥¥p3 £©…¬Öl|ÙÝžs/¢y5XRã¹SZìI÷Ôñ+!œ×zÑäשϪÝ\ųÜRlûo6ç@²Ô©?UˆÂÙéÞ¿)ÜpÅ’¥[÷óÝMЫW'1 f\Å*­Yr”Í)¹”—q­DêÓ¶û—Ãeµi(Q@Vý‘€ŽYd¶”'ÞÚùöK”šm(­£Œp–¨sÛ»ÊK,µB#èq_‡+£~ˆ&_é?/Àw»{múÓD»Ì¤’{’LÁ2îÏMÜï è€×·V~…ó<ä9n%X‰ÙyèJs +%ä~8cŠõr¤ÕAô~(B$ >`6‰CžÈãNóPªÎSá ”n—²—fǵυ`ô0)é{!ñnÀ"í° ä=¾Z/†Îj¯ž«ûy¡[#i7sìñŒ´x>òê’ŽÑQ_ºÙ ¼}qßÞ" Ö©:· Ï Î3Ÿ4¬Íáš²V!®¦m´f‚‹lfÕô±…l-‡Á°6ÝñoÜfÁˆý>ˆÿ3ð·ŸãX©gàÚÂ]mIwq¾‚@‡žýðV@xŒ) Q°ÿ‰à>˼òÛ~èpšâ¬pB„þÞkÛMÔe¿—¡q×±­Ž}(±&dè dádKÛ^‚fMÆÑM2­ê Œ)fÌÇï,Íö] ÌÌXÔ x{ŸŸE° ŒgÔ1;þ±çb×í¡Í¼"gÑM»ùºd7}ì¨ÕZp#«ÃÕ!hï¶í+Ìþ(â bŽh<ýc)J’îF:Jªé;ž`@SQ<ÀºÈÕ¸j}§o•µRMÒ ^ï‰0²GÑÇh9ì’ùBE¢‡4ÛÅ)º~SU# ÷“ù.¶wTÚ{ˆÄ—¤'Øßh-|;‚¢ðá¥Æ…x´®»*NÙñgÿSS`943iÁT|`Fk6$”ð•ØšŒß÷òØÊ@¹ûfN°”ÙKy níGÖjq…®êè·n.×½Si˜€KÏdChF»¼dš:*É]?ÚMjOB¯©ö§Ôýð’Ži×-ê—p”mýmS0¢îý; 5!Ë È}ž$Y£Âçe´LypÝ+dO°É\·t4×ßUñD¬g…ŠJœ¶å22‰Pfÿ6ô—¶PxOÕ†ø~¯¸½ÎPOÛ†$Z·š¯[˜Tqú`V/XÝFyISºTÞíü8AÀe+÷)ãÑÐLàKcáýB±ÿ ¾ò$=q²ÝjAºwû.µ©*A „¥“!oz”æ¢ÁK6ÊÛò™AX¢°ø„÷`Dâ2þŠ™Þ?ƒjuþa Z¡DËýw‹mš Îã•x]B2ê#¦Ò&…¶ýöžg¦Eõ_¹7ªz¨ŽÕTm<tµçä÷!¦Žly }»×§­W4IÄXD•d,ÃxÆÅœ³0ѳ·Óægç£ñ³F™&séœO¶­ëš¸Æ‘\N×.ZŠdôƒræT¨ãÒ^+ÈÞxƒ­){“&TÚoFûQ4ñ5ùâsó{®t ,ä4B+Ù¡+ö¿.M«Ï¦X¹ÕGÂýÞ,J3Ë­w’®±Ë¬c]Ÿ•ÒE楱½,Ÿ=Õ#øM/°SCGDÈÌ™ RþÉ>‰À¦ÅAlŠì häà§\±Í‡_¹ê蘔@¯ÀÊ_‘3ŒžvÝ’X2c=ši› %§ñk¬*›Tm+pÔˆRùýþ3)íC^LË$)"ÌUyЗÅÎQ×Ró¯#ç3舼ÇÃöm™ÕËÖ‰ìðÖæ5Åm:"¸Œ¢ŒtJ{º Q¿ÎoA×ú²~Øî»ö;ùŽXr€•Å_YЃ½$^< ªÐiWØ‚Z‘xHFo«›¾Ö·åz.‘7ƒŒÌ#¦˜ìi9ÛÙWžAóòšåBÚ-/éé¡èT÷}éëè˵a v2OI5Û*3NÃ&¹:c¨ïo }yOMRûócjn­•S ¢l“KXMþÀ³Øg3Ç´$ÿ"RŸ¥r*eUWô£ŸùžJaX^÷ya»·Ó˜T‰_´évs\žèFü*8m”^ðBž?}s@¬¦óÞCÚÇ=P‡ÄÞªæÍtzi·5˜HË›…± Õ!ïOƒž•Ž×™?­‘Úy*Ì„É=¬WL«–S#q»œ}ÀL8M5x¢ö€Žÿ{VåkEFË+N¡¿Ê8 ¡¯€Ä_…´sîïP8G¦„Çå%2 GªPTîL5Ýc4G“'Ãßw\A…|“Lµ?oÏž1Väêæ¬ŸÉî´Mòv:©ŠnCŒE¥(÷fêpã_t{.»Ÿ6Ú Ç¹9 RÁs\>âf üèüˆiÏ¡=kïñNÁace.ÖeÁU%=ØXpšý…Ž^ø_ÏËR*g°"Å"ºKbÒØ¦ÂÙÝ“ØÒ:¶^R0åyèA‘›=í0÷Ábà£Úñ¸Øjž{ÇØg)KRÍ:0ÅSÖ«Ü¡w·e—› É2Eï¨Ù,q}4 ¹,š3`ð¢:Ë#»o3¨še‰ñû'Ó‘ Žo@ÖÆÂf®vÙ0È`KãØ!(v^RÁ¤Mré K¼Âc$ýyþfØÙ¸°íHZ‡ztVgÇð®vKÇÖÍ:ó .øZÖ³_ÊŠË:LV‹Ì"nöƒB'´¶/šx±™T=6•.û9ñ„Þ£Oõûù6+-6í|8ˆéò™3â¾K¨Ì™ÍŸ§Ìm6CÇ/¾¨;Xd…¸c’ƒýtfáé[é‰ã‘½(\çôЙíÝ,Y6{9*÷›½0ŽM5Ð ÑpüŠ0ÆxÞË¢ö?Åšš´‹ôÃ]i&¯€ÜL®É‚D…J›S;*«¡/üž'Ì`毠¦ÂøX:8m©eÌ[Î;嵈Œ·NOÂÃ:ܰýâÕµxúºÑ´Š QFïöûí­SöÙn­+ØK2ê›+ìêš}yžœ«S+¼ó J]„,°=%ælsWßx9úxðÂ’Š„åëg4Ñlüy"¡ÛeÃâ†Ϭ#×Å?y¨N°•ìÖs¦e ‘=L­ 3Ût%f&•’ccÆ¿[Õ×P£mñÌáWë‹;ð`,Ü™_z¥^gL©Ò±5ºý»£ ʲV)é#Í¡ylf/Klǘ\là:_píG"a‚IJ†Jk#½™‰Á›Ô€W[ÞHt x“ŸaQƒyÁ ”òª” #P•Zª¤ÐŒTƒ¸[çˆ Áž[ò”3¬Œ19™•ïÏdþ›;8¡‡ ý¨'¦Ä*µr¶zä uýY2³o¼ªûgþ ¤Ræ¥N4k³¸Ž#héðT1ó×°8%Ñ¥ZpõN^ GâjU⇅õäN5¶zESÑß•VÂk„¹%£¢ÄÜ#>YÁ¯½è6g¤šxå;á;Ö—Bæ¥Lˆ¿Ù~ؤ€þïýšaþqEƲßôóeR°Á@zåÆé¿Ë|µÑ~áòƬRÄû ÍH„Ô^¾€)»£þG’z]•K¨Àp€àCm³ÿuÆ¡dJIuê çG{üA÷žØï^·z"]Ø4¤TzëhÚÝE6úÓô‘æ —ŒU<ÔŒûC™í­J'í²ˆÎmÿo™j5/ªímh’LðF’Ú>K-]Âpå¬ñêý¾Ÿ]x®´/SaÏG\TC Jè°íŠÙoàOî©;#|DzôSÈ©nðwZa0¯O5V*iE0Æ…¦‚S/Ôå2j¤—VÜgãÐMÿw:ìŒïH¡A Ýtnù¥ £k&Ñÿjs$a¥äbR€„][;l˜Å¹^–ȆdBTk]õ5Æ „Qæ@«~×6‰ˆuÜêbßQÿG×b‚ÙÿZy‡S÷tg,­ó¢­Ü­NÛDŠ;‰ë, Am)²‹-øþ啳ûžP6àÞÊMU¥S—v:“ËYÃygÁÜûM«m¿¢¦nÆçw½é†j+KûZ@ÔE¨ŠnX7Ñ1Úkí†bˆ{‰\«m„óçFRd Wª Èש¦ý;}A«#ûEï!Ü:gbÆtnÅLÊÊÝÆv÷Ec§Yöêj6»O0ëȂuÉéÆÎ÷â›8ºÁ©[Ï<ùJº“f¡mz³ˆÂˆS[yAŽÈŠó½DÓ[Ñsòì²#Ó¿$Ü;¯-¬yl•eK*€¿›CÙÅä±j2xŸ%,:íCAôºäaÏM!yC^ºRÉ%ü6Û…éþ:¿íÚ7ŶQ¨@LìÚ×|Y,t‰^.æf®ND\zUlÑþ¤Œ¸Õd ˲¹½«+U×+²‚}ÿÜð P{µ:e€H¾³¾MõÊgœRÙî•‚Œµ‹ÛÙÎæ`;¿kR¡Un,¶¼™“”xMãýæH Ø«ë…jmd ÛKyŠÜ£±±O•F¢¼K~O.LŒ¾‹¸P—ÂI€3PWò2¸Žtv¥ ŒWVj"TäN"E2ÃÅÏÿeÆ$úuJÏ^5‘)÷@9· ¤< š° 1(õÄóè"§6ŶŸ¤ql>…ɺ«–”ïy&ޱØôÛ âS*­·^íµñB fŽ‚^Éáöí¦B,4ûÉt .(5©MWoî~Z¶lUNåß_z]ÍÈ•M)Ú¼UÛK9?qíØR6ý튯ìãM1ÇØÿsådÅ~Nè…ñÒ5Z(Ó¼z!„¹A¯Å&ðÕ£[@8ŠÒÙ‰d†úWñ„Àûþн"Qóœƒèú7ÜäÖÅ"öÎômሮÀ„Ù$qR[½—5‘ïBïÞ2+ý¸S®Y!ëur‘̸»Ì•«íz(6"2|ÖO‹0—oãÝØ?筓ʹ)UÕÞ³I)€ŸŽvEb— ‹ðd%™µ ÛÞVª²rÎIW¼[•wfÜðX¤e|•$5ÉÎ5­¢9=vUú¯W°f×bÝÇó÷~Lۦ̖+Å£;Y§"gÌö0õ,GÚ[nEß–¯°Wä6j! ‰L“„ƒÁ1DÈiª_x`2Ò ýN²åîÙãáÑ:ÉŸµ´+Õ*]‰k„aåÞaY Òõ8*x“t}•2"}¾¡k°rÀ_µálൢ7s0c0öŒjºÖ²?o‰—7:Tö;6÷ç7CÙuaÈþ<—ñêèfR]¶Ø„?Ì $ þ]V„ýƒBvüm±AgÌî_í7ËbÖHÛ®·úÏj¾Á–âŽZ®[_¡âVé58ŸB¾I~}Ûíh ö TâÑ™á™{±<ø2“é•çÓ‰Ûú°RÐY!qÀÙd¨Ïüâ’Ñ—LxÖð]Ut³¶ ¢eÖåËÓ»¥Ïzñ-Øä{žÞIÕòK@ròʨ"(Iähؾy㻕Œ“'Ñ&í;ÕûèÆ‚ÈDùÃ*{µIo±pýô±^‘Ý _È c–y·VÈ‘‘-IDÃåÑo©ƒ™hØSØ^ æF ÀÅæ}­/&Â110 w1¦Àdúæž ™{¯Ðm¢ä‚éú°¤½C­9GUÀ!ÕN)°|îߢÔ¡¥Ô®†hr Ýsh¨!i†°™ÅcAZ½Ñûž; ‰íç ªŒ9EœËÛ’Õ5‰¶8¾…ój\3ÿ­ê¾8ŠîB¾R§ˆöÆîæ]Fïðª/TþÕ€vÂË|m—½æDÀLjªÿ"ÀñÚ«ýk[+¾Ü²Xl=REõB°y-LJÜëîa!¡t,‰–Ê<€52Õ—Îaéô7˜*.Ù¾/!æàaj"–ˆVË;¨Ø3ð6Éœ?ÎQù@ͤóe2²´ ¬޶1¤ƒØêk;‰ä¼„uìúÙõc@0J‡ä‚`–‰¥UèŠMBÿšƒøT¤Äá÷!²0ÉP8Äoig ô+½`·w”‘RÓ¬³1f²o'¡‚U{w¥âäGÕ‡FÎ,pT6Õv=øøÝ"qJêœs*ë¯å×|´;Ä;Úò9BÇU^‘;Í31³X¹8q€ÂB^*ÀÀInfãêUËÛq_?³_¢ubÝËÃ}ÀiA­LÖQ¿œÏI‹óùlñ@ïÿeË•¥t:Ë[m`ê„g©šÆX+ô5CâîÛD,qc~ôÌmœ‡ Vœ—«¡¢ÞOpb8Nÿ+°­7•átTÿíçÁl)˜M§:?(’ $Gjåpäã#ÊPæšÆ\¤]µNPÓÕu·¯„¨ò++%¾ÚJY‚LÑÉa“T¡ òý ±bhvÜΣéÀ6 ÑÞ3’Þ»ò¿,ªvëØPƒÿÑCpaâžÝðª/Tÿ.DÇ×`¾ýJÈ5”ÜU‡ókRiŸÇ•"=½¤Ìvx# • ¹VÖä(ªJCpóT¦²[a„„¼t8͵0J÷ ¿Šô²,#U:ÛJŒÜU²c¢ª0ù'7+kÕM¦vÑënËhëÑp„ÅÖZh{ƒœ|è4TÄMœ§}BCÞÒµäÖò“ÃRò[²'Ä/›¤Ø,»s"å+åK>BËZÔsh!KHõ›Tâ|Èq+/Ô9zIè¼·=PአÎÏ\¥UCM>)8ÿ2|K;–NͬèjBqpȆnµ|ùgŽîhuTà7®½¦Ûc›ã¿˜HKíOð0 €æˆ%¿ÿ,††m¾^&^ìš·=ÜVp3¯W<ùÛ†D†(·†añ”é²ñuLؾB¢hDë“ÙæHÈv×¾– $%6Ž+t'™Þw£ŸêЬ9jg‚· ™àlŒ2T S>“(pàþ+%Lsbâ‚5B†ã5È#!X¼e_ø³;å¬0㢬!ÚvîT þ…îZí…“¹WtÎ ±¢T«{™©zŸÖé]eŠÈ¼wãb~Ë£¹#íØ•Î9>V6Á†XµV ×´›m{Š?×'’r¬4  mBM>œ©’œö (™’­v9ªÊ ­ª‰0”Z ¬&¿¬l-Kác6íšTñy¹”¥¿¼£î\»'Ò¢þgsQž¡³ èeü†š ú3M}òÁð =ó~6>ÍÛjbF_%6¾>¸äÓ¤M žßNí?ÿ~mã´Úÿyþz€N¤ öÏîî'¢NëyuQU#Ldö|OPÿTK_Wjñ:49ŸñýÌ⸽H1-ˆiAÞŠŽ-D5ÏÂÏë³Àš~Wpñ뚘þ­Ìû5ƒê®O„Œ¥ºä ¦0E:sbépÝjÝôGµiæÏ(Ê»D­°÷“Aü9\à[M´¸Zz%¼LÂjl¯Qñ{sÓ퀩~-áXøÖ tV®~Ü~Ë–Ë F44Ž$`N¨V'ù†µÉ£ËÒá8ã¾pÑ&ÌuñاBÕF5x¸W» òô†¶´õé¹¾ Lt%µ\õ ¶½ðb?‡\ÈÁ:°’1áˆÃ'ßãQ¡PcljÍ·ö£¯é6xâ–!ॷ…üI*—=Ö"ôßÅAJ¼õÈÌÁÁ¥X¡ÀiÇFÁŠW°W‘.ø³µuÚÉ“&óE—»¾<ÌN40ìgHþJ¨¥¡]ÿXPÉ™ÉJàoÁÜÉIxãqðÏ£“µJTÖ/uù™;F¼´z0o¢†´•íþ5¹}Û³‹ëbæWxª[Z23ÏÒ¥ì8¿!lÞqÏ‹§ÍøeôÁ5:`ß'E]h›z®qY¶kÛy; ß…@JDUÝF¾UŸô[‚\•þ·|ý¨¡d®9z”˜¬$ÕÀ‘(øG¦É ¥Nc^W=<û‚àlµÄ6<×rýS6ŠCú>å`ôñîM´P‹jš7­d¹ *fý2ìŒ?¥[1m,MrolÐiÎnØæl…ŒUÒˆíÑÚÝ!­£'ç¹ÓM‘Dÿ‚Bü‰¥¸½ýBÌží—›‰©P}g7©©«CÚ¼£V1Ðï`hߞΠÈÛ N]é^ðñ>‘(Ë÷—+UÑq‹Ésaà²DÞƒA¼L ›˜ƒ`?¤T3ðB V¾Ç]VŽ¿“))Ž·=ùÙ>c f˜)¢iG`qÄ1¥T*ÆhÚâãNq‹2öÚ`I©) 'žKg;'Ø çpµ¸À§kõ¶¦Û™šˆ˜_Á`¥ÓqrôÎØ®‘›’ܳ®i·Ø ]¶å‹•ø«¬¿†‡tÀ©0­ì}QP"*(Ãɇžï†U~Ûcè0¦TηLX\Ì"<Œ¬˜ÆæëgLáŒE‘ƒeìÝÎ|\ÈLeŽv‹_ש 6›î^ âb/4Üy›™´$qQ< #(Á )|§pâ+Rñ³¬æ®-šÔÑG{ËW…‘Æ=Ü ;Öë@yX.ïS£`”]î! ÓqëòP©tÅ.¥_¦ñ3=)Ó8±ìÙ^üËÐ=ÎiÆ 4&•‹„eTÈtÃ=q/®—:6~‡Õ)ăn§9uU¨å¿2Å:ù†Í.õÇïÔMuñ1´¿šÎÒøj»û¢QHmŠ´´1Á|ô¸è!¹£ìµø,.`01xâ;¹´™BØä±å¾½ìeÙõ ¼ïƵłkñéLN  Á¢xA¯q˜¹ÄX (¬iûâZÑ…Åw¯ûÓ¿C†èíVncÎ|9 ¼4²nk«$Š»¢¢ ~Ý›%<À8zÚ6ÕPÐÊË$ìc‹ ¸W™¶ Q5êß#ZÀ5Wà<(»0âÕŠ§N¿˜¯Ÿe&ËYµ»wð)ú:Òõ ÏÞàÕ$n88êmÜ}Ò÷ìÞ+PWa«÷˜ÿNLŠÕ;HÜú·#Î/³ÿaç¢ÝQ1GgS£CFŠkÑ×T»Á”8"š½ŠM­:).þ[ø’ô ¨x²ôS˜…+ÅÚRN !êã»;hl˜p@˦ÃÿÍGúÖžø<¦wªj~ü25^~Ø!Ù˜˜>ÍÒ‚ú_]uAæð?”}®lERœ3‰~þã\³¯@1`ÂO¦^^P–ßu–Ÿ‘‡y©Îçmh÷¶RDç…ZÂK„Ä÷<œê!2éËöµÑ½5 ÇÙZÜT¼b´Ë]ÈpÕ˜u-[DC+ÌÓ״z—«cø`‚¶Ф¢óf¥ Ù§ÿ&ž¾ÜÇ]ëvó‘çLtXdÚh^Yg޹³¹Om w Ï’dVMxâlO›?XôÿT%ÌqÌ‘íÈ«ð;÷ôÌVå~€Š0HñÃnQíö8}œÑ$V¨œ˜YâËv±5Á^î/¶z”D7{_—®e×VU»h N/À⛆ }Zó„B¶SP%6°—¼þ Ç™ãêY†h-Jò—Rôú•ƶ¤Ê›S’·¤ÏƒrÓ‘-³}p:e=Y?õ*û‰]|aù4\Þ¾±F3§|£ï¡‘©_*Õ ø?a½ j ûJÍ£°ÁÈ£‹Þ ¿fE…íñp¢ÁÅu|mÜbØ2Ê¢ÞѺz¥›p…A¢ý´Æi]û¥.ÕÉ)c‡uRŸñ?sÍ…³C•U2íÎ&“`€¯s îáÓíÁJvmz„†Öx!ƒé«@ƒé³ªi×wO¯„ÍmÁÌÇ1ò­£Èö6ÀŸÿCá³²øÝ y,µ­Ë9ÌÎÖ0Ê_ÛÒÔ)Z¼éÄÖ„öºõÄ33ÖŒß\†F°qÈô3ƒî•î¡»e­2ÆÁQè¸Ûàü@Ô=*k‹’ݲóf¶ìÄ[ØŒñè6IvécêÜŠ¥¸žt"PýÝ‹ä¸Ü­#¨ÑæQs•Ùº‹àV( øû}ÂAeGå&zg3*²#€{øk·˜‰ô 5mNf%‰FS} dÍ$M@7A‰BÌ=Á5ÅçCŠö5 ³5ÆÀÕØéŒÎÝdÕF"„p>›GßÏSÍ飵™â ©`/B±|¸Ý„%åŽâyÀušmAí-  ¤']zr®'@6ÓŠ*°(‰ŒrN·Iv¸cû]âØº9×*ZSÉ…€ª(®×!§ˆéxÓ˜˜¯„~Ê]ƒµØÁšÜˆL5SVÌoEëª,þÎ1Co·@;4¢ëä@dºÍC"Ì/Þ¢k¯¨61^ò…LTTã~ÍlDÊ/ì²éý+"(.XôgMs1°qn[~šqûH ç ÇÓyüŸ<µtç«]«Mq¾É`úßöì1EY,/”´ä0#R#ÙɯpßKÕz ÙÒÃ> +–6 ª©sf€`%„5Å ©KÕ‰^å¸_ÔŸƒEïKœ¦O«ÌRϪb¯XwïD1ÕÉqúT”aIµE­ƒvÇ$‰ƒAº9£ë×,ûÒstS"¹„€nÉšÞlèaî OΤŠÛŸpŸ¬MÈÑ0Qå„cè¹t±ãWúCv±®þ{±Ó²›­šê€%¸[V–]Aì^Ÿð·Í> ¡”¸¥ºæˆÑŒF²¬;—Ç"¨Ó0‹ÓÓòí+ü0nCZ§û äO|†¦ã•×ü‘ ØBåDí-Ñû-èRîÈU2ž 5x¨EÆÔ$»k°ÛÞYq告ÒeªYøÔ‰€^“cƒœDŠEžßµžš&Œ_x­9’w©Ö^ÙàÕ~ÈïX‹nÓÏõð'%§qŠ(ÀÝxlåË·ôk2é*;úÔIãR" í{…ùhç DÜ[ö²jí—5Hð(0¯?º!1fµÂ£ÀˆŽ ƒÒ»Ýßä±zU±kvm6=õOáñá|J ‹ðÎp ÚšÛßMzã4-¤››²ù ó™¹€¸rX0 î71‡‹¥±Êè_Ú#uÚ½3‡‰Èüm…4·ÍÔÑÿnfZS¸?œª†vÐh€8¢q) g©.®@•ÙÝ!1‚1J;ÎP[6†Çgžt4ãæÇkŒË"-õ£WŸÿ$íq¨L®>¢zÐöÄ;»Öq@ük¶c ¥bäÃ˰@ÒâÎB%ÂpN'uN™'=L —­FeGñ²íÚ U÷FÖOâ¥*/’Z—üt…º4çô±Y[˜Á—mþø‘~s}LÃ<ƒÖÖú®ßeT°N£Ábc‹ï(oëeÇz–JI'æ»7XÉVx»[“(/©¡¾ûˆ7sßô[hµ5zE! SÁî%ÂÛãæpeì‰[_øï gkÞDÑJöEKÐqK –ˆ4 þÉV@Kò²…WúÂÛÅŽ² Üi«/H6rur0p+L¾çUÚ|2âªØ¶5»€O¬×/‡‹]ßÅsrâ·š|„ë@ UðUÏ9ÍèÇöA ÖehÑÅ"=4úY"(árùœE:‹#Æ€‹;ŒÊÈŠ—6=Jù87Òk÷‰yOq€¼‡XV#¤Ò^1TìŸ|{DßiA=<ì$?û°µTÀ‚¶2èxjJ=¨mr¸=ÑG«’µ!í³ÅP9CæEº_´<öìQ¦»Ûí|DØ´7Þ¾¯ö´¢p§÷J1eâ+2ÂvƒÁ š¥A;â¹ ¼ª% ?¯ÌvkT¢]„´?£Ù‰AÚDZò›µA±öòc9•’«?<¦Æ@Z½@O-#Õ'p{1-Ú¾š²&•ÎûâýÆ(D»]öèœ.YÉçðÃÑ —Ü–|+ÒU‘*Oj”ÂÌ)!„öÊŠ˜kƒ&bD·øºOr×DÌŠô(² XÌÔ1à-‰”¬”9ËNz.žVÀlw÷$@8^`¹*ó†§u‰nþÔ©|K Ç'Xô/j  Ë”n?§¯”Ü%j¹c=–yxj2"©²¢ëb‚V,—ªË˜-Cý4¤µª@Kíð# –ÿiðˆ‹ËE5\`bîAMÜG}C4þª×©yòx•eͰ‘ý¢æÙß6t—ÙŽT“Ji/Q*ëÁ|@õ‰¸G â¼°®_uâ tï™-¬U'³:Q†çú¤¡¶Òcðïøwš‘ýÏ0 ÔI$Å(…-\‡8­‹.ܘñ¥­qÁXZ•t MEéí0ŠÖ- 7‹Œ2ðI/‰ßæŠÆ]T}áCA\GQþc¹ŠÆ8J‹¸J¤žÓc¡È`¡ +± „üpóqTWRvqä$£á½† rG þñź¡ÈŸñ÷Î ^,e47¿Õ+Oä` 6ŽôêY „4¹Üñ¼:ºu#“â)a‡éyóꮇ­6lÝ£Ê!ñÙ»ªZ’IýûómyÄ×eßÁÿgã6©ô5æPŠp‚KmuõõÇÒë{ 9¥£ƒfìÓ9’ÂmÂL{%.Te¢Ï0^Cξ'´¸„œY_wp$©AŒ …FµU²…b]³f‚–Ön¾‘èj š¾E–È©G‚­ƒü´!.¬¥˜%˜¾ ™²Ì›”§'h&·„Ân³ï€“˜¨¦O+Á²²þ‡ÌàE/@‡úÍ»7Š:æ©›šRªãó£«ùåy¶ÊjÄ+’ä !îÜgóFnËs\nµy¡Úù–æT(#P·*!7j>Mw˜_0 Ï8PH•5p²AÆí÷ìÆD ¿Ú!^ªî÷U•øq¶&.FVþ„7 –{^F*ú‰Å)ðvöïÔ=}ªŠ¿ý9 ë‹™æåžÁ1§Jìb›7›Ë¶6Õ±+Uÿ1Ǻ[hE4¿N˜õÐ9cO;È©Ò8ƒà݇raêg~š QµõVè•€´ç›¬å*wãÐ7Æ®ÈPéeÏôœ'eÁbˆzÔ™ˆ Åã=¼Uç ÁædÝ쇙ï•s9ˆTƒÜû(våh[Áz“×æË›îhã(™~T™¢”e£ÅeÎÀé·áŒQа‚~¦·›"ÊÈ»%úåÕ™ñKŒ]BÊzÓS ±×‰¡"glô:×¼”_¯n¥„<Ý>k9ÀLy©gÊþãCj¨[r‹ãXJ¬[Ò(Øqó YD ¸Y`&S2E-SÑEjåö.J» Û×¹6b˜ß·óþáÊÌ“¹”q ¶äÏùÇ-ýÝDoL¶ÃÌ|ôTGÝÝ ‹” í%.@BðîÜ ãìÀÊ%]~¤½c‹­±{W†9 Æó—ì!ž ª“nÅö9v®·,4†Å÷k£*âß.Z° å›´qQä«Powj¢t}›­MÒï©Ï%‹œøøõi'sV¹é3ë·[VF“Òß§‡CÛ€“–Ħg)ŸÐmŒè©Úmsb×$¹¼Š Ê¤å° ÉMˆì ×WNõ=cÖÀıb¯5sÏÃÊ·‚4¶Cød?’‰éäWL;³ú°{$aC`£é%^ðÞ(=7:>1]1ŠT'äQD­àJ´—óU®R‡H¹!~pݽSæ{©xDy°žqöh>Ï 6SÆoGÏßç_¬O˜3ãoåŽipM[S­þ™Íò }º@ÙP±wp¹—Ìhµ®Š_}ª Oñ ”©ëß |­w©Ê2 îGÀvÍáÖà…À}‰ãÔ ’MÁÂìNñZv*b‰#u6Õ½1 Ûc»»DrÐÈ«£[‹}ù6Í8Æ $ÚÞHNÛÒ‰SfåZWj‚ r# Á>¸%ä¶Ég y[† ¿®Õ ‚ovà·°5§ßg¡Ó+4ˆÙ\s <kù+°:Æ› [£³+Ùm¡­ Ï*›rÇ÷!ÀÎÚ= Jê]â@ã]ëÐàuA{¨Zíÿt÷ѽ4ç.rN€¾¦ø¤Ç÷L{ýËV „î_`;ƒu „Fè-—;C`jë Œ¸îËãg q´óìá>t{Ä`å»m·Âø|Lƒ,«V4RåYs.ÉÞõV˯þ¦‘Ðd‘ËO¶ x6ý¢²}ÌêXÁk÷Œtw©«„:}¾Aï«cE¥”-¤º!u7 +JÂ@ÞCa£.–Ï QãÏòåÞFµš”çÙc´+–T AžwçäÚ²qPÄ»(¬·ì¯µ9.Æz¤¢(oÒû“èŠ&Û4ÊãÅ?·8W9Ñ.R¿N‹`Û¢³…Z¼A:JèçïðXõL0¦72è¯;Õ}þy&Ü?äÇ;‘­sxŒgKü7ƒùù0Q”ÕSÌŠyçAž†D–-m™ÆòxéNPf‰i Þ¬"âT¡;“:¼Èñöó&©>EÂ%­ ­4Ñ-— Ì{.¯l ¢çýÄ(Ç9»ï3¢ž_ð‰==5)î2+ª–¨lÆït;ت>*rÚë ÈK¶m骢¯¶ú&²¨¸y^?‹‚§ìz÷x®%È¥´xw„–¡¿²á;ŽRþ ÄA.Üö¦ác-S²~*?ºˆâ[D²¥¦ðH7Ð…Š>87Ñqí&É;çù¤x¹ç#-eÑîãxüŽÏÅGA™S¿$Þ .r¥š"Ú€ßN¿«ê8sKóSïH>{ÀqÚh¼ýs#ý±>‡0™bi®ŠaV!dN¥ûÌóŽé©3$*;lô™˜å†5ر‘Ὗ·Àú## ÑšÛERd•Ú¹ÏV÷¹Àj<Ü7m¾© ²^.…]7nó¶ÿt|8£+…cs:›@¤VTa¯{ª¤«_é`/Íùb1—|…ÑÎÒ¢äÒH»ªÌ)_@Älj™IMÓÒmwª™$–*KÜ6Á7"df6PÇäV¥+šÊ‰|m¬@¿ÕB6Ƶ¤QÝ!]…t`¸£åÿ¦ÕGÅä¹7†LŽ qF¥g»ÂÛ)ŒÄScë…ôØøóÖºÏ!J¼ƒ!‘", DñšÃY±Ê#·ŸK1À¹ìû©´LÕªN»dz1oú7kj}ɾs?¥á€¤ô*LŒs݃ðmX=Ä“]Ñ ºZªÅ9ãœQà€|±Õñœ’…Ñ$zž0Ë’`–šXט²û8£ƒ$q<ÁßeÌlèÇ« Üïù± Y ’¾`OWóõ޶ßy‡M6t˜ˆ{µ‘ ¤Â$™þµ¥E\N†®¼ÚqPççú‡8÷l8öÅå¡G%{VŽhE£—÷¨Ea|uòŸ@7uÙ=ˆžfÏÉñ¬ÊÖ7>álÝçÍ âÝ®'¶öË"ÇǼÒô3ü%) Í#RR¥‡Ç4 ·È d¶¯o³Þ2E³›y)£êÕ4ÕȤ!©Oô®éùȤvZ24»i#Ô—wˆ{®,u‘–à¥x¯3ËqjÏ_ƒ¦µ1ˆ•J«6@7 =),š÷+HP0Šé±"î!«¬ûàO‘“yd1÷1=2×nðWVf`´Ö2ÑŸy®O‚ŽP”·ûäÌTd³b'?ܺ#Áþ“).&dãÃcÿ¶âITm*9v‚EŸµ†9Ná¾µ–q¹Ë€xA™Ì ©nnνX˜ë@ò Ð÷ûµ›Í»S\7¬IÔ‰´‘_lÞªMÝñF˜jŽû¼Cº½uqü_Ö­J¿ë V5üM ظ£¯—Ü£¶;¹ã½Gì+X•;bìûˆBç=ýàñâ×wï8ûw&Ñ_]Ãü£ÖæA¥C$ø¬pKYŒ/hàÆv¤ÚÁŽîkùâ½á 8½·$p4×ñ"fÊÎU^½z«fú;;d ¤þùéøP·i¶W5;ÊöWuúÙ º—ÐdÕ¯þšjwîRuU*gŠŠç%’EðÉ€ú±ôÁ·‹ 6¯I“¶¦Œ94J÷õ¿­Öÿ;JD‘šB‡ã¼^·ú_…g6µm ’±ôU:¹MöQ£Á3åûÌOÝød£1ßm’ ™yým†éØwóô¿L•i„†¼o°Ch ÷í®ãïô6ËD¸žÃš½{;sß1ZòÿT!:2Äâ¿4Z¥òwÁ{æK„ö¶²xìÝ>÷q¸o"Ã/€·Äh´f¤œ”ÁA Qæé0­7¼6å9HB1}ª¤º=Ö‘úóÍ”¦zÝvHx!• Þùís'S³ŽaS˜š&ÅRVG-6¿ï_žË‹³˜G Nþ¾ªkÔzz×Ò9‘­fZŒj¾¡Ì»¤‡+¾Ï%ù[%„Ïð¶:Ó0ú©dü7ÆF>ËíKÿOYŠ%lA{cƒVoDD~óðNlŸõMÛ®XÀòìvrͶ1zN2•ɽ÷÷–WŽ-:¹ÈvŤ¹ªERZá±ë N;)c‰–ê¸yV9„6°äC»š÷]èËÕ0•Š·•= Ý —ìü•¬~â°ÿH»%ÞDþ­ñž–¹É;½wÚ^*’T^äðú©µ4Úÿ{AÙÆ±6›m ÀU¼-ÕW™¦Ž— ‹€pÈŸä5Õ¶Žœbè{Öž¹´ [ Hé>ÚeÄഌض£bvDq¨ê²eZòr`±Úi~$Ï•뻉YÆb³êh©vq@‹00;ZË0Vh_LâSªð62O;3êà‘Ð-ôÅả±iTüŽw?ùç*E‡^‰!çJ›àëñÇT&ž”껃՛ÛÖºR¸¬²¸ñÊÄ]3 MÂsìZÄ¡®V4Æßhм”_Â÷ŸûüÇñ߆ðRjžü“k3;‘®‘`)€˜hû ©ìN¡.Ô¨eèv›mMH67N¬Š4E¥p™›%p[L_¥&5%c†I„ú9ÎØEIQ¡iEGŠˆRÇjë<Óa< )]ɼk„Yªß®¤’ÈD·çF6¤™ó9«qðÔí´íž&n,Õü÷›y¬Ù³¬¶q±’þAÁ<ê—«SæNÜÌ QLKè<©„SŠÀÂãkXykïë= ®SUC„Ñ[™㩞œzlÇ{+ ¹Å“E§ñdgJæ@GZ§)ƒ*È‘ÜÆ«Y¥ðÿ/8wÁ:Óô1³it®·Évé™÷Ç|4­¨adõ®d0PÇ2QþH;W¸Ù~ª†'ÕL÷¿ÿušØl °Ô&·¬LeA¥ËæØª–ÄZ¨O,az|­$‘½ð+Èúš¤Î?É@QUA°èÇ!íYöÛî«Õ"†Ùk,Ó ÁÈg7T¢èŠZ•ÍÈ\O5ó’h~ùtuJ4• ÔpʼïÊgÏ…Vq Uaè+ü»W íBìÈZÄ,5¹9’4è,+#!ÁÕŽk¨Ï"ç#O)@›ßÌl’—zº/^[L<4Ô‹sI.( è+“®%QÊ%š•EtcÕÇgâ®]± ¡žÒÛ¿Ð6ŒO:bà°–‚ž¼œðÞHÙ5žŸ¡Âèáál˜\t”«ä½M°Ð½ê!E³³A!ñ¦îirˆ[OÊpÿ`îIw°ê.tnC¼‡nâÁýƒì«!‰`/‚ÉŸmíXŒù»T•Qoäc¯•ɽän0/\hð騹h gŽy€t ‹¦@­»É‹Ò!•íê¹]t\oû®Ú;ÄŒËäp²Ö q Tôô‹ÉÅ$ûÿe…Ú€¬ÃÞ¬_åÒRæÉ:À…b°u¥¨¡=ª E3q–­pZÄé“A¯¹!Ù ˆ¶6ƒ’G©vè2ì_ÌB3BCS Q² âZŽ‘X´o@ÒA£y†eyQ´Moê¬X‘†Ã$À»÷ç—(µ~í}àMq Åx¡’£-ÖË·ýˆÞ|9nNiH$‘q«+ÅÍ9èKyzÚ&8xŽÃ/O®áNsë}ª+û¥v=Ï(gÃZ[#¿ÿX N;ReW‹;?’þyN–5²L³s^LE!L|¦0É…þog¯*:^W>©àµu/ UÜÜ¥³·È;»Fc]y6ùÍCʸ­@FfÝrz%Þ #~ÛïL*0V"ë¡ø‚VkGÜëÛžRä.¨XP0÷¤Œµ.®­ìоê,PˆÌä0Dí ¶ºK±I¢e¸+96l”ÓðY+¼<Ž€CTŽü£àâsû‹¾¡ãù„ÜM ß‘€÷êd#ªÂ4…1½ÇÎ7Ö9b Z„n1¶4uT âeíò°žLo0Ës´žÒ¦A‘Bèêæ‡“‡±æiÆéqƒå€† ¥ [ÌAcÜ~ÎYÞÕê=tfZdq|æ¡“ò÷é].äRÓÿ+³5LPoú„À¬´zWy—“YvÖŸ®µ½ìØ^Ö©ý½…&¾i¹š?ÍŠÇPF#+úÅã!!(å>Îvo¾¦M[˜-løµTSµþLñÉ%l•kγZå®oçVHTþj)UxÖ «¹`r-Ýô!Øå  QÁ'°S|`•÷hOй4ÊîêÆ*P3JW˜xGÝVû‹$" ±\›vkã›ùp2cb³îÍågÄu £p0›á׊j— å5$ÐðõôA¾:BÇ5Ç-…¾¯SåhùR?Pé!àMœ§…gAcøÇ°È¦®e_ S˜éE¸¹Ÿ`ﯴàv)nƒU¸d¯på]2|(ŒkQ£¼@+vÒ¶Ü% lÚu2¿µS`yÆï»EPðljë~gÞ¶ŽŸËª÷e-)¤I“¼^§aQ¾«„ÇÎ`Úé}®5þŠý±(Áíò¶‚Í‘"Ý\9fL.têÆ”ŸZ`TH–Bˆ8W¦6Û:ðzó 0'sɯ¾4 @$NÜŸðÚchû¿3÷(,¢<†­%nœW Í:$Tó)P¥>i6•6KMiøòÀ]c¦‰ˆ–±av¡Ã°5×hü§ƒíMÐqUšò ÍNG¶ÙÜ|¶Y{Á.b—Q¥Û¢à+)M³9~Žù=Cgh$ƒñäÂÑùµíƒþ@\~I¸o+ë¥ LùÆ–¢³µ4B~-^n¤FnKŽŸ^;þØuoï±­¬;Öq¶@šõ¶)I¡èm@»`If ݆Áë—ÆãM©ªE¼+#»õâ¸4V°§©Œ‹ð®˜¨@ß¼BVÊ•8jt®¾#S‘£ÃÐ ë”Aô¯oì*üQ Ë…©}7ë\ò¨ÖÝ“–&£oΫòq…ôÒQ-e[M¡hÇ55–;Ïô¼"p%¹sÆR CKz~ã¶ê%MÐVþ÷ã'§²#—Σ—:éAÇUõ哿ùÁ˜™;ÓÝd‡ï1£¼ÔLj^€çn{$ßÊYæ}Ê*Xô5ð*;õå‡uyåL…IÛÏÏ†Ô M¿Íø‹ý°8zœT‚P‚>M²ò¾U|}<˜Gê‚“"Xnéÿür¬Žcór¹qMKŽß?pȆ©o05ÅA!âjòZɃFN/ŸBUI–Ÿàìý|–F'§*G¿ŸÍyi NÇë“4V]sÐd­ T6è‘æF_Ê®šÍî3>wã±ù ŒÍmê¡ÏB(lÕ»¢Ä‹—0&¢‚þñ}!-Ê­PJ?N9dQn}ƒ£ZØÔ¢çÁ& Œ¬aH¶ú$ ƒ›¦ÀW^Oÿ ‹<܆gŽÃ(¾± 2ñ/“Wüø}¹*9$Š|ñ Ÿ<š‡œô4ãVy Îsüíd3ló5VDö«pKÐÕq\KŸá‰^âkOq|âùt þŠ2éåÞkm4ø_î‘çÞâLSJŸ[éè!ùûÄ]£póÿÑuõT?q飱‹yQ΋!ø×OÌ—¼ñÈÿ™é›0SqæAÂ4¬W®!õQrƪN»¤ö6BïuS‰Î°»@n!KÖ0ø˜õ `ÑÙ!ÕsîT†Ywêð /Ї@ö@óq§`)ÿ;Ò™ßêí½ ®Ùã× ÿB-lBLã\NÆfB½ý¬8Ïÿj©í)V§cÆ¿§ÕsÞ Ö£FþÛâý+šÜ¿c§·`éY}CJ÷‹¤LÅÙÔUãÕE³^ã?a6yÅÖo 4e9P±Òñð%da¼ÝŠÎÇߨ[]Èf•„à ìWÜÝŒ´¨(ÀH{Ê Wâ]UÅ h¯{à‘WK»é›ÝxÁ­÷Æñ,ÇÃ2;â×ñ€rÁÑ—Çf@c¤×BL^½šäÑR Rqb  b2C¨¿Þæöó^a¬Eö¹…î_Í[,ÑšžO\Ã=`XŸÁò±ålõŠ4ÕdÂÿGN>¶Q !Ùii¡÷ƒÄM5ˆòÚ’æîpUÐÏÖiðT9"An»¨|”ÊLt¿¡pbdD÷äPá1 tµê*Ȥ£g÷f7z,’2uÅ’Qÿ'´óLl¤üÕ8ëeϰKügå ÀÛ/ ù®KÂꕸ@B5+*RÑdÂ"Wvv ˆ„ßX*ÌŠÚu¹äÓƒ!× ÑÌhò˸þ2º8Ü »ÿuËâfâ½J‰¹1°â‰Ô)Übœ¦)!ñS…½îÇX1]££å€ª­=ÊÊÌ€¬pgàšŸ™©däó+€fŒÈ§Ý&žudCâøÌ{ήœâ2%¶CÖ…4‚¯¤=)›úJA¸)Ò¸èà F”°¤Kb'-¾NнÙV±Š éÒ¥y å)¾HÂ1aú,è|C\_’¸[0ö·6rºóÊcþÚI.¬¸Ÿ‰NãÄÏœéAQqE¶8w!¾z-¡Üï¥[‚8C¬ S¨>´=á.±âw÷ŸA»d‡¨þ¦LV¿‡C/7‰Ywýté;ìçM¿"‡±g/dQ>dÍ9n@á½p±Á!úˆ!Û÷Zs#(ø˜J/“kôwILtÞ(‘Äjj9…Ç"Ø}g4©Oà6%Y\p÷ɲö@dŒ4I©ü6„÷XúOn˺§¤‚ι(ìètûHNÍÐF0_-ކû`. ’Ï®ùÖØó'Nâ3±/¢YÛ¤ZÐyJ‡’ÁiI VŒûK3ƒ]ÐPŸm·’r¥¨Ví]oŸÿ=Ó\ÚÍ_™òî=˜ÝÃ3n…Ê¿y(rN_%®Ô„4‰Ë²bÅ.¼£Éÿ;¯P™@gÍÈ V"ÐÏØz’¿03yB?÷6Êówúe¯;ù8É›fPÉ®é?Kƒ­ùÖà$š=m¤â++þÞ®)ü>iqÛ”>w¼Ö{^±:í¹ÆÑu9Å£Ó§¸™­ °„Äí|ýXN.þßêÊO~ãµO‡ÄÖn%,A»¦‚k‘?*(Kâ Œz‰x‡T¹LfÀ¯±W„AÊû}T¶4åF—„†èfb,ì*)‘÷á÷Ð`Aô^ kr„¡F›U"ûq!°2ØzÏPŒoçç’Ÿ#ß«Y Us!À³wôw®SªtÄvd<â¦éQûz]Q8£wçn>ùÞ°6Áã:PÂŒLê™lÞ-µËý:þh]jŠ–jáJäb%­`lüf{k¦¥ë=)!Æ$ˆ ¢K ÜÆŠ™"ü£ < Çþ&Ó’ÏÈ·ôkÔ:ªW7U"©4ÉMH<4›Ì·ÅgHóù;<¦è”B¶2Òš%bР4œB!tòSUÆ4(úSZzì)Sûü±*ÉÑå<Ïb´àfÃ22Ã!–î?Öù±ŠgmšK&ܧÑD‚--“Õåˆð–EÀ:¿@ñ£ÖÜÎ~—ý“o#5#KºÚPš{ú Á $úxv“Çìym~g“~HKBìPæ>aÆ¢âµnÖæJ°´ì+Ìûá8åF¢DA=óû[NŽ¡‡¸ÃÛÅUaPˑɔ,•²O!´VtµäÏ_K_ åèâ;M‚’?ã`ðq)K`I+ A§¨ 9I™ þÈ—åæH$]$†}z¤KÖZ_^ êhñÙ ¯,Bâû x+o§MgÜR§n`“ªÌ¤2ª^[Ï:5Ú(0…ÔÕɦR4PïtYÝ%‘çQÞ~7d 6¨¿—°ë¥Î¤BšÐDºùws8S£þÄE7?Á” }‰4å7Ç”¸7¾ˆßbHñ;Ï:]5 ŠŽ:…o+ŸÑ®*>}÷0œâ˜.nKçð§O—NÖ#^àÙmüG*òû¥ãNÔØ…m…zÄh@¬éÝX·-'Øÿ(] Û“-ýôYA,I» Y#¤æ½?Á„ˆ|èÖe¿,±0AúKèû*µÕ4ö1üwl;ÎRK®Å†Ë7еãÂû N,6çæE/¾¼Ë˜Èkžx_¿PÙ °vB\GÅWEýön¯àý,Þ*®u7ýC-8~1Þg´ÜuÇør¼YR”ZcÍ ”YÉ»æ`߀Ԡz>ª1Ÿˆ`tp+·®$%–Bˆ\T’¦‰>¿oÿãózø`[#°àç/'lËâT néù¶Ûøøcö0ñoÐöv—渔RsÊp†ˆ³B œBx¹ŽºÝÌc¼‹ÁÞQÌhTUCKó \·=0’ïœEFœ_[ƒÂÇ-hõÖœhKF„ë‡ZûCz_ªäå Ѿ4~5|„Œùÿ$tVc Îóö \UùôÆœà¯,ú˜÷yg¨´Žø5Gxó!¨Fg\¸*›â¢â£éê=sAPê,ö"á½¹ÏÕ}A ½‹Šý܈»B~Ÿó1QP·Äuý™jeÙ¢ºBÓUq.~ê? €|‰â2ÁÂŽ@aCÁ£$’Üqz¹séuNT…›Pr~žÏš"g"‚·ÓpéZÁÀ-'É?ÝþZ€ Ð8'/ |©M´4Ér3©2hÄ8¢–ºcùâÜ÷tðõóY¶¹? Uê7ùûœ¥šÌÙ¢Œ‰¹8CЃ¿up#6™Ÿçª€Ø6™ÇPCt?d›SŸ¤´€ ËGÇ+Œü`ÞéýKp£Fópà` |ç§c¼ø%NàÖ¶­¥¿1:Ö g2ŠG Â .×Q‰m?â1¾þfÒÿP¾-íW”^‡bƒà¸ä®’äÑòUDð»?ŠíxøÍÐ~0•0ªb‹ï~ý/åJ‚Љ'êNs«éQðßÏÒšüÌÖä,Í&?»zSv]'~| Ì…)¿s«¿XÉ[líûP/`€“3ûB.< ûu‚ÛíG]÷ñüwàZk9·tzŠÛèÓb­nfR —a­T7cBÿ ³ÕOœÍ¤xm¯•jˆ@«¤Oy7ãyÐÞ°õ~ÉÙëáÖ7fzQºU›áÙÌ„À4jŒÂTVþŽÝ rÇ8d‹`óO¡Z-†Ð} ‚/+OØ×lñv]¢*|>¢ãÀÔye§ž“ÂùÒƒ† bX±qÒ[LǯѮbj‚Ã(á1Ôg‚ÇåXhë«ñ +xh>õc9ÿ$Aÿ«7-¡öûö;ÅRù[2Ž!Ô[ü•:•,uL R¦¤+ÒQô$Nîµá7qCÅË@êê¿øÄóËø4Ï»…g¯ øPüÈÏ?-hz‰x’§“®Â<[tãäj2à™HëôïôêWFúLÓ¼ö[;*ø“…M)ð$×82Ã©à ·n«yÑaÎêë^ñ4ª¿þB‘¥–ó§û²i^ $%à?œÈƒ†õ…Ÿ#Í`+Š`ø›àÈô§´éÖƒá¨×W»Ÿÿsõõõ3‹Åþ³CèÂBC ,h'¾'Ÿ¸w@KËd`1çÿ\©%8-JðFê"(ƒ5'Ü“òÓ!ùY=ôÒrØm`id1Y¥”Mýˆ¸¥¶ tVvà.a)uKö@ò­Q1õ–$ôP´´½#aÄÊ5ñ'Lí¥¦eæö¹òè ‹«4uÇ!¡Ih©ü7§ú1w’z@TÎTü™­žL•ßÒiz²®0Ò´ ìÄ¿o–¶Xwƒ çÁåÁá .GR í—.Ž/Pv b¬FÖõžús<{ö-D¾c,!74ø¿»OøQþ¯ÝÝÏñ«‚ïmt3v±™¨3ãÐíð©qî.%:L-©E {}Ø9L §èΫŠÏò¿Z'nmÜY›_Sª'`ñÐO€:I±8ôz…ûE0X±ð5\Á^y†Ý'¼Q~_âÕ¹‰ñT½@áäqVÕEµmT¾g×áJ¥Ùèº2±7òZ½ËîþAR¢þOâŠ;Q{‡‡È|0D¶_Æ« Y•C!ó•Ýmê-½ÙÒ+FЂ?!³å–!.Šf)oj™M.•S¿lªN¼Úº+z~pñÈu”—»~?Y`7çàÔúºÖŸ."53H‚Š×˜¡!$Wˆµ?tFdΠ¿`ž3cÖTÛê”Ó#@% ßì 7»nE9ÔÙ;¹ƒyïç‘´6wN)ÃS-féqF°gà׈ގ*ü¤‰*È_£·hìèlyT•ˆ®]}Ol'°^jºz¦²IžÓ=Ö r«÷²^‰¥íÂxÉõO>Í;;ŒÞ %ïlâ?6 M@_ÎÁií wô+Ü6%2 J½èò+)ëúG{Þ:0]¨}ËŽiV€ $!\ŒÞ€ømñBE!Â4C_Ï„„Qëþ.`+w€óÒc¬&Ÿ +ðQÙ6_WŒ™ÍÚ ~xÜ4°AqÃþ`ÒU¤ðëàmÂ@㪕ª^Ûj,fdy „ŽöSM³‰¦ìÂ#iì´îp=Ç£¢(عi40ØÅi íR‘•‰¨Â܉þSo¸«yú|ú×Ò–¨U·çZ¡ÛŒ'._³*ì«íTHqÌÿ,4’q›1BsÍZpâŒ1ålâOÝÛ`8H½ÒêÌñU8ÿ癦 atæLYï*d4˜7ݸ4„R믌1G[ #eýg3-Œ&å5Ÿ½?µŸ4ð±Ì[†^-7ÊÉ<š8wÿgÃAÁW(ñµJÄ·†œÎG×ê¹MyÏ›‡Šû³»g›½µš¡½¨™3¹Šºä,·®¢Ù`Ô¨ ,Ž‹\ ÀÃꮃ‘Þó>.Æm¹˜K¾–ðUzù~ ÆB—?Ý¢¼Á8n8BÝ‚“mBŽèC·¤Ÿ7{uß¹I:Ú€tÚÇ î;0CmU­Ô/Œ$ùA|üõƒÔANC6à%Sy)þÜ!ÇúñÙ›/'ª1ÄtsÏo:ªsŒLÐûvŒy!”žÍŠÑ#ÛXr‰YPsçlkV«&Ûg|ìÁ(JÁ1E!ëVêb6¬l?óÞ@™<ÝY³ž6ý¯S}÷’ÅÃ"+"ûð+uàÍ©E¶Í¬4ràË©SlÐsø¢c—ò΃HåRªP„Ã;þùBI/i¨î÷Ãý[™M­ ÔÆÝgKhÉ.i€·bFh‚öÙéYȰ²VJ)odzá;tk"Ò!û”§zK¡~wÅÓÖŽÐðÁS+›ÎUcýÏ2® ¼5ÃíSxˆ’ãà‚Úƒaeæ–å¼Rßmø¤/ЉD )IØ|o;š0ˆÑ¸ž»®zYQ«:¹3FöäˆB™“)z ûÖ™¦T¨¦GTƒÈ™—•\‹Qðýµß|yñ8­ÉGâçbê»MžƒÀ~·²ÿýeŒæYAÞⵦ?p¦7V£°Ã;HÓœLó2‰˜6TITÑÖ1rz[Õ†?“S¶Q _åÈÉûQÐîqk’üW¾iÌ}ø0ŠNë‘Õ½Iq‚1‘B|«Ëçò¤‹Ó¤ta)èem¼LºÅªÇ˜Ä»˜lyU-÷@é_Š .„…/ÀGg Ÿ(ýšï¾žmNøW‡iƒ×Ç0J’.AÝG³×¬Dè£Ú€¼TðMôži1f!1͘SìÕZÖV¥yyg K¼3Eá€ÂŠpǵÐ%pÒŒÖsžY=I”rlSoMúå9ÛÑ´+²-Zz¹t¼3Ãç`y§(wÖùö\Æ%‚&ÿs ø”‹Y@ºot{±ßÖÖ&= ü?ý†eÈ]äaj…·íÄaÀ\ãI)Ù\c€4í ¯¢êï(¨0%&ÿt3‡›¨›Ï¸¦)ªá_-01>Ü?ýí3¬3'Í‘À— `Ld0pœ­Ç‚vÔ¯‰¬ç,¤ =jðÀʈ Á8²>w•ïº^>ØÝfr–uÍãwø}µ“‚ni+‰@¥Ç_Ör\Œ  @?¼ùŒsx[lêwÄö(áÒ¹^ŒpŒ§}ði•°ÜÓi4¾4š],<4arÿxîƒÛ òl‡Nî°}ÔvðÞ4qG–FI`\÷à„ã8•ÏDŠJ„·(g¼ÙkrÇu@›öðW5áp ^XZøÐ/EÅÉ~ù¤Epj«ƒƒùÍÍՄЫýÔG;¯éÆ©ƒŸ+ˆmýÿY7m`û“Ù½…ÞvùßVD/ Ah>ÆšE‰@ðŽÂfF(ÂdJ/{iu’¼%\w¶pÖ|i]õȲX{ñs™Ô4ð¢…di¬ÉK÷R@LþoÍV/`JÝòDD}%wV˜SJ¢îs›‚vjFUÍiqå—3žUí„6ÇËw†šá\Àa@R¦Ó‚k•nM‰é1Ù‹L2K3Y ¹V¼CÄÁÕñ@Ou@Äéç:o:Ôÿ €º8eAGRÌÍüK\(†v~ÿLÉÑ`ž€¸ª'ð¸§l"îЋ5…¹uâžG?¨‡•3Gòö³ïÖ8÷öÂ?$"Öëò­›œÖÐÔÚ™záï¾èEç± ,Ðá•@¢ƒê`%Mów³w×a-·¸QKÊM'7ÌTóñ; ¬TUb|Ð_:Ì5ŒÅºÖ*-dU¹ÿ*#‹F „Þþ hlaE´×.òšæÖdPÉþH¦¬±^+—þÛãã7c“¿Ž[?bh2¨˜‘,²Ê7Sp´œ>æ×ÔFãêÖ´oÖÂh “E­Ø{€ÕñÑ`Ü ÷\P8Ü!%ç·ê½ޡbÁ^Æi•ꎨüp2Ì µðJÛWìŒ"»Ó0Š€†lGÃÂãyÝ/å†ù ë0Á,„ÙåHÄ‘š3erñnrÀ”ǵi÷ñ`[1‰äŽ]ÛJ"½=¡w ¬à0ãÑɾ™ä¨@I»×=*ý¿2~§-®ÿ:  0’úB0ÿC` ­Ù€ Ž7‰5Éc!-]Iéøx¿ü‘;öv¤Ë™ …›Õ4îÁé·¦Ö ÖÝ‚$F7)š"ÂA¿7þ5Ï·N ëJ½>õîPÒŽ{…„ܘ<=®†íéø±öUudgµ¥5Úsa|AÎAÎw1Wˆô ü¨*(±k°އÊèÖŸÀGŸ£}lå=ŠL½Û°Ðý[û ÇÛãß5á Þs*kO2u ™[bf ~"Órjë(b¨à·Ÿ¿Ä‚ÊŸxNiʹ3’‹&=ÿxT¾_X^·déû J¼0ÏÇ— ·_—‚õ–'òÙÔ‹Ø?H9˜›Ûw··ÍSšz,Iej7,àj>·â¸Æ¬ÚÜÝÕ#égwÒul9KýÄ-T¸(ó£F,°m&Éë[xw2†B¿\n%fŒ"£ø!?ý¦òÔh˜¥…ž¬–äÍrÔ´¹ÖôÍk¬÷ F¬4PÚQIM¾¡‰ßë¹Ø$ʼ1K÷M3½‰& (‘ç#´™Wd’[±õQ™o¢;Ã"y^œz€,_×%¾ǬŸwúN<‹‰ “4ÚšY^x¾©Çó:×ÉRÉ´EªÌ‰TÕåΩ¾ƒrÔ8‘ ‹°@Òn÷4Ì•£ Zù#…}`[qdËéóJâ…{a &ü×—§§9ù ¨Sé“X8k²Á|mb]>À¨QÊžˆ´Ë2…Ú9otÍЊ7[EÚçÀSÕ&(÷Üâó>J«Þ¹¤n"òä@Z¼¾Žs.=àN[,Ä\Yl#L~¢©Øøh­£«Ólj߯¶Ü'ÁÎU“øâžìÝZ?Ørñ‡eÔzùœ‰Ú÷ £—Æõì”4TóùÞ־܌L1Ñ`¬vVzY³cxY†­@\Ó!_èh-ãuóÊJ=GªÊ½«°ÐôBoÄŽ¡ÄÌ}Þº_>X5ÀêvÂð±?»®†^æCä¢È»Ö7z2Ý&ößù…Àç},©à0ä*|u‘‘»¬ØþLÏý­¦»¥dB1y¿ju •ü®ÑGâxCwŠzÄï‘Å;Y†hÜšînw˜-Îûa¬æ$ ký ¿Ul‹ŠºÐ€é!:Õ 'E­”çWNTz™„¹ni«­ÑÞûÚÃùdÊž?V·N\EݦȒrÀ©“}U ·ãú¸)'zš“¾4Ò(–4DOèwÂÙ’˜d%‰†õÂUÃ0‚Ôfưµ¡ÅR/~<óà÷}þäÇ™(‹†þ´XîO®*RwUÌÈu.òêz'r[«P›â/.À iD"ÎqýýV{=,Ï/í=Ù³+¼`ò“Û$~1þKûFËGb³àBîÈÜ(u^ ‡Œ‘yØ0³©”UÈÐZZò®Pü$í?ò D5YÖe†hÂoÞ§tȘ7:`Åê-9½€ruQ´=í‡Úpöv@d‹DGLâ¹ »+N\TÃ/%Oà{×¹ ††Ü”?e–‡ªm3ž}á°ƒQ ÔœÅ߈^êÝ,Ü%Û€írýÎ%Mnã‚zlÕ‰ëï¤+úìòN-bÖx’ßµ¡y ¼úß-Àã¹x ¹öÍesž%Ç`M˜´Œ°«…,Š~Úã6d§‘âL‹—úÿU¸×áZƒŠ½ä´eb“äŒFpæ›Òº]¯Bí"—¹„³q ;’]˜búhÒe¥Êa1q]³pñB<£Ì¢ôÛ¿øc7Õ~ÄÍ‘Ç-fà ry sŽ¿ðQ!ûÄeXïÁ#zj B,ý>kø‡¬RÙ œÂ¿DMFGNÛ$XsÕIþ–­ Ö^-mžr–u)ÐÖþQVl^Éɱ½l6= µü”ec®üUÁR)ضÙeÛZC_ÃꌦŠÂzˆ-áŽI ô€Ð›¦+ÿFöRÓÕûÕÒ/0U·Ø•¿2D( ®ñÉ2ÁÏÐtØÁHùdæ(á&§G‚WÓ‡Ê íZA,ƒÀ …Zõ_þ™â]ÏíH¦¬æj_A™ÑýúmÆÓæŠ<Áû®ö©~–¤ ™¡@jÎ}&¯SŠ÷Y¡Ü‡ÀúízhÂAÂQÄ÷õÀÞ’˜˜ï2%â7>¢ BˤÁÊUÓͤ뺒Gª¦#¬^i?^Aaí£ywjx Ͷn_TŒOùAEi4î4Õ¦·ó%’]eaøc;$pØøÀØ,²[Å»vž¶óXmOYæ„6Û›CXŽkRÊÜi¸ùŒˆv$£=‘›÷MÂíÀìõÌmãX=Õë’ 3е!öú²)]9ÉâÌ­¡Â”Ñe/‰Fôæor³cÈôŸÑø,lFÍø.¶­‡W9?$ÊÕ8Ò«±V]W£*°‰Ä¤så2_ƒ*«’H.-DtEßÌ”«lPŒG#É“?FúNLQØEˆáÙQ pr’-ÄIDMçG1±¸ótÜŽY¥ëÝåþö"¨ë ·Ù1°!a¿ß+Hyl:7RPŽu±3&™L„­HÆT¡ÞGA‘„3Ì£ó{ëZÐô|å<æ¸ãÒÂëÛ ÷³´ÖÚø.ü{úO˺qÕaÂzéï?þ 5c==§W°{( Å’Ži£‰LUÀu©(š·¨LíN,îF<+éײ OÊ£CÐR4|í ¢ðÙÔ¼ÈÈ«D_Ï2‡ÐÞ‚i)•oÓl3r..¹j¸ß/,"ú‚ËZ{ÈF¿¼<‘hÎHjš¾¡üh‡Q¿HY—&<™ï¬ÍÎ40 ØM3F… ~ðù…ˆ•o©c1a°¼™ãhþy£Ë>5”}À˜FŻʯö=#©©-¡D>‰í¤Š°åÓX)©ñä£|fˆë#âÄÏHÕ aEXI{¿dDãÄ×ÂùúëõSÌùžoiȉ¡Ë­’:ë |5£¢„¤áÐý;ž ªß+EÉ[ÞþlFÆh<> žôUf1›Cœ˜sšˆQ_BS]ˆì^*Ò`C5zWQ •QÈàÍ”39Z ΋J‡¸Žé$ÉnÉÑÄ  ê*qÖÛ´ÒŠšÆ>K×zàx>¿#³Àé-T³RÛÄyO0¨ø0k@¤eՅǫىD ºéi˜ÓgΫÒ!_aHIã †¢‚BÜ;‡_Ìž8d¡É®Xq>Ð}aƒ@_;#l4Èq{Ø$JÖøÌt e'Œ®æd=„+ã–OäÔrB=³>S“í=ÑÖiU·EÑPñ,bÔfÏ÷Ý¢ÐMªOñÇL%ŠH¾ºA޲膃Êõ¥Dú@x¤îURm1OÙvdË$/»ž›µbŸõÐ%©no¤d¤jò[œ›æLìÃVúÁn•^e@g笱¨mÌåyƒ$EÙú7¡?‹ gšœ?ô©BÎÒÂò¶ô}»Òü T쀯’ûAŒe‘uòâ3 5­…¿ºÍ…˜€PEwX¡·êüã=ÿ.¯0¥cÌÒцŸu…];˜ß éãe3_Çëã§;# Á…: <ê¾QSªƒÙó¥Pp# ,š N¸œÌ4«»Xç˜îä®WH ›áL›ªRf¡Ràš TïßÙÅ·¿ØÌv$Wh׉O©Ô© c×LZQ>íÉÞdþ©3XÁ5>[¹ê·ùê úÙÀ«int½–®]s´G 1*oËM+Ά*‡‘¶PlSûóé2e¬Ñ±fænnö™ÈÑë dõãf$Vp$øØšª*b²j"Fz³øOH Ýë^Á<ëbÂa¤ãu²Ãѵ¨ ¼'+8edCz5({²” ÿö/Ô#of‰G£0¶¡Fœ–„Ó§ç*É"ºT¿PÄ™ÝÄÒ‹ .Ue £?ñCÓù¾‘ÄÀPIÿYÉ7ëÞÕEù²|®.V1׿ùú£ê¿¯bãœäÄ¡Ã!ÿzjòf—¯®Ë‹ðzãýO‰ÅÔ3ñѼ^i¿Õä«Nc»RóÒUKB üÜ ·“¨Ïú…¼ååçîÿ ÏáÍRŽ•w,+t,2‡>¿Ýj<êàöÛaÔ³¡Ÿw‘ˆW ªÇ“áû.m¢õ¶£È-ô§?±sƒœvÁùÛ»>ÉòÍbì©ô°B!’wµªÕU¶‘§Ø·Y.ß«(f“o9¦>^çì׈+µÑ莯%qÑ~77‰W·?™4Æc1Ûútì-¥¢+5h *¶[¿å©ÍÓŸM¹åˆX ÕV Öá©f­CBò¯›û2®2MÐ æCk*yã Ï0\Ûïåhð‹´ðÕIHG]ê¿kÒTÇ"OŸRǨåñº_k8–¬±Qšêõ˱d­°ë²AcÛ)jQu©JÃÕðyõŠÄ®˜bOòþ_.ïÕµ–J¾EYˆÆ|wÿe{M\ë.0j¸×ÝQJKÜ ‚ßÁzÏm/öMãë~«;ƒÉ;ªgáúAª’¢:Í—ZÃaƒ ÛÇC7 ´ÖßMµµ‚Ãù»f6±êõÜÇjÛòq /¸Uoaáêé¥ï…5Å'hü†ÅE±85Ó€±7)Oý¾,qH“ê:øš0s:Yóu齚„¼u-Æ5ÂQ(P)úx˜†÷6–l‘ëŸ7½6<´¿ x§Þ}íN–¦<àkK¬Šè9§•òd:Á´½]ÓD >ÛfŒ@õ óýÚZmé:˜ûlt˜Nº±E(èÝ$W¼Ô#Ì+p ­õìó­’~s8™&IšÙU)-ÙW2ÕìçÜaE’Ìößà~úm7ÛWÑ 2‹[Rß0vGKUÿt¡ 2ô±`™$ßÜKb9³¥•ÓÿøFÛ‚ Š'Uk[‚¾ÔWÏU±d&%u)OœérïÒJÎdѲš;›aï#˜7ôy_±|­±¯yÑ"›ý-€=o`Í×g½‚Ï:ëK3T1j¬ÈËpo̬XYi î¡Ë<è‹þRójâjÕ uÜV&o ´àeÅ«BB‚;`¹ŠLÙÅyá÷ˆE<ýÜ=i)@]º§fþ_ #`Œ «ex§ÁAÆ{g27•¶¸¥JÔf¾Æ‘EZË òÃ&1zB5ƒÙO©µg¶¢n€Ì.¦Ÿ£Þï4qâð@’j’¸Ç»¶câ“*Ì®ÿx8j—©ª¬f•-HL\ÝUººyK”ysTáÆnœ¥ Íy¦‹îèÇû‚ËB§KgTæ)?€ÜY8p²b2˜@:H*MŸÃ6Øa`¿}ÁôÀõp=$îÛü|KMEj_bTÝ’RŽh@,`>ngÊ\\§¾íj–Cu˜\÷ÚtÖqÚ³Uι^¼ÒŸïùCh^H¬L a³ßAÓ™M­Y&kl¤Ã®•êæt|úxqƒ”©®ý£êwÏÍ6â2ìÒ¤5F˜Ì¬í3çà€3îÈmÔé‘ò™RjFÀ/ÌA¡M›% ÑIÞ¤3)gO8-.Ä+«‘¤2áKíYGçøþ>°ÌRÂf$BÚBG|)n¹ ;Sãnj%íNÕ ñŸtmx–*‹_HN8  X›$ÌkåÆ1ð2ä 4€äÓ܃õОÂþÑuVWDínû >»­F¡ =Ãïœ^°Lf0^Ññº›Œü=˜Ahn¹»Øóƒ`]òyÁ6t!•fy] Ÿ ïœ63.O 1ú^“³í¼Æ:w$°Ý“–·HÑ”[ ÕÜ6z¿˜À†¶äòŸ³Ó}x¤O@¶¼Õ¬þQ ^eþ9Éòúh„’ϪÎcÔ‘Ù)ê¸çEÄ\RÝr§Üæg®½$Ýú1 8“jHNÃ{ –z ¸@—ŠA¥£'¯LÉw¹mÈ„ÌYç%æ–ˆ¶ LŸŽÝOúµe‘QÊ UÀI×òù›# S \„–0­yÀ4¯`BNh5aÆý˜Ù >âûÀr+½mq¨%¸ÞЪô·¹(ˆmhúèÅÇÃÅ=¦‰°p…uŸ ÊZŸÇŽ\c]ê~™„ø£ð- :?ˆ2Z„½÷/í••SY(ö.BW¾à»)±­ßòY\èÝþ#¼æfoxûxWÙP‰˜Ö0”ÅÍ)õ[Ï{CJRØË¶ ¼‚†CDCôÅz¼\‚xi•’~·9Ýxl¾c›š û°X8Ïà–ƒ]º‰ñòLsGGˆ†O¤µùøJ^IµXTFseŠÎs'Ç–²ï¶÷×c®Æ¡;…x— 7ºŠ1ØèÂsOÐW˜üÙ-˜¨ÞÀ{ôžóT,”ÝöwZƒÈÁ•ÿqò¹šˆIL=‘(¡ÚYx‰4à ²…svk¾üOÄsyv%³ˆÉÛp3—¼»þÃ-ÑB!ü‹):$±,H͆»Œ%Á9oR”û(é…ÿxY®UÖ êU"œ·òéó+o(‘óU¥ Ê5°ÿdÞè:àïÃÚr½ˆ‘àL>=‡7ÞàŠF«_o3ÿUC}ªBlTþ¢‚>•×£,J‰|m½<«¡™ —¡9ãÌÙßÄVÕw(è¶Å¸Ix½à®5Fxô”Ù©CgŠ2Ï冕0_§ý*›–HŒt¶ø”“®eFXªåtM¬ÖÞ)Üi[=BÏ‚:÷¦Z,úÍLó„g€²«ÆÏƒq Û\¤‚4C-Ù•ƒ¼Ô¶¬Ö¨âð,ZŠ7üÀ"FIþ2dLj‹5rîÔ¹êLQeŽzÉÛ`ü>X¨`0-ߺ¤™¿‰lØœ»ùè{{u)"„½ž¦$t“SügMDm'‡4à¦Âÿ= ‰ ¨e-˜BøHk¿õ5‹hPÈ´ c ‰*/ª”‘)4?"âSÜõ#"y“Ìy‘ þ5p±¹ƒ![{tªlD¸K¾y—Dtëí§7½p:žùòÚ¢SÉ#·¨.l’¥,³,‚í”b}ïm¥aû¾[Þ„•W8he6.Ò§+ •=çâ(]§ºôRk¸#昧ع4Ú•Ø9öû`¹ð¯ßœwœÞUÓqŽL§Împ¡g¢j\v¬18áÅïm÷Ù s*ŽMks. fïaòeðdíìºe`ëÈx¡È0©N2^÷ØœáUZÜPaÌr©¼QË£ËtÿsœÞ·\ìQ®êÅÁ4ÜöîžgMƒ.o ¦ÄE]'©}!u/¦ÚtΦ†§}×rÐHžÜ¼†€õò—мÔ㪃Cø!‚»•òI~ÚˆX{½ê"b¦•~BƒÖá ØÜFl¨óAMhÁám—&yîñÄÍ^_›7XJàÒ¶HZK';ý!t@«T[ƒíT÷öðøoëž_[w‚{²â.‰îý„Mƒ·NeJˆ)_Íðì3•^Gd#eȹL8P+î‘gï§2øÓ^ËMQ¥ž^««££7ca$ñ,븛³%”†”ÌZ@€hÍZ®*á:Zùh™;aß(¹©‚yvdô¡åÆÑ?BŒ­…2~.E²fef¢qÅéQû àälÞR:»ómw@’Ï5±“¨œ5SöåȴƱlð¼-)^RŠv¶ÁŠhè)Ðû!ûÛ¹:ïaÑo¾WówE¦9uPÐUQd÷ïÙßaOi~Pô‘cÕ¹—7;T™ PÒ)¸ÉËF*^Zó|vl&/®q2œAÓòoNB{ ¬Žîz;KÜã`­¿úwKÚaDò‹vszÎóó#é0õâÔÓ`Ë“À¼üÙÄšh\½ºvšj#•®¨Te·‚Qã—·¬VcR®’¸ÐF¿Ý†‡Îð¼BŸÂÃÊ~C%Øòjú€Ëû÷c…÷¦!ìR¼3¦t%µRÐïÞ=é)¹p¥Ð׋úuø˜"„¹wÖý6ÀVEÉðËübT û;!˜DjoïVFl“G_kÎû÷î‡üÔQ.’‡¦¥÷ý­‡1 e꧃4}ÊÛG¼­!ÃBÈœsЮò”¬Ñš°[”øLϲ´·…óRšd×)ÃsÀ‘ìß'›’ÁU9‡K÷aöûNZ5EŒ3›ádß„ßÊ®}‡Ú#:È– ›¶É½©®EŽº#dNÃÁí-é E¹ÓL¥6OšV&ô›¬ñ4ù äç ´dßÕ *¼Â©UÛìLsydP'@µ†‚ItÌ_´à]Yk2¤ ÉU`¢O¨®šLøˆÜ¢ÙœçÀHº¿¡Åtè«&†q”ÂöX#©TX{ѽÎS]®BŒì­ó\kÑé–?⫟…SŠ˜i´ÂSƒ9t6º¨ƒdUõêfŠÏiuøh"ÒÀ÷Ù;.D²s•ŒC hÛæaYV+Sõ_1ç‡Û‡öía=‰råòf]iø_ÏM{¡‡B%´­Gh°³Rá’¯kÚèÇó^˜ìNDS­õ¹Qn”dr P%²ˆ ²].Ioê\™kêMÅ~È Q–™¨.p$ü<‰¢¥-ò1¡ûyB$^í¶<Â;á.1—èFaÁ¾X?—á(Y¬WåùÏC0]¬?vQP<®Bý1ñÉŒ®¢ ÈŒdù׬ÁÇÄ^èiŒûkÃâhr†YmÛ6XºÐèƒ}gJ;ê}Lq±ès¿”›KHðܾDnù)ÀU"V˜ûÇ-yá‚0b4Jzk™Ë”©rj¢›E.Np›Åh+UNò”=~Ñ!µ†ûúåΟä¿Øü¸¹ Ö´UWîSQÿ"°eŒuô *Œè2„2à“.y¾•€{iñ§¼­m­®»UðR/€X5–Ϲtª¥¾õ«yµØu)¾uB=ÁDËíNDnýî-k\8Ä?/’­õËÇñxoûz³gD+Ÿ»‚9Œ´ˆä±’¢:oâÞí¶h÷öi§ Ñ 0*üRúbçAŸl-üï^èiÜZoËj³‰ôòN"ÆõJ:«ý¤È2V’¯;H{öÆ%d+ÆøzaHá• v3§3' &¯‘kk.V6 Sᓜã;uYU?­2¿‰éå@ÖÇĤ¼Úý’Vk¤€KÕl+¥A¯¥À>¿fÅ2‡!„½0|* -fõ|2|£]†xÂ2ÈÂTú ÝŸ3Ö4lä*íãþ ÖÜHîùä´Þ)ÈÈõn‹¾Ï«ÈY8G@Æèè$‘3¸$˜ñBœñÍ»ŒxŸK¬6¯£X;gÇÔØ}¸g©dgïf:Qè ÁT£½¦ŸÁíõøl†ËwÖ.£I)»}=Cú+¹ §‹=ÀM8ï!„÷F qe½¬ÒHÌBiW‰úu˜íê#¥>ëÇZ‚"‚…Èϵ'Pl÷è÷ÔG`36KúàpãÚâphk‰¥×ÃÎ@{õå]´?×#Žý€Å¹”iüšwÜ(­Š+ß)G”Þ€ÔÊÓ3÷N—Ɉuq­ ¦ðr“¼#v•Δsc¼®EúP‘æR¿û™²˜:,Ù„N)LåPÓÔŸÞ|å ØÅ;8À )® ¨]³3Ù3½ä± ÔÂ9˜êùÏ›? #›ekPÃWS§åK`3À8W-ˆgìx2ºKÄœo´½Ëâ뜃”áÍÔ°CgòïÆì˜FL·`u.!H£;0ÜðΚ½OQ®bÆJ £CÑÏ#µ|A#8-aÍûjÆ{HØ.E@‘N[¢ØãÏŸá²¼I¨‹b;ôÌ Ÿp1DÓVè½ÏÃí^jêøJ^"…&fPMݲ=M‘@¢ÿ¨Äû®Ü¼u¼"TªõM’Èð)ô~¨&ìZÃo± H¿ÊÏ”cÜ$'ÖIrY]Ñ}'ç1¤`Õ¾¼H¾]š˜Ò­g³õ*ñQõŽ-¼£QÓYÎÚœ…$%<žÛ*³òh:ö6©@bo$­Û_®y¸²ÐâØ—Î3¡…9Ed9$X}=üôD®3‰1Ua'x‰t¾ÄŽ—~€rýY5¹µÅù’Ò†–p@Ñ·ªq‚§K¥J½ÌÞ|^KÔ‡àlJ²×û:óÂ_‚²SÓË-è°ùþ*a•qFµJ¾\é& "í85ÃVGwË©[¶¢Ë˜6cG£ÂáfµK‘»'Ç1çg$Ê2¤rÇm Íi:¤‘¹(1ŒRZæ±tÐz;‰Åùpœg¹.HÐA*‚CäâûÕºŠÕh*Á©=ꤻßt™Œ«’´"pq¹úɘ(6àwÉKRP cYê'ƒh¨'dzì•Í ™å5S ƒÙgããÛÿ5Ö2ƒ â«D2d °¦À9$Œq xŠר|RvüÀj·-‡» ”Ä! ”áÕ[|ø\Kk¥ (øËz©N'dÙÉܵšKòÜ#jÜVu@/.›oœæ7^d×á/·S ´y UQ©~¬t΀À½÷“iI›Wœj–´«^9AÖ¹¼ Ó‰¸r¹ï˜W³9×¹Je—œeÀp.ðuµc‘šÿFÙ!ËB8›£»¢¡ßøbYU“ÄN’x6)QÚ-í—«…ÏñÚN@Æ}œïym^¯˜zZ ÚZ·M¨‡%DâîbãþUõÍZ,®ºžõ,¢ºÉZË[&…­³çå.˜± ‹D†Q,ÈX¤yœÝúÖ€í­½êgz®sx Z¿õƒ™pLD²7¯©Öo@¦jLÁƒêÃûqxOÐä]ó³«;.Ç–>Ì›G §ÏhÑl]ðQu›È‰Û—©^7?þ½V–ÈÑÇh6ºß˜ƒÖ±é6³ò𤦠sÔÙð¬õlÑžÕ|‘\ŒB´Ì¥š["õÂH©ƒ-Ÿ¬½”FÑl@­f=?ë@Ú—ÏIJéGSƒ/ïö}*‰î¥"ºf  ¡œ"èìÖ£!{%|Ý•kÓ¤÷¶#4쥅ç”ö™ó+fºN†ÚºÊ#$ç‰0ô`!f3ÄvñŸ¾u¨£Ú©GúQü"@Ö˜ôÌ&xRü@p"˜€öŽF¯95°÷wWÙ8«ò*E©UapÖ3µ²¬˜“.3äžÓ~ætVà$ñ³~\…d.n ú u‹Z ¾^ÔQücBTMdÔL?*æQÉׯI›ƒ:¯\kvÖ±È{UêÖV§Uká èê9“$¸ 5.—ì+ ¢û鬕pלèK4b´ÒarëF‚›¶AŠ“•íD…ïð)+Á]J…qNÑ9'ÍIŸ ÞŽf¢íÅ󦛗êu•Ý Ü;­È…œÎÆþÿnœ9M&c5i5ð=GVàn\9ñ4ôç¢è`§ö±R%¸tޱòèg”´)Ì›—þõ×ôbÂÜôÝv9 DÉýjû£Šåª‰*Ö§5•À¢jT‹%k‘Kؾ\[WÒÝjöbú‹´§ 7^ÔDí&’X0ËÚ<µq"ñ7>PÂæCA½Ù$0g`-pè7yÍíÃúÍ£¶r&"ËùøÝþ¯Ñ‚ãðâ « )(jº}H$IÕZz¦îÖ5ÃÙ·ynÝq«å£+šGsáõûË—ØN@Ø–[âºÒ)0H… rnÉs¼b¤KÆ’©‡p³<’úÏ÷ë5:źpTá>ö­íÀ¿´hh~×J-3‰æÓ¾^­Uʶ–0ßY(’ÎPVWáË1Ï«ÎýÙö”“s@53és϶ícáÞ^Ðbß!' E5qi ‘0oœ!z(Â`¼¿ ?†;|3­¨7S¤£¶NÕí[wáòzìG$oQÙÝjuTÂvèC=°ùZ Ïž›¯wÌ.3 C3p26¡Ô 2Ic¹.ÁŒÎ–äq—¡ ©[ÔÓÒFŠÁh®àÚvz*"ìž “°í¨PFüƒ7Ó­NùbÐÃ}Øêœ=Fb(ïI÷!þ–î‰Á1 4‹Š9³[YÂ<ôW^Å­lJ CQBÓd;¤=’…0u•q‚)—Xü9)ƒTr!·l¼çœž²È&@ åt¼ga$|Aiz‡:8è ›0R…nQŠØ é0zBœHu2þÑs¤W]÷µú=Ö%çñe vXÀî\B´fù™xË‚»ØÓYPÄ[[¹G’!yílÔN9°P7M ]‘Ã~àˆN˜!£ö¬ˆfÁ.6•«BšÐî’_=ÕßÈ?쎻ÝÛ­»Þsæÿ:ôþ<,`o²¥êi´¤`™°æ 0~‹Gò‡²f$ŸÕ†ólR‹¸¯ô÷Rï»Á)|jܨ xBÛ%ÂØs€ ~ºè¯wÍF´IÙ,y‚— næ é£.]ZïŽã¹øÉùìt›‡&pGóÂoËä5C‡L6I`·®Àü ΣUÙìRÚ‹ïoZ{Ù&Q8j[-|™KÏžmi°Øx¼3:yBJ6/xE\4NvÂÔ“·¡*Ò‘ð½5‚sLóyöÀ © XฯDTòнyôUìêUDtÏ_ eSâªò*±~÷HGNù™˜µy›ìC¿OÝ'è~Èe x Ã5à;-5ÿ1‘ðû½]ŠU…#h¸wlmo’"¸°Ð°bfòîÊú‘Zú&F"J,—[\j˜¤§ØÚŠ=È­öÜ3QØËȉ¢ºˆ±Õõð;b“Dö,é]*ˆ;²ÎÏYÉuŠhäRó{*¹¿ã $…ðÿsB\*tãºâOú³m ÄdÚ•˜2Èn*o6Ÿ¬³ÆæF´ÅiYæs@)›‘½>ñØ®®˜©2ô±8±ça×öo]oë[xJ:x¯²—¹"M>¹¦[8·5S±–b(2¬&lq¶ îÈO ¡îšÚÈ|`„3¸Q*ßÐ×Àáoíi¥縺½‰«ÌIûêUqDPUw%Ä&â8¥<¬Aþ]о\T:?Ö¹{jßøך$òB&3k›–·æ.{E àV`n¼ñ*š£PÍÔðÅDòÆÞñ]áND“ìsÁø>¸Î—VÚ Óy¹QMg¢\ Ÿ1÷‡QéuEû‹öL©¨ ü{\"ý€?ÿ!e­'¤6;ˆ­SœþŠ”©L‡bÐüt¬ú<*K ΈfÆö¸°Ãx‡Z-Cz*¤o,òGg qs½®WV5üå÷[ /‚:Nò0 ¥¤3TÍ i·ã ŒYÈ®a™öðÈV(Îjw–Rô‹xª7€nx#¡­õƒ¥ µø_”w-õUW€[€I;1ѻɮ‘§3†Rz²•—Ë[8¾e=¦êG„º›f/+¬U‹ò´š7 k-py~âLÐ5iêdê©D FѨGOà•¡)T°17‹’L’}*8Û?c_pÕUn+Nà(7–Ô¾£½¦à¤ÅÈQ®*(+‰E܉ÝeW-–”õzl¾tË.ËÌpL&ù¤Á¥9Ï8Kqpõ9͆Z$EYiyºÿ;7«Ž0èÍŒÔØ`*Þ(thóͰKìaýËã»ð-мòLjãËþ«°K˜šc19ÄM;šbÝbâ’ 3fƒöèmu z1/'âÑr  egGzÝÕ.D·Jî¥ìK4»š&ñ:<ñPwa½8ìj›xi£+[í£KþY8{ÿ“»ÿ<".‚ÁééÌÛ1ùƒÿQ/ý–§ÜºÔ!mꂽÿ=˜Ebù½FOÛ26NRÅHÏËAAÁø  žŒlfŒ7˜úéÕáó7ÑÍZ1 ©íùuÌ]nPp¯5>⮋Ÿ5rZºmé,¢þ w²¬ê¯è©×cþ»6Z“øêQƒÒ” fNíHÎ/Ô] 0ý±´í÷Õ²ík†Ï‹TÌgt°NŸæ©EËÎkÇG†çÊ”wIÄ^¡º/%åPáÕÝ9†¿ÛvPqÒćKñ–©#r‚zuYs·Ø¼P¦ÇIÙçÌÂ>Þ»L}ðó<-L9wlR°ë++V³PÒÉðä3üB^ÿ‚žnIP™‘ÃòÃÄ9êÔnrleæb1¡Çu¯ýº1`¹oeu9j çu¦$ßô¦ƒo#žü8]]&•*ò=?‘>xßû|/ãn­D°®¯åÞX¯@’»P²31Ü ŠY’2—ë/²OêØÉ”| .˜ ·ýÛ­c(­’ÉE¬·q~rÙ|_¤îkPÃjøQ¼HèBaæõþMºˆÿ| WœœGº9­DdM/¢+ êºH«Uø7 nvcQcüÞ›õJ=2êŽDBh-•òÑ+Zp(“,®Ø(‘‰á„twþsñB]½p“áß\B.ªß_;HŸÕ[Óhæ1#寵¿ƒ¢?å*/á gÐN9ŒÙ1¡\b*N_LL²M ³‚ïsZÃßü¶Î¤Å>Ç0^PyæG®y‰DO™ÆÐJsi%*´Ü^òPA_Ch~‚¥­‚¹/]V,H½eK²L§:˜¢càý¸x½pLÀoZ­IŽ!쯟š'ÜìñO-Nb•3ÅÉ”t…ëÒ:´q4:ÈÚÂppšˆCÍz¿,¬ëñ±•)þˆæcŽ ‚™ÀÏ6éU,ëyãUÇ«·@9 z¡Ð¬ÿl0â+µÄ ¹ÜP¸¬-¼35ñ`ú‚N¤‡!öýëxzZ´Ý— ‘K(.,‘zÛšé!ŸáñZÌ~-e:Ž”§§JL÷ÇZ²yèŒzm š¦vqå8DÕÎq“¢<Ü!8}µ[lßœíwñÌ­xæú¾f,I{±ÜHøY…Ú-[eÈYß?&š -DEs·mîåöŠ× „@4‚úü~{W¾y)®ýÎÏh> Ñ‹^‹Âev»¶¹×è zbÈËG» o2ÏAœ#Ä.­Ø»Õ×X>ýÏ _|qª$ ¥IÉ;ð9 ÆY±SƒwçôMeÊið40N2`÷V.ìvGˆa‹GºÁè‚Y±w×IÉ4SZ3¹µ”"7ËAâ„m ’OA‹HäÀÖêð]ñÄu³<œˆÉ€>_qÄ´?ÈØJ†m÷U>«ÙÜb`…7dÓŒ öû¨×t tž¿ZVü‰|®…ciÍSÚr/y\ºô ‰h§¤ Ó2€v¼¬ç0·¢3Ÿ(Âú^4#¹¨R“¼ ¶î÷zV©é&^ÁÍ߸kðà Z—¦ˆÈ%ÔÛý4úcdü_†Ž³`ã}[ÏÞÚ?ï²µº ƒŠKRÛ}Ê#çéíÜéðàµMOÎÀX.í»ï‡Õ¸'"£ ´ôÆ çakΚ–{ÐTÝ:nu}Žk¶*AKÖ³Tmˆµi(3†—L@2y>†e5ìÆ×éEº “R"Îx›ÔkLEÑžßY%út1g¬FðgíB=h«Ib%ÅG' Ã±Û‹eo0Ä_²v%Ú‰úÔH+TaÍãÖ ßï_‚<(#Ù” /w+ã…?òšSɱ[ÖØ›Ñ‘e¾!©ä¿iå Öo³ª£‚.sjY]»ÍUIXÞ]` ŠV! †Åá šJ›ê”‰]ÔM¢o7)aJ åüÖèÚõP…³˜gB¸;_ÑÇ y&PáŒtÜïÖµsv _­<€cÑEŽ º‰çøöØk÷ˆî'¡Òâ7´‹ fðQ úÒØ&ŠÀÁ]5*!…=ÎJë}ÿ µD{ͨÿ:íÖß÷èÅõdÂ'ækê}LÔ ”±í5V:æÁusóàµÏû"œ«¢于 î¶þw'üJQбHùómIî[|ýÜY´+ðœ104Øñ;Õª†¹ª!]âCwïÙzßå"€8]QE‘³(§ì©çA žŠ»s8B^ð!T†³h Ë1I¼îRöïWÞ7òåìü¿¡EeÃ…[2抑¼…@ÈJ!*Ö!†°Eߟÿ+»ù“ÕIÒ‡¤&èw˜UýïåÈl×x·®î&4ʹ«pŠº„ÿx`\u{qœ=݇mÂâ˜Z*LÝ=Yl{÷mW»ÒưDZ&éVçâbLI¢@×Yœ ´Òë[ùD˜iÍÂï¦]½+á–šD×ðß>ð¾~£käÑž·|ÿ5Ÿêú??Úßóý;çûKþ¯¤?ý_EuóýÖ¯ŸÙ-óý)gÉô Ÿ'¸çÛwÉÒý|–ûäª~¯Gçû¦þ¯7ç÷™ß?Ö.ùþî_ê÷®¾´$ù=M~®ö'ÉîÖ|žÍøäØ×ÉÑ®ù/“áÕ¯“éÏùþ¿Ÿêsùý±ŸéÇ|Ÿ]/óý’ÿê·|ž˜o“Ù­ò{)ŸÕ¸÷«Ü㣎êzYwÁðÚ¯œ5e±¤ÑD˜P³ž1†@[> /æû·ú̽ݸ‡×šzJLŠ£$’ÆHç”ö ”‹C¶ena€À ÞGV›^§zóAÿ@âæÌl@Šâ,I5‡"ô¼ß°?l9Òbß* ^g7µ»bÏU…¸®¸ëõ4fߤ_¡b®Ï“!o¦ïˆš½vÉÜC…‹š‚Øû!f |Î9…+gw·S°§nsÚxKüp.ʧÌžsp¸uÉþ®)ê†#sëå=ª@sâ_DUu8½ü…t ›ÁHœòVóŸ‹äÊ÷µì¦YK#Š#ˆÔ’Cïm?·ããdý4êØþlÒQZiÃe>jêôëè°<­‚ëøî­¼ð{·MØ¥!úHˈð$·î6æ q÷E»•4Ë oóaþ;P½‹òUE¨Í"¼ƒòãáÜç<*°Ó¹ ºssí&ÏÛ˜šaFUA<ÚNsk ó+Å¡’¿ÀE+Jý!Etÿ9¿ùûÀph£y6M'û®ÆËMoi£zª¥Mî@|vhÅ5€Ûþ^EF?œª‘ìw¨¯TWÜš‡L~ãÛ´\ê£qWé…•Ù|¬l½Å¯)‡@ëI'\<±ã^Á»|Ì0þ}/Š™:ÍðèöhŒIð*9—u¦óªÚNªðØéXèLA¤(Á»4j‹ÀŽë8Æü}âš„OR†ÆìÓtë¶Œ—b÷š¤ûÚÜ™eGâà £Êˆ:hñ곕dßÃ%ú¦ÈW¤ÖÐg ü+ÊRö½/Ò"ÚL·çÂC{øqd‘Îç ñYïÜ.º59è©à / #'¬$ Êžœ²»éÊœo±Ñð;¸gÞÉ<·a'ùvæI¬¯%:Š:„÷óøŒùÂażAíÏ]ýçHŸXbàøP#6[ÂÐͼګ§ë³ü’ÏMQ@wá_ûk.›µÿ!ì]Ç\,­>¡ qå©;è‘æIŽ_Ñ8û6 º°Œ*N| (NP»ZM:ݧ3™ÿ6Õ’“o:é‡~²"¤‘¶ÌCñÿ~ñV6 åz‹·‘ú^G‡9ÌoˆPŽxæFŠCFŽøªÆNƒÝs¤®T ¶»ËŸ’Øñ«S°§1DI4‹¾ý…k ;›#mº)ì.gP–æ~þ; üFØÐ`õï_^ÄüQUÕþóP¨Ü¤Ü¹ý¢ ÉÒe²*²_¹}(æ(þ"—ܦ×sb  è'Ýärìç Ÿo@©AÚ†w¨VÏzŒ4 U䉲˜áAÁ€òƒïË—$F›e]âÖLâî'äT"ר¡3úÃúgŸ{11þ˜ï… DÍœ4ÐÄ0;Eÿ¬ÜÏhd‹8©ÒÁ¥^õ¶°dŒù0 È9ð(NÁ‹™teh¢ëÑþûõרÂ^Æ^+ߦ¿ÔSß]­ßçÓ¹þ…EÃŽœÞéêзE4ÀôÓp¯›\ ¼žÑzzAcªE ­Ûé÷ÿöHƒÙsÉG’sd-­:jJÀERuضŸLìŸPÇßpmæÉ©òÚœ¡¹Ï°|µÉþ%ŸÃÃ^Íi-'©@“ ®ƒ…Ú¿@jP5MNq¹ˆ&Ø_׫m®àÄLÕ9ÕAXòG!Õa¥»‹Ø-‚UüGç«h!¤Ú½_ºÄ#7íŸ^†½n•³£5ˆ‰Í5*§TÓ¢Óyίb¡§lºRþ[y—Ôù'pŽ~ÏRÊÌ"æ£`F%iƒ cD?±žPé§ÍËdGìíh!Œâ—ã)õì'\ \Èg4ò 5¿»iëÚ!o×qÔÄ׿O<ˆÍqFê>[6¸#5þe öÔx´û³ô+cÐñy½ÌÒ‰6Cã†(Z†ÍÍxdsµ#òs¤øÕ3ÿsY2?@,´ëýV§Lº¢mñ;ÃOI²MOJ3Vë—|_tÈûëb’´ð=+p•КÿuW"©2\@cjS`º^¼whþ £ßuî›ÖD7*´LU¬ã›3ò KªŠúíŒwaw ‘áfn‹@»¨D®µ+úǪÜ!˳-/O,ßi7àl·*fÒ»ÎHuW‰z¢ÙRú0F$J] ô ‹·>A“"u®åÙ¾TÆjA?qHô—aöq´³€°D>ùÎÁ‹Ää«|÷}Îÿcä*Nº0Äz´ì‹“»›g¼üÌ$•|aÍàÍ/ÒYùÅSÙ&¨¦9ÑŸðŒUñ峦ǭ²»y¿\Åp)ïæ¿Yq_J&G5V¬(¹$$ÛJ'9ùLß§Ëd€µa Á<«¼óþ#.U¤¢:4hZÌùÏXí\ª«Í…3üWRt%¿$ýÂVÄ&Ñäè  ¸ Dî²ÿ§'H1ï¡dž»Ðÿgßµ˜htQ…W“‹+síÔ­¨ÿZëEŒƒªeÒ¸EÒ™èݺ²æƒ7Šˆ\wí_Ôž­ —,™æ,6a×õS­j§õîv½ßܥ譟ª‘¥¾`ÁÝð Â¹v$FÚ܆7­‰kàÿ>ÀÚŠ8•ßlÃYq!*0îç#E½Ë|Á,·õwkZß2ßä\×Ý’¥xÀSá×]rb<9w|}cˆf®ªæ6+qŽâöÁö[Iï®—Ž€dTžIoš³±SsrWH´¬E¡;{uäîj°Å ÁßîÇCÁ§Œ­Þ{,¦¨×w6Å‚Fö‰²ß8¹úuP•u!þŸq³Òfë¨S «Ù«ª™òømýþQy kÆ:ªéæÒqû¦Ø*ºƒx,ç´9W£uÈhX,2ÿ8†ZEU¸ào}öÕöõSrF*‡ãà“Û'eÆì&+{˜`LÝ`PÀÃÍ‹1ÕÆÁ[L}*ŠƒÅå×7 Åâc3½ÀîŸRdÜ%&‚QîÌ+§éL‡j4HAÿ=dhA"?è%¡’f^bŒŒ‚I]`§nu/Of µû÷­›a°Y§­/‡¸ãºÙÌ#ªüÜ󦿮¡ÂTžÇ»¨ÃÁÉ _„v„] Øµ:ïØ!›<‰ ]*¿%˜Q}¾@ V‘ßÛphéþOnjL“_<¬c¥O5 õƒ ›oýa²³“…˜¿UW[Èoê{Qå8“ý#ÑË‘ %ˆÕ” éäý'”ߌ›¢–£K»ÄoÃÓìzŒ)ôÜŽ;½©?£±Ø3$o48ð‘Ÿïg* Ã0K,T¹˜Vnêµ{ÓúæH”ZÜl^LwUßEn)¦¼&sd|58Á ‚ýÆ¢ÈY"K†ééÿgÇÑ :–Ï:íÐöõE¬²Æ†'#Ê%ôì‹ï° !¦Fsëñ« .ö™yNpFø•+éóš™Eç>Dw_[Z®\eÅ5/c_a6hõ¼/a¦höK(3×S}«TICφöù7æø´?6RßÂWì1‡¹¡æšD>ï‡B¦Ú™)qàã„ôÔ*KWµ*ã—ꊕf§)hGÙèZêiñºW¹ÈçàÖ¦ôœÔrí™™ýY¬´šÆ¼ŠÛPw¦™ÿEæÞ]Ú0^ŠÑÄîK}•˜=Ìé­‰òÆåd ñìˆwœô/Ô6Ìò{½%>®ˆ¶¼Ì+'"BëÏ\Š ‡TjêEO^¼£ýƒ÷¡agÑòÓH8ëþ›P‘ºTŒÈÕÕ6—ÞCüJ.3¸–``Ñp'ø™O50 À+§×,²Up%g€}Î0ÆÐÄ[v’|·ëÌéí³9e÷÷ÎùPHèÆÁ£&j¯æM¹$*“ÀYµHkÈS•a ¿Ì1«¹àµ[19¹ááòŒ&•[7 ç,l%•s.ɲHnWάŒsõ½ѤCÚ^"+ -uS¯'9ÔÏ•À¹‘GÞ¯¤–=žä­ UtJ™W8ñÙ/¶!ŒÎ£½uöfÑ pÚ>x«ªÛé6QzŒZ¶(0µŠšÄo´ñVn&B¿ÍЩɯ«ÿsÛç}ÓÞ=âGÂ%€ŽXƒ-.oyá.¥yDI(EJuásÞ $:‚£§ê"p/ Ó£-­†Dœ£c@¾va†oÊk‰Þg­ý5Î×’-T42ˆ]äaû?E JL‚Q± ô.tƒ–³gÞCpÈËCYÇ3Áßi>aI¸«ƒQ¿14Gd_q|nO]V°%)° q8ü¨ÆzíÙlÍ8ÁÎwçüf+5ñì­}]/w½]ë˜ê…â{d‡£a,ªœÈ÷6O;.0™_(éýÉš8—Ч û¤ÄÑ¥_Û¸é,25ÿÇ­èÙÉZ6J¿Kþ¬ÚïoŸX¹~¥[$".Ë·Ry¾þwˆVr°ý°OËv¤ gÛ#&A]½ ØDD% ,óÚ7{uT«sÖéWóh¶Ž_3`mo-¶GñnÕH› ‹ˆesG´CÛ~r+Tþ ¡ùõ«²îNZ=Qfõß½$Ds+—Çíô±¤fðp¾Á8MWÚòw¡Ú“Iô:˜íì¤[ýBh:kÜ%¯8c I¾Páë9Q6Ÿs_Ùk,£†;5u ºsQa¬‹0×k”°¯¶â 5aN.€ö;LH¨T¼è‹n+¢£#–uSÃ?|ãøo·we^œ—<¯î¡J¡½ ²òãÐP[ÔÊ·Ãj« C³• d ŽÀ+§@R~ôª¿ðÊûj<÷°—¾fŸ!q#7eõ9šHQÖL`ic=iZÔÚ‹6òX£®´v8¨ÅªKšÊ,¨-µç” ÿS¤#d¨Æ‹›† ¦· h¤Ç¡v§¸¤X¦(´ìF£—³Ž/¡{Y[SFå«p´ý«f±·blgšÊÚ¼xŸ¯¦ÿI&í}CÑ›\7|2TÎ!¢¦m,A½Ó‰ÔÒ_X<¤<1N*wÑÕ@U…²$ÓêÅiµ¢1_@•Žeç䜆>YeM:JS;.ÅÃ]0ãèÐÆ§¾”Èo¨i¡äiþ‘2Ùø›á|‹ÑuÅ’&uY½œÄ˜%íñ’¾Ú…‚¬O!®©ä’r•$ÿ}uQÒ"bp §ÐÀC×ݨsH¾Ëú ÚJ‰.·P%ѯ€“ Ò—s? €C|#êfƒkq‹Çf¨ po+ \p®#Çè Ï é_ŽaŠ¥¥÷“#ÄÆ“ýÇê´VvLÁuÚã@Z¼[¶Ç.M)EVéúŸp¡Ëš•Ëjœ„¿j{ûáRåm@ ß82€M½Ú%Ñ‹Wœë%Í?ú¨Í I˜÷ÿ`¤Ùqk±`,'†(@L#úÿSÚíwÔQB9ývË»2Ó2úäý²±Z7ào¦kê*Ú–RÈÕ“ÿ ‹½’Í„=§þ2é ¯&ZŠuPÛL]k%W¥2Q^åån^‚JjŽSºÅ¸ÚÊ1UFÿŒ—7— dØììKAj?‡èÔ×ú9^ˆÚ—÷òÝÃI#©OÁîk²–¿†=£ÞñªöµÖ,žð8$×Þe· À²Öq²Üµ=Ç~ëÍwD-§1¨õ¢×6‡µX¾‰ø§5ÐV·êä[­J "ÜjÛ%‡KGŠD¦_kt@5˜÷D‹¬x?A–Wnî#™^Ô_ÇÄ»tŒ5X@Ôv\x… ;,Ç·Ýç~ÿXñÆÙ ¬$«©åÓ‡ùpè€ßù×´S–b•QhßçPE3_Â) ¯›¼±°I6¯`xZÓÉÓãß…ýìý*±•aˆ©Šƒæ:P«É˜Ò-¢Áyë‚}®UkžŽrfõÄ#pé3¦ùh’vÑEn¦®ºÄä«õQá¹å½pãD;ÜÆ$þëàt8!>M,\[šò’¢Êÿy¢ô{íƬÁ=»d±€WºæHâåÅaw*t@ÿ\£\ûàùOδùl Ën.}Oì°k˜bhž3¦ºóŠü<#`y½G83¹û+Þ¯[úA0ãÍí¼µÃÞæ¼½¬!ò±ÖBÙóØ¸¿sðjq]qg$¸iÌý¢Òʦõ &¾ZXË…gy%|0œ_ù–Ý ̈½ž2*$ÂÆü-E1 1õ³Iêßû>-ʈ-ÿ3IH ÁŒ¸ïB®}&è4(¤ò"«X#kLx óªk²ÈCôËÐIÿi¾åΠËv[œ(o‘$Q‹gé=øšŸ)T˜ô„ÃÝ£ÈËì§[תp%pªë†LŒ<Î0ŒÏM7çèÖÓev3†¯ž€€Q•r Êäc2°²¿òÆ\&Ëލ;fè~‡»·s1Ú’;¿3wDTÖéÔº0.¿Á5èA`eVàìÎúy€ä3ÂÁÈú“ñ.[_°§êëg™òIòš|_dãÁ0)Ê_‡kÑ4xº×8Æ_¢}ÕdX#‡ï¢Úm&LKMÓ©BDsyZÇ ñ]üÅñF.«úøÈ˜}åÕŒUSÜ$èì8Û÷ÿ $ÆG›Ët1mDQRMhS“¿a£þ™•Û¹ô«ÙÞXÊõ¦ÞbC˜ã-0,yÝOüwØw<¥=ÝLc°4̹ï÷§©Daœ;ZÏÈôç‚Ï |ÿTÆ2ÉDø¦r¶5À•_/TUï&UÅŠ® `Œ‰m]¢³³½¦­E ö9ö*Z)íq{Šõ’þ–Ï£…d9?açïM²kãSì¦v~í'æÞŠ+ž0†F¹°/hç* k­åU 牾ìwg9èæ(™“äȵÚÖü®“w>GËÝÎ,È.|7fnʹ%ø†‡Å_«S!yöSÔb® 2±)Ô¢7»z\«ÕþŠ{á3·éŠž¯ïèÍ^ÍðÇÙ¾]Ìu>àWÃÁ!µzÑ©R:€0ÜRÇásb7s¥0ñüA·‡4dþ¨àϸÞÁuSØoù‰RìñevÈ"ûC¨ ¿ŒÓRl×·Ã.i$²K.Øwð/¤!xkÄ$a¶© ‰£ ¤ˆççŒb$‡ kÙ÷lˆ©=ú … çtúøVçlL!Ø`c5û$±k.JàG#sj+@â¶ÌÛ&ß& 0¯F¶º9¯Ü™Þ/À9ÃŽ¤œhk '˜lÍÒ?kµ»ÚaÁ®¶UÜ:ë–‹‹£ÖúÅÈêKMÄ,Ö„A; —Î_Ð"ÈJíÍS 2ÙyÜ[JÙ×cœTþ:BIZ™º~ag.r”Àb[ØY{‡§Vç"ª7æ×œ0î°WJ-dr!¬ú_"þ,óŸ#.FR©É…ÇG{2{úz&‡›ÀÀLê!÷ÑÅÍ5üïY¬¸èþ*+i’ÃØ}÷#–Gˆ0½;ýU©‚sw($³½äž&üõ)1ÝTL eíÜ´m"¹n±‡û X/¸e5Þ[࣠€KzÆïLÖWdUíåáí–©ÉŠ^¯ø°"`HÎô°Qøžd³¼«ƒ×¡!mþ¢ñqÐ:úÿ  "?œIì¶è´I÷w蘫Ј×-üâ€tËo%ûö2„ÀÉF³yô¨}h{)†üAL]ßx Ii/Ez=à„çcø"+º»·’|kk,«Û–¿Ò£Ÿbàc&>MÍÊvßÊ=ä0ëZŠÞp1In µ°a¹µžLÔ&ñérg›îk>_fﺈøDì)81 AëGöÑQo«áÒ›Ö-—±ÃϪ,ú@Í §rIM·"‘Їð÷ÃKyçIÙYÕ‰bÎg*@.^×7|ò³ï=Ã/MD·N-€¢˜¯ÈIsˆ,ºCaÛb·¬#­£B_Ë‹Þ)½Þÿ?ÑÙÊ÷!Њ[›j` ßZƒÍϼYP#F \«¤¨¶œ#L—H”î}a?lÄ\–fÈ\{6¬ÊaƒÐlŠÝri"ùÂ[òh™~$ÅÕëÎcѵ™ÉÊÈÁ¨-Xæ' f ,áÑd&±Þ[Þí‡i/D×¢«ÝµÜ®x†—Çуcˆ>O®ÿ#+­øÅ<©H€ô⊴€É±’1l‡>×Äšªü–K{dÅz;–<+¡¼U§»ËC‹Öܵ!AÀ¦õoÊDÄ™+ns»ö„³Pš»¼ÀViÝØ-3®ÏWŽ^«2Qaq¿ÕéRáŠÕé¥ÎsäÐ@gkÍ}ùÇÙ¸ëÔiä°ðHߘN9ñÞìòìpõQ. ¡[C€nÜ2WGIžmã÷… ¸ªû‡ý¡´òo~›Š#: öBJx÷ˆ†ë2Öþ¡ÀãÚ‘àzÐÔŒgH0/ìéy £áŒèéU•U¦Œw©Fè e€"Ø•ÓMþXæ²Îõ õGü^æe´ÈßÝø¯/+9zëÁž!ë°v>™áäÂL×ù~3E•mo¦/á$K¡w©åÀkŦè‰ßnÆuùN~Ò@_¨»A•Òˆ”•ŸŠ,vb¡ìa7´ôGÿW4Èñ^Ãüªæ¯çšòî}r”¥Š¶¿0†–ñ~oŠÍ9 ŸÈä ƒ}>ÄÈl ¹ ˆ<ØËiɰ·CĮˇޣÍwn”åZØ…ñ48$KϤGvù]º ÿ\Íd¸GÎO9•™ÅH;èG)57Æf©¼U]Ëß>;)վЅ½È†%8E]×ÎÌÞͼ-ôú{áh‰w@Æçw($¦³Àâ·÷‚öÛvì’ïMЭ€ü<ø|;˜húLÌ÷¹-2Ýæž¹†F_úÄ[S¥ õ* ,WDõ«!wŒæ5çŽÛAùa¸&E_””ˆªdˆ:òõ–D™›²™“ÖóÓ6ùgê1E9÷ÀÓ_ít?|Ín ä,U:Gö™œ !kí(ÜêÞ¶øhÕÖÙ. —½Ù\™Ns Aû:sF[Ä'1¡J×jWýã<ô{ð ½´svÇY6P’q?™ ¦RS/k¿%œ¹Õ£ “âõCiƒÎzñoätdº'V¹$KdŒÊŠì¾lõ|G!•E`%7°™ #¼Û2ûdÙFL·»uÛ¹åß kƒv¸))ù1³·ˆŒÞJéy@ ìDwªÑyÏ™ú\¸©DêlXBñã{‡•”åêM˜+ú©¶²Ø•’§;åÕfäCd„5¼xÌ{ñc)Ûó3—Žx†¨Û¾uÆ6Q¼mîÌ̇bžœÏKj﯑—ÞåJs¹Z‘OÕQœ"Åž„Ãù•w»õÿF•?Á-«É3âÀãšøâTÂ-¡,Ç‹î`Ïúð¾¶“´‘üpCbhmªímo6~-s/™¢"Ê%àXÝÕ.4Q>WöÃlCögÂWóc¡ç.Ù‘ö QOD¼ªy\è,A=ÐRsºãƒÊU´óäÇè †M‰a>Ž)þ·t%[hFúäæ)ÅèÊ«={A%†ã«ß}VÿumlÖç…°ãå"›ã`kYÃ'|"Îö‚Z¦Õ<"ë‹Áã‰KåU„Ž:ò‚þ¨,¹þ´Åƒ–»äðÂàòÿ8ˆ“¤Ì)ùè—¼«0¡Ü{O¯úý\g_QÛ–åóW=I÷@˜£zŸÔùSõ¶M&z:¹¯}Y€lÀž*Kaù|LTõ'ù<Ræ…(¨)+ÒmöÊÚ4  ³â’Ý®¦òš‡uIÚˆ}’”=.&õ‘ް,Æ28a‹rz ¶NÝ!Û ? ÌF-“¤qIóDÿxEˆä•}¬—>/ß„çdŠIt¾éÂòFáÈà("Žs¬É¼eè ¼¶u2Ѩç ìJ `D£LÿI\¡X¯šMÍuDfǸ‰û^RûWCƒì×(ÓIN>ü ê}|Kê–1õéÆŽ/§Z‚½g­¦ûOŽiPDå‹ägëd)g* =5¹‚Å-¢#ü‚\–í”);Qtò‰ªƒ0”Á+×eŸ¯1:>þgçvë*X=R^LR5B'FbÊW¼kŽ5`cžü¨é9† 0 ä:V\}¤¥¯HdMBg(×B’Û»#¹»[þ\qš°L]ðµîŽU ž€äFÁ¯‘¿Av¥voÁ`{Ï.¼r±úÌ€tŸþ…«l;¨|EÚ…~*×%cŸØ¾ Qª¢Jƒ·33§‰iž`µìáÐ(Ö–OKê~œ™d†ùéu þ²Í@Ò+:¾XŦ»ÁdËÉL‘/ƒWW—üŒ‘ó¡»^gpMâDòïÓ¥Á=ÿ1)AäÛzêFcÏ2œÎ¿ëÄ0…ºD“&}¹½Šr ßë÷ü­$ôè‡s$¨Ô2çs–ÜV2£BD;æ÷œQ• è™;åmîç{£pèÞóu_Áyïé6uuçvÂןzþ9  ˆÿzÅH³ãS„õÝŒoÄ@¾Ö¬2éš„V¨û@ºÒ ³Ò]êƒ*²ßbˆð»S‚@ 2 »E½ÕÈé·«°Á1C ™ÞQ¢7ñ-ZÑä'Õ^à9ÉqŸT„<)Aj•£”mþ®ðç •<ÁxCŸP À@âe!w壺GBïKŸT¨ )õ*!}ešW„dÅÇöבL1ÌïÆä]PG{q=¶`Ç 0. ¦ý.½b5mzøÎ‹RQ”@Y­»C(fV¤D‹ÅZG¤:vñÂJ¡cEbC¹Héh®•…ÕFìnA})M‹J›©ú bFÑJÇ[%ÌÀ“/›J©ûŠº¾¯”;¸ØOšæ Ù@ ±Ú–É„§‚iô¦,ÅCPôØÂ†bÐ!åä2ÉáçOT€ÉL$>,ɸ$ß»‰VãnmìLtOψÙg.g\OD°€çûTú¼‘³y%g@2û$9§Î©kRâxúí‘ADÐÜÒÚþUU ï½Ì”˜[ªG t^z ÏaøÆ23Oe17ƒ U8„¯t–³¼ø¾·_D^b±\'‹ñRÂu]O–\Ë5wqâ‚ œ.8Yù•Ï.lP>_ÏRµÝþüb-†±LiŽöl3ß Á{Ö–rK„Øn£ù†ieMÁD§W¶ô=Ú9”å#d¤ëÖ§ýäP&p«´)!Þö3®î:»«Ðx°õ¯#\ ô¡Ôc,*λ´û€òÇåÞv.ò `øÌL+ çê}¬Ì?;ÿRéƒD+§½Ò«ÙP=aýnú`ƒ«“Gaör9 xk…L¾]È ñ‘£¬§Îl/}j*ÆfPꌧs ïf$°ÏÈ^mHOd ¬)…0 Š{uNˆ»á i›:éIk¤¼Qôû òã Øs÷#å.M)‰“d:GIði¸6~y>1B—9/Š“üö¨ÈŽZÚéWÃ#aPÝ`ô|c#Õ ²~ v4Á|SŠ.ýÑ?ÿ]iŽ“ÃñÖíÄÀºAï }ïi¤ÎŽ T5(Èjáj«¤õLI ^hlÓB2Úi[QÈ¿ÈÝeÅçÄîÑ“/™– ÅÛ!Ç{®V„±o‘ñì€xB.ÚYí ’çÁ$蟩@©’ј…xuuÈʼq‹Õœ`8v¯qŽ1cé`>r‰Ú†išœyâjŸøG@¾XÚUªçýÁÈr$%g9gváP†c!»1þÍiX™ÝžmàlIžg‚Èm[sëïÞμèg|®á7¾tý –Â$Ö{Ú¹³jß`"9øªL®Ø<ÖŸp£çî¥[þÍÎa1¶V¡Ùÿ=ãÌu( Ú@|¼à"kïîÔ?Á”0”æ+ÄìPÆB9nƒmïÕuˆõõƒôÊ:ù¢Mæ¬-½ÍìI`À½ ³§T­ yLM•óò5¸EEƒŒ:12íƒÌ2þÛ'áuªß|îAH)ýÚÀWy=ô${5±À‚1A¿÷„[ßú†ÉYԭ븴ž-ÕWèd¦œÏèJ7N)ÿˆ¬Þô’{ä8 6VÛ/´çún“9š+l Pþ }¼t+”›>ø|‹¾ {+”)TÜ6ò÷˜Œñw²Ã¯\ žÐ…¼q*²äG~ú)3ÚnIÍ¢òÂŽ·…z Â{³·\5f3AÏœ¨Ó„—îÏ?$Fê7A¬Ëtv21¿’˜ S2ŽjFUJûéé\ ý†s®ä™dö§xý‚²ÍÌÈ@ž |hG<ÞÏÊ_éÿ{4%©dÐòQQ8—Ñ-â"åZžj¤Ä«ÚAï}­n‚gîŠ! ¼te¶ÛokÝ"ëš @ÁŽ‚,sqâA‡6wEˆ…´o_=`Ö±ßÏÔw…à·‰}Xù“‘kÒÀtÏ Äø0¼e‰˜¼w%èÜŽ+µæVOM°n7\¯¶ß¯‘ÙÛMÑù> à¢`¸Qá[ÊVÖ ‹3ló%•&ÏPšgk8©rQ^ÍðÐëÝï¥2(iiv¸âÌ^Í—™§îªÞ—fø5qNi†{]•»ðŒ´Š‚ä¸ík/4Îù÷P}Ñš /TÛõŸ¶où¶Ê·=Á„Öd!ÄÝÙ«Iq ¿°ø9…_A­p¼Ï^4á5œF0ÌËúèÞ¹ËáàJƒ0¸[ãï­y,ºÉþ¡‘Œ¡9öa1¹Üé¡Ö1bîpº  ž:î0ÛZ¶¯\ ]+ö”#>\½—gÆKØô¤#³N”óPßη\^”êÚ2Ù CÇ,Çœ0/ÿ>c_ö².Ãýj2´‹ÆP¸9O&®-<¸ŠÃíDÌ«,cRŠ×ƒeMûÐG‰ÛÊAÁyÃ{. zÔ!½™áZ%ï‹R²J˜ìï/ápé­æ3³ vx±[E>`S»»(á%Ôƒ—ÚZð½ØFÑem!…æÕíöàê $ûèß“P2¥š¨{h|þã h™Y™Ù í×ðû¿þÓ¹,àÜûb0-IëWò|‘ ó]áe¿ä2Ó]G÷x —j„­].³Ê¤A6­F#µÇ|îL”Æè½6Ï(»De¤œ T¸€6ËF$ÅwÙÎúþ˜g§´¶s…·weïìF†lÿKèXÏÄ}@/R`é÷Êõ¨› ¿ÀJ?=ÆÍm}–fÓ$õ¾m  Ÿ˜O\¬eW3 ÆÞRœ'þtš·•ø¤ý£+úCjZ(ýæ›\Ñ?‰¨’·Ôë¥T+N!t°“„Ù,0…ÈfÊ(ÎxÃ#މŠ'çôkŒµŠ–Í”:ÝÞD.ôÍÂmBJˆ&ʘ9ª¹«Ÿez8ÌæHº'©ôö(Ù±MIyzA «=¡?% ŠyNøf[µs>z[ªnu*×鈳ÒVTˆSM.»£—¢~I y2`f…’%ÉVÔÉ|©¬(,û‰Œøg"Býdƒ7òÜ]CHðò³ó§#u«LŸ¤öƒïý®K`G`)/ý»g߇D°7¿ug­X¶@Q§ŠW'¦\â·¢Îäþ¨Ê]pGÏ•¹jÀ‚ÈÞæÊtœ$òâ)}sAÄÿ†Ç/bæzx°ç i'{ >×{ö2ÆË2ÍUF3ð÷>Ђ ±VÒ&í“lSÃܹ~Òz#ä-úÿ:xÈ¿³TÒ]„%~ëGy>;·Ô=Ñ´@6ûoÀRÑÍJ°¯2?%ë1¦³¡s­Ê²Š*WkÝkìj?ZÆÏk(S¿~F„ žkD© ¸©äÖe}ý]ŸÛY<Šžº„„÷´õÁ\ž­¤ˆ5³"‚O_xDY´ÞYòX Cêµ6\?óFפïý¸“l:ž(ßèàòÃuzCÀU–ˆ$J`C”NÙ·µ‡ãUdÄùŸŒýàþÃå8¨Zÿ'TŠ®8Ãb/£i½ÿvc½ÇÅ­ÒwòÖÇ)¶±Û;¡h”…0–· rE£iS¡,µg(’IªÛù*ÏP|1ÆÓˆX5C³1!F2©·Öµÿ@~pµ4Çå«Ö \_Ko »òÃ_ñþÑü³ë»ðTîìõ›/„ —*À¦)9¡6=<äSðsΈû¡Gým(t‡±x:Œý.hHâ{OµP©–x ß[ðˆâ¨q9Æ¿† {laÍê—6å,¼q¾AƒyåÉ¢ð‰#‰Ù6’¨½ï0bwiý¶ŠS 0;©é|*ƒú 5ë<ŸÛ"¸^5î—Oä:®RŸÝ¼¬—Ùl(Ó^Ë?¸˜Ëc‹ÖL‰o¶¾àwK®¾¸®Pg˜ ª§±Ò@Ðo[ jEœ3 #ªÿ7€Yá„Ü(3jŒä!^üßÛ^©ZÐt×%W€:Ùö“T ªÿ4n$+ÕôOɨ¥Å¥ÁlQàmæç¿ØENE¯W(nýü)z°Q~HŸm"c”ZõÔ¿Æ…l®Õzvì=ÁJ'Ä`– ^”§êUypª@-vˆ¯NTÆMØ4m.ëòåÛU|;VaBÍ…¾šÜgóÅbÜ ³µ\“&VcÀçšk"R…€ìœÂ<ó4CîF¿¼½¾°9û¹%º‰Qâ½èµ;ïóo®_lA1²²jìÉ]ša™g¶¦Ù 5®Ói|ôayþFv£e0_WRPÀݲ¡»í®aÕ yS?\vàjM¤û‘³‹]®ëûW:,ÂÞKü×`f°)Ï{&kI½¾¬Rç%¦9·<âÝcb(v“ü¶r¹(:òJ£eGa8Mùã5ù\„n¿ tEJº}‹¶n†ß<aÆÖ¨¸öÌõe²• nGŸÀ.±ì„Adࢹ"XCØÌs>ŠºþEQÝë<õb^óö¿1N²u2c©­„¤ÈÐx(©FÂêæû(\ O÷üOƒGì>ÂáÆH¯gyÓí’Œ·=º„+ƒÚ<Æ*|[ ‚6™‡iꨆ½íå•b6…È~±–òϲ©D/ £ÙsGJEÍ>ÑDj_3&>]kR {N¯úÐü©ÁnÊÔÖOŸŒÐü‰v6ÁÒ 0-ï…îëÉqï˜uæj׿³ú¸pòI|Mz>jÌ8³b¨”/Ñe÷·†BŠjüolËüO!/àe<÷¹ ã7—Ͱ3fpž•ËõWÃ&_ÈžÓø`U§ZdBÀƒEft¤¶´Ñ’ê7œã¥S#Ü„^ü« H€øã¦L5jÌRÀÜdU†RU¤;ÇÀÚ³³û‰ËPX˜~ÅN1 ’»¥ÿ(˜¯Ÿ-x¼Óÿpf×CŒ ßÑó+V¤íˆêù §Âa~h´•B@O˜løƒU†ei¶OEtÔ”‹Ë`,£RoþqJ(Ó';%¥üMˆzM탊²ˆÓ@CÚã6i#Ü ±½¼„"·+Þùº\ÿs¥¦m´m©ì†`ØR_À?qƒ¦{×4'Lè–#¹HQ4òÉÍ©±ñƳEšŒ:çMTˆ®'*4â{˜Áûçþ Ÿ¤w@…Ø—Jq ¸¡„)_h"ÎNúòT^Úôlj0 þ¡þ–»JÂhûìþÓÒÒàÃ_ß5-^S ,à ‚s ô-'^ìÈlÏ "è‰/‘„sñL0¬!j˜sèæp÷05QìÖ§Ë^™)‹÷Z ð_éæH¯ï#ißášš4ÿv? ÉÔ»ãÖ’ù¿2W¾ƒAÓ:¡éâ0«õ¨ì>ËןO ª»6¦òXl.J|%½šf©Ñò¼²b0lDPß0’¹¥¤€¾F;­Q¯(ð›T*aWö¢S6YèU¥þιþ>æÑTo1±½Äµ—öŸm÷ïɹeʼn‰MÐ? p×þ(¾¦yÉÓ gŸ`SÑ4¯)»`Ŧãíŧ"7-úÇ̬ÝÚGäºÏ­°¦ÂZòýÉÙZ»~UÚYsYØÏÚÜ NÖ5hÇ:‘œzÆ`§EÕѲ½«™ãÿ< …çèÿU}:‰?ÿþœ X§yûËï;rIÂdQq»ZYo÷s¡ÖXú¦Šž„Û=ÖÀ­=ÊúX*rrÞgØ(ÊlhcœhŒç Ì?µ«Õ?舠…Q&àY9R’n1VÓVGÑ\Á¯TëC{uºˆXLÜ"‚ôʳèI?á¹»éËШ?âTb>ŒJ5˜°UÒrÞ¸ùo’‰¸ðÀ‡F…aNÓV‚ÁKŒŽù÷¼ ]ݧàfÝ—ø—¤."ì,4.Ú-A,­å§‹r£Ø`ëëÜ“â²|Ÿšè4ûM îlOåÎ&_§;`¸ê*vðI!Ö0éd#’GÅFo~9 7’¶°6èQûýf:l78EwKƸ}QùÇŒèñTÏÐŦIŒ¯8Š _k†ÚEoZ¶·ô­¡û!Ý[¬.!p ‡¿Üt÷.zD”J“ûŒ½Rö’äžC^‡0¿ßÔJì­sp‚PêäݱäE¶¤Ž,-OUS¯ñUœx°¿‚x ó†ÖŸ×y4Âá ¹6ÔªtkCüߨ½ØÝ¡\Ã6ƒX»¼¢:»â—¼ƒçïÚ;f”9ÿ\©äžÞn»T¼¥ß¢("šæ[µŸÁr¤g¬•"Ðõ:×Ã?"—8•³íʸ4¶¯T¹H¥/®t-Úƒ‹€bËD£¢*(Αg 4…Æý›ŠÎÒ¤6ÛéˆÁ{‚Õð iâR&Ôt¿ ±É Ðä“Pí`JCÝÖ!ëÙT Køçv¨ï¥%pŒWȤÙÁNÖƒ ÐŒ˜wõ Úáè} ¬ ‡G»Ó©]¨>F°ßTÿF ¾ÇO‹؃go÷L* ’ʎҦȿ…E&t7=®¸·â.0c%»DãÁ÷6~4çθG=ͤ  >áßéÎÓ‚öüó’yjðÀ>s+à™Õú”•ç}!¸×öBø’gOäLWKo%•åÁz†õ~_˜?½üTÖã¶/8AUò¬ñÒ®ÓßP>nñü»TŒ}!à=)ÓºµÆ% ìz|t“Ç‚KÅ''ªmøj×™’ë_‰Ø›}ÔfÜ €•ÐMOË÷&°lÈqšßâNpÿ/1É’;)}]È}§ÐÆòSlØxÕ ‹)¿ÉtÐT›‚|IWš´ì‹©I ‘ööæž*ó\¯«o¡ÙH?BWq{èÔT‡ùç‘VÞÌ5ÕÂÈkÝBSãÝôegöpò AžÍä@L{¬×T±"C*ÓðBzŠ>¨ÖýÅ‹‘S°Sª ¦0c@ hF;Ožd*Ù‚¦7‘à9d¹õ-Ÿú7͉ó~æOÿF-&pŒÎ ÛWsNÀÏí‚B©GñÐF…™‰d2Ñ«ÄmÅh¸x‰èêsïîR0{oqS^€¾@ƒ@fx*Ž Ø“éà¢9hM_±O¥¡ÖýM/(ë›n”o í_‹Áꜱ6äz½z»ˆA÷gjñ"É[]ù”HwƒOÄØ÷þ5Îâ7A³¥dZšîbý\Ù^š‹Z[Q¦ÆŠæÏ„Ó—ÎNÂs'X~^Öç’Tµ“±¤žrºøñI%Ǿ¹FZîÇpk$zÇ™à’ï\#ö,öÀßV±ûÜz¯ »‰m|ŠvÐôtµÅNÔ;æDŽŠIÐß §.x’›f1 ŽöõzÔÄ vÿM«?G¢¦{&#Ž÷©VQ´‹›4£ÿHŠ&óö?CŸ^³#&Dqå­>Ö)k±9< )̓‡÷¬FBñ3ÚSYÙ~J(¨ë‰Â—aMD³ÊNRY:¨*BLx¢_ œyÌ4pÏ0´NaeÍЩ/+Eôÿ Ÿ™ýé± ÷þF0ðÃbŠ(ïÈFÓn8çgý™¼“¦Ìù§šG'Å-ˆ¥«š„ÿn§ñás rZ¥5S ÜŽ-ðMu’·~¸ØÇ¤Ùø¹Ä•5àÍ@ëA2p)îdaŽ&Ò‰ÀåA+HP·¶UÏ|Îëj¡æ£+àŒ‚:,èÑ¥Tׄ˜¤¦ËåŽãö“ð0?íº˜±áÉØ¤t×CtoNNò8¸ž€eWóýJ" ¼ä’}¼˜é‹@Ë$šd9JÛžð‹½ÆPù"‹Ø&¯tGö$×ÇÛ2g:%T[8õGÅÈŒ`îŸÃöËUͤ¶÷f¤v\…õ¾£ø£ú½ÕÅ¢žXàw8>Ô î¬ô&Q?zF!ÒÆ©~Œ8¯o;ù˜dºSSmÛz±O *™Ðg×íÁ0Ø"©I¬Œ£1ûÝfGÝ|Ïý'M Ÿ¥6æqGÒôŽØ*Õ# n)î'þ6pHÑa>’7Îì †þ%µù;9w‰’"þ×`a ‘}ÝîüºÌv’iÒöªP÷­J۹ƪq’.á¬ÞöºŸ¼¶&7k`ù:ÀžS^Õp먑ƒ8|[º„HV"ïW‰ÄHÈ?þm}HÔv8M2=ÜܦֈÝOa5J£¾vE èœÍÄæ$V­„çÄ5æÌ¼}£µ¯¸˜G ÆC†çêÆ›4suX-7ñÉ—ÿ Ä1` 0ú°í®³á’GåÂë§4Záô#¿+†Ês]ù厪Ô"¶TêÈ/¢Õ¸Ì=÷2=CÓÂQÛ4ƒÏ¾•+ÄÃûvw/‘ˆëGÀÅëês7šŠ%s]Ÿ¨ûÿx¶·€«ã»%RÙìgìt¿uóàÕàÀ}Œ`Aïy©„ÒŽƒê=¨¢@VçRúo6A£_œNµ#ÀA@~ø?‰Lc$2úäöQ$ÿ+°Üœ¨%+Z±¸iP… Å\B¼ëÕÃ&‘"A×î ɤÄôÁšC7¥0”bè‘ÿú܆¤¿~Ûx4Œ*8½¶EX÷6Ôb[A%s°jn­äÔüOHÉHžVd•㾴¼Ý¢Îžé½€;KäÈWv>.¦hQ//+c¸zŠmê&¾|ÿI¿ÜrU¹ÝŒZvVnõ »6´FB;ÿ„@&cu,v›FÁ;5iÅ<ÿL›¯#ˆè„\œª=%¿ÕÚ»óc¦Ò¬×˜yàöb²üÑ ¢‰Í´=”æœ[Itm:e'¢úbš†^}³ÐTÝÉ”B1Ð&‰›˜€žOdñÐûóõír¥-·¤ÒCÇÆcÈ¡¬³‰nuTj_E,3.Úôʪ¢¨[/G+TƒŸ$ný£·:¾ ¢–˜b??ï ÿAÃÐ|m65Qjºí¤òý4~·OuðGtäjË:Ü\Šú÷/!)¾5¬‰¼÷%Æø„,¼…þ(YEØ ¥Êkí:÷,ÜÌg˜Cú:Ë;¡s7ƒYI QâAB5†ôÔð†›ìæj馼wÜ'‡>ÇçºÌ`ïŠVÛVù3:ÆÃUTêy)ýýÓsMÔĪ¿çJ½ßMÒÎAòÖk dîÜš›¿psn´Z)Åë¾G`R&°¦`c"÷ôÄDxžSÿ‚ ¡è\TáYô>6$›`»ùYgÒÜ\‰«Cp¶eä‘å Ç«iÊzH³Ïï“1]c0Û*Èr䃪Ȭ‘„„šóU|EAVÖh¿'ÕñçõœÁmZ± Ö§פSÃÝËD7Ýq“Óœ ÄÀ×»w/»†hÚÿ|aÖmèAןè"ŒÆqbÅ8¯\—>âè·À…U {(…§#y©&wªX†yžó* ¹ìCáºê€upJ<*¦à¢Í¡|;m`J½`2é2'ÉX&ºžz\¯Ã¢UÔ?"|¾}[%DoMnÞw) Ó¯d ·ÄoQ¢þ•ÑÇ÷'uÄX¦?õµQÊoPÝjGµ©ä$PZž‰2ÛÇ‘îö/šŸŠ[²ÓëÇÙ†PoUõM„I3ÖÈU&ìo ¢çãÖö95ci ùJvÂMà.§Þ Wª¤á†¤½ûF¼§Héh¼p£. gÔòÏÆ#—ÑÎê`6™ £ºýÉ9ÿq¨…ÐQ™ì3#×w×=Z#@ûæŸÁÊÙ¤é¤hYS=„M=ô»çWÍæqŸ*µ€:aåSåmïö.B“zsú„æ&|ùšQ²ÙÇ ¬‹«äæ}éä0{äqûw~lBI(ÿYsHëû—ÉD·Ú¹½«ÊãNÈßç?÷³ÃŠ¡Ç=à¨K¤'£{ï KÖfÔ«€¶(OYKN~ßJôÅвj*ô‰› ”E¼Ãt'AU¦½c-Óü#’„ö¤C/Œ¹gö‘C6ˆT,¸fòÆ«Epn•xƒ  ëACapR°‡1õŽ"¦ýfúgkvf®ý°-Ÿ¤6BÖ²ch4ñ¦5f£l É9z;»îértký"xô©eŸ”Øõ|쟸5ò(ÿLýJ»o—';se±˜ ª‰-ÖŽ.Iˆ"1´Ç.VF!§5Ìïe ù¶O˜``ûùŸ~…ùðçã–6¦Õ¨]Éî€Ì¥qèÁ—÷ÓÎZ+¡‡úTˆ—Cáa Ý)ÇO“¾4Ö+å¥g’â~>±uRÿAÜ¿}GÅ„š‡ô±mÙWß^]©#{ £‡@„OŒƒ 2~€S¦#Ç6rŒ»MÏ>œön²¬ üévg>ÄèÍìãSÄí ñÿp‹5³ í'°®£âk?{ˆ°ltú§Q]k]ÅÝ` ñ‹¹|ÛüÑM8—?›/óÕu"í©|9ìŽc‚xø-€¤Úk¨Q2‹0$0pKóÉk€ØAJºëfê)Sš•ÜŸéj¬<7§¢ÀŒCÞm«¸ {C/¤ ½5‘ûè[$åÔi”âÂ2tHpýtÁ„Ò™…³eÓ`wy K`B„]p1êØ(ëts/F…d–¤Z0ÅÎMïB²\ñ¯ÛŸ4ò7oùy2^˜G¡éÅI?ÉØlèû¨áۭݳð<y h.Y¼ÊPî5X§¬Þ^Ô6ïÚ'ÙÛ¾bùŽë0¼ªVt-…õ¦»¦uIW©ñ½©‹ò·†h¶>‘5-Þ¶Œ-‘ÿ`«D#¨Í_ñlF güö·Ë‰äš°E§wϒM,´l/êþ“ЦDTk‡ÂŠKEcjÅá€é,¹t£ÄîÒÛ¤áÓ9 OŒ[×xܯn—WX¡~ü"¦—¥:|+ Ð9»ñ¤Œ¼Kán±¼&­¨ý©NX•Ì—–dBÛŒžZøòw¼¦n -Öárójâ`‡ÑÖ£p´&¼^¤gsø»Xf>ÀŽj˜.ôKÛ^_“% “€r4“}îC2ØI¬àñ-G‚ž›Š Iî õkJHÝÃÑå8Ú=ú¥–t“"?ÙCZÈ ,x¹¹(cË|©,~:Q  æ§=Îlƒä«¤¨ú0ëÑg}³/âò7+ œ.ÚÑ‚»Á±hƒæõD‰yk ùZεjؼàr¥x ´ð§ÿ­ –ß‘­Wõ|’¦ßÅVš¦]$ÁZ‡ö„ò,Ÿ ƒÀ1áö~Šw}p’y²*ªï GêóŠ”=eRòŽ•Ãþé²Ó8Ró(j{‘ì6ÔP׃°Ìã,ï¯Qש#wü"pÕßo¬û6‹¥â+©@С5ùŠ™ åäz~Öá“|úoÔZÔëïMÀc~žš>ç•Óu{X2Ç ýºQe%y€‚ݯš¥Bè’ø8õ¶¨?áÓ|61Ùàox,QeV/Ên=2 I†Ûï®A\¡"—Ôª&bifèÊúr¼ñ²‘2ò|@s²o›áš AL{mK¯ḛ̀‰VGv`}gŠôiqpÕ|¥JÛ‘7‡Yµ Ó˜míÐù”†F´fJÈt`Úó2ަ°¶óȲÕpîûDXs‚ÛcAÏÛB‘2U,¦:$7’M—'[Òݘ^{‹–̈c^…åÖ¥0ØÆ¥'u¥ÓRmŠÔÜ–À[ƒíѳ³*R/Q^Ý÷zÛ3ʖˤ̸²èOkè‚̃À€Õž£@:á^]ƒŠpŒýî®ì†p$Âþáñb!vs×)nž '9`¾ö>ž\ò‘ Ó‡ˆÚp™kŸ­¡àü«b¹å>2±Ád(×o+Ó§{øú¬,&}šÞIÁðW`"Ų‹½¾Q81X â (;}XÐø‰=#¼ÝÙˆïÀ¯À 3MË–šÉ+©@|E½Ù¬gµ¼™¶¤ßÕ`VÂ…Þj +EE^j%i¢ ¾R©NÀãÇ[<ÓF¤ê¤Qn °0ÈB5úQ3]ªVƒ"²$ÄçŘ¡·ag¨vú|‹—Mw´ï¿eÛy¶À¡@~‰\ÞâÕéÌž,Ð'Ÿ‰\ÍNÆ;cÕqá­µõ¿•7@Ò† JtgŽ2ÓàL`–eø0 ´f9Å?¨¶Àˆc8´•IçiÇÑu:R¨‘‰í ºngDÐ$º]¡x¶'÷Ö’ºÖ¾³Uù¦2Q{´L_j×`BƒØÌÞÅ`¤ÏÐï¥Ns¶e{ëxúËÄ•ùåT`4ûÏŠTêbyÎÀøW^Kd|‡}©œÁ Š¯ÿgæmô ö>äj%Æ¢]4H6TØèW‰¥œŠJÌ~:tBޏ•-åJÜuéô8‚÷ðtªÐ3/9=ÇßÀbn®7õmcc Å¨jØÎè0BíÍtô÷9_¶:5O5yoA,ÚØ¶§ÔŽýìÝé+7l’‚Fà:Âåî·Y±9Û*s J|™°Øâæ*‘{3™¢.é}¸A$XùKÀE‚„Æ#'of€ ˜DGBòÙ*°¶-–v'4¤È„‡ù/ò×õ¹håðíçhðs"É‚µè—A,,¯{ŽTr|x`e:>UTk\l®èþ$i?RÉ“d­Ê“í0<µ„/–x¨Å©ö)샌zwS®ö Óß°—Ë‚3¡Çd¼fÑ,Æ]¢"ßäÙµ¤³‚OunDEÊ IkV²²Áu |7øÔ›¯aÝþßú" ÿf@ïu‚´ÔV«BI\õ3P2cº¡J2ÎÚ vÉhrL1[½¦¶XNOð(HJ•€Ed²³ØY½sÜ(~å–…7£Zw測ïåÄð‰Ý* ÑÂcÊ38¬’½ªwÛõlJº¡Å¾[ÿ"øˆvqÊôQ¶-³&|‡lñ†¤/ eÃEYfmºM&öàì½yX»ãœÃÇ ’Ž0]x „¼&PÄ%®½æ“ÝòBY¤tˆ‡”ùÊ2z5*ãÂ\õ¼ÌÑ^‹þ–°7 –IG IÙ9\4Ž÷òT„¸5*v[4Ìõ#iY\äsü1:FíTk.CÑ8ÝÝ´ ÀåÖ‘1§[8:7ÃÎNâ:cõ¹ùP-2œxâ:`Øsæ”yøàÛx nçz¯ ¢K.ò×iF~!®\…ïÐŒ¹üdµïJ£ÉFéˆ{*˜ƒv=õQ8z[gÙËëV¹U†'Öï˰gðŠ÷­Šˆ¦K6Ö¤Ðìv¬§¨ùñãÌkeT7"5 Üw§í&þcÞ€ÏsÕ4§r¹–¦UÐ'íÞüôB¨•Wl‡f[Á„:¿Iv´¥ï2 òÕKR÷ ƒúö¸¾7´¡ðÛ‰2ïÀÒ¶½2gÑfeU-Æ6™^GçFή1ì 4j&Ñ@Í_©õÐé=Ì¡«[U·2õ‹êY…¬…˜KL½ÊeRIjßwYe¨ª²`Q¢ r©~~‘êäwÕ›ÄîÒ±%% ÝÒߊq RÕQ|Ó'#aÒ™·VO&bà¬Ai†wü¬~&h¸ˆ»{¿M׿‘øÍ¿ )J£ôc#7É2žúež÷޹œÜ·¾š”ã„)Ñ‘!¯YE\ÌýËtå„dïÎÛYÎB<àKåqŠ­&Ÿ^¾3v‰~Sâœðµðµ#¤¨ÐZ寕nk¡Eû'ÅÑ—þïB1ñ„°~¦M@â½O¹i÷[ »~¿8$ %óºØûõZdæ Îzq§ê…iGÌÂÝÍ`¡ 3oh2”“9cªà›ÿ>ï"¨Nï?<`è¡ÎuÕ?Wx |ÊEåëà)Þ5g!‚ŠFZ}¶hÖÚ;\²Ð9çsŸÆçŽ–°JY)H³ÿEϾ žÈÉïÕ*Ñ!íĵ &8 j| 9 ßEtªºqâ`U}ø\!  õƒLüsZÖlŸ%Œ—‹ê—؉ W¾“wöC5AFe¡T®NõÓü^gÙ?2riEª NÉ;I^(A¾Y›å äS;µ£D§hÓì ªÇŒš\T.|æ—³ñøT´ x ÃÖ2>¨÷C‡x…”å[3Ú‰´KGíKBÆg§oŒH ‡•Oã/P~]bÚoª¡Cb*x¼’•ü’j†Ÿ¼ >óF!L€ö…bôïŸq¹Y28¹}oµp%^꾉ší5†¾–ý±Ö]ÌP«~ö|ñA€p‡Èpá½Qfðű˜ÈÍíÝeöòÞœ!á[e¶†ž‡½øFš»³T‹¶5æý«G±)“”hÀ© ünx<*?žó‡*ôZ@còrà!ÿYÇm•]Õ./#ÇcƒÈƒÐ^TÃ,wÛæ4…9ætB”}g!Èi&’íóüÖnc±Y@cý%ÎEL„É$ËøÙ`°†àzYß12e‚Z’ùËŠé[³êü÷¢â`:í',ÌÉ–)Q½ÙÔ(ÌIy"ÿa1ëÊmcß³ãN2ó—ã¼ÑOGF¥•-ïöÒJášcä®-AA7‡ág3…©³ûd*3ùz€·ë…#(w¡&É_\ˆŒ=öŠêTco6vÕEí=càJ÷ëªKR}i<ú³;ˆ2AÀ¬l)+í€õ茽hùÆKI[*fU¿ßÕa“ÂÃ5üÅ3çq‰mó¯qx6EˆQ¶ØÕŸ$¿j)¿¯´Æ¯ ¬ô m†x­-‹ë´í·íj#ìêÎ ãW«Õ3ýŽdúQâÙÒ\f˜‘<àÀÊ8JU´¬.‘3]ƒ\¥9`ƒk¬øá9*S3µ“m)>7¸“ÝÁìkˆ'¼Ÿá‚†ÔþªšÂ‘ÏÓòʇŒìØëõûðe›u’ö|PÏf(míïû?K{šäENíj‰e2Õ†s¼CÆœm ºs„ß µ‰&¥t¿+c5Ç8ì]HµæbWíbd÷k4T''V=ùÓ}‹W\<2@Ø£wü10Ò¿šE¾ ¸Ô²ÿ}x§hÊ»pD’@‘iÁƒãÓ3ñ>¸ˆHÌ#:žMúXå 5¿n“›%•dv>VðØŠº9 ÓßÞ ¬¹l9TPú‰eƒê­Èp\$Ç;ŠM»Fí<‚°zÑ#\ÌÅqâ>(Wφ|K> I$eb´›X•ÔòrV6€¹;è˜Ô#ØŒŒÖhú&Å)ëÉn_õêõFƒ]a_N¡¡-&†¥ê\îŒlçJ '\3él%u&ñ¥Jƒyw:‹9â_l†H²ÐlMŸÉ[+l1£yþî\ón“: ùTŒÀÆ«ó÷Y‹§ƒÙ1_ýé‹“·¨"V#æ1<7àXñó.1œ•v—ÑhÙ»^É*eœÇ †F=Q Ÿ#éß3›í‹®CHâÁ§çü®bžQ˳€ò}(IyuعG2¥QÈ$BC3+–"}Js<*7‚sÍnä¯$î[~€Ÿ¦"ÝØm/fÂüöáž®×=‰ÒQàG`ãÚŠC¹˜ýH…AØí‹wEÊ|#fY½ÑŽ_£¡²1ƒ+8yIõ“/—`¹Á$[e—÷ Éo"—†ûâ8•SV$§^ÇùÿVTäO‘—è,O®aEãÚUc->€ÜÕºuþ3*ãì$èx±$Z²ìðZ‰ ²?¸â&ª¯Ÿü€êš%Ýy(R É€ìÍO”×8©s4AA~V°´)Ýí–Q"y¬Üº÷u| µhwWgl¶ºøè9sã'„MM w‘é=rèƒ$T7ËÆw wýg•|”£RxŸ>SP;XÄO¹ÞÈ GuÓ9G9¸\ivŽuÉr' ƒò,ÀÁ´J˜luÌóàcKÿ3|Ï\±?Hñ?—žemSy™0{lK9‘ uß¾'·.M‚eˆè®cõ¼ü áè!5œäœZ­?ø¦›kf³y»:ØÎãõ 5(ÝOa.®³Øvû_wD‚,´wu·ËÐP–Ê¿­TÚÆ[÷ý §Õ( …u6\m8›î5Ml¿›®pŸCZm¾–ßúÍç/\xy¦ë¯û½)b*™Ê˜Ù'LlëpÏ(Òv}e”Üaš~.CѾõy‡ß8j*-Í ©éÄbe€&LtÛݰ›–=kâézBFí±n† ‰š›rßÛ«I ÛSAäy§çéÒ#?r™î3Kô÷îMj•¬?WwÞ•Ò”š²AÔÓ¡_÷,ðª{â+ݳ ÁÃÚcÈîq}°Gµ‘ôzUùPT M{œ?oãi>ïbƒª 6/zUNqDÿA›€°$åV/ìoªaÜD vš4šV³9ÜD„´#g½ßR»}«LÒ¨Ÿ×“xqß ÿk$44ü¶h ON¼jGÃÅo-j1R‹Ð ƬÏ0P/‚x(4…˜wâW­J¼ˆãEðtÍvhgš7iSgˆ>XÍ3'NÅÿ׺iÁÜ/§Hå}b¡q?-McA7]µ½¬½É_¥Ÿ:„VýÖê(K‡Rp'/>ç–‚_:Rï>$¢üjÄxC«ú¬ñQ¶œ6”BTÚïQS* 8“'xÀpÉ'bo*ÂWæ{asÑ‘YÓú¨âpLRÚltØ(•∦tRXk• µ¿¹êÔËSOç ‡‚†™È~±r8â7åÎ/µýz6Ö¿mà3¦ó†õ½V³çšÏ¥¬vœ4éãÞ÷W¨›!w|×yñÁ1áÁ{5¢ÐÒ22SÝ×…D—T–%Ó_{2M#Yø•f¹P96ÆÔt™;b\o}.Ÿ2èå¾øü³ÏP¡ü,ËxïŒ|=»1€K'«®zä‘%œ_Ðû]{Ä‚ªVÝ|üIÐÖÐA!üç÷2eÂQ/³_üùÚ¨|ŸŒFðáú´†7H} :Iñ%Ë5üXÁè¦Û³9Ž15Ãk–PýuÏH€¹pÏ„Öh8óN;à]-t+‚qÃ1Sê Ê)÷ù41óÒ(&´¹l/ŽkSJJRƽPµýÒÐÄk0šÉ¬mË¡«\?ö¥÷¦¯Üxõp<E[»¤áë»Ëk?2Ô7tnávY¥mÑo òTn7âb¸bizˆw¾5 ßZkÞ,!Èöý%Äl6ˆ˜6â“jÒBÜŠ•z|¿"ÜNÉU(ÅŠÝÓ¤ÉI÷<åÑrù`¼l*$cWÌê‘‚ÑCÔƒáu𠣨¿á:‹ä»ÞtÔù%¡r¡Ë·ÔÎéÒœ¥G?­ŠSç/Ü®%¢„~3ˆt°¸”¦éØT‰ç²bšFð‚˜þOð»m­Œ±Ê¥q­³T5VÄŠ‰QQ}Ý–õsMþ¢âÒn3ŠJSÕ•qÜ~l—€x`*hú½Áñst¶þ8}0”ûWGZ²$èÐ:xïÊNSßÚszÔÛí˜o&áÆ.çeæâK}ÆÎø…×tšu‡Pó[ãšÑ ¦À1¼toŸ{P«ÎhBݺ6×]”¿ý‚;,Þ„§<… ýaXödû;ðÜ/áBL6<ÛÓ¼Âø{N”2½›Î5ÖcY@>0Éç£\¾Y:àiÇ&˜™«Ýñ88Ò¨Ê iÉ y5$Í5çIó°%'›62„Šª(·AþomÓíx 3Pghh/šÀzœÐóõ),9RœÞlR†y!5•Cp‡ÍÓ óA>|¶ff¢nÙøÈõ^V‚&9 ”üTÊžýŽæUýH_X9Ò`v@oßàÚt ½DFoÁK³†Ò Äv”l>ÂìúkÀ2Wû“6Ö‹)@7Ûaé¬(–bN~¶ˆ_C´,éˆbÍg,C-Ö#sìKE2ˆ¼>‚{`ßÉø‰ØÖõ ™1Äè±¢…N‰Ó1'¹‘Â`T?‘®ó‰èkÿ¨Ñ§Ã©ÿ‡lüxš‘Kºob¦Cv 'öÞ¸ {f¥èz`öì‘ÒYƒJäcHÓ媞®võ¬#¡žWüC=rÚä7ÇóYUí"¡ •f¦Ø-XÀË\J†B2·ÀR¬Ò?=Jsïgê'U󪘼núìç{Ìʳd¤$z 8NX`7ÔÄm¦~±lawBâ:§T ›(+€ *çî÷Å/G-âŠP"1£AaÇhÝߦD_:€áC},EÔ.uöŠŠaiúæ¨Úôdø•*”˜6¬N«ºÁÖNËÐ%Nû›ÁGµBMØB (ETržªïjï5kÖëg%wR´¾E¼ÃˆdU9 ¦:h| î+¤?h6ÐFÉuMlÁâ®Ù×WüX¬ìS1»Ù÷5€äãWwš³;}þ¯³î;™A¾±Ô˜; ‹ú˜cL±ÖÇm‹föðT88Nì—MÍX…Mçß“%Ù2’”C†Ú¢µN×!mH“[†¥æ…Ju:aÑ.¨Â"=‚(f2ÝHâ—A pºîÅêŸ0ÆÄ€‹šM2&1ìuŽ^²gÝùw‡æ{õ¥ì™iwÞœH´k—!“MØaRD¯Û/ƒªù>„ø\H?ü{‚Y‚¦‚Þ6↧ƒ3õ1†õžu8†Œl3šzEð—X8£_ˆ³…}1§!ÂIÆV"C…ò³ ¢:š ׿ꣽÍÉÿ0{ˆM?EemžMº®Ù#Ž*ßü49T÷Œ.ËFÇ#r€:ºlãÌ·a#©4ƒÇçt úlé*gÀšP_.aà&<®ÜäÙƒhÓ\•ÞW‚%X+M4ÏKÙ½ÜzW‘¢rÏfüAÞŽüÔ¶ËñodØ{A Q¼JøoWù:oÒI]  ýCÏ…Àt–5‚ºç‰Í3Ú±âjÆ–T,àÝ;NvQ§x¯Lê!žy7׃«J€[ˆþîÓg,3æÇÕÔ£]–Fu®7›cæÛŠ!»ÒÕênñ4é ó9¼)¬~C‚?CáŠí‰kmB,䪜rËîqéGé$K&·áƒú­¢š3¬Ž3’ñ +y­ŽÒâVÁ*dZÿtÕR_Š„fOoå}0iu%Èä>AéÉà¿Ã©Tž‘ƒþ«ñ‡ä^BëÑÃóOÝæîÜsðº@¬Td¾-Ø+*~b[úγ×U—±É(Z—é¯gsñú86T‡4s‹oéfó‡øÇ‹|úÃø¦ØÝ¦´6°D.«€hìk‚'GáCÄ€5OݲÝWþ47-·å·oÈPËñNE lïðöx¶PrK_‘ $‹j šÙIrK‘C@ù*Ee&IaÜ#Qð¬ÞŸž„G:c´·“³DSU5•Žj?ö‰q¢Sê߯‚¿ï«$OŽáÝ›È6ÆåUÇt¸mµN¹¿Ò½¿9ŽS[ò{ÙÓ͹ÿY±jëï3'™ò«wë²ì°£1Ð4i3²ôƒ%8÷¦Ô»´Ù5ùaö3&‰+s‡·kbjB¡,ÑìdêP2cjƒ©StíÇT~ñòN†yׯTçÉÙt]®/÷9a@Vq+È·½ À™ €¯ÙQG„¹–‰O¿·q“Åq*£tI/âaªS8¤WH)ß½cóº¦ÐS\ oúÊ´ž´ìóˆhc€J…ˆÉ[Ô™|Eº kgaé¶Q}Ÿ[ìJwKNÝ× îÛA]ÓÄ3u¶Ò5Ò?B ÉÏwœÊu9»ž¦$¡õÌH¶šÊhgbq{(ßhþp;tp[éçO×fxQäZÑOžÞs±#•ñ]7B}g}ÿ}T†Ûøœr48ï|î3¯(>ÀmËÍ$ÜôB¨h·¤6FçÞZÕ"Ùó&È€ÊÁ”šÜ·þ›.pe6cV(ÿ,ˆ´T<"áú`ë1‚:ÊìâµxÚÛŸN,™÷fð}iP q©¿‹…s]û¿¬>Þ‡¿.•¨4|ˆ›EËE¸kÿL{µ1š`©ÀÂùã¦Ú„p¾Û¹y¢øž)6‚lê: «eÆáîŒHߢÑJ‰תĘùjùÂ2;&@°¡Ó*áÞ®êõ׿ð3Í3ÐÅåQ¤ŸbŠ"Öþ\•ÏtFzŠ_©,%næ)ýÐÙtMËctâ4¸Âbµ^³èüÄ*o‘E‘üÖOŽô~¢Á "ô+!W¤”AðH1,èE …wâ`:3%wÔž¤ñ{Z‰ ­CN~ë)\t±qÓ×ãŸ+:ŒB I¤ *=ÉKÃ=jb‰>'*ëzqvƒåìÿç;ý, 7T¤zõº×£9þ¬À~þÜ­ û$(š†n«®Å\ÓÞEd:ºxïu1ç£FÁ§r9²° Ä?„O!.nÃZ«þA7>R¬J…t,~Á^hôB?à_¢Ì´Èh\iQL 7 èì0F«ziê?„Ú¿Ù< 4^¶åê,ÿSÌh+¥‰ãÖŠv8&©¶°ë^LÓ}6Vcçõ» it+Q©,¬Þ}(Ôªù†v¿j‰¹X“C9Ô•AtÖ •ô5û™¡{Ç3õy¶Øa.‘×Ì2Oº–ñÚSÒÞ–îdÔ aT4Åa¹»k5ùg—^$·Ù{Cdzæ’áº=ÃÐVuÎL⚥þò‰#œˆ< óýCüVˆa?wØ;!k=ùÌÃÿg\.YvIXäq2!äƒÅΟgoS\I…>¿”rëõYÆÞÑFx%fˆEÖÑ[îcÙ—‡h°SôSƒ×H¿üÐf<ï­è½êØ¥DØO1c#C©+# y@8ê7ÑF&hš ÷¿ÍfpÒ ²‹ÔÅš—74‚ |¡P±}²»"<9xóÍÆ¾ž‘(¥ ïHMÖdܼød Ù“¬¼ z‰iqDë{•Yƒ¦¸XaÒÇFW}b*?•§\ôÒÍ>>)÷{8HÞþ˜ûêÚ3ÍÝÛÏ{>¢T÷Ò–þ2_—KÂP+GF­áÝëŸÖÄçn†,f "‹EÄ"r¿uÍëô¤çö益Âþ˜ˆ0;Ø ä¯Ž7VµóIÔÏQQ+{hY¤&¦»^ÚqŒËjcŽÑ³Ú[IÅSò<ÍR*¿˜¥º8“SÆÙõõûMM#tÆNp‰Ä -}À€q^þì6„F\'ô¶Ô÷ˆèSx‡¿Á±Í¨“CŒß“Ò)ѳÁ×ÍÚ# ëêϓ޸{‘óšô>`œ †2†W ³Y83fŽ\B`6UÊFr/Jì;s`r.?Ñ(ß¿ÀĺÏTûs/ w±\uª6õgÔ $›FÝ»h¡ºê×§zpq‘È4)’ë´e{¤†º˜›e\Ùµît]_‡xû=Ÿ«] n7Áã-š ú ý~YCÀ:ãª2AÁÌr—¥ùþ¼„I+¢‹’ÜÐqqŠ´€5åS¥ZVvy ªî7KGݲòeÍó/C‰ÙÍÝŸHNÇñ²ÏG\À°ñ#Y¥y-°C¯GøG¸ >AÎsôæ«—XÖNn•|üõ×=™GƺvÁ6Ð÷Þ·é.+-½EðÐ>Px—~ I/ë›?ðYL#Ò6 0¸k6KÜùqfCôH?P; !5ÿX]<¥œ[þ-kd¬ ñíL­‘~fLýB³Ç@E6§æ°h›¸z„A€D¼c–ÕAZK¡®èèþÞ]\l˜é+ß#Ó9ÏtJ„íàéA_µ…‘ÿ4Ím%ÅÀø3Q¨cœ`zéHVsÏb€ÊÒµð4ôýh@Ÿ)† {Z{+iFñ¼OŽ*ÿSò…¦ÊåïEëx§Q _E¥Js“`žYþr“ürÔì`Ày´ÙœCÈíÑ©ç^Áei-F4Ô/*½;à[ÙÁ=Nê±TUÈcMÓoLãûUü\'CãV†ÔCQWÅí¢·¿Oj ¥=ˆmÊ&cêæĸhTE¸G S²„š"u§.‚wÞÄr@í w@ HD¥‚”ŽeÑë`‹; éä¥\¸+1@¸TÄö®¥N•é°·3DõkŠúòÁKÓMòÇJ¼riw•ÛßIü,ØÚ êQ\AÍG“×иŒÀéÑ<š vˆEt½Â Ô_ÆKDq ³Hñ…gs\ µi˪ÜPz¤ ÉùÁ Ñ··v,+ùà ö£ßRš‹ÃèÛ/2àH‹®f¶3&ìÂ,‰à×Ah± I7Ð6ëÇÇqy$ÂÅ‹k?½lm— 6vU!þEœks®*¤£Æã#‚ŽÜÅãÍ·< è(Æ=Fü,®_«x–M²íK†Avqy âlæ"R©ó+ OêZ4I€íTºwðtF¨AC·k<·qwg¤´a‘2ˆhoYrD3¡ÕX0¨Ö"0M÷Eë\Jyè4,ª$ü¢BÐ:.ë“§¡Ç:Â#j1ì¦álѪõņ8ÊþíIQ¨BÁþpÛm?Ió{h¦¿LS¹»ÁÊ(P-äËß/d²ƒ0Sׇ0ÀËÿ$êãý~âv*Ø#oJ(½€à[;‡¶+¤R³˜Z¨Ç+¶]ÐmJ%Nÿ€tŠÕʇkMuÝŸÇ^¶)›)¦«@ÒV+-X»’îäÔáæB*d7=aË{›-®kQsép;Hk¸®ûñó«,"~mEóòÿ]o@;cÁ£šóKöªð«õ‰À'äÜÚÕÌO% ìâ%Ì ÚÞ4‡üTžiS€iÍg½Nn}0“èãîø$º9o{…ýŒÓÞ‚µ"u ¼†º¸8sƨÊ*BôÁØv}íªs¸âÑ·ÝÅ4Úpu…&töé-/}!‚÷±ßÐû¯þg ÇxÆ@c­¯"]ý›äÊ9½qCˆÒlWªÊht,w>UÓÐ Só\`¤\VW4ÒsÝz’ÂÆpýï‚¶8^èößàŠVÔ(C×Kœµª-ž áb‹k¬~ˆ#-øÞúë¦mzãiKžß+OÙ¸fŸ9+~È1QãÍ…éÆD³8s f{.£»9/IŒ=Rê˜f4g¼r:Ó1»¶•ŽÂ\@¤à ~óê?RÉœÁÀŸ`QÙIf `:­ô»›PçsÆä,…¨t~/¶ ÄŽâ%Gµ³myº\.ˆ:PÎ7BO‘Q„  ð€H}P—R޲õ£¡‰µ¢itië~Æ÷€~αyÞÄ\‡±¬¶VƒMˆFÒ¸ñ>œÆ‹C†êkM–Î02ßÄ—©kŽd%æ@®¬™¡ o¢%ó­ä¤Fm©±Çédv¾âÛÙºæÏ©Ý+'A%öÃѵçΩR‹œ‹PèÅð}¨üt^…Ž7Œõ)t¾‰q¸s%:@S+#l±; ZD.\40ÂŽ¥»©c8çw7ï÷Û=Òy´¿˜|K‚¯ÑiÜÖîÕIß:€\ÆúýT#/Ž© %eMtÆ &„ Ô¾âN¹¢×OEoì¼rÒèm³ZmT`õãAÝN£äÊÀî+¥ÏÊ,Ü¢ ÌÜL§ŒÑõn6Ž÷p·[G)Œ¥O†D^z“/<ÖÚIb¥ó‡>˜âÈÌfXÍŒ@žqíŽy$Û(q{LÓúáìró‘ “ê´KE’zz®-¿6eµÛW~t<Å÷tŸ›2˜µÚéu¦u.T ®¢ÈÄýEÏŒ7ü ƒ<׳|v¶Ð Ek\’QBNU@Kë”——0ùˆ÷EòT}ðÐrѼc£ ›n÷¨¬©Hvù¡tæTÇÀ—ƒø/‰ÿ3Õ⡜cs‚ò3ÚÛ%Òå•®=Tígò3‹eè<%PÜEo%öZ„ë´^;-+ ?vvMÛon( °)çäžUxÔýŽ¥=tÔ É0R¸0œçQâ›îúŸêÇ[q=LCýÛ[àà q‰†ÿM-S‡°íÆG~Uz¢@*ëÚ¢[û¸¼°†*F)BP3l‚áÏúê‘¶—îäÙH9±Ì° µ*Ú)®¹iT?ˆ‡ê‹à³GûÎbx®Ë°[È5›•Ë´éîdÄ<¡f\z# R† mƒÐ˜x{Û“‰Û¦®C?Ù¦#y>¬Ç‰¼eþ&Íà<ÑŸ½‚ [Ì ïtR ìǹ¾ì뜑Î4‰Ûó 3.’óÈæ^›è&§b³‡•ƒÂ<ˆÝÅü´l ¦`ðü;%Í!)‹ c^HÐbrè ¶e* Éš.¾Fp¹†2¦÷åŒ2Ê™7 ¿¯OÒé‹…Öláa‰—¿Wº‰ºùút+#‘Ì(¥Ýצ2騪ÌÁkÆ(Ìë ðu5¯ '°v=b“RzyÊÜ®:y‹ œH8ng7Z9ù,ßìÓª2Û $#ì›zß×&Ú)æÄÀ%¡%ÍÀ…>•¸É5bNŒZÕˆ *‚û £]ú<ó N§ò?9`³{­óŸ±"BviâÍ'ñwQ…ô¬yl’6òuü·>z¨pæ`ìk@êéŒ4¦7n¼­˜2áÝáP²LÙk›ô)$®L¸áZvs»& ¿ŠÄÏQ˜]‰³Ü£€ÍûóÍSa‚³f3&žL轞bu?VC²wŽUVдþÄ à ic¤ë(úx h $Rt™Ú*xêÄ–¥Ï¿Âvùš+v0tSNsðW¹mGþ~¿ýml2rb³“^2N§FÅV4Ld4Ê-¿˜ˆ8J²ö޽_üÅӯœpº†‡}ºìÌœ´˜cbÞF¦wz.h@D)%&ËšæÈ€Û IØaA_¢X`oˆÆèlß³™#ol‚ûa«®“ªŽ€oÛ…·\ ·Ç†×:aüó¸M ähªV9f +ΟަÃGu< {›Í‚•LŠ^¬6N¢Ò#în×,û#f?Èa4þ¸)JzlfU§9Öî•>Žç[2‚~ásýÿžˆI…剒EŸHRx´R(Ñt$*ãBAª0σª§T'QMGÈáõpjÎAÿC¸9káªcOïæ`¥²qŠ…Ï ¤a<ëê‹­ "ÔY…jØÏ¤a4ć·à¹ä& ý¿w÷ áÕ¨‡ÅzÖêÄ™ö>‡ ¢öÂç %Ô¹–rˆmãûØKBYcYu™ÿè¥Ã b#ë÷µ¿™·qzVEÒq¶}kJëÇóËÍü^1û]îU\hÝ‚„U¸àMJ³Œ¢Åú—\z[i¹îtoóJ_¸}—óþÌnþðÃ!'‡\¥ í½ë«~ÚJÊ[´¥(JåXSÙïOÝnç4ΗGôèdˆ¦hÉ=x¹øÕ‹¯ßÇ}öpê÷Á÷Ò7þ3—†%Z¹†NÈSvËÿë‹ùD£YUó©èÉ+uN“ÒãWþÇùÈÍ¢“®e“ðöm*;~~Ä‹1dÈ>ÈOQ± úðïŒ.po´à–8†Ë…ÆDìôÕãž~z[e[ÑMl²¹PyOûÙxu;J7&Î=fL›S»˜íÉHÙ…"–:­\nÚ?4»r„8¬Ä? #¹MÌéV]Djà|c´ën¸K2©ÜâÃ?Õ]€*ò”¡ëE­I}ƒ×pÝSÔWm¨ºT‹Šý%iZp/ÕÛÿjb1S¯ƒAœBjÈJY“ËùÉ“5ÇÀ* X÷æœãØ›ñå.£!ÝpÕIDà`mœÛuìsÒlú#B±n¨½> ð4Mô BQ¿a¨êí.@µæ9! 8.ÙÎQ‚F¿%6‘';^¡ùr­™&h†b ƒ¬ú‡ÚÂÚÒΨÛIJ+‡‘ºûA!ÊZ*2dìDM‘3 ·ÍýU²4&(ñ\Âah'îUº\÷b9>P›ÎËM‘‹×øcsWç¼Á\C,kÆÄª VSE|ü¸ mŒ:]IŽXI§Dêù©,­Ê¤`}Ó/Cÿz÷†ðèMÆ8²p‹Á{ä{ûùžYÖfL`<¬nÿd WP캽ž;ÛDÐM ¸(HÈ*Dá0ègr&‡5 `?Ü^–‚|l–k|²ß ÷OÏÊqEƒ;ƒZ•ÜúÁÌ>l2ä´¸4ò0ðB0’4);/ó¯Y¾šªÁ v¡˜!NmºÖÌbi¤íP¤[øË~œ!¼'`j³’$K®ÁKy}"“Í ~¢ñ7RÛO“)‚LjøƒpŒ6ÙÊÃÓPÚÉK¿÷ZFgºf½ ŽŒEjµÛfÿøLð)ái†Ã:ûŠòšÊm˜Íx75£@Ë¥`О÷ˆGƒF»`ÿ{{¦„­Ë¦šyòN© þ”³íÎúÄ—|ÙA‡ðï¹O¬z°"óˆ Y*½êå’’šw¸"’°7÷ºÚ3¹ŠçËsTh„ÿ-}ù‹Ùd³¸®2'£¼6ዪÞȹvX]Ñ#ôZ:•=…}ðÆB'úÏ„.Iÿ#y2(Z„û÷¦¶oÿ‚åB5«'¦¯§—:,’š ŒÿF=МâšvT‡éákİó vI·Jh7ˆXÌ«€}jÍC®µö+?v³ÇøEî¤÷¼¿’!\‰P9ÞÓ$tÄ]OÈ¡$³±ÍŠúöO éÅÓXîkÍñ`ëpÁÓ—— «$³MJÖï&YÈpøì 9ÎËK>§$¹Ð9“|™ÁUCdKXT[«tŒ¯”S2䈿Î6ò“U—Cöu!ÄÚí»×»ÁW´1Ÿ ™Ô>):$Öl²ÊnÿYî=G»£G°YôEÊ ¹AX·º!—¿Äçä|$³¹Á§ÙÂ#‘zä²^¼b‹O‹2árê©=¿˜ë/Åev©ˆèž…û$ €Âooª­µù¶æÏ¥e†i±˜Ài7_Á@ÐØÕÅô+¦‰²PvçP.¦”X…`Î\š@ Ùzžµu§c3G¨V¢N˜!ÏIê¦ÂJ†5ÚUûÑu;=°@˜¢<ì6ºiôOgQøW›@=(ƒ2ùO´ã¯·Ä—²ËŠ{È!¸ëÒŒF+¸V«<¿ûqµÙ™ƒë£õÿiPÞS mC6«Zó%èí9¢$+¡,´Ù=œBn¦ü¢ ÿ…¨9bÉVrd%aÇkÖ[CµY^œµ•ø2T‹þ(„KOàm‘¾Ïôe”ÿµÃÓXBðG c”ô,•yÀû|ã¼Å' EúãKVžû'†ñéR•2g‚ºñw¹¼çÙ–Mbõ#Vlšëpí%±°I]˽òåö÷~á|ÖÙü&¶ó¡ÒUµ@‰é_œõûæw>\6“ T®®©b] ÛþibB¨ÓeT9ýÖMÂÖ!°GÆ'=KkÊ^’rôù‚ÂnÈÛà¶2™ Ù°ì¹Y![—}k–£Õ¥÷º·R{ŠÚ¯å×ðb™k?¢QÄÂMË ø6¼2Äþq9OSX¸ÈlÐ.n¡„'ðêõí²aúÔéBØh嘢 v !æ?—mò ”‘&½^î!ªöéIf¡êôÉ‹\ÜI—êàJ™G¼ïO{å¡:ÖãqNå±Bk°Œm#Ë¿ÿsù»§ nuÿVþ$=…ª†LW 3«vM¨ÐÖq6]ÇÀE% ¢¾~oHjŒÊì$èaÝv·i^'Ræ5niìlŘ4õÏ9ž³ÐLJ~•ÑZU‚P.Ǿ¾=‚Ñd%ÛÎ0²¨tÑü䎿ÈAêYù¡!\ÅÞÑ`Ife)ÅãK#®³­yŒÎ|5T¢ŽÿX²æjAQZ$àÒ:¨<ãVcÅùsž¥g“3Y %9Eæ!ÊJA“"ÂT·s~¢ÈÙÎ#Gät•{ v0Ra'öw€ŸÏ2­8DAÕe~‰$è„¢”ŸÂBžx‹É›¼“)^¥YüÌ쵋Ï2§ÂiVº ÿï¸Ò|²wô‰î@ÝdøÒ§ú.53YÙ×ÓYÌ&ï¡s] ™BOBœeV5¾ÔžÏj WåÞè³'Ô§ãc”W;åYTQK$¥¬Û'€F£ŠåM0½fÕÂA·°ãÚ8¤IG…È|²x×û¡\k´èº”^²Ó÷å] ýLsªyZZGÛôàð-Çï‹me`{»c[ýwaŸ·¨qûMZ…š¿< ¡ãðìÏåÛ|æ*Só”áçS¿Ûe£”¾ødmräCk»!Û’E#ðà}Y+æ¬ü"Öˆ*ðm&ÂÍ¡‘)„"Ž]lÉ.‘vñw.“#œH„§óy€E: ¸˜®`ìåëí¸âxÝxÉæ$j÷´ Y3,ÔЂ0Ûq¿6©ªl‰Á„6í·-, 5K¦žÞ–+f Á(Ÿ•*e¦yD'iè©‹j6ÒÀ£W3jðÈ…ØZÑxÔ"ýL aD¯²Ç¡ë½Á6f!pIø{”†É¬ÀåçAHFÔQëž^ˆwî8(¸ÊSô•ÁV:]S3”eØ?彄-BM¼/·›ŽûÄ3¿ÅV(5ÐêDæß~?Ð×Y˜ì^†/uöL˜\Ìbؼ‚½èµ´;€Ž_‚X³Bò…¡BŽf-wpŒ`r{û‡ª}õr,ÛÁ.iÐ{¹(™Rõ.4ÞnHïaýÄÉ—­5qF|Vä&Ä-JOzg:¿+çªÕÔz©œ;/*çã1>ްë[dª%(ð[:ÞN©[øuroŸ{9Õ¹öF ½;äbxÙƒ\ãh]dEƒÙFfÆø¸—§}X/…\õöQãõx*õññËT‡)Âi°‹ÛFõŸà »Š¢ñz73xª|Žä‰†~(ªÑÆææ6úc»ôŠ–XÖÜ)[¯;ˆnOä´öÊœ0²Pô‚k¼Òø-`æ§ãyÕ"a'ÑFÖ–PãûhœÑ¬?‰òWÊèOIø³ä1Oa1¶£Ø9v†ZÖµ’€d0ƒâ»à›hKªóû~€LŠJ]m[Õ÷*.Lmø ›a6PqÞq9W†ÍˆÓwYaÏ,Q‹‘?b_ò$å¡ ˆy«ßbèk¾IBm/"·ôjÝ™<÷fJ>Xõ"xB{SIGQ(ŒùíúFbIÛ³&qpµn¶\Pý!G²LJøhÝæ‹áéÆÁïåõýƒõ—fÆû]˜9dm=.)B­¾šííÇ%QÀêSK¯U¼Zdmrc€Ë“×—d†<€éšzKéª*ލÐðp©…úìßd´w•6åÉ×rÚRæšþ³;nÒͦ’üg5ç O 'm™Ó*Úˆ±CG÷¹æ­C… íî/¶ØÅ³±÷ÙKQë'ã=HJÕ¾±§Êþ éõB­“F[¹§./8£XÎî ‹ôK­ŒßŒÊ7 V‹í"ð–(`¦¢m¬Ë$+v ‹ÛÏ…GÖµô¡Ç„v eWœ ïäV)î‹ORvûÝ4¢TÝšX[nz1Wpê£s™ïÀêMþåúé±ñP\ù½í¸4̱?Y]èCÉÚû ÏH +eã< )ÐcË&üÕ¥ˆª›íî7˜–ö^Û%ËðñåÆp¢Äõb™À’Úˆ™ OMBž‡ø 8•ðã÷ø#K鉹»µk žÂӿ夳^²kèßn:BÓ.;OV•·_vdd-#yŠKˆ§øèÄà—}áy¯‚°é앉¦Hþ°ÇSäNÚ±ß4ñ™l§O>»Çy„…´ß~Ê×…PP.Ru¬DÄ(ê"¥¡Ù†|î’”pÔ• ƒ­ÂMíæ"lF”£Üì0Ü‚ HÞ57^.ƒuEÙ†£ÞÄ>*Î ߮Ŕó$2™„ø X!ÈI¢‡ÈÜ)mÚ‰â»]%¶õæØ]®ê!ùø¿Ûä0% Íi£©±Üa‡–~C}öv%ê®÷s¶ÿf¹’ðeø{I”S#à}4r¬AUêJ˜yמ„å ÂZüVp§¥mçmôìÏ4N ;“Šx“´¨5llv‘ÊÈÂpÖߺHÁí‘*†ëÝ_a´Xõƒ "u^ ýâ›'T±gãÇ òÔxÙ¯-Uð¨œâ ×ð#"1.»=$6Üöõ¶ÐÚ <ÓÛÍ5iC›K›IÉâs^ àK„µ†«¯%½~^qS ì¤ÿ,ßœVÓK™Äg!Ù3·ýt<‡aˆ(¾Pß5í0ÕËÓ)oˆ‘æÊÖ¨V%|üU?µtú-ŒLÅ‹; Ü¡–`™Ž6ÎÍÐSsµ7YOÁD{«Ðˆl?ØéçKRõíqy™ÑþñåšáW$ÌA:_Ô¼ZòßfR¯€+uJÝTÃ.=@Í•]… †µ}‰Ei¯ hÓ±)5Ë:ô/¼=G$I&ˆ=ët‰ŠšàU]3Z(ƒêšÎr‹WLO´¤d!Œäë4h}³ùÉöèN1™@h‡•gU,¨?w@ å*sC|`®žâÕéÌ]OU/©]]¼”|Vß= »ß©;œ‘2)3å /G)-Y’&]Uàò;,ëqWÿwŠ;‹Ûÿh_z1ÙÚ0×õ…Ñ,~‰…&:Y¥BÅ 7:69=à]¹}áů‡–èþ|ÈlZÅÙ?ù§Zk·3NLÄÌYçÏÏÀyÎçMPùFRßr~Ê TMûkG ^KbÂôlÛÜåßOª wÉ ¡RpÌ( ¦¤’6<ô¬ÏΩïx|&ˆ2ÛRÁƒ?”ÒS¢»aw<‘%WK†ÿQyNðúÇà™)n·CK–CIp/È´Ü£ìcÏÜÂ#ú˜îÝ‹ÿ„yB>^2b^ ÓîHKè§å𠤮\C]2àçM2`½ÊGs;äš ~9Å4*V.Ó¹q°ô uÀ¡Ì Ü'k¬›ÖŽuWNclXýt|àLxf©rh\]®³¿)Ki€õ ¹Ôœ¾LtRÝ>¡-8YÞfŠ«©E·v¤§f/503tz°:ǧ«HúŒÿ·y©xÖ3ƒ¦ô"Szlž@£žÓôS+uÖ‰$~ƒþù^±³J«~¨ ;ÉáfvU´ãuéÒ2dõ¨Ý8t¥L) š~4mA”Øbr¥Èô,( /ÁY]þ’T ¥QHëyh•¡ïtz­wÿ~lühtcb4BŒd’zU,J:|”96¦É°ó0Ö<ojéÊØ¨¬¹CpI6_±D†{Ô•>Fén±º›W»RûÞ'™dÔ'jÇžB Eá­û™Å@¨Â‡é¯’Ù2¨` µ3£©»!c"?Êë1Ç’Ÿ{Àÿ Pj!ði°C ;赸Ž'§šÛÐßeïlù 5¥íÉO¥—r´‹§ŠñF6LÑÙ>wÛžçgÐCÄÙ;Õ®ðþ%ô Ç$Í¡¿]ÄAÍkéø?,kN–½4m˜¶õ8Òa€÷_ ñ6Õ½ÖÿG‡(AyFêñc?¯}‡HáÀ6,¹ß ¦dÅ5ìÃÓ ¶¢pt—¦+E»Ññ“ˆ³*@v¾I¶WÅãrVs¤è§Zö0Ò\ðz#¬4Ôòd"\õ”Œ%½Ö—;(©•äl%ê„´–¤â•#69rˆŸ‘ÆÑä'¯ _çŠjƒòÞS¡Tl9½ù%ûÿ\¾p¾±œM}ÄŽcˆeSÐ1­p•ûF]?¥J*§S[ÉG)~›f¶V"´d…!uªSEOJZŸv¦=27 ÇðbñÎßÑu¡Õz;"pÈY]$H&7€.äm]aqêÆªýd´Ù'Ü;ÿY:ÖxŽmOÈÒ €AÏq>2¬øàâɪݿ–ìì}Ýq2ð×óO(À”Ê¡ø´Ó®“HRi@¸êi縖¼@ýí¸¶pÁJ•{[óÄʣ‹<¨óäX6hSÓRÒã÷§.Ú%ÿîù™„ŽÙ~ËêwÂV¹Ì\3î˜b­19˜õpß¹3•|LêÆÆ8uÍrü)™›žó2ÄÏØ†þ¼ •¹:¢¹Õ(xO†á5ëߎnüPóÃÅ•™F="É­MÑeÕ¿¸.zSÔ]f¦ÕOr}Íü'rö$c9dÎ@ƒiBô©x>çÑ)_IvÎVìÂz O¥dvQ*t¡ÊÝ'-¶¿¬°pk»“)á}@'%‡!,pP:¹•Ѻšíš×¨ë þû”->VHí òÀȉ°u3®×±t£#Iiƹò&pJ 2šÀߟ‡Ù¢·Gdk ¨Ùe¬PW̯a @YW{Àp=ÌJ´œ9A,Ô£‡†‚kË 4·ê!ˆolwj6ŠƒƒÛøs—QÈ'eQ±ÀSÑJ1†þ¹0¥jªö&;Kž^ã<Þî(6gQ§v{ÆDˆ©Ã‰9[h™©[®šŸ@Š|ÙôL‡\k¨e“Æ£³¼»:d¼|κEßI:Æcœ¾lùpô³!äÛË7°Ø˜ËxÒnàºh€ |!˜rÜÕÙ|µë?©æ ¡¾dÒ0®ãNœÏKâÜK0œ·påüuf”ò[ˆÀ–4…åv²9M­+7s¹HßF§Z0PøÍ|·ýpü‘öX³Çò°J9÷%Jtv?ré{-Ì]–æu‹áÓň½˜òùé’ƒ””=•vJ=™Gž,äÒY#]Ô‹±Ôz‡óòYöH8“yÆ8ù¼¶`XÕF¶Ã\÷ËnòË#Ï‚cÒg9.uGl|ct$C-Ï9ô‚™NÖÇ߉’ñ ­1[ü_cÄÕ´oI(»Çð2íÖS²JJ~ûÑzÞdÊW™dÏÀHq˜’œ±[‚tÊf¶Â™)ééåÂæñ)Ó¥õóæ^qÚ7Ö¹FáBY\‘ Š[Œ;Ù—ZK´g+Gå:´ÖHȘR½ž£ @®æqÙˆJ¼Õ!Q©%O2]cÜÀhf5±Ep„m"fånþO*hr4×§êKÌO­žÖd+ÐЃtÑÈkÀå’—ÿ5®ïÆæú Í‹ÊÜdS*ÁEFa¯å ×vôîí¤PÊ«™ÿ§ ˆ¦Ä $§_x¬”«æÃXuÃâÖ=“Ñ(|,Ù†{¹k9–@Ùpl5K‹@R ‹áô ï.¤Ÿòźº#MF„¼ƒ·¶µZÜò¦¬:j‹åûÛ9Ðp–¦“«E}åôÄ1œö>KNh Ÿ±óO?R"«2&>‘{Í`.£è¬Í%ÝEùîÄ^KÑQ‰7bÐöô«RsE$- oEÜøž2V:Oš$„l0;*Ž'0»ö€Ú…;¾ÐˆI Xð2ãN g„ý B:<7 ¡®ŠÑ’c­_záEK–çP½ËPñþ¸Èù7oƒÍÕÄ6Ý¢ÿ+ïaRrº^³×‡RKìÚo l´D;ÁL¸¡îBU"Üb±[Ýp®§,º€[Ù©ïå @l³¼ ö^¡sÿ*svJ^¿d9ëñ³(±U ^ôóSb(D,œ¼€ObD! ¡ûFŒ¨éÞà³â‘}ìûd5½Y—€~ãŸöP¶âÛÕ‘¹ر$Ê€¼>§ñÊ\HÃbäøm¤\ÚËùPG¢ÚD!$/ðŒãX)jGHã܈–cÙåþó wŸ-#Rþw ºòÅ(™|S?–ÕCÝm!P;›WvG.Uˆü«À—‰še/+^ÏŽÝÙÇôoVŠ1Ó·ðŸ/²ö §Í”ˆq°mŽè7öÑ·-ÉŸ6É`Ù$OzÄáŒñd©¦»3+=އqú>9AVö¾{ÊéÆÐ’mãk÷Pyé[ q 6»ØŸ–¾iÔÆDæº÷Jh¸ ¨5÷Ö±€ÕÈr ÐuTÿ ›Ï]×8[·Ì‡]WwWLœð®¶hgç©IvJ€‡œÚQІ»¯cAåg8çl<§ØUµTCÌvbápl¦îû}„·“1”Ãèyõñbç4…7A,1Dz¾È³öwøý õ||ßu‚Ͳ:Àóÿ~EhÝ^×âQ5jtðßÃÕ*•×ÿö´Zëo’/.€TQè}±¡ä€ò†‡bø'î7›|XKìŒç³]ô]7¼ÕážóŸE)ï•Ü|ö <‰Ÿm¤ ¸ÇwñT¯0Eb϶ZæÇ§ !uªÔÊ“šà¥·W(½–†dáŒðy„A…À‘vqm E›ã‘»×ù†[›ò:ðßîµv äe>Qp„᱕w‚‘GÝQ„“ŒE‡ã¼‹¿‚^†ü0 ­8©Õ•ƶE’÷z¿Cs5š|7#ר®O`_ÏU¶B§TÞ£’¼Åþno/‡ë»µä¹°ÃH.ýÿN·_6–_ŠH+Î&ªÕ’ð—±ÔŸ{L:‚‘1‹»;]B^éÄwMai’Å ÒΰZôºÉ$÷Ð{ž=µ,Û„93¶#mMbM¯3@Ï®–ßtçÏ9Ð…á•/î²­ ~¿­Æþû2Ç´åH¼euúÊG%QR»áw6õåk^â †{¯Õ{T1Òº:• îícJ¿Ó¹#rwéÝ0ù&J¦!:¶ùòPeÖ‚&â“U=K¬ˆâEþ:Ó_Ƭ³uìÕ0aáéÖëÿqsR]Çù6ÓÏc&ŒG¸ ì}XÃFÀvõÈKQÿVÞÏ”rßÿ|ur½ìM"<§n>gÁ²ñ@Oöà\¹[AvCæÄ`ÛnúÄOÎCwñبžß”-åd-5gz”Í|¹·wž~Ί»¦!$utÐ* äwr{:'Ó­rsúµ“fU–­^>(Ãq>ëT«•íî&È?z´ß{UÁà!‚Œ„]d‘o4êÒßË©Rƒ«ÞçÏT0‰ÄÅ$0Ù13®ö±;&;æ ÷ŠË¬M­¬ŽjÉòåС±‹â¼íßÝñ¹ÕÆóßÜ ¯—8gQvö3É-•âæŽ§>w]>ŽìÔ¶´J8Ù…ã Í€[žì@ŸŽŸý»/%Æq”xµ…špÇ]„‘>^eE“¾ei]«f tÑ뉨À&À.õ½sRÙ/oµ*¿UÅOíXÈÚ;VÖŽöð¡Õ~(¶¿A Xø5é°£5ÈÇÃÕ`P÷’bŒÿ'7“f˜’xç ŽÌÈs%ÅyJÙ.è/ô‘£Ý÷–Dí½½ˆ&qÄͦ­‹»¬´-ê áËšaD³F-ÀT+X ümËúÞÒBH@6Ì+í <ï+@³J.Ъ P¨€v†’†Ÿ Ù«~4¾Ös£œ"žh8‘¹‡Îcd¢B„`j3ƒ !‘ ØÓMîwçÔÅ-g΂Õi•‘‡EØÏfÚx¿5Eˆª¸tÛéXß5öc—²×­Ç?]¤þ±÷NБøPù*xç´cÝí¾)¬ï®r]n–… À•ÜÃu6WTš—¯W¿JIê<,džkŠzÜi¯<Û|‚ —ao®Öx’OhõÀºTî°%np ¿fn ÷•æ,A´]”DË*¦I×/ž0Û{SÛ œèVÍ/+Q_Š3ÊîW¶¹2XW/1«#ŽCг¾-YWpGîÙÔv’'ÀÞ„‰^Pzò½Y2òcDDDÔàñôjËrÞo¿oñl§æÌ0¹®‰[>uÀ1žAHÀ±,1çé(òA)¯J¡d/tÅbé‡wD;^´ ³ûüþ-á¯]Ãrô)o陋÷¥Ð\^r5³Òödí÷ªM9T†4 ]LJ-Û‰¿ÉÚCM3í’­ÂFŒéMž­LÞ³ã2 Ë-tŠàâÄf`UFG ÍR€æGf$Ã`›Ø|Ã:[KZðyùêtk}¸˜æ^%BÞóŸî L~ÔRñba…[2 šÕ¦Ù ”ê"(B%€€6«%±¸ ÐO«¥¾|7­€¶ÑÐf\Í]å2çßz‰Ãèbõ¥ÿ©zã&!Ê)_Ð:(ÏœœAúWvY†œÆMùxêDÔ„›®-H~5‚²R@ÚN‹+ˆBЇ¶âåfw3IÓÌ£³ ­ü'NiUò%yãî! Ñô<Öí¯"ýÜ–FÐÌ:  .ÆÒ¬‘£quy[Ÿ×p%VŽ«øÖƒp³´sÌ‹´oHf÷¾-RÐÔNSÖ£#=}›¦ø.Éaø ÚˆÓÇ@òèCž¾+É£¾ÀoÛ„¶qÈPÅÉñËjÞoM®©ª®åÐ&©z€qš ¨fžLé?+b–kìÆh»F4F J^þ¨ˆý_kSabdV«me(á¯hîu1†01”…<8µj+Ðz_ZƤ°„?JŒŸÎv")`J¾›uÚ3Ô2¤sF_»{BàÑÇ÷ªLV5ú–NZ›Iaû—Y µ éÁvPŒe³Ë‘˜èë_ßu±Q¦49¹)eD¼|Šò.©#QC: ›w ÄÑoò‹òQ*bU=[p/(®TÞXE,«uK 1óIŠÙ­F%`¤®jß 93žÛe¥†c4jB÷]*ü+óôèàÝÉbñƒõ:Á$PÖ®MP§t’†x„T‹å(Lc”‚Oþ V~Â&RŠ=FÊ ¢ÏÓÕ²g‚¨†  žøýµ!/8ÅâÛsÜI'Œ¿[ÞnSÔ´q=(jЯa!–!-ùS qÕ§ý,!°Zc¥ š?$âTy¶'Í_k‰D¬Aû°FÐ=ü†¬‡ÛØ45Ïx ’+[/fË“¥¯8;(H«ù tÇkGÿ‚ÛœTèÂ>Ãð\»]\¯©øÐ(ìÃÆ/}òú <<çÌx]y,G¾diˆÖ ôV21§ø7Wä+ë‡Ì/¸ÄQi– Óî E9[Qçû/õD½˜[}ÅŒ8 ]üäNU Y\yñ7±v¶žqâ‹BkíA9˜gÿ…‡tÏœwÎd]tP®5„žrÜt§,ê¨t3’Vº/yÚ~×7}\{wÀÅ¿ùÛº5ØÒ{¦z÷ÍŠŸ¾ÊžÊ·úlícÈ~~\¯¥ð¡³GÍ?~g ò—ðSÝ#Ü~C ñà}ùÀ§¸H”GU~YÑáã)2ÚBU´~‡¾É0Êæ=ÑÃÕñNƒ_<» cZW¶‰·šÍ¦lWø$!ŒV@³BåØßÍ;‡H6 ²dÑ9ôŠ®˜þ\*’3rYNPXiN¥Tò7KÒzÑ6Uͤk1ëÕu‰Ay¨õú™Î{5…”MåxGÊ´ûžÛíôþÔ/ ¸Y=´gV>T, 7äù±—V±!c€|N-fÐ?á@Õ±ÛÁ'Åç´\{·¤ežâS² cªÓOš=†1*>¿ÏJ6ȹObÀ²Ÿ ÃYÜD‚ÎP߈øÓ[Lð>W"¯iÜ`5¶x¿¬ÎS¬§ ÅR~…nW)Ð:x81’m×2mo¢}18T¼ÎZ5Ï‚¼ôKAGöÅdø€ÀB{}ÒFÂŽ”Òß*YïNGfyàE–­wèo.º4,„á¥Êõ-^Ý)èk` ò#ÛÇ2g‰ömW å7n.b/InŠV¼ÛŽc5š,RLMœ0aè-¡t ¡Åî%ºÚÛO&+ƒl·PÕ¿\| ùgQH!Ÿ´M¡ç;h!%˜t×.wWHíFÌåZÑ6 "D‡MTv¾ Y.ˆ+âÜ„ÿ~à:å°˜2Z©^žþYv°£ß„ƒ¤9©a ãc X,æ-v £§àXR®’Ã"÷œf˜@@уÖT=Þ‘JfÏWæKÂn‰ œîvÆU0d\‡l4®ÿµU¯4Øæ¦O¥š˜)“ŒÌÛp»%–Ôl }‹‡g?rlÓ<—.ìÇèÕNÖ뛲&‡ËóˆØJPsÖ7'õÍ(˜ÝúM]›Fè Z¤µÍ.¨E\΃[#ÃR0sê!7/ÎT7Äm‚£\:…<±=Ö[à6–5(Uå Ñwó‰/ÈsÒ-¹aÙ˜1[Xò ïÏmŠkÚà‹æ°_0yy+ ,!!ùM=W7‹ÉšÐ3)¸s-£ÖŸÕ¤~ú”ºêLÈeqOíp®j[áüD…¥ØûièXÈK4mþwl Êö4UÎ*ÌŠù€ŒCÛC/ËNç¼[ÚB8jšÂrõÌqy¥q·áÔºôÆ®\[÷H*ÜñM!¿*=úƒž»Pä™hò%3ã+rÐö²³–ö¹ÞjBH:ËR ŒXTc|Cæ1ìsÝøé¯[“¥ÁSd‰nâµþµz‹ên} Qä²ð1º¼ä‰4–hJ(hø7­à¹Çhe×9‰_çIRô T»Xºó削°ò]Áõqcæõœ6È-±ùÛá‚›]ÍdYN¨* ”Â\“(²J±ohX\y®NM Þ 9_Fyy‡^Ì*­…vŒƒVo‡œáo>Fé´}")‚î~6µ{ŠLðd<ýîû-8od"Óp˜¹’þ Dw²9çÍ]€ƒÐD#šÕW éœzõ„±µh'˜zŽC}®¬—ÉÓYIÎ% 1¯xš$æØ%¼­°åí„,wV_Zðʼnu“ëôÚ±=½“Q"Í1VY͇Æ<íQÀ©—’&d*ÓcwU%í8‡eóýÝ—]« Çœ\õ·¥ôô¨Þ øŠtYè>"÷¼ïÝøò½MUfiYdèRv éWp(cy‡#ÔÓ8Ç=Áb «é«Ý*×+úuJpAò?¦rJBv®°¢µ£9ZHÁ¶¨0ÌyWÝmݨŸ)DYg™ M-¿¦«J‹¸:ϯ¸~©è)\“Ø Í äX“GXÇ̃¢{Ú`ÖôBcÌL62›4ÚÀÁîòð˜ò°YÉoUG*yï›ÞkÑpŽþ$E“tQáë&È<¦ÈŽ\BïSíÑlex¨Ä{d©zI@AÒ¹›ÿF œï ÃÈ]=‰CÙÖkiÖþÔ›qÎÓq¶tÖCvG:K^ÆÏSØÁ(0™=FÚS»ª *ÝYCml‰µt¥9´œ,îÊÙ²ASƒñ—”S?úéG©ÉKÒ¢EâÏ?YÚÞ q¡´×G^=þþTéñm}ÖÕf`ß~k…Õh‘Õb<Ý]a($¶—,º4 ÊßBB¼µ(€ýU®ž#ñŽ;Â"yéêL6¤„ÀàM‰@ËbÌP<ó}eGÉ;§ÙøØ ˆ‘]œFºlËÐÔÉõêJ4Ýñ Á™'_>áúiuØ‚Ëy8ÛfhWÛñ€}Ht”ÿ>ìê)žv2^””8y·Å‡¦Ó³ú¦w ¥§×gfÄÒ"Aæe&âCrˆâ)Û‹@¡xÏÂðûUEhòý­Rò¡âÈÃs³…c:5l` ŠÅbjÿGÇ”ŒM4öõzoQàFhÞ‡\ñ–6?k¹.a–¾Hù(W©Ñ‰ îòÛXÜÌ‚¢¥¥Î>ïßÍUïq±Ôž>ñZÈ2ó "eŠgñµ!cS†Ê§lXmB÷œ[¸ÐsµÂ £•ÌÙ·iÜ~üï¸×¼¶_¹ú|ª"3ösÞ²Êë-ú›‹Ò¤PY”Ãæ„qÚ‹…ŠÉŽj»ޝS5¸¹`á÷±øUtpK–PŽ4#Ô‡Oð¾hai4‡sí½ƒGá¹>:ëO6pë87ÁTz# IÕꆚ¢ß3ѳª».ˆ*¦Ç]9à/¿oºâ_AzÛS4¹µE ÆŠúäèÏoÐ[ j"y„'‰YDwK—âéã‹?ŸØtÌ—à’’ë !¶T^8!캱¤Ã_÷9tǾ¦¯?~%¹SÙËú¿u µŠ9Ú .çmkð‰ïœŒw?±[ÁØ= 6$gÖŽ½k‡›1Ä1ca]¯ØÕuÖ´üø¦o%Çqò4ÂY1ƈ5ôÔ¡6h ìIP=cJ4Ýü*áTÌÃD†K£4Ta‹1£n­Á2äC'²M”æSȺÆèØÜÝ-Nm'ø ¤kà.!a†ý3 (§”óþ·‹QôD&‡‘‹·³ØfXŽ»\ÐçÜ,ÌðEÄ€ïBá%é¸}³Ž˜§y¯õÔÓçêe®cÔÎŒëÈfùµ%ƯÆf\çØÁ¢‡ùjŽ”þšPû8hD°Ê ,þL—9¶nb…H3ÎÅ`•Ž<Ö&íüÊ•~HtÛÔ2Jd· c¿ZüZÎÒ©Ý”†þâi­í–é^ÞôÚ÷¯b5$5u •Ã7ÓIôûŽ?S¶ÒçK”|Ô÷×xÞŸŒ d"&ÝS,hd ^MÀÎtÈÑsÆ…¢ï 冤¾Ø}cê3ÙM’}î–²{uôK»æä n*˜‘WYšÍp`ÜÀŸq±hAGN¼b,ЃkÙ­Mäm6Þ`¯—ªå” ¡”òëC™ r–Þšˆø~€žýJìéÖ‹W4דHµf*ÁpÃH® rЃ⡖³®Â>Øù…²ücb+C[Dé›Ìkå ÇÊ€½Cˆù'ª¬â@ìú%Lþ"wˆÂœš|? ¼:GÛ¹ŽÍ‹µ¢y)m/O6g,GråðÁ•¼Žf?Å&?Þ_ˆs™83š}ÎÖ:s;YÑÑÄ’‹J'/È“œ .Â,Ù'¤.²ó£=Ú; êž³ÉÔg§ €ñÒÞBjŸudÝkªc¨'ûN)w‡»G@,ð˜óGñbgû6‰Ô~óCÅmJ!z`F'žÀh23HfžS®â€Û^½¸=®Z“i=3•Œó/¶‚eÿ&zî8~L5nœÄ5u/ì¹ìBuU‘e Fo­ó0oWô™€êPq  ý"ŒU'EZ1›Ÿld¨!Ã{%3) üz1V¨ËXÀ Ñ|ž>°U¯ÉÔú­IE·Lµ…µ4Þµ$É qº ôçðòW …ø±Ø®›V)fËÅígV,q;ƒÀ6Ê»"¶â~G˜à%{kyÔª–—­´Ö4“¦É³dÇÛ²ËBR} ­§HîãME‡®%š‚uBÞùÍð’zc»š» ©…¾ÃÄdýVQ4w›ýŒíÞ?` (Õ¥ñ^œŽ•ñÝg»3t³z¼+»»W•#/§t¡;h)3vÊeº›bH½Eóɉ©µbt‡Ö–Þ‹Eˆ¶/Õ[Rž²öýfrØÍÞ &õH8Ÿ[Éܤ)ŒX¾„“’µfoM`j¬j¬é¾õ]ûÂÈQ|EfÆÁ+ßÂ*"c—i+V䆯ÑÅáAV"mïý˜¶–½ÿ@¾5øì ÆÔ‹b¾5q—ÈWä¥[ŠåG[Bb¹wÛ}¾„¼‰Xýae>ù}p¾%=Ê«cK1%À6‡û‚ÀþÇê }–zKÂÇù ÛS£rƒ:8'/|ßÝZúl¯ò,{<¸0'Ú±œ’¿a¥óïã~’תÇu»ýÛÍþÁZʉDœ9BG@Z>÷üµÊzÛø¸YÓªÁ‰ÚGŠ˜OZ>2¸é9½¯àÊré¦jõë½Ä^¬óñ’K¶0WÝéï–YÍãŠ;«–Ý)O¾UE÷Þéøf:MÚ¡&TvNwëò'oU“^ÐÑ;iye‚”ÍÛ’ñ|\z@æ|[e8$=g <³ ¡L/ع;¿½âÁï$a7­˜‚þº|~ìVû£I÷I0xHgÊÐ2µ…?}ÝNq¤ ÈÆuÒN.oj£EnÏWGzìBS Yˆ&xhãPèbõ”“.ؤÄMu!\¾Oå>;GB‚ZTM’…xá–nf÷keŒ &8/ ÐQn<Èšâ”î›Ë¯ÙóNƒdx©®x¿oÈaè‘©ûB¿Däf¾ÕŒza`“2lhýÙÙîzmH·âÁ ¹ÁˆžŸ[YÚÏ·Ï~<›vjh5—v,Vƒ9Mn8ÊLF)®‰øTZff~ÈEuHÃÙ@N þdLbl~º1ÿ0ò(_üklö¢ë‘ј˜–Ê¢=AΫ÷b÷Ñx`bþU¢è@>Á߈qà#}ÔLŽó]-%Ò²U¦?ydÕ§"DÍÏ}¹6LîAáh°ùµõDq2íT‹5éz<»¤Å¿ëa¨[âÝw…´µrïxFñݾ_dûÏûçíhAs*Jáä;hQ—‹óêH>‹ôL\õH‚ºû5Ã4‘BÞK|ovsƒ';D€¾½T'üϹX®òy ÊŒü¥”Ó`ìLã‚fþWˆ#¿EXûêöæ¥`S5ýÂËÝáQ~”Zª ˆ°# $±ÊaiÔ€2šÈO+(ÓÎqé]ÅoŸ^B-sÉ2ž:ÍÃHÍÝS õ‘ Ö£Á®Ý{º}#ÌòëƱñÌ ‹Ÿ#4.Ó0ù*Ð-Ù‡Mà¿‘ §wìžLÎïO®i!mÞßdÏÃ¥ Á*âÝÖ»o|ƒµæ¥è¶è4ø(" u¬m_˜±ùöÈù÷mšÌC1²ƒÿbx4zÕ7ãŸzÕ£¬n¶0ü”/ùlø‰¿.æL»Å½Û]§AÓ;/ªoEÎõ|4ù"…sû°¹µÖz†‘l/S[ŽòŸŽCZ]ÈŒ\×o~åRú6²R5&Þ¥l`ÛÕÓq”e|¤ð„ w­1ÁfüA˜s8Üy…fšÅÀHtN,o¡ŸëÚY¶ü2î{B93GóÖ¥¼f,çA8šóm@ÀCm $¨¶›®8ûk£ Ë- ›ŠÃ&¦F'}#g]î•Ä/YÞ޵ѧàip3ÉŒ"Aïį}ºEtÖýjWÜ.Ȧ œ\ç-c³ßFãÂBþAößÊ=düw=æ3ã?5ÖqdX­·AøZ\a7ÔçqÍ…Êsíc,¨8ZœÈ@û=*_‚?g.¢¸ñ &Le˜‘~<ºDAê#¢÷ÉÂiMœvŠåú© ס—Ñ Z H¶ej C³á|5¥obll¤¥-‰ü2ŒA¼l¦Û"bp˜Ó5 Úfèm6Éd9š‹úS¨æÖ}þN!ai“Ç“~¬ŠÍQÉC5õBϨ¥…I©ì‚lGÿo)<áB‹Ððy# ‚„=èK]ЖqÈTÅIJ ‰êƒ…½á­â%èÜ a–F:û€\Ñ…£1t?¬Àiü“œNnÁN0Ç&Ü]£ëþó»; Mÿ("\@m Þ8 è¡2/³ Ö1¾TsÑ×L½Dkû%pÀ9­ª/×Qi-ØÑF%DÇ´¶è9£T¾0ñüäùaV2¶QVú~ûoK¿túé‹ÁM½§ŠNDîÌ”[7D­õE‚÷§àÍ6«ËC¶°ýˆÕn··ãl_X«@ ÕNgÁÓ¹QF@ϰ^ã…º o£ÖuÚ44 ù…é”xÂH—Þv»TâåßWUÇÏ)¦½"£Ê…]ÿ4Á5ʸm¥õ‡±@±´¥‘!°Iôv]¯íG‘%ñz¦i Ê…;q^÷‚$„ÉÎ'£Üúü ´zÞ—Œ\)ýý“dà:…Ÿ±J‚÷]/çIFîy9oŸìØ\TÁB3àÞØ?Ô²*c°jlð³Ñ"nþhM½‹ e¯Ç¸g•e3Üy[¶Ü4Fˆ¢´Rµ÷Ãä´:Lˆœ™ƒ0´ t¹{b O:–s7œ­ÆiÝÆÂŸÃßÜÅR£)iUÈþ´^˜þ£ƒ :ÿnµçHhqúÿM$*õ&ßæVíómÃà¡TˆCÌÉ’i¸àõAm!#2Ÿ–w£F°þ0­ïMnvâŠiÕ_e1£äÊ3æ«A÷ÓÈ•úùérò¡ƒ°ÿa«ÞêUÜñÙ ¿Çž]–Xj6±e y…ó’)¤õÆÜ`êãÄÄeíI‘1Ð?ÓhORŠ®I,—ú;МHÛ;ù=Ýr‹¹1*7õu2ÁÑðO¾–GŠ3Eœ,€Rà=~_¨Ì—|+G›Ý‚ÑAÿRê LšBª~4L§ón¾«â]Í å,YÝÌŒ #®Uìgˆ×K*Ħ`8‰”LìÐzj}´çò»iÊS±êe¦aþ?UNOk?¡#°àÐEÆØzÑTw)ÿkê,¦Ô|ýÆgä)G©½Jú¿ ÿ:õ=¬ŸÒZ‹‹Ÿ/¡ìwž›¹x÷<ùj*(w;×}¥qp4ÀÐØëGA÷±õ³º¸µÅ¼Tä‹ùí0wsc§¶¯Ó£Ä*ù­z&$¶ƒÂ.ë},í’x 6/Q·ØÃo=â SÉ íl<]MÇ|b:åààª1@βÓÇ­úu-¬ïwøÊâ[ûSBíËŠ.ô B¹ ‰¿@IPÌDîS¢l³ðÔ?WrsHyŒš¼ß±Œ{”ÀµmpvùÈ?Lâ‚=J³ÓÁœ!:fa-ÞÓ Ý–Ö¢FI3^Za[™ ÍaËÏ‹V"ÍæìÄi®¶!j£©é(ût4ü—>L”iÓæV<;Œíô·i•Ã}»bP~};F„+zù2(+ dxõóì~L´¯G6#“L/t¶G;$Áþòû€ò'ø“Sç}哸û¿êÎ$ÙæáG´Gm7ÿP¼áŽûw3׺-2])éª ªªáã×sžÅlF±Yï8]5w í‘b™áCÔÿCD:rÁŽ;…ŠLËÛø‹q¹éãZ÷}A•xWÃ4z¿ßÑfuËÑZ>ÌÐà,q]b½"ÂãðFD–¡ ¤ßÂm öDÔ2;ì8zn‚Üj TY«a~o°=#Œ¡9,'a»µÛ–¦uh³skb :ÌÍê(þ8>|÷Χ 7æÕ÷U©Oðq/auº«+tCÓJclãGóŠK£SZsF–hÛ¸=goxÙ(‹Jÿ/Ÿ•1…_];µÍXŸt6*HÓkµ‰TÛZԂẮå[³Šô29̼ŒÜ![¡š8..ä ÿd¶ŒJ°èT”±~§¶Cóõå}ê °…ï%µí<ÉN ÷ûèÁÚ6‘}lŽ•¯ò"”³(eµ±Þ TVÅÖM>píÿ!~t7Òè¾D£zåDÏ0L]|GËÉ|8V¿šPÇ彯D8¼Ôô$g,)ª :°Ñëà ×Úò§Ú¼/­ç ™² ÷$ˆÅJ®š¼I\ï·¯MhT8PP“B{üAfàÔÿ1P7é ž¾¦vÑÛ´Êî!Gyè‚=!Zg nJ„±;ÞºUþÅ+ž:W8ñ~­…ý[½ßV¹_Vž~¯mïÕôRßWÒ³û}Ëõóý²?W·†ý_Foê÷Hý]´_?½+çú!Ï“Ü× óõfùûƒß?Q'ÉÑ+çúùþ¯wOÕô _?ÙW~­ÿsýe¿ÕïK|ÿ/ÿsúÜüþůŸÛÌ|?Yœçé¯çì|,¾N~¨ïçû-þ·÷çú¼Ÿê1ùþŸŸçû;~ªGçõ|ž°¿?³ÉðýT€øHÐ<ÖŠð6dŸ@ÞúûÑç ù™ûXeï&Ž×ÿE‹eþ~Š*µ‘^yWüTjz&0ó9“«G,Wå îTÖÏïm§<ŸÏ²j#P|X9Zó«9\t/€z[ó”Ü"36„Ã~é<³g ZìWÚ-qº½Ÿå!í…)åÒ&oc÷Š@µÿòšÌÕ§¨2‡¬õ%eÿ\ÑŽGœÓÛ3yC=í{{w®º„n÷¥‡úÿ jm˜<è«_¼.Øç”Hû¥ÐQvfO•Ë(©ì+¢Ú’ß±$rE y𠍯‡Çóe>´¢ }Ëg´¸ª€ê;™efɬ‘CëjDŸWÛù’¼û±mÔ±‚:‡Ši³ ñ„ô2ý†,çE6 ÒYãåAbm$"”MyÍ™I!eþèØHÃ7ú¡<ß½Eà!]>ý,³‡Ÿ4Œu²æ¿[4/odmà ">¾%«øy7Ð^«SzÀdå´`j½vBÙÉ)øh=ÃÛ}¡föUÁ.ÜÍ´(…<–tÇÞ ‰b£Ï€ôõ˜ûy6ë;ÊFÆ9515S%uçntxal[©´–xŽ÷ÈöXäºç& Æv}¼*M <)laªÒæ,ªp|=š i‹ò~Ï%Š(#þó+%SôíX@•* ;Ë(sW¹äFL)ÿ~Þô€<^úùg§ wûiZ´yP‘Xª,,£Ÿ±þš¼?Û9ƒ©ýg@ýð_õ…ó ç š‘Bœ¶¸Ü<-\."Ǥ¶ ðU,#“<­ÕPÂ?) ‚[à• Þ·]蓺¯'jk¶!蘡Z¹àTè?¶+#À\÷Ù 9Ö‚û¯ý1ˆçJ|2´&¸/^…{áÍõƒÌR¢ÅjiåM,J>Ü“á:×\Y\ý#‚JâÉ*Á´L ˆ£u—‰ÒÐ ‹Øa²Ïˆå|ºÕ;VK^h¤zöŠ6ŠHøña¢A»„R„–v-P†»À<ØKR÷ŸC“jŽË“xs¶Îy‹G§rÀËÎAÑðÅw‡;áPø}…ÒC >V}VÉ¢ ΠѰ#ÔD¦ì¤9/G€~–¦zWpR2"ÿK21­¥|ÄFc¢é®ôû“™ïá5®k áž¹Áe/䦚í;Åbbûd/(D¦‘\w Ÿÿ'|WLfy-øµXhnµ¢M§Ù¦¥¦(bæ­Á¡’µLͪM–]=ÊÝth‘SѾ¤ûB18áOó¬‘ó?.™››º£2FÌ„OZ“ûßþ­Ò¬¦Ê/ /ÙW/A=":bE…ݲ%\CËß>?H³ŠþØØƒ ËzÖ¡ó€8ÀI$ë—Bþ²q±RGÚwœ1÷]õ±±HÿI\,ÄÎD4‹Dš@Œ!od1/lzÐü²Þibl„…žÜ™d™G Tnîø ;öt0Ð~*„°ÓÝÙH€U;šÞIAá/2¿ (­¿åë·ÃûŸll_rãòl^]Æfe°rçStº[52µ*I> -0Ê߸Ć–íd?ÿ7øOÁ ª…ˆ0zBò°ä†Ý©t|Ž\›”s EW¾únå|ÊmF>ä׿Rœó;`pZü½ø@#,‹ òÓŸ°Ç7Å®«jÓ© Q{µ±?gláVÃy,ý0Ö”ß$p#×UŸäù謙ƒu—!ÓdÃ4šHÌdFÙ‡ É~±k½ó’î÷_Ý÷¿Tléÿ0¸úO$}rŸý½®ø_H5:LõäÓ8˜ËÁ“Ëzi‚ }"¸Q· „Xøfâ~­•âí¬‚¡›¡âAÛé‚úÇ’i6$=Ó(O€´cÚÕÂÄÌ´üÈøQmúˆÃÑ;¹ÇIì+6ëO&uy,û ?Í(-¥‚ª&±£¾³XmÔ{õ­ðˆ~{÷rÛPéõ_BððPÈ#Fèÿ G:ÑUަ°XæçŒå&åмÑ3L_nÌp_r©3T"…è––—^´!tõ.+?À!—¸>ŽrÓ’òçÍ\Gä{ph=€ôœ'B,Ý„êò†_¸ŽÆIñêÙÈ™Ð&)§Þ¸é~ƒéÕçnŽFñ#0ò<é=(Ù§ÉœZðŽ-ÎÌ:a^§„ŒÐ‘ ûXaas© cft ¸_ ºL|¯×]9ä_LR,µ8æ£à L¤'׎D2Œ¬iIwzêƒ'»'zg”ÙÃÙWÄ•6ë¾~ ú€œiÊ$.A/×›Ã{‹ë¤b¸ô°Çù´n}sÂ#Y«Vaú\ZÜxñ)qÊ’Æë}¤»ä¬›¾t¨j+Ó×eutÉ$‹Äf™aV$=iÞJÐïæ¶<1™J×Úàô\D.nS˜œÑÛÎêôuÒç$oætƒ»­í9|sÞ¥1žg:“êøFÄò¶4«ÂYH(µMN²Çâ¶¢Rhq)èH•‰$N°ýqé2!—|³½ãÒ¿÷q‰f=*ïÌèx²èvË:Û—ÇE4!aÁ>3êJéL,ÿtª‹[A\)f,ÑÈYÏ„\§ú0m¦úæòFå˜ÈF€Õù&Û<®®ÃÚÊ VÚ%d7×ÒÙByAE¡P!ñ …mÁeÍǹÀÙGÄj¨¯,Ë!%áׂM‡ø*ìÄþšŒZþ$së+Z>Ÿ©làŒ¸” 2Ü0êRà1ÞöïÒšü‡ëÅä Ûù‘B•*ïô+Þ¡l³©ãî´¦óÂÜ)m>C¥¡Þu¸Ä¢wŒ•³:»w9ž÷jr<ô€²´&ò—Z%X£ßÀ”ǰIò4C?c#)z{ÚLÎVª¨]y÷¤õ}¼ •á…“µ‰K½¹Šõëˆ~ó ¹Š&ìWÞüÌ~ˆgÌÊ$@BÚ­#AÜY`²¯/a”%XcPdøÜYͳXO̲¼yy`#£T}z¿þZÚ¾W/áŽa¹}Ÿø¡*°‚ûŠÍ¹q½6ˆ [J¢Œãª”ŽÑà'ÄANÆÏ§ûØdDs¯Ùœ=% ¡œ†J·yGfО‚ÅeÈžHqf^ˆ ¬óÉÀmC»zîVlí7Ò“kÂûÂ/ ¾ z…—…oæÈ æ}I<‰üNRn:†.Åvi¤Ùòÿ& s±¹,»ÂÖ”S­¡ƒì×À@îÒ/ƒ>/vdf7ÛÄ1l¡B_Ä 9¾×¶…ª6 ±¶TCóàÒó'¦ß$„·¥W-ÃâÇIB. ¤Å!©³²Æƒ |Çzï¼™Æg¬Îr2¡*¿æÍ0"?®ÇOý¨¿@}8¢¿cóu‘j×ѱ”˜­¡ãæ•Ѹ´²~êè B'¡Š. Q^Xÿx$Öå™Ú_xN<fy‚ó+(v„÷Wq6ÊïjcÂᇗE.Ò=ó˜[“®—‘8Ia2ššÎ>DPn€ŸVQ»‘“ #Â×6wqËd¿ VóK¼\l˜Uî=`Ô²%y¸¬ ‰*o\í–Ñõ†ï>û ¢æÄ‚Cçºg¼¥ßQ©üʼ8Õo/’%ìŜ˙>´ßø¡¾K=Å€q OÍ;}uã>ŠöÈ ísá¶Œ’óî®à‚¾‚iœæmIÛJMi—ŒcÛ¸/ò~K´ø]iŠ©²T¡7ñÖãÊj¢ x+&™ ÈËLùÈk¬ãÛëCš¥z°º—ª!S$r1[*ˆ­›¥ñkhý`¡ N s$4ÝP¿Y cí†[öâ*íIî.OïŽúàkj:›ÍöÊ<ùÜv©¬W@ >:¸[­³Ñ¾ªìBÙqÑ•0†·»Ã Ä,20Ýêzë¬[DV^Kô­½åEFµú¡%}¥ÕY]ÔöZBŒŠ œ'Í š›,þ¾8±Ec‹oS£A  &ê/ò:±ÕL¥òÊ.Ÿjž¢”1i)»£#ø«9¢dEÅp’ÜÂp³f0l1 ŸüS†@ñܤ[6X7íæÙç€>õýÂòm©š‚‹Å÷CnÄã@¯ÆhQW³ª•+†0‘¢dâCŸ¦³òñʳžÍŽzÙ UÍîlæ-qi9È’ñ~>ïIÎ%}Ú& ðûÅ 8¬þæ-®ô,‘Í{î—w몠\í3Ù‘ è«.h8x]‚yÍçnÓ 49¨gÌ1“ŠóxŸû½,9"€ìˆXŲý;ø`Æfò¹½%©% {M”ÛÏŠˆ ¸2Öª¼§Òø ¨{$XR[ý¤Iƒ`lß(Ž)ø\ÿ)µ³›¥;¡n |4ñ×éÂ:í/t ׃ÐM&šÐw€÷ ?†ùÌäñLË0ÿjUÑÓ!rS¤Eç Ö*I¦ƒ8ó…Ž&<2áÛ×Ú`.öœbiÌX¥Ü°/gìE%Ó¥(¶²ÛJ<øáÀå8J…JÞé– qì,ËUJ&¥ÈBÍÕAæÀÅŒ¥³Ÿy–a(‹ºhpúiõ?ˆ XoºˆŠ+‡Hm£‚û–’Ÿ +Ó_}ßEÞ]²Bãp?­jÐp+=µù)XÌ'¼¹0¦bµžÿi0`–iYýæ…N@}}Ös™Üûq´;{vaXt RÀ¡‘â$|3E•Æ(¬ í÷ 6#LjŠÍвcBEBv|TEûö¢ÄQK8qn®\QåˆÕõNºIB—Ê4" ‘æqÖbÏÖ¡ãÚI¨ÃDËñçKøgrÉ™¡;øg0„à¿}8V••»¾÷ëºïiIgŠ6ÓOkò«^„ïj1üe§ G%h퀞$Þ¡m“K”1ªïR=à¬5#é¼wÙÕASß­;ÑØ¸uéqP QW’óúÀ·$œ;¥óÃhX'Ô#ú´çÇàáóCçg4ÜÓÝ|Ø\ôò‰)­±ùô qCõAô}ĺÂ4¼žÌÍ1éÍw%‡Œ=áJ¿µ3í£ÿyV|á,!ÚS"ôñ¬ƒ¶¹´ŠÉ̤º5×"œþü+ø.ìY‹{%.rr#ÌîI²D2E¡§ûXÐÒCÐÌê½Z:žÃÇÞœÈ?½¼ä:ª·‰Ü@ûç#¨*™ú°.Ür{Cí*n~Çóå•î5®‘âüI§<”­r IU£Ñ„bd¶&ŸáR×Yxnû¹%7rªî—ª4J}á5…Ö;É?ƒ'ÞRî @§´¥êñÑ<B4­mÓ3“œ½µUBÈu¢<%L@ð öÊeYF”@Á"«a(è|.´ý¡”¶5I ÖhIZÇ£ªÖ”~á*¼&ˆÑœ´^+=ƒ~V&bSä÷~x-ø³Ú|Ú C  ¬† &òºd°T“î^$Ïr«’¡æ}á•òžÂ’{H"‹gÒAx ÅÀ:}< ý¢­v Ÿ=E‚@~}øQøf}Û¸+ܰÒðöÒ"õ(ŠI–ÕÒQïóÉW‚#P “«· €§¡ª¹ffŸ)àȧÉzr•Q*š5bKp×Em?· |(Jü­šN‚M^ýzh\¤qñîO(t¥ÏûEÇ0­x—²V£Ù$­GSK«–*šîòm›Qå‡W­lWeÆh “„Hwú0X":ò³æ$n»áŒê¶nU‘JÎS‚«¹Ãÿ¶Ë¢:æ%æF©Ò\áûýÆF±#™Lfw^+™žá¢$~p@qƃã˜Tß0)V4ó#F} x‰\Ó ñ?ìŸ?´ôApMw-¥éˉѧ"Ï3P#iÛ;4ÈaÃéwÑD&ƒm\’¶§o€egRl<îiÂâF^¢uÏM£%É„£RÞšz(;´Ó*qÒÓFÝ:‘R bd¥•õ¾ýѬ'åÕZ-&þ- ¢]Ë8Zæ³ÁSa~Cn'`öÏÅÌETc$c ´Œ±{Û;üæÐ%€¶ò[ñVEPch!:§JNÕöMƸ4’ᯪŸBÜGXŸæØ¤.5Áô#J'1BZÖZ-VZŸ5¼§ä¾~C)*_,N"ìyÊwî43é ‰cMtý¥ }lcmÔÎR¹ mìzõlûô> ’ j•¢ò0Çÿr£uÖkøAþòScÄœg%Iؾæ9%< @Ü ú“[™ü͵üKÝÉOh{þó°{â`#}ÑfÊ„±Ú¼Ãݽ‡¥ÿrƒUG¿¸]T}Ñg£œ czx”äsѽŸdå°ÜöFôøb²A 0¾¼‚ä¶¥Èüu…´C¶yÃÏxqÀ¥,1<Ïõ8–l— NAšÈg°–ô•’F ²ÑPÎ×^Ò"øQníH[8ó÷{ž€-£ t⪾Π¿Ùÿ„ƒ,:DxñHa=ï͘¬Ü’‚˜JΰÎXgÒù»Õ˜@ªšÎKtêç³êÇ1Ï5ïÊ¿>È-XôÊx\Öo÷Ù$Äéç»wãoPEÞEž,§ÐaîÙtζ, ”Uœ’<ÿY(c!Z«Tk³‰Ð÷ÁŽpÍÞ³ªòé3ŠøÎqË¢;Eo‚e×¶«mÕ°ØÆ”Oç•(Lk»±5Õ½Ô^áüìbÏAâÔw¶{;òYïl÷þïÒ+²­™¦w‘Î~£@+ºð¹è4Ï‹ÛýEƒ¼–·çª{zþuû¸iíÙA"fU…p+úX¸¸˜Ž#™?˜ÜÐÉ@Ù!¹‚4è¢?:ÿZ„ w­Õ1"ERéûB?&pž¤ç«D·ä¢çšÿ —mÑþ8¼ëãèZÓu’ES…†maÒ˜DˆÞÎ;Ô»hR©’‹ˆ2YX7oï ú=§[O”êìF%¥Qæó~Òç˜àÒÁâTÚ~¸¥|ëc[‹Õ ów}|"æ4*þ2Å ±Ì:‡3ûè. ëO”÷…àf¤°ûhë¶£Ü8\üÖžV€tHò\•ú5ç¡”ø÷³o–ÝTXŒD“´‘ÿJ ^a£Äa™b‘'˜ÊêB>é0š„ A?ß;jëS5xûÃ:,û!Õ^69¶ŽÒ+öø®ì’û©Ê‚Uef½ÖíÐ^|̶°HV{évÖzø#ÖPa³œgmæk¯öþ¨~y}¸¦öNª/ï8$U ÇT&ö¹ÙƒÌÃX¥ÞØMß KLC4FBœÅ¸œ >+ÒÚè<»9ê ¡bUÄÁÍûÔF*¥­½–JÊ3BȨª¶U«„£¾ÊîÛªtnxbc¥„‚Åk˜O{+Š1ˆ)3çâ¯i_}¢×Užßkϯ¶¾Õ–®ÊYéЈÛOîüšq­Ûªì\Nàk\w.pìo†ƒ…+ÏNÌ<˜¨R–y|–§`ònµÉrÐu*dxPÑ¿|Åé%ÃØîÁ -ë*\ãP^³(,BÓ£ö3Ýܵ â'ïÀ.WÊcBæ<˜2Ò;-v?j±‡ö;¼,ÄdIÅvû`ŸŽ52#œka%©:ú×Þ;gMÂ!ø¦æÀ/œš¸^VÁ'óÿâw#QïDYÆí@% ÷‹r$†­åçñõëñVíÖ­÷·HüÛ õ’¹~_Ý£<·€v`Ïô[ÒLúÄËî3nÇ–âNEähbî`K„r¿jßïÇƒÔ *mÛå†ó0GpÆé<—!ÌÙÉÌÔ©Ežv˜jñd qSDÒBL¾#¥”s²Æ…KÇpQ›n¡l£I;¥WWÕ¬‰•Õ†Ó«d ÚÜÁJ†±Ô¢ïŒòÀz§W5V²Â­‡¬òð²Mà%•³'Ú­ºngÔ‰‚u—òž¡OÍѤrF& `ïdjlJØmAÃq"MlWþ·Úùê…C^¼®W˜c˜ª`+HWÜî‚¶€:»Vtùw<ÐÖÍûFÌï´0if邯€O{n²0ÚOGL\ æÎËÄàÆFz:Ÿáíp.tœ¿≯Á°/P.<Ü ÖÇVBZŠ˜ Êö^!»R›/ãÿ%GÿRnñ†Fq£Jâ_Ç Mt@#-Ïd¥8Ò½$µ=¸´'‰˜”ïJi‘8óSejÖÒoœÒ¥Äʼ ªáë‡ÛÛÚÚ¹2¯z£Â±2¯³l nÿ 'þÏ‚ý)Љ‡÷ c£(2àmè§Ô‡$ì ü‘¿öotØi®L¯8”§-â ‰›Ä|¢ÀiäA•Þ~1)«§^ŠPœÕI ­LîͲ¨EÍï¤IÕK|¾ÜaK‡¨r%1¡Ö:’œ]'Û;ïULÆú˜}îøò¾Ô™Ô?iš|ÞnºÀx,ûƒ`ÈxµÇêú:ý‡…F9É’Ò0««Áï<«¬QÁ²‰$¥Õw®/=t¹§ù ,¾2øCŠý'Œû‰3×¹¾´©(™»‚XHÄà}è³ÈØð1ÞäPm|ªR¯¸UN°’+‘um:|I>Û¦¨ -²ÕósÏí Ðø—0¥÷9™YÃù¸¸:_8…Je³9ª(TÎí]³æÁ:89-mFy ç êrGU®ŒâÌLt¦` ÄÖ’A˱XÏ­Lb‚Ÿr»Ú|4+MEáß§¶Íà'Î% 0™ÛîkLY}g±…š #—kè¦2SÆæ³„w–ñø!åÕ@m0H ½Sá¶±œ þ„š¬^ðÒ¤ÈùÄž2*€î úq›úàÄ6Cu?NuMöR°^Ëz€?¯[꺥SõÆŠ#gvÜ$úÉë<ôÛ¡â±õAnéh{ A7ÍÝçéS:-Lˆj& Í@Á.M|á‘°´¢f š}¡~ò.Й֯»|¤;¡`â¦!D­–À%Ú!.ᯞîô}â"“íܤŠ'NùUÜGM¢mòvªûWn<é®Ú]¹»h±:Ö$0µ-çú,0â‘êÞ¹“§žÓñA±Úd¯›æÕ•Ã1>ßb¥£ §öáœÜ~¡ Kœ ‰ WÁYEÏ2:R~ݼ[”g°²&#âËΓ2H ºk}ºóJ¬nÉlt=Ee;ÒµSKÏdÎ}l'Ü~Št~lHî,€&í‘@Œ0aÒôŒ‡x_68DWNKšî© ¬Þ«"l\(õâH^‘æ f#¯Å´D"Mé&Ú9¦Ø±ÁeÆø©Oƨ£ÁéÍЄgø¦±¿dØø`Ñ•¿7¼zRq*ÌÌž_zE}CÌÝìOZ!‹If£>"e.Œ6+÷B`fýnX¶O÷³âhMªRGUðéW¦]Þ¸ý·@ŸôÕ)ô)ÀŽŸ\Çxí#˜ØoÀ2­©E+§ÑiÙiómÄùlE€Þ?r}}Àžžï䑦èP²ÊüÒÔ=5F…?NÅà>>ž¯*‚;-XÌÂ4ƒÝoŽTefzKº*x.Hêñ§ÕÏn`µZ° CVØÊ¶÷gšp§fO:J¶d¹Ò¨é”ùÚ¨ ê×vò,9ÄqØõŒ… Åßµá}*Íž•ÊŒjÏÉ_ž/TÁbKŸ¤‘‘TôÞâ;Wj­)¶¯æ Ö•)=×(+0‘âxáy–DUš’ñÀüM<.µ9!-áïA­?”’ß“ Ðlë³|à…9R\iR¯\hÞ¡"ÞS˜§¹ê‹9þ{:û¼E@F¥ÏjµÕûs]«SUÌ¢Æá5² 3Y³ãsßÚFKå ¡L=Yt6‘KV}˜Œ!c«4bðc4=ßVä)–¤„ÌÈ»”ÂX½‰\ÜjµÞcaxtf3¼—6ŒJ–Õíœ\+÷~”{Vkˆ½u4ކìëƒØÍârMŽÓDz…8¶¥½yl¿=ÊÖ¥mÍü;¡p¬Ä„ËÌ|k¸3öÞ[ãã-exGÂ)q¹„Úî@ˆ€Ó æ„߈d\p®d9‹¸;ÍU¢’IÈ뎟4$¡e µz6 Q]]d0‰ÚpF˜.§–z‡2yÂôL“‡k+%ÃÀuªxÕ:Î ’m‰Í8f(!¹U¤¹hD¢·¶)"j<>x[î6¦ñ>EcÂví`'¢pšk0JônRdõ?Y.ÈÞsWãêo !Ôzs°Å­Z„†35XÒ9ѼÊ<úVC˜7ï)N}S7*[Üÿ0Š Š¿&ãˆ$•,çü²ôèèWWeH|7/Ÿfcš=67ÚŠÛ5 ©U™w’ÙŸÌ… ûX‰CÒÀw®Ìw8ÚKÝt7b±\Æì1ú×ãµÎs@h §GJ»ÓÃÒZÄi,¬Ó/¼ñ:ËNËŽ9›Æ|–ú2òþlILÅËCTÝLüš8­O &ªÎ÷õúØm¼#Ë×ôü~‰æ|Û”Á‚]u1ö’ßbïG>Ñ=íKXwˆùLnl¸oàØ¼¿x~ô–a"´…CÑ^#:¡ý*ÇÙç’qO‡Šþw´çwø?ؘotàèQçjuc‹Hz 2Ë΂,<˜îå²fÄ/u¤2ÅÅ¢bõ¬2‘OÚçXâp³¢ï±ÿz߯•žA¸‹\s£ŸÇîwM²±“ŸÝÁ:ñÜ^ZE‡QšZèï\ýÛ¾ÜZõå©E·w.†©ü„Œ+¥ëxbJÑ/Fã7y ñ5|!úýœ#F¢Æƒ €]ŠÒx©0ÝZ•ÙÅŠ®“Œý«´©W[ŸÃží_¥Îus[—é:³Ò_ð›™7ašÒï˜ËºF£'å âБ ÉýÛ·DýÿCÍ -¢žqJž×;8Bi ±:f,©N< _ý¿~`ŒrPæÍU_2y´:½hÙªü­]AþTrúÕ!ÎÚ ÓI“Iˆ3\Æ\7D¦å†|Ê=êÉy½#—éBiV`5ÖÅIg¸¥ˆ«‹–{õ¤©¤Ï®K­b!pKØ ÒõáVÒà$%éûÜŽHnõ'"@ïÖ¾Ë$Ó^àBø‚q\¿õ4:ÿ6À/g¢†;¤‚6oÆã&ÉN"aSâbûòŒI¶‰l!¬œßu²ÿD;H¸? ¹ÌÑžGr. ŽmÚ:³}rü‰OUR÷š3Â:UÂ!3A× Rid Ô¿%†U8‡ûái ö‹Z}l¦é…¤–?±ÂG~g&@ØK3Ð5ç¶W9^ô¯E^ó§•÷1Š7ïÅaö\æö~—.,¨ÛhTŸ¨*cÒ:Ðë\§Sö![&¹vj2ƒéÝÐã¤äcÚµ ‘-îŽËT¬•è ¯k«ƒ.$%5—ä >óº¤0R¬éæ)lIÊ]òs\ZóÖ^qmÉFÈóØ>š¢+=/—† Sü.3%»ž)²PxZžþð«ØlïÅÇχ&§6Wǯ—Õ"éïbp‘È @QP 7z¯‰ÀÕVÃXÔo' $£ÖÅjFât÷0±/!;Æk¯Þ,G…nÛw÷<´jòw•‰˜>]ÈHEãÏÖdé§'<ïäÜøkKavb~Èó‘©­1•Q^§®ñDq&©ln'¥f̬áC0a~^Þ”ÙÅoš!|ؘßïh„‹QÜùƒ‡o%kݽØï[3ámü˜‡Ô-H9à=ÿ@j"@ø’ûÉøAît‡ùº ×&þ Æ˜Ò‚è~ß®èŠjF]à5XgÐ×­x7NT6“„l{¹#>r súÙ?%ìyjF,FßãjÉ)Ô9×]–ˆeöd„‚DºÎÈ »îD¥ˆËÁ6Ð7b±¦˜ [ò¿š¼‘ññVe†[Þ´sòPºD‡Õ¯IŒ×m(8ÃA»Œ)ߪ»I^ãðü“©í/GšÌn;·™cÓÈ @*C|`ÃØ+=ß|Øv2Û¯IX — Ç9•1ûÑ;CŒÀÄzR•`õùbqñË‹7ôci=ħnýÚb.gÉ®kK[i)°x¢Ä°«ßM>/w1¦©éÞøˆø´Ùð"º¬Z•8C• ×ìâ%Ûâ\æÚ7A´ÀâZ1¿å’´ ^/_V.µÓŸŒ9÷Ce9Îbõ#H'Û"åódØ"%³ò@l›h'<ö‘=ǘ {$ȘD°wNð—üCdÛ3ô+%ÛfµoѰž^ .®ò†„¯ÃŒÈÃ}ÚÁs+IâBk=ʳhŠ*ß4Üi¹{†ìðˆlúBzðï;ÄoÌj ƒp @a¦kkbþĪP4² ÔuSìqôij}Ýy¾cÇž]WR[®$ÿ. dù0Bþ±>ìªX¿ÒØà³º ì¾#ûyHÒ iÿ!ëûœ¨ÍlÖüCçG¢‹Çà%eäÏõóGìt!T¸X—Äã+lÈW'çË…ËÕÃwÄà´MG™ØÐZ†¡ù†Ëlòl=IVoÀ4xÎ"?O¢‰=Í¥—ŸÎö{—:Nz·€M\ä½§üãÔ* Wd@ùŽÄ`´¼‘s©„»ßÑb(£áV)!A"‚rs(ÔŠÂ…YIf1³+SS‡³_É9Á®š-(çCÝj‘”ßX@=™>íÎä–Ú°–LÀ8œK¼Ý†ÚrŽp+sƒ*6cpÅ“³`Ü€¦ÀþS%4ºqy5*ià“pÖë¼ üõ›†|¸ÎÈ·ùU×ßí{^²Ë¸_5‹æfä]ó²)YÍïx2±?Ût™ð?ií^PÒ,b$M¬;aR}\w‚øÆåY&~‰gºðléëqßIÿE^°Cú˜8Dñº{2„¹æ(¼ÄIà9Hå‰Cò7Qî®ÑtS®ziP™ßNÊliÛó–ñ¤ó³“’yǃ—ja0- ˜îË =ç®êcD!OqÜÀð¢î ázÚÑnT {k‡ÃÚ³u$oƒíu †¸'k]ºü2cdDáå< .¡Ò{Wb +î– ™yÈ6­ úiBq”Š/º¸kív3Ò‡eÅAÌ;ÿyZÇPùêxûuK“K ÅCðq£è å"3¬)0esÓ£Ïßä{ΑáFLRš?—ÞAv͡Ʒ+È@,`º—paöRIÒ'ÉÔz…/y4<—A⤴¦@»`(¡Ê*ŒöÛjÞ‡Â\¿¬„EûC0ƒòõx…ž%m&ÚGÑ7Èâ…KÈ0cëlÜæµªX7< š­Ê#ä_yK`º–-L3YïOxDÊÄÙ¨ª¤·«¦âñg §–fDÉmg¤ÄÍÄ+;{Z{ìÏĹqÅÇ'N1ž öji„–+†-ëÿw—h„ô…T¿B'2:h—4%›Eôñ$«&sXÕ‚¸ˆ¦’#mrý;tEDñ{Gàž¤˜-„à•\뼑ØÔý—ÌË£bݩշ©ê`$„”Ó៩ê€ÿU±jS‘GëkIã £tn0˜ä-µÉÅtµžñR0w§Ôç˜;´E{ýŠÈÊïC<þ–Ì26É…Œ +¿µ÷ Ÿ¼§yöªB½—¡oº&5°ÓÖÌl¦’¯Àè$B–8.7ÖûýŸ*r–~/B ªJ”º-d×É•NéÞŸúàßý™ãƇK´›v¼¡^WSuÉ×E¹ ÅÉsÉB¹ UãSž‰&š¢/ˆaoIâ.ÿ+wà\AìáÖŠ ¤›˜i±õÀ“:ó©°[þÐ*Ó°ž7qèïìòpÃíx¤[KùXì2]ñ«ìZ*í™vÐ#+õÉ’…4ß0Nßq›d|°žçõþU<ˆµ2ê'¼á¥ +®þè-´©<’¶œ{÷8ˉ7¯Ð}—˜±I>¯€4/ò#\ºíº¡”¥²7¹pj'õ8eXí3lDgÓ¿ÛÇûËF@ƒ.×÷Þõ¯¥ïUEs¥±šë¿Hã¯ïç ÛZxhßõ®º£Ê_È·!‡P*ñ˜Á†zx¹ÿH „¾©‰Æ¨@Ñ7mžpS™eP$ŠÒ) ÒýÒƒ¹cÌ'{¢½&E)BÅ#DVø9SzÑÏJiªº ê^4!"W|Ôõ÷û¹Ãò.:¥ÝrÏQÝ=/Ã\aöä¬Îp„PR‹þ/Èu` É“kÚÓíl±Øl(eØP¶ó@¡èÎ5ܰ?š‰IDáJr4êâÉÓ’[4æœò ä;f~Å·|Üpß±´œY^(×ù4˺gg·Û½ËŒ1ôÁ³9ÇZ‹½k° »6ä—ë=ðàȉRß.¥?š‰-Ú{xF®Ç6æ)vül ÖHÎ7KôM§×tA„-­?± ¾Ëué9æ7ÄÐZ~ÔÇ" N¼kªɇ¼-åÊmćJ[Uê*muneÞð£5j*·:úµrW^¬›Âb5m QðÜ4ƒKUÜÛ¯—†[çÍ)0óœçAÂã—2*PUOV—¶òWH½Ï£AÜF¶šV¿‹¹÷/Œ-/g¯!Uª!À^JýÖq¨¿ú¼¤:q™\DqˆAB±}÷SRJ!7Æf6š‚zRŒl ¡Dp ™9DàS6 Lx‚ãÖÑ“ª`‚U÷?‚,ƒfz˜Óët³¶ƒ ¿¹#I¤ƒÌ5rë¦I±óë§©½Ê=‚‘f)°k._"½ ]Ùïï¶óÐŽx¦ø=%¼Ó¶Þ=»™õðêå4û§à?`EÌõêØ@PΤ È ç»p2ç¤H¡0Be•¯Â`Úˆ+<ºu]4?¤ä€8d©ÃÌ:Ê‹ÆÐ’GoýA]köÔ¤ô¹oMNT«æÿ «‰ÝnÒ×¥°”]k"|P1滸í,:6œ,H8ëÌ•âêˆ\éŸ;âkL¬$ÌØÖOtÁ…ÚÏ}™©×ˆ`Æ5£*Á¦U£I¡wóËgï©[~åÐ-½e ³F˜®n&€‚ Ñ6fš}xÜYÏSoÐmzí•“G{û5K L:á›6X_2ùFù~õè)HºþÇ?n4†ÇQc²ë ¹–;Õ ¶Ë€F=ëü"f ý…3ÏMv³Æñݺ¹lb*æ™§G L µéÿb²˜ðTN^ÿ;°G]O^Ù²ÃPXDbù¾Ðœ®¦£a§Ùסò @GÈ\mßá¶æ6SSr±x³oÞWùøãy©×: S›B?p} úÆÔ®\ î”*nÉ|+sœ+¶ýi$˜r E~Ñ,H“Šù*5 …!YAÚ7áõÁg\7ÅKG×Èû¢:®u››Ë „xé±£*SIÛ1´$jd+KbÐŒø @½'¹öÃ~M\vûÄÇXÏSÐ#SÇ íùÓ¤.Vd½”ÓðÞËrã-vØA%€óïàÛ»Üc"ÙÅgm@(æö’p([ŽÐí¬ªùŠ:Š"Y±ÀåqêR 5e2È¢+ =9Ê×8¡§Ë„“—Q†6¤‡VÔ€#ƒ)§ƒ(­ynQÖ³Ž3×qˆ¹D¹e¿Ç "òˆŠjÅ,2¿Êú³ârù¸R(uí;RlB .+xQyÑÂ"L¼Ã莩ô3›;ý^”Ä(è˜ê4VµÓ»YŸÃÇo°œn8ͨ§(5W}ò}¶1£íÓHnRœŒHc‚KøËŸlXN?Í(Wí@¹“è)Òù‚ß³×­Þœkç·N[ç\Ó8¢²ªÿ@ôëÉ `EýáÀíR ÄCç¶åÊ*²õÔŠ–•É•u35Tlî ×ÌüÐ eÊó\_ñw¬êE/ÒÒ!#à MC+°Üåì/Ô­•‰h‚A.Sœ# ~k:Ýëíx~D§‚Òs¨4}¥k4‘Æ[Èȱ]T¯ˆW6”«Ÿ‘¢CŸÅÄèÅû÷*Ùžé'EW†ÊÝ‹ç[.OÞN™aV§1^b!&„³OÉ}ž7h—GÌNêþ'xNﮓv=°††ÕË7¸$±#UPÁDpj-8*7€A@è™?…µ9|˜Û PT­ŽB¤½ò-CÞMt—GW¥`åÄ+N±t¢ˆã¯7ûO#`i+èåcOiëùPeˆ‹G÷ë|»ºln·Ÿ…f»ßY>ø *™è€¼jýÈwÈ•Ö<+Ò÷Y>ý[*™A0âíÊoÍã)qÌ‹&mRŸè¢8Qº©KûqÍ•eòCØ„ï@´p8W&ˆ?hìð{·'Xën/{ ?fÔš} Œ3‰áWßrh™ê-3z´)]ñ[R3x>wÙ5nÅ·‡¶-E͉hÙâo±O ná@iN¤17î­¼¶B5sh øÃ8˜«Y’ê»ÂXш…OÀnùc aI(Zòä&íÄÑEÙ{j×YÏçàþ$‚+;>D=ØBt=ô‹ÈÜÿééyäh'3ÈëÎå^¦&¡ã ¹¸1ª|/ó}¾^GÞì[ëˤü%Wõ($GíÉÍ~mE’ 霖êÙª£-7Ý 9š]þ{ýªç÷ ¯+ºH¸)§òþ-ÌÜïÍ>ÛzCÅ™l¹ò=dw8‡T¾Mñ†b,Ÿ"æqzéR³Öô`õ6á÷´D°rGd¢×ŽàU¦tñdß§±zôƒê²·r¶úS‘3…‘kdõ®…ÔrU4bÁ–äªjáÎŒ4áxW·Í*ïTt+uÓ›' ¶+ÞÁõ¥îPVuýVÃt/vo¨V{ÍMÆ—ì†3V,A°`µRõ2íj,ŸŒ„eú1öéŽâ.ÓËå í¢Ö/6Nå—P÷ºþ¥FçæàøfÂ%eNuÃÑyqSByà°MGÔ¼”ŽU‘2’˜BðÛí™)U>9ÿx¾“%–sr›Ä÷ _ŒùÖzË ™BÁíVtüºûÍXoÏÈÚ Ù×¶/¼©1÷ž¿5æ2fl#IÈm¥§yÏsa=Kg~®\‚ ½Ëñö–¼Û¡N )Y°Qñ2}‚„DÅVÕ<™g*®X ²U9Á{œÏ­x못+æš±!KœZFè²±RN %¬ï ‹iÞs‘që=žNÜ IÅ;Óê{‰7çÒìÝN)Õ÷•—­´ä3E\%ú”Ï÷ч7ŽXë1 žœÖŒ!2”BÌb¿5â;€z×…Þù«§@öîÍ^FûÇ6"¶>KKõ{ö†é;æ75¼Ôû.'3?•šÜšÙã-‡`H§õÚÔ&AÉ‹~jŸ¿]W|×½ùÂÁúÇ ZÅ!„õ\ÞIÕSŒõôfÇšëNu”aͪ/^ŽõJ@[CHÙ¨ƒU8ŽL‡%~Ò¦ b¿"L6î˜zNòªM0Gàj5Sï dnzÈødò‹Â®õb@#ÑŽ¶ 2Ä£qZò±Ì«¬[P„‰åQ‹$&ÙM’%w93_¡˜qÑDŽÜ¥c$Ý‚:}Ñ?_ÙëÖ>-Q³u3FÊ`¦Ü?N«°M™e\"èUHûzåJ/u8¸•ýÚŽzmĹr—L&js*ïUÚ"NŸãØÈO!—L?¨]4L[8cX c¼øîC&³ÔÝÕŸwÎÏWSÏ3~çÁˆºXÆ›­(Lyž (ß]ìüγ˜­S¨•¼87ïÁ+r¾R1溑ÅoO?Õ3g»(#óWƒ/ÕkoN4_ѽÙXr^°¸ — RÔ_TroÔnÎ@ž^ãBG÷búÛu6VòªœåíóØ®îÃØ¬š>>®Ý‡Jöùˆ¶ôõßœ»p–uÉáM½"ÊeýÍ5â`êoÄžðx¾Û¿äؼª.O±õ•y›Ï„΀nÒ`*|‚óŠ!}¥¶ˆáœ%¡7.qø$­SjÞ¨ãoŽ—ò̹Çdxãbyižøe+Tþ‡~®röÍ 7-z3j\M]šj‘ ­kÝþÕˆã(,‰[4Wœ£/l®ï„,¥ÆooG·0èç¶°†gbÎÁFËâšIîV,CLoÝOÛÚd_#FnMâ`§dÊ[×L(«ú]¤¦kà;TÙÍ)ä6/™\#ǘÎW¶\Ä|'%múl#3CU4¥LWzÓj1n =VÔât[èØE¥ioV˜Æ¯[[óth ­wÞFÁÞƒ%ýØ)ÈÓ/ÐÉÙgè!boAà–ÔQæÂYõvˆ(¶ûñ°™ÜQ± /ÄÅwØðÓ;>ºˆw}ÕÅþ"ÒÊæÑ÷[~î~—Å#UãyçíÓÿ£2Y Ì2§”äÕ/¶ŒRÕHv²Å”Pž³Åk^òäµ*d¨Ð&uk¬×Åzsy éû_éÚÏ^ÅÏ¢ŒÑCº¸4n©NìêR3€ág@ `’çc™Tþ®©VwûÝã]Ã⒊—x¶Ûá@T1Æ–aÇeHW4C¸Š$¹.5Ê >\Z¢ÂÄöJy©ãŒë멃ƒ™>«¯ |?0äo¤åïü«Ö{8ÈPHM•Ô9ÄSW¦ûÀØk'tÖõs>%˜OŒsÉ¥Ï00bœÚÒ€Iýø•Ђ0ÕHb„³’‘œ7›>ú+èƒßKéRzŒž¼ÏT Æ’~ØŠâÎ×Û"&¾ôOÄ9zï”+ïøË¤YkÅûvEÑe¥à ò‚ö‘]ÙÉ+GÀ!ñ¨ï…Õ÷¹Æß~Oq|Ò=ÜtY$~ªuaÙ'¡-ºéY¼nq ƒ“E…†ת{Ÿ8èÊ8gÙ° ²º\8·1Œðh…6±ÀizX£€¢h‚Ÿ‰™ÛªÿFuuѶq[\@õ\ðÄ#€¤'ÌŠsVÿE¨Çmï×ÇL¶‘jÙÅ ÏäôÑoÏAV¡Y–í@E|(¨eùò,lŒ -F˜îi±ê'<+Q 6p3*1Ö8XüJtÖùÇ0]‘õȈ Ë §|騥³R…+[Ó†¯Š¾“ ӟ€JzÛ®ƒ…ד°W;RRÿW»á‘"Šæía€Õ³µãÜÄ[@œÜgÌ©¥Èã¡[!™1YÔ˜c¹ËäƒzãþmžF°»D㥊6èÓeVšlë—n!º7 ›D‚Øf*l¢ŽÕi2Ý_¶! þ=•ë[׿-O¹ŸWÄaÑo°W“Q²'tþª »€Ë¸N&Í[¥Êúœ¤(@”ØÌ#™CÏZ‹t³eüï²Á>sÍ:2DLÔ 2}Ý8- üôö%kUn‘î¢ÍÓÜŠ·ˆÝ ä8ä3d$Iä«5òÏ©XÅW*(ó¿¨SºS¯—$ÂyG$®¨¬Õïó˜ÚPUAÍ]zÇéÈë‹êŸÐU¾Éœû׿kñzÚZôVé5<ÉȦkOïT?J|+6"׿ÔCt!ÙÁúqfli¥¹ÌkºeáƒãõlOîn¡åƒ©*,·)¶áÊŒ˜@½müåô(ÖzÔÑ;ÅåcªDT7q@jЈƬ5îúŽ£)äÇ¿ú‡kÇ{ê kt yî$œ:nòb‹)iZªeA Œ~“Oš»utAíïC°C‘ŽÌÛ=þzÖc©‘~Óþ&²&ÿ,ÀÊ…Š¦íD/òB¤6©5FÍôMý´ÕN. SØ'¢a*§¯Køü:F¤êNHcH›^K“à—Ìb2ÝVŸ¸xå`ð=¡Á¢O&`(ÏW›e^NU6k'Õ' W%y.wNåÕns`‚™á‘‘ÆÞaë¼å ØýÎòòK6p±ƒ,>û 9ÝMç5f;kÄÿÀUˆÈ—zèñN£mUzü‹ýµ¼e¡†šB‹ÅD„p$>|}Ö®,3Ñ™Þv‹¼Æ¶VàûéOå!Î!1ñÉÛÅ=›Â9dïâv…ÿI¬w’ÈUhµLš‡bÎ)À€ªÒZ}p~a{P¿¼í~K¾þŸO6©¸{\BE·Ív-‰¤G/ßÌ.ø|ÓSVŽô´£Yä–C’µ²Å{q[µ¤ðTh™ VGÖèä…µ`Än…†Ô94í#¹ä¶V5`d”= €`t…BieÄâꮓ*]ĹÓì£Ký_Ö²·…ç{÷¸½Í‰­¶ÿ ¦©§]¯KÐ\Ÿl¢šùâŽZ_D¦Ì×zãØÚx³åÿkz/¸ !¨m‡b8Þ†ãhØçˆbæ¨:j.í`<Œðí«üüfeïù>Ñ~ÏÒkó’x¥ L3`ðÏIT}Ê(wE·TÓ3 ‰1t ^×§h4”Ñ7£D’+ìèñ<ùààiadzmiŠ™N°b]PǬkV”ÖiÉ)ÞÔGpÀëÛbÅeôŽ(‘‡*r€{ºú²MáûÄÛxÝz9óêê=À´Ô¥hE¾IO"Ô]ƒø_ßNŽ`À|,²~FlÙ v•I4¡q˜°€p|ÙÒhØÄH‰]뤼ìF!¡£Å ÂÖîlW×ÿ#žÿ(òLèBQ™;ºM+d[•“¼æ`pNó$þŠÜ•rE·Ñq³ªª¹+ï#™¯gÒa•;•9# ±¿«ÇÅÝjá„ÆæfõϹ†œ û“½L7ä‚èŽä‡ñéÕ¼š‚Šëv–÷(€vß sp Ba%p²Ìwwå³]º{?оÑQõ’h²kÛâΖ®TI×¢D—Já¥Éåñ‡Òc¹švÕO…&ð¯ÍñT4¥ {g¸‡tV Ÿ›ŠjÅ=è#\DP;Ýùëf/)¢AüÙ6ndÕ©ƒu ¦T ¬ñPÑ¢ÏGT¨Qw¬–¬™‘}su§­ÆlŠõ7W¯Wâ)Ödß:ˆ$Kªd©È_Ê *%Þ~æ`ÒdÕË)fÖ)V)A›‘÷°Û¡=œñ}+Ü v¬0äØlNÈ'_‘zÖ¢Žì*’lsëÍÅaõŽñɇt!,:(w\ â›WwCq,m¹u¦Ò-|jÛ¾Â<Õ±ØÚ¢AÅúþˆC:ä ªg<*g|(ãmäX~2¯M¶û^5hýºg¾€*i •<Ñþö&àý˜iÃ|¯¸Â,í ¦³h$bHà¶m²–é°Fm"v>‰7œ¸ýÒž(¤äçý0_ûÍX}Œ)qåhD*±·43 (Ò7wpÓ wØírìñJÉvΘÿmVÙí³¸@Wõgs ­oL¤²!óXºKa„'â{+0BõɾˆkoºŸ%…‘ô,ÙÂa¥ØäŒS!+sßx~?òäR”L¨ÕJ,zûåš6Q¦çÂòʦ˜"â'“Lôkƒê“æZ!ñ\6Þþ¯‹ÕŠÜ÷k× vMiµdܱÊí-¥²2?3öó|îí½õ¹ß˘Ùé/`Oæ)ž²rJÚúžÐ5‰ÁÀÇ2¡¯‘ÓÆެvjºIù;Ó…²™ôô%ÜRg€ô´¹ ÝääÊ|¦ãûI8úmcTmßÏA+3ªzÕ¥LZø»P[JÝ® S&€ ˜£…#²˜À†Foþ_ã#~m=zçòð4ïÉ··%VÐ@˜Âü·B9y$ø@äÑKÓJ9bƒÂDV<¢Ä_ÓðKÓ ±¬ˆ'Ùº&XË_ÙÆØc‚¨ZÐòñ4/p‘¶Ø‘¶Æµ„K-Ý=—‘¥ÍYœµgéèRªÎ¹}`¼Ë_oľ6 Aìëã%¿xßÎ IƒÇ¬¤*™—Ö¶˜Ìôî Õâ0\ÑuçÒ‡/¯Üy Öå[·zís 4µà ²qi0¶‡2T K»qI[&&êµíÀd‡ç%S¡ÔŸÀ€vê†o¡Wip¬„•©ž~é<ý‹XNJN£š9ºúiüyUŸësÔF.ó~SŽ/™Ž6‰¤p[p%a&e­è¿-Láü%ê‹b¹]³ÂàDÛ8p¬‡åyàìÒåAAã‡cÓ‹\Ìö¨¥í¦wWÓ1¹U`wÁø….àMͱ“yÑnu/ŒŸÿ(¡|uª­€º! Rªøóú÷¤R)ÚϹÿ=üÜ £¡ò?ê‡öâW{® ¸…¢l¢eð§ÛÕKŠpmãwžQê€+ŸañTn 3ËÄeíc$QÚ¼¾÷ÖÞloŒ¿¤'Tk†Öª:R¡r×ÿ]T¸,[ÚÜ”?ѧ ’)n-Ã/Ká{kI‹Ð•S~¿tçuL·et i±Ë9 õÒ«ˆ¯Ní]Ö¤pðÉÌê¾K5zÁR;/Åcƒ=J¼xÆLgù/…,ã/y^#ƒWä™b9IÊù&CûØä/ÿóà °ãq’ Í6Á|Ò5¾:ÃÖÒK\¤ßÚkO”úhv“)@ߤðª Ñüh™NÀ ”J5j±è3¦–€à€â¶] ºöB¹…³J÷Üa P:Ð4¯I¸ŽKÁaN”ö1dVám”˜,rþú¢¯– ¡“õÜ~ŠoIÑrØúd"‰.PÙ­¿›¤ßò‘àÁç®õQ˜Üê¦ù×ôŠð4ù†‚IzÕúÊý:M÷I±Ò4¨(6S­%ù,|ÚžÀD‹s_‹Bi_²‡û@(Qg×·8·æ«(u‘ÉC\ñr[¥•KJpßQ[SIJQpV‹= ÞžB™…(]îã­ÕDAs:B}ĵ½¼™+V¥W4©U¨b4îç1ߨ9/[Ô¥ŠÒˆÌ¨D­º²qWbD¾ý÷B”.¹eâ°K†ðGäï§lbåÿo7Ê8f>7 æÎÑ›ç£- Љ….ÜůìtŸ*3UëÄÔûcÄ… RŠ5¼²G<mÕ@O6ßâk÷* Èu_e+#Ä#¢Í9ö.ö‚§ê5HQ¸ §ñ¹¨?jS³DõÂ$Õœ±Çjðþèüúqº±Jrj÷¼á5!ôÚ’Í®ÆX[=Aãtol3ê®W™*î£Å3f¿à†ÝëϲÜ-œœÍo|¢÷kùôV'I”ߊÒ<* øÃT8 2²-p°•zjë|榧ªÄE6\ñ¿cÔ1;ÐhžÇ✯U§ lÔ9óƒ£ÂJ\Gñ•¥ÇïÍ«¸ÒŒÄ4ØBŸýºø€àý¤/FŒ: 9¸çùþ?ðš9¿.ñT½ãÑ—q‡"µ–! é¾g ßËu“ªQO…1Wÿlð§-’é-‹t@Ç«I á~òŠÄßðŽ.YÇÂìožÚÕžÿx#Ó:ØKÓåjHü?DÓôõEPD— âˆ`øÊS¬ö6¹ÿ$Mê´³-LŠBU ²ÛJÃìÅRê‰Â,BE Ñ]¬æÖrœn᫺ûǃŸÅæFÌ2U@8ÙtÊ•.ƒBÀ=²Ðj|/HÉF"]´×aºŽYû‚ŽC“Ÿ¿W÷(òùçJ ¤&.™;Y“ ì†Ùn®¿¤¬%ïcšKÉ. ̘qbîõÇ„©WRÂŒ‚eÜK„íÞ;VU×§È¥pHôê#’C&œ±æð%x7+uîPIrõ¢š-§OT™¸û%”ïîiv½ù©_UãÛóïùIe‚IŠ¿üðÉç&*ðæK‡nÛXû…ܶâ„q<ž póªA3^ÁVP‡4*جܥï»Î:B3÷¼/xÐÒ$2Í™@šÄnáãsgwÑosàà»»¹W4,ò'ñ]#{õ[¼ã¡ø€Ðã„>àoóðƒÔ>´ã°J 5dù¯Ê›Ñõ…‹QÓ:¼‹4gZކBÓ,ÛT–°C÷ÝœþãybÕ°€âœF §ñ-ع/ï} ý§>’±W–^cÄ‘¡l|ˈLQ³æ¾ ÝóµÆËcÎqØÚáåµP(u€9»á$ÔëE¬ðõ?øPÖ6=H/þMÅx›ppAàr:x¦„~ç@Çœšþ¶ƒµê¼ïT]•ÉyhNG¨¬ì¨œx&Ë [qiýJ_@m Ÿ¯}QÅqi­³8¤ì¶Ù»Zœ‚óœØîv‚õõ?Ÿ³¦`ðDäwÈžâ’BV$¯×Íîé ’Þ:±îƒkõBç$Î:aþ1Mð:³½†é¶'\_  .™Ì‰ïX‡ ×šÍиp9˜°]@@›%H\"SA°û‡ˆº<ß9Ž‹±ÖãjÈX¶+zY"'!I¸,>õîßÐZuÀ– ¤¢\\•H³+€-ƃ¸¾HÎÒ;¦è¢ù„ ¾Â™ÈY¯:«B»tïNÔä'Æ3ÓD¡O%h4ðÃÍ\)|q×XÔöŸ•ôÒ%tZÞͦï½Ù•c!\žFO™ä Ü|h‹S(Ü ”5M™È]w¹ï‚_°–>lŽ?/¼aÆ]s–}²Ù]º¬i*0‡EA‚g»³ƒlgG\10LåI»(説í¬a—³²t b÷ò=¾<Ðø4U€)¬ñ3ÞBÌ¥½|_Oöyij:.\‡U!†üØi½¬>fÚR:tû$«ùe³Íß§u„Öˆz/ȧ2dkF+ƒ'^${[5€¼‹œø'¢·7‘Y¾Ô°ÿ`ùo¯Ä…ee×½¤tkóS§sܺV­ w¡4jË›õÖ2·JˈHÕŸ‚œ6‰Ð3Á±K¶,H2ˇ­UWÈ ´3f‹ùÌñ¶sI©* \Ûm€zYÄÿ¤ªÍ"‡»¤{Ü¿¨%­2‹ÕìõœÑ|k*§ì{G|AF«±µT 9cW‡T»Ü¯ð'1²·øAbÏ íþ´ÛLÆ”«çOá3Œä{ca+™w²n2îÀªÚŠ®¢d¬.ÔF)Yoùoäpcv(â– Ë÷”ÿ&Ê“2×ÀA?f($Òýð^o‘KX5̬ø|BTªÓ2±Ö;©±%Ýö ²˜Éçð»<}t|:úH½‚,Õ‹4Ȭ³lÛÏ.jÔ-.ÌÏχfÃÇKŸÓxFÍ£ÏXº-+;vU*<¯×€Zˆð8 TO„SN£÷+>êÀœ2M8í&–S@çý¨™jLd2€%îòh€fK ±Ö»¤K@üK‚y¿¬ðUÈÏÈ_59ä. Ù‘&äÕÿ/*ª•ÃR¨¡XuBS5^SDâ-Ç+{GjÌ#±“бüÍ âì}fññDîZ‘ÆådA¾–7- W$S¡ÈÈ…«hªµºr,áømŽÿBé×yð~6•8zmâY9¡‰Æ^Ö¡ÇÊZ0 üû¯V ‘´˜åK7’ÁOËz±Ýg]Œ± “sdăœõ1c!h"ú÷´—«¹ÎA©jÔøü‡Ïx“~Ncœ“³›VŒP ~þýòe|­Vàú†C}ü—ƒ÷àж¥P™aã¡"]§Ä‡IªÏÈ­>”š&ÝŸ“v#@ëãïÉMðiT/ $­‰IKäžk\ºh0e~Ü´æ,ôÚ)ˆ+mr°S|hl"ý\@Û¸s!ï²flå´1ÚÆiàbŠYÎòCÑ:«€\%wö3e$ ûvo ­ÔiÆÏ ?˜ûº;ÛíÞh(gò?ÜúÓ[Q4»;ý_ºõl8{S3œŠÒ³+®Bdpa^, Öz`oêNä7`¿by‡–Õ!¬‚³U€SǶàù½äF `ÈÜ'¶O~Q*ö«÷ 1÷§¦ ÏPþlÛ"XV¸F¶5Sh'>?†G”÷„‡ê‡±W;É2ë`yÕñ€J <`ɤZ—”FÎJµ>6 M±ˆ°ÿhø^nÚÞ] /*›Ž¶y­Á{ŒvŠx×gŒ2H9ãcÄ$¤>Tú#*lÿ{>0€f<Ð)ãCÅr†('õ»BÁòUíåôsáMÕ)k h·@ï” òMlø;f+)`EuéĈ‡¢–ß„,!Á¯/$³ áÛþ–(El¡wcÆ Z¾OË<ªÁLßüûK‘,ëR·>´‰€g\2%¾ŸG[†ë 'ZÑ/Èÿ)Xûµ+y¦Ù°õšP…¸ *£ßÒG^Õ–&›‚Ñî«ÿb1 ’XwÜ\mÕh ¥Ã ϧäKFãfgâÇG¡E MZÍÝi«wÙ³†ûA~ûj8t|ˆ§g[Ñ\!ã2-bÞéŽ×Å^µèÍë4E²¯é`´scã8ÅËÕ°‰Ü·ðô#ÐW~£{oU¼¥Äý1®³1vlý†Ù±ÄS‚[ Š[pÞÎ~·Ö„Øj÷R2´ÇwÆqÍç¨Áš)ÿC$ŠwÞ쨥€ýfÁÎYŽ,¶Ž2§Ê±ÿA(p½m~öwJPÈ*wu¿.orYíö&‹õR†{»ÌFöX®@¿ôxRÄ$ŽŠÙ‰ [W#Þ’›ý«c™u©ø—ÐÖÿ{r.vtAɵ³¼|r>êqñnåÊç0X_°dˆYW˜$…Ê®“Ü>Çã}Ÿ¹H9ÂM¥<áª*ØL…ÕÁÙ(é÷…‹4;5`{fê×Ò11›ÙÄ®~̶~â8´©·õŒcÐr†XJ}Û_˜Gu&>êܘÁp"‡F¨é;Þr®!6je~)Ù´bµ¤®¨!àùãËÃÎç«6º£RŒË¦×ÅlÿÀäÉÁz£'V*šøû(Xà@¿̲XhYöĆï<]Á kŠ‹3¤—–Fpâ$±Á=àA“ôhÊè:~œŠ¾×<}/xç;$[ûóÁuLÁºeHÌË ¥¶¬=a3W,Ð'–ôíˆJ(.«Æœ¢·Êã'ÝÅ@¼ÅûóS޾¦yƒªÌBR1"hœU[–¯îW]ì) |yßß‘%ƒÒl HSÅÆ1ø…cu#H ­Ë’E”)7æ0L‹1lº³ßß# Ry=_x_<Óº0 0Mðóéä¤OÑ@ï^%j°ÆbªðŸjŒ£S¹g3“)Y öç+á\{¥C^›PÑBpÛæ¥%^¡A­ï…´ –;‡›ð;M!3%¯¹öjHzF"ͲdîÐPßhCãÆH/-¸.ï`#Š¿¾˜L*M]²ô£ ê*½~ˆ…õo묜D. ¹VMJ$&r[HAp›:(˜É¬àãMgxÝ—(ŽÕF_çíæð<žÔ_p³{“¿Xˆ– B7p•‰@­ô^2‡ôâX)B{1æ,Ó‡§o™Z_R®t.¶ÄQ>“°ÓTGmÏ{ «ÇèõÐÀÇ W;Â;—Âñ^˜Ÿ@ûÇi`± ´ î G=¦è@ã¬íQk]WÞémcù ñź*woñ…cöL°¯.ƒút‘Ò~×í eX¹Á#½ØÓ3uò¹QƒLUÉQ3Ln>@yi¤•г˜ò‹ª5 =•¶OkK|ú×óÍi5‚Tû¤êVŒ)í‰áD›ÑS1 ¢ÙlOû6ða~¤¸Âº¡VÁmü½ô“q¼™õiØGkP4%@cÄZVzFk´áu#â iw7Ú»íEtCt–ÿÑ ä0O ÃÉ&qѦé¨{Ÿ5¢‰ÈÕU§Z-&²’5¹åhcaiÚºÎî¹)އ—íNÉŠ~Ç}à Wı’Å%|uŸÝ6°YæËHA+,—œÕŠžHÃàæ~©õ—¨šÅ8®@úT›fOsãŸq÷´wU…5º°«Æ¹Ð—šyzŠ$<áÖ×ÀÑ%|D$Dðe{ÃØî¸¸ó, ÁØìòöéT®&;ž®‰pÄ=–bù¹9¼Þ …ûœ!Y=>/´B.µ¾ ^ÚwVáv b˜áÅ>U!®Ž3Ô 3˜ Î áQºÔÜárþúÝZéÎJ¬U» m øâOPðÛˆEÏØöÌrÕuƬfÁM®QÕV¤„¼$ÎzC*„òî–æMøŸì§‘˜TI‹häŠDK´ûÖK/Šã„kã. Ž‘5ŒÓIºß© ’Nr!mHÖêúö%²ë/•Úí^Fí÷FfÿfŠb-݃#“ÅâàI"]pOŸÛnQAãaºyÛ P‚åžÊ²ó?mS>ôšBá˜ÿE¥cÑB'Íðr»·çe™LüsÊÔ˜wñd Ûnä†ÐE9úB–™ºEÞ¯ïˆû"¡@T0ÈÓV9ìØ±¶µ'}͟﫽šå®žC‡õžšØ^Czj¬€ê£¶3À*úŸ‚Žž¢U;ð»í.ËQ GY'æ{äùÇ*8 *ßÔjìøƒ·6´ný.˜§g6˜Ä» ·Þ wNC˜Ï4¸•ÌÐæ—5¦4D}Am3ßøEvÏÇ(`§ìwŒÊ~Hß®jh_ÈGzÚSXÔ€„9«ø 6"xY@÷Ù8€L]úT8°q†¼¾¦1ÎÆÛrfkP@¸µSI¿ì«F°uy@o•ž¨’Åféôùp•AÂ^%Nè0ôˆ8¯uîqiU6å«Dzõðµqv¾§fŸyyˆ£ŠWQ=A¿Q=EóÙe6ÿ6Î{ÜÅ馣rgczî”#×â†Üèì„a|ëõ^^ã¹O{âŸæž³>R㜼M bÜ:Ý“^ù•ôõríhën IX.jºë«õ!BÀ>€éÞ mûyßá°ÔD?¼Ð„«PD÷*ûS˜Ò±! s\IIßÏ´ÑAŽEÈVžÚ¡LV~t¿LÆ FÞ-£Ãä“.ø×L‹hóS´B±ì ‘þ±ml¨óêð•9$ب D]ÏÈΑdµƒ­y¢|éL>’›ÑKó¯:wní®ƒu0@Oêä"…GûµT‡®ÛXóœa^JIÎïžR/¨ÕÒê¶J›`M Ê>ÇI ÿ<ƇžÄ J6\~'ʧÐ(–M†)Š@QJßÔkË=lQ$¨¯ì÷àç'¶xl–›÷CѦµû­.MI"8Ê.0zÃEœaF \?Ù%“:œØDwi—#k06ûªÊ}7}Ãé³ñ"™fL“úÏá3Wq°%¥ÔËœÒ/ä¢Ùëgƒª2¬˜Sê?{ ´¢¸Ò†9JÞô®Å, .ÊÞèËFh^BcÂ.g¶É,¯"€å…Iü‡ˆCXÏLÂ;Áv[x¯ É–¢ÈÚsŸàZ“]îM“¢Œ1¿ß⎅À‚vT/Z›–õ¥´b+ëãaÁÚ.ÂÔ}ÐU´¹&²Ø ¢'kÍCˆ¨œŸ"x‚-‰¾›6ïë‡8Ú‰dÉ“øDŒ-夥_µ+=x|7ä ¯È„‚.Œ„ˆ Ó¯TH³ìk¸ydž[y­ác¶´…‹â0ŽBÁä‰àVè’ÇÜp) f²—E'¨\ÀJ+×-þ]<EnÛ½0ŒòÏǃ¨ñàB!J‹uœ©,.ÀIÛÍÚ¼FñR¿‘æÚo¸¢_œ§î±:百]wÊÔUŠ»€®¬Ô¹›©Qt7^åZ Œ}Wqp³bÜËæ[³ I܉Ï=%_íÚîAä/‹ äl2ƒœž1æXNUkš*adlÿ-xþBü¹°ß­ÆXe~3úÄZŸµÍ¡þ‡ºÄA€…Øö@‚8šguš¥…?ïþÔ°ðK‡­Š¶ÀìŽÈ[œ²‰8ýî\ÄÍÉ-{2 í¾í’^* VËoü­±>üÇ*‹3 f¼Ÿ{'"jücÆ$`W‡€‡Þo©f A‘C÷)°tɳ( ÿkB\òþ§©¶ ‰1Æy<Á šh=Õ@½Ú>¡BáSß±y še·é% ƒ8qc°T¹ðC3Æy>‘çì>ú 0 ¼Âï!õ¥»8i­7Šú Ù'0ēҖ>„”/›—%‘ ,³™ r6eCæM]Â"Ÿ­ÓÇ»l|]‡Î™…WÊùt§õN¦Ô(ã&ìŸGˆ)ÈnïÁOoÇ(ìîu3ò1òšÕ?Î=xìåö‘Ñ1HKÙ‰¾W«*küäý9áZ#Z¨P4_ÇpQÏ;¨ÉðŸ­ç½GçièxêóÄá06¹›ü8›¥U³_ÅxÅË]±SŒab-â©äN÷U$L=BÔžXèï·~ÈiM½< Sg[A±h¬¿à*44ZkêS'2_…×$Ë2$µÜŠÆFÞòä!t¼5ªä¡f«B&ãtlNÜzôrÐH݌᯴ —?Ð|³¢ñ 2ÊaÉ¥È4)rꊢW÷w‚uö‡ë¬†›¡[u"Ô4ØWy}/Ï¥¨±)€ËBœ“Òµt¿DIÀdÁEúëàf-D‹ý%öi}A×ñUÔuGY}ŠC\+ßÏ: âÛ´eÁ !¤“GN,‡"TÇJ¼®•˹nŒphóMEÙôÃ.r†‰Å˜ÍÉÓn &t=Ô…ŽÈ;í}AHž¾p$±~kS ÅÀ*¡šžæ!)›•óaþDÁ*à28øÑø%G’Ž›eÞ„¶Ù4*u”îòÆ0X¨hI\TY\Ê;^mÉ`Ü–—MFþð }}|Ì ±™o)_E­œ9U¦ÚvÎäîï[xï•?@ífæ&-¥Î0EŠÄŠŠ‚\ƒÇ ?o8òö—|xK€ÂÇVCËñž7sY(Ù"ïnŒpWgK”¾F“ n§¿}ý¦ƒ!ÇÁcŒUjªAOŸ¨4–V|>=ÝÐxãÆ%/¶{FÀçe—êI¤ï3g›o eh)§“4 ­/@I…ÁͦƖÄ2¡a?&œd®¹7.1}[Áß©#‹xºU'„ÅŒÔ*Îé8¢™rc‚J!dÎ䲂Ðâß5=ÓDsôæíwä·AÕpó[!d}~×Åó¡0ͦ¨w RÏI’—Óß* RÈN\>4ËÙ(âoñ¶’ÅåtõµHú$º¢š"ŸljrŽBZZ €£æÁÆ:¿cÓfbθûáéù€Ÿ„ÞÀvЉÁ0à­Ò0æe+þm·ïÏ7{ÒoU’ì´e_D®÷sÍל,<¹ç¸ 9ò‚³—D7‹Áe?Òä³/*Ã(û-îࣚ§O^ÏŽÖß¼›ËAP‘[ j“žµÔ_ÒÓÌl`zeyýÎ0‚•Ç™í¡‹JâqÓ¯È0ÊL Ç‚,ªj  W¾qWa¸xù5K"J-“9™n­MAŸ±¼ìâÉÒµ½Œˆ‘õÛЉóA_‰ìrÞùPÔj¶ ¿8–:@ .bÅQ¯ú­Þ_l…Ι*C1(ÿ,Kª·•ª±Õ±(weåÃîòWF¼Øø÷o4{ƒ/ˆœý‘/4¹]Š4"õË€Ù]¤pÇ^ ÜnòEQ†Žÿa°|X×"O4˯=¿ràÆáÄÌ!*æ!óßÔžØÏ  =ÅæA’y묓 ¶ÖÎülÍÌä.&–êñŽÜ5ÑS:ÑÕèWæºÐgpÄvæm×\P”ÎÛ¾yyÇ8ò¢C­xÔv”z0Xè'ß—¥‡Âà4+¢F;¢r³ŠmæöÕó)p8$Øe ` ªìyïedª!A“â¸üŸK(Û$ÌGHG4iÔyôqÆa\pçô ®¿Àì*.Œr}T¤ó×ï¹x”‚±~Ÿå&mã¿3=Æ!‡^IÙ.ÞðÊ8d«v2Ý‚½Øe–Ñé_ŸÜíˆÄ-¾¥AüftŒîåÂoêÀ$ù‰´H­Y…;/¦¶¼·9œ.p«ôfX«[Ù×Ã+ΗL-Q™xçÆÉ5ºlùW‡ ‘¿N–éŒËÓÆÆ^ÒÄ9”ŠRÊBˆ¾bP¡8[òK—,b„ȱó×1'Ežþ×”˜ì…Ñ#U=7iNÞbyòly%4Q:#øº¤¹~QñeØgì)Ô3¥jø$hTRªé°Ì«9ñžç}Æ$Óà¬çBºÛÁ™„º¬õRëI]·ØáCñçVPapyÞas°`Ñ ©ÓõÿIW~Ö¡¡È³Ö¨ø>™ˆš¾‡ÔŒiDÖ¸Ô!]H„…‘&ê-ªã¤¼uöº$hŸ6šƒpɘ|ÊCF%‰å„úbœ‚06ü¥/¸÷~þW‹ª€tÅÁPÛ¬UI¿ÔÇ8ö3Fyº®'‡âVÎÈŽ]äzŒRðLûRctÈZh|ùÝrïN#³äßé~]…6«!|c2ôUŠú¨³i´è>UiÁ-ï‚©{¹Oa|†°9ë®Æ¥DôÿV/˜çcÉ%å7›¹¦îžxON?ÌÌš¡¼ÐÑsº©yÖVÈÜZÝ35¦ðh…ˆøÖɉ9Â%(›X]g -|ý䶉€ð‚Y“펷q’þDóÉo y)öH FöŒæ*r3_âk£¶M‹Øç@¹Cƒð¬&ü©=Íú¼w/ÂahgêvÈÌ QT{t°Þµ‚HýkþTVô{ë»Qºgd ¶tÏU0‚uþù<ÙÃI¶/_V¤¬Ü.ÊO¦hy)¸ÐB&t|½«²Q XHò8G—5¹Àúc Ydlþ_¡ âڥꎱҬ:hχL Ó©Éü¨]þÞy²„Xeñ(Ë¿À›‰ÐÛÚi[iV ã±ôø².$ý…6OIvQáoqã?<'†¢ñ‹¢ÛQ„Ÿ i%úÖ×3í‚2Wê%ÒrlǾ~6Tmìë15¡Ròão–F.íµ•¥ ô¦%á®6yÁ·íQß…ëS/8ïRHsÁ©>ö4®®Hû¡Æ¤ÎO_/1AêF·pUÄ#°ÝiLßöó^„@È …ÈÞ`ô¯šùoV¾á‚³ =™ðl/|$7™éDûŠßNtv¶‹QÇ‚óË÷#-ý.’Ïš9”"Ìåð*[ð¸n£lz(ÃÄ€©ŽÐäéid3Þ²X‚dÁE&ݼ«ã4ym¸8ŠV̉Ê@Ož§ièÜöV¯¹y®(} „1™ÛÊ ùiaøæHþÇÙéu膑mUþyj¢`8޿߃LÊ™4ˆ® î   Ž=Ðև𖕵6z _._ÍLnT ‰|êVegÃô_>«U•fý½™!Ëêj› Q%îhíé”þöXEàlƒké#¬ÅÑsÇg_Yй½wé K5«u}§q4Âxð 멯gE“–)¶1ALjØCãØ“é¯ÊXmæÎÄâ;re3þ‚–†…J½ õ*ǼoØ~ (C!ÕÂá ìºq°ÇL/yÒUg›VÄû¸ý]Éa‡À/¯ëS¦±Ò§_H®£¶¯–øîE,ç%Ñ\wEBüÓÔJÇÇäN3o«oàäéj¤w8.ÚúINÎû¨è›RCßî`² %uDöœûØn‘òˆq:Ð á:{ô¥3ߊ–Í…Rê ,9Å2R€ðtb ΢rêQ–ýû,ø{2íO_=1ö«`2™¥âèG6û³H"*"ã±Àž—6;W8n•ÎðÔ¸JýŽü@~Ãóžú¿ííA¯ŠX=£"¶h’ã›tq.G·så­=Ó,‘spó –-ìN{ùöÔ¢…º¯]eM# …O‡q%1^YNˆmC¡{¬$ ݤH— ÑÇÁI›¬†ñ{™md ƒg8-É®ènú)§šPÐÁ è…ºæüˆ|¦ ÝbOî#fñÆìd°}h3^íÑŠ3³«ž%ÍÐ ;¹Ká›?½ð(þ<ïÂzò]Jò”$h}°™°Ä[ÒCwågÄöœzÊH'MÇ…Ùrè–ã¾Ç¾-[ééËIŽÁ-'Ÿ•]x‹š/#ä4ôû‘iÀZíçnt': Nõ5¢5´ûàžÄ¾YnúÿÎüö³0Ø: lx‡ý‰ãä–:àφ4½­6,¡‚×…©"Nhp¥‘º³ÀrÏ_ÖÒ7ëžÚðë·îy6°á²+Mk‡Cà4ŸsnªØç»+ª„ ð°*®“ô¯<’ø_ã½ýáØ„Õ¨ç¥è›éË/&‘ŸóAw”®ïìé%S€_¬£sª÷—˜ì…òÇŸ_ƒz±ßTç”·¡ÝAÊêéýg¸Â ªìެ¹:+++Ïÿ :–ÌèÚ’zIl§ö|„IäÎ~Tp1”¢AÂlúaÕ”#šx‘GÜ&6]}’ æ8È2õ~ø®±z¿‰6¿»Îp-øtX6ŠëI^™yú:- ^çÖ…YäÐ-éI|ëðê×fÛtWÂÐÌÙ‘}RâFuæ`®´Û°¾Á¸ŽÕ ýªn‰ò}wY…7ï‚a=ô¼> õ\†ÅrscÇ‹N¶ 1¯©‰7ÿt¶Ú!tûÍÌ9ã\Å;Öî¶ '!D×_‹O6Œ›ó‹_ýÄ” j~ª±¤r Q6<Åý-„îÇÄîÞyûòít€ˆ?‰gºh07)c€¢Œúd¢ òjòϧô[™×_·úE÷0"¼‚fžbø{ ¤UYMß2öMº·Íåé &Ñèp?ÁÉ‚Ø3Hq$¥?pT‘¬y¦½·Jµ3”`ƒ! êTÎ<׉½o"_ÍþŒi „ì®Ò4UOMOÞ޵>Nî*Ì(Q gFtLus¡¯¤:”©ç,³¾Tc/m¯¡cÌ#‚C¥GÀ²ü¢&…Åj²EMÎ4¡û©‚N}QTå$Y Úv'åŸÜ«ÿWèÏÒêýY9îº©× _O?$65ó•èÂD)óí‘ŽŠ² ØåY­„o~KB•y¸zú¤j°J›à„(y.DÇ)Í>E›y° }¦0CÚ“cñ%ÖC¶»ûýtŒ$®÷¦Dêæ” ïX4ó‹L¶€lVE¨6ç+´·ƒÛ«îâ"ýà "K«Š0JhØ(`Ö ÑRõè`íS. Kîd,ÝÂä…ÞïãYE­L;ç>ÉEpÔDëT›œ²)§$nNFƒ6˜ƒÍéûmíûɨÄ4b8ù©si\Ï“6Û[ønõõÝ7ú.†f“«ÖÈDPRÉòš–`Qg#•,Á-ßÅ:€¢[ùàP}1ŸLÆ_ý·B_ìòš’¹³K(ª®“Ö ÛD0ÚZJ‹”Ô鶉l?9‡“9F4‚|ñØb¬†bã9#3±9/ UÇoè“F"ÂÌf©éy –äúÍÊdM‘—cKÕ¦J›üÙœ3"8§¾=µ£ŽÞ9 ¾G8'ýÀßž~÷*r6g%ÝóAÈ,Ú=\¸0ñ…sC£ù¶] ñôaG½Ôwû"kéß¼‹”'pèpÝï¨:¤>1¤î\8b S» ï-(PkhÑáÆy6]µ°GÈ&ù^t«iÚòàl¶´™ŽÞð(Þù”Y•ë>àœÍ•Ay!mÿ+,±Û¤«óåÎÎÊÉøEràÃ0".hŒÅ´…Œuãø9½×ßÌ«}f™?¡¬öcq-ÞÖoŸ¡lûB†\¤äÀÝ &ߪ¨JHkpÜÕA ÖÈ +üSýðH;Æ‚h{øþIÛüÛÚ?-N¼ÔWÿÉnÌt=®oo ¤ûD5V¸×0@ÑäÑ´Ñp ÓÅùž[ÞÊ¢¤¼k˜÷Db=±¸™úöqKÉN‚lEØeÜÁ§Bo?ò´ ÝiÅ´‚MÍðô:O–x<ìzrù‰õÃè`-L®5ê«ÌZ#*G ˼y?ÈÀ6_ |äÓk“ã~æ¾ÖbŒ—¹óJRí¥š–›·’@¦¾{VÆ$)!îãq7¤Yó}WÖô³rø¦[ŒÅuòZ]„ †~ÿt_Ð,¦qTbÜèV à5€î{‚Y¯O„Ó*©< E¥»/|ta\WÖj.¿ŽuðÏàI¯¼D÷RúÍRÏPRósD°¼†Çu„½tTå“- ·ô.È“Zä ÂˆyHs@kT"¬è6ëqOwjˆ~„× ¡DÝ öDZ^8©ä²b°¹HBËâi¿w$E5=Úÿ „Û„*x?Zît8xF÷oÉ¥… WÖ/ŠšC/d‚ä6ÖF¡áÆ%_Ü…[í_+"]'ï]Õh€÷ï8ʱ§Ò'É-!®£îø'¡'`Y3n£èq¦÷sàBð·zŸ€}P¸Åð‡#!v |+÷IÀqøÞ*xpø ëUí…ZËWÖìA¢Ëy¿—Lñec¦wí=|šŸ•¿ÔNÞ ÑŒãµé~ÜñbþuÖU á,yPu=}檚f${Adè8·×o¿NSêŠÁåãì”&¢0 ׬oÊèÍEeOáÿKdÊH7Ø÷„— yмž@Ý‘Ój™O[ïûâJ¼jëfHÃõlƒ²¿R1"@YU{¼‘‰côEëð€µ-œ Û¶­·#M‡Ã+ŽÑð)ë¡ãîp$¢¡I˜{ŸY›ظ&é¨Ék”áÓ’+’Fö§Û³ ¦õL_eSýÁC^'6Ö¶xž ÿ‡ÇõÑ£%pç ëm"«{LCÃÄ,­÷òÉ—z|ƒp.Êÿ~KÙ(ŠwõXLSn¡3¬ü+[ä¿gá{:²Z3?m+6b$áüLxŠRãŽR54ÅçQã‚\RV¶÷É‹ƒ¼¬דžåCmÕ?Éà(¾“Î4ˆOŽÔ÷vûW•Btè†Ódz µlu&wˆÀœî÷üä˜ðXÂûß]–ooæ~³8&9Å|B¿€ÂÛ'í­Ðºqùsß±Zuµ¨>‘ žuPÚèã<ÅŸ÷,®>‘ëŠ3:ûT¦»çcDýjÖfÕ´÷Q¦z}¼é~40ÓàþqP™t¹"hâp<å(Ê£0PʈW‘äÓÒË=T¤!°ôYÛ.ôjpüPÖ,¡îi³Åü’'®Û$lE–³GÕƒ·QõŒêÕ® ù ÌxrSV˜@%S®ÐaÑžOoç‰K›–k?Cî„‚YAõ~äÒl;ãÌ@¡ ZR’'²nˆ`ºé¿¦Q;gåiêP;rk t`î«öÙdÕ˜Àë;TøÄþK¨yG·>v¶ Ý‘mØbÑ ;'üÐþ ?°„q?`‘«¸rApGï·&¬iÄd™_‘›¥Ys„šfïñ¤Ç(g¿¥n³€€ ¹¼ÒÍú2<¬VxŒ—v0›oªâÒèÿxêWé^eÅ.YPÄ";¢×Kó]‘uh§ŠkÅ«#"äµ0W©=)¿e&9»²P.ãwˆÕ*¢· f'5)ŒkÅ‘éÖ¢Í]W'õ#Û§KjYÀ3N¶èîJ ò±|ßÊ).d£[ïAójŠ0éç$øñðo-5ÏÏC[Y’¡\¿;5°µO`ÿoþÎüBK¬ÔòIG·–±ªÝ]Rdל¯*r?e#ð}@K¢ÐCÊ'D¢;¦—``¤^„¦æ\ib 7>HâzzU³0%ê£Õqån‘Ó)q-ïdìi˜Ã’ç±x¹#’ ]ç—ij€†^ŒvpÂ#qF¤ULæy¿=ûž§Q`!`h‘³v¥(Àž¾æ—·V&߉J§eZ4~ž'†ú×?®°éÚ¿I@7ïëVBЄdZ!Þ2vêž‚ZœŽØf™bþÒ{ ÷–†øv˜eŽÎb_ó/å&|LµÅRR¾ 1¢®ñ(ÑÑ‚ó«ŽØ×xSè]›F§n`h5éÇMßé÷ ^?òÕ¿ŸZ¯ƒ¶ƒ¼GÈçXäÑiQ//Nº“5uì í¿ì…lf—Ø=¶¢¼}%äv@ˆLPÀkda>ÙÂQ¤ùÉ\b÷W³MÓ¿…ᤠg¡?‹cܹƒh÷Ϋ›¤œuÕdòp)®fjO…¾Ý29ËvŒw]Ÿ¡¤×2KÏDÙ­5Þq¯‰Kr:»kzÎ1 ú™ Ý­Éö†[,»£ÄTøØÐ(Q”u¹þ5,øš¥ï]wlq`O¼ïxºÅ P@Z)9HP†OŸg– ’¤P‘mcÄóD1DŸÙWï3x&èÚ‰G>ê‚IQ…ÚÃKÅqùÖÌ·« Ak¥dIɤðÉFŒæ’Z…Akàø€¯·\`°Äæ˜T¾1»øðSÝ,dû_¾ dÖ,¡^#\Â^iËZԥƽxKùì@¸”¯m³[?GØ›Ærvœ§¶›äaÇdèš'lðk¯jhœƒ»fÃ8ߣC£®èñ6¬ÔrQ݃~'r¡+ƒˆ²‹pXdò`\3¢ç“ª9xÜUù¾ÛåhN†–ô;ÂpˆÊÂÖ>ëMFžHa/ A”’‰Z­ïÆFa‹çšBÐEeò@÷¤ŽfähPê5Pà³÷¬ÎQ|GJ’v@wÝ$„k+Í-é8áiX3~Ê1éšz·=ÉG;b›µpª£$@ÆÑë] )f¾âççi 9–7ëmw•@¨u ¨<îIÔŠÍAݹzh0¿:U£Buø[N¯·'ßœn»þuGâ|u>ŽÒà/Ð?ÅËÿ&ÛÃb>5Å}ݸŸí¢_ù›†¬öoÖÆ¾ÇŒèp†<{žý€fþé·]Ð,¼FÝ)GAÝe½o—žV‘§8ŠÆ[m£F“ó);0ÁfcßÇ$øõ [MÜ"ôQ逜kL(ç,Ïž·óï±s%ÍfÍ\Ô'î–Z)¨f×ëeïçÅ䯰GÑ×Wv+œDÁ]¤¿.¦-ÄÈ9åhºý|31ÈþTA¨œÅÇSa‚Eí^4´2*þHæUœv€¬­|Ùût™P·1.ßÿ ÷ý# Ïÿ(®`×ú2Ã9â÷̶¶÷)hl/„ù©øZŽÜ¯\/ÄŸA‘aE¨PmÛ aÀã®:>Zcˆ-å Iìí©à¥WñÁºJ§á7šfy›0£”¨>£¥G´+ŒBÇÀŸ7 cɧD?µ®‰&ç½"Ú“F°iùD`x˜áŵݦ‰Þù Ü®ºêD¸â¿3P©IG¥Þ‘…ŸÑiÝË„véä¨n°¥Êâ„Q±³3XçÇÇ2°ƒ<Ž4tßÉH.œÔÅÀk²/Yž®i'¤âÁdÓ·!Ô ¤›©7îÙŸ=°©yÉVN8Ü \ÑCf†/œ€.‹ƒMzNÚõ1=nèÒ( ù±V¢éLm]^Ùµ«Ô±&ÜçÊ×#e¦m-9œHiæß·ÿxcAeìrŸX˜lVGç|ùC™põ á€m£¾uQn\¤Î™Žöž®áã6™ 8L½Úÿ=û)¯,D{R-Ú©c;¯wÊÒ1Z½Â翼6¡™Ìù¶i1Šª@æÌ êÿ*аa†“#C£BÅß+çÿ-‹’Å›­—ã‰øL@€UIîÀØ{3M/ЙÆÝ­í\¶ª›%ÎA†$ÕæÅ;lTÈj©Â™ƒJ-ñIÿAˆåXƒ§m…¾õlÖÌ|¹ Ø'ôSe¾v~£êÉí!Œýʹ C~5Êr‹WÆ='¯õíKD¨+o `:2˜PÉ!ˆ$xÇ*øØ\í!­ûÔ<-7Z†ÌSjãÉHõ —›Ë[h—€¿­{ºÞÝëóà O$É¿hu¾’•@"PûA{Îúßz¥5Pò—qŠ£¥0)bM%LC9yÊÿ…$ŒÁÙ‘Šöœ1 øý{ÝDpÏ8$°òÞz ¼¡äb¿s³5é Ãi-˜Š[›A“:žžE½SƒÞ2õ*Âë1Ë"rí¹F©…”+¿¿fü?¨oBèói÷D 9]ÍÛl;¿ÝM,µÊò¼u¼fL@}!³¡':%Kƒ7Aúó‚RXj$Øt/ÝŸm¥Ç›ñàN5#õ.Ñ_p Wz”­Íþ×’+Îðþ #éègX§ÿrEG§ÃÀm~ât6Ñ]?õ-¨šC ÛÉÚh ÂþyØŽÍÊ‘ÿetò‚éìp{ŽÍWay50ûXZÈ;ÿJÄ–#ï–Ø„r¼±Ê(WlÊÖ”—UT:ö¶±½JpK_þ÷W¢ä÷3ÍNÎá5ÙžŒ6x‚K‡õ©’Íõ—jä'FB¢ø$‰æÑƒ‡üÈ@µÐ2X›Êê-u(^ò†šÅ›3JMYÜ>ËMò‹%+’=£PB Èi)û|Eéô p¨ƒû—Y\÷kÛö1†ÄñÔ†×çã@£þcŒÉF?À(ëå)‚旅idcÜ0?_C¦p•¯»k)[Ò%ïZ6*.<[‰Ç=Ö©hño%Q¬ã[‘šTLi¢%³ãvÙ£¥gF»¹¡R…¸\Ìèn˜M™kXrÔ,éb4‚‹.8C!"`àó(¦qVX»ƒ5b®w³´§Ö—l£ÏóãwcઠêHìœ\Õeÿm4M˜‡|U¾q6øÍÀ“Ñm}ˆê=`[Irέˆ‡6H°ÛÝÔ¿+ŽG¤–yÚ×WPÓáÜ™­ãUáÀ7q4ÍóEÅ|@<¾£¡°QÉîÆ¯´%2怆kÀËãN,„LM ²e}Æ“òª/LT“XÓøSðôÞ ¹YIÅZvÑMJKJe}fàW ÐÅO[rÛ]‘•ämıÓq¦H¤?¦ü_×VB“®¯Ä±Wæ9ÿ¶?nŒõbcõC9‹deåÁO(‘Ýu‚06ë? Šð³ÿ€TúMÒ–r§ÅõvåGqKA†}ÇBhq®IñN˜„ê;q‡>οÎÖjÊð¨_:/¨ÄK.ªó™‹mçþ$ ÈÄ[’ߺÍU€k㢦ã dñw€q¼_ŽSe‰éüæ©ûfƒèeÞ܇¦Ä©Ôì&y³·ôe‚ B½àrÃσ‹ÿ>²ã“ýÇœ –ÉÛ-û"¾÷Ûâm:´ðíéâ…Ó?îû›ƒ!o‘\l»õa¡1xìÅåø¶ù»•E9ßÄÜqwmð4—†¾{tß[lF¤ ߌ®qP ï](à¿!m7Âɱ=ì÷-ó,xtqJ—D˜¤@ݵÜÑÝʉCN•%:M×·çM]ˆh¡!FÚýÜŒ­r¥ð¶kËrѰš¯ï4h†„áŸÇœÊ»e—øùÉPâcSF½Ó¤yƒ3-Yb~E©¢¡\íµ‡?!p”<›’i¿VGÉLÌë@,½’5×^Ù”r÷ÎÝ÷UÆÝ³%öƒát Öu#"' EgÅ)I ê’š… @‚JE®÷"´ MJñ¢ò^òÝh"D ám»DõÄ )¢ò¦ù¼f¸é+ ge«'9T-P¶­Îó«ÚÓÁã-L†ð:¥}ô @!ÎÒüô‹óŽ?GBNpέŽKœW(á63PQ]lË"ó¶Ö}‘ç !Kƒ:\(­¶Öýÿq…fóm†ÚJ™E§JK¿tH"“ƒ±º·îî¼bbùQûg‡>I&Ã?•)FOß!®ÑÌV-þî aÈ.Ü»‰jÁYuX »‚ÛÕ–F1…KÓ24©cP— Gÿq½rÕšQpŒ«Ñ.U5­¨U\¸Þ– EyöÌE‘œ“¢ª¥¢w©8ÝRÆMiMŸÌc%oî>ó”®Ó§€WQ¾€åк[.&ãÉŒ­š´4Š/“”sãôÔU—Ñ ö*RN$“s‚>§$´ÞWK(*½5Þ­æl¼Z±$6/ÉΔCZEèm ‰#ÈO$@ðEÿ9/à~@¾Ë:n´Õ36â/‚© QAôuº‚no±í1Ifä0“ìÀ•+Td´K¥jÿ7s|Ñ1Ì9©rlbG „š˜l2Ä#¤jŒx~a É×wi‹¼ÿGú —¸KÁ¦[ŠÓ8µD ¦ÒólyËyì¢ÂÃQá0”·Ò[v†Ã ,ÊÁÉND›Ò>`x+|#F¤<4QaÃDèŒ9æ:‘y/gÙ”ÜsáHúx˜:‹ÃÂ~·ÞZA16@„™âTå4~²îsGɶʌP[|Í<¶¥åÚy :m/¼LŠýRgUšW x‹ l^—Ëеÿ‡ª÷]×ú@WÅyâa²F7R¢©gíÝÿJ‡dîD˜^îÃe‚Ÿw tå­Ñùg´G"yl Ñð¿¾ßúá|ŽîDÝR TѤø12ä¶rCÒ¡ðƒ£8gZîS¾úºkß®Ó7¬›C‹[vABÃO±E*(šF„0ÒäiÚ>™£èÙF§D8äÝ >u…½€žÐµa™_COó9V‚L$t+œ5ˆÌ8€(š6vôóÕª(Ç[Š…LϪR£þL)ÈP5(?¼µ/o-LÙ?ÒÜú¬Y³IÒ ’«@@EÏ?cMíö:½áAF´JÞR&’ŠÊ‚trÉÍ£\rözàõLDgÔf—150v±ÝžèU±í_ ¢‰0儹âæ6N-’¹°½C‹MJO›Rp`Þ`¨®²E¶´ÖZsœ4áÇÁh$pÁèûK'¿EjË”¨$_-&d°“®Ð“™¹ÿ#O9OBÝÖYiÚ°A÷ø& êf|¼«FßvsðWÐÛÞ÷ÉÞ›2GKVLá0«Õ0‚k{[Uå_Ž–G‚µ`—Dä½k[ æŒG]̓™Û(~K‚½Ò†,Š^hD ÇRÎÏVƒÞØÀW×zç+`¨Òy( ,ðc>s©U>/Àí@Ëe¸Öµ\ÓÜFUô Ê º5(Õnå"%q2ÆÀ–õ58qT>ê† €žºÛRk{F¦“ã]Óè©ÖÇv?cãHMCÏÁ¿^ΊøŽTVå—-ýqŸüc%áL„óŽÂNc[¨I6 ¶¯ð€˜üEúœ‚1à ÓJ´4Typ@Pò…¹*57*¿=ZZSMH)ëƒh²ƒh&EºØp"tpp,x­ß…Æ.Ï)¹? KES¾D ß–P(„ô¨²6.§V¾þ,€1e¤_Ã(hUš´5ÔA~Aµ¨ªçö5¦¥kd"Ÿåç(ÿ +P$÷ý†ö°%dÀÿhÊsÖ‹Ë-øyïq#¸¼Ÿ¸à9Äë&9†,°«Î¼žßIÁmçÈŽ&(,–uŸ®Kþ:K†™f@ù€žp•W¦þ("snþ8M~ÒÕTbÓcÛôÿQmç‹Ë*¾¿¡ÿKYлFý1ù¶ô+¦ÀKžµ“Üw Åy<„v+‚ 3=µgdã¸ñ|ЍZîÙÁ&ÃÞChÛ5¯R©"EËŒ ½Q¥Ûò+ MºCE¬jXÇëÀÅV›ä­Ê&A®½ht4 2å#ϪîÏŸõæ—•ÉdòœÛ,@®­+‚°Ò’7 9¢Pjäkô@ÄÒ -7]ëð¼˜ü’V²’áÑD£Xê—š¹Án³ïýw*k™V{ŠÒíÈ8Š µ˜¯ÿyâN‘b8õßÞ0Ù·ù»º“6ÊTÕë8¡(ÈòÁ1Û61òea>à>Цñ#ˆÊ×¥ ÒB[vž¯ÂÍøTÌMœ°N‚»;°Ó7A×è…þ·AºŒ¤Œ¶f/ó¤s†Ætæ< ÎSc"xØB©=ÊT‚Î@Ú®Iñ±›öÖå:àØVð ~?i_l«È"ÉÁíî€Í¿z˜®¬ô„˜Ôå6b"hK@Nr† ›=S–4©Ú  œéµC*tòHv±}æ&ž™È×»N™50昰íRÕ„MF i7r~ÀÀž´ :€bBzÐ9 ›RZ…Òø±§ô°NË B$È7pB½*³¿[b^h?¡ÐÕçö¸Æ="I&¶ ³É›å¯žmŧ»1r~œ$:׸ŸULB_8$åëûš’¥ñ¢:£/ê%ŠæK{»…‰õ¾Ã?Üu?§¯ f‘­Ùf·¶îl-|mƒ™H¹3î¦u¬f” <ÅFXd”8Ü»Pò7ˆÿDaÄ"ÃgBì+cçø„j{(&Á‡“k<½V @D€Ý{OÊ£ó¾T4/o…“âù ­þšÈgáú2¼& ÜICe³‘n<áò‚Е ß]èڣ汒õýl5×z/´PÕS¿\K§,ú· ῦ]^‡òÃÙfÊé#v&Í„ÞÍX(¦£èÓû#ÌàÐéÙÙ@~Û!®Ú^D»ãÓÍöæD’×D¼çFUJWýÑ*ƒ¨{€ü¡]Mîx‹ºå¾g´z5Õ†V<¡Zcäc4BJÝ_±ÉYÈ /ó³2¤:–²¤SŽ Ì…™ž’ >·Cz™_V·LÌô¥ÆTsÂS ±‰V·Z¾òãl9 øCÄ\¾J+ÜBQ¿ù(†|&=¬ c•Ed_ ±ùm¼¦S ·0!ΧÅ)”a ¥`ù Qß³`!™‹´‘÷Ï »ÞûðO¾æ^ûM€²ÞTGâñÍé·˜cwæ}ƒììD«S¹aà0ôå#$•ÙhlG§Ñ(qHtèæÈ ÛÞWÇs³ˆÌ‘b/ë9Žó5Úã«GœíÆrÞ4ÌÁU·v`„bG¯î‹Þˆ:n>ÕýÕÔ‰xENiªð¢¤*`Ë£&æoë¶ækRôSÜ;Â{¦?ƒu®¨y\¯¹Ð6rÙH “Cõ#’ˆšJeõ+N¶òGF.xfŽË0ÄL©wÎ ÃÛè…Ifõ¸f®™õ‡Ï rCô%Éá« ÉýEò³+YO%²‡Že8î*ˆó±¥d-çøþñaé·$—Í83ä=NœvîQX(1š§^ocµÙvÄûÇuµ¿xb""ñ•ÆûåzǻǞDHÈ‚«ycÔ™WtS> 9`BÞh^MÀ†:"t  ì=oz4„váž>Î+-ššá¢ÀC6)ÑDÉ/jbúš*„^ä3Ÿ°ÒÊõü A•Gj^;gåY…¢Ó}’¦P-XbŸˆÓ`¸¦WÓ˜ø%Š)hEZ•Ä2Rj+ 3Þ "Ïöˆˆf)zZÀ[B[Ôóõß±”?¹ígIéÂÄgFkt×ô¿-‚Måù‹óæú ³Èÿâ[„ÇJ¨–féuÒ=Ét‚B´¶Ä¿2®¾XÁ½×nšó§§RÀ É7_µ¥BI")MnB=3p[¬ôÄYÅãùÉ[ÐÊ2$%i¤ÀÜì’ôwk-¹%ýΈ„„"p1z€ÅÁ¢z°0êóÕUÞõC±(7[j×5!Ëo =ì§²ù;½qÀß$:]ˆêÏÕ:Õ2kÕ¡‡$À«å3ÞÜÄë?Ùá0¡²Éx*Íéo¿ò5BIq['hêªÖ70ª‡ è&9èÐìŸÄùS‹VwaîÿèOVnðmT¸ª¢qj?žÛûÓ,ìቇ[†jÆçê™!ô`ZÝJM$F+ˆÞ­£‚Úþ>pˆƒ6òrƒj ÎHI¢›wH¼¿"<Ý.­9:]N ¥çpŸ¦ÅAØ|9¡(É6Ù^œ$Ü&©±ÿvj‘¿ÝzÃõU%ÜôN®8 Š]‘Ù9Y`Ÿ§Ó@Š-²×Ûß \Ó¥¬Tä>¢%ÞÉ€jRÞ[×ÞL‹2SØ•9iÑ/m;ìGÓúanZ€Ok²o"6H#ðÌℼxêB‡½¦×¶âcã†úçå¿Eõù–¤£Õ¸¬7q0+-N²vÔŸõ¼|~½7«9×8€O‘†Ü’Jz‘ŠYèùLønr‚úãë¿ý'-Mq>ÝI*/ê¨uˆ­Ø\ÞÔ— Eè*‘ÁÀì_îÞºòÚ2s) É7ë¶{o4)Ù MæS›E–<¸W#>¸sÐÕX;hÓVÍ=ì¶ú°ÌYxy!=._5:›úüOî™1¢„­À gf²\9¶fQ(Ùt—ñË—&û·K_ƒic œWP›Ñ©b>Ž9Œ”†åMUò@®a϶P€.°Z·>°ý[µ¦&¤’ûcâb:ÿ,1]bðÍ žø‡pXí4wue¡›YýÅõìqk×~ íÂ[\ડ4¼Yë üè´´€xäáá¢ß& õmB#êó¡¡«BÏg=y>ôì¡7ÖÔ7‹æ\ø= Zת¤ÏŠû«HöCF/Ê*–3íiMÙ͉d])„…ÿÛ4úUÉí4Ý(úÑtµ9Ogã;'Ü #H8ë´æ9Ï6 Á¾“ Ì-¢JÈ7=챋z=ELd®÷$zOܘIl-'½3·7Pi¦!?a§Xü¥]êðáéÃÃØúª°%ö[ 3ÖÃÿÚãå/S…¤›-߬_uHÐÒÎi³M·½ØÅpç›*‹î9,Ðïˆëœþ˜XMMvšÆý¤K>§³ÏÒmÁlEeýÄŸ¹86¶#ÛQ-ÃOÙÍÖ΢ըs‚ßÉpcêGA39ç¢Î¯R•V”¢œy;‚Í@âzq“ãå09nHÇ_i|iC™Oaâ”k~²°ýgcÒÐm¼˜éÑÙÌõb0Eùž^h e ý)”ß.°¿ÖAtã ÙPJß2˜ÜÁõŒã€¤û׉þYþg¥ £åËž’b”i\„VGŽ÷;•Ëùt5ÆãÏx£Áwms¢˜ xí«­SãttûÖâ[ÝiÑÃ&w'ßV4n'Fq¦Ÿt  ü– 1èËþGÁ@LjŒ¿Ü¾슯#'«Ÿ½´ ×øÊ"„×‚>-Dž@HpÎàfü $Ù!*¡ëД6˜ôç¤"žI:«>ÖM~6 IZjÑv@­Š¾IõÝZbF{N´è$xÖœ!m!´àÅÔXp"Lk›|1E:Ü˺ Å…¨ï€åY¾%Œûò¥n*ùD@/ïè×2îcKaè'A,—VÞ,KZ>G Ë!JÛX ©Ì„Uú€ÀsÛ‚%—Äs”Lu©¼¹:;€Œ5ƒýCˆ-Ú¹-j}}`ªëÓ ö ŒDVí8´œŽ®zƉ°n|cÜ8áõúª&7ú©Š…<ˆûZòÚ¹×Uök5˜&8¯þ Ò!o ïl=d$º4ΣBùXÅNK›ñ7膦^(°“Šì‘.Ø–›—]#©.ýº?†Ê û³ÌÞ˜ÊN^Vn&xZcb(0·j×FT1+''Óµ®ö±Œýñ+¡IüˆÇ·Ôä œù‰Ët†ª”KëØ P‹þkUIl̦<¡ø›¯ÞúÊHÿXB—ÐÚ¬FÌh)Ù¡ˆ3‹¥Å{&(zbVøÈˆ£F;=bmA¦@Õ íÛ¸tð…WÇaQZF^€h{-|«4]¯+RšlJWÖ9 ²ânËÐÕ…å¾øþâóͶaåU›*êp#†Còà:8¼ºçí‚AÖG÷&°öøl ŒVXï‡ ñÍˬAY=@ÿ ô   Y:)WÎ¥Û$÷ÜhR?ƒw,9ÎyE¥ÕÚŽæj¡¥JbQ ™Äsï†Ç¦gÇþÍD!Eeñ¦mà¢õ¾¯¿)õ_ztè2ÃHˆª51l%îµç­^Ÿ½§ò$?ž¡XN ™Ð<Àä®-—RdØàÙãv{¨ €Ô¦Pxud—«ä¼Õ›½?T%>Ê ~°Ø=r1¨xcšW_¾^"Ž[9Îfíef‚$áé û|ég©‰»SXw1OÔ«U¾9Bv¾@+å°h¤;O¸Ž2{Ö˜ƒBt­“¸nŒªùMϹIZ}g"ÚýÛQg¹yBÉÄÑ̈_6ô¹ë¡/£c:g:;¢ÆÑ”\¢QÍàðã´{¦£hú´%³ƒèqŠz%¤’=, ~Yd;Î ÓdÂOl‹$]„÷°ŽsãC*ú1ÅB'Ó$pRp–вã¡ñ\ÅÒG#×ʘu¹O XT Q aâ|1-Hñá! k~2y\Æ” R+/Hù…âRK ~8<ðj™@ ƒµî‘ÊåSfH:¯vbe­§u¸ãÒí:ê5Z+—k‡“h”êoÁ Vç8°Èã a%Co~}‰|¨püHàòj9'¾…™Ô9•/uwæNr4žâÿ ©áDîðœÞ4§‰°@ÝúUMô¤Ðæ6*÷bÒmGJBœsˆþ±hXÄN¨x|®¿È¶Ä‚™rϘ„¨œH‘q‹Ô³)ú~ç3Ž-ÌJÑaÔÕlò€’;™“5w½ò@¥÷¡Ï1^x'x9Z—~Ü©w8Ûh O•žI7ék•åÔ1èkޤǬ!O‹'¬fûìk¾’Ì®w!ª'œü.܃Ø2ÏÖ¥Q®RsÜî*SÔÿUµ±2\¥û3íGAšÇ:„ñ Š×ö>¸G‰N†ÀˈiuI¯©ÓY¥¦™­ÝUÐäíÍùSjwŠÖî´ï4d»Ä‡Ü:ºQ䓲°+áª#™ “h¢Œ1ŒÀ«Ï9ùJ?ŸKU°¤‚2,¥5ó%Ô RøMß-Éìc¦ÔÒ2çwQiÕÆ&]Ïëh»;þ¡sŒÁ{ý …!UtÇj%RÀ’IMÒØúØu2.Z-cÉÌ ½‘™ìITW×ôÁB ZJò‚ ‰]VU(µäËßĦûôú¥— f¶b¶ŠQžñF½ä8äL'–䟔¤¼áê5O£þH¼ÝvÎû~ÜO–ü½¹T¶s£¦ñà{ú¼Ó4èä 8½Ig*Ÿ‡·ÂÛ,Zòd7Â^r…Ò°Êm±êU‹*ùïøZšôo]=¼Wß&·»ÆùoûÀ»Ò9&á¬Î=è^Žq¢â›/)¹q[ÈMÖyõ¸½ì|n°f‹6Ü*νªÍþ[y'áÍ~§ P:˜VÓã&F³ýÅh…cXÃý¬Ÿ'úÙ‹0ÍÙÅ# '±–t ˜& ÆîAÇå"€åW/y‡€í­|ÎPûŸ æ]%!EÜÉ©ÈC/õÈBºz0r¥>]~áÄ9qá¾æË8§”¤|Êìr– ØN•hð*_Ü…àƒLð·¯Ü‚´]Wâ)ýoNïbù@üV/‚ >îNYz=,¬û½Œ:È/îûpƒ@’59§z{·[Ü÷·³ÒýƧˆâV£G°‚÷i§¬_a T úèzÈ j”öÓ%òÖ©E,¸<Ó!!•øS_Å¿¨ŽþÝéL;‡×Ηž¾=É~3/q ÙíÛ$€Íí„dËFøÚþ;bÓF%•‚í+ÉG_ÙTN-HØçùFõJ¤ˆnyÝü01¡îÙ ©—¶mKQQÜ»öa—Ô”±Ú;{NÏÔÒéþA¨9Ã}?®]‹FèçÚf·:¯w­?Ýßçæ€£¸ãPåc­‘8Ž=*[x¯š¤ís b,‚,çmD`N¨|öѱH¢NÓÖlÃ~ÌG3a—0ã?c zþÇ r1Žä‹E]Ä,& 1:³N+ƒfg›ÿC”7±è·o]úX)Ê*#Óµ0ƒ@(¶ÂúX7îƒWŠV«#s}Ùa`^Ï Ãî&u(·4_Û[½\IçÌ7P"WFÍzÆ‹w-`’K8Å&ã,sÕÆµô$âfeµØæ¬GâMm£µHÞéU™*A{#.q;y—òÒe@bSû5®ÖQŠÉ ˜Þì&•1»:7ЬïÒÒJÐ=†nWÍçæç 7þ8¢BÀ¬½å¯]ûN—ÇBæ¸ï`tx96- ºÆe;$K;À¡@­ g©×‰–R/ÓŒzå_v“)Nn™è>\Ùþ_-V÷µ1Úª[{¼>Ë1Ë€‡×±þYï>êÄùPV“ª³(Áû föH8¿ó†»‰*Œ)ÄêMƘbÿQÑEà3= (¸!ª±"@!ùi¥º5QDð!Íz=»ˆé¹®ðArÓ¯äûn^ŒÛº6"F}öäO)ãÛ²¡ýUÁþÝÞÑ¡oWXæ”,K£;XÝ »G3èþà:9~öé&Ü™ï²T\Ì9ó5Iu':¾ýŠRkýžûµÊSÂ'Å©¯-ÝVéÁÙhejyAÍ/E¼hœàÀBÖÌþ÷iIi/é°P1+ƒÐê–°lˆX¶²_Ÿ´¯¤ÛÌi Aowú>9xLí|”ó“Çïþ Ÿm^a^Ù"*ÔaHlœ¯>.ìS¸?Eö‘‡WðÈaëm;]‘²è>rÚY’Ž?ñYjÖù(-V:æ^$E–rú|Š÷ǸØRPá+ԯ˟QcïÙ$@nè«[èLà—Æ@UJi†!2óÜÆ©ó_ïḿP‡«D1Cl}J;då§Ï)çNz^ü•è ì3ÏY;)‚`@Tp‹™ˆàžà“EÜE¸“FGÎÊ®´È0ç|‡›2y®ÁÛ¦x 2yõŽ,ç_9ª½†]ÍGl¸?a4 ÌO´[Ô4ÑË´æ)Û@ã`·1ÅVyoºU}B5â¹}¬MÛuÚMåx\a¯ËÑEœUžÒ=ÀÄö´ …æí_ÚÊæÄq€ïª"&ñÌKÞÀ¿c~LíÜÕÔч Z ¨z§°/‹Éf oiXx~Ý—G16MíL á°Šl|‡YËÀ$ÛòŠwœm¸šÊy@/æ|”5ï|ä‚vôcSm„%f»}üüwá +hÆ}ÈFì3ê>5Ég’釃CzLt¶ëPA ÏÑ fM².ÿ{Ô¼’RtG·åáß®SÜDk¡ÓU§‚ïГ_»ýb àïô Ü3_.ñ| øb`AL 6ø›N2HÍÜ9²}bú…é`÷.‹Q^Q•ý‡{ð_Z©bn¡Dˆþð¬óîTnØy7aâIÃsÇýiŸ+€C%©d²?ô–ÍFj_jÓ[ÉMò²ÿh6bõÞ#p>e#qo¡qÉEjS_«ùÄ€=•ŒoÑ’S›6€"¶Êx*Zj†ÔBëÔë“§8mÝ…쉧ùñ"Îß%®x†î 7÷xî•Hš´`”iÜÈ™ÓuÔ=ÐÈ´ÇyÁT4W½6Èö£ÙÅ=–QÇ=fq÷«×Ú ® ÓgÙ<Ž‘ðab“½FŸ;vLå¾ôTÚœ¦Ðë6RªÐo!oèpsç¾y_›,öü³Õ ÎEƒ1:—‚À„?[¬S €9“Ô¡£ ¥z•¯$£ZëÓÚk’}vàjrßI¶Ø²¹²DPÝ4Í-GÑ ¼WôØ °tì }qn¸Dþ¸ÏKWAÂ-䘉ß'"= G‘éEvù&¢"×—§u©Q\ô½TaQÚ`œ/E꟡f÷ù=ï\–±\–¶5Ë-¹µ:RâÂ"ºd ÷e"N¶qd°Žt€J­e¥$""ák’jÎMƒÍð²ßRym¥8¬»’uUƒ…ù/!J‹rkkÚ¬>ýÇ½ê ø.špýº“^DðôA×tصz4d¨gN!n‰])Ö:0'÷’©Î¿¤Xÿžíµtþú}Ôkmµ{ëE4× Xz†IULSÌ>AÃÖ†_LHl'zWRo7y¨bØ´yÁ¥—0‚£î-M»)1ˆ7%²;U „>ñÙ]­j1µ[Û!ê_ÞýËÚb'kÇ\_PB|…ò93Ž ­Ð¥·­ÖˆOÀ¹†í È…zs…¼K»ÉELs÷q¦d´øá¸¥P¹É,[“rDj†é°&ÉùFW3¹vWÌ,©fÕIV•û+?UŒ„ÓSËÍû”Ë'öišÃª÷|ŒE0†ˆ"UÌæTAËsóéÈ*4iêóì0T¥Æ aqM$ ÚM²Ô+¼‡VqÅ:æÖñ_ [BÞ »°0%׺bú°‰>Üèæ‘ÓëWòê7Îfh+õÙŒí¥¥Êl³}$en£Z•±Û:Þ=;bk“•bÍã_Ȥr‰<4‡\4WE- ¬šÙÆï׬ 'ãá×Ã__‘Â)-ä)cîYÞŠç9¢úœß²ýÿ"ö]K­ßÇ#§¬: £Hq!eùÿ0lî~öúòQöÙ|$69Bƒ7æ2E‚DÐqŸZ]Ó=]Åí‰\—Qùb8s»eDh¸Ýâ~“Û­v(´¬|)¼rþi„¡Õ[·Öçt0a6è¢ÅäÝ¥[˜¹ÛÌsåcvÆDí^ôY.«í)[ÝÕ¡üä6c5zi"Øòð Üw16ƒlGý}ÎQ¸H!Xüjš¦\EV:b`®pÿÀþî\ŒÊ„CÚµJ&äÂÔ @I_i‘%w@´‘w}8k披~µ=•(•‚% ±(é(äF±»4³íê Ûà*m36`7…yñŸûQåAGË¥5Iah[ü”ü‚\ã‚C¨ìÍÝ@Ýhcæ_jõ`tâzÙÀê/4ø—ÃßøìK·ýõ w\ Û×y4­§«Èî…˜Hfy€£Ä†Å³˜`MŽ„_ ÿUM GHøTlÔ?ôd8Ú;¤^+^E·;^BâLtX­€‡b^¾ÌëVU€pYœh{Ù+“~!°[‡EØaGù–Ûõü™Þ£rmàp׊iŸ¯NÇU±¨Îï.~x"çÒdNa<×qãóÈÄ›¥ÆAt¸ú¤ÍýÙ¨r¢ËÆIX¿sáúx/(—e/ìy[408¢c}$BF§‡=tØU8¬ôZçäz9ü5Þ:؇Þïf$ZÇ÷•ÕðSfÞd™û¾”XággŽŸÅ;æ:\¥¶FDæÛ >,f^CòÙ±è9Ar‰„Œ³UÕÉɉC7)ÏM3q.³¯c'3—`sÜAÅš,–§Ø½Â¤ÍÒŠ‹ò{ °Óü]ƒ%Ó8ç DìAØÕ ÞçŽ ½³¶vƒê´Cψ•¡Îµ¡?VAUf¿Å"ý8Œü3ê‰â&—åÄ‚æBS¥-#aè·/Ô2GdvØãTxã;‹Ò Y,çk߆L¤¢jœ%1÷QçÔáŠü„b«0uô]ÜÁµ µ[ø÷¥‡‚?øŒùåqî™Düê&7Å¡Í1ÜYü>Jw'È@Í,GÁÉã¤òQ3æcƒÆþ ¾¦€ ‰_‚Цü Û7Ð1ÿa]J”Ù-K©U¾Ó{ç:¸¥lw„Œ T{¥ £ì¯¹.©ï©3™Ÿ{Ö’#È#‡«ÅÝÔÂzjn8Ì0n§î8û¼Ú=þµ’ ¬íï ˜,€åÛ9ð›QI”r1}QÎÈ[±©êë•; ÇÈqûœj”fGö0A0ø Oôuc¦NI€Äõ€ ÑLDÂË(Š…Â²7‡×Ï´X9P+9+^Î-ëܵô ^ÛPæ!á!ž™õBÞšCœÄÝÕµ}êȲ9ëEý€jCs<ä´O}c¡;FÚÚÇ?,ð\`L}ƒÅ@:YÑÌóxÔˆž™ùÄñäq9ñç÷ÿyJ7Ö»zk¢*•4 w…žwPz0 ^¹¥õ%ËZ»§ÆY­Îº|'®Jþß½”xÐ(ž:3e£8$ë" A]QÇÝ„³Ö$^í/‚zs=âUŽõjê‘lÐ…‰ëI=ÐÔU Î’¾åýWJ(÷ƒæÖ»ºý¢nÇ/ºô‡8w³è’ÿR‡'̆biÂo¿f|p»Þ«NZ<±-ýËü'móŠQZ̾ÛT¤,(äNâvfêУß;?ösR9ÈŠ+-÷Éûúæ }“ièÒH—0ÞGЙ3óes¯0¶µ Ãö‘ëh«ÕWjúJÚÂ>ÆÃeèêj`s"°V&fÌNMy¦íC$âÄ ¤4ÀùcíŸÇ÷̘t‚—¯-€¿ö_„ú®œÛ Çúª‰p¨–(?¥`Xиë5áŸA‘ ĵªÖœÖì¬É_w RéÌB]ºL–÷³0Wö,£Ûº¡Ú¬Ÿ«üÕí‡!Åh}’š;²àEëIȹU¢TÝC8EbÏðØ•°¤7ó²`†Öƒ`:Iq Åιqs9tRã Ôò³ÂPÛä¤I"[øéõ*ÒZÇÝœÂ*—<Àƒ\ÿbä hH$C t5Rz¿%I§Ú>.DG†"dÀTrc—-Ђ[¥Þ¯ãâåΆ€õ 3á40F¿¦/®fÚ®Á™l¡gØ ,†/P?GÙ7Fhoœ¬X wŽSÃóÐ_`µ#f:«¹Ð“l0bÇíåAõ­õ¾*&bôæÝìI£)zTÑ܇¤KË'þÎ#[ÂÛÀg^Û¼¢V”áSbÃjiꕃ!(SÇb¿Ù½Mßž«µí:³6‰¤˜ùˆ.ol2F}}ø÷óÖ³ÀÁ<œƒ˜„îæ4>Ó–ç­·­ÏÈdgoÑýŽæ³É²ƒ¿¶ÿi½™Â8£'9Õr[ôVQi…~_Ç¢aÊͬVi´úúÒmÐsBYJ€Æ!׺‹†v%œHœ=€-²x?©fQl —.p‹¼×M'÷‹‹•ž°F³Ã~EÌgj«RÅu3²qІ$²!¶‘"ö ]“wÒ@dý¡¾†àd"\;¼ý|wBwæ?~"E&‰N¢c5m`0 jœÒ—ëëP!r[,©Ñ»Eöƒ÷^<”šõ%šQù“yYA/?;r¿e"ºx˜Ît$†Mý€Ê. s©k‘Ý©­—›ïh€]tüåØé¡\O¼”ª&4Vï—˜˜Ž9Ï Ù¯’ߟ»fÛŒΨôÅKøF<"ºáYx05÷²n ÀC]].†#Àùù.LRm¡]4ìb¡7‰å<ׂŸÇi+G®™^ ÏAw‰ÓkLÇfmÿf£ëY…«n^¦êVíèªði©~««Z!Á‚§¥âÃ7^Ö®â-¾½ â%šFÅì](.² ̲†Û]:Õí¾Ä¢XF*z3ò˜pÁìKßðîÒcbWrj„e“YìÛFñ(Ýᔀí:‹ˆr‰”—gŠN—*¥àº6sµ¬ë‰Ü·Ð MRhZ6k>ŠÐA?íY{º DøüG¥YÈõ=?ú碗PLe„ª! Ä¨ÆØ0(;¾Þ”/èpGÍL $° >5#pâDéäù÷ô$ó ÑwÚ±Û+-GöÕ¿}("ÔîEAjíš¼tóé¡/$!GÝ ¬Åy¥Ÿ ”ÕþíþŸÐÑ‹SßO\™WÍMeëOlžŸÌô§“Ûÿ_ÿCPÚˆ‘÷+<7ŸjW¸é–ˆoÌDt‰ã–ÛÊ/4¥|ä61ûEÊ©H1ÇszŽ=Ê Ü'äò6ÖCÇ‚+Ù¸U‘@|ÝãÐp.uolÆí¯Ãó?l€_¯R±{…±¸ ˆ“’tðd¼ñ.ób…h2o L%ËÂsÆxyo—ÿø ù‚ÜmèÝ»@Nýlò!D}Bª‹l7·€¯){"o0+kÊõöØÛÚÑ^Ë õcªE^WSgHˆ¾†Ùàcìô@<Àxm²Œ‘Ú)ì·« –jx£ÞØYØùq –Ú€(ÁÜÂS_–!ñZæêïÝÓ*¢€ßWd aîÑ~*q+ÄbØaËñžOÃvØvý‚"oj“½¥ò«§›|‹dWRp¶ü §~ª}cGsà*Zœ£¨3\iÔ;Ä›mˆ6üJÞ¡½ôëC†ÅAh£ßÝ­³n±¹ž il¦ÈPÍ9-½ò‰«lÛðá2š²Ê &BÌp°.:‰QŠþ¥ãϸe _B¿¦‘ Ô;Í̯Ômqº’Bw¬¸`!Ö¯PéŽG–ä_§Såñõ(À¡SÐÄ>5k´ñŸ-}Ê÷ ýíò$8ÌÈãÈ ¾;9çù˜Œ=Ë›nžÓê/‰²¸]¶„;‰`“Ǥ©Á&æ%Ò©±A:MŠSÆ|ýTf$N*ÃümÌsu7Î ¯ëÓs’Ù!$4^ámË­ .;53‰`*Ã*“vcÊöÃÝ…‚K0~Šu6XPÍ,¹ý—<š®j=¢ÿjÅÅ$q¸‚‚þÇjy‹SöÃÌ1\ˆ#‹ ÐýMV²Õ®à -“v62¥Š¨8;ž‹E;FÀ‡Ýöq&ó•Î5ur†(%âÃÿgÚ Ï€±/ª½ k*$Eíï´¼¨@ j×ã;’ĺIu,¬îãHΧZqrH y[žΦzñÇݪiÜ®qÒ¼©”‡µæis³Öº­T¥Ùmÿb߉Be7ÛMŒŸÒ¯ÿrª©ÄN9Z%¥Ö"‹Ã#¹8ðñŠ1J¶–)zµÖò.½¼W(¼Ft¢ª–ZN™Ç]5ÑPùùÍ·¤¦Ÿ'Ž®OƒPè¤î‡-´ß™ŽŸ$]櫨l±J]ÌY¼^jús—ŠUõ†ìÐ!×3ŒÄH¯&A^vüÌdÚšj“Ï’.’g‹ðÆGj" [â–ñÆÁ†;èˆ.¿Œòw„d„ùQ)oÌÜÓ:ç¾¾1¸ì QtÍñ­eƶ±ÔèX¥\îµëéiݤ?˜`Œ˜#%Cºh¿±º#ÈF7.yk…j‡ú¼ååÞ?RG` ¾$š§hË“‘¡MÚÒ5‚ßÕjB14Õj_bë­†b,SGÇóM&„¸  »áÅ6RÚMÒrÊ_‹(\fáÿ[uµ lV2ÐêA§ñF¥¥ˆeÎ3'Pýã=yòìm’ŒLwûEÕtwöt^î@fΘîLþ€4@yÑáÏ·6¯šùI“[¥-ÙÃÉ›×Z•,œ n–.&O†×Pº-Ÿ¡mB Ž+ðéV²×#8}Œù±ú?s +´Ü˜´Œlˆîž/ö‹%©<¾‰ñkAY.›e7Žq$Û&LÁ¨IeÖ'FO::\b›• 2°‹ÜïB{×ëº'šE%{43Ó6ðÅmsØ£l¡Oj•ÇBàêˆ:Àí÷¥ãUÄ`SÓažc:»¾ˆÞ)¤Øfnž0ÄŒy2>E1ÐB1êWn¿ÌTr;°·NØÉ!(±*¡ŒL—ÔXžA |%”6¶2Ët>”Þ“x`¦ø¢1âñ¦%Í(h7f&+¥®EDMÕ¶åÙ¬÷Pe GT¶‰r |bü‰jä¨Î`'Î? &‹ç祧âÒ ™˜}WLëÀèJ-Še~˜"cÖU«–O&ΣçócÞ[‡—â3¾ŒPœVñv€ -Ñc Xðº7xq5—ž‡|_WåêH¹ €¨m'LYÄn`çn[`Uû×ôK ÚAD•™Ì%Å`}/‹²r ÜÇLŒxÁø“´ ­¬7û¢Å²«Sê¼>íGé&Á~„ãÚôÓ0 äí@7]}Ô&øÀ¬ËÃ3h¶å<¹L…*íʃJê•Euÿr>kC]Üé'R¸"A–Mè4nd5Ó˜P=´£ùól E[÷ó;¥Z[ßdÐÈQŸè°³J{ù‚Fß»Y\‡dj.ü×ÇpN–LEr³ìÏ=Ïe |²à°„'ÿsÿ{,¸Ö h±`¬†`ùx³ã\Ðñ"Ød`Æ”é|‡õs~[å®Òï+I9ËoÛŒ©dÍù‰1¸ ºh‹(ù§'&=Œ^:ª5³¹•òÁPyÖ5¡Íá"ªöóúÑD A jè6/ŒÝW-´+¸!³¦OEBòè!už9ù#$Ø7 ƒV[ˆyöЧn½•%w ·ËÖøϰàLe7‹AõÍk(éf°vÖ+É’1 îÇf,äïx›|¤púaϯ9>ÞmÜÅÜ~85˜QQÊØ  ¼}úK±gd*À»åƃGÍ‹c̾~Ÿ­ìÓ³é¬b²MgŠ´ëÛ`ÿ#ˆ@Y?ƒ©p÷Òf-A´qB&š±ŠOV–«*LÇ0&¥Ézb—lÚžcÁ•E\è*F€êw¹½ºÖ‹ è®1-!Dlo?›ßðö°´öþ0¡:;EºP~­ñ'p¥ Aœ²™Ru ^ §vV¬Gmýü·ˆK–5ØälüŽ˜RŸUƒÙwë ½†Ìa‚„X ?èTm“cÊ_œ ·³àߦÕn­Šè_¨V3”Åñ×±ª&Ë"óâ_¶­õ ó] &LgçQÔy ÅÄÝàðÃwŽh®üΪáh…ÁBͽêM*{žf‰–ïððöî}{ÙÃF•·¦0>‘¨þŒ ¹v>Kq¤yñ}µ"s£¸ÓU6Ô”Åq"O¯Pí¡†ßRdõh,RáE†Œ=ËŸIl¨g%ÿpá„àb5MXˆÒ­@úe’ÜZYïóºá¨ÚM€… Z›õ7ìÜs¡ bº£ÞœúÐe°Fâ²åï"œëË‘Xµä#/°°Å¿,·rå2C¾ÅÑŒ@D}ÝUÂämCìVdt÷˜Q·VÂ|ÕßAÅr+e†‰hÄÑ_:i’h j;ÑÚ<…(.í7RâDŠ2„>¿ÆàEÔ.ZD6™Á&`*«Jhí~çÒ©r=–î-Í–;è(Ǻm­ñE]Q/¯ôŸˆÏ/û]ådI}Eó G“ SQÐ#þd’ €W¶ùËÄ%½õ“ ô ˜¥®YXP˜øúÁwù×à…Ç…Ôÿ×€GK0!6Ž}/¥ìÖíÎó!&òÓˆZ hý¿ pžA¶g›÷‘“ Y²üuöÉäDȆ‡[Ùy žêi* ã?ú%(¾% Bº¹ÜÐ>¬8lÊŽRè¸[Àu`çúºcHªèáÙ²Ü:…$XÆ‚‡RìN”·çôúïaη1Û4°U–’« œ×'¿ÌšYï¬Ï’¼Ráúx”—n´×xn ‘5ú­A[›ûœH½;ÐI©ÿ m|¾bûÐ(, (ÓœËÁÓy÷×îò&JkzîÆýüÊŽHs5iZ«±èÛ” d¬¸÷Âò¡l2uAàT­ ­ÓNŸv³¦*²Ï]ÿQÙ<1K?E§À øzÌ"QI8Å·Ó.4¡b¶YÂÖ°o¥HXS3 ´1"¯Ò–ŽCë ENñRûµÂºSŠßõJÍ„VY¬ò,3¡èà€—ŒŠ=èÒïÆÌ¸ ²÷æÊSšl¥ä†ŽF TKì õ†´DÇÀùcå¶éîH¬¿ U½]òÍð©ŒêÞŒXÉþû>^” ý 툩¾ð è’ÕÖ >N6X[~iím/ÿØ!AnU8IIeÃÎ.kýv¦n^´§:G&ÿpÄ4=¼Äý×$ÓÜV?@f›äè&³ö²–àA¢Î>82Dé`°r'bP¾M³‡ñÉù5 Ó½ææb}šFŽˆ²A±vc|“Ï„.Þ‹ðÓæ¨csr>ÖøûÔPDn-ÂnÅþŠÚ™” «‘=ñ*ð“XUnTŒ“©¤ß ÞÛŽ:æès¦ca\4èÆavbÅûï6•ÕKNmãú«FÄ6˜,0)ž“V¸\3Ö¦Y7È_%IÈ劰ÈE˜éCVE{:Qb er&¡gǬGSÜÌ#ø¿­}‡nÓ—~pHc#ç¢t4èg8;–¸Ó>Q’lg<¨"„VûÈ6K|Eåóµ›):ÙHSøWÞ¬ªCBÿTŸÚ&•]X+Ïrh—1 9^­µŒŠ 0ƒ¾¼vfqÙÀ«#¾nø·¿¼r&ŇÎ× ¸ÃœÐb[®°ý*Ÿ/žµ”Ê —m Þ(]Øä8ôÓKÈW‹B4ˆW?}IÍG⬠` ŠÌ¸¤#ÅÖå|2=¾®¼Iü8¯/ð¿0W¢•Ð!>¶[K"kW·?B¦O«·üg[Ì’P›­»Ê[¹ÀÜ•†ØØ¹µô[Ε–]¿ùÉ€çûc¼Ú 7_¾yÖþzO¨SÁaóqÐÔûÐ??TõœÍ!ï¶Þd…K‹xGOÇˆÑ Åv IúcÿUz³OXš‡¥0e%é†É»Àp0²ì‹Â ½SýøPèÃWp/‘%â¨01$]ø8ï;yØMIôMßßG³èpÍ —‰d^ÙÌÏEW‡H¢Ï(~Uóµ¬,iÿ|¹YŠ;ýà r³ÊFÛñ éAbJ)¿y9Õ‘gïùu° '÷ÁuýCÊA|1»+“©ÈžçìÅ¡:å2LidˆP…0·¢£¾¼©\¡Î ÓÏ¡⦯ª¦ú"ø+€ 5´P ² àPR #include "wl_def.h" #pragma hdrstop // Uncomment the following line, if you get destination out of bounds // assertion errors and want to ignore them during debugging //#define IGNORE_BAD_DEST #ifdef IGNORE_BAD_DEST #undef assert #define assert(x) if(!(x)) return #define assert_ret(x) if(!(x)) return 0 #else #define assert_ret(x) assert(x) #endif boolean fullscreen = true; #if defined(_arch_dreamcast) boolean usedoublebuffering = false; unsigned screenWidth = 320; unsigned screenHeight = 200; unsigned screenBits = 8; #elif defined(GP2X) boolean usedoublebuffering = true; unsigned screenWidth = 320; unsigned screenHeight = 240; #if defined(GP2X_940) unsigned screenBits = 8; #else unsigned screenBits = 16; #endif #else boolean usedoublebuffering = true; unsigned screenWidth = 640; unsigned screenHeight = 400; unsigned screenBits = -1; // use "best" color depth according to libSDL #endif SDL_Surface *screen = NULL; unsigned screenPitch; SDL_Surface *screenBuffer = NULL; unsigned bufferPitch; SDL_Surface *curSurface = NULL; unsigned curPitch; unsigned scaleFactor; boolean screenfaded; unsigned bordercolor; SDL_Color palette1[256], palette2[256]; SDL_Color curpal[256]; #define CASSERT(x) extern int ASSERT_COMPILE[((x) != 0) * 2 - 1]; #define RGB(r, g, b) {(r)*255/63, (g)*255/63, (b)*255/63, 0} SDL_Color gamepal[]={ #ifdef SPEAR #include "sodpal.inc" #else #include "wolfpal.inc" #endif }; CASSERT(lengthof(gamepal) == 256) //=========================================================================== /* ======================= = = VL_Shutdown = ======================= */ void VL_Shutdown (void) { //VL_SetTextMode (); } /* ======================= = = VL_SetVGAPlaneMode = ======================= */ void VL_SetVGAPlaneMode (void) { #ifdef SPEAR SDL_WM_SetCaption("Spear of Destiny", NULL); #else SDL_WM_SetCaption("Wolfenstein 3D", NULL); #endif if(screenBits == -1) { const SDL_VideoInfo *vidInfo = SDL_GetVideoInfo(); screenBits = vidInfo->vfmt->BitsPerPixel; } screen = SDL_SetVideoMode(screenWidth, screenHeight, screenBits, (usedoublebuffering ? SDL_HWSURFACE | SDL_DOUBLEBUF : 0) | (screenBits == 8 ? SDL_HWPALETTE : 0) | (fullscreen ? SDL_FULLSCREEN : 0)); if(!screen) { printf("Unable to set %ix%ix%i video mode: %s\n", screenWidth, screenHeight, screenBits, SDL_GetError()); exit(1); } if((screen->flags & SDL_DOUBLEBUF) != SDL_DOUBLEBUF) usedoublebuffering = false; SDL_ShowCursor(SDL_DISABLE); SDL_SetColors(screen, gamepal, 0, 256); memcpy(curpal, gamepal, sizeof(SDL_Color) * 256); screenBuffer = SDL_CreateRGBSurface(SDL_SWSURFACE, screenWidth, screenHeight, 8, 0, 0, 0, 0); if(!screenBuffer) { printf("Unable to create screen buffer surface: %s\n", SDL_GetError()); exit(1); } SDL_SetColors(screenBuffer, gamepal, 0, 256); screenPitch = screen->pitch; bufferPitch = screenBuffer->pitch; curSurface = screenBuffer; curPitch = bufferPitch; scaleFactor = screenWidth/320; if(screenHeight/200 < scaleFactor) scaleFactor = screenHeight/200; pixelangle = (short *) malloc(screenWidth * sizeof(short)); CHECKMALLOCRESULT(pixelangle); wallheight = (int *) malloc(screenWidth * sizeof(int)); CHECKMALLOCRESULT(wallheight); } /* ============================================================================= PALETTE OPS To avoid snow, do a WaitVBL BEFORE calling these ============================================================================= */ /* ================= = = VL_ConvertPalette = ================= */ void VL_ConvertPalette(byte *srcpal, SDL_Color *destpal, int numColors) { for(int i=0; ir; *green = col->g; *blue = col->b; } //=========================================================================== /* ================= = = VL_SetPalette = ================= */ void VL_SetPalette (SDL_Color *palette, bool forceupdate) { memcpy(curpal, palette, sizeof(SDL_Color) * 256); if(screenBits == 8) SDL_SetPalette(screen, SDL_PHYSPAL, palette, 0, 256); else { SDL_SetPalette(curSurface, SDL_LOGPAL, palette, 0, 256); if(forceupdate) { SDL_BlitSurface(curSurface, NULL, screen, NULL); SDL_Flip(screen); } } } //=========================================================================== /* ================= = = VL_GetPalette = ================= */ void VL_GetPalette (SDL_Color *palette) { memcpy(palette, curpal, sizeof(SDL_Color) * 256); } //=========================================================================== /* ================= = = VL_FadeOut = = Fades the current palette to the given color in the given number of steps = ================= */ void VL_FadeOut (int start, int end, int red, int green, int blue, int steps) { int i,j,orig,delta; SDL_Color *origptr, *newptr; red = red * 255 / 63; green = green * 255 / 63; blue = blue * 255 / 63; VL_WaitVBL(1); VL_GetPalette(palette1); memcpy(palette2, palette1, sizeof(SDL_Color) * 256); // // fade through intermediate frames // for (i=0;ir; delta = red-orig; newptr->r = orig + delta * i / steps; orig = origptr->g; delta = green-orig; newptr->g = orig + delta * i / steps; orig = origptr->b; delta = blue-orig; newptr->b = orig + delta * i / steps; origptr++; newptr++; } if(!usedoublebuffering || screenBits == 8) VL_WaitVBL(1); VL_SetPalette (palette2, true); } // // final color // VL_FillPalette (red,green,blue); screenfaded = true; } /* ================= = = VL_FadeIn = ================= */ void VL_FadeIn (int start, int end, SDL_Color *palette, int steps) { int i,j,delta; VL_WaitVBL(1); VL_GetPalette(palette1); memcpy(palette2, palette1, sizeof(SDL_Color) * 256); // // fade through intermediate frames // for (i=0;ipixels; } void VL_UnlockSurface(SDL_Surface *surface) { if(SDL_MUSTLOCK(surface)) { SDL_UnlockSurface(surface); } } /* ================= = = VL_Plot = ================= */ void VL_Plot (int x, int y, int color) { byte *ptr; assert(x >= 0 && (unsigned) x < screenWidth && y >= 0 && (unsigned) y < screenHeight && "VL_Plot: Pixel out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; ptr[y * curPitch + x] = color; VL_UnlockSurface(curSurface); } /* ================= = = VL_GetPixel = ================= */ byte VL_GetPixel (int x, int y) { byte *ptr; byte col; assert_ret(x >= 0 && (unsigned) x < screenWidth && y >= 0 && (unsigned) y < screenHeight && "VL_GetPixel: Pixel out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return 0; col = ((byte *) curSurface->pixels)[y * curPitch + x]; VL_UnlockSurface(curSurface); return col; } /* ================= = = VL_Hlin = ================= */ void VL_Hlin (unsigned x, unsigned y, unsigned width, int color) { byte *ptr; assert(x >= 0 && x + width <= screenWidth && y >= 0 && y < screenHeight && "VL_Hlin: Destination rectangle out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; memset(ptr + y * curPitch + x, color, width); VL_UnlockSurface(curSurface); } /* ================= = = VL_Vlin = ================= */ void VL_Vlin (int x, int y, int height, int color) { byte *ptr; assert(x >= 0 && (unsigned) x < screenWidth && y >= 0 && (unsigned) y + height <= screenHeight && "VL_Vlin: Destination rectangle out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; ptr += y * curPitch + x; while (height--) { *ptr = color; ptr += curPitch; } VL_UnlockSurface(curSurface); } /* ================= = = VL_Bar = ================= */ void VL_BarScaledCoord (int scx, int scy, int scwidth, int scheight, int color) { byte *ptr; assert(scx >= 0 && (unsigned) scx + scwidth <= screenWidth && scy >= 0 && (unsigned) scy + scheight <= screenHeight && "VL_BarScaledCoord: Destination rectangle out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; ptr += scy * curPitch + scx; while (scheight--) { memset(ptr, color, scwidth); ptr += curPitch; } VL_UnlockSurface(curSurface); } /* ============================================================================ MEMORY OPS ============================================================================ */ /* ================= = = VL_MemToLatch = ================= */ void VL_MemToLatch(byte *source, int width, int height, SDL_Surface *destSurface, int x, int y) { byte *ptr; int xsrc, ysrc, pitch; assert(x >= 0 && (unsigned) x + width <= screenWidth && y >= 0 && (unsigned) y + height <= screenHeight && "VL_MemToLatch: Destination rectangle out of bounds!"); ptr = VL_LockSurface(destSurface); if(ptr == NULL) return; pitch = destSurface->pitch; ptr += y * pitch + x; for(ysrc = 0; ysrc < height; ysrc++) { for(xsrc = 0; xsrc < width; xsrc++) { ptr[ysrc * pitch + xsrc] = source[(ysrc * (width >> 2) + (xsrc >> 2)) + (xsrc & 3) * (width >> 2) * height]; } } VL_UnlockSurface(destSurface); } //=========================================================================== /* ================= = = VL_MemToScreenScaledCoord = = Draws a block of data to the screen with scaling according to scaleFactor. = ================= */ void VL_MemToScreenScaledCoord (byte *source, int width, int height, int destx, int desty) { byte *ptr; int i, j, sci, scj; unsigned m, n; assert(destx >= 0 && destx + width * scaleFactor <= screenWidth && desty >= 0 && desty + height * scaleFactor <= screenHeight && "VL_MemToScreenScaledCoord: Destination rectangle out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; for(j = 0, scj = 0; j < height; j++, scj += scaleFactor) { for(i = 0, sci = 0; i < width; i++, sci += scaleFactor) { byte col = source[(j * (width >> 2) + (i >> 2)) + (i & 3) * (width >> 2) * height]; for(m = 0; m < scaleFactor; m++) { for(n = 0; n < scaleFactor; n++) { ptr[(scj + m + desty) * curPitch + sci + n + destx] = col; } } } } VL_UnlockSurface(curSurface); } /* ================= = = VL_MemToScreenScaledCoord = = Draws a part of a block of data to the screen. = The block has the size origwidth*origheight. = The part at (srcx, srcy) has the size width*height = and will be painted to (destx, desty) with scaling according to scaleFactor. = ================= */ void VL_MemToScreenScaledCoord (byte *source, int origwidth, int origheight, int srcx, int srcy, int destx, int desty, int width, int height) { byte *ptr; int i, j, sci, scj; unsigned m, n; assert(destx >= 0 && destx + width * scaleFactor <= screenWidth && desty >= 0 && desty + height * scaleFactor <= screenHeight && "VL_MemToScreenScaledCoord: Destination rectangle out of bounds!"); ptr = VL_LockSurface(curSurface); if(ptr == NULL) return; for(j = 0, scj = 0; j < height; j++, scj += scaleFactor) { for(i = 0, sci = 0; i < width; i++, sci += scaleFactor) { byte col = source[((j + srcy) * (origwidth >> 2) + ((i + srcx) >>2 )) + ((i + srcx) & 3) * (origwidth >> 2) * origheight]; for(m = 0; m < scaleFactor; m++) { for(n = 0; n < scaleFactor; n++) { ptr[(scj + m + desty) * curPitch + sci + n + destx] = col; } } } } VL_UnlockSurface(curSurface); } //========================================================================== /* ================= = = VL_LatchToScreen = ================= */ void VL_LatchToScreenScaledCoord(SDL_Surface *source, int xsrc, int ysrc, int width, int height, int scxdest, int scydest) { assert(scxdest >= 0 && scxdest + width * scaleFactor <= screenWidth && scydest >= 0 && scydest + height * scaleFactor <= screenHeight && "VL_LatchToScreenScaledCoord: Destination rectangle out of bounds!"); if(scaleFactor == 1) { // HACK: If screenBits is not 8 and the screen is faded out, the // result will be black when using SDL_BlitSurface. The reason // is that the logical palette needed for the transformation // to the screen color depth is not equal to the logical // palette of the latch (the latch is not faded). Therefore, // SDL tries to map the colors... // The result: All colors are mapped to black. // So, we do the blit on our own... if(screenBits != 8) { byte *src, *dest; unsigned srcPitch; int i, j; src = VL_LockSurface(source); if(src == NULL) return; srcPitch = source->pitch; dest = VL_LockSurface(curSurface); if(dest == NULL) return; for(j = 0; j < height; j++) { for(i = 0; i < width; i++) { byte col = src[(ysrc + j)*srcPitch + xsrc + i]; dest[(scydest + j) * curPitch + scxdest + i] = col; } } VL_UnlockSurface(curSurface); VL_UnlockSurface(source); } else { SDL_Rect srcrect = { xsrc, ysrc, width, height }; SDL_Rect destrect = { scxdest, scydest, 0, 0 }; // width and height are ignored SDL_BlitSurface(source, &srcrect, curSurface, &destrect); } } else { byte *src, *dest; unsigned srcPitch; int i, j, sci, scj; unsigned m, n; src = VL_LockSurface(source); if(src == NULL) return; srcPitch = source->pitch; dest = VL_LockSurface(curSurface); if(dest == NULL) return; for(j = 0, scj = 0; j < height; j++, scj += scaleFactor) { for(i = 0, sci = 0; i < width; i++, sci += scaleFactor) { byte col = src[(ysrc + j)*srcPitch + xsrc + i]; for(m = 0; m < scaleFactor; m++) { for(n = 0; n < scaleFactor; n++) { dest[(scydest + scj + m) * curPitch + scxdest + sci + n] = col; } } } } VL_UnlockSurface(curSurface); VL_UnlockSurface(source); } } //=========================================================================== /* ================= = = VL_ScreenToScreen = ================= */ void VL_ScreenToScreen (SDL_Surface *source, SDL_Surface *dest) { SDL_BlitSurface(source, NULL, dest, NULL); } wolf4sdl-1.7+svn262/wl_text.cpp0000644000175000017500000004073711577474656015630 0ustar fabianfabian// WL_TEXT.C #include "wl_def.h" #pragma hdrstop /* ============================================================================= TEXT FORMATTING COMMANDS ------------------------ ^C Change text color ^E[enter] End of layout (all pages) ^G,,[enter] Draw a graphic and push margins ^P[enter] start new page, must be the first chars in a layout ^L,[ENTER] Locate to a specific spot, x in pixels, y in lines ============================================================================= */ /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #ifndef SPEAR #define BACKCOLOR 0x11 #define WORDLIMIT 80 #define FONTHEIGHT 10 #define TOPMARGIN 16 #define BOTTOMMARGIN 32 #define LEFTMARGIN 16 #define RIGHTMARGIN 16 #define PICMARGIN 8 #define TEXTROWS ((200-TOPMARGIN-BOTTOMMARGIN)/FONTHEIGHT) #define SPACEWIDTH 7 #define SCREENPIXWIDTH 320 #define SCREENMID (SCREENPIXWIDTH/2) /* ============================================================================= LOCAL VARIABLES ============================================================================= */ static int pagenum; static int numpages; static unsigned leftmargin[TEXTROWS]; static unsigned rightmargin[TEXTROWS]; static char* text; static unsigned rowon; static int picx; static int picy; static int picnum; static int picdelay; static boolean layoutdone; //=========================================================================== #ifndef JAPAN /* ===================== = = RipToEOL = ===================== */ void RipToEOL (void) { while (*text++ != '\n') // scan to end of line ; } /* ===================== = = ParseNumber = ===================== */ int ParseNumber (void) { char ch; char num[80]; char *numptr; // // scan until a number is found // ch = *text; while (ch < '0' || ch >'9') ch = *++text; // // copy the number out // numptr = num; do { *numptr++ = ch; ch = *++text; } while (ch >= '0' && ch <= '9'); *numptr = 0; return atoi (num); } /* ===================== = = ParsePicCommand = = Call with text pointing just after a ^P = Upon exit text points to the start of next line = ===================== */ void ParsePicCommand (void) { picy=ParseNumber(); picx=ParseNumber(); picnum=ParseNumber(); RipToEOL (); } void ParseTimedCommand (void) { picy=ParseNumber(); picx=ParseNumber(); picnum=ParseNumber(); picdelay=ParseNumber(); RipToEOL (); } /* ===================== = = TimedPicCommand = = Call with text pointing just after a ^P = Upon exit text points to the start of next line = ===================== */ void TimedPicCommand (void) { ParseTimedCommand (); // // update the screen, and wait for time delay // VW_UpdateScreen (); // // wait for time // Delay(picdelay); // // draw pic // VWB_DrawPic (picx&~7,picy,picnum); } /* ===================== = = HandleCommand = ===================== */ void HandleCommand (void) { int i,margin,top,bottom; int picwidth,picheight,picmid; switch (toupper(*++text)) { case 'B': picy=ParseNumber(); picx=ParseNumber(); picwidth=ParseNumber(); picheight=ParseNumber(); VWB_Bar(picx,picy,picwidth,picheight,BACKCOLOR); RipToEOL(); break; case ';': // comment RipToEOL(); break; case 'P': // ^P is start of next page, ^E is end of file case 'E': layoutdone = true; text--; // back up to the '^' break; case 'C': // ^c changes text color i = toupper(*++text); if (i>='0' && i<='9') fontcolor = i-'0'; else if (i>='A' && i<='F') fontcolor = i-'A'+10; fontcolor *= 16; i = toupper(*++text); if (i>='0' && i<='9') fontcolor += i-'0'; else if (i>='A' && i<='F') fontcolor += i-'A'+10; text++; break; case '>': px = 160; text++; break; case 'L': py=ParseNumber(); rowon = (py-TOPMARGIN)/FONTHEIGHT; py = TOPMARGIN+rowon*FONTHEIGHT; px=ParseNumber(); while (*text++ != '\n') // scan to end of line ; break; case 'T': // ^Tyyy,xxx,ppp,ttt waits ttt tics, then draws pic TimedPicCommand (); break; case 'G': // ^Gyyy,xxx,ppp draws graphic ParsePicCommand (); VWB_DrawPic (picx&~7,picy,picnum); picwidth = pictable[picnum-STARTPICS].width; picheight = pictable[picnum-STARTPICS].height; // // adjust margins // picmid = picx + picwidth/2; if (picmid > SCREENMID) margin = picx-PICMARGIN; // new right margin else margin = picx+picwidth+PICMARGIN; // new left margin top = (picy-TOPMARGIN)/FONTHEIGHT; if (top<0) top = 0; bottom = (picy+picheight-TOPMARGIN)/FONTHEIGHT; if (bottom>=TEXTROWS) bottom = TEXTROWS-1; for (i=top;i<=bottom;i++) if (picmid > SCREENMID) rightmargin[i] = margin; else leftmargin[i] = margin; // // adjust this line if needed // if (px < (int) leftmargin[rowon]) px = leftmargin[rowon]; break; } } /* ===================== = = NewLine = ===================== */ void NewLine (void) { char ch; if (++rowon == TEXTROWS) { // // overflowed the page, so skip until next page break // layoutdone = true; do { if (*text == '^') { ch = toupper(*(text+1)); if (ch == 'E' || ch == 'P') { layoutdone = true; return; } } text++; } while (1); } px = leftmargin[rowon]; py+= FONTHEIGHT; } /* ===================== = = HandleCtrls = ===================== */ void HandleCtrls (void) { char ch; ch = *text++; // get the character and advance if (ch == '\n') { NewLine (); return; } } /* ===================== = = HandleWord = ===================== */ void HandleWord (void) { char wword[WORDLIMIT]; int wordindex; word wwidth,wheight,newpos; // // copy the next word into [word] // wword[0] = *text++; wordindex = 1; while (*text>32) { wword[wordindex] = *text++; if (++wordindex == WORDLIMIT) Quit ("PageLayout: Word limit exceeded"); } wword[wordindex] = 0; // stick a null at end for C // // see if it fits on this line // VW_MeasurePropString (wword,&wwidth,&wheight); while (px+wwidth > (int) rightmargin[rowon]) { NewLine (); if (layoutdone) return; // overflowed page } // // print it // newpos = px+wwidth; VWB_DrawPropString (wword); px = newpos; // // suck up any extra spaces // while (*text == ' ') { px += SPACEWIDTH; text++; } } /* ===================== = = PageLayout = = Clears the screen, draws the pics on the page, and word wraps the text. = Returns a pointer to the terminating command = ===================== */ void PageLayout (boolean shownumber) { int i,oldfontcolor; char ch; oldfontcolor = fontcolor; fontcolor = 0; // // clear the screen // VWB_Bar (0,0,320,200,BACKCOLOR); VWB_DrawPic (0,0,H_TOPWINDOWPIC); VWB_DrawPic (0,8,H_LEFTWINDOWPIC); VWB_DrawPic (312,8,H_RIGHTWINDOWPIC); VWB_DrawPic (8,176,H_BOTTOMINFOPIC); for (i=0; i1) { #ifndef JAPAN BackPage (); BackPage (); #else pagenum--; #endif newpage = true; } TicDelay(20); break; case dir_South: case dir_East: if (pagenum #include #ifdef _WIN32 #include #include #else #include #endif #include "wl_def.h" #pragma hdrstop extern int lastgamemusicoffset; extern int numEpisodesMissing; // // PRIVATE PROTOTYPES // int CP_ReadThis (int); #ifdef SPEAR #define STARTITEM newgame #else #ifdef GOODTIMES #define STARTITEM newgame #else #define STARTITEM readthis #endif #endif // ENDSTRx constants are defined in foreign.h char endStrings[9][80] = { ENDSTR1, ENDSTR2, ENDSTR3, ENDSTR4, ENDSTR5, ENDSTR6, ENDSTR7, ENDSTR8, ENDSTR9 }; CP_itemtype MainMenu[] = { #ifdef JAPAN {1, "", CP_NewGame}, {1, "", CP_Sound}, {1, "", CP_Control}, {1, "", CP_LoadGame}, {0, "", CP_SaveGame}, {1, "", CP_ChangeView}, {2, "", CP_ReadThis}, {1, "", CP_ViewScores}, {1, "", 0}, {1, "", 0} #else {1, STR_NG, CP_NewGame}, {1, STR_SD, CP_Sound}, {1, STR_CL, CP_Control}, {1, STR_LG, CP_LoadGame}, {0, STR_SG, CP_SaveGame}, {1, STR_CV, CP_ChangeView}, #ifndef GOODTIMES #ifndef SPEAR #ifdef SPANISH {2, "Ve esto!", CP_ReadThis}, #else {2, "Read This!", CP_ReadThis}, #endif #endif #endif {1, STR_VS, CP_ViewScores}, {1, STR_BD, 0}, {1, STR_QT, 0} #endif }; CP_itemtype SndMenu[] = { #ifdef JAPAN {1, "", 0}, {1, "", 0}, {1, "", 0}, {0, "", 0}, {0, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {0, "", 0}, {0, "", 0}, {1, "", 0}, {1, "", 0}, #else {1, STR_NONE, 0}, {0, STR_PC, 0}, {1, STR_ALSB, 0}, {0, "", 0}, {0, "", 0}, {1, STR_NONE, 0}, {0, STR_DISNEY, 0}, {1, STR_SB, 0}, {0, "", 0}, {0, "", 0}, {1, STR_NONE, 0}, {1, STR_ALSB, 0} #endif }; #ifdef JAPAN enum { CTL_MOUSEENABLE, CTL_JOYENABLE, CTL_JOY2BUTTONUNKNOWN, CTL_GAMEPADUNKONWN, CTL_MOUSESENS, CTL_CUSTOMIZE }; #else enum { CTL_MOUSEENABLE, CTL_MOUSESENS, CTL_JOYENABLE, CTL_CUSTOMIZE }; #endif CP_itemtype CtlMenu[] = { #ifdef JAPAN {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", MouseSensitivity}, {1, "", CustomControls} #else {0, STR_MOUSEEN, 0}, {0, STR_SENS, MouseSensitivity}, {0, STR_JOYEN, 0}, {1, STR_CUSTOM, CustomControls} #endif }; #ifndef SPEAR CP_itemtype NewEmenu[] = { #ifdef JAPAN #ifdef JAPDEMO {1, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, {0, "", 0}, #else {1, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0} #endif #else #ifdef SPANISH {1, "Episodio 1\n" "Fuga desde Wolfenstein", 0}, {0, "", 0}, {3, "Episodio 2\n" "Operacion Eisenfaust", 0}, {0, "", 0}, {3, "Episodio 3\n" "Muere, Fuhrer, Muere!", 0}, {0, "", 0}, {3, "Episodio 4\n" "Un Negro Secreto", 0}, {0, "", 0}, {3, "Episodio 5\n" "Huellas del Loco", 0}, {0, "", 0}, {3, "Episodio 6\n" "Confrontacion", 0} #else {1, "Episode 1\n" "Escape from Wolfenstein", 0}, {0, "", 0}, {3, "Episode 2\n" "Operation: Eisenfaust", 0}, {0, "", 0}, {3, "Episode 3\n" "Die, Fuhrer, Die!", 0}, {0, "", 0}, {3, "Episode 4\n" "A Dark Secret", 0}, {0, "", 0}, {3, "Episode 5\n" "Trail of the Madman", 0}, {0, "", 0}, {3, "Episode 6\n" "Confrontation", 0} #endif #endif }; #endif CP_itemtype NewMenu[] = { #ifdef JAPAN {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0} #else {1, STR_DADDY, 0}, {1, STR_HURTME, 0}, {1, STR_BRINGEM, 0}, {1, STR_DEATH, 0} #endif }; CP_itemtype LSMenu[] = { {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0}, {1, "", 0} }; CP_itemtype CusMenu[] = { {1, "", 0}, {0, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {0, "", 0}, {1, "", 0}, {0, "", 0}, {1, "", 0} }; // CP_iteminfo struct format: short x, y, amount, curpos, indent; CP_iteminfo MainItems = { MENU_X, MENU_Y, lengthof(MainMenu), STARTITEM, 24 }, SndItems = { SM_X, SM_Y1, lengthof(SndMenu), 0, 52 }, LSItems = { LSM_X, LSM_Y, lengthof(LSMenu), 0, 24 }, CtlItems = { CTL_X, CTL_Y, lengthof(CtlMenu), -1, 56 }, CusItems = { 8, CST_Y + 13 * 2, lengthof(CusMenu), -1, 0}, #ifndef SPEAR NewEitems = { NE_X, NE_Y, lengthof(NewEmenu), 0, 88 }, #endif NewItems = { NM_X, NM_Y, lengthof(NewMenu), 2, 24 }; int color_hlite[] = { DEACTIVE, HIGHLIGHT, READHCOLOR, 0x67 }; int color_norml[] = { DEACTIVE, TEXTCOLOR, READCOLOR, 0x6b }; int EpisodeSelect[6] = { 1 }; static int SaveGamesAvail[10]; static int StartGame; static int SoundStatus = 1; static int pickquick; static char SaveGameNames[10][32]; static char SaveName[13] = "savegam?."; //////////////////////////////////////////////////////////////////// // // INPUT MANAGER SCANCODE TABLES // //////////////////////////////////////////////////////////////////// #if 0 static const char *ScanNames[] = // Scan code names with single chars { "?", "?", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "+", "?", "?", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "|", "?", "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "\"", "?", "?", "?", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "\xf", "?", "-", "\x15", "5", "\x11", "+", "?", "\x13", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?" }; // DEBUG - consolidate these static ScanCode ExtScanCodes[] = // Scan codes with >1 char names { 1, 0xe, 0xf, 0x1d, 0x2a, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x57, 0x59, 0x46, 0x1c, 0x36, 0x37, 0x38, 0x47, 0x49, 0x4f, 0x51, 0x52, 0x53, 0x45, 0x48, 0x50, 0x4b, 0x4d, 0x00 }; static const char *ExtScanNames[] = // Names corresponding to ExtScanCodes { "Esc", "BkSp", "Tab", "Ctrl", "LShft", "Space", "CapsLk", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "ScrlLk", "Enter", "RShft", "PrtSc", "Alt", "Home", "PgUp", "End", "PgDn", "Ins", "Del", "NumLk", "Up", "Down", "Left", "Right", "" }; /*#pragma warning 737 9 static byte *ScanNames[] = // Scan code names with single chars { "?","?","1","2","3","4","5","6","7","8","9","0","-","+","?","?", "Q","W","E","R","T","Y","U","I","O","P","[","]","|","?","A","S", "D","F","G","H","J","K","L",";","\"","?","?","?","Z","X","C","V", "B","N","M",",",".","/","?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","\xf","?","-","\x15","5","\x11","+","?", "\x13","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?", "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?" }; // DEBUG - consolidate these static byte ExtScanCodes[] = // Scan codes with >1 char names { 1,0xe,0xf,0x1d,0x2a,0x39,0x3a,0x3b,0x3c,0x3d,0x3e, 0x3f,0x40,0x41,0x42,0x43,0x44,0x57,0x59,0x46,0x1c,0x36, 0x37,0x38,0x47,0x49,0x4f,0x51,0x52,0x53,0x45,0x48, 0x50,0x4b,0x4d,0x00 }; static byte *ExtScanNames[] = // Names corresponding to ExtScanCodes { "Esc","BkSp","Tab","Ctrl","LShft","Space","CapsLk","F1","F2","F3","F4", "F5","F6","F7","F8","F9","F10","F11","F12","ScrlLk","Enter","RShft", "PrtSc","Alt","Home","PgUp","End","PgDn","Ins","Del","NumLk","Up", "Down","Left","Right","" };*/ #else static const char* const ScanNames[SDLK_LAST] = { "?","?","?","?","?","?","?","?", // 0 "BkSp","Tab","?","?","?","Return","?","?", // 8 "?","?","?","Pause","?","?","?","?", // 16 "?","?","?","Esc","?","?","?","?", // 24 "Space","!","\"","#","$","?","&","'", // 32 "(",")","*","+",",","-",".","/", // 40 "0","1","2","3","4","5","6","7", // 48 "8","9",":",";","<","=",">","?", // 56 "@","A","B","C","D","E","F","G", // 64 "H","I","J","K","L","M","N","O", // 72 "P","Q","R","S","T","U","V","W", // 80 "X","Y","Z","[","\\","]","^","_", // 88 "`","a","b","c","d","e","f","h", // 96 "h","i","j","k","l","m","n","o", // 104 "p","q","r","s","t","u","v","w", // 112 "x","y","z","{","|","}","~","?", // 120 "?","?","?","?","?","?","?","?", // 128 "?","?","?","?","?","?","?","?", // 136 "?","?","?","?","?","?","?","?", // 144 "?","?","?","?","?","?","?","?", // 152 "?","?","?","?","?","?","?","?", // 160 "?","?","?","?","?","?","?","?", // 168 "?","?","?","?","?","?","?","?", // 176 "?","?","?","?","?","?","?","?", // 184 "?","?","?","?","?","?","?","?", // 192 "?","?","?","?","?","?","?","?", // 200 "?","?","?","?","?","?","?","?", // 208 "?","?","?","?","?","?","?","?", // 216 "?","?","?","?","?","?","?","?", // 224 "?","?","?","?","?","?","?","?", // 232 "?","?","?","?","?","?","?","?", // 240 "?","?","?","?","?","?","?","?", // 248 "?","?","?","?","?","?","?","?", // 256 "?","?","?","?","?","?","?","Enter", // 264 "?","Up","Down","Right","Left","Ins","Home","End", // 272 "PgUp","PgDn","F1","F2","F3","F4","F5","F6", // 280 "F7","F8","F9","F10","F11","F12","?","?", // 288 "?","?","?","?","NumLk","CapsLk","ScrlLk","RShft", // 296 "Shift","RCtrl","Ctrl","RAlt","Alt","?","?","?", // 304 "?","?","?","?","PrtSc","?","?","?", // 312 "?","?" // 320 }; #endif //////////////////////////////////////////////////////////////////// // // Wolfenstein Control Panel! Ta Da! // //////////////////////////////////////////////////////////////////// void US_ControlPanel (ScanCode scancode) { int which; #ifdef _arch_dreamcast DC_StatusClearLCD(); #endif if (ingame) { if (CP_CheckQuick (scancode)) return; lastgamemusicoffset = StartCPMusic (MENUSONG); } else StartCPMusic (MENUSONG); SetupControlPanel (); // // F-KEYS FROM WITHIN GAME // switch (scancode) { case sc_F1: #ifdef SPEAR BossKey (); #else #ifdef GOODTIMES BossKey (); #else HelpScreens (); #endif #endif goto finishup; case sc_F2: CP_SaveGame (0); goto finishup; case sc_F3: CP_LoadGame (0); goto finishup; case sc_F4: CP_Sound (0); goto finishup; case sc_F5: CP_ChangeView (0); goto finishup; case sc_F6: CP_Control (0); goto finishup; finishup: CleanupControlPanel (); #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return; } #ifdef SPEAR CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif DrawMainMenu (); MenuFadeIn (); StartGame = 0; // // MAIN MENU LOOP // do { which = HandleMenu (&MainItems, &MainMenu[0], NULL); #ifdef SPEAR #ifndef SPEARDEMO IN_ProcessEvents(); // // EASTER EGG FOR SPEAR OF DESTINY! // if (Keyboard[sc_I] && Keyboard[sc_D]) { VW_FadeOut (); StartCPMusic (XJAZNAZI_MUS); UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); UnCacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); ClearMemory (); CA_CacheGrChunk (IDGUYS1PIC); VWB_DrawPic (0, 0, IDGUYS1PIC); UNCACHEGRCHUNK (IDGUYS1PIC); CA_CacheGrChunk (IDGUYS2PIC); VWB_DrawPic (0, 80, IDGUYS2PIC); UNCACHEGRCHUNK (IDGUYS2PIC); VW_UpdateScreen (); SDL_Color pal[256]; CA_CacheGrChunk (IDGUYSPALETTE); VL_ConvertPalette(grsegs[IDGUYSPALETTE], pal, 256); VL_FadeIn (0, 255, pal, 30); UNCACHEGRCHUNK (IDGUYSPALETTE); while (Keyboard[sc_I] || Keyboard[sc_D]) IN_WaitAndProcessEvents(); IN_ClearKeysDown (); IN_Ack (); VW_FadeOut (); CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); DrawMainMenu (); StartCPMusic (MENUSONG); MenuFadeIn (); } #endif #endif switch (which) { case viewscores: if (MainMenu[viewscores].routine == NULL) { if (CP_EndGame (0)) StartGame = 1; } else { DrawMainMenu(); MenuFadeIn (); } break; case backtodemo: StartGame = 1; if (!ingame) StartCPMusic (INTROSONG); VL_FadeOut (0, 255, 0, 0, 0, 10); break; case -1: case quit: CP_Quit (0); break; default: if (!StartGame) { DrawMainMenu (); MenuFadeIn (); } } // // "EXIT OPTIONS" OR "NEW GAME" EXITS // } while (!StartGame); // // DEALLOCATE EVERYTHING // CleanupControlPanel (); // // CHANGE MAINMENU ITEM // if (startgame || loadedgame) EnableEndGameMenuItem(); // RETURN/START GAME EXECUTION #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif } void EnableEndGameMenuItem() { MainMenu[viewscores].routine = NULL; #ifndef JAPAN strcpy (MainMenu[viewscores].string, STR_EG); #endif } //////////////////////// // // DRAW MAIN MENU SCREEN // void DrawMainMenu (void) { #ifdef JAPAN CA_CacheScreen (S_OPTIONSPIC); #else ClearMScreen (); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawStripes (10); VWB_DrawPic (84, 0, C_OPTIONSPIC); #ifdef SPANISH DrawWindow (MENU_X - 8, MENU_Y - 3, MENU_W + 8, MENU_H, BKGDCOLOR); #else DrawWindow (MENU_X - 8, MENU_Y - 3, MENU_W, MENU_H, BKGDCOLOR); #endif #endif // // CHANGE "GAME" AND "DEMO" // if (ingame) { #ifndef JAPAN #ifdef SPANISH strcpy (&MainMenu[backtodemo].string, STR_GAME); #else strcpy (&MainMenu[backtodemo].string[8], STR_GAME); #endif #else CA_CacheGrChunk (C_MRETGAMEPIC); VWB_DrawPic (12 * 8, 20 * 8, C_MRETGAMEPIC); UNCACHEGRCHUNK (C_MRETGAMEPIC); CA_CacheGrChunk (C_MENDGAMEPIC); VWB_DrawPic (12 * 8, 18 * 8, C_MENDGAMEPIC); UNCACHEGRCHUNK (C_MENDGAMEPIC); #endif MainMenu[backtodemo].active = 2; } else { #ifndef JAPAN #ifdef SPANISH strcpy (&MainMenu[backtodemo].string, STR_BD); #else strcpy (&MainMenu[backtodemo].string[8], STR_DEMO); #endif #else CA_CacheGrChunk (C_MRETDEMOPIC); VWB_DrawPic (12 * 8, 20 * 8, C_MRETDEMOPIC); UNCACHEGRCHUNK (C_MRETDEMOPIC); CA_CacheGrChunk (C_MSCORESPIC); VWB_DrawPic (12 * 8, 18 * 8, C_MSCORESPIC); UNCACHEGRCHUNK (C_MSCORESPIC); #endif MainMenu[backtodemo].active = 1; } DrawMenu (&MainItems, &MainMenu[0]); VW_UpdateScreen (); } #ifndef GOODTIMES #ifndef SPEAR //////////////////////////////////////////////////////////////////// // // READ THIS! // //////////////////////////////////////////////////////////////////// int CP_ReadThis (int) { StartCPMusic (CORNER_MUS); HelpScreens (); StartCPMusic (MENUSONG); return true; } #endif #endif #ifdef GOODTIMES //////////////////////////////////////////////////////////////////// // // BOSS KEY // //////////////////////////////////////////////////////////////////// void BossKey (void) { #ifdef NOTYET byte palette1[256][3]; SD_MusicOff (); /* _AX = 3; geninterrupt(0x10); */ _asm { mov eax, 3 int 0x10} puts ("C>"); SetTextCursor (2, 0); // while (!Keyboard[sc_Escape]) IN_Ack (); IN_ClearKeysDown (); SD_MusicOn (); VL_SetVGAPlaneMode (); for (int i = 0; i < 768; i++) palette1[0][i] = 0; VL_SetPalette (&palette1[0][0]); LoadLatchMem (); #endif } #else #ifdef SPEAR void BossKey (void) { #ifdef NOTYET byte palette1[256][3]; SD_MusicOff (); /* _AX = 3; geninterrupt(0x10); */ _asm { mov eax, 3 int 0x10} puts ("C>"); SetTextCursor (2, 0); // while (!Keyboard[sc_Escape]) IN_Ack (); IN_ClearKeysDown (); SD_MusicOn (); VL_SetVGAPlaneMode (); for (int i = 0; i < 768; i++) palette1[0][i] = 0; VL_SetPalette (&palette1[0][0]); LoadLatchMem (); #endif } #endif #endif //////////////////////////////////////////////////////////////////// // // CHECK QUICK-KEYS & QUIT (WHILE IN A GAME) // //////////////////////////////////////////////////////////////////// int CP_CheckQuick (ScanCode scancode) { switch (scancode) { // // END GAME // case sc_F7: CA_CacheGrChunk (STARTFONT + 1); WindowH = 160; #ifdef JAPAN if (GetYorN (7, 8, C_JAPQUITPIC)) #else if (Confirm (ENDGAMESTR)) #endif { playstate = ex_died; killerobj = NULL; pickquick = gamestate.lives = 0; } WindowH = 200; fontnumber = 0; MainMenu[savegame].active = 0; return 1; // // QUICKSAVE // case sc_F8: if (SaveGamesAvail[LSItems.curpos] && pickquick) { CA_CacheGrChunk (STARTFONT + 1); fontnumber = 1; Message (STR_SAVING "..."); CP_SaveGame (1); fontnumber = 0; } else { #ifndef SPEAR CA_CacheGrChunk (STARTFONT + 1); CA_CacheGrChunk (C_CURSOR1PIC); CA_CacheGrChunk (C_CURSOR2PIC); CA_CacheGrChunk (C_DISKLOADING1PIC); CA_CacheGrChunk (C_DISKLOADING2PIC); CA_CacheGrChunk (C_SAVEGAMEPIC); CA_CacheGrChunk (C_MOUSELBACKPIC); #else CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); CA_CacheGrChunk (C_CURSOR1PIC); #endif VW_FadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); lastgamemusicoffset = StartCPMusic (MENUSONG); pickquick = CP_SaveGame (0); SETFONTCOLOR (0, 15); IN_ClearKeysDown (); VW_FadeOut(); if(viewsize != 21) DrawPlayScreen (); if (!startgame && !loadedgame) ContinueMusic (lastgamemusicoffset); if (loadedgame) playstate = ex_abort; lasttimecount = GetTimeCount (); if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement #ifndef SPEAR UNCACHEGRCHUNK (C_CURSOR1PIC); UNCACHEGRCHUNK (C_CURSOR2PIC); UNCACHEGRCHUNK (C_DISKLOADING1PIC); UNCACHEGRCHUNK (C_DISKLOADING2PIC); UNCACHEGRCHUNK (C_SAVEGAMEPIC); UNCACHEGRCHUNK (C_MOUSELBACKPIC); #else UnCacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); #endif } return 1; // // QUICKLOAD // case sc_F9: if (SaveGamesAvail[LSItems.curpos] && pickquick) { char string[100] = STR_LGC; CA_CacheGrChunk (STARTFONT + 1); fontnumber = 1; strcat (string, SaveGameNames[LSItems.curpos]); strcat (string, "\"?"); if (Confirm (string)) CP_LoadGame (1); fontnumber = 0; } else { #ifndef SPEAR CA_CacheGrChunk (STARTFONT + 1); CA_CacheGrChunk (C_CURSOR1PIC); CA_CacheGrChunk (C_CURSOR2PIC); CA_CacheGrChunk (C_DISKLOADING1PIC); CA_CacheGrChunk (C_DISKLOADING2PIC); CA_CacheGrChunk (C_LOADGAMEPIC); CA_CacheGrChunk (C_MOUSELBACKPIC); #else CA_CacheGrChunk (C_CURSOR1PIC); CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); #endif VW_FadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); lastgamemusicoffset = StartCPMusic (MENUSONG); pickquick = CP_LoadGame (0); // loads lastgamemusicoffs SETFONTCOLOR (0, 15); IN_ClearKeysDown (); VW_FadeOut(); if(viewsize != 21) DrawPlayScreen (); if (!startgame && !loadedgame) ContinueMusic (lastgamemusicoffset); if (loadedgame) playstate = ex_abort; lasttimecount = GetTimeCount (); if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement #ifndef SPEAR UNCACHEGRCHUNK (C_CURSOR1PIC); UNCACHEGRCHUNK (C_CURSOR2PIC); UNCACHEGRCHUNK (C_DISKLOADING1PIC); UNCACHEGRCHUNK (C_DISKLOADING2PIC); UNCACHEGRCHUNK (C_LOADGAMEPIC); UNCACHEGRCHUNK (C_MOUSELBACKPIC); #else UnCacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); #endif } return 1; // // QUIT // case sc_F10: CA_CacheGrChunk (STARTFONT + 1); WindowX = WindowY = 0; WindowW = 320; WindowH = 160; #ifdef JAPAN if (GetYorN (7, 8, C_QUITMSGPIC)) #else #ifdef SPANISH if (Confirm (ENDGAMESTR)) #else if (Confirm (endStrings[US_RndT () & 0x7 + (US_RndT () & 1)])) #endif #endif { VW_UpdateScreen (); SD_MusicOff (); SD_StopSound (); MenuFadeOut (); Quit (NULL); } DrawPlayBorder (); WindowH = 200; fontnumber = 0; return 1; } return 0; } //////////////////////////////////////////////////////////////////// // // END THE CURRENT GAME // //////////////////////////////////////////////////////////////////// int CP_EndGame (int) { int res; #ifdef JAPAN res = GetYorN (7, 8, C_JAPQUITPIC); #else res = Confirm (ENDGAMESTR); #endif DrawMainMenu(); if(!res) return 0; pickquick = gamestate.lives = 0; playstate = ex_died; killerobj = NULL; MainMenu[savegame].active = 0; MainMenu[viewscores].routine = CP_ViewScores; #ifndef JAPAN strcpy (MainMenu[viewscores].string, STR_VS); #endif return 1; } //////////////////////////////////////////////////////////////////// // // VIEW THE HIGH SCORES // //////////////////////////////////////////////////////////////////// int CP_ViewScores (int) { fontnumber = 0; #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); StartCPMusic (XAWARD_MUS); #else StartCPMusic (ROSTER_MUS); #endif DrawHighScores (); VW_UpdateScreen (); MenuFadeIn (); fontnumber = 1; IN_Ack (); StartCPMusic (MENUSONG); MenuFadeOut (); #ifdef SPEAR CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return 0; } //////////////////////////////////////////////////////////////////// // // START A NEW GAME // //////////////////////////////////////////////////////////////////// int CP_NewGame (int) { int which, episode; #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif #ifndef SPEAR firstpart: DrawNewEpisode (); do { which = HandleMenu (&NewEitems, &NewEmenu[0], NULL); switch (which) { case -1: MenuFadeOut (); return 0; default: if (!EpisodeSelect[which / 2]) { SD_PlaySound (NOWAYSND); Message ("Please select \"Read This!\"\n" "from the Options menu to\n" "find out how to order this\n" "episode from Apogee."); IN_ClearKeysDown (); IN_Ack (); DrawNewEpisode (); which = 0; } else { episode = which / 2; which = 1; } break; } } while (!which); ShootSnd (); // // ALREADY IN A GAME? // if (ingame) #ifdef JAPAN if (!GetYorN (7, 8, C_JAPNEWGAMEPIC)) #else if (!Confirm (CURGAME)) #endif { MenuFadeOut (); return 0; } MenuFadeOut (); #else episode = 0; // // ALREADY IN A GAME? // CacheLump (NEWGAME_LUMP_START, NEWGAME_LUMP_END); DrawNewGame (); if (ingame) if (!Confirm (CURGAME)) { MenuFadeOut (); UnCacheLump (NEWGAME_LUMP_START, NEWGAME_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); return 0; } #endif DrawNewGame (); which = HandleMenu (&NewItems, &NewMenu[0], DrawNewGameDiff); if (which < 0) { MenuFadeOut (); #ifndef SPEAR goto firstpart; #else UnCacheLump (NEWGAME_LUMP_START, NEWGAME_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); return 0; #endif } ShootSnd (); NewGame (which, episode); StartGame = 1; MenuFadeOut (); // // CHANGE "READ THIS!" TO NORMAL COLOR // #ifndef SPEAR #ifndef GOODTIMES MainMenu[readthis].active = 1; #endif #endif pickquick = 0; #ifdef SPEAR UnCacheLump (NEWGAME_LUMP_START, NEWGAME_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return 0; } #ifndef SPEAR ///////////////////// // // DRAW NEW EPISODE MENU // void DrawNewEpisode (void) { int i; #ifdef JAPAN CA_CacheScreen (S_EPISODEPIC); #else ClearMScreen (); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawWindow (NE_X - 4, NE_Y - 4, NE_W + 8, NE_H + 8, BKGDCOLOR); SETFONTCOLOR (READHCOLOR, BKGDCOLOR); PrintY = 2; WindowX = 0; #ifdef SPANISH US_CPrint ("Cual episodio jugar?"); #else US_CPrint ("Which episode to play?"); #endif #endif SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); DrawMenu (&NewEitems, &NewEmenu[0]); for (i = 0; i < 6; i++) VWB_DrawPic (NE_X + 32, NE_Y + i * 26, C_EPISODE1PIC + i); VW_UpdateScreen (); MenuFadeIn (); WaitKeyUp (); } #endif ///////////////////// // // DRAW NEW GAME MENU // void DrawNewGame (void) { #ifdef JAPAN CA_CacheScreen (S_SKILLPIC); #else ClearMScreen (); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); SETFONTCOLOR (READHCOLOR, BKGDCOLOR); PrintX = NM_X + 20; PrintY = NM_Y - 32; #ifndef SPEAR #ifdef SPANISH US_Print ("Eres macho?"); #else US_Print ("How tough are you?"); #endif #else VWB_DrawPic (PrintX, PrintY, C_HOWTOUGHPIC); #endif DrawWindow (NM_X - 5, NM_Y - 10, NM_W, NM_H, BKGDCOLOR); #endif DrawMenu (&NewItems, &NewMenu[0]); DrawNewGameDiff (NewItems.curpos); VW_UpdateScreen (); MenuFadeIn (); WaitKeyUp (); } //////////////////////// // // DRAW NEW GAME GRAPHIC // void DrawNewGameDiff (int w) { VWB_DrawPic (NM_X + 185, NM_Y + 7, w + C_BABYMODEPIC); } //////////////////////////////////////////////////////////////////// // // HANDLE SOUND MENU // //////////////////////////////////////////////////////////////////// int CP_Sound (int) { int which; #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); CacheLump (SOUND_LUMP_START, SOUND_LUMP_END); #endif DrawSoundMenu (); MenuFadeIn (); WaitKeyUp (); do { which = HandleMenu (&SndItems, &SndMenu[0], NULL); // // HANDLE MENU CHOICES // switch (which) { // // SOUND EFFECTS // case 0: if (SoundMode != sdm_Off) { SD_WaitSoundDone (); SD_SetSoundMode (sdm_Off); DrawSoundMenu (); } break; case 1: if (SoundMode != sdm_PC) { SD_WaitSoundDone (); SD_SetSoundMode (sdm_PC); CA_LoadAllSounds (); DrawSoundMenu (); ShootSnd (); } break; case 2: if (SoundMode != sdm_AdLib) { SD_WaitSoundDone (); SD_SetSoundMode (sdm_AdLib); CA_LoadAllSounds (); DrawSoundMenu (); ShootSnd (); } break; // // DIGITIZED SOUND // case 5: if (DigiMode != sds_Off) { SD_SetDigiDevice (sds_Off); DrawSoundMenu (); } break; case 6: /* if (DigiMode != sds_SoundSource) { SD_SetDigiDevice (sds_SoundSource); DrawSoundMenu (); ShootSnd (); }*/ break; case 7: if (DigiMode != sds_SoundBlaster) { SD_SetDigiDevice (sds_SoundBlaster); DrawSoundMenu (); ShootSnd (); } break; // // MUSIC // case 10: if (MusicMode != smm_Off) { SD_SetMusicMode (smm_Off); DrawSoundMenu (); ShootSnd (); } break; case 11: if (MusicMode != smm_AdLib) { SD_SetMusicMode (smm_AdLib); DrawSoundMenu (); ShootSnd (); StartCPMusic (MENUSONG); } break; } } while (which >= 0); MenuFadeOut (); #ifdef SPEAR UnCacheLump (SOUND_LUMP_START, SOUND_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return 0; } ////////////////////// // // DRAW THE SOUND MENU // void DrawSoundMenu (void) { int i, on; #ifdef JAPAN CA_CacheScreen (S_SOUNDPIC); #else // // DRAW SOUND MENU // ClearMScreen (); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawWindow (SM_X - 8, SM_Y1 - 3, SM_W, SM_H1, BKGDCOLOR); DrawWindow (SM_X - 8, SM_Y2 - 3, SM_W, SM_H2, BKGDCOLOR); DrawWindow (SM_X - 8, SM_Y3 - 3, SM_W, SM_H3, BKGDCOLOR); #endif // // IF NO ADLIB, NON-CHOOSENESS! // if (!AdLibPresent && !SoundBlasterPresent) { SndMenu[2].active = SndMenu[10].active = SndMenu[11].active = 0; } if (!SoundBlasterPresent) SndMenu[7].active = 0; if (!SoundBlasterPresent) SndMenu[5].active = 0; DrawMenu (&SndItems, &SndMenu[0]); #ifndef JAPAN VWB_DrawPic (100, SM_Y1 - 20, C_FXTITLEPIC); VWB_DrawPic (100, SM_Y2 - 20, C_DIGITITLEPIC); VWB_DrawPic (100, SM_Y3 - 20, C_MUSICTITLEPIC); #endif for (i = 0; i < SndItems.amount; i++) #ifdef JAPAN if (i != 3 && i != 4 && i != 8 && i != 9) #else if (SndMenu[i].string[0]) #endif { // // DRAW SELECTED/NOT SELECTED GRAPHIC BUTTONS // on = 0; switch (i) { // // SOUND EFFECTS // case 0: if (SoundMode == sdm_Off) on = 1; break; case 1: if (SoundMode == sdm_PC) on = 1; break; case 2: if (SoundMode == sdm_AdLib) on = 1; break; // // DIGITIZED SOUND // case 5: if (DigiMode == sds_Off) on = 1; break; case 6: // if (DigiMode == sds_SoundSource) // on = 1; break; case 7: if (DigiMode == sds_SoundBlaster) on = 1; break; // // MUSIC // case 10: if (MusicMode == smm_Off) on = 1; break; case 11: if (MusicMode == smm_AdLib) on = 1; break; } if (on) VWB_DrawPic (SM_X + 24, SM_Y1 + i * 13 + 2, C_SELECTEDPIC); else VWB_DrawPic (SM_X + 24, SM_Y1 + i * 13 + 2, C_NOTSELECTEDPIC); } DrawMenuGun (&SndItems); VW_UpdateScreen (); } // // DRAW LOAD/SAVE IN PROGRESS // void DrawLSAction (int which) { #define LSA_X 96 #define LSA_Y 80 #define LSA_W 130 #define LSA_H 42 DrawWindow (LSA_X, LSA_Y, LSA_W, LSA_H, TEXTCOLOR); DrawOutline (LSA_X, LSA_Y, LSA_W, LSA_H, 0, HIGHLIGHT); VWB_DrawPic (LSA_X + 8, LSA_Y + 5, C_DISKLOADING1PIC); fontnumber = 1; SETFONTCOLOR (0, TEXTCOLOR); PrintX = LSA_X + 46; PrintY = LSA_Y + 13; if (!which) US_Print (STR_LOADING "..."); else US_Print (STR_SAVING "..."); VW_UpdateScreen (); } //////////////////////////////////////////////////////////////////// // // LOAD SAVED GAMES // //////////////////////////////////////////////////////////////////// int CP_LoadGame (int quick) { FILE *file; int which, exit = 0; char name[13]; char loadpath[300]; strcpy (name, SaveName); // // QUICKLOAD? // if (quick) { which = LSItems.curpos; if (SaveGamesAvail[which]) { name[7] = which + '0'; #ifdef _arch_dreamcast DC_LoadFromVMU(name); #endif if(configdir[0]) snprintf(loadpath, sizeof(loadpath), "%s/%s", configdir, name); else strcpy(loadpath, name); file = fopen (loadpath, "rb"); fseek (file, 32, SEEK_SET); loadedgame = true; LoadTheGame (file, 0, 0); loadedgame = false; fclose (file); DrawFace (); DrawHealth (); DrawLives (); DrawLevel (); DrawAmmo (); DrawKeys (); DrawWeapon (); DrawScore (); ContinueMusic (lastgamemusicoffset); return 1; } } #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); CacheLump (LOADSAVE_LUMP_START, LOADSAVE_LUMP_END); #endif DrawLoadSaveScreen (0); do { which = HandleMenu (&LSItems, &LSMenu[0], TrackWhichGame); if (which >= 0 && SaveGamesAvail[which]) { ShootSnd (); name[7] = which + '0'; #ifdef _arch_dreamcast DC_LoadFromVMU(name); #endif if(configdir[0]) snprintf(loadpath, sizeof(loadpath), "%s/%s", configdir, name); else strcpy(loadpath, name); file = fopen (loadpath, "rb"); fseek (file, 32, SEEK_SET); DrawLSAction (0); loadedgame = true; LoadTheGame (file, LSA_X + 8, LSA_Y + 5); fclose (file); StartGame = 1; ShootSnd (); // // CHANGE "READ THIS!" TO NORMAL COLOR // #ifndef SPEAR #ifndef GOODTIMES MainMenu[readthis].active = 1; #endif #endif exit = 1; break; } } while (which >= 0); MenuFadeOut (); #ifdef SPEAR UnCacheLump (LOADSAVE_LUMP_START, LOADSAVE_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return exit; } /////////////////////////////////// // // HIGHLIGHT CURRENT SELECTED ENTRY // void TrackWhichGame (int w) { static int lastgameon = 0; PrintLSEntry (lastgameon, TEXTCOLOR); PrintLSEntry (w, HIGHLIGHT); lastgameon = w; } //////////////////////////// // // DRAW THE LOAD/SAVE SCREEN // void DrawLoadSaveScreen (int loadsave) { #define DISKX 100 #define DISKY 0 int i; ClearMScreen (); fontnumber = 1; VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawWindow (LSM_X - 10, LSM_Y - 5, LSM_W, LSM_H, BKGDCOLOR); DrawStripes (10); if (!loadsave) VWB_DrawPic (60, 0, C_LOADGAMEPIC); else VWB_DrawPic (60, 0, C_SAVEGAMEPIC); for (i = 0; i < 10; i++) PrintLSEntry (i, TEXTCOLOR); DrawMenu (&LSItems, &LSMenu[0]); VW_UpdateScreen (); MenuFadeIn (); WaitKeyUp (); } /////////////////////////////////////////// // // PRINT LOAD/SAVE GAME ENTRY W/BOX OUTLINE // void PrintLSEntry (int w, int color) { SETFONTCOLOR (color, BKGDCOLOR); DrawOutline (LSM_X + LSItems.indent, LSM_Y + w * 13, LSM_W - LSItems.indent - 15, 11, color, color); PrintX = LSM_X + LSItems.indent + 2; PrintY = LSM_Y + w * 13 + 1; fontnumber = 0; if (SaveGamesAvail[w]) US_Print (SaveGameNames[w]); else US_Print (" - " STR_EMPTY " -"); fontnumber = 1; } //////////////////////////////////////////////////////////////////// // // SAVE CURRENT GAME // //////////////////////////////////////////////////////////////////// int CP_SaveGame (int quick) { int which, exit = 0; FILE *file; char name[13]; char savepath[300]; char input[32]; strcpy (name, SaveName); // // QUICKSAVE? // if (quick) { which = LSItems.curpos; if (SaveGamesAvail[which]) { name[7] = which + '0'; if(configdir[0]) snprintf(savepath, sizeof(savepath), "%s/%s", configdir, name); else strcpy(savepath, name); unlink (savepath); file = fopen (savepath, "wb"); strcpy (input, &SaveGameNames[which][0]); fwrite (input, 1, 32, file); fseek (file, 32, SEEK_SET); SaveTheGame (file, 0, 0); fclose (file); #ifdef _arch_dreamcast DC_SaveToVMU(name, input); #endif return 1; } } #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); CacheLump (LOADSAVE_LUMP_START, LOADSAVE_LUMP_END); #endif DrawLoadSaveScreen (1); do { which = HandleMenu (&LSItems, &LSMenu[0], TrackWhichGame); if (which >= 0) { // // OVERWRITE EXISTING SAVEGAME? // if (SaveGamesAvail[which]) { #ifdef JAPAN if (!GetYorN (7, 8, C_JAPSAVEOVERPIC)) #else if (!Confirm (GAMESVD)) #endif { DrawLoadSaveScreen (1); continue; } else { DrawLoadSaveScreen (1); PrintLSEntry (which, HIGHLIGHT); VW_UpdateScreen (); } } ShootSnd (); strcpy (input, &SaveGameNames[which][0]); name[7] = which + '0'; fontnumber = 0; if (!SaveGamesAvail[which]) VWB_Bar (LSM_X + LSItems.indent + 1, LSM_Y + which * 13 + 1, LSM_W - LSItems.indent - 16, 10, BKGDCOLOR); VW_UpdateScreen (); if (US_LineInput (LSM_X + LSItems.indent + 2, LSM_Y + which * 13 + 1, input, input, true, 31, LSM_W - LSItems.indent - 30)) { SaveGamesAvail[which] = 1; strcpy (&SaveGameNames[which][0], input); if(configdir[0]) snprintf(savepath, sizeof(savepath), "%s/%s", configdir, name); else strcpy(savepath, name); unlink (savepath); file = fopen (savepath, "wb"); fwrite (input, 32, 1, file); fseek (file, 32, SEEK_SET); DrawLSAction (1); SaveTheGame (file, LSA_X + 8, LSA_Y + 5); fclose (file); #ifdef _arch_dreamcast DC_SaveToVMU(name, input); #endif ShootSnd (); exit = 1; } else { VWB_Bar (LSM_X + LSItems.indent + 1, LSM_Y + which * 13 + 1, LSM_W - LSItems.indent - 16, 10, BKGDCOLOR); PrintLSEntry (which, HIGHLIGHT); VW_UpdateScreen (); SD_PlaySound (ESCPRESSEDSND); continue; } fontnumber = 1; break; } } while (which >= 0); MenuFadeOut (); #ifdef SPEAR UnCacheLump (LOADSAVE_LUMP_START, LOADSAVE_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return exit; } //////////////////////////////////////////////////////////////////// // // DEFINE CONTROLS // //////////////////////////////////////////////////////////////////// int CP_Control (int) { int which; #ifdef SPEAR UnCacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); CacheLump (CONTROL_LUMP_START, CONTROL_LUMP_END); #endif DrawCtlScreen (); MenuFadeIn (); WaitKeyUp (); do { which = HandleMenu (&CtlItems, CtlMenu, NULL); switch (which) { case CTL_MOUSEENABLE: mouseenabled ^= 1; if(IN_IsInputGrabbed()) IN_CenterMouse(); DrawCtlScreen (); CusItems.curpos = -1; ShootSnd (); break; case CTL_JOYENABLE: joystickenabled ^= 1; DrawCtlScreen (); CusItems.curpos = -1; ShootSnd (); break; case CTL_MOUSESENS: case CTL_CUSTOMIZE: DrawCtlScreen (); MenuFadeIn (); WaitKeyUp (); break; } } while (which >= 0); MenuFadeOut (); #ifdef SPEAR UnCacheLump (CONTROL_LUMP_START, CONTROL_LUMP_END); CacheLump (OPTIONS_LUMP_START, OPTIONS_LUMP_END); #endif return 0; } //////////////////////////////// // // DRAW MOUSE SENSITIVITY SCREEN // void DrawMouseSens (void) { #ifdef JAPAN CA_CacheScreen (S_MOUSESENSPIC); #else ClearMScreen (); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); #ifdef SPANISH DrawWindow (10, 80, 300, 43, BKGDCOLOR); #else DrawWindow (10, 80, 300, 30, BKGDCOLOR); #endif WindowX = 0; WindowW = 320; PrintY = 82; SETFONTCOLOR (READCOLOR, BKGDCOLOR); US_CPrint (STR_MOUSEADJ); SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); #ifdef SPANISH PrintX = 14; PrintY = 95 + 13; US_Print (STR_SLOW); PrintX = 252; US_Print (STR_FAST); #else PrintX = 14; PrintY = 95; US_Print (STR_SLOW); PrintX = 269; US_Print (STR_FAST); #endif #endif VWB_Bar (60, 97, 200, 10, TEXTCOLOR); DrawOutline (60, 97, 200, 10, 0, HIGHLIGHT); DrawOutline (60 + 20 * mouseadjustment, 97, 20, 10, 0, READCOLOR); VWB_Bar (61 + 20 * mouseadjustment, 98, 19, 9, READHCOLOR); VW_UpdateScreen (); MenuFadeIn (); } /////////////////////////// // // ADJUST MOUSE SENSITIVITY // int MouseSensitivity (int) { ControlInfo ci; int exit = 0, oldMA; oldMA = mouseadjustment; DrawMouseSens (); do { SDL_Delay(5); ReadAnyControl (&ci); switch (ci.dir) { case dir_North: case dir_West: if (mouseadjustment) { mouseadjustment--; VWB_Bar (60, 97, 200, 10, TEXTCOLOR); DrawOutline (60, 97, 200, 10, 0, HIGHLIGHT); DrawOutline (60 + 20 * mouseadjustment, 97, 20, 10, 0, READCOLOR); VWB_Bar (61 + 20 * mouseadjustment, 98, 19, 9, READHCOLOR); VW_UpdateScreen (); SD_PlaySound (MOVEGUN1SND); TicDelay(20); } break; case dir_South: case dir_East: if (mouseadjustment < 9) { mouseadjustment++; VWB_Bar (60, 97, 200, 10, TEXTCOLOR); DrawOutline (60, 97, 200, 10, 0, HIGHLIGHT); DrawOutline (60 + 20 * mouseadjustment, 97, 20, 10, 0, READCOLOR); VWB_Bar (61 + 20 * mouseadjustment, 98, 19, 9, READHCOLOR); VW_UpdateScreen (); SD_PlaySound (MOVEGUN1SND); TicDelay(20); } break; } if (ci.button0 || Keyboard[sc_Space] || Keyboard[sc_Enter]) exit = 1; else if (ci.button1 || Keyboard[sc_Escape]) exit = 2; } while (!exit); if (exit == 2) { mouseadjustment = oldMA; SD_PlaySound (ESCPRESSEDSND); } else SD_PlaySound (SHOOTSND); WaitKeyUp (); MenuFadeOut (); return 0; } /////////////////////////// // // DRAW CONTROL MENU SCREEN // void DrawCtlScreen (void) { int i, x, y; #ifdef JAPAN CA_CacheScreen (S_CONTROLPIC); #else ClearMScreen (); DrawStripes (10); VWB_DrawPic (80, 0, C_CONTROLPIC); VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawWindow (CTL_X - 8, CTL_Y - 5, CTL_W, CTL_H, BKGDCOLOR); #endif WindowX = 0; WindowW = 320; SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); if (IN_JoyPresent()) CtlMenu[CTL_JOYENABLE].active = 1; if (MousePresent) { CtlMenu[CTL_MOUSESENS].active = CtlMenu[CTL_MOUSEENABLE].active = 1; } CtlMenu[CTL_MOUSESENS].active = mouseenabled; DrawMenu (&CtlItems, CtlMenu); x = CTL_X + CtlItems.indent - 24; y = CTL_Y + 3; if (mouseenabled) VWB_DrawPic (x, y, C_SELECTEDPIC); else VWB_DrawPic (x, y, C_NOTSELECTEDPIC); y = CTL_Y + 29; if (joystickenabled) VWB_DrawPic (x, y, C_SELECTEDPIC); else VWB_DrawPic (x, y, C_NOTSELECTEDPIC); // // PICK FIRST AVAILABLE SPOT // if (CtlItems.curpos < 0 || !CtlMenu[CtlItems.curpos].active) { for (i = 0; i < CtlItems.amount; i++) { if (CtlMenu[i].active) { CtlItems.curpos = i; break; } } } DrawMenuGun (&CtlItems); VW_UpdateScreen (); } //////////////////////////////////////////////////////////////////// // // CUSTOMIZE CONTROLS // //////////////////////////////////////////////////////////////////// enum { FIRE, STRAFE, RUN, OPEN }; char mbarray[4][3] = { "b0", "b1", "b2", "b3" }; int8_t order[4] = { RUN, OPEN, FIRE, STRAFE }; int CustomControls (int) { int which; DrawCustomScreen (); do { which = HandleMenu (&CusItems, &CusMenu[0], FixupCustom); switch (which) { case 0: DefineMouseBtns (); DrawCustMouse (1); break; case 3: DefineJoyBtns (); DrawCustJoy (0); break; case 6: DefineKeyBtns (); DrawCustKeybd (0); break; case 8: DefineKeyMove (); DrawCustKeys (0); } } while (which >= 0); MenuFadeOut (); return 0; } //////////////////////// // // DEFINE THE MOUSE BUTTONS // void DefineMouseBtns (void) { CustomCtrls mouseallowed = { 0, 1, 1, 1 }; EnterCtrlData (2, &mouseallowed, DrawCustMouse, PrintCustMouse, MOUSE); } //////////////////////// // // DEFINE THE JOYSTICK BUTTONS // void DefineJoyBtns (void) { CustomCtrls joyallowed = { 1, 1, 1, 1 }; EnterCtrlData (5, &joyallowed, DrawCustJoy, PrintCustJoy, JOYSTICK); } //////////////////////// // // DEFINE THE KEYBOARD BUTTONS // void DefineKeyBtns (void) { CustomCtrls keyallowed = { 1, 1, 1, 1 }; EnterCtrlData (8, &keyallowed, DrawCustKeybd, PrintCustKeybd, KEYBOARDBTNS); } //////////////////////// // // DEFINE THE KEYBOARD BUTTONS // void DefineKeyMove (void) { CustomCtrls keyallowed = { 1, 1, 1, 1 }; EnterCtrlData (10, &keyallowed, DrawCustKeys, PrintCustKeys, KEYBOARDMOVE); } //////////////////////// // // ENTER CONTROL DATA FOR ANY TYPE OF CONTROL // enum { FWRD, RIGHT, BKWD, LEFT }; int moveorder[4] = { LEFT, RIGHT, FWRD, BKWD }; void EnterCtrlData (int index, CustomCtrls * cust, void (*DrawRtn) (int), void (*PrintRtn) (int), int type) { int j, exit, tick, redraw, which, x, picked, lastFlashTime; ControlInfo ci; ShootSnd (); PrintY = CST_Y + 13 * index; IN_ClearKeysDown (); exit = 0; redraw = 1; // // FIND FIRST SPOT IN ALLOWED ARRAY // for (j = 0; j < 4; j++) if (cust->allowed[j]) { which = j; break; } do { if (redraw) { x = CST_START + CST_SPC * which; DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); DrawRtn (1); DrawWindow (x - 2, PrintY, CST_SPC, 11, TEXTCOLOR); DrawOutline (x - 2, PrintY, CST_SPC, 11, 0, HIGHLIGHT); SETFONTCOLOR (0, TEXTCOLOR); PrintRtn (which); PrintX = x; SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); VW_UpdateScreen (); WaitKeyUp (); redraw = 0; } SDL_Delay(5); ReadAnyControl (&ci); if (type == MOUSE || type == JOYSTICK) if (IN_KeyDown (sc_Enter) || IN_KeyDown (sc_Control) || IN_KeyDown (sc_Alt)) { IN_ClearKeysDown (); ci.button0 = ci.button1 = false; } // // CHANGE BUTTON VALUE? // if ((type != KEYBOARDBTNS && type != KEYBOARDMOVE) && (ci.button0 | ci.button1 | ci.button2 | ci.button3) || ((type == KEYBOARDBTNS || type == KEYBOARDMOVE) && LastScan == sc_Enter)) { lastFlashTime = GetTimeCount(); tick = picked = 0; SETFONTCOLOR (0, TEXTCOLOR); if (type == KEYBOARDBTNS || type == KEYBOARDMOVE) IN_ClearKeysDown (); while(1) { int button, result = 0; // // FLASH CURSOR // if (GetTimeCount() - lastFlashTime > 10) { switch (tick) { case 0: VWB_Bar (x, PrintY + 1, CST_SPC - 2, 10, TEXTCOLOR); break; case 1: PrintX = x; US_Print ("?"); SD_PlaySound (HITWALLSND); } tick ^= 1; lastFlashTime = GetTimeCount(); VW_UpdateScreen (); } else SDL_Delay(5); // // WHICH TYPE OF INPUT DO WE PROCESS? // switch (type) { case MOUSE: button = IN_MouseButtons(); switch (button) { case 1: result = 1; break; case 2: result = 2; break; case 4: result = 3; break; } if (result) { for (int z = 0; z < 4; z++) if (order[which] == buttonmouse[z]) { buttonmouse[z] = bt_nobutton; break; } buttonmouse[result - 1] = order[which]; picked = 1; SD_PlaySound (SHOOTDOORSND); } break; case JOYSTICK: if (ci.button0) result = 1; else if (ci.button1) result = 2; else if (ci.button2) result = 3; else if (ci.button3) result = 4; if (result) { for (int z = 0; z < 4; z++) { if (order[which] == buttonjoy[z]) { buttonjoy[z] = bt_nobutton; break; } } buttonjoy[result - 1] = order[which]; picked = 1; SD_PlaySound (SHOOTDOORSND); } break; case KEYBOARDBTNS: if (LastScan && LastScan != sc_Escape) { buttonscan[order[which]] = LastScan; picked = 1; ShootSnd (); IN_ClearKeysDown (); } break; case KEYBOARDMOVE: if (LastScan && LastScan != sc_Escape) { dirscan[moveorder[which]] = LastScan; picked = 1; ShootSnd (); IN_ClearKeysDown (); } break; } // // EXIT INPUT? // if (IN_KeyDown (sc_Escape) || type != JOYSTICK && ci.button1) { picked = 1; SD_PlaySound (ESCPRESSEDSND); } if(picked) break; ReadAnyControl (&ci); } SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); redraw = 1; WaitKeyUp (); continue; } if (ci.button1 || IN_KeyDown (sc_Escape)) exit = 1; // // MOVE TO ANOTHER SPOT? // switch (ci.dir) { case dir_West: do { which--; if (which < 0) which = 3; } while (!cust->allowed[which]); redraw = 1; SD_PlaySound (MOVEGUN1SND); while (ReadAnyControl (&ci), ci.dir != dir_None) SDL_Delay(5); IN_ClearKeysDown (); break; case dir_East: do { which++; if (which > 3) which = 0; } while (!cust->allowed[which]); redraw = 1; SD_PlaySound (MOVEGUN1SND); while (ReadAnyControl (&ci), ci.dir != dir_None) SDL_Delay(5); IN_ClearKeysDown (); break; case dir_North: case dir_South: exit = 1; } } while (!exit); SD_PlaySound (ESCPRESSEDSND); WaitKeyUp (); DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); } //////////////////////// // // FIXUP GUN CURSOR OVERDRAW SHIT // void FixupCustom (int w) { static int lastwhich = -1; int y = CST_Y + 26 + w * 13; VWB_Hlin (7, 32, y - 1, DEACTIVE); VWB_Hlin (7, 32, y + 12, BORD2COLOR); #ifndef SPEAR VWB_Hlin (7, 32, y - 2, BORDCOLOR); VWB_Hlin (7, 32, y + 13, BORDCOLOR); #else VWB_Hlin (7, 32, y - 2, BORD2COLOR); VWB_Hlin (7, 32, y + 13, BORD2COLOR); #endif switch (w) { case 0: DrawCustMouse (1); break; case 3: DrawCustJoy (1); break; case 6: DrawCustKeybd (1); break; case 8: DrawCustKeys (1); } if (lastwhich >= 0) { y = CST_Y + 26 + lastwhich * 13; VWB_Hlin (7, 32, y - 1, DEACTIVE); VWB_Hlin (7, 32, y + 12, BORD2COLOR); #ifndef SPEAR VWB_Hlin (7, 32, y - 2, BORDCOLOR); VWB_Hlin (7, 32, y + 13, BORDCOLOR); #else VWB_Hlin (7, 32, y - 2, BORD2COLOR); VWB_Hlin (7, 32, y + 13, BORD2COLOR); #endif if (lastwhich != w) switch (lastwhich) { case 0: DrawCustMouse (0); break; case 3: DrawCustJoy (0); break; case 6: DrawCustKeybd (0); break; case 8: DrawCustKeys (0); } } lastwhich = w; } //////////////////////// // // DRAW CUSTOMIZE SCREEN // void DrawCustomScreen (void) { int i; #ifdef JAPAN CA_CacheScreen (S_CUSTOMPIC); fontnumber = 1; PrintX = CST_START; PrintY = CST_Y + 26; DrawCustMouse (0); PrintX = CST_START; US_Print ("\n\n\n"); DrawCustJoy (0); PrintX = CST_START; US_Print ("\n\n\n"); DrawCustKeybd (0); PrintX = CST_START; US_Print ("\n\n\n"); DrawCustKeys (0); #else ClearMScreen (); WindowX = 0; WindowW = 320; VWB_DrawPic (112, 184, C_MOUSELBACKPIC); DrawStripes (10); VWB_DrawPic (80, 0, C_CUSTOMIZEPIC); // // MOUSE // SETFONTCOLOR (READCOLOR, BKGDCOLOR); WindowX = 0; WindowW = 320; #ifndef SPEAR PrintY = CST_Y; US_CPrint ("Mouse\n"); #else PrintY = CST_Y + 13; VWB_DrawPic (128, 48, C_MOUSEPIC); #endif SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); #ifdef SPANISH PrintX = CST_START - 16; US_Print (STR_CRUN); PrintX = CST_START - 16 + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START - 16 + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START - 16 + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #else PrintX = CST_START; US_Print (STR_CRUN); PrintX = CST_START + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #endif DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); DrawCustMouse (0); US_Print ("\n"); // // JOYSTICK/PAD // #ifndef SPEAR SETFONTCOLOR (READCOLOR, BKGDCOLOR); US_CPrint ("Joystick/Gravis GamePad\n"); #else PrintY += 13; VWB_DrawPic (40, 88, C_JOYSTICKPIC); #endif #ifdef SPEAR VWB_DrawPic (112, 120, C_KEYBOARDPIC); #endif SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); #ifdef SPANISH PrintX = CST_START - 16; US_Print (STR_CRUN); PrintX = CST_START - 16 + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START - 16 + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START - 16 + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #else PrintX = CST_START; US_Print (STR_CRUN); PrintX = CST_START + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #endif DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); DrawCustJoy (0); US_Print ("\n"); // // KEYBOARD // #ifndef SPEAR SETFONTCOLOR (READCOLOR, BKGDCOLOR); US_CPrint ("Keyboard\n"); #else PrintY += 13; #endif SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); #ifdef SPANISH PrintX = CST_START - 16; US_Print (STR_CRUN); PrintX = CST_START - 16 + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START - 16 + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START - 16 + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #else PrintX = CST_START; US_Print (STR_CRUN); PrintX = CST_START + CST_SPC * 1; US_Print (STR_COPEN); PrintX = CST_START + CST_SPC * 2; US_Print (STR_CFIRE); PrintX = CST_START + CST_SPC * 3; US_Print (STR_CSTRAFE "\n"); #endif DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); DrawCustKeybd (0); US_Print ("\n"); // // KEYBOARD MOVE KEYS // SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); #ifdef SPANISH PrintX = 4; US_Print (STR_LEFT); US_Print ("/"); US_Print (STR_RIGHT); US_Print ("/"); US_Print (STR_FRWD); US_Print ("/"); US_Print (STR_BKWD "\n"); #else PrintX = CST_START; US_Print (STR_LEFT); PrintX = CST_START + CST_SPC * 1; US_Print (STR_RIGHT); PrintX = CST_START + CST_SPC * 2; US_Print (STR_FRWD); PrintX = CST_START + CST_SPC * 3; US_Print (STR_BKWD "\n"); #endif DrawWindow (5, PrintY - 1, 310, 13, BKGDCOLOR); DrawCustKeys (0); #endif // // PICK STARTING POINT IN MENU // if (CusItems.curpos < 0) for (i = 0; i < CusItems.amount; i++) if (CusMenu[i].active) { CusItems.curpos = i; break; } VW_UpdateScreen (); MenuFadeIn (); } void PrintCustMouse (int i) { int j; for (j = 0; j < 4; j++) if (order[i] == buttonmouse[j]) { PrintX = CST_START + CST_SPC * i; US_Print (mbarray[j]); break; } } void DrawCustMouse (int hilight) { int i, color; color = TEXTCOLOR; if (hilight) color = HIGHLIGHT; SETFONTCOLOR (color, BKGDCOLOR); if (!mouseenabled) { SETFONTCOLOR (DEACTIVE, BKGDCOLOR); CusMenu[0].active = 0; } else CusMenu[0].active = 1; PrintY = CST_Y + 13 * 2; for (i = 0; i < 4; i++) PrintCustMouse (i); } void PrintCustJoy (int i) { for (int j = 0; j < 4; j++) { if (order[i] == buttonjoy[j]) { PrintX = CST_START + CST_SPC * i; US_Print (mbarray[j]); break; } } } void DrawCustJoy (int hilight) { int i, color; color = TEXTCOLOR; if (hilight) color = HIGHLIGHT; SETFONTCOLOR (color, BKGDCOLOR); if (!joystickenabled) { SETFONTCOLOR (DEACTIVE, BKGDCOLOR); CusMenu[3].active = 0; } else CusMenu[3].active = 1; PrintY = CST_Y + 13 * 5; for (i = 0; i < 4; i++) PrintCustJoy (i); } void PrintCustKeybd (int i) { PrintX = CST_START + CST_SPC * i; US_Print ((const char *) IN_GetScanName (buttonscan[order[i]])); } void DrawCustKeybd (int hilight) { int i, color; color = TEXTCOLOR; if (hilight) color = HIGHLIGHT; SETFONTCOLOR (color, BKGDCOLOR); PrintY = CST_Y + 13 * 8; for (i = 0; i < 4; i++) PrintCustKeybd (i); } void PrintCustKeys (int i) { PrintX = CST_START + CST_SPC * i; US_Print ((const char *) IN_GetScanName (dirscan[moveorder[i]])); } void DrawCustKeys (int hilight) { int i, color; color = TEXTCOLOR; if (hilight) color = HIGHLIGHT; SETFONTCOLOR (color, BKGDCOLOR); PrintY = CST_Y + 13 * 10; for (i = 0; i < 4; i++) PrintCustKeys (i); } //////////////////////////////////////////////////////////////////// // // CHANGE SCREEN VIEWING SIZE // //////////////////////////////////////////////////////////////////// int CP_ChangeView (int) { int exit = 0, oldview, newview; ControlInfo ci; WindowX = WindowY = 0; WindowW = 320; WindowH = 200; newview = oldview = viewsize; DrawChangeView (oldview); MenuFadeIn (); do { CheckPause (); SDL_Delay(5); ReadAnyControl (&ci); switch (ci.dir) { case dir_South: case dir_West: newview--; if (newview < 4) newview = 4; if(newview >= 19) DrawChangeView(newview); else ShowViewSize (newview); VW_UpdateScreen (); SD_PlaySound (HITWALLSND); TicDelay (10); break; case dir_North: case dir_East: newview++; if (newview >= 21) { newview = 21; DrawChangeView(newview); } else ShowViewSize (newview); VW_UpdateScreen (); SD_PlaySound (HITWALLSND); TicDelay (10); break; } if (ci.button0 || Keyboard[sc_Enter]) exit = 1; else if (ci.button1 || Keyboard[sc_Escape]) { SD_PlaySound (ESCPRESSEDSND); MenuFadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); return 0; } } while (!exit); if (oldview != newview) { SD_PlaySound (SHOOTSND); Message (STR_THINK "..."); NewViewSize (newview); } ShootSnd (); MenuFadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); return 0; } ///////////////////////////// // // DRAW THE CHANGEVIEW SCREEN // void DrawChangeView (int view) { int rescaledHeight = screenHeight / scaleFactor; if(view != 21) VWB_Bar (0, rescaledHeight - 40, 320, 40, bordercol); #ifdef JAPAN CA_CacheScreen (S_CHANGEPIC); ShowViewSize (view); #else ShowViewSize (view); PrintY = (screenHeight / scaleFactor) - 39; WindowX = 0; WindowY = 320; // TODO: Check this! SETFONTCOLOR (HIGHLIGHT, BKGDCOLOR); US_CPrint (STR_SIZE1 "\n"); US_CPrint (STR_SIZE2 "\n"); US_CPrint (STR_SIZE3); #endif VW_UpdateScreen (); } //////////////////////////////////////////////////////////////////// // // QUIT THIS INFERNAL GAME! // //////////////////////////////////////////////////////////////////// int CP_Quit (int) { #ifdef JAPAN if (GetYorN (7, 11, C_QUITMSGPIC)) #else #ifdef SPANISH if (Confirm (ENDGAMESTR)) #else if (Confirm (endStrings[US_RndT () & 0x7 + (US_RndT () & 1)])) #endif #endif { VW_UpdateScreen (); SD_MusicOff (); SD_StopSound (); MenuFadeOut (); Quit (NULL); } DrawMainMenu (); return 0; } //////////////////////////////////////////////////////////////////// // // HANDLE INTRO SCREEN (SYSTEM CONFIG) // //////////////////////////////////////////////////////////////////// void IntroScreen (void) { #ifdef SPEAR #define MAINCOLOR 0x4f #define EMSCOLOR 0x4f #define XMSCOLOR 0x4f #else #define MAINCOLOR 0x6c #define EMSCOLOR 0x6c // 0x4f #define XMSCOLOR 0x6c // 0x7f #endif #define FILLCOLOR 14 // long memory; // long emshere,xmshere; int i; /* int ems[10]={100,200,300,400,500,600,700,800,900,1000}, xms[10]={100,200,300,400,500,600,700,800,900,1000}; int main[10]={32,64,96,128,160,192,224,256,288,320};*/ // // DRAW MAIN MEMORY // #ifdef ABCAUS memory = (1023l + mminfo.nearheap + mminfo.farheap) / 1024l; for (i = 0; i < 10; i++) if (memory >= main[i]) VWB_Bar (49, 163 - 8 * i, 6, 5, MAINCOLOR - i); // // DRAW EMS MEMORY // if (EMSPresent) { emshere = 4l * EMSPagesAvail; for (i = 0; i < 10; i++) if (emshere >= ems[i]) VWB_Bar (89, 163 - 8 * i, 6, 5, EMSCOLOR - i); } // // DRAW XMS MEMORY // if (XMSPresent) { xmshere = 4l * XMSPagesAvail; for (i = 0; i < 10; i++) if (xmshere >= xms[i]) VWB_Bar (129, 163 - 8 * i, 6, 5, XMSCOLOR - i); } #else for (i = 0; i < 10; i++) VWB_Bar (49, 163 - 8 * i, 6, 5, MAINCOLOR - i); for (i = 0; i < 10; i++) VWB_Bar (89, 163 - 8 * i, 6, 5, EMSCOLOR - i); for (i = 0; i < 10; i++) VWB_Bar (129, 163 - 8 * i, 6, 5, XMSCOLOR - i); #endif // // FILL BOXES // if (MousePresent) VWB_Bar (164, 82, 12, 2, FILLCOLOR); if (IN_JoyPresent()) VWB_Bar (164, 105, 12, 2, FILLCOLOR); if (AdLibPresent && !SoundBlasterPresent) VWB_Bar (164, 128, 12, 2, FILLCOLOR); if (SoundBlasterPresent) VWB_Bar (164, 151, 12, 2, FILLCOLOR); // if (SoundSourcePresent) // VWB_Bar (164, 174, 12, 2, FILLCOLOR); } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // // SUPPORT ROUTINES // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // // Clear Menu screens to dark red // //////////////////////////////////////////////////////////////////// void ClearMScreen (void) { #ifndef SPEAR VWB_Bar (0, 0, 320, 200, BORDCOLOR); #else VWB_DrawPic (0, 0, C_BACKDROPPIC); #endif } //////////////////////////////////////////////////////////////////// // // Un/Cache a LUMP of graphics // //////////////////////////////////////////////////////////////////// void CacheLump (int lumpstart, int lumpend) { int i; for (i = lumpstart; i <= lumpend; i++) CA_CacheGrChunk (i); } void UnCacheLump (int lumpstart, int lumpend) { int i; for (i = lumpstart; i <= lumpend; i++) if (grsegs[i]) UNCACHEGRCHUNK (i); } //////////////////////////////////////////////////////////////////// // // Draw a window for a menu // //////////////////////////////////////////////////////////////////// void DrawWindow (int x, int y, int w, int h, int wcolor) { VWB_Bar (x, y, w, h, wcolor); DrawOutline (x, y, w, h, BORD2COLOR, DEACTIVE); } void DrawOutline (int x, int y, int w, int h, int color1, int color2) { VWB_Hlin (x, x + w, y, color2); VWB_Vlin (y, y + h, x, color2); VWB_Hlin (x, x + w, y + h, color1); VWB_Vlin (y, y + h, x + w, color1); } //////////////////////////////////////////////////////////////////// // // Setup Control Panel stuff - graphics, etc. // //////////////////////////////////////////////////////////////////// void SetupControlPanel (void) { // // CACHE GRAPHICS & SOUNDS // CA_CacheGrChunk (STARTFONT + 1); #ifndef SPEAR CacheLump (CONTROLS_LUMP_START, CONTROLS_LUMP_END); #else CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); #endif SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); fontnumber = 1; WindowH = 200; if(screenHeight % 200 != 0) VL_ClearScreen(0); if (!ingame) CA_LoadAllSounds (); else MainMenu[savegame].active = 1; // // CENTER MOUSE // if(IN_IsInputGrabbed()) IN_CenterMouse(); } //////////////////////////////////////////////////////////////////// // // SEE WHICH SAVE GAME FILES ARE AVAILABLE & READ STRING IN // //////////////////////////////////////////////////////////////////// void SetupSaveGames() { char name[13]; char savepath[300]; strcpy(name, SaveName); for(int i = 0; i < 10; i++) { name[7] = '0' + i; #ifdef _arch_dreamcast // Try to unpack file if(DC_LoadFromVMU(name)) { #endif if(configdir[0]) snprintf(savepath, sizeof(savepath), "%s/%s", configdir, name); else strcpy(savepath, name); const int handle = open(savepath, O_RDONLY | O_BINARY); if(handle >= 0) { char temp[32]; SaveGamesAvail[i] = 1; read(handle, temp, 32); close(handle); strcpy(&SaveGameNames[i][0], temp); } #ifdef _arch_dreamcast // Remove unpacked version of file fs_unlink(name); } #endif } } //////////////////////////////////////////////////////////////////// // // Clean up all the Control Panel stuff // //////////////////////////////////////////////////////////////////// void CleanupControlPanel (void) { #ifndef SPEAR UnCacheLump (CONTROLS_LUMP_START, CONTROLS_LUMP_END); #else UnCacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); #endif fontnumber = 0; } //////////////////////////////////////////////////////////////////// // // Handle moving gun around a menu // //////////////////////////////////////////////////////////////////// int HandleMenu (CP_iteminfo * item_i, CP_itemtype * items, void (*routine) (int w)) { char key; static int redrawitem = 1, lastitem = -1; int i, x, y, basey, exit, which, shape; int32_t lastBlinkTime, timer; ControlInfo ci; which = item_i->curpos; x = item_i->x & -8; basey = item_i->y - 2; y = basey + which * 13; VWB_DrawPic (x, y, C_CURSOR1PIC); SetTextColor (items + which, 1); if (redrawitem) { PrintX = item_i->x + item_i->indent; PrintY = item_i->y + which * 13; US_Print ((items + which)->string); } // // CALL CUSTOM ROUTINE IF IT IS NEEDED // if (routine) routine (which); VW_UpdateScreen (); shape = C_CURSOR1PIC; timer = 8; exit = 0; lastBlinkTime = GetTimeCount (); IN_ClearKeysDown (); do { // // CHANGE GUN SHAPE // if ((int32_t)GetTimeCount () - lastBlinkTime > timer) { lastBlinkTime = GetTimeCount (); if (shape == C_CURSOR1PIC) { shape = C_CURSOR2PIC; timer = 8; } else { shape = C_CURSOR1PIC; timer = 70; } VWB_DrawPic (x, y, shape); if (routine) routine (which); VW_UpdateScreen (); } else SDL_Delay(5); CheckPause (); // // SEE IF ANY KEYS ARE PRESSED FOR INITIAL CHAR FINDING // key = LastASCII; if (key) { int ok = 0; if (key >= 'a') key -= 'a' - 'A'; for (i = which + 1; i < item_i->amount; i++) if ((items + i)->active && (items + i)->string[0] == key) { EraseGun (item_i, items, x, y, which); which = i; DrawGun (item_i, items, x, &y, which, basey, routine); ok = 1; IN_ClearKeysDown (); break; } // // DIDN'T FIND A MATCH FIRST TIME THRU. CHECK AGAIN. // if (!ok) { for (i = 0; i < which; i++) if ((items + i)->active && (items + i)->string[0] == key) { EraseGun (item_i, items, x, y, which); which = i; DrawGun (item_i, items, x, &y, which, basey, routine); IN_ClearKeysDown (); break; } } } // // GET INPUT // ReadAnyControl (&ci); switch (ci.dir) { //////////////////////////////////////////////// // // MOVE UP // case dir_North: EraseGun (item_i, items, x, y, which); // // ANIMATE HALF-STEP // if (which && (items + which - 1)->active) { y -= 6; DrawHalfStep (x, y); } // // MOVE TO NEXT AVAILABLE SPOT // do { if (!which) which = item_i->amount - 1; else which--; } while (!(items + which)->active); DrawGun (item_i, items, x, &y, which, basey, routine); // // WAIT FOR BUTTON-UP OR DELAY NEXT MOVE // TicDelay (20); break; //////////////////////////////////////////////// // // MOVE DOWN // case dir_South: EraseGun (item_i, items, x, y, which); // // ANIMATE HALF-STEP // if (which != item_i->amount - 1 && (items + which + 1)->active) { y += 6; DrawHalfStep (x, y); } do { if (which == item_i->amount - 1) which = 0; else which++; } while (!(items + which)->active); DrawGun (item_i, items, x, &y, which, basey, routine); // // WAIT FOR BUTTON-UP OR DELAY NEXT MOVE // TicDelay (20); break; } if (ci.button0 || Keyboard[sc_Space] || Keyboard[sc_Enter]) exit = 1; if (ci.button1 && !Keyboard[sc_Alt] || Keyboard[sc_Escape]) exit = 2; } while (!exit); IN_ClearKeysDown (); // // ERASE EVERYTHING // if (lastitem != which) { VWB_Bar (x - 1, y, 25, 16, BKGDCOLOR); PrintX = item_i->x + item_i->indent; PrintY = item_i->y + which * 13; US_Print ((items + which)->string); redrawitem = 1; } else redrawitem = 0; if (routine) routine (which); VW_UpdateScreen (); item_i->curpos = which; lastitem = which; switch (exit) { case 1: // // CALL THE ROUTINE // if ((items + which)->routine != NULL) { ShootSnd (); MenuFadeOut (); (items + which)->routine (0); } return which; case 2: SD_PlaySound (ESCPRESSEDSND); return -1; } return 0; // JUST TO SHUT UP THE ERROR MESSAGES! } // // ERASE GUN & DE-HIGHLIGHT STRING // void EraseGun (CP_iteminfo * item_i, CP_itemtype * items, int x, int y, int which) { VWB_Bar (x - 1, y, 25, 16, BKGDCOLOR); SetTextColor (items + which, 0); PrintX = item_i->x + item_i->indent; PrintY = item_i->y + which * 13; US_Print ((items + which)->string); VW_UpdateScreen (); } // // DRAW HALF STEP OF GUN TO NEXT POSITION // void DrawHalfStep (int x, int y) { VWB_DrawPic (x, y, C_CURSOR1PIC); VW_UpdateScreen (); SD_PlaySound (MOVEGUN1SND); SDL_Delay (8 * 100 / 7); } // // DRAW GUN AT NEW POSITION // void DrawGun (CP_iteminfo * item_i, CP_itemtype * items, int x, int *y, int which, int basey, void (*routine) (int w)) { VWB_Bar (x - 1, *y, 25, 16, BKGDCOLOR); *y = basey + which * 13; VWB_DrawPic (x, *y, C_CURSOR1PIC); SetTextColor (items + which, 1); PrintX = item_i->x + item_i->indent; PrintY = item_i->y + which * 13; US_Print ((items + which)->string); // // CALL CUSTOM ROUTINE IF IT IS NEEDED // if (routine) routine (which); VW_UpdateScreen (); SD_PlaySound (MOVEGUN2SND); } //////////////////////////////////////////////////////////////////// // // DELAY FOR AN AMOUNT OF TICS OR UNTIL CONTROLS ARE INACTIVE // //////////////////////////////////////////////////////////////////// void TicDelay (int count) { ControlInfo ci; int32_t startTime = GetTimeCount (); do { SDL_Delay(5); ReadAnyControl (&ci); } while ((int32_t) GetTimeCount () - startTime < count && ci.dir != dir_None); } //////////////////////////////////////////////////////////////////// // // Draw a menu // //////////////////////////////////////////////////////////////////// void DrawMenu (CP_iteminfo * item_i, CP_itemtype * items) { int i, which = item_i->curpos; WindowX = PrintX = item_i->x + item_i->indent; WindowY = PrintY = item_i->y; WindowW = 320; WindowH = 200; for (i = 0; i < item_i->amount; i++) { SetTextColor (items + i, which == i); PrintY = item_i->y + i * 13; if ((items + i)->active) US_Print ((items + i)->string); else { SETFONTCOLOR (DEACTIVE, BKGDCOLOR); US_Print ((items + i)->string); SETFONTCOLOR (TEXTCOLOR, BKGDCOLOR); } US_Print ("\n"); } } //////////////////////////////////////////////////////////////////// // // SET TEXT COLOR (HIGHLIGHT OR NO) // //////////////////////////////////////////////////////////////////// void SetTextColor (CP_itemtype * items, int hlight) { if (hlight) { SETFONTCOLOR (color_hlite[items->active], BKGDCOLOR); } else { SETFONTCOLOR (color_norml[items->active], BKGDCOLOR); } } //////////////////////////////////////////////////////////////////// // // WAIT FOR CTRLKEY-UP OR BUTTON-UP // //////////////////////////////////////////////////////////////////// void WaitKeyUp (void) { ControlInfo ci; while (ReadAnyControl (&ci), ci.button0 | ci.button1 | ci.button2 | ci.button3 | Keyboard[sc_Space] | Keyboard[sc_Enter] | Keyboard[sc_Escape]) { IN_WaitAndProcessEvents(); } } //////////////////////////////////////////////////////////////////// // // READ KEYBOARD, JOYSTICK AND MOUSE FOR INPUT // //////////////////////////////////////////////////////////////////// void ReadAnyControl (ControlInfo * ci) { int mouseactive = 0; IN_ReadControl (0, ci); if (mouseenabled && IN_IsInputGrabbed()) { int mousex, mousey, buttons; buttons = SDL_GetMouseState(&mousex, &mousey); int middlePressed = buttons & SDL_BUTTON(SDL_BUTTON_MIDDLE); int rightPressed = buttons & SDL_BUTTON(SDL_BUTTON_RIGHT); buttons &= ~(SDL_BUTTON(SDL_BUTTON_MIDDLE) | SDL_BUTTON(SDL_BUTTON_RIGHT)); if(middlePressed) buttons |= 1 << 2; if(rightPressed) buttons |= 1 << 1; if(mousey - CENTERY < -SENSITIVE) { ci->dir = dir_North; mouseactive = 1; } else if(mousey - CENTERY > SENSITIVE) { ci->dir = dir_South; mouseactive = 1; } if(mousex - CENTERX < -SENSITIVE) { ci->dir = dir_West; mouseactive = 1; } else if(mousex - CENTERX > SENSITIVE) { ci->dir = dir_East; mouseactive = 1; } if(mouseactive) IN_CenterMouse(); if (buttons) { ci->button0 = buttons & 1; ci->button1 = buttons & 2; ci->button2 = buttons & 4; ci->button3 = false; mouseactive = 1; } } if (joystickenabled && !mouseactive) { int jx, jy, jb; IN_GetJoyDelta (&jx, &jy); if (jy < -SENSITIVE) ci->dir = dir_North; else if (jy > SENSITIVE) ci->dir = dir_South; if (jx < -SENSITIVE) ci->dir = dir_West; else if (jx > SENSITIVE) ci->dir = dir_East; jb = IN_JoyButtons (); if (jb) { ci->button0 = jb & 1; ci->button1 = jb & 2; ci->button2 = jb & 4; ci->button3 = jb & 8; } } } //////////////////////////////////////////////////////////////////// // // DRAW DIALOG AND CONFIRM YES OR NO TO QUESTION // //////////////////////////////////////////////////////////////////// int Confirm (const char *string) { int xit = 0, x, y, tick = 0, lastBlinkTime; int whichsnd[2] = { ESCPRESSEDSND, SHOOTSND }; ControlInfo ci; Message (string); IN_ClearKeysDown (); WaitKeyUp (); // // BLINK CURSOR // x = PrintX; y = PrintY; lastBlinkTime = GetTimeCount(); do { ReadAnyControl(&ci); if (GetTimeCount() - lastBlinkTime >= 10) { switch (tick) { case 0: VWB_Bar (x, y, 8, 13, TEXTCOLOR); break; case 1: PrintX = x; PrintY = y; US_Print ("_"); } VW_UpdateScreen (); tick ^= 1; lastBlinkTime = GetTimeCount(); } else SDL_Delay(5); #ifdef SPANISH } while (!Keyboard[sc_S] && !Keyboard[sc_N] && !Keyboard[sc_Escape]); #else } while (!Keyboard[sc_Y] && !Keyboard[sc_N] && !Keyboard[sc_Escape] && !ci.button0 && !ci.button1); #endif #ifdef SPANISH if (Keyboard[sc_S] || ci.button0) { xit = 1; ShootSnd (); } #else if (Keyboard[sc_Y] || ci.button0) { xit = 1; ShootSnd (); } #endif IN_ClearKeysDown (); WaitKeyUp (); SD_PlaySound ((soundnames) whichsnd[xit]); return xit; } #ifdef JAPAN //////////////////////////////////////////////////////////////////// // // DRAW MESSAGE & GET Y OR N // //////////////////////////////////////////////////////////////////// int GetYorN (int x, int y, int pic) { int xit = 0; soundnames whichsnd[2] = { ESCPRESSEDSND, SHOOTSND }; CA_CacheGrChunk (pic); VWB_DrawPic (x * 8, y * 8, pic); UNCACHEGRCHUNK (pic); VW_UpdateScreen (); IN_ClearKeysDown (); do { IN_WaitAndProcessEvents(); } #ifdef SPANISH while (!Keyboard[sc_S] && !Keyboard[sc_N] && !Keyboard[sc_Escape]); #else while (!Keyboard[sc_Y] && !Keyboard[sc_N] && !Keyboard[sc_Escape]); #endif #ifdef SPANISH if (Keyboard[sc_S]) { xit = 1; ShootSnd (); } while (Keyboard[sc_S] || Keyboard[sc_N] || Keyboard[sc_Escape]) IN_WaitAndProcessEvents(); #else if (Keyboard[sc_Y]) { xit = 1; ShootSnd (); } while (Keyboard[sc_Y] || Keyboard[sc_N] || Keyboard[sc_Escape]) IN_WaitAndProcessEvents(); #endif IN_ClearKeysDown (); SD_PlaySound (whichsnd[xit]); return xit; } #endif //////////////////////////////////////////////////////////////////// // // PRINT A MESSAGE IN A WINDOW // //////////////////////////////////////////////////////////////////// void Message (const char *string) { int h = 0, w = 0, mw = 0, i, len = (int) strlen(string); fontstruct *font; CA_CacheGrChunk (STARTFONT + 1); fontnumber = 1; font = (fontstruct *) grsegs[STARTFONT + fontnumber]; h = font->height; for (i = 0; i < len; i++) { if (string[i] == '\n') { if (w > mw) mw = w; w = 0; h += font->height; } else w += font->width[string[i]]; } if (w + 10 > mw) mw = w + 10; PrintY = (WindowH / 2) - h / 2; PrintX = WindowX = 160 - mw / 2; DrawWindow (WindowX - 5, PrintY - 5, mw + 10, h + 10, TEXTCOLOR); DrawOutline (WindowX - 5, PrintY - 5, mw + 10, h + 10, 0, HIGHLIGHT); SETFONTCOLOR (0, TEXTCOLOR); US_Print (string); VW_UpdateScreen (); } //////////////////////////////////////////////////////////////////// // // THIS MAY BE FIXED A LITTLE LATER... // //////////////////////////////////////////////////////////////////// static int lastmusic; int StartCPMusic (int song) { int lastoffs; lastmusic = song; lastoffs = SD_MusicOff (); UNCACHEAUDIOCHUNK (STARTMUSIC + lastmusic); SD_StartMusic(STARTMUSIC + song); return lastoffs; } void FreeMusic (void) { UNCACHEAUDIOCHUNK (STARTMUSIC + lastmusic); } /////////////////////////////////////////////////////////////////////////// // // IN_GetScanName() - Returns a string containing the name of the // specified scan code // /////////////////////////////////////////////////////////////////////////// const char * IN_GetScanName (ScanCode scan) { /* const char **p; ScanCode *s; for (s = ExtScanCodes, p = ExtScanNames; *s; p++, s++) if (*s == scan) return (*p);*/ return (ScanNames[scan]); } /////////////////////////////////////////////////////////////////////////// // // CHECK FOR PAUSE KEY (FOR MUSIC ONLY) // /////////////////////////////////////////////////////////////////////////// void CheckPause (void) { if (Paused) { switch (SoundStatus) { case 0: SD_MusicOn (); break; case 1: SD_MusicOff (); break; } SoundStatus ^= 1; VW_WaitVBL (3); IN_ClearKeysDown (); Paused = false; } } /////////////////////////////////////////////////////////////////////////// // // DRAW GUN CURSOR AT CORRECT POSITION IN MENU // /////////////////////////////////////////////////////////////////////////// void DrawMenuGun (CP_iteminfo * iteminfo) { int x, y; x = iteminfo->x; y = iteminfo->y + iteminfo->curpos * 13 - 2; VWB_DrawPic (x, y, C_CURSOR1PIC); } /////////////////////////////////////////////////////////////////////////// // // DRAW SCREEN TITLE STRIPES // /////////////////////////////////////////////////////////////////////////// void DrawStripes (int y) { #ifndef SPEAR VWB_Bar (0, y, 320, 24, 0); VWB_Hlin (0, 319, y + 22, STRIPE); #else VWB_Bar (0, y, 320, 22, 0); VWB_Hlin (0, 319, y + 23, 0); #endif } void ShootSnd (void) { SD_PlaySound (SHOOTSND); } /////////////////////////////////////////////////////////////////////////// // // CHECK FOR EPISODES // /////////////////////////////////////////////////////////////////////////// void CheckForEpisodes (void) { struct stat statbuf; // On Linux like systems, the configdir defaults to $HOME/.wolf4sdl #if !defined(_WIN32) && !defined(_arch_dreamcast) if(configdir[0] == 0) { // Set config location to home directory for multi-user support char *homedir = getenv("HOME"); if(homedir == NULL) { Quit("Your $HOME directory is not defined. You must set this before playing."); } #define WOLFDIR "/.wolf4sdl" if(strlen(homedir) + sizeof(WOLFDIR) > sizeof(configdir)) { Quit("Your $HOME directory path is too long. It cannot be used for saving games."); } snprintf(configdir, sizeof(configdir), "%s" WOLFDIR, homedir); } #endif if(configdir[0] != 0) { // Ensure config directory exists and create if necessary if(stat(configdir, &statbuf) != 0) { #ifdef _WIN32 if(_mkdir(configdir) != 0) #else if(mkdir(configdir, 0755) != 0) #endif { Quit("The configuration directory \"%s\" could not be created.", configdir); } } } // // JAPANESE VERSION // #ifdef JAPAN #ifdef JAPDEMO if(!stat("vswap.wj1", &statbuf)) { strcpy (extension, "wj1"); numEpisodesMissing = 5; #else if(!stat("vswap.wj6", &statbuf)) { strcpy (extension, "wj6"); #endif strcat (configname, extension); strcat (SaveName, extension); strcat (demoname, extension); EpisodeSelect[1] = EpisodeSelect[2] = EpisodeSelect[3] = EpisodeSelect[4] = EpisodeSelect[5] = 1; } else Quit ("NO JAPANESE WOLFENSTEIN 3-D DATA FILES to be found!"); strcpy (graphext, extension); strcpy (audioext, extension); #else // // ENGLISH // #ifdef UPLOAD if(!stat("vswap.wl1", &statbuf)) { strcpy (extension, "wl1"); numEpisodesMissing = 5; } else Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); #else #ifndef SPEAR if(!stat("vswap.wl6", &statbuf)) { strcpy (extension, "wl6"); NewEmenu[2].active = NewEmenu[4].active = NewEmenu[6].active = NewEmenu[8].active = NewEmenu[10].active = EpisodeSelect[1] = EpisodeSelect[2] = EpisodeSelect[3] = EpisodeSelect[4] = EpisodeSelect[5] = 1; } else { if(!stat("vswap.wl3", &statbuf)) { strcpy (extension, "wl3"); numEpisodesMissing = 3; NewEmenu[2].active = NewEmenu[4].active = EpisodeSelect[1] = EpisodeSelect[2] = 1; } else { if(!stat("vswap.wl1", &statbuf)) { strcpy (extension, "wl1"); numEpisodesMissing = 5; } else Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); } } #endif #endif #ifdef SPEAR #ifndef SPEARDEMO if(param_mission == 0) { if(!stat("vswap.sod", &statbuf)) strcpy (extension, "sod"); else Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); } else if(param_mission == 1) { if(!stat("vswap.sd1", &statbuf)) strcpy (extension, "sd1"); else Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); } else if(param_mission == 2) { if(!stat("vswap.sd2", &statbuf)) strcpy (extension, "sd2"); else Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); } else if(param_mission == 3) { if(!stat("vswap.sd3", &statbuf)) strcpy (extension, "sd3"); else Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); } else Quit ("UNSUPPORTED MISSION!"); strcpy (graphext, "sod"); strcpy (audioext, "sod"); #else if(!stat("vswap.sdm", &statbuf)) { strcpy (extension, "sdm"); } else Quit ("NO SPEAR OF DESTINY DEMO DATA FILES TO BE FOUND!"); strcpy (graphext, "sdm"); strcpy (audioext, "sdm"); #endif #else strcpy (graphext, extension); strcpy (audioext, extension); #endif strcat (configname, extension); strcat (SaveName, extension); strcat (demoname, extension); #ifndef SPEAR #ifndef GOODTIMES strcat (helpfilename, extension); #endif strcat (endfilename, extension); #endif #endif } wolf4sdl-1.7+svn262/wl_menu.h0000644000175000017500000001213011577474656015237 0ustar fabianfabian// // WL_MENU.H // #ifdef SPEAR #define BORDCOLOR 0x99 #define BORD2COLOR 0x93 #define DEACTIVE 0x9b #define BKGDCOLOR 0x9d //#define STRIPE 0x9c #define MenuFadeOut() VL_FadeOut(0,255,0,0,51,10) #else #define BORDCOLOR 0x29 #define BORD2COLOR 0x23 #define DEACTIVE 0x2b #define BKGDCOLOR 0x2d #define STRIPE 0x2c #define MenuFadeOut() VL_FadeOut(0,255,43,0,0,10) #endif #define READCOLOR 0x4a #define READHCOLOR 0x47 #define VIEWCOLOR 0x7f #define TEXTCOLOR 0x17 #define HIGHLIGHT 0x13 #define MenuFadeIn() VL_FadeIn(0,255,gamepal,10) #define MENUSONG WONDERIN_MUS #ifndef SPEAR #define INTROSONG NAZI_NOR_MUS #else #define INTROSONG XTOWER2_MUS #endif #define SENSITIVE 60 #define CENTERX ((int) screenWidth / 2) #define CENTERY ((int) screenHeight / 2) #define MENU_X 76 #define MENU_Y 55 #define MENU_W 178 #ifndef SPEAR #ifndef GOODTIMES #define MENU_H 13*10+6 #else #define MENU_H 13*9+6 #endif #else #define MENU_H 13*9+6 #endif #define SM_X 48 #define SM_W 250 #define SM_Y1 20 #define SM_H1 4*13-7 #define SM_Y2 SM_Y1+5*13 #define SM_H2 4*13-7 #define SM_Y3 SM_Y2+5*13 #define SM_H3 3*13-7 #define CTL_X 24 #ifdef JAPAN #define CTL_Y 70 #else #define CTL_Y 86 #endif #define CTL_W 284 #define CTL_H 60 #define LSM_X 85 #define LSM_Y 55 #define LSM_W 175 #define LSM_H 10*13+10 #define NM_X 50 #define NM_Y 100 #define NM_W 225 #define NM_H 13*4+15 #define NE_X 10 #define NE_Y 23 #define NE_W 320-NE_X*2 #define NE_H 200-NE_Y*2 #define CST_X 20 #define CST_Y 48 #define CST_START 60 #define CST_SPC 60 // // TYPEDEFS // typedef struct { short x,y,amount,curpos,indent; } CP_iteminfo; typedef struct { short active; char string[36]; int (* routine)(int temp1); } CP_itemtype; typedef struct { short allowed[4]; } CustomCtrls; extern CP_itemtype MainMenu[]; extern CP_iteminfo MainItems; // // FUNCTION PROTOTYPES // void US_ControlPanel(ScanCode); void EnableEndGameMenuItem(); void SetupControlPanel(void); void SetupSaveGames(); void CleanupControlPanel(void); void DrawMenu(CP_iteminfo *item_i,CP_itemtype *items); int HandleMenu(CP_iteminfo *item_i, CP_itemtype *items, void (*routine)(int w)); void ClearMScreen(void); void DrawWindow(int x,int y,int w,int h,int wcolor); void DrawOutline(int x,int y,int w,int h,int color1,int color2); void WaitKeyUp(void); void ReadAnyControl(ControlInfo *ci); void TicDelay(int count); void CacheLump(int lumpstart,int lumpend); void UnCacheLump(int lumpstart,int lumpend); int StartCPMusic(int song); int Confirm(const char *string); void Message(const char *string); void CheckPause(void); void ShootSnd(void); void CheckSecretMissions(void); void BossKey(void); void DrawGun(CP_iteminfo *item_i,CP_itemtype *items,int x,int *y,int which,int basey,void (*routine)(int w)); void DrawHalfStep(int x,int y); void EraseGun(CP_iteminfo *item_i,CP_itemtype *items,int x,int y,int which); void SetTextColor(CP_itemtype *items,int hlight); void DrawMenuGun(CP_iteminfo *iteminfo); void DrawStripes(int y); void DefineMouseBtns(void); void DefineJoyBtns(void); void DefineKeyBtns(void); void DefineKeyMove(void); void EnterCtrlData(int index,CustomCtrls *cust,void (*DrawRtn)(int),void (*PrintRtn)(int),int type); void DrawMainMenu(void); void DrawSoundMenu(void); void DrawLoadSaveScreen(int loadsave); void DrawNewEpisode(void); void DrawNewGame(void); void DrawChangeView(int view); void DrawMouseSens(void); void DrawCtlScreen(void); void DrawCustomScreen(void); void DrawLSAction(int which); void DrawCustMouse(int hilight); void DrawCustJoy(int hilight); void DrawCustKeybd(int hilight); void DrawCustKeys(int hilight); void PrintCustMouse(int i); void PrintCustJoy(int i); void PrintCustKeybd(int i); void PrintCustKeys(int i); void PrintLSEntry(int w,int color); void TrackWhichGame(int w); void DrawNewGameDiff(int w); void FixupCustom(int w); int CP_NewGame(int); int CP_Sound(int); int CP_LoadGame(int quick); int CP_SaveGame(int quick); int CP_Control(int); int CP_ChangeView(int); int CP_ExitOptions(int); int CP_Quit(int); int CP_ViewScores(int); int CP_EndGame(int); int CP_CheckQuick(ScanCode scancode); int CustomControls(int); int MouseSensitivity(int); void CheckForEpisodes(void); void FreeMusic(void); enum {MOUSE,JOYSTICK,KEYBOARDBTNS,KEYBOARDMOVE}; // FOR INPUT TYPES enum menuitems { newgame, soundmenu, control, loadgame, savegame, changeview, #ifndef GOODTIMES #ifndef SPEAR readthis, #endif #endif viewscores, backtodemo, quit }; // // WL_INTER // typedef struct { int kill,secret,treasure; int32_t time; } LRstruct; extern LRstruct LevelRatios[]; void Write (int x,int y,const char *string); void NonShareware(void); int GetYorN(int x,int y,int pic); wolf4sdl-1.7+svn262/Wolf4SDL.vcproj0000644000175000017500000001736111644157635016204 0ustar fabianfabian wolf4sdl-1.7+svn262/id_us.h0000644000175000017500000000515711007041024014646 0ustar fabianfabian// // ID Engine // ID_US.h - Header file for the User Manager // v1.0d1 // By Jason Blochowiak // #ifndef __ID_US__ #define __ID_US__ #ifdef __DEBUG__ #define __DEBUG_UserMgr__ #endif //#define HELPTEXTLINKED #define MaxX 320 #define MaxY 200 #define MaxHelpLines 500 #define MaxHighName 57 #define MaxScores 7 typedef struct { char name[MaxHighName + 1]; int32_t score; word completed,episode; } HighScore; #define MaxGameName 32 #define MaxSaveGames 6 typedef struct { char signature[4]; word *oldtest; boolean present; char name[MaxGameName + 1]; } SaveGame; #define MaxString 128 // Maximum input string size typedef struct { int x,y, w,h, px,py; } WindowRec; // Record used to save & restore screen windows extern boolean ingame, // Set by game code if a game is in progress loadedgame; // Set if the current game was loaded extern word PrintX,PrintY; // Current printing location in the window extern word WindowX,WindowY,// Current location of window WindowW,WindowH;// Current size of window extern void (*USL_MeasureString)(const char *,word *,word *); extern void (*USL_DrawString)(const char *); extern boolean (*USL_SaveGame)(int),(*USL_LoadGame)(int); extern void (*USL_ResetGame)(void); extern SaveGame Games[MaxSaveGames]; extern HighScore Scores[]; #define US_HomeWindow() {PrintX = WindowX; PrintY = WindowY;} void US_Startup(void); void US_Shutdown(void); void US_TextScreen(void), US_UpdateTextScreen(void), US_FinishTextScreen(void); void US_DrawWindow(word x,word y,word w,word h); void US_CenterWindow(word,word); void US_SaveWindow(WindowRec *win), US_RestoreWindow(WindowRec *win); void US_ClearWindow(void); void US_SetPrintRoutines(void (*measure)(const char *,word *,word *), void (*print)(const char *)); void US_PrintCentered(const char *s), US_CPrint(const char *s), US_CPrintLine(const char *s), US_Print(const char *s); void US_Printf(const char *formatStr, ...); void US_CPrintf(const char *formatStr, ...); void US_PrintUnsigned(longword n); void US_PrintSigned(int32_t n); void US_StartCursor(void), US_ShutCursor(void); void US_CheckHighScore(int32_t score,word other); void US_DisplayHighScores(int which); extern boolean US_UpdateCursor(void); boolean US_LineInput(int x,int y,char *buf,const char *def,boolean escok, int maxchars,int maxwidth); void USL_PrintInCenter(const char *s,Rect r); char *USL_GiveSaveName(word game); void US_InitRndT(int randomize); int US_RndT(); #endif wolf4sdl-1.7+svn262/wl_cloudsky.h0000644000175000017500000000217310756144476016126 0ustar fabianfabian#if defined(USE_CLOUDSKY) && !defined(_WL_CLOUDSKY_H_) #define _WL_CLOUDSKY_H_ typedef struct { int length; int startAndDir; } colormapentry_t; typedef struct { int numColors; colormapentry_t *entries; } colormap_t; typedef struct { // The seed defines the look of the sky and every value (0-4294967295) // describes an unique sky. You can play around with these inside the game // when pressing +Z in debug mode. There you'll be able to change the // active seed to find out a value, which is suitable for your needs. uint32_t seed; // The speed defines how fast the clouds will move (0-65535) uint32_t speed; // The angle defines the move direction (0-359) uint32_t angle; // An index selecting the color map to be used for this sky definition. // This value can also be chosen with +Z uint32_t colorMapIndex; } cloudsky_t; extern cloudsky_t *curSky; extern colormap_t colorMaps[]; extern const int numColorMaps; void InitSky(); void DrawClouds(byte *vbuf, unsigned vbufPitch, int min_wallheight); #ifndef USE_FEATUREFLAGS int GetCloudSkyDefID(); #endif #endif wolf4sdl-1.7+svn262/id_vl.h0000644000175000017500000000703511577434171014662 0ustar fabianfabian// ID_VL.H // wolf compatability void Quit (const char *error,...); //=========================================================================== #define CHARWIDTH 2 #define TILEWIDTH 4 //=========================================================================== extern SDL_Surface *screen, *screenBuffer, *curSurface; extern boolean fullscreen, usedoublebuffering; extern unsigned screenWidth, screenHeight, screenBits, screenPitch, bufferPitch, curPitch; extern unsigned scaleFactor; extern boolean screenfaded; extern unsigned bordercolor; extern SDL_Color gamepal[256]; //=========================================================================== // // VGA hardware routines // #define VL_WaitVBL(a) SDL_Delay((a)*8) void VL_SetVGAPlaneMode (void); void VL_SetTextMode (void); void VL_Shutdown (void); void VL_ConvertPalette(byte *srcpal, SDL_Color *destpal, int numColors); void VL_FillPalette (int red, int green, int blue); void VL_SetColor (int color, int red, int green, int blue); void VL_GetColor (int color, int *red, int *green, int *blue); void VL_SetPalette (SDL_Color *palette, bool forceupdate); void VL_GetPalette (SDL_Color *palette); void VL_FadeOut (int start, int end, int red, int green, int blue, int steps); void VL_FadeIn (int start, int end, SDL_Color *palette, int steps); byte *VL_LockSurface(SDL_Surface *surface); void VL_UnlockSurface(SDL_Surface *surface); byte VL_GetPixel (int x, int y); void VL_Plot (int x, int y, int color); void VL_Hlin (unsigned x, unsigned y, unsigned width, int color); void VL_Vlin (int x, int y, int height, int color); void VL_BarScaledCoord (int scx, int scy, int scwidth, int scheight, int color); void inline VL_Bar (int x, int y, int width, int height, int color) { VL_BarScaledCoord(scaleFactor*x, scaleFactor*y, scaleFactor*width, scaleFactor*height, color); } void inline VL_ClearScreen(int color) { SDL_FillRect(curSurface, NULL, color); } void VL_MungePic (byte *source, unsigned width, unsigned height); void VL_DrawPicBare (int x, int y, byte *pic, int width, int height); void VL_MemToLatch (byte *source, int width, int height, SDL_Surface *destSurface, int x, int y); void VL_ScreenToScreen (SDL_Surface *source, SDL_Surface *dest); void VL_MemToScreenScaledCoord (byte *source, int width, int height, int scx, int scy); void VL_MemToScreenScaledCoord (byte *source, int origwidth, int origheight, int srcx, int srcy, int destx, int desty, int width, int height); void inline VL_MemToScreen (byte *source, int width, int height, int x, int y) { VL_MemToScreenScaledCoord(source, width, height, scaleFactor*x, scaleFactor*y); } void VL_MaskedToScreen (byte *source, int width, int height, int x, int y); void VL_LatchToScreenScaledCoord (SDL_Surface *source, int xsrc, int ysrc, int width, int height, int scxdest, int scydest); void inline VL_LatchToScreen (SDL_Surface *source, int xsrc, int ysrc, int width, int height, int xdest, int ydest) { VL_LatchToScreenScaledCoord(source,xsrc,ysrc,width,height, scaleFactor*xdest,scaleFactor*ydest); } void inline VL_LatchToScreenScaledCoord (SDL_Surface *source, int scx, int scy) { VL_LatchToScreenScaledCoord(source,0,0,source->w,source->h,scx,scy); } void inline VL_LatchToScreen (SDL_Surface *source, int x, int y) { VL_LatchToScreenScaledCoord(source,0,0,source->w,source->h, scaleFactor*x,scaleFactor*y); } wolf4sdl-1.7+svn262/GP2X/0000755000175000017500000000000011644522671014125 5ustar fabianfabianwolf4sdl-1.7+svn262/GP2X/gp2x.cpp0000644000175000017500000001745011150747307015515 0ustar fabianfabian// // GP2X specific code // // by Pickle // #if defined(GP2X) #include "gp2x.h" static bool volume_init = false; static unsigned int screenshot_count = 0; #if defined(GP2X_940) static int volume = 70; #else static int volume = 10; #endif static int intUp = 0; static int intDown = 0; static int intLeft = 0; static int intRight = 0; static int intUpRight = 0; static int intUpLeft = 0; static int intDownRight = 0; static int intDownLeft = 0; static int intButtonR = 0; static int intButtonL = 0; static int intButtonA = 0; static int intButtonB = 0; static int intButtonX = 0; static int intButtonY = 0; static int intButtonSel = 0; static int intButtonSrt = 0; static int intButtonStick = 0; #if defined(GP2X_940) void GP2X_Shutdown(void) { YM3812Shutdown(); } void GP2X_MemoryInit( void ) { SDL_GP2X_AllowGfxMemory(NULL,0); } #endif void GP2X_AdjustVolume( int direction ) { if( volume <= 10 ) { if( direction == VOLUME_UP ) volume += VOLUME_CHANGE_RATE/2; if( direction == VOLUME_DOWN ) volume -= VOLUME_CHANGE_RATE/2; } else { if( direction == VOLUME_UP ) volume += VOLUME_CHANGE_RATE; if( direction == VOLUME_DOWN ) volume -= VOLUME_CHANGE_RATE; } if( volume < VOLUME_MIN ) volume = VOLUME_MIN; if( volume > VOLUME_MAX ) volume = VOLUME_MAX; printf( "Volume Change: %i\n", volume ); unsigned long soundDev = open("/dev/mixer", O_RDWR); if(soundDev) { int vol = ((volume << 8) | volume); ioctl(soundDev, SOUND_MIXER_WRITE_PCM, &vol); close(soundDev); } } void GP2X_ButtonDown( int button ) { if( !volume_init ) { GP2X_AdjustVolume(VOLUME_NOCHG); volume_init = 1; } switch( button ) { case GP2X_BUTTON_UP: intUp = 1; break; case GP2X_BUTTON_DOWN: intDown = 1; break; case GP2X_BUTTON_RIGHT: intRight = 1; break; case GP2X_BUTTON_LEFT: intLeft = 1; break; case GP2X_BUTTON_UPRIGHT: intUpRight = 1; break; case GP2X_BUTTON_UPLEFT: intUpLeft = 1; break; case GP2X_BUTTON_DOWNRIGHT: intDownRight = 1; break; case GP2X_BUTTON_DOWNLEFT: intDownLeft = 1; break; case GP2X_BUTTON_SELECT: intButtonSel = 1; break; case GP2X_BUTTON_START: intButtonSrt = 1; break; case GP2X_BUTTON_X: intButtonX = 1; LastASCII = 'x'; break; case GP2X_BUTTON_Y: intButtonY = 1; LastASCII = 'y'; break; case GP2X_BUTTON_A: intButtonA = 1; LastASCII = 'a'; break; case GP2X_BUTTON_B: intButtonB = 1; LastASCII = 'b'; break; case GP2X_BUTTON_R: intButtonR = 1; break; case GP2X_BUTTON_L: intButtonL = 1; break; case GP2X_BUTTON_VOLUP: GP2X_AdjustVolume( VOLUME_UP ); break; case GP2X_BUTTON_VOLDOWN: GP2X_AdjustVolume( VOLUME_DOWN ); break; case GP2X_BUTTON_CLICK: intButtonStick = 1; break; } if( intButtonL & intButtonR ) { // Status Bar SetKeyboard( SDLK_TAB, KEY_DOWN ); // Music Player (doesnt work, it appears the event's arnt happening soon enough) SetKeyboard( sc_M, KEY_DOWN ); SetKeyboard( SDLK_LALT, KEY_UP ); SetKeyboard( SDLK_LEFT, KEY_UP ); SetKeyboard( SDLK_RIGHT, KEY_UP ); } else if( intButtonL & !intButtonR ) { // Strafe Left SetKeyboard( SDLK_LALT, KEY_DOWN ); SetKeyboard( SDLK_LEFT, KEY_DOWN ); } else if( intButtonR & !intButtonL ) { // Strafe Right SetKeyboard( SDLK_LALT, KEY_DOWN ); SetKeyboard( SDLK_RIGHT, KEY_DOWN ); } // Left Direction if( intLeft | intDownLeft | intUpLeft ) { // UNstrafe SetKeyboard( SDLK_LALT, KEY_UP ); SetKeyboard( SDLK_RIGHT, KEY_UP ); // Turn SetKeyboard( SDLK_LEFT, KEY_DOWN ); } // Right Direction if( intRight | intDownRight | intUpRight ) { // UNstrafe SetKeyboard( SDLK_LALT, KEY_UP ); SetKeyboard( SDLK_LEFT, KEY_UP ); // Turn SetKeyboard( SDLK_RIGHT, KEY_DOWN ); } // Up Direction if( intUp | intUpRight | intUpLeft ) { SetKeyboard( SDLK_UP, KEY_DOWN ); } // Down Direction if( intDown | intDownRight | intDownLeft ) { SetKeyboard( SDLK_DOWN, KEY_DOWN ); } if( intButtonSel & intButtonSrt ) { // Pause SetKeyboard( SDLK_PAUSE, KEY_DOWN ); } else if( intButtonL & intButtonSel ) { fpscounter ^= 1; // Turn On FPS Counter } else if( intButtonL & intButtonSrt ) { Screenshot(); } else if( intButtonSel & !intButtonSrt ) { // Escape SetKeyboard( SDLK_ESCAPE, KEY_DOWN ); } else if( !intButtonSel & intButtonSrt ) { // Enter SetKeyboard( SDLK_RETURN, KEY_DOWN ); } if( intButtonX ) { // Shoot SetKeyboard( SDLK_LCTRL, KEY_DOWN ); } if( intButtonY ) { // Yes SetKeyboard( SDLK_y, KEY_DOWN ); if( gamestate.chosenweapon == gamestate.bestweapon ) { SetKeyboard( SDLK_1, KEY_DOWN ); } else { SetKeyboard( SDLK_1 + gamestate.chosenweapon + 1, KEY_DOWN ); } } if( intButtonA ) { // Open SetKeyboard( SDLK_SPACE, KEY_DOWN ); } if( intButtonB ) { // No SetKeyboard( SDLK_n, KEY_DOWN ); // Run SetKeyboard( SDLK_LSHIFT, KEY_DOWN ); } } void GP2X_ButtonUp( int button ) { switch( button ) { case GP2X_BUTTON_UP: intUp = 0; break; case GP2X_BUTTON_DOWN: intDown = 0; break; case GP2X_BUTTON_RIGHT: intRight = 0; break; case GP2X_BUTTON_LEFT: intLeft = 0; break; case GP2X_BUTTON_UPRIGHT: intUpRight = 0; break; case GP2X_BUTTON_UPLEFT: intUpLeft = 0; break; case GP2X_BUTTON_DOWNRIGHT: intDownRight = 0; break; case GP2X_BUTTON_DOWNLEFT: intDownLeft = 0; break; case GP2X_BUTTON_SELECT: intButtonSel = 0; break; case GP2X_BUTTON_START: intButtonSrt = 0; break; case GP2X_BUTTON_X: intButtonX = 0; break; case GP2X_BUTTON_Y: intButtonY = 0; break; case GP2X_BUTTON_A: intButtonA = 0; break; case GP2X_BUTTON_B: intButtonB = 0; break; case GP2X_BUTTON_R: intButtonR = 0; break; case GP2X_BUTTON_L: intButtonL = 0; break; case GP2X_BUTTON_CLICK: intButtonStick = 0; break; } if( !intButtonL | !intButtonR ) { SetKeyboard( SDLK_TAB, KEY_UP ); SetKeyboard( sc_M, KEY_UP ); SetKeyboard( SDLK_LALT, KEY_UP ); } if( !intLeft & !intDownLeft & !intUpLeft ) { if( !intButtonL ) { SetKeyboard( SDLK_LALT, KEY_UP ); SetKeyboard( SDLK_LEFT, KEY_UP ); } if( intButtonR ) { SetKeyboard( SDLK_LALT, KEY_DOWN ); SetKeyboard( SDLK_RIGHT, KEY_DOWN ); } } if( !intRight & !intDownRight & !intUpRight ) { if( !intButtonR ) { SetKeyboard( SDLK_LALT, KEY_UP ); SetKeyboard( SDLK_RIGHT, KEY_UP ); } if( intButtonL ) { SetKeyboard( SDLK_LALT, KEY_DOWN ); SetKeyboard( SDLK_LEFT, KEY_DOWN ); } } if( !intUp & !intUpRight & !intUpLeft ) { SetKeyboard( SDLK_UP, KEY_UP ); } if( !intDown & !intDownRight & !intDownLeft ) { SetKeyboard( SDLK_DOWN, KEY_UP ); } if( !intButtonSel & !intButtonSrt ) { SetKeyboard( SDLK_PAUSE, KEY_UP ); } if( !intButtonSel ) { SetKeyboard( SDLK_ESCAPE, KEY_UP ); } if( !intButtonSrt ) { SetKeyboard( SDLK_RETURN, KEY_UP ); } if( !intButtonX ) { SetKeyboard( SDLK_LCTRL, KEY_UP ); } if( !intButtonY ) { SetKeyboard( SDLK_y, KEY_UP ); SetKeyboard( SDLK_1, KEY_UP ); SetKeyboard( SDLK_2, KEY_UP ); SetKeyboard( SDLK_3, KEY_UP ); SetKeyboard( SDLK_4, KEY_UP ); } if( !intButtonA ) { SetKeyboard( SDLK_SPACE, KEY_UP ); } if( !intButtonB ) { SetKeyboard( SDLK_n, KEY_UP ); SetKeyboard( SDLK_LSHIFT, KEY_UP ); } } void Screenshot( void ) { char filename[32]; snprintf( filename, sizeof(filename), "Screenshot_%i.bmp", screenshot_count ); SDL_SaveBMP(screen, filename ); screenshot_count++; } void SetKeyboard( unsigned int key, int press ) { // press = 1 = down, press = 0 = up if( press ) { LastScan = key; Keyboard[key] = 1; } else { Keyboard[key] = 0; } } #endif // GP2X wolf4sdl-1.7+svn262/GP2X/gp2x.h0000644000175000017500000000263711150747307015163 0ustar fabianfabian#ifndef GP2X_H #define GP2X_H #include #include #include #include #include #include "../wl_def.h" #if defined(GP2X_940) #include "fmopl.h" #include #endif #define GP2X_BUTTON_UP (0) #define GP2X_BUTTON_DOWN (4) #define GP2X_BUTTON_LEFT (2) #define GP2X_BUTTON_RIGHT (6) #define GP2X_BUTTON_UPLEFT (1) #define GP2X_BUTTON_UPRIGHT (7) #define GP2X_BUTTON_DOWNLEFT (3) #define GP2X_BUTTON_DOWNRIGHT (5) #define GP2X_BUTTON_CLICK (18) #define GP2X_BUTTON_A (12) #define GP2X_BUTTON_B (13) #define GP2X_BUTTON_X (14) #define GP2X_BUTTON_Y (15) #define GP2X_BUTTON_L (10) #define GP2X_BUTTON_R (11) #define GP2X_BUTTON_START (8) #define GP2X_BUTTON_SELECT (9) #define GP2X_BUTTON_VOLUP (16) #define GP2X_BUTTON_VOLDOWN (17) #define VOLUME_MIN 0 #define VOLUME_MAX 100 #define VOLUME_CHANGE_RATE 2 #define VOLUME_NOCHG 0 #define VOLUME_DOWN 1 #define VOLUME_UP 2 #define KEY_DOWN 1 #define KEY_UP 0 void GP2X_MemoryInit(void); void GP2X_Shutdown(void); void GP2X_AdjustVolume( int direction ); void GP2X_ButtonDown( int button ); void GP2X_ButtonUp( int button ); void Screenshot( void ); void SetKeyboard( unsigned int key, int press ); #endif // GP2X_H wolf4sdl-1.7+svn262/GP2X/fmopl.cpp0000644000175000017500000004430211136102537015740 0ustar fabianfabian/* ** based on: ** ** File: fmopl.c - software implementation of FM sound generator ** types OPL and OPL2 ** ** Copyright (C) 2002,2003 Jarek Burczynski (bujar at mame dot net) ** Copyright (C) 1999,2000 Tatsuyuki Satoh , MultiArcadeMachineEmulator development ** ** Version 0.70 ** ** from the dosbox 0.72 source */ #define LOG_MSG printf #include #include #include #include #include #include #include #include "fmopl.h" #include "fmopl_940/fmopl_shared.h" #ifndef PI #define PI 3.14159265358979323846 #endif /* output final shift */ #if (OPL_SAMPLE_BITS==16) #define FINAL_SH (0) #define MAXOUT (+32767) #define MINOUT (-32768) #else #define FINAL_SH (8) #define MAXOUT (+127) #define MINOUT (-128) #endif #define FREQ_SH 16 /* 16.16 fixed point (frequency calculations) */ #define EG_SH 16 /* 16.16 fixed point (EG timing) */ #define LFO_SH 24 /* 8.24 fixed point (LFO calculations) */ #define TIMER_SH 16 /* 16.16 fixed point (timers calculations) */ #define FREQ_MASK ((1<= MSG_BUF_SIZE){}; #define WAIT_FOR_SYNC \ while( (*NSubmittedMessages - *NExecutedMessages) % (int) MSG_BUF_SIZE !=0 ){}; #define ADD_MESSAGE(mtype, i,j,k) \ { \ int n = ((*NSubmittedMessages)+1) % ((int) MSG_BUF_SIZE); \ MessageBuffer[n].type=mtype; \ MessageBuffer[n].data1=i; \ MessageBuffer[n].data2=j; \ MessageBuffer[n].data3=k; \ (*NSubmittedMessages)++; \ } //if((*NSubmittedMessages) % (int) 500 ==0) // LOG_MSG("OPL2: %d %d %d\n",*NSubmittedMessages,*NExecutedMessages,*NSubmittedMessages-*NExecutedMessages); typedef struct fm_opl_lite { int T[2]; /* timer counters */ int TC[2]; UINT8 st[2]; /* timer enable */ UINT32 *fn_tab; /* external event callback handlers */ OPL_TIMERHANDLER TimerHandler; /* TIMER handler */ int TimerParam; /* TIMER parameter */ OPL_IRQHANDLER IRQHandler; /* IRQ handler */ int IRQParam; /* IRQ parameter */ OPL_UPDATEHANDLER UpdateHandler; /* stream update handler */ int UpdateParam; /* stream update parameter */ UINT8 type; /* chip type */ UINT8 address; /* address register */ UINT8 status; /* status flag */ UINT8 statusmask; /* status mask */ UINT8 mode; /* Reg.08 : CSM,notesel,etc. */ int clock; /* master clock (Hz) */ int rate; /* sampling rate (Hz) */ double freqbase; /* frequency base */ double TimerBase; /* Timer base time (==sampling time)*/ } FM_OPLlite; /* status set and IRQ handling */ inline void OPL_STATUS_SET(FM_OPLlite *OPL,int flag) { /* set status flag */ OPL->status |= flag; if(!(OPL->status & 0x80)) { if(OPL->status & OPL->statusmask) { /* IRQ on */ OPL->status |= 0x80; /* callback user interrupt handler (IRQ is OFF to ON) */ if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,1); } } } /* status reset and IRQ handling */ inline void OPL_STATUS_RESET(FM_OPLlite *OPL,int flag) { /* reset status flag */ OPL->status &=~flag; if((OPL->status & 0x80)) { if (!(OPL->status & OPL->statusmask) ) { OPL->status &= 0x7f; /* callback user interrupt handler (IRQ is ON to OFF) */ if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,0); } } } /* IRQ mask set */ inline void OPL_STATUSMASK_SET(FM_OPLlite *OPL,int flag) { OPL->statusmask = flag; /* IRQ handling check */ OPL_STATUS_SET(OPL,0); OPL_STATUS_RESET(OPL,0); } /* generic table initialize */ static int init_tables(void) { signed int i,x; signed int n; double o,m; for (x=0; x>= 4; /* 12 bits here */ if (n&1) /* round to nearest */ n = (n>>1)+1; else n = n>>1; /* 11 bits here (rounded) */ n <<= 1; /* 12 bits here (as in real chip) */ tl_tab[ x*2 + 0 ] = n; tl_tab[ x*2 + 1 ] = -tl_tab[ x*2 + 0 ]; for (i=1; i<12; i++) { tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; } } for (i=0; i0.0) o = 8*log(1.0/m)/log(2.0); /* convert to 'decibels' */ else o = 8*log(-1.0/m)/log(2.0); /* convert to 'decibels' */ o = o / (ENV_STEP/4); n = (int)(2.0*o); if (n&1) /* round to nearest */ n = (n>>1)+1; else n = n>>1; sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); } for (i=0; i>1) ]; /* waveform 3: _ _ _ _ */ /* / |_/ |_/ |_/ |_*/ /* abs(output only first quarter of the sinus waveform) */ if (i & (1<<(SIN_BITS-2)) ) sin_tab[3*SIN_LEN+i] = TL_TAB_LEN; else sin_tab[3*SIN_LEN+i] = sin_tab[i & (SIN_MASK>>2)]; } return 1; } static void OPL_initalize(FM_OPLlite *OPL, FM_OPL *OPLs) { int i; /* frequency base */ OPL->freqbase = (OPL->rate) ? ((double)OPL->clock / 72.0) / OPL->rate : 0; /* Timer base time */ OPL->TimerBase = 1.0 / ((double)OPL->clock / 72.0 ); /* make fnumber -> increment counter table */ for( i=0 ; i < 1024 ; i++ ) { /* opn phase increment counter = 20bit */ OPL->fn_tab[i] = (UINT32)( (double)i * 64 * OPL->freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */ } /* Amplitude modulation: 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples */ /* One entry from LFO_AM_TABLE lasts for 64 samples */ OPLs->lfo_am_inc = (UINT32)((1.0 / 64.0 ) * (1<freqbase); /* Vibrato: 8 output levels (triangle waveform); 1 level takes 1024 samples */ OPLs->lfo_pm_inc = (UINT32)((1.0 / 1024.0) * (1<freqbase); /* Noise generator: a step takes 1 sample */ OPLs->noise_f = (UINT32)((1.0 / 1.0) * (1<freqbase); OPLs->eg_timer_add = (UINT32)((1<freqbase); OPLs->eg_timer_overflow = ( 1 ) * (1<T[0] = (256-v)*4; break; case 0x03: /* Timer 2 */ OPL->T[1] = (256-v)*16; break; case 0x04: /* IRQ clear / mask and Timer enable */ if(v&0x80) { /* IRQ flag clear */ OPL_STATUS_RESET(OPL,0x7f); } else { /* set IRQ mask ,timer enable*/ OPL->st[0] = v&1; OPL->st[1] = (v>>1)&1; /* IRQRST,T1MSK,t2MSK,EOSMSK,BRMSK,x,ST2,ST1 */ OPL_STATUS_RESET(OPL, v & 0x78 ); OPL_STATUSMASK_SET(OPL, (~v) & 0x78 ); /* timer 1 */ if(OPL->st[0]) { OPL->TC[0]=OPL->T[0]*20; double interval = (double)OPL->T[0]*OPL->TimerBase; if (OPL->TimerHandler) (OPL->TimerHandler)(OPL->TimerParam+0,interval); } /* timer 2 */ if(OPL->st[1]) { OPL->TC[1]=OPL->T[1]*20; double interval =(double)OPL->T[1]*OPL->TimerBase; if (OPL->TimerHandler) (OPL->TimerHandler)(OPL->TimerParam+1,interval); } } break; case 0x08: /* MODE,DELTA-T control 2 : CSM,NOTESEL,x,x,smpl,da/ad,64k,rom */ OPL->mode = v; break; default: //logerror("FMOPL.C: write to unknown register: %02x\n",r); break; } break; case 0x20: /* am ON, vib ON, ksr, eg_type, mul */ break; case 0x40: break; case 0x60: break; case 0x80: break; case 0xa0: break; case 0xc0: break; case 0xe0: /* waveform select */ break; } } static void OPLResetChip(FM_OPLlite *OPL) { int c,s; int i; OPL->mode = 0; /* normal mode */ OPL_STATUS_RESET(OPL,0x7f); /* reset with register write */ OPLWriteReg(OPL,0x01,0); /* wavesel disable */ OPLWriteReg(OPL,0x02,0); /* Timer1 */ OPLWriteReg(OPL,0x03,0); /* Timer2 */ OPLWriteReg(OPL,0x04,0); /* IRQ mask clear */ for(i = 0xff ; i >= 0x20 ; i-- ) OPLWriteReg(OPL,i,0); } /* Create one of virtual YM3812/YM3526/Y8950 */ /* 'clock' is chip clock in Hz */ /* 'rate' is sampling rate */ void OPLCreate(int type, int clock, int rate, FM_OPLlite* OPL, FM_OPL* OPLs) { OPL->type = type; OPL->clock = clock; OPL->rate = rate; /* init global tables */ OPL_initalize(OPL,OPLs); } /* Destroy one of virtual YM3812 */ static void OPLDestroy(FM_OPLlite *OPL) { free(OPL); } /* Optional handlers */ static void OPLSetTimerHandler(FM_OPLlite *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset) { OPL->TimerHandler = TimerHandler; OPL->TimerParam = channelOffset; } static void OPLSetIRQHandler(FM_OPLlite *OPL,OPL_IRQHANDLER IRQHandler,int param) { OPL->IRQHandler = IRQHandler; OPL->IRQParam = param; } static void OPLSetUpdateHandler(FM_OPLlite *OPL,OPL_UPDATEHANDLER UpdateHandler,int param) { OPL->UpdateHandler = UpdateHandler; OPL->UpdateParam = param; } static int OPLWrite(FM_OPLlite *OPL,int a,int v) { if( !(a&1) ) { /* address port */ OPL->address = v & 0xff; } else { /* data port */ if(OPL->UpdateHandler) OPL->UpdateHandler(OPL->UpdateParam,0); OPLWriteReg(OPL,OPL->address,v); } return OPL->status>>7; } static unsigned char OPLRead(FM_OPLlite *OPL,int a) { if( !(a&1) ) { /* status port */ if (OPL->st[0]) { if (OPL->TC[0]) OPL->TC[0]--; else { OPL->TC[0]=OPL->T[0]*20; OPL_STATUS_SET(OPL,0x40); } } if (OPL->st[1]) { if (OPL->TC[1]) OPL->TC[1]--; else { OPL->TC[1]=OPL->T[1]*20; OPL_STATUS_SET(OPL,0x40); } } return OPL->status & (OPL->statusmask|0x80); } return 0xff; } static int OPLTimerOver(FM_OPLlite *OPL,int c) { if( c ) { /* Timer B */ OPL_STATUS_SET(OPL,0x20); } else { /* Timer A */ OPL_STATUS_SET(OPL,0x40); /* CSM mode key,TL controll */ if( OPL->mode & 0x80 ) { /* CSM mode total level latch and auto key on */ int ch; if(OPL->UpdateHandler) OPL->UpdateHandler(OPL->UpdateParam,0); } } return OPL->status>>7; } #define MAX_OPL_CHIPS 2 #if (BUILD_YM3812) static FM_OPLlite *OPLlite_YM3812[MAX_OPL_CHIPS]; extern "C" { static int Status940=0; static int g_hMemory=0; static volatile unsigned short *g_pusRegs; static unsigned char *g_pSharedMemory = 0; void UpdateThreadEntry(void); void Pause940(int n); void Reset940(int yes); void Startup940(); void Shutdown940(); void CleanUp(void); void InitSharedMemory(); } void Pause940(int n) { if(n) g_pusRegs[0x0904>>1] &= 0xFFFE; else g_pusRegs[0x0904>>1] |= 1; } void Reset940(int yes) { g_pusRegs[0x3B48>>1] = ((yes&1) << 7) | (0x03); } void Startup940() { int nLen, nRead; FILE *fp; unsigned char ucData[1000]; Reset940(1); Pause940(1); g_pusRegs[0x3B40>>1] = 0; g_pusRegs[0x3B42>>1] = 0; g_pusRegs[0x3B44>>1] = 0xffff; g_pusRegs[0x3B46>>1] = 0xffff; // load code940.bin nLen = 0; fp = fopen("code940.bin", "r"); if(!fp) { LOG_MSG("no 940 core found\n"); return; } else { LOG_MSG("940 core found\n"); } while(1) { nRead = fread(ucData, 1, 1000, fp); if(nRead <= 0) break; memcpy(g_pSharedMemory + nLen, ucData, nRead); nLen += nRead; } fclose(fp); Reset940(0); Pause940(0); usleep(10000); } void Shutdown940() { Reset940(1); Pause940(1); } void CleanUp(void) { Status940--; //if(Status940>0) return; //if(g_pSharedMemory) // munmap(g_pSharedMemory, 0xF80000); g_pSharedMemory = 0; Shutdown940(); close(g_hMemory); printf("Core shutdown\n"); } void InitSharedMemory() { if(g_hMemory) return; LOG_MSG("Once?\n"); g_hMemory = open("/dev/mem", O_RDWR); g_pusRegs = (unsigned short *) mmap(0, 0x10000, PROT_READ|PROT_WRITE, MAP_SHARED, g_hMemory, 0xc0000000); g_pSharedMemory = (unsigned char *) mmap(0, 0xF80000, PROT_READ|PROT_WRITE, MAP_SHARED, g_hMemory, 0x3000000); memset(g_pSharedMemory,0,0x400000); } void UpdateThreadEntry(void) { Status940++; if(Status940==1) Startup940(); } static void InitMemory() { SharedBuff_ptr = (char *) (g_pSharedMemory + BUFF_BASE_ADDRESS); SharedData_ptr = (char *) (g_pSharedMemory + DATA_BASE_ADDRESS); memset(SharedBuff_ptr,0, END_OFFSET); memset(SharedData_ptr,0, END_OFFSET2); } int YM3812Init(int num, int clock, int rate) { int i; char *ptr; if (YM3812NumChips) return -1; /* duplicate init. */ if(END_OFFSET>OPL2_MSG_SIZE || END_OFFSET2>OPL2_DAT_SIZE) { LOG_MSG("OPL2 memory data error\n"); return -1; } InitSharedMemory(); InitMemory(); LOG_MSG("OPL2 reports\n"); LOG_MSG("OPL2 mem: %d %d %d %d\n", sizeof(OPL_SLOT), sizeof(OPL_CH),sizeof(FM_OPL),OPL_SIZE); ptr=(SharedData_ptr + NUMCHIP_OFFSET); YM3812NumChips=(int *) ptr; *YM3812NumChips = num; ptr=(SharedBuff_ptr + NSUB_OFFSET); NSubmittedMessages=(int *) ptr; *NSubmittedMessages=-1; ptr=(SharedBuff_ptr + NEX_OFFSET); NExecutedMessages=(int *) ptr; *NExecutedMessages=-1; ptr=(SharedBuff_ptr + MSG_BUF_OFFSET); MessageBuffer=(CoreMessage *) ptr; ptr=(SharedBuff_ptr + TL_TAB_OFFSET); tl_tab=(signed int *) ptr; ptr=(SharedBuff_ptr + SIN_TAB_OFFSET); sin_tab=(unsigned int *) ptr; init_tables(); for (i = 0;i < *YM3812NumChips; i++) { ptr=(SharedBuff_ptr + BUFPOS_OFFSET+ i*sizeof(int)); BufWritePos[i]=(int *) ptr; *BufWritePos[i]=0; ptr=(SharedBuff_ptr + READPOS_OFFSET +i*sizeof(int)); BufReadPos[i]=(int *) ptr; *BufReadPos[i]=0; ptr=(SharedBuff_ptr + DATA_OFFSET + i * SHARED_BUF_SIZE * sizeof(INT16)); SharedBuffer[i]=(INT16 *) ptr; ptr=(SharedData_ptr + OPL_OFFSET + i*OPL_SIZE); OPL_YM3812[i] = (FM_OPL*) ptr; ptr = (char *) malloc(sizeof(FM_OPLlite)); memset(ptr , 0, sizeof(FM_OPLlite)); OPLlite_YM3812[i] = (FM_OPLlite *) ptr; ptr=(SharedBuff_ptr + FNTAB_OFFSET+i*1024*sizeof(UINT32)); OPLlite_YM3812[i]->fn_tab=(UINT32 *) ptr; OPLCreate(OPL_TYPE_YM3812,clock,rate,OPLlite_YM3812[i],OPL_YM3812[i]); } UpdateThreadEntry(); ADD_MESSAGE(INIT ,num ,clock ,rate ); for (i = 0;i < *YM3812NumChips; i++) { YM3812ResetChip(i); } return 0; } void YM3812Shutdown(void) { int i; LOG_MSG("OPL2 ...\n"); ADD_MESSAGE(SHUTDOWN,0,0,0); WAIT_FOR_SYNC; LOG_MSG("OPL2 end\n"); for (i = 0;i < *YM3812NumChips; i++) { /* emulator shutdown */ OPLDestroy(OPLlite_YM3812[i]); OPL_YM3812[i] = NULL; OPLlite_YM3812[i] = NULL; } *YM3812NumChips = 0; CleanUp(); } void YM3812ResetChip(int which) { ADD_MESSAGE(RESET,which,0,0); OPLResetChip(OPLlite_YM3812[which]); } int YM3812Write(int which, int a, int v) { ADD_MESSAGE(WRITE,which,0,a); ADD_MESSAGE(WRITE,which,1,v); OPLWriteReg(OPLlite_YM3812[which], a, v); return (OPLlite_YM3812[which]->status>>7); } unsigned char YM3812Read(int which, int a) { ADD_MESSAGE(READ,which,a,0); /* YM3812 always returns bit2 and bit1 in HIGH state */ return OPLRead(OPLlite_YM3812[which], a) | 0x06 ; } int YM3812TimerOver(int which, int c) { ADD_MESSAGE(TIMEROVER,which,c,0); return OPLTimerOver(OPLlite_YM3812[which], c); } void YM3812SetTimerHandler(int which, OPL_TIMERHANDLER TimerHandler, int channelOffset) { OPLSetTimerHandler(OPLlite_YM3812[which], TimerHandler, channelOffset); } void YM3812SetIRQHandler(int which,OPL_IRQHANDLER IRQHandler,int param) { OPLSetIRQHandler(OPLlite_YM3812[which], IRQHandler, param); } void YM3812SetUpdateHandler(int which,OPL_UPDATEHANDLER UpdateHandler,int param) { OPLSetUpdateHandler(OPLlite_YM3812[which], UpdateHandler, param); } void YM3812UpdateOne(int which, INT16 *buffer, int length) { int i,ncopy,nfree,nbuff,d,bufpos; INT16 lt; static int warn=1; d=*NSubmittedMessages-*NExecutedMessages; if(warn && d>MSG_BUF_SIZE) { LOG_MSG("OPL2: buffer running full"); warn=0; } else { if(d MAXOUT ) temp = MAXOUT; if( temp < MINOUT ) temp = MINOUT; return (INT16)temp; } #endif /* BUILD_YM3812 */ wolf4sdl-1.7+svn262/GP2X/fmopl.h0000644000175000017500000000322611136102537015405 0ustar fabianfabian#ifndef __FMOPL_H_ #define __FMOPL_H_ #define HAS_YM3812 1 /* --- select emulation chips --- */ #define BUILD_YM3812 (HAS_YM3812) #define BUILD_YM3526 (HAS_YM3526) #define BUILD_Y8950 (HAS_Y8950) /* select output bits size of output : 8 or 16 */ #define OPL_SAMPLE_BITS 16 /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H typedef unsigned char UINT8; /* unsigned 8bit */ typedef unsigned short UINT16; /* unsigned 16bit */ typedef unsigned int UINT32; /* unsigned 32bit */ typedef signed char INT8; /* signed 8bit */ typedef signed short INT16; /* signed 16bit */ typedef signed int INT32; /* signed 32bit */ #endif #if (OPL_SAMPLE_BITS==16) typedef INT16 OPLSAMPLE; #endif #if (OPL_SAMPLE_BITS==8) typedef INT8 OPLSAMPLE; #endif typedef void (*OPL_TIMERHANDLER)(int channel,double interval_Sec); typedef void (*OPL_IRQHANDLER)(int param,int irq); typedef void (*OPL_UPDATEHANDLER)(int param,int min_interval_us); typedef void (*OPL_PORTHANDLER_W)(int param,unsigned char data); typedef unsigned char (*OPL_PORTHANDLER_R)(int param); #if BUILD_YM3812 int YM3812Init(int num, int clock, int rate); void YM3812Shutdown(void); void YM3812ResetChip(int which); int YM3812Write(int which, int a, int v); unsigned char YM3812Read(int which, int a); int YM3812TimerOver(int which, int c); void YM3812UpdateOne(int which, INT16 *buffer, int length); void YM3812SetTimerHandler(int which, OPL_TIMERHANDLER TimerHandler, int channelOffset); void YM3812SetIRQHandler(int which, OPL_IRQHANDLER IRQHandler, int param); void YM3812SetUpdateHandler(int which, OPL_UPDATEHANDLER UpdateHandler, int param); INT16 Amp( INT16 ); #endif #endif wolf4sdl-1.7+svn262/GP2X/fmopl_940/0000755000175000017500000000000011644522671015636 5ustar fabianfabianwolf4sdl-1.7+svn262/GP2X/fmopl_940/fmopl_core.h0000644000175000017500000000142411136102537020124 0ustar fabianfabian#ifndef __FMOPL_H_ #define __FMOPL_H_ #define HAS_YM3812 1 /* --- select emulation chips --- */ #define BUILD_YM3812 (HAS_YM3812) #define BUILD_YM3526 (HAS_YM3526) #define BUILD_Y8950 (HAS_Y8950) /* select output bits size of output : 8 or 16 */ #define OPL_SAMPLE_BITS 16 /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H typedef unsigned char UINT8; /* unsigned 8bit */ typedef unsigned short UINT16; /* unsigned 16bit */ typedef unsigned int UINT32; /* unsigned 32bit */ typedef signed char INT8; /* signed 8bit */ typedef signed short INT16; /* signed 16bit */ typedef signed int INT32; /* signed 32bit */ #endif #if (OPL_SAMPLE_BITS==16) typedef INT16 OPLSAMPLE; #endif #if (OPL_SAMPLE_BITS==8) typedef INT8 OPLSAMPLE; #endif #endif wolf4sdl-1.7+svn262/GP2X/fmopl_940/fmopl_shared.h0000644000175000017500000001330311136102537020441 0ustar fabianfabian#include "memory_layout.h" #define WRAPPED(x,y) ((x)>=0?(x):(x)+(y)) #define MIN(x,y) ((x)<(y)?(x):(y)) typedef struct{ UINT32 ar; /* attack rate: AR<<2 */ UINT32 dr; /* decay rate: DR<<2 */ UINT32 rr; /* release rate:RR<<2 */ UINT8 KSR; /* key scale rate */ UINT8 ksl; /* keyscale level */ UINT8 ksr; /* key scale rate: kcode>>KSR */ UINT8 mul; /* multiple: mul_tab[ML] */ /* Phase Generator */ UINT32 Cnt; /* frequency counter */ UINT32 Incr; /* frequency counter step */ UINT8 FB; /* feedback shift value */ INT32 *connect1; /* slot1 output pointer */ INT32 op1_out[2]; /* slot1 output for feedback */ UINT8 CON; /* connection (algorithm) type */ /* Envelope Generator */ UINT8 eg_type; /* percussive/non-percussive mode */ UINT8 state; /* phase type */ UINT32 TL; /* total level: TL << 2 */ INT32 TLL; /* adjusted now TL */ INT32 volume; /* envelope counter */ UINT32 sl; /* sustain level: sl_tab[SL] */ UINT8 eg_sh_ar; /* (attack state) */ UINT8 eg_sel_ar; /* (attack state) */ UINT8 eg_sh_dr; /* (decay state) */ UINT8 eg_sel_dr; /* (decay state) */ UINT8 eg_sh_rr; /* (release state) */ UINT8 eg_sel_rr; /* (release state) */ UINT32 key; /* 0 = KEY OFF, >0 = KEY ON */ /* LFO */ UINT32 AMmask; /* LFO Amplitude Modulation enable mask */ UINT8 vib; /* LFO Phase Modulation enable flag (active high)*/ /* waveform select */ unsigned int wavetable; } OPL_SLOT; typedef struct{ OPL_SLOT SLOT[2]; /* phase generator state */ UINT32 block_fnum; /* block+fnum */ UINT32 fc; /* Freq. Increment base */ UINT32 ksl_base; /* KeyScaleLevel Base step */ UINT8 kcode; /* key code (for key scaling) */ } OPL_CH; /* OPL state */ typedef struct fm_opl_f { /* FM channel slots */ OPL_CH P_CH[9]; /* OPL/OPL2 chips have 9 channels*/ UINT32 eg_cnt; /* global envelope generator counter */ UINT32 eg_timer; /* global envelope generator counter works at frequency = chipclock/72 */ UINT32 eg_timer_add; /* step of eg_timer */ UINT32 eg_timer_overflow; /* envelope generator timer overlfows every 1 sample (on real chip) */ UINT8 rhythm; /* Rhythm mode */ UINT32 *fn_tab; /* fnumber->increment counter */ /* LFO */ UINT8 lfo_am_depth; UINT8 lfo_pm_depth_range; UINT32 lfo_am_cnt; UINT32 lfo_am_inc; UINT32 lfo_pm_cnt; UINT32 lfo_pm_inc; UINT32 noise_rng; /* 23 bit noise shift register */ UINT32 noise_p; /* current noise 'phase' */ UINT32 noise_f; /* current noise period */ UINT8 wavesel; /* waveform select enable flag */ int T[2]; /* timer counters */ int TC[2]; UINT8 st[2]; /* timer enable */ /* external event callback handlers */ UINT8 type; /* chip type */ UINT8 address; /* address register */ UINT8 status; /* status flag */ UINT8 statusmask; /* status mask */ UINT8 mode; /* Reg.08 : CSM,notesel,etc. */ int clock; /* master clock (Hz) */ int rate; /* sampling rate (Hz) */ } FM_OPL; #define OPL_SIZE 2048 /* TL_TAB_LEN is calculated as: * 12 - sinus amplitude bits (Y axis) * 2 - sinus sign bit (Y axis) * TL_RES_LEN - sinus resolution (X axis) */ #define TL_RES_LEN (256) /* 8 bits addressing (real chip) */ #define TL_TAB_LEN (12*2*TL_RES_LEN) static signed int *tl_tab; #define SIN_BITS 10 #define SIN_LEN (1<>4) /* LFO Amplitude Modulation table (verified on real YM3812) 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples Length: 210 elements. Each of the elements has to be repeated exactly 64 times (on 64 consecutive samples). The whole table takes: 64 * 210 = 13440 samples. When AM = 1 data is used directly When AM = 0 data is divided by 4 before being used (loosing precision is important) */ #define LFO_AM_TAB_ELEMENTS 210 static const UINT8 lfo_am_table[LFO_AM_TAB_ELEMENTS] = { 0,0,0,0,0,0,0, 1,1,1,1, 2,2,2,2, 3,3,3,3, 4,4,4,4, 5,5,5,5, 6,6,6,6, 7,7,7,7, 8,8,8,8, 9,9,9,9, 10,10,10,10, 11,11,11,11, 12,12,12,12, 13,13,13,13, 14,14,14,14, 15,15,15,15, 16,16,16,16, 17,17,17,17, 18,18,18,18, 19,19,19,19, 20,20,20,20, 21,21,21,21, 22,22,22,22, 23,23,23,23, 24,24,24,24, 25,25,25,25, 26,26,26, 25,25,25,25, 24,24,24,24, 23,23,23,23, 22,22,22,22, 21,21,21,21, 20,20,20,20, 19,19,19,19, 18,18,18,18, 17,17,17,17, 16,16,16,16, 15,15,15,15, 14,14,14,14, 13,13,13,13, 12,12,12,12, 11,11,11,11, 10,10,10,10, 9,9,9,9, 8,8,8,8, 7,7,7,7, 6,6,6,6, 5,5,5,5, 4,4,4,4, 3,3,3,3, 2,2,2,2, 1,1,1,1 }; /* LFO Phase Modulation table (verified on real YM3812) */ static const INT8 lfo_pm_table[8*8*2] = { /* FNUM2/FNUM = 00 0xxxxxxx (0x0000) */ 0, 0, 0, 0, 0, 0, 0, 0, /*LFO PM depth = 0*/ 0, 0, 0, 0, 0, 0, 0, 0, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 00 1xxxxxxx (0x0080) */ 0, 0, 0, 0, 0, 0, 0, 0, /*LFO PM depth = 0*/ 1, 0, 0, 0,-1, 0, 0, 0, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 01 0xxxxxxx (0x0100) */ 1, 0, 0, 0,-1, 0, 0, 0, /*LFO PM depth = 0*/ 2, 1, 0,-1,-2,-1, 0, 1, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 01 1xxxxxxx (0x0180) */ 1, 0, 0, 0,-1, 0, 0, 0, /*LFO PM depth = 0*/ 3, 1, 0,-1,-3,-1, 0, 1, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 10 0xxxxxxx (0x0200) */ 2, 1, 0,-1,-2,-1, 0, 1, /*LFO PM depth = 0*/ 4, 2, 0,-2,-4,-2, 0, 2, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 10 1xxxxxxx (0x0280) */ 2, 1, 0,-1,-2,-1, 0, 1, /*LFO PM depth = 0*/ 5, 2, 0,-2,-5,-2, 0, 2, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 11 0xxxxxxx (0x0300) */ 3, 1, 0,-1,-3,-1, 0, 1, /*LFO PM depth = 0*/ 6, 3, 0,-3,-6,-3, 0, 3, /*LFO PM depth = 1*/ /* FNUM2/FNUM = 11 1xxxxxxx (0x0380) */ 3, 1, 0,-1,-3,-1, 0, 1, /*LFO PM depth = 0*/ 7, 3, 0,-3,-7,-3, 0, 3 /*LFO PM depth = 1*/ }; static int cur_chip = -1; /* current chip pointer */ static OPL_SLOT *SLOT7_1, *SLOT7_2, *SLOT8_1, *SLOT8_2; static signed int phase_modulation[1]; /* phase modulation input (SLOT 2) */ static signed int output[1]; static UINT32 LFO_AM; static INT32 LFO_PM; INLINE int limit( int val, int max, int min ) { if ( val > max ) val = max; else if ( val < min ) val = min; return val; } /* status set and IRQ handling */ INLINE void OPL_STATUS_SET(FM_OPL *OPL,int flag) { /* set status flag */ OPL->status |= flag; if(!(OPL->status & 0x80)) { if(OPL->status & OPL->statusmask) { /* IRQ on */ OPL->status |= 0x80; /* callback user interrupt handler (IRQ is OFF to ON) */ } } } /* status reset and IRQ handling */ INLINE void OPL_STATUS_RESET(FM_OPL *OPL,int flag) { /* reset status flag */ OPL->status &=~flag; if((OPL->status & 0x80)) { if (!(OPL->status & OPL->statusmask) ) { OPL->status &= 0x7f; /* callback user interrupt handler (IRQ is ON to OFF) */ } } } /* IRQ mask set */ INLINE void OPL_STATUSMASK_SET(FM_OPL *OPL,int flag) { OPL->statusmask = flag; /* IRQ handling check */ OPL_STATUS_SET(OPL,0); OPL_STATUS_RESET(OPL,0); } /* advance LFO to next sample */ INLINE void advance_lfo(FM_OPL *OPL) { UINT8 tmp; /* LFO */ OPL->lfo_am_cnt += OPL->lfo_am_inc; if( (int) OPL->lfo_am_cnt >= (LFO_AM_TAB_ELEMENTS<lfo_am_cnt -= (LFO_AM_TAB_ELEMENTS<lfo_am_cnt >> LFO_SH ]; if (OPL->lfo_am_depth) LFO_AM = tmp; else LFO_AM = tmp>>2; OPL->lfo_pm_cnt += OPL->lfo_pm_inc; LFO_PM = ((OPL->lfo_pm_cnt>>LFO_SH) & 7) | OPL->lfo_pm_depth_range; } /* advance to next sample */ INLINE void advance(FM_OPL *OPL) { OPL_CH *CH; OPL_SLOT *op; int i; OPL->eg_timer += OPL->eg_timer_add; while (OPL->eg_timer >= OPL->eg_timer_overflow) { OPL->eg_timer -= OPL->eg_timer_overflow; OPL->eg_cnt++; for (i=0; i<9*2; i++) { CH = &OPL->P_CH[i/2]; op = &CH->SLOT[i&1]; /* Envelope Generator */ switch(op->state) { case EG_ATT: /* attack phase */ if ( !(OPL->eg_cnt & ((1<eg_sh_ar)-1) ) ) { op->volume += (~op->volume * (eg_inc[op->eg_sel_ar + ((OPL->eg_cnt>>op->eg_sh_ar)&7)]) ) >>3; if (op->volume <= MIN_ATT_INDEX) { op->volume = MIN_ATT_INDEX; op->state = EG_DEC; } } break; case EG_DEC: /* decay phase */ if ( !(OPL->eg_cnt & ((1<eg_sh_dr)-1) ) ) { op->volume += eg_inc[op->eg_sel_dr + ((OPL->eg_cnt>>op->eg_sh_dr)&7)]; if ( (UINT32) op->volume >= op->sl ) op->state = EG_SUS; } break; case EG_SUS: /* sustain phase */ /* this is important behaviour: one can change percusive/non-percussive modes on the fly and the chip will remain in sustain phase - verified on real YM3812 */ if(op->eg_type) /* non-percussive mode */ { /* do nothing */ } else /* percussive mode */ { /* during sustain phase chip adds Release Rate (in percussive mode) */ if ( !(OPL->eg_cnt & ((1<eg_sh_rr)-1) ) ) { op->volume += eg_inc[op->eg_sel_rr + ((OPL->eg_cnt>>op->eg_sh_rr)&7)]; if ( op->volume >= MAX_ATT_INDEX ) op->volume = MAX_ATT_INDEX; } /* else do nothing in sustain phase */ } break; case EG_REL: /* release phase */ if ( !(OPL->eg_cnt & ((1<eg_sh_rr)-1) ) ) { op->volume += eg_inc[op->eg_sel_rr + ((OPL->eg_cnt>>op->eg_sh_rr)&7)]; if ( op->volume >= MAX_ATT_INDEX ) { op->volume = MAX_ATT_INDEX; op->state = EG_OFF; } } break; default: break; } } } for (i=0; i<9*2; i++) { CH = &OPL->P_CH[i/2]; op = &CH->SLOT[i&1]; /* Phase Generator */ if(op->vib) { UINT8 block; unsigned int block_fnum = CH->block_fnum; unsigned int fnum_lfo = (block_fnum&0x0380) >> 7; signed int lfo_fn_table_index_offset = lfo_pm_table[LFO_PM + 16*fnum_lfo ]; if (lfo_fn_table_index_offset) /* LFO phase modulation active */ { block_fnum += lfo_fn_table_index_offset; block = (block_fnum&0x1c00) >> 10; op->Cnt += (OPL->fn_tab[block_fnum&0x03ff] >> (7-block)) * op->mul; } else /* LFO phase modulation = zero */ { op->Cnt += op->Incr; } } else /* LFO phase modulation disabled for this operator */ { op->Cnt += op->Incr; } } /* The Noise Generator of the YM3812 is 23-bit shift register. * Period is equal to 2^23-2 samples. * Register works at sampling frequency of the chip, so output * can change on every sample. * * Output of the register and input to the bit 22 is: * bit0 XOR bit14 XOR bit15 XOR bit22 * * Simply use bit 22 as the noise output. */ OPL->noise_p += OPL->noise_f; i = OPL->noise_p >> FREQ_SH; /* number of events (shifts of the shift register) */ OPL->noise_p &= FREQ_MASK; while (i) { /* UINT32 j; j = ( (OPL->noise_rng) ^ (OPL->noise_rng>>14) ^ (OPL->noise_rng>>15) ^ (OPL->noise_rng>>22) ) & 1; OPL->noise_rng = (j<<22) | (OPL->noise_rng>>1); */ /* Instead of doing all the logic operations above, we use a trick here (and use bit 0 as the noise output). The difference is only that the noise bit changes one step ahead. This doesn't matter since we don't know what is real state of the noise_rng after the reset. */ if (OPL->noise_rng & 1) OPL->noise_rng ^= 0x800302; OPL->noise_rng >>= 1; i--; } } INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) { UINT32 p; p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + (pm<<16))) >> FREQ_SH ) & SIN_MASK) ]; if (p >= TL_TAB_LEN) return 0; return tl_tab[p]; } INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) { UINT32 p; p = (env<<4) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + pm )) >> FREQ_SH ) & SIN_MASK) ]; if (p >= TL_TAB_LEN) return 0; return tl_tab[p]; } #define volume_calc(OP) ((OP)->TLL + ((UINT32)(OP)->volume) + (LFO_AM & (OP)->AMmask)) /* calculate output */ INLINE void OPL_CALC_CH( OPL_CH *CH ) { OPL_SLOT *SLOT; unsigned int env; signed int out; phase_modulation[0] = 0; /* SLOT 1 */ SLOT = &CH->SLOT[SLOT1]; env = volume_calc(SLOT); out = SLOT->op1_out[0] + SLOT->op1_out[1]; SLOT->op1_out[0] = SLOT->op1_out[1]; *SLOT->connect1 += SLOT->op1_out[0]; SLOT->op1_out[1] = 0; if( env < ENV_QUIET ) { if (!SLOT->FB) out = 0; SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<FB), SLOT->wavetable ); } /* SLOT 2 */ SLOT++; env = volume_calc(SLOT); if( env < ENV_QUIET ) output[0] += op_calc(SLOT->Cnt, env, phase_modulation[0], SLOT->wavetable); } /* operators used in the rhythm sounds generation process: Envelope Generator: channel operator register number Bass High Snare Tom Top / slot number TL ARDR SLRR Wave Drum Hat Drum Tom Cymbal 6 / 0 12 50 70 90 f0 + 6 / 1 15 53 73 93 f3 + 7 / 0 13 51 71 91 f1 + 7 / 1 16 54 74 94 f4 + 8 / 0 14 52 72 92 f2 + 8 / 1 17 55 75 95 f5 + Phase Generator: channel operator register number Bass High Snare Tom Top / slot number MULTIPLE Drum Hat Drum Tom Cymbal 6 / 0 12 30 + 6 / 1 15 33 + 7 / 0 13 31 + + + 7 / 1 16 34 ----- n o t u s e d ----- 8 / 0 14 32 + 8 / 1 17 35 + + channel operator register number Bass High Snare Tom Top number number BLK/FNUM2 FNUM Drum Hat Drum Tom Cymbal 6 12,15 B6 A6 + 7 13,16 B7 A7 + + + 8 14,17 B8 A8 + + + */ /* calculate rhythm */ INLINE void OPL_CALC_RH( OPL_CH *CH, unsigned int noise ) { OPL_SLOT *SLOT; signed int out; unsigned int env; /* Bass Drum (verified on real YM3812): - depends on the channel 6 'connect' register: when connect = 0 it works the same as in normal (non-rhythm) mode (op1->op2->out) when connect = 1 _only_ operator 2 is present on output (op2->out), operator 1 is ignored - output sample always is multiplied by 2 */ phase_modulation[0] = 0; /* SLOT 1 */ SLOT = &CH[6].SLOT[SLOT1]; env = volume_calc(SLOT); out = SLOT->op1_out[0] + SLOT->op1_out[1]; SLOT->op1_out[0] = SLOT->op1_out[1]; if (!SLOT->CON) phase_modulation[0] = SLOT->op1_out[0]; /* else ignore output of operator 1 */ SLOT->op1_out[1] = 0; if( env < ENV_QUIET ) { if (!SLOT->FB) out = 0; SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<FB), SLOT->wavetable ); } /* SLOT 2 */ SLOT++; env = volume_calc(SLOT); if( env < ENV_QUIET ) output[0] += op_calc(SLOT->Cnt, env, phase_modulation[0], SLOT->wavetable) * 2; /* Phase generation is based on: */ /* HH (13) channel 7->slot 1 combined with channel 8->slot 2 (same combination as TOP CYMBAL but different output phases) */ /* SD (16) channel 7->slot 1 */ /* TOM (14) channel 8->slot 1 */ /* TOP (17) channel 7->slot 1 combined with channel 8->slot 2 (same combination as HIGH HAT but different output phases) */ /* Envelope generation based on: */ /* HH channel 7->slot1 */ /* SD channel 7->slot2 */ /* TOM channel 8->slot1 */ /* TOP channel 8->slot2 */ /* The following formulas can be well optimized. I leave them in direct form for now (in case I've missed something). */ /* High Hat (verified on real YM3812) */ env = volume_calc(SLOT7_1); if( env < ENV_QUIET ) { /* high hat phase generation: phase = d0 or 234 (based on frequency only) phase = 34 or 2d0 (based on noise) */ /* base frequency derived from operator 1 in channel 7 */ unsigned char bit7 = ((SLOT7_1->Cnt>>FREQ_SH)>>7)&1; unsigned char bit3 = ((SLOT7_1->Cnt>>FREQ_SH)>>3)&1; unsigned char bit2 = ((SLOT7_1->Cnt>>FREQ_SH)>>2)&1; unsigned char res1 = (bit2 ^ bit7) | bit3; /* when res1 = 0 phase = 0x000 | 0xd0; */ /* when res1 = 1 phase = 0x200 | (0xd0>>2); */ UINT32 phase = res1 ? (0x200|(0xd0>>2)) : 0xd0; /* enable gate based on frequency of operator 2 in channel 8 */ unsigned char bit5e= ((SLOT8_2->Cnt>>FREQ_SH)>>5)&1; unsigned char bit3e= ((SLOT8_2->Cnt>>FREQ_SH)>>3)&1; unsigned char res2 = (bit3e ^ bit5e); /* when res2 = 0 pass the phase from calculation above (res1); */ /* when res2 = 1 phase = 0x200 | (0xd0>>2); */ if (res2) phase = (0x200|(0xd0>>2)); /* when phase & 0x200 is set and noise=1 then phase = 0x200|0xd0 */ /* when phase & 0x200 is set and noise=0 then phase = 0x200|(0xd0>>2), ie no change */ if (phase&0x200) { if (noise) phase = 0x200|0xd0; } else /* when phase & 0x200 is clear and noise=1 then phase = 0xd0>>2 */ /* when phase & 0x200 is clear and noise=0 then phase = 0xd0, ie no change */ { if (noise) phase = 0xd0>>2; } output[0] += op_calc(phase<wavetable) * 2; } /* Snare Drum (verified on real YM3812) */ env = volume_calc(SLOT7_2); if( env < ENV_QUIET ) { /* base frequency derived from operator 1 in channel 7 */ unsigned char bit8 = ((SLOT7_1->Cnt>>FREQ_SH)>>8)&1; /* when bit8 = 0 phase = 0x100; */ /* when bit8 = 1 phase = 0x200; */ UINT32 phase = bit8 ? 0x200 : 0x100; /* Noise bit XOR'es phase by 0x100 */ /* when noisebit = 0 pass the phase from calculation above */ /* when noisebit = 1 phase ^= 0x100; */ /* in other words: phase ^= (noisebit<<8); */ if (noise) phase ^= 0x100; output[0] += op_calc(phase<wavetable) * 2; } /* Tom Tom (verified on real YM3812) */ env = volume_calc(SLOT8_1); if( env < ENV_QUIET ) output[0] += op_calc(SLOT8_1->Cnt, env, 0, SLOT8_1->wavetable) * 2; /* Top Cymbal (verified on real YM3812) */ env = volume_calc(SLOT8_2); if( env < ENV_QUIET ) { /* base frequency derived from operator 1 in channel 7 */ unsigned char bit7 = ((SLOT7_1->Cnt>>FREQ_SH)>>7)&1; unsigned char bit3 = ((SLOT7_1->Cnt>>FREQ_SH)>>3)&1; unsigned char bit2 = ((SLOT7_1->Cnt>>FREQ_SH)>>2)&1; unsigned char res1 = (bit2 ^ bit7) | bit3; /* when res1 = 0 phase = 0x000 | 0x100; */ /* when res1 = 1 phase = 0x200 | 0x100; */ UINT32 phase = res1 ? 0x300 : 0x100; /* enable gate based on frequency of operator 2 in channel 8 */ unsigned char bit5e= ((SLOT8_2->Cnt>>FREQ_SH)>>5)&1; unsigned char bit3e= ((SLOT8_2->Cnt>>FREQ_SH)>>3)&1; unsigned char res2 = (bit3e ^ bit5e); /* when res2 = 0 pass the phase from calculation above (res1); */ /* when res2 = 1 phase = 0x200 | 0x100; */ if (res2) phase = 0x300; output[0] += op_calc(phase<wavetable) * 2; } } INLINE void FM_KEYON(OPL_SLOT *SLOT, UINT32 key_set) { if( !SLOT->key ) { /* restart Phase Generator */ SLOT->Cnt = 0; /* phase -> Attack */ SLOT->state = EG_ATT; } SLOT->key |= key_set; } INLINE void FM_KEYOFF(OPL_SLOT *SLOT, UINT32 key_clr) { if( SLOT->key ) { SLOT->key &= key_clr; if( !SLOT->key ) { /* phase -> Release */ if (SLOT->state>EG_REL) SLOT->state = EG_REL; } } } /* update phase increment counter of operator (also update the EG rates if necessary) */ INLINE void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT) { int ksr; /* (frequency) phase increment counter */ SLOT->Incr = CH->fc * SLOT->mul; ksr = CH->kcode >> SLOT->KSR; if( SLOT->ksr != ksr ) { SLOT->ksr = ksr; /* calculate envelope generator rates */ if ((SLOT->ar + SLOT->ksr) < 16+62) { SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ]; SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ]; } else { SLOT->eg_sh_ar = 0; SLOT->eg_sel_ar = 13*RATE_STEPS; } SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; } } /* set multi,am,vib,EG-TYP,KSR,mul */ INLINE void set_mul(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; SLOT->mul = mul_tab[v&0x0f]; SLOT->KSR = (v&0x10) ? 0 : 2; SLOT->eg_type = (v&0x20); SLOT->vib = (v&0x40); SLOT->AMmask = (v&0x80) ? ~0 : 0; CALC_FCSLOT(CH,SLOT); } /* set ksl & tl */ INLINE void set_ksl_tl(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */ SLOT->ksl = ksl ? 3-ksl : 31; SLOT->TL = (v&0x3f)<<(ENV_BITS-1-7); /* 7 bits TL (bit 6 = always 0) */ SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); } /* set attack rate & decay rate */ INLINE void set_ar_dr(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; SLOT->ar = (v>>4) ? 16 + ((v>>4) <<2) : 0; if ((SLOT->ar + SLOT->ksr) < 16+62) { SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ]; SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ]; } else { SLOT->eg_sh_ar = 0; SLOT->eg_sel_ar = 13*RATE_STEPS; } SLOT->dr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; } /* set sustain level & release rate */ INLINE void set_sl_rr(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; SLOT->sl = sl_tab[ v>>4 ]; SLOT->rr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; } /* write a value v to register r on OPL chip */ static void OPLWriteReg(FM_OPL *OPL, int r, int v) { OPL_CH *CH; int slot; int block_fnum; /* adjust bus to 8 bits */ r &= 0xff; v &= 0xff; switch(r&0xe0) { case 0x00: /* 00-1f:control */ switch(r&0x1f) { case 0x01: /* waveform select enable */ if(OPL->type&OPL_TYPE_WAVESEL) { OPL->wavesel = v&0x20; /* do not change the waveform previously selected */ } break; case 0x02: /* Timer 1 */ OPL->T[0] = (256-v)*4; break; case 0x03: /* Timer 2 */ OPL->T[1] = (256-v)*16; break; case 0x04: /* IRQ clear / mask and Timer enable */ if(v&0x80) { /* IRQ flag clear */ //OPL_STATUS_RESET(OPL,0x7f); OPL_STATUS_RESET(OPL,0x7f-0x08); /* don't reset BFRDY flag or we will have to call deltat module to set the flag */ } else { /* set IRQ mask ,timer enable*/ #if 0 OPL->st[0] = v&1; OPL->st[1] = (v>>1)&1; /* IRQRST,T1MSK,t2MSK,EOSMSK,BRMSK,x,ST2,ST1 */ OPL_STATUS_RESET(OPL, v & 0x78 ); OPL_STATUSMASK_SET(OPL, (~v) & 0x78 ); /* timer 1 */ if(OPL->st[0]) { OPL->TC[0]=OPL->T[0]*20; } /* timer 2 */ if(OPL->st[1]) { OPL->TC[1]=OPL->T[1]*20; } #endif /* set IRQ mask ,timer enable*/ UINT8 st1 = v&1; UINT8 st2 = (v>>1)&1; /* IRQRST,T1MSK,t2MSK,EOSMSK,BRMSK,x,ST2,ST1 */ OPL_STATUS_RESET(OPL, v & (0x78-0x08) ); OPL_STATUSMASK_SET(OPL, (~v) & 0x78 ); /* timer 2 */ if(OPL->st[1] != st2) { OPL->st[1] = st2; } /* timer 1 */ if(OPL->st[0] != st1) { OPL->st[0] = st1; } } break; case 0x08: /* MODE,DELTA-T control 2 : CSM,NOTESEL,x,x,smpl,da/ad,64k,rom */ OPL->mode = v; break; default: break; } break; case 0x20: /* am ON, vib ON, ksr, eg_type, mul */ slot = slot_array[r&0x1f]; if(slot < 0) return; set_mul(OPL,slot,v); break; case 0x40: slot = slot_array[r&0x1f]; if(slot < 0) return; set_ksl_tl(OPL,slot,v); break; case 0x60: slot = slot_array[r&0x1f]; if(slot < 0) return; set_ar_dr(OPL,slot,v); break; case 0x80: slot = slot_array[r&0x1f]; if(slot < 0) return; set_sl_rr(OPL,slot,v); break; case 0xa0: if (r == 0xbd) /* am depth, vibrato depth, r,bd,sd,tom,tc,hh */ { OPL->lfo_am_depth = v & 0x80; OPL->lfo_pm_depth_range = (v&0x40) ? 8 : 0; OPL->rhythm = v&0x3f; if(OPL->rhythm&0x20) { /* BD key on/off */ if(v&0x10) { FM_KEYON (&OPL->P_CH[6].SLOT[SLOT1], 2); FM_KEYON (&OPL->P_CH[6].SLOT[SLOT2], 2); } else { FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT1],~2); FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT2],~2); } /* HH key on/off */ if(v&0x01) FM_KEYON (&OPL->P_CH[7].SLOT[SLOT1], 2); else FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT1],~2); /* SD key on/off */ if(v&0x08) FM_KEYON (&OPL->P_CH[7].SLOT[SLOT2], 2); else FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT2],~2); /* TOM key on/off */ if(v&0x04) FM_KEYON (&OPL->P_CH[8].SLOT[SLOT1], 2); else FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT1],~2); /* TOP-CY key on/off */ if(v&0x02) FM_KEYON (&OPL->P_CH[8].SLOT[SLOT2], 2); else FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT2],~2); } else { /* BD key off */ FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT1],~2); FM_KEYOFF(&OPL->P_CH[6].SLOT[SLOT2],~2); /* HH key off */ FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT1],~2); /* SD key off */ FM_KEYOFF(&OPL->P_CH[7].SLOT[SLOT2],~2); /* TOM key off */ FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT1],~2); /* TOP-CY off */ FM_KEYOFF(&OPL->P_CH[8].SLOT[SLOT2],~2); } return; } /* keyon,block,fnum */ if( (r&0x0f) > 8) return; CH = &OPL->P_CH[r&0x0f]; if(!(r&0x10)) { /* a0-a8 */ block_fnum = (CH->block_fnum&0x1f00) | v; } else { /* b0-b8 */ block_fnum = ((v&0x1f)<<8) | (CH->block_fnum&0xff); if(v&0x20) { FM_KEYON (&CH->SLOT[SLOT1], 1); FM_KEYON (&CH->SLOT[SLOT2], 1); } else { FM_KEYOFF(&CH->SLOT[SLOT1],~1); FM_KEYOFF(&CH->SLOT[SLOT2],~1); } } /* update */ if(CH->block_fnum != (UINT32) block_fnum) { UINT8 block = block_fnum >> 10; CH->block_fnum = block_fnum; CH->ksl_base = ksl_tab[block_fnum>>6]; CH->fc = OPL->fn_tab[block_fnum&0x03ff] >> (7-block); /* BLK 2,1,0 bits -> bits 3,2,1 of kcode */ CH->kcode = (CH->block_fnum&0x1c00)>>9; /* the info below is actually opposite to what is stated in the Manuals (verifed on real YM3812) */ /* if notesel == 0 -> lsb of kcode is bit 10 (MSB) of fnum */ /* if notesel == 1 -> lsb of kcode is bit 9 (MSB-1) of fnum */ if (OPL->mode&0x40) CH->kcode |= (CH->block_fnum&0x100)>>8; /* notesel == 1 */ else CH->kcode |= (CH->block_fnum&0x200)>>9; /* notesel == 0 */ /* refresh Total Level in both SLOTs of this channel */ CH->SLOT[SLOT1].TLL = CH->SLOT[SLOT1].TL + (CH->ksl_base>>CH->SLOT[SLOT1].ksl); CH->SLOT[SLOT2].TLL = CH->SLOT[SLOT2].TL + (CH->ksl_base>>CH->SLOT[SLOT2].ksl); /* refresh frequency counter in both SLOTs of this channel */ CALC_FCSLOT(CH,&CH->SLOT[SLOT1]); CALC_FCSLOT(CH,&CH->SLOT[SLOT2]); } break; case 0xc0: /* FB,C */ if( (r&0x0f) > 8) return; CH = &OPL->P_CH[r&0x0f]; CH->SLOT[SLOT1].FB = (v>>1)&7 ? ((v>>1)&7) + 7 : 0; CH->SLOT[SLOT1].CON = v&1; CH->SLOT[SLOT1].connect1 = CH->SLOT[SLOT1].CON ? &output[0]: &phase_modulation[0]; break; case 0xe0: /* waveform select */ /* simply ignore write to the waveform select register if selecting not enabled in test register */ if(OPL->wavesel) { slot = slot_array[r&0x1f]; if(slot < 0) return; CH = &OPL->P_CH[slot/2]; CH->SLOT[slot&1].wavetable = (v&0x03)*SIN_LEN; } break; } } static void OPLResetChip(FM_OPL *OPL) { int c,s; int i; OPL->eg_timer = 0; OPL->eg_cnt = 0; OPL->noise_rng = 1; /* noise shift register */ OPL->mode = 0; /* normal mode */ OPL_STATUS_RESET(OPL,0x7f); /* reset with register write */ OPLWriteReg(OPL,0x01,0); /* wavesel disable */ OPLWriteReg(OPL,0x02,0); /* Timer1 */ OPLWriteReg(OPL,0x03,0); /* Timer2 */ OPLWriteReg(OPL,0x04,0); /* IRQ mask clear */ for(i = 0xff ; i >= 0x20 ; i-- ) OPLWriteReg(OPL,i,0); /* reset operator parameters */ for( c = 0 ; c < 9 ; c++ ) { OPL_CH *CH = &OPL->P_CH[c]; for(s = 0 ; s < 2 ; s++ ) { /* wave table */ CH->SLOT[s].wavetable = 0; CH->SLOT[s].state = EG_OFF; CH->SLOT[s].volume = MAX_ATT_INDEX; } } } /* Create one of virtual YM3812/YM3526/Y8950 */ /* 'clock' is chip clock in Hz */ /* 'rate' is sampling rate */ static void OPLCreate(int type, int clock, int rate, FM_OPL *OPL) { OPL->type = type; OPL->clock = clock; OPL->rate = rate; return; } static int OPLWrite(FM_OPL *OPL,int a,int v) { if( !(a&1) ) { /* address port */ OPL->address = v & 0xff; } else { /* data port */ OPLWriteReg(OPL,OPL->address,v); } return OPL->status>>7; } static unsigned char OPLRead(FM_OPL *OPL,int a) { if( !(a&1) ) { if (OPL->st[0]) { if (OPL->TC[0]) OPL->TC[0]--; else { OPL->TC[0]=OPL->T[0]*20; OPL_STATUS_SET(OPL,0x40); } } if (OPL->st[1]) { if (OPL->TC[1]) OPL->TC[1]--; else { OPL->TC[1]=OPL->T[1]*20; OPL_STATUS_SET(OPL,0x40); } } return OPL->status & (OPL->statusmask|0x80); } return 0xff; } /* CSM Key Controll */ INLINE void CSMKeyControll(OPL_CH *CH) { FM_KEYON (&CH->SLOT[SLOT1], 4); FM_KEYON (&CH->SLOT[SLOT2], 4); /* The key off should happen exactly one sample later - not implemented correctly yet */ FM_KEYOFF(&CH->SLOT[SLOT1], ~4); FM_KEYOFF(&CH->SLOT[SLOT2], ~4); } static int OPLTimerOver(FM_OPL *OPL,int c) { if( c ) { /* Timer B */ OPL_STATUS_SET(OPL,0x20); } else { /* Timer A */ OPL_STATUS_SET(OPL,0x40); /* CSM mode key,TL controll */ if( OPL->mode & 0x80 ) { /* CSM mode total level latch and auto key on */ int ch; for(ch=0; ch<9; ch++) CSMKeyControll( &OPL->P_CH[ch] ); } } return OPL->status>>7; } #if (BUILD_YM3812) static int Active=1; static void YM3812ResetChip(int which) { OPLResetChip(OPL_YM3812[which]); } extern "C" void fmopl_Init(void) { char *ptr; SharedBuff_ptr = (char *) BUFF_BASE_ADDRESS; ptr=(SharedBuff_ptr + NSUB_OFFSET); NSubmittedMessages=(int *) ptr; ptr=(SharedBuff_ptr + NEX_OFFSET); NExecutedMessages=(int *) ptr; ptr=(SharedBuff_ptr + MSG_BUF_OFFSET); MessageBuffer=(CoreMessage *) ptr; } int YM3812Init(int num, int clock, int rate) { char *ptr; int i; SharedData_ptr=(char *) DATA_BASE_ADDRESS; ptr=(SharedData_ptr + NUMCHIP_OFFSET); YM3812NumChips=(int *) ptr; ptr=(SharedBuff_ptr + TL_TAB_OFFSET); tl_tab=(signed int *) ptr; ptr=(SharedBuff_ptr + SIN_TAB_OFFSET); sin_tab=(unsigned int *) ptr; for (i = 0;i < *YM3812NumChips; i++) { ptr=(SharedBuff_ptr + BUFPOS_OFFSET + i*sizeof(int)); BufWritePos[i]=(int *) ptr; ptr=(SharedBuff_ptr + READPOS_OFFSET + i*sizeof(int)); BufReadPos[i]=(int *) ptr; ptr=(SharedBuff_ptr + DATA_OFFSET + i * SHARED_BUF_SIZE * sizeof(INT16)); SharedBuffer[i]=(INT16 *) ptr; ptr=(SharedData_ptr + OPL_OFFSET + i*OPL_SIZE); OPL_YM3812[i] = (FM_OPL*) ptr; ptr=(SharedBuff_ptr + FNTAB_OFFSET+i*1024*sizeof(UINT32)); OPL_YM3812[i]->fn_tab=(UINT32 *) ptr; OPLCreate(OPL_TYPE_YM3812,clock,rate,OPL_YM3812[i]); YM3812ResetChip(i); } return 0; } void YM3812Shutdown(void) { int i; for (i = 0;i < *YM3812NumChips; i++) { OPL_YM3812[i] = 0; } } static int YM3812Write(int which, int a, int v) { return OPLWrite(OPL_YM3812[which], a, v); } static unsigned char YM3812Read(int which, int a) { /* YM3812 always returns bit2 and bit1 in HIGH state */ return OPLRead(OPL_YM3812[which], a) | 0x06 ; } static int YM3812TimerOver(int which, int c) { return OPLTimerOver(OPL_YM3812[which], c); } /* ** Generate samples for one of the YM3812's ** ** 'which' is the virtual YM3812 number ** '*buffer' is the output buffer pointer ** 'length' is the number of samples that should be generated */ static void YM3812UpdateOne_core(int which, INT16 *buffer, int length) { FM_OPL *OPL = OPL_YM3812[which]; UINT8 rhythm = OPL->rhythm&0x20; OPLSAMPLE *buf = buffer; int i; if( which != cur_chip ){ cur_chip = which; /* rhythm slots */ SLOT7_1 = &OPL->P_CH[7].SLOT[SLOT1]; SLOT7_2 = &OPL->P_CH[7].SLOT[SLOT2]; SLOT8_1 = &OPL->P_CH[8].SLOT[SLOT1]; SLOT8_2 = &OPL->P_CH[8].SLOT[SLOT2]; } for( i=0; i < length ; i++ ) { int lt; output[0] = 0; advance_lfo(OPL); /* FM part */ OPL_CALC_CH(&OPL->P_CH[0]); OPL_CALC_CH(&OPL->P_CH[1]); OPL_CALC_CH(&OPL->P_CH[2]); OPL_CALC_CH(&OPL->P_CH[3]); OPL_CALC_CH(&OPL->P_CH[4]); OPL_CALC_CH(&OPL->P_CH[5]); if(!rhythm) { OPL_CALC_CH(&OPL->P_CH[6]); OPL_CALC_CH(&OPL->P_CH[7]); OPL_CALC_CH(&OPL->P_CH[8]); } else /* Rhythm part */ { OPL_CALC_RH(&OPL->P_CH[0], (OPL->noise_rng>>0)&1 ); } lt = output[0]; lt >>= FINAL_SH; /* limit check */ lt = limit( lt , MAXOUT, MINOUT ); /* store to sound buffer */ buf[i] = lt; advance(OPL); } } static INT16 buff[SHARED_BUF_SIZE]; static void YM3812UpdateOne(int which, int length) { int i,nfree; if(length==0) return; YM3812UpdateOne_core(which,buff,length); nfree=SHARED_BUF_SIZE - *BufWritePos[which]; if(length < nfree) { for(i=0;i+Z in debug mode to find out suitable values for seed and colorMapIndex // Each entry consists of seed, speed, angle and colorMapIndex cloudsky_t cloudSkys[] = { { 626, 800, 20, 0 }, { 1234, 650, 60, 1 }, { 0, 700, 120, 0 }, { 0, 0, 0, 0 }, { 11243, 750, 310, 0 }, { 32141, 750, 87, 0 }, { 12124, 750, 64, 0 }, { 55543, 500, 240, 0 }, { 65535, 200, 54, 1 }, { 4, 1200, 290, 0 }, }; byte skyc[65536L]; long cloudx = 0, cloudy = 0; cloudsky_t *curSky = NULL; #ifdef USE_FEATUREFLAGS // The lower left tile of every map determines the used cloud sky definition from cloudSkys. static int GetCloudSkyDefID() { int skyID = ffDataBottomLeft; assert(skyID >= 0 && skyID < lengthof(cloudSkys)); return skyID; } #else static int GetCloudSkyDefID() { int skyID; switch(gamestate.episode * 10 + mapon) { case 0: skyID = 0; break; case 1: skyID = 1; break; case 2: skyID = 2; break; case 3: skyID = 3; break; case 4: skyID = 4; break; case 5: skyID = 5; break; case 6: skyID = 6; break; case 7: skyID = 7; break; case 8: skyID = 8; break; case 9: skyID = 9; break; default: skyID = 9; break; } assert(skyID >= 0 && skyID < lengthof(cloudSkys)); return skyID; } #endif void SplitS(unsigned size,unsigned x1,unsigned y1,unsigned x2,unsigned y2) { if(size==1) return; if(!skyc[((x1+size/2)*256+y1)]) { skyc[((x1+size/2)*256+y1)]=(byte)(((int)skyc[(x1*256+y1)] +(int)skyc[((x2&0xff)*256+y1)])/2)+rand()%(size*2)-size; if(!skyc[((x1+size/2)*256+y1)]) skyc[((x1+size/2)*256+y1)]=1; } if(!skyc[((x1+size/2)*256+(y2&0xff))]) { skyc[((x1+size/2)*256+(y2&0xff))]=(byte)(((int)skyc[(x1*256+(y2&0xff))] +(int)skyc[((x2&0xff)*256+(y2&0xff))])/2)+rand()%(size*2)-size; if(!skyc[((x1+size/2)*256+(y2&0xff))]) skyc[((x1+size/2)*256+(y2&0xff))]=1; } if(!skyc[(x1*256+y1+size/2)]) { skyc[(x1*256+y1+size/2)]=(byte)(((int)skyc[(x1*256+y1)] +(int)skyc[(x1*256+(y2&0xff))])/2)+rand()%(size*2)-size; if(!skyc[(x1*256+y1+size/2)]) skyc[(x1*256+y1+size/2)]=1; } if(!skyc[((x2&0xff)*256+y1+size/2)]) { skyc[((x2&0xff)*256+y1+size/2)]=(byte)(((int)skyc[((x2&0xff)*256+y1)] +(int)skyc[((x2&0xff)*256+(y2&0xff))])/2)+rand()%(size*2)-size; if(!skyc[((x2&0xff)*256+y1+size/2)]) skyc[((x2&0xff)*256+y1+size/2)]=1; } skyc[((x1+size/2)*256+y1+size/2)]=(byte)(((int)skyc[(x1*256+y1)] +(int)skyc[((x2&0xff)*256+y1)]+(int)skyc[(x1*256+(y2&0xff))] +(int)skyc[((x2&0xff)*256+(y2&0xff))])/4)+rand()%(size*2)-size; SplitS(size/2,x1,y1+size/2,x1+size/2,y2); SplitS(size/2,x1+size/2,y1,x2,y1+size/2); SplitS(size/2,x1+size/2,y1+size/2,x2,y2); SplitS(size/2,x1,y1,x1+size/2,y1+size/2); } void InitSky() { unsigned cloudskyid = GetCloudSkyDefID(); if(cloudskyid >= lengthof(cloudSkys)) Quit("Illegal cloud sky id: %u", cloudskyid); curSky = &cloudSkys[cloudskyid]; memset(skyc, 0, sizeof(skyc)); // funny water texture if used instead of memset ;D // for(int i = 0; i < 65536; i++) // skyc[i] = rand() % 32 * 8; srand(curSky->seed); skyc[0] = rand() % 256; SplitS(256, 0, 0, 256, 256); // Smooth the clouds a bit for(int k = 0; k < 2; k++) { for(int i = 0; i < 256; i++) { for(int j = 0; j < 256; j++) { int32_t val = -skyc[j * 256 + i]; for(int m = 0; m < 3; m++) { for(int n = 0; n < 3; n++) { val += skyc[((j + n - 1) & 0xff) * 256 + ((i + m - 1) & 0xff)]; } } skyc[j * 256 + i] = (byte)(val >> 3); } } } // the following commented line could be useful, if you're trying to // create a new color map. This will display your current color map // in one (of course repeating) stripe of the sky // for(int i = 0; i < 256; i++) // skyc[i] = skyc[i + 256] = skyc[i + 512] = i; if(curSky->colorMapIndex >= lengthof(colorMaps)) Quit("Illegal colorMapIndex for cloud sky def %u: %u", cloudskyid, curSky->colorMapIndex); colormap_t *curMap = &colorMaps[curSky->colorMapIndex]; int numColors = curMap->numColors; byte colormap[256]; colormapentry_t *curEntry = curMap->entries; for(int calcedCols = 0; calcedCols < numColors; curEntry++) { if(curEntry->startAndDir < 0) { for(int i = 0, ind = -curEntry->startAndDir; i < curEntry->length; i++, ind--) colormap[calcedCols++] = ind; } else { for(int i = 0, ind = curEntry->startAndDir; i < curEntry->length; i++, ind++) colormap[calcedCols++] = ind; } } for(int i = 0; i < 256; i++) { for(int j = 0; j < 256; j++) { skyc[i * 256 + j] = colormap[skyc[i * 256 + j] * numColors / 256]; } } } // Based on Textured Floor and Ceiling by DarkOne void DrawClouds(byte *vbuf, unsigned vbufPitch, int min_wallheight) { // Move clouds fixed moveDist = tics * curSky->speed; cloudx += FixedMul(moveDist,sintable[curSky->angle]); cloudy -= FixedMul(moveDist,costable[curSky->angle]); // Draw them int y0, halfheight; unsigned top_offset0; fixed dist; // distance to row projection fixed tex_step; // global step per one screen pixel fixed gu, gv, du, dv; // global texture coordinates int u, v; // local texture coordinates // ------ * prepare * -------- halfheight = viewheight >> 1; y0 = min_wallheight >> 3; // starting y value if(y0 > halfheight) return; // view obscured by walls if(!y0) y0 = 1; // don't let division by zero top_offset0 = vbufPitch * (halfheight - y0 - 1); // draw horizontal lines for(int y = y0, top_offset = top_offset0; y < halfheight; y++, top_offset -= vbufPitch) { dist = (heightnumerator / y) << 8; gu = viewx + FixedMul(dist, viewcos) + cloudx; gv = -viewy + FixedMul(dist, viewsin) + cloudy; tex_step = (dist << 8) / viewwidth / 175; du = FixedMul(tex_step, viewsin); dv = -FixedMul(tex_step, viewcos); gu -= (viewwidth >> 1)*du; gv -= (viewwidth >> 1)*dv; // starting point (leftmost) for(int x = 0, top_add = top_offset; x < viewwidth; x++, top_add++) { if(wallheight[x] >> 3 <= y) { u = (gu >> 13) & 255; v = (gv >> 13) & 255; vbuf[top_add] = skyc[((255 - u) << 8) + 255 - v]; } gu += du; gv += dv; } } } #endif wolf4sdl-1.7+svn262/wl_draw.cpp0000644000175000017500000013606411577434171015564 0ustar fabianfabian// WL_DRAW.C #include "wl_def.h" #pragma hdrstop #include "wl_cloudsky.h" #include "wl_atmos.h" #include "wl_shade.h" /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ // the door is the last picture before the sprites #define DOORWALL (PMSpriteStart-8) #define ACTORSIZE 0x4000 /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ static byte *vbuf = NULL; unsigned vbufPitch = 0; int32_t lasttimecount; int32_t frameon; boolean fpscounter; int fps_frames=0, fps_time=0, fps=0; int *wallheight; int min_wallheight; // // math tables // short *pixelangle; int32_t finetangent[FINEANGLES/4]; fixed sintable[ANGLES+ANGLES/4]; fixed *costable = sintable+(ANGLES/4); // // refresh variables // fixed viewx,viewy; // the focal point short viewangle; fixed viewsin,viewcos; void TransformActor (objtype *ob); void BuildTables (void); void ClearScreen (void); int CalcRotate (objtype *ob); void DrawScaleds (void); void CalcTics (void); void ThreeDRefresh (void); // // wall optimization variables // int lastside; // true for vertical int32_t lastintercept; int lasttilehit; int lasttexture; // // ray tracing variables // short focaltx,focalty,viewtx,viewty; longword xpartialup,xpartialdown,ypartialup,ypartialdown; short midangle,angle; word tilehit; int pixx; short xtile,ytile; short xtilestep,ytilestep; int32_t xintercept,yintercept; word xstep,ystep; word xspot,yspot; int texdelta; word horizwall[MAXWALLTILES],vertwall[MAXWALLTILES]; /* ============================================================================ 3 - D DEFINITIONS ============================================================================ */ /* ======================== = = TransformActor = = Takes paramaters: = gx,gy : globalx/globaly of point = = globals: = viewx,viewy : point of view = viewcos,viewsin : sin/cos of viewangle = scale : conversion from global value to screen value = = sets: = screenx,transx,transy,screenheight: projected edge location and size = ======================== */ // // transform actor // void TransformActor (objtype *ob) { fixed gx,gy,gxt,gyt,nx,ny; // // translate point to view centered coordinates // gx = ob->x-viewx; gy = ob->y-viewy; // // calculate newx // gxt = FixedMul(gx,viewcos); gyt = FixedMul(gy,viewsin); nx = gxt-gyt-ACTORSIZE; // fudge the shape forward a bit, because // the midpoint could put parts of the shape // into an adjacent wall // // calculate newy // gxt = FixedMul(gx,viewsin); gyt = FixedMul(gy,viewcos); ny = gyt+gxt; // // calculate perspective ratio // ob->transx = nx; ob->transy = ny; if (nxviewheight = 0; return; } ob->viewx = (word)(centerx + ny*scale/nx); // // calculate height (heightnumerator/(nx>>8)) // ob->viewheight = (word)(heightnumerator/(nx>>8)); } //========================================================================== /* ======================== = = TransformTile = = Takes paramaters: = tx,ty : tile the object is centered in = = globals: = viewx,viewy : point of view = viewcos,viewsin : sin/cos of viewangle = scale : conversion from global value to screen value = = sets: = screenx,transx,transy,screenheight: projected edge location and size = = Returns true if the tile is withing getting distance = ======================== */ boolean TransformTile (int tx, int ty, short *dispx, short *dispheight) { fixed gx,gy,gxt,gyt,nx,ny; // // translate point to view centered coordinates // gx = ((int32_t)tx<>8)); } // // see if it should be grabbed // if (nx-TILEGLOBAL/2 && ny> 8); if(height < min_wallheight) min_wallheight = height; return height; } //========================================================================== /* =================== = = ScalePost = =================== */ byte *postsource; int postx; int postwidth; void ScalePost() { int ywcount, yoffs, yw, yd, yendoffs; byte col; #ifdef USE_SHADING byte *curshades = shadetable[GetShade(wallheight[postx])]; #endif ywcount = yd = wallheight[postx] >> 3; if(yd <= 0) yd = 100; yoffs = (viewheight / 2 - ywcount) * vbufPitch; if(yoffs < 0) yoffs = 0; yoffs += postx; yendoffs = viewheight / 2 + ywcount - 1; yw=TEXTURESIZE-1; while(yendoffs >= viewheight) { ywcount -= TEXTURESIZE/2; while(ywcount <= 0) { ywcount += yd; yw--; } yendoffs--; } if(yw < 0) return; #ifdef USE_SHADING col = curshades[postsource[yw]]; #else col = postsource[yw]; #endif yendoffs = yendoffs * vbufPitch + postx; while(yoffs <= yendoffs) { vbuf[yendoffs] = col; ywcount -= TEXTURESIZE/2; if(ywcount <= 0) { do { ywcount += yd; yw--; } while(ywcount <= 0); if(yw < 0) break; #ifdef USE_SHADING col = curshades[postsource[yw]]; #else col = postsource[yw]; #endif } yendoffs -= vbufPitch; } } void GlobalScalePost(byte *vidbuf, unsigned pitch) { vbuf = vidbuf; vbufPitch = pitch; ScalePost(); } /* ==================== = = HitVertWall = = tilehit bit 7 is 0, because it's not a door tile = if bit 6 is 1 and the adjacent tile is a door tile, use door side pic = ==================== */ void HitVertWall (void) { int wallpic; int texture; texture = ((yintercept+texdelta)>>TEXTUREFROMFIXEDSHIFT)&TEXTUREMASK; if (xtilestep == -1) { texture = TEXTUREMASK-texture; xintercept += TILEGLOBAL; } if(lastside==1 && lastintercept==xtile && lasttilehit==tilehit && !(lasttilehit & 0x40)) { if((pixx&3) && texture == lasttexture) { ScalePost(); postx = pixx; wallheight[pixx] = wallheight[pixx-1]; return; } ScalePost(); wallheight[pixx] = CalcHeight(); postsource+=texture-lasttexture; postwidth=1; postx=pixx; lasttexture=texture; return; } if(lastside!=-1) ScalePost(); lastside=1; lastintercept=xtile; lasttilehit=tilehit; lasttexture=texture; wallheight[pixx] = CalcHeight(); postx = pixx; postwidth = 1; if (tilehit & 0x40) { // check for adjacent doors ytile = (short)(yintercept>>TILESHIFT); if ( tilemap[xtile-xtilestep][ytile]&0x80 ) wallpic = DOORWALL+3; else wallpic = vertwall[tilehit & ~0x40]; } else wallpic = vertwall[tilehit]; postsource = PM_GetTexture(wallpic) + texture; } /* ==================== = = HitHorizWall = = tilehit bit 7 is 0, because it's not a door tile = if bit 6 is 1 and the adjacent tile is a door tile, use door side pic = ==================== */ void HitHorizWall (void) { int wallpic; int texture; texture = ((xintercept+texdelta)>>TEXTUREFROMFIXEDSHIFT)&TEXTUREMASK; if (ytilestep == -1) yintercept += TILEGLOBAL; else texture = TEXTUREMASK-texture; if(lastside==0 && lastintercept==ytile && lasttilehit==tilehit && !(lasttilehit & 0x40)) { if((pixx&3) && texture == lasttexture) { ScalePost(); postx=pixx; wallheight[pixx] = wallheight[pixx-1]; return; } ScalePost(); wallheight[pixx] = CalcHeight(); postsource+=texture-lasttexture; postwidth=1; postx=pixx; lasttexture=texture; return; } if(lastside!=-1) ScalePost(); lastside=0; lastintercept=ytile; lasttilehit=tilehit; lasttexture=texture; wallheight[pixx] = CalcHeight(); postx = pixx; postwidth = 1; if (tilehit & 0x40) { // check for adjacent doors xtile = (short)(xintercept>>TILESHIFT); if ( tilemap[xtile][ytile-ytilestep]&0x80) wallpic = DOORWALL+2; else wallpic = horizwall[tilehit & ~0x40]; } else wallpic = horizwall[tilehit]; postsource = PM_GetTexture(wallpic) + texture; } //========================================================================== /* ==================== = = HitHorizDoor = ==================== */ void HitHorizDoor (void) { int doorpage; int doornum; int texture; doornum = tilehit&0x7f; texture = ((xintercept-doorposition[doornum])>>TEXTUREFROMFIXEDSHIFT)&TEXTUREMASK; if(lasttilehit==tilehit) { if((pixx&3) && texture == lasttexture) { ScalePost(); postx=pixx; wallheight[pixx] = wallheight[pixx-1]; return; } ScalePost(); wallheight[pixx] = CalcHeight(); postsource+=texture-lasttexture; postwidth=1; postx=pixx; lasttexture=texture; return; } if(lastside!=-1) ScalePost(); lastside=2; lasttilehit=tilehit; lasttexture=texture; wallheight[pixx] = CalcHeight(); postx = pixx; postwidth = 1; switch(doorobjlist[doornum].lock) { case dr_normal: doorpage = DOORWALL; break; case dr_lock1: case dr_lock2: case dr_lock3: case dr_lock4: doorpage = DOORWALL+6; break; case dr_elevator: doorpage = DOORWALL+4; break; } postsource = PM_GetTexture(doorpage) + texture; } //========================================================================== /* ==================== = = HitVertDoor = ==================== */ void HitVertDoor (void) { int doorpage; int doornum; int texture; doornum = tilehit&0x7f; texture = ((yintercept-doorposition[doornum])>>TEXTUREFROMFIXEDSHIFT)&TEXTUREMASK; if(lasttilehit==tilehit) { if((pixx&3) && texture == lasttexture) { ScalePost(); postx=pixx; wallheight[pixx] = wallheight[pixx-1]; return; } ScalePost(); wallheight[pixx] = CalcHeight(); postsource+=texture-lasttexture; postwidth=1; postx=pixx; lasttexture=texture; return; } if(lastside!=-1) ScalePost(); lastside=2; lasttilehit=tilehit; lasttexture=texture; wallheight[pixx] = CalcHeight(); postx = pixx; postwidth = 1; switch(doorobjlist[doornum].lock) { case dr_normal: doorpage = DOORWALL+1; break; case dr_lock1: case dr_lock2: case dr_lock3: case dr_lock4: doorpage = DOORWALL+7; break; case dr_elevator: doorpage = DOORWALL+5; break; } postsource = PM_GetTexture(doorpage) + texture; } //========================================================================== #define HitHorizBorder HitHorizWall #define HitVertBorder HitVertWall //========================================================================== byte vgaCeiling[]= { #ifndef SPEAR 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xbf, 0x4e,0x4e,0x4e,0x1d,0x8d,0x4e,0x1d,0x2d,0x1d,0x8d, 0x1d,0x1d,0x1d,0x1d,0x1d,0x2d,0xdd,0x1d,0x1d,0x98, 0x1d,0x9d,0x2d,0xdd,0xdd,0x9d,0x2d,0x4d,0x1d,0xdd, 0x7d,0x1d,0x2d,0x2d,0xdd,0xd7,0x1d,0x1d,0x1d,0x2d, 0x1d,0x1d,0x1d,0x1d,0xdd,0xdd,0x7d,0xdd,0xdd,0xdd #else 0x6f,0x4f,0x1d,0xde,0xdf,0x2e,0x7f,0x9e,0xae,0x7f, 0x1d,0xde,0xdf,0xde,0xdf,0xde,0xe1,0xdc,0x2e,0x1d,0xdc #endif }; /* ===================== = = VGAClearScreen = ===================== */ void VGAClearScreen (void) { byte ceiling=vgaCeiling[gamestate.episode*10+mapon]; int y; byte *ptr = vbuf; #ifdef USE_SHADING for(y = 0; y < viewheight / 2; y++, ptr += vbufPitch) memset(ptr, shadetable[GetShade((viewheight / 2 - y) << 3)][ceiling], viewwidth); for(; y < viewheight; y++, ptr += vbufPitch) memset(ptr, shadetable[GetShade((y - viewheight / 2) << 3)][0x19], viewwidth); #else for(y = 0; y < viewheight / 2; y++, ptr += vbufPitch) memset(ptr, ceiling, viewwidth); for(; y < viewheight; y++, ptr += vbufPitch) memset(ptr, 0x19, viewwidth); #endif } //========================================================================== /* ===================== = = CalcRotate = ===================== */ int CalcRotate (objtype *ob) { int angle, viewangle; // this isn't exactly correct, as it should vary by a trig value, // but it is close enough with only eight rotations viewangle = player->angle + (centerx - ob->viewx)/8; if (ob->obclass == rocketobj || ob->obclass == hrocketobj) angle = (viewangle-180) - ob->angle; else angle = (viewangle-180) - dirangle[ob->dir]; angle+=ANGLES/16; while (angle>=ANGLES) angle-=ANGLES; while (angle<0) angle+=ANGLES; if (ob->state->rotate == 2) // 2 rotation pain frame return 0; // pain with shooting frame bugfix return angle/(ANGLES/8); } void ScaleShape (int xcenter, int shapenum, unsigned height, uint32_t flags) { t_compshape *shape; unsigned scale,pixheight; unsigned starty,endy; word *cmdptr; byte *cline; byte *line; byte *vmem; int actx,i,upperedge; short newstart; int scrstarty,screndy,lpix,rpix,pixcnt,ycnt; unsigned j; byte col; #ifdef USE_SHADING byte *curshades; if(flags & FL_FULLBRIGHT) curshades = shadetable[0]; else curshades = shadetable[GetShade(height)]; #endif shape = (t_compshape *) PM_GetSprite(shapenum); scale=height>>3; // low three bits are fractional if(!scale) return; // too close or far away pixheight=scale*SPRITESCALEFACTOR; actx=xcenter-scale; upperedge=viewheight/2-scale; cmdptr=(word *) shape->dataofs; for(i=shape->leftpix,pixcnt=i*pixheight,rpix=(pixcnt>>6)+actx;i<=shape->rightpix;i++,cmdptr++) { lpix=rpix; if(lpix>=viewwidth) break; pixcnt+=pixheight; rpix=(pixcnt>>6)+actx; if(lpix!=rpix && rpix>0) { if(lpix<0) lpix=0; if(rpix>viewwidth) rpix=viewwidth,i=shape->rightpix+1; cline=(byte *)shape + *cmdptr; while(lpix>= 1; newstart = READWORD(line); starty = READWORD(line) >> 1; j=starty; ycnt=j*pixheight; screndy=(ycnt>>6)+upperedge; if(screndy<0) vmem=vbuf+lpix; else vmem=vbuf+screndy*vbufPitch+lpix; for(;j>6)+upperedge; if(scrstarty!=screndy && screndy>0) { #ifdef USE_SHADING col=curshades[((byte *)shape)[newstart+j]]; #else col=((byte *)shape)[newstart+j]; #endif if(scrstarty<0) scrstarty=0; if(screndy>viewheight) screndy=viewheight,j=endy; while(scrstarty>1; pixheight=scale*SPRITESCALEFACTOR; actx=xcenter-scale; upperedge=viewheight/2-scale; cmdptr=shape->dataofs; for(i=shape->leftpix,pixcnt=i*pixheight,rpix=(pixcnt>>6)+actx;i<=shape->rightpix;i++,cmdptr++) { lpix=rpix; if(lpix>=viewwidth) break; pixcnt+=pixheight; rpix=(pixcnt>>6)+actx; if(lpix!=rpix && rpix>0) { if(lpix<0) lpix=0; if(rpix>viewwidth) rpix=viewwidth,i=shape->rightpix+1; cline = (byte *)shape + *cmdptr; while(lpix>= 1; newstart = READWORD(line); starty = READWORD(line) >> 1; j=starty; ycnt=j*pixheight; screndy=(ycnt>>6)+upperedge; if(screndy<0) vmem=vbuf+lpix; else vmem=vbuf+screndy*vbufPitch+lpix; for(;j>6)+upperedge; if(scrstarty!=screndy && screndy>0) { col=((byte *)shape)[newstart+j]; if(scrstarty<0) scrstarty=0; if(screndy>viewheight) screndy=viewheight,j=endy; while(scrstartyshapenum = statptr->shapenum) == -1) continue; // object has been deleted if (!*statptr->visspot) continue; // not visable if (TransformTile (statptr->tilex,statptr->tiley, &visptr->viewx,&visptr->viewheight) && statptr->flags & FL_BONUS) { GetBonus (statptr); if(statptr->shapenum == -1) continue; // object has been taken } if (!visptr->viewheight) continue; // to close to the object #ifdef USE_DIR3DSPR if(statptr->flags & FL_DIR_MASK) visptr->transsprite=statptr; else visptr->transsprite=NULL; #endif if (visptr < &vislist[MAXVISABLE-1]) // don't let it overflow { visptr->flags = (short) statptr->flags; visptr++; } } // // place active objects // for (obj = player->next;obj;obj=obj->next) { if ((visptr->shapenum = obj->state->shapenum)==0) continue; // no shape spotloc = (obj->tilex<tiley; // optimize: keep in struct? visspot = &spotvis[0][0]+spotloc; tilespot = &tilemap[0][0]+spotloc; // // could be in any of the nine surrounding tiles // if (*visspot || ( *(visspot-1) && !*(tilespot-1) ) || ( *(visspot+1) && !*(tilespot+1) ) || ( *(visspot-65) && !*(tilespot-65) ) || ( *(visspot-64) && !*(tilespot-64) ) || ( *(visspot-63) && !*(tilespot-63) ) || ( *(visspot+65) && !*(tilespot+65) ) || ( *(visspot+64) && !*(tilespot+64) ) || ( *(visspot+63) && !*(tilespot+63) ) ) { obj->active = ac_yes; TransformActor (obj); if (!obj->viewheight) continue; // too close or far away visptr->viewx = obj->viewx; visptr->viewheight = obj->viewheight; if (visptr->shapenum == -1) visptr->shapenum = obj->temp1; // special shape if (obj->state->rotate) visptr->shapenum += CalcRotate (obj); if (visptr < &vislist[MAXVISABLE-1]) // don't let it overflow { visptr->flags = (short) obj->flags; #ifdef USE_DIR3DSPR visptr->transsprite = NULL; #endif visptr++; } obj->flags |= FL_VISABLE; } else obj->flags &= ~FL_VISABLE; } // // draw from back to front // numvisable = (int) (visptr-&vislist[0]); if (!numvisable) return; // no visable objects for (i = 0; iviewheight; if (height < least) { least = height; farthest = visstep; } } // // draw farthest // #ifdef USE_DIR3DSPR if(farthest->transsprite) Scale3DShape(vbuf, vbufPitch, farthest->transsprite); else #endif ScaleShape(farthest->viewx, farthest->shapenum, farthest->viewheight, farthest->flags); farthest->viewheight = 32000; } } //========================================================================== /* ============== = = DrawPlayerWeapon = = Draw the player's hands = ============== */ int weaponscale[NUMWEAPONS] = {SPR_KNIFEREADY, SPR_PISTOLREADY, SPR_MACHINEGUNREADY, SPR_CHAINREADY}; void DrawPlayerWeapon (void) { int shapenum; #ifndef SPEAR if (gamestate.victoryflag) { #ifndef APOGEE_1_0 if (player->state == &s_deathcam && (GetTimeCount()&32) ) SimpleScaleShape(viewwidth/2,SPR_DEATHCAM,viewheight+1); #endif return; } #endif if (gamestate.weapon != -1) { shapenum = weaponscale[gamestate.weapon]+gamestate.weaponframe; SimpleScaleShape(viewwidth/2,shapenum,viewheight+1); } if (demorecord || demoplayback) SimpleScaleShape(viewwidth/2,SPR_DEMO,viewheight+1); } //========================================================================== /* ===================== = = CalcTics = ===================== */ void CalcTics (void) { // // calculate tics since last refresh for adaptive timing // if (lasttimecount > (int32_t) GetTimeCount()) lasttimecount = GetTimeCount(); // if the game was paused a LONG time uint32_t curtime = SDL_GetTicks(); tics = (curtime * 7) / 100 - lasttimecount; if(!tics) { // wait until end of current tic SDL_Delay(((lasttimecount + 1) * 100) / 7 - curtime); tics = 1; } lasttimecount += tics; if (tics>MAXTICS) tics = MAXTICS; } //========================================================================== void AsmRefresh() { int32_t xstep,ystep; longword xpartial,ypartial; boolean playerInPushwallBackTile = tilemap[focaltx][focalty] == 64; for(pixx=0;pixx=3600) angl-=FINEANGLES; if(angl<900) { xtilestep=1; ytilestep=-1; xstep=finetangent[900-1-angl]; ystep=-finetangent[angl]; xpartial=xpartialup; ypartial=ypartialdown; } else if(angl<1800) { xtilestep=-1; ytilestep=-1; xstep=-finetangent[angl-900]; ystep=-finetangent[1800-1-angl]; xpartial=xpartialdown; ypartial=ypartialdown; } else if(angl<2700) { xtilestep=-1; ytilestep=1; xstep=-finetangent[2700-1-angl]; ystep=finetangent[angl-1800]; xpartial=xpartialdown; ypartial=ypartialup; } else if(angl<3600) { xtilestep=1; ytilestep=1; xstep=finetangent[angl-2700]; ystep=finetangent[3600-1-angl]; xpartial=xpartialup; ypartial=ypartialup; } yintercept=FixedMul(ystep,xpartial)+viewy; xtile=focaltx+xtilestep; xspot=(word)((xtile<>16)); xintercept=FixedMul(xstep,ypartial)+viewx; ytile=focalty+ytilestep; yspot=(word)((((uint32_t)xintercept>>16)<> 6); if((yintbuf >> 16) == focalty) // ray hits pushwall back? { if(pwalldir == di_east) xintercept = (focaltx << TILESHIFT) + (pwallpos << 10); else xintercept = (focaltx << TILESHIFT) - TILEGLOBAL + ((64 - pwallpos) << 10); yintercept = yintbuf; ytile = (short) (yintercept >> TILESHIFT); tilehit = pwalltile; HitVertWall(); continue; } } else if(pwalldir == di_south && ytilestep == 1 || pwalldir == di_north && ytilestep == -1) { int32_t xintbuf = xintercept - ((xstep * (64 - pwallpos)) >> 6); if((xintbuf >> 16) == focaltx) // ray hits pushwall back? { xintercept = xintbuf; if(pwalldir == di_south) yintercept = (focalty << TILESHIFT) + (pwallpos << 10); else yintercept = (focalty << TILESHIFT) - TILEGLOBAL + ((64 - pwallpos) << 10); xtile = (short) (xintercept >> TILESHIFT); tilehit = pwalltile; HitHorizWall(); continue; } } } do { if(ytilestep==-1 && (yintercept>>16)<=ytile) goto horizentry; if(ytilestep==1 && (yintercept>>16)>=ytile) goto horizentry; vertentry: if((uint32_t)yintercept>mapheight*65536-1 || (word)xtile>=mapwidth) { if(xtile<0) xintercept=0, xtile=0; else if(xtile>=mapwidth) xintercept=mapwidth<> TILESHIFT); if(yintercept<0) yintercept=0, ytile=0; else if(yintercept>=(mapheight<=maparea) break; tilehit=((byte *)tilemap)[xspot]; if(tilehit) { if(tilehit&0x80) { int32_t yintbuf=yintercept+(ystep>>1); if((yintbuf>>16)!=(yintercept>>16)) goto passvert; if((word)yintbuf> TILESHIFT); HitVertDoor(); } else { if(tilehit==64) { if(pwalldir==di_west || pwalldir==di_east) { int32_t yintbuf; int pwallposnorm; int pwallposinv; if(pwalldir==di_west) { pwallposnorm = 64-pwallpos; pwallposinv = pwallpos; } else { pwallposnorm = pwallpos; pwallposinv = 64-pwallpos; } if(pwalldir == di_east && xtile==pwallx && ((uint32_t)yintercept>>16)==pwally || pwalldir == di_west && !(xtile==pwallx && ((uint32_t)yintercept>>16)==pwally)) { yintbuf=yintercept+((ystep*pwallposnorm)>>6); if((yintbuf>>16)!=(yintercept>>16)) goto passvert; xintercept=(xtile<> TILESHIFT); tilehit=pwalltile; HitVertWall(); } else { yintbuf=yintercept+((ystep*pwallposinv)>>6); if((yintbuf>>16)!=(yintercept>>16)) goto passvert; xintercept=(xtile<> TILESHIFT); tilehit=pwalltile; HitVertWall(); } } else { int pwallposi = pwallpos; if(pwalldir==di_north) pwallposi = 64-pwallpos; if(pwalldir==di_south && (word)yintercept<(pwallposi<<10) || pwalldir==di_north && (word)yintercept>(pwallposi<<10)) { if(((uint32_t)yintercept>>16)==pwally && xtile==pwallx) { if(pwalldir==di_south && (int32_t)((word)yintercept)+ystep<(pwallposi<<10) || pwalldir==di_north && (int32_t)((word)yintercept)+ystep>(pwallposi<<10)) goto passvert; if(pwalldir==di_south) yintercept=(yintercept&0xffff0000)+(pwallposi<<10); else yintercept=(yintercept&0xffff0000)-TILEGLOBAL+(pwallposi<<10); xintercept=xintercept-((xstep*(64-pwallpos))>>6); xtile = (short) (xintercept >> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } else { texdelta = -(pwallposi<<10); xintercept=xtile<> TILESHIFT); tilehit=pwalltile; HitVertWall(); } } else { if(((uint32_t)yintercept>>16)==pwally && xtile==pwallx) { texdelta = -(pwallposi<<10); xintercept=xtile<> TILESHIFT); tilehit=pwalltile; HitVertWall(); } else { if(pwalldir==di_south && (int32_t)((word)yintercept)+ystep>(pwallposi<<10) || pwalldir==di_north && (int32_t)((word)yintercept)+ystep<(pwallposi<<10)) goto passvert; if(pwalldir==di_south) yintercept=(yintercept&0xffff0000)-((64-pwallpos)<<10); else yintercept=(yintercept&0xffff0000)+((64-pwallpos)<<10); xintercept=xintercept-((xstep*pwallpos)>>6); xtile = (short) (xintercept >> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } } } } else { xintercept=xtile<> TILESHIFT); HitVertWall(); } } break; } passvert: *((byte *)spotvis+xspot)=1; xtile+=xtilestep; yintercept+=ystep; xspot=(word)((xtile<>16)); } while(1); continue; do { if(xtilestep==-1 && (xintercept>>16)<=xtile) goto vertentry; if(xtilestep==1 && (xintercept>>16)>=xtile) goto vertentry; horizentry: if((uint32_t)xintercept>mapwidth*65536-1 || (word)ytile>=mapheight) { if(ytile<0) yintercept=0, ytile=0; else if(ytile>=mapheight) yintercept=mapheight<> TILESHIFT); if(xintercept<0) xintercept=0, xtile=0; else if(xintercept>=(mapwidth<=maparea) break; tilehit=((byte *)tilemap)[yspot]; if(tilehit) { if(tilehit&0x80) { int32_t xintbuf=xintercept+(xstep>>1); if((xintbuf>>16)!=(xintercept>>16)) goto passhoriz; if((word)xintbuf> TILESHIFT); HitHorizDoor(); } else { if(tilehit==64) { if(pwalldir==di_north || pwalldir==di_south) { int32_t xintbuf; int pwallposnorm; int pwallposinv; if(pwalldir==di_north) { pwallposnorm = 64-pwallpos; pwallposinv = pwallpos; } else { pwallposnorm = pwallpos; pwallposinv = 64-pwallpos; } if(pwalldir == di_south && ytile==pwally && ((uint32_t)xintercept>>16)==pwallx || pwalldir == di_north && !(ytile==pwally && ((uint32_t)xintercept>>16)==pwallx)) { xintbuf=xintercept+((xstep*pwallposnorm)>>6); if((xintbuf>>16)!=(xintercept>>16)) goto passhoriz; yintercept=(ytile<> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } else { xintbuf=xintercept+((xstep*pwallposinv)>>6); if((xintbuf>>16)!=(xintercept>>16)) goto passhoriz; yintercept=(ytile<> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } } else { int pwallposi = pwallpos; if(pwalldir==di_west) pwallposi = 64-pwallpos; if(pwalldir==di_east && (word)xintercept<(pwallposi<<10) || pwalldir==di_west && (word)xintercept>(pwallposi<<10)) { if(((uint32_t)xintercept>>16)==pwallx && ytile==pwally) { if(pwalldir==di_east && (int32_t)((word)xintercept)+xstep<(pwallposi<<10) || pwalldir==di_west && (int32_t)((word)xintercept)+xstep>(pwallposi<<10)) goto passhoriz; if(pwalldir==di_east) xintercept=(xintercept&0xffff0000)+(pwallposi<<10); else xintercept=(xintercept&0xffff0000)-TILEGLOBAL+(pwallposi<<10); yintercept=yintercept-((ystep*(64-pwallpos))>>6); ytile = (short) (yintercept >> TILESHIFT); tilehit=pwalltile; HitVertWall(); } else { texdelta = -(pwallposi<<10); yintercept=ytile<> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } } else { if(((uint32_t)xintercept>>16)==pwallx && ytile==pwally) { texdelta = -(pwallposi<<10); yintercept=ytile<> TILESHIFT); tilehit=pwalltile; HitHorizWall(); } else { if(pwalldir==di_east && (int32_t)((word)xintercept)+xstep>(pwallposi<<10) || pwalldir==di_west && (int32_t)((word)xintercept)+xstep<(pwallposi<<10)) goto passhoriz; if(pwalldir==di_east) xintercept=(xintercept&0xffff0000)-((64-pwallpos)<<10); else xintercept=(xintercept&0xffff0000)+((64-pwallpos)<<10); yintercept=yintercept-((ystep*pwallpos)>>6); ytile = (short) (yintercept >> TILESHIFT); tilehit=pwalltile; HitVertWall(); } } } } else { yintercept=ytile<> TILESHIFT); HitHorizWall(); } } break; } passhoriz: *((byte *)spotvis+yspot)=1; ytile+=ytilestep; xintercept+=xstep; yspot=(word)((((uint32_t)xintercept>>16)<angle; midangle = viewangle*(FINEANGLES/ANGLES); viewsin = sintable[viewangle]; viewcos = costable[viewangle]; viewx = player->x - FixedMul(focallength,viewcos); viewy = player->y + FixedMul(focallength,viewsin); focaltx = (short)(viewx>>TILESHIFT); focalty = (short)(viewy>>TILESHIFT); viewtx = (short)(player->x >> TILESHIFT); viewty = (short)(player->y >> TILESHIFT); } //========================================================================== /* ======================== = = ThreeDRefresh = ======================== */ void ThreeDRefresh (void) { // // clear out the traced array // memset(spotvis,0,maparea); spotvis[player->tilex][player->tiley] = 1; // Detect all sprites over player fix vbuf = VL_LockSurface(screenBuffer); if(vbuf == NULL) return; vbuf += screenofs; vbufPitch = bufferPitch; CalcViewVariables(); // // follow the walls from there to the right, drawing as we go // VGAClearScreen (); #if defined(USE_FEATUREFLAGS) && defined(USE_STARSKY) if(GetFeatureFlags() & FF_STARSKY) DrawStarSky(vbuf, vbufPitch); #endif WallRefresh (); #if defined(USE_FEATUREFLAGS) && defined(USE_PARALLAX) if(GetFeatureFlags() & FF_PARALLAXSKY) DrawParallax(vbuf, vbufPitch); #endif #if defined(USE_FEATUREFLAGS) && defined(USE_CLOUDSKY) if(GetFeatureFlags() & FF_CLOUDSKY) DrawClouds(vbuf, vbufPitch, min_wallheight); #endif #ifdef USE_FLOORCEILINGTEX DrawFloorAndCeiling(vbuf, vbufPitch, min_wallheight); #endif // // draw all the scaled images // DrawScaleds(); // draw scaled stuff #if defined(USE_FEATUREFLAGS) && defined(USE_RAIN) if(GetFeatureFlags() & FF_RAIN) DrawRain(vbuf, vbufPitch); #endif #if defined(USE_FEATUREFLAGS) && defined(USE_SNOW) if(GetFeatureFlags() & FF_SNOW) DrawSnow(vbuf, vbufPitch); #endif DrawPlayerWeapon (); // draw player's hands if(Keyboard[sc_Tab] && viewsize == 21 && gamestate.weapon != -1) ShowActStatus(); VL_UnlockSurface(screenBuffer); vbuf = NULL; // // show screen and time last cycle // if (fizzlein) { FizzleFade(screenBuffer, 0, 0, screenWidth, screenHeight, 20, false); fizzlein = false; lasttimecount = GetTimeCount(); // don't make a big tic count } else { #ifndef REMDEBUG if (fpscounter) { fontnumber = 0; SETFONTCOLOR(7,127); PrintX=4; PrintY=1; VWB_Bar(0,0,50,10,bordercol); US_PrintSigned(fps); US_Print(" fps"); } #endif SDL_BlitSurface(screenBuffer, NULL, screen, NULL); SDL_Flip(screen); } #ifndef REMDEBUG if (fpscounter) { fps_frames++; fps_time+=tics; if(fps_time>35) { fps_time-=35; fps=fps_frames<<1; fps_frames=0; } } #endif } wolf4sdl-1.7+svn262/license-gpl.txt0000644000175000017500000004313011624544211016341 0ustar fabianfabian 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. wolf4sdl-1.7+svn262/id_vh.h0000644000175000017500000000543611577434171014661 0ustar fabianfabian// ID_VH.H #define WHITE 15 // graphics mode independant colors #define BLACK 0 #define FIRSTCOLOR 1 #define SECONDCOLOR 12 #define F_WHITE 15 #define F_BLACK 0 #define F_FIRSTCOLOR 1 #define F_SECONDCOLOR 12 //=========================================================================== #define MAXSHIFTS 1 typedef struct { int16_t width,height; } pictabletype; typedef struct { int16_t height; int16_t location[256]; int8_t width[256]; } fontstruct; //=========================================================================== extern pictabletype *pictable; extern pictabletype *picmtable; extern byte fontcolor,backcolor; extern int fontnumber; extern int px,py; #define SETFONTCOLOR(f,b) fontcolor=f;backcolor=b; // // mode independant routines // coordinates in pixels, rounded to best screen res // regions marked in double buffer // void VWB_DrawPropString (const char *string); void VWB_DrawTile8 (int x, int y, int tile); void VWB_DrawTile8M (int x, int y, int tile); void VWB_DrawTile16 (int x, int y, int tile); void VWB_DrawTile16M (int x, int y, int tile); void VWB_DrawPic (int x, int y, int chunknum); void VWB_DrawPicScaledCoord (int x, int y, int chunknum); void VWB_DrawMPic(int x, int y, int chunknum); void VWB_Bar (int x, int y, int width, int height, int color); #define VWB_BarScaledCoord VL_BarScaledCoord void VWB_Plot (int x, int y, int color); #define VWB_PlotScaledCoord VW_Plot void VWB_Hlin (int x1, int x2, int y, int color); void VWB_Vlin (int y1, int y2, int x, int color); #define VWB_HlinScaledCoord VW_Hlin #define VWB_VlinScaledCoord VW_Vlin void VH_UpdateScreen(); #define VW_UpdateScreen VH_UpdateScreen // // wolfenstein EGA compatability stuff // #define VW_Shutdown VL_Shutdown #define VW_Bar VL_Bar #define VW_Plot VL_Plot #define VW_Hlin(x,z,y,c) VL_Hlin(x,y,(z)-(x)+1,c) #define VW_Vlin(y,z,x,c) VL_Vlin(x,y,(z)-(y)+1,c) #define VW_DrawPic VH_DrawPic #define VW_WaitVBL VL_WaitVBL #define VW_FadeIn() VL_FadeIn(0,255,gamepal,30); #define VW_FadeOut() VL_FadeOut(0,255,0,0,0,30); #define VW_ScreenToScreen VL_ScreenToScreen void VW_MeasurePropString (const char *string, word *width, word *height); #define LatchDrawChar(x,y,p) VL_LatchToScreen(latchpics[0],((p)&7)*8,((p)>>3)*8*64,8,8,x,y) #define LatchDrawTile(x,y,p) VL_LatchToScreen(latchpics[1],(p)*64,0,16,16,x,y) void LatchDrawPic (unsigned x, unsigned y, unsigned picnum); void LatchDrawPicScaledCoord (unsigned scx, unsigned scy, unsigned picnum); void LoadLatchMem (void); void FreeLatchMem(); void VH_Startup(); boolean FizzleFade (SDL_Surface *source, int x1, int y1, unsigned width, unsigned height, unsigned frames, boolean abortable); #define NUMLATCHPICS 100 extern SDL_Surface *latchpics[NUMLATCHPICS]; wolf4sdl-1.7+svn262/f_spear.h0000644000175000017500000000540411143514203015162 0ustar fabianfabian#define STR_ENDGAME1 "We owe you a great debt, Mr. Blazkowicz." #define STR_ENDGAME2 "You have served your country well." #define STR_ENDGAME3 "With the spear gone, the Allies will finally" #define STR_ENDGAME4 "by able to destroy Hitler..." #define STR_COPY1 "That's close, but not close enough to get" #define STR_COPY2 "you into the game." #define STR_COPY3 "Wow, you must have the early version of the" #define STR_COPY4 "manual with the totally false information in it." #define STR_COPY5 "I would let you into the game, but seeing" #define STR_COPY6 "as that was not at all the right answer..." #define STR_COPY7 "It's just too bad we can't get together on" #define STR_COPY8 "this one. Sorry." #define STR_COPY9 "Hey, you're just SO off base!" #define STR_COPY10 "You know, I once typed that myself when" #define STR_COPY11 "I was your age." #define STR_COPY12 "Nops. Zero points. Zugga." #define STR_COPY13 "Yeah...right." #define STR_COPY14 "You must like these quizzes." #define STR_COPY15 "Could be called \"PixelMeister\"?" #define STR_COPY16 "Might engineer some software?" #define STR_COPY17 "Would be found" #define STR_COPY18 "directing creatively?" #define STR_COPY19 "Might be found" #define STR_COPY20 "handling operations?" #define STR_COPY21 "Has a name familiar" #define STR_COPY22 "to your weatherman?" #define STR_NOPE1 "Welcome to the DOS prompt, pirate!" #define STR_NOPE2 "Eat hot DOS prompt, goober!" #define STR_NOPE3 "Ya know, this program doesn't cost that much." #define STR_NOPE4 "Hey...weren't you just AT this DOS prompt?" #define STR_NOPE5 "What's a nice user like you doin' at a DOS prompt like this?" #define STR_NOPE6 "Well, I'm sure you just \"misplaced\" the manual..." #define STR_NOPE7 "Run me again when you've boned up on your manual a bit." #define STR_NOPE8 "Nice try, but no Spear." #define STR_NOPE9 "That information is in the Spear of Destiny manual, by the way." #define STR_MISC1 "Under \"Killing the Enemy\", what" #define STR_MISC2 "type of enemy is pictured?" #define STR_MISC3 "How many eyelets are on B.J.'s" #define STR_MISC4 "boots? (see page 2)" #define STR_MISC5 "The word \"minister\" appears in" #define STR_MISC6 "what gray shape on page 2?" #define STR_MISC7 "How many bullets does B.J. have" #define STR_MISC8 "on the screen-shot in the middle" #define STR_MISC9 "of page 9?" #define STR_STAR "star" #define STR_DEBRIEF " DEBRIEFING\n SESSION\n" #define STR_ENEMY1 "Name the member of the" #define STR_ENEMY2 "enemy forces shown above" #define STR_CHECKMAN "CHECK YER MANUAL!" #define STR_MAN1 "Which manual page" #define STR_MAN2 "is the Options Menu" #define STR_MAN3 "function" #define STR_MAN4 "on?" #define STR_ID1 "Which member of Id Software:" wolf4sdl-1.7+svn262/gfxv_jap.h0000644000175000017500000001760511577474656015411 0ustar fabianfabian////////////////////////////////////////// // // Graphics .H file for Japanese version // Recreated from images and used defines // ////////////////////////////////////////// typedef enum { // Lump Start H_HELP1PIC = 3, // 3 H_HELP2PIC, // 4 H_HELP3PIC, // 5 H_HELP4PIC, // 6 H_HELP5PIC, // 7 H_HELP6PIC, // 8 H_HELP7PIC, // 9 H_HELP8PIC, // 10 H_HELP9PIC, // 11 H_HELP10PIC, // 12 // Lump Start C_OPTIONSPIC, // 13 C_CURSOR1PIC, // 14 C_CURSOR2PIC, // 15 C_NOTSELECTEDPIC, // 16 C_SELECTEDPIC, // 17 C_MOUSELBACKPIC, // 18 C_BABYMODEPIC, // 19 C_EASYPIC, // 20 C_NORMALPIC, // 21 C_HARDPIC, // 22 C_LOADSAVEDISKPIC, // 23 C_DISKLOADING1PIC, // 24 C_DISKLOADING2PIC, // 25 C_CONTROLPIC, // 26 C_LOADGAMEPIC, // 27 C_SAVEGAMEPIC, // 28 C_EPISODE1PIC, // 29 C_EPISODE2PIC, // 30 C_EPISODE3PIC, // 31 C_EPISODE4PIC, // 32 C_EPISODE5PIC, // 33 C_EPISODE6PIC, // 34 C_CODEPIC, // 35 C_TIMECODEPIC, // 36 C_LEVELPIC, // 37 C_NAMEPIC, // 38 C_SCOREPIC, // 39 C_JOY1PIC, // 40 C_JOY2PIC, // 41 C_QUITMSGPIC, // 42 C_JAPQUITPIC, // 43 C_UNUSED_LOADING, // 44 C_JAPNEWGAMEPIC, // 45 C_JAPSAVEOVERPIC, // 46 C_MSCORESPIC, // 47 C_MENDGAMEPIC, // 48 C_MRETDEMOPIC, // 49 C_MRETGAMEPIC, // 50 C_INTERMISSIONPIC, // 51 C_LETSSEEPIC, // 52 C_ENDRATIOSPIC, // 53 C_ENDGAME1APIC, // 54 C_ENDGAME1BPIC, // 55 C_ENDGAME2APIC, // 56 C_ENDGAME2BPIC, // 57 C_ENDGAME3APIC, // 58 C_ENDGAME3BPIC, // 59 C_ENDGAME4APIC, // 60 C_ENDGAME4BPIC, // 61 C_ENDGAME5APIC, // 62 C_ENDGAME5BPIC, // 63 C_ENDGAME6APIC, // 64 C_ENDGAME6BPIC, // 65 // Lump Start L_GUYPIC, // 66 L_COLONPIC, // 67 L_NUM0PIC, // 68 L_NUM1PIC, // 69 L_NUM2PIC, // 70 L_NUM3PIC, // 71 L_NUM4PIC, // 72 L_NUM5PIC, // 73 L_NUM6PIC, // 74 L_NUM7PIC, // 75 L_NUM8PIC, // 76 L_NUM9PIC, // 77 L_PERCENTPIC, // 78 L_APIC, // 79 L_BPIC, // 80 L_CPIC, // 81 L_DPIC, // 82 L_EPIC, // 83 L_FPIC, // 84 L_GPIC, // 85 L_HPIC, // 86 L_IPIC, // 87 L_JPIC, // 88 L_KPIC, // 89 L_LPIC, // 90 L_MPIC, // 91 L_NPIC, // 92 L_OPIC, // 93 L_PPIC, // 94 L_QPIC, // 95 L_RPIC, // 96 L_SPIC, // 97 L_TPIC, // 98 L_UPIC, // 99 L_VPIC, // 100 L_WPIC, // 101 L_XPIC, // 102 L_YPIC, // 103 L_ZPIC, // 104 L_EXPOINTPIC, // 105 L_APOSTROPHEPIC, // 106 L_GUY2PIC, // 107 L_BJWINSPIC, // 108 STATUSBARPIC, // 109 TITLEPIC, // 110 S_MOUSESENSPIC, // 111 S_OPTIONSPIC, // 112 S_SOUNDPIC, // 113 S_SKILLPIC, // 114 S_EPISODEPIC, // 115 S_CHANGEPIC, // 116 S_CUSTOMPIC, // 117 S_CONTROLPIC, // 118 CREDITSPIC, // 119 HIGHSCORESPIC, // 120 // Lump Start KNIFEPIC, // 121 GUNPIC, // 122 MACHINEGUNPIC, // 123 GATLINGGUNPIC, // 124 NOKEYPIC, // 125 GOLDKEYPIC, // 126 SILVERKEYPIC, // 127 N_BLANKPIC, // 128 N_0PIC, // 129 N_1PIC, // 130 N_2PIC, // 131 N_3PIC, // 132 N_4PIC, // 133 N_5PIC, // 134 N_6PIC, // 135 N_7PIC, // 136 N_8PIC, // 137 N_9PIC, // 138 FACE1APIC, // 139 FACE1BPIC, // 140 FACE1CPIC, // 141 FACE2APIC, // 142 FACE2BPIC, // 143 FACE2CPIC, // 144 FACE3APIC, // 145 FACE3BPIC, // 146 FACE3CPIC, // 147 FACE4APIC, // 148 FACE4BPIC, // 149 FACE4CPIC, // 150 FACE5APIC, // 151 FACE5BPIC, // 152 FACE5CPIC, // 153 FACE6APIC, // 154 FACE6BPIC, // 155 FACE6CPIC, // 156 FACE7APIC, // 157 FACE7BPIC, // 158 FACE7CPIC, // 159 FACE8APIC, // 160 GOTGATLINGPIC, // 161 MUTANTBJPIC, // 162 PAUSEDPIC, // 163 GETPSYCHEDPIC, // 164 TILE8, // 165 ERRORSCREEN, // 166 T_DEMO0, // 167 T_DEMO1, // 168 T_DEMO2, // 169 T_DEMO3, // 170 ENUMEND } graphicnums; // // Data LUMPs // #define README_LUMP_START H_BJPIC #define README_LUMP_END H_BOTTOMINFOPIC #define CONTROLS_LUMP_START C_OPTIONSPIC #define CONTROLS_LUMP_END (L_GUYPIC - 1) #define LEVELEND_LUMP_START L_GUYPIC #define LEVELEND_LUMP_END L_BJWINSPIC #define LATCHPICS_LUMP_START KNIFEPIC #define LATCHPICS_LUMP_END GETPSYCHEDPIC // // Amount of each data item // #define NUMCHUNKS ENUMEND #define NUMFONT 2 #define NUMFONTM 0 #define NUMPICS (GETPSYCHEDPIC - NUMFONT) #define NUMPICM 0 #define NUMSPRITES 0 #define NUMTILE8 72 #define NUMTILE8M 0 #define NUMTILE16 0 #define NUMTILE16M 0 #define NUMTILE32 0 #define NUMTILE32M 0 #define NUMEXTERNS 13 // // File offsets for data items // #define STRUCTPIC 0 #define STARTFONT 1 #define STARTFONTM 3 #define STARTPICS 3 #define STARTPICM TILE8 #define STARTSPRITES TILE8 #define STARTTILE8 TILE8 #define STARTTILE8M ERRORSCREEN #define STARTTILE16 ERRORSCREEN #define STARTTILE16M ERRORSCREEN #define STARTTILE32 ERRORSCREEN #define STARTTILE32M ERRORSCREEN #define STARTEXTERNS ERRORSCREEN wolf4sdl-1.7+svn262/Wolf4SDL.cbp0000644000175000017500000000410611644157635015436 0ustar fabianfabian wolf4sdl-1.7+svn262/wl_act1.cpp0000644000175000017500000005113711056625014015442 0ustar fabianfabian// WL_ACT1.C #include "wl_def.h" #pragma hdrstop /* ============================================================================= STATICS ============================================================================= */ statobj_t statobjlist[MAXSTATS]; statobj_t *laststatobj; struct { short picnum; wl_stat_t type; uint32_t specialFlags; // they are ORed to the statobj_t flags } statinfo[] = { {SPR_STAT_0}, // puddle spr1v {SPR_STAT_1,block}, // Green Barrel " {SPR_STAT_2,block}, // Table/chairs " {SPR_STAT_3,block,FL_FULLBRIGHT}, // Floor lamp " {SPR_STAT_4,none,FL_FULLBRIGHT}, // Chandelier " {SPR_STAT_5,block}, // Hanged man " {SPR_STAT_6,bo_alpo}, // Bad food " {SPR_STAT_7,block}, // Red pillar " // // NEW PAGE // {SPR_STAT_8,block}, // Tree spr2v {SPR_STAT_9}, // Skeleton flat " {SPR_STAT_10,block}, // Sink " (SOD:gibs) {SPR_STAT_11,block}, // Potted plant " {SPR_STAT_12,block}, // Urn " {SPR_STAT_13,block}, // Bare table " {SPR_STAT_14,none,FL_FULLBRIGHT}, // Ceiling light " #ifndef SPEAR {SPR_STAT_15}, // Kitchen stuff " #else {SPR_STAT_15,block}, // Gibs! #endif // // NEW PAGE // {SPR_STAT_16,block}, // suit of armor spr3v {SPR_STAT_17,block}, // Hanging cage " {SPR_STAT_18,block}, // SkeletoninCage " {SPR_STAT_19}, // Skeleton relax " {SPR_STAT_20,bo_key1}, // Key 1 " {SPR_STAT_21,bo_key2}, // Key 2 " {SPR_STAT_22,block}, // stuff (SOD:gibs) {SPR_STAT_23}, // stuff // // NEW PAGE // {SPR_STAT_24,bo_food}, // Good food spr4v {SPR_STAT_25,bo_firstaid}, // First aid " {SPR_STAT_26,bo_clip}, // Clip " {SPR_STAT_27,bo_machinegun}, // Machine gun " {SPR_STAT_28,bo_chaingun}, // Gatling gun " {SPR_STAT_29,bo_cross}, // Cross " {SPR_STAT_30,bo_chalice}, // Chalice " {SPR_STAT_31,bo_bible}, // Bible " // // NEW PAGE // {SPR_STAT_32,bo_crown}, // crown spr5v {SPR_STAT_33,bo_fullheal,FL_FULLBRIGHT},// one up " {SPR_STAT_34,bo_gibs}, // gibs " {SPR_STAT_35,block}, // barrel " {SPR_STAT_36,block}, // well " {SPR_STAT_37,block}, // Empty well " {SPR_STAT_38,bo_gibs}, // Gibs 2 " {SPR_STAT_39,block}, // flag " // // NEW PAGE // #ifndef SPEAR {SPR_STAT_40,block}, // Call Apogee spr7v #else {SPR_STAT_40}, // Red light #endif // // NEW PAGE // {SPR_STAT_41}, // junk " {SPR_STAT_42}, // junk " {SPR_STAT_43}, // junk " #ifndef SPEAR {SPR_STAT_44}, // pots " #else {SPR_STAT_44,block}, // Gibs! #endif {SPR_STAT_45,block}, // stove " (SOD:gibs) {SPR_STAT_46,block}, // spears " (SOD:gibs) {SPR_STAT_47}, // vines " // // NEW PAGE // #ifdef SPEAR {SPR_STAT_48,block}, // marble pillar {SPR_STAT_49,bo_25clip}, // bonus 25 clip {SPR_STAT_50,block}, // truck {SPR_STAT_51,bo_spear}, // SPEAR OF DESTINY! #endif {SPR_STAT_26,bo_clip2}, // Clip " #ifdef USE_DIR3DSPR // These are just two examples showing the new way of using dir 3d sprites. // You can find the allowed values in the objflag_t enum in wl_def.h. {SPR_STAT_47,none,FL_DIR_VERT_MID}, {SPR_STAT_47,block,FL_DIR_HORIZ_MID}, #endif {-1} // terminator }; /* =============== = = InitStaticList = =============== */ void InitStaticList (void) { laststatobj = &statobjlist[0]; } /* =============== = = SpawnStatic = =============== */ void SpawnStatic (int tilex, int tiley, int type) { laststatobj->shapenum = statinfo[type].picnum; laststatobj->tilex = tilex; laststatobj->tiley = tiley; laststatobj->visspot = &spotvis[tilex][tiley]; switch (statinfo[type].type) { case block: actorat[tilex][tiley] = (objtype *) 64; // consider it a blocking tile case none: laststatobj->flags = 0; break; case bo_cross: case bo_chalice: case bo_bible: case bo_crown: case bo_fullheal: if (!loadedgame) gamestate.treasuretotal++; case bo_firstaid: case bo_key1: case bo_key2: case bo_key3: case bo_key4: case bo_clip: case bo_25clip: case bo_machinegun: case bo_chaingun: case bo_food: case bo_alpo: case bo_gibs: case bo_spear: laststatobj->flags = FL_BONUS; laststatobj->itemnumber = statinfo[type].type; break; } laststatobj->flags |= statinfo[type].specialFlags; laststatobj++; if (laststatobj == &statobjlist[MAXSTATS]) Quit ("Too many static objects!\n"); } /* =============== = = PlaceItemType = = Called during game play to drop actors' items. It finds the proper = item number based on the item type (bo_???). If there are no free item = spots, nothing is done. = =============== */ void PlaceItemType (int itemtype, int tilex, int tiley) { int type; statobj_t *spot; // // find the item number // for (type=0; ; type++) { if (statinfo[type].picnum == -1) // end of list Quit ("PlaceItemType: couldn't find type!"); if (statinfo[type].type == itemtype) break; } // // find a spot in statobjlist to put it in // for (spot=&statobjlist[0]; ; spot++) { if (spot==laststatobj) { if (spot == &statobjlist[MAXSTATS]) return; // no free spots laststatobj++; // space at end break; } if (spot->shapenum == -1) // -1 is a free spot break; } // // place it // spot->shapenum = statinfo[type].picnum; spot->tilex = tilex; spot->tiley = tiley; spot->visspot = &spotvis[tilex][tiley]; spot->flags = FL_BONUS | statinfo[type].specialFlags; spot->itemnumber = statinfo[type].type; } /* ============================================================================= DOORS doorobjlist[] holds most of the information for the doors doorposition[] holds the amount the door is open, ranging from 0 to 0xffff this is directly accessed by AsmRefresh during rendering The number of doors is limited to 64 because a spot in tilemap holds the door number in the low 6 bits, with the high bit meaning a door center and bit 6 meaning a door side tile Open doors conect two areas, so sounds will travel between them and sight will be checked when the player is in a connected area. Areaconnect is incremented/decremented by each door. If >0 they connect Every time a door opens or closes the areabyplayer matrix gets recalculated. An area is true if it connects with the player's current spor. ============================================================================= */ #define DOORWIDTH 0x7800 #define OPENTICS 300 doorobj_t doorobjlist[MAXDOORS],*lastdoorobj; short doornum; word doorposition[MAXDOORS]; // leading edge of door 0=closed // 0xffff = fully open byte areaconnect[NUMAREAS][NUMAREAS]; boolean areabyplayer[NUMAREAS]; /* ============== = = ConnectAreas = = Scans outward from playerarea, marking all connected areas = ============== */ void RecursiveConnect (int areanumber) { int i; for (i=0;iareanumber] = true; RecursiveConnect (player->areanumber); } void InitAreas (void) { memset (areabyplayer,0,sizeof(areabyplayer)); if (player->areanumber < NUMAREAS) areabyplayer[player->areanumber] = true; } /* =============== = = InitDoorList = =============== */ void InitDoorList (void) { memset (areabyplayer,0,sizeof(areabyplayer)); memset (areaconnect,0,sizeof(areaconnect)); lastdoorobj = &doorobjlist[0]; doornum = 0; } /* =============== = = SpawnDoor = =============== */ void SpawnDoor (int tilex, int tiley, boolean vertical, int lock) { word *map; if (doornum==MAXDOORS) Quit ("64+ doors on level!"); doorposition[doornum] = 0; // doors start out fully closed lastdoorobj->tilex = tilex; lastdoorobj->tiley = tiley; lastdoorobj->vertical = vertical; lastdoorobj->lock = lock; lastdoorobj->action = dr_closed; actorat[tilex][tiley] = (objtype *)(uintptr_t)(doornum | 0x80); // consider it a solid wall // // make the door tile a special tile, and mark the adjacent tiles // for door sides // tilemap[tilex][tiley] = doornum | 0x80; map = mapsegs[0] + (tiley<tilex == tilex && player->tiley == tiley) return; if (doorobjlist[door].vertical) { if ( player->tiley == tiley ) { if ( ((player->x+MINDIST) >>TILESHIFT) == tilex ) return; if ( ((player->x-MINDIST) >>TILESHIFT) == tilex ) return; } check = actorat[tilex-1][tiley]; if (ISPOINTER(check) && ((check->x+MINDIST) >> TILESHIFT) == tilex ) return; check = actorat[tilex+1][tiley]; if (ISPOINTER(check) && ((check->x-MINDIST) >> TILESHIFT) == tilex ) return; } else if (!doorobjlist[door].vertical) { if (player->tilex == tilex) { if ( ((player->y+MINDIST) >>TILESHIFT) == tiley ) return; if ( ((player->y-MINDIST) >>TILESHIFT) == tiley ) return; } check = actorat[tilex][tiley-1]; if (ISPOINTER(check) && ((check->y+MINDIST) >> TILESHIFT) == tiley ) return; check = actorat[tilex][tiley+1]; if (ISPOINTER(check) && ((check->y-MINDIST) >> TILESHIFT) == tiley ) return; } // // play door sound if in a connected area // area = *(mapsegs[0] + (doorobjlist[door].tiley<= dr_lock1 && lock <= dr_lock4) { if ( ! (gamestate.keys & (1 << (lock-dr_lock1) ) ) ) { SD_PlaySound (NOWAYSND); // locked return; } } switch (doorobjlist[door].action) { case dr_closed: case dr_closing: OpenDoor (door); break; case dr_open: case dr_opening: CloseDoor (door); break; } } //=========================================================================== /* =============== = = DoorOpen = = Close the door after three seconds = =============== */ void DoorOpen (int door) { if ( (doorobjlist[door].ticcount += (short) tics) >= OPENTICS) CloseDoor (door); } /* =============== = = DoorOpening = =============== */ void DoorOpening (int door) { unsigned area1,area2; word *map; int32_t position; position = doorposition[door]; if (!position) { // // door is just starting to open, so connect the areas // map = mapsegs[0] + (doorobjlist[door].tiley<areanumber < NUMAREAS) ConnectAreas (); if (areabyplayer[area1]) PlaySoundLocTile(OPENDOORSND,doorobjlist[door].tilex,doorobjlist[door].tiley); // JAB } } // // slide the door by an adaptive amount // position += tics<<10; if (position >= 0xffff) { // // door is all the way open // position = 0xffff; doorobjlist[door].ticcount = 0; doorobjlist[door].action = dr_open; actorat[doorobjlist[door].tilex][doorobjlist[door].tiley] = 0; } doorposition[door] = (word) position; } /* =============== = = DoorClosing = =============== */ void DoorClosing (int door) { unsigned area1,area2; word *map; int32_t position; int tilex,tiley; tilex = doorobjlist[door].tilex; tiley = doorobjlist[door].tiley; if ( ((int)(uintptr_t)actorat[tilex][tiley] != (door | 0x80)) || (player->tilex == tilex && player->tiley == tiley) ) { // something got inside the door OpenDoor (door); return; }; position = doorposition[door]; // // slide the door by an adaptive amount // position -= tics<<10; if (position <= 0) { // // door is closed all the way, so disconnect the areas // position = 0; doorobjlist[door].action = dr_closed; map = mapsegs[0] + (doorobjlist[door].tiley<areanumber < NUMAREAS) ConnectAreas (); } } doorposition[door] = (word) position; } /* ===================== = = MoveDoors = = Called from PlayLoop = ===================== */ void MoveDoors (void) { int door; if (gamestate.victoryflag) // don't move door during victory sequence return; for (door = 0; door < doornum; door++) { switch (doorobjlist[door].action) { case dr_open: DoorOpen (door); break; case dr_opening: DoorOpening(door); break; case dr_closing: DoorClosing(door); break; } } } /* ============================================================================= PUSHABLE WALLS ============================================================================= */ word pwallstate; word pwallpos; // amount a pushable wall has been moved (0-63) word pwallx,pwally; byte pwalldir,pwalltile; int dirs[4][2]={{0,-1},{1,0},{0,1},{-1,0}}; /* =============== = = PushWall = =============== */ void PushWall (int checkx, int checky, int dir) { int oldtile, dx, dy; if (pwallstate) return; oldtile = tilemap[checkx][checky]; if (!oldtile) return; dx = dirs[dir][0]; dy = dirs[dir][1]; if (actorat[checkx+dx][checky+dy]) { SD_PlaySound (NOWAYSND); return; } actorat[checkx+dx][checky+dy] = (objtype *)(uintptr_t) (tilemap[checkx+dx][checky+dy] = oldtile); gamestate.secretcount++; pwallx = checkx; pwally = checky; pwalldir = dir; pwallstate = 1; pwallpos = 0; pwalltile = tilemap[pwallx][pwally]; tilemap[pwallx][pwally] = 64; tilemap[pwallx+dx][pwally+dy] = 64; *(mapsegs[1]+(pwally<tiley<tilex); // set correct floorcode (BrotherTank's fix) SD_PlaySound (PUSHWALLSND); } /* ================= = = MovePWalls = ================= */ void MovePWalls (void) { int oldblock,oldtile; if (!pwallstate) return; oldblock = pwallstate/128; pwallstate += (word)tics; if (pwallstate/128 != oldblock) { // block crossed into a new block oldtile = pwalltile; // // the tile can now be walked into // tilemap[pwallx][pwally] = 0; actorat[pwallx][pwally] = 0; *(mapsegs[0]+(pwally<areanumber+AREATILE; int dx=dirs[pwalldir][0], dy=dirs[pwalldir][1]; // // see if it should be pushed farther // if (pwallstate>=256) // only move two tiles fix { // // the block has been pushed two tiles // pwallstate = 0; tilemap[pwallx+dx][pwally+dy] = oldtile; return; } else { int xl,yl,xh,yh; xl = (player->x-PLAYERSIZE) >> TILESHIFT; yl = (player->y-PLAYERSIZE) >> TILESHIFT; xh = (player->x+PLAYERSIZE) >> TILESHIFT; yh = (player->y+PLAYERSIZE) >> TILESHIFT; pwallx += dx; pwally += dy; if (actorat[pwallx+dx][pwally+dy] || xl<=pwallx+dx && pwallx+dx<=xh && yl<=pwally+dy && pwally+dy<=yh) { pwallstate = 0; tilemap[pwallx][pwally] = oldtile; return; } actorat[pwallx+dx][pwally+dy] = (objtype *)(uintptr_t) (tilemap[pwallx+dx][pwally+dy] = oldtile); tilemap[pwallx+dx][pwally+dy] = 64; } } pwallpos = (pwallstate/2)&63; } wolf4sdl-1.7+svn262/wl_debug.cpp0000644000175000017500000005247111134105020015665 0ustar fabianfabian// WL_DEBUG.C #ifdef _WIN32 #include #else #include #endif #include "wl_def.h" #pragma hdrstop #ifdef USE_CLOUDSKY #include "wl_cloudsky.h" #endif /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #define VIEWTILEX (viewwidth/16) #define VIEWTILEY (viewheight/16) /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ #ifdef DEBUGKEYS int DebugKeys (void); // from WL_DRAW.C void ScalePost(); void SimpleScaleShape (int xcenter, int shapenum, unsigned height); /* ============================================================================= LOCAL VARIABLES ============================================================================= */ int maporgx; int maporgy; enum {mapview,tilemapview,actoratview,visview} viewtype; void ViewMap (void); //=========================================================================== /* ================== = = CountObjects = ================== */ void CountObjects (void) { int i,total,count,active,inactive,doors; objtype *obj; CenterWindow (17,7); active = inactive = count = doors = 0; US_Print ("Total statics :"); total = (int)(laststatobj-&statobjlist[0]); US_PrintUnsigned (total); char str[60]; sprintf(str,"\nlaststatobj=%.8X",(int32_t)(uintptr_t)laststatobj); US_Print(str); US_Print ("\nIn use statics:"); for (i=0;inext;obj;obj=obj->next) { if (obj->active) active++; else inactive++; } US_Print ("\nTotal actors :"); US_PrintUnsigned (active+inactive); US_Print ("\nActive actors :"); US_PrintUnsigned (active); VW_UpdateScreen(); IN_Ack (); } //=========================================================================== /* =================== = = PictureGrabber = =================== */ void PictureGrabber (void) { static char fname[] = "WSHOT000.BMP"; for(int i = 0; i < 1000; i++) { fname[7] = i % 10 + '0'; fname[6] = (i / 10) % 10 + '0'; fname[5] = i / 100 + '0'; int file = open(fname, O_RDONLY | O_BINARY); if(file == -1) break; // file does not exist, so use that filename close(file); } // overwrites WSHOT999.BMP if all wshot files exist SDL_SaveBMP(curSurface, fname); CenterWindow (18,2); US_PrintCentered ("Screenshot taken"); VW_UpdateScreen(); IN_Ack(); } //=========================================================================== /* =================== = = BasicOverhead = =================== */ void BasicOverhead (void) { int x, y, z, offx, offy; z = 128/MAPSIZE; // zoom scale offx = 320/2; offy = (160-MAPSIZE*z)/2; #ifdef MAPBORDER int temp = viewsize; NewViewSize(16); DrawPlayBorder(); #endif // right side (raw) for(x=0;xflags&FL_SHOOTABLE) color = 72; // enemy else if (!tile || ISPOINTER(tile)) { if (spotvis[x][y]) color = 111; // visable else color = 0; // nothing } else if (MAPSPOT(x,y,1) == PUSHABLETILE) color = 171; // pushwall else if (tile == 64) color = 158; // solid obj else if (tile < 128) color = 154; // walls else if (tile < 256) color = 146; // doors VWB_Bar(x*z+offx, y*z+offy,z,z,color); } } VWB_Bar(player->tilex*z+offx,player->tiley*z+offy,z,z,15); // player // resize the border to match VW_UpdateScreen(); IN_Ack(); #ifdef MAPBORDER NewViewSize(temp); DrawPlayBorder(); #endif } //=========================================================================== /* ================ = = ShapeTest = ================ */ void ShapeTest (void) { //TODO #if NOTYET extern word NumDigi; extern word *DigiList; extern int postx; extern int postwidth; extern byte *postsource; static char buf[10]; boolean done; ScanCode scan; int i,j,k,x; longword l; byte *addr; soundnames sound; // PageListStruct far *page; CenterWindow(20,16); VW_UpdateScreen(); for (i = 0,done = false; !done;) { US_ClearWindow(); sound = (soundnames) -1; // page = &PMPages[i]; US_Print(" Page #"); US_PrintUnsigned(i); if (i < PMSpriteStart) US_Print(" (Wall)"); else if (i < PMSoundStart) US_Print(" (Sprite)"); else if (i == ChunksInFile - 1) US_Print(" (Sound Info)"); else US_Print(" (Sound)"); /* US_Print("\n XMS: "); if (page->xmsPage != -1) US_PrintUnsigned(page->xmsPage); else US_Print("No"); US_Print("\n Main: "); if (page->mainPage != -1) US_PrintUnsigned(page->mainPage); else if (page->emsPage != -1) { US_Print("EMS "); US_PrintUnsigned(page->emsPage); } else US_Print("No"); US_Print("\n Last hit: "); US_PrintUnsigned(page->lastHit);*/ US_Print("\n Address: "); addr = (byte *) PM_GetPage(i); sprintf(buf,"0x%08X",(int32_t) addr); US_Print(buf); if (addr) { if (i < PMSpriteStart) { // // draw the wall // vbuf += 32*SCREENWIDTH; postx = 128; postwidth = 1; postsource = addr; for (x=0;x<64;x++,postx++,postsource+=64) { wallheight[postx] = 256; ScalePost (); } vbuf -= 32*SCREENWIDTH; } else if (i < PMSoundStart) { // // draw the sprite // vbuf += 32*SCREENWIDTH; SimpleScaleShape (160, i-PMSpriteStart, 64); vbuf -= 32*SCREENWIDTH; } else if (i == ChunksInFile - 1) { US_Print("\n\n Number of sounds: "); US_PrintUnsigned(NumDigi); for (l = j = k = 0;j < NumDigi;j++) { l += DigiList[(j * 2) + 1]; k += (DigiList[(j * 2) + 1] + (PMPageSize - 1)) / PMPageSize; } US_Print("\n Total bytes: "); US_PrintUnsigned(l); US_Print("\n Total pages: "); US_PrintUnsigned(k); } else { byte *dp = addr; for (j = 0;j < NumDigi;j++) { k = (DigiList[(j * 2) + 1] + (PMPageSize - 1)) / PMPageSize; if ((i >= PMSoundStart + DigiList[j * 2]) && (i < PMSoundStart + DigiList[j * 2] + k)) break; } if (j < NumDigi) { sound = (soundnames) j; US_Print("\n Sound #"); US_PrintUnsigned(j); US_Print("\n Segment #"); US_PrintUnsigned(i - PMSoundStart - DigiList[j * 2]); } for (j = 0;j < PageLengths[i];j += 32) { byte v = dp[j]; int v2 = (unsigned)v; v2 -= 128; v2 /= 4; if (v2 < 0) VWB_Vlin(WindowY + WindowH - 32 + v2, WindowY + WindowH - 32, WindowX + 8 + (j / 32),BLACK); else VWB_Vlin(WindowY + WindowH - 32, WindowY + WindowH - 32 + v2, WindowX + 8 + (j / 32),BLACK); } } } VW_UpdateScreen(); IN_Ack(); scan = LastScan; IN_ClearKey(scan); switch (scan) { case sc_LeftArrow: if (i) i--; break; case sc_RightArrow: if (++i >= ChunksInFile) i--; break; case sc_W: // Walls i = 0; break; case sc_S: // Sprites i = PMSpriteStart; break; case sc_D: // Digitized i = PMSoundStart; break; case sc_I: // Digitized info i = ChunksInFile - 1; break; /* case sc_L: // Load all pages for (j = 0;j < ChunksInFile;j++) PM_GetPage(j); break;*/ case sc_P: if (sound != -1) SD_PlayDigitized(sound,8,8); break; case sc_Escape: done = true; break; /* case sc_Enter: PM_GetPage(i); break;*/ } } SD_StopDigitized(); #endif } //=========================================================================== /* ================ = = DebugKeys = ================ */ int DebugKeys (void) { boolean esc; int level; if (Keyboard[sc_B]) // B = border color { CenterWindow(20,3); PrintY+=6; US_Print(" Border color (0-56): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); if (level>=0 && level<=99) { if (level<30) level += 31; else { if (level > 56) level=31; else level -= 26; } bordercol=level*4+3; if (bordercol == VIEWCOLOR) DrawStatusBorder(bordercol); DrawPlayBorder(); return 0; } } return 1; } if (Keyboard[sc_C]) // C = count objects { CountObjects(); return 1; } if (Keyboard[sc_D]) // D = Darkone's FPS counter { CenterWindow (22,2); if (fpscounter) US_PrintCentered ("Darkone's FPS Counter OFF"); else US_PrintCentered ("Darkone's FPS Counter ON"); VW_UpdateScreen(); IN_Ack(); fpscounter ^= 1; return 1; } if (Keyboard[sc_E]) // E = quit level playstate = ex_completed; if (Keyboard[sc_F]) // F = facing spot { char str[60]; CenterWindow (14,6); US_Print ("x:"); US_PrintUnsigned (player->x); US_Print (" ("); US_PrintUnsigned (player->x%65536); US_Print (")\ny:"); US_PrintUnsigned (player->y); US_Print (" ("); US_PrintUnsigned (player->y%65536); US_Print (")\nA:"); US_PrintUnsigned (player->angle); US_Print (" X:"); US_PrintUnsigned (player->tilex); US_Print (" Y:"); US_PrintUnsigned (player->tiley); US_Print ("\n1:"); US_PrintUnsigned (tilemap[player->tilex][player->tiley]); sprintf(str," 2:%.8X",(unsigned)(uintptr_t)actorat[player->tilex][player->tiley]); US_Print(str); US_Print ("\nf 1:"); US_PrintUnsigned (player->areanumber); US_Print (" 2:"); US_PrintUnsigned (MAPSPOT(player->tilex,player->tiley,1)); US_Print (" 3:"); if ((unsigned)(uintptr_t)actorat[player->tilex][player->tiley] < 256) US_PrintUnsigned (spotvis[player->tilex][player->tiley]); else US_PrintUnsigned (actorat[player->tilex][player->tiley]->flags); VW_UpdateScreen(); IN_Ack(); return 1; } if (Keyboard[sc_G]) // G = god mode { CenterWindow (12,2); if (godmode == 0) US_PrintCentered ("God mode ON"); else if (godmode == 1) US_PrintCentered ("God (no flash)"); else if (godmode == 2) US_PrintCentered ("God mode OFF"); VW_UpdateScreen(); IN_Ack(); if (godmode != 2) godmode++; else godmode = 0; return 1; } if (Keyboard[sc_H]) // H = hurt self { IN_ClearKeysDown (); TakeDamage (16,NULL); } else if (Keyboard[sc_I]) // I = item cheat { CenterWindow (12,3); US_PrintCentered ("Free items!"); VW_UpdateScreen(); GivePoints (100000); HealSelf (99); if (gamestate.bestweapon 99) gamestate.ammo = 99; DrawAmmo (); IN_Ack (); return 1; } else if (Keyboard[sc_K]) // K = give keys { CenterWindow(16,3); PrintY+=6; US_Print(" Give Key (1-4): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,1,0); if (!esc) { level = atoi (str); if (level>0 && level<5) GiveKey(level-1); } return 1; } else if (Keyboard[sc_L]) // L = level ratios { byte x,start,end=LRpack; if (end == 8) // wolf3d { CenterWindow(17,10); start = 0; } else // sod { CenterWindow(17,12); start = 0; end = 10; } again: for(x=start;x 9) { start = 10; end = 20; CenterWindow(17,12); goto again; } return 1; } else if (Keyboard[sc_N]) // N = no clip { noclip^=1; CenterWindow (18,3); if (noclip) US_PrintCentered ("No clipping ON"); else US_PrintCentered ("No clipping OFF"); VW_UpdateScreen(); IN_Ack (); return 1; } else if (Keyboard[sc_O]) // O = basic overhead { BasicOverhead(); return 1; } else if(Keyboard[sc_P]) // P = Ripper's picture grabber { PictureGrabber(); return 1; } else if (Keyboard[sc_Q]) // Q = fast quit Quit (NULL); else if (Keyboard[sc_S]) // S = slow motion { CenterWindow(30,3); PrintY+=6; US_Print(" Slow Motion steps (default 14): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); if (level>=0 && level<=50) singlestep = level; } return 1; } else if (Keyboard[sc_T]) // T = shape test { ShapeTest (); return 1; } else if (Keyboard[sc_V]) // V = extra VBLs { CenterWindow(30,3); PrintY+=6; US_Print(" Add how many extra VBLs(0-8): "); VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,1,0); if (!esc) { level = atoi (str); if (level>=0 && level<=8) extravbls = level; } return 1; } else if (Keyboard[sc_W]) // W = warp to level { CenterWindow(26,3); PrintY+=6; #ifndef SPEAR US_Print(" Warp to which level(1-10): "); #else US_Print(" Warp to which level(1-21): "); #endif VW_UpdateScreen(); esc = !US_LineInput (px,py,str,NULL,true,2,0); if (!esc) { level = atoi (str); #ifndef SPEAR if (level>0 && level<11) #else if (level>0 && level<22) #endif { gamestate.mapon = level-1; playstate = ex_warped; } } return 1; } else if (Keyboard[sc_X]) // X = item cheat { CenterWindow (12,3); US_PrintCentered ("Extra stuff!"); VW_UpdateScreen(); // DEBUG: put stuff here IN_Ack (); return 1; } #ifdef USE_CLOUDSKY else if(Keyboard[sc_Z]) { char defstr[15]; CenterWindow(34,4); PrintY+=6; US_Print(" Recalculate sky with seek: "); int seekpx = px, seekpy = py; US_PrintUnsigned(curSky->seed); US_Print("\n Use color map (0-"); US_PrintUnsigned(numColorMaps - 1); US_Print("): "); int mappx = px, mappy = py; US_PrintUnsigned(curSky->colorMapIndex); VW_UpdateScreen(); sprintf(defstr, "%u", curSky->seed); esc = !US_LineInput(seekpx, seekpy, str, defstr, true, 10, 0); if(esc) return 0; curSky->seed = (uint32_t) atoi(str); sprintf(defstr, "%u", curSky->colorMapIndex); esc = !US_LineInput(mappx, mappy, str, defstr, true, 10, 0); if(esc) return 0; uint32_t newInd = (uint32_t) atoi(str); if(newInd < (uint32_t) numColorMaps) { curSky->colorMapIndex = newInd; InitSky(); } else { CenterWindow (18,3); US_PrintCentered ("Illegal color map!"); VW_UpdateScreen(); IN_Ack (); } } #endif return 0; } #if 0 /* =================== = = OverheadRefresh = =================== */ void OverheadRefresh (void) { unsigned x,y,endx,endy,sx,sy; unsigned tile; endx = maporgx+VIEWTILEX; endy = maporgy+VIEWTILEY; for (y=maporgy;y>12)); LatchDrawChar(sx+8,sy,NUMBERCHARS+((tile&0x0f00)>>8)); LatchDrawChar(sx,sy+8,NUMBERCHARS+((tile&0x00f0)>>4)); LatchDrawChar(sx+8,sy+8,NUMBERCHARS+(tile&0x000f)); } } } } #endif #if 0 /* =================== = = ViewMap = =================== */ void ViewMap (void) { boolean button0held; viewtype = actoratview; // button0held = false; maporgx = player->tilex - VIEWTILEX/2; if (maporgx<0) maporgx = 0; if (maporgx>MAPSIZE-VIEWTILEX) maporgx=MAPSIZE-VIEWTILEX; maporgy = player->tiley - VIEWTILEY/2; if (maporgy<0) maporgy = 0; if (maporgy>MAPSIZE-VIEWTILEY) maporgy=MAPSIZE-VIEWTILEY; do { // // let user pan around // PollControls (); if (controlx < 0 && maporgx>0) maporgx--; if (controlx > 0 && maporgx0) maporgy--; if (controly > 0 && maporgyvisview) viewtype = mapview; } if (!c.button0) button0held = false; #endif OverheadRefresh (); } while (!Keyboard[sc_Escape]); IN_ClearKeysDown (); } #endif #endif wolf4sdl-1.7+svn262/wl_state.cpp0000644000175000017500000010720311056120261015720 0ustar fabianfabian// WL_STATE.C #include "wl_def.h" #pragma hdrstop /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ static const dirtype opposite[9] = {west,southwest,south,southeast,east,northeast,north,northwest,nodir}; static const dirtype diagonal[9][9] = { /* east */ {nodir,nodir,northeast,nodir,nodir,nodir,southeast,nodir,nodir}, {nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir}, /* north */ {northeast,nodir,nodir,nodir,northwest,nodir,nodir,nodir,nodir}, {nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir}, /* west */ {nodir,nodir,northwest,nodir,nodir,nodir,southwest,nodir,nodir}, {nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir}, /* south */ {southeast,nodir,nodir,nodir,southwest,nodir,nodir,nodir,nodir}, {nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir}, {nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir,nodir} }; void SpawnNewObj (unsigned tilex, unsigned tiley, statetype *state); void NewState (objtype *ob, statetype *state); boolean TryWalk (objtype *ob); void MoveObj (objtype *ob, int32_t move); void KillActor (objtype *ob); void DamageActor (objtype *ob, unsigned damage); boolean CheckLine (objtype *ob); void FirstSighting (objtype *ob); boolean CheckSight (objtype *ob); /* ============================================================================= LOCAL VARIABLES ============================================================================= */ //=========================================================================== /* =================== = = SpawnNewObj = = Spaws a new actor at the given TILE coordinates, with the given state, and = the given size in GLOBAL units. = = newobj = a pointer to an initialized new actor = =================== */ void SpawnNewObj (unsigned tilex, unsigned tiley, statetype *state) { GetNewActor (); newobj->state = state; if (state->tictime) newobj->ticcount = DEMOCHOOSE_ORIG_SDL( US_RndT () % state->tictime, US_RndT () % state->tictime + 1); // Chris' moonwalk bugfix ;D else newobj->ticcount = 0; newobj->tilex = (short) tilex; newobj->tiley = (short) tiley; newobj->x = ((int32_t)tilex<y = ((int32_t)tiley<dir = nodir; actorat[tilex][tiley] = newobj; newobj->areanumber = *(mapsegs[0] + (newobj->tiley<tilex) - AREATILE; } /* =================== = = NewState = = Changes ob to a new state, setting ticcount to the max for that state = =================== */ void NewState (objtype *ob, statetype *state) { ob->state = state; ob->ticcount = state->tictime; } /* ============================================================================= ENEMY TILE WORLD MOVEMENT CODE ============================================================================= */ /* ================================== = = TryWalk = = Attempts to move ob in its current (ob->dir) direction. = = If blocked by either a wall or an actor returns FALSE = = If move is either clear or blocked only by a door, returns TRUE and sets = = ob->tilex = new destination = ob->tiley = ob->areanumber = the floor tile number (0-(NUMAREAS-1)) of destination = ob->distance = TILEGLOBAl, or -doornumber if a door is blocking the way = = If a door is in the way, an OpenDoor call is made to start it opening. = The actor code should wait until = doorobjlist[-ob->distance].action = dr_open, meaning the door has been = fully opened = ================================== */ #define CHECKDIAG(x,y) \ { \ temp=(uintptr_t)actorat[x][y]; \ if (temp) \ { \ if (temp<256) \ return false; \ if (((objtype *)temp)->flags&FL_SHOOTABLE) \ return false; \ } \ } #ifdef PLAYDEMOLIKEORIGINAL #define DOORCHECK \ if(DEMOCOND_ORIG) \ doornum = temp&63; \ else \ { \ doornum = (int) temp & 127; \ OpenDoor(doornum); \ ob->distance = -doornum - 1; \ return true; \ } #else #define DOORCHECK \ doornum = (int) temp & 127; \ OpenDoor(doornum); \ ob->distance = -doornum - 1; \ return true; #endif #define CHECKSIDE(x,y) \ { \ temp=(uintptr_t)actorat[x][y]; \ if (temp) \ { \ if (temp<128) \ return false; \ if (temp<256) \ { \ DOORCHECK \ } \ else if (((objtype *)temp)->flags&FL_SHOOTABLE) \ return false; \ } \ } boolean TryWalk (objtype *ob) { int doornum = -1; uintptr_t temp; if (ob->obclass == inertobj) { switch (ob->dir) { case north: ob->tiley--; break; case northeast: ob->tilex++; ob->tiley--; break; case east: ob->tilex++; break; case southeast: ob->tilex++; ob->tiley++; break; case south: ob->tiley++; break; case southwest: ob->tilex--; ob->tiley++; break; case west: ob->tilex--; break; case northwest: ob->tilex--; ob->tiley--; break; } } else { switch (ob->dir) { case north: if (ob->obclass == dogobj || ob->obclass == fakeobj || ob->obclass == ghostobj || ob->obclass == spectreobj) { CHECKDIAG(ob->tilex,ob->tiley-1); } else { CHECKSIDE(ob->tilex,ob->tiley-1); } ob->tiley--; break; case northeast: CHECKDIAG(ob->tilex+1,ob->tiley-1); CHECKDIAG(ob->tilex+1,ob->tiley); CHECKDIAG(ob->tilex,ob->tiley-1); ob->tilex++; ob->tiley--; break; case east: if (ob->obclass == dogobj || ob->obclass == fakeobj || ob->obclass == ghostobj || ob->obclass == spectreobj) { CHECKDIAG(ob->tilex+1,ob->tiley); } else { CHECKSIDE(ob->tilex+1,ob->tiley); } ob->tilex++; break; case southeast: CHECKDIAG(ob->tilex+1,ob->tiley+1); CHECKDIAG(ob->tilex+1,ob->tiley); CHECKDIAG(ob->tilex,ob->tiley+1); ob->tilex++; ob->tiley++; break; case south: if (ob->obclass == dogobj || ob->obclass == fakeobj || ob->obclass == ghostobj || ob->obclass == spectreobj) { CHECKDIAG(ob->tilex,ob->tiley+1); } else { CHECKSIDE(ob->tilex,ob->tiley+1); } ob->tiley++; break; case southwest: CHECKDIAG(ob->tilex-1,ob->tiley+1); CHECKDIAG(ob->tilex-1,ob->tiley); CHECKDIAG(ob->tilex,ob->tiley+1); ob->tilex--; ob->tiley++; break; case west: if (ob->obclass == dogobj || ob->obclass == fakeobj || ob->obclass == ghostobj || ob->obclass == spectreobj) { CHECKDIAG(ob->tilex-1,ob->tiley); } else { CHECKSIDE(ob->tilex-1,ob->tiley); } ob->tilex--; break; case northwest: CHECKDIAG(ob->tilex-1,ob->tiley-1); CHECKDIAG(ob->tilex-1,ob->tiley); CHECKDIAG(ob->tilex,ob->tiley-1); ob->tilex--; ob->tiley--; break; case nodir: return false; default: Quit ("Walk: Bad dir"); } } #ifdef PLAYDEMOLIKEORIGINAL if (DEMOCOND_ORIG && doornum != -1) { OpenDoor(doornum); ob->distance = -doornum-1; return true; } #endif ob->areanumber = *(mapsegs[0] + (ob->tiley<tilex) - AREATILE; ob->distance = TILEGLOBAL; return true; } /* ================================== = = SelectDodgeDir = = Attempts to choose and initiate a movement for ob that sends it towards = the player while dodging = = If there is no possible move (ob is totally surrounded) = = ob->dir = nodir = = Otherwise = = ob->dir = new direction to follow = ob->distance = TILEGLOBAL or -doornumber = ob->tilex = new destination = ob->tiley = ob->areanumber = the floor tile number (0-(NUMAREAS-1)) of destination = ================================== */ void SelectDodgeDir (objtype *ob) { int deltax,deltay,i; unsigned absdx,absdy; dirtype dirtry[5]; dirtype turnaround,tdir; if (ob->flags & FL_FIRSTATTACK) { // // turning around is only ok the very first time after noticing the // player // turnaround = nodir; ob->flags &= ~FL_FIRSTATTACK; } else turnaround=opposite[ob->dir]; deltax = player->tilex - ob->tilex; deltay = player->tiley - ob->tiley; // // arange 5 direction choices in order of preference // the four cardinal directions plus the diagonal straight towards // the player // if (deltax>0) { dirtry[1]= east; dirtry[3]= west; } else { dirtry[1]= west; dirtry[3]= east; } if (deltay>0) { dirtry[2]= south; dirtry[4]= north; } else { dirtry[2]= north; dirtry[4]= south; } // // randomize a bit for dodging // absdx = abs(deltax); absdy = abs(deltay); if (absdx > absdy) { tdir = dirtry[1]; dirtry[1] = dirtry[2]; dirtry[2] = tdir; tdir = dirtry[3]; dirtry[3] = dirtry[4]; dirtry[4] = tdir; } if (US_RndT() < 128) { tdir = dirtry[1]; dirtry[1] = dirtry[2]; dirtry[2] = tdir; tdir = dirtry[3]; dirtry[3] = dirtry[4]; dirtry[4] = tdir; } dirtry[0] = diagonal [ dirtry[1] ] [ dirtry[2] ]; // // try the directions util one works // for (i=0;i<5;i++) { if ( dirtry[i] == nodir || dirtry[i] == turnaround) continue; ob->dir = dirtry[i]; if (TryWalk(ob)) return; } // // turn around only as a last resort // if (turnaround != nodir) { ob->dir = turnaround; if (TryWalk(ob)) return; } ob->dir = nodir; } /* ============================ = = SelectChaseDir = = As SelectDodgeDir, but doesn't try to dodge = ============================ */ void SelectChaseDir (objtype *ob) { int deltax,deltay; dirtype d[3]; dirtype tdir, olddir, turnaround; olddir=ob->dir; turnaround=opposite[olddir]; deltax=player->tilex - ob->tilex; deltay=player->tiley - ob->tiley; d[1]=nodir; d[2]=nodir; if (deltax>0) d[1]= east; else if (deltax<0) d[1]= west; if (deltay>0) d[2]=south; else if (deltay<0) d[2]=north; if (abs(deltay)>abs(deltax)) { tdir=d[1]; d[1]=d[2]; d[2]=tdir; } if (d[1]==turnaround) d[1]=nodir; if (d[2]==turnaround) d[2]=nodir; if (d[1]!=nodir) { ob->dir=d[1]; if (TryWalk(ob)) return; /*either moved forward or attacked*/ } if (d[2]!=nodir) { ob->dir=d[2]; if (TryWalk(ob)) return; } /* there is no direct path to the player, so pick another direction */ if (olddir!=nodir) { ob->dir=olddir; if (TryWalk(ob)) return; } if (US_RndT()>128) /*randomly determine direction of search*/ { for (tdir=north; tdir<=west; tdir=(dirtype)(tdir+1)) { if (tdir!=turnaround) { ob->dir=tdir; if ( TryWalk(ob) ) return; } } } else { for (tdir=west; tdir>=north; tdir=(dirtype)(tdir-1)) { if (tdir!=turnaround) { ob->dir=tdir; if ( TryWalk(ob) ) return; } } } if (turnaround != nodir) { ob->dir=turnaround; if (ob->dir != nodir) { if ( TryWalk(ob) ) return; } } ob->dir = nodir; // can't move } /* ============================ = = SelectRunDir = = Run Away from player = ============================ */ void SelectRunDir (objtype *ob) { int deltax,deltay; dirtype d[3]; dirtype tdir; deltax=player->tilex - ob->tilex; deltay=player->tiley - ob->tiley; if (deltax<0) d[1]= east; else d[1]= west; if (deltay<0) d[2]=south; else d[2]=north; if (abs(deltay)>abs(deltax)) { tdir=d[1]; d[1]=d[2]; d[2]=tdir; } ob->dir=d[1]; if (TryWalk(ob)) return; /*either moved forward or attacked*/ ob->dir=d[2]; if (TryWalk(ob)) return; /* there is no direct path to the player, so pick another direction */ if (US_RndT()>128) /*randomly determine direction of search*/ { for (tdir=north; tdir<=west; tdir=(dirtype)(tdir+1)) { ob->dir=tdir; if ( TryWalk(ob) ) return; } } else { for (tdir=west; tdir>=north; tdir=(dirtype)(tdir-1)) { ob->dir=tdir; if ( TryWalk(ob) ) return; } } ob->dir = nodir; // can't move } /* ================= = = MoveObj = = Moves ob be move global units in ob->dir direction = Actors are not allowed to move inside the player = Does NOT check to see if the move is tile map valid = = ob->x = adjusted for new position = ob->y = ================= */ void MoveObj (objtype *ob, int32_t move) { int32_t deltax,deltay; switch (ob->dir) { case north: ob->y -= move; break; case northeast: ob->x += move; ob->y -= move; break; case east: ob->x += move; break; case southeast: ob->x += move; ob->y += move; break; case south: ob->y += move; break; case southwest: ob->x -= move; ob->y += move; break; case west: ob->x -= move; break; case northwest: ob->x -= move; ob->y -= move; break; case nodir: return; default: Quit ("MoveObj: bad dir!"); } // // check to make sure it's not on top of player // if (areabyplayer[ob->areanumber]) { deltax = ob->x - player->x; if (deltax < -MINACTORDIST || deltax > MINACTORDIST) goto moveok; deltay = ob->y - player->y; if (deltay < -MINACTORDIST || deltay > MINACTORDIST) goto moveok; if (ob->hidden) // move closer until he meets CheckLine goto moveok; if (ob->obclass == ghostobj || ob->obclass == spectreobj) TakeDamage (tics*2,ob); // // back up // switch (ob->dir) { case north: ob->y += move; break; case northeast: ob->x -= move; ob->y += move; break; case east: ob->x -= move; break; case southeast: ob->x -= move; ob->y -= move; break; case south: ob->y -= move; break; case southwest: ob->x += move; ob->y -= move; break; case west: ob->x += move; break; case northwest: ob->x += move; ob->y += move; break; case nodir: return; } return; } moveok: ob->distance -=move; } /* ============================================================================= STUFF ============================================================================= */ /* =============== = = DropItem = = Tries to drop a bonus item somewhere in the tiles surrounding the = given tilex/tiley = =============== */ void DropItem (wl_stat_t itemtype, int tilex, int tiley) { int x,y,xl,xh,yl,yh; // // find a free spot to put it in // if (!actorat[tilex][tiley]) { PlaceItemType (itemtype, tilex,tiley); return; } xl = tilex-1; xh = tilex+1; yl = tiley-1; yh = tiley+1; for (x=xl ; x<= xh ; x++) { for (y=yl ; y<= yh ; y++) { if (!actorat[x][y]) { PlaceItemType (itemtype, x,y); return; } } } } /* =============== = = KillActor = =============== */ void KillActor (objtype *ob) { int tilex,tiley; tilex = ob->tilex = (word)(ob->x >> TILESHIFT); // drop item on center tiley = ob->tiley = (word)(ob->y >> TILESHIFT); switch (ob->obclass) { case guardobj: GivePoints (100); NewState (ob,&s_grddie1); PlaceItemType (bo_clip2,tilex,tiley); break; case officerobj: GivePoints (400); NewState (ob,&s_ofcdie1); PlaceItemType (bo_clip2,tilex,tiley); break; case mutantobj: GivePoints (700); NewState (ob,&s_mutdie1); PlaceItemType (bo_clip2,tilex,tiley); break; case ssobj: GivePoints (500); NewState (ob,&s_ssdie1); if (gamestate.bestweapon < wp_machinegun) PlaceItemType (bo_machinegun,tilex,tiley); else PlaceItemType (bo_clip2,tilex,tiley); break; case dogobj: GivePoints (200); NewState (ob,&s_dogdie1); break; #ifndef SPEAR case bossobj: GivePoints (5000); NewState (ob,&s_bossdie1); PlaceItemType (bo_key1,tilex,tiley); break; case gretelobj: GivePoints (5000); NewState (ob,&s_greteldie1); PlaceItemType (bo_key1,tilex,tiley); break; case giftobj: GivePoints (5000); gamestate.killx = player->x; gamestate.killy = player->y; NewState (ob,&s_giftdie1); break; case fatobj: GivePoints (5000); gamestate.killx = player->x; gamestate.killy = player->y; NewState (ob,&s_fatdie1); break; case schabbobj: GivePoints (5000); gamestate.killx = player->x; gamestate.killy = player->y; NewState (ob,&s_schabbdie1); break; case fakeobj: GivePoints (2000); NewState (ob,&s_fakedie1); break; case mechahitlerobj: GivePoints (5000); NewState (ob,&s_mechadie1); break; case realhitlerobj: GivePoints (5000); gamestate.killx = player->x; gamestate.killy = player->y; NewState (ob,&s_hitlerdie1); break; #else case spectreobj: if (ob->flags&FL_BONUS) { GivePoints (200); // Get points once for each ob->flags &= ~FL_BONUS; } NewState (ob,&s_spectredie1); break; case angelobj: GivePoints (5000); NewState (ob,&s_angeldie1); break; case transobj: GivePoints (5000); NewState (ob,&s_transdie0); PlaceItemType (bo_key1,tilex,tiley); break; case uberobj: GivePoints (5000); NewState (ob,&s_uberdie0); PlaceItemType (bo_key1,tilex,tiley); break; case willobj: GivePoints (5000); NewState (ob,&s_willdie1); PlaceItemType (bo_key1,tilex,tiley); break; case deathobj: GivePoints (5000); NewState (ob,&s_deathdie1); PlaceItemType (bo_key1,tilex,tiley); break; #endif } gamestate.killcount++; ob->flags &= ~FL_SHOOTABLE; actorat[ob->tilex][ob->tiley] = NULL; ob->flags |= FL_NONMARK; } /* =================== = = DamageActor = = Called when the player succesfully hits an enemy. = = Does damage points to enemy ob, either putting it into a stun frame or = killing it. = =================== */ void DamageActor (objtype *ob, unsigned damage) { madenoise = true; // // do double damage if shooting a non attack mode actor // if ( !(ob->flags & FL_ATTACKMODE) ) damage <<= 1; ob->hitpoints -= (short)damage; if (ob->hitpoints<=0) KillActor (ob); else { if (! (ob->flags & FL_ATTACKMODE) ) FirstSighting (ob); // put into combat mode switch (ob->obclass) // dogs only have one hit point { case guardobj: if (ob->hitpoints&1) NewState (ob,&s_grdpain); else NewState (ob,&s_grdpain1); break; case officerobj: if (ob->hitpoints&1) NewState (ob,&s_ofcpain); else NewState (ob,&s_ofcpain1); break; case mutantobj: if (ob->hitpoints&1) NewState (ob,&s_mutpain); else NewState (ob,&s_mutpain1); break; case ssobj: if (ob->hitpoints&1) NewState (ob,&s_sspain); else NewState (ob,&s_sspain1); break; } } } /* ============================================================================= CHECKSIGHT ============================================================================= */ /* ===================== = = CheckLine = = Returns true if a straight line between the player and ob is unobstructed = ===================== */ boolean CheckLine (objtype *ob) { int x1,y1,xt1,yt1,x2,y2,xt2,yt2; int x,y; int xdist,ydist,xstep,ystep; int partial,delta; int32_t ltemp; int xfrac,yfrac,deltafrac; unsigned value,intercept; x1 = ob->x >> UNSIGNEDSHIFT; // 1/256 tile precision y1 = ob->y >> UNSIGNEDSHIFT; xt1 = x1 >> 8; yt1 = y1 >> 8; x2 = plux; y2 = pluy; xt2 = player->tilex; yt2 = player->tiley; xdist = abs(xt2-xt1); if (xdist > 0) { if (xt2 > xt1) { partial = 256-(x1&0xff); xstep = 1; } else { partial = x1&0xff; xstep = -1; } deltafrac = abs(x2-x1); delta = y2-y1; ltemp = ((int32_t)delta<<8)/deltafrac; if (ltemp > 0x7fffl) ystep = 0x7fff; else if (ltemp < -0x7fffl) ystep = -0x7fff; else ystep = ltemp; yfrac = y1 + (((int32_t)ystep*partial) >>8); x = xt1+xstep; xt2 += xstep; do { y = yfrac>>8; yfrac += ystep; value = (unsigned)tilemap[x][y]; x += xstep; if (!value) continue; if (value<128 || value>256) return false; // // see if the door is open enough // value &= ~0x80; intercept = yfrac-ystep/2; if (intercept>doorposition[value]) return false; } while (x != xt2); } ydist = abs(yt2-yt1); if (ydist > 0) { if (yt2 > yt1) { partial = 256-(y1&0xff); ystep = 1; } else { partial = y1&0xff; ystep = -1; } deltafrac = abs(y2-y1); delta = x2-x1; ltemp = ((int32_t)delta<<8)/deltafrac; if (ltemp > 0x7fffl) xstep = 0x7fff; else if (ltemp < -0x7fffl) xstep = -0x7fff; else xstep = ltemp; xfrac = x1 + (((int32_t)xstep*partial) >>8); y = yt1 + ystep; yt2 += ystep; do { x = xfrac>>8; xfrac += xstep; value = (unsigned)tilemap[x][y]; y += ystep; if (!value) continue; if (value<128 || value>256) return false; // // see if the door is open enough // value &= ~0x80; intercept = xfrac-xstep/2; if (intercept>doorposition[value]) return false; } while (y != yt2); } return true; } /* ================ = = CheckSight = = Checks a straight line between player and current object = = If the sight is ok, check alertness and angle to see if they notice = = returns true if the player has been spoted = ================ */ #define MINSIGHT 0x18000l boolean CheckSight (objtype *ob) { int32_t deltax,deltay; // // don't bother tracing a line if the area isn't connected to the player's // if (!areabyplayer[ob->areanumber]) return false; // // if the player is real close, sight is automatic // deltax = player->x - ob->x; deltay = player->y - ob->y; if (deltax > -MINSIGHT && deltax < MINSIGHT && deltay > -MINSIGHT && deltay < MINSIGHT) return true; // // see if they are looking in the right direction // switch (ob->dir) { case north: if (deltay > 0) return false; break; case east: if (deltax < 0) return false; break; case south: if (deltay < 0) return false; break; case west: if (deltax > 0) return false; break; // check diagonal moving guards fix case northwest: if (DEMOCOND_SDL && deltay > -deltax) return false; break; case northeast: if (DEMOCOND_SDL && deltay > deltax) return false; break; case southwest: if (DEMOCOND_SDL && deltax > deltay) return false; break; case southeast: if (DEMOCOND_SDL && -deltax > deltay) return false; break; } // // trace a line to check for blocking tiles (corners) // return CheckLine (ob); } /* =============== = = FirstSighting = = Puts an actor into attack mode and possibly reverses the direction = if the player is behind it = =============== */ void FirstSighting (objtype *ob) { // // react to the player // switch (ob->obclass) { case guardobj: PlaySoundLocActor(HALTSND,ob); NewState (ob,&s_grdchase1); ob->speed *= 3; // go faster when chasing player break; case officerobj: PlaySoundLocActor(SPIONSND,ob); NewState (ob,&s_ofcchase1); ob->speed *= 5; // go faster when chasing player break; case mutantobj: NewState (ob,&s_mutchase1); ob->speed *= 3; // go faster when chasing player break; case ssobj: PlaySoundLocActor(SCHUTZADSND,ob); NewState (ob,&s_sschase1); ob->speed *= 4; // go faster when chasing player break; case dogobj: PlaySoundLocActor(DOGBARKSND,ob); NewState (ob,&s_dogchase1); ob->speed *= 2; // go faster when chasing player break; #ifndef SPEAR case bossobj: SD_PlaySound(GUTENTAGSND); NewState (ob,&s_bosschase1); ob->speed = SPDPATROL*3; // go faster when chasing player break; #ifndef APOGEE_1_0 case gretelobj: SD_PlaySound(KEINSND); NewState (ob,&s_gretelchase1); ob->speed *= 3; // go faster when chasing player break; case giftobj: SD_PlaySound(EINESND); NewState (ob,&s_giftchase1); ob->speed *= 3; // go faster when chasing player break; case fatobj: SD_PlaySound(ERLAUBENSND); NewState (ob,&s_fatchase1); ob->speed *= 3; // go faster when chasing player break; #endif case schabbobj: SD_PlaySound(SCHABBSHASND); NewState (ob,&s_schabbchase1); ob->speed *= 3; // go faster when chasing player break; case fakeobj: SD_PlaySound(TOT_HUNDSND); NewState (ob,&s_fakechase1); ob->speed *= 3; // go faster when chasing player break; case mechahitlerobj: SD_PlaySound(DIESND); NewState (ob,&s_mechachase1); ob->speed *= 3; // go faster when chasing player break; case realhitlerobj: SD_PlaySound(DIESND); NewState (ob,&s_hitlerchase1); ob->speed *= 5; // go faster when chasing player break; case ghostobj: NewState (ob,&s_blinkychase1); ob->speed *= 2; // go faster when chasing player break; #else case spectreobj: SD_PlaySound(GHOSTSIGHTSND); NewState (ob,&s_spectrechase1); ob->speed = 800; // go faster when chasing player break; case angelobj: SD_PlaySound(ANGELSIGHTSND); NewState (ob,&s_angelchase1); ob->speed = 1536; // go faster when chasing player break; case transobj: SD_PlaySound(TRANSSIGHTSND); NewState (ob,&s_transchase1); ob->speed = 1536; // go faster when chasing player break; case uberobj: NewState (ob,&s_uberchase1); ob->speed = 3000; // go faster when chasing player break; case willobj: SD_PlaySound(WILHELMSIGHTSND); NewState (ob,&s_willchase1); ob->speed = 2048; // go faster when chasing player break; case deathobj: SD_PlaySound(KNIGHTSIGHTSND); NewState (ob,&s_deathchase1); ob->speed = 2048; // go faster when chasing player break; #endif } if (ob->distance < 0) ob->distance = 0; // ignore the door opening command ob->flags |= FL_ATTACKMODE|FL_FIRSTATTACK; } /* =============== = = SightPlayer = = Called by actors that ARE NOT chasing the player. If the player = is detected (by sight, noise, or proximity), the actor is put into = it's combat frame and true is returned. = = Incorporates a random reaction delay = =============== */ boolean SightPlayer (objtype *ob) { if (ob->flags & FL_ATTACKMODE) Quit ("An actor in ATTACKMODE called SightPlayer!"); if (ob->temp2) { // // count down reaction time // ob->temp2 -= (short) tics; if (ob->temp2 > 0) return false; ob->temp2 = 0; // time to react } else { if (!areabyplayer[ob->areanumber]) return false; if (ob->flags & FL_AMBUSH) { if (!CheckSight (ob)) return false; ob->flags &= ~FL_AMBUSH; } else { if (!madenoise && !CheckSight (ob)) return false; } switch (ob->obclass) { case guardobj: ob->temp2 = 1+US_RndT()/4; break; case officerobj: ob->temp2 = 2; break; case mutantobj: ob->temp2 = 1+US_RndT()/6; break; case ssobj: ob->temp2 = 1+US_RndT()/6; break; case dogobj: ob->temp2 = 1+US_RndT()/8; break; case bossobj: case schabbobj: case fakeobj: case mechahitlerobj: case realhitlerobj: case gretelobj: case giftobj: case fatobj: case spectreobj: case angelobj: case transobj: case uberobj: case willobj: case deathobj: ob->temp2 = 1; break; } return false; } FirstSighting (ob); return true; } wolf4sdl-1.7+svn262/id_ca.h0000644000175000017500000000305610771574621014623 0ustar fabianfabian#ifndef __ID_CA__ #define __ID_CA__ //=========================================================================== #define NUMMAPS 60 #ifdef USE_FLOORCEILINGTEX #define MAPPLANES 3 #else #define MAPPLANES 2 #endif #define UNCACHEGRCHUNK(chunk) {if(grsegs[chunk]) {free(grsegs[chunk]); grsegs[chunk]=NULL;}} #define UNCACHEAUDIOCHUNK(chunk) {if(audiosegs[chunk]) {free(audiosegs[chunk]); audiosegs[chunk]=NULL;}} //=========================================================================== typedef struct { int32_t planestart[3]; word planelength[3]; word width,height; char name[16]; } maptype; //=========================================================================== extern int mapon; extern word *mapsegs[MAPPLANES]; extern byte *audiosegs[NUMSNDCHUNKS]; extern byte *grsegs[NUMCHUNKS]; extern char extension[5]; extern char graphext[5]; extern char audioext[5]; //=========================================================================== boolean CA_LoadFile (const char *filename, memptr *ptr); boolean CA_WriteFile (const char *filename, void *ptr, int32_t length); int32_t CA_RLEWCompress (word *source, int32_t length, word *dest, word rlewtag); void CA_RLEWexpand (word *source, word *dest, int32_t length, word rlewtag); void CA_Startup (void); void CA_Shutdown (void); int32_t CA_CacheAudioChunk (int chunk); void CA_LoadAllSounds (void); void CA_CacheGrChunk (int chunk); void CA_CacheMap (int mapnum); void CA_CacheScreen (int chunk); void CA_CannotOpen(const char *name); #endif wolf4sdl-1.7+svn262/Wolf4SDL.sln0000644000175000017500000000153410734317076015464 0ustar fabianfabian Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Wolf4SDL", "Wolf4SDL.vcproj", "{411B026A-F58B-4E25-840B-4FE67710F762}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {411B026A-F58B-4E25-840B-4FE67710F762}.Debug|Win32.ActiveCfg = Debug|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Debug|Win32.Build.0 = Debug|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Release|Win32.ActiveCfg = Release|Win32 {411B026A-F58B-4E25-840B-4FE67710F762}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal wolf4sdl-1.7+svn262/wl_act2.cpp0000644000175000017500000032651611134105020015434 0ustar fabianfabian// WL_ACT2.C #include #include #include "wl_def.h" #pragma hdrstop /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #define PROJECTILESIZE 0xc000l #define BJRUNSPEED 2048 #define BJJUMPSPEED 680 /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ /* ============================================================================= LOCAL VARIABLES ============================================================================= */ dirtype dirtable[9] = {northwest,north,northeast,west,nodir,east, southwest,south,southeast}; short starthitpoints[4][NUMENEMIES] = // // BABY MODE // { { 25, // guards 50, // officer 100, // SS 1, // dogs 850, // Hans 850, // Schabbs 200, // fake hitler 800, // mecha hitler 45, // mutants 25, // ghosts 25, // ghosts 25, // ghosts 25, // ghosts 850, // Gretel 850, // Gift 850, // Fat 5, // en_spectre, 1450, // en_angel, 850, // en_trans, 1050, // en_uber, 950, // en_will, 1250 // en_death }, // // DON'T HURT ME MODE // { 25, // guards 50, // officer 100, // SS 1, // dogs 950, // Hans 950, // Schabbs 300, // fake hitler 950, // mecha hitler 55, // mutants 25, // ghosts 25, // ghosts 25, // ghosts 25, // ghosts 950, // Gretel 950, // Gift 950, // Fat 10, // en_spectre, 1550, // en_angel, 950, // en_trans, 1150, // en_uber, 1050, // en_will, 1350 // en_death }, // // BRING 'EM ON MODE // { 25, // guards 50, // officer 100, // SS 1, // dogs 1050, // Hans 1550, // Schabbs 400, // fake hitler 1050, // mecha hitler 55, // mutants 25, // ghosts 25, // ghosts 25, // ghosts 25, // ghosts 1050, // Gretel 1050, // Gift 1050, // Fat 15, // en_spectre, 1650, // en_angel, 1050, // en_trans, 1250, // en_uber, 1150, // en_will, 1450 // en_death }, // // DEATH INCARNATE MODE // { 25, // guards 50, // officer 100, // SS 1, // dogs 1200, // Hans 2400, // Schabbs 500, // fake hitler 1200, // mecha hitler 65, // mutants 25, // ghosts 25, // ghosts 25, // ghosts 25, // ghosts 1200, // Gretel 1200, // Gift 1200, // Fat 25, // en_spectre, 2000, // en_angel, 1200, // en_trans, 1400, // en_uber, 1300, // en_will, 1600 // en_death } }; void A_StartDeathCam (objtype *ob); void T_Path (objtype *ob); void T_Shoot (objtype *ob); void T_Bite (objtype *ob); void T_DogChase (objtype *ob); void T_Chase (objtype *ob); void T_Projectile (objtype *ob); void T_Stand (objtype *ob); void A_DeathScream (objtype *ob); extern statetype s_rocket; extern statetype s_smoke1; extern statetype s_smoke2; extern statetype s_smoke3; extern statetype s_smoke4; extern statetype s_boom2; extern statetype s_boom3; void A_Smoke (objtype *ob); statetype s_rocket = {true,SPR_ROCKET_1,3,(statefunc)T_Projectile,(statefunc)A_Smoke,&s_rocket}; statetype s_smoke1 = {false,SPR_SMOKE_1,3,NULL,NULL,&s_smoke2}; statetype s_smoke2 = {false,SPR_SMOKE_2,3,NULL,NULL,&s_smoke3}; statetype s_smoke3 = {false,SPR_SMOKE_3,3,NULL,NULL,&s_smoke4}; statetype s_smoke4 = {false,SPR_SMOKE_4,3,NULL,NULL,NULL}; statetype s_boom1 = {false,SPR_BOOM_1,6,NULL,NULL,&s_boom2}; statetype s_boom2 = {false,SPR_BOOM_2,6,NULL,NULL,&s_boom3}; statetype s_boom3 = {false,SPR_BOOM_3,6,NULL,NULL,NULL}; #ifdef SPEAR extern statetype s_hrocket; extern statetype s_hsmoke1; extern statetype s_hsmoke2; extern statetype s_hsmoke3; extern statetype s_hsmoke4; extern statetype s_hboom2; extern statetype s_hboom3; void A_Smoke (objtype *ob); statetype s_hrocket = {true,SPR_HROCKET_1,3,(statefunc)T_Projectile,(statefunc)A_Smoke,&s_hrocket}; statetype s_hsmoke1 = {false,SPR_HSMOKE_1,3,NULL,NULL,&s_hsmoke2}; statetype s_hsmoke2 = {false,SPR_HSMOKE_2,3,NULL,NULL,&s_hsmoke3}; statetype s_hsmoke3 = {false,SPR_HSMOKE_3,3,NULL,NULL,&s_hsmoke4}; statetype s_hsmoke4 = {false,SPR_HSMOKE_4,3,NULL,NULL,NULL}; statetype s_hboom1 = {false,SPR_HBOOM_1,6,NULL,NULL,&s_hboom2}; statetype s_hboom2 = {false,SPR_HBOOM_2,6,NULL,NULL,&s_hboom3}; statetype s_hboom3 = {false,SPR_HBOOM_3,6,NULL,NULL,NULL}; #endif void T_Schabb (objtype *ob); void T_SchabbThrow (objtype *ob); void T_Fake (objtype *ob); void T_FakeFire (objtype *ob); void T_Ghosts (objtype *ob); void A_Slurpie (objtype *ob); void A_HitlerMorph (objtype *ob); void A_MechaSound (objtype *ob); /* ================= = = A_Smoke = ================= */ void A_Smoke (objtype *ob) { GetNewActor (); #ifdef SPEAR if (ob->obclass == hrocketobj) newobj->state = &s_hsmoke1; else #endif newobj->state = &s_smoke1; newobj->ticcount = 6; newobj->tilex = ob->tilex; newobj->tiley = ob->tiley; newobj->x = ob->x; newobj->y = ob->y; newobj->obclass = inertobj; newobj->active = ac_yes; newobj->flags = FL_NEVERMARK; } /* =================== = = ProjectileTryMove = = returns true if move ok =================== */ #define PROJSIZE 0x2000 boolean ProjectileTryMove (objtype *ob) { int xl,yl,xh,yh,x,y; objtype *check; xl = (ob->x-PROJSIZE) >> TILESHIFT; yl = (ob->y-PROJSIZE) >> TILESHIFT; xh = (ob->x+PROJSIZE) >> TILESHIFT; yh = (ob->y+PROJSIZE) >> TILESHIFT; // // check for solid walls // for (y=yl;y<=yh;y++) for (x=xl;x<=xh;x++) { check = actorat[x][y]; if (check && !ISPOINTER(check)) return false; } return true; } /* ================= = = T_Projectile = ================= */ void T_Projectile (objtype *ob) { int32_t deltax,deltay; int damage; int32_t speed; speed = (int32_t)ob->speed*tics; deltax = FixedMul(speed,costable[ob->angle]); deltay = -FixedMul(speed,sintable[ob->angle]); if (deltax>0x10000l) deltax = 0x10000l; if (deltay>0x10000l) deltay = 0x10000l; ob->x += deltax; ob->y += deltay; deltax = LABS(ob->x - player->x); deltay = LABS(ob->y - player->y); if (!ProjectileTryMove (ob)) { #ifndef APOGEE_1_0 // actually the whole method is never reached in shareware 1.0 if (ob->obclass == rocketobj) { PlaySoundLocActor(MISSILEHITSND,ob); ob->state = &s_boom1; } #ifdef SPEAR else if (ob->obclass == hrocketobj) { PlaySoundLocActor(MISSILEHITSND,ob); ob->state = &s_hboom1; } #endif else #endif ob->state = NULL; // mark for removal return; } if (deltax < PROJECTILESIZE && deltay < PROJECTILESIZE) { // hit the player switch (ob->obclass) { case needleobj: damage = (US_RndT() >>3) + 20; break; case rocketobj: case hrocketobj: case sparkobj: damage = (US_RndT() >>3) + 30; break; case fireobj: damage = (US_RndT() >>3); break; } TakeDamage (damage,ob); ob->state = NULL; // mark for removal return; } ob->tilex = (short)(ob->x >> TILESHIFT); ob->tiley = (short)(ob->y >> TILESHIFT); } /* ============================================================================= GUARD ============================================================================= */ // // guards // extern statetype s_grdstand; extern statetype s_grdpath1; extern statetype s_grdpath1s; extern statetype s_grdpath2; extern statetype s_grdpath3; extern statetype s_grdpath3s; extern statetype s_grdpath4; extern statetype s_grdpain; extern statetype s_grdpain1; extern statetype s_grdgiveup; extern statetype s_grdshoot1; extern statetype s_grdshoot2; extern statetype s_grdshoot3; extern statetype s_grdshoot4; extern statetype s_grdchase1; extern statetype s_grdchase1s; extern statetype s_grdchase2; extern statetype s_grdchase3; extern statetype s_grdchase3s; extern statetype s_grdchase4; extern statetype s_grddie1; extern statetype s_grddie1d; extern statetype s_grddie2; extern statetype s_grddie3; extern statetype s_grddie4; statetype s_grdstand = {true,SPR_GRD_S_1,0,(statefunc)T_Stand,NULL,&s_grdstand}; statetype s_grdpath1 = {true,SPR_GRD_W1_1,20,(statefunc)T_Path,NULL,&s_grdpath1s}; statetype s_grdpath1s = {true,SPR_GRD_W1_1,5,NULL,NULL,&s_grdpath2}; statetype s_grdpath2 = {true,SPR_GRD_W2_1,15,(statefunc)T_Path,NULL,&s_grdpath3}; statetype s_grdpath3 = {true,SPR_GRD_W3_1,20,(statefunc)T_Path,NULL,&s_grdpath3s}; statetype s_grdpath3s = {true,SPR_GRD_W3_1,5,NULL,NULL,&s_grdpath4}; statetype s_grdpath4 = {true,SPR_GRD_W4_1,15,(statefunc)T_Path,NULL,&s_grdpath1}; statetype s_grdpain = {2,SPR_GRD_PAIN_1,10,NULL,NULL,&s_grdchase1}; statetype s_grdpain1 = {2,SPR_GRD_PAIN_2,10,NULL,NULL,&s_grdchase1}; statetype s_grdshoot1 = {false,SPR_GRD_SHOOT1,20,NULL,NULL,&s_grdshoot2}; statetype s_grdshoot2 = {false,SPR_GRD_SHOOT2,20,NULL,(statefunc)T_Shoot,&s_grdshoot3}; statetype s_grdshoot3 = {false,SPR_GRD_SHOOT3,20,NULL,NULL,&s_grdchase1}; statetype s_grdchase1 = {true,SPR_GRD_W1_1,10,(statefunc)T_Chase,NULL,&s_grdchase1s}; statetype s_grdchase1s = {true,SPR_GRD_W1_1,3,NULL,NULL,&s_grdchase2}; statetype s_grdchase2 = {true,SPR_GRD_W2_1,8,(statefunc)T_Chase,NULL,&s_grdchase3}; statetype s_grdchase3 = {true,SPR_GRD_W3_1,10,(statefunc)T_Chase,NULL,&s_grdchase3s}; statetype s_grdchase3s = {true,SPR_GRD_W3_1,3,NULL,NULL,&s_grdchase4}; statetype s_grdchase4 = {true,SPR_GRD_W4_1,8,(statefunc)T_Chase,NULL,&s_grdchase1}; statetype s_grddie1 = {false,SPR_GRD_DIE_1,15,NULL,(statefunc)A_DeathScream,&s_grddie2}; statetype s_grddie2 = {false,SPR_GRD_DIE_2,15,NULL,NULL,&s_grddie3}; statetype s_grddie3 = {false,SPR_GRD_DIE_3,15,NULL,NULL,&s_grddie4}; statetype s_grddie4 = {false,SPR_GRD_DEAD,0,NULL,NULL,&s_grddie4}; #ifndef SPEAR // // ghosts // extern statetype s_blinkychase1; extern statetype s_blinkychase2; extern statetype s_inkychase1; extern statetype s_inkychase2; extern statetype s_pinkychase1; extern statetype s_pinkychase2; extern statetype s_clydechase1; extern statetype s_clydechase2; statetype s_blinkychase1 = {false,SPR_BLINKY_W1,10,(statefunc)T_Ghosts,NULL,&s_blinkychase2}; statetype s_blinkychase2 = {false,SPR_BLINKY_W2,10,(statefunc)T_Ghosts,NULL,&s_blinkychase1}; statetype s_inkychase1 = {false,SPR_INKY_W1,10,(statefunc)T_Ghosts,NULL,&s_inkychase2}; statetype s_inkychase2 = {false,SPR_INKY_W2,10,(statefunc)T_Ghosts,NULL,&s_inkychase1}; statetype s_pinkychase1 = {false,SPR_PINKY_W1,10,(statefunc)T_Ghosts,NULL,&s_pinkychase2}; statetype s_pinkychase2 = {false,SPR_PINKY_W2,10,(statefunc)T_Ghosts,NULL,&s_pinkychase1}; statetype s_clydechase1 = {false,SPR_CLYDE_W1,10,(statefunc)T_Ghosts,NULL,&s_clydechase2}; statetype s_clydechase2 = {false,SPR_CLYDE_W2,10,(statefunc)T_Ghosts,NULL,&s_clydechase1}; #endif // // dogs // extern statetype s_dogpath1; extern statetype s_dogpath1s; extern statetype s_dogpath2; extern statetype s_dogpath3; extern statetype s_dogpath3s; extern statetype s_dogpath4; extern statetype s_dogjump1; extern statetype s_dogjump2; extern statetype s_dogjump3; extern statetype s_dogjump4; extern statetype s_dogjump5; extern statetype s_dogchase1; extern statetype s_dogchase1s; extern statetype s_dogchase2; extern statetype s_dogchase3; extern statetype s_dogchase3s; extern statetype s_dogchase4; extern statetype s_dogdie1; extern statetype s_dogdie1d; extern statetype s_dogdie2; extern statetype s_dogdie3; extern statetype s_dogdead; statetype s_dogpath1 = {true,SPR_DOG_W1_1,20,(statefunc)T_Path,NULL,&s_dogpath1s}; statetype s_dogpath1s = {true,SPR_DOG_W1_1,5,NULL,NULL,&s_dogpath2}; statetype s_dogpath2 = {true,SPR_DOG_W2_1,15,(statefunc)T_Path,NULL,&s_dogpath3}; statetype s_dogpath3 = {true,SPR_DOG_W3_1,20,(statefunc)T_Path,NULL,&s_dogpath3s}; statetype s_dogpath3s = {true,SPR_DOG_W3_1,5,NULL,NULL,&s_dogpath4}; statetype s_dogpath4 = {true,SPR_DOG_W4_1,15,(statefunc)T_Path,NULL,&s_dogpath1}; statetype s_dogjump1 = {false,SPR_DOG_JUMP1,10,NULL,NULL,&s_dogjump2}; statetype s_dogjump2 = {false,SPR_DOG_JUMP2,10,NULL,(statefunc)T_Bite,&s_dogjump3}; statetype s_dogjump3 = {false,SPR_DOG_JUMP3,10,NULL,NULL,&s_dogjump4}; statetype s_dogjump4 = {false,SPR_DOG_JUMP1,10,NULL,NULL,&s_dogjump5}; statetype s_dogjump5 = {false,SPR_DOG_W1_1,10,NULL,NULL,&s_dogchase1}; statetype s_dogchase1 = {true,SPR_DOG_W1_1,10,(statefunc)T_DogChase,NULL,&s_dogchase1s}; statetype s_dogchase1s = {true,SPR_DOG_W1_1,3,NULL,NULL,&s_dogchase2}; statetype s_dogchase2 = {true,SPR_DOG_W2_1,8,(statefunc)T_DogChase,NULL,&s_dogchase3}; statetype s_dogchase3 = {true,SPR_DOG_W3_1,10,(statefunc)T_DogChase,NULL,&s_dogchase3s}; statetype s_dogchase3s = {true,SPR_DOG_W3_1,3,NULL,NULL,&s_dogchase4}; statetype s_dogchase4 = {true,SPR_DOG_W4_1,8,(statefunc)T_DogChase,NULL,&s_dogchase1}; statetype s_dogdie1 = {false,SPR_DOG_DIE_1,15,NULL,(statefunc)A_DeathScream,&s_dogdie2}; statetype s_dogdie2 = {false,SPR_DOG_DIE_2,15,NULL,NULL,&s_dogdie3}; statetype s_dogdie3 = {false,SPR_DOG_DIE_3,15,NULL,NULL,&s_dogdead}; statetype s_dogdead = {false,SPR_DOG_DEAD,15,NULL,NULL,&s_dogdead}; // // officers // extern statetype s_ofcstand; extern statetype s_ofcpath1; extern statetype s_ofcpath1s; extern statetype s_ofcpath2; extern statetype s_ofcpath3; extern statetype s_ofcpath3s; extern statetype s_ofcpath4; extern statetype s_ofcpain; extern statetype s_ofcpain1; extern statetype s_ofcgiveup; extern statetype s_ofcshoot1; extern statetype s_ofcshoot2; extern statetype s_ofcshoot3; extern statetype s_ofcshoot4; extern statetype s_ofcchase1; extern statetype s_ofcchase1s; extern statetype s_ofcchase2; extern statetype s_ofcchase3; extern statetype s_ofcchase3s; extern statetype s_ofcchase4; extern statetype s_ofcdie1; extern statetype s_ofcdie2; extern statetype s_ofcdie3; extern statetype s_ofcdie4; extern statetype s_ofcdie5; statetype s_ofcstand = {true,SPR_OFC_S_1,0,(statefunc)T_Stand,NULL,&s_ofcstand}; statetype s_ofcpath1 = {true,SPR_OFC_W1_1,20,(statefunc)T_Path,NULL,&s_ofcpath1s}; statetype s_ofcpath1s = {true,SPR_OFC_W1_1,5,NULL,NULL,&s_ofcpath2}; statetype s_ofcpath2 = {true,SPR_OFC_W2_1,15,(statefunc)T_Path,NULL,&s_ofcpath3}; statetype s_ofcpath3 = {true,SPR_OFC_W3_1,20,(statefunc)T_Path,NULL,&s_ofcpath3s}; statetype s_ofcpath3s = {true,SPR_OFC_W3_1,5,NULL,NULL,&s_ofcpath4}; statetype s_ofcpath4 = {true,SPR_OFC_W4_1,15,(statefunc)T_Path,NULL,&s_ofcpath1}; statetype s_ofcpain = {2,SPR_OFC_PAIN_1,10,NULL,NULL,&s_ofcchase1}; statetype s_ofcpain1 = {2,SPR_OFC_PAIN_2,10,NULL,NULL,&s_ofcchase1}; statetype s_ofcshoot1 = {false,SPR_OFC_SHOOT1,6,NULL,NULL,&s_ofcshoot2}; statetype s_ofcshoot2 = {false,SPR_OFC_SHOOT2,20,NULL,(statefunc)T_Shoot,&s_ofcshoot3}; statetype s_ofcshoot3 = {false,SPR_OFC_SHOOT3,10,NULL,NULL,&s_ofcchase1}; statetype s_ofcchase1 = {true,SPR_OFC_W1_1,10,(statefunc)T_Chase,NULL,&s_ofcchase1s}; statetype s_ofcchase1s = {true,SPR_OFC_W1_1,3,NULL,NULL,&s_ofcchase2}; statetype s_ofcchase2 = {true,SPR_OFC_W2_1,8,(statefunc)T_Chase,NULL,&s_ofcchase3}; statetype s_ofcchase3 = {true,SPR_OFC_W3_1,10,(statefunc)T_Chase,NULL,&s_ofcchase3s}; statetype s_ofcchase3s = {true,SPR_OFC_W3_1,3,NULL,NULL,&s_ofcchase4}; statetype s_ofcchase4 = {true,SPR_OFC_W4_1,8,(statefunc)T_Chase,NULL,&s_ofcchase1}; statetype s_ofcdie1 = {false,SPR_OFC_DIE_1,11,NULL,(statefunc)A_DeathScream,&s_ofcdie2}; statetype s_ofcdie2 = {false,SPR_OFC_DIE_2,11,NULL,NULL,&s_ofcdie3}; statetype s_ofcdie3 = {false,SPR_OFC_DIE_3,11,NULL,NULL,&s_ofcdie4}; statetype s_ofcdie4 = {false,SPR_OFC_DIE_4,11,NULL,NULL,&s_ofcdie5}; statetype s_ofcdie5 = {false,SPR_OFC_DEAD,0,NULL,NULL,&s_ofcdie5}; // // mutant // extern statetype s_mutstand; extern statetype s_mutpath1; extern statetype s_mutpath1s; extern statetype s_mutpath2; extern statetype s_mutpath3; extern statetype s_mutpath3s; extern statetype s_mutpath4; extern statetype s_mutpain; extern statetype s_mutpain1; extern statetype s_mutgiveup; extern statetype s_mutshoot1; extern statetype s_mutshoot2; extern statetype s_mutshoot3; extern statetype s_mutshoot4; extern statetype s_mutchase1; extern statetype s_mutchase1s; extern statetype s_mutchase2; extern statetype s_mutchase3; extern statetype s_mutchase3s; extern statetype s_mutchase4; extern statetype s_mutdie1; extern statetype s_mutdie2; extern statetype s_mutdie3; extern statetype s_mutdie4; extern statetype s_mutdie5; statetype s_mutstand = {true,SPR_MUT_S_1,0,(statefunc)T_Stand,NULL,&s_mutstand}; statetype s_mutpath1 = {true,SPR_MUT_W1_1,20,(statefunc)T_Path,NULL,&s_mutpath1s}; statetype s_mutpath1s = {true,SPR_MUT_W1_1,5,NULL,NULL,&s_mutpath2}; statetype s_mutpath2 = {true,SPR_MUT_W2_1,15,(statefunc)T_Path,NULL,&s_mutpath3}; statetype s_mutpath3 = {true,SPR_MUT_W3_1,20,(statefunc)T_Path,NULL,&s_mutpath3s}; statetype s_mutpath3s = {true,SPR_MUT_W3_1,5,NULL,NULL,&s_mutpath4}; statetype s_mutpath4 = {true,SPR_MUT_W4_1,15,(statefunc)T_Path,NULL,&s_mutpath1}; statetype s_mutpain = {2,SPR_MUT_PAIN_1,10,NULL,NULL,&s_mutchase1}; statetype s_mutpain1 = {2,SPR_MUT_PAIN_2,10,NULL,NULL,&s_mutchase1}; statetype s_mutshoot1 = {false,SPR_MUT_SHOOT1,6,NULL,(statefunc)T_Shoot,&s_mutshoot2}; statetype s_mutshoot2 = {false,SPR_MUT_SHOOT2,20,NULL,NULL,&s_mutshoot3}; statetype s_mutshoot3 = {false,SPR_MUT_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_mutshoot4}; statetype s_mutshoot4 = {false,SPR_MUT_SHOOT4,20,NULL,NULL,&s_mutchase1}; statetype s_mutchase1 = {true,SPR_MUT_W1_1,10,(statefunc)T_Chase,NULL,&s_mutchase1s}; statetype s_mutchase1s = {true,SPR_MUT_W1_1,3,NULL,NULL,&s_mutchase2}; statetype s_mutchase2 = {true,SPR_MUT_W2_1,8,(statefunc)T_Chase,NULL,&s_mutchase3}; statetype s_mutchase3 = {true,SPR_MUT_W3_1,10,(statefunc)T_Chase,NULL,&s_mutchase3s}; statetype s_mutchase3s = {true,SPR_MUT_W3_1,3,NULL,NULL,&s_mutchase4}; statetype s_mutchase4 = {true,SPR_MUT_W4_1,8,(statefunc)T_Chase,NULL,&s_mutchase1}; statetype s_mutdie1 = {false,SPR_MUT_DIE_1,7,NULL,(statefunc)A_DeathScream,&s_mutdie2}; statetype s_mutdie2 = {false,SPR_MUT_DIE_2,7,NULL,NULL,&s_mutdie3}; statetype s_mutdie3 = {false,SPR_MUT_DIE_3,7,NULL,NULL,&s_mutdie4}; statetype s_mutdie4 = {false,SPR_MUT_DIE_4,7,NULL,NULL,&s_mutdie5}; statetype s_mutdie5 = {false,SPR_MUT_DEAD,0,NULL,NULL,&s_mutdie5}; // // SS // extern statetype s_ssstand; extern statetype s_sspath1; extern statetype s_sspath1s; extern statetype s_sspath2; extern statetype s_sspath3; extern statetype s_sspath3s; extern statetype s_sspath4; extern statetype s_sspain; extern statetype s_sspain1; extern statetype s_ssshoot1; extern statetype s_ssshoot2; extern statetype s_ssshoot3; extern statetype s_ssshoot4; extern statetype s_ssshoot5; extern statetype s_ssshoot6; extern statetype s_ssshoot7; extern statetype s_ssshoot8; extern statetype s_ssshoot9; extern statetype s_sschase1; extern statetype s_sschase1s; extern statetype s_sschase2; extern statetype s_sschase3; extern statetype s_sschase3s; extern statetype s_sschase4; extern statetype s_ssdie1; extern statetype s_ssdie2; extern statetype s_ssdie3; extern statetype s_ssdie4; statetype s_ssstand = {true,SPR_SS_S_1,0,(statefunc)T_Stand,NULL,&s_ssstand}; statetype s_sspath1 = {true,SPR_SS_W1_1,20,(statefunc)T_Path,NULL,&s_sspath1s}; statetype s_sspath1s = {true,SPR_SS_W1_1,5,NULL,NULL,&s_sspath2}; statetype s_sspath2 = {true,SPR_SS_W2_1,15,(statefunc)T_Path,NULL,&s_sspath3}; statetype s_sspath3 = {true,SPR_SS_W3_1,20,(statefunc)T_Path,NULL,&s_sspath3s}; statetype s_sspath3s = {true,SPR_SS_W3_1,5,NULL,NULL,&s_sspath4}; statetype s_sspath4 = {true,SPR_SS_W4_1,15,(statefunc)T_Path,NULL,&s_sspath1}; statetype s_sspain = {2,SPR_SS_PAIN_1,10,NULL,NULL,&s_sschase1}; statetype s_sspain1 = {2,SPR_SS_PAIN_2,10,NULL,NULL,&s_sschase1}; statetype s_ssshoot1 = {false,SPR_SS_SHOOT1,20,NULL,NULL,&s_ssshoot2}; statetype s_ssshoot2 = {false,SPR_SS_SHOOT2,20,NULL,(statefunc)T_Shoot,&s_ssshoot3}; statetype s_ssshoot3 = {false,SPR_SS_SHOOT3,10,NULL,NULL,&s_ssshoot4}; statetype s_ssshoot4 = {false,SPR_SS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_ssshoot5}; statetype s_ssshoot5 = {false,SPR_SS_SHOOT3,10,NULL,NULL,&s_ssshoot6}; statetype s_ssshoot6 = {false,SPR_SS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_ssshoot7}; statetype s_ssshoot7 = {false,SPR_SS_SHOOT3,10,NULL,NULL,&s_ssshoot8}; statetype s_ssshoot8 = {false,SPR_SS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_ssshoot9}; statetype s_ssshoot9 = {false,SPR_SS_SHOOT3,10,NULL,NULL,&s_sschase1}; statetype s_sschase1 = {true,SPR_SS_W1_1,10,(statefunc)T_Chase,NULL,&s_sschase1s}; statetype s_sschase1s = {true,SPR_SS_W1_1,3,NULL,NULL,&s_sschase2}; statetype s_sschase2 = {true,SPR_SS_W2_1,8,(statefunc)T_Chase,NULL,&s_sschase3}; statetype s_sschase3 = {true,SPR_SS_W3_1,10,(statefunc)T_Chase,NULL,&s_sschase3s}; statetype s_sschase3s = {true,SPR_SS_W3_1,3,NULL,NULL,&s_sschase4}; statetype s_sschase4 = {true,SPR_SS_W4_1,8,(statefunc)T_Chase,NULL,&s_sschase1}; statetype s_ssdie1 = {false,SPR_SS_DIE_1,15,NULL,(statefunc)A_DeathScream,&s_ssdie2}; statetype s_ssdie2 = {false,SPR_SS_DIE_2,15,NULL,NULL,&s_ssdie3}; statetype s_ssdie3 = {false,SPR_SS_DIE_3,15,NULL,NULL,&s_ssdie4}; statetype s_ssdie4 = {false,SPR_SS_DEAD,0,NULL,NULL,&s_ssdie4}; #ifndef SPEAR // // hans // extern statetype s_bossstand; extern statetype s_bosschase1; extern statetype s_bosschase1s; extern statetype s_bosschase2; extern statetype s_bosschase3; extern statetype s_bosschase3s; extern statetype s_bosschase4; extern statetype s_bossdie1; extern statetype s_bossdie2; extern statetype s_bossdie3; extern statetype s_bossdie4; extern statetype s_bossshoot1; extern statetype s_bossshoot2; extern statetype s_bossshoot3; extern statetype s_bossshoot4; extern statetype s_bossshoot5; extern statetype s_bossshoot6; extern statetype s_bossshoot7; extern statetype s_bossshoot8; statetype s_bossstand = {false,SPR_BOSS_W1,0,(statefunc)T_Stand,NULL,&s_bossstand}; statetype s_bosschase1 = {false,SPR_BOSS_W1,10,(statefunc)T_Chase,NULL,&s_bosschase1s}; statetype s_bosschase1s = {false,SPR_BOSS_W1,3,NULL,NULL,&s_bosschase2}; statetype s_bosschase2 = {false,SPR_BOSS_W2,8,(statefunc)T_Chase,NULL,&s_bosschase3}; statetype s_bosschase3 = {false,SPR_BOSS_W3,10,(statefunc)T_Chase,NULL,&s_bosschase3s}; statetype s_bosschase3s = {false,SPR_BOSS_W3,3,NULL,NULL,&s_bosschase4}; statetype s_bosschase4 = {false,SPR_BOSS_W4,8,(statefunc)T_Chase,NULL,&s_bosschase1}; statetype s_bossdie1 = {false,SPR_BOSS_DIE1,15,NULL,(statefunc)A_DeathScream,&s_bossdie2}; statetype s_bossdie2 = {false,SPR_BOSS_DIE2,15,NULL,NULL,&s_bossdie3}; statetype s_bossdie3 = {false,SPR_BOSS_DIE3,15,NULL,NULL,&s_bossdie4}; statetype s_bossdie4 = {false,SPR_BOSS_DEAD,0,NULL,NULL,&s_bossdie4}; statetype s_bossshoot1 = {false,SPR_BOSS_SHOOT1,30,NULL,NULL,&s_bossshoot2}; statetype s_bossshoot2 = {false,SPR_BOSS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_bossshoot3}; statetype s_bossshoot3 = {false,SPR_BOSS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_bossshoot4}; statetype s_bossshoot4 = {false,SPR_BOSS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_bossshoot5}; statetype s_bossshoot5 = {false,SPR_BOSS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_bossshoot6}; statetype s_bossshoot6 = {false,SPR_BOSS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_bossshoot7}; statetype s_bossshoot7 = {false,SPR_BOSS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_bossshoot8}; statetype s_bossshoot8 = {false,SPR_BOSS_SHOOT1,10,NULL,NULL,&s_bosschase1}; // // gretel // extern statetype s_gretelstand; extern statetype s_gretelchase1; extern statetype s_gretelchase1s; extern statetype s_gretelchase2; extern statetype s_gretelchase3; extern statetype s_gretelchase3s; extern statetype s_gretelchase4; extern statetype s_greteldie1; extern statetype s_greteldie2; extern statetype s_greteldie3; extern statetype s_greteldie4; extern statetype s_gretelshoot1; extern statetype s_gretelshoot2; extern statetype s_gretelshoot3; extern statetype s_gretelshoot4; extern statetype s_gretelshoot5; extern statetype s_gretelshoot6; extern statetype s_gretelshoot7; extern statetype s_gretelshoot8; statetype s_gretelstand = {false,SPR_GRETEL_W1,0,(statefunc)T_Stand,NULL,&s_gretelstand}; statetype s_gretelchase1 = {false,SPR_GRETEL_W1,10,(statefunc)T_Chase,NULL,&s_gretelchase1s}; statetype s_gretelchase1s = {false,SPR_GRETEL_W1,3,NULL,NULL,&s_gretelchase2}; statetype s_gretelchase2 = {false,SPR_GRETEL_W2,8,(statefunc)T_Chase,NULL,&s_gretelchase3}; statetype s_gretelchase3 = {false,SPR_GRETEL_W3,10,(statefunc)T_Chase,NULL,&s_gretelchase3s}; statetype s_gretelchase3s = {false,SPR_GRETEL_W3,3,NULL,NULL,&s_gretelchase4}; statetype s_gretelchase4 = {false,SPR_GRETEL_W4,8,(statefunc)T_Chase,NULL,&s_gretelchase1}; statetype s_greteldie1 = {false,SPR_GRETEL_DIE1,15,NULL,(statefunc)A_DeathScream,&s_greteldie2}; statetype s_greteldie2 = {false,SPR_GRETEL_DIE2,15,NULL,NULL,&s_greteldie3}; statetype s_greteldie3 = {false,SPR_GRETEL_DIE3,15,NULL,NULL,&s_greteldie4}; statetype s_greteldie4 = {false,SPR_GRETEL_DEAD,0,NULL,NULL,&s_greteldie4}; statetype s_gretelshoot1 = {false,SPR_GRETEL_SHOOT1,30,NULL,NULL,&s_gretelshoot2}; statetype s_gretelshoot2 = {false,SPR_GRETEL_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_gretelshoot3}; statetype s_gretelshoot3 = {false,SPR_GRETEL_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_gretelshoot4}; statetype s_gretelshoot4 = {false,SPR_GRETEL_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_gretelshoot5}; statetype s_gretelshoot5 = {false,SPR_GRETEL_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_gretelshoot6}; statetype s_gretelshoot6 = {false,SPR_GRETEL_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_gretelshoot7}; statetype s_gretelshoot7 = {false,SPR_GRETEL_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_gretelshoot8}; statetype s_gretelshoot8 = {false,SPR_GRETEL_SHOOT1,10,NULL,NULL,&s_gretelchase1}; #endif /* =============== = = SpawnStand = =============== */ void SpawnStand (enemy_t which, int tilex, int tiley, int dir) { word *map; word tile; switch (which) { case en_guard: SpawnNewObj (tilex,tiley,&s_grdstand); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_officer: SpawnNewObj (tilex,tiley,&s_ofcstand); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_mutant: SpawnNewObj (tilex,tiley,&s_mutstand); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_ss: SpawnNewObj (tilex,tiley,&s_ssstand); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; } map = mapsegs[0]+(tiley<= AREATILE) tile = *(map+1); if (*(map-mapwidth) >= AREATILE) tile = *(map-mapwidth); if (*(map+mapwidth) >= AREATILE) tile = *(map+mapwidth); if ( *(map-1) >= AREATILE) tile = *(map-1); *map = tile; newobj->areanumber = tile-AREATILE; newobj->flags |= FL_AMBUSH; } newobj->obclass = (classtype)(guardobj + which); newobj->hitpoints = starthitpoints[gamestate.difficulty][which]; newobj->dir = (dirtype)(dir * 2); newobj->flags |= FL_SHOOTABLE; } /* =============== = = SpawnDeadGuard = =============== */ void SpawnDeadGuard (int tilex, int tiley) { SpawnNewObj (tilex,tiley,&s_grddie4); DEMOIF_SDL { newobj->flags |= FL_NONMARK; // walk through moving enemy fix } newobj->obclass = inertobj; } #ifndef SPEAR /* =============== = = SpawnBoss = =============== */ void SpawnBoss (int tilex, int tiley) { SpawnNewObj (tilex,tiley,&s_bossstand); newobj->speed = SPDPATROL; newobj->obclass = bossobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_boss]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = SpawnGretel = =============== */ void SpawnGretel (int tilex, int tiley) { SpawnNewObj (tilex,tiley,&s_gretelstand); newobj->speed = SPDPATROL; newobj->obclass = gretelobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_gretel]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } #endif /* =============== = = SpawnPatrol = =============== */ void SpawnPatrol (enemy_t which, int tilex, int tiley, int dir) { switch (which) { case en_guard: SpawnNewObj (tilex,tiley,&s_grdpath1); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_officer: SpawnNewObj (tilex,tiley,&s_ofcpath1); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_ss: SpawnNewObj (tilex,tiley,&s_sspath1); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_mutant: SpawnNewObj (tilex,tiley,&s_mutpath1); newobj->speed = SPDPATROL; if (!loadedgame) gamestate.killtotal++; break; case en_dog: SpawnNewObj (tilex,tiley,&s_dogpath1); newobj->speed = SPDDOG; if (!loadedgame) gamestate.killtotal++; break; } newobj->obclass = (classtype)(guardobj+which); newobj->dir = (dirtype)(dir*2); newobj->hitpoints = starthitpoints[gamestate.difficulty][which]; newobj->distance = TILEGLOBAL; newobj->flags |= FL_SHOOTABLE; newobj->active = ac_yes; actorat[newobj->tilex][newobj->tiley] = NULL; // don't use original spot switch (dir) { case 0: newobj->tilex++; break; case 1: newobj->tiley--; break; case 2: newobj->tilex--; break; case 3: newobj->tiley++; break; } actorat[newobj->tilex][newobj->tiley] = newobj; } /* ================== = = A_DeathScream = ================== */ void A_DeathScream (objtype *ob) { #ifndef UPLOAD #ifndef SPEAR if (mapon==9 && !US_RndT()) #else if ((mapon==18 || mapon==19) && !US_RndT()) #endif { switch(ob->obclass) { case mutantobj: case guardobj: case officerobj: case ssobj: case dogobj: PlaySoundLocActor(DEATHSCREAM6SND,ob); return; } } #endif switch (ob->obclass) { case mutantobj: PlaySoundLocActor(AHHHGSND,ob); break; case guardobj: { int sounds[9]={ DEATHSCREAM1SND, DEATHSCREAM2SND, DEATHSCREAM3SND, #ifndef APOGEE_1_0 DEATHSCREAM4SND, DEATHSCREAM5SND, DEATHSCREAM7SND, DEATHSCREAM8SND, DEATHSCREAM9SND #endif }; #ifndef UPLOAD PlaySoundLocActor(sounds[US_RndT()%8],ob); #else PlaySoundLocActor(sounds[US_RndT()%2],ob); #endif break; } case officerobj: PlaySoundLocActor(NEINSOVASSND,ob); break; case ssobj: PlaySoundLocActor(LEBENSND,ob); // JAB break; case dogobj: PlaySoundLocActor(DOGDEATHSND,ob); // JAB break; #ifndef SPEAR case bossobj: SD_PlaySound(MUTTISND); // JAB break; case schabbobj: SD_PlaySound(MEINGOTTSND); break; case fakeobj: SD_PlaySound(HITLERHASND); break; case mechahitlerobj: SD_PlaySound(SCHEISTSND); break; case realhitlerobj: SD_PlaySound(EVASND); break; #ifndef APOGEE_1_0 case gretelobj: SD_PlaySound(MEINSND); break; case giftobj: SD_PlaySound(DONNERSND); break; case fatobj: SD_PlaySound(ROSESND); break; #endif #else case spectreobj: SD_PlaySound(GHOSTFADESND); break; case angelobj: SD_PlaySound(ANGELDEATHSND); break; case transobj: SD_PlaySound(TRANSDEATHSND); break; case uberobj: SD_PlaySound(UBERDEATHSND); break; case willobj: SD_PlaySound(WILHELMDEATHSND); break; case deathobj: SD_PlaySound(KNIGHTDEATHSND); break; #endif } } /* ============================================================================= SPEAR ACTORS ============================================================================= */ #ifdef SPEAR void T_Launch (objtype *ob); void T_Will (objtype *ob); extern statetype s_angelshoot1; extern statetype s_deathshoot1; extern statetype s_spark1; // // trans // extern statetype s_transstand; extern statetype s_transchase1; extern statetype s_transchase1s; extern statetype s_transchase2; extern statetype s_transchase3; extern statetype s_transchase3s; extern statetype s_transchase4; extern statetype s_transdie0; extern statetype s_transdie01; extern statetype s_transdie1; extern statetype s_transdie2; extern statetype s_transdie3; extern statetype s_transdie4; extern statetype s_transshoot1; extern statetype s_transshoot2; extern statetype s_transshoot3; extern statetype s_transshoot4; extern statetype s_transshoot5; extern statetype s_transshoot6; extern statetype s_transshoot7; extern statetype s_transshoot8; statetype s_transstand = {false,SPR_TRANS_W1,0,(statefunc)T_Stand,NULL,&s_transstand}; statetype s_transchase1 = {false,SPR_TRANS_W1,10,(statefunc)T_Chase,NULL,&s_transchase1s}; statetype s_transchase1s = {false,SPR_TRANS_W1,3,NULL,NULL,&s_transchase2}; statetype s_transchase2 = {false,SPR_TRANS_W2,8,(statefunc)T_Chase,NULL,&s_transchase3}; statetype s_transchase3 = {false,SPR_TRANS_W3,10,(statefunc)T_Chase,NULL,&s_transchase3s}; statetype s_transchase3s = {false,SPR_TRANS_W3,3,NULL,NULL,&s_transchase4}; statetype s_transchase4 = {false,SPR_TRANS_W4,8,(statefunc)T_Chase,NULL,&s_transchase1}; statetype s_transdie0 = {false,SPR_TRANS_W1,1,NULL,(statefunc)A_DeathScream,&s_transdie01}; statetype s_transdie01 = {false,SPR_TRANS_W1,1,NULL,NULL,&s_transdie1}; statetype s_transdie1 = {false,SPR_TRANS_DIE1,15,NULL,NULL,&s_transdie2}; statetype s_transdie2 = {false,SPR_TRANS_DIE2,15,NULL,NULL,&s_transdie3}; statetype s_transdie3 = {false,SPR_TRANS_DIE3,15,NULL,NULL,&s_transdie4}; statetype s_transdie4 = {false,SPR_TRANS_DEAD,0,NULL,NULL,&s_transdie4}; statetype s_transshoot1 = {false,SPR_TRANS_SHOOT1,30,NULL,NULL,&s_transshoot2}; statetype s_transshoot2 = {false,SPR_TRANS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_transshoot3}; statetype s_transshoot3 = {false,SPR_TRANS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_transshoot4}; statetype s_transshoot4 = {false,SPR_TRANS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_transshoot5}; statetype s_transshoot5 = {false,SPR_TRANS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_transshoot6}; statetype s_transshoot6 = {false,SPR_TRANS_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_transshoot7}; statetype s_transshoot7 = {false,SPR_TRANS_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_transshoot8}; statetype s_transshoot8 = {false,SPR_TRANS_SHOOT1,10,NULL,NULL,&s_transchase1}; /* =============== = = SpawnTrans = =============== */ void SpawnTrans (int tilex, int tiley) { // word *map; // word tile; if (SoundBlasterPresent && DigiMode != sds_Off) s_transdie01.tictime = 105; SpawnNewObj (tilex,tiley,&s_transstand); newobj->obclass = transobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_trans]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } // // uber // void T_UShoot (objtype *ob); extern statetype s_uberstand; extern statetype s_uberchase1; extern statetype s_uberchase1s; extern statetype s_uberchase2; extern statetype s_uberchase3; extern statetype s_uberchase3s; extern statetype s_uberchase4; extern statetype s_uberdie0; extern statetype s_uberdie01; extern statetype s_uberdie1; extern statetype s_uberdie2; extern statetype s_uberdie3; extern statetype s_uberdie4; extern statetype s_uberdie5; extern statetype s_ubershoot1; extern statetype s_ubershoot2; extern statetype s_ubershoot3; extern statetype s_ubershoot4; extern statetype s_ubershoot5; extern statetype s_ubershoot6; extern statetype s_ubershoot7; statetype s_uberstand = {false,SPR_UBER_W1,0,(statefunc)T_Stand,NULL,&s_uberstand}; statetype s_uberchase1 = {false,SPR_UBER_W1,10,(statefunc)T_Chase,NULL,&s_uberchase1s}; statetype s_uberchase1s = {false,SPR_UBER_W1,3,NULL,NULL,&s_uberchase2}; statetype s_uberchase2 = {false,SPR_UBER_W2,8,(statefunc)T_Chase,NULL,&s_uberchase3}; statetype s_uberchase3 = {false,SPR_UBER_W3,10,(statefunc)T_Chase,NULL,&s_uberchase3s}; statetype s_uberchase3s = {false,SPR_UBER_W3,3,NULL,NULL,&s_uberchase4}; statetype s_uberchase4 = {false,SPR_UBER_W4,8,(statefunc)T_Chase,NULL,&s_uberchase1}; statetype s_uberdie0 = {false,SPR_UBER_W1,1,NULL,(statefunc)A_DeathScream,&s_uberdie01}; statetype s_uberdie01 = {false,SPR_UBER_W1,1,NULL,NULL,&s_uberdie1}; statetype s_uberdie1 = {false,SPR_UBER_DIE1,15,NULL,NULL,&s_uberdie2}; statetype s_uberdie2 = {false,SPR_UBER_DIE2,15,NULL,NULL,&s_uberdie3}; statetype s_uberdie3 = {false,SPR_UBER_DIE3,15,NULL,NULL,&s_uberdie4}; statetype s_uberdie4 = {false,SPR_UBER_DIE4,15,NULL,NULL,&s_uberdie5}; statetype s_uberdie5 = {false,SPR_UBER_DEAD,0,NULL,NULL,&s_uberdie5}; statetype s_ubershoot1 = {false,SPR_UBER_SHOOT1,30,NULL,NULL,&s_ubershoot2}; statetype s_ubershoot2 = {false,SPR_UBER_SHOOT2,12,NULL,(statefunc)T_UShoot,&s_ubershoot3}; statetype s_ubershoot3 = {false,SPR_UBER_SHOOT3,12,NULL,(statefunc)T_UShoot,&s_ubershoot4}; statetype s_ubershoot4 = {false,SPR_UBER_SHOOT4,12,NULL,(statefunc)T_UShoot,&s_ubershoot5}; statetype s_ubershoot5 = {false,SPR_UBER_SHOOT3,12,NULL,(statefunc)T_UShoot,&s_ubershoot6}; statetype s_ubershoot6 = {false,SPR_UBER_SHOOT2,12,NULL,(statefunc)T_UShoot,&s_ubershoot7}; statetype s_ubershoot7 = {false,SPR_UBER_SHOOT1,12,NULL,NULL,&s_uberchase1}; /* =============== = = SpawnUber = =============== */ void SpawnUber (int tilex, int tiley) { if (SoundBlasterPresent && DigiMode != sds_Off) s_uberdie01.tictime = 70; SpawnNewObj (tilex,tiley,&s_uberstand); newobj->obclass = uberobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_uber]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = T_UShoot = =============== */ void T_UShoot (objtype *ob) { int dx,dy,dist; T_Shoot (ob); dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; if (dist <= 1) TakeDamage (10,ob); } // // will // extern statetype s_willstand; extern statetype s_willchase1; extern statetype s_willchase1s; extern statetype s_willchase2; extern statetype s_willchase3; extern statetype s_willchase3s; extern statetype s_willchase4; extern statetype s_willdie1; extern statetype s_willdie2; extern statetype s_willdie3; extern statetype s_willdie4; extern statetype s_willdie5; extern statetype s_willdie6; extern statetype s_willshoot1; extern statetype s_willshoot2; extern statetype s_willshoot3; extern statetype s_willshoot4; extern statetype s_willshoot5; extern statetype s_willshoot6; statetype s_willstand = {false,SPR_WILL_W1,0,(statefunc)T_Stand,NULL,&s_willstand}; statetype s_willchase1 = {false,SPR_WILL_W1,10,(statefunc)T_Will,NULL,&s_willchase1s}; statetype s_willchase1s = {false,SPR_WILL_W1,3,NULL,NULL,&s_willchase2}; statetype s_willchase2 = {false,SPR_WILL_W2,8,(statefunc)T_Will,NULL,&s_willchase3}; statetype s_willchase3 = {false,SPR_WILL_W3,10,(statefunc)T_Will,NULL,&s_willchase3s}; statetype s_willchase3s = {false,SPR_WILL_W3,3,NULL,NULL,&s_willchase4}; statetype s_willchase4 = {false,SPR_WILL_W4,8,(statefunc)T_Will,NULL,&s_willchase1}; statetype s_willdeathcam = {false,SPR_WILL_W1,1,NULL,NULL,&s_willdie1}; statetype s_willdie1 = {false,SPR_WILL_W1,1,NULL,(statefunc)A_DeathScream,&s_willdie2}; statetype s_willdie2 = {false,SPR_WILL_W1,10,NULL,NULL,&s_willdie3}; statetype s_willdie3 = {false,SPR_WILL_DIE1,10,NULL,NULL,&s_willdie4}; statetype s_willdie4 = {false,SPR_WILL_DIE2,10,NULL,NULL,&s_willdie5}; statetype s_willdie5 = {false,SPR_WILL_DIE3,10,NULL,NULL,&s_willdie6}; statetype s_willdie6 = {false,SPR_WILL_DEAD,20,NULL,NULL,&s_willdie6}; statetype s_willshoot1 = {false,SPR_WILL_SHOOT1,30,NULL,NULL,&s_willshoot2}; statetype s_willshoot2 = {false,SPR_WILL_SHOOT2,10,NULL,(statefunc)T_Launch,&s_willshoot3}; statetype s_willshoot3 = {false,SPR_WILL_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_willshoot4}; statetype s_willshoot4 = {false,SPR_WILL_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_willshoot5}; statetype s_willshoot5 = {false,SPR_WILL_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_willshoot6}; statetype s_willshoot6 = {false,SPR_WILL_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_willchase1}; /* =============== = = SpawnWill = =============== */ void SpawnWill (int tilex, int tiley) { if (SoundBlasterPresent && DigiMode != sds_Off) s_willdie2.tictime = 70; SpawnNewObj (tilex,tiley,&s_willstand); newobj->obclass = willobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_will]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* ================ = = T_Will = ================ */ void T_Will (objtype *ob) { int32_t move; int dx,dy,dist; boolean dodge; dodge = false; dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; if ( (unsigned) US_RndT() < (tics<<3) && objfreelist) { // // go into attack frame // if (ob->obclass == willobj) NewState (ob,&s_willshoot1); else if (ob->obclass == angelobj) NewState (ob,&s_angelshoot1); else NewState (ob,&s_deathshoot1); return; } dodge = true; } else ob->hidden = true; if (ob->dir == nodir) { if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open TryWalk(ob); } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; if (dist <4) SelectRunDir (ob); else if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } // // death // extern statetype s_deathstand; extern statetype s_deathchase1; extern statetype s_deathchase1s; extern statetype s_deathchase2; extern statetype s_deathchase3; extern statetype s_deathchase3s; extern statetype s_deathchase4; extern statetype s_deathdie1; extern statetype s_deathdie2; extern statetype s_deathdie3; extern statetype s_deathdie4; extern statetype s_deathdie5; extern statetype s_deathdie6; extern statetype s_deathdie7; extern statetype s_deathdie8; extern statetype s_deathdie9; extern statetype s_deathshoot1; extern statetype s_deathshoot2; extern statetype s_deathshoot3; extern statetype s_deathshoot4; extern statetype s_deathshoot5; statetype s_deathstand = {false,SPR_DEATH_W1,0,(statefunc)T_Stand,NULL,&s_deathstand}; statetype s_deathchase1 = {false,SPR_DEATH_W1,10,(statefunc)T_Will,NULL,&s_deathchase1s}; statetype s_deathchase1s = {false,SPR_DEATH_W1,3,NULL,NULL,&s_deathchase2}; statetype s_deathchase2 = {false,SPR_DEATH_W2,8,(statefunc)T_Will,NULL,&s_deathchase3}; statetype s_deathchase3 = {false,SPR_DEATH_W3,10,(statefunc)T_Will,NULL,&s_deathchase3s}; statetype s_deathchase3s = {false,SPR_DEATH_W3,3,NULL,NULL,&s_deathchase4}; statetype s_deathchase4 = {false,SPR_DEATH_W4,8,(statefunc)T_Will,NULL,&s_deathchase1}; statetype s_deathdeathcam = {false,SPR_DEATH_W1,1,NULL,NULL,&s_deathdie1}; statetype s_deathdie1 = {false,SPR_DEATH_W1,1,NULL,(statefunc)A_DeathScream,&s_deathdie2}; statetype s_deathdie2 = {false,SPR_DEATH_W1,10,NULL,NULL,&s_deathdie3}; statetype s_deathdie3 = {false,SPR_DEATH_DIE1,10,NULL,NULL,&s_deathdie4}; statetype s_deathdie4 = {false,SPR_DEATH_DIE2,10,NULL,NULL,&s_deathdie5}; statetype s_deathdie5 = {false,SPR_DEATH_DIE3,10,NULL,NULL,&s_deathdie6}; statetype s_deathdie6 = {false,SPR_DEATH_DIE4,10,NULL,NULL,&s_deathdie7}; statetype s_deathdie7 = {false,SPR_DEATH_DIE5,10,NULL,NULL,&s_deathdie8}; statetype s_deathdie8 = {false,SPR_DEATH_DIE6,10,NULL,NULL,&s_deathdie9}; statetype s_deathdie9 = {false,SPR_DEATH_DEAD,0,NULL,NULL,&s_deathdie9}; statetype s_deathshoot1 = {false,SPR_DEATH_SHOOT1,30,NULL,NULL,&s_deathshoot2}; statetype s_deathshoot2 = {false,SPR_DEATH_SHOOT2,10,NULL,(statefunc)T_Launch,&s_deathshoot3}; statetype s_deathshoot3 = {false,SPR_DEATH_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_deathshoot4}; statetype s_deathshoot4 = {false,SPR_DEATH_SHOOT3,10,NULL,(statefunc)T_Launch,&s_deathshoot5}; statetype s_deathshoot5 = {false,SPR_DEATH_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_deathchase1}; /* =============== = = SpawnDeath = =============== */ void SpawnDeath (int tilex, int tiley) { if (SoundBlasterPresent && DigiMode != sds_Off) s_deathdie2.tictime = 105; SpawnNewObj (tilex,tiley,&s_deathstand); newobj->obclass = deathobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_death]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = T_Launch = =============== */ void T_Launch (objtype *ob) { int32_t deltax,deltay; float angle; int iangle; deltax = player->x - ob->x; deltay = ob->y - player->y; angle = (float) atan2 ((float) deltay, (float) deltax); if (angle<0) angle = (float) (M_PI*2+angle); iangle = (int) (angle/(M_PI*2)*ANGLES); if (ob->obclass == deathobj) { T_Shoot (ob); if (ob->state == &s_deathshoot2) { iangle-=4; if (iangle<0) iangle+=ANGLES; } else { iangle+=4; if (iangle>=ANGLES) iangle-=ANGLES; } } GetNewActor (); newobj->state = &s_rocket; newobj->ticcount = 1; newobj->tilex = ob->tilex; newobj->tiley = ob->tiley; newobj->x = ob->x; newobj->y = ob->y; newobj->obclass = rocketobj; switch(ob->obclass) { case deathobj: newobj->state = &s_hrocket; newobj->obclass = hrocketobj; PlaySoundLocActor (KNIGHTMISSILESND,newobj); break; case angelobj: newobj->state = &s_spark1; newobj->obclass = sparkobj; PlaySoundLocActor (ANGELFIRESND,newobj); break; default: PlaySoundLocActor (MISSILEFIRESND,newobj); } newobj->dir = nodir; newobj->angle = iangle; newobj->speed = 0x2000l; newobj->flags = FL_NEVERMARK; newobj->active = ac_yes; } // // angel // void A_Relaunch (objtype *ob); void A_Victory (objtype *ob); void A_StartAttack (objtype *ob); void A_Breathing (objtype *ob); extern statetype s_angelstand; extern statetype s_angelchase1; extern statetype s_angelchase1s; extern statetype s_angelchase2; extern statetype s_angelchase3; extern statetype s_angelchase3s; extern statetype s_angelchase4; extern statetype s_angeldie1; extern statetype s_angeldie11; extern statetype s_angeldie2; extern statetype s_angeldie3; extern statetype s_angeldie4; extern statetype s_angeldie5; extern statetype s_angeldie6; extern statetype s_angeldie7; extern statetype s_angeldie8; extern statetype s_angeldie9; extern statetype s_angelshoot1; extern statetype s_angelshoot2; extern statetype s_angelshoot3; extern statetype s_angelshoot4; extern statetype s_angelshoot5; extern statetype s_angelshoot6; extern statetype s_angeltired; extern statetype s_angeltired2; extern statetype s_angeltired3; extern statetype s_angeltired4; extern statetype s_angeltired5; extern statetype s_angeltired6; extern statetype s_angeltired7; extern statetype s_spark1; extern statetype s_spark2; extern statetype s_spark3; extern statetype s_spark4; statetype s_angelstand = {false,SPR_ANGEL_W1,0,(statefunc)T_Stand,NULL,&s_angelstand}; statetype s_angelchase1 = {false,SPR_ANGEL_W1,10,(statefunc)T_Will,NULL,&s_angelchase1s}; statetype s_angelchase1s = {false,SPR_ANGEL_W1,3,NULL,NULL,&s_angelchase2}; statetype s_angelchase2 = {false,SPR_ANGEL_W2,8,(statefunc)T_Will,NULL,&s_angelchase3}; statetype s_angelchase3 = {false,SPR_ANGEL_W3,10,(statefunc)T_Will,NULL,&s_angelchase3s}; statetype s_angelchase3s = {false,SPR_ANGEL_W3,3,NULL,NULL,&s_angelchase4}; statetype s_angelchase4 = {false,SPR_ANGEL_W4,8,(statefunc)T_Will,NULL,&s_angelchase1}; statetype s_angeldie1 = {false,SPR_ANGEL_W1,1,NULL,(statefunc)A_DeathScream,&s_angeldie11}; statetype s_angeldie11 = {false,SPR_ANGEL_W1,1,NULL,NULL,&s_angeldie2}; statetype s_angeldie2 = {false,SPR_ANGEL_DIE1,10,NULL,(statefunc)A_Slurpie,&s_angeldie3}; statetype s_angeldie3 = {false,SPR_ANGEL_DIE2,10,NULL,NULL,&s_angeldie4}; statetype s_angeldie4 = {false,SPR_ANGEL_DIE3,10,NULL,NULL,&s_angeldie5}; statetype s_angeldie5 = {false,SPR_ANGEL_DIE4,10,NULL,NULL,&s_angeldie6}; statetype s_angeldie6 = {false,SPR_ANGEL_DIE5,10,NULL,NULL,&s_angeldie7}; statetype s_angeldie7 = {false,SPR_ANGEL_DIE6,10,NULL,NULL,&s_angeldie8}; statetype s_angeldie8 = {false,SPR_ANGEL_DIE7,10,NULL,NULL,&s_angeldie9}; statetype s_angeldie9 = {false,SPR_ANGEL_DEAD,130,NULL,(statefunc)A_Victory,&s_angeldie9}; statetype s_angelshoot1 = {false,SPR_ANGEL_SHOOT1,10,NULL,(statefunc)A_StartAttack,&s_angelshoot2}; statetype s_angelshoot2 = {false,SPR_ANGEL_SHOOT2,20,NULL,(statefunc)T_Launch,&s_angelshoot3}; statetype s_angelshoot3 = {false,SPR_ANGEL_SHOOT1,10,NULL,(statefunc)A_Relaunch,&s_angelshoot2}; statetype s_angeltired = {false,SPR_ANGEL_TIRED1,40,NULL,(statefunc)A_Breathing,&s_angeltired2}; statetype s_angeltired2 = {false,SPR_ANGEL_TIRED2,40,NULL,NULL,&s_angeltired3}; statetype s_angeltired3 = {false,SPR_ANGEL_TIRED1,40,NULL,(statefunc)A_Breathing,&s_angeltired4}; statetype s_angeltired4 = {false,SPR_ANGEL_TIRED2,40,NULL,NULL,&s_angeltired5}; statetype s_angeltired5 = {false,SPR_ANGEL_TIRED1,40,NULL,(statefunc)A_Breathing,&s_angeltired6}; statetype s_angeltired6 = {false,SPR_ANGEL_TIRED2,40,NULL,NULL,&s_angeltired7}; statetype s_angeltired7 = {false,SPR_ANGEL_TIRED1,40,NULL,(statefunc)A_Breathing,&s_angelchase1}; statetype s_spark1 = {false,SPR_SPARK1,6,(statefunc)T_Projectile,NULL,&s_spark2}; statetype s_spark2 = {false,SPR_SPARK2,6,(statefunc)T_Projectile,NULL,&s_spark3}; statetype s_spark3 = {false,SPR_SPARK3,6,(statefunc)T_Projectile,NULL,&s_spark4}; statetype s_spark4 = {false,SPR_SPARK4,6,(statefunc)T_Projectile,NULL,&s_spark1}; void A_Slurpie (objtype *) { SD_PlaySound(SLURPIESND); } void A_Breathing (objtype *) { SD_PlaySound(ANGELTIREDSND); } /* =============== = = SpawnAngel = =============== */ void SpawnAngel (int tilex, int tiley) { if (SoundBlasterPresent && DigiMode != sds_Off) s_angeldie11.tictime = 105; SpawnNewObj (tilex,tiley,&s_angelstand); newobj->obclass = angelobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_angel]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* ================= = = A_Victory = ================= */ void A_Victory (objtype *) { playstate = ex_victorious; } /* ================= = = A_StartAttack = ================= */ void A_StartAttack (objtype *ob) { ob->temp1 = 0; } /* ================= = = A_Relaunch = ================= */ void A_Relaunch (objtype *ob) { if (++ob->temp1 == 3) { NewState (ob,&s_angeltired); return; } if (US_RndT()&1) { NewState (ob,&s_angelchase1); return; } } // // spectre // void T_SpectreWait (objtype *ob); void A_Dormant (objtype *ob); extern statetype s_spectrewait1; extern statetype s_spectrewait2; extern statetype s_spectrewait3; extern statetype s_spectrewait4; extern statetype s_spectrechase1; extern statetype s_spectrechase2; extern statetype s_spectrechase3; extern statetype s_spectrechase4; extern statetype s_spectredie1; extern statetype s_spectredie2; extern statetype s_spectredie3; extern statetype s_spectredie4; extern statetype s_spectrewake; statetype s_spectrewait1 = {false,SPR_SPECTRE_W1,10,(statefunc)T_Stand,NULL,&s_spectrewait2}; statetype s_spectrewait2 = {false,SPR_SPECTRE_W2,10,(statefunc)T_Stand,NULL,&s_spectrewait3}; statetype s_spectrewait3 = {false,SPR_SPECTRE_W3,10,(statefunc)T_Stand,NULL,&s_spectrewait4}; statetype s_spectrewait4 = {false,SPR_SPECTRE_W4,10,(statefunc)T_Stand,NULL,&s_spectrewait1}; statetype s_spectrechase1 = {false,SPR_SPECTRE_W1,10,(statefunc)T_Ghosts,NULL,&s_spectrechase2}; statetype s_spectrechase2 = {false,SPR_SPECTRE_W2,10,(statefunc)T_Ghosts,NULL,&s_spectrechase3}; statetype s_spectrechase3 = {false,SPR_SPECTRE_W3,10,(statefunc)T_Ghosts,NULL,&s_spectrechase4}; statetype s_spectrechase4 = {false,SPR_SPECTRE_W4,10,(statefunc)T_Ghosts,NULL,&s_spectrechase1}; statetype s_spectredie1 = {false,SPR_SPECTRE_F1,10,NULL,NULL,&s_spectredie2}; statetype s_spectredie2 = {false,SPR_SPECTRE_F2,10,NULL,NULL,&s_spectredie3}; statetype s_spectredie3 = {false,SPR_SPECTRE_F3,10,NULL,NULL,&s_spectredie4}; statetype s_spectredie4 = {false,SPR_SPECTRE_F4,300,NULL,NULL,&s_spectrewake}; statetype s_spectrewake = {false,SPR_SPECTRE_F4,10,NULL,(statefunc)A_Dormant,&s_spectrewake}; /* =============== = = SpawnSpectre = =============== */ void SpawnSpectre (int tilex, int tiley) { SpawnNewObj (tilex,tiley,&s_spectrewait1); newobj->obclass = spectreobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_spectre]; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH|FL_BONUS; // |FL_NEVERMARK|FL_NONMARK; if (!loadedgame) gamestate.killtotal++; } /* =============== = = A_Dormant = =============== */ void A_Dormant (objtype *ob) { int32_t deltax,deltay; int xl,xh,yl,yh; int x,y; uintptr_t tile; deltax = ob->x - player->x; if (deltax < -MINACTORDIST || deltax > MINACTORDIST) goto moveok; deltay = ob->y - player->y; if (deltay < -MINACTORDIST || deltay > MINACTORDIST) goto moveok; return; moveok: xl = (ob->x-MINDIST) >> TILESHIFT; xh = (ob->x+MINDIST) >> TILESHIFT; yl = (ob->y-MINDIST) >> TILESHIFT; yh = (ob->y+MINDIST) >> TILESHIFT; for (y=yl ; y<=yh ; y++) for (x=xl ; x<=xh ; x++) { tile = (uintptr_t)actorat[x][y]; if (!tile) continue; if (!ISPOINTER(tile)) return; if (((objtype *)tile)->flags&FL_SHOOTABLE) return; } ob->flags |= FL_AMBUSH | FL_SHOOTABLE; ob->flags &= ~FL_ATTACKMODE; ob->flags &= ~FL_NONMARK; // stuck bugfix 1 ob->dir = nodir; NewState (ob,&s_spectrewait1); } #endif /* ============================================================================= SCHABBS / GIFT / FAT ============================================================================= */ #ifndef SPEAR /* =============== = = SpawnGhosts = =============== */ void SpawnGhosts (int which, int tilex, int tiley) { switch(which) { case en_blinky: SpawnNewObj (tilex,tiley,&s_blinkychase1); break; case en_clyde: SpawnNewObj (tilex,tiley,&s_clydechase1); break; case en_pinky: SpawnNewObj (tilex,tiley,&s_pinkychase1); break; case en_inky: SpawnNewObj (tilex,tiley,&s_inkychase1); break; } newobj->obclass = ghostobj; newobj->speed = SPDDOG; newobj->dir = east; newobj->flags |= FL_AMBUSH; if (!loadedgame) { gamestate.killtotal++; gamestate.killcount++; } } void T_Gift (objtype *ob); void T_GiftThrow (objtype *ob); void T_Fat (objtype *ob); void T_FatThrow (objtype *ob); // // schabb // extern statetype s_schabbstand; extern statetype s_schabbchase1; extern statetype s_schabbchase1s; extern statetype s_schabbchase2; extern statetype s_schabbchase3; extern statetype s_schabbchase3s; extern statetype s_schabbchase4; extern statetype s_schabbdie1; extern statetype s_schabbdie2; extern statetype s_schabbdie3; extern statetype s_schabbdie4; extern statetype s_schabbdie5; extern statetype s_schabbdie6; extern statetype s_schabbshoot1; extern statetype s_schabbshoot2; extern statetype s_needle1; extern statetype s_needle2; extern statetype s_needle3; extern statetype s_needle4; extern statetype s_schabbdeathcam; statetype s_schabbstand = {false,SPR_SCHABB_W1,0,(statefunc)T_Stand,NULL,&s_schabbstand}; statetype s_schabbchase1 = {false,SPR_SCHABB_W1,10,(statefunc)T_Schabb,NULL,&s_schabbchase1s}; statetype s_schabbchase1s = {false,SPR_SCHABB_W1,3,NULL,NULL,&s_schabbchase2}; statetype s_schabbchase2 = {false,SPR_SCHABB_W2,8,(statefunc)T_Schabb,NULL,&s_schabbchase3}; statetype s_schabbchase3 = {false,SPR_SCHABB_W3,10,(statefunc)T_Schabb,NULL,&s_schabbchase3s}; statetype s_schabbchase3s = {false,SPR_SCHABB_W3,3,NULL,NULL,&s_schabbchase4}; statetype s_schabbchase4 = {false,SPR_SCHABB_W4,8,(statefunc)T_Schabb,NULL,&s_schabbchase1}; statetype s_schabbdeathcam = {false,SPR_SCHABB_W1,1,NULL,NULL,&s_schabbdie1}; statetype s_schabbdie1 = {false,SPR_SCHABB_W1,10,NULL,(statefunc)A_DeathScream,&s_schabbdie2}; statetype s_schabbdie2 = {false,SPR_SCHABB_W1,10,NULL,NULL,&s_schabbdie3}; statetype s_schabbdie3 = {false,SPR_SCHABB_DIE1,10,NULL,NULL,&s_schabbdie4}; statetype s_schabbdie4 = {false,SPR_SCHABB_DIE2,10,NULL,NULL,&s_schabbdie5}; statetype s_schabbdie5 = {false,SPR_SCHABB_DIE3,10,NULL,NULL,&s_schabbdie6}; statetype s_schabbdie6 = {false,SPR_SCHABB_DEAD,20,NULL,(statefunc)A_StartDeathCam,&s_schabbdie6}; statetype s_schabbshoot1 = {false,SPR_SCHABB_SHOOT1,30,NULL,NULL,&s_schabbshoot2}; statetype s_schabbshoot2 = {false,SPR_SCHABB_SHOOT2,10,NULL,(statefunc)T_SchabbThrow,&s_schabbchase1}; statetype s_needle1 = {false,SPR_HYPO1,6,(statefunc)T_Projectile,NULL,&s_needle2}; statetype s_needle2 = {false,SPR_HYPO2,6,(statefunc)T_Projectile,NULL,&s_needle3}; statetype s_needle3 = {false,SPR_HYPO3,6,(statefunc)T_Projectile,NULL,&s_needle4}; statetype s_needle4 = {false,SPR_HYPO4,6,(statefunc)T_Projectile,NULL,&s_needle1}; // // gift // extern statetype s_giftstand; extern statetype s_giftchase1; extern statetype s_giftchase1s; extern statetype s_giftchase2; extern statetype s_giftchase3; extern statetype s_giftchase3s; extern statetype s_giftchase4; extern statetype s_giftdie1; extern statetype s_giftdie2; extern statetype s_giftdie3; extern statetype s_giftdie4; extern statetype s_giftdie5; extern statetype s_giftdie6; extern statetype s_giftshoot1; extern statetype s_giftshoot2; extern statetype s_needle1; extern statetype s_needle2; extern statetype s_needle3; extern statetype s_needle4; extern statetype s_giftdeathcam; extern statetype s_boom1; extern statetype s_boom2; extern statetype s_boom3; statetype s_giftstand = {false,SPR_GIFT_W1,0,(statefunc)T_Stand,NULL,&s_giftstand}; statetype s_giftchase1 = {false,SPR_GIFT_W1,10,(statefunc)T_Gift,NULL,&s_giftchase1s}; statetype s_giftchase1s = {false,SPR_GIFT_W1,3,NULL,NULL,&s_giftchase2}; statetype s_giftchase2 = {false,SPR_GIFT_W2,8,(statefunc)T_Gift,NULL,&s_giftchase3}; statetype s_giftchase3 = {false,SPR_GIFT_W3,10,(statefunc)T_Gift,NULL,&s_giftchase3s}; statetype s_giftchase3s = {false,SPR_GIFT_W3,3,NULL,NULL,&s_giftchase4}; statetype s_giftchase4 = {false,SPR_GIFT_W4,8,(statefunc)T_Gift,NULL,&s_giftchase1}; statetype s_giftdeathcam = {false,SPR_GIFT_W1,1,NULL,NULL,&s_giftdie1}; statetype s_giftdie1 = {false,SPR_GIFT_W1,1,NULL,(statefunc)A_DeathScream,&s_giftdie2}; statetype s_giftdie2 = {false,SPR_GIFT_W1,10,NULL,NULL,&s_giftdie3}; statetype s_giftdie3 = {false,SPR_GIFT_DIE1,10,NULL,NULL,&s_giftdie4}; statetype s_giftdie4 = {false,SPR_GIFT_DIE2,10,NULL,NULL,&s_giftdie5}; statetype s_giftdie5 = {false,SPR_GIFT_DIE3,10,NULL,NULL,&s_giftdie6}; statetype s_giftdie6 = {false,SPR_GIFT_DEAD,20,NULL,(statefunc)A_StartDeathCam,&s_giftdie6}; statetype s_giftshoot1 = {false,SPR_GIFT_SHOOT1,30,NULL,NULL,&s_giftshoot2}; statetype s_giftshoot2 = {false,SPR_GIFT_SHOOT2,10,NULL,(statefunc)T_GiftThrow,&s_giftchase1}; // // fat // extern statetype s_fatstand; extern statetype s_fatchase1; extern statetype s_fatchase1s; extern statetype s_fatchase2; extern statetype s_fatchase3; extern statetype s_fatchase3s; extern statetype s_fatchase4; extern statetype s_fatdie1; extern statetype s_fatdie2; extern statetype s_fatdie3; extern statetype s_fatdie4; extern statetype s_fatdie5; extern statetype s_fatdie6; extern statetype s_fatshoot1; extern statetype s_fatshoot2; extern statetype s_fatshoot3; extern statetype s_fatshoot4; extern statetype s_fatshoot5; extern statetype s_fatshoot6; extern statetype s_needle1; extern statetype s_needle2; extern statetype s_needle3; extern statetype s_needle4; extern statetype s_fatdeathcam; statetype s_fatstand = {false,SPR_FAT_W1,0,(statefunc)T_Stand,NULL,&s_fatstand}; statetype s_fatchase1 = {false,SPR_FAT_W1,10,(statefunc)T_Fat,NULL,&s_fatchase1s}; statetype s_fatchase1s = {false,SPR_FAT_W1,3,NULL,NULL,&s_fatchase2}; statetype s_fatchase2 = {false,SPR_FAT_W2,8,(statefunc)T_Fat,NULL,&s_fatchase3}; statetype s_fatchase3 = {false,SPR_FAT_W3,10,(statefunc)T_Fat,NULL,&s_fatchase3s}; statetype s_fatchase3s = {false,SPR_FAT_W3,3,NULL,NULL,&s_fatchase4}; statetype s_fatchase4 = {false,SPR_FAT_W4,8,(statefunc)T_Fat,NULL,&s_fatchase1}; statetype s_fatdeathcam = {false,SPR_FAT_W1,1,NULL,NULL,&s_fatdie1}; statetype s_fatdie1 = {false,SPR_FAT_W1,1,NULL,(statefunc)A_DeathScream,&s_fatdie2}; statetype s_fatdie2 = {false,SPR_FAT_W1,10,NULL,NULL,&s_fatdie3}; statetype s_fatdie3 = {false,SPR_FAT_DIE1,10,NULL,NULL,&s_fatdie4}; statetype s_fatdie4 = {false,SPR_FAT_DIE2,10,NULL,NULL,&s_fatdie5}; statetype s_fatdie5 = {false,SPR_FAT_DIE3,10,NULL,NULL,&s_fatdie6}; statetype s_fatdie6 = {false,SPR_FAT_DEAD,20,NULL,(statefunc)A_StartDeathCam,&s_fatdie6}; statetype s_fatshoot1 = {false,SPR_FAT_SHOOT1,30,NULL,NULL,&s_fatshoot2}; statetype s_fatshoot2 = {false,SPR_FAT_SHOOT2,10,NULL,(statefunc)T_GiftThrow,&s_fatshoot3}; statetype s_fatshoot3 = {false,SPR_FAT_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_fatshoot4}; statetype s_fatshoot4 = {false,SPR_FAT_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_fatshoot5}; statetype s_fatshoot5 = {false,SPR_FAT_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_fatshoot6}; statetype s_fatshoot6 = {false,SPR_FAT_SHOOT4,10,NULL,(statefunc)T_Shoot,&s_fatchase1}; /* =============== = = SpawnSchabbs = =============== */ void SpawnSchabbs (int tilex, int tiley) { if (DigiMode != sds_Off) s_schabbdie2.tictime = 140; else s_schabbdie2.tictime = 5; SpawnNewObj (tilex,tiley,&s_schabbstand); newobj->speed = SPDPATROL; newobj->obclass = schabbobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_schabbs]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = SpawnGift = =============== */ void SpawnGift (int tilex, int tiley) { if (DigiMode != sds_Off) s_giftdie2.tictime = 140; else s_giftdie2.tictime = 5; SpawnNewObj (tilex,tiley,&s_giftstand); newobj->speed = SPDPATROL; newobj->obclass = giftobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_gift]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = SpawnFat = =============== */ void SpawnFat (int tilex, int tiley) { if (DigiMode != sds_Off) s_fatdie2.tictime = 140; else s_fatdie2.tictime = 5; SpawnNewObj (tilex,tiley,&s_fatstand); newobj->speed = SPDPATROL; newobj->obclass = fatobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_fat]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* ================= = = T_SchabbThrow = ================= */ void T_SchabbThrow (objtype *ob) { int32_t deltax,deltay; float angle; int iangle; deltax = player->x - ob->x; deltay = ob->y - player->y; angle = (float) atan2((float) deltay, (float) deltax); if (angle<0) angle = (float) (M_PI*2+angle); iangle = (int) (angle/(M_PI*2)*ANGLES); GetNewActor (); newobj->state = &s_needle1; newobj->ticcount = 1; newobj->tilex = ob->tilex; newobj->tiley = ob->tiley; newobj->x = ob->x; newobj->y = ob->y; newobj->obclass = needleobj; newobj->dir = nodir; newobj->angle = iangle; newobj->speed = 0x2000l; newobj->flags = FL_NEVERMARK; newobj->active = ac_yes; PlaySoundLocActor (SCHABBSTHROWSND,newobj); } /* ================= = = T_GiftThrow = ================= */ void T_GiftThrow (objtype *ob) { int32_t deltax,deltay; float angle; int iangle; deltax = player->x - ob->x; deltay = ob->y - player->y; angle = (float) atan2((float) deltay, (float) deltax); if (angle<0) angle = (float) (M_PI*2+angle); iangle = (int) (angle/(M_PI*2)*ANGLES); GetNewActor (); newobj->state = &s_rocket; newobj->ticcount = 1; newobj->tilex = ob->tilex; newobj->tiley = ob->tiley; newobj->x = ob->x; newobj->y = ob->y; newobj->obclass = rocketobj; newobj->dir = nodir; newobj->angle = iangle; newobj->speed = 0x2000l; newobj->flags = FL_NEVERMARK; newobj->active = ac_yes; #ifndef APOGEE_1_0 // T_GiftThrow will never be called in shareware v1.0 PlaySoundLocActor (MISSILEFIRESND,newobj); #endif } /* ================= = = T_Schabb = ================= */ void T_Schabb (objtype *ob) { int32_t move; int dx,dy,dist; boolean dodge; dodge = false; dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; if ( (unsigned) US_RndT() < (tics<<3) && objfreelist) { // // go into attack frame // NewState (ob,&s_schabbshoot1); return; } dodge = true; } else ob->hidden = true; if (ob->dir == nodir) { if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open TryWalk(ob); } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; if (dist <4) SelectRunDir (ob); else if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ================= = = T_Gift = ================= */ void T_Gift (objtype *ob) { int32_t move; int dx,dy,dist; boolean dodge; dodge = false; dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; if ( (unsigned) US_RndT() < (tics<<3) && objfreelist) { // // go into attack frame // NewState (ob,&s_giftshoot1); return; } dodge = true; } else ob->hidden = true; if (ob->dir == nodir) { if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open TryWalk(ob); } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; if (dist <4) SelectRunDir (ob); else if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ================= = = T_Fat = ================= */ void T_Fat (objtype *ob) { int32_t move; int dx,dy,dist; boolean dodge; dodge = false; dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; if ( (unsigned) US_RndT() < (tics<<3) && objfreelist) { // // go into attack frame // NewState (ob,&s_fatshoot1); return; } dodge = true; } else ob->hidden = true; if (ob->dir == nodir) { if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open TryWalk(ob); } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; if (dist <4) SelectRunDir (ob); else if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ============================================================================= HITLERS ============================================================================= */ // // fake // extern statetype s_fakestand; extern statetype s_fakechase1; extern statetype s_fakechase1s; extern statetype s_fakechase2; extern statetype s_fakechase3; extern statetype s_fakechase3s; extern statetype s_fakechase4; extern statetype s_fakedie1; extern statetype s_fakedie2; extern statetype s_fakedie3; extern statetype s_fakedie4; extern statetype s_fakedie5; extern statetype s_fakedie6; extern statetype s_fakeshoot1; extern statetype s_fakeshoot2; extern statetype s_fakeshoot3; extern statetype s_fakeshoot4; extern statetype s_fakeshoot5; extern statetype s_fakeshoot6; extern statetype s_fakeshoot7; extern statetype s_fakeshoot8; extern statetype s_fakeshoot9; extern statetype s_fire1; extern statetype s_fire2; statetype s_fakestand = {false,SPR_FAKE_W1,0,(statefunc)T_Stand,NULL,&s_fakestand}; statetype s_fakechase1 = {false,SPR_FAKE_W1,10,(statefunc)T_Fake,NULL,&s_fakechase1s}; statetype s_fakechase1s = {false,SPR_FAKE_W1,3,NULL,NULL,&s_fakechase2}; statetype s_fakechase2 = {false,SPR_FAKE_W2,8,(statefunc)T_Fake,NULL,&s_fakechase3}; statetype s_fakechase3 = {false,SPR_FAKE_W3,10,(statefunc)T_Fake,NULL,&s_fakechase3s}; statetype s_fakechase3s = {false,SPR_FAKE_W3,3,NULL,NULL,&s_fakechase4}; statetype s_fakechase4 = {false,SPR_FAKE_W4,8,(statefunc)T_Fake,NULL,&s_fakechase1}; statetype s_fakedie1 = {false,SPR_FAKE_DIE1,10,NULL,(statefunc)A_DeathScream,&s_fakedie2}; statetype s_fakedie2 = {false,SPR_FAKE_DIE2,10,NULL,NULL,&s_fakedie3}; statetype s_fakedie3 = {false,SPR_FAKE_DIE3,10,NULL,NULL,&s_fakedie4}; statetype s_fakedie4 = {false,SPR_FAKE_DIE4,10,NULL,NULL,&s_fakedie5}; statetype s_fakedie5 = {false,SPR_FAKE_DIE5,10,NULL,NULL,&s_fakedie6}; statetype s_fakedie6 = {false,SPR_FAKE_DEAD,0,NULL,NULL,&s_fakedie6}; statetype s_fakeshoot1 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot2}; statetype s_fakeshoot2 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot3}; statetype s_fakeshoot3 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot4}; statetype s_fakeshoot4 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot5}; statetype s_fakeshoot5 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot6}; statetype s_fakeshoot6 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot7}; statetype s_fakeshoot7 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot8}; statetype s_fakeshoot8 = {false,SPR_FAKE_SHOOT,8,NULL,(statefunc)T_FakeFire,&s_fakeshoot9}; statetype s_fakeshoot9 = {false,SPR_FAKE_SHOOT,8,NULL,NULL,&s_fakechase1}; statetype s_fire1 = {false,SPR_FIRE1,6,NULL,(statefunc)T_Projectile,&s_fire2}; statetype s_fire2 = {false,SPR_FIRE2,6,NULL,(statefunc)T_Projectile,&s_fire1}; // // hitler // extern statetype s_mechachase1; extern statetype s_mechachase1s; extern statetype s_mechachase2; extern statetype s_mechachase3; extern statetype s_mechachase3s; extern statetype s_mechachase4; extern statetype s_mechadie1; extern statetype s_mechadie2; extern statetype s_mechadie3; extern statetype s_mechadie4; extern statetype s_mechashoot1; extern statetype s_mechashoot2; extern statetype s_mechashoot3; extern statetype s_mechashoot4; extern statetype s_mechashoot5; extern statetype s_mechashoot6; extern statetype s_hitlerchase1; extern statetype s_hitlerchase1s; extern statetype s_hitlerchase2; extern statetype s_hitlerchase3; extern statetype s_hitlerchase3s; extern statetype s_hitlerchase4; extern statetype s_hitlerdie1; extern statetype s_hitlerdie2; extern statetype s_hitlerdie3; extern statetype s_hitlerdie4; extern statetype s_hitlerdie5; extern statetype s_hitlerdie6; extern statetype s_hitlerdie7; extern statetype s_hitlerdie8; extern statetype s_hitlerdie9; extern statetype s_hitlerdie10; extern statetype s_hitlershoot1; extern statetype s_hitlershoot2; extern statetype s_hitlershoot3; extern statetype s_hitlershoot4; extern statetype s_hitlershoot5; extern statetype s_hitlershoot6; extern statetype s_hitlerdeathcam; statetype s_mechastand = {false,SPR_MECHA_W1,0,(statefunc)T_Stand,NULL,&s_mechastand}; statetype s_mechachase1 = {false,SPR_MECHA_W1,10,(statefunc)T_Chase,(statefunc)A_MechaSound,&s_mechachase1s}; statetype s_mechachase1s = {false,SPR_MECHA_W1,6,NULL,NULL,&s_mechachase2}; statetype s_mechachase2 = {false,SPR_MECHA_W2,8,(statefunc)T_Chase,NULL,&s_mechachase3}; statetype s_mechachase3 = {false,SPR_MECHA_W3,10,(statefunc)T_Chase,(statefunc)A_MechaSound,&s_mechachase3s}; statetype s_mechachase3s = {false,SPR_MECHA_W3,6,NULL,NULL,&s_mechachase4}; statetype s_mechachase4 = {false,SPR_MECHA_W4,8,(statefunc)T_Chase,NULL,&s_mechachase1}; statetype s_mechadie1 = {false,SPR_MECHA_DIE1,10,NULL,(statefunc)A_DeathScream,&s_mechadie2}; statetype s_mechadie2 = {false,SPR_MECHA_DIE2,10,NULL,NULL,&s_mechadie3}; statetype s_mechadie3 = {false,SPR_MECHA_DIE3,10,NULL,(statefunc)A_HitlerMorph,&s_mechadie4}; statetype s_mechadie4 = {false,SPR_MECHA_DEAD,0,NULL,NULL,&s_mechadie4}; statetype s_mechashoot1 = {false,SPR_MECHA_SHOOT1,30,NULL,NULL,&s_mechashoot2}; statetype s_mechashoot2 = {false,SPR_MECHA_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_mechashoot3}; statetype s_mechashoot3 = {false,SPR_MECHA_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_mechashoot4}; statetype s_mechashoot4 = {false,SPR_MECHA_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_mechashoot5}; statetype s_mechashoot5 = {false,SPR_MECHA_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_mechashoot6}; statetype s_mechashoot6 = {false,SPR_MECHA_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_mechachase1}; statetype s_hitlerchase1 = {false,SPR_HITLER_W1,6,(statefunc)T_Chase,NULL,&s_hitlerchase1s}; statetype s_hitlerchase1s = {false,SPR_HITLER_W1,4,NULL,NULL,&s_hitlerchase2}; statetype s_hitlerchase2 = {false,SPR_HITLER_W2,2,(statefunc)T_Chase,NULL,&s_hitlerchase3}; statetype s_hitlerchase3 = {false,SPR_HITLER_W3,6,(statefunc)T_Chase,NULL,&s_hitlerchase3s}; statetype s_hitlerchase3s = {false,SPR_HITLER_W3,4,NULL,NULL,&s_hitlerchase4}; statetype s_hitlerchase4 = {false,SPR_HITLER_W4,2,(statefunc)T_Chase,NULL,&s_hitlerchase1}; statetype s_hitlerdeathcam = {false,SPR_HITLER_W1,10,NULL,NULL,&s_hitlerdie1}; statetype s_hitlerdie1 = {false,SPR_HITLER_W1,1,NULL,(statefunc)A_DeathScream,&s_hitlerdie2}; statetype s_hitlerdie2 = {false,SPR_HITLER_W1,10,NULL,NULL,&s_hitlerdie3}; statetype s_hitlerdie3 = {false,SPR_HITLER_DIE1,10,NULL,(statefunc)A_Slurpie,&s_hitlerdie4}; statetype s_hitlerdie4 = {false,SPR_HITLER_DIE2,10,NULL,NULL,&s_hitlerdie5}; statetype s_hitlerdie5 = {false,SPR_HITLER_DIE3,10,NULL,NULL,&s_hitlerdie6}; statetype s_hitlerdie6 = {false,SPR_HITLER_DIE4,10,NULL,NULL,&s_hitlerdie7}; statetype s_hitlerdie7 = {false,SPR_HITLER_DIE5,10,NULL,NULL,&s_hitlerdie8}; statetype s_hitlerdie8 = {false,SPR_HITLER_DIE6,10,NULL,NULL,&s_hitlerdie9}; statetype s_hitlerdie9 = {false,SPR_HITLER_DIE7,10,NULL,NULL,&s_hitlerdie10}; statetype s_hitlerdie10 = {false,SPR_HITLER_DEAD,20,NULL,(statefunc)A_StartDeathCam,&s_hitlerdie10}; statetype s_hitlershoot1 = {false,SPR_HITLER_SHOOT1,30,NULL,NULL,&s_hitlershoot2}; statetype s_hitlershoot2 = {false,SPR_HITLER_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_hitlershoot3}; statetype s_hitlershoot3 = {false,SPR_HITLER_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_hitlershoot4}; statetype s_hitlershoot4 = {false,SPR_HITLER_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_hitlershoot5}; statetype s_hitlershoot5 = {false,SPR_HITLER_SHOOT3,10,NULL,(statefunc)T_Shoot,&s_hitlershoot6}; statetype s_hitlershoot6 = {false,SPR_HITLER_SHOOT2,10,NULL,(statefunc)T_Shoot,&s_hitlerchase1}; /* =============== = = SpawnFakeHitler = =============== */ void SpawnFakeHitler (int tilex, int tiley) { if (DigiMode != sds_Off) s_hitlerdie2.tictime = 140; else s_hitlerdie2.tictime = 5; SpawnNewObj (tilex,tiley,&s_fakestand); newobj->speed = SPDPATROL; newobj->obclass = fakeobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_fake]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = SpawnHitler = =============== */ void SpawnHitler (int tilex, int tiley) { if (DigiMode != sds_Off) s_hitlerdie2.tictime = 140; else s_hitlerdie2.tictime = 5; SpawnNewObj (tilex,tiley,&s_mechastand); newobj->speed = SPDPATROL; newobj->obclass = mechahitlerobj; newobj->hitpoints = starthitpoints[gamestate.difficulty][en_hitler]; newobj->dir = nodir; newobj->flags |= FL_SHOOTABLE|FL_AMBUSH; if (!loadedgame) gamestate.killtotal++; } /* =============== = = A_HitlerMorph = =============== */ void A_HitlerMorph (objtype *ob) { short hitpoints[4]={500,700,800,900}; SpawnNewObj (ob->tilex,ob->tiley,&s_hitlerchase1); newobj->speed = SPDPATROL*5; newobj->x = ob->x; newobj->y = ob->y; newobj->distance = ob->distance; newobj->dir = ob->dir; newobj->flags = ob->flags | FL_SHOOTABLE; newobj->flags &= ~FL_NONMARK; // hitler stuck with nodir fix newobj->obclass = realhitlerobj; newobj->hitpoints = hitpoints[gamestate.difficulty]; } //////////////////////////////////////////////////////// // // A_MechaSound // A_Slurpie // //////////////////////////////////////////////////////// void A_MechaSound (objtype *ob) { if (areabyplayer[ob->areanumber]) PlaySoundLocActor (MECHSTEPSND,ob); } void A_Slurpie (objtype *) { SD_PlaySound(SLURPIESND); } /* ================= = = T_FakeFire = ================= */ void T_FakeFire (objtype *ob) { int32_t deltax,deltay; float angle; int iangle; if (!objfreelist) // stop shooting if over MAXACTORS { NewState (ob,&s_fakechase1); return; } deltax = player->x - ob->x; deltay = ob->y - player->y; angle = (float) atan2((float) deltay, (float) deltax); if (angle<0) angle = (float)(M_PI*2+angle); iangle = (int) (angle/(M_PI*2)*ANGLES); GetNewActor (); newobj->state = &s_fire1; newobj->ticcount = 1; newobj->tilex = ob->tilex; newobj->tiley = ob->tiley; newobj->x = ob->x; newobj->y = ob->y; newobj->dir = nodir; newobj->angle = iangle; newobj->obclass = fireobj; newobj->speed = 0x1200l; newobj->flags = FL_NEVERMARK; newobj->active = ac_yes; PlaySoundLocActor (FLAMETHROWERSND,newobj); } /* ================= = = T_Fake = ================= */ void T_Fake (objtype *ob) { int32_t move; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; if ( (unsigned) US_RndT() < (tics<<1) && objfreelist) { // // go into attack frame // NewState (ob,&s_fakeshoot1); return; } } else ob->hidden = true; if (ob->dir == nodir) { SelectDodgeDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; SelectDodgeDir (ob); if (ob->dir == nodir) return; // object is blocked in } } #endif /* ============================================================================ STAND ============================================================================ */ /* =============== = = T_Stand = =============== */ void T_Stand (objtype *ob) { SightPlayer (ob); } /* ============================================================================ CHASE ============================================================================ */ /* ================= = = T_Chase = ================= */ void T_Chase (objtype *ob) { int32_t move,target; int dx,dy,dist,chance; boolean dodge; if (gamestate.victoryflag) return; dodge = false; if (CheckLine(ob)) // got a shot at player? { ob->hidden = false; dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx : dy; #ifdef PLAYDEMOLIKEORIGINAL if(DEMOCOND_ORIG) { if(!dist || (dist == 1 && ob->distance < 0x4000)) chance = 300; else chance = (tics<<4)/dist; } else #endif { if (dist) chance = (tics<<4)/dist; else chance = 300; if (dist == 1) { target = abs(ob->x - player->x); if (target < 0x14000l) { target = abs(ob->y - player->y); if (target < 0x14000l) chance = 300; } } } if ( US_RndT()obclass) { case guardobj: NewState (ob,&s_grdshoot1); break; case officerobj: NewState (ob,&s_ofcshoot1); break; case mutantobj: NewState (ob,&s_mutshoot1); break; case ssobj: NewState (ob,&s_ssshoot1); break; #ifndef SPEAR case bossobj: NewState (ob,&s_bossshoot1); break; case gretelobj: NewState (ob,&s_gretelshoot1); break; case mechahitlerobj: NewState (ob,&s_mechashoot1); break; case realhitlerobj: NewState (ob,&s_hitlershoot1); break; #else case angelobj: NewState (ob,&s_angelshoot1); break; case transobj: NewState (ob,&s_transshoot1); break; case uberobj: NewState (ob,&s_ubershoot1); break; case willobj: NewState (ob,&s_willshoot1); break; case deathobj: NewState (ob,&s_deathshoot1); break; #endif } return; } dodge = true; } else ob->hidden = true; if (ob->dir == nodir) { if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open DEMOIF_SDL { TryWalk(ob); } } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; if (dodge) SelectDodgeDir (ob); else SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ================= = = T_Ghosts = ================= */ void T_Ghosts (objtype *ob) { int32_t move; if (ob->dir == nodir) { SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; SelectChaseDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ================= = = T_DogChase = ================= */ void T_DogChase (objtype *ob) { int32_t move; int32_t dx,dy; if (ob->dir == nodir) { SelectDodgeDir (ob); if (ob->dir == nodir) return; // object is blocked in } move = ob->speed*tics; while (move) { // // check for byte range // dx = player->x - ob->x; if (dx<0) dx = -dx; dx -= move; if (dx <= MINACTORDIST) { dy = player->y - ob->y; if (dy<0) dy = -dy; dy -= move; if (dy <= MINACTORDIST) { NewState (ob,&s_dogjump1); return; } } if (move < ob->distance) { MoveObj (ob,move); break; } // // reached goal tile, so select another one // // // fix position to account for round off during moving // ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; SelectDodgeDir (ob); if (ob->dir == nodir) return; // object is blocked in } } /* ============================================================================ PATH ============================================================================ */ /* =============== = = SelectPathDir = =============== */ void SelectPathDir (objtype *ob) { unsigned spot; spot = MAPSPOT(ob->tilex,ob->tiley,1)-ICONARROWS; if (spot<8) { // new direction ob->dir = (dirtype)(spot); } ob->distance = TILEGLOBAL; if (!TryWalk (ob)) ob->dir = nodir; } /* =============== = = T_Path = =============== */ void T_Path (objtype *ob) { int32_t move; if (SightPlayer (ob)) return; if (ob->dir == nodir) { SelectPathDir (ob); if (ob->dir == nodir) return; // all movement is blocked } move = ob->speed*tics; while (move) { if (ob->distance < 0) { // // waiting for a door to open // OpenDoor (-ob->distance-1); if (doorobjlist[-ob->distance-1].action != dr_open) return; ob->distance = TILEGLOBAL; // go ahead, the door is now open DEMOIF_SDL { TryWalk(ob); } } if (move < ob->distance) { MoveObj (ob,move); break; } if (ob->tilex>MAPSIZE || ob->tiley>MAPSIZE) { sprintf (str, "T_Path hit a wall at %u,%u, dir %u", ob->tilex,ob->tiley,ob->dir); Quit (str); } ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; SelectPathDir (ob); if (ob->dir == nodir) return; // all movement is blocked } } /* ============================================================================= FIGHT ============================================================================= */ /* =============== = = T_Shoot = = Try to damage the player, based on skill level and player's speed = =============== */ void T_Shoot (objtype *ob) { int dx,dy,dist; int hitchance,damage; hitchance = 128; if (!areabyplayer[ob->areanumber]) return; if (CheckLine (ob)) // player is not behind a wall { dx = abs(ob->tilex - player->tilex); dy = abs(ob->tiley - player->tiley); dist = dx>dy ? dx:dy; if (ob->obclass == ssobj || ob->obclass == bossobj) dist = dist*2/3; // ss are better shots if (thrustspeed >= RUNSPEED) { if (ob->flags&FL_VISABLE) hitchance = 160-dist*16; // player can see to dodge else hitchance = 160-dist*8; } else { if (ob->flags&FL_VISABLE) hitchance = 256-dist*16; // player can see to dodge else hitchance = 256-dist*8; } // see if the shot was a hit if (US_RndT()>2; else if (dist<4) damage = US_RndT()>>3; else damage = US_RndT()>>4; TakeDamage (damage,ob); } } switch(ob->obclass) { case ssobj: PlaySoundLocActor(SSFIRESND,ob); break; #ifndef SPEAR #ifndef APOGEE_1_0 case giftobj: case fatobj: PlaySoundLocActor(MISSILEFIRESND,ob); break; #endif case mechahitlerobj: case realhitlerobj: case bossobj: PlaySoundLocActor(BOSSFIRESND,ob); break; case schabbobj: PlaySoundLocActor(SCHABBSTHROWSND,ob); break; case fakeobj: PlaySoundLocActor(FLAMETHROWERSND,ob); break; #endif default: PlaySoundLocActor(NAZIFIRESND,ob); } } /* =============== = = T_Bite = =============== */ void T_Bite (objtype *ob) { int32_t dx,dy; PlaySoundLocActor(DOGATTACKSND,ob); // JAB dx = player->x - ob->x; if (dx<0) dx = -dx; dx -= TILEGLOBAL; if (dx <= MINACTORDIST) { dy = player->y - ob->y; if (dy<0) dy = -dy; dy -= TILEGLOBAL; if (dy <= MINACTORDIST) { if (US_RndT()<180) { TakeDamage (US_RndT()>>4,ob); return; } } } } #ifndef SPEAR /* ============================================================================ BJ VICTORY ============================================================================ */ // // BJ victory // void T_BJRun (objtype *ob); void T_BJJump (objtype *ob); void T_BJDone (objtype *ob); void T_BJYell (objtype *ob); void T_DeathCam (objtype *ob); extern statetype s_bjrun1; extern statetype s_bjrun1s; extern statetype s_bjrun2; extern statetype s_bjrun3; extern statetype s_bjrun3s; extern statetype s_bjrun4; extern statetype s_bjjump1; extern statetype s_bjjump2; extern statetype s_bjjump3; extern statetype s_bjjump4; statetype s_bjrun1 = {false,SPR_BJ_W1,12,(statefunc)T_BJRun,NULL,&s_bjrun1s}; statetype s_bjrun1s = {false,SPR_BJ_W1,3, NULL,NULL,&s_bjrun2}; statetype s_bjrun2 = {false,SPR_BJ_W2,8,(statefunc)T_BJRun,NULL,&s_bjrun3}; statetype s_bjrun3 = {false,SPR_BJ_W3,12,(statefunc)T_BJRun,NULL,&s_bjrun3s}; statetype s_bjrun3s = {false,SPR_BJ_W3,3, NULL,NULL,&s_bjrun4}; statetype s_bjrun4 = {false,SPR_BJ_W4,8,(statefunc)T_BJRun,NULL,&s_bjrun1}; statetype s_bjjump1 = {false,SPR_BJ_JUMP1,14,(statefunc)T_BJJump,NULL,&s_bjjump2}; statetype s_bjjump2 = {false,SPR_BJ_JUMP2,14,(statefunc)T_BJJump,(statefunc)T_BJYell,&s_bjjump3}; statetype s_bjjump3 = {false,SPR_BJ_JUMP3,14,(statefunc)T_BJJump,NULL,&s_bjjump4}; statetype s_bjjump4 = {false,SPR_BJ_JUMP4,300,NULL,(statefunc)T_BJDone,&s_bjjump4}; statetype s_deathcam = {false,0,0,NULL,NULL,NULL}; /* =============== = = SpawnBJVictory = =============== */ void SpawnBJVictory (void) { SpawnNewObj (player->tilex,player->tiley+1,&s_bjrun1); newobj->x = player->x; newobj->y = player->y; newobj->obclass = bjobj; newobj->dir = north; newobj->temp1 = 6; // tiles to run forward } /* =============== = = T_BJRun = =============== */ void T_BJRun (objtype *ob) { int32_t move; move = BJRUNSPEED*tics; while (move) { if (move < ob->distance) { MoveObj (ob,move); break; } ob->x = ((int32_t)ob->tilex<y = ((int32_t)ob->tiley<distance; SelectPathDir (ob); if ( !(--ob->temp1) ) { NewState (ob,&s_bjjump1); return; } } } /* =============== = = T_BJJump = =============== */ void T_BJJump (objtype *ob) { int32_t move; move = BJJUMPSPEED*tics; MoveObj (ob,move); } /* =============== = = T_BJYell = =============== */ void T_BJYell (objtype *ob) { PlaySoundLocActor(YEAHSND,ob); // JAB } /* =============== = = T_BJDone = =============== */ void T_BJDone (objtype *) { playstate = ex_victorious; // exit castle tile } //=========================================================================== /* =============== = = CheckPosition = =============== */ boolean CheckPosition (objtype *ob) { int x,y,xl,yl,xh,yh; objtype *check; xl = (ob->x-PLAYERSIZE) >> TILESHIFT; yl = (ob->y-PLAYERSIZE) >> TILESHIFT; xh = (ob->x+PLAYERSIZE) >> TILESHIFT; yh = (ob->y+PLAYERSIZE) >> TILESHIFT; // // check for solid walls // for (y=yl;y<=yh;y++) { for (x=xl;x<=xh;x++) { check = actorat[x][y]; if (check && !ISPOINTER(check)) return false; } } return true; } /* =============== = = A_StartDeathCam = =============== */ void A_StartDeathCam (objtype *ob) { int32_t dx,dy; float fangle; int32_t xmove,ymove; int32_t dist; FinishPaletteShifts (); VW_WaitVBL (100); if (gamestate.victoryflag) { playstate = ex_victorious; // exit castle tile return; } if(usedoublebuffering) VH_UpdateScreen(); gamestate.victoryflag = true; unsigned fadeheight = viewsize != 21 ? screenHeight-scaleFactor*STATUSLINES : screenHeight; VL_BarScaledCoord (0, 0, screenWidth, fadeheight, bordercol); FizzleFade(screenBuffer, 0, 0, screenWidth, fadeheight, 70, false); if (bordercol != VIEWCOLOR) { CA_CacheGrChunk (STARTFONT+1); fontnumber = 1; SETFONTCOLOR(15,bordercol); PrintX = 68; PrintY = 45; US_Print (STR_SEEAGAIN); UNCACHEGRCHUNK(STARTFONT+1); } else { CacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END); #ifdef JAPAN #ifndef JAPDEMO CA_CacheScreen(C_LETSSEEPIC); #endif #else Write(0,7,STR_SEEAGAIN); #endif } VW_UpdateScreen (); if(usedoublebuffering) VH_UpdateScreen(); IN_UserInput(300); // // line angle up exactly // NewState (player,&s_deathcam); player->x = gamestate.killx; player->y = gamestate.killy; dx = ob->x - player->x; dy = player->y - ob->y; fangle = (float) atan2((float) dy, (float) dx); // returns -pi to pi if (fangle<0) fangle = (float) (M_PI*2+fangle); player->angle = (short) (fangle/(M_PI*2)*ANGLES); // // try to position as close as possible without being in a wall // dist = 0x14000l; do { xmove = FixedMul(dist,costable[player->angle]); ymove = -FixedMul(dist,sintable[player->angle]); player->x = ob->x - xmove; player->y = ob->y - ymove; dist += 0x1000; } while (!CheckPosition (player)); plux = (word)(player->x >> UNSIGNEDSHIFT); // scale to fit in unsigned pluy = (word)(player->y >> UNSIGNEDSHIFT); player->tilex = (word)(player->x >> TILESHIFT); // scale to tile values player->tiley = (word)(player->y >> TILESHIFT); // // go back to the game // DrawPlayBorder (); fizzlein = true; switch (ob->obclass) { #ifndef SPEAR case schabbobj: NewState (ob,&s_schabbdeathcam); break; case realhitlerobj: NewState (ob,&s_hitlerdeathcam); break; case giftobj: NewState (ob,&s_giftdeathcam); break; case fatobj: NewState (ob,&s_fatdeathcam); break; #endif } } #endif wolf4sdl-1.7+svn262/audiosod.h0000644000175000017500000000761310736012444015365 0ustar fabianfabian///////////////////////////////////////////////// // // MUSE Header for .SOD // Created Thu Aug 13 09:25:58 1992 // ///////////////////////////////////////////////// #define NUMSOUNDS 81 #define NUMSNDCHUNKS 267 // // Sound names & indexes // typedef enum { HITWALLSND, // 0 MISSILEHITSND, // 1 SELECTITEMSND, // 2 GHOSTSIGHTSND, // 3 MOVEGUN2SND, // 4 MOVEGUN1SND, // 5 NOWAYSND, // 6 NAZIHITPLAYERSND, // 7 MISSILEFIRESND, // 8 PLAYERDEATHSND, // 9 DOGDEATHSND, // 10 ATKGATLINGSND, // 11 GETKEYSND, // 12 NOITEMSND, // 13 WALK1SND, // 14 WALK2SND, // 15 TAKEDAMAGESND, // 16 GAMEOVERSND, // 17 OPENDOORSND, // 18 CLOSEDOORSND, // 19 DONOTHINGSND, // 20 HALTSND, // 21 DEATHSCREAM2SND, // 22 ATKKNIFESND, // 23 ATKPISTOLSND, // 24 DEATHSCREAM3SND, // 25 ATKMACHINEGUNSND, // 26 HITENEMYSND, // 27 SHOOTDOORSND, // 28 DEATHSCREAM1SND, // 29 GETMACHINESND, // 30 GETAMMOSND, // 31 SHOOTSND, // 32 HEALTH1SND, // 33 HEALTH2SND, // 34 BONUS1SND, // 35 BONUS2SND, // 36 BONUS3SND, // 37 GETGATLINGSND, // 38 ESCPRESSEDSND, // 39 LEVELDONESND, // 40 DOGBARKSND, // 41 ENDBONUS1SND, // 42 ENDBONUS2SND, // 43 BONUS1UPSND, // 44 BONUS4SND, // 45 PUSHWALLSND, // 46 NOBONUSSND, // 47 PERCENT100SND, // 48 BOSSACTIVESND, // 49 DEATHSCREAM4SND, // 50 SCHUTZADSND, // 51 AHHHGSND, // 52 DEATHSCREAM5SND, // 53 DEATHSCREAM7SND, // 54 DEATHSCREAM8SND, // 55 LEBENSND, // 56 DEATHSCREAM6SND, // 57 NAZIFIRESND, // 58 BOSSFIRESND, // 59 SSFIRESND, // 60 SLURPIESND, // 61 GHOSTFADESND, // 62 DEATHSCREAM9SND, // 63 GETAMMOBOXSND, // 64 ANGELSIGHTSND, // 65 SPIONSND, // 66 NEINSOVASSND, // 67 DOGATTACKSND, // 68 ANGELFIRESND, // 69 TRANSSIGHTSND, // 70 TRANSDEATHSND, // 71 WILHELMSIGHTSND, // 72 WILHELMDEATHSND, // 73 UBERDEATHSND, // 74 KNIGHTSIGHTSND, // 75 KNIGHTDEATHSND, // 76 ANGELDEATHSND, // 77 KNIGHTMISSILESND, // 78 GETSPEARSND, // 79 ANGELTIREDSND, // 80 LASTSOUND } soundnames; // // Base offsets // #define STARTPCSOUNDS 0 #define STARTADLIBSOUNDS 81 #define STARTDIGISOUNDS 162 #define STARTMUSIC 243 // // Music names & indexes // typedef enum { XFUNKIE_MUS, // 0 DUNGEON_MUS, // 1 XDEATH_MUS, // 2 GETTHEM_MUS, // 3 XTIPTOE_MUS, // 4 GOINGAFT_MUS, // 5 URAHERO_MUS, // 6 XTHEEND_MUS, // 7 NAZI_OMI_MUS, // 8 POW_MUS, // 9 TWELFTH_MUS, // 10 SEARCHN_MUS, // 11 SUSPENSE_MUS, // 12 ZEROHOUR_MUS, // 13 WONDERIN_MUS, // 14 ULTIMATE_MUS, // 15 ENDLEVEL_MUS, // 16 XEVIL_MUS, // 17 XJAZNAZI_MUS, // 18 COPYPRO_MUS, // 19 XAWARD_MUS, // 20 XPUTIT_MUS, // 21 XGETYOU_MUS, // 22 XTOWER2_MUS, // 23 LASTMUSIC } musicnames; ///////////////////////////////////////////////// // // Thanks for playing with MUSE! // ///////////////////////////////////////////////// wolf4sdl-1.7+svn262/wl_atmos.h0000644000175000017500000000057510756144476015420 0ustar fabianfabian#ifndef _WL_ATMOS_H_ #define _WL_ATMOS_H_ #if defined(USE_STARSKY) || defined(USE_RAIN) || defined(USE_SNOW) void Init3DPoints(); #endif #ifdef USE_STARSKY void DrawStarSky(byte *vbuf, uint32_t vbufPitch); #endif #ifdef USE_RAIN void DrawRain(byte *vbuf, uint32_t vbufPitch); #endif #ifdef USE_SNOW void DrawSnow(byte *vbuf, uint32_t vbufPitch); #endif #endif wolf4sdl-1.7+svn262/id_pm.cpp0000644000175000017500000000702611016150663015175 0ustar fabianfabian#include "wl_def.h" int ChunksInFile; int PMSpriteStart; int PMSoundStart; bool PMSoundInfoPagePadded = false; // holds the whole VSWAP uint32_t *PMPageData; size_t PMPageDataSize; // ChunksInFile+1 pointers to page starts. // The last pointer points one byte after the last page. uint8_t **PMPages; void PM_Startup() { char fname[13] = "vswap."; strcat(fname,extension); FILE *file = fopen(fname,"rb"); if(!file) CA_CannotOpen(fname); ChunksInFile = 0; fread(&ChunksInFile, sizeof(word), 1, file); PMSpriteStart = 0; fread(&PMSpriteStart, sizeof(word), 1, file); PMSoundStart = 0; fread(&PMSoundStart, sizeof(word), 1, file); uint32_t* pageOffsets = (uint32_t *) malloc((ChunksInFile + 1) * sizeof(int32_t)); CHECKMALLOCRESULT(pageOffsets); fread(pageOffsets, sizeof(uint32_t), ChunksInFile, file); word *pageLengths = (word *) malloc(ChunksInFile * sizeof(word)); CHECKMALLOCRESULT(pageLengths); fread(pageLengths, sizeof(word), ChunksInFile, file); fseek(file, 0, SEEK_END); long fileSize = ftell(file); long pageDataSize = fileSize - pageOffsets[0]; if(pageDataSize > (size_t) -1) Quit("The page file \"%s\" is too large!", fname); pageOffsets[ChunksInFile] = fileSize; uint32_t dataStart = pageOffsets[0]; int i; // Check that all pageOffsets are valid for(i = 0; i < ChunksInFile; i++) { if(!pageOffsets[i]) continue; // sparse page if(pageOffsets[i] < dataStart || pageOffsets[i] >= (size_t) fileSize) Quit("Illegal page offset for page %i: %u (filesize: %u)", i, pageOffsets[i], fileSize); } // Calculate total amount of padding needed for sprites and sound info page int alignPadding = 0; for(i = PMSpriteStart; i < PMSoundStart; i++) { if(!pageOffsets[i]) continue; // sparse page uint32_t offs = pageOffsets[i] - dataStart + alignPadding; if(offs & 1) alignPadding++; } if((pageOffsets[ChunksInFile - 1] - dataStart + alignPadding) & 1) alignPadding++; PMPageDataSize = (size_t) pageDataSize + alignPadding; PMPageData = (uint32_t *) malloc(PMPageDataSize); CHECKMALLOCRESULT(PMPageData); PMPages = (uint8_t **) malloc((ChunksInFile + 1) * sizeof(uint8_t *)); CHECKMALLOCRESULT(PMPages); // Load pages and initialize PMPages pointers uint8_t *ptr = (uint8_t *) PMPageData; for(i = 0; i < ChunksInFile; i++) { if(i >= PMSpriteStart && i < PMSoundStart || i == ChunksInFile - 1) { size_t offs = ptr - (uint8_t *) PMPageData; // pad with zeros to make it 2-byte aligned if(offs & 1) { *ptr++ = 0; if(i == ChunksInFile - 1) PMSoundInfoPagePadded = true; } } PMPages[i] = ptr; if(!pageOffsets[i]) continue; // sparse page // Use specified page length, when next page is sparse page. // Otherwise, calculate size from the offset difference between this and the next page. uint32_t size; if(!pageOffsets[i + 1]) size = pageLengths[i]; else size = pageOffsets[i + 1] - pageOffsets[i]; fseek(file, pageOffsets[i], SEEK_SET); fread(ptr, 1, size, file); ptr += size; } // last page points after page buffer PMPages[ChunksInFile] = ptr; free(pageLengths); free(pageOffsets); fclose(file); } void PM_Shutdown() { free(PMPages); free(PMPageData); } wolf4sdl-1.7+svn262/wl_play.cpp0000644000175000017500000006621011134105020015540 0ustar fabianfabian// WL_PLAY.C #include "wl_def.h" #pragma hdrstop #include "wl_cloudsky.h" #include "wl_shade.h" /* ============================================================================= LOCAL CONSTANTS ============================================================================= */ #define sc_Question 0x35 /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ boolean madenoise; // true when shooting or screaming exit_t playstate; static musicnames lastmusicchunk = (musicnames) 0; static int DebugOk; objtype objlist[MAXACTORS]; objtype *newobj, *obj, *player, *lastobj, *objfreelist, *killerobj; boolean noclip, ammocheat; int godmode, singlestep, extravbls = 0; byte tilemap[MAPSIZE][MAPSIZE]; // wall values only byte spotvis[MAPSIZE][MAPSIZE]; objtype *actorat[MAPSIZE][MAPSIZE]; // // replacing refresh manager // unsigned tics; // // control info // boolean mouseenabled, joystickenabled; int dirscan[4] = { sc_UpArrow, sc_RightArrow, sc_DownArrow, sc_LeftArrow }; int buttonscan[NUMBUTTONS] = { sc_Control, sc_Alt, sc_LShift, sc_Space, sc_1, sc_2, sc_3, sc_4 }; int buttonmouse[4] = { bt_attack, bt_strafe, bt_use, bt_nobutton }; int buttonjoy[32] = { #ifdef _arch_dreamcast bt_attack, bt_strafe, bt_use, bt_run, bt_esc, bt_prevweapon, bt_nobutton, bt_nextweapon, bt_pause, bt_strafeleft, bt_straferight, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, #else bt_attack, bt_strafe, bt_use, bt_run, bt_strafeleft, bt_straferight, bt_esc, bt_pause, bt_prevweapon, bt_nextweapon, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, #endif bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton, bt_nobutton }; int viewsize; boolean buttonheld[NUMBUTTONS]; boolean demorecord, demoplayback; int8_t *demoptr, *lastdemoptr; memptr demobuffer; // // current user input // int controlx, controly; // range from -100 to 100 per tic boolean buttonstate[NUMBUTTONS]; int lastgamemusicoffset = 0; //=========================================================================== void CenterWindow (word w, word h); void InitObjList (void); void RemoveObj (objtype * gone); void PollControls (void); int StopMusic (void); void StartMusic (void); void ContinueMusic (int offs); void PlayLoop (void); /* ============================================================================= LOCAL VARIABLES ============================================================================= */ objtype dummyobj; // // LIST OF SONGS FOR EACH VERSION // int songs[] = { #ifndef SPEAR // // Episode One // GETTHEM_MUS, SEARCHN_MUS, POW_MUS, SUSPENSE_MUS, GETTHEM_MUS, SEARCHN_MUS, POW_MUS, SUSPENSE_MUS, WARMARCH_MUS, // Boss level CORNER_MUS, // Secret level // // Episode Two // NAZI_OMI_MUS, PREGNANT_MUS, GOINGAFT_MUS, HEADACHE_MUS, NAZI_OMI_MUS, PREGNANT_MUS, HEADACHE_MUS, GOINGAFT_MUS, WARMARCH_MUS, // Boss level DUNGEON_MUS, // Secret level // // Episode Three // INTROCW3_MUS, NAZI_RAP_MUS, TWELFTH_MUS, ZEROHOUR_MUS, INTROCW3_MUS, NAZI_RAP_MUS, TWELFTH_MUS, ZEROHOUR_MUS, ULTIMATE_MUS, // Boss level PACMAN_MUS, // Secret level // // Episode Four // GETTHEM_MUS, SEARCHN_MUS, POW_MUS, SUSPENSE_MUS, GETTHEM_MUS, SEARCHN_MUS, POW_MUS, SUSPENSE_MUS, WARMARCH_MUS, // Boss level CORNER_MUS, // Secret level // // Episode Five // NAZI_OMI_MUS, PREGNANT_MUS, GOINGAFT_MUS, HEADACHE_MUS, NAZI_OMI_MUS, PREGNANT_MUS, HEADACHE_MUS, GOINGAFT_MUS, WARMARCH_MUS, // Boss level DUNGEON_MUS, // Secret level // // Episode Six // INTROCW3_MUS, NAZI_RAP_MUS, TWELFTH_MUS, ZEROHOUR_MUS, INTROCW3_MUS, NAZI_RAP_MUS, TWELFTH_MUS, ZEROHOUR_MUS, ULTIMATE_MUS, // Boss level FUNKYOU_MUS // Secret level #else ////////////////////////////////////////////////////////////// // // SPEAR OF DESTINY TRACKS // ////////////////////////////////////////////////////////////// XTIPTOE_MUS, XFUNKIE_MUS, XDEATH_MUS, XGETYOU_MUS, // DON'T KNOW ULTIMATE_MUS, // Trans Gr”sse DUNGEON_MUS, GOINGAFT_MUS, POW_MUS, TWELFTH_MUS, ULTIMATE_MUS, // Barnacle Wilhelm BOSS NAZI_OMI_MUS, GETTHEM_MUS, SUSPENSE_MUS, SEARCHN_MUS, ZEROHOUR_MUS, ULTIMATE_MUS, // Super Mutant BOSS XPUTIT_MUS, ULTIMATE_MUS, // Death Knight BOSS XJAZNAZI_MUS, // Secret level XFUNKIE_MUS, // Secret level (DON'T KNOW) XEVIL_MUS // Angel of Death BOSS #endif }; /* ============================================================================= USER CONTROL ============================================================================= */ /* =================== = = PollKeyboardButtons = =================== */ void PollKeyboardButtons (void) { int i; for (i = 0; i < NUMBUTTONS; i++) if (Keyboard[buttonscan[i]]) buttonstate[i] = true; } /* =================== = = PollMouseButtons = =================== */ void PollMouseButtons (void) { int buttons = IN_MouseButtons (); if (buttons & 1) buttonstate[buttonmouse[0]] = true; if (buttons & 2) buttonstate[buttonmouse[1]] = true; if (buttons & 4) buttonstate[buttonmouse[2]] = true; } /* =================== = = PollJoystickButtons = =================== */ void PollJoystickButtons (void) { int buttons = IN_JoyButtons(); for(int i = 0, val = 1; i < JoyNumButtons; i++, val <<= 1) { if(buttons & val) buttonstate[buttonjoy[i]] = true; } } /* =================== = = PollKeyboardMove = =================== */ void PollKeyboardMove (void) { int delta = buttonstate[bt_run] ? RUNMOVE * tics : BASEMOVE * tics; if (Keyboard[dirscan[di_north]]) controly -= delta; if (Keyboard[dirscan[di_south]]) controly += delta; if (Keyboard[dirscan[di_west]]) controlx -= delta; if (Keyboard[dirscan[di_east]]) controlx += delta; } /* =================== = = PollMouseMove = =================== */ void PollMouseMove (void) { int mousexmove, mouseymove; SDL_GetMouseState(&mousexmove, &mouseymove); if(IN_IsInputGrabbed()) IN_CenterMouse(); mousexmove -= screenWidth / 2; mouseymove -= screenHeight / 2; controlx += mousexmove * 10 / (13 - mouseadjustment); controly += mouseymove * 20 / (13 - mouseadjustment); } /* =================== = = PollJoystickMove = =================== */ void PollJoystickMove (void) { int joyx, joyy; IN_GetJoyDelta (&joyx, &joyy); int delta = buttonstate[bt_run] ? RUNMOVE * tics : BASEMOVE * tics; if (joyx > 64 || buttonstate[bt_turnright]) controlx += delta; else if (joyx < -64 || buttonstate[bt_turnleft]) controlx -= delta; if (joyy > 64 || buttonstate[bt_movebackward]) controly += delta; else if (joyy < -64 || buttonstate[bt_moveforward]) controly -= delta; } /* =================== = = PollControls = = Gets user or demo input, call once each frame = = controlx set between -100 and 100 per tic = controly = buttonheld[] the state of the buttons LAST frame = buttonstate[] the state of the buttons THIS frame = =================== */ void PollControls (void) { int max, min, i; byte buttonbits; IN_ProcessEvents(); // // get timing info for last frame // if (demoplayback || demorecord) // demo recording and playback needs to be constant { // wait up to DEMOTICS Wolf tics uint32_t curtime = SDL_GetTicks(); lasttimecount += DEMOTICS; int32_t timediff = (lasttimecount * 100) / 7 - curtime; if(timediff > 0) SDL_Delay(timediff); if(timediff < -2 * DEMOTICS) // more than 2-times DEMOTICS behind? lasttimecount = (curtime * 7) / 100; // yes, set to current timecount tics = DEMOTICS; } else CalcTics (); controlx = 0; controly = 0; memcpy (buttonheld, buttonstate, sizeof (buttonstate)); memset (buttonstate, 0, sizeof (buttonstate)); if (demoplayback) { // // read commands from demo buffer // buttonbits = *demoptr++; for (i = 0; i < NUMBUTTONS; i++) { buttonstate[i] = buttonbits & 1; buttonbits >>= 1; } controlx = *demoptr++; controly = *demoptr++; if (demoptr == lastdemoptr) playstate = ex_completed; // demo is done controlx *= (int) tics; controly *= (int) tics; return; } // // get button states // PollKeyboardButtons (); if (mouseenabled && IN_IsInputGrabbed()) PollMouseButtons (); if (joystickenabled) PollJoystickButtons (); // // get movements // PollKeyboardMove (); if (mouseenabled && IN_IsInputGrabbed()) PollMouseMove (); if (joystickenabled) PollJoystickMove (); // // bound movement to a maximum // max = 100 * tics; min = -max; if (controlx > max) controlx = max; else if (controlx < min) controlx = min; if (controly > max) controly = max; else if (controly < min) controly = min; if (demorecord) { // // save info out to demo buffer // controlx /= (int) tics; controly /= (int) tics; buttonbits = 0; // TODO: Support 32-bit buttonbits for (i = NUMBUTTONS - 1; i >= 0; i--) { buttonbits <<= 1; if (buttonstate[i]) buttonbits |= 1; } *demoptr++ = buttonbits; *demoptr++ = controlx; *demoptr++ = controly; if (demoptr >= lastdemoptr - 8) playstate = ex_completed; else { controlx *= (int) tics; controly *= (int) tics; } } } //========================================================================== /////////////////////////////////////////////////////////////////////////// // // CenterWindow() - Generates a window of a given width & height in the // middle of the screen // /////////////////////////////////////////////////////////////////////////// #define MAXX 320 #define MAXY 160 void CenterWindow (word w, word h) { US_DrawWindow (((MAXX / 8) - w) / 2, ((MAXY / 8) - h) / 2, w, h); } //=========================================================================== /* ===================== = = CheckKeys = ===================== */ void CheckKeys (void) { ScanCode scan; if (screenfaded || demoplayback) // don't do anything with a faded screen return; scan = LastScan; #ifdef SPEAR // // SECRET CHEAT CODE: TAB-G-F10 // if (Keyboard[sc_Tab] && Keyboard[sc_G] && Keyboard[sc_F10]) { WindowH = 160; if (godmode) { Message ("God mode OFF"); SD_PlaySound (NOBONUSSND); } else { Message ("God mode ON"); SD_PlaySound (ENDBONUS2SND); } IN_Ack (); godmode ^= 1; DrawPlayBorderSides (); IN_ClearKeysDown (); return; } #endif // // SECRET CHEAT CODE: 'MLI' // if (Keyboard[sc_M] && Keyboard[sc_L] && Keyboard[sc_I]) { gamestate.health = 100; gamestate.ammo = 99; gamestate.keys = 3; gamestate.score = 0; gamestate.TimeCount += 42000L; GiveWeapon (wp_chaingun); DrawWeapon (); DrawHealth (); DrawKeys (); DrawAmmo (); DrawScore (); ClearMemory (); CA_CacheGrChunk (STARTFONT + 1); ClearSplitVWB (); Message (STR_CHEATER1 "\n" STR_CHEATER2 "\n\n" STR_CHEATER3 "\n" STR_CHEATER4 "\n" STR_CHEATER5); UNCACHEGRCHUNK (STARTFONT + 1); IN_ClearKeysDown (); IN_Ack (); if (viewsize < 17) DrawPlayBorder (); } // // OPEN UP DEBUG KEYS // #ifdef DEBUGKEYS if (Keyboard[sc_BackSpace] && Keyboard[sc_LShift] && Keyboard[sc_Alt] && param_debugmode) { ClearMemory (); CA_CacheGrChunk (STARTFONT + 1); ClearSplitVWB (); Message ("Debugging keys are\nnow available!"); UNCACHEGRCHUNK (STARTFONT + 1); IN_ClearKeysDown (); IN_Ack (); DrawPlayBorderSides (); DebugOk = 1; } #endif // // TRYING THE KEEN CHEAT CODE! // if (Keyboard[sc_B] && Keyboard[sc_A] && Keyboard[sc_T]) { ClearMemory (); CA_CacheGrChunk (STARTFONT + 1); ClearSplitVWB (); Message ("Commander Keen is also\n" "available from Apogee, but\n" "then, you already know\n" "that - right, Cheatmeister?!"); UNCACHEGRCHUNK (STARTFONT + 1); IN_ClearKeysDown (); IN_Ack (); if (viewsize < 18) DrawPlayBorder (); } // // pause key weirdness can't be checked as a scan code // if(buttonstate[bt_pause]) Paused = true; if(Paused) { int lastoffs = StopMusic(); LatchDrawPic (20 - 4, 80 - 2 * 8, PAUSEDPIC); VH_UpdateScreen(); IN_Ack (); Paused = false; ContinueMusic(lastoffs); if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement lasttimecount = GetTimeCount(); return; } // // F1-F7/ESC to enter control panel // if ( #ifndef DEBCHECK scan == sc_F10 || #endif scan == sc_F9 || scan == sc_F7 || scan == sc_F8) // pop up quit dialog { short oldmapon = gamestate.mapon; short oldepisode = gamestate.episode; ClearMemory (); ClearSplitVWB (); US_ControlPanel (scan); DrawPlayBorderSides (); SETFONTCOLOR (0, 15); IN_ClearKeysDown (); return; } if ((scan >= sc_F1 && scan <= sc_F9) || scan == sc_Escape || buttonstate[bt_esc]) { int lastoffs = StopMusic (); ClearMemory (); VW_FadeOut (); US_ControlPanel (buttonstate[bt_esc] ? sc_Escape : scan); SETFONTCOLOR (0, 15); IN_ClearKeysDown (); VW_FadeOut(); if(viewsize != 21) DrawPlayScreen (); if (!startgame && !loadedgame) ContinueMusic (lastoffs); if (loadedgame) playstate = ex_abort; lasttimecount = GetTimeCount(); if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement return; } // // TAB-? debug keys // #ifdef DEBUGKEYS if (Keyboard[sc_Tab] && DebugOk) { CA_CacheGrChunk (STARTFONT); fontnumber = 0; SETFONTCOLOR (0, 15); if (DebugKeys () && viewsize < 20) DrawPlayBorder (); // dont let the blue borders flash if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement lasttimecount = GetTimeCount(); return; } #endif } //=========================================================================== /* ############################################################################# The objlist data structure ############################################################################# objlist containt structures for every actor currently playing. The structure is accessed as a linked list starting at *player, ending when ob->next == NULL. GetNewObj inserts a new object at the end of the list, meaning that if an actor spawn another actor, the new one WILL get to think and react the same frame. RemoveObj unlinks the given object and returns it to the free list, but does not damage the objects ->next pointer, so if the current object removes itself, a linked list following loop can still safely get to the next element. ############################################################################# */ /* ========================= = = InitActorList = = Call to clear out the actor object lists returning them all to the free = list. Allocates a special spot for the player. = ========================= */ int objcount; void InitActorList (void) { int i; // // init the actor lists // for (i = 0; i < MAXACTORS; i++) { objlist[i].prev = &objlist[i + 1]; objlist[i].next = NULL; } objlist[MAXACTORS - 1].prev = NULL; objfreelist = &objlist[0]; lastobj = NULL; objcount = 0; // // give the player the first free spots // GetNewActor (); player = newobj; } //=========================================================================== /* ========================= = = GetNewActor = = Sets the global variable new to point to a free spot in objlist. = The free spot is inserted at the end of the liked list = = When the object list is full, the caller can either have it bomb out ot = return a dummy object pointer that will never get used = ========================= */ void GetNewActor (void) { if (!objfreelist) Quit ("GetNewActor: No free spots in objlist!"); newobj = objfreelist; objfreelist = newobj->prev; memset (newobj, 0, sizeof (*newobj)); if (lastobj) lastobj->next = newobj; newobj->prev = lastobj; // new->next is allready NULL from memset newobj->active = ac_no; lastobj = newobj; objcount++; } //=========================================================================== /* ========================= = = RemoveObj = = Add the given object back into the free list, and unlink it from it's = neighbors = ========================= */ void RemoveObj (objtype * gone) { if (gone == player) Quit ("RemoveObj: Tried to remove the player!"); gone->state = NULL; // // fix the next object's back link // if (gone == lastobj) lastobj = (objtype *) gone->prev; else gone->next->prev = gone->prev; // // fix the previous object's forward link // gone->prev->next = gone->next; // // add it back in to the free list // gone->prev = objfreelist; objfreelist = gone; objcount--; } /* ============================================================================= MUSIC STUFF ============================================================================= */ /* ================= = = StopMusic = ================= */ int StopMusic (void) { int lastoffs = SD_MusicOff (); UNCACHEAUDIOCHUNK (STARTMUSIC + lastmusicchunk); return lastoffs; } //========================================================================== /* ================= = = StartMusic = ================= */ void StartMusic () { SD_MusicOff (); lastmusicchunk = (musicnames) songs[gamestate.mapon + gamestate.episode * 10]; SD_StartMusic(STARTMUSIC + lastmusicchunk); } void ContinueMusic (int offs) { SD_MusicOff (); lastmusicchunk = (musicnames) songs[gamestate.mapon + gamestate.episode * 10]; SD_ContinueMusic(STARTMUSIC + lastmusicchunk, offs); } /* ============================================================================= PALETTE SHIFTING STUFF ============================================================================= */ #define NUMREDSHIFTS 6 #define REDSTEPS 8 #define NUMWHITESHIFTS 3 #define WHITESTEPS 20 #define WHITETICS 6 SDL_Color redshifts[NUMREDSHIFTS][256]; SDL_Color whiteshifts[NUMWHITESHIFTS][256]; int damagecount, bonuscount; boolean palshifted; /* ===================== = = InitRedShifts = ===================== */ void InitRedShifts (void) { SDL_Color *workptr, *baseptr; int i, j, delta; // // fade through intermediate frames // for (i = 1; i <= NUMREDSHIFTS; i++) { workptr = redshifts[i - 1]; baseptr = gamepal; for (j = 0; j <= 255; j++) { delta = 256 - baseptr->r; workptr->r = baseptr->r + delta * i / REDSTEPS; delta = -baseptr->g; workptr->g = baseptr->g + delta * i / REDSTEPS; delta = -baseptr->b; workptr->b = baseptr->b + delta * i / REDSTEPS; baseptr++; workptr++; } } for (i = 1; i <= NUMWHITESHIFTS; i++) { workptr = whiteshifts[i - 1]; baseptr = gamepal; for (j = 0; j <= 255; j++) { delta = 256 - baseptr->r; workptr->r = baseptr->r + delta * i / WHITESTEPS; delta = 248 - baseptr->g; workptr->g = baseptr->g + delta * i / WHITESTEPS; delta = 0-baseptr->b; workptr->b = baseptr->b + delta * i / WHITESTEPS; baseptr++; workptr++; } } } /* ===================== = = ClearPaletteShifts = ===================== */ void ClearPaletteShifts (void) { bonuscount = damagecount = 0; palshifted = false; } /* ===================== = = StartBonusFlash = ===================== */ void StartBonusFlash (void) { bonuscount = NUMWHITESHIFTS * WHITETICS; // white shift palette } /* ===================== = = StartDamageFlash = ===================== */ void StartDamageFlash (int damage) { damagecount += damage; } /* ===================== = = UpdatePaletteShifts = ===================== */ void UpdatePaletteShifts (void) { int red, white; if (bonuscount) { white = bonuscount / WHITETICS + 1; if (white > NUMWHITESHIFTS) white = NUMWHITESHIFTS; bonuscount -= tics; if (bonuscount < 0) bonuscount = 0; } else white = 0; if (damagecount) { red = damagecount / 10 + 1; if (red > NUMREDSHIFTS) red = NUMREDSHIFTS; damagecount -= tics; if (damagecount < 0) damagecount = 0; } else red = 0; if (red) { VL_SetPalette (redshifts[red - 1], false); palshifted = true; } else if (white) { VL_SetPalette (whiteshifts[white - 1], false); palshifted = true; } else if (palshifted) { VL_SetPalette (gamepal, false); // back to normal palshifted = false; } } /* ===================== = = FinishPaletteShifts = = Resets palette to normal if needed = ===================== */ void FinishPaletteShifts (void) { if (palshifted) { palshifted = 0; VL_SetPalette (gamepal, true); } } /* ============================================================================= CORE PLAYLOOP ============================================================================= */ /* ===================== = = DoActor = ===================== */ void DoActor (objtype * ob) { void (*think) (objtype *); if (!ob->active && !areabyplayer[ob->areanumber]) return; if (!(ob->flags & (FL_NONMARK | FL_NEVERMARK))) actorat[ob->tilex][ob->tiley] = NULL; // // non transitional object // if (!ob->ticcount) { think = (void (*)(objtype *)) ob->state->think; if (think) { think (ob); if (!ob->state) { RemoveObj (ob); return; } } if (ob->flags & FL_NEVERMARK) return; if ((ob->flags & FL_NONMARK) && actorat[ob->tilex][ob->tiley]) return; actorat[ob->tilex][ob->tiley] = ob; return; } // // transitional object // ob->ticcount -= (short) tics; while (ob->ticcount <= 0) { think = (void (*)(objtype *)) ob->state->action; // end of state action if (think) { think (ob); if (!ob->state) { RemoveObj (ob); return; } } ob->state = ob->state->next; if (!ob->state) { RemoveObj (ob); return; } if (!ob->state->tictime) { ob->ticcount = 0; goto think; } ob->ticcount += ob->state->tictime; } think: // // think // think = (void (*)(objtype *)) ob->state->think; if (think) { think (ob); if (!ob->state) { RemoveObj (ob); return; } } if (ob->flags & FL_NEVERMARK) return; if ((ob->flags & FL_NONMARK) && actorat[ob->tilex][ob->tiley]) return; actorat[ob->tilex][ob->tiley] = ob; } //========================================================================== /* =================== = = PlayLoop = =================== */ int32_t funnyticount; void PlayLoop (void) { #if defined(USE_FEATUREFLAGS) && defined(USE_CLOUDSKY) if(GetFeatureFlags() & FF_CLOUDSKY) InitSky(); #endif #ifdef USE_SHADING InitLevelShadeTable(); #endif playstate = ex_stillplaying; lasttimecount = GetTimeCount(); frameon = 0; anglefrac = 0; facecount = 0; funnyticount = 0; memset (buttonstate, 0, sizeof (buttonstate)); ClearPaletteShifts (); if (MousePresent && IN_IsInputGrabbed()) IN_CenterMouse(); // Clear accumulated mouse movement if (demoplayback) IN_StartAck (); do { PollControls (); // // actor thinking // madenoise = false; MoveDoors (); MovePWalls (); for (obj = player; obj; obj = obj->next) DoActor (obj); UpdatePaletteShifts (); ThreeDRefresh (); // // MAKE FUNNY FACE IF BJ DOESN'T MOVE FOR AWHILE // #ifdef SPEAR funnyticount += tics; if (funnyticount > 30l * 70) { funnyticount = 0; if(viewsize != 21) StatusDrawFace(BJWAITING1PIC + (US_RndT () & 1)); facecount = 0; } #endif gamestate.TimeCount += tics; UpdateSoundLoc (); // JAB if (screenfaded) VW_FadeIn (); CheckKeys (); // // debug aids // if (singlestep) { VW_WaitVBL (singlestep); lasttimecount = GetTimeCount(); } if (extravbls) VW_WaitVBL (extravbls); if (demoplayback) { if (IN_CheckAck ()) { IN_ClearKeysDown (); playstate = ex_abort; } } } while (!playstate && !startgame); if (playstate != ex_died) FinishPaletteShifts (); } wolf4sdl-1.7+svn262/license-id.txt0000644000175000017500000001614610740027511016157 0ustar fabianfabian LIMITED USE SOFTWARE LICENSE AGREEMENT This Limited Use Software License Agreement (the "Agreement") is a legal agreement between you, the end-user, and Id Software, Inc. ("ID"). By continuing the downloading of this Wolfenstein 3D (the "Trademark") software material, which includes source code (the "Source Code"), artwork data, music and software tools (collectively, the "Software"), you are agreeing to be bound by the terms of this Agreement. If you do not agree to the terms of this Agreement, promptly destroy the Software you may have downloaded. ID SOFTWARE LICENSE Grant of License. ID grants to you the right to use one (1) copy of the Software on a single computer. You have no ownership or proprietary rights in or to the Software, or the Trademark. For purposes of this section, "use" means loading the Software into RAM, as well as installation on a hard disk or other storage device. The Software, together with any archive copy thereof, shall be destroyed when no longer used in accordance with this Agreement, or when the right to use the Software is terminated. You agree that the Software will not be shipped, transferred or exported into any country in violation of the U.S. Export Administration Act (or any other law governing such matters) and that you will not utilize, in any other manner, the Software in violation of any applicable law. Permitted Uses. For educational purposes only, you, the end-user, may use portions of the Source Code, such as particular routines, to develop your own software, but may not duplicate the Source Code, except as noted in paragraph 4. The limited right referenced in the preceding sentence is hereinafter referred to as "Educational Use." By so exercising the Educational Use right you shall not obtain any ownership, copyright, proprietary or other interest in or to the Source Code, or any portion of the Source Code. You may dispose of your own software in your sole discretion. With the exception of the Educational Use right, you may not otherwise use the Software, or an portion of the Software, which includes the Source Code, for commercial gain. Prohibited Uses: Under no circumstances shall you, the end-user, be permitted, allowed or authorized to commercially exploit the Software. Neither you nor anyone at your direction shall do any of the following acts with regard to the Software, or any portion thereof: Rent; Sell; Lease; Offer on a pay-per-play basis; Distribute for money or any other consideration; or In any other manner and through any medium whatsoever commercially exploit or use for any commercial purpose. Notwithstanding the foregoing prohibitions, you may commercially exploit the software you develop by exercising the Educational Use right, referenced in paragraph 2. hereinabove. Copyright. The Software and all copyrights related thereto (including all characters and other images generated by the Software or depicted in the Software) are owned by ID and is protected by United States copyright laws and international treaty provisions. Id shall retain exclusive ownership and copyright in and to the Software and all portions of the Software and you shall have no ownership or other proprietary interest in such materials. You must treat the Software like any other copyrighted material, except that you may either (a) make one copy of the Software solely for back-up or archival purposes, or (b) transfer the Software to a single hard disk provided you keep the original solely for back-up or archival purposes. You may not otherwise reproduce, copy or disclose to others, in whole or in any part, the Software. You may not copy the written materials accompanying the Software. You agree to use your best efforts to see that any user of the Software licensed hereunder complies with this Agreement. NO WARRANTIES. ID DISCLAIMS ALL WARRANTIES, BOTH EXPRESS IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE SOFTWARE. THIS LIMITED WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS. YOU MAY HAVE OTHER RIGHTS WHICH VARY FROM JURISDICTION TO JURISDICTION. ID DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED, ERROR FREE OR MEET YOUR SPECIFIC REQUIREMENTS. THE WARRANTY SET FORTH ABOVE IS IN LIEU OF ALL OTHER EXPRESS WARRANTIES WHETHER ORAL OR WRITTEN. THE AGENTS, EMPLOYEES, DISTRIBUTORS, AND DEALERS OF ID ARE NOT AUTHORIZED TO MAKE MODIFICATIONS TO THIS WARRANTY, OR ADDITIONAL WARRANTIES ON BEHALF OF ID. Exclusive Remedies. The Software is being offered to you free of any charge. You agree that you have no remedy against ID, its affiliates, contractors, suppliers, and agents for loss or damage caused by any defect or failure in the Software regardless of the form of action, whether in contract, tort, includinegligence, strict liability or otherwise, with regard to the Software. This Agreement shall be construed in accordance with and governed by the laws of the State of Texas. Copyright and other proprietary matters will be governed by United States laws and international treaties. IN ANY CASE, ID SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF PROFITS, LOST SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR OTHER SIMILAR DAMAGES ARISING FROM BREACH OF WARRANTY, BREACH OF CONTRACT, NEGLIGENCE, OR OTHER LEGAL THEORY EVEN IF ID OR ITS AGENT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above limitation or exclusion may not apply to you. General Provisions. Neither this Agreement nor any part or portion hereof shall be assigned, sublicensed or otherwise transferred by you. Should any provision of this Agreement be held to be void, invalid, unenforceable or illegal by a court, the validity and enforceability of the other provisions shall not be affected thereby. If any provision is determined to be unenforceable, you agree to a modification of such provision to provide for enforcement of the provision's intent, to the extent permitted by applicable law. Failure of a party to enforce any provision of this Agreement shall not constitute or be construed as a waiver of such provision or of the right to enforce such provision. If you fail to comply with any terms of this Agreement, YOUR LICENSE IS AUTOMATICALLY TERMINATED and you agree to the issuance of an injunction against you in favor of Id. You agree that Id shall not have to post bond or other security to obtain an injunction against you to prohibit you from violating Id's rights. YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, THAT YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE DOWNLOADING OF THE SOFTWARE, YOU AGREE TO BE BOUND BY THIS AGREEMENT'S TERMS AND CONDITIONS. YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ID AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES. THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS BETWEEN ID AND YOU RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT wolf4sdl-1.7+svn262/README.txt0000644000175000017500000002276411644157635015122 0ustar fabianfabianWolf4SDL by Moritz "Ripper" Kroll (http://www.chaos-software.de.vu) Original Wolfenstein 3D by id Software (http://www.idsoftware.com) ============================================================================= Wolf4SDL is an open-source port of id Software's classic first-person shooter Wolfenstein 3D to the cross-platform multimedia library "Simple DirectMedia Layer (SDL)" (http://www.libsdl.org). It is meant to keep the original feel while taking advantage of some improvements mentioned in the list below. Main features: -------------- - Cross-platform: Supported operating systems are at least: - Windows 98, Windows ME, Windows 2000, Windows XP, Windows Vista (32 and 64 bit), Windows 7 (32 and 64 bit) - Linux - BSD variants - Mac OS X (x86) - KallistiOS (used for Dreamcast) Only little endian platforms like x86, ARM and SH-4 are supported, yet. - AdLib sounds and music: This port includes the OPL2 emulator from MAME, so you can not only hear the AdLib sounds but also music without any AdLib-compatible soundcard in near to perfect quality! - Multichannel digitized sounds: Digitized sounds play on 8 channels! So in a fire fight you will always hear, when a guard opens the door behind you ;) - Higher screen resolutions: Aside from the original 320x200 resolution, Wolf4SDL currently supports any resolutions being multiples of 320x200 or 320x240, the default being 640x400. Unlike some other ports, Wolf4SDL does NOT apply any bilinear or similar filtering, so the graphics are NOT blurred but pixelated just as we love it. - Fully playable with only a game controller: Wolf4SDL can be played completely without a keyboard. At least two buttons are required (shoot/YES and open door/NO), but five or more are recommended (run, strafe, ESC). Additional features: -------------------- - Two additional view sizes: Wolf4SDL supports one view size using the full width of the screen and showing the status bar, like in Mac-enstein, and one view size filling the whole screen (press TAB to see the status bar). - (Nearly) unlimited sound and song lengths: Mod developers are not restricted to 64kB for digitized sounds and IMF songs anymore, so longer songs and digitized sounds with better quality are possible. - Resuming ingame music: When you come back to the game from the menu or load a save game, the music will be resumed where it was suspended rather than started from the beginning. - Freely movable pushwalls: Moving pushwalls can be viewed from all sides, allowing mod developers to place them with fewer restrictions. The player can also follow the pushwall directly instead of having to wait until the pushwall has left a whole tile. - Optional integrated features for mod developers: Wolf4SDL already contains the shading, directional 3D sprites, floor and ceiling textures, high resolution textures/sprites, parallax sky, cloud sky and outside atmosphere features, which can be easily activated in version.h. The following versions of Wolfenstein 3D data files are currently supported by the source code (choose the version by commenting/uncommenting lines in version.h as described in that file): - Wolfenstein 3D v1.1 full Apogee - Wolfenstein 3D v1.4 full Apogee - Wolfenstein 3D v1.4 full GT/ID/Activision - Wolfenstein 3D v1.4 full Imagineer (Japanese) - Wolfenstein 3D v1.0 shareware Apogee - Wolfenstein 3D v1.1 shareware Apogee - Wolfenstein 3D v1.2 shareware Apogee - Wolfenstein 3D v1.4 shareware - Spear of Destiny full - Spear of Destiny demo - Spear of Destiny - Mission 2: Return to Danger (not tested) - Spear of Destiny - Mission 3: Ultimate Challenge (not tested) How to play: ------------ To play Wolfenstein 3D with Wolf4SDL, you just have to copy the original data files (e.g. *.WL6) into the same directory as the Wolf4SDL executable. Please make sure, that you use the correct version of the executable with the according data files version as the differences are hardcoded into the binary! On Windows SDL.dll and SDL_mixer.dll must also be copied into this directory. They are also available at http://www.chaos-software.de.vu If you play in windowed mode (--windowed parameter), press SCROLLLOCK or F12 to grab the mouse. Press it again to release the mouse. Usage: ------ Wolf4SDL supports the following command line options: --help This help page --tedlevel Starts the game in the given level --baby Sets the difficulty to baby for tedlevel --easy Sets the difficulty to easy for tedlevel --normal Sets the difficulty to normal for tedlevel --hard Sets the difficulty to hard for tedlevel --nowait Skips intro screens --windowed[-mouse] Starts the game in a window [and grabs mouse] --res Sets the screen resolution (must be multiple of 320x200 or 320x240) --resf Sets any screen resolution >= 320x200 (which may result in graphic errors) --bits Sets the screen color depth (Use this when you have palette/fading problem or perhaps to optimize speed on old systems. Allowed: 8, 16, 24, 32, default: "best" depth) --nodblbuf Don't use SDL's double buffering --extravbls Sets a delay after each frame, which may help to reduce flickering (SDL does not support vsync...) (unit is currently 8 ms, default: 0) --joystick Use the index-th joystick if available --joystickhat Enables movement with the given coolie hat --samplerate Sets the sound sample rate (given in Hz) --audiobuffer Sets the size of the audio buffer (-> sound latency) (given in bytes) --ignorenumchunks Ignores the number of chunks in VGAHEAD.* (may be useful for some broken mods) --configdir Directory where config file and save games are stored (Windows default: current directory, others: $HOME/.wolf4sdl) For Spear of Destiny the following additional options are available: --mission Mission number to play (1-3) --goodtimes Disable copy protection quiz Compiling from source code: --------------------------- The current version of the source code is available in the svn repository at: svn://tron.homeunix.org:3690/wolf3d/trunk The following ways of compiling the source code are supported: - Makefile (for Linux, BSD variants and MinGW/MSYS) - Visual C++ 2008 (Wolf4SDL.VC9.sln and Wolf4SDL.VC9.vcproj) - Visual C++ 2005 (Wolf4SDL.sln and Wolf4SDL.vcproj) - Visual C++ 6 (Wolf4SDL.dsw and Wolf4SDL.dsp) - Code::Blocks 8.02 (Wolf4SDL.cbp) - Dev-C++ 5.0 Beta 9.2 (4.9.9.2) (Wolf4SDL.dev) (see README-devcpp.txt) - Xcode (for Mac OS X, macosx/Wolf4SDL.xcodeproj/project.pbxproj) - Special compiling for Dreamcast (see README-dc.txt) - Special compiling for GP2X (see README-GP2X.txt) To compile the source code you need the development libraries of - SDL (http://www.libsdl.org/download-1.2.php) and - SDL_mixer (http://www.libsdl.org/projects/SDL_mixer/) and have to adjust the include and library paths in the projects accordingly. Please note, that there is no official SDL_mixer development pack for MinGW, yet, but you can get the needed files from a Dev-C++ package here: http://sourceforge.net/project/showfiles.php?group_id=94270&package_id=151751 Just rename the file extension from ".devpack" to ".tar.bz2" and unpack it with for example WinRAR. Then add the directories include/SDL and lib to the according search paths in your project. IMPORTANT: Do not forget to take care of version.h! By default it compiles for "Wolfenstein 3D v1.4 full GT/ID/Activision"! TODOs: ------ - Add PC speaker emulation - Center non-ingame screens for resolutions being a multiple of 320x240 - Add support for any graphic resolution >= 320x200 Known bugs: ----------- - None! ;D Troubleshooting: ---------------- - If your frame rate is low, consider using the original screen resolution (--res 320 200) or lowering the sound quality (--samplerate 22050) Credits: -------- - Special thanks to id Software! Without the source code we would still have to pelt Wolfenstein 3D with hex editors and disassemblers ;D - Special thanks to the DOSBox team for providing a GPL'ed OPL2/3 emulator! - Special thanks to the MAME developer team for providing the source code of the OPL2 emulator! - Many thanks to "Der Tron" for hosting the svn repository, making Wolf4SDL FreeBSD compatible, testing, bugfixing and cleaning up the code! - Thanks to Chris Chokan for his improvements on Wolf4GW (base of Wolf4SDL) - Thanks to Pickle for the GP2X support and help on 320x240 support - Thanks to fackue for the Dreamcast support - Thanks to Chris Ballinger for the Mac OS X support - Thanks to Xilinx, Inc. for providing a list of maximum-length LFSR counters used for higher resolutions of fizzle fade Licenses: --------- - The original source code of Wolfenstein 3D: At your choice: - license-id.txt or - license-gpl.txt - The OPL2 emulator: At your choice: - license-mame.txt (fmopl.cpp) - license-gpl.txt (dbopl.cpp, USE_GPL define in version.h or set GPL=1 for Makefile) wolf4sdl-1.7+svn262/Wolf4SDL.VC9.vcproj0000644000175000017500000002024611644157635016600 0ustar fabianfabian wolf4sdl-1.7+svn262/version.h0000644000175000017500000000530711644157635015254 0ustar fabianfabian#ifndef _VERSION_H_ #define _VERSION_H_ #ifndef VERSIONALREADYCHOSEN // used for batch compiling /* Defines used for different versions */ //#define SPEAR //#define SPEARDEMO //#define UPLOAD #define GOODTIMES #define CARMACIZED //#define APOGEE_1_0 //#define APOGEE_1_1 //#define APOGEE_1_2 //#define JAPAN /* Wolf3d Full v1.1 Apogee (with ReadThis) - define CARMACIZED and APOGEE_1_1 Wolf3d Full v1.4 Apogee (with ReadThis) - define CARMACIZED Wolf3d Full v1.4 GT/ID/Activision - define CARMACIZED and GOODTIMES Wolf3d Full v1.4 Imagineer (Japanese) - define CARMACIZED and JAPAN Wolf3d Shareware v1.0 - define UPLOAD and APOGEE_1_0 Wolf3d Shareware v1.1 - define CARMACIZED and UPLOAD and APOGEE_1_1 Wolf3d Shareware v1.2 - define CARMACIZED and UPLOAD and APOGEE_1_2 Wolf3d Shareware v1.4 - define CARMACIZED and UPLOAD Spear of Destiny Full and Mission Disks - define CARMACIZED and SPEAR (and GOODTIMES for no FormGen quiz) Spear of Destiny Demo - define CARMACIZED and SPEAR and SPEARDEMO */ #endif //#define USE_FEATUREFLAGS // Enables the level feature flags (see bottom of wl_def.h) //#define USE_SHADING // Enables shading support (see wl_shade.cpp) //#define USE_DIR3DSPR // Enables directional 3d sprites (see wl_dir3dspr.cpp) //#define USE_FLOORCEILINGTEX // Enables floor and ceiling textures stored in the third mapplane (see wl_floorceiling.cpp) //#define USE_HIRES // Enables high resolution textures/sprites (128x128) //#define USE_PARALLAX 16 // Enables parallax sky with 16 textures per sky (see wl_parallax.cpp) //#define USE_CLOUDSKY // Enables cloud sky support (see wl_cloudsky.cpp) //#define USE_STARSKY // Enables star sky support (see wl_atmos.cpp) //#define USE_RAIN // Enables rain support (see wl_atmos.cpp) //#define USE_SNOW // Enables snow support (see wl_atmos.cpp) //#define FIXRAINSNOWLEAKS // Enables leaking ceilings fix (by Adam Biser, only needed if maps with rain/snow and ceilings exist) #define DEBUGKEYS // Comment this out to compile without the Tab debug keys #define ARTSEXTERN #define DEMOSEXTERN #define PLAYDEMOLIKEORIGINAL // When playing or recording demos, several bug fixes do not take // effect to let the original demos work as in the original Wolf3D v1.4 // (actually better, as the second demo rarely worked) //#define USE_GPL // Replaces the MAME OPL emulator by the DosBox one, which is under a GPL license #endif wolf4sdl-1.7+svn262/Makefile.dc0000644000175000017500000000352611644157635015444 0ustar fabianfabianTARGET = 1ST_READ.BIN include $(KOS_BASE)/Makefile.rules #KOS_ROMDISK_DIR = romdisk #OBJS += romdisk.o OBJS += dc/dc_cd.o OBJS += dc/dc_main.o OBJS += dc/dc_maple.o OBJS += dc/dc_video.o OBJS += dc/dc_vmu.o OBJS += mame/fmopl.o OBJS += id_ca.o OBJS += id_in.o OBJS += id_pm.o OBJS += id_sd.o OBJS += id_us_1.o OBJS += id_vh.o OBJS += id_vl.o OBJS += signon.o OBJS += wl_act1.o OBJS += wl_act2.o OBJS += wl_agent.o OBJS += wl_atmos.o OBJS += wl_cloudsky.o OBJS += wl_debug.o OBJS += wl_draw.o OBJS += wl_floorceiling.o OBJS += wl_game.o OBJS += wl_inter.o OBJS += wl_main.o OBJS += wl_menu.o OBJS += wl_parallax.o OBJS += wl_play.o OBJS += wl_state.o OBJS += wl_text.o KOS_CFLAGS += -I${KOS_BASE}/../kos-ports/include/SDL all: rm-elf $(TARGET) clean: -rm -f Wolf4SDL.bin Wolf4SDL.elf $(OBJS) rm-elf: -rm -f $(TARGET) Wolf4SDL.bin Wolf4SDL.elf Wolf4SDL.elf: $(OBJS) $(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o Wolf4SDL.elf $(KOS_START) \ $(OBJS) -lSDL_mixer -lSDL -lm -lz $(OBJEXTRA) $(KOS_LIBS) Wolf4SDL.bin: Wolf4SDL.elf kos-objcopy -O binary -R .stack Wolf4SDL.elf Wolf4SDL.bin 1ST_READ.BIN: Wolf4SDL.bin $(SCRAMBLE) Wolf4SDL.bin make-cd/1ST_READ.BIN ############################################################################## #dc-tool IP commands for BBA\LAN owners. # #It enables uploading binaries directly to your Dreamcast from your PC and #also allows for remote debugging. # #You'll have to change the IP to your BBA\LAN's IP and also the MAC address, #if your dc-tool IP needs ARP. ############################################################################## #arp: # arp.exe -s 192.168.1.137 00-d0-f1-02-8a-f9 run: Wolf4SDL.elf $(DCTOOL_IP) -t 192.168.1.137 -i data.iso -x Wolf4SDL.elf debug: Wolf4SDL.elf $(DCTOOL_IP) -g -t 192.168.1.137 -i data.iso -x Wolf4SDL.elf & sh-elf-insight.exe Wolf4SDL.elf reset: $(DCTOOL_IP) -r -t 192.168.1.137 wolf4sdl-1.7+svn262/wl_floorceiling.cpp0000644000175000017500000000664111463005243017264 0ustar fabianfabian#include "version.h" #ifdef USE_FLOORCEILINGTEX #include "wl_def.h" #include "wl_shade.h" // Textured Floor and Ceiling by DarkOne // With multi-textured floors and ceilings stored in lower and upper bytes of // according tile in third mapplane, respectively. void DrawFloorAndCeiling(byte *vbuf, unsigned vbufPitch, int min_wallheight) { fixed dist; // distance to row projection fixed tex_step; // global step per one screen pixel fixed gu, gv, du, dv; // global texture coordinates int u, v; // local texture coordinates byte *toptex, *bottex; unsigned lasttoptex = 0xffffffff, lastbottex = 0xffffffff; int halfheight = viewheight >> 1; int y0 = min_wallheight >> 3; // starting y value if(y0 > halfheight) return; // view obscured by walls if(!y0) y0 = 1; // don't let division by zero unsigned bot_offset0 = vbufPitch * (halfheight + y0); unsigned top_offset0 = vbufPitch * (halfheight - y0 - 1); // draw horizontal lines for(int y = y0, bot_offset = bot_offset0, top_offset = top_offset0; y < halfheight; y++, bot_offset += vbufPitch, top_offset -= vbufPitch) { dist = (heightnumerator / (y + 1)) << 5; gu = viewx + FixedMul(dist, viewcos); gv = -viewy + FixedMul(dist, viewsin); tex_step = (dist << 8) / viewwidth / 175; du = FixedMul(tex_step, viewsin); dv = -FixedMul(tex_step, viewcos); gu -= (viewwidth >> 1) * du; gv -= (viewwidth >> 1) * dv; // starting point (leftmost) #ifdef USE_SHADING byte *curshades = shadetable[GetShade(y << 3)]; #endif for(int x = 0, bot_add = bot_offset, top_add = top_offset; x < viewwidth; x++, bot_add++, top_add++) { if(wallheight[x] >> 3 <= y) { int curx = (gu >> TILESHIFT) & (MAPSIZE - 1); int cury = (-(gv >> TILESHIFT) - 1) & (MAPSIZE - 1); unsigned curtex = MAPSPOT(curx, cury, 2); if(curtex) { unsigned curtoptex = curtex >> 8; if (curtoptex != lasttoptex) { lasttoptex = curtoptex; toptex = PM_GetTexture(curtoptex); } unsigned curbottex = curtex & 0xff; if (curbottex != lastbottex) { lastbottex = curbottex; bottex = PM_GetTexture(curbottex); } u = (gu >> (TILESHIFT - TEXTURESHIFT)) & (TEXTURESIZE - 1); v = (gv >> (TILESHIFT - TEXTURESHIFT)) & (TEXTURESIZE - 1); unsigned texoffs = (u << TEXTURESHIFT) + (TEXTURESIZE - 1) - v; #ifdef USE_SHADING if(curtoptex) vbuf[top_add] = curshades[toptex[texoffs]]; if(curbottex) vbuf[bot_add] = curshades[bottex[texoffs]]; #else if(curtoptex) vbuf[top_add] = toptex[texoffs]; if(curbottex) vbuf[bot_add] = bottex[texoffs]; #endif } } gu += du; gv += dv; } } } #endif wolf4sdl-1.7+svn262/dc/0000755000175000017500000000000011644522674013776 5ustar fabianfabianwolf4sdl-1.7+svn262/dc/dc_main.h0000644000175000017500000000171211173541354015533 0ustar fabianfabian//Wolf4SDL\DC //dc_main.h //2009 - Cyle Terry #ifndef __DC_MAIN_H_ #define __DC_MAIN_H_ typedef uint8 uint8_t; typedef uint16 uint16_t; typedef uint32 uint32_t; typedef int8 int8_t; typedef int16 int16_t; typedef int32 int32_t; typedef int64 int64_t; typedef ptr_t uintptr_t; //dc_cd.cpp int DC_CheckDrive(); //dc_main.cpp void DC_Init(); void DC_CheckArguments(); int DC_CheckForMaps(char *path); #ifdef SPEAR #ifndef SPEARDEMO int DC_SetMission(char *path); #endif #endif //dc_maple.cpp int DC_ButtonPress(int button); int DC_MousePresent(); void DC_WaitButtonPress(int button); void DC_WaitButtonRelease(int button); //dc_video.cpp void DC_VideoInit(); void DC_DrawString(int x, int y, char *str); void DC_CLS(); void DC_Flip(); //dc_vmu.cpp extern void DiskFlopAnim(int x, int y); void DC_StatusDrawLCD(int index); void DC_StatusClearLCD(); void DC_SaveToVMU(char *fname, char *str); int DC_LoadFromVMU(char *fname); #endif wolf4sdl-1.7+svn262/dc/dc_main.cpp0000644000175000017500000002621511463520747016100 0ustar fabianfabian//Wolf4SDL\DC //dc_main.cpp //2009 - Cyle Terry #if defined(_arch_dreamcast) //TODO: Use Port A Only #include #include "../wl_def.h" #include "dc/video.h" #include "kos/dbglog.h" #include "kos/fs.h" #include "zlib/zlib.h" char dcwolf3dpath[1024]; void DC_CheckArguments() { FILE *fp; char *buf; char *result = NULL; bool sampleRateGiven = false; bool audioBufferGiven = false; int length = 0; fp = fopen("/cd/data/wolf3d/args.txt", "r"); if (!fp) return; fseek(fp, 0, SEEK_END); length = ftell (fp); fseek(fp, 0, SEEK_SET); buf = (char *)malloc(length + 2); fread(buf, 1, length, fp); buf[length] = 0; fclose(fp); result = strtok(buf, " "); while (result != NULL) { #ifndef SPEAR if (!strcmp(result, "--goobers")) #else if (!strcmp(result, "--debugmode")) #endif param_debugmode = true; else if (!strcmp(result, "--baby")) param_difficulty = 0; else if (!strcmp(result, "--easy")) param_difficulty = 1; else if (!strcmp(result, "--normal")) param_difficulty = 2; else if (!strcmp(result, "--hard")) param_difficulty = 3; else if (!strcmp(result, "--nowait")) param_nowait = true; else if (!strcmp(result, "--tedlevel")) { result = strtok(NULL, " "); param_tedlevel = atoi(result); } else if (!strcmp(result, "--res")) { result = strtok(NULL, " "); screenWidth = atoi(result); result = strtok(NULL, " "); screenHeight = atoi(result); if ( screenWidth % 320 && screenHeight % 200) { dbglog(DBG_DEBUG, "Screen height\\width must be a multiple of 320x200\n"); dbglog(DBG_DEBUG, "Defaulting to 320x200\n"); screenWidth = 320; screenHeight = 200; } } else if (!strcmp(result, "--resf")) { result = strtok(NULL, " "); screenWidth = atoi(result); result = strtok(NULL, " "); screenHeight = atoi(result); if (screenWidth < 320 && screenHeight < 200) { dbglog(DBG_DEBUG, "Screen height\\width must be at least 320x200\n"); dbglog(DBG_DEBUG, "Defaulting to 320x200\n"); screenWidth = 320; screenHeight = 200; } } else if (!strcmp(result, "--bits")) { result = strtok(NULL, " "); screenBits = atoi(result); switch (screenBits) { case 8: case 16: case 24: case 32: break; default: dbglog(DBG_DEBUG, "Screen bits must be either 8, 16, 24 or 32\n"); dbglog(DBG_DEBUG, "Defaulting to 8\n"); screenBits = 8; break; } result = strtok(NULL, " "); param_samplerate = atoi(result); sampleRateGiven = true; } else if (!strcmp(result, "--dblbuf")) { //Was --nodblbuf usedoublebuffering = true; } else if (!strcmp(result, "--extravbls")) { result = strtok(NULL, " "); extravbls = atoi(result); if(extravbls < 0) { dbglog(DBG_DEBUG, "Extravbls must be positive!\n"); dbglog(DBG_DEBUG, "Defaulting to 0\n"); extravbls = 0; } } else if (!strcmp(result, "--samplerate")) { result = strtok(NULL, " "); param_samplerate = atoi(result); sampleRateGiven = true; } else if (!strcmp(result, "--audiobuffer")) { result = strtok(NULL, " "); param_audiobuffer = atoi(result); audioBufferGiven = true; } else if (!strcmp(result, "--goodtimes")) param_goodtimes = true; result = strtok(NULL, " "); } free(buf); if (sampleRateGiven && !audioBufferGiven) param_audiobuffer = 4096 / (44100 / param_samplerate); } int DC_CheckForMaps(char *path) { file_t dir; dirent_t *dirent; char fpath[1024]; int disc_status; for(;;) { SDL_Delay(5); disc_status = DC_CheckDrive(); #ifdef SPEAR DC_DrawString(4, 1, "Sod4SDL\\DC"); #else DC_DrawString(4, 1, "Wolf4SDL\\DC"); #endif switch(disc_status) { //case CD_STATUS_BUSY: //case CD_STATUS_OPEN: // DC_DrawString(4, 6, "Please insert your Wolfenstein 3D CD."); // break; default: dir = fs_open(path, O_DIR); while(dirent = fs_readdir(dir)) { #ifdef SPEAR #ifdef SPEARDEMO if(!strcmp(dirent->name, "AUDIOHED.SDM")) { fs_close(dir); strcpy(dcwolf3dpath, path); return 0; } #else if(!strcmp(dirent->name, "AUDIOHED.SOD")) { fs_close(dir); strcpy(dcwolf3dpath, path); param_mission = DC_SetMission(path); return 0; } #endif #else #ifdef UPLOAD if(!strcmp(dirent->name, "AUDIOHED.WL1")) { fs_close(dir); strcpy(dcwolf3dpath, path); return 0; } #else if(!strcmp(dirent->name, "AUDIOHED.WL6")) { fs_close(dir); strcpy(dcwolf3dpath, path); return 0; } #endif #endif strcpy(fpath, path); sprintf(fpath, "%s/%s", fpath, dirent->name); DC_CheckForMaps(fpath); } fs_close(dir); return -1; } DC_Flip(); } } void DC_LoadMaps() { DC_CheckForMaps("/cd"); DC_CLS(); fs_chdir(dcwolf3dpath); #ifdef SPEAR #ifndef SPEARDEMO fs_copy("audiohed.sod", "/ram/audiohed.sod"); fs_copy("audiot.sod", "/ram/audiot.sod"); fs_copy("vgadict.sod", "/ram/vgadict.sod"); fs_copy("vgagraph.sod", "/ram/vgagraph.sod"); fs_copy("vgahead.sod", "/ram/vgahead.sod"); switch(param_mission) { case 0: fs_copy("gamemaps.sod", "/ram/gamemaps.sod"); fs_copy("maphead.sod", "/ram/maphead.sod"); fs_copy("vswap.sod", "/ram/vswap.sod"); break; case 1: fs_copy("gamemaps.sd1", "/ram/gamemaps.sd1"); fs_copy("maphead.sd1", "/ram/maphead.sd1"); fs_copy("vswap.sd1", "/ram/vswap.sd1"); break; case 2: fs_copy("gamemaps.sd2", "/ram/gamemaps.sd2"); fs_copy("maphead.sd2", "/ram/maphead.sd2"); fs_copy("vswap.sd2", "/ram/vswap.sd2"); break; case 3: fs_copy("gamemaps.sd3", "/ram/gamemaps.sd3"); fs_copy("maphead.sd3", "/ram/maphead.sd3"); fs_copy("vswap.sd3", "/ram/vswap.sd3"); break; } #else fs_copy("audiohed.sdm", "/ram/audiohed.sdm"); fs_copy("audiot.sdm", "/ram/audiot.sdm"); fs_copy("vgadict.sdm", "/ram/vgadict.sdm"); fs_copy("vgagraph.sdm", "/ram/vgagraph.sdm"); fs_copy("vgahead.sdm", "/ram/vgahead.sdm"); fs_copy("gamemaps.sdm", "/ram/gamemaps.sdm"); fs_copy("maphead.sdm", "/ram/maphead.sdm"); fs_copy("vswap.sdm", "/ram/vswap.sdm"); #endif #else #ifndef UPLOAD fs_copy("audiohed.wl6", "/ram/audiohed.wl6"); fs_copy("audiot.wl6", "/ram/audiot.wl6"); fs_copy("vgadict.wl6", "/ram/vgadict.wl6"); fs_copy("vgagraph.wl6", "/ram/vgagraph.wl6"); fs_copy("vgahead.wl6", "/ram/vgahead.wl6"); fs_copy("gamemaps.wl6", "/ram/gamemaps.wl6"); fs_copy("maphead.wl6", "/ram/maphead.wl6"); fs_copy("vswap.wl6", "/ram/vswap.wl6"); #else fs_copy("audiohed.wl1", "/ram/audiohed.wl1"); fs_copy("audiot.wl1", "/ram/audiot.wl1"); fs_copy("vgadict.wl1", "/ram/vgadict.wl1"); fs_copy("vgagraph.wl1", "/ram/vgagraph.wl1"); fs_copy("vgahead.wl1", "/ram/vgahead.wl1"); fs_copy("gamemaps.wl1", "/ram/gamemaps.wl1"); fs_copy("maphead.wl1", "/ram/maphead.wl1"); fs_copy("vswap.wl1", "/ram/vswap.wl1"); #endif #endif fs_chdir("/ram"); } void DC_Init() { DC_CheckArguments(); DC_VideoInit(); DC_LoadMaps(); DC_CLS(); } #ifdef SPEAR #ifndef SPEARDEMO int DC_SetMission(char *path) { int mission1 = 0; int mission2 = 0; int mission3 = 0; int missions = 0; int last_mission = 0; int current_mission = 0; int previous_mission = 0; int font_y = 0; char fname[1024]; bool finished = false; FILE *fp; sprintf(fname, "%s/MAPHEAD.SOD", path); fp = fopen(fname, "r"); if(fp) { fclose(fp); last_mission = 1; mission1 = 1; missions++; } sprintf(fname, "%s/MAPHEAD.SD2", path); fp = fopen(fname, "r"); if(fp) { fclose(fp); last_mission = 2; mission2 = 1; missions++; } sprintf(fname, "%s/MAPHEAD.SD3", path); fp = fopen(fname, "r"); if(fp) { fclose(fp); last_mission = 3; mission3 = 1; missions++; } if(missions > 1) { while(!finished) { SDL_Delay(5); DC_CLS(); DC_DrawString(2, 6 + current_mission, ">"); font_y = 6; DC_DrawString(4, 1, "Sod4SDL\\DC"); if(mission1 == 1) { DC_DrawString(4, font_y, "Spear of Destiny (Original Mission)"); font_y++; } if(mission2 == 1) { DC_DrawString(4, font_y, "Mission 2 - Return to Danger"); font_y++; } if(mission3 == 1) { DC_DrawString(4, font_y, "Mission 3 - Ultimate Challenge"); font_y++; } if(DC_ButtonPress(CONT_A)) { finished = true; break; } else if(DC_ButtonPress(CONT_DPAD_DOWN)) { current_mission++; previous_mission = -1; if(current_mission > (missions - 1)) current_mission = 0; DC_WaitButtonRelease(CONT_DPAD_DOWN); } else if(DC_ButtonPress(CONT_DPAD_UP)) { current_mission--; previous_mission = -1; if(current_mission < 0) current_mission = missions - 1; DC_WaitButtonRelease(CONT_DPAD_UP); } DC_Flip(); } /* Return Selected Mission */ // XXX: What does this do? Are the fall throughs intended?! switch(current_mission) { case 1: if(mission1) return 1; if(mission2 && !mission1) return 2; case 2: if(mission2 && mission1) return 2; if(mission3 && mission1 && !mission2) return 3; if(mission3 && mission2 && !mission1) return 3; case 3: if(mission3 && mission2 && mission1) return 3; } } return last_mission; } #endif #endif #endif wolf4sdl-1.7+svn262/dc/dc_maple.cpp0000644000175000017500000000241611150771163016240 0ustar fabianfabian//Wolf4SDL\DC //dc_maple.cpp //2009 - Cyle Terry #if defined(_arch_dreamcast) #include #include "dc/maple.h" #include "dc/maple/controller.h" #include "dc/maple/vmu.h" int DC_MousePresent() { return maple_first_mouse() != 0; } void DC_WaitButtonPress(int button) { int first_controller = 0; cont_cond_t controller_condition; first_controller = maple_first_controller(); cont_get_cond(first_controller, &controller_condition); while((controller_condition.buttons & button)) { SDL_Delay(5); cont_get_cond(first_controller, &controller_condition); } } void DC_WaitButtonRelease(int button) { int first_controller = 0; cont_cond_t controller_condition; first_controller = maple_first_controller(); cont_get_cond(first_controller, &controller_condition); while(!(controller_condition.buttons & button)) { SDL_Delay(5); cont_get_cond(first_controller, &controller_condition); } } int DC_ButtonPress(int button) { int first_controller = 0; cont_cond_t controller_condition; first_controller = maple_first_controller(); cont_get_cond(first_controller, &controller_condition); if(!(controller_condition.buttons & button)) return 1; else return 0; } #endif wolf4sdl-1.7+svn262/dc/dc_cd.cpp0000644000175000017500000000036411150771163015530 0ustar fabianfabian//Wolf4SDL\DC //dc_cd.cpp //2009 - Cyle Terry #if defined(_arch_dreamcast) #include "dc/cdrom.h" int DC_CheckDrive() { int disc_status; int disc_type; cdrom_get_status(&disc_status, &disc_type); return disc_status; } #endif wolf4sdl-1.7+svn262/dc/dc_vmu.h0000644000175000017500000014717411150771163015431 0ustar fabianfabian//Wolf4SDL\DC //dc_vmu.h //2009 - Cyle Terry // // BJ LCD images made by Antioch #define LCD_HEIGHT 32 #define LCD_WIDTH 48 const unsigned char vmu_bios_save_icon[544] ={ 0x00,0xf0,0x0d,0xf0,0x0f,0xf0,0x00,0x0f, 0x44,0xf4,0x62,0xfb,0x96,0xff,0xca,0xff, 0xff,0xff,0x00,0xf0,0x00,0xf0,0x00,0xf0, 0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xf0, 0x33,0x33,0x33,0x33,0x33,0x55,0x55,0x55, 0x55,0x55,0x53,0x33,0x33,0x33,0x33,0x33, 0x33,0x33,0x33,0x05,0x55,0x55,0x55,0x55, 0x56,0x56,0x55,0x53,0x33,0x33,0x33,0x33, 0x33,0x33,0x30,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x53,0x33,0x33,0x33, 0x33,0x33,0x34,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x66,0x55,0x53,0x33,0x33,0x33, 0x33,0x33,0x45,0x55,0x55,0x44,0x45,0x55, 0x45,0x45,0x56,0x55,0x55,0x33,0x33,0x33, 0x33,0x33,0x04,0x55,0x54,0x44,0x45,0x45, 0x44,0x55,0x55,0x55,0x55,0x33,0x33,0x33, 0x33,0x33,0x45,0x54,0x45,0x66,0x55,0x54, 0x44,0x44,0x55,0x54,0x45,0x33,0x33,0x33, 0x33,0x33,0x34,0x45,0x56,0x67,0x76,0x66, 0x55,0x55,0x56,0x65,0x54,0x33,0x33,0x33, 0x33,0x33,0x34,0x56,0x67,0x77,0x77,0x77, 0x56,0x56,0x56,0x75,0x54,0x33,0x33,0x33, 0x33,0x33,0x34,0x57,0x76,0x76,0x77,0x77, 0x76,0x66,0x77,0x76,0x64,0x33,0x33,0x33, 0x33,0x33,0x34,0x56,0x66,0x78,0x87,0x77, 0x75,0x57,0x78,0x66,0x64,0x33,0x33,0x33, 0x33,0x33,0x44,0x57,0x74,0x45,0x57,0x77, 0x76,0x65,0x44,0x76,0x60,0x43,0x33,0x33, 0x33,0x33,0x60,0x64,0x44,0x10,0x00,0x55, 0x50,0x04,0x41,0x46,0x64,0x63,0x33,0x33, 0x33,0x33,0x60,0x66,0x67,0x12,0x75,0x56, 0x55,0x71,0x28,0x65,0x54,0x63,0x33,0x33, 0x33,0x33,0x55,0x67,0x76,0x66,0x67,0x67, 0x77,0x76,0x66,0x76,0x64,0x53,0x33,0x33, 0x33,0x33,0x66,0x77,0x78,0x78,0x77,0x68, 0x77,0x77,0x88,0x76,0x67,0x63,0x33,0x33, 0x33,0x33,0x66,0x77,0x78,0x78,0x77,0x68, 0x77,0x77,0x88,0x76,0x67,0x63,0x33,0x33, 0x33,0x33,0x66,0x67,0x77,0x87,0x76,0x77, 0x76,0x77,0x78,0x76,0x66,0x63,0x33,0x33, 0x33,0x33,0x54,0x57,0x77,0x77,0x65,0x54, 0x55,0x67,0x77,0x65,0x54,0x53,0x33,0x33, 0x33,0x33,0x35,0x66,0x66,0x77,0x66,0x65, 0x77,0x67,0x77,0x66,0x65,0x33,0x33,0x33, 0x33,0x33,0x33,0x66,0x67,0x76,0x77,0x76, 0x77,0x77,0x76,0x66,0x63,0x33,0x33,0x33, 0x33,0x33,0x33,0x76,0x67,0x76,0x55,0x66, 0x65,0x56,0x77,0x67,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x67,0x76,0x76,0x67,0x77, 0x77,0x66,0x76,0x77,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x66,0x67,0x77,0x76,0x66, 0x67,0x77,0x77,0x67,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x56,0x67,0x77,0x87,0x77, 0x77,0x78,0x77,0x67,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x45,0x56,0x67,0x77,0x76, 0x67,0x77,0x76,0x67,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x55,0x55,0x55,0x66,0x55, 0x66,0x57,0x55,0x77,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x44,0x44,0x44,0x44,0x44, 0x44,0x54,0x56,0x77,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x55,0x54,0x54,0x45,0x54, 0x55,0x55,0x77,0x57,0x73,0x33,0x33,0x33, 0x33,0x33,0x33,0x44,0x45,0x45,0x56,0x56, 0x56,0x57,0x77,0x75,0x53,0x33,0x33,0x33, 0x33,0x33,0x33,0x54,0x44,0x55,0x66,0x67, 0x76,0x56,0x76,0x75,0x53,0x33,0x33,0x33, 0x33,0x33,0x33,0x45,0x55,0x55,0x67,0x66, 0x77,0x66,0x76,0x55,0x53,0x33,0x33,0x33 }; static const char FACE1ALCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ........... ..... \ ... . .. . . . .. . ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . \ . . . . \ . ......... . \ . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE1BLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ... .. \ ... . .. .. \ ........ ..... .. \ ...... ........ ..... \ ... .. . . ... . ... \ ... . ... \ .. .. \ ... . . ... \ . . ...... . . \ . . . . . . \ . . . \ . ......... . \ . . \ . .... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE1CLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ...... \ .. .. . .. \ .. ..... ..... .. \ ..... ......... ...... \ ... . ... . . .. ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . \ . . . \ . ........ . \ . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE2ALCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ........... ..... \ ... . .. . . . .. . ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . \ . . . . \ . ......... . \ . . . \ . .... . . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE2BLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ... .. \ ... . .. .. \ ........ ..... .. \ ...... ........ ..... \ ... .. . . ... . ... \ ... . ... \ .. .. \ ... . . ... \ . . ...... . . \ . . . . . . \ . . . \ . ......... . \ . . . \ . .... . . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE2CLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ...... \ .. .. . .. \ .. ..... ..... .. \ ..... ......... ...... \ ... . ... . . .. ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . \ . . . \ . ........ . \ . . . \ . ..... . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE3ALCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ........... ..... \ ... . .. . . . .. . ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . . \ . . . . . \ . ......... . \ . .. . \ . .... . . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE3BLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ... .. \ ... . .. .. \ ........ ..... .. \ ...... ........ ..... \ ... .. . . ... . ... \ ... . ... \ .. .. \ ... . . ... \ . . ...... . . \ . . . . . . . \ . .. . . \ . ......... . \ . .. . \ . .... . . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE3CLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ...... \ .. .. . .. \ .. ..... ..... .. \ ..... ......... ...... \ ... . ... . ... .. ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . \ . . .. . \ . ........ . \ . .. . \ . ..... . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE4ALCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ........... ..... \ ... . .. . . ...... ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . . . \ . . . . . . \ . ......... . \ . ...... . \ . .... . . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE4BLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ... .. \ ... . .. .. \ ........ ..... .. \ ...... ........ ..... \ ... .. . ..... . ... \ ... . ... \ .. .. \ ... . . ... \ . . ...... . . \ . . . . . . . . \ . . .. . . \ . ......... . \ . ..... . \ . .... . . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE4CLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ...... \ .. .. . .. \ .. ..... ..... .. \ ..... ......... ...... \ ... . ... . ... .. ... \ ... . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . .. . . . \ . . ... . \ . ........ . \ . ... . \ . ..... . \ .. . .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE5ALCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ......... . ..... \ ... . .. . . ...... ... \ ... . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . . . \ . . . . . . \ . ......... . \ . . ...... . \ . .......... . \ .. . . .. \ ... . . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE5BLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ... .. \ ... . .. .. \ ........ ..... .. \ ...... ............... \ ... .. . .. .. .. ... \ ... . ... \ .. .. \ ... . . ... \ . . ...... . . \ . . .. . . . . \ . . .. . . \ . ......... . \ . . ..... . \ . . .... . . \ .. . . .. \ ... . . . . \ .... . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE5CLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. ...... \ .. .. ... .. \ .. ..... ..... .. \ ..... ................ \ ... . ... . ... .. ... \ ... . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . .. . . . \ . . . ... . \ . ........ . \ . .. ... . \ . . .... . . \ .. . .. \ ... . . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE6ALCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . ... ... \ .. . .... . . . . \ . . . . . . . \ ... . . . . .. \ .. . ... .. \ .. . .. \ .. .... .... .. \ ..... .... .......... \ ... . .. .......... ... \ ... . .... ... \ .. .. \ .. .. \ .. . . .. \ . . .. .. . . \ . . . ... . . . \ . . . . \ . ....... . \ . .. ...... . \ .. .. . .. \ ... . . . . \ .... . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE6BLCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . ... ... \ .. . .... . . . . \ . . . . . . . \ ... . . . . .. \ .. . ... .. \ .. ... . .. \ ... .. .... .. \ ... .. ... .......... \ ... .. ........... ... \ ... . .... ... \ .. .. \ .. .. \ .. . . .. \ . . .. .. . . \ . . . ... . . . \ . . . . \ . ....... . \ . .. ...... . \ .. .. . .. \ ... . . . . \ .... . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE6CLCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . ... ... \ .. . .... . . . . \ . . . . . . . \ ... . . . . .. \ .. . ... .. \ .. ..... .. \ .. .... . . ... \ ..... ... .......... \ ... . ............ ... \ ... . .... ... \ .. .. \ .. .. \ .. . . .. \ . . .. .. . . \ . . . ... . . . \ . . . . \ . ....... . \ . .. ..... . \ .. .. . .. \ ... . . . . \ .... . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE7ALCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . . \ .. . . . . \ . . .. . . .. ... \ .... . .. . . . .. \ ... .. . . . .. \ .. . . . .. \ ... .. ... \ ... .... ...... ... \ ..... .... .......... \ ... .. ... ..... ... \ .. . ...... .. \ . .. . \ . . \ .. . . .. \ . . .. .. ... \ . . . ... . ... \ . . . . \ . ......... . \ .. .. ...... .. \ ... .. . . . \ .... . . . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE7BLCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . . \ .. . . . . \ . . .. . . .. ... \ .... . .. . . . .. \ ... .. . . . .. \ .. . . .. \ ... . .. ... \ ... . .. .... ... \ ...... .. .......... \ ... ... .... ..... ... \ .. . ...... .. \ . .. . \ . . . \ . . .. \ . .. .. ... \ .. ... . ... \ .. . . . \ .. ........ . \ ... .. ...... .. \ .... .. . . . \ ..... . . . . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE7CLCD[] = "\ \ ............... \ . . \ . . . \ . . . . \ .. . . \ . . . . \ .. . . . . \ . . .. . . .. ... \ .... . .. . . . .. \ ... .. . . . .. \ .. . . . .. \ ... ... ... \ ... .... ...... ... \ ..... ... .......... \ ... .. .. ... ..... ... \ .. . ....... .. \ . .. . . \ . . \ .. . . .. \ . . .. .. ... \ . . . ... . ... \ . . . . \ . .......... . \ .. ... ..... .. \ ... .. . . . \ .... .. . .. . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char FACE8ALCD[] = "\ \ \ \ .............. \ . . . \ . . .. \ . . . .. \ .. . . \ . . . . \ .. . . \ ... . \ .. . . \ ... . . . \ .. . . . . \ .... .... .... \ ... ... . . . .. \ ... . . . .. . .. \ .... . . . . . ... \ ... ... ... . ... \ .. ..... ...... . \ . ............. ... \ . .... . ...... .. \ . .. . . . .. \ . . . . . . \ . . . . . . \ ... ... . .. \ ... ....... . . \ ... ......... . . \ ... ... .. . . \ ................ . \ .... . . \ ..... .. . "; static const char GOTGATLINGLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. .. .. \ .. . . .. \ .. ..... ..... .. \ .. . .. .. .. .. . .. \ ... .. . . . . .. ... \ ... . . ... \ ... ... \ .. .. \ ..... . . ..... \ . . ....... . . \ . . .. . .. . . \ . . ......... . . \ . . . . \ .. . . .. \ .. ........ .. \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char MUTANTBJLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. . . . . .. \ .. . . . . .. \ .. .. . . .. .. \ ..... .. . . . .. ..... \ ... . . .. . .. . . ... \ ... .... . .... ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . \ . . . . \ . . ....... . . \ . . . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; #ifdef SPEAR static const char GODMODEFACE1LCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. \ .. ..... ..... .. \ ..... ....... ..... \ ... . . . . . ... \ ... . . . . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . \ . . \ . ......... . \ . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char GODMODEFACE2LCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .... .. \ .. . .. ..... .. \ ..... ......... ..... \ ... . . . . . ... \ ... . . . . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . \ . . \ . ......... . \ . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char GODMODEFACE3LCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .... .. \ .. .... .. .... \ ..... ........ . ... \ ... . . . . . ... \ ... . . . . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . \ . . \ . ......... . \ . . \ . ..... . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char BJWAITING1LCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ......... ..... \ ... . ... . ... . ... \ ... . ... \ .. .. \ ... . . ... \ . .. ....... .. . \ . . . . . . . \ . . . . \ . . ..... . . \ . . \ . . \ .. .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char BJWAITING2LCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. .. .. .. \ .. ..... ..... .. \ ..... ........... ..... \ ... . .. . . . .. . ... \ ... . ... \ .. .. \ .... . . .... \ . . ....... . . \ . . . . . . . \ . . . . \ . ..... . \ . .. . .. . \ . . . . . \ .. . . .. \ ... ... . . \ .... . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; static const char BJOUCHLCD[] = "\ \ ............... \ . . \ . . . \ . . . ... ... \ .. . .... . . . .. \ . . . . . .. . \ .. . . . . \ . . . . \ ... .. \ .. .. \ .. ...... ...... .. \ ..... . . ..... \ ... . .. . . .. . ... \ ... . .. .. .. .. . ... \ ... . . . . ... \ .. .. \ ... . . ... \ . . ....... . . \ . . . . . . . \ . . \ . ....... . \ . ......... . \ . . \ .. ... .. \ ... . . . \ .... . . . \ ............... . \ ..... . .. \ .... . . \ ..... . . \ ..... . . "; #endif //SPEAR static const char *e_BJFaces[] = { FACE1ALCD, FACE1BLCD, FACE1CLCD, FACE2ALCD, FACE2BLCD, FACE2CLCD, FACE3ALCD, FACE3BLCD, FACE3CLCD, FACE4ALCD, FACE4BLCD, FACE4CLCD, FACE5ALCD, FACE5BLCD, FACE5CLCD, FACE6ALCD, FACE6BLCD, FACE6CLCD, FACE7ALCD, FACE7BLCD, FACE7CLCD, FACE8ALCD, GOTGATLINGLCD, #ifndef SPEAR MUTANTBJLCD #else MUTANTBJLCD, GODMODEFACE1LCD, GODMODEFACE2LCD, GODMODEFACE3LCD, BJWAITING1LCD, BJOUCHLCD #endif }; wolf4sdl-1.7+svn262/dc/dc_video.cpp0000644000175000017500000000123111173541354016244 0ustar fabianfabian//Wolf4SDL\DC //dc_video.cpp //2009 - Cyle Terry #if defined(_arch_dreamcast) #include #include #include "../wl_def.h" #include "dc/biosfont.h" #include "dc/video.h" static uint16 *bbuffer; void DC_VideoInit() { bbuffer = (uint16 *)malloc(640 * 480 * 2); DC_CLS(); } void DC_DrawString(int x, int y, char *str) { bfont_draw_str(bbuffer + ((y + 1) * 24 * 640) + (x * 12), 640, 0, str); } void DC_Flip() { memcpy(vram_s, bbuffer, 640 * 480 * 2); } void DC_CLS() { int x, y, ofs; for(y = 0; y < 480; y++) { ofs = (640 * y); for(x = 0; x < 640; x++) bbuffer[ofs + x] = 0; } } #endif wolf4sdl-1.7+svn262/dc/dc_vmu.cpp0000644000175000017500000001050111150771163015743 0ustar fabianfabian//Wolf4SDL\DC //dc_vmu.cpp //2009 - Cyle Terry #if defined(_arch_dreamcast) #include #include "../wl_def.h" #include "dc/maple.h" #include "dc/maple/controller.h" #include "dc/maple/vmu.h" #include "dc/vmu_pkg.h" #include "kos/fs.h" #include "zlib/zlib.h" #include "dc_vmu.h" maple_device_t *vmu_lcd_addr[8]; void DC_StatusDrawLCD(int lcd) { const char *character; int x, y; int xi, xb; int i = 0; uint8 bitmap[48 * 32 / 8]; maple_device_t *vmu_lcd_addr; memset(bitmap, 0, sizeof(bitmap)); character = e_BJFaces[lcd - FACE1APIC]; if(character) { for(y = 0; y < LCD_HEIGHT; y++) { for(x = 0; x < LCD_WIDTH; x++) { xi = x / 8; xb = 0x80 >> (x % 8); if(character[(31 - y) * 48 + (47 - x)] == '.') bitmap[y * (48 / 8) + xi] |= xb; } } } while ((vmu_lcd_addr = maple_enum_type(i++, MAPLE_FUNC_LCD))) vmu_draw_lcd(vmu_lcd_addr, bitmap); vmu_shutdown (); } void DC_StatusClearLCD() { int x, y; int xi; int i = 0; uint8 bitmap[48 * 32 / 8]; maple_device_t *vmu_lcd_addr; memset(bitmap, 0, sizeof(bitmap)); for(y = 0; y < LCD_HEIGHT; y++) { for(x = 0; x < LCD_WIDTH; x++) { xi = x / 8; bitmap[y * (48 / 8) + xi] |= 0; } } while ((vmu_lcd_addr = maple_enum_type(i++, MAPLE_FUNC_LCD))) vmu_draw_lcd(vmu_lcd_addr, bitmap); vmu_shutdown (); } void DC_SaveToVMU(char *fname, char *str) { char destination[32]; int filesize = 0; int vmu_package_size; unsigned long zipsize = 0; unsigned char *vmu_package_out; unsigned char *data; unsigned char *zipdata; file_t file; vmu_pkg_t vmu_package; DiskFlopAnim(102, 85); strcpy(destination, "/vmu/a1/"); strcat(destination, fname); file = fs_open(fname, O_RDONLY); filesize = fs_total(file); data = (unsigned char*)malloc(filesize); fs_read(file, data, filesize); fs_close(file); DiskFlopAnim(102, 85); zipsize = filesize * 2; zipdata = (unsigned char*)malloc(zipsize); compress(zipdata, &zipsize, data, filesize); DiskFlopAnim(102, 85); #ifdef SPEAR strcpy(vmu_package.desc_short, "Sod4SDL\\DC"); strcpy(vmu_package.app_id, "Sod4SDL\\DC"); #else strcpy(vmu_package.desc_short, "Wolf4SDL\\DC"); strcpy(vmu_package.app_id, "Wolf4SDL\\DC"); #endif if(str == NULL) strcpy(vmu_package.desc_long, "Configuration"); else { strcpy(vmu_package.desc_long, "Game Save - "); strcat(vmu_package.desc_long, str); } vmu_package.icon_cnt = 1; vmu_package.icon_anim_speed = 0; memcpy(&vmu_package.icon_pal[0], vmu_bios_save_icon, 32); vmu_package.icon_data = vmu_bios_save_icon + 32; vmu_package.eyecatch_type = VMUPKG_EC_NONE; vmu_package.data_len = zipsize; vmu_package.data = zipdata; vmu_pkg_build(&vmu_package, &vmu_package_out, &vmu_package_size); DiskFlopAnim(102, 85); fs_unlink(destination); file = fs_open(destination, O_WRONLY); fs_write(file, vmu_package_out, vmu_package_size); fs_close(file); DiskFlopAnim(102, 85); free(vmu_package_out); free(data); free(zipdata); } int DC_LoadFromVMU(char *fname) { char fpath[64]; int file; int filesize; unsigned long unzipsize; unsigned char *data; unsigned char *unzipdata; vmu_pkg_t vmu_package; sprintf(fpath, "/vmu/a1/%s", fname); file = fs_open(fpath, O_RDONLY); if(file == 0) return 0; filesize = fs_total(file); if(filesize <= 0) return 0; data = (unsigned char*)malloc(filesize); fs_read(file, data, filesize); fs_close(file); if(!strcmp(fname, configname)) DiskFlopAnim(102, 85); vmu_pkg_parse(data, &vmu_package); if(!strcmp(fname, configname)) DiskFlopAnim(102, 85); unzipdata = (unsigned char*)malloc(65536); unzipsize = 65536; uncompress(unzipdata, &unzipsize, (unsigned char*)vmu_package.data, vmu_package.data_len); if(!strcmp(fname, configname)) DiskFlopAnim(102, 85); fs_unlink(fname); file = fs_open(fname, O_WRONLY); fs_write(file, unzipdata, unzipsize); fs_close(file); if(!strcmp(fname, configname)) DiskFlopAnim(102, 85); free(data); free(unzipdata); return 1; } #endif wolf4sdl-1.7+svn262/wl_def.h0000644000175000017500000010565011577474656015043 0ustar fabianfabian#ifndef WL_DEF_H #define WL_DEF_H // Defines which version shall be built and configures supported extra features #include "version.h" #include #include #include #include #include #include #if defined(_arch_dreamcast) # include # include "dc/dc_main.h" #elif !defined(_WIN32) # include # include # include #endif #include #if !defined O_BINARY # define O_BINARY 0 #endif #pragma pack(1) #if defined(_arch_dreamcast) #define YESBUTTONNAME "A" #define NOBUTTONNAME "B" #elif defined(GP2X) #define YESBUTTONNAME "Y" #define NOBUTTONNAME "B" #else #define YESBUTTONNAME "Y" #define NOBUTTONNAME "N" #endif #include "foreign.h" #ifndef SPEAR #include "audiowl6.h" #ifdef UPLOAD #include "gfxv_apo.h" #else #ifdef JAPAN #include "gfxv_jap.h" #else #ifdef GOODTIMES #include "gfxv_wl6.h" #else #include "gfxv_apo.h" #endif #endif #endif #else #include "audiosod.h" #include "gfxv_sod.h" #include "f_spear.h" #endif typedef uint8_t byte; typedef uint16_t word; typedef int32_t fixed; typedef uint32_t longword; typedef int8_t boolean; typedef void * memptr; typedef struct { int x,y; } Point; typedef struct { Point ul,lr; } Rect; void Quit(const char *errorStr, ...); #include "id_pm.h" #include "id_sd.h" #include "id_in.h" #include "id_vl.h" #include "id_vh.h" #include "id_us.h" #include "id_ca.h" #include "wl_menu.h" #define MAPSPOT(x,y,plane) (mapsegs[plane][((y)<0?1:-1) #define ABS(x) ((int)(x)>0?(x):-(x)) #define LABS(x) ((int32_t)(x)>0?(x):-(x)) #define abs(x) ABS(x) /* ============================================================================= GLOBAL CONSTANTS ============================================================================= */ #define MAXTICS 10 #define DEMOTICS 4 #define MAXACTORS 150 // max number of nazis, etc / map #define MAXSTATS 400 // max number of lamps, bonus, etc #define MAXDOORS 64 // max number of sliding doors #define MAXWALLTILES 64 // max number of wall tiles // // tile constants // #define ICONARROWS 90 #define PUSHABLETILE 98 #define EXITTILE 99 // at end of castle #define AREATILE 107 // first of NUMAREAS floor tiles #define NUMAREAS 37 #define ELEVATORTILE 21 #define AMBUSHTILE 106 #define ALTELEVATORTILE 107 #define NUMBERCHARS 9 //---------------- #define EXTRAPOINTS 40000 #define PLAYERSPEED 3000 #define RUNSPEED 6000 #define SCREENSEG 0xa000 #define SCREENBWIDE 80 #define HEIGHTRATIO 0.50 // also defined in id_mm.c #define BORDERCOLOR 3 #define FLASHCOLOR 5 #define FLASHTICS 4 #ifndef SPEAR #define LRpack 8 // # of levels to store in endgame #else #define LRpack 20 #endif #define PLAYERSIZE MINDIST // player radius #define MINACTORDIST 0x10000l // minimum dist from player center // to any actor center #define NUMLATCHPICS 100 #undef M_PI #define PI 3.141592657 #define M_PI PI #define GLOBAL1 (1l<<16) #define TILEGLOBAL GLOBAL1 #define PIXGLOBAL (GLOBAL1/64) #define TILESHIFT 16l #define UNSIGNEDSHIFT 8 #define ANGLES 360 // must be divisable by 4 #define ANGLEQUAD (ANGLES/4) #define FINEANGLES 3600 #define ANG90 (FINEANGLES/4) #define ANG180 (ANG90*2) #define ANG270 (ANG90*3) #define ANG360 (ANG90*4) #define VANG90 (ANGLES/4) #define VANG180 (VANG90*2) #define VANG270 (VANG90*3) #define VANG360 (VANG90*4) #define MINDIST (0x5800l) #define mapshift 6 #define MAPSIZE (1<temp1 short tictime; void (*think) (void *),(*action) (void *); struct statestruct *next; } statetype; //--------------------- // // trivial actor structure // //--------------------- typedef struct statstruct { byte tilex,tiley; short shapenum; // if shapenum == -1 the obj has been removed byte *visspot; uint32_t flags; byte itemnumber; } statobj_t; //--------------------- // // door actor structure // //--------------------- typedef enum { dr_open,dr_closed,dr_opening,dr_closing } doortype; typedef struct doorstruct { byte tilex,tiley; boolean vertical; byte lock; doortype action; short ticcount; } doorobj_t; //-------------------- // // thinking actor structure // //-------------------- typedef struct objstruct { activetype active; short ticcount; classtype obclass; statetype *state; uint32_t flags; // FL_SHOOTABLE, etc int32_t distance; // if negative, wait for that door to open dirtype dir; fixed x,y; word tilex,tiley; byte areanumber; short viewx; word viewheight; fixed transx,transy; // in global coord short angle; short hitpoints; int32_t speed; short temp1,temp2,hidden; struct objstruct *next,*prev; } objtype; enum { bt_nobutton=-1, bt_attack=0, bt_strafe, bt_run, bt_use, bt_readyknife, bt_readypistol, bt_readymachinegun, bt_readychaingun, bt_nextweapon, bt_prevweapon, bt_esc, bt_pause, bt_strafeleft, bt_straferight, bt_moveforward, bt_movebackward, bt_turnleft, bt_turnright, NUMBUTTONS }; #define NUMWEAPONS 4 typedef enum { wp_knife, wp_pistol, wp_machinegun, wp_chaingun } weapontype; enum { gd_baby, gd_easy, gd_medium, gd_hard }; //--------------- // // gamestate structure // //--------------- typedef struct { short difficulty; short mapon; int32_t oldscore,score,nextextra; short lives; short health; short ammo; short keys; weapontype bestweapon,weapon,chosenweapon; short faceframe; short attackframe,attackcount,weaponframe; short episode,secretcount,treasurecount,killcount, secrettotal,treasuretotal,killtotal; int32_t TimeCount; int32_t killx,killy; boolean victoryflag; // set during victory animations } gametype; typedef enum { ex_stillplaying, ex_completed, ex_died, ex_warped, ex_resetgame, ex_loadedgame, ex_victorious, ex_abort, ex_demodone, ex_secretlevel } exit_t; extern word *mapsegs[MAPPLANES]; extern int mapon; /* ============================================================================= WL_MAIN DEFINITIONS ============================================================================= */ extern boolean loadedgame; extern fixed focallength; extern int viewscreenx, viewscreeny; extern int viewwidth; extern int viewheight; extern short centerx; extern int32_t heightnumerator; extern fixed scale; extern int dirangle[9]; extern int mouseadjustment; extern int shootdelta; extern unsigned screenofs; extern boolean startgame; extern char str[80]; extern char configdir[256]; extern char configname[13]; // // Command line parameter variables // extern boolean param_debugmode; extern boolean param_nowait; extern int param_difficulty; extern int param_tedlevel; extern int param_joystickindex; extern int param_joystickhat; extern int param_samplerate; extern int param_audiobuffer; extern int param_mission; extern boolean param_goodtimes; extern boolean param_ignorenumchunks; void NewGame (int difficulty,int episode); void CalcProjection (int32_t focal); void NewViewSize (int width); boolean SetViewSize (unsigned width, unsigned height); boolean LoadTheGame(FILE *file,int x,int y); boolean SaveTheGame(FILE *file,int x,int y); void ShowViewSize (int width); void ShutdownId (void); /* ============================================================================= WL_GAME DEFINITIONS ============================================================================= */ extern gametype gamestate; extern byte bordercol; extern SDL_Surface *latchpics[NUMLATCHPICS]; extern char demoname[13]; void SetupGameLevel (void); void GameLoop (void); void DrawPlayBorder (void); void DrawStatusBorder (byte color); void DrawPlayScreen (void); void DrawPlayBorderSides (void); void ShowActStatus(); void PlayDemo (int demonumber); void RecordDemo (void); #ifdef SPEAR extern int32_t spearx,speary; extern unsigned spearangle; extern boolean spearflag; #endif #define ClearMemory SD_StopDigitized // JAB #define PlaySoundLocTile(s,tx,ty) PlaySoundLocGlobal(s,(((int32_t)(tx) << TILESHIFT) + (1L << (TILESHIFT - 1))),(((int32_t)ty << TILESHIFT) + (1L << (TILESHIFT - 1)))) #define PlaySoundLocActor(s,ob) PlaySoundLocGlobal(s,(ob)->x,(ob)->y) void PlaySoundLocGlobal(word s,fixed gx,fixed gy); void UpdateSoundLoc(void); /* ============================================================================= WL_PLAY DEFINITIONS ============================================================================= */ #define BASEMOVE 35 #define RUNMOVE 70 #define BASETURN 35 #define RUNTURN 70 #define JOYSCALE 2 extern byte tilemap[MAPSIZE][MAPSIZE]; // wall values only extern byte spotvis[MAPSIZE][MAPSIZE]; extern objtype *actorat[MAPSIZE][MAPSIZE]; extern objtype *player; extern unsigned tics; extern int viewsize; extern int lastgamemusicoffset; // // current user input // extern int controlx,controly; // range from -100 to 100 extern boolean buttonstate[NUMBUTTONS]; extern objtype objlist[MAXACTORS]; extern boolean buttonheld[NUMBUTTONS]; extern exit_t playstate; extern boolean madenoise; extern statobj_t statobjlist[MAXSTATS]; extern statobj_t *laststatobj; extern objtype *newobj,*killerobj; extern doorobj_t doorobjlist[MAXDOORS]; extern doorobj_t *lastdoorobj; extern int godmode; extern boolean demorecord,demoplayback; extern int8_t *demoptr, *lastdemoptr; extern memptr demobuffer; // // control info // extern boolean mouseenabled,joystickenabled; extern int dirscan[4]; extern int buttonscan[NUMBUTTONS]; extern int buttonmouse[4]; extern int buttonjoy[32]; void InitActorList (void); void GetNewActor (void); void PlayLoop (void); void CenterWindow(word w,word h); void InitRedShifts (void); void FinishPaletteShifts (void); void RemoveObj (objtype *gone); void PollControls (void); int StopMusic(void); void StartMusic(void); void ContinueMusic(int offs); void StartDamageFlash (int damage); void StartBonusFlash (void); #ifdef SPEAR extern int32_t funnyticount; // FOR FUNNY BJ FACE #endif extern objtype *objfreelist; // *obj,*player,*lastobj, extern boolean noclip,ammocheat; extern int singlestep, extravbls; /* ============================================================================= WL_INTER ============================================================================= */ void IntroScreen (void); void PG13(void); void DrawHighScores(void); void CheckHighScore (int32_t score,word other); void Victory (void); void LevelCompleted (void); void ClearSplitVWB (void); void PreloadGraphics(void); /* ============================================================================= WL_DEBUG ============================================================================= */ int DebugKeys (void); /* ============================================================================= WL_DRAW DEFINITIONS ============================================================================= */ // // math tables // extern short *pixelangle; extern int32_t finetangent[FINEANGLES/4]; extern fixed sintable[]; extern fixed *costable; extern int *wallheight; extern word horizwall[],vertwall[]; extern int32_t lasttimecount; extern int32_t frameon; extern unsigned screenloc[3]; extern boolean fizzlein, fpscounter; extern fixed viewx,viewy; // the focal point extern fixed viewsin,viewcos; void ThreeDRefresh (void); void CalcTics (void); typedef struct { word leftpix,rightpix; word dataofs[64]; // table data after dataofs[rightpix-leftpix+1] } t_compshape; /* ============================================================================= WL_STATE DEFINITIONS ============================================================================= */ #define TURNTICS 10 #define SPDPATROL 512 #define SPDDOG 1500 void InitHitRect (objtype *ob, unsigned radius); void SpawnNewObj (unsigned tilex, unsigned tiley, statetype *state); void NewState (objtype *ob, statetype *state); boolean TryWalk (objtype *ob); void SelectChaseDir (objtype *ob); void SelectDodgeDir (objtype *ob); void SelectRunDir (objtype *ob); void MoveObj (objtype *ob, int32_t move); boolean SightPlayer (objtype *ob); void KillActor (objtype *ob); void DamageActor (objtype *ob, unsigned damage); boolean CheckLine (objtype *ob); boolean CheckSight (objtype *ob); /* ============================================================================= WL_AGENT DEFINITIONS ============================================================================= */ extern short anglefrac; extern int facecount, facetimes; extern word plux,pluy; // player coordinates scaled to unsigned extern int32_t thrustspeed; extern objtype *LastAttacker; void Thrust (int angle, int32_t speed); void SpawnPlayer (int tilex, int tiley, int dir); void TakeDamage (int points,objtype *attacker); void GivePoints (int32_t points); void GetBonus (statobj_t *check); void GiveWeapon (int weapon); void GiveAmmo (int ammo); void GiveKey (int key); // // player state info // void StatusDrawFace(unsigned picnum); void DrawFace (void); void DrawHealth (void); void HealSelf (int points); void DrawLevel (void); void DrawLives (void); void GiveExtraMan (void); void DrawScore (void); void DrawWeapon (void); void DrawKeys (void); void DrawAmmo (void); /* ============================================================================= WL_ACT1 DEFINITIONS ============================================================================= */ extern doorobj_t doorobjlist[MAXDOORS]; extern doorobj_t *lastdoorobj; extern short doornum; extern word doorposition[MAXDOORS]; extern byte areaconnect[NUMAREAS][NUMAREAS]; extern boolean areabyplayer[NUMAREAS]; extern word pwallstate; extern word pwallpos; // amount a pushable wall has been moved (0-63) extern word pwallx,pwally; extern byte pwalldir,pwalltile; void InitDoorList (void); void InitStaticList (void); void SpawnStatic (int tilex, int tiley, int type); void SpawnDoor (int tilex, int tiley, boolean vertical, int lock); void MoveDoors (void); void MovePWalls (void); void OpenDoor (int door); void PlaceItemType (int itemtype, int tilex, int tiley); void PushWall (int checkx, int checky, int dir); void OperateDoor (int door); void InitAreas (void); /* ============================================================================= WL_ACT2 DEFINITIONS ============================================================================= */ #define s_nakedbody s_static10 extern statetype s_grddie1; extern statetype s_dogdie1; extern statetype s_ofcdie1; extern statetype s_mutdie1; extern statetype s_ssdie1; extern statetype s_bossdie1; extern statetype s_schabbdie1; extern statetype s_fakedie1; extern statetype s_mechadie1; extern statetype s_hitlerdie1; extern statetype s_greteldie1; extern statetype s_giftdie1; extern statetype s_fatdie1; extern statetype s_spectredie1; extern statetype s_angeldie1; extern statetype s_transdie0; extern statetype s_uberdie0; extern statetype s_willdie1; extern statetype s_deathdie1; extern statetype s_grdchase1; extern statetype s_dogchase1; extern statetype s_ofcchase1; extern statetype s_sschase1; extern statetype s_mutchase1; extern statetype s_bosschase1; extern statetype s_schabbchase1; extern statetype s_fakechase1; extern statetype s_mechachase1; extern statetype s_gretelchase1; extern statetype s_giftchase1; extern statetype s_fatchase1; extern statetype s_spectrechase1; extern statetype s_angelchase1; extern statetype s_transchase1; extern statetype s_uberchase1; extern statetype s_willchase1; extern statetype s_deathchase1; extern statetype s_blinkychase1; extern statetype s_hitlerchase1; extern statetype s_grdpain; extern statetype s_grdpain1; extern statetype s_ofcpain; extern statetype s_ofcpain1; extern statetype s_sspain; extern statetype s_sspain1; extern statetype s_mutpain; extern statetype s_mutpain1; extern statetype s_deathcam; extern statetype s_schabbdeathcam2; extern statetype s_hitlerdeathcam2; extern statetype s_giftdeathcam2; extern statetype s_fatdeathcam2; void SpawnStand (enemy_t which, int tilex, int tiley, int dir); void SpawnPatrol (enemy_t which, int tilex, int tiley, int dir); void KillActor (objtype *ob); void SpawnDeadGuard (int tilex, int tiley); void SpawnBoss (int tilex, int tiley); void SpawnGretel (int tilex, int tiley); void SpawnTrans (int tilex, int tiley); void SpawnUber (int tilex, int tiley); void SpawnWill (int tilex, int tiley); void SpawnDeath (int tilex, int tiley); void SpawnAngel (int tilex, int tiley); void SpawnSpectre (int tilex, int tiley); void SpawnGhosts (int which, int tilex, int tiley); void SpawnSchabbs (int tilex, int tiley); void SpawnGift (int tilex, int tiley); void SpawnFat (int tilex, int tiley); void SpawnFakeHitler (int tilex, int tiley); void SpawnHitler (int tilex, int tiley); void A_DeathScream (objtype *ob); void SpawnBJVictory (void); /* ============================================================================= WL_TEXT DEFINITIONS ============================================================================= */ extern char helpfilename[],endfilename[]; extern void HelpScreens(void); extern void EndText(void); /* ============================================================================= GP2X DEFINITIONS ============================================================================= */ #if defined(GP2X) #if defined(GP2X_940) void GP2X_MemoryInit(void); void GP2X_Shutdown(void); #endif void GP2X_ButtonDown(int button); void GP2X_ButtonUp(int button); #endif /* ============================================================================= MISC DEFINITIONS ============================================================================= */ static inline fixed FixedMul(fixed a, fixed b) { return (fixed)(((int64_t)a * b + 0x8000) >> 16); } #ifdef PLAYDEMOLIKEORIGINAL #define DEMOCHOOSE_ORIG_SDL(orig, sdl) ((demorecord || demoplayback) ? (orig) : (sdl)) #define DEMOCOND_ORIG (demorecord || demoplayback) #define DEMOIF_SDL if(DEMOCOND_SDL) #else #define DEMOCHOOSE_ORIG_SDL(orig, sdl) (sdl) #define DEMOCOND_ORIG false #define DEMOIF_SDL #endif #define DEMOCOND_SDL (!DEMOCOND_ORIG) #define GetTicks() ((SDL_GetTicks()*7)/100) #define ISPOINTER(x) ((((uintptr_t)(x)) & ~0xffff) != 0) #define CHECKMALLOCRESULT(x) if(!(x)) Quit("Out of memory at %s:%i", __FILE__, __LINE__) #ifdef _WIN32 #define strcasecmp stricmp #define strncasecmp strnicmp #define snprintf _snprintf #else static inline char* itoa(int value, char* string, int radix) { sprintf(string, "%d", value); return string; } static inline char* ltoa(long value, char* string, int radix) { sprintf(string, "%ld", value); return string; } #endif #define lengthof(x) (sizeof(x) / sizeof(*(x))) #define endof(x) ((x) + lengthof(x)) static inline word READWORD(byte *&ptr) { word val = ptr[0] | ptr[1] << 8; ptr += 2; return val; } static inline longword READLONGWORD(byte *&ptr) { longword val = ptr[0] | ptr[1] << 8 | ptr[2] << 16 | ptr[3] << 24; ptr += 4; return val; } /* ============================================================================= FEATURE DEFINITIONS ============================================================================= */ #ifdef USE_FEATUREFLAGS // The currently available feature flags #define FF_STARSKY 0x0001 #define FF_PARALLAXSKY 0x0002 #define FF_CLOUDSKY 0x0004 #define FF_RAIN 0x0010 #define FF_SNOW 0x0020 // The ffData... variables contain the 16-bit values of the according corners of the current level. // The corners are overwritten with adjacent tiles after initialization in SetupGameLevel // to avoid interpretation as e.g. doors. extern int ffDataTopLeft, ffDataTopRight, ffDataBottomLeft, ffDataBottomRight; /************************************************************* * Current usage of ffData... variables: * ffDataTopLeft: lower 8-bit: ShadeDefID * ffDataTopRight: FeatureFlags * ffDataBottomLeft: CloudSkyDefID or ParallaxStartTexture * ffDataBottomRight: unused *************************************************************/ // The feature flags are stored as a wall in the upper right corner of each level static inline word GetFeatureFlags() { return ffDataTopRight; } #endif #ifdef USE_FLOORCEILINGTEX void DrawFloorAndCeiling(byte *vbuf, unsigned vbufPitch, int min_wallheight); #endif #ifdef USE_PARALLAX void DrawParallax(byte *vbuf, unsigned vbufPitch); #endif #ifdef USE_DIR3DSPR void Scale3DShape(byte *vbuf, unsigned vbufPitch, statobj_t *ob); #endif #endif wolf4sdl-1.7+svn262/id_in.h0000644000175000017500000001111611463006501014624 0ustar fabianfabian// // ID Engine // ID_IN.h - Header file for Input Manager // v1.0d1 // By Jason Blochowiak // #ifndef __ID_IN__ #define __ID_IN__ #ifdef __DEBUG__ #define __DEBUG_InputMgr__ #endif typedef int ScanCode; #define sc_None 0 #define sc_Bad 0xff #define sc_Return SDLK_RETURN #define sc_Enter sc_Return #define sc_Escape SDLK_ESCAPE #define sc_Space SDLK_SPACE #define sc_BackSpace SDLK_BACKSPACE #define sc_Tab SDLK_TAB #define sc_Alt SDLK_LALT #define sc_Control SDLK_LCTRL #define sc_CapsLock SDLK_CAPSLOCK #define sc_LShift SDLK_LSHIFT #define sc_RShift SDLK_RSHIFT #define sc_UpArrow SDLK_UP #define sc_DownArrow SDLK_DOWN #define sc_LeftArrow SDLK_LEFT #define sc_RightArrow SDLK_RIGHT #define sc_Insert SDLK_INSERT #define sc_Delete SDLK_DELETE #define sc_Home SDLK_HOME #define sc_End SDLK_END #define sc_PgUp SDLK_PAGEUP #define sc_PgDn SDLK_PAGEDOWN #define sc_F1 SDLK_F1 #define sc_F2 SDLK_F2 #define sc_F3 SDLK_F3 #define sc_F4 SDLK_F4 #define sc_F5 SDLK_F5 #define sc_F6 SDLK_F6 #define sc_F7 SDLK_F7 #define sc_F8 SDLK_F8 #define sc_F9 SDLK_F9 #define sc_F10 SDLK_F10 #define sc_F11 SDLK_F11 #define sc_F12 SDLK_F12 #define sc_ScrollLock SDLK_SCROLLOCK #define sc_PrintScreen SDLK_PRINT #define sc_1 SDLK_1 #define sc_2 SDLK_2 #define sc_3 SDLK_3 #define sc_4 SDLK_4 #define sc_5 SDLK_5 #define sc_6 SDLK_6 #define sc_7 SDLK_7 #define sc_8 SDLK_8 #define sc_9 SDLK_9 #define sc_0 SDLK_0 #define sc_A SDLK_a #define sc_B SDLK_b #define sc_C SDLK_c #define sc_D SDLK_d #define sc_E SDLK_e #define sc_F SDLK_f #define sc_G SDLK_g #define sc_H SDLK_h #define sc_I SDLK_i #define sc_J SDLK_j #define sc_K SDLK_k #define sc_L SDLK_l #define sc_M SDLK_m #define sc_N SDLK_n #define sc_O SDLK_o #define sc_P SDLK_p #define sc_Q SDLK_q #define sc_R SDLK_r #define sc_S SDLK_s #define sc_T SDLK_t #define sc_U SDLK_u #define sc_V SDLK_v #define sc_W SDLK_w #define sc_X SDLK_x #define sc_Y SDLK_y #define sc_Z SDLK_z #define key_None 0 typedef enum { demo_Off,demo_Record,demo_Playback,demo_PlayDone } Demo; typedef enum { ctrl_Keyboard, ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2, ctrl_Joystick, ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2, ctrl_Mouse } ControlType; typedef enum { motion_Left = -1,motion_Up = -1, motion_None = 0, motion_Right = 1,motion_Down = 1 } Motion; typedef enum { dir_North,dir_NorthEast, dir_East,dir_SouthEast, dir_South,dir_SouthWest, dir_West,dir_NorthWest, dir_None } Direction; typedef struct { boolean button0,button1,button2,button3; short x,y; Motion xaxis,yaxis; Direction dir; } CursorInfo; typedef CursorInfo ControlInfo; typedef struct { ScanCode button0,button1, upleft, up, upright, left, right, downleft, down, downright; } KeyboardDef; typedef struct { word joyMinX,joyMinY, threshMinX,threshMinY, threshMaxX,threshMaxY, joyMaxX,joyMaxY, joyMultXL,joyMultYL, joyMultXH,joyMultYH; } JoystickDef; // Global variables extern volatile boolean Keyboard[]; extern boolean MousePresent; extern volatile boolean Paused; extern volatile char LastASCII; extern volatile ScanCode LastScan; extern int JoyNumButtons; extern boolean forcegrabmouse; // Function prototypes #define IN_KeyDown(code) (Keyboard[(code)]) #define IN_ClearKey(code) {Keyboard[code] = false;\ if (code == LastScan) LastScan = sc_None;} // DEBUG - put names in prototypes extern void IN_Startup(void),IN_Shutdown(void); extern void IN_ClearKeysDown(void); extern void IN_ReadControl(int,ControlInfo *); extern void IN_GetJoyAbs(word joy,word *xp,word *yp); extern void IN_SetupJoy(word joy,word minx,word maxx, word miny,word maxy); extern void IN_StopDemo(void),IN_FreeDemoBuffer(void), IN_Ack(void); extern boolean IN_UserInput(longword delay); extern char IN_WaitForASCII(void); extern ScanCode IN_WaitForKey(void); extern word IN_GetJoyButtonsDB(word joy); extern const char *IN_GetScanName(ScanCode); void IN_WaitAndProcessEvents(); void IN_ProcessEvents(); int IN_MouseButtons (void); boolean IN_JoyPresent(); void IN_SetJoyCurrent(int joyIndex); int IN_JoyButtons (void); void IN_GetJoyDelta(int *dx,int *dy); void IN_GetJoyFineDelta(int *dx, int *dy); void IN_StartAck(void); boolean IN_CheckAck (void); bool IN_IsInputGrabbed(); void IN_CenterMouse(); #endif wolf4sdl-1.7+svn262/gfxv_wl6.h0000644000175000017500000001760710736012444015324 0ustar fabianfabian////////////////////////////////////// // // Graphics .H file for .WL6 // IGRAB-ed on Wed Apr 13 06:58:44 1994 // ////////////////////////////////////// typedef enum { // Lump Start H_BJPIC=3, H_CASTLEPIC, // 4 H_BLAZEPIC, // 5 H_TOPWINDOWPIC, // 6 H_LEFTWINDOWPIC, // 7 H_RIGHTWINDOWPIC, // 8 H_BOTTOMINFOPIC, // 9 // Lump Start C_OPTIONSPIC, // 10 C_CURSOR1PIC, // 11 C_CURSOR2PIC, // 12 C_NOTSELECTEDPIC, // 13 C_SELECTEDPIC, // 14 C_FXTITLEPIC, // 15 C_DIGITITLEPIC, // 16 C_MUSICTITLEPIC, // 17 C_MOUSELBACKPIC, // 18 C_BABYMODEPIC, // 19 C_EASYPIC, // 20 C_NORMALPIC, // 21 C_HARDPIC, // 22 C_LOADSAVEDISKPIC, // 23 C_DISKLOADING1PIC, // 24 C_DISKLOADING2PIC, // 25 C_CONTROLPIC, // 26 C_CUSTOMIZEPIC, // 27 C_LOADGAMEPIC, // 28 C_SAVEGAMEPIC, // 29 C_EPISODE1PIC, // 30 C_EPISODE2PIC, // 31 C_EPISODE3PIC, // 32 C_EPISODE4PIC, // 33 C_EPISODE5PIC, // 34 C_EPISODE6PIC, // 35 C_CODEPIC, // 36 C_TIMECODEPIC, // 37 C_LEVELPIC, // 38 C_NAMEPIC, // 39 C_SCOREPIC, // 40 C_JOY1PIC, // 41 C_JOY2PIC, // 42 // Lump Start L_GUYPIC, // 43 L_COLONPIC, // 44 L_NUM0PIC, // 45 L_NUM1PIC, // 46 L_NUM2PIC, // 47 L_NUM3PIC, // 48 L_NUM4PIC, // 49 L_NUM5PIC, // 50 L_NUM6PIC, // 51 L_NUM7PIC, // 52 L_NUM8PIC, // 53 L_NUM9PIC, // 54 L_PERCENTPIC, // 55 L_APIC, // 56 L_BPIC, // 57 L_CPIC, // 58 L_DPIC, // 59 L_EPIC, // 60 L_FPIC, // 61 L_GPIC, // 62 L_HPIC, // 63 L_IPIC, // 64 L_JPIC, // 65 L_KPIC, // 66 L_LPIC, // 67 L_MPIC, // 68 L_NPIC, // 69 L_OPIC, // 70 L_PPIC, // 71 L_QPIC, // 72 L_RPIC, // 73 L_SPIC, // 74 L_TPIC, // 75 L_UPIC, // 76 L_VPIC, // 77 L_WPIC, // 78 L_XPIC, // 79 L_YPIC, // 80 L_ZPIC, // 81 L_EXPOINTPIC, // 82 L_APOSTROPHEPIC, // 83 L_GUY2PIC, // 84 L_BJWINSPIC, // 85 STATUSBARPIC, // 86 TITLEPIC, // 87 PG13PIC, // 88 CREDITSPIC, // 89 HIGHSCORESPIC, // 90 // Lump Start KNIFEPIC, // 91 GUNPIC, // 92 MACHINEGUNPIC, // 93 GATLINGGUNPIC, // 94 NOKEYPIC, // 95 GOLDKEYPIC, // 96 SILVERKEYPIC, // 97 N_BLANKPIC, // 98 N_0PIC, // 99 N_1PIC, // 100 N_2PIC, // 101 N_3PIC, // 102 N_4PIC, // 103 N_5PIC, // 104 N_6PIC, // 105 N_7PIC, // 106 N_8PIC, // 107 N_9PIC, // 108 FACE1APIC, // 109 FACE1BPIC, // 110 FACE1CPIC, // 111 FACE2APIC, // 112 FACE2BPIC, // 113 FACE2CPIC, // 114 FACE3APIC, // 115 FACE3BPIC, // 116 FACE3CPIC, // 117 FACE4APIC, // 118 FACE4BPIC, // 119 FACE4CPIC, // 120 FACE5APIC, // 121 FACE5BPIC, // 122 FACE5CPIC, // 123 FACE6APIC, // 124 FACE6BPIC, // 125 FACE6CPIC, // 126 FACE7APIC, // 127 FACE7BPIC, // 128 FACE7CPIC, // 129 FACE8APIC, // 130 GOTGATLINGPIC, // 131 MUTANTBJPIC, // 132 PAUSEDPIC, // 133 GETPSYCHEDPIC, // 134 ORDERSCREEN=136, ERRORSCREEN, // 137 T_HELPART, // 138 T_DEMO0, // 139 T_DEMO1, // 140 T_DEMO2, // 141 T_DEMO3, // 142 T_ENDART1, // 143 T_ENDART2, // 144 T_ENDART3, // 145 T_ENDART4, // 146 T_ENDART5, // 147 T_ENDART6, // 148 ENUMEND } graphicnums; // // Data LUMPs // #define README_LUMP_START 3 #define README_LUMP_END 9 #define CONTROLS_LUMP_START 10 #define CONTROLS_LUMP_END 42 #define LEVELEND_LUMP_START 43 #define LEVELEND_LUMP_END 85 #define LATCHPICS_LUMP_START 91 #define LATCHPICS_LUMP_END 134 // // Amount of each data item // #define NUMCHUNKS 149 #define NUMFONT 2 #define NUMFONTM 0 #define NUMPICS 132 #define NUMPICM 0 #define NUMSPRITES 0 #define NUMTILE8 72 #define NUMTILE8M 0 #define NUMTILE16 0 #define NUMTILE16M 0 #define NUMTILE32 0 #define NUMTILE32M 0 #define NUMEXTERNS 13 // // File offsets for data items // #define STRUCTPIC 0 #define STARTFONT 1 #define STARTFONTM 3 #define STARTPICS 3 #define STARTPICM 135 #define STARTSPRITES 135 #define STARTTILE8 135 #define STARTTILE8M 136 #define STARTTILE16 136 #define STARTTILE16M 136 #define STARTTILE32 136 #define STARTTILE32M 136 #define STARTEXTERNS 136 // // Thank you for using IGRAB! // wolf4sdl-1.7+svn262/gp2x.h0000644000175000017500000000254211015632120014420 0ustar fabianfabian#ifndef GP2X_H #define GP2X_H #include #include #include #include #include #include "wl_def.h" #define GP2X_BUTTON_UP (0) #define GP2X_BUTTON_DOWN (4) #define GP2X_BUTTON_LEFT (2) #define GP2X_BUTTON_RIGHT (6) #define GP2X_BUTTON_UPLEFT (1) #define GP2X_BUTTON_UPRIGHT (7) #define GP2X_BUTTON_DOWNLEFT (3) #define GP2X_BUTTON_DOWNRIGHT (5) #define GP2X_BUTTON_CLICK (18) #define GP2X_BUTTON_A (12) #define GP2X_BUTTON_B (13) #define GP2X_BUTTON_X (15) #define GP2X_BUTTON_Y (14) #define GP2X_BUTTON_L (11) #define GP2X_BUTTON_R (10) #define GP2X_BUTTON_START (8) #define GP2X_BUTTON_SELECT (9) #define GP2X_BUTTON_VOLUP (16) #define GP2X_BUTTON_VOLDOWN (17) #define VOLUME_MIN 0 #define VOLUME_MAX 100 #define VOLUME_CHANGE_RATE 2 #define VOLUME_NOCHG 0 #define VOLUME_DOWN 1 #define VOLUME_UP 2 #define KEY_DOWN 1 #define KEY_UP 0 void GP2X_Init(); void GP2X_Shutdown(); void GP2X_StartMMUHack(); void GP2X_AdjustVolume( int direction ); void GP2X_ButtonDown( int button ); void GP2X_ButtonUp( int button ); void Screenshot( void ); void SetKeyboard( unsigned int key, int press ); #endif // GP2X_H wolf4sdl-1.7+svn262/foreign.h0000644000175000017500000001140011143514203015165 0ustar fabianfabian#define QUITSUR "Are you sure you want\n"\ "to quit this great game?" #define CURGAME "You are currently in\n"\ "a game. Continuing will\n"\ "erase old game. Ok?" #define GAMESVD "There's already a game\n"\ "saved at this position.\n"\ " Overwrite?" #define ENDGAMESTR "Are you sure you want\n"\ "to end the game you\n"\ "are playing? (Y or N):" #define STR_NG "New Game" #define STR_SD "Sound" #define STR_CL "Control" #define STR_LG "Load Game" #define STR_SG "Save Game" #define STR_CV "Change View" #define STR_VS "View Scores" #define STR_EG "End Game" #define STR_BD "Back to Demo" #define STR_QT "Quit" #define STR_LOADING "Loading" #define STR_SAVING "Saving" #define STR_GAME "Game" #define STR_DEMO "Demo" #define STR_LGC "Load Game called\n\"" #define STR_EMPTY "empty" #define STR_CALIB "Calibrate" #define STR_JOYST "Joystick" #define STR_MOVEJOY "Move joystick to\nupper left and\npress button 0\n" #define STR_MOVEJOY2 "Move joystick to\nlower right and\npress button 1\n" #define STR_ESCEXIT "ESC to exit" #define STR_NONE "None" #define STR_PC "PC Speaker" #define STR_ALSB "AdLib/Sound Blaster" #define STR_DISNEY "Disney Sound Source" #define STR_SB "Sound Blaster" #define STR_MOUSEEN "Mouse Enabled" #define STR_JOYEN "Joystick Enabled" #define STR_PORT2 "Use joystick port 2" #define STR_GAMEPAD "Gravis GamePad Enabled" #define STR_SENS "Mouse Sensitivity" #define STR_CUSTOM "Customize controls" #define STR_DADDY "Can I play, Daddy?" #define STR_HURTME "Don't hurt me." #define STR_BRINGEM "Bring 'em on!" #define STR_DEATH "I am Death incarnate!" #define STR_MOUSEADJ "Adjust Mouse Sensitivity" #define STR_SLOW "Slow" #define STR_FAST "Fast" #define STR_CRUN "Run" #define STR_COPEN "Open" #define STR_CFIRE "Fire" #define STR_CSTRAFE "Strafe" #define STR_LEFT "Left" #define STR_RIGHT "Right" #define STR_FRWD "Frwd" #define STR_BKWD "Bkwrd" #define STR_THINK "Thinking" #define STR_SIZE1 "Use arrows to size" #define STR_SIZE2 "ENTER to accept" #define STR_SIZE3 "ESC to cancel" #define STR_YOUWIN "you win!" #define STR_TOTALTIME "total time" #define STR_RATKILL "kill %" #define STR_RATSECRET "secret %" #define STR_RATTREASURE "treasure %" #define STR_BONUS "bonus" #define STR_TIME "time" #define STR_PAR " par" #define STR_RAT2KILL "kill ratio %" #define STR_RAT2SECRET "secret ratio %" #define STR_RAT2TREASURE "treasure ratio %" #define STR_DEFEATED "defeated!" #define STR_CHEATER1 "You now have 100% Health," #define STR_CHEATER2 "99 Ammo and both Keys!" #define STR_CHEATER3 "Note that you have basically" #define STR_CHEATER4 "eliminated your chances of" #define STR_CHEATER5 "getting a high score!" #define STR_NOSPACE1 "There is not enough space" #define STR_NOSPACE2 "on your disk to Save Game!" #define STR_SAVECHT1 "Your Save Game file is," #define STR_SAVECHT2 "shall we say, \"corrupted\"." #define STR_SAVECHT3 "But I'll let you go on and" #define STR_SAVECHT4 "play anyway...." #define STR_SEEAGAIN "Let's see that again!" #ifdef SPEAR #define ENDSTR1 "Heroes don't quit, but\ngo ahead and press " YESBUTTONNAME "\nif you aren't one." #define ENDSTR2 "Press " YESBUTTONNAME " to quit,\nor press " NOBUTTONNAME " to enjoy\nmore violent diversion." #define ENDSTR3 "Depressing the " YESBUTTONNAME " key means\nyou must return to the\nhumdrum workday world." #define ENDSTR4 "Hey, quit or play,\n" YESBUTTONNAME " or " NOBUTTONNAME ":\nit's your choice." #define ENDSTR5 "Sure you don't want to\nwaste a few more\nproductive hours?" #define ENDSTR6 "I think you had better\nplay some more. Please\npress " NOBUTTONNAME "...please?" #define ENDSTR7 "If you are tough, press " NOBUTTONNAME ".\nIf not, press " YESBUTTONNAME " daintily." #define ENDSTR8 "I'm thinkin' that\nyou might wanna press " NOBUTTONNAME "\nto play more. You do it." #define ENDSTR9 "Sure. Fine. Quit.\nSee if we care.\nGet it over with.\nPress " YESBUTTONNAME "." #else #define ENDSTR1 "Dost thou wish to\nleave with such hasty\nabandon?" #define ENDSTR2 "Chickening out...\nalready?" #define ENDSTR3 "Press " NOBUTTONNAME " for more carnage.\nPress " YESBUTTONNAME " to be a weenie." #define ENDSTR4 "So, you think you can\nquit this easily, huh?" #define ENDSTR5 "Press " NOBUTTONNAME " to save the world.\nPress " YESBUTTONNAME " to abandon it in\nits hour of need." #define ENDSTR6 "Press " NOBUTTONNAME " if you are brave.\nPress " YESBUTTONNAME " to cower in shame." #define ENDSTR7 "Heroes, press " NOBUTTONNAME ".\nWimps, press " YESBUTTONNAME "." #define ENDSTR8 "You are at an intersection.\nA sign says, 'Press " YESBUTTONNAME " to quit.'\n>" #define ENDSTR9 "For guns and glory, press " NOBUTTONNAME ".\nFor work and worry, press " YESBUTTONNAME "." #endif wolf4sdl-1.7+svn262/Makefile0000644000175000017500000000451011644157635015051 0ustar fabianfabianCONFIG ?= config.default -include $(CONFIG) BINARY ?= wolf3d PREFIX ?= /usr/local MANPREFIX ?= $(PREFIX) INSTALL ?= install INSTALL_PROGRAM ?= $(INSTALL) -m 555 -s INSTALL_MAN ?= $(INSTALL) -m 444 INSTALL_DATA ?= $(INSTALL) -m 444 SDL_CONFIG ?= sdl-config CFLAGS_SDL ?= $(shell $(SDL_CONFIG) --cflags) LDFLAGS_SDL ?= $(shell $(SDL_CONFIG) --libs) CFLAGS += $(CFLAGS_SDL) #CFLAGS += -Wall #CFLAGS += -W CFLAGS += -Wpointer-arith CFLAGS += -Wreturn-type CFLAGS += -Wwrite-strings CFLAGS += -Wcast-align ifdef GPL CFLAGS += -DUSE_GPL endif CCFLAGS += $(CFLAGS) CCFLAGS += -std=gnu99 CCFLAGS += -Werror-implicit-function-declaration CCFLAGS += -Wimplicit-int CCFLAGS += -Wsequence-point CXXFLAGS += $(CFLAGS) LDFLAGS += $(LDFLAGS_SDL) LDFLAGS += -lSDL_mixer ifneq (,$(findstring MINGW,$(shell uname -s))) LDFLAGS += -static-libgcc endif SRCS := ifndef GPL SRCS += mame/fmopl.cpp else SRCS += dosbox/dbopl.cpp endif SRCS += id_ca.cpp SRCS += id_in.cpp SRCS += id_pm.cpp SRCS += id_sd.cpp SRCS += id_us_1.cpp SRCS += id_vh.cpp SRCS += id_vl.cpp SRCS += signon.cpp SRCS += wl_act1.cpp SRCS += wl_act2.cpp SRCS += wl_agent.cpp SRCS += wl_atmos.cpp SRCS += wl_cloudsky.cpp SRCS += wl_debug.cpp SRCS += wl_draw.cpp SRCS += wl_floorceiling.cpp SRCS += wl_game.cpp SRCS += wl_inter.cpp SRCS += wl_main.cpp SRCS += wl_menu.cpp SRCS += wl_parallax.cpp SRCS += wl_play.cpp SRCS += wl_state.cpp SRCS += wl_text.cpp DEPS = $(filter %.d, $(SRCS:.c=.d) $(SRCS:.cpp=.d)) OBJS = $(filter %.o, $(SRCS:.c=.o) $(SRCS:.cpp=.o)) .SUFFIXES: .SUFFIXES: .c .cpp .d .o Q ?= @ all: $(BINARY) ifndef NO_DEPS depend: $(DEPS) ifeq ($(findstring $(MAKECMDGOALS), clean depend Data),) -include $(DEPS) endif endif $(BINARY): $(OBJS) @echo '===> LD $@' $(Q)$(CXX) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $@ .c.o: @echo '===> CC $<' $(Q)$(CC) $(CCFLAGS) -c $< -o $@ .cpp.o: @echo '===> CXX $<' $(Q)$(CXX) $(CXXFLAGS) -c $< -o $@ .c.d: @echo '===> DEP $<' $(Q)$(CC) $(CCFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:%.d=%.o):#' > $@ .cpp.d: @echo '===> DEP $<' $(Q)$(CXX) $(CXXFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:%.d=%.o):#' > $@ clean distclean: @echo '===> CLEAN' $(Q)rm -fr $(DEPS) $(OBJS) $(BINARY) $(BINARY).exe install: $(BINARY) @echo '===> INSTALL' $(Q)$(INSTALL) -d $(PREFIX)/bin $(Q)$(INSTALL_PROGRAM) $(BINARY) $(PREFIX)/bin wolf4sdl-1.7+svn262/Wolf4SDL.dev0000644000175000017500000001256111644157635015454 0ustar fabianfabian[Project] FileName=Wolf4SDL.dev Name=Wolf4SDL UnitCount=40 Type=0 Ver=1 ObjFiles= Includes=C:\Dev-Cpp\include\SDL Libs= PrivateResource= ResourceIncludes= MakeIncludes= Compiler=-Dmain=SDL_main_@@_ CppCompiler= Linker=-lmingw32 -lSDL -lSDL_mixer_@@_ IsCpp=1 Icon= ExeOutput= ObjectOutput= OverrideOutput=0 OverrideOutputName=Wolf4SDL.exe HostApplication= Folders= CommandLine= UseCustomMakefile=0 CustomMakefile= IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 CompilerSettings=0000000000000000000000 [Unit1] FileName=audiosod.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit2] FileName=audiowl6.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit3] FileName=f_spear.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit4] FileName=fmopl.cpp CompileCpp=1 Folder=Wolf4SDL\mame Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit5] FileName=fmopl.h CompileCpp=1 Folder=Wolf4SDL\mame Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit6] FileName=foreign.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit7] FileName=wl_text.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit8] FileName=gfxv_apo.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit9] FileName=gfxv_sod.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit10] FileName=gfxv_wl6.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit11] FileName=id_ca.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit12] FileName=id_ca.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit13] FileName=id_in.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit14] FileName=id_in.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit15] FileName=id_pm.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit16] FileName=id_sd.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit17] FileName=id_sd.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit18] FileName=id_us.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit19] FileName=id_us_1.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit20] FileName=id_vh.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit21] FileName=id_vh.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit22] FileName=id_vl.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit23] FileName=id_vl.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit25] FileName=wl_act1.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit26] FileName=wl_act2.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit27] FileName=wl_agent.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit28] FileName=wl_debug.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit29] FileName=wl_def.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit30] FileName=wl_draw.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit31] FileName=wl_game.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit32] FileName=wl_inter.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit33] FileName=wl_main.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit34] FileName=wl_menu.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit35] FileName=wl_menu.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit36] FileName=wl_play.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit37] FileName=wl_state.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [VersionInfo] Major=0 Minor=1 Release=1 Build=1 LanguageID=1033 CharsetID=1252 CompanyName= FileVersion= FileDescription= InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion= AutoIncBuildNr=0 [Unit24] FileName=signon.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit38] FileName=sdl_winmain.cpp CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit39] FileName=version.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit40] FileName=gfxv_jap.h CompileCpp=1 Folder=Wolf4SDL Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= wolf4sdl-1.7+svn262/id_us_1.cpp0000644000175000017500000004344711016150663015437 0ustar fabianfabian// // ID Engine // ID_US_1.c - User Manager - General routines // v1.1d1 // By Jason Blochowiak // Hacked up for Catacomb 3D // // // This module handles dealing with user input & feedback // // Depends on: Input Mgr, View Mgr, some variables from the Sound, Caching, // and Refresh Mgrs, Memory Mgr for background save/restore // // Globals: // ingame - Flag set by game indicating if a game is in progress // loadedgame - Flag set if a game was loaded // PrintX, PrintY - Where the User Mgr will print (global coords) // WindowX,WindowY,WindowW,WindowH - The dimensions of the current // window // #include "wl_def.h" #pragma hdrstop #if _MSC_VER == 1200 // Visual C++ 6 #define vsnprintf _vsnprintf #endif // Global variables word PrintX,PrintY; word WindowX,WindowY,WindowW,WindowH; // Internal variables #define ConfigVersion 1 static boolean US_Started; void (*USL_MeasureString)(const char *,word *,word *) = VW_MeasurePropString; void (*USL_DrawString)(const char *) = VWB_DrawPropString; SaveGame Games[MaxSaveGames]; HighScore Scores[MaxScores] = { {"id software-'92",10000,1}, {"Adrian Carmack",10000,1}, {"John Carmack",10000,1}, {"Kevin Cloud",10000,1}, {"Tom Hall",10000,1}, {"John Romero",10000,1}, {"Jay Wilbur",10000,1}, }; int rndindex = 0; static byte rndtable[] = { 0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66, 74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36, 95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188, 52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224, 149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242, 145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0, 175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235, 25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113, 94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75, 136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196, 135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113, 80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241, 24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224, 145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95, 28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226, 71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36, 17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106, 197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136, 120, 163, 236, 249 }; // Internal routines // Public routines /////////////////////////////////////////////////////////////////////////// // // US_Startup() - Starts the User Mgr // /////////////////////////////////////////////////////////////////////////// void US_Startup() { if (US_Started) return; US_InitRndT(true); // Initialize the random number generator US_Started = true; } /////////////////////////////////////////////////////////////////////////// // // US_Shutdown() - Shuts down the User Mgr // /////////////////////////////////////////////////////////////////////////// void US_Shutdown(void) { if (!US_Started) return; US_Started = false; } // Window/Printing routines /////////////////////////////////////////////////////////////////////////// // // US_SetPrintRoutines() - Sets the routines used to measure and print // from within the User Mgr. Primarily provided to allow switching // between masked and non-masked fonts // /////////////////////////////////////////////////////////////////////////// void US_SetPrintRoutines(void (*measure)(const char *,word *,word *), void (*print)(const char *)) { USL_MeasureString = measure; USL_DrawString = print; } /////////////////////////////////////////////////////////////////////////// // // US_Print() - Prints a string in the current window. Newlines are // supported. // /////////////////////////////////////////////////////////////////////////// void US_Print(const char *sorg) { char c; char *sstart = strdup(sorg); char *s = sstart; char *se; word w,h; while (*s) { se = s; while ((c = *se)!=0 && (c != '\n')) se++; *se = '\0'; USL_MeasureString(s,&w,&h); px = PrintX; py = PrintY; USL_DrawString(s); s = se; if (c) { *se = c; s++; PrintX = WindowX; PrintY += h; } else PrintX += w; } free(sstart); } /////////////////////////////////////////////////////////////////////////// // // US_PrintUnsigned() - Prints an unsigned long // /////////////////////////////////////////////////////////////////////////// void US_PrintUnsigned(longword n) { char buffer[32]; sprintf(buffer, "%lu", n); US_Print(buffer); } /////////////////////////////////////////////////////////////////////////// // // US_PrintSigned() - Prints a signed long // /////////////////////////////////////////////////////////////////////////// void US_PrintSigned(int32_t n) { char buffer[32]; US_Print(ltoa(n,buffer,10)); } /////////////////////////////////////////////////////////////////////////// // // USL_PrintInCenter() - Prints a string in the center of the given rect // /////////////////////////////////////////////////////////////////////////// void USL_PrintInCenter(const char *s,Rect r) { word w,h, rw,rh; USL_MeasureString(s,&w,&h); rw = r.lr.x - r.ul.x; rh = r.lr.y - r.ul.y; px = r.ul.x + ((rw - w) / 2); py = r.ul.y + ((rh - h) / 2); USL_DrawString(s); } /////////////////////////////////////////////////////////////////////////// // // US_PrintCentered() - Prints a string centered in the current window. // /////////////////////////////////////////////////////////////////////////// void US_PrintCentered(const char *s) { Rect r; r.ul.x = WindowX; r.ul.y = WindowY; r.lr.x = r.ul.x + WindowW; r.lr.y = r.ul.y + WindowH; USL_PrintInCenter(s,r); } /////////////////////////////////////////////////////////////////////////// // // US_CPrintLine() - Prints a string centered on the current line and // advances to the next line. Newlines are not supported. // /////////////////////////////////////////////////////////////////////////// void US_CPrintLine(const char *s) { word w,h; USL_MeasureString(s,&w,&h); if (w > WindowW) Quit("US_CPrintLine() - String exceeds width"); px = WindowX + ((WindowW - w) / 2); py = PrintY; USL_DrawString(s); PrintY += h; } /////////////////////////////////////////////////////////////////////////// // // US_CPrint() - Prints a string centered in the current window. // Newlines are supported. // /////////////////////////////////////////////////////////////////////////// void US_CPrint(const char *sorg) { char c; char *sstart = strdup(sorg); char *s = sstart; char *se; while (*s) { se = s; while ((c = *se)!=0 && (c != '\n')) se++; *se = '\0'; US_CPrintLine(s); s = se; if (c) { *se = c; s++; } } free(sstart); } /////////////////////////////////////////////////////////////////////////// // // US_Printf() - Prints a formatted string in the current window. // Newlines are supported. // /////////////////////////////////////////////////////////////////////////// void US_Printf(const char *formatStr, ...) { char strbuf[256]; va_list vlist; va_start(vlist, formatStr); int len = vsnprintf(strbuf, sizeof(strbuf), formatStr, vlist); va_end(vlist); if(len <= -1 || len >= sizeof(strbuf)) strbuf[sizeof(strbuf) - 1] = 0; US_Print(strbuf); } /////////////////////////////////////////////////////////////////////////// // // US_CPrintf() - Prints a formatted string centered in the current window. // Newlines are supported. // /////////////////////////////////////////////////////////////////////////// void US_CPrintf(const char *formatStr, ...) { char strbuf[256]; va_list vlist; va_start(vlist, formatStr); int len = vsnprintf(strbuf, sizeof(strbuf), formatStr, vlist); va_end(vlist); if(len <= -1 || len >= sizeof(strbuf)) strbuf[sizeof(strbuf) - 1] = 0; US_CPrint(strbuf); } /////////////////////////////////////////////////////////////////////////// // // US_ClearWindow() - Clears the current window to white and homes the // cursor // /////////////////////////////////////////////////////////////////////////// void US_ClearWindow(void) { VWB_Bar(WindowX,WindowY,WindowW,WindowH,WHITE); PrintX = WindowX; PrintY = WindowY; } /////////////////////////////////////////////////////////////////////////// // // US_DrawWindow() - Draws a frame and sets the current window parms // /////////////////////////////////////////////////////////////////////////// void US_DrawWindow(word x,word y,word w,word h) { word i, sx,sy,sw,sh; WindowX = x * 8; WindowY = y * 8; WindowW = w * 8; WindowH = h * 8; PrintX = WindowX; PrintY = WindowY; sx = (x - 1) * 8; sy = (y - 1) * 8; sw = (w + 1) * 8; sh = (h + 1) * 8; US_ClearWindow(); VWB_DrawTile8(sx,sy,0),VWB_DrawTile8(sx,sy + sh,5); for (i = sx + 8;i <= sx + sw - 8;i += 8) VWB_DrawTile8(i,sy,1),VWB_DrawTile8(i,sy + sh,6); VWB_DrawTile8(i,sy,2),VWB_DrawTile8(i,sy + sh,7); for (i = sy + 8;i <= sy + sh - 8;i += 8) VWB_DrawTile8(sx,i,3),VWB_DrawTile8(sx + sw,i,4); } /////////////////////////////////////////////////////////////////////////// // // US_CenterWindow() - Generates a window of a given width & height in the // middle of the screen // /////////////////////////////////////////////////////////////////////////// void US_CenterWindow(word w,word h) { US_DrawWindow(((MaxX / 8) - w) / 2,((MaxY / 8) - h) / 2,w,h); } /////////////////////////////////////////////////////////////////////////// // // US_SaveWindow() - Saves the current window parms into a record for // later restoration // /////////////////////////////////////////////////////////////////////////// void US_SaveWindow(WindowRec *win) { win->x = WindowX; win->y = WindowY; win->w = WindowW; win->h = WindowH; win->px = PrintX; win->py = PrintY; } /////////////////////////////////////////////////////////////////////////// // // US_RestoreWindow() - Sets the current window parms to those held in the // record // /////////////////////////////////////////////////////////////////////////// void US_RestoreWindow(WindowRec *win) { WindowX = win->x; WindowY = win->y; WindowW = win->w; WindowH = win->h; PrintX = win->px; PrintY = win->py; } // Input routines /////////////////////////////////////////////////////////////////////////// // // USL_XORICursor() - XORs the I-bar text cursor. Used by US_LineInput() // /////////////////////////////////////////////////////////////////////////// static void USL_XORICursor(int x,int y,const char *s,word cursor) { static boolean status; // VGA doesn't XOR... char buf[MaxString]; int temp; word w,h; strcpy(buf,s); buf[cursor] = '\0'; USL_MeasureString(buf,&w,&h); px = x + w - 1; py = y; if (status^=1) USL_DrawString("\x80"); else { temp = fontcolor; fontcolor = backcolor; USL_DrawString("\x80"); fontcolor = temp; } } char USL_RotateChar(char ch, int dir) { static const char charSet[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ.,-!?0123456789"; const int numChars = sizeof(charSet) / sizeof(char) - 1; int i; for(i = 0; i < numChars; i++) { if(ch == charSet[i]) break; } if(i == numChars) i = 0; i += dir; if(i < 0) i = numChars - 1; else if(i >= numChars) i = 0; return charSet[i]; } /////////////////////////////////////////////////////////////////////////// // // US_LineInput() - Gets a line of user input at (x,y), the string defaults // to whatever is pointed at by def. Input is restricted to maxchars // chars or maxwidth pixels wide. If the user hits escape (and escok is // true), nothing is copied into buf, and false is returned. If the // user hits return, the current string is copied into buf, and true is // returned // /////////////////////////////////////////////////////////////////////////// boolean US_LineInput(int x,int y,char *buf,const char *def,boolean escok, int maxchars,int maxwidth) { boolean redraw, cursorvis,cursormoved, done,result, checkkey; ScanCode sc; char c; char s[MaxString],olds[MaxString]; int cursor,len; word i, w,h, temp; longword curtime, lasttime, lastdirtime, lastbuttontime, lastdirmovetime; ControlInfo ci; Direction lastdir = dir_None; if (def) strcpy(s,def); else *s = '\0'; *olds = '\0'; cursor = (int) strlen(s); cursormoved = redraw = true; cursorvis = done = false; lasttime = lastdirtime = lastdirmovetime = GetTimeCount(); lastbuttontime = lasttime + TickBase / 4; // 250 ms => first button press accepted after 500 ms LastASCII = key_None; LastScan = sc_None; while (!done) { ReadAnyControl(&ci); if (cursorvis) USL_XORICursor(x,y,s,cursor); sc = LastScan; LastScan = sc_None; c = LastASCII; LastASCII = key_None; checkkey = true; curtime = GetTimeCount(); // After each direction change accept the next change after 250 ms and then everz 125 ms if(ci.dir != lastdir || curtime - lastdirtime > TickBase / 4 && curtime - lastdirmovetime > TickBase / 8) { if(ci.dir != lastdir) { lastdir = ci.dir; lastdirtime = curtime; } lastdirmovetime = curtime; switch(ci.dir) { case dir_West: if(cursor) { // Remove trailing whitespace if cursor is at end of string if(s[cursor] == ' ' && s[cursor + 1] == 0) s[cursor] = 0; cursor--; } cursormoved = true; checkkey = false; break; case dir_East: if(cursor >= MaxString - 1) break; if(!s[cursor]) { USL_MeasureString(s,&w,&h); if(len >= maxchars || maxwidth && w >= maxwidth) break; s[cursor] = ' '; s[cursor + 1] = 0; } cursor++; cursormoved = true; checkkey = false; break; case dir_North: if(!s[cursor]) { USL_MeasureString(s,&w,&h); if(len >= maxchars || maxwidth && w >= maxwidth) break; s[cursor + 1] = 0; } s[cursor] = USL_RotateChar(s[cursor], 1); redraw = true; checkkey = false; break; case dir_South: if(!s[cursor]) { USL_MeasureString(s,&w,&h); if(len >= maxchars || maxwidth && w >= maxwidth) break; s[cursor + 1] = 0; } s[cursor] = USL_RotateChar(s[cursor], -1); redraw = true; checkkey = false; break; } } if((int)(curtime - lastbuttontime) > TickBase / 4) // 250 ms { if(ci.button0) // acts as return { strcpy(buf,s); done = true; result = true; checkkey = false; } if(ci.button1 && escok) // acts as escape { done = true; result = false; checkkey = false; } if(ci.button2) // acts as backspace { lastbuttontime = curtime; if(cursor) { strcpy(s + cursor - 1,s + cursor); cursor--; redraw = true; } cursormoved = true; checkkey = false; } } if(checkkey) { switch (sc) { case sc_LeftArrow: if (cursor) cursor--; c = key_None; cursormoved = true; break; case sc_RightArrow: if (s[cursor]) cursor++; c = key_None; cursormoved = true; break; case sc_Home: cursor = 0; c = key_None; cursormoved = true; break; case sc_End: cursor = (int) strlen(s); c = key_None; cursormoved = true; break; case sc_Return: strcpy(buf,s); done = true; result = true; c = key_None; break; case sc_Escape: if (escok) { done = true; result = false; } c = key_None; break; case sc_BackSpace: if (cursor) { strcpy(s + cursor - 1,s + cursor); cursor--; redraw = true; } c = key_None; cursormoved = true; break; case sc_Delete: if (s[cursor]) { strcpy(s + cursor,s + cursor + 1); redraw = true; } c = key_None; cursormoved = true; break; case SDLK_KP5: //0x4c: // Keypad 5 // TODO: hmmm... case sc_UpArrow: case sc_DownArrow: case sc_PgUp: case sc_PgDn: case sc_Insert: c = key_None; break; } if (c) { len = (int) strlen(s); USL_MeasureString(s,&w,&h); if(isprint(c) && (len < MaxString - 1) && ((!maxchars) || (len < maxchars)) && ((!maxwidth) || (w < maxwidth))) { for (i = len + 1;i > cursor;i--) s[i] = s[i - 1]; s[cursor++] = c; redraw = true; } } } if (redraw) { px = x; py = y; temp = fontcolor; fontcolor = backcolor; USL_DrawString(olds); fontcolor = (byte) temp; strcpy(olds,s); px = x; py = y; USL_DrawString(s); redraw = false; } if (cursormoved) { cursorvis = false; lasttime = curtime - TickBase; cursormoved = false; } if (curtime - lasttime > TickBase / 2) // 500 ms { lasttime = curtime; cursorvis ^= true; } else SDL_Delay(5); if (cursorvis) USL_XORICursor(x,y,s,cursor); VW_UpdateScreen(); } if (cursorvis) USL_XORICursor(x,y,s,cursor); if (!result) { px = x; py = y; USL_DrawString(olds); } VW_UpdateScreen(); IN_ClearKeysDown(); return(result); } /////////////////////////////////////////////////////////////////////////// // // US_InitRndT - Initializes the pseudo random number generator. // If randomize is true, the seed will be initialized depending on the // current time // /////////////////////////////////////////////////////////////////////////// void US_InitRndT(int randomize) { if(randomize) rndindex = (SDL_GetTicks() >> 4) & 0xff; else rndindex = 0; } /////////////////////////////////////////////////////////////////////////// // // US_RndT - Returns the next 8-bit pseudo random number // /////////////////////////////////////////////////////////////////////////// int US_RndT() { rndindex = (rndindex+1)&0xff; return rndtable[rndindex]; } wolf4sdl-1.7+svn262/Wolf4SDL.dsp0000644000175000017500000001636311644157635015470 0ustar fabianfabian# Microsoft Developer Studio Project File - Name="Wolf4SDL" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=Wolf4SDL - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "Wolf4SDL.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "Wolf4SDL.mak" CFG="Wolf4SDL - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Wolf4SDL - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "Wolf4SDL - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "Wolf4SDL - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "c:\sdl-1.2.12\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x407 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL_mixer.lib SDL.lib /nologo /subsystem:windows /machine:I386 /libpath:"c:\sdl-1.2.12\lib" !ELSEIF "$(CFG)" == "Wolf4SDL - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "c:\sdl-1.2.12\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 /d "_DEBUG" # ADD RSC /l 0x407 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL_mixer.lib SDL.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"c:\sdl-1.2.12\lib" !ENDIF # Begin Target # Name "Wolf4SDL - Win32 Release" # Name "Wolf4SDL - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\mame\fmopl.cpp # End Source File # Begin Source File SOURCE=.\id_ca.cpp # End Source File # Begin Source File SOURCE=.\id_in.cpp # End Source File # Begin Source File SOURCE=.\id_pm.cpp # End Source File # Begin Source File SOURCE=.\id_sd.cpp # End Source File # Begin Source File SOURCE=.\id_us_1.cpp # End Source File # Begin Source File SOURCE=.\id_vh.cpp # End Source File # Begin Source File SOURCE=.\id_vl.cpp # End Source File # Begin Source File SOURCE=.\sdl_winmain.cpp # End Source File # Begin Source File SOURCE=.\signon.cpp # End Source File # Begin Source File SOURCE=.\wl_act1.cpp # End Source File # Begin Source File SOURCE=.\wl_act2.cpp # End Source File # Begin Source File SOURCE=.\wl_agent.cpp # End Source File # Begin Source File SOURCE=.\wl_atmos.cpp # End Source File # Begin Source File SOURCE=.\wl_cloudsky.cpp # End Source File # Begin Source File SOURCE=.\wl_debug.cpp # End Source File # Begin Source File SOURCE=.\wl_dir3dspr.cpp # End Source File # Begin Source File SOURCE=.\wl_draw.cpp # End Source File # Begin Source File SOURCE=.\wl_floorceiling.cpp # End Source File # Begin Source File SOURCE=.\wl_game.cpp # End Source File # Begin Source File SOURCE=.\wl_inter.cpp # End Source File # Begin Source File SOURCE=.\wl_main.cpp # End Source File # Begin Source File SOURCE=.\wl_menu.cpp # End Source File # Begin Source File SOURCE=.\wl_parallax.cpp # End Source File # Begin Source File SOURCE=.\wl_play.cpp # End Source File # Begin Source File SOURCE=.\wl_shade.cpp # End Source File # Begin Source File SOURCE=.\wl_state.cpp # End Source File # Begin Source File SOURCE=.\wl_text.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\audiosod.h # End Source File # Begin Source File SOURCE=.\audiowl6.h # End Source File # Begin Source File SOURCE=.\dc_vmu.h # End Source File # Begin Source File SOURCE=.\f_spear.h # End Source File # Begin Source File SOURCE=.\mame\fmopl.h # End Source File # Begin Source File SOURCE=.\foreign.h # End Source File # Begin Source File SOURCE=.\gfxv_apo.h # End Source File # Begin Source File SOURCE=.\gfxv_sod.h # End Source File # Begin Source File SOURCE=.\gfxv_wl6.h # End Source File # Begin Source File SOURCE=.\id_ca.h # End Source File # Begin Source File SOURCE=.\id_in.h # End Source File # Begin Source File SOURCE=.\id_pm.h # End Source File # Begin Source File SOURCE=.\id_sd.h # End Source File # Begin Source File SOURCE=.\id_us.h # End Source File # Begin Source File SOURCE=.\id_vh.h # End Source File # Begin Source File SOURCE=.\id_vl.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # Begin Source File SOURCE=.\wl_atmos.h # End Source File # Begin Source File SOURCE=.\wl_cloudsky.h # End Source File # Begin Source File SOURCE=.\wl_def.h # End Source File # Begin Source File SOURCE=.\wl_menu.h # End Source File # Begin Source File SOURCE=.\wl_shade.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\win\resource.h # End Source File # Begin Source File SOURCE=.\win\Wolf4SDL.rc # End Source File # End Group # End Target # End Project wolf4sdl-1.7+svn262/Changes-dc.txt0000644000175000017500000000072511150771163016100 0ustar fabianfabian1.7 - Saved game description saved to VMS header - Adjustments made to LCD - VMU loading code improved - Miscellaneous code clean ups - Work started on new disc check code 1.6 - Getting the DC port up-to-date 1.5 - Mouse support - Weapon switch support - Controllers with C & Z button support - Command line parameters via 'params.txt' support - SOD mission pack support via menu - Commercial CD-ROM swap support wolf4sdl-1.7+svn262/wl_shade.h0000644000175000017500000000043010756402755015344 0ustar fabianfabian#if defined(USE_SHADING) && !defined(_WL_SHADE_H_) #define _WL_SHADE_H_ #define SHADE_COUNT 32 #define LSHADE_NOSHADING 0xff #define LSHADE_NORMAL 0 #define LSHADE_FOG 5 extern uint8_t shadetable[SHADE_COUNT][256]; void InitLevelShadeTable(); int GetShade(int scale); #endif wolf4sdl-1.7+svn262/id_pm.h0000644000175000017500000000235211056617163014646 0ustar fabianfabian#ifndef __ID_PM__ #define __ID_PM__ #ifdef USE_HIRES #define PMPageSize 16384 #else #define PMPageSize 4096 #endif extern int ChunksInFile; extern int PMSpriteStart; extern int PMSoundStart; extern bool PMSoundInfoPagePadded; // ChunksInFile+1 pointers to page starts. // The last pointer points one byte after the last page. extern uint8_t **PMPages; void PM_Startup(); void PM_Shutdown(); static inline uint32_t PM_GetPageSize(int page) { if(page < 0 || page >= ChunksInFile) Quit("PM_GetPageSize: Tried to access illegal page: %i", page); return (uint32_t) (PMPages[page + 1] - PMPages[page]); } static inline uint8_t *PM_GetPage(int page) { if(page < 0 || page >= ChunksInFile) Quit("PM_GetPage: Tried to access illegal page: %i", page); return PMPages[page]; } static inline uint8_t *PM_GetEnd() { return PMPages[ChunksInFile]; } static inline byte *PM_GetTexture(int wallpic) { return PM_GetPage(wallpic); } static inline uint16_t *PM_GetSprite(int shapenum) { // correct alignment is enforced by PM_Startup() return (uint16_t *) (void *) PM_GetPage(PMSpriteStart + shapenum); } static inline byte *PM_GetSound(int soundpagenum) { return PM_GetPage(PMSoundStart + soundpagenum); } #endif wolf4sdl-1.7+svn262/README-dc.txt0000644000175000017500000000666711150771163015500 0ustar fabianfabianWolf4SDL\DC 1.7 ported to Dreamcast by dcbasic A port of Wolf4SDL by Moritz "Ripper" Kroll. What's new in 1.7: - See Changes-dc.txt Instructions: - Extract the Wolf4SDL\DC archive to it's own folder. - Put your *.wl6 files inside /cd/data/wolf3d (if you have a commercial CD-ROM release of Wolfenstein you can skip this step). - If you want to use the command line, create a text file called 'args.txt' (without quotes) in the /cd/data/wolf3d folder and add any valid arguments. Please keep them on one line. - Download and install BootDreams (http://dchelp.dcemulation.org/?BootDreams). - Open the folder you extracted Wolf4SDL\DC to in BootDreams. - Select a task. If you'd like to burn Wolf4SDL\DC directly to a CD-R, select the CDRecord task and set the disc format to either Audio\Data or Data\Data (both do essentially the same thing). - Click Process. - If you created a CD image, burn it with the appropriate burning program e.g. Alcohol 120%. - Pop the CD-R in your Dreamcast and play. - If you have a commercial CD-ROM, wait until you're asked to swap in your copy of Wolfenstein 3D, swap your copy in, press start and play. Valid Arguments: --goobers (Wolfenstein 3D only) --debugkeys (Spear of Destiny only) --goodtimes (Spear of Destiny only) --nowait --baby --easy --normal --hard --tedlevel --res (default 320x200) --resf --bits (default 8) --dblbuf --extravbls --samplerate (default 11025) --audiobuffer (default 4096) Notes: - The --res argument will also except '640 400' but will slow rendering down greatly. The width must be a multiple of 320 and the height must be a multiple of 200 or 240. - The --resf argument will force the passed screen resolution but may result in graphic corruption. - The default samplerate is 11025 to keep the extra SOD missions from running out of memory. Wolfenstein 3D and the original SOD mission will happily run with the samplerate set to 22050. - The --dblbuf argument works but slows speed down by about 10 frames. Compiling: This port was developed under Code::Blocks 8.02 with the DC Dev ISO R4 integrated within it. I've also included a Makefile in case you don't use Code::Blocks. You will need SDL and SDL mixer to compile Wolf4SDL\DC. DC Dev ISO can be downloaded from here: http://dcemulation.org/?title=DC_Dev_ISO It contains everything you need to compile Wolf4SDL. It includes Code::Blocks 8.02 and a tool to integrate Code::Blocks with DC Dev ISO. It uses Cygwin as the terminal environment and includes the DC compilers and all the SDL libraries that are needed to compile Wolf4SDL. To compile Wolf4SDL\DC under Code::Blocks, extract the source to it's own folder, open 'Wolf4SDL-DC.cbp' and goto 'Build' | 'Build'. To compile Wolf4SDL\DC using the supplied Makefile, extract the source to it's own directory in C:\cygwin\usr\local\dc and type 'make -f Makefile.dc' in your terminal while inside the folder Wolf4SDL\DC was extracted to. By default the Makefile will create a scrambled 1ST_READ.BIN, unscrambled Wolf4SDL.bin and of course, Wolf4SDL.elf. Credits & Thanks: - OneThiryt8 for which parts of this port was based on his port, sdlWolf - BlueCrab who wrote parts of the swap disc menu - BlackAura for which I stole parts of his menu code from nxDoom - Ripper for such a clean and friendly Wolfenstein 3D engine - Bero for the Dreamcast port of SDL, which this port uses - Dan Potter and team for KOS, which this port uses wolf4sdl-1.7+svn262/id_sd.h0000644000175000017500000000654211644157635014653 0ustar fabianfabian// // ID Engine // ID_SD.h - Sound Manager Header // Version for Wolfenstein // By Jason Blochowiak // #ifndef __ID_SD__ #define __ID_SD__ #define alOut(n,b) YM3812Write(oplChip, n, b) #define TickBase 70 // 70Hz per tick - used as a base for timer 0 typedef enum { sdm_Off, sdm_PC,sdm_AdLib, } SDMode; typedef enum { smm_Off,smm_AdLib } SMMode; typedef enum { sds_Off,sds_PC,sds_SoundBlaster } SDSMode; typedef struct { longword length; word priority; } SoundCommon; #define ORIG_SOUNDCOMMON_SIZE 6 // PC Sound stuff #define pcTimer 0x42 #define pcTAccess 0x43 #define pcSpeaker 0x61 #define pcSpkBits 3 typedef struct { SoundCommon common; byte data[1]; } PCSound; // Register addresses // Operator stuff #define alChar 0x20 #define alScale 0x40 #define alAttack 0x60 #define alSus 0x80 #define alWave 0xe0 // Channel stuff #define alFreqL 0xa0 #define alFreqH 0xb0 #define alFeedCon 0xc0 // Global stuff #define alEffects 0xbd typedef struct { byte mChar,cChar, mScale,cScale, mAttack,cAttack, mSus,cSus, mWave,cWave, nConn, // These are only for Muse - these bytes are really unused voice, mode; byte unused[3]; } Instrument; #define ORIG_INSTRUMENT_SIZE 16 typedef struct { SoundCommon common; Instrument inst; byte block; byte data[1]; } AdLibSound; #define ORIG_ADLIBSOUND_SIZE (ORIG_SOUNDCOMMON_SIZE + ORIG_INSTRUMENT_SIZE + 2) // // Sequencing stuff // #define sqMaxTracks 10 typedef struct { word length; word values[1]; } MusicGroup; typedef struct { int valid; fixed globalsoundx, globalsoundy; } globalsoundpos; extern globalsoundpos channelSoundPos[]; // Global variables extern boolean AdLibPresent, SoundBlasterPresent, SoundPositioned; extern SDMode SoundMode; extern SDSMode DigiMode; extern SMMode MusicMode; extern int DigiMap[]; extern int DigiChannel[]; #define GetTimeCount() ((SDL_GetTicks()*7)/100) inline void Delay(int wolfticks) { if(wolfticks>0) SDL_Delay(wolfticks * 100 / 7); } // Function prototypes extern void SD_Startup(void), SD_Shutdown(void); extern int SD_GetChannelForDigi(int which); extern void SD_PositionSound(int leftvol,int rightvol); extern boolean SD_PlaySound(soundnames sound); extern void SD_SetPosition(int channel, int leftvol,int rightvol); extern void SD_StopSound(void), SD_WaitSoundDone(void); extern void SD_StartMusic(int chunk); extern void SD_ContinueMusic(int chunk, int startoffs); extern void SD_MusicOn(void), SD_FadeOutMusic(void); extern int SD_MusicOff(void); extern boolean SD_MusicPlaying(void); extern boolean SD_SetSoundMode(SDMode mode); extern boolean SD_SetMusicMode(SMMode mode); extern word SD_SoundPlaying(void); extern void SD_SetDigiDevice(SDSMode); extern void SD_PrepareSound(int which); extern int SD_PlayDigitized(word which,int leftpos,int rightpos); extern void SD_StopDigitized(void); #endif wolf4sdl-1.7+svn262/gfxv_sod.h0000644000175000017500000002414110753322636015376 0ustar fabianfabian////////////////////////////////////// // // Graphics .H file for .SOD // IGRAB-ed on Thu Oct 08 20:38:29 1992 // ////////////////////////////////////// typedef enum { // Lump Start C_BACKDROPPIC=3, C_MOUSELBACKPIC, // 4 C_CURSOR1PIC, // 5 C_CURSOR2PIC, // 6 C_NOTSELECTEDPIC, // 7 C_SELECTEDPIC, // 8 // Lump Start C_CUSTOMIZEPIC, // 9 C_JOY1PIC, // 10 C_JOY2PIC, // 11 C_MOUSEPIC, // 12 C_JOYSTICKPIC, // 13 C_KEYBOARDPIC, // 14 C_CONTROLPIC, // 15 // Lump Start C_OPTIONSPIC, // 16 // Lump Start C_FXTITLEPIC, // 17 C_DIGITITLEPIC, // 18 C_MUSICTITLEPIC, // 19 // Lump Start C_HOWTOUGHPIC, // 20 C_BABYMODEPIC, // 21 C_EASYPIC, // 22 C_NORMALPIC, // 23 C_HARDPIC, // 24 // Lump Start C_DISKLOADING1PIC, // 25 C_DISKLOADING2PIC, // 26 C_LOADGAMEPIC, // 27 C_SAVEGAMEPIC, // 28 // Lump Start HIGHSCORESPIC, // 29 C_WONSPEARPIC, // 30 #ifndef SPEARDEMO // Lump Start BJCOLLAPSE1PIC, // 31 BJCOLLAPSE2PIC, // 32 BJCOLLAPSE3PIC, // 33 BJCOLLAPSE4PIC, // 34 ENDPICPIC, // 35 #endif // Lump Start L_GUYPIC, // 36 L_COLONPIC, // 37 L_NUM0PIC, // 38 L_NUM1PIC, // 39 L_NUM2PIC, // 40 L_NUM3PIC, // 41 L_NUM4PIC, // 42 L_NUM5PIC, // 43 L_NUM6PIC, // 44 L_NUM7PIC, // 45 L_NUM8PIC, // 46 L_NUM9PIC, // 47 L_PERCENTPIC, // 48 L_APIC, // 49 L_BPIC, // 50 L_CPIC, // 51 L_DPIC, // 52 L_EPIC, // 53 L_FPIC, // 54 L_GPIC, // 55 L_HPIC, // 56 L_IPIC, // 57 L_JPIC, // 58 L_KPIC, // 59 L_LPIC, // 60 L_MPIC, // 61 L_NPIC, // 62 L_OPIC, // 63 L_PPIC, // 64 L_QPIC, // 65 L_RPIC, // 66 L_SPIC, // 67 L_TPIC, // 68 L_UPIC, // 69 L_VPIC, // 70 L_WPIC, // 71 L_XPIC, // 72 L_YPIC, // 73 L_ZPIC, // 74 L_EXPOINTPIC, // 75 L_APOSTROPHEPIC, // 76 L_GUY2PIC, // 77 L_BJWINSPIC, // 78 // Lump Start TITLE1PIC, // 79 TITLE2PIC, // 80 #ifndef SPEARDEMO // Lump Start ENDSCREEN11PIC, // 81 // Lump Start ENDSCREEN12PIC, // 82 ENDSCREEN3PIC, // 83 ENDSCREEN4PIC, // 84 ENDSCREEN5PIC, // 85 ENDSCREEN6PIC, // 86 ENDSCREEN7PIC, // 87 ENDSCREEN8PIC, // 88 ENDSCREEN9PIC, // 89 #endif STATUSBARPIC, // 90 PG13PIC, // 91 CREDITSPIC, // 92 #ifndef SPEARDEMO // Lump Start IDGUYS1PIC, // 93 IDGUYS2PIC, // 94 // Lump Start COPYPROTTOPPIC, // 95 COPYPROTBOXPIC, // 96 BOSSPIC1PIC, // 97 BOSSPIC2PIC, // 98 BOSSPIC3PIC, // 99 BOSSPIC4PIC, // 100 #endif // Lump Start KNIFEPIC, // 101 GUNPIC, // 102 MACHINEGUNPIC, // 103 GATLINGGUNPIC, // 104 NOKEYPIC, // 105 GOLDKEYPIC, // 106 SILVERKEYPIC, // 107 N_BLANKPIC, // 108 N_0PIC, // 109 N_1PIC, // 110 N_2PIC, // 111 N_3PIC, // 112 N_4PIC, // 113 N_5PIC, // 114 N_6PIC, // 115 N_7PIC, // 116 N_8PIC, // 117 N_9PIC, // 118 FACE1APIC, // 119 FACE1BPIC, // 120 FACE1CPIC, // 121 FACE2APIC, // 122 FACE2BPIC, // 123 FACE2CPIC, // 124 FACE3APIC, // 125 FACE3BPIC, // 126 FACE3CPIC, // 127 FACE4APIC, // 128 FACE4BPIC, // 129 FACE4CPIC, // 130 FACE5APIC, // 131 FACE5BPIC, // 132 FACE5CPIC, // 133 FACE6APIC, // 134 FACE6BPIC, // 135 FACE6CPIC, // 136 FACE7APIC, // 137 FACE7BPIC, // 138 FACE7CPIC, // 139 FACE8APIC, // 140 GOTGATLINGPIC, // 141 GODMODEFACE1PIC, // 142 GODMODEFACE2PIC, // 143 GODMODEFACE3PIC, // 144 BJWAITING1PIC, // 145 BJWAITING2PIC, // 146 BJOUCHPIC, // 147 PAUSEDPIC, // 148 GETPSYCHEDPIC, // 149 TILE8, // 150 ORDERSCREEN, // 151 ERRORSCREEN, // 152 TITLEPALETTE, // 153 #ifndef SPEARDEMO END1PALETTE, // 154 END2PALETTE, // 155 END3PALETTE, // 156 END4PALETTE, // 157 END5PALETTE, // 158 END6PALETTE, // 159 END7PALETTE, // 160 END8PALETTE, // 161 END9PALETTE, // 162 IDGUYSPALETTE, // 163 #endif T_DEMO0, // 164 #ifndef SPEARDEMO T_DEMO1, // 165 T_DEMO2, // 166 T_DEMO3, // 167 T_ENDART1, // 168 #endif ENUMEND } graphicnums; // // Data LUMPs // #define BACKDROP_LUMP_START 3 #define BACKDROP_LUMP_END 8 #define CONTROL_LUMP_START 9 #define CONTROL_LUMP_END 15 #define OPTIONS_LUMP_START 16 #define OPTIONS_LUMP_END 16 #define SOUND_LUMP_START 17 #define SOUND_LUMP_END 19 #define NEWGAME_LUMP_START 20 #define NEWGAME_LUMP_END 24 #define LOADSAVE_LUMP_START 25 #define LOADSAVE_LUMP_END 28 #define HIGHSCORES_LUMP_START 29 #define HIGHSCORES_LUMP_END 30 #define ENDGAME_LUMP_START 31 #define ENDGAME_LUMP_END 35 #define LEVELEND_LUMP_START L_GUYPIC #define LEVELEND_LUMP_END L_BJWINSPIC #define TITLESCREEN_LUMP_START TITLE1PIC #define TITLESCREEN_LUMP_END TITLE2PIC #define ENDGAME1_LUMP_START ENDSCREEN11PIC #define ENDGAME1_LUMP_END ENDSCREEN11PIC #define ENDGAME2_LUMP_START ENDSCREEN12PIC #define ENDGAME2_LUMP_END ENDSCREEN12PIC #define EASTEREGG_LUMP_START IDGUYS1PIC #define EASTEREGG_LUMP_END IDGUYS2PIC #define COPYPROT_LUMP_START COPYPROTTOPPIC #define COPYPROT_LUMP_END BOSSPIC4PIC #define LATCHPICS_LUMP_START KNIFEPIC #define LATCHPICS_LUMP_END GETPSYCHEDPIC // // Amount of each data item // #define NUMCHUNKS ENUMEND #define NUMFONT 2 #define NUMFONTM 0 #define NUMPICS (GETPSYCHEDPIC - NUMFONT) #define NUMPICM 0 #define NUMSPRITES 0 #define NUMTILE8 72 #define NUMTILE8M 0 #define NUMTILE16 0 #define NUMTILE16M 0 #define NUMTILE32 0 #define NUMTILE32M 0 #define NUMEXTERNS 18 // // File offsets for data items // #define STRUCTPIC 0 #define STARTFONT 1 #define STARTFONTM 3 #define STARTPICS 3 #define STARTPICM TILE8 #define STARTSPRITES TILE8 #define STARTTILE8 TILE8 #define STARTTILE8M ORDERSCREEN #define STARTTILE16 ORDERSCREEN #define STARTTILE16M ORDERSCREEN #define STARTTILE32 ORDERSCREEN #define STARTTILE32M ORDERSCREEN #define STARTEXTERNS ORDERSCREEN // // Thank you for using IGRAB! // wolf4sdl-1.7+svn262/wl_parallax.cpp0000644000175000017500000000316411126001001016371 0ustar fabianfabian#include "version.h" #ifdef USE_PARALLAX #include "wl_def.h" #ifdef USE_FEATUREFLAGS // The lower left tile of every map determines the start texture of the parallax sky. static int GetParallaxStartTexture() { int startTex = ffDataBottomLeft; assert(startTex >= 0 && startTex < PMSpriteStart); return startTex; } #else static int GetParallaxStartTexture() { int startTex; switch(gamestate.episode * 10 + mapon) { case 0: startTex = 20; break; default: startTex = 0; break; } assert(startTex >= 0 && startTex < PMSpriteStart); return startTex; } #endif void DrawParallax(byte *vbuf, unsigned vbufPitch) { int startpage = GetParallaxStartTexture(); int midangle = player->angle * (FINEANGLES / ANGLES); int skyheight = viewheight >> 1; int curtex = -1; byte *skytex; startpage += USE_PARALLAX - 1; for(int x = 0; x < viewwidth; x++) { int curang = pixelangle[x] + midangle; if(curang < 0) curang += FINEANGLES; else if(curang >= FINEANGLES) curang -= FINEANGLES; int xtex = curang * USE_PARALLAX * TEXTURESIZE / FINEANGLES; int newtex = xtex >> TEXTURESHIFT; if(newtex != curtex) { curtex = newtex; skytex = PM_GetTexture(startpage - curtex); } int texoffs = TEXTUREMASK - ((xtex & (TEXTURESIZE - 1)) << TEXTURESHIFT); int yend = skyheight - (wallheight[x] >> 3); if(yend <= 0) continue; for(int y = 0, offs = x; y < yend; y++, offs += vbufPitch) vbuf[offs] = skytex[texoffs + (y * TEXTURESIZE) / skyheight]; } } #endif wolf4sdl-1.7+svn262/id_in.cpp0000644000175000017500000004221511577434171015201 0ustar fabianfabian// // ID Engine // ID_IN.c - Input Manager // v1.0d1 // By Jason Blochowiak // // // This module handles dealing with the various input devices // // Depends on: Memory Mgr (for demo recording), Sound Mgr (for timing stuff), // User Mgr (for command line parms) // // Globals: // LastScan - The keyboard scan code of the last key pressed // LastASCII - The ASCII value of the last key pressed // DEBUG - there are more globals // #include "wl_def.h" /* ============================================================================= GLOBAL VARIABLES ============================================================================= */ // // configuration variables // boolean MousePresent; boolean forcegrabmouse; // Global variables volatile boolean Keyboard[SDLK_LAST]; volatile boolean Paused; volatile char LastASCII; volatile ScanCode LastScan; //KeyboardDef KbdDefs = {0x1d,0x38,0x47,0x48,0x49,0x4b,0x4d,0x4f,0x50,0x51}; static KeyboardDef KbdDefs = { sc_Control, // button0 sc_Alt, // button1 sc_Home, // upleft sc_UpArrow, // up sc_PgUp, // upright sc_LeftArrow, // left sc_RightArrow, // right sc_End, // downleft sc_DownArrow, // down sc_PgDn // downright }; static SDL_Joystick *Joystick; int JoyNumButtons; static int JoyNumHats; static bool GrabInput = false; static bool NeedRestore = false; /* ============================================================================= LOCAL VARIABLES ============================================================================= */ byte ASCIINames[] = // Unshifted ASCII for scan codes // TODO: keypad { // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,8 ,9 ,0 ,0 ,0 ,13 ,0 ,0 , // 0 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,27 ,0 ,0 ,0 , // 1 ' ',0 ,0 ,0 ,0 ,0 ,0 ,39 ,0 ,0 ,'*','+',',','-','.','/', // 2 '0','1','2','3','4','5','6','7','8','9',0 ,';',0 ,'=',0 ,0 , // 3 '`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', // 4 'p','q','r','s','t','u','v','w','x','y','z','[',92 ,']',0 ,0 , // 5 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 }; byte ShiftNames[] = // Shifted ASCII for scan codes { // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,8 ,9 ,0 ,0 ,0 ,13 ,0 ,0 , // 0 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,27 ,0 ,0 ,0 , // 1 ' ',0 ,0 ,0 ,0 ,0 ,0 ,34 ,0 ,0 ,'*','+','<','_','>','?', // 2 ')','!','@','#','$','%','^','&','*','(',0 ,':',0 ,'+',0 ,0 , // 3 '~','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', // 4 'P','Q','R','S','T','U','V','W','X','Y','Z','{','|','}',0 ,0 , // 5 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 }; byte SpecialNames[] = // ASCII for 0xe0 prefixed codes { // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 }; static boolean IN_Started; static Direction DirTable[] = // Quick lookup for total direction { dir_NorthWest, dir_North, dir_NorthEast, dir_West, dir_None, dir_East, dir_SouthWest, dir_South, dir_SouthEast }; /////////////////////////////////////////////////////////////////////////// // // INL_GetMouseButtons() - Gets the status of the mouse buttons from the // mouse driver // /////////////////////////////////////////////////////////////////////////// static int INL_GetMouseButtons(void) { int buttons = SDL_GetMouseState(NULL, NULL); int middlePressed = buttons & SDL_BUTTON(SDL_BUTTON_MIDDLE); int rightPressed = buttons & SDL_BUTTON(SDL_BUTTON_RIGHT); buttons &= ~(SDL_BUTTON(SDL_BUTTON_MIDDLE) | SDL_BUTTON(SDL_BUTTON_RIGHT)); if(middlePressed) buttons |= 1 << 2; if(rightPressed) buttons |= 1 << 1; return buttons; } /////////////////////////////////////////////////////////////////////////// // // IN_GetJoyDelta() - Returns the relative movement of the specified // joystick (from +/-127) // /////////////////////////////////////////////////////////////////////////// void IN_GetJoyDelta(int *dx,int *dy) { if(!Joystick) { *dx = *dy = 0; return; } SDL_JoystickUpdate(); #ifdef _arch_dreamcast int x = 0; int y = 0; #else int x = SDL_JoystickGetAxis(Joystick, 0) >> 8; int y = SDL_JoystickGetAxis(Joystick, 1) >> 8; #endif if(param_joystickhat != -1) { uint8_t hatState = SDL_JoystickGetHat(Joystick, param_joystickhat); if(hatState & SDL_HAT_RIGHT) x += 127; else if(hatState & SDL_HAT_LEFT) x -= 127; if(hatState & SDL_HAT_DOWN) y += 127; else if(hatState & SDL_HAT_UP) y -= 127; if(x < -128) x = -128; else if(x > 127) x = 127; if(y < -128) y = -128; else if(y > 127) y = 127; } *dx = x; *dy = y; } /////////////////////////////////////////////////////////////////////////// // // IN_GetJoyFineDelta() - Returns the relative movement of the specified // joystick without dividing the results by 256 (from +/-127) // /////////////////////////////////////////////////////////////////////////// void IN_GetJoyFineDelta(int *dx, int *dy) { if(!Joystick) { *dx = 0; *dy = 0; return; } SDL_JoystickUpdate(); int x = SDL_JoystickGetAxis(Joystick, 0); int y = SDL_JoystickGetAxis(Joystick, 1); if(x < -128) x = -128; else if(x > 127) x = 127; if(y < -128) y = -128; else if(y > 127) y = 127; *dx = x; *dy = y; } /* =================== = = IN_JoyButtons = =================== */ int IN_JoyButtons() { if(!Joystick) return 0; SDL_JoystickUpdate(); int res = 0; for(int i = 0; i < JoyNumButtons && i < 32; i++) res |= SDL_JoystickGetButton(Joystick, i) << i; return res; } boolean IN_JoyPresent() { return Joystick != NULL; } static void processEvent(SDL_Event *event) { switch (event->type) { // exit if the window is closed case SDL_QUIT: Quit(NULL); // check for keypresses case SDL_KEYDOWN: { if(event->key.keysym.sym==SDLK_SCROLLOCK || event->key.keysym.sym==SDLK_F12) { GrabInput = !GrabInput; SDL_WM_GrabInput(GrabInput ? SDL_GRAB_ON : SDL_GRAB_OFF); return; } LastScan = event->key.keysym.sym; SDLMod mod = SDL_GetModState(); if(Keyboard[sc_Alt]) { if(LastScan==SDLK_F4) Quit(NULL); } if(LastScan == SDLK_KP_ENTER) LastScan = SDLK_RETURN; else if(LastScan == SDLK_RSHIFT) LastScan = SDLK_LSHIFT; else if(LastScan == SDLK_RALT) LastScan = SDLK_LALT; else if(LastScan == SDLK_RCTRL) LastScan = SDLK_LCTRL; else { if((mod & KMOD_NUM) == 0) { switch(LastScan) { case SDLK_KP2: LastScan = SDLK_DOWN; break; case SDLK_KP4: LastScan = SDLK_LEFT; break; case SDLK_KP6: LastScan = SDLK_RIGHT; break; case SDLK_KP8: LastScan = SDLK_UP; break; } } } int sym = LastScan; if(sym >= 'a' && sym <= 'z') sym -= 32; // convert to uppercase if(mod & (KMOD_SHIFT | KMOD_CAPS)) { if(sym < lengthof(ShiftNames) && ShiftNames[sym]) LastASCII = ShiftNames[sym]; } else { if(sym < lengthof(ASCIINames) && ASCIINames[sym]) LastASCII = ASCIINames[sym]; } if(LastScankey.keysym.sym; if(key == SDLK_KP_ENTER) key = SDLK_RETURN; else if(key == SDLK_RSHIFT) key = SDLK_LSHIFT; else if(key == SDLK_RALT) key = SDLK_LALT; else if(key == SDLK_RCTRL) key = SDLK_LCTRL; else { if((SDL_GetModState() & KMOD_NUM) == 0) { switch(key) { case SDLK_KP2: key = SDLK_DOWN; break; case SDLK_KP4: key = SDLK_LEFT; break; case SDLK_KP6: key = SDLK_RIGHT; break; case SDLK_KP8: key = SDLK_UP; break; } } } if(keyactive.state & SDL_APPACTIVE) != 0) { if(event->active.gain) { if(NeedRestore) { FreeLatchMem(); LoadLatchMem(); } NeedRestore = false; } else NeedRestore = true; } } #if defined(GP2X) case SDL_JOYBUTTONDOWN: GP2X_ButtonDown(event->jbutton.button); break; case SDL_JOYBUTTONUP: GP2X_ButtonUp(event->jbutton.button); break; #endif } } void IN_WaitAndProcessEvents() { SDL_Event event; if(!SDL_WaitEvent(&event)) return; do { processEvent(&event); } while(SDL_PollEvent(&event)); } void IN_ProcessEvents() { SDL_Event event; while (SDL_PollEvent(&event)) { processEvent(&event); } } /////////////////////////////////////////////////////////////////////////// // // IN_Startup() - Starts up the Input Mgr // /////////////////////////////////////////////////////////////////////////// void IN_Startup(void) { if (IN_Started) return; IN_ClearKeysDown(); if(param_joystickindex >= 0 && param_joystickindex < SDL_NumJoysticks()) { Joystick = SDL_JoystickOpen(param_joystickindex); if(Joystick) { JoyNumButtons = SDL_JoystickNumButtons(Joystick); if(JoyNumButtons > 32) JoyNumButtons = 32; // only up to 32 buttons are supported JoyNumHats = SDL_JoystickNumHats(Joystick); if(param_joystickhat < -1 || param_joystickhat >= JoyNumHats) Quit("The joystickhat param must be between 0 and %i!", JoyNumHats - 1); } } SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); if(fullscreen || forcegrabmouse) { GrabInput = true; SDL_WM_GrabInput(SDL_GRAB_ON); } // I didn't find a way to ask libSDL whether a mouse is present, yet... #if defined(GP2X) MousePresent = false; #elif defined(_arch_dreamcast) MousePresent = DC_MousePresent(); #else MousePresent = true; #endif IN_Started = true; } /////////////////////////////////////////////////////////////////////////// // // IN_Shutdown() - Shuts down the Input Mgr // /////////////////////////////////////////////////////////////////////////// void IN_Shutdown(void) { if (!IN_Started) return; if(Joystick) SDL_JoystickClose(Joystick); IN_Started = false; } /////////////////////////////////////////////////////////////////////////// // // IN_ClearKeysDown() - Clears the keyboard array // /////////////////////////////////////////////////////////////////////////// void IN_ClearKeysDown(void) { LastScan = sc_None; LastASCII = key_None; memset ((void *) Keyboard,0,sizeof(Keyboard)); } /////////////////////////////////////////////////////////////////////////// // // IN_ReadControl() - Reads the device associated with the specified // player and fills in the control info struct // /////////////////////////////////////////////////////////////////////////// void IN_ReadControl(int player,ControlInfo *info) { word buttons; int dx,dy; Motion mx,my; dx = dy = 0; mx = my = motion_None; buttons = 0; IN_ProcessEvents(); if (Keyboard[KbdDefs.upleft]) mx = motion_Left,my = motion_Up; else if (Keyboard[KbdDefs.upright]) mx = motion_Right,my = motion_Up; else if (Keyboard[KbdDefs.downleft]) mx = motion_Left,my = motion_Down; else if (Keyboard[KbdDefs.downright]) mx = motion_Right,my = motion_Down; if (Keyboard[KbdDefs.up]) my = motion_Up; else if (Keyboard[KbdDefs.down]) my = motion_Down; if (Keyboard[KbdDefs.left]) mx = motion_Left; else if (Keyboard[KbdDefs.right]) mx = motion_Right; if (Keyboard[KbdDefs.button0]) buttons += 1 << 0; if (Keyboard[KbdDefs.button1]) buttons += 1 << 1; dx = mx * 127; dy = my * 127; info->x = dx; info->xaxis = mx; info->y = dy; info->yaxis = my; info->button0 = (buttons & (1 << 0)) != 0; info->button1 = (buttons & (1 << 1)) != 0; info->button2 = (buttons & (1 << 2)) != 0; info->button3 = (buttons & (1 << 3)) != 0; info->dir = DirTable[((my + 1) * 3) + (mx + 1)]; } /////////////////////////////////////////////////////////////////////////// // // IN_WaitForKey() - Waits for a scan code, then clears LastScan and // returns the scan code // /////////////////////////////////////////////////////////////////////////// ScanCode IN_WaitForKey(void) { ScanCode result; while ((result = LastScan)==0) IN_WaitAndProcessEvents(); LastScan = 0; return(result); } /////////////////////////////////////////////////////////////////////////// // // IN_WaitForASCII() - Waits for an ASCII char, then clears LastASCII and // returns the ASCII value // /////////////////////////////////////////////////////////////////////////// char IN_WaitForASCII(void) { char result; while ((result = LastASCII)==0) IN_WaitAndProcessEvents(); LastASCII = '\0'; return(result); } /////////////////////////////////////////////////////////////////////////// // // IN_Ack() - waits for a button or key press. If a button is down, upon // calling, it must be released for it to be recognized // /////////////////////////////////////////////////////////////////////////// boolean btnstate[NUMBUTTONS]; void IN_StartAck(void) { IN_ProcessEvents(); // // get initial state of everything // IN_ClearKeysDown(); memset(btnstate, 0, sizeof(btnstate)); int buttons = IN_JoyButtons() << 4; if(MousePresent) buttons |= IN_MouseButtons(); for(int i = 0; i < NUMBUTTONS; i++, buttons >>= 1) if(buttons & 1) btnstate[i] = true; } boolean IN_CheckAck (void) { IN_ProcessEvents(); // // see if something has been pressed // if(LastScan) return true; int buttons = IN_JoyButtons() << 4; if(MousePresent) buttons |= IN_MouseButtons(); for(int i = 0; i < NUMBUTTONS; i++, buttons >>= 1) { if(buttons & 1) { if(!btnstate[i]) { // Wait until button has been released do { IN_WaitAndProcessEvents(); buttons = IN_JoyButtons() << 4; if(MousePresent) buttons |= IN_MouseButtons(); } while(buttons & (1 << i)); return true; } } else btnstate[i] = false; } return false; } void IN_Ack (void) { IN_StartAck (); do { IN_WaitAndProcessEvents(); } while(!IN_CheckAck ()); } /////////////////////////////////////////////////////////////////////////// // // IN_UserInput() - Waits for the specified delay time (in ticks) or the // user pressing a key or a mouse button. If the clear flag is set, it // then either clears the key or waits for the user to let the mouse // button up. // /////////////////////////////////////////////////////////////////////////// boolean IN_UserInput(longword delay) { longword lasttime; lasttime = GetTimeCount(); IN_StartAck (); do { IN_ProcessEvents(); if (IN_CheckAck()) return true; SDL_Delay(5); } while (GetTimeCount() - lasttime < delay); return(false); } //=========================================================================== /* =================== = = IN_MouseButtons = =================== */ int IN_MouseButtons (void) { if (MousePresent) return INL_GetMouseButtons(); else return 0; } bool IN_IsInputGrabbed() { return GrabInput; } void IN_CenterMouse() { SDL_WarpMouse(screenWidth / 2, screenHeight / 2); } wolf4sdl-1.7+svn262/README-GP2X.txt0000644000175000017500000000562411014653362015621 0ustar fabianfabianWolf4SDL by Moritz "Ripper" Kroll (http://www.chaos-software.de.vu) Original Wolfenstein 3D by id Software (http://www.idsoftware.com) GP2X support by Pickle Source and Windows Binary: http://www.stud.uni-karlsruhe.de/~uvaue/chaos/downloads.html GP2X Binary: http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,20,2479 SUMMARY: See main README.txt GP2X CONTROLS: Directional: these are mapped to the arrow keys. A : mapped to space, which opens doors B : mapped to left shift, which enables running. Also mapped to key n, for the NO response in the menu. X : mapped to left control, which enables shooting. Y : mapped to the number keys, to select weapons. It cycles through each weapon in order. Also mapped to key y, for the YES responses in the menu. ** NOTE: In "enter text" mode each button sends its letter, for example a=a, y=y Select: mapped to the escape key Start: mapped to the enter key Select+Start: mapped to pause Shoulder Left: this is mapped in a way to strafe left Shoulder Right: this is mapped in a way to strafe right ** NOTE: If you press both the left and right shoulder buttons the statusbar will be shown in the fullscreen mode described above. Volume Buttons: raise and lower the volume. Either Volume Button + Select: show fps Either Volume Button + Start: take a screenshot ** NOTE: The directional stick is given precedence over the strafe keys. For example if you hold the shoulder right to strafe right and you then move the stick right you will stop strafing and turn. If you then release the stick you will resume strafing the right. (I've tested this and it seems to work fairly well) INSTALL: Pick your Wolf4SDL binary and copy the files at the root of the zip to any folder together with the data files of the according game (e.g. *.WL6 for Wolfenstein 3D or *.SOD for Spear of Destiny). The binaries do not restart the GP2X menu application. If you use GMenu2x, select the wrapper option for your icon. If you use the GPH menu, you will have to create your own script to restart it. Compiling from source code: I used the Code::Blocks dev kit. (http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,14,2295) You can use the template example. Add all of the source files to the project. Under build options (pick your GP2X compilier) and under "Compilier Settings" -> "Defines" add GP2X. Just press the build button. The Makefile should also work for linux type environments, although I have not tried it this way. If you use it, the GP2X define should be added to the Makefile using CFLAGS += -DGP2X. I also added the compiler flags "-fmerge-all-constants -ffast-math -funswitch-loops" which give a good performance increase. For Code::Blocks put this line in "Compiler Settings" - "Other Options". PERFORMANCE: The game runs good at 200 Mhz. wolf4sdl-1.7+svn262/Wolf4SDL-GP2X.cbp0000644000175000017500000000402611644157635016155 0ustar fabianfabian wolf4sdl-1.7+svn262/gfxv_apo.h0000644000175000017500000001746010763630362015375 0ustar fabianfabian////////////////////////////////////// // // Graphics .H file for Apogee v1.4 // IGRAB-ed on Sun May 03 01:19:32 1992 // ////////////////////////////////////// typedef enum { // Lump Start H_BJPIC=3, H_CASTLEPIC, // 4 H_KEYBOARDPIC, // 5 H_JOYPIC, // 6 H_HEALPIC, // 7 H_TREASUREPIC, // 8 H_GUNPIC, // 9 H_KEYPIC, // 10 H_BLAZEPIC, // 11 H_WEAPON1234PIC, // 12 H_WOLFLOGOPIC, // 13 H_VISAPIC, // 14 H_MCPIC, // 15 H_IDLOGOPIC, // 16 H_TOPWINDOWPIC, // 17 H_LEFTWINDOWPIC, // 18 H_RIGHTWINDOWPIC, // 19 H_BOTTOMINFOPIC, // 20 #if !defined(APOGEE_1_0) && !defined(APOGEE_1_1) && !defined(APOGEE_1_2) H_SPEARADPIC, // 21 #endif // Lump Start C_OPTIONSPIC, // 22 C_CURSOR1PIC, // 23 C_CURSOR2PIC, // 24 C_NOTSELECTEDPIC, // 25 C_SELECTEDPIC, // 26 C_FXTITLEPIC, // 27 C_DIGITITLEPIC, // 28 C_MUSICTITLEPIC, // 29 C_MOUSELBACKPIC, // 30 C_BABYMODEPIC, // 31 C_EASYPIC, // 32 C_NORMALPIC, // 33 C_HARDPIC, // 34 C_LOADSAVEDISKPIC, // 35 C_DISKLOADING1PIC, // 36 C_DISKLOADING2PIC, // 37 C_CONTROLPIC, // 38 C_CUSTOMIZEPIC, // 39 C_LOADGAMEPIC, // 40 C_SAVEGAMEPIC, // 41 C_EPISODE1PIC, // 42 C_EPISODE2PIC, // 43 C_EPISODE3PIC, // 44 C_EPISODE4PIC, // 45 C_EPISODE5PIC, // 46 C_EPISODE6PIC, // 47 C_CODEPIC, // 48 #ifndef APOGEE_1_0 C_TIMECODEPIC, // 49 C_LEVELPIC, // 50 C_NAMEPIC, // 51 C_SCOREPIC, // 52 #if !defined(APOGEE_1_1) && !defined(APOGEE_1_2) C_JOY1PIC, // 53 C_JOY2PIC, // 54 #endif #else C_TIMECODEPIC=C_CODEPIC, // 47 #endif // Lump Start L_GUYPIC, // 55 L_COLONPIC, // 56 L_NUM0PIC, // 57 L_NUM1PIC, // 58 L_NUM2PIC, // 59 L_NUM3PIC, // 60 L_NUM4PIC, // 61 L_NUM5PIC, // 62 L_NUM6PIC, // 63 L_NUM7PIC, // 64 L_NUM8PIC, // 65 L_NUM9PIC, // 66 L_PERCENTPIC, // 67 L_APIC, // 68 L_BPIC, // 69 L_CPIC, // 70 L_DPIC, // 71 L_EPIC, // 72 L_FPIC, // 73 L_GPIC, // 74 L_HPIC, // 75 L_IPIC, // 76 L_JPIC, // 77 L_KPIC, // 78 L_LPIC, // 79 L_MPIC, // 80 L_NPIC, // 81 L_OPIC, // 82 L_PPIC, // 83 L_QPIC, // 84 L_RPIC, // 85 L_SPIC, // 86 L_TPIC, // 87 L_UPIC, // 88 L_VPIC, // 89 L_WPIC, // 90 L_XPIC, // 91 L_YPIC, // 92 L_ZPIC, // 93 L_EXPOINTPIC, // 94 #ifndef APOGEE_1_0 L_APOSTROPHEPIC, // 95 #endif L_GUY2PIC, // 96 L_BJWINSPIC, // 97 STATUSBARPIC, // 98 TITLEPIC, // 99 PG13PIC, // 100 CREDITSPIC, // 101 HIGHSCORESPIC, // 102 // Lump Start KNIFEPIC, // 103 GUNPIC, // 104 MACHINEGUNPIC, // 105 GATLINGGUNPIC, // 106 NOKEYPIC, // 107 GOLDKEYPIC, // 108 SILVERKEYPIC, // 109 N_BLANKPIC, // 110 N_0PIC, // 111 N_1PIC, // 112 N_2PIC, // 113 N_3PIC, // 114 N_4PIC, // 115 N_5PIC, // 116 N_6PIC, // 117 N_7PIC, // 118 N_8PIC, // 119 N_9PIC, // 120 FACE1APIC, // 121 FACE1BPIC, // 122 FACE1CPIC, // 123 FACE2APIC, // 124 FACE2BPIC, // 125 FACE2CPIC, // 126 FACE3APIC, // 127 FACE3BPIC, // 128 FACE3CPIC, // 129 FACE4APIC, // 130 FACE4BPIC, // 131 FACE4CPIC, // 132 FACE5APIC, // 133 FACE5BPIC, // 134 FACE5CPIC, // 135 FACE6APIC, // 136 FACE6BPIC, // 137 FACE6CPIC, // 138 FACE7APIC, // 139 FACE7BPIC, // 140 FACE7CPIC, // 141 FACE8APIC, // 142 GOTGATLINGPIC, // 143 MUTANTBJPIC, // 144 PAUSEDPIC, // 145 GETPSYCHEDPIC, // 146 TILE8, // 147 ORDERSCREEN, // 148 ERRORSCREEN, // 149 T_HELPART, // 150 #ifdef APOGEE_1_0 T_ENDART1, // 143 #endif T_DEMO0, // 151 T_DEMO1, // 152 T_DEMO2, // 153 T_DEMO3, // 154 #ifndef APOGEE_1_0 T_ENDART1, // 155 T_ENDART2, // 156 T_ENDART3, // 157 T_ENDART4, // 158 T_ENDART5, // 159 T_ENDART6, // 160 #endif ENUMEND } graphicnums; // // Data LUMPs // #define README_LUMP_START H_BJPIC #define README_LUMP_END H_BOTTOMINFOPIC #define CONTROLS_LUMP_START C_OPTIONSPIC #define CONTROLS_LUMP_END (L_GUYPIC - 1) #define LEVELEND_LUMP_START L_GUYPIC #define LEVELEND_LUMP_END L_BJWINSPIC #define LATCHPICS_LUMP_START KNIFEPIC #define LATCHPICS_LUMP_END GETPSYCHEDPIC // // Amount of each data item // #define NUMCHUNKS ENUMEND #define NUMFONT 2 #define NUMFONTM 0 #define NUMPICS (GETPSYCHEDPIC - NUMFONT) #define NUMPICM 0 #define NUMSPRITES 0 #define NUMTILE8 72 #define NUMTILE8M 0 #define NUMTILE16 0 #define NUMTILE16M 0 #define NUMTILE32 0 #define NUMTILE32M 0 #define NUMEXTERNS 13 // // File offsets for data items // #define STRUCTPIC 0 #define STARTFONT 1 #define STARTFONTM 3 #define STARTPICS 3 #define STARTPICM TILE8 #define STARTSPRITES TILE8 #define STARTTILE8 TILE8 #define STARTTILE8M ORDERSCREEN #define STARTTILE16 ORDERSCREEN #define STARTTILE16M ORDERSCREEN #define STARTTILE32 ORDERSCREEN #define STARTTILE32M ORDERSCREEN #define STARTEXTERNS ORDERSCREEN // // Thank you for using IGRAB! // wolf4sdl-1.7+svn262/sdl_winmain.cpp0000644000175000017500000002125510735771130016416 0ustar fabianfabian#ifdef _WIN32 /* SDL_main.c, placed in the public domain by Sam Lantinga 4/13/98 Modified to write stdout/stderr to a message box at shutdown by Ripper 2007-12-27 The WinMain function -- calls your program's main() function */ #include #include #define WIN32_LEAN_AND_MEAN #include #ifdef _WIN32_WCE # define DIR_SEPERATOR TEXT("\\") # undef _getcwd # define _getcwd(str,len) wcscpy(str,TEXT("")) # define setbuf(f,b) # define setvbuf(w,x,y,z) # define fopen _wfopen # define freopen _wfreopen # define remove(x) DeleteFile(x) #else # define DIR_SEPERATOR TEXT("/") # include #endif /* Include the SDL main definition header */ #include "SDL.h" #include "SDL_main.h" #ifdef main # ifndef _WIN32_WCE_EMULATION # undef main # endif /* _WIN32_WCE_EMULATION */ #endif /* main */ /* The standard output files */ #define STDOUT_FILE TEXT("stdout.txt") #define STDERR_FILE TEXT("stderr.txt") #ifndef NO_STDIO_REDIRECT # ifdef _WIN32_WCE static wchar_t stdoutPath[MAX_PATH]; static wchar_t stderrPath[MAX_PATH]; # else static char stdoutPath[MAX_PATH]; static char stderrPath[MAX_PATH]; # endif #endif #if defined(_WIN32_WCE) && _WIN32_WCE < 300 /* seems to be undefined in Win CE although in online help */ #define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t')) #endif /* _WIN32_WCE < 300 */ /* Parse a command line buffer into arguments */ static int ParseCommandLine(char *cmdline, char **argv) { char *bufp; int argc; argc = 0; for ( bufp = cmdline; *bufp; ) { /* Skip leading whitespace */ while ( isspace(*bufp) ) { ++bufp; } /* Skip over argument */ if ( *bufp == '"' ) { ++bufp; if ( *bufp ) { if ( argv ) { argv[argc] = bufp; } ++argc; } /* Skip over word */ while ( *bufp && (*bufp != '"') ) { ++bufp; } } else { if ( *bufp ) { if ( argv ) { argv[argc] = bufp; } ++argc; } /* Skip over word */ while ( *bufp && ! isspace(*bufp) ) { ++bufp; } } if ( *bufp ) { if ( argv ) { *bufp = '\0'; } ++bufp; } } if ( argv ) { argv[argc] = NULL; } return(argc); } /* Show an error message */ static void ShowError(const char *title, const char *message) { /* If USE_MESSAGEBOX is defined, you need to link with user32.lib */ #ifdef USE_MESSAGEBOX MessageBox(NULL, message, title, MB_ICONEXCLAMATION|MB_OK); #else fprintf(stderr, "%s: %s\n", title, message); #endif } /* Pop up an out of memory message, returns to Windows */ static BOOL OutOfMemory(void) { ShowError("Fatal Error", "Out of memory - aborting"); return FALSE; } /* SDL_Quit() shouldn't be used with atexit() directly because calling conventions may differ... */ static void cleanup(void) { SDL_Quit(); } /* Remove the output files if there was no output written */ static void cleanup_output(void) { #if 1 #ifndef NO_STDIO_REDIRECT FILE *file; #endif #endif /* Flush the output in case anything is queued */ fclose(stdout); fclose(stderr); #if 1 #ifndef NO_STDIO_REDIRECT /* See if the files have any output in them */ if ( stdoutPath[0] ) { file = fopen(stdoutPath, TEXT("r")); if ( file ) { char buf[16384]; size_t readbytes = fread(buf, 1, 16383, file); fclose(file); if(readbytes != 0) { buf[readbytes] = 0; // cut after last byte (<=16383) MessageBox(NULL, buf, "Wolf4SDL", MB_OK); } else remove(stdoutPath); // remove empty file } } if ( stderrPath[0] ) { file = fopen(stderrPath, TEXT("rb")); if ( file ) { char buf[16384]; size_t readbytes = fread(buf, 1, 16383, file); fclose(file); if(readbytes != 0) { buf[readbytes] = 0; // cut after last byte (<=16383) MessageBox(NULL, buf, "Wolf4SDL", MB_OK); } else remove(stderrPath); // remove empty file } } #endif #endif } //#if defined(_MSC_VER) && !defined(_WIN32_WCE) ///* The VC++ compiler needs main defined */ //#define console_main main //#endif /* This is where execution begins [console apps] */ int console_main(int argc, char *argv[]) { size_t n; char *bufp, *appname; int status; /* Get the class name from argv[0] */ appname = argv[0]; if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) { appname = bufp+1; } else if ( (bufp=SDL_strrchr(argv[0], '/')) != NULL ) { appname = bufp+1; } if ( (bufp=SDL_strrchr(appname, '.')) == NULL ) n = SDL_strlen(appname); else n = (bufp-appname); bufp = SDL_stack_alloc(char, n+1); if ( bufp == NULL ) { return OutOfMemory(); } SDL_strlcpy(bufp, appname, n+1); appname = bufp; /* Load SDL dynamic link library */ if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) { ShowError("WinMain() error", SDL_GetError()); return(FALSE); } atexit(cleanup_output); atexit(cleanup); /* Sam: We still need to pass in the application handle so that DirectInput will initialize properly when SDL_RegisterApp() is called later in the video initialization. */ SDL_SetModuleHandle(GetModuleHandle(NULL)); /* Run the application main() code */ status = SDL_main(argc, argv); /* Exit cleanly, calling atexit() functions */ exit(status); /* Hush little compiler, don't you cry... */ return 0; } /* This is where execution begins [windowed apps] */ #ifdef _WIN32_WCE int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) #else int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) #endif { HINSTANCE handle; char **argv; int argc; char *cmdline; #ifdef _WIN32_WCE wchar_t *bufp; int nLen; #else char *bufp; size_t nLen; #endif #ifndef NO_STDIO_REDIRECT DWORD pathlen; #ifdef _WIN32_WCE wchar_t path[MAX_PATH]; #else char path[MAX_PATH]; #endif FILE *newfp; #endif /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't keep them open. This is a hack.. hopefully it will be fixed someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. */ handle = LoadLibrary(TEXT("DDRAW.DLL")); if ( handle != NULL ) { FreeLibrary(handle); } #ifndef NO_STDIO_REDIRECT pathlen = GetModuleFileName(NULL, path, SDL_arraysize(path)); while ( pathlen > 0 && path[pathlen] != '\\' ) { --pathlen; } path[pathlen] = '\0'; #ifdef _WIN32_WCE wcsncpy( stdoutPath, path, SDL_arraysize(stdoutPath) ); wcsncat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); #else SDL_strlcpy( stdoutPath, path, SDL_arraysize(stdoutPath) ); SDL_strlcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); #endif /* Redirect standard input and standard output */ newfp = freopen(stdoutPath, TEXT("w"), stdout); #ifndef _WIN32_WCE if ( newfp == NULL ) { /* This happens on NT */ #if !defined(stdout) stdout = fopen(stdoutPath, TEXT("w")); #else newfp = fopen(stdoutPath, TEXT("w")); if ( newfp ) { *stdout = *newfp; } #endif } #endif /* _WIN32_WCE */ #ifdef _WIN32_WCE wcsncpy( stderrPath, path, SDL_arraysize(stdoutPath) ); wcsncat( stderrPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); #else SDL_strlcpy( stderrPath, path, SDL_arraysize(stderrPath) ); SDL_strlcat( stderrPath, DIR_SEPERATOR STDERR_FILE, SDL_arraysize(stderrPath) ); #endif newfp = freopen(stderrPath, TEXT("w"), stderr); #ifndef _WIN32_WCE if ( newfp == NULL ) { /* This happens on NT */ #if !defined(stderr) stderr = fopen(stderrPath, TEXT("w")); #else newfp = fopen(stderrPath, TEXT("w")); if ( newfp ) { *stderr = *newfp; } #endif } #endif /* _WIN32_WCE */ setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */ setbuf(stderr, NULL); /* No buffering */ #endif /* !NO_STDIO_REDIRECT */ #ifdef _WIN32_WCE nLen = wcslen(szCmdLine)+128+1; bufp = SDL_stack_alloc(wchar_t, nLen*2); wcscpy (bufp, TEXT("\"")); GetModuleFileName(NULL, bufp+1, 128-3); wcscpy (bufp+wcslen(bufp), TEXT("\" ")); wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); nLen = wcslen(bufp)+1; cmdline = SDL_stack_alloc(char, nLen); if ( cmdline == NULL ) { return OutOfMemory(); } WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); #else /* Grab the command line */ bufp = GetCommandLine(); nLen = SDL_strlen(bufp)+1; cmdline = SDL_stack_alloc(char, nLen); if ( cmdline == NULL ) { return OutOfMemory(); } SDL_strlcpy(cmdline, bufp, nLen); #endif /* Parse it into argv and argc */ argc = ParseCommandLine(cmdline, NULL); argv = SDL_stack_alloc(char*, argc+1); if ( argv == NULL ) { return OutOfMemory(); } ParseCommandLine(cmdline, argv); /* Run the main program (after a little SDL initialization) */ console_main(argc, argv); /* Hush little compiler, don't you cry... */ return 0; } #endif // _WIN32 wolf4sdl-1.7+svn262/id_sd.cpp0000644000175000017500000011233011644157635015177 0ustar fabianfabian// // ID Engine // ID_SD.c - Sound Manager for Wolfenstein 3D // v1.2 // By Jason Blochowiak // // // This module handles dealing with generating sound on the appropriate // hardware // // Depends on: User Mgr (for parm checking) // // Globals: // For User Mgr: // SoundBlasterPresent - SoundBlaster card present? // AdLibPresent - AdLib card present? // SoundMode - What device is used for sound effects // (Use SM_SetSoundMode() to set) // MusicMode - What device is used for music // (Use SM_SetMusicMode() to set) // DigiMode - What device is used for digitized sound effects // (Use SM_SetDigiDevice() to set) // // For Cache Mgr: // NeedsDigitized - load digitized sounds? // NeedsMusic - load music? // #include "wl_def.h" #include #if defined(GP2X_940) #include "gp2x/fmopl.h" #else #ifdef USE_GPL #include "dosbox/dbopl.h" #else #include "mame/fmopl.h" #endif #endif #define ORIGSAMPLERATE 7042 typedef struct { char RIFF[4]; longword filelenminus8; char WAVE[4]; char fmt_[4]; longword formatlen; word val0x0001; word channels; longword samplerate; longword bytespersec; word bytespersample; word bitspersample; } headchunk; typedef struct { char chunkid[4]; longword chunklength; } wavechunk; typedef struct { uint32_t startpage; uint32_t length; } digiinfo; static Mix_Chunk *SoundChunks[ STARTMUSIC - STARTDIGISOUNDS]; static byte *SoundBuffers[STARTMUSIC - STARTDIGISOUNDS]; globalsoundpos channelSoundPos[MIX_CHANNELS]; // Global variables boolean AdLibPresent, SoundBlasterPresent,SBProPresent, SoundPositioned; SDMode SoundMode; SMMode MusicMode; SDSMode DigiMode; static byte **SoundTable; int DigiMap[LASTSOUND]; int DigiChannel[STARTMUSIC - STARTDIGISOUNDS]; // Internal variables static boolean SD_Started; static boolean nextsoundpos; static soundnames SoundNumber; static soundnames DigiNumber; static word SoundPriority; static word DigiPriority; static int LeftPosition; static int RightPosition; word NumDigi; static digiinfo *DigiList; static boolean DigiPlaying; // PC Sound variables static volatile byte pcLastSample; static byte * volatile pcSound; static longword pcLengthLeft; // AdLib variables static byte * volatile alSound; static byte alBlock; static longword alLengthLeft; static longword alTimeCount; static Instrument alZeroInst; // Sequencer variables static volatile boolean sqActive; static word *sqHack; static word *sqHackPtr; static int sqHackLen; static int sqHackSeqLen; static longword sqHackTime; #ifdef USE_GPL DBOPL::Chip oplChip; static inline bool YM3812Init(int numChips, int clock, int rate) { oplChip.Setup(rate); return false; } static inline void YM3812Write(DBOPL::Chip &which, Bit32u reg, Bit8u val) { which.WriteReg(reg, val); } static inline void YM3812UpdateOne(DBOPL::Chip &which, int16_t *stream, int length) { Bit32s buffer[512 * 2]; int i; // length is at maximum samplesPerMusicTick = param_samplerate / 700 // so 512 is sufficient for a sample rate of 358.4 kHz (default 44.1 kHz) if(length > 512) length = 512; if(which.opl3Active) { which.GenerateBlock3(length, buffer); // GenerateBlock3 generates a number of "length" 32-bit stereo samples // so we only need to convert them to 16-bit samples for(i = 0; i < length * 2; i++) // * 2 for left/right channel { // Multiply by 4 to match loudness of MAME emulator. Bit32s sample = buffer[i] << 2; if(sample > 32767) sample = 32767; else if(sample < -32768) sample = -32768; stream[i] = sample; } } else { which.GenerateBlock2(length, buffer); // GenerateBlock3 generates a number of "length" 32-bit mono samples // so we need to convert them to 32-bit stereo samples for(i = 0; i < length; i++) { // Multiply by 4 to match loudness of MAME emulator. // Then upconvert to stereo. Bit32s sample = buffer[i] << 2; if(sample > 32767) sample = 32767; else if(sample < -32768) sample = -32768; stream[i * 2] = stream[i * 2 + 1] = (int16_t) sample; } } } #else static const int oplChip = 0; #endif static void SDL_SoundFinished(void) { SoundNumber = (soundnames)0; SoundPriority = 0; } #ifdef NOTYET void SDL_turnOnPCSpeaker(word timerval); #pragma aux SDL_turnOnPCSpeaker = \ "mov al,0b6h" \ "out 43h,al" \ "mov al,bl" \ "out 42h,al" \ "mov al,bh" \ "out 42h,al" \ "in al,61h" \ "or al,3" \ "out 61h,al" \ parm [bx] \ modify exact [al] void SDL_turnOffPCSpeaker(); #pragma aux SDL_turnOffPCSpeaker = \ "in al,61h" \ "and al,0fch" \ "out 61h,al" \ modify exact [al] void SDL_setPCSpeaker(byte val); #pragma aux SDL_setPCSpeaker = \ "in al,61h" \ "and al,0fch" \ "or al,ah" \ "out 61h,al" \ parm [ah] \ modify exact [al] void inline SDL_DoFX() { if(pcSound) { if(*pcSound!=pcLastSample) { pcLastSample=*pcSound; if(pcLastSample) SDL_turnOnPCSpeaker(pcLastSample*60); else SDL_turnOffPCSpeaker(); } pcSound++; pcLengthLeft--; if(!pcLengthLeft) { pcSound=0; SoundNumber=(soundnames)0; SoundPriority=0; SDL_turnOffPCSpeaker(); } } // [adlib sound stuff removed...] } static void SDL_DigitizedDoneInIRQ(void); void inline SDL_DoFast() { count_fx++; if(count_fx>=5) { count_fx=0; SDL_DoFX(); count_time++; if(count_time>=2) { TimeCount++; count_time=0; } } // [adlib music and soundsource stuff removed...] TimerCount+=TimerDivisor; if(*((word *)&TimerCount+1)) { *((word *)&TimerCount+1)=0; t0OldService(); } else { outp(0x20,0x20); } } // Timer 0 ISR for 7000Hz interrupts void __interrupt SDL_t0ExtremeAsmService(void) { if(pcindicate) { if(pcSound) { SDL_setPCSpeaker(((*pcSound++)&0x80)>>6); pcLengthLeft--; if(!pcLengthLeft) { pcSound=0; SDL_turnOffPCSpeaker(); SDL_DigitizedDoneInIRQ(); } } } extreme++; if(extreme>=10) { extreme=0; SDL_DoFast(); } else outp(0x20,0x20); } // Timer 0 ISR for 700Hz interrupts void __interrupt SDL_t0FastAsmService(void) { SDL_DoFast(); } // Timer 0 ISR for 140Hz interrupts void __interrupt SDL_t0SlowAsmService(void) { count_time++; if(count_time>=2) { TimeCount++; count_time=0; } SDL_DoFX(); TimerCount+=TimerDivisor; if(*((word *)&TimerCount+1)) { *((word *)&TimerCount+1)=0; t0OldService(); } else outp(0x20,0x20); } void SDL_IndicatePC(boolean ind) { pcindicate=ind; } /////////////////////////////////////////////////////////////////////////// // // SDL_SetTimer0() - Sets system timer 0 to the specified speed // /////////////////////////////////////////////////////////////////////////// static void SDL_SetTimer0(word speed) { #ifndef TPROF // If using Borland's profiling, don't screw with the timer // _asm pushfd _asm cli outp(0x43,0x36); // Change timer 0 outp(0x40,(byte)speed); outp(0x40,speed >> 8); // Kludge to handle special case for digitized PC sounds if (TimerDivisor == (1192030 / (TickBase * 100))) TimerDivisor = (1192030 / (TickBase * 10)); else TimerDivisor = speed; // _asm popfd _asm sti #else TimerDivisor = 0x10000; #endif } /////////////////////////////////////////////////////////////////////////// // // SDL_SetIntsPerSec() - Uses SDL_SetTimer0() to set the number of // interrupts generated by system timer 0 per second // /////////////////////////////////////////////////////////////////////////// static void SDL_SetIntsPerSec(word ints) { TimerRate = ints; SDL_SetTimer0(1192030 / ints); } static void SDL_SetTimerSpeed(void) { word rate; void (_interrupt *isr)(void); if ((DigiMode == sds_PC) && DigiPlaying) { rate = TickBase * 100; isr = SDL_t0ExtremeAsmService; } else if ((MusicMode == smm_AdLib) || ((DigiMode == sds_SoundSource) && DigiPlaying) ) { rate = TickBase * 10; isr = SDL_t0FastAsmService; } else { rate = TickBase * 2; isr = SDL_t0SlowAsmService; } if (rate != TimerRate) { _dos_setvect(8,isr); SDL_SetIntsPerSec(rate); TimerRate = rate; } } // // PC Sound code // /////////////////////////////////////////////////////////////////////////// // // SDL_PCPlaySample() - Plays the specified sample on the PC speaker // /////////////////////////////////////////////////////////////////////////// #ifdef _MUSE_ void #else static void #endif SDL_PCPlaySample(byte *data,longword len,boolean inIRQ) { if(!inIRQ) { // _asm pushfd _asm cli } SDL_IndicatePC(true); pcLengthLeft = len; pcSound = (volatile byte *)data; if(!inIRQ) { // _asm popfd _asm sti } } /////////////////////////////////////////////////////////////////////////// // // SDL_PCStopSample() - Stops a sample playing on the PC speaker // /////////////////////////////////////////////////////////////////////////// #ifdef _MUSE_ void #else static void #endif SDL_PCStopSampleInIRQ(void) { pcSound = 0; SDL_IndicatePC(false); _asm in al,0x61 // Turn the speaker off _asm and al,0xfd // ~2 _asm out 0x61,al } /////////////////////////////////////////////////////////////////////////// // // SDL_PCPlaySound() - Plays the specified sound on the PC speaker // /////////////////////////////////////////////////////////////////////////// #ifdef _MUSE_ void #else static void #endif SDL_PCPlaySound(PCSound *sound) { // _asm pushfd _asm cli pcLastSample = -1; pcLengthLeft = sound->common.length; pcSound = sound->data; // _asm popfd _asm sti } /////////////////////////////////////////////////////////////////////////// // // SDL_PCStopSound() - Stops the current sound playing on the PC Speaker // /////////////////////////////////////////////////////////////////////////// #ifdef _MUSE_ void #else static void #endif SDL_PCStopSound(void) { // _asm pushfd _asm cli pcSound = 0; _asm in al,0x61 // Turn the speaker off _asm and al,0xfd // ~2 _asm out 0x61,al // _asm popfd _asm sti } /////////////////////////////////////////////////////////////////////////// // // SDL_ShutPC() - Turns off the pc speaker // /////////////////////////////////////////////////////////////////////////// static void SDL_ShutPC(void) { // _asm pushfd _asm cli pcSound = 0; _asm in al,0x61 // Turn the speaker & gate off _asm and al,0xfc // ~3 _asm out 0x61,al // _asm popfd _asm sti } #endif void SD_StopDigitized(void) { DigiPlaying = false; DigiNumber = (soundnames) 0; DigiPriority = 0; SoundPositioned = false; if ((DigiMode == sds_PC) && (SoundMode == sdm_PC)) SDL_SoundFinished(); switch (DigiMode) { case sds_PC: // SDL_PCStopSampleInIRQ(); break; case sds_SoundBlaster: // SDL_SBStopSampleInIRQ(); Mix_HaltChannel(-1); break; } } int SD_GetChannelForDigi(int which) { if(DigiChannel[which] != -1) return DigiChannel[which]; int channel = Mix_GroupAvailable(1); if(channel == -1) channel = Mix_GroupOldest(1); if(channel == -1) // All sounds stopped in the meantime? return Mix_GroupAvailable(1); return channel; } void SD_SetPosition(int channel, int leftpos, int rightpos) { if((leftpos < 0) || (leftpos > 15) || (rightpos < 0) || (rightpos > 15) || ((leftpos == 15) && (rightpos == 15))) Quit("SD_SetPosition: Illegal position"); switch (DigiMode) { case sds_SoundBlaster: // SDL_PositionSBP(leftpos,rightpos); Mix_SetPanning(channel, ((15 - leftpos) << 4) + 15, ((15 - rightpos) << 4) + 15); break; } } Sint16 GetSample(float csample, byte *samples, int size) { float s0=0, s1=0, s2=0; int cursample = (int) csample; float sf = csample - (float) cursample; if(cursample-1 >= 0) s0 = (float) (samples[cursample-1] - 128); s1 = (float) (samples[cursample] - 128); if(cursample+1 < size) s2 = (float) (samples[cursample+1] - 128); float val = s0*sf*(sf-1)/2 - s1*(sf*sf-1) + s2*(sf+1)*sf/2; int32_t intval = (int32_t) (val * 256); if(intval < -32768) intval = -32768; else if(intval > 32767) intval = 32767; return (Sint16) intval; } void SD_PrepareSound(int which) { if(DigiList == NULL) Quit("SD_PrepareSound(%i): DigiList not initialized!\n", which); int page = DigiList[which].startpage; int size = DigiList[which].length; byte *origsamples = PM_GetSound(page); if(origsamples + size >= PM_GetEnd()) Quit("SD_PrepareSound(%i): Sound reaches out of page file!\n", which); int destsamples = (int) ((float) size * (float) param_samplerate / (float) ORIGSAMPLERATE); byte *wavebuffer = (byte *) malloc(sizeof(headchunk) + sizeof(wavechunk) + destsamples * 2); // dest are 16-bit samples if(wavebuffer == NULL) Quit("Unable to allocate wave buffer for sound %i!\n", which); headchunk head = {{'R','I','F','F'}, 0, {'W','A','V','E'}, {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; head.filelenminus8 = sizeof(head) + destsamples*2; // (sizeof(dhead)-8 = 0) memcpy(wavebuffer, &head, sizeof(head)); memcpy(wavebuffer+sizeof(head), &dhead, sizeof(dhead)); // alignment is correct, as wavebuffer comes from malloc // and sizeof(headchunk) % 4 == 0 and sizeof(wavechunk) % 4 == 0 Sint16 *newsamples = (Sint16 *)(void *) (wavebuffer + sizeof(headchunk) + sizeof(wavechunk)); float cursample = 0.F; float samplestep = (float) ORIGSAMPLERATE / (float) param_samplerate; for(int i=0; i= NumDigi) Quit("SD_PlayDigitized: bad sound number %i", which); int channel = SD_GetChannelForDigi(which); SD_SetPosition(channel, leftpos,rightpos); DigiPlaying = true; Mix_Chunk *sample = SoundChunks[which]; if(sample == NULL) { printf("SoundChunks[%i] is NULL!\n", which); return 0; } if(Mix_PlayChannel(channel, sample, 0) == -1) { printf("Unable to play sound: %s\n", Mix_GetError()); return 0; } return channel; } void SD_ChannelFinished(int channel) { channelSoundPos[channel].valid = 0; } void SD_SetDigiDevice(SDSMode mode) { boolean devicenotpresent; if (mode == DigiMode) return; SD_StopDigitized(); devicenotpresent = false; switch (mode) { case sds_SoundBlaster: if (!SoundBlasterPresent) devicenotpresent = true; break; } if (!devicenotpresent) { DigiMode = mode; #ifdef NOTYET SDL_SetTimerSpeed(); #endif } } void SDL_SetupDigi(void) { // Correct padding enforced by PM_Startup() word *soundInfoPage = (word *) (void *) PM_GetPage(ChunksInFile-1); NumDigi = (word) PM_GetPageSize(ChunksInFile - 1) / 4; DigiList = (digiinfo *) malloc(NumDigi * sizeof(digiinfo)); int i; for(i = 0; i < NumDigi; i++) { // Calculate the size of the digi from the sizes of the pages between // the start page and the start page of the next sound DigiList[i].startpage = soundInfoPage[i * 2]; if((int) DigiList[i].startpage >= ChunksInFile - 1) { NumDigi = i; break; } int lastPage; if(i < NumDigi - 1) { lastPage = soundInfoPage[i * 2 + 2]; if(lastPage == 0 || lastPage + PMSoundStart > ChunksInFile - 1) lastPage = ChunksInFile - 1; else lastPage += PMSoundStart; } else lastPage = ChunksInFile - 1; int size = 0; for(int page = PMSoundStart + DigiList[i].startpage; page < lastPage; page++) size += PM_GetPageSize(page); // Don't include padding of sound info page, if padding was added if(lastPage == ChunksInFile - 1 && PMSoundInfoPagePadded) size--; // Patch lower 16-bit of size with size from sound info page. // The original VSWAP contains padding which is included in the page size, // but not included in the 16-bit size. So we use the more precise value. if((size & 0xffff0000) != 0 && (size & 0xffff) < soundInfoPage[i * 2 + 1]) size -= 0x10000; size = (size & 0xffff0000) | soundInfoPage[i * 2 + 1]; DigiList[i].length = size; } for(i = 0; i < LASTSOUND; i++) { DigiMap[i] = -1; DigiChannel[i] = -1; } } // AdLib Code /////////////////////////////////////////////////////////////////////////// // // SDL_ALStopSound() - Turns off any sound effects playing through the // AdLib card // /////////////////////////////////////////////////////////////////////////// static void SDL_ALStopSound(void) { alSound = 0; alOut(alFreqH + 0, 0); } static void SDL_AlSetFXInst(Instrument *inst) { byte c,m; m = 0; // modulator cell for channel 0 c = 3; // carrier cell for channel 0 alOut(m + alChar,inst->mChar); alOut(m + alScale,inst->mScale); alOut(m + alAttack,inst->mAttack); alOut(m + alSus,inst->mSus); alOut(m + alWave,inst->mWave); alOut(c + alChar,inst->cChar); alOut(c + alScale,inst->cScale); alOut(c + alAttack,inst->cAttack); alOut(c + alSus,inst->cSus); alOut(c + alWave,inst->cWave); // Note: Switch commenting on these lines for old MUSE compatibility // alOutInIRQ(alFeedCon,inst->nConn); alOut(alFeedCon,0); } /////////////////////////////////////////////////////////////////////////// // // SDL_ALPlaySound() - Plays the specified sound on the AdLib card // /////////////////////////////////////////////////////////////////////////// static void SDL_ALPlaySound(AdLibSound *sound) { Instrument *inst; byte *data; SDL_ALStopSound(); alLengthLeft = sound->common.length; data = sound->data; alBlock = ((sound->block & 7) << 2) | 0x20; inst = &sound->inst; if (!(inst->mSus | inst->cSus)) { Quit("SDL_ALPlaySound() - Bad instrument"); } SDL_AlSetFXInst(inst); alSound = (byte *)data; } /////////////////////////////////////////////////////////////////////////// // // SDL_ShutAL() - Shuts down the AdLib card for sound effects // /////////////////////////////////////////////////////////////////////////// static void SDL_ShutAL(void) { alSound = 0; alOut(alEffects,0); alOut(alFreqH + 0,0); SDL_AlSetFXInst(&alZeroInst); } /////////////////////////////////////////////////////////////////////////// // // SDL_CleanAL() - Totally shuts down the AdLib card // /////////////////////////////////////////////////////////////////////////// static void SDL_CleanAL(void) { int i; alOut(alEffects,0); for (i = 1; i < 0xf5; i++) alOut(i, 0); } /////////////////////////////////////////////////////////////////////////// // // SDL_StartAL() - Starts up the AdLib card for sound effects // /////////////////////////////////////////////////////////////////////////// static void SDL_StartAL(void) { alOut(alEffects, 0); SDL_AlSetFXInst(&alZeroInst); } /////////////////////////////////////////////////////////////////////////// // // SDL_DetectAdLib() - Determines if there's an AdLib (or SoundBlaster // emulating an AdLib) present // /////////////////////////////////////////////////////////////////////////// static boolean SDL_DetectAdLib(void) { for (int i = 1; i <= 0xf5; i++) // Zero all the registers alOut(i, 0); alOut(1, 0x20); // Set WSE=1 // alOut(8, 0); // Set CSM=0 & SEL=0 return true; } //////////////////////////////////////////////////////////////////////////// // // SDL_ShutDevice() - turns off whatever device was being used for sound fx // //////////////////////////////////////////////////////////////////////////// static void SDL_ShutDevice(void) { switch (SoundMode) { case sdm_PC: // SDL_ShutPC(); break; case sdm_AdLib: SDL_ShutAL(); break; } SoundMode = sdm_Off; } /////////////////////////////////////////////////////////////////////////// // // SDL_CleanDevice() - totally shuts down all sound devices // /////////////////////////////////////////////////////////////////////////// static void SDL_CleanDevice(void) { if ((SoundMode == sdm_AdLib) || (MusicMode == smm_AdLib)) SDL_CleanAL(); } /////////////////////////////////////////////////////////////////////////// // // SDL_StartDevice() - turns on whatever device is to be used for sound fx // /////////////////////////////////////////////////////////////////////////// static void SDL_StartDevice(void) { switch (SoundMode) { case sdm_AdLib: SDL_StartAL(); break; } SoundNumber = (soundnames) 0; SoundPriority = 0; } // Public routines /////////////////////////////////////////////////////////////////////////// // // SD_SetSoundMode() - Sets which sound hardware to use for sound effects // /////////////////////////////////////////////////////////////////////////// boolean SD_SetSoundMode(SDMode mode) { boolean result = false; word tableoffset; SD_StopSound(); if ((mode == sdm_AdLib) && !AdLibPresent) mode = sdm_PC; switch (mode) { case sdm_Off: tableoffset = STARTADLIBSOUNDS; result = true; break; case sdm_PC: tableoffset = STARTPCSOUNDS; result = true; break; case sdm_AdLib: tableoffset = STARTADLIBSOUNDS; if (AdLibPresent) result = true; break; default: Quit("SD_SetSoundMode: Invalid sound mode %i", mode); return false; } SoundTable = &audiosegs[tableoffset]; if (result && (mode != SoundMode)) { SDL_ShutDevice(); SoundMode = mode; SDL_StartDevice(); } return(result); } /////////////////////////////////////////////////////////////////////////// // // SD_SetMusicMode() - sets the device to use for background music // /////////////////////////////////////////////////////////////////////////// boolean SD_SetMusicMode(SMMode mode) { boolean result = false; SD_FadeOutMusic(); while (SD_MusicPlaying()) SDL_Delay(5); switch (mode) { case smm_Off: result = true; break; case smm_AdLib: if (AdLibPresent) result = true; break; } if (result) MusicMode = mode; // SDL_SetTimerSpeed(); return(result); } int numreadysamples = 0; byte *curAlSound = 0; byte *curAlSoundPtr = 0; longword curAlLengthLeft = 0; int soundTimeCounter = 5; int samplesPerMusicTick; void SDL_IMFMusicPlayer(void *udata, Uint8 *stream, int len) { int stereolen = len>>1; int sampleslen = stereolen>>1; int16_t *stream16 = (int16_t *) (void *) stream; // expect correct alignment while(1) { if(numreadysamples) { if(numreadysamples alTimeCount) break; sqHackTime = alTimeCount + *(sqHackPtr+1); alOut(*(byte *) sqHackPtr, *(((byte *) sqHackPtr)+1)); sqHackPtr += 2; sqHackLen -= 4; } while(sqHackLen>0); alTimeCount++; if(!sqHackLen) { sqHackPtr = sqHack; sqHackLen = sqHackSeqLen; sqHackTime = 0; alTimeCount = 0; } } numreadysamples = samplesPerMusicTick; } } /////////////////////////////////////////////////////////////////////////// // // SD_Startup() - starts up the Sound Mgr // Detects all additional sound hardware and installs my ISR // /////////////////////////////////////////////////////////////////////////// void SD_Startup(void) { int i; if (SD_Started) return; if(Mix_OpenAudio(param_samplerate, AUDIO_S16, 2, param_audiobuffer)) { printf("Unable to open audio: %s\n", Mix_GetError()); return; } Mix_ReserveChannels(2); // reserve player and boss weapon channels Mix_GroupChannels(2, MIX_CHANNELS-1, 1); // group remaining channels // Init music samplesPerMusicTick = param_samplerate / 700; // SDL_t0FastAsmService played at 700Hz if(YM3812Init(1,3579545,param_samplerate)) { printf("Unable to create virtual OPL!!\n"); } for(i=1;i<0xf6;i++) YM3812Write(oplChip,i,0); YM3812Write(oplChip,1,0x20); // Set WSE=1 // YM3812Write(0,8,0); // Set CSM=0 & SEL=0 // already set in for statement Mix_HookMusic(SDL_IMFMusicPlayer, 0); Mix_ChannelFinished(SD_ChannelFinished); AdLibPresent = true; SoundBlasterPresent = true; alTimeCount = 0; SD_SetSoundMode(sdm_Off); SD_SetMusicMode(smm_Off); SDL_SetupDigi(); SD_Started = true; } /////////////////////////////////////////////////////////////////////////// // // SD_Shutdown() - shuts down the Sound Mgr // Removes sound ISR and turns off whatever sound hardware was active // /////////////////////////////////////////////////////////////////////////// void SD_Shutdown(void) { if (!SD_Started) return; SD_MusicOff(); SD_StopSound(); for(int i = 0; i < STARTMUSIC - STARTDIGISOUNDS; i++) { if(SoundChunks[i]) Mix_FreeChunk(SoundChunks[i]); if(SoundBuffers[i]) free(SoundBuffers[i]); } free(DigiList); SD_Started = false; } /////////////////////////////////////////////////////////////////////////// // // SD_PositionSound() - Sets up a stereo imaging location for the next // sound to be played. Each channel ranges from 0 to 15. // /////////////////////////////////////////////////////////////////////////// void SD_PositionSound(int leftvol,int rightvol) { LeftPosition = leftvol; RightPosition = rightvol; nextsoundpos = true; } /////////////////////////////////////////////////////////////////////////// // // SD_PlaySound() - plays the specified sound on the appropriate hardware // /////////////////////////////////////////////////////////////////////////// boolean SD_PlaySound(soundnames sound) { boolean ispos; SoundCommon *s; int lp,rp; lp = LeftPosition; rp = RightPosition; LeftPosition = 0; RightPosition = 0; ispos = nextsoundpos; nextsoundpos = false; if (sound == -1 || (DigiMode == sds_Off && SoundMode == sdm_Off)) return 0; s = (SoundCommon *) SoundTable[sound]; if ((SoundMode != sdm_Off) && !s) Quit("SD_PlaySound() - Uncached sound"); if ((DigiMode != sds_Off) && (DigiMap[sound] != -1)) { if ((DigiMode == sds_PC) && (SoundMode == sdm_PC)) { #ifdef NOTYET if (s->priority < SoundPriority) return 0; SDL_PCStopSound(); SD_PlayDigitized(DigiMap[sound],lp,rp); SoundPositioned = ispos; SoundNumber = sound; SoundPriority = s->priority; #else return 0; #endif } else { #ifdef NOTYET if (s->priority < DigiPriority) return(false); #endif int channel = SD_PlayDigitized(DigiMap[sound], lp, rp); SoundPositioned = ispos; DigiNumber = sound; DigiPriority = s->priority; return channel + 1; } return(true); } if (SoundMode == sdm_Off) return 0; if (!s->length) Quit("SD_PlaySound() - Zero length sound"); if (s->priority < SoundPriority) return 0; switch (SoundMode) { case sdm_PC: // SDL_PCPlaySound((PCSound *)s); break; case sdm_AdLib: SDL_ALPlaySound((AdLibSound *)s); break; } SoundNumber = sound; SoundPriority = s->priority; return 0; } /////////////////////////////////////////////////////////////////////////// // // SD_SoundPlaying() - returns the sound number that's playing, or 0 if // no sound is playing // /////////////////////////////////////////////////////////////////////////// word SD_SoundPlaying(void) { boolean result = false; switch (SoundMode) { case sdm_PC: result = pcSound? true : false; break; case sdm_AdLib: result = alSound? true : false; break; } if (result) return(SoundNumber); else return(false); } /////////////////////////////////////////////////////////////////////////// // // SD_StopSound() - if a sound is playing, stops it // /////////////////////////////////////////////////////////////////////////// void SD_StopSound(void) { if (DigiPlaying) SD_StopDigitized(); switch (SoundMode) { case sdm_PC: // SDL_PCStopSound(); break; case sdm_AdLib: SDL_ALStopSound(); break; } SoundPositioned = false; SDL_SoundFinished(); } /////////////////////////////////////////////////////////////////////////// // // SD_WaitSoundDone() - waits until the current sound is done playing // /////////////////////////////////////////////////////////////////////////// void SD_WaitSoundDone(void) { while (SD_SoundPlaying()) SDL_Delay(5); } /////////////////////////////////////////////////////////////////////////// // // SD_MusicOn() - turns on the sequencer // /////////////////////////////////////////////////////////////////////////// void SD_MusicOn(void) { sqActive = true; } /////////////////////////////////////////////////////////////////////////// // // SD_MusicOff() - turns off the sequencer and any playing notes // returns the last music offset for music continue // /////////////////////////////////////////////////////////////////////////// int SD_MusicOff(void) { word i; sqActive = false; switch (MusicMode) { case smm_AdLib: alOut(alEffects, 0); for (i = 0;i < sqMaxTracks;i++) alOut(alFreqH + i + 1, 0); break; } return (int) (sqHackPtr-sqHack); } /////////////////////////////////////////////////////////////////////////// // // SD_StartMusic() - starts playing the music pointed to // /////////////////////////////////////////////////////////////////////////// void SD_StartMusic(int chunk) { SD_MusicOff(); if (MusicMode == smm_AdLib) { int32_t chunkLen = CA_CacheAudioChunk(chunk); sqHack = (word *)(void *) audiosegs[chunk]; // alignment is correct if(*sqHack == 0) sqHackLen = sqHackSeqLen = chunkLen; else sqHackLen = sqHackSeqLen = *sqHack++; sqHackPtr = sqHack; sqHackTime = 0; alTimeCount = 0; SD_MusicOn(); } } void SD_ContinueMusic(int chunk, int startoffs) { SD_MusicOff(); if (MusicMode == smm_AdLib) { int32_t chunkLen = CA_CacheAudioChunk(chunk); sqHack = (word *)(void *) audiosegs[chunk]; // alignment is correct if(*sqHack == 0) sqHackLen = sqHackSeqLen = chunkLen; else sqHackLen = sqHackSeqLen = *sqHack++; sqHackPtr = sqHack; if(startoffs >= sqHackLen) { Quit("SD_StartMusic: Illegal startoffs provided!"); } // fast forward to correct position // (needed to reconstruct the instruments) for(int i = 0; i < startoffs; i += 2) { byte reg = *(byte *)sqHackPtr; byte val = *(((byte *)sqHackPtr) + 1); if(reg >= 0xb1 && reg <= 0xb8) val &= 0xdf; // disable play note flag else if(reg == 0xbd) val &= 0xe0; // disable drum flags alOut(reg,val); sqHackPtr += 2; sqHackLen -= 4; } sqHackTime = 0; alTimeCount = 0; SD_MusicOn(); } } /////////////////////////////////////////////////////////////////////////// // // SD_FadeOutMusic() - starts fading out the music. Call SD_MusicPlaying() // to see if the fadeout is complete // /////////////////////////////////////////////////////////////////////////// void SD_FadeOutMusic(void) { switch (MusicMode) { case smm_AdLib: // DEBUG - quick hack to turn the music off SD_MusicOff(); break; } } /////////////////////////////////////////////////////////////////////////// // // SD_MusicPlaying() - returns true if music is currently playing, false if // not // /////////////////////////////////////////////////////////////////////////// boolean SD_MusicPlaying(void) { boolean result; switch (MusicMode) { case smm_AdLib: result = sqActive; break; default: result = false; break; } return(result); } wolf4sdl-1.7+svn262/wl_inter.cpp0000644000175000017500000011616011134105020015714 0ustar fabianfabian// WL_INTER.C #include "wl_def.h" #pragma hdrstop LRstruct LevelRatios[LRpack]; int32_t lastBreathTime = 0; void Write (int x, int y, const char *string); //========================================================================== /* ================== = = CLearSplitVWB = ================== */ void ClearSplitVWB (void) { WindowX = 0; WindowY = 0; WindowW = 320; WindowH = 160; } //========================================================================== #ifdef SPEAR #ifndef SPEARDEMO //////////////////////////////////////////////////////// // // End of Spear of Destiny // //////////////////////////////////////////////////////// void EndScreen (int palette, int screen) { SDL_Color pal[256]; CA_CacheScreen (screen); VW_UpdateScreen (); CA_CacheGrChunk (palette); VL_ConvertPalette(grsegs[palette], pal, 256); VL_FadeIn (0, 255, pal, 30); UNCACHEGRCHUNK (palette); IN_ClearKeysDown (); IN_Ack (); VW_FadeOut (); } void EndSpear (void) { SDL_Color pal[256]; EndScreen (END1PALETTE, ENDSCREEN11PIC); CA_CacheScreen (ENDSCREEN3PIC); VW_UpdateScreen (); CA_CacheGrChunk (END3PALETTE); VL_ConvertPalette(grsegs[END3PALETTE], pal, 256); VL_FadeIn (0, 255, pal, 30); UNCACHEGRCHUNK (END3PALETTE); fontnumber = 0; fontcolor = 0xd0; WindowX = 0; WindowW = 320; PrintX = 0; PrintY = 180; US_CPrint (STR_ENDGAME1 "\n"); US_CPrint (STR_ENDGAME2); VW_UpdateScreen (); IN_UserInput(700); PrintX = 0; PrintY = 180; VWB_Bar (0, 180, 320, 20, 0); US_CPrint (STR_ENDGAME3 "\n"); US_CPrint (STR_ENDGAME4); VW_UpdateScreen (); IN_UserInput(700); VW_FadeOut (); EndScreen (END4PALETTE, ENDSCREEN4PIC); EndScreen (END5PALETTE, ENDSCREEN5PIC); EndScreen (END6PALETTE, ENDSCREEN6PIC); EndScreen (END7PALETTE, ENDSCREEN7PIC); EndScreen (END8PALETTE, ENDSCREEN8PIC); EndScreen (END9PALETTE, ENDSCREEN9PIC); EndScreen (END2PALETTE, ENDSCREEN12PIC); MainMenu[savegame].active = 0; } #endif #endif //========================================================================== /* ================== = = Victory = ================== */ void Victory (void) { #ifndef SPEARDEMO int32_t sec; int i, min, kr, sr, tr, x; char tempstr[8]; #define RATIOX 6 #define RATIOY 14 #define TIMEX 14 #define TIMEY 8 #ifdef SPEAR StartCPMusic (XTHEEND_MUS); CA_CacheGrChunk (BJCOLLAPSE1PIC); CA_CacheGrChunk (BJCOLLAPSE2PIC); CA_CacheGrChunk (BJCOLLAPSE3PIC); CA_CacheGrChunk (BJCOLLAPSE4PIC); VWB_Bar (0, 0, 320, 200, VIEWCOLOR); VWB_DrawPic (124, 44, BJCOLLAPSE1PIC); VW_UpdateScreen (); VW_FadeIn (); VW_WaitVBL (2 * 70); VWB_DrawPic (124, 44, BJCOLLAPSE2PIC); VW_UpdateScreen (); VW_WaitVBL (105); VWB_DrawPic (124, 44, BJCOLLAPSE3PIC); VW_UpdateScreen (); VW_WaitVBL (105); VWB_DrawPic (124, 44, BJCOLLAPSE4PIC); VW_UpdateScreen (); VW_WaitVBL (3 * 70); UNCACHEGRCHUNK (BJCOLLAPSE1PIC); UNCACHEGRCHUNK (BJCOLLAPSE2PIC); UNCACHEGRCHUNK (BJCOLLAPSE3PIC); UNCACHEGRCHUNK (BJCOLLAPSE4PIC); VL_FadeOut (0, 255, 0, 17, 17, 5); #endif StartCPMusic (URAHERO_MUS); ClearSplitVWB (); CacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); CA_CacheGrChunk (STARTFONT); #ifndef SPEAR CA_CacheGrChunk (C_TIMECODEPIC); #endif VWB_Bar (0, 0, 320, screenHeight / scaleFactor - STATUSLINES + 1, VIEWCOLOR); if (bordercol != VIEWCOLOR) DrawStatusBorder (VIEWCOLOR); #ifdef JAPAN #ifndef JAPDEMO CA_CacheGrChunk (C_ENDRATIOSPIC); VWB_DrawPic (0, 0, C_ENDRATIOSPIC); UNCACHEGRCHUNK (C_ENDRATIOSPIC); #endif #else Write (18, 2, STR_YOUWIN); Write (TIMEX, TIMEY - 2, STR_TOTALTIME); Write (12, RATIOY - 2, "averages"); #ifdef SPANISH Write (RATIOX + 2, RATIOY, STR_RATKILL); Write (RATIOX + 2, RATIOY + 2, STR_RATSECRET); Write (RATIOX + 2, RATIOY + 4, STR_RATTREASURE); #else Write (RATIOX + 8, RATIOY, STR_RATKILL); Write (RATIOX + 4, RATIOY + 2, STR_RATSECRET); Write (RATIOX, RATIOY + 4, STR_RATTREASURE); #endif #endif #ifndef JAPDEMO VWB_DrawPic (8, 4, L_BJWINSPIC); #endif for (kr = sr = tr = sec = i = 0; i < LRpack; i++) { sec += LevelRatios[i].time; kr += LevelRatios[i].kill; sr += LevelRatios[i].secret; tr += LevelRatios[i].treasure; } #ifndef SPEAR kr /= LRpack; sr /= LRpack; tr /= LRpack; #else kr /= 14; sr /= 14; tr /= 14; #endif min = sec / 60; sec %= 60; if (min > 99) min = sec = 99; i = TIMEX * 8 + 1; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (min / 10)); i += 2 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (min % 10)); i += 2 * 8; Write (i / 8, TIMEY, ":"); i += 1 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (sec / 10)); i += 2 * 8; VWB_DrawPic (i, TIMEY * 8, L_NUM0PIC + (sec % 10)); VW_UpdateScreen (); itoa (kr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY, tempstr); itoa (sr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY + 2, tempstr); itoa (tr, tempstr, 10); x = RATIOX + 24 - (int) strlen(tempstr) * 2; Write (x, RATIOY + 4, tempstr); #ifndef SPANISH #ifndef UPLOAD #ifndef SPEAR // // TOTAL TIME VERIFICATION CODE // if (gamestate.difficulty >= gd_medium) { VWB_DrawPic (30 * 8, TIMEY * 8, C_TIMECODEPIC); fontnumber = 0; fontcolor = READHCOLOR; PrintX = 30 * 8 - 3; PrintY = TIMEY * 8 + 8; PrintX += 4; tempstr[0] = (((min / 10) ^ (min % 10)) ^ 0xa) + 'A'; tempstr[1] = (int) ((((sec / 10) ^ (sec % 10)) ^ 0xa) + 'A'); tempstr[2] = (tempstr[0] ^ tempstr[1]) + 'A'; tempstr[3] = 0; US_Print (tempstr); } #endif #endif #endif fontnumber = 1; VW_UpdateScreen (); VW_FadeIn (); IN_Ack (); VW_FadeOut (); if(screenHeight % 200 != 0) VL_ClearScreen(0); #ifndef SPEAR UNCACHEGRCHUNK (C_TIMECODEPIC); #endif UnCacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); #ifndef SPEAR EndText (); #else EndSpear (); #endif #endif // SPEARDEMO } //========================================================================== #ifndef JAPAN /* ================== = = PG13 = ================== */ void PG13 (void) { VW_FadeOut (); VWB_Bar (0, 0, 320, 200, 0x82); // background CA_CacheGrChunk (PG13PIC); VWB_DrawPic (216, 110, PG13PIC); VW_UpdateScreen (); UNCACHEGRCHUNK (PG13PIC); VW_FadeIn (); IN_UserInput (TickBase * 7); VW_FadeOut (); } #endif //========================================================================== void Write (int x, int y, const char *string) { static const int alpha[] = { L_NUM0PIC, L_NUM1PIC, L_NUM2PIC, L_NUM3PIC, L_NUM4PIC, L_NUM5PIC, L_NUM6PIC, L_NUM7PIC, L_NUM8PIC, L_NUM9PIC, L_COLONPIC, 0, 0, 0, 0, 0, 0, L_APIC, L_BPIC, L_CPIC, L_DPIC, L_EPIC, L_FPIC, L_GPIC, L_HPIC, L_IPIC, L_JPIC, L_KPIC, L_LPIC, L_MPIC, L_NPIC, L_OPIC, L_PPIC, L_QPIC, L_RPIC, L_SPIC, L_TPIC, L_UPIC, L_VPIC, L_WPIC, L_XPIC, L_YPIC, L_ZPIC }; int i, ox, nx, ny, len = (int) strlen(string); char ch; ox = nx = x * 8; ny = y * 8; for (i = 0; i < len; i++) { if (string[i] == '\n') { nx = ox; ny += 16; } else { ch = string[i]; if (ch >= 'a') ch -= ('a' - 'A'); ch -= '0'; switch (string[i]) { case '!': VWB_DrawPic (nx, ny, L_EXPOINTPIC); nx += 8; continue; #ifndef APOGEE_1_0 case '\'': VWB_DrawPic (nx, ny, L_APOSTROPHEPIC); nx += 8; continue; #endif case ' ': break; case 0x3a: // ':' VWB_DrawPic (nx, ny, L_COLONPIC); nx += 8; continue; case '%': VWB_DrawPic (nx, ny, L_PERCENTPIC); break; default: VWB_DrawPic (nx, ny, alpha[ch]); } nx += 16; } } } // // Breathe Mr. BJ!!! // void BJ_Breathe (void) { static int which = 0, max = 10; int pics[2] = { L_GUYPIC, L_GUY2PIC }; SDL_Delay(5); if ((int32_t) GetTimeCount () - lastBreathTime > max) { which ^= 1; VWB_DrawPic (0, 16, pics[which]); VW_UpdateScreen (); lastBreathTime = GetTimeCount(); max = 35; } } /* ================== = = LevelCompleted = = Entered with the screen faded out = Still in split screen mode with the status bar = = Exit with the screen faded out = ================== */ void LevelCompleted (void) { #define VBLWAIT 30 #define PAR_AMOUNT 500 #define PERCENT100AMT 10000 typedef struct { float time; char timestr[6]; } times; int x, i, min, sec, ratio, kr, sr, tr; char tempstr[10]; int32_t bonus, timeleft = 0; times parTimes[] = { #ifndef SPEAR // // Episode One Par Times // {1.5, "01:30"}, {2, "02:00"}, {2, "02:00"}, {3.5, "03:30"}, {3, "03:00"}, {3, "03:00"}, {2.5, "02:30"}, {2.5, "02:30"}, {0, "??:??"}, // Boss level {0, "??:??"}, // Secret level // // Episode Two Par Times // {1.5, "01:30"}, {3.5, "03:30"}, {3, "03:00"}, {2, "02:00"}, {4, "04:00"}, {6, "06:00"}, {1, "01:00"}, {3, "03:00"}, {0, "??:??"}, {0, "??:??"}, // // Episode Three Par Times // {1.5, "01:30"}, {1.5, "01:30"}, {2.5, "02:30"}, {2.5, "02:30"}, {3.5, "03:30"}, {2.5, "02:30"}, {2, "02:00"}, {6, "06:00"}, {0, "??:??"}, {0, "??:??"}, // // Episode Four Par Times // {2, "02:00"}, {2, "02:00"}, {1.5, "01:30"}, {1, "01:00"}, {4.5, "04:30"}, {3.5, "03:30"}, {2, "02:00"}, {4.5, "04:30"}, {0, "??:??"}, {0, "??:??"}, // // Episode Five Par Times // {2.5, "02:30"}, {1.5, "01:30"}, {2.5, "02:30"}, {2.5, "02:30"}, {4, "04:00"}, {3, "03:00"}, {4.5, "04:30"}, {3.5, "03:30"}, {0, "??:??"}, {0, "??:??"}, // // Episode Six Par Times // {6.5, "06:30"}, {4, "04:00"}, {4.5, "04:30"}, {6, "06:00"}, {5, "05:00"}, {5.5, "05:30"}, {5.5, "05:30"}, {8.5, "08:30"}, {0, "??:??"}, {0, "??:??"} #else // // SPEAR OF DESTINY TIMES // {1.5, "01:30"}, {3.5, "03:30"}, {2.75, "02:45"}, {3.5, "03:30"}, {0, "??:??"}, // Boss 1 {4.5, "04:30"}, {3.25, "03:15"}, {2.75, "02:45"}, {4.75, "04:45"}, {0, "??:??"}, // Boss 2 {6.5, "06:30"}, {4.5, "04:30"}, {2.75, "02:45"}, {4.5, "04:30"}, {6, "06:00"}, {0, "??:??"}, // Boss 3 {6, "06:00"}, {0, "??:??"}, // Boss 4 {0, "??:??"}, // Secret level 1 {0, "??:??"}, // Secret level 2 #endif }; CacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); ClearSplitVWB (); // set up for double buffering in split screen VWB_Bar (0, 0, 320, screenHeight / scaleFactor - STATUSLINES + 1, VIEWCOLOR); if (bordercol != VIEWCOLOR) DrawStatusBorder (VIEWCOLOR); StartCPMusic (ENDLEVEL_MUS); // // do the intermission // IN_ClearKeysDown (); IN_StartAck (); #ifdef JAPAN CA_CacheGrChunk (C_INTERMISSIONPIC); VWB_DrawPic (0, 0, C_INTERMISSIONPIC); UNCACHEGRCHUNK (C_INTERMISSIONPIC); #endif VWB_DrawPic (0, 16, L_GUYPIC); #ifndef SPEAR if (mapon < 8) #else if (mapon != 4 && mapon != 9 && mapon != 15 && mapon < 17) #endif { #ifndef JAPAN #ifdef SPANISH Write (14, 2, "piso\ncompletado"); #else Write (14, 2, "floor\ncompleted"); #endif Write (14, 7, STR_BONUS " 0"); Write (16, 10, STR_TIME); Write (16, 12, STR_PAR); #ifdef SPANISH Write (11, 14, STR_RAT2KILL); Write (11, 16, STR_RAT2SECRET); Write (11, 18, STR_RAT2TREASURE); #else Write (9, 14, STR_RAT2KILL); Write (5, 16, STR_RAT2SECRET); Write (1, 18, STR_RAT2TREASURE); #endif Write (26, 2, itoa (gamestate.mapon + 1, tempstr, 10)); #endif #ifdef SPANISH Write (30, 12, parTimes[gamestate.episode * 10 + mapon].timestr); #else Write (26, 12, parTimes[gamestate.episode * 10 + mapon].timestr); #endif // // PRINT TIME // sec = gamestate.TimeCount / 70; if (sec > 99 * 60) // 99 minutes max sec = 99 * 60; if (gamestate.TimeCount < parTimes[gamestate.episode * 10 + mapon].time * 4200) timeleft = (int32_t) ((parTimes[gamestate.episode * 10 + mapon].time * 4200) / 70 - sec); min = sec / 60; sec %= 60; #ifdef SPANISH i = 30 * 8; #else i = 26 * 8; #endif VWB_DrawPic (i, 10 * 8, L_NUM0PIC + (min / 10)); i += 2 * 8; VWB_DrawPic (i, 10 * 8, L_NUM0PIC + (min % 10)); i += 2 * 8; Write (i / 8, 10, ":"); i += 1 * 8; VWB_DrawPic (i, 10 * 8, L_NUM0PIC + (sec / 10)); i += 2 * 8; VWB_DrawPic (i, 10 * 8, L_NUM0PIC + (sec % 10)); VW_UpdateScreen (); VW_FadeIn (); // // FIGURE RATIOS OUT BEFOREHAND // kr = sr = tr = 0; if (gamestate.killtotal) kr = (gamestate.killcount * 100) / gamestate.killtotal; if (gamestate.secrettotal) sr = (gamestate.secretcount * 100) / gamestate.secrettotal; if (gamestate.treasuretotal) tr = (gamestate.treasurecount * 100) / gamestate.treasuretotal; // // PRINT TIME BONUS // bonus = timeleft * PAR_AMOUNT; if (bonus) { for (i = 0; i <= timeleft; i++) { ltoa ((int32_t) i * PAR_AMOUNT, tempstr, 10); x = 36 - (int) strlen(tempstr) * 2; Write (x, 7, tempstr); if (!(i % (PAR_AMOUNT / 10))) SD_PlaySound (ENDBONUS1SND); if(!usedoublebuffering || !(i % (PAR_AMOUNT / 50))) VW_UpdateScreen (); while(SD_SoundPlaying ()) BJ_Breathe (); if (IN_CheckAck ()) goto done; } VW_UpdateScreen (); SD_PlaySound (ENDBONUS2SND); while (SD_SoundPlaying ()) BJ_Breathe (); } #ifdef SPANISH #define RATIOXX 33 #else #define RATIOXX 37 #endif // // KILL RATIO // ratio = kr; for (i = 0; i <= ratio; i++) { itoa (i, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 14, tempstr); if (!(i % 10)) SD_PlaySound (ENDBONUS1SND); if(!usedoublebuffering || !(i & 1)) VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); if (IN_CheckAck ()) goto done; } if (ratio >= 100) { VW_WaitVBL (VBLWAIT); SD_StopSound (); bonus += PERCENT100AMT; ltoa (bonus, tempstr, 10); x = (RATIOXX - 1) - (int) strlen(tempstr) * 2; Write (x, 7, tempstr); VW_UpdateScreen (); SD_PlaySound (PERCENT100SND); } else if (!ratio) { VW_WaitVBL (VBLWAIT); SD_StopSound (); SD_PlaySound (NOBONUSSND); } else SD_PlaySound (ENDBONUS2SND); VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); // // SECRET RATIO // ratio = sr; for (i = 0; i <= ratio; i++) { itoa (i, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 16, tempstr); if (!(i % 10)) SD_PlaySound (ENDBONUS1SND); if(!usedoublebuffering || !(i & 1)) VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); if (IN_CheckAck ()) goto done; } if (ratio >= 100) { VW_WaitVBL (VBLWAIT); SD_StopSound (); bonus += PERCENT100AMT; ltoa (bonus, tempstr, 10); x = (RATIOXX - 1) - (int) strlen(tempstr) * 2; Write (x, 7, tempstr); VW_UpdateScreen (); SD_PlaySound (PERCENT100SND); } else if (!ratio) { VW_WaitVBL (VBLWAIT); SD_StopSound (); SD_PlaySound (NOBONUSSND); } else SD_PlaySound (ENDBONUS2SND); VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); // // TREASURE RATIO // ratio = tr; for (i = 0; i <= ratio; i++) { itoa (i, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 18, tempstr); if (!(i % 10)) SD_PlaySound (ENDBONUS1SND); if(!usedoublebuffering || !(i & 1)) VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); if (IN_CheckAck ()) goto done; } if (ratio >= 100) { VW_WaitVBL (VBLWAIT); SD_StopSound (); bonus += PERCENT100AMT; ltoa (bonus, tempstr, 10); x = (RATIOXX - 1) - (int) strlen(tempstr) * 2; Write (x, 7, tempstr); VW_UpdateScreen (); SD_PlaySound (PERCENT100SND); } else if (!ratio) { VW_WaitVBL (VBLWAIT); SD_StopSound (); SD_PlaySound (NOBONUSSND); } else SD_PlaySound (ENDBONUS2SND); VW_UpdateScreen (); while (SD_SoundPlaying ()) BJ_Breathe (); // // JUMP STRAIGHT HERE IF KEY PRESSED // done: itoa (kr, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 14, tempstr); itoa (sr, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 16, tempstr); itoa (tr, tempstr, 10); x = RATIOXX - (int) strlen(tempstr) * 2; Write (x, 18, tempstr); bonus = (int32_t) timeleft *PAR_AMOUNT + (PERCENT100AMT * (kr >= 100)) + (PERCENT100AMT * (sr >= 100)) + (PERCENT100AMT * (tr >= 100)); GivePoints (bonus); ltoa (bonus, tempstr, 10); x = 36 - (int) strlen(tempstr) * 2; Write (x, 7, tempstr); // // SAVE RATIO INFORMATION FOR ENDGAME // LevelRatios[mapon].kill = kr; LevelRatios[mapon].secret = sr; LevelRatios[mapon].treasure = tr; LevelRatios[mapon].time = min * 60 + sec; } else { #ifdef SPEAR #ifndef SPEARDEMO switch (mapon) { case 4: Write (14, 4, " trans\n" " grosse\n" STR_DEFEATED); break; case 9: Write (14, 4, "barnacle\n" "wilhelm\n" STR_DEFEATED); break; case 15: Write (14, 4, "ubermutant\n" STR_DEFEATED); break; case 17: Write (14, 4, " death\n" " knight\n" STR_DEFEATED); break; case 18: Write (13, 4, "secret tunnel\n" " area\n" " completed!"); break; case 19: Write (13, 4, "secret castle\n" " area\n" " completed!"); break; } #endif #else Write (14, 4, "secret floor\n completed!"); #endif Write (10, 16, "15000 bonus!"); VW_UpdateScreen (); VW_FadeIn (); GivePoints (15000); } DrawScore (); VW_UpdateScreen (); lastBreathTime = GetTimeCount(); IN_StartAck (); while (!IN_CheckAck ()) BJ_Breathe (); // // done // #ifdef SPEARDEMO if (gamestate.mapon == 1) { SD_PlaySound (BONUS1UPSND); CA_CacheGrChunk (STARTFONT + 1); Message ("This concludes your demo\n" "of Spear of Destiny! Now,\n" "go to your local software\n" "store and buy it!"); UNCACHEGRCHUNK (STARTFONT + 1); IN_ClearKeysDown (); IN_Ack (); } #endif #ifdef JAPDEMO if (gamestate.mapon == 3) { SD_PlaySound (BONUS1UPSND); CA_CacheGrChunk (STARTFONT + 1); Message ("This concludes your demo\n" "of Wolfenstein 3-D! Now,\n" "go to your local software\n" "store and buy it!"); UNCACHEGRCHUNK (STARTFONT + 1); IN_ClearKeysDown (); IN_Ack (); } #endif VW_FadeOut (); DrawPlayBorder(); UnCacheLump (LEVELEND_LUMP_START, LEVELEND_LUMP_END); } //========================================================================== /* ================= = = PreloadGraphics = = Fill the cache up = ================= */ boolean PreloadUpdate (unsigned current, unsigned total) { unsigned w = WindowW - scaleFactor * 10; VWB_BarScaledCoord (WindowX + scaleFactor * 5, WindowY + WindowH - scaleFactor * 3, w, scaleFactor * 2, BLACK); w = ((int32_t) w * current) / total; if (w) { VWB_BarScaledCoord (WindowX + scaleFactor * 5, WindowY + WindowH - scaleFactor * 3, w, scaleFactor * 2, 0x37); //SECONDCOLOR); VWB_BarScaledCoord (WindowX + scaleFactor * 5, WindowY + WindowH - scaleFactor * 3, w - scaleFactor * 1, scaleFactor * 1, 0x32); } VW_UpdateScreen (); // if (LastScan == sc_Escape) // { // IN_ClearKeysDown(); // return(true); // } // else return (false); } void PreloadGraphics (void) { DrawLevel (); ClearSplitVWB (); // set up for double buffering in split screen VWB_BarScaledCoord (0, 0, screenWidth, screenHeight - scaleFactor * (STATUSLINES - 1), bordercol); LatchDrawPicScaledCoord ((screenWidth-scaleFactor*224)/16, (screenHeight-scaleFactor*(STATUSLINES+48))/2, GETPSYCHEDPIC); WindowX = (screenWidth - scaleFactor*224)/2; WindowY = (screenHeight - scaleFactor*(STATUSLINES+48))/2; WindowW = scaleFactor * 28 * 8; WindowH = scaleFactor * 48; VW_UpdateScreen (); VW_FadeIn (); // PM_Preload (PreloadUpdate); PreloadUpdate (10, 10); IN_UserInput (70); VW_FadeOut (); DrawPlayBorder (); VW_UpdateScreen (); } //========================================================================== /* ================== = = DrawHighScores = ================== */ void DrawHighScores (void) { char buffer[16]; #ifndef SPEAR char *str; #ifndef UPLOAD char buffer1[5]; #endif #endif word i, w, h; HighScore *s; #ifndef SPEAR CA_CacheGrChunk (HIGHSCORESPIC); CA_CacheGrChunk (STARTFONT); #ifndef APOGEE_1_0 CA_CacheGrChunk (C_LEVELPIC); CA_CacheGrChunk (C_SCOREPIC); CA_CacheGrChunk (C_NAMEPIC); #else CA_CacheGrChunk (C_CODEPIC); #endif ClearMScreen (); DrawStripes (10); VWB_DrawPic (48, 0, HIGHSCORESPIC); UNCACHEGRCHUNK (HIGHSCORESPIC); #ifndef APOGEE_1_0 VWB_DrawPic (4 * 8, 68, C_NAMEPIC); VWB_DrawPic (20 * 8, 68, C_LEVELPIC); VWB_DrawPic (28 * 8, 68, C_SCOREPIC); #else VWB_DrawPic(35*8,68,C_CODEPIC); #endif fontnumber = 0; #else CacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); ClearMScreen (); DrawStripes (10); UnCacheLump (BACKDROP_LUMP_START, BACKDROP_LUMP_END); CacheLump (HIGHSCORES_LUMP_START, HIGHSCORES_LUMP_END); CA_CacheGrChunk (STARTFONT + 1); VWB_DrawPic (0, 0, HIGHSCORESPIC); fontnumber = 1; #endif #ifndef SPEAR SETFONTCOLOR (15, 0x29); #else SETFONTCOLOR (HIGHLIGHT, 0x29); #endif for (i = 0, s = Scores; i < MaxScores; i++, s++) { PrintY = 76 + (16 * i); // // name // #ifndef SPEAR PrintX = 4 * 8; #else PrintX = 16; #endif US_Print (s->name); // // level // itoa (s->completed, buffer, 10); #ifndef SPEAR for (str = buffer; *str; str++) *str = *str + (129 - '0'); // Used fixed-width numbers (129...) USL_MeasureString (buffer, &w, &h); PrintX = (22 * 8) - w; #else USL_MeasureString (buffer, &w, &h); PrintX = 194 - w; #endif #ifndef UPLOAD #ifndef SPEAR PrintX -= 6; itoa (s->episode + 1, buffer1, 10); US_Print ("E"); US_Print (buffer1); US_Print ("/L"); #endif #endif #ifdef SPEAR if (s->completed == 21) VWB_DrawPic (PrintX + 8, PrintY - 1, C_WONSPEARPIC); else #endif US_Print (buffer); // // score // itoa (s->score, buffer, 10); #ifndef SPEAR for (str = buffer; *str; str++) *str = *str + (129 - '0'); // Used fixed-width numbers (129...) USL_MeasureString (buffer, &w, &h); PrintX = (34 * 8) - 8 - w; #else USL_MeasureString (buffer, &w, &h); PrintX = 292 - w; #endif US_Print (buffer); #ifdef APOGEE_1_0 //#ifndef UPLOAD #ifndef SPEAR // // verification # // if (!i) { char temp = (((s->score >> 28) & 0xf) ^ ((s->score >> 24) & 0xf)) + 'A'; char temp1 = (((s->score >> 20) & 0xf) ^ ((s->score >> 16) & 0xf)) + 'A'; char temp2 = (((s->score >> 12) & 0xf) ^ ((s->score >> 8) & 0xf)) + 'A'; char temp3 = (((s->score >> 4) & 0xf) ^ ((s->score >> 0) & 0xf)) + 'A'; SETFONTCOLOR (0x49, 0x29); PrintX = 35 * 8; buffer[0] = temp; buffer[1] = temp1; buffer[2] = temp2; buffer[3] = temp3; buffer[4] = 0; US_Print (buffer); SETFONTCOLOR (15, 0x29); } #endif //#endif #endif } VW_UpdateScreen (); #ifdef SPEAR UnCacheLump (HIGHSCORES_LUMP_START, HIGHSCORES_LUMP_END); fontnumber = 0; #endif } //=========================================================================== /* ======================= = = CheckHighScore = ======================= */ void CheckHighScore (int32_t score, word other) { word i, j; int n; HighScore myscore; strcpy (myscore.name, ""); myscore.score = score; myscore.episode = gamestate.episode; myscore.completed = other; for (i = 0, n = -1; i < MaxScores; i++) { if ((myscore.score > Scores[i].score) || ((myscore.score == Scores[i].score) && (myscore.completed > Scores[i].completed))) { for (j = MaxScores; --j > i;) Scores[j] = Scores[j - 1]; Scores[i] = myscore; n = i; break; } } #ifdef SPEAR StartCPMusic (XAWARD_MUS); #else StartCPMusic (ROSTER_MUS); #endif DrawHighScores (); VW_FadeIn (); if (n != -1) { // // got a high score // PrintY = 76 + (16 * n); #ifndef SPEAR PrintX = 4 * 8; backcolor = BORDCOLOR; fontcolor = 15; US_LineInput (PrintX, PrintY, Scores[n].name, 0, true, MaxHighName, 100); #else PrintX = 16; fontnumber = 1; VWB_Bar (PrintX - 2, PrintY - 2, 145, 15, 0x9c); VW_UpdateScreen (); backcolor = 0x9c; fontcolor = 15; US_LineInput (PrintX, PrintY, Scores[n].name, 0, true, MaxHighName, 130); #endif } else { IN_ClearKeysDown (); IN_UserInput (500); } } #ifndef UPLOAD #ifndef SPEAR #ifndef JAPAN //////////////////////////////////////////////////////// // // NON-SHAREWARE NOTICE // //////////////////////////////////////////////////////// void NonShareware (void) { VW_FadeOut (); ClearMScreen (); DrawStripes (10); CA_CacheGrChunk (STARTFONT + 1); fontnumber = 1; SETFONTCOLOR (READHCOLOR, BKGDCOLOR); PrintX = 110; PrintY = 15; #ifdef SPANISH US_Print ("Atencion"); #else US_Print ("Attention"); #endif SETFONTCOLOR (HIGHLIGHT, BKGDCOLOR); WindowX = PrintX = 40; PrintY = 60; #ifdef SPANISH US_Print ("Este juego NO es gratis y\n"); US_Print ("NO es Shareware; favor de\n"); US_Print ("no distribuirlo.\n\n"); #else US_Print ("This game is NOT shareware.\n"); US_Print ("Please do not distribute it.\n"); US_Print ("Thanks.\n\n"); #endif US_Print (" Id Software\n"); VW_UpdateScreen (); VW_FadeIn (); IN_Ack (); } #endif #endif #endif #ifdef SPEAR #ifndef GOODTIMES #ifndef SPEARDEMO //////////////////////////////////////////////////////// // // COPY PROTECTION FOR FormGen // //////////////////////////////////////////////////////// char CopyProFailedStrs[][100] = { STR_COPY1, STR_COPY2, STR_COPY3, STR_COPY4, STR_COPY5, STR_COPY6, STR_COPY7, STR_COPY8, STR_COPY9, "", STR_COPY10, STR_COPY11, STR_COPY12, "", STR_COPY13, "", STR_COPY14, "" }; char BackDoorStrs[5][16] = { "a spoon?", "bite me!", "joshua", "pelt", "snoops" }; char GoodBoyStrs[10][40] = { "...is the CORRECT ANSWER!", "", "Consider yourself bitten, sir.", "", "Greetings Professor Falken, would you", "like to play Spear of Destiny?", "Do you have any gold spray paint?", "", "I wish I had a 21\" monitor...", "" }; char bossstrs[4][24] = { "DEATH KNIGHT", "BARNACLE WILHELM", "UBERMUTANTUBER MUTANT", "TRANS GROSSE" }; char WordStr[5][20] = { "New Game", "Sound...F4", "Control...F6", "Change View...F5", "Quit...F10" }; char WordCorrect[5][2] = { "3", "4", "4", "5", "5" }; char MemberStr[10][40] = { STR_COPY15, "", STR_COPY16, "", STR_COPY17, STR_COPY18, STR_COPY19, STR_COPY20, STR_COPY21, STR_COPY22 }; char MemberCorrect[5][24] = { "adrian carmack", "john carmackjohn romero", "tom hall", "jay wilbur", "kevin cloud" }; char DosMessages[9][80] = { STR_NOPE1, STR_NOPE2, STR_NOPE3, STR_NOPE4, STR_NOPE5, STR_NOPE6, STR_NOPE7, STR_NOPE8, STR_NOPE9 }; char MiscTitle[4][20] = { "BLOOD TEST", "STRAIGHT-LACED", "QUITE SHAPELY", "I AM WHAT I AMMO" }; char MiscStr[12][40] = { STR_MISC1, STR_MISC2, "", STR_MISC3, STR_MISC4, "", STR_MISC5, STR_MISC6, "", STR_MISC7, STR_MISC8, STR_MISC9 }; char MiscCorrect[4][5] = { "ss", "8", STR_STAR, "45" }; int BackDoor (char *s) { for (int i = 0; i < 5; i++) { if (!strcasecmp (s, BackDoorStrs[i])) { SETFONTCOLOR (14, 15); fontnumber = 0; PrintY = 175; VWB_DrawPic (0, 20 * 8, COPYPROTBOXPIC); US_CPrint (GoodBoyStrs[i * 2]); US_CPrint (GoodBoyStrs[i * 2 + 1]); VW_UpdateScreen (); return 1; } } return 0; } void CopyProtection (void) { #define TYPEBOX_Y 177 #define TYPEBOX_BKGD 0x9c #define PRINTCOLOR HIGHLIGHT unsigned i; int match, whichboss, bossnum, attempt, whichline; int enemypicked[4] = { 0, 0, 0, 0 }; int bosses[4] = { BOSSPIC1PIC, BOSSPIC2PIC, BOSSPIC3PIC, BOSSPIC4PIC }; int whichpicked[4] = { 0, 0, 0, 0 }; int whichone, quiztype, whichmem, whichword; int memberpicked[5] = { 0, 0, 0, 0, 0 }; int wordpicked[5] = { 0, 0, 0, 0, 0 }; char inputbuffer[20]; char message[80]; enum { debriefing, checkmanual, staffquiz, miscquiz, totaltypes }; attempt = 0; VW_FadeOut (); CA_CacheGrChunk (C_BACKDROPPIC); CacheLump (COPYPROT_LUMP_START, COPYPROT_LUMP_END); CA_CacheGrChunk (STARTFONT + 1); CA_LoadAllSounds (); StartCPMusic (COPYPRO_MUS); US_InitRndT (true); while (attempt < 3) { fontnumber = 1; SETFONTCOLOR (PRINTCOLOR - 2, 15); VWB_DrawPic (0, 0, C_BACKDROPPIC); VWB_DrawPic (0, 0, COPYPROTTOPPIC); VWB_DrawPic (0, 20 * 8, COPYPROTBOXPIC); WindowX = WindowY = 0; WindowW = 320; WindowH = 200; PrintY = 65; quiztype = US_RndT () % totaltypes; switch (quiztype) { // // BOSSES QUIZ // case debriefing: { PrintX = 0; US_Print (STR_DEBRIEF); SETFONTCOLOR (PRINTCOLOR, 15); while (enemypicked[whichboss = US_RndT () & 3]); enemypicked[whichboss] = 1; bossnum = bosses[whichboss]; VWB_DrawPic (128, 60, bossnum); fontnumber = 0; PrintY = 130; US_CPrint (STR_ENEMY1 "\n"); US_CPrint (STR_ENEMY2 "\n\n"); VW_UpdateScreen (); VW_FadeIn (); PrintX = 100; fontcolor = 15; backcolor = TYPEBOX_BKGD; inputbuffer[0] = 0; PrintY = TYPEBOX_Y; fontnumber = 1; US_LineInput (PrintX, PrintY, inputbuffer, 0, true, 20, 100); match = 0; size_t inputlen = strlen(inputbuffer); if(inputlen > 3) { size_t bosslen = strlen(bossstrs[whichboss]); for (i = 0; i < bosslen; i++) { if (!strncasecmp (inputbuffer, bossstrs[whichboss] + i, inputlen)) { match = 1; break; } } } match += BackDoor (inputbuffer); break; } // // MANUAL CHECK // case checkmanual: { while (wordpicked[whichword = US_RndT () % 5]); wordpicked[whichword] = 1; US_CPrint (STR_CHECKMAN); SETFONTCOLOR (PRINTCOLOR, 15); PrintY += 25; US_CPrint (STR_MAN1); US_CPrint (STR_MAN2); sprintf(message, STR_MAN3 " \"%s\" " STR_MAN4, WordStr[whichword]); US_CPrint (message); VW_UpdateScreen (); VW_FadeIn (); PrintX = 146; fontcolor = 15; backcolor = TYPEBOX_BKGD; inputbuffer[0] = 0; PrintY = TYPEBOX_Y; US_LineInput (PrintX, PrintY, inputbuffer, 0, true, 6, 100); match = 1 - (strcasecmp (inputbuffer, WordCorrect[whichword]) != 0); match += BackDoor (inputbuffer); break; } // // STAFF QUIZ // case staffquiz: { while (memberpicked[whichmem = US_RndT () % 5]); memberpicked[whichmem] = 1; US_CPrint (STR_ID1); SETFONTCOLOR (PRINTCOLOR, 15); PrintY += 25; US_CPrint (MemberStr[whichmem * 2]); US_CPrint (MemberStr[whichmem * 2 + 1]); VW_UpdateScreen (); VW_FadeIn (); PrintX = 100; fontcolor = 15; backcolor = TYPEBOX_BKGD; inputbuffer[0] = 0; PrintY = TYPEBOX_Y; US_LineInput (PrintX, PrintY, inputbuffer, 0, true, 20, 120); match = 0; size_t inputlen = strlen(inputbuffer); if(inputlen > 2) { size_t memberlen = strlen(MemberCorrect[whichmem]); for (i = 0; i < memberlen; i++) { if (!strncasecmp (inputbuffer, MemberCorrect[whichmem] + i, inputlen)) { match = 1; break; } } } match += BackDoor (inputbuffer); break; } // // MISCELLANEOUS QUESTIONS // case miscquiz: { while (whichpicked[whichone = US_RndT () & 3]); whichpicked[whichone] = 1; US_CPrint (MiscTitle[whichone]); SETFONTCOLOR (PRINTCOLOR, 15); PrintY += 25; US_CPrint (MiscStr[whichone * 3]); US_CPrint (MiscStr[whichone * 3 + 1]); US_CPrint (MiscStr[whichone * 3 + 2]); VW_UpdateScreen (); VW_FadeIn (); PrintX = 146; fontcolor = 15; backcolor = TYPEBOX_BKGD; inputbuffer[0] = 0; PrintY = TYPEBOX_Y; US_LineInput (PrintX, PrintY, inputbuffer, 0, true, 6, 100); match = 1 - (strcasecmp (inputbuffer, MiscCorrect[whichone]) != 0); match += BackDoor (inputbuffer); break; } } // // IF NO MATCH, WE'VE GOT A (MINOR) PROBLEM! // if (!match) { whichline = 2 * (US_RndT () % 9); SETFONTCOLOR (14, 15); fontnumber = 0; PrintY = 175; VWB_DrawPic (0, 20 * 8, COPYPROTBOXPIC); US_CPrint (CopyProFailedStrs[whichline]); US_CPrint (CopyProFailedStrs[whichline + 1]); VW_UpdateScreen (); SD_PlaySound (NOWAYSND); IN_UserInput (TickBase * 6); VW_FadeOut (); attempt++; } else { int start; SD_PlaySound (BONUS1UPSND); SD_WaitSoundDone (); UNCACHEGRCHUNK (STARTFONT + 1); UNCACHEGRCHUNK (C_BACKDROPPIC); UnCacheLump (COPYPROT_LUMP_START, COPYPROT_LUMP_END); switch (SoundMode) { case sdm_Off: return; case sdm_PC: start = STARTPCSOUNDS; break; case sdm_AdLib: start = STARTADLIBSOUNDS; } /* for (i=0;i+P in debug mode) - Added --resf option to force to use unsupported resolutions >= 320x200 - Added support for resolutions being a multiple of 320x240 (thanks for your help, Pickle!) - Fixed crash when cheat-hurting oneself to death (bug reported by Tricob) - Cleaned up id_sd.cpp (kept PC speaker stuff for future reference) - Added move buttons (invalidates config file, only hardcoded yet) - Added joystick support to US_LineInput used for highscore names and save games - Added US_Printf and US_CPrintf (works just like printf) - Fixed wrong surface locks/unlocks - Added Visual C++ 6 support - Removed some useless VW_WaitVBLs (Thanks to TexZK) - Added some asserts in id_vl.cpp to check for screen access out of bounds - Fixed BJ face popping up in fullsize mode sometimes (Thanks to Andy_Nonymous) - Rewrote page manager to support page >= 64kB and to correctly handle sounds >= 4kB - Improved SOD mission packs support (Thanks to fackue) - Updated Code::Blocks search paths to ..\SDL-devel\ - Added version.h to Dev-C++ and Code::Blocks project file - Fixed some files being read in text mode on MinGW Wolf4SDL v1.4 (released 2008-03-10, revision 164) - Added MinGW/MSYS compatibility - Updated Code::Blocks project - Updated Dev-C++ project and added a README-devcpp.txt - Fixed some busy waiting situations - Added directional 3D sprites support (USE_DIR3DSPR) - Added support for Spear mission packs (by fackue) - Added support for Wolf3D full v1.1 and shareware v1.0, v1.1 and v1.2 - Added shading support (USE_SHADING) - Added object flags (see objflag_t enum in wl_def.h) - Reintroduced version.h - Increased MAXVISABLE from 50 to 250 - Added outside atmosphere features (USE_STARSKY, USE_RAIN, USE_SNOW) - Added cloud sky support (USE_CLOUDSKY) - Added support for SoD demo - Fixed SoD on systems with case sensitive filenames - Added DarkOne's/Adam's multi-textured floors/ceiling (USE_FLOORCEILINGTEX) - Added parallax sky support (USE_PARALLAX define) - Introduced level feature flags (USE_FEATUREFLAGS define) - Added high resolution support (USE_HIRES define) - Added support for music > 64 kB as supported by WDC - Added --samplerate and --audiobuffer parameters - Added support for GP2X (ARM processor, thanks to Pickle) - Added support for Dreamcast (SH-4 processor, thanks to fackue) - Added joystick support (up to 32 buttons) Wolf4SDL v1.3 (released 2008-01-20, revision 113) - Added parameter for SOD to disable copy protection quiz - F12 now also grabs the mouse (for keyboards without scrolllock) - Fixed out of bounds array access in key processing Wolf4SDL v1.2 (released 2008-01-09, revision 108) - Fixed fading for 'End Game' - Corrected fading speed - Added Spear of Destiny compile support - Reimplemented palette file (Sorry...) - Fixed end game crash, when player did not die yet (Thanks to Agent87 for noticing this bug!) - Added full size screen feature - Added project files for Code::Blocks and Dev-C++ (Thanks to Codetech84!) - Made it MinGW compatible - Fixed demo fading issues - Reformatted many source code files - Resolved all warnings reported by VC++ 8 and GCC - Fixed crash when starting the game with no sound >effects< (Thanks to Agent87 for noticing this bug!) - Always grab mouse when started in fullscreen - Map left and right alt, shift and ctrl keys to the same keys - Fix numpad keys with numlock off - Fixed a buffer overflow causing a crash Wolf4SDL v1.1 (released 2007-12-28, revision 70) - Fixed Pause - Fixed IN_Ack() - Added command line parameters for windowed mode and screen resolution - Reimplemented command line parameters (try --help) - Improved scaled "Get Psyched" progress bar graphic - Improved scaled screen borders - Fixed "Fade in black screen" bug - Avoid asserts when shutting down with an error - Use software surfaces to reduce problems with palette on Windows - Windows: Statically links to MSVCR80.DLL now to avoid missing files Wolf4SDL v1.0 (released 2007-12-26, revision 53) - Initial release wolf4sdl-1.7+svn262/wolfpal.inc0000644000175000017500000001046310740260657015547 0ustar fabianfabianRGB( 0, 0, 0),RGB( 0, 0, 42),RGB( 0, 42, 0),RGB( 0, 42, 42),RGB( 42, 0, 0), RGB( 42, 0, 42),RGB( 42, 21, 0),RGB( 42, 42, 42),RGB( 21, 21, 21),RGB( 21, 21, 63), RGB( 21, 63, 21),RGB( 21, 63, 63),RGB( 63, 21, 21),RGB( 63, 21, 63),RGB( 63, 63, 21), RGB( 63, 63, 63),RGB( 59, 59, 59),RGB( 55, 55, 55),RGB( 52, 52, 52),RGB( 48, 48, 48), RGB( 45, 45, 45),RGB( 42, 42, 42),RGB( 38, 38, 38),RGB( 35, 35, 35),RGB( 31, 31, 31), RGB( 28, 28, 28),RGB( 25, 25, 25),RGB( 21, 21, 21),RGB( 18, 18, 18),RGB( 14, 14, 14), RGB( 11, 11, 11),RGB( 8, 8, 8),RGB( 63, 0, 0),RGB( 59, 0, 0),RGB( 56, 0, 0), RGB( 53, 0, 0),RGB( 50, 0, 0),RGB( 47, 0, 0),RGB( 44, 0, 0),RGB( 41, 0, 0), RGB( 38, 0, 0),RGB( 34, 0, 0),RGB( 31, 0, 0),RGB( 28, 0, 0),RGB( 25, 0, 0), RGB( 22, 0, 0),RGB( 19, 0, 0),RGB( 16, 0, 0),RGB( 63, 54, 54),RGB( 63, 46, 46), RGB( 63, 39, 39),RGB( 63, 31, 31),RGB( 63, 23, 23),RGB( 63, 16, 16),RGB( 63, 8, 8), RGB( 63, 0, 0),RGB( 63, 42, 23),RGB( 63, 38, 16),RGB( 63, 34, 8),RGB( 63, 30, 0), RGB( 57, 27, 0),RGB( 51, 24, 0),RGB( 45, 21, 0),RGB( 39, 19, 0),RGB( 63, 63, 54), RGB( 63, 63, 46),RGB( 63, 63, 39),RGB( 63, 63, 31),RGB( 63, 62, 23),RGB( 63, 61, 16), RGB( 63, 61, 8),RGB( 63, 61, 0),RGB( 57, 54, 0),RGB( 51, 49, 0),RGB( 45, 43, 0), RGB( 39, 39, 0),RGB( 33, 33, 0),RGB( 28, 27, 0),RGB( 22, 21, 0),RGB( 16, 16, 0), RGB( 52, 63, 23),RGB( 49, 63, 16),RGB( 45, 63, 8),RGB( 40, 63, 0),RGB( 36, 57, 0), RGB( 32, 51, 0),RGB( 29, 45, 0),RGB( 24, 39, 0),RGB( 54, 63, 54),RGB( 47, 63, 46), RGB( 39, 63, 39),RGB( 32, 63, 31),RGB( 24, 63, 23),RGB( 16, 63, 16),RGB( 8, 63, 8), RGB( 0, 63, 0),RGB( 0, 63, 0),RGB( 0, 59, 0),RGB( 0, 56, 0),RGB( 0, 53, 0), RGB( 1, 50, 0),RGB( 1, 47, 0),RGB( 1, 44, 0),RGB( 1, 41, 0),RGB( 1, 38, 0), RGB( 1, 34, 0),RGB( 1, 31, 0),RGB( 1, 28, 0),RGB( 1, 25, 0),RGB( 1, 22, 0), RGB( 1, 19, 0),RGB( 1, 16, 0),RGB( 54, 63, 63),RGB( 46, 63, 63),RGB( 39, 63, 63), RGB( 31, 63, 62),RGB( 23, 63, 63),RGB( 16, 63, 63),RGB( 8, 63, 63),RGB( 0, 63, 63), RGB( 0, 57, 57),RGB( 0, 51, 51),RGB( 0, 45, 45),RGB( 0, 39, 39),RGB( 0, 33, 33), RGB( 0, 28, 28),RGB( 0, 22, 22),RGB( 0, 16, 16),RGB( 23, 47, 63),RGB( 16, 44, 63), RGB( 8, 42, 63),RGB( 0, 39, 63),RGB( 0, 35, 57),RGB( 0, 31, 51),RGB( 0, 27, 45), RGB( 0, 23, 39),RGB( 54, 54, 63),RGB( 46, 47, 63),RGB( 39, 39, 63),RGB( 31, 32, 63), RGB( 23, 24, 63),RGB( 16, 16, 63),RGB( 8, 9, 63),RGB( 0, 1, 63),RGB( 0, 0, 63), RGB( 0, 0, 59),RGB( 0, 0, 56),RGB( 0, 0, 53),RGB( 0, 0, 50),RGB( 0, 0, 47), RGB( 0, 0, 44),RGB( 0, 0, 41),RGB( 0, 0, 38),RGB( 0, 0, 34),RGB( 0, 0, 31), RGB( 0, 0, 28),RGB( 0, 0, 25),RGB( 0, 0, 22),RGB( 0, 0, 19),RGB( 0, 0, 16), RGB( 10, 10, 10),RGB( 63, 56, 13),RGB( 63, 53, 9),RGB( 63, 51, 6),RGB( 63, 48, 2), RGB( 63, 45, 0),RGB( 45, 8, 63),RGB( 42, 0, 63),RGB( 38, 0, 57),RGB( 32, 0, 51), RGB( 29, 0, 45),RGB( 24, 0, 39),RGB( 20, 0, 33),RGB( 17, 0, 28),RGB( 13, 0, 22), RGB( 10, 0, 16),RGB( 63, 54, 63),RGB( 63, 46, 63),RGB( 63, 39, 63),RGB( 63, 31, 63), RGB( 63, 23, 63),RGB( 63, 16, 63),RGB( 63, 8, 63),RGB( 63, 0, 63),RGB( 56, 0, 57), RGB( 50, 0, 51),RGB( 45, 0, 45),RGB( 39, 0, 39),RGB( 33, 0, 33),RGB( 27, 0, 28), RGB( 22, 0, 22),RGB( 16, 0, 16),RGB( 63, 58, 55),RGB( 63, 56, 52),RGB( 63, 54, 49), RGB( 63, 53, 47),RGB( 63, 51, 44),RGB( 63, 49, 41),RGB( 63, 47, 39),RGB( 63, 46, 36), RGB( 63, 44, 32),RGB( 63, 41, 28),RGB( 63, 39, 24),RGB( 60, 37, 23),RGB( 58, 35, 22), RGB( 55, 34, 21),RGB( 52, 32, 20),RGB( 50, 31, 19),RGB( 47, 30, 18),RGB( 45, 28, 17), RGB( 42, 26, 16),RGB( 40, 25, 15),RGB( 39, 24, 14),RGB( 36, 23, 13),RGB( 34, 22, 12), RGB( 32, 20, 11),RGB( 29, 19, 10),RGB( 27, 18, 9),RGB( 23, 16, 8),RGB( 21, 15, 7), RGB( 18, 14, 6),RGB( 16, 12, 6),RGB( 14, 11, 5),RGB( 10, 8, 3),RGB( 24, 0, 25), RGB( 0, 25, 25),RGB( 0, 24, 24),RGB( 0, 0, 7),RGB( 0, 0, 11),RGB( 12, 9, 4), RGB( 18, 0, 18),RGB( 20, 0, 20),RGB( 0, 0, 13),RGB( 7, 7, 7),RGB( 19, 19, 19), RGB( 23, 23, 23),RGB( 16, 16, 16),RGB( 12, 12, 12),RGB( 13, 13, 13),RGB( 54, 61, 61), RGB( 46, 58, 58),RGB( 39, 55, 55),RGB( 29, 50, 50),RGB( 18, 48, 48),RGB( 8, 45, 45), RGB( 8, 44, 44),RGB( 0, 41, 41),RGB( 0, 38, 38),RGB( 0, 35, 35),RGB( 0, 33, 33), RGB( 0, 31, 31),RGB( 0, 30, 30),RGB( 0, 29, 29),RGB( 0, 28, 28),RGB( 0, 27, 27), RGB( 38, 0, 34) wolf4sdl-1.7+svn262/win/0000755000175000017500000000000011644522673014204 5ustar fabianfabianwolf4sdl-1.7+svn262/win/resource.h0000644000175000017500000000060611564556777016223 0ustar fabianfabian//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Wolf4SDL.rc // // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif wolf4sdl-1.7+svn262/win/Wolf4SDL.ico0000644000175000017500000004536611564556777016271 0ustar fabianfabian ¨&@@ (BÎ( @d¤¨ü (¨,,,,80@8888H= 0 && shadeID < lengthof(shadeDefs)); return shadeID; } #else static int GetShadeDefID() { int shadeID; switch(gamestate.episode * 10 + mapon) { case 0: shadeID = 4; break; case 1: case 2: case 6: shadeID = 1; break; case 3: shadeID = 0; break; case 5: shadeID = 2; break; default: shadeID = 3; break; } assert(shadeID >= 0 && shadeID < lengthof(shadeDefs)); return shadeID; } #endif // Returns the palette index of the nearest matching color of the // given RGB color in given palette byte GetColor(byte red, byte green, byte blue, SDL_Color *palette) { byte mincol = 0; double mindist = 200000.F, curdist, DRed, DGreen, DBlue; SDL_Color *palPtr = palette; for(int col = 0; col < 256; col++, palPtr++) { DRed = (double) (red - palPtr->r); DGreen = (double) (green - palPtr->g); DBlue = (double) (blue - palPtr->b); curdist = DRed * DRed + DGreen * DGreen + DBlue * DBlue; if(curdist < mindist) { mindist = curdist; mincol = (byte) col; } } return mincol; } // Fade all colors in 32 steps down to the destination-RGB // (use gray for fogging, black for standard shading) void GenerateShadeTable(byte destRed, byte destGreen, byte destBlue, SDL_Color *palette, int fog) { double curRed, curGreen, curBlue, redStep, greenStep, blueStep; SDL_Color *palPtr = palette; // Set the fog-flag LSHADE_flag=fog; // Color loop for(int i = 0; i < 256; i++, palPtr++) { // Get original palette color curRed = palPtr->r; curGreen = palPtr->g; curBlue = palPtr->b; // Calculate increment per step redStep = ((double) destRed - curRed) / (SHADE_COUNT + 8); greenStep = ((double) destGreen - curGreen) / (SHADE_COUNT + 8); blueStep = ((double) destBlue - curBlue) / (SHADE_COUNT + 8); // Calc color for each shade of the current color for (int shade = 0; shade < SHADE_COUNT; shade++) { shadetable[shade][i] = GetColor((byte) curRed, (byte) curGreen, (byte) curBlue, palette); // Inc to next shade curRed += redStep; curGreen += greenStep; curBlue += blueStep; } } } void NoShading() { for(int shade = 0; shade < SHADE_COUNT; shade++) for(int i = 0; i < 256; i++) shadetable[shade][i] = i; } void InitLevelShadeTable() { shadedef_t *shadeDef = &shadeDefs[GetShadeDefID()]; if(shadeDef->fogStrength == LSHADE_NOSHADING) NoShading(); else GenerateShadeTable(shadeDef->destRed, shadeDef->destGreen, shadeDef->destBlue, gamepal, shadeDef->fogStrength); } int GetShade(int scale) { int shade = (scale >> 1) / (((viewwidth * 3) >> 8) + 1 + LSHADE_flag); // TODO: reconsider this... if(shade > 32) shade = 32; else if(shade < 1) shade = 1; shade = 32 - shade; return shade; } #endif wolf4sdl-1.7+svn262/README-devcpp.txt0000644000175000017500000000343510765067624016374 0ustar fabianfabianThis file explains how you can compile Wolf4SDL using Bloodshed's Dev-C++. Keep in mind, that Dev-C++ is a dead project since 2005. The recommended way to compile Wolf4SDL on Windows is using Visual Studio 2005 C++ or the free Visual C++ 2005 Express. But for dial-up users Dev-C++ is probably still a good option. Needed files: - "Dev-C++ 5.0 Beta 9.2 (4.9.9.2)" with Mingw/GCC 3.4.2 (about 9 MB) http://www.bloodshed.net/dev/devcpp.html - SDL-1.2.13-1chaos.DevPak (544 kB) http://www.chaos-software.de.vu -> Downloads - SDL_mixer-1.2.6-2mol.DevPak (347 kB) http://sourceforge.net/project/showfiles.php?group_id=94270&package_id=151751 Installation: - Install Dev-C++ to C:\Dev-Cpp - Open Wolf4SDL.dev - Go to "Tools" -> "Package Manager" - Click on the "Install" button in the toolbar - Select "SDL-1.2.13-1chaos.DevPak" (where ever you saved it) - Some "Next" buttons and a "Finish" button later... - Click on the "Install" button in the toolbar - Select "SDL_mixer-1.2.6-2mol.DevPak" (where ever you saved it) - Some "Next" buttons and a "Finish" button later... - Close the Package Manager Data file setup: - Copy the data files (e.g. *.WL6) you want to use to the Wolf4SDL source code folder - If you want to use the data files of the full Activision version of Wolfenstein 3D v1.4, you can just skip to the next section - Otherwise open "version.h" and comment/uncomment the definitions according to the description given in this file Compiling Wolf4SDL: - Compile via "Execute" -> "Compile" - No errors should be displayed - Run Wolf4SDL via "Execute" -> "Run" Troubleshooting: - If you get an error message "undefined reference to `__cpu_features_init'", make sure, there is no c:\mingw folder. Otherwise Dev-C++ will mix different versions of MinGW libraries...