protracker-2.3d.r92/0000755000000000000000000000000013235646554013024 5ustar rootrootprotracker-2.3d.r92/make-mingw.bat0000644000000000000000000000125713235646471015553 0ustar rootroot@ECHO OFF REM -- compile script for MinGW -- REM Change this path to where you have MinGW\bin. SET PATH=%PATH%;C:\MinGW\bin del release\protracker.exe 2>NUL windres src\protracker.rc src\resource.o echo Compiling, please wait... mingw32-gcc src\*.c src\gfx\*.c src/resource.o -Imingw_sdl_include\include -Lmingw_sdl_include\lib -m32 -lmingw32 -lSDL2main -mwindows -lSDL2 -lm -Wall -Wno-unused-result -Wshadow -Winit-self -Wextra -Wunused -Wunreachable-code -Wredundant-decls -Wswitch-default -march=native -mtune=native -O3 -s -o release\protracker.exe del src\*.o src\gfx\*.o 2>NUL echo Done! The binary (protracker.exe) is in the folder named 'release'. pause protracker-2.3d.r92/make-freebsd.sh0000644000000000000000000000073213235646471015705 0ustar rootroot#!/bin/sh rm release/protracker &> /dev/null echo Compiling, please wait... cc src/*.c src/gfx/*.c -I/usr/local/include -L/usr/local/lib -lSDL2 -lm -Wall -Wno-unused-result -Wc++-compat -Wshadow -Winit-self -Wextra -Wunused -Wunreachable-code -Wredundant-decls -Wswitch-default -O3 -o release/protracker rm src/*.o src/gfx/*.o &> /dev/null echo Done! The binary \(protracker\) is in the folder named \'release\'. echo To run it, type ./protracker in the release folder. protracker-2.3d.r92/src/0000755000000000000000000000000013235646520013604 5ustar rootrootprotracker-2.3d.r92/src/pt_palette.c0000644000000000000000000001031613235646501016111 0ustar rootroot#include #include "pt_palette.h" #include "pt_header.h" #include "pt_helpers.h" uint32_t palette[PALETTE_NUM] = { // ----------------------------- 0x00000000, // 00- PAL_BACKGRD 0x00BBBBBB, // 01- PAL_BORDER 0x00888888, // 02- PAL_GENBKG 0x00555555, // 03- PAL_GENBKG2 0x00FFDD00, // 04- PAL_QADSCP 0x00DD0044, // 05- PAL_PATCURSOR 0x00000000, // 06- PAL_GENTXT 0x003344FF, // 07- PAL_PATTXT // ----------------------------- 0x0000FFFF, // 08- PAL_SAMPLLINE 0x000000FF, // 09- PAL_LOOPPIN 0x00770077, // 10- PAL_TEXTMARK 0x00444444, // 11- PAL_MOUSE_1 0x00777777, // 12- PAL_MOUSE_2 0x00AAAAAA, // 13- PAL_MOUSE_3 // ----------------------------- 0x00C0FFEE // 14- PAL_COLORKEY // ----------------------------- }; void pointerErrorMode(void) { palette[PAL_MOUSE_1] = 0x00770000; palette[PAL_MOUSE_2] = 0x00990000; palette[PAL_MOUSE_3] = 0x00CC0000; editor.ui.refreshMousePointer = true; } void setMsgPointer(void) { editor.ui.pointerMode = POINTER_MODE_READ_DIR; palette[PAL_MOUSE_1] = 0x00004400; palette[PAL_MOUSE_2] = 0x00007700; palette[PAL_MOUSE_3] = 0x0000AA00; editor.ui.refreshMousePointer = true; } void pointerSetMode(int8_t pointerMode, uint8_t carry) { editor.ui.refreshMousePointer = true; switch (pointerMode) { case POINTER_MODE_IDLE: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00444444; palette[PAL_MOUSE_2] = 0x00777777; palette[PAL_MOUSE_3] = 0x00AAAAAA; } break; case POINTER_MODE_PLAY: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00444400; palette[PAL_MOUSE_2] = 0x00777700; palette[PAL_MOUSE_3] = 0x00AAAA00; } break; case POINTER_MODE_EDIT: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00000066; palette[PAL_MOUSE_2] = 0x00004499; palette[PAL_MOUSE_3] = 0x000055BB; } break; case POINTER_MODE_EDIT_PLAY: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00000066; palette[PAL_MOUSE_2] = 0x00004499; palette[PAL_MOUSE_3] = 0x000055BB; } break; case POINTER_MODE_MSG1: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00440044; palette[PAL_MOUSE_2] = 0x00770077; palette[PAL_MOUSE_3] = 0x00AA00AA; } break; case POINTER_MODE_READ_DIR: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x00004400; palette[PAL_MOUSE_2] = 0x00007700; palette[PAL_MOUSE_3] = 0x0000AA00; } break; case POINTER_MODE_LOAD: { editor.ui.pointerMode = pointerMode; if (carry) editor.ui.previousPointerMode = editor.ui.pointerMode; palette[PAL_MOUSE_1] = 0x000000AA; palette[PAL_MOUSE_2] = 0x00000077; palette[PAL_MOUSE_3] = 0x00000044; } break; default: break; } } void pointerSetPreviousMode(void) { if (editor.ui.editTextFlag || editor.ui.askScreenShown || editor.ui.clearScreenShown) pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); else pointerSetMode(editor.ui.previousPointerMode, NO_CARRY); } protracker-2.3d.r92/src/pt_sampleloader.h0000644000000000000000000000045213235646477017144 0ustar rootroot#ifndef __PT_SAMPLELOADER_H #define __PT_SAMPLELOADER_H #include #include "pt_unicode.h" void extLoadWAVSampleCallback(int8_t downSample); int8_t saveSample(int8_t checkIfFileExist, int8_t giveNewFreeFilename); int8_t loadSample(UNICHAR *fileName, char *entryName); #endif protracker-2.3d.r92/src/pt_audio.c0000644000000000000000000011044713235646517015571 0ustar rootroot/* The low-pass/high-pass routines were coded by aciddose, and he agreed on ** using the WTFPL license for the code. */ #include #include #include #include #include #ifdef _WIN32 #include #else #include #endif #include // sqrt(),tanf(),M_PI,round(),roundf() #include #include #include #include #include "pt_audio.h" #include "pt_header.h" #include "pt_helpers.h" #include "pt_blep.h" #include "pt_config.h" #include "pt_tables.h" #include "pt_palette.h" #include "pt_textout.h" #include "pt_terminal.h" #include "pt_visuals.h" #include "pt_scopes.h" #define INITIAL_DITHER_SEED 0x12345000 // rounded constants to fit in floats #define M_PI_F 3.1415927f #define M_2PI_F 6.2831855f /* fast 32-bit -> 16-bit clamp */ #define CLAMP16(i) \ { \ if ((int16_t)(i) != i) \ i = 0x7FFF ^ (i >> 31); \ } typedef struct ledFilter_t { float led[4]; } ledFilter_t; typedef struct ledFilterCoeff_t { float led, ledFb; } ledFilterCoeff_t; typedef struct voice_t { volatile int8_t active, retriggered; const int8_t *data, *newData; int32_t length, newLength, phase; float volume_f, delta_f, frac_f, lastDelta_f, lastFrac_f, panL_f, panR_f; } paulaVoice_t; static volatile int8_t filterFlags = FILTER_LP_ENABLED; static int8_t amigaPanFlag, defStereoSep = 25, wavRenderingDone; int8_t forceMixerOff = false; static uint16_t ch1Pan, ch2Pan, ch3Pan, ch4Pan; int32_t samplesPerTick; static int32_t sampleCounter, maxSamplesToMix, rand32_val = INITIAL_DITHER_SEED; static float *mixBufferL_f, *mixBufferR_f; static blep_t blep[AMIGA_VOICES], blepVol[AMIGA_VOICES]; static lossyIntegrator_t filterLo, filterHi; static ledFilterCoeff_t filterLEDC; static ledFilter_t filterLED; static paulaVoice_t paula[AMIGA_VOICES]; static SDL_AudioDeviceID dev; int8_t intMusic(void); // defined in pt_modplayer.c void storeTempVariables(void); // defined in pt_modplayer.c void calcMod2WavTotalRows(void); void setLEDFilter(uint8_t state) { editor.useLEDFilter = state; if (editor.useLEDFilter) filterFlags |= FILTER_LED_ENABLED; else filterFlags &= ~FILTER_LED_ENABLED; } void toggleLEDFilter(void) { editor.useLEDFilter ^= 1; if (editor.useLEDFilter) filterFlags |= FILTER_LED_ENABLED; else filterFlags &= ~FILTER_LED_ENABLED; } static void calcCoeffLED(float sr, float hz, ledFilterCoeff_t *filter) { if (hz < (sr / 2.0f)) filter->led = (M_2PI_F * hz) / sr; else filter->led = 1.0f; filter->ledFb = 0.125f + (0.125f / (1.0f - filter->led)); // Fb = 0.125 : Q ~= 1/sqrt(2) (Butterworth) } static void calcCoeffLossyIntegrator(float sr, float hz, lossyIntegrator_t *filter) { filter->coeff[0] = tanf((M_PI_F * hz) / sr); filter->coeff[1] = 1.0f / (1.0f + filter->coeff[0]); } static void clearLossyIntegrator(lossyIntegrator_t *filter) { filter->buffer[0] = 0.0f; filter->buffer[1] = 0.0f; } static void clearLEDFilter(ledFilter_t *filter) { filter->led[0] = 0.0f; filter->led[1] = 0.0f; filter->led[2] = 0.0f; filter->led[3] = 0.0f; } static inline void lossyIntegratorLED(ledFilterCoeff_t filterC, ledFilter_t *filter, float *in, float *out) { // left channel LED filter filter->led[0] += (filterC.led * (in[0] - filter->led[0]) + filterC.ledFb * (filter->led[0] - filter->led[1]) + 1e-10f); filter->led[1] += (filterC.led * (filter->led[0] - filter->led[1]) + 1e-10f); out[0] = filter->led[1]; // right channel LED filter filter->led[2] += (filterC.led * (in[1] - filter->led[2]) + filterC.ledFb * (filter->led[2] - filter->led[3]) + 1e-10f); filter->led[3] += (filterC.led * (filter->led[2] - filter->led[3]) + 1e-10f); out[1] = filter->led[3]; } void lossyIntegrator(lossyIntegrator_t *filter, float *in, float *out) { float output; // left channel low-pass output = (filter->coeff[0] * in[0] + filter->buffer[0]) * filter->coeff[1]; filter->buffer[0] = filter->coeff[0] * (in[0] - output) + output + 1e-10f; out[0] = output; // right channel low-pass output = (filter->coeff[0] * in[1] + filter->buffer[1]) * filter->coeff[1]; filter->buffer[1] = filter->coeff[0] * (in[1] - output) + output + 1e-10f; out[1] = output; } void lossyIntegratorHighPass(lossyIntegrator_t *filter, float *in, float *out) { float low[2]; lossyIntegrator(filter, in, low); out[0] = in[0] - low[0]; out[1] = in[1] - low[1]; } // adejr: these sin/cos approximations both use a 0..1 // parameter range and have 'normalized' (1/2 = 0db) coeffs // // the coeffs are for LERP(x, x * x, 0.224) * sqrt(2) // max_error is minimized with 0.224 = 0.0013012886 static float sinApx(float x) { x = x * (2.0f - x); return (x * 1.09742972f + x * x * 0.31678383f); } static float cosApx(float x) { x = (1.0f - x) * (1.0f + x); return (x * 1.09742972f + x * x * 0.31678383f); } void clearPaulaAndScopes(void) { uint8_t i; paulaVoice_t *v; scopeChannel_t *sc; SDL_LockAudio(); for (i = 0; i < AMIGA_VOICES; ++i) { v = &paula[i]; sc = &scope[i]; memset(v, 0, sizeof (paulaVoice_t)); v->data = v->newData = NULL; // panL/panR are set up later memset(sc, 0, sizeof (scopeChannel_t)); sc->data = sc->newData = NULL; sc->length = sc->newLength = 2; // setting these to 2 is IMPORTANT for the scopes! } SDL_UnlockAudio(); } void mixerUpdateLoops(void) // updates Paula loop (+ scopes) { uint8_t i; moduleChannel_t *ch; moduleSample_t *s; for (i = 0; i < AMIGA_VOICES; ++i) { ch = &modEntry->channels[i]; if (ch->n_samplenum == editor.currSample) { s = &modEntry->samples[editor.currSample]; paulaSetData(i, ch->n_start + s->loopStart); paulaSetLength(i, s->loopLength); } } } static void mixerSetVoicePan(uint8_t ch, uint16_t pan) // pan = 0..256 { float p; // proper 'normalized' equal-power panning is (assuming pan left to right): // L = cos(p * pi * 1/2) * sqrt(2); // R = sin(p * pi * 1/2) * sqrt(2); p = pan * (1.0f / 256.0f); paula[ch].panL_f = cosApx(p); paula[ch].panR_f = sinApx(p); } void mixerKillVoice(uint8_t ch) { paulaVoice_t *v; scopeChannel_t *sc; v = &paula[ch]; sc = &scope[ch]; v->active = false; v->volume_f = 0.0f; sc->active = false; sc->volume = 0; sc->didSwapData = false; memset(&blep[ch], 0, sizeof (blep_t)); memset(&blepVol[ch], 0, sizeof (blep_t)); } void turnOffVoices(void) { uint8_t i; for (i = 0; i < AMIGA_VOICES; ++i) mixerKillVoice(i); clearLossyIntegrator(&filterLo); clearLossyIntegrator(&filterHi); clearLEDFilter(&filterLED); resetDitherSeed(); editor.tuningFlag = false; } void paulaRestartDMA(uint8_t ch) { const int8_t *dat; int32_t length; paulaVoice_t *v; scopeChannel_t *sc; v = &paula[ch]; sc = &scope[ch]; dat = v->newData; if (dat == NULL) dat = &modEntry->sampleData[RESERVED_SAMPLE_OFFSET]; // dummy sample length = v->newLength; if (length < 2) length = 2; v->frac_f = 0.0f; v->phase = 0; v->data = dat; v->length = length; v->active = true; dat = sc->newData; if (dat == NULL) dat = &modEntry->sampleData[RESERVED_SAMPLE_OFFSET]; // dummy sample sc->length = length; sc->data = dat; sc->retriggered = true; sc->active = true; } void paulaSetPeriod(uint8_t ch, uint16_t period) { float hz_f, audioFreq_f; paulaVoice_t *v; v = &paula[ch]; if (period == 0) { hz_f = v->delta_f = 0.0f; } else { // confirmed behavior on real Amiga if (period < 113) period = 113; audioFreq_f = editor.outputFreq_f; if (editor.isSMPRendering) audioFreq_f = editor.pat2SmpHQ ? 28836.0f : 22168.0f; hz_f = (float)(PAULA_PAL_CLK) / period; v->delta_f = hz_f / audioFreq_f; } scope[ch].delta_f = hz_f / VBLANK_HZ; if (v->lastDelta_f == 0.0f) v->lastDelta_f = v->delta_f; } void paulaSetVolume(uint8_t ch, uint16_t vol) { vol &= 0x007F; if (vol > 0x40) vol = 0x40; paula[ch].volume_f = vol * (1.0f / 64.0f); scope[ch].volume = 0 - (vol / 2); } // our Paula emulator takes sample lengths in bytes instead of words void paulaSetLength(uint8_t ch, uint32_t len) { if (len < 2) len = 2; // needed safety for mixer and scopes scope[ch].newLength = paula[ch].newLength = len; } void paulaSetData(uint8_t ch, const int8_t *src) { uint8_t smp; moduleSample_t *s; scopeChannel_t *sc; sc = &scope[ch]; smp = modEntry->channels[ch].n_samplenum; PT_ASSERT(smp <= 30); if (smp > 30) smp = 30; s = &modEntry->samples[smp]; if (src == NULL) src = &modEntry->sampleData[RESERVED_SAMPLE_OFFSET]; // dummy sample sc->newData = paula[ch].newData = src; sc->newLoopFlag = (s->loopStart + s->loopLength) > 2; sc->newLoopStart = s->loopStart; } void toggleLowPassFilter(void) { if (filterFlags & FILTER_LP_ENABLED) { filterFlags &= ~FILTER_LP_ENABLED; displayMsg("FILTER MOD: A1200"); } else { filterFlags |= FILTER_LP_ENABLED; clearLossyIntegrator(&filterLo); displayMsg("FILTER MOD: A500"); } } void mixChannels(int32_t numSamples) { const int8_t *dataPtr; uint8_t i; int32_t j; volatile float *vuMeter_f; float tempSample_f, tempVolume_f, mutedVol_f, tmp_f; blep_t *bSmp, *bVol; paulaVoice_t *v; memset(mixBufferL_f, 0, sizeof (float) * numSamples); memset(mixBufferR_f, 0, sizeof (float) * numSamples); for (i = 0; i < AMIGA_VOICES; ++i) { v = &paula[i]; bSmp = &blep[i]; bVol = &blepVol[i]; vuMeter_f = &editor.realVuMeterVolumes[i]; mutedVol_f = -1.0f; if (editor.muted[i]) { mutedVol_f = v->volume_f; v->volume_f = 0.0f; } // v->active is only changed when the user stops the song or starts the song // (or if a channel is started for the first time) for (j = 0; v->active && (j < numSamples); ++j) { dataPtr = v->data; if (dataPtr == NULL) { tempSample_f = 0.0f; tempVolume_f = 0.0f; } else { tempSample_f = dataPtr[v->phase] * (1.0f / 128.0f); tempVolume_f = v->volume_f; } if (tempSample_f != bSmp->lastValue) { if ((v->lastDelta_f > 0.0f) && (v->lastDelta_f > v->lastFrac_f)) blepAdd(bSmp, v->lastFrac_f / v->lastDelta_f, bSmp->lastValue - tempSample_f); bSmp->lastValue = tempSample_f; } if (tempVolume_f != bVol->lastValue) { blepAdd(bVol, 0.0f, bVol->lastValue - tempVolume_f); bVol->lastValue = tempVolume_f; } if (bSmp->samplesLeft) tempSample_f += blepRun(bSmp); if (bVol->samplesLeft) tempVolume_f += blepRun(bVol); tempSample_f *= tempVolume_f; // "real VU meter" mode handling if (editor.ui.realVuMeters) { tmp_f = tempSample_f * 48.0f; tmp_f = ABS(tmp_f); if (tmp_f > *vuMeter_f) *vuMeter_f = tmp_f; } // ---------------------------- mixBufferL_f[j] += (tempSample_f * v->panL_f); mixBufferR_f[j] += (tempSample_f * v->panR_f); v->frac_f += v->delta_f; if (v->frac_f >= 1.0f) { v->frac_f -= 1.0f; v->lastFrac_f = v->frac_f; v->lastDelta_f = v->delta_f; if (++v->phase >= v->length) { v->phase = 0; // re-fetch Paula register values now v->length = v->newLength; v->data = v->newData; } // we don't need to insert ending BLEPs anymore with this constantly running mixer } } if (mutedVol_f != -1.0f) v->volume_f = mutedVol_f; } } void pat2SmpMixChannels(int32_t numSamples) // pat2smp needs a multi-step mixer routine (lower mix rate), otherwise identical { const int8_t *dataPtr; uint8_t i; int32_t j; float tempSample_f, tempVolume_f, mutedVol_f; blep_t *bSmp, *bVol; paulaVoice_t *v; memset(mixBufferL_f, 0, sizeof (float) * numSamples); memset(mixBufferR_f, 0, sizeof (float) * numSamples); for (i = 0; i < AMIGA_VOICES; ++i) { v = &paula[i]; bSmp = &blep[i]; bVol = &blepVol[i]; mutedVol_f = -1.0f; if (editor.muted[i]) { mutedVol_f = v->volume_f; v->volume_f = 0.0f; } // v->active is only changed when the user stops the song or starts the song // (or if a channel is started for the first time) for (j = 0; v->active && (j < numSamples); ++j) { dataPtr = v->data; if (dataPtr == NULL) { tempSample_f = 0.0f; tempVolume_f = 0.0f; } else { tempSample_f = dataPtr[v->phase] * (1.0f / 128.0f); tempVolume_f = v->volume_f; } if (tempSample_f != bSmp->lastValue) { if ((v->lastDelta_f > 0.0f) && (v->lastDelta_f > v->lastFrac_f)) blepAdd(bSmp, v->lastFrac_f / v->lastDelta_f, bSmp->lastValue - tempSample_f); bSmp->lastValue = tempSample_f; } if (tempVolume_f != bVol->lastValue) { blepAdd(bVol, 0.0f, bVol->lastValue - tempVolume_f); bVol->lastValue = tempVolume_f; } if (bSmp->samplesLeft) tempSample_f += blepRun(bSmp); if (bVol->samplesLeft) tempVolume_f += blepRun(bVol); tempSample_f *= tempVolume_f; mixBufferL_f[j] += (tempSample_f * v->panL_f); mixBufferR_f[j] += (tempSample_f * v->panR_f); v->frac_f += v->delta_f; while (v->frac_f >= 1.0f) { v->frac_f -= 1.0f; v->lastFrac_f = v->frac_f; v->lastDelta_f = v->delta_f; if (++v->phase >= v->length) { v->phase = 0; // re-fetch Paula register values now v->length = v->newLength; v->data = v->newData; } } // we don't need to insert ending BLEPs anymore with this constantly running mixer } if (mutedVol_f != -1.0f) v->volume_f = mutedVol_f; } } void resetDitherSeed(void) { rand32_val = INITIAL_DITHER_SEED; } static inline int32_t rand32(void) { rand32_val = (214013 * rand32_val + 2531011); return (rand32_val); } static inline void processMixedSamples(int32_t i, int16_t *out, uint8_t mono) { int32_t smp32; float out_f[2], dither; out_f[0] = mixBufferL_f[i]; out_f[1] = mixBufferR_f[i]; if (!editor.isSMPRendering) // don't apply filters when rendering pattern to sample { if (filterFlags & FILTER_LP_ENABLED) lossyIntegrator(&filterLo, out_f, out_f); if (filterFlags & FILTER_LED_ENABLED) lossyIntegratorLED(filterLEDC, &filterLED, out_f, out_f); } lossyIntegratorHighPass(&filterHi, out_f, out_f); // normalize out_f[0] *= (32767.0f / AMIGA_VOICES); out_f[1] *= (32767.0f / AMIGA_VOICES); // apply 0.5 bit dither dither = rand32() * (0.5f / 2147483648.0f); out_f[0] += dither; dither = rand32() * (0.5f / 2147483648.0f); out_f[1] += dither; if (mono) out_f[0] = (out_f[0] / 2.0f) + (out_f[1] / 2.0f); smp32 = (int32_t)(out_f[0]); // should use fast SSE CLAMP16(smp32); // fast clamp out[0] = (int16_t)(smp32); smp32 = (int32_t)(out_f[1]); // should use fast SSE CLAMP16(smp32); // fast clamp out[1] = (int16_t)(smp32); } void outputAudio(int16_t *target, int32_t numSamples) { int16_t *outStream, out[2]; int32_t j; outStream = target; if (editor.isWAVRendering) { // render to WAV file mixChannels(numSamples); for (j = 0; j < numSamples; ++j) { processMixedSamples(j, out, false); if (bigEndian) { out[0] = SWAP16(out[0]); out[1] = SWAP16(out[1]); } *outStream++ = out[0]; *outStream++ = out[1]; } } else if (editor.isSMPRendering) { // render to sample pat2SmpMixChannels(numSamples); for (j = 0; j < numSamples; ++j) { processMixedSamples(j, out, true); // mono if (editor.pat2SmpPos >= MAX_SAMPLE_LEN) { editor.smpRenderingDone = true; break; } else { editor.pat2SmpBuf[editor.pat2SmpPos++] = out[0]; // out[0] is already mixed with out[1] } } } else { // render to real audio mixChannels(numSamples); for (j = 0; j < numSamples; ++j) { processMixedSamples(j, out, false); *outStream++ = out[0]; *outStream++ = out[1]; } } } void audioCallback(void *userdata, uint8_t *stream, int32_t len) { int16_t *out; int32_t sampleBlock, samplesTodo; (void)(userdata); // make compiler happy if (forceMixerOff) // for MOD2WAV { memset(stream, 0, len); // mute return; } out = (int16_t *)(stream); sampleBlock = len / 4; while (sampleBlock) { samplesTodo = (sampleBlock < sampleCounter) ? sampleBlock : sampleCounter; if (samplesTodo > 0) { outputAudio(out, samplesTodo); out += (2 * samplesTodo); sampleBlock -= samplesTodo; sampleCounter -= samplesTodo; } else { if (editor.songPlaying) intMusic(); sampleCounter = samplesPerTick; } } } static void calculateFilterCoeffs(void) { float lp_R, lp_C, lp_Hz; float led_R1, led_R2, led_C1, led_C2, led_Hz; float hp_R, hp_C, hp_Hz; // Amiga 500 filter emulation, by aciddose (Xhip author) // All Amiga computers have three (!) filters, not just the "LED" filter. // // First comes a static low-pass 6dB formed by the supply current // from the Paula's mixture of channels A+B / C+D into the opamp with // 0.1uF capacitor and 360 ohm resistor feedback in inverting mode biased by // dac vRef (used to center the output). // // R = 360 ohm // C = 0.1uF // Low Hz = 4420.97~ = 1 / (2pi * 360 * 0.0000001) // // Under spice simulation the circuit yields -3dB = 4400Hz. // In the Amiga 1200 and CD-32, the low-pass cutoff is 26kHz+, so the // static low-pass filter is disabled in the mixer in A1200 mode. // // Next comes a bog-standard Sallen-Key filter ("LED") with: // R1 = 10K ohm // R2 = 10K ohm // C1 = 6800pF // C2 = 3900pF // Q ~= 1/sqrt(2) // // This filter is optionally bypassed by an MPF-102 JFET chip when // the LED filter is turned off. // // Under spice simulation the circuit yields -3dB = 2800Hz. // 90 degrees phase = 3000Hz (so, should oscillate at 3kHz!) // // The buffered output of the Sallen-Key passes into an RC high-pass with: // R = 1.39K ohm (1K ohm + 390 ohm) // C = 22uF (also C = 330nF, for improved high-frequency) // // High Hz = 5.2~ = 1 / (2pi * 1390 * 0.000022) // Under spice simulation the circuit yields -3dB = 5.2Hz. // Amiga 500 RC low-pass filter: lp_R = 360.0f; // 360 ohm resistor lp_C = 0.0000001f; // 0.1uF capacitor lp_Hz = 1.0 / (2.0f * 3.1415927f * lp_R * lp_C); calcCoeffLossyIntegrator(editor.outputFreq_f, lp_Hz, &filterLo); // Amiga 500 Sallen-Key "LED" filter: led_R1 = 10000.0f; // 10K ohm resistor led_R2 = 10000.0f; // 10K ohm resistor led_C1 = 0.0000000068f; // 6800pF capacitor led_C2 = 0.0000000039f; // 3900pF capacitor led_Hz = 1.0f / (2.0f * 3.1415927f * sqrtf(led_R1 * led_R2 * led_C1 * led_C2)); calcCoeffLED(editor.outputFreq_f, led_Hz, &filterLEDC); // Amiga 500 RC high-pass filter: hp_R = 1390.0f; // 1K ohm resistor + 390 ohm resistor hp_C = 0.000022f; // 22uF capacitor hp_Hz = 1.0f / (2.0f * 3.1415927f * hp_R * hp_C); calcCoeffLossyIntegrator(editor.outputFreq_f, hp_Hz, &filterHi); } void mixerCalcVoicePans(uint8_t stereoSeparation) { uint8_t scaledPanPos; scaledPanPos = (stereoSeparation * 128) / 100; ch1Pan = 128 - scaledPanPos; ch2Pan = 128 + scaledPanPos; ch3Pan = 128 + scaledPanPos; ch4Pan = 128 - scaledPanPos; mixerSetVoicePan(0, ch1Pan); mixerSetVoicePan(1, ch2Pan); mixerSetVoicePan(2, ch3Pan); mixerSetVoicePan(3, ch4Pan); } int8_t setupAudio(void) { SDL_AudioSpec want, have; want.freq = ptConfig.soundFrequency; want.format = AUDIO_S16; want.channels = 2; want.callback = audioCallback; want.userdata = NULL; want.samples = ptConfig.soundBufferSize; dev = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0); if (dev == 0) { showErrorMsgBox("Unable to open audio device: %s", SDL_GetError()); return (false); } if (have.freq < 32000) // lower than this is not safe for one-step mixer w/ BLEP { showErrorMsgBox("Unable to open audio: The audio output rate couldn't be used!"); return (false); } if (have.format != want.format) { showErrorMsgBox("Unable to open audio: The sample format (signed 16-bit) couldn't be used!"); return (false); } maxSamplesToMix = (int32_t)(((have.freq * 2.5) / 32.0) + 0.5); mixBufferL_f = (float *)(calloc(maxSamplesToMix, sizeof (float))); if (mixBufferL_f == NULL) { showErrorMsgBox("Out of memory!"); return (false); } mixBufferR_f = (float *)(calloc(maxSamplesToMix, sizeof (float))); if (mixBufferR_f == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.mod2WavBuffer = (int16_t *)(malloc(sizeof (int16_t) * maxSamplesToMix)); if (editor.mod2WavBuffer == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.audioBufferSize = have.samples; ptConfig.soundFrequency = have.freq; editor.outputFreq = ptConfig.soundFrequency; editor.outputFreq_f = (float)(ptConfig.soundFrequency); mixerCalcVoicePans(ptConfig.stereoSeparation); defStereoSep = ptConfig.stereoSeparation; filterFlags = ptConfig.a500LowPassFilter ? FILTER_LP_ENABLED : 0; calculateFilterCoeffs(); samplesPerTick = 0; sampleCounter = 0; SDL_PauseAudioDevice(dev, false); return (true); } void audioClose(void) { turnOffVoices(); editor.songPlaying = false; if (dev > 0) { SDL_PauseAudioDevice(dev, true); SDL_CloseAudioDevice(dev); dev = 0; SDL_Delay(100); } if (mixBufferL_f != NULL) { free(mixBufferL_f); mixBufferL_f = NULL; } if (mixBufferR_f != NULL) { free(mixBufferR_f); mixBufferR_f = NULL; } if (editor.mod2WavBuffer != NULL) { free(editor.mod2WavBuffer); editor.mod2WavBuffer = NULL; } } void mixerSetSamplesPerTick(int32_t val) { samplesPerTick = val; } void mixerClearSampleCounter(void) { sampleCounter = 0; } void toggleAmigaPanMode(void) { amigaPanFlag ^= 1; if (!amigaPanFlag) { mixerCalcVoicePans(defStereoSep); displayMsg("AMIGA PANNING OFF"); } else { mixerCalcVoicePans(100); displayMsg("AMIGA PANNING ON"); } } // PAT2SMP RELATED STUFF uint32_t getAudioFrame(int16_t *outStream) { int32_t b, c; if (intMusic() == false) wavRenderingDone = true; b = samplesPerTick; while (b > 0) { c = b; if (c > maxSamplesToMix) c = maxSamplesToMix; outputAudio(outStream, c); b -= c; outStream += (c * 2); } return (samplesPerTick * 2); } int32_t mod2WavThreadFunc(void *ptr) { uint32_t size, totalSampleCounter, totalRiffChunkLen; FILE *fOut; wavHeader_t wavHeader; fOut = (FILE *)(ptr); if (fOut == NULL) return (1); // skip wav header place, render data first fseek(fOut, sizeof (wavHeader_t), SEEK_SET); wavRenderingDone = false; totalSampleCounter = 0; while (editor.isWAVRendering && !(wavRenderingDone || editor.abortMod2Wav)) { size = getAudioFrame(editor.mod2WavBuffer); totalSampleCounter += size; fwrite(editor.mod2WavBuffer, sizeof (int16_t), size, fOut); editor.ui.updateMod2WavDialog = true; } if (totalSampleCounter & 1) fputc(0, fOut); // pad align byte totalRiffChunkLen = ftell(fOut) - 8; editor.ui.mod2WavFinished = true; editor.ui.updateMod2WavDialog = true; // go back and fill the missing WAV header fseek(fOut, 0, SEEK_SET); wavHeader.chunkID = bigEndian ? SWAP32(0x46464952) : 0x46464952; // "RIFF" wavHeader.chunkSize = bigEndian ? SWAP32(totalRiffChunkLen) : (totalRiffChunkLen); wavHeader.format = bigEndian ? SWAP32(0x45564157) : 0x45564157; // "WAVE" wavHeader.subchunk1ID = bigEndian ? SWAP32(0x20746D66) : 0x20746D66; // "fmt " wavHeader.subchunk1Size = bigEndian ? SWAP32(16) : 16; wavHeader.audioFormat = bigEndian ? SWAP16(1) : 1; wavHeader.numChannels = bigEndian ? SWAP16(2) : 2; wavHeader.sampleRate = bigEndian ? SWAP32(editor.outputFreq) : editor.outputFreq; wavHeader.bitsPerSample = bigEndian ? SWAP16(16) : 16; wavHeader.byteRate = bigEndian ? SWAP32(wavHeader.sampleRate * wavHeader.numChannels * wavHeader.bitsPerSample / 8) : (wavHeader.sampleRate * wavHeader.numChannels * wavHeader.bitsPerSample / 8); wavHeader.blockAlign = bigEndian ? SWAP16(wavHeader.numChannels * wavHeader.bitsPerSample / 8) : (wavHeader.numChannels * wavHeader.bitsPerSample / 8); wavHeader.subchunk2ID = bigEndian ? SWAP32(0x61746164) : 0x61746164; // "data" wavHeader.subchunk2Size = bigEndian ? SWAP32(totalSampleCounter * 4) : (totalSampleCounter * 4); // 16-bit stereo = * 4 fwrite(&wavHeader, sizeof (wavHeader_t), 1, fOut); fclose(fOut); return (1); } int8_t renderToWav(char *fileName, int8_t checkIfFileExist) { FILE *fOut; struct stat statBuffer; if (checkIfFileExist) { if (stat(fileName, &statBuffer) == 0) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_MOD2WAV_OVERWRITE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("OVERWRITE FILE?", NO_CARRY); renderAskDialog(); return (false); } } if (editor.ui.askScreenShown) { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = false; } fOut = fopen(fileName, "wb"); if (fOut == NULL) { displayErrorMsg("FILE I/O ERROR"); terminalPrintf("MOD2WAV failed: file input/output error\n"); return (false); } storeTempVariables(); calcMod2WavTotalRows(); restartSong(); terminalPrintf("MOD2WAV started (rows to render: %d)\n", modEntry->rowsInTotal); editor.blockMarkFlag = false; pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); setStatusMessage("RENDERING MOD...", NO_CARRY); editor.ui.disableVisualizer = true; editor.isWAVRendering = true; renderMOD2WAVDialog(); editor.abortMod2Wav = false; editor.mod2WavThread = SDL_CreateThread(mod2WavThreadFunc, "mod2wav ProTracker thread", fOut); return (true); } // for MOD2WAV - ONLY used for a visual percentage counter, so accuracy is not important void calcMod2WavTotalRows(void) { // TODO: Should run replayer in a tick loop instead to get estimate..? // This is quite accurate though... int8_t n_pattpos[AMIGA_VOICES], n_loopcount[AMIGA_VOICES]; uint8_t modRow, pBreakFlag, posJumpAssert, pBreakPosition, calcingRows, ch, pos; int16_t modOrder; uint16_t modPattern; note_t *note; // for pattern loop memset(n_pattpos, 0, sizeof (n_pattpos)); memset(n_loopcount, 0, sizeof (n_loopcount)); modEntry->rowsCounter = 0; modEntry->rowsInTotal = 0; modRow = 0; modOrder = 0; modPattern = modEntry->head.order[0]; pBreakPosition = 0; posJumpAssert = false; pBreakFlag = false; calcingRows = true; memset(editor.rowVisitTable, 0, MOD_ORDERS * MOD_ROWS); while (calcingRows) { editor.rowVisitTable[(modOrder * MOD_ROWS) + modRow] = true; for (ch = 0; ch < AMIGA_VOICES; ++ch) { note = &modEntry->patterns[modPattern][(modRow * AMIGA_VOICES) + ch]; if (note->command == 0x0B) // Bxx - Position Jump { modOrder = note->param - 1; pBreakPosition = 0; posJumpAssert = true; } else if (note->command == 0x0D) // Dxx - Pattern Break { pBreakPosition = (((note->param >> 4) * 10) + (note->param & 0x0F)); if (pBreakPosition > 63) pBreakPosition = 0; posJumpAssert = true; } else if ((note->command == 0x0F) && (note->param == 0)) // F00 - Set Speed 0 (stop) { calcingRows = false; break; } else if ((note->command == 0x0E) && ((note->param >> 4) == 0x06)) // E6x - Pattern Loop { pos = note->param & 0x0F; if (pos == 0) { n_pattpos[ch] = modRow; } else { // this is so ugly if (n_loopcount[ch] == 0) { n_loopcount[ch] = pos; pBreakPosition = n_pattpos[ch]; pBreakFlag = true; for (pos = pBreakPosition; pos <= modRow; ++pos) editor.rowVisitTable[(modOrder * MOD_ROWS) + pos] = false; } else { if (--n_loopcount[ch]) { pBreakPosition = n_pattpos[ch]; pBreakFlag = true; for (pos = pBreakPosition; pos <= modRow; ++pos) editor.rowVisitTable[(modOrder * MOD_ROWS) + pos] = false; } } } } } modRow++; modEntry->rowsInTotal++; if (pBreakFlag) { modRow = pBreakPosition; pBreakPosition = 0; pBreakFlag = false; } if ((modRow >= MOD_ROWS) || posJumpAssert) { modRow = pBreakPosition; pBreakPosition = 0; posJumpAssert = false; modOrder = (modOrder + 1) & 0x7F; if (modOrder >= modEntry->head.orderCount) { modOrder = 0; calcingRows = false; break; } modPattern = modEntry->head.order[modOrder]; if (modPattern > (MAX_PATTERNS - 1)) modPattern = MAX_PATTERNS - 1; } if (editor.rowVisitTable[(modOrder * MOD_ROWS) + modRow]) { // row has been visited before, we're now done! calcingRows = false; break; } } } int8_t quantizeFloatTo8bit(float smpFloat) { smpFloat = roundf(smpFloat); smpFloat = CLAMP(smpFloat, -128.0f, 127.0f); return (int8_t)(smpFloat); } int8_t quantize32bitTo8bit(int32_t smp32) { double smp_d; smp_d = smp32 / 16777216.0; smp_d = round(smp_d); smp_d = CLAMP(smp_d, -128.0, 127.0); return (int8_t)(smp_d); } int8_t quantize24bitTo8bit(int32_t smp32) { double smp_d; smp_d = smp32 / 65536.0; smp_d = round(smp_d); smp_d = CLAMP(smp_d, -128.0, 127.0); return (int8_t)(smp_d); } int8_t quantize16bitTo8bit(int16_t smp16) { float smp_f; smp_f = smp16 / 256.0f; smp_f = roundf(smp_f); smp_f = CLAMP(smp_f, -128.0f, 127.0f); return (int8_t)(smp_f); } void normalize32bitSigned(int32_t *sampleData, uint32_t sampleLength) { uint32_t sample, sampleVolPeak, i; double gain; sampleVolPeak = 0; for (i = 0; i < sampleLength; ++i) { sample = ABS(sampleData[i]); if (sampleVolPeak < sample) sampleVolPeak = sample; } // prevent division by zero! if (sampleVolPeak <= 0) sampleVolPeak = 1; gain = ((4294967296.0 / 2.0) - 1.0) / sampleVolPeak; for (i = 0; i < sampleLength; ++i) sampleData[i] = (int32_t)(sampleData[i] * gain); } void normalize24bitSigned(int32_t *sampleData, uint32_t sampleLength) { uint32_t sample, sampleVolPeak, i; double gain; sampleVolPeak = 0; for (i = 0; i < sampleLength; ++i) { sample = ABS(sampleData[i]); if (sampleVolPeak < sample) sampleVolPeak = sample; } // prevent division by zero! if (sampleVolPeak <= 0) sampleVolPeak = 1; gain = ((16777216.0 / 2.0) - 1.0) / sampleVolPeak; for (i = 0; i < sampleLength; ++i) sampleData[i] = (int32_t)(sampleData[i] * gain); } void normalize16bitSigned(int16_t *sampleData, uint32_t sampleLength) { uint32_t sample, sampleVolPeak, i; float gain; sampleVolPeak = 0; for (i = 0; i < sampleLength; ++i) { sample = ABS(sampleData[i]); if (sampleVolPeak < sample) sampleVolPeak = sample; } // prevent division by zero! if (sampleVolPeak <= 0) sampleVolPeak = 1; gain = ((65536.0f / 2.0f) - 1.0f) / sampleVolPeak; for (i = 0; i < sampleLength; ++i) sampleData[i] = (int16_t)(sampleData[i] * gain); } void normalize8bitFloatSigned(float *sampleData, uint32_t sampleLength) { uint32_t i; float sample, sampleVolPeak, gain; sampleVolPeak = 0.0f; for (i = 0; i < sampleLength; ++i) { sample = fabsf(sampleData[i]); if (sampleVolPeak < sample) sampleVolPeak = sample; } if (sampleVolPeak > 0.0f) { gain = ((256.0f / 2.0f) - 1.0f) / sampleVolPeak; for (i = 0; i < sampleLength; ++i) sampleData[i] *= gain; } } protracker-2.3d.r92/src/pt_helpers.h0000644000000000000000000000307713235646500016127 0ustar rootroot#ifndef __PT_HELPERS_H #define __PT_HELPERS_H #include #include #include "pt_header.h" #ifdef _MSC_VER #define inline __forceinline #endif #if defined (_WIN32) && defined (_DEBUG) #define PT_ASSERT(X) if (!(X)) __debugbreak() #else #define PT_ASSERT(X) #endif #ifndef true #define true 1 #define false 0 #endif #define SWAP16(value) \ ( \ (((uint16_t)((value) & 0x00FF)) << 8) | \ (((uint16_t)((value) & 0xFF00)) >> 8) \ ) #define SWAP32(value) \ ( \ (((uint32_t)((value) & 0x000000FF)) << 24) | \ (((uint32_t)((value) & 0x0000FF00)) << 8) | \ (((uint32_t)((value) & 0x00FF0000)) >> 8) | \ (((uint32_t)((value) & 0xFF000000)) >> 24) \ ) #define SGN(x) (((x) >= 0) ? 1 : -1) #define ABS(a) (((a) < 0) ? -(a) : (a)) #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #define LERP(x, y, z) ((x) + ((y) - (x)) * (z)) #define RGB_R(x) (((x) & 0x00FF0000) >> 16) #define RGB_G(x) (((x) & 0x0000FF00) >> 8) #define RGB_B(x) (((x) & 0x000000FF) >> 0) #define TO_RGB(r, g, b) (((r) << 16) | ((g) << 8) | (b)) void showErrorMsgBox(const char *fmt, ...); int32_t my_strnicmp(const char *s1, const char *s2, size_t n); #ifndef _WIN32 int8_t changePathToHome(void); #endif int8_t sampleNameIsEmpty(char *name); int8_t moduleNameIsEmpty(char *name); void updateWindowTitle(int8_t modified); void recalcChordLength(void); uint8_t hexToInteger2(char *ptr); #endif protracker-2.3d.r92/src/pt_blep.h0000644000000000000000000000252313235646477015417 0ustar rootroot/* These BLEP routines were coded by aciddose, and he agreed on ** using the WTFPL license for the code. */ #ifndef __PT_BLEP_H #define __PT_BLEP_H #include // aciddose says: // information on blep variables // // ZC = zero crossings, the number of ripples in the impulse // OS = oversampling, how many samples per zero crossing are taken // SP = step size per output sample, used to lower the cutoff (play the impulse slower) // NS = number of samples of impulse to insert // RNS = the lowest power of two greater than NS, minus one (used to wrap output buffer) // // ZC and OS are here only for reference, they depend upon the data in the table and can't be changed. // SP, the step size can be any number lower or equal to OS, as long as the result NS remains an integer. // for example, if ZC=8,OS=5, you can set SP=1, the result is NS=40, and RNS must then be 63. // the result of that is the filter cutoff is set at nyquist * (SP/OS), in this case nyquist/5. #define BLEP_ZC 8 #define BLEP_OS 5 #define BLEP_SP 5 #define BLEP_NS (BLEP_ZC * BLEP_OS / BLEP_SP) #define BLEP_RNS 7 // RNS = (2^ > NS) - 1 typedef struct blep_t { int32_t index, samplesLeft; float buffer[BLEP_RNS + 1], lastValue; } blep_t; void blepAdd(blep_t *b, float offset, float amplitude); float blepRun(blep_t *b); #endif protracker-2.3d.r92/src/pt_diskop.c0000644000000000000000000010277013235646520015753 0ustar rootroot#include #include #include #include #include #include // tolower() #include #ifdef _WIN32 #include #include #else #include #endif #include #include #include #include #include #include "pt_header.h" #include "pt_dirent.h" #include "pt_textout.h" #include "pt_diskop.h" #include "pt_tables.h" #include "pt_palette.h" #include "pt_modloader.h" #include "pt_audio.h" #include "pt_sampler.h" #include "pt_config.h" #include "pt_helpers.h" #include "pt_terminal.h" #include "pt_keyboard.h" typedef struct fileEntry_t { uint8_t type; uint32_t size; UNICHAR *name; char *ansiName, *dateChanged; } fileEntry_t; static fileEntry_t *diskOpEntry = NULL; void handleEntryJumping(char jumpToChar) { char cmpChar; int8_t j; int32_t i; if (diskOpEntry != NULL) { // slow and unintelligent method, but whatever if (editor.diskop.numFiles >= 10) { for (i = 0; i <= (editor.diskop.numFiles - 10); i++) { for (j = 0; j < 10; ++j) { if (diskOpEntry[i + j].ansiName != NULL) { if (diskOpEntry[i + j].type == DISKOP_DIR) cmpChar = (char)(tolower(diskOpEntry[i + j].ansiName[1])); // skip dir. sorting byte else cmpChar = (char)(tolower(diskOpEntry[i + j].ansiName[0])); if (jumpToChar == cmpChar) { // fix visual overrun while ((i + j) > (editor.diskop.numFiles - 10)) j--; editor.diskop.scrollOffset = i + j; editor.ui.updateDiskOpFileList = true; return; } } } } } else { // the reason we still search, is to throw an error // message if there is no such file name starting // with given character. for (i = 0; i < editor.diskop.numFiles; ++i) { if (diskOpEntry[i].ansiName != NULL) { if (diskOpEntry[i].type == DISKOP_DIR) cmpChar = (char)(tolower(diskOpEntry[i].ansiName[1])); // skip dir. sorting byte else cmpChar = (char)(tolower(diskOpEntry[i].ansiName[0])); if (jumpToChar == cmpChar) { editor.ui.updateDiskOpFileList = true; return; } } } } } // character not found in file list, show red (error) mouse pointer! editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; pointerErrorMode(); } int8_t diskOpEntryIsEmpty(int32_t fileIndex) { if ((editor.diskop.scrollOffset + fileIndex) >= editor.diskop.numFiles) return (true); return (false); } int8_t diskOpEntryIsDir(int32_t fileIndex) { if (diskOpEntry != NULL) { if (!diskOpEntryIsEmpty(fileIndex)) return (diskOpEntry[editor.diskop.scrollOffset + fileIndex].type); // 0 = file, 1 = dir } return (-1); // couldn't look up entry } char *diskOpGetAnsiEntry(int32_t fileIndex) { char *filename; if (diskOpEntry != NULL) { if (!diskOpEntryIsEmpty(fileIndex)) { filename = diskOpEntry[editor.diskop.scrollOffset + fileIndex].ansiName; if ((filename == NULL) || (filename[0] == '\0')) return (NULL); if (diskOpEntry[editor.diskop.scrollOffset + fileIndex].type == DISKOP_FILE) return (&filename[0]); else return (&filename[1]); // skip dir. sorting byte } } return (NULL); } UNICHAR *diskOpGetUnicodeEntry(int32_t fileIndex) { UNICHAR *filenameU; if (diskOpEntry != NULL) { if (!diskOpEntryIsEmpty(fileIndex)) { filenameU = diskOpEntry[editor.diskop.scrollOffset + fileIndex].name; if ((filenameU == NULL) || (filenameU[0] == '\0')) return (NULL); return (filenameU); } } return (NULL); } void setVisualPathToCwd(void) { memset(editor.currPath, 0, PATH_MAX_LEN + 10); memset(editor.currPathU, 0, (PATH_MAX_LEN + 2) * sizeof (UNICHAR)); UNICHAR_GETCWD(editor.currPathU, PATH_MAX_LEN); unicharToAnsi(editor.currPath, editor.currPathU, PATH_MAX_LEN); editor.ui.updateDiskOpPathText = true; } int8_t diskOpSetPath(UNICHAR *path, uint8_t cache) { DIR *dirp; if ((path == NULL) || (*path == '\0')) { setVisualPathToCwd(); displayErrorMsg("CAN'T OPEN DIR !"); return (false); } // test first if we can open the directory dirp = opendir(path); if (dirp == NULL) { setVisualPathToCwd(); displayErrorMsg("CAN'T OPEN DIR !"); return (false); } closedir(dirp); if (UNICHAR_CHDIR(path) == 0) { setVisualPathToCwd(); if (cache) editor.diskop.cached = false; if (editor.ui.diskOpScreenShown) editor.ui.updateDiskOpFileList = true; editor.diskop.scrollOffset = 0; return (true); } setVisualPathToCwd(); displayErrorMsg("CAN'T OPEN DIR !"); return (false); } void diskOpSetInitPath(void) { UNICHAR *pathTmp; if (ptConfig.defaultDiskOpDir[0] != '\0') // if DEFAULTDIR is set or not in config { pathTmp = (UNICHAR *)(calloc(PATH_MAX_LEN + 2, sizeof (UNICHAR))); if (pathTmp != NULL) { #ifdef _WIN32 MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ptConfig.defaultDiskOpDir, -1, pathTmp, PATH_MAX_LEN); #else strcpy(pathTmp, ptConfig.defaultDiskOpDir); #endif diskOpSetPath(pathTmp, DISKOP_CACHE); free(pathTmp); } } } int8_t allocDiskOpVars(void) { editor.fileNameTmp = (UNICHAR *)(calloc(PATH_MAX_LEN + 2, sizeof (UNICHAR))); editor.entryNameTmp = (char *)(calloc(PATH_MAX_LEN + 10, sizeof (char))); editor.currPath = (char *)(calloc(PATH_MAX_LEN + 10, sizeof (char))); editor.currPathU = (UNICHAR *)(calloc(PATH_MAX_LEN + 2, sizeof (UNICHAR))); if ((editor.fileNameTmp == NULL) || (editor.entryNameTmp == NULL) || (editor.currPath == NULL) || (editor.currPathU == NULL)) return (false); // allocated leftovers are free'd lateron return (true); } void deAllocDiskOpVars(void) { if (editor.fileNameTmp != NULL) free(editor.fileNameTmp); if (editor.entryNameTmp != NULL) free(editor.entryNameTmp); if (editor.currPath != NULL) free(editor.currPath); if (editor.currPathU != NULL) free(editor.currPathU); } void freeDiskOpFileMem(void) { int32_t i; if (editor.diskop.numFiles > 0) { if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); if (diskOpEntry != NULL) { for (i = 0; i < editor.diskop.numFiles; ++i) { if (diskOpEntry[i].ansiName != NULL) free(diskOpEntry[i].ansiName); if (diskOpEntry[i].name != NULL) free(diskOpEntry[i].name); if (diskOpEntry[i].dateChanged != NULL) free(diskOpEntry[i].dateChanged); } free(diskOpEntry); diskOpEntry = NULL; } } } void allocDiskOpMem(void) { int32_t i; if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); diskOpEntry = (fileEntry_t *)(malloc(sizeof (fileEntry_t) * editor.diskop.numFiles)); if (diskOpEntry == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); } // make sure we don't zero out pointers, safely assign them to NULL instead (for weird platforms) for (i = 0; i < editor.diskop.numFiles; ++i) { diskOpEntry[i].dateChanged = NULL; diskOpEntry[i].ansiName = NULL; diskOpEntry[i].name = NULL; diskOpEntry[i].size = 0; diskOpEntry[i].type = DISKOP_FILE; } } static int32_t diskOpSortCmp(const void *a, const void *b) { const char *s1, *s2; int32_t f, l; // no need to check pointers, this routine is used sanely s1 = (const char *)((*(fileEntry_t *)(a)).ansiName); s2 = (const char *)((*(fileEntry_t *)(b)).ansiName); do { f = ((*s1 >= 'A') && (*s1 <= 'Z')) ? (*s1++ + ('a' - 'A')) : *s1++; l = ((*s2 >= 'A') && (*s2 <= 'Z')) ? (*s2++ + ('a' - 'A')) : *s2++; } while (f && (f == l)); return (f - l); } static int8_t diskOpFillBufferMod(void) { char tempStr[18]; uint16_t tickCounter; uint32_t fileIndex, fileNameLength; DIR *dir; struct dirent *ent; #ifndef _WIN32 struct stat fileStat; #endif editor.diskop.scrollOffset = 0; // do we have a path set? if (editor.currPathU[0] == '\0') setVisualPathToCwd(); dir = opendir(editor.currPathU); if (dir == NULL) { setVisualPathToCwd(); return (false); } // evaluate number of files (used as a variable for memory allocation) freeDiskOpFileMem(); if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); tickCounter = 0; editor.diskop.numFiles = 0; while ((ent = readdir(dir)) != NULL) { if (editor.diskop.forceStopReading) return (false); if (!editor.errorMsgActive) { if (tickCounter >= 1536) setStatusMessage("COUNTING FILES..", NO_CARRY); else if (tickCounter >= 1024) setStatusMessage("COUNTING FILES.", NO_CARRY); else if (tickCounter >= 512) setStatusMessage("COUNTING FILES", NO_CARRY); else if (tickCounter == 0) setStatusMessage("COUNTING FILES...", NO_CARRY); tickCounter = (tickCounter + 1) & 2047; } if (ent->d_name[0] == '\0') continue; #ifndef _WIN32 // don't handle "dot" files/dirs if ((ent->d_name[0] == '.') && (ent->d_name[1] != '.')) continue; #endif // don't handle "." directory if ((ent->d_type == DT_DIR) && ((ent->d_name[0] == '.') && (ent->d_name[1] == '\0'))) continue; fileNameLength = UNICHAR_STRLEN(ent->d_name); if (ent->d_type == DT_REG) { if (fileNameLength >= 4) { if ( (!UNICHAR_STRICMP(ent->d_name, "MOD.", 4) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".MOD", 4)) || (!UNICHAR_STRICMP(ent->d_name, "STK.", 4) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".STK", 4)) || (!UNICHAR_STRICMP(ent->d_name, "M15.", 4) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".M15", 4)) || (!UNICHAR_STRICMP(ent->d_name, "NST.", 4) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".NST", 4)) || (!UNICHAR_STRICMP(ent->d_name, "UST.", 4) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".UST", 4)) || (!UNICHAR_STRICMP(ent->d_name, "PP.", 3) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 3], ".PP", 3)) || (!UNICHAR_STRICMP(ent->d_name, "NT.", 3) || !UNICHAR_STRICMP(&ent->d_name[fileNameLength - 3], ".NT", 3)) ) { editor.diskop.numFiles++; } } } else { editor.diskop.numFiles++; } } closedir(dir); allocDiskOpMem(); if (diskOpEntry == NULL) return (false); if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); dir = opendir(editor.currPathU); // we opened this earlier, we know it works // fill disk op. buffer (type, size, path, file name, date changed) fileIndex = 0; while ((ent = readdir(dir)) != NULL) { if (editor.diskop.forceStopReading) return (false); if (!editor.errorMsgActive && (editor.diskop.numFiles > 0)) { sprintf(tempStr, "READING DIR %3d%%", (uint8_t)(((((float)(fileIndex) / editor.diskop.numFiles) * 100.0f) + 0.5f))); setStatusMessage(tempStr, NO_CARRY); } // don't handle empty entries if (ent->d_name[0] == '\0') continue; #ifndef _WIN32 // don't handle "dot" files/dirs if ((ent->d_name[0] == '.') && (ent->d_name[1] != '.')) continue; #endif // don't handle "." directory if ((ent->d_type == DT_DIR) && ((ent->d_name[0] == '.') && (ent->d_name[1] == '\0'))) continue; fileNameLength = UNICHAR_STRLEN(ent->d_name); if (ent->d_type == DT_REG) { if (fileNameLength < 4) continue; if ( (UNICHAR_STRICMP(ent->d_name, "MOD.", 4) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".MOD", 4)) && (UNICHAR_STRICMP(ent->d_name, "STK.", 4) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".STK", 4)) && (UNICHAR_STRICMP(ent->d_name, "M15.", 4) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".M15", 4)) && (UNICHAR_STRICMP(ent->d_name, "NST.", 4) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".NST", 4)) && (UNICHAR_STRICMP(ent->d_name, "UST.", 4) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 4], ".UST", 4)) && (UNICHAR_STRICMP(ent->d_name, "PP.", 3) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 3], ".PP", 3)) && (UNICHAR_STRICMP(ent->d_name, "NT.", 3) && UNICHAR_STRICMP(&ent->d_name[fileNameLength - 3], ".NT", 3)) ) { continue; } diskOpEntry[fileIndex].type = DISKOP_FILE; } else { diskOpEntry[fileIndex].type = DISKOP_DIR; } // file/dir is valid, let's move on diskOpEntry[fileIndex].name = (UNICHAR *)(malloc((fileNameLength + 2) * sizeof (UNICHAR))); if (diskOpEntry[fileIndex].name == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } UNICHAR_STRCPY(diskOpEntry[fileIndex].name, ent->d_name); // get file size and modification date if (diskOpEntry[fileIndex].type == DISKOP_FILE) { diskOpEntry[fileIndex].ansiName = (char *)(calloc(fileNameLength + 10, sizeof (char))); if (diskOpEntry[fileIndex].ansiName == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } unicharToAnsi(diskOpEntry[fileIndex].ansiName, diskOpEntry[fileIndex].name, fileNameLength); #ifdef _WIN32 diskOpEntry[fileIndex].size = ent->d_size; diskOpEntry[fileIndex].dateChanged = (char *)(malloc(6 + 1)); if (diskOpEntry[fileIndex].dateChanged == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } strcpy(diskOpEntry[fileIndex].dateChanged, ent->lastModDate); #else if (stat(ent->d_name, &fileStat) == 0) { diskOpEntry[fileIndex].dateChanged = (char *)(malloc(6 + 1)); if (diskOpEntry[fileIndex].dateChanged == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } diskOpEntry[fileIndex].size = (uint32_t)(fileStat.st_size); strftime(diskOpEntry[fileIndex].dateChanged, 7, "%d%m%y", localtime(&fileStat.st_mtime)); } #endif } else { diskOpEntry[fileIndex].ansiName = (char *)(calloc(fileNameLength + 10, sizeof (char))); if (diskOpEntry[fileIndex].ansiName == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } unicharToAnsi(diskOpEntry[fileIndex].ansiName + 1, diskOpEntry[fileIndex].name, fileNameLength); diskOpEntry[fileIndex].ansiName[0] = 2; // normal dir sort priority if (fileNameLength == 2) { if ((diskOpEntry[fileIndex].ansiName[1] == '.') && (diskOpEntry[fileIndex].ansiName[2] == '.')) diskOpEntry[fileIndex].ansiName[0] = 1; // sort ".." folder first by adding a dummy sort char } } fileIndex++; } closedir(dir); if (!editor.errorMsgActive) setStatusMessage("SORTING FILES..", NO_CARRY); qsort(diskOpEntry, editor.diskop.numFiles, sizeof (fileEntry_t), diskOpSortCmp); if (!editor.errorMsgActive) { pointerSetPreviousMode(); setPrevStatusMessage(); } return (true); } static int8_t diskOpFillBufferSmp(void) { char tempStr[18]; uint16_t tickCounter; uint32_t fileIndex, fileNameLength; DIR *dir; struct dirent *ent; #ifndef _WIN32 struct stat fileStat; #endif editor.diskop.scrollOffset = 0; // do we have a path set? if (editor.currPathU[0] == '\0') setVisualPathToCwd(); dir = opendir(editor.currPathU); if (dir == NULL) { setVisualPathToCwd(); return (false); } // evaluate number of files (used as a variable for memory allocation) freeDiskOpFileMem(); if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); tickCounter = 0; editor.diskop.numFiles = 0; while ((ent = readdir(dir)) != NULL) { if (editor.diskop.forceStopReading) return (false); if (!editor.errorMsgActive) { if (tickCounter >= 1536) setStatusMessage("COUNTING FILES..", NO_CARRY); else if (tickCounter >= 1024) setStatusMessage("COUNTING FILES.", NO_CARRY); else if (tickCounter >= 512) setStatusMessage("COUNTING FILES", NO_CARRY); else if (tickCounter == 0) setStatusMessage("COUNTING FILES...", NO_CARRY); tickCounter = (tickCounter + 1) & 2047; } if (ent->d_name[0] == '\0') continue; #ifndef _WIN32 // don't handle "dot" files/dirs if ((ent->d_name[0] == '.') && (ent->d_name[1] != '.')) continue; #endif // don't count "." directory (not read lateron) if ((ent->d_type == DT_DIR) && ((ent->d_name[0] == '.') && (ent->d_name[1] == '\0'))) continue; editor.diskop.numFiles++; } closedir(dir); allocDiskOpMem(); if (diskOpEntry == NULL) return (false); if (!editor.errorMsgActive) pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); dir = opendir(editor.currPathU); // we opened this earlier, we know it works // fill disk op. buffer (type, size, path, file name, date changed) fileIndex = 0; while ((ent = readdir(dir)) != NULL) { if (editor.diskop.forceStopReading) return (false); if (!editor.errorMsgActive && (editor.diskop.numFiles > 0)) { sprintf(tempStr, "READING DIR %3d%%", (uint8_t)(((((float)(fileIndex) / editor.diskop.numFiles) * 100.0f) + 0.5f))); setStatusMessage(tempStr, NO_CARRY); } // don't handle empty entries if (ent->d_name[0] == '\0') continue; #ifndef _WIN32 // don't handle "dot" files/dirs if ((ent->d_name[0] == '.') && (ent->d_name[1] != '.')) continue; #endif // don't handle "." directory if ((ent->d_type == DT_DIR) && ((ent->d_name[0] == '.') && (ent->d_name[1] == '\0'))) continue; diskOpEntry[fileIndex].type = (ent->d_type == DT_REG) ? DISKOP_FILE : DISKOP_DIR; fileNameLength = UNICHAR_STRLEN(ent->d_name); diskOpEntry[fileIndex].name = (UNICHAR *)(malloc((fileNameLength + 2) * sizeof (UNICHAR))); if (diskOpEntry[fileIndex].name == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } UNICHAR_STRCPY(diskOpEntry[fileIndex].name, ent->d_name); // get file size and modification date if (diskOpEntry[fileIndex].type == DISKOP_FILE) { diskOpEntry[fileIndex].ansiName = (char *)(calloc(fileNameLength + 10, sizeof (char))); if (diskOpEntry[fileIndex].ansiName == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } unicharToAnsi(diskOpEntry[fileIndex].ansiName, diskOpEntry[fileIndex].name, fileNameLength); #ifdef _WIN32 diskOpEntry[fileIndex].size = ent->d_size; diskOpEntry[fileIndex].dateChanged = (char *)(malloc(6 + 1)); if (diskOpEntry[fileIndex].dateChanged == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } strcpy(diskOpEntry[fileIndex].dateChanged, ent->lastModDate); #else if (stat(ent->d_name, &fileStat) == 0) { diskOpEntry[fileIndex].dateChanged = (char *)(malloc(6 + 1)); if (diskOpEntry[fileIndex].dateChanged == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } diskOpEntry[fileIndex].size = (uint32_t)(fileStat.st_size); strftime(diskOpEntry[fileIndex].dateChanged, 7, "%d%m%y", localtime(&fileStat.st_mtime)); } #endif } else { diskOpEntry[fileIndex].ansiName = (char *)(calloc(fileNameLength + 10, sizeof (char))); if (diskOpEntry[fileIndex].ansiName == NULL) { closedir(dir); freeDiskOpFileMem(); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.diskOpListOoMText); return (false); } unicharToAnsi(diskOpEntry[fileIndex].ansiName + 1, diskOpEntry[fileIndex].name, fileNameLength); diskOpEntry[fileIndex].ansiName[0] = 2; // normal dir sort priority if (fileNameLength == 2) { if ((diskOpEntry[fileIndex].ansiName[1] == '.') && (diskOpEntry[fileIndex].ansiName[2] == '.')) diskOpEntry[fileIndex].ansiName[0] = 1; // sort ".." folder first by adding a dummy sort char } } fileIndex++; } closedir(dir); if (!editor.errorMsgActive) setStatusMessage("SORTING FILES..", NO_CARRY); qsort(diskOpEntry, editor.diskop.numFiles, sizeof (fileEntry_t), diskOpSortCmp); if (!editor.errorMsgActive) { pointerSetPreviousMode(); setPrevStatusMessage(); } return (true); } int32_t diskOpFillThreadFunc(void *ptr) { (void)(ptr); // make compiler happy editor.diskop.isFilling = true; if (editor.diskop.mode == DISKOP_MODE_MOD) diskOpFillBufferMod(); else if (editor.diskop.mode == DISKOP_MODE_SMP) diskOpFillBufferSmp(); editor.diskop.isFilling = false; editor.ui.updateDiskOpFileList = true; return (1); } void diskOpRenderFileList(uint32_t *frameBuffer) { char tmpChar, tmpStr[7]; uint8_t listYPos; int32_t i, j, k, entryLength; uint32_t fileSize; fileEntry_t *entry; if ((editor.ui.pointerMode != POINTER_MODE_READ_DIR) && (editor.ui.pointerMode != POINTER_MODE_MSG1)) { if (!editor.errorMsgActive) { if (editor.diskop.mode == DISKOP_MODE_MOD) setStatusMessage("SELECT MODULE", NO_CARRY); else setStatusMessage("SELECT SAMPLE", NO_CARRY); } } if (editor.diskop.forceStopReading) return; // if needed, update the file list and add entries if (!editor.diskop.cached) { editor.diskop.fillThread = SDL_CreateThread(diskOpFillThreadFunc, "ProTracker disk op fill thread", NULL); editor.diskop.cached = true; return; } // print filelist if (!editor.diskop.isFilling && (diskOpEntry != NULL)) { entry = diskOpEntry; // clear filelist for (i = 0; i < DISKOP_LIST_SIZE; ++i) { textOutBg(frameBuffer, 8, 35 + (i * (FONT_CHAR_H + 1)), " ", palette[PAL_QADSCP], palette[PAL_BACKGRD]); } for (i = 0; (i < DISKOP_LIST_SIZE) && (i < editor.diskop.numFiles); ++i) { j = editor.diskop.scrollOffset + i; if (j < editor.diskop.numFiles) { listYPos = (uint8_t)(35 + (i * (FONT_CHAR_H + 1))); if (entry[j].ansiName == NULL) { if (entry[j].type == DISKOP_FILE) textOut(frameBuffer, 64, listYPos, "", palette[PAL_QADSCP]); else textOut(frameBuffer, 64, listYPos, "", palette[PAL_QADSCP]); continue; } entryLength = strlen(entry[j].ansiName); if (entryLength < 1) continue; if (entry[j].type == DISKOP_FILE) { // print file name if (entryLength > 23) { // shorten file name and add ".." to end for (k = 0; k < (23 - 2); ++k) { tmpChar = entry[j].ansiName[k]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; // was illegal character charOut(frameBuffer, 64 + (k * FONT_CHAR_W), listYPos, tmpChar, palette[PAL_QADSCP]); } textOut(frameBuffer, 64 + ((23 - 2) * FONT_CHAR_W), listYPos, "..", palette[PAL_QADSCP]); } else { // print whole file name for (k = 0; k < entryLength; ++k) { tmpChar = entry[j].ansiName[k]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; // was illegal character charOut(frameBuffer, 64 + (k * FONT_CHAR_W), listYPos, tmpChar, palette[PAL_QADSCP]); } } // print modification date if (entry[j].dateChanged != NULL) textOut(frameBuffer, 8, listYPos, entry[j].dateChanged, palette[PAL_QADSCP]); else textOut(frameBuffer, 8, listYPos, "000000", palette[PAL_QADSCP]); // print file size (can be optimized/cleansed further...) fileSize = entry[j].size; if (fileSize == 0) { textOut(frameBuffer, 256, listYPos, " 0", palette[PAL_QADSCP]); } else if (fileSize > 999999) { if (fileSize > 9999999) { if (fileSize >= 0x80000000UL) { textOut(frameBuffer, 256, listYPos, " >2GB", palette[PAL_QADSCP]); } else { fileSize /= 1000000; tmpStr[3] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[2] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[1] = '0' + (fileSize % 10); tmpStr[0] = '0' + (char)(fileSize / 10); tmpStr[4] = 'M'; tmpStr[5] = 'B'; tmpStr[6] = '\0'; k = 0; while (tmpStr[k] == '0') tmpStr[k++] = ' '; textOut(frameBuffer, 256, listYPos, tmpStr, palette[PAL_QADSCP]); } } else { fileSize /= 1000; tmpStr[3] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[2] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[1] = '0' + (fileSize % 10); tmpStr[0] = '0' + (char)(fileSize / 10); tmpStr[4] = 'K'; tmpStr[5] = 'B'; tmpStr[6] = '\0'; } textOut(frameBuffer, 256, listYPos, tmpStr, palette[PAL_QADSCP]); } else { tmpStr[5] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[4] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[3] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[2] = '0' + (fileSize % 10); fileSize /= 10; tmpStr[1] = '0' + (fileSize % 10); tmpStr[0] = '0' + (char)(fileSize / 10); tmpStr[6] = '\0'; k = 0; while (tmpStr[k] == '0') tmpStr[k++] = ' '; textOut(frameBuffer, 256, listYPos, tmpStr, palette[PAL_QADSCP]); } } else { // print folder entryLength--; // skip character used for dir sorting if (entryLength > 24) { for (k = 0; k < (24 - 2); ++k) { tmpChar = entry[j].ansiName[1 + k]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; // was illegal character charOut(frameBuffer, 64 + (k * FONT_CHAR_W), listYPos, tmpChar, palette[PAL_QADSCP]); } textOut(frameBuffer, 64 + ((24 - 2) * FONT_CHAR_W), listYPos, "..", palette[PAL_QADSCP]); } else if (entryLength > 0) { // print whole folder name for (k = 0; k < entryLength; ++k) { tmpChar = entry[j].ansiName[1 + k]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; // was illegal character charOut(frameBuffer, 64 + (k * FONT_CHAR_W), listYPos, tmpChar, palette[PAL_QADSCP]); } } textOut(frameBuffer, 264, listYPos, "(DIR)", palette[PAL_QADSCP]); } } } } } protracker-2.3d.r92/src/pt_visuals.c0000644000000000000000000030377413235646517016165 0ustar rootroot#include #ifdef _WIN32 #define WIN32_MEAN_AND_LEAN #include #include #endif #include #include // tolower() #include "pt_header.h" #include "pt_keyboard.h" #include "pt_mouse.h" #include "pt_audio.h" #include "pt_palette.h" #include "pt_helpers.h" #include "pt_textout.h" #include "pt_tables.h" #include "pt_modloader.h" #include "pt_sampleloader.h" #include "pt_patternviewer.h" #include "pt_sampler.h" #include "pt_diskop.h" #include "pt_visuals.h" #include "pt_helpers.h" #include "pt_terminal.h" #include "pt_scopes.h" typedef struct sprite_t { int8_t visible, pixelType; uint16_t newX, newY, x, y, w, h; uint32_t colorKey, *refreshBuffer; const void *data; } sprite_t; extern int8_t forceMixerOff; // pt_audio.c extern uint32_t *pixelBuffer; // pt_main.c extern SDL_Window *window; // pt_main.c extern SDL_Renderer *renderer; // pt_main.c extern SDL_Texture *texture; // pt_main.c extern uint8_t vsync60HzPresent; // pt_main.c extern uint8_t fullscreen; // pt_main.c sprite_t sprites[SPRITE_NUM]; // sprite background refresh buffers static uint32_t vuMetersBg[4 * (10 * 48)]; // ------------------------- int8_t intMusic(void); // pt_modplayer.c extern int32_t samplesPerTick; // pt_audio.c void storeTempVariables(void); // pt_modplayer.c uint8_t getSongProgressInPercentage(void); // pt_modplayer.c void updateSongInfo1(void); void updateSongInfo2(void); void updateSampler(void); void updatePatternData(void); void updateMOD2WAVDialog(void); void renderFrame(void) { updateMOD2WAVDialog(); // must be first to avoid flickering issues updateSongInfo1(); // top left side of screen, when "disk op"/"pos ed" is hidden updateSongInfo2(); // two middle rows of screen, always visible updateEditOp(); updatePatternData(); updateDiskOp(); updateSampler(); updatePosEd(); updateVisualizer(); updateDragBars(); if (editor.ui.terminalShown) // FIXME: needs optimizations... (copy framebuffer to a temp buffer and restore?) terminalRender(pixelBuffer); } void removeAskDialog(void) { if (!editor.ui.askScreenShown && !editor.isWAVRendering) displayMainScreen(); editor.ui.disablePosEd = false; editor.ui.disableVisualizer = false; } void renderAskDialog(void) { const uint32_t *ptr32Src; uint32_t *ptr32Dst; int32_t y; editor.ui.disablePosEd = true; editor.ui.disableVisualizer = true; // render ask dialog ptr32Src = editor.ui.pat2SmpDialogShown ? pat2SmpDialogBMP : yesNoDialogBMP; ptr32Dst = pixelBuffer + ((51 * SCREEN_W) + 160); y = 39; while (y--) { memcpy(ptr32Dst, ptr32Src, 104 * sizeof (int32_t)); ptr32Src += 104; ptr32Dst += SCREEN_W; } } void fillFromVuMetersBgBuffer(void) { uint8_t i, y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; if (!editor.ui.samplerScreenShown && !editor.ui.terminalShown) { for (i = 0; i < AMIGA_VOICES; ++i) { ptr32Src = vuMetersBg + (i * (10 * 48)); ptr32Dst = pixelBuffer + ((187 * SCREEN_W) + (55 + (i * 72))); y = 48; while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); *(ptr32Dst + 6) = *(ptr32Src + 6); *(ptr32Dst + 7) = *(ptr32Src + 7); *(ptr32Dst + 8) = *(ptr32Src + 8); *(ptr32Dst + 9) = *(ptr32Src + 9); ptr32Src += 10; ptr32Dst -= SCREEN_W; } } } } void fillToVuMetersBgBuffer(void) { uint8_t i, y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; if (!editor.ui.samplerScreenShown && !editor.ui.terminalShown) { for (i = 0; i < AMIGA_VOICES; ++i) { ptr32Src = pixelBuffer + ((187 * SCREEN_W) + (55 + (i * 72))); ptr32Dst = vuMetersBg + (i * (10 * 48)); y = 48; while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); *(ptr32Dst + 6) = *(ptr32Src + 6); *(ptr32Dst + 7) = *(ptr32Src + 7); *(ptr32Dst + 8) = *(ptr32Src + 8); *(ptr32Dst + 9) = *(ptr32Src + 9); ptr32Src -= SCREEN_W; ptr32Dst += 10; } } } } void renderVuMeters(void) { const uint32_t *ptr32Src; uint32_t *ptr32Dst; uint8_t i, y; fillToVuMetersBgBuffer(); if (!editor.ui.samplerScreenShown && !editor.ui.terminalShown && !editor.isWAVRendering && !editor.isSMPRendering) { for (i = 0; i < AMIGA_VOICES; ++i) { ptr32Src = vuMeterBMP; ptr32Dst = pixelBuffer + ((187 * SCREEN_W) + (55 + (i * 72))); if (editor.ui.realVuMeters) { y = (uint8_t)(editor.realVuMeterVolumes[i] + 0.5f); if (y > 48) y = 48; } else { y = editor.vuMeterVolumes[i]; } while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); *(ptr32Dst + 6) = *(ptr32Src + 6); *(ptr32Dst + 7) = *(ptr32Src + 7); *(ptr32Dst + 8) = *(ptr32Src + 8); *(ptr32Dst + 9) = *(ptr32Src + 9); ptr32Src += 10; ptr32Dst -= SCREEN_W; } } } } void updateSongInfo1(void) // left side of screen, when Disk Op. is hidden { moduleSample_t *currSample; if (!editor.ui.diskOpScreenShown) { currSample = &modEntry->samples[editor.currSample]; if (editor.ui.updateSongPos) { editor.ui.updateSongPos = false; printThreeDecimalsBg(pixelBuffer, 72, 3, *editor.currPosDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateSongPattern) { editor.ui.updateSongPattern = false; printTwoDecimalsBg(pixelBuffer, 80, 14, *editor.currPatternDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateSongLength) { editor.ui.updateSongLength = false; if (!editor.isWAVRendering) printThreeDecimalsBg(pixelBuffer, 72, 25, *editor.currLengthDisp,palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateCurrSampleFineTune) { editor.ui.updateCurrSampleFineTune = false; if (!editor.isWAVRendering) { if (currSample->fineTune >= 8) { charOutBg(pixelBuffer, 80, 36, '-', palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 88, 36, '0' + (0x10 - (currSample->fineTune & 0x0F)), palette[PAL_GENTXT], palette[PAL_GENBKG]); } else if (currSample->fineTune > 0) { charOutBg(pixelBuffer, 80, 36, '+', palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 88, 36, '0' + (currSample->fineTune & 0x0F), palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { charOutBg(pixelBuffer, 80, 36, ' ', palette[PAL_GENBKG], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 88, 36, '0', palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } if (editor.ui.updateCurrSampleNum) { editor.ui.updateCurrSampleNum = false; if (!editor.isWAVRendering) { printTwoHexBg(pixelBuffer, 80, 47, editor.sampleZero ? 0 : ((*editor.currSampleDisp) + 1), palette[PAL_GENTXT], palette[PAL_GENBKG]); } } if (editor.ui.updateCurrSampleVolume) { editor.ui.updateCurrSampleVolume = false; if (!editor.isWAVRendering) printTwoHexBg(pixelBuffer, 80, 58, *currSample->volumeDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateCurrSampleLength) { editor.ui.updateCurrSampleLength = false; if (!editor.isWAVRendering) printFiveHexBg(pixelBuffer, 56, 69, *currSample->lengthDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateCurrSampleRepeat) { editor.ui.updateCurrSampleRepeat = false; printFiveHexBg(pixelBuffer, 56, 80, *currSample->loopStartDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateCurrSampleReplen) { editor.ui.updateCurrSampleReplen = false; printFiveHexBg(pixelBuffer, 56, 91, *currSample->loopLengthDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } void updateSongInfo2(void) // two middle rows of screen, always present { int32_t x, i; moduleSample_t *currSample; if (editor.ui.updateStatusText) { editor.ui.updateStatusText = false; // clear background textOutBg(pixelBuffer, 88, 127, " ", palette[PAL_GENBKG], palette[PAL_GENBKG]); // render status text if (!editor.errorMsgActive && editor.blockMarkFlag && !editor.ui.askScreenShown && !editor.ui.clearScreenShown && !editor.swapChannelFlag) { textOut(pixelBuffer, 88, 127, "MARK BLOCK", palette[PAL_GENTXT]); charOut(pixelBuffer, 192, 127, '-', palette[PAL_GENTXT]); editor.blockToPos = modEntry->currRow; if (editor.blockFromPos >= editor.blockToPos) { printTwoDecimals(pixelBuffer, 176, 127, editor.blockToPos, palette[PAL_GENTXT]); printTwoDecimals(pixelBuffer, 200, 127, editor.blockFromPos, palette[PAL_GENTXT]); } else { printTwoDecimals(pixelBuffer, 176, 127, editor.blockFromPos, palette[PAL_GENTXT]); printTwoDecimals(pixelBuffer, 200, 127, editor.blockToPos, palette[PAL_GENTXT]); } } else { textOut(pixelBuffer, 88, 127, editor.ui.statusMessage, palette[PAL_GENTXT]); } } if (editor.ui.updateSongBPM) { editor.ui.updateSongBPM = false; if (!editor.ui.samplerScreenShown) printThreeDecimalsBg(pixelBuffer, 32, 123, modEntry->currBPM, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateCurrPattText) { editor.ui.updateCurrPattText = false; if (!editor.ui.samplerScreenShown) printTwoDecimalsBg(pixelBuffer, 8, 127, *editor.currEditPatternDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateTrackerFlags) { editor.ui.updateTrackerFlags = false; charOutBg(pixelBuffer, 1, 113, ' ', palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 8, 113, ' ', palette[PAL_GENTXT], palette[PAL_GENBKG]); if (editor.autoInsFlag) { charOut(pixelBuffer, 0, 113, 'I', palette[PAL_GENTXT]); // in Amiga PT, "auto insert" 9 means 0 if (editor.autoInsSlot == 9) charOut(pixelBuffer, 8, 113, '0', palette[PAL_GENTXT]); else charOut(pixelBuffer, 8, 113, '1' + editor.autoInsSlot, palette[PAL_GENTXT]); } charOutBg(pixelBuffer, 1, 102, ' ', palette[PAL_GENTXT], palette[PAL_GENBKG]); if (editor.metroFlag) charOut(pixelBuffer, 0, 102, 'M', palette[PAL_GENTXT]); charOutBg(pixelBuffer, 16, 102, ' ', palette[PAL_GENTXT], palette[PAL_GENBKG]); if (editor.multiFlag) charOut(pixelBuffer, 16, 102, 'M', palette[PAL_GENTXT]); charOutBg(pixelBuffer, 24, 102, '0' + editor.editMoveAdd,palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 311, 128, ' ', palette[PAL_GENBKG], palette[PAL_GENBKG]); if (editor.pNoteFlag == 1) { pixelBuffer[(129 * SCREEN_W) + 314] = palette[PAL_GENTXT]; pixelBuffer[(129 * SCREEN_W) + 315] = palette[PAL_GENTXT]; } else if (editor.pNoteFlag == 2) { pixelBuffer[(128 * SCREEN_W) + 314] = palette[PAL_GENTXT]; pixelBuffer[(128 * SCREEN_W) + 315] = palette[PAL_GENTXT]; pixelBuffer[(130 * SCREEN_W) + 314] = palette[PAL_GENTXT]; pixelBuffer[(130 * SCREEN_W) + 315] = palette[PAL_GENTXT]; } } if (editor.ui.updateSongTime) { editor.ui.updateSongTime = false; printTwoDecimalsBg(pixelBuffer, 272, 102, editor.playTime / 60, palette[PAL_GENTXT], palette[PAL_GENBKG]); printTwoDecimalsBg(pixelBuffer, 296, 102, editor.playTime % 60, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateSongName) { editor.ui.updateSongName = false; for (x = 0; x < 20; ++x) { charOutBg(pixelBuffer, 104 + (x * FONT_CHAR_W), 102, (modEntry->head.moduleTitle[x] == '\0') ? '_' : modEntry->head.moduleTitle[x], palette[PAL_GENTXT], palette[PAL_GENBKG]); } } if (editor.ui.updateCurrSampleName) { editor.ui.updateCurrSampleName = false; currSample = &modEntry->samples[editor.currSample]; for (x = 0; x < 22; ++x) { charOutBg(pixelBuffer, 104 + (x * FONT_CHAR_W), 113, (currSample->text[x] == '\0') ? '_' : currSample->text[x], palette[PAL_GENTXT], palette[PAL_GENBKG]); } } if (editor.ui.updateSongSize) { editor.ui.updateSongSize = false; // clear background textOutBg(pixelBuffer, 264, 123, " ", palette[PAL_GENBKG], palette[PAL_GENBKG]); // calculate module length modEntry->head.totalSampleSize = 0; for (i = 0; i < MOD_SAMPLES; ++i) modEntry->head.totalSampleSize += modEntry->samples[i].length; modEntry->head.patternCount = 0; for (i = 0; i < MOD_ORDERS; ++i) { if (modEntry->head.order[i] > modEntry->head.patternCount) modEntry->head.patternCount = modEntry->head.order[i]; } modEntry->head.moduleSize = 2108 + modEntry->head.totalSampleSize + (1024 * modEntry->head.patternCount); if (modEntry->head.moduleSize > 999999) { charOut(pixelBuffer, 304, 123, 'K', palette[PAL_GENTXT]); printFourDecimals(pixelBuffer, 272, 123, modEntry->head.moduleSize / 1000, palette[PAL_GENTXT]); } else { printSixDecimals(pixelBuffer, 264, 123, modEntry->head.moduleSize, palette[PAL_GENTXT]); } } if (editor.ui.updateSongTiming) { editor.ui.updateSongTiming = false; textOutBg(pixelBuffer, 288, 130, (editor.timingMode == TEMPO_MODE_CIA) ? "CIA" : "VBL", palette[PAL_GENTXT], palette[PAL_GENBKG]); } } void updateCursorPos(void) { if (!editor.ui.samplerScreenShown) setSpritePos(SPRITE_PATTERN_CURSOR, cursorPosTable[editor.cursor.pos], 188); } void updateSampler(void) { int32_t tmpSampleOffset; moduleSample_t *s; if (editor.ui.samplerScreenShown) { PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample >= 0) && (editor.currSample <= 30)) { s = &modEntry->samples[editor.currSample]; // update 9xx offset if (!editor.ui.samplerVolBoxShown && !editor.ui.samplerFiltersBoxShown && (s->length > 0)) { if ((input.mouse.x >= 3) && (input.mouse.x <= 316) && (input.mouse.y >= 138) && (input.mouse.y <= 201)) { tmpSampleOffset = (int32_t)((scr2SmpPos(input.mouse.x - 3) / 256.0f) + 0.5f); tmpSampleOffset = 0x0900 + CLAMP(tmpSampleOffset, 0x00, 0xFF); if (tmpSampleOffset != editor.ui.lastSampleOffset) { editor.ui.lastSampleOffset = tmpSampleOffset; editor.ui.update9xxPos = true; } } } // display 9xx offset if (editor.ui.update9xxPos) { editor.ui.update9xxPos = false; textOutBg(pixelBuffer, 288, 247, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); if ((s->length <= 0x0000FFFE) && (editor.ui.lastSampleOffset > 0x0900) && (editor.ui.lastSampleOffset <= 0x09FF)) printThreeHexBg(pixelBuffer, 288, 247, editor.ui.lastSampleOffset, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } if (editor.ui.updateResampleNote) { editor.ui.updateResampleNote = false; // show resample note if (editor.ui.changingSmpResample) { textOutBg(pixelBuffer, 288, 236, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { PT_ASSERT(editor.resampleNote < 36); if (editor.resampleNote < 36) { textOutBg(pixelBuffer, 288, 236, editor.accidental ? noteNames2[editor.resampleNote] : noteNames1[editor.resampleNote], palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } if (editor.ui.samplerVolBoxShown) { if (editor.ui.updateVolFromText) { editor.ui.updateVolFromText = false; printThreeDecimalsBg(pixelBuffer, 176, 157, *editor.vol1Disp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateVolToText) { editor.ui.updateVolToText = false; printThreeDecimalsBg(pixelBuffer, 176, 168, *editor.vol2Disp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } else if (editor.ui.samplerFiltersBoxShown) { if (editor.ui.updateLPText) { editor.ui.updateLPText = false; printFiveDecimalsBg(pixelBuffer, 160, 157, *editor.lpCutOffDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateHPText) { editor.ui.updateHPText = false; printFiveDecimalsBg(pixelBuffer, 160, 168, *editor.hpCutOffDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateNormFlag) { editor.ui.updateNormFlag = false; if (editor.normalizeFiltersFlag) textOutBg(pixelBuffer, 207, 179, "YES", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBg(pixelBuffer, 207, 179, "NO ", palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } } void showVolFromSlider(void) { uint8_t x; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; // clear background ptr32Src = samplerVolumeBMP + ((4 * 136) + 33); ptr32Dst = pixelBuffer + ((158 * SCREEN_W) + 105); memcpy(ptr32Dst, ptr32Src, 65 * sizeof (int32_t)); memcpy(ptr32Dst + (1 * SCREEN_W), ptr32Src, 65 * sizeof (int32_t)); memcpy(ptr32Dst + (2 * SCREEN_W), ptr32Src, 65 * sizeof (int32_t)); // render slider ptr32Dst = pixelBuffer + ((158 * SCREEN_W) + (105 + ((editor.vol1 * 3) / 10))); pixel = palette[PAL_QADSCP]; x = 5; while (x--) { *ptr32Dst = pixel; *(ptr32Dst + (1 * SCREEN_W)) = pixel; *(ptr32Dst + (2 * SCREEN_W)) = pixel; ptr32Dst++; } } void showVolToSlider(void) { uint8_t x; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; // clear background ptr32Src = samplerVolumeBMP + ((4 * 136) + 33); ptr32Dst = pixelBuffer + ((169 * SCREEN_W) + 105); memcpy(ptr32Dst, ptr32Src, 65 * sizeof (int32_t)); memcpy(ptr32Dst + (1 * SCREEN_W), ptr32Src, 65 * sizeof (int32_t)); memcpy(ptr32Dst + (2 * SCREEN_W), ptr32Src, 65 * sizeof (int32_t)); // render slider ptr32Dst = pixelBuffer + ((169 * SCREEN_W) + (105 + ((editor.vol2 * 3) / 10))); pixel = palette[PAL_QADSCP]; x = 5; while (x--) { *ptr32Dst = pixel; *(ptr32Dst + (1 * SCREEN_W)) = pixel; *(ptr32Dst + (2 * SCREEN_W)) = pixel; ptr32Dst++; } } void renderSamplerVolBox(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = samplerVolumeBMP; ptr32Dst = pixelBuffer + ((154 * SCREEN_W) + 72); y = 33; while (y--) { memcpy(ptr32Dst, ptr32Src, 136 * sizeof (int32_t)); ptr32Src += 136; ptr32Dst += SCREEN_W; } editor.ui.updateVolFromText = true; editor.ui.updateVolToText = true; showVolFromSlider(); showVolToSlider(); // hide loop sprites hideSprite(SPRITE_LOOP_PIN_LEFT); hideSprite(SPRITE_LOOP_PIN_RIGHT); } void removeSamplerVolBox(void) { displaySample(); } void renderSamplerFiltersBox(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = samplerFiltersBMP; ptr32Dst = pixelBuffer + ((154 * SCREEN_W) + 65); y = 33; while (y--) { memcpy(ptr32Dst, ptr32Src, 186 * sizeof (int32_t)); ptr32Src += 186; ptr32Dst += SCREEN_W; } textOut(pixelBuffer, 200, 157, "HZ", palette[PAL_GENTXT]); textOut(pixelBuffer, 200, 168, "HZ", palette[PAL_GENTXT]); editor.ui.updateLPText = true; editor.ui.updateHPText = true; editor.ui.updateNormFlag = true; // hide loop sprites hideSprite(SPRITE_LOOP_PIN_LEFT); hideSprite(SPRITE_LOOP_PIN_RIGHT); } void removeSamplerFiltersBox(void) { displaySample(); } void renderDiskOpScreen(void) { memcpy(pixelBuffer, diskOpScreenBMP, 99 * 320 * sizeof (int32_t)); editor.ui.updateDiskOpPathText = true; editor.ui.updatePackText = true; editor.ui.updateSaveFormatText = true; editor.ui.updateLoadMode = true; editor.ui.updateDiskOpFileList = true; } void updateDiskOp(void) { char tmpChar; uint8_t i, y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; if (editor.ui.diskOpScreenShown && !editor.ui.posEdScreenShown) { if (editor.ui.updateDiskOpFileList) { editor.ui.updateDiskOpFileList = false; diskOpRenderFileList(pixelBuffer); } if (editor.ui.updateLoadMode) { editor.ui.updateLoadMode = false; // clear backgrounds charOutBg(pixelBuffer, 147, 3, ' ', palette[PAL_GENBKG], palette[PAL_GENBKG]); charOutBg(pixelBuffer, 147, 14, ' ', palette[PAL_GENBKG], palette[PAL_GENBKG]); ptr32Src = arrowBMP; ptr32Dst = pixelBuffer + ((((11 * editor.diskop.mode) + 3) * SCREEN_W) + 148); y = 5; while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); ptr32Src += 6; ptr32Dst += SCREEN_W; } } if (editor.ui.updatePackText) { editor.ui.updatePackText = false; textOutBg(pixelBuffer, 120, 3, editor.diskop.modPackFlg ? "ON " : "OFF", palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateSaveFormatText) { editor.ui.updateSaveFormatText = false; if (editor.diskop.smpSaveType == DISKOP_SMP_WAV) textOutBg(pixelBuffer, 120, 14, "WAV", palette[PAL_GENTXT], palette[PAL_GENBKG]); else if (editor.diskop.smpSaveType == DISKOP_SMP_IFF) textOutBg(pixelBuffer, 120, 14, "IFF", palette[PAL_GENTXT], palette[PAL_GENBKG]); else if (editor.diskop.smpSaveType == DISKOP_SMP_RAW) textOutBg(pixelBuffer, 120, 14, "RAW", palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateDiskOpPathText) { editor.ui.updateDiskOpPathText = false; // print disk op. path for (i = 0; i < 26; ++i) { tmpChar = editor.currPath[editor.textofs.diskOpPath + i]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; // was illegal character charOutBg(pixelBuffer, 24 + (i * FONT_CHAR_W), 25, (tmpChar == '\0') ? '_' : tmpChar, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } } void updatePosEd(void) { char posEdChar; uint8_t x, y, i; int16_t posEdPosition; if (editor.ui.posEdScreenShown) { if (editor.ui.updatePosEd) { editor.ui.updatePosEd = false; if (!editor.ui.disablePosEd) { posEdPosition = modEntry->currOrder; if (posEdPosition > (modEntry->head.orderCount - 1)) posEdPosition = modEntry->head.orderCount - 1; // top five for (y = 0; y < 5; ++y) { if ((posEdPosition - (5 - y)) >= 0) { printThreeDecimalsBg(pixelBuffer, 128, 23 + (y * 6), posEdPosition - (5 - y), palette[PAL_QADSCP], palette[PAL_BACKGRD]); printTwoDecimalsBg(pixelBuffer, 160, 23 + (y * 6), modEntry->head.order[posEdPosition - (5 - y)], palette[PAL_QADSCP], palette[PAL_BACKGRD]); for (i = 0; i < 15; ++i) { posEdChar = editor.ui.pattNames[((modEntry->head.order[posEdPosition - (5 - y)] * 16) + editor.textofs.posEdPattName) + i]; if (posEdChar == '\0') posEdChar = ' '; charOutBg(pixelBuffer, 184 + (i * FONT_CHAR_W), 23 + (y * 6), posEdChar, palette[PAL_QADSCP], palette[PAL_BACKGRD]); } } else { x = FONT_CHAR_W * 22; while (x--) { pixelBuffer[((23 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((24 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((25 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((26 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((27 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; } } } // middle printThreeDecimalsBg(pixelBuffer, 128, 53, posEdPosition, palette[PAL_GENTXT], palette[PAL_GENBKG]); printTwoDecimalsBg(pixelBuffer, 160, 53, *editor.currPosEdPattDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); for (i = 0; i < 15; ++i) { posEdChar = editor.ui.pattNames[((modEntry->head.order[posEdPosition] * 16) + editor.textofs.posEdPattName) + i]; if (posEdChar == '\0') posEdChar = ' '; charOutBg(pixelBuffer, 184 + (i * FONT_CHAR_W), 53, posEdChar, palette[PAL_GENTXT], palette[PAL_GENBKG]); } // bottom six for (y = 0; y < 6; ++y) { if ((posEdPosition + y) < (modEntry->head.orderCount - 1)) { printThreeDecimalsBg(pixelBuffer, 128, 59 + (y * 6), posEdPosition + (y + 1), palette[PAL_QADSCP], palette[PAL_BACKGRD]); printTwoDecimalsBg(pixelBuffer , 160, 59 + (y * 6), modEntry->head.order[posEdPosition + (y + 1)], palette[PAL_QADSCP], palette[PAL_BACKGRD]); for (i = 0; i < 15; ++i) { posEdChar = editor.ui.pattNames[((modEntry->head.order[posEdPosition + (y + 1)] * 16) + editor.textofs.posEdPattName) + i]; if (posEdChar == '\0') posEdChar = ' '; charOutBg(pixelBuffer, 184 + (i * FONT_CHAR_W), 59 + (y * 6), posEdChar, palette[PAL_QADSCP], palette[PAL_BACKGRD]); } } else { x = FONT_CHAR_W * 22; while (x--) { pixelBuffer[((59 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((60 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((61 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((62 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; pixelBuffer[((63 + (y * 6)) * SCREEN_W) + (128 + x)] = palette[PAL_BACKGRD]; } } } // hack to fix bottom part of text edit marker in pos ed if (editor.ui.editTextFlag) { if ((editor.ui.editObject == PTB_PE_PATT) || (editor.ui.editObject == PTB_PE_PATTNAME)) renderTextEditMarker(); } // hack to fix broken pixels after editing text... pixelBuffer[(53 * SCREEN_W) + 303] = palette[PAL_GENBKG2]; pixelBuffer[(54 * SCREEN_W) + 303] = palette[PAL_GENBKG2]; pixelBuffer[(55 * SCREEN_W) + 303] = palette[PAL_GENBKG2]; pixelBuffer[(56 * SCREEN_W) + 303] = palette[PAL_GENBKG2]; pixelBuffer[(57 * SCREEN_W) + 303] = palette[PAL_GENBKG2]; } } } } void renderPosEdScreen(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = posEdBMP; ptr32Dst = pixelBuffer + 120; y = 99; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += 200; ptr32Dst += SCREEN_W; } } void renderMuteButtons(void) { uint8_t i, y; const uint32_t *ptr32Src; uint32_t *ptr32Dst, lineW; if (!editor.ui.diskOpScreenShown && !editor.ui.posEdScreenShown) { for (i = 0; i < AMIGA_VOICES; ++i) { if (editor.muted[i]) { ptr32Src = muteButtonsBMP + (i * (6 * 7)); lineW = 7; } else { ptr32Src = trackerFrameBMP + ((3 + (i * 11)) * SCREEN_W) + 310; lineW = SCREEN_W; } ptr32Dst = pixelBuffer + ((3 + (i * 11)) * SCREEN_W) + 310; y = 6; while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); *(ptr32Dst + 6) = *(ptr32Src + 6); ptr32Src += lineW; ptr32Dst += SCREEN_W; } } } } void renderClearScreen(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; editor.ui.disablePosEd = true; editor.ui.disableVisualizer = true; ptr32Src = clearDialogBMP; ptr32Dst = pixelBuffer + ((51 * SCREEN_W) + 160); y = 39; while (y--) { memcpy(ptr32Dst, ptr32Src, 104 * sizeof (int32_t)); ptr32Src += 104; ptr32Dst += SCREEN_W; } } void removeClearScreen(void) { displayMainScreen(); editor.ui.disablePosEd = false; editor.ui.disableVisualizer = false; } void updateCurrSample(void) { editor.ui.updateCurrSampleName = true; editor.ui.updateSongSize = true; if (!editor.ui.diskOpScreenShown) { editor.ui.updateCurrSampleFineTune = true; editor.ui.updateCurrSampleNum = true; editor.ui.updateCurrSampleVolume = true; editor.ui.updateCurrSampleLength = true; editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; } if (editor.ui.samplerScreenShown) redrawSample(); updateSamplePos(); recalcChordLength(); editor.sampler.tmpLoopStart = 0; editor.sampler.tmpLoopLength = 0; } void updatePatternData(void) { if (editor.ui.updatePatternData) { editor.ui.updatePatternData = false; if (!editor.ui.samplerScreenShown) redrawPattern(pixelBuffer); } } void removeTextEditMarker(void) { uint32_t *ptr32Dst, *ptr32Dst_2, pixel; if (editor.ui.editTextFlag) { ptr32Dst = pixelBuffer + ((editor.ui.lineCurY * SCREEN_W) + (editor.ui.lineCurX - 4)); ptr32Dst_2 = ptr32Dst - SCREEN_W; if ((editor.ui.editObject == PTB_PE_PATT) || (editor.ui.editObject == PTB_PE_PATTNAME)) { pixel = palette[PAL_BACKGRD]; *(ptr32Dst + 0) = pixel; *(ptr32Dst + 1) = pixel; *(ptr32Dst + 2) = pixel; *(ptr32Dst + 3) = pixel; *(ptr32Dst + 4) = pixel; *(ptr32Dst + 5) = pixel; *(ptr32Dst + 6) = pixel; pixel = palette[PAL_GENBKG2]; *(ptr32Dst_2 + 0) = pixel; *(ptr32Dst_2 + 1) = pixel; *(ptr32Dst_2 + 2) = pixel; *(ptr32Dst_2 + 3) = pixel; *(ptr32Dst_2 + 4) = pixel; *(ptr32Dst_2 + 5) = pixel; *(ptr32Dst_2 + 6) = pixel; editor.ui.updatePosEd = true; } else { pixel = palette[PAL_GENBKG]; *(ptr32Dst + 0) = pixel; *(ptr32Dst + 1) = pixel; *(ptr32Dst + 2) = pixel; *(ptr32Dst + 3) = pixel; *(ptr32Dst + 4) = pixel; *(ptr32Dst + 5) = pixel; *(ptr32Dst + 6) = pixel; *(ptr32Dst_2 + 0) = pixel; *(ptr32Dst_2 + 1) = pixel; *(ptr32Dst_2 + 2) = pixel; *(ptr32Dst_2 + 3) = pixel; *(ptr32Dst_2 + 4) = pixel; *(ptr32Dst_2 + 5) = pixel; *(ptr32Dst_2 + 6) = pixel; } } } void renderTextEditMarker(void) { uint32_t *ptr32Dst, *ptr32Dst_2, pixel; if (editor.ui.editTextFlag) { ptr32Dst = pixelBuffer + ((editor.ui.lineCurY * SCREEN_W) + (editor.ui.lineCurX - 4)); ptr32Dst_2 = ptr32Dst - SCREEN_W; pixel = palette[PAL_TEXTMARK]; *(ptr32Dst + 0) = pixel; *(ptr32Dst + 1) = pixel; *(ptr32Dst + 2) = pixel; *(ptr32Dst + 3) = pixel; *(ptr32Dst + 4) = pixel; *(ptr32Dst + 5) = pixel; *(ptr32Dst + 6) = pixel; *(ptr32Dst_2 + 0) = pixel; *(ptr32Dst_2 + 1) = pixel; *(ptr32Dst_2 + 2) = pixel; *(ptr32Dst_2 + 3) = pixel; *(ptr32Dst_2 + 4) = pixel; *(ptr32Dst_2 + 5) = pixel; *(ptr32Dst_2 + 6) = pixel; } } void updateDragBars(void) { if (editor.ui.sampleMarkingPos >= 0) samplerSamplePressed(MOUSE_BUTTON_HELD); if (editor.ui.forceTermBarDrag) terminalHandleScrollBar(MOUSE_BUTTON_HELD); if (editor.ui.forceSampleDrag) samplerBarPressed(MOUSE_BUTTON_HELD); if (editor.ui.forceSampleEdit) samplerEditSample(MOUSE_BUTTON_HELD); if (editor.ui.forceVolDrag) volBoxBarPressed(MOUSE_BUTTON_HELD); } void updateVisualizer(void) { uint8_t i, y; int32_t tmpVol; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; if (!editor.ui.diskOpScreenShown && !editor.ui.posEdScreenShown && !editor.ui.editOpScreenShown && !editor.ui.aboutScreenShown && !editor.ui.disableVisualizer && !editor.ui.askScreenShown && !editor.isWAVRendering && !editor.ui.terminalShown) { if (editor.ui.visualizerMode == VISUAL_SPECTRUM) { // spectrum analyzer for (i = 0; i < SPECTRUM_BAR_NUM; ++i) { ptr32Src = spectrumAnaBMP + (SPECTRUM_BAR_HEIGHT - 1); ptr32Dst = pixelBuffer + ((59 * SCREEN_W) + (129 + (i * (SPECTRUM_BAR_WIDTH + 2)))); pixel = palette[PAL_GENBKG]; tmpVol = editor.spectrumVolumes[i]; y = SPECTRUM_BAR_HEIGHT; while (y--) { if (y < tmpVol) pixel = *ptr32Src; *(ptr32Dst + 0) = pixel; *(ptr32Dst + 1) = pixel; *(ptr32Dst + 2) = pixel; *(ptr32Dst + 3) = pixel; *(ptr32Dst + 4) = pixel; *(ptr32Dst + 5) = pixel; --ptr32Src; ptr32Dst += SCREEN_W; } } } else { drawScopes(); } } } void renderQuadrascopeBg(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = trackerFrameBMP + (44 * SCREEN_W) + 120; ptr32Dst = pixelBuffer + (44 * SCREEN_W) + 120; y = 55; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += SCREEN_W; ptr32Dst += SCREEN_W; } // fix two pixels in the tracker GUI pixelBuffer[(99 * SCREEN_W) + 318] = palette[PAL_BORDER]; pixelBuffer[(99 * SCREEN_W) + 319] = palette[PAL_GENBKG]; } void renderSpectrumAnalyzerBg(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = spectrumVisualsBMP; ptr32Dst = pixelBuffer + (44 * SCREEN_W) + 120; y = 55; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += 200; ptr32Dst += SCREEN_W; } // fix two pixels in the tracker GUI pixelBuffer[(99 * SCREEN_W) + 318] = palette[PAL_BORDER]; pixelBuffer[(99 * SCREEN_W) + 319] = palette[PAL_GENBKG]; } void renderMonoscopeBg(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = monoScopeBMP; ptr32Dst = pixelBuffer + (44 * SCREEN_W) + 120; y = 55; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += 200; ptr32Dst += SCREEN_W; } // change two pixels in the tracker GUI pixelBuffer[(99 * SCREEN_W) + 318] = palette[PAL_GENBKG]; pixelBuffer[(99 * SCREEN_W) + 319] = palette[PAL_GENBKG2]; } void renderAboutScreen(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; if (!editor.ui.diskOpScreenShown && !editor.ui.posEdScreenShown && !editor.ui.editOpScreenShown && editor.ui.aboutScreenShown) { ptr32Src = aboutScreenBMP; ptr32Dst = pixelBuffer + (44 * SCREEN_W) + 120; y = 55; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += 200; ptr32Dst += SCREEN_W; } } } void renderEditOpMode(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; // select what character box to render switch (editor.ui.editOpScreen) { default: case 0: ptr32Src = &editOpModeCharsBMP[editor.sampleAllFlag ? EDOP_MODE_BMP_A_OFS : EDOP_MODE_BMP_S_OFS]; break; case 1: { if (editor.trackPattFlag == 0) ptr32Src = &editOpModeCharsBMP[EDOP_MODE_BMP_T_OFS]; else if (editor.trackPattFlag == 1) ptr32Src = &editOpModeCharsBMP[EDOP_MODE_BMP_P_OFS]; else ptr32Src = &editOpModeCharsBMP[EDOP_MODE_BMP_S_OFS]; } break; case 2: ptr32Src = &editOpModeCharsBMP[editor.halfClipFlag ? EDOP_MODE_BMP_C_OFS : EDOP_MODE_BMP_H_OFS]; break; case 3: ptr32Src = (editor.newOldFlag == 0) ? &editOpModeCharsBMP[EDOP_MODE_BMP_N_OFS] : &editOpModeCharsBMP[EDOP_MODE_BMP_O_OFS]; break; } // render it... ptr32Dst = pixelBuffer + (47 * SCREEN_W) + 310; y = 6; while (y--) { *(ptr32Dst + 0) = *(ptr32Src + 0); *(ptr32Dst + 1) = *(ptr32Src + 1); *(ptr32Dst + 2) = *(ptr32Src + 2); *(ptr32Dst + 3) = *(ptr32Src + 3); *(ptr32Dst + 4) = *(ptr32Src + 4); *(ptr32Dst + 5) = *(ptr32Src + 5); *(ptr32Dst + 6) = *(ptr32Src + 6); ptr32Src += 7; ptr32Dst += SCREEN_W; } } void renderEditOpScreen(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; // select which background to render switch (editor.ui.editOpScreen) { default: case 0: ptr32Src = editOpScreen1BMP; break; case 1: ptr32Src = editOpScreen2BMP; break; case 2: ptr32Src = editOpScreen3BMP; break; case 3: ptr32Src = editOpScreen4BMP; break; } // render background ptr32Dst = pixelBuffer + (44 * SCREEN_W) + 120; y = 55; while (y--) { memcpy(ptr32Dst, ptr32Src, 200 * sizeof (int32_t)); ptr32Src += 200; ptr32Dst += SCREEN_W; } renderEditOpMode(); // render content if (editor.ui.editOpScreen == 0) { textOut(pixelBuffer, 128, 47, " TRACK PATTERN ", palette[PAL_GENTXT]); } else if (editor.ui.editOpScreen == 1) { textOut(pixelBuffer, 128, 47, " RECORD SAMPLES ", palette[PAL_GENTXT]); editor.ui.updateRecordText = true; editor.ui.updateQuantizeText = true; editor.ui.updateMetro1Text = true; editor.ui.updateMetro2Text = true; editor.ui.updateFromText = true; editor.ui.updateKeysText = true; editor.ui.updateToText = true; } else if (editor.ui.editOpScreen == 2) { textOut(pixelBuffer, 128, 47, " SAMPLE EDITOR ", palette[PAL_GENTXT]); charOut(pixelBuffer, 272, 91, '%', palette[PAL_GENTXT]); // for Volume text editor.ui.updatePosText = true; editor.ui.updateModText = true; editor.ui.updateVolText = true; } else if (editor.ui.editOpScreen == 3) { textOut(pixelBuffer, 128, 47, " SAMPLE CHORD EDITOR ", palette[PAL_GENTXT]); editor.ui.updateLengthText = true; editor.ui.updateNote1Text = true; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; } } void removeTerminalScreen(void) { displayMainScreen(); // re-render middle-screen background memcpy(&pixelBuffer[99 * SCREEN_W], &trackerFrameBMP[99 * SCREEN_W], 320 * 22 * sizeof (int32_t)); if (editor.ui.samplerScreenShown) { memcpy(&pixelBuffer[(121 * SCREEN_W)], samplerScreenBMP, 320 * 134 * sizeof (int32_t)); editor.ui.updateStatusText = true; editor.ui.updateSongSize = true; editor.ui.updateSongTiming = true; editor.ui.updateResampleNote = true; editor.ui.update9xxPos = true; displaySample(); if (editor.ui.samplerVolBoxShown) renderSamplerVolBox(); else if (editor.ui.samplerFiltersBoxShown) renderSamplerFiltersBox(); } else { updateCursorPos(); } } void renderMOD2WAVDialog(void) { uint8_t y; const uint32_t *ptr32Src; uint32_t *ptr32Dst; ptr32Src = mod2wavBMP; ptr32Dst = pixelBuffer + ((27 * SCREEN_W) + 64); y = 48; while (y--) { memcpy(ptr32Dst, ptr32Src, 192 * sizeof (int32_t)); ptr32Src += 192; ptr32Dst += SCREEN_W; } } void updateMOD2WAVDialog(void) { uint8_t x, y, barLength, percent; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; if (editor.ui.updateMod2WavDialog) { editor.ui.updateMod2WavDialog = false; if (editor.isWAVRendering) { if (editor.ui.mod2WavFinished) { editor.ui.mod2WavFinished = false; resetSong(); pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); if (editor.abortMod2Wav) { displayErrorMsg("MOD2WAV ABORTED !"); terminalPrintf("MOD2WAV aborted\n"); } else { displayMsg("MOD RENDERED !"); setMsgPointer(); if (modEntry->head.moduleTitle[0] == '\0') terminalPrintf("Module \"untitled\" rendered to WAV\n"); else terminalPrintf("Module \"%s\" rendered to WAV\n", modEntry->head.moduleTitle); } editor.isWAVRendering = false; SDL_WaitThread(editor.mod2WavThread, NULL); displayMainScreen(); } else { // clear progress bar background ptr32Src = mod2wavBMP + ((15 * 192) + 6); ptr32Dst = pixelBuffer + ((42 * SCREEN_W) + 70); y = 11; while (y--) { memcpy(ptr32Dst, ptr32Src, 180 * sizeof (int32_t)); ptr32Dst += SCREEN_W; } // render progress bar percent = getSongProgressInPercentage(); if (percent > 100) percent = 100; barLength = (uint8_t)(((float)(percent) * (180.0f / 100.0f)) + 0.5f); ptr32Dst = pixelBuffer + ((42 * SCREEN_W) + 70); pixel = palette[PAL_GENBKG2]; y = 11; while (y--) { x = barLength; while (x--) *ptr32Dst++ = pixel; ptr32Dst += (SCREEN_W - barLength); } // render percentage pixel = palette[PAL_GENTXT]; if (percent > 99) printThreeDecimals(pixelBuffer, 144, 45, percent, pixel); else printTwoDecimals(pixelBuffer, 152, 45, percent, pixel); charOut(pixelBuffer, 168, 45, '%', pixel); } } } } void updateEditOp(void) { if (!editor.ui.posEdScreenShown && !editor.ui.diskOpScreenShown && editor.ui.editOpScreenShown) { if (editor.ui.editOpScreen == 1) { if (editor.ui.updateRecordText) { editor.ui.updateRecordText = false; textOutBg(pixelBuffer, 176, 58, (editor.recordMode == RECORD_PATT) ? "PATT" : "SONG", palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateQuantizeText) { editor.ui.updateQuantizeText = false; printTwoDecimalsBg(pixelBuffer, 192, 69, *editor.quantizeValueDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateMetro1Text) { editor.ui.updateMetro1Text = false; printTwoDecimalsBg(pixelBuffer, 168, 80, *editor.metroSpeedDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateMetro2Text) { editor.ui.updateMetro2Text = false; printTwoDecimalsBg(pixelBuffer, 192, 80, *editor.metroChannelDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateFromText) { editor.ui.updateFromText = false; printTwoHexBg(pixelBuffer, 264, 80, *editor.sampleFromDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateKeysText) { editor.ui.updateKeysText = false; textOutBg(pixelBuffer, 160, 91, editor.multiFlag ? "MULTI " : "SINGLE", palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateToText) { editor.ui.updateToText = false; printTwoHexBg(pixelBuffer, 264, 91, *editor.sampleToDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } else if (editor.ui.editOpScreen == 2) { if (editor.ui.updateMixText) { editor.ui.updateMixText = false; if (editor.mixFlag) { textOutBg(pixelBuffer, 128, 47, editor.mixText, palette[PAL_GENTXT], palette[PAL_GENBKG]); textOutBg(pixelBuffer, 248, 47, " ", palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { textOutBg(pixelBuffer, 128, 47, " SAMPLE EDITOR ", palette[PAL_GENTXT], palette[PAL_GENBKG]); } } if (editor.ui.updatePosText) { editor.ui.updatePosText = false; printFiveHexBg(pixelBuffer, 240, 58, *editor.samplePosDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateModText) { editor.ui.updateModText = false; printThreeDecimalsBg(pixelBuffer, 256, 69, (editor.modulateSpeed < 0) ? (0 - editor.modulateSpeed) : editor.modulateSpeed, palette[PAL_GENTXT], palette[PAL_GENBKG]); if (editor.modulateSpeed < 0) charOutBg(pixelBuffer, 248, 69, '-', palette[PAL_GENTXT], palette[PAL_GENBKG]); else charOutBg(pixelBuffer, 248, 69, ' ', palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateVolText) { editor.ui.updateVolText = false; printThreeDecimalsBg(pixelBuffer, 248, 91, *editor.sampleVolDisp, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } else if (editor.ui.editOpScreen == 3) { if (editor.ui.updateLengthText) { editor.ui.updateLengthText = false; // clear background textOutBg(pixelBuffer, 160, 91, " ", palette[PAL_GENTXT], palette[PAL_GENBKG]); charOut(pixelBuffer, 198, 91, ':', palette[PAL_GENBKG]); if ((modEntry->samples[editor.currSample].loopLength > 2) || (modEntry->samples[editor.currSample].loopStart >= 2)) { textOut(pixelBuffer, 165, 91, "LOOP", palette[PAL_GENTXT]); } else { printFiveHex(pixelBuffer, 160, 91, *editor.chordLengthDisp, palette[PAL_GENTXT]); // CHORD MAX LENGTH charOut(pixelBuffer, 198, 91, (editor.chordLengthMin) ? '.' : ':', palette[PAL_GENTXT]); // MIN/MAX FLAG } } if (editor.ui.updateNote1Text) { editor.ui.updateNote1Text = false; if (editor.note1 > 35) textOutBg(pixelBuffer, 256, 58, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBg(pixelBuffer, 256, 58, editor.accidental ? noteNames2[editor.note1] : noteNames1[editor.note1], palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateNote2Text) { editor.ui.updateNote2Text = false; if (editor.note2 > 35) textOutBg(pixelBuffer, 256, 69, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBg(pixelBuffer, 256, 69, editor.accidental ? noteNames2[editor.note2] : noteNames1[editor.note2], palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateNote3Text) { editor.ui.updateNote3Text = false; if (editor.note3 > 35) textOutBg(pixelBuffer, 256, 80, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBg(pixelBuffer, 256, 80, editor.accidental ? noteNames2[editor.note3] : noteNames1[editor.note3], palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.updateNote4Text) { editor.ui.updateNote4Text = false; if (editor.note4 > 35) textOutBg(pixelBuffer, 256, 91, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBg(pixelBuffer, 256, 91, editor.accidental ? noteNames2[editor.note4] : noteNames1[editor.note4], palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } } void displayMainScreen(void) { editor.blockMarkFlag = false; editor.ui.updateSongTime = true; editor.ui.updateSongName = true; editor.ui.updateSongSize = true; editor.ui.updateSongTiming = true; editor.ui.updateTrackerFlags = true; editor.ui.updateStatusText = true; editor.ui.updateCurrSampleName = true; if (!editor.ui.diskOpScreenShown) { editor.ui.updateCurrSampleFineTune = true; editor.ui.updateCurrSampleNum = true; editor.ui.updateCurrSampleVolume = true; editor.ui.updateCurrSampleLength = true; editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; } if (editor.ui.samplerScreenShown) { if (!editor.ui.diskOpScreenShown) memcpy(pixelBuffer, trackerFrameBMP, 320 * 121 * sizeof (int32_t)); } else { if (!editor.ui.diskOpScreenShown) memcpy(pixelBuffer, trackerFrameBMP, 320 * 255 * sizeof (int32_t)); else memcpy(&pixelBuffer[121 * SCREEN_W], &trackerFrameBMP[121 * SCREEN_W], 320 * 134 * sizeof (int32_t)); editor.ui.updateSongBPM = true; editor.ui.updateCurrPattText = true; editor.ui.updatePatternData = true; } if (editor.ui.diskOpScreenShown) { renderDiskOpScreen(); } else { editor.ui.updateSongPos = true; editor.ui.updateSongPattern = true; editor.ui.updateSongLength = true; // zeroes (can't integrate zeroes in the graphics, the palette entry is above the 2-bit range) charOut(pixelBuffer, 64, 3, '0', palette[PAL_GENTXT]); textOut(pixelBuffer, 64, 14, "00", palette[PAL_GENTXT]); if (!editor.isWAVRendering) { charOut(pixelBuffer, 64, 25, '0', palette[PAL_GENTXT]); textOut(pixelBuffer, 64, 47, "00", palette[PAL_GENTXT]); textOut(pixelBuffer, 64, 58, "00", palette[PAL_GENTXT]); } if (editor.ui.posEdScreenShown) { renderPosEdScreen(); editor.ui.updatePosEd = true; } else { if (editor.ui.editOpScreenShown) { renderEditOpScreen(); } else { if (editor.ui.aboutScreenShown) { renderAboutScreen(); } else { if (editor.ui.visualizerMode == VISUAL_QUADRASCOPE) renderQuadrascopeBg(); else if (editor.ui.visualizerMode == VISUAL_SPECTRUM ) renderSpectrumAnalyzerBg(); else renderMonoscopeBg(); } } renderMuteButtons(); } } } void handleAskNo(void) { editor.ui.pat2SmpDialogShown = false; switch (editor.ui.askScreenType) { case ASK_SAVEMOD_OVERWRITE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveModule(DONT_CHECK_IF_FILE_EXIST, GIVE_NEW_FILENAME); } break; case ASK_SAVESMP_OVERWRITE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveSample(DONT_CHECK_IF_FILE_EXIST, GIVE_NEW_FILENAME); } break; case ASK_DOWNSAMPLING: { extLoadWAVSampleCallback(DONT_DOWNSAMPLE); pointerSetPreviousMode(); setPrevStatusMessage(); } break; default: { pointerSetPreviousMode(); setPrevStatusMessage(); editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; pointerErrorMode(); } break; } removeAskDialog(); } void handleAskYes(void) { char fileName[20 + 4 + 1]; int8_t *tmpSmpBuffer, oldSample, oldRow; int32_t j, newLength, oldSamplesPerTick; uint32_t i; float tmpFloat; moduleSample_t *s; switch (editor.ui.askScreenType) { case ASK_RESTORE_SAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); redoSampleData(editor.currSample); } break; case ASK_PAT2SMP: { editor.ui.pat2SmpDialogShown = false; editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); editor.pat2SmpBuf = (int16_t *)(malloc(MAX_SAMPLE_LEN * sizeof (int16_t))); if (editor.pat2SmpBuf == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("PAT2SMP failed: out of memory!\n"); return; } oldRow = editor.songPlaying ? 0 : modEntry->currRow; oldSamplesPerTick = samplesPerTick; editor.isSMPRendering = true; // this must be set before restartSong() storeTempVariables(); restartSong(); modEntry->row = oldRow; modEntry->currRow = modEntry->row; editor.blockMarkFlag = false; pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); setStatusMessage("RENDERING...", NO_CARRY); // set temporary samplesPerTick tmpFloat = (editor.pat2SmpHQ ? 28836.0f : 22168.0f) * (125.0f / 50.0f); mixerSetSamplesPerTick((int32_t)((tmpFloat / (float)(modEntry->currBPM)) + 0.5f)); editor.pat2SmpPos = 0; editor.smpRenderingDone = false; while (!editor.smpRenderingDone) { if (intMusic() == false) editor.smpRenderingDone = true; outputAudio(NULL, samplesPerTick); } editor.isSMPRendering = false; resetSong(); // set back old row and samplesPerTick modEntry->row = oldRow; modEntry->currRow = modEntry->row; mixerSetSamplesPerTick(oldSamplesPerTick); // normalize 16-bit buffer normalize16bitSigned(editor.pat2SmpBuf, MIN(editor.pat2SmpPos, MAX_SAMPLE_LEN)); s = &modEntry->samples[editor.currSample]; // clear all of the old sample memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); // quantize to 8-bit for (i = 0; i < editor.pat2SmpPos; ++i) modEntry->sampleData[s->offset + i] = quantize16bitTo8bit(editor.pat2SmpBuf[i]); // free temp mixing buffer free(editor.pat2SmpBuf); // zero out sample text memset(s->text, 0, sizeof (s->text)); // set new sample text if (editor.pat2SmpHQ) { strcpy(s->text, "pat2smp (a-3 tune:+5)"); s->fineTune = 5; } else { strcpy(s->text, "pat2smp (f-3 tune:+1)"); s->fineTune = 1; } // new sample attributes s->length = editor.pat2SmpPos; s->volume = 64; s->loopStart = 0; s->loopLength = 2; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); displayMsg("ROWS RENDERED!"); setMsgPointer(); terminalPrintf("Pattern rendered from row %d to sample slot %02X\n", oldRow, editor.currSample + 1); editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); } break; case ASK_SAVE_ALL_SAMPLES: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; oldSample = editor.currSample; for (i = 0; i < MOD_SAMPLES; ++i) { editor.currSample = (int8_t)(i); if (modEntry->samples[i].length > 2) saveSample(DONT_CHECK_IF_FILE_EXIST, GIVE_NEW_FILENAME); } editor.currSample = oldSample; displayMsg("SAMPLES SAVED !"); terminalPrintf("Saved all samples to the current directory\n"); setMsgPointer(); } break; case ASK_MAKE_CHORD: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); mixChordSample(); } break; case ASK_BOOST_ALL_SAMPLES: // for insane minds { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); for (i = 0; i < MOD_SAMPLES; ++i) boostSample(i, true); if (editor.ui.samplerScreenShown) redrawSample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case ASK_FILTER_ALL_SAMPLES: // for insane minds { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); for (i = 0; i < MOD_SAMPLES; ++i) filterSample(i, true); if (editor.ui.samplerScreenShown) redrawSample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case ASK_UPSAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); s = &modEntry->samples[editor.currSample]; tmpSmpBuffer = (int8_t *)(malloc(s->length)); if (tmpSmpBuffer == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample upsample failed: out of memory!\n"); return; } newLength = (s->length / 2) & 0xFFFFFFFE; if (newLength < 2) return; turnOffVoices(); memcpy(tmpSmpBuffer, &modEntry->sampleData[s->offset], s->length); memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); // upsample for (j = 0; j < newLength; ++j) modEntry->sampleData[s->offset + j] = tmpSmpBuffer[j * 2]; free(tmpSmpBuffer); if ((s->loopStart + s->loopLength) < 2) { // fix beep! modEntry->sampleData[s->offset + 0] = 0; modEntry->sampleData[s->offset + 1] = 0; } s->length = newLength; s->loopStart = (s->loopStart / 2) & 0xFFFFFFFE; s->loopLength = (s->loopLength / 2) & 0xFFFFFFFE; if (s->loopLength < 2) { s->loopStart = 0; s->loopLength = 2; } fixSampleBeep(s); updateCurrSample(); editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } break; case ASK_DOWNSAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); s = &modEntry->samples[editor.currSample]; tmpSmpBuffer = (int8_t *)(malloc(s->length)); if (tmpSmpBuffer == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample downsample failed: out of memory!\n"); return; } newLength = s->length * 2; if (newLength > MAX_SAMPLE_LEN) newLength = MAX_SAMPLE_LEN; turnOffVoices(); memcpy(tmpSmpBuffer, &modEntry->sampleData[s->offset], s->length); memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); // downsample for (j = 0; j < newLength; ++j) modEntry->sampleData[s->offset + j] = tmpSmpBuffer[j / 2]; free(tmpSmpBuffer); s->length = newLength; if (s->loopLength > 2) { s->loopStart *= 2; s->loopLength *= 2; if ((s->loopStart + s->loopLength) > s->length) { s->loopStart = 0; s->loopLength = 2; } } fixSampleBeep(s); updateCurrSample(); editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } break; case ASK_KILL_SAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); turnOffVoices(); modEntry->samples[editor.currSample].fineTune = 0; modEntry->samples[editor.currSample].volume = 0; modEntry->samples[editor.currSample].length = 0; modEntry->samples[editor.currSample].loopStart = 0; modEntry->samples[editor.currSample].loopLength = 2; memset(&modEntry->samples[editor.currSample].text, 0, sizeof (modEntry->samples[editor.currSample].text)); memset(&modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN)], 0, MAX_SAMPLE_LEN); editor.samplePos = 0; updateCurrSample(); editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } break; case ASK_RESAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); samplerResample(); } break; case ASK_DOWNSAMPLING: { // for WAV sample loader editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); extLoadWAVSampleCallback(DO_DOWNSAMPLE); } break; case ASK_MOD2WAV_OVERWRITE: { memset(fileName, 0, sizeof (fileName)); if (modEntry->head.moduleTitle[0] != '\0') { for (i = 0; i < 20; ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } strcat(fileName, ".wav"); } else { strcpy(fileName, "untitled.wav"); } renderToWav(fileName, DONT_CHECK_IF_FILE_EXIST); } break; case ASK_MOD2WAV: { memset(fileName, 0, sizeof (fileName)); if (modEntry->head.moduleTitle[0] != '\0') { for (i = 0; i < 20; ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } strcat(fileName, ".wav"); } else { strcpy(fileName, "untitled.wav"); } renderToWav(fileName, CHECK_IF_FILE_EXIST); } break; case ASK_QUIT: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); editor.ui.throwExit = true; } break; case ASK_SAVE_SAMPLE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveSample(CHECK_IF_FILE_EXIST, DONT_GIVE_NEW_FILENAME); } break; case ASK_SAVESMP_OVERWRITE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveSample(DONT_CHECK_IF_FILE_EXIST, DONT_GIVE_NEW_FILENAME); } break; case ASK_SAVE_MODULE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveModule(CHECK_IF_FILE_EXIST, DONT_GIVE_NEW_FILENAME); } break; case ASK_SAVEMOD_OVERWRITE: { editor.errorMsgActive = false; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; pointerSetPreviousMode(); setPrevStatusMessage(); saveModule(DONT_CHECK_IF_FILE_EXIST, DONT_GIVE_NEW_FILENAME); } break; default: break; } removeAskDialog(); } void createGraphics(void) { uint8_t j, x, y, r8, g8, b8; int16_t r, g, b, r2, g2, b2; uint16_t i; // create pattern cursor graphics for (y = 0; y < 14; ++y) { // top two rows have a lighter color if (y < 2) { r = RGB_R(palette[PAL_PATCURSOR]); g = RGB_G(palette[PAL_PATCURSOR]); b = RGB_B(palette[PAL_PATCURSOR]); r += 0x33; g += 0x33; b += 0x33; if (r > 0xFF) r = 0xFF; if (g > 0xFF) g = 0xFF; if (b > 0xFF) b = 0xFF; r8 = r & 0x00FF; g8 = g & 0x00FF; b8 = b & 0x00FF; for (x = 0; x < 11; ++x) patternCursorBMP[(y * 11) + x] = TO_RGB(r8, g8, b8); } // sides (same color) if ((y >= 2) && y <= 12) { patternCursorBMP[(y * 11) + 0] = palette[PAL_PATCURSOR]; for (x = 1; x < 10; ++x) patternCursorBMP[(y * 11) + x] = palette[PAL_COLORKEY]; patternCursorBMP[(y * 11) + 10] = palette[PAL_PATCURSOR]; } // bottom two rows have a darker color if (y > 11) { r = RGB_R(palette[PAL_PATCURSOR]); g = RGB_G(palette[PAL_PATCURSOR]); b = RGB_B(palette[PAL_PATCURSOR]); r -= 0x33; g -= 0x33; b -= 0x33; if (r < 0x00) r = 0x00; if (g < 0x00) g = 0x00; if (b < 0x00) b = 0x00; r8 = r & 0x00FF; g8 = g & 0x00FF; b8 = b & 0x00FF; for (x = 0; x < 11; ++x) patternCursorBMP[(y * 11) + x] = TO_RGB(r8, g8, b8); } } // create spectrum analyzer bar graphics for (i = 0; i < 36; ++i) { r8 = ((analyzerColors[35 - i] & 0x0F00) >> 8) * 17; g8 = ((analyzerColors[35 - i] & 0x00F0) >> 4) * 17; b8 = ((analyzerColors[35 - i] & 0x000F) >> 0) * 17; spectrumAnaBMP[i] = TO_RGB(r8, g8, b8); } // create VU-Meter bar graphics for (i = 0; i < 48; ++i) { r = ((vuMeterColors[47 - i] & 0x0F00) >> 8) * 17; g = ((vuMeterColors[47 - i] & 0x00F0) >> 4) * 17; b = ((vuMeterColors[47 - i] & 0x000F) >> 0) * 17; // brighter pixels on the left side r2 = r + 0x33; g2 = g + 0x33; b2 = b + 0x33; if (r2 > 0xFF) r2 = 0xFF; if (g2 > 0xFF) g2 = 0xFF; if (b2 > 0xFF) b2 = 0xFF; vuMeterBMP[(i * 10) + 0] = TO_RGB(r2, g2, b2); vuMeterBMP[(i * 10) + 1] = vuMeterBMP[(i * 10) + 0]; // main pixels for (j = 2; j < 8; ++j) vuMeterBMP[(i * 10) + j] = TO_RGB(r, g, b); // darker pixels on the right side r2 = r - 0x33; g2 = g - 0x33; b2 = b - 0x33; if (r2 < 0x00) r2 = 0x00; if (g2 < 0x00) g2 = 0x00; if (b2 < 0x00) b2 = 0x00; vuMeterBMP[(i * 10) + 8] = TO_RGB(r2, g2, b2); vuMeterBMP[(i * 10) + 9] = vuMeterBMP[(i * 10) + 8]; } for (i = 0; i < 64; ++i) samplingPosBMP[i] = samplingPosBMP[i]; for (i = 0; i < 512; ++i) loopPinsBMP[i] = loopPinsBMP[i]; } void freeBMPs(void) { if (trackerFrameBMP != NULL) free(trackerFrameBMP); if (monoScopeBMP != NULL) free(monoScopeBMP); if (samplerScreenBMP != NULL) free(samplerScreenBMP); if (samplerVolumeBMP != NULL) free(samplerVolumeBMP); if (samplerFiltersBMP != NULL) free(samplerFiltersBMP); if (clearDialogBMP != NULL) free(clearDialogBMP); if (diskOpScreenBMP != NULL) free(diskOpScreenBMP); if (mod2wavBMP != NULL) free(mod2wavBMP); if (posEdBMP != NULL) free(posEdBMP); if (spectrumVisualsBMP != NULL) free(spectrumVisualsBMP); if (yesNoDialogBMP != NULL) free(yesNoDialogBMP); if (pat2SmpDialogBMP != NULL) free(pat2SmpDialogBMP); if (editOpScreen1BMP != NULL) free(editOpScreen1BMP); if (editOpScreen2BMP != NULL) free(editOpScreen2BMP); if (editOpScreen3BMP != NULL) free(editOpScreen3BMP); if (editOpScreen4BMP != NULL) free(editOpScreen4BMP); if (aboutScreenBMP != NULL) free(aboutScreenBMP); if (muteButtonsBMP != NULL) free(muteButtonsBMP); if (editOpModeCharsBMP != NULL) free(editOpModeCharsBMP); if (arrowBMP != NULL) free(arrowBMP); if (termTopBMP != NULL) free(termTopBMP); if (termScrollBarBMP != NULL) free(termScrollBarBMP); } uint32_t *unpackBMP(const uint8_t *src, uint32_t packedLen) { const uint8_t *packSrc; uint8_t *tmpBuffer, *packDst, byteIn; int16_t count; uint32_t *dst, decodedLength, i; // RLE decode decodedLength = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3]; tmpBuffer = (uint8_t *)(malloc(decodedLength + 512)); // some margin is needed, the packer is buggy if (tmpBuffer == NULL) return (NULL); packSrc = src + 4; packDst = tmpBuffer; i = packedLen - 4; while (i > 0) { byteIn = *packSrc++; if (byteIn == 0xCC) // compactor code { count = *packSrc++; byteIn = *packSrc++; while (count >= 0) { *packDst++ = byteIn; count--; } i -= 2; } else { *packDst++ = byteIn; } i--; } // 2-bit to 8-bit conversion dst = (uint32_t *)(malloc((decodedLength * 4) * sizeof (int32_t))); if (dst == NULL) { free(tmpBuffer); return (NULL); } for (i = 0; i < decodedLength; ++i) { dst[(i * 4) + 0] = palette[(tmpBuffer[i] & 0xC0) >> 6]; dst[(i * 4) + 1] = palette[(tmpBuffer[i] & 0x30) >> 4]; dst[(i * 4) + 2] = palette[(tmpBuffer[i] & 0x0C) >> 2]; dst[(i * 4) + 3] = palette[(tmpBuffer[i] & 0x03) >> 0]; } free(tmpBuffer); return (dst); } int8_t unpackBMPs(void) { uint8_t i; trackerFrameBMP = unpackBMP(trackerFramePackedBMP, sizeof (trackerFramePackedBMP)); monoScopeBMP = unpackBMP(monoScopePackedBMP, sizeof (monoScopePackedBMP)); samplerScreenBMP = unpackBMP(samplerScreenPackedBMP, sizeof (samplerScreenPackedBMP)); samplerVolumeBMP = unpackBMP(samplerVolumePackedBMP, sizeof (samplerVolumePackedBMP)); samplerFiltersBMP = unpackBMP(samplerFiltersPackedBMP, sizeof (samplerFiltersPackedBMP)); clearDialogBMP = unpackBMP(clearDialogPackedBMP, sizeof (clearDialogPackedBMP)); diskOpScreenBMP = unpackBMP(diskOpScreenPackedBMP, sizeof (diskOpScreenPackedBMP)); mod2wavBMP = unpackBMP(mod2wavPackedBMP, sizeof (mod2wavPackedBMP)); posEdBMP = unpackBMP(posEdPackedBMP, sizeof (posEdPackedBMP)); spectrumVisualsBMP = unpackBMP(spectrumVisualsPackedBMP, sizeof (spectrumVisualsPackedBMP)); yesNoDialogBMP = unpackBMP(yesNoDialogPackedBMP, sizeof (yesNoDialogPackedBMP)); pat2SmpDialogBMP = unpackBMP(pat2SmpDialogPackedBMP, sizeof (pat2SmpDialogPackedBMP)); editOpScreen1BMP = unpackBMP(editOpScreen1PackedBMP, sizeof (editOpScreen1PackedBMP)); editOpScreen2BMP = unpackBMP(editOpScreen2PackedBMP, sizeof (editOpScreen2PackedBMP)); editOpScreen3BMP = unpackBMP(editOpScreen3PackedBMP, sizeof (editOpScreen3PackedBMP)); editOpScreen4BMP = unpackBMP(editOpScreen4PackedBMP, sizeof (editOpScreen4PackedBMP)); aboutScreenBMP = unpackBMP(aboutScreenPackedBMP, sizeof (aboutScreenPackedBMP)); muteButtonsBMP = unpackBMP(muteButtonsPackedBMP, sizeof (muteButtonsPackedBMP)); editOpModeCharsBMP = unpackBMP(editOpModeCharsPackedBMP, sizeof (editOpModeCharsPackedBMP)); termTopBMP = unpackBMP(termTopPackedBMP, sizeof (termTopPackedBMP)); termScrollBarBMP = unpackBMP(termScrollBarPackedBMP, sizeof (termScrollBarPackedBMP)); arrowBMP = (uint32_t *)(malloc(30 * sizeof (int32_t))); // different format if ( (trackerFrameBMP == NULL) || (samplerScreenBMP == NULL) || (samplerVolumeBMP == NULL) || (clearDialogBMP == NULL) || (diskOpScreenBMP == NULL) || (mod2wavBMP == NULL) || (posEdBMP == NULL) || (spectrumVisualsBMP == NULL) || (yesNoDialogBMP == NULL) || (editOpScreen1BMP == NULL) || (editOpScreen2BMP == NULL) || (editOpScreen3BMP == NULL) || (editOpScreen4BMP == NULL) || (aboutScreenBMP == NULL) || (monoScopeBMP == NULL) || (muteButtonsBMP == NULL) || (editOpModeCharsBMP == NULL) || (arrowBMP == NULL) || (samplerFiltersBMP == NULL) || (termTopBMP == NULL) || (termScrollBarBMP == NULL) || (yesNoDialogBMP == NULL) ) { showErrorMsgBox("Out of memory!"); return (false); // BMPs are free'd in cleanUp() } for (i = 0; i < 30; ++i) arrowBMP[i] = palette[arrowPaletteBMP[i]]; createGraphics(); return (true); } void videoClose(void) { SDL_DestroyTexture(texture); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); free(pixelBuffer); } void setupSprites(void) { uint8_t i; memset(sprites, 0, sizeof (sprites)); sprites[SPRITE_MOUSE_POINTER].data = mousePointerBMP; sprites[SPRITE_MOUSE_POINTER].pixelType = SPRITE_TYPE_PALETTE; sprites[SPRITE_MOUSE_POINTER].colorKey = PAL_COLORKEY; sprites[SPRITE_MOUSE_POINTER].w = 16; sprites[SPRITE_MOUSE_POINTER].h = 16; sprites[SPRITE_MOUSE_POINTER].x = SCREEN_W; // initial state (hidden) sprites[SPRITE_MOUSE_POINTER].y = SCREEN_H; // initial state (hidden) hideSprite(SPRITE_MOUSE_POINTER); sprites[SPRITE_PATTERN_CURSOR].data = patternCursorBMP; sprites[SPRITE_PATTERN_CURSOR].pixelType = SPRITE_TYPE_RGB; sprites[SPRITE_PATTERN_CURSOR].colorKey = palette[PAL_COLORKEY]; sprites[SPRITE_PATTERN_CURSOR].w = 11; sprites[SPRITE_PATTERN_CURSOR].h = 14; sprites[SPRITE_PATTERN_CURSOR].x = SCREEN_W; // initial state (hidden) sprites[SPRITE_PATTERN_CURSOR].y = SCREEN_H; // initial state (hidden) hideSprite(SPRITE_PATTERN_CURSOR); sprites[SPRITE_LOOP_PIN_LEFT].data = loopPinsBMP; sprites[SPRITE_LOOP_PIN_LEFT].pixelType = SPRITE_TYPE_RGB; sprites[SPRITE_LOOP_PIN_LEFT].colorKey = palette[PAL_COLORKEY]; sprites[SPRITE_LOOP_PIN_LEFT].w = 4; sprites[SPRITE_LOOP_PIN_LEFT].h = 64; sprites[SPRITE_LOOP_PIN_LEFT].x = SCREEN_W; // initial state (hidden) sprites[SPRITE_LOOP_PIN_LEFT].y = SCREEN_H; // initial state (hidden) hideSprite(SPRITE_LOOP_PIN_LEFT); sprites[SPRITE_LOOP_PIN_RIGHT].data = loopPinsBMP + (4 * 64); sprites[SPRITE_LOOP_PIN_RIGHT].pixelType = SPRITE_TYPE_RGB; sprites[SPRITE_LOOP_PIN_RIGHT].colorKey = palette[PAL_COLORKEY]; sprites[SPRITE_LOOP_PIN_RIGHT].w = 4; sprites[SPRITE_LOOP_PIN_RIGHT].h = 64; sprites[SPRITE_LOOP_PIN_RIGHT].x = SCREEN_W; // initial state (hidden) sprites[SPRITE_LOOP_PIN_RIGHT].y = SCREEN_H; // initial state (hidden) hideSprite(SPRITE_LOOP_PIN_RIGHT); sprites[SPRITE_SAMPLING_POS_LINE].data = samplingPosBMP; sprites[SPRITE_SAMPLING_POS_LINE].pixelType = SPRITE_TYPE_RGB; sprites[SPRITE_SAMPLING_POS_LINE].colorKey = palette[PAL_COLORKEY]; sprites[SPRITE_SAMPLING_POS_LINE].w = 1; sprites[SPRITE_SAMPLING_POS_LINE].h = 64; sprites[SPRITE_SAMPLING_POS_LINE].x = SCREEN_W; // initial state (hidden) sprites[SPRITE_SAMPLING_POS_LINE].y = SCREEN_H; // initial state (hidden) hideSprite(SPRITE_SAMPLING_POS_LINE); // setup refresh buffer (used to clear sprites after each frame) for (i = 0; i < SPRITE_NUM; ++i) sprites[i].refreshBuffer = (uint32_t *)(malloc(sprites[i].w * sprites[i].h * sizeof (int32_t))); } void freeSprites(void) { uint8_t i; for (i = 0; i < SPRITE_NUM; ++i) free(sprites[i].refreshBuffer); } void setSpritePos(uint8_t sprite, uint16_t x, uint16_t y) { sprites[sprite].newX = x; sprites[sprite].newY = y; } void hideSprite(uint8_t sprite) { sprites[sprite].newX = SCREEN_W; sprites[sprite].newY = SCREEN_H; } void eraseSprites(void) { int8_t i; uint16_t x, y, sx, sy, sw, sh, dstAdd; const uint32_t *src32; uint32_t *dst32; for (i = (SPRITE_NUM - 1); i >= 0; --i) // reverse order, or else it will mess up { if ((sprites[i].y >= SCREEN_H) || (sprites[i].x >= SCREEN_W)) continue; sw = sprites[i].w; sh = sprites[i].h; sx = sprites[i].x; sy = sprites[i].y; src32 = sprites[i].refreshBuffer; if (src32 == NULL) return; dst32 = pixelBuffer + ((sy * SCREEN_W) + sx); dstAdd = SCREEN_W - sw; for (y = 0; y < sh; ++y) { if ((y + sy) >= SCREEN_H) break; for (x = 0; x < sw; ++x) { if ((x + sx) >= SCREEN_W) { x = sw - x; dst32 += x; src32 += x; break; } *dst32++ = *src32++; } dst32 += dstAdd; } } fillFromVuMetersBgBuffer(); // works differently, but let's put it here } void renderSprites(void) { uint8_t i; const uint8_t *src8; uint16_t x, y, sx, sy, sw, sh, pitch; const uint32_t *src32; uint32_t *dst32, *clr32, colorKey; renderVuMeters(); // works differently, but let's put it here for (i = 0; i < SPRITE_NUM; ++i) { sprites[i].x = sprites[i].newX; sprites[i].y = sprites[i].newY; if ((sprites[i].y >= SCREEN_H) || (sprites[i].x >= SCREEN_W)) continue; sw = sprites[i].w; sh = sprites[i].h; sx = sprites[i].x; sy = sprites[i].y; dst32 = pixelBuffer + ((sy * SCREEN_W) + sx); clr32 = sprites[i].refreshBuffer; if (clr32 == NULL) return; pitch = SCREEN_W - sw; colorKey = sprites[i].colorKey; if (sprites[i].pixelType == SPRITE_TYPE_RGB) { src32 = (uint32_t *)(sprites[i].data); if (src32 == NULL) return; for (y = 0; y < sh; ++y) { if ((y + sy) >= SCREEN_H) break; for (x = 0; x < sw; ++x) { if ((x + sx) >= SCREEN_W) { x = sw - x; clr32 += x; dst32 += x; src32 += x; break; } *clr32++ = *dst32; // fill refresh buffer if (*src32 != colorKey) *dst32 = *src32; dst32++; src32++; } dst32 += pitch; } } else { src8 = (uint8_t *)(sprites[i].data); if (src8 == NULL) return; for (y = 0; y < sh; ++y) { if ((y + sy) >= SCREEN_H) break; for (x = 0; x < sw; ++x) { if ((x + sx) >= SCREEN_W) { x = sw - x; clr32 += x; dst32 += x; src8 += x; break; } *clr32++ = *dst32; // fill refresh buffer if (*src8 != colorKey) { if (*src8 < PALETTE_NUM) *dst32 = palette[*src8]; } dst32++; src8++; } dst32 += pitch; } } } } void flipFrame(void) { SDL_UpdateTexture(texture, NULL, pixelBuffer, SCREEN_W * sizeof (int32_t)); SDL_RenderClear(renderer); SDL_RenderCopy(renderer, texture, NULL, NULL); SDL_RenderPresent(renderer); } void updateSpectrumAnalyzer(uint8_t ch, int8_t vol, int16_t period) { int16_t scaledVol, scaledNote; if ((editor.ui.visualizerMode == VISUAL_SPECTRUM) && !editor.muted[ch] && (vol > 0)) { scaledVol = (vol * 256) / 682; // 682 = (64 * 256) / 24 (64 = max sample vol) scaledNote = 743 - (period - 113); // 743 = 856 - 113 (856 = C-1 period, 113 = B-3 period) scaledNote = (scaledNote * scaledNote) / 25093; // 25093 = (743 * 743) / 22 (22 = num of spectrum bars-1) // scaledNote now ranges 0..22, no need to clamp // increment main spectrum bar editor.spectrumVolumes[scaledNote] += scaledVol; if (editor.spectrumVolumes[scaledNote] > SPECTRUM_BAR_HEIGHT) editor.spectrumVolumes[scaledNote] = SPECTRUM_BAR_HEIGHT; // increment left side of spectrum bar with half volume if (scaledNote > 0) { editor.spectrumVolumes[scaledNote - 1] += (scaledVol / 2); if (editor.spectrumVolumes[scaledNote - 1] > SPECTRUM_BAR_HEIGHT) editor.spectrumVolumes[scaledNote - 1] = SPECTRUM_BAR_HEIGHT; } // increment right side of spectrum bar with half volume if (scaledNote < (SPECTRUM_BAR_NUM - 1)) { editor.spectrumVolumes[scaledNote + 1] += (scaledVol / 2); if (editor.spectrumVolumes[scaledNote + 1] > SPECTRUM_BAR_HEIGHT) editor.spectrumVolumes[scaledNote + 1] = SPECTRUM_BAR_HEIGHT; } } } void sinkVisualizerBars(void) { uint8_t i; // decrease VU-Meters if (editor.ui.realVuMeters) { for (i = 0; i < AMIGA_VOICES; ++i) { editor.realVuMeterVolumes[i] -= 3.5f; if (editor.realVuMeterVolumes[i] < 0.0f) editor.realVuMeterVolumes[i] = 0.0f; } } else { for (i = 0; i < AMIGA_VOICES; ++i) { if (editor.vuMeterVolumes[i] > 0) editor.vuMeterVolumes[i]--; } } // decrease spectrumanalyzer bars for (i = 0; i < SPECTRUM_BAR_NUM; ++i) { if (editor.spectrumVolumes[i] > 0) editor.spectrumVolumes[i]--; } } uint32_t _50HzCallBack(uint32_t interval, void *param) { if ((editor.playMode != PLAY_MODE_PATTERN) || ((editor.currMode == MODE_RECORD) && (editor.recordMode != RECORD_PATT))) { if (++editor.ticks50Hz == 50) { editor.ticks50Hz = 0; // exactly one second has passed, let's increment the play timer if (!editor.isWAVRendering && editor.songPlaying) { if (editor.playTime < 5999) // 5999 = 99:59 editor.playTime++; } editor.ui.updateSongTime = true; } } (void)(param); // make compiler happy return (interval); } void toggleFullscreen(void) { int32_t w, h; fullscreen ^= 1; if (fullscreen) { SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); SDL_SetWindowGrab(window, SDL_TRUE); } else { SDL_SetWindowFullscreen(window, 0); SDL_SetWindowSize(window, SCREEN_W * editor.ui.videoScaleFactor, SCREEN_H * editor.ui.videoScaleFactor); SDL_SetWindowGrab(window, SDL_FALSE); SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); } SDL_GetWindowSize(window, &w, &h); SDL_WarpMouseInWindow(window, w / 2, h / 2); updateMouseScaling(); } int8_t setupVideo(void) { int32_t screenW, screenH; uint32_t rendererFlags; SDL_DisplayMode dm; #ifdef _WIN32 SDL_SysWMinfo wmInfo; #endif screenW = SCREEN_W * editor.ui.videoScaleFactor; screenH = SCREEN_H * editor.ui.videoScaleFactor; rendererFlags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE; #ifdef _WIN32 #if SDL_PATCHLEVEL >= 4 SDL_SetHint(SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4, "1"); // this is for Windows only #endif #endif #if SDL_PATCHLEVEL >= 1 SDL_SetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED, "1"); #endif #if SDL_PATCHLEVEL >= 5 SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1"); #endif vsync60HzPresent = false; if (SDL_GetDesktopDisplayMode(0, &dm) == 0) { if ((dm.refresh_rate == 59) || (dm.refresh_rate == 60)) // 59Hz is a wrong NTSC legacy value from EDID. It's 60Hz! { vsync60HzPresent = true; rendererFlags |= SDL_RENDERER_PRESENTVSYNC; } } SDL_SetWindowTitle(window, "ProTracker v2.3D"); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); window = SDL_CreateWindow("ProTracker v2.3D", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenW, screenH, SDL_WINDOW_HIDDEN); if (window == NULL) { showErrorMsgBox("Couldn't create SDL window:\n%s", SDL_GetError()); return (false); } #ifdef _WIN32 SDL_VERSION(&wmInfo.version); if (SDL_GetWindowWMInfo(window, &wmInfo) == SDL_FALSE) { showErrorMsgBox("SDL_GetWindowWMInfo() failed:\n%s", SDL_GetError()); return (false); } editor.ui.hWnd = wmInfo.info.win.window; #endif renderer = SDL_CreateRenderer(window, -1, rendererFlags); if (renderer == NULL) { if (vsync60HzPresent) { // try again without vsync flag vsync60HzPresent = false; rendererFlags &= ~SDL_RENDERER_PRESENTVSYNC; renderer = SDL_CreateRenderer(window, -1, rendererFlags); } if (renderer == NULL) { showErrorMsgBox("Couldn't create SDL renderer:\n" \ "%s\n\n" \ "Is your GPU (+ driver) too old?", SDL_GetError()); return (false); } } SDL_RenderSetLogicalSize(renderer, SCREEN_W, SCREEN_H); #if SDL_PATCHLEVEL >= 5 SDL_RenderSetIntegerScale(renderer, SDL_TRUE); #endif SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE); texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, SCREEN_W, SCREEN_H); if (texture == NULL) { showErrorMsgBox("Couldn't create a %dx%d GPU texture:\n" \ "%s\n\n" \ "Is your GPU (+ driver) too old?", SCREEN_W, SCREEN_H, SDL_GetError()); return (false); } SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_NONE); // frame buffer used by SDL (for texture) pixelBuffer = (uint32_t *)(malloc(SCREEN_W * SCREEN_H * sizeof (int32_t))); if (pixelBuffer == NULL) { showErrorMsgBox("Out of memory!"); return (false); } SDL_ShowCursor(SDL_DISABLE); updateMouseScaling(); return (true); } protracker-2.3d.r92/src/pt_mouse.h0000644000000000000000000001144313235646516015620 0ustar rootroot#ifndef __PT_MOUSE_H #define __PT_MOUSE_H #include // taken from the ptplay project and modified enum ptbuttons { PTB_DUMMY, // ALL SCREENS PTB_SONGNAME, PTB_SAMPLENAME, PTB_LOADSAMPLE, // ASK DIALOG PTB_SUREY, PTB_SUREN, // PAT2SMP ASK DIALOG PTB_PAT2SMP_HI, PTB_PAT2SMP_LO, PTB_PAT2SMP_ABORT, // POS ED. SCREEN PTB_PE_BADGE, PTB_PE_PATT, PTB_PE_PATTNAME, PTB_PE_SCROLLTOP, PTB_PE_SCROLLUP, PTB_PE_EXIT, PTB_PE_SCROLLDOWN, PTB_PE_SCROLLBOT, // EDIT OP. SCREEN PTB_EO_TITLEBAR, PTB_EO_1, PTB_EO_2, PTB_EO_3, PTB_EO_EXIT, // screen 1 PTB_EO_TRACK_NOTE_UP, PTB_EO_PATT_NOTE_UP, PTB_EO_TRACK_NOTE_DOWN, PTB_EO_PATT_NOTE_DOWN, PTB_EO_TRACK_OCTA_UP, PTB_EO_PATT_OCTA_UP, PTB_EO_TRACK_OCTA_DOWN, PTB_EO_PATT_OCTA_DOWN, // screen 2 PTB_EO_RECORD, PTB_EO_DELETE, PTB_EO_KILL, PTB_EO_QUANTIZE, PTB_EO_EXCHGE, PTB_EO_COPY, PTB_EO_METRO_1, PTB_EO_METRO_2, PTB_EO_FROM, PTB_EO_FROM_NUM, PTB_EO_FROM_UP, PTB_EO_FROM_DOWN, PTB_EO_KEYS, PTB_EO_TO, PTB_EO_TO_NUM, PTB_EO_TO_UP, PTB_EO_TO_DOWN, // screen 3 PTB_EO_MIX, PTB_EO_ECHO, PTB_EO_POS, PTB_EO_POS_NUM, PTB_EO_POS_UP, PTB_EO_POS_DOWN, PTB_EO_BOOST, PTB_EO_FILTER, PTB_EO_MOD, PTB_EO_MOD_NUM, PTB_EO_MOD_UP, PTB_EO_MOD_DOWN, PTB_EO_X_FADE, PTB_EO_BACKWD, PTB_EO_CB, PTB_EO_CHORD, PTB_EO_FU, PTB_EO_FD, PTB_EO_UPSAMP, PTB_EO_DNSAMP, PTB_EO_VOL, PTB_EO_VOL_NUM, PTB_EO_VOL_UP, PTB_EO_VOL_DOWN, // screen 4 PTB_EO_DOCHORD, PTB_EO_MAJOR, PTB_EO_MAJOR7, PTB_EO_NOTE1, PTB_EO_NOTE1_UP, PTB_EO_NOTE1_DOWN, PTB_EO_RESET, PTB_EO_MINOR, PTB_EO_MINOR7, PTB_EO_NOTE2, PTB_EO_NOTE2_UP, PTB_EO_NOTE2_DOWN, PTB_EO_UNDO, PTB_EO_SUS4, PTB_EO_MAJOR6, PTB_EO_NOTE3, PTB_EO_NOTE3_UP, PTB_EO_NOTE3_DOWN, PTB_EO_LENGTH, PTB_EO_MINOR6, PTB_EO_NOTE4, PTB_EO_NOTE4_UP, PTB_EO_NOTE4_DOWN, // DISK OP. SCREEN PTB_DO_BADGE, PTB_DO_PACKMOD, PTB_DO_MODARROW, PTB_DO_LOADMODULE, PTB_DO_SAVEMODULE, PTB_DO_SAMPLEFORMAT, PTB_DO_SAMPLEARROW, PTB_DO_LOADSAMPLE, PTB_DO_SAVESAMPLE, PTB_DO_DATAPATH, PTB_DO_PARENT, PTB_DO_REFRESH, PTB_DO_SCROLLTOP, PTB_DO_SCROLLUP, PTB_DO_EXIT, PTB_DO_SCROLLDOWN, PTB_DO_SCROLLBOT, PTB_DO_FILEAREA, // CLEAR PTB_CLEARSONG, PTB_CLEARSAMPLES, PTB_CLEARALL, PTB_CLEARCANCEL, // MAIN SCREEN PTB_QUIT, PTB_PLAY, PTB_PATTERN, PTB_EDIT, PTB_RECORD, PTB_STOP, PTB_CLEAR, PTB_EDITOP, PTB_DISKOP, PTB_MOD2WAV, PTB_POSED, PTB_PAT2SMP, PTB_SAMPLER, PTB_CHAN1, PTB_CHAN2, PTB_CHAN3, PTB_CHAN4, PTB_ABOUT, PTB_POSS, PTB_POSU, PTB_POSD, PTB_PATTERNS, PTB_PATTERNU, PTB_PATTERND, PTB_LENGTHS, PTB_LENGTHU, PTB_LENGTHD, PTB_FTUNEU, PTB_FTUNED, PTB_SAMPLES, PTB_SAMPLEU, PTB_SAMPLED, PTB_SVOLUMES, PTB_SVOLUMEU, PTB_SVOLUMED, PTB_SLENGTHS, PTB_SLENGTHU, PTB_SLENGTHD, PTB_SREPEATS, PTB_SREPEATU, PTB_SREPEATD, PTB_SREPLENS, PTB_SREPLENU, PTB_SREPLEND, PTB_TEMPOU, PTB_TEMPOD, PTB_POS, PTB_POSINS, PTB_POSDEL, PTB_VISUALS, PTB_PATTBOX, PTB_PATTDATA, // SAMPLER SCREEN PTB_SA_EXIT, PTB_SA_PLAYWAVE, PTB_SA_SHOWRANGE, PTB_SA_ZOOMOUT, PTB_SA_STOP, PTB_SA_PLAYDISPLAYED, PTB_SA_SHOWALL, PTB_SA_RANGEALL, PTB_SA_LOOP, PTB_SA_PLAYRANGE, PTB_SA_RANGECENTER, PTB_SA_RANGEBEG, PTB_SA_RANGEEND, PTB_SA_CUT, PTB_SA_COPY, PTB_SA_PASTE, PTB_SA_VOLUME, PTB_SA_TUNETONE, PTB_SA_FIXDC, PTB_SA_FILTERS, PTB_SA_RESAMPLE, PTB_SA_RESAMPLENOTE, PTB_SA_SAMPLEAREA, PTB_SA_ZOOMBARAREA, PTB_SA_VOL_FROM_NUM, PTB_SA_VOL_TO_NUM, PTB_SA_FIL_LP_CUTOFF, PTB_SA_FIL_HP_CUTOFF, // TERMINAL PTB_TERM_EXIT, PTB_TERM_CLEAR, PTB_TERM_SCROLL_UP, PTB_TERM_SCROLL_BAR, PTB_TERM_SCROLL_DOWN }; typedef struct guiButton_t { int32_t x1, y1, x2, y2, b; } guiButton_t; void updateMouseScaling(void); void mouseWheelUpHandler(void); void mouseWheelDownHandler(void); void mouseButtonUpHandler(uint8_t mouseButton); void mouseButtonDownHandler(uint8_t mouseButton); void handleMouseButtons(void); void handleSamplerFiltersBoxRepeats(void); void updateMouseCounters(void); #endif protracker-2.3d.r92/src/pt_sampler.c0000644000000000000000000022372413235646515016134 0ustar rootroot#include #include #include #include #include #include // roundf() #include "pt_header.h" #include "pt_helpers.h" #include "pt_textout.h" #include "pt_audio.h" #include "pt_palette.h" #include "pt_tables.h" #include "pt_visuals.h" #include "pt_blep.h" #include "pt_mouse.h" #include "pt_terminal.h" #include "pt_scopes.h" // rounded constant to fit in float #define M_PI_F 3.1415927f #define SAMPLE_AREA_Y_CENTER 169 #define SAMPLE_AREA_HEIGHT 64 extern uint32_t *pixelBuffer; // pt_main.c // 8-bit arithmetic shift right by 2 #if defined (__APPLE__) || defined (_WIN32) #define m68000_asr_b_2(x) ((x) >> 2) #else static inline int8_t m68000_asr_b_2(int8_t x) { if (x < 0) x = 0xC0 | ((uint8_t)(x) >> 2); // 0xC0 = 2^8 - 2^(8-2) else x >>= 2; return (x); } #endif typedef struct sampleMixer_t { int32_t length, index; float frac, delta; } sampleMixer_t; void setLoopSprites(void); void fixSampleBeep(moduleSample_t *s) { if ((s->length >= 2) && ((s->loopStart + s->loopLength) <= 2)) { modEntry->sampleData[s->offset + 0] = 0; modEntry->sampleData[s->offset + 1] = 0; } } void updateSamplePos(void) { moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample >= 0) && (editor.currSample <= 30)) { s = &modEntry->samples[editor.currSample]; if (s->length > 0) editor.samplePos = CLAMP(editor.samplePos, 0, s->length - 1); else editor.samplePos = 0; if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 2)) editor.ui.updatePosText = true; } } void fillSampleFilterUndoBuffer(void) { moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample >= 0) && (editor.currSample <= 30)) { s = &modEntry->samples[editor.currSample]; memcpy(editor.tempSample, &modEntry->sampleData[s->offset], s->length); } } static void line(uint32_t *frameBuffer, int16_t line_x1, int16_t line_x2, int16_t line_y1, int16_t line_y2) { int16_t d, x, y, ax, ay, sx, sy, dx, dy; if ((line_x1 < 0) || (line_x2 < 0) || (line_x1 >= SCREEN_W) || (line_x2 >= SCREEN_W)) return; if ((line_y1 < 0) || (line_y2 < 0) || (line_y1 >= SCREEN_H) || (line_y2 >= SCREEN_H)) return; dx = line_x2 - line_x1; ax = ABS(dx) * 2; sx = SGN(dx); dy = line_y2 - line_y1; ay = ABS(dy) * 2; sy = SGN(dy); x = line_x1; y = line_y1; if (ax > ay) { d = ay - (ax / 2); while (true) { if ((y < 0) || (x < 0) || (y >= SCREEN_H) || (x >= SCREEN_W)) break; frameBuffer[(y * SCREEN_W) + x] = palette[PAL_QADSCP]; if (x == line_x2) break; if (d >= 0) { y += sy; d -= ax; } x += sx; d += ay; } } else { d = ax - (ay / 2); while (true) { if ((y < 0) || (x < 0) || (y >= SCREEN_H) || (x >= SCREEN_W)) break; frameBuffer[(y * SCREEN_W) + x] = palette[PAL_QADSCP]; if (y == line_y2) break; if (d >= 0) { x += sx; d -= ay; } y += sy; d += ax; } } } static void setDragBar(void) { uint8_t y; uint16_t x; int32_t barLen; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; // clear drag bar background ptr32Src = samplerScreenBMP + ((85 * 320) + 4); memcpy(&pixelBuffer[(206 * SCREEN_W) + 4], ptr32Src, 312 * sizeof (int32_t)); memcpy(&pixelBuffer[(207 * SCREEN_W) + 4], ptr32Src, 312 * sizeof (int32_t)); memcpy(&pixelBuffer[(208 * SCREEN_W) + 4], ptr32Src, 312 * sizeof (int32_t)); memcpy(&pixelBuffer[(209 * SCREEN_W) + 4], ptr32Src, 312 * sizeof (int32_t)); if ((editor.sampler.samLength > 0) && (editor.sampler.samDisplay != editor.sampler.samLength)) { // update drag bar coordinates editor.sampler.dragStart = 4 + (uint16_t)(((editor.sampler.samOffset * 311) / (float)(editor.sampler.samLength)) + 0.5f); editor.sampler.dragEnd = 5 + (uint16_t)((((editor.sampler.samDisplay + editor.sampler.samOffset) * 311) / (float)(editor.sampler.samLength)) + 0.5f); if (editor.sampler.dragStart < 4) editor.sampler.dragStart = 4; else if (editor.sampler.dragStart > 315) editor.sampler.dragStart = 315; if (editor.sampler.dragEnd < 5) editor.sampler.dragEnd = 5; else if (editor.sampler.dragEnd > 316) editor.sampler.dragEnd = 316; if (editor.sampler.dragStart > (editor.sampler.dragEnd - 1)) editor.sampler.dragStart = editor.sampler.dragEnd - 1; // draw drag bar ptr32Dst = pixelBuffer + ((206 * SCREEN_W) + editor.sampler.dragStart); pixel = palette[PAL_QADSCP]; barLen = CLAMP(editor.sampler.dragEnd - editor.sampler.dragStart, 1, 312); y = 4; while (y--) { x = barLen; while (x--) *ptr32Dst++ = pixel; ptr32Dst += (SCREEN_W - barLen); } } } static int8_t getScaledSample(int32_t index) { const int8_t *ptr8; int8_t smp; if ((editor.sampler.samLength <= 0) || (index < 0) || (index > editor.sampler.samLength)) return (0); ptr8 = editor.sampler.samStart; if (ptr8 == NULL) return (0); smp = ptr8[index]; smp = m68000_asr_b_2(smp); return (smp); } int32_t smpPos2Scr(int32_t pos) // sample pos -> screen x pos { int32_t scaledPos; pos = (pos * SAMPLE_AREA_WIDTH) / editor.sampler.samDisplay; if (editor.sampler.samDisplay > 0) { scaledPos = (editor.sampler.samOffset * SAMPLE_AREA_WIDTH) / editor.sampler.samDisplay; pos -= scaledPos; } return (pos); } int32_t scr2SmpPos(int32_t x) // screen x pos -> sample pos { int32_t scaledPos; if (editor.sampler.samDisplay > 0) { scaledPos = (editor.sampler.samOffset * SAMPLE_AREA_WIDTH) / editor.sampler.samDisplay; x += scaledPos; } scaledPos = (x * editor.sampler.samDisplay) / SAMPLE_AREA_WIDTH; return (scaledPos); } static void getSampleDataPeak(int8_t *smpPtr, int32_t numBytes, int16_t *outMin, int16_t *outMax) { int8_t smp; int16_t min, max; int32_t i; min = 127; max = -128; for (i = 0; i < numBytes; ++i) { smp = smpPtr[i]; if (smp < min) min = smp; if (smp > max) max = smp; } min = m68000_asr_b_2(min); max = m68000_asr_b_2(max); *outMin = SAMPLE_AREA_Y_CENTER - min; *outMax = SAMPLE_AREA_Y_CENTER - max; } static void renderSampleData(void) { int8_t *smpPtr; int16_t y1, y2, y, x, min, max, oldMin, oldMax, numSmpsPerPixel; const uint32_t *ptr32Src; uint32_t *ptr32Dst; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; // clear sample data ptr32Src = samplerScreenBMP + (17 * 320); ptr32Dst = pixelBuffer + (138 * SCREEN_W); y = SAMPLE_VIEW_HEIGHT; while (y--) { memcpy(ptr32Dst, ptr32Src, 320 * sizeof (int32_t)); ptr32Src += 320; ptr32Dst += SCREEN_W; } // display center line if (editor.ui.dottedCenterFlag) memset(pixelBuffer + ((SAMPLE_AREA_Y_CENTER * SCREEN_W) + 3), 0x00373737, SAMPLE_AREA_WIDTH * sizeof (int32_t)); // render sample data if ((editor.sampler.samDisplay >= 0) && (editor.sampler.samDisplay <= MAX_SAMPLE_LEN)) { y1 = SAMPLE_AREA_Y_CENTER - getScaledSample(scr2SmpPos(0)); numSmpsPerPixel = editor.sampler.samDisplay / SAMPLE_AREA_WIDTH; if (numSmpsPerPixel <= 1) { // 1:1 or zoomed in for (x = 1; x < SAMPLE_AREA_WIDTH; ++x) { y2 = SAMPLE_AREA_Y_CENTER - getScaledSample(scr2SmpPos(x)); line(pixelBuffer, 3 + (x - 1), 3 + x, y1, y2); y1 = y2; } } else { // zoomed out (code borrowed from OpenMPT) oldMin = y1; oldMax = y1; smpPtr = &modEntry->sampleData[s->offset]; for (x = 0; x < SAMPLE_AREA_WIDTH; x++) { getSampleDataPeak(&smpPtr[scr2SmpPos(x)], numSmpsPerPixel, &min, &max); if (x > 0) { if (min > oldMax) line(pixelBuffer, 2 + x, 3 + x, oldMax, min); if (max < oldMin) line(pixelBuffer, 2 + x, 3 + x, oldMin, max); } line(pixelBuffer, 3 + x, 3 + x, max, min); oldMin = min; oldMax = max; } } } // render "sample display" text if (editor.sampler.samStart == editor.sampler.blankSample) printSixDecimalsBg(pixelBuffer, 264, 214, 0, palette[PAL_GENTXT], palette[PAL_GENBKG]); else printSixDecimalsBg(pixelBuffer, 264, 214, editor.sampler.samDisplay, palette[PAL_GENTXT], palette[PAL_GENBKG]); setDragBar(); setLoopSprites(); } void invertRange(void) { uint8_t y; int16_t x; int32_t rangeLen, pitch, start, end; uint32_t *ptr32Dst, pixel1, pixel2; if ((editor.markStartOfs == 0) && (editor.markEndOfs == 0)) return; // very first sample is the "no range" special case start = smpPos2Scr(editor.markStartOfs); end = smpPos2Scr(editor.markEndOfs); if ((start >= SAMPLE_AREA_WIDTH) || (end < 0)) return; // range is outside of view (passed it by scrolling) start = CLAMP(start, 0, SAMPLE_AREA_WIDTH - 1); end = CLAMP(end, 0, SAMPLE_AREA_WIDTH - 1); rangeLen = (end + 1) - start; if (rangeLen < 1) rangeLen = 1; pitch = SCREEN_W - rangeLen; pixel1 = palette[PAL_BACKGRD]; pixel2 = palette[PAL_QADSCP]; ptr32Dst = pixelBuffer + ((138 * SCREEN_W) + 3 + start); y = 64; while (y--) { x = rangeLen; while (x--) { if (*ptr32Dst == pixel1) *ptr32Dst = 0x00666666; else if (*ptr32Dst == 0x00666666) *ptr32Dst = pixel1; else if (*ptr32Dst == 0x00CCCCCC) *ptr32Dst = pixel2; else if (*ptr32Dst == pixel2) *ptr32Dst = 0x00CCCCCC; ptr32Dst++; } ptr32Dst += pitch; } } void displaySample(void) { if (editor.ui.samplerScreenShown) { renderSampleData(); if (editor.markEndOfs > 0) invertRange(); editor.ui.update9xxPos = true; } } void redrawSample(void) { moduleSample_t *s; if (editor.ui.samplerScreenShown) { PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample >= 0) && (editor.currSample <= 30)) { editor.markStartOfs = 0; editor.markEndOfs = 0; editor.sampler.samOffset = 0; s = &modEntry->samples[editor.currSample]; if (s->length > 0) { editor.sampler.samStart = &modEntry->sampleData[s->offset]; editor.sampler.samDisplay = s->length; editor.sampler.samLength = s->length; } else { // "blank sample" template editor.sampler.samStart = editor.sampler.blankSample; editor.sampler.samLength = SAMPLE_AREA_WIDTH; editor.sampler.samDisplay = SAMPLE_AREA_WIDTH; } renderSampleData(); updateSamplePos(); editor.ui.update9xxPos = true; editor.ui.lastSampleOffset = 0x900; // for quadrascope editor.sampler.samDrawStart = s->offset; editor.sampler.samDrawEnd = s->offset + s->length; } } } void highPassSample(int32_t cutOff) { int32_t i, from, to; float *sampleData, baseFreq_f, cutOff_f, in[2], out[2]; moduleSample_t *s; lossyIntegrator_t filterHi; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if (cutOff == 0) { displayErrorMsg("CUTOFF CAN'T BE 0"); return; } s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } from = 0; to = s->length; if ((editor.markEndOfs - editor.markStartOfs) > 0) { from = editor.markStartOfs; to = editor.markEndOfs; } if (to > s->length) to = s->length; sampleData = (float *)(malloc(s->length * sizeof (float))); if (sampleData == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample filtering failed: out of memory!\n"); return; } fillSampleFilterUndoBuffer(); // setup filter coefficients baseFreq_f = (float)(FILTERS_BASE_FREQ); cutOff_f = (float)(cutOff); if (cutOff_f >= (baseFreq_f / 2.0f)) { cutOff_f = baseFreq_f / 2.0f; editor.hpCutOff = (int32_t)(cutOff_f); } filterHi.coeff[0] = tanf(M_PI_F * cutOff_f / baseFreq_f); filterHi.coeff[1] = 1.0f / (1.0f + filterHi.coeff[0]); // copy over sample data to float buffer for (i = 0; i < s->length; ++i) sampleData[i] = modEntry->sampleData[s->offset + i]; // filter forwards filterHi.buffer[0] = 0.0f; if (to <= s->length) { for (i = from; i < to; ++i) { in[0] = sampleData[i]; lossyIntegratorHighPass(&filterHi, in, out); sampleData[i] = out[0]; } } // filter backwards filterHi.buffer[0] = 0.0f; if (to <= s->length) { for (i = (to - 1); i >= from; --i) { in[0] = sampleData[i]; lossyIntegratorHighPass(&filterHi, in, out); sampleData[i] = out[0]; } } if (editor.normalizeFiltersFlag) normalize8bitFloatSigned(sampleData, s->length); for (i = from; i < to; ++i) modEntry->sampleData[s->offset + i] = quantizeFloatTo8bit(sampleData[i]); free(sampleData); fixSampleBeep(s); displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } void lowPassSample(int32_t cutOff) { int32_t i, from, to; float *sampleData, baseFreq_f, cutOff_f, in[2], out[2]; moduleSample_t *s; lossyIntegrator_t filterLo; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if (cutOff == 0) { displayErrorMsg("CUTOFF CAN'T BE 0"); return; } s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } from = 0; to = s->length; if ((editor.markEndOfs - editor.markStartOfs) > 0) { from = editor.markStartOfs; to = editor.markEndOfs; } if (to > s->length) to = s->length; sampleData = (float *)(malloc(s->length * sizeof (float))); if (sampleData == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample filtering failed: out of memory!\n"); return; } fillSampleFilterUndoBuffer(); // setup filter coefficients baseFreq_f = (float)(FILTERS_BASE_FREQ); cutOff_f = (float)(cutOff); if (cutOff_f >= (baseFreq_f / 2.0f)) { cutOff_f = baseFreq_f / 2.0f; editor.lpCutOff = (int32_t)(cutOff_f); } filterLo.coeff[0] = tanf(M_PI_F * cutOff_f / baseFreq_f); filterLo.coeff[1] = 1.0f / (1.0f + filterLo.coeff[0]); // copy over sample data to float buffer for (i = 0; i < s->length; ++i) sampleData[i] = modEntry->sampleData[s->offset + i]; // filter forwards filterLo.buffer[0] = 0.0f; if (to <= s->length) { for (i = from; i < to; ++i) { in[0] = sampleData[i]; lossyIntegrator(&filterLo, in, out); sampleData[i] = out[0]; } } // filter backwards filterLo.buffer[0] = 0.0f; if (to <= s->length) { for (i = (to - 1); i >= from; --i) { in[0] = sampleData[i]; lossyIntegrator(&filterLo, in, out); sampleData[i] = out[0]; } } if (editor.normalizeFiltersFlag) normalize8bitFloatSigned(sampleData, s->length); for (i = from; i < to; ++i) modEntry->sampleData[s->offset + i] = quantizeFloatTo8bit(sampleData[i]); free(sampleData); fixSampleBeep(s); displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } void redoSampleData(int8_t sample) { moduleSample_t *s; PT_ASSERT((sample >= 0) && (sample <= 30)); if ((sample < 0) || (sample > 30)) return; s = &modEntry->samples[sample]; turnOffVoices(); memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); if ((editor.smpRedoBuffer[sample] != NULL) && (editor.smpRedoLengths[sample] > 0)) memcpy(&modEntry->sampleData[s->offset], editor.smpRedoBuffer[sample], editor.smpRedoLengths[sample]); s->fineTune = editor.smpRedoFinetunes[sample]; s->volume = editor.smpRedoVolumes[sample]; s->length = editor.smpRedoLengths[sample]; s->loopStart = editor.smpRedoLoopStarts[sample]; s->loopLength = (editor.smpRedoLoopLengths[sample] < 2) ? 2 : editor.smpRedoLoopLengths[sample]; displayMsg("SAMPLE RESTORED !"); terminalPrintf("Sample %02x was restored\n", sample + 1); editor.samplePos = 0; updateCurrSample(); // this routine can be called while the sampler toolboxes are open, so redraw them if (editor.ui.samplerScreenShown) { if (editor.ui.samplerVolBoxShown) renderSamplerVolBox(); else if (editor.ui.samplerFiltersBoxShown) renderSamplerFiltersBox(); } } void fillSampleRedoBuffer(int8_t sample) { moduleSample_t *s; PT_ASSERT((sample >= 0) && (sample <= 30)); if ((sample < 0) || (sample > 30)) return; s = &modEntry->samples[sample]; if (editor.smpRedoBuffer[sample] != NULL) { free(editor.smpRedoBuffer[sample]); editor.smpRedoBuffer[sample] = NULL; } editor.smpRedoFinetunes[sample] = s->fineTune; editor.smpRedoVolumes[sample] = s->volume; editor.smpRedoLengths[sample] = s->length; editor.smpRedoLoopStarts[sample] = s->loopStart; editor.smpRedoLoopLengths[sample] = s->loopLength; if (s->length > 0) { editor.smpRedoBuffer[sample] = (int8_t *)(malloc(s->length)); if (editor.smpRedoBuffer[sample] != NULL) memcpy(editor.smpRedoBuffer[sample], &modEntry->sampleData[s->offset], s->length); } } int8_t allocSamplerVars(void) { editor.sampler.copyBuf = (int8_t *)(malloc(MAX_SAMPLE_LEN)); if (editor.sampler.copyBuf == NULL) return (false); editor.sampler.blankSample = (int8_t *)(calloc(MAX_SAMPLE_LEN, 1)); if (editor.sampler.blankSample == NULL) return (false); return (true); } void deAllocSamplerVars(void) { uint8_t i; if (editor.sampler.copyBuf != NULL) { free(editor.sampler.copyBuf); editor.sampler.copyBuf = NULL; } if (editor.sampler.blankSample != NULL) { free(editor.sampler.blankSample); editor.sampler.blankSample = NULL; } for (i = 0; i < MOD_SAMPLES; ++i) { if (editor.smpRedoBuffer[i] != NULL) { free(editor.smpRedoBuffer[i]); editor.smpRedoBuffer[i] = NULL; } } } void samplerRemoveDcOffset(void) { int8_t *smpDat; int32_t i, from, to, offset; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } smpDat = &modEntry->sampleData[s->offset]; from = 0; to = s->length; if ((editor.markEndOfs - editor.markStartOfs) > 0) { from = editor.markStartOfs; to = editor.markEndOfs; } if (to > s->length) to = s->length; // calculate offset value offset = 0; for (i = from; i < to; ++i) offset += smpDat[i]; if (to <= 0) return; offset /= to; // remove DC offset for (i = from; i < to; ++i) smpDat[i] = (int8_t)(CLAMP(smpDat[i] - offset, -128, 127)); fixSampleBeep(s); displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } void mixChordSample(void) { char smpText[22 + 1]; int8_t *smpData, sameNotes, smpVolume, smpLoopFlag; uint8_t smpFinetune; int32_t i, j, readFrac_trunc, mixPos2, smpLength, smpLoopStart, smpLoopEnd; float *mixerData, smp1_f, smp2_f, smp_f; sampleMixer_t mixCh[4]; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); return; } if (modEntry->samples[editor.currSample].length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } // check if all notes are the same (illegal) sameNotes = true; if ((editor.note2 != 36) && (editor.note2 != editor.note1)) sameNotes = false; else editor.note2 = 36; if ((editor.note3 != 36) && (editor.note3 != editor.note1)) sameNotes = false; else editor.note3 = 36; if ((editor.note4 != 36) && (editor.note4 != editor.note1)) sameNotes = false; else editor.note4 = 36; if (sameNotes) { displayErrorMsg("ONLY ONE NOTE!"); return; } // sort the notes for (i = 0; i < 3; ++i) { if (editor.note2 == 36) { editor.note2 = editor.note3; editor.note3 = editor.note4; editor.note4 = 36; } } for (i = 0; i < 3; ++i) { if (editor.note3 == 36) { editor.note3 = editor.note4; editor.note4 = 36; } } // remove eventual note duplicates if (editor.note4 == editor.note3) editor.note4 = 36; if (editor.note4 == editor.note2) editor.note4 = 36; if (editor.note3 == editor.note2) editor.note3 = 36; if ((editor.tuningNote > 35) || (modEntry->samples[editor.currSample].fineTune > 15)) { displayErrorMsg("MIX ERROR !"); terminalPrintf("Sample chord making failed: overflown variables!\n"); return; } editor.ui.updateNote1Text = true; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; // setup some variables turnOffVoices(); smpLength = modEntry->samples[editor.currSample].length; smpLoopStart = modEntry->samples[editor.currSample].loopStart; smpLoopEnd = smpLoopStart + modEntry->samples[editor.currSample].loopLength; smpLoopFlag = (modEntry->samples[editor.currSample].loopLength > 2) || (modEntry->samples[editor.currSample].loopStart >= 2); smpData = &modEntry->sampleData[modEntry->samples[editor.currSample].offset]; if (editor.newOldFlag == 0) { // find a free sample slot for the new sample for (i = 0; i < MOD_SAMPLES; ++i) { if (modEntry->samples[i].length == 0) break; } if (i == MOD_SAMPLES) { displayErrorMsg("NO EMPTY SAMPLE!"); return; } smpFinetune = modEntry->samples[editor.currSample].fineTune; smpVolume = modEntry->samples[editor.currSample].volume; memcpy(smpText, modEntry->samples[editor.currSample].text, sizeof (smpText)); s = &modEntry->samples[i]; s->fineTune = smpFinetune; s->volume = smpVolume; memcpy(s->text, smpText, sizeof (smpText)); editor.currSample = (int8_t)(i); } else { // overwrite current sample s = &modEntry->samples[editor.currSample]; } mixerData = (float *)(calloc(MAX_SAMPLE_LEN, sizeof (float))); if (mixerData == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample chord making failed: out of memory!\n"); return; } s->length = smpLoopFlag ? MAX_SAMPLE_LEN : editor.chordLength; // if (old) sample loops, make longest possible sample for easier loop adjustment s->loopLength = 2; s->loopStart = 0; s->text[21] = '!'; // chord sample indicator s->text[22] = '\0'; memset(mixCh, 0, sizeof (mixCh)); // setup mixing lengths and deltas if (editor.note1 < 36) { mixCh[0].delta = periodTable[editor.tuningNote] / (float)(periodTable[(37 * s->fineTune) + editor.note1]); mixCh[0].length = (smpLength * periodTable[(37 * s->fineTune) + editor.note1]) / periodTable[editor.tuningNote]; } if (editor.note2 < 36) { mixCh[1].delta = periodTable[editor.tuningNote] / (float)(periodTable[(37 * s->fineTune) + editor.note2]); mixCh[1].length = (smpLength * periodTable[(37 * s->fineTune) + editor.note2]) / periodTable[editor.tuningNote]; } if (editor.note3 < 36) { mixCh[2].delta = periodTable[editor.tuningNote] / (float)(periodTable[(37 * s->fineTune) + editor.note3]); mixCh[2].length = (smpLength * periodTable[(37 * s->fineTune) + editor.note3]) / periodTable[editor.tuningNote]; } if (editor.note4 < 36) { mixCh[3].delta = periodTable[editor.tuningNote] / (float)(periodTable[(37 * s->fineTune) + editor.note4]); mixCh[3].length = (smpLength * periodTable[(37 * s->fineTune) + editor.note4]) / periodTable[editor.tuningNote]; } // start mixing for (i = 0; i < 4; ++i) // four maximum channels (notes) { if (mixCh[i].length > 0) // mix active channels only { for (j = 0; j < MAX_SAMPLE_LEN; ++j) // don't mix more than we can handle in a sample slot { // lookup next (future) sample (for linear interpolation) mixPos2 = mixCh[i].index + 1; if (smpLoopFlag) // and wrap if needed { if (mixPos2 >= smpLoopEnd) mixPos2 = smpLoopStart; } else { if (mixPos2 >= smpLength) mixPos2 = 0; } smp1_f = smpData[mixCh[i].index] / 128.0f; smp2_f = smpData[mixPos2 ] / 128.0f; smp_f = LERP(smp1_f, smp2_f, mixCh[i].frac); mixerData[j] += smp_f; mixCh[i].frac += mixCh[i].delta; if (mixCh[i].frac >= 1.0f) { readFrac_trunc = (int32_t)(mixCh[i].frac); mixCh[i].index += readFrac_trunc; mixCh[i].frac -= readFrac_trunc; if (smpLoopFlag) { while (mixCh[i].index >= smpLoopEnd) mixCh[i].index = smpLoopStart + (mixCh[i].index - smpLoopEnd); } else if (mixCh[i].index >= smpLength) { break; // we're done mixing this channel } } } } } // normalize gain and scale back to 8-bit normalize8bitFloatSigned(mixerData, s->length); memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); for (i = 0; i < s->length; ++i) modEntry->sampleData[s->offset + i] = quantizeFloatTo8bit(mixerData[i]); // we're done. free(mixerData); editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); } void samplerResample(void) { int8_t *oldSampleData, *newSampleData; int16_t refPeriod, newPeriod; int32_t readFrac_trunc, readPhase, readLength, writePhase, writeLength; float readDelta, readFrac, smp1_f, smp2_f, smd_f; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } if ((editor.tuningNote > 35) || (editor.resampleNote > 35) || (s->fineTune > 15)) { displayErrorMsg("RESAMPLE ERROR!"); terminalPrintf("Sample resampling failed: overflown variables!\n"); return; } // allocate memory for our temp sample data oldSampleData = (int8_t *)(malloc(s->length)); if (oldSampleData == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample resampling failed: out of memory!\n"); return; } // setup resampling variables newSampleData = &modEntry->sampleData[s->offset]; refPeriod = periodTable[editor.tuningNote]; newPeriod = periodTable[(37 * s->fineTune) + editor.resampleNote]; PT_ASSERT(refPeriod >= 0); readLength = s->length; writeLength = (readLength * newPeriod) / refPeriod; if (writeLength <= 0) { free(oldSampleData); displayErrorMsg("RESAMPLE ERROR !"); terminalPrintf("Sample resampling failed: new sample length == 0!\n"); return; } readDelta = readLength / (float)(writeLength); readFrac = 0.0f; writeLength = writeLength & 0xFFFFFFFE; if (writeLength > MAX_SAMPLE_LEN) writeLength = MAX_SAMPLE_LEN; // kill mixer voices and copy old sample data into temp buffer turnOffVoices(); memcpy(oldSampleData, newSampleData, readLength); // resample! readPhase = 0; writePhase = 0; while (writePhase < writeLength) { smp1_f = oldSampleData[readPhase]; smp2_f = oldSampleData[(readPhase + 1) % readLength]; smd_f = LERP(smp1_f, smp2_f, readFrac); smd_f = roundf(smd_f); smd_f = CLAMP(smd_f, -128.0f, 127.0f); newSampleData[writePhase++] = (int8_t)(smd_f); readFrac += readDelta; if (readFrac >= 1.0f) { readFrac_trunc = (int32_t)(readFrac); readPhase += readFrac_trunc; readFrac -= readFrac_trunc; } } free(oldSampleData); // wipe non-used data in new sample if (writeLength < MAX_SAMPLE_LEN) memset(&newSampleData[writePhase], 0, MAX_SAMPLE_LEN - writeLength); // update sample attributes s->length = writeLength; s->fineTune = 0; // scale loop points (and deactivate if overflowing) PT_ASSERT(readDelta > 0.0f); if ((s->loopStart + s->loopLength) > 2) { s->loopStart = (int32_t)((s->loopStart / (float)(readDelta)) + 0.5f) & 0xFFFFFFFE; s->loopLength = (int32_t)((s->loopLength / (float)(readDelta)) + 0.5f) & 0xFFFFFFFE; if ((s->loopStart + s->loopLength) > s->length) { s->loopStart = 0; s->loopLength = 2; } } fixSampleBeep(s); updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); } void doMix(void) { int8_t *fromPtr1, *fromPtr2, *mixPtr; uint8_t smpFrom1, smpFrom2, smpTo; int16_t tmpSmp; int32_t i, mixLength; float smp_f; moduleSample_t *s1, *s2, *s3; smpFrom1 = hexToInteger2(&editor.mixText[4]); smpFrom2 = hexToInteger2(&editor.mixText[7]); smpTo = hexToInteger2(&editor.mixText[13]); if ((smpFrom1 == 0) || (smpFrom1 > 0x1F) || (smpFrom2 == 0) || (smpFrom2 > 0x1F) || (smpTo == 0) || (smpTo > 0x1F)) { displayErrorMsg("NOT RANGE 01-1F !"); return; } s1 = &modEntry->samples[--smpFrom1]; s2 = &modEntry->samples[--smpFrom2]; s3 = &modEntry->samples[--smpTo]; if ((s1->length == 0) || (s2->length == 0)) { displayErrorMsg("EMPTY SAMPLES !!!"); return; } if (s1->length > s2->length) { fromPtr1 = &modEntry->sampleData[s1->offset]; fromPtr2 = &modEntry->sampleData[s2->offset]; mixLength = s1->length; } else { fromPtr1 = &modEntry->sampleData[s2->offset]; fromPtr2 = &modEntry->sampleData[s1->offset]; mixLength = s2->length; } mixPtr = (int8_t *)(calloc(mixLength, 1)); if (mixPtr == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample mixing failed: out of memory!\n"); return; } turnOffVoices(); if (mixLength <= MAX_SAMPLE_LEN) { for (i = 0; i < mixLength; ++i) { tmpSmp = (i < s2->length) ? (fromPtr1[i] + fromPtr2[i]) : fromPtr1[i]; if (editor.halfClipFlag == 0) { smp_f = roundf(tmpSmp / 2.0f); mixPtr[i] = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); } else { mixPtr[i] = (int8_t)(CLAMP(tmpSmp, -128, 127)); } } memset(&modEntry->sampleData[s3->offset], 0, MAX_SAMPLE_LEN); memcpy(&modEntry->sampleData[s3->offset], mixPtr, mixLength); } free(mixPtr); s3->length = mixLength; s3->volume = 64; s3->fineTune = 0; s3->loopStart = 0; s3->loopLength = 2; editor.currSample = smpTo; editor.samplePos = 0; fixSampleBeep(s3); updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); } // this is actually treble increase void boostSample(int8_t sample, int8_t ignoreMark) { int8_t *smpDat; int16_t tmp16_1, tmp16_2, tmp16_3; int32_t i, from, to; float smp_f; moduleSample_t *s; PT_ASSERT((sample >= 0) && (sample <= 30)); if ((sample < 0) || (sample > 30)) return; s = &modEntry->samples[sample]; if (s->length == 0) return; // don't display warning/show warning pointer, it is done elsewhere smpDat = &modEntry->sampleData[s->offset]; from = 0; to = s->length; if (!ignoreMark) { if ((editor.markEndOfs - editor.markStartOfs) > 0) { from = editor.markStartOfs; to = editor.markEndOfs; if (to > s->length) to = s->length; } } tmp16_3 = 0; for (i = from; i < to; ++i) { tmp16_1 = smpDat[i]; tmp16_2 = tmp16_1; tmp16_1 -= tmp16_3; tmp16_3 = tmp16_2; smp_f = roundf(tmp16_1 / 4.0f); tmp16_2 += (int16_t)(CLAMP(smp_f, -128.0f, 127.0f)); smpDat[i] = (int8_t)(CLAMP(tmp16_2, -128, 127)); } fixSampleBeep(s); // don't redraw sample here, it is done elsewhere } // this is actually treble decrease void filterSample(int8_t sample, int8_t ignoreMark) { int8_t *smpDat; int32_t i, from, to; float smp_f; moduleSample_t *s; PT_ASSERT((sample >= 0) && (sample <= 30)); if ((sample < 0) || (sample > 30)) return; s = &modEntry->samples[sample]; if (s->length == 0) return; // don't display warning/show warning pointer, it is done elsewhere smpDat = &modEntry->sampleData[s->offset]; from = 0; to = s->length; if (!ignoreMark) { if ((editor.markEndOfs - editor.markStartOfs) > 0) { from = editor.markStartOfs; to = editor.markEndOfs; if (to > s->length) to = s->length; } } if (to < 1) return; to--; for (i = from; i < to; ++i) { smp_f = (smpDat[i + 0] + smpDat[i + 1]) / 2.0f; smp_f = roundf(smp_f); smp_f = CLAMP(smp_f, -128.0f, 127.0f); smpDat[i] = (int8_t)(smp_f); } fixSampleBeep(s); // don't redraw sample here, it is done elsewhere } void toggleTuningTone(void) { if ((editor.currMode == MODE_PLAY) || (editor.currMode == MODE_RECORD)) return; editor.tuningFlag ^= 1; if (editor.tuningFlag) { // turn tuning tone on editor.tuningChan = (editor.cursor.channel + 1) & 3; if (editor.tuningNote > 35) editor.tuningNote = 35; paulaSetPeriod(editor.tuningChan, periodTable[editor.tuningNote]); paulaSetVolume(editor.tuningChan, 64); paulaSetData(editor.tuningChan, tuneToneData); paulaSetLength(editor.tuningChan, sizeof (tuneToneData)); paulaRestartDMA(editor.tuningChan); // force loop flag on for scopes scope[editor.tuningChan].newLoopFlag = scope[editor.tuningChan].loopFlag = true; } else { // turn tuning tone off mixerKillVoice(editor.tuningChan); } } void sampleMarkerToBeg(void) { invertRange(); if (input.keyb.shiftKeyDown && (editor.markEndOfs > 0)) { editor.markStartOfs = editor.sampler.samOffset; } else { editor.markStartOfs = editor.sampler.samOffset; editor.markEndOfs = editor.markStartOfs; } invertRange(); editor.samplePos = editor.markEndOfs; updateSamplePos(); } void sampleMarkerToCenter(void) { int32_t middlePos; middlePos = editor.sampler.samOffset + (int32_t)((editor.sampler.samDisplay / 2.0f) + 0.5f); invertRange(); if (input.keyb.shiftKeyDown && (editor.markEndOfs > 0)) { if (editor.markStartOfs < middlePos) editor.markEndOfs = middlePos; else if (editor.markEndOfs > middlePos) editor.markStartOfs = middlePos; } else { editor.markStartOfs = middlePos; editor.markEndOfs = editor.markStartOfs; } invertRange(); editor.samplePos = editor.markEndOfs; updateSamplePos(); } void sampleMarkerToEnd(void) { int32_t endPos; endPos = editor.sampler.samOffset + editor.sampler.samDisplay; invertRange(); if (input.keyb.shiftKeyDown && (editor.markEndOfs > 0)) { editor.markEndOfs = endPos; } else { editor.markStartOfs = endPos - (editor.sampler.samDisplay / SAMPLE_AREA_WIDTH); editor.markEndOfs = editor.markStartOfs; } invertRange(); editor.samplePos = editor.markEndOfs; updateSamplePos(); } void samplerSamCopy(void) { moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if (editor.markEndOfs == 0) { displayErrorMsg("NO RANGE SELECTED"); return; } if ((editor.markEndOfs - editor.markStartOfs) == 0) { displayErrorMsg("SET LARGER RANGE"); return; } s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } editor.sampler.copyBufSize = editor.markEndOfs - editor.markStartOfs; if ((int32_t)(editor.markStartOfs + editor.sampler.copyBufSize) > MAX_SAMPLE_LEN) { displayErrorMsg("COPY ERROR !"); terminalPrintf("Sample copy failed: overflown variables!\n"); return; } memcpy(editor.sampler.copyBuf, &modEntry->sampleData[s->offset + editor.markStartOfs], editor.sampler.copyBufSize); invertRange(); invertRange(); } void samplerSamDelete(uint8_t cut) { int8_t *tmpBuf; int32_t sampleLength, copyLength, markEnd, markStart; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if (editor.markEndOfs == 0) { displayErrorMsg("NO RANGE SELECTED"); return; } if ((editor.markEndOfs - editor.markStartOfs) == 0) { displayErrorMsg("SET LARGER RANGE"); return; } if (cut) samplerSamCopy(); s = &modEntry->samples[editor.currSample]; sampleLength = s->length; if (sampleLength == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } turnOffVoices(); // if whole sample is marked, nuke it if ((editor.markEndOfs - editor.markStartOfs) >= sampleLength) { memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); invertRange(); invertRange(); editor.markStartOfs = 0; editor.markEndOfs = 0; invertRange(); editor.sampler.samStart = editor.sampler.blankSample; editor.sampler.samDisplay = SAMPLE_AREA_WIDTH; editor.sampler.samLength = SAMPLE_AREA_WIDTH; s->length = 0; s->loopStart = 0; s->loopLength = 2; s->volume = 0; s->fineTune = 0; editor.samplePos = 0; updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); return; } markEnd = (editor.markEndOfs > sampleLength) ? sampleLength : editor.markEndOfs; markStart = editor.markStartOfs; copyLength = (editor.markStartOfs + sampleLength) - markEnd; if ((copyLength < 2) || (copyLength > MAX_SAMPLE_LEN)) { displayErrorMsg("SAMPLE CUT FAIL !"); terminalPrintf("Sample data cutting failed: length error!\n"); return; } tmpBuf = (int8_t *)(malloc(copyLength)); if (tmpBuf == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample data cutting failed: out of memory!\n"); return; } // copy start part memcpy(tmpBuf, &modEntry->sampleData[s->offset], editor.markStartOfs); // copy end part if ((sampleLength - markEnd) > 0) memcpy(&tmpBuf[editor.markStartOfs], &modEntry->sampleData[s->offset + markEnd], sampleLength - markEnd); // nuke sample data and copy over the result memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); memcpy(&modEntry->sampleData[s->offset], tmpBuf, copyLength); free(tmpBuf); editor.sampler.samLength = copyLength; if ((editor.sampler.samOffset + editor.sampler.samDisplay) >= editor.sampler.samLength) { if (editor.sampler.samDisplay < editor.sampler.samLength) { if ((editor.sampler.samLength - editor.sampler.samDisplay) < 0) { editor.sampler.samOffset = 0; editor.sampler.samDisplay = editor.sampler.samLength; } else { editor.sampler.samOffset = editor.sampler.samLength - editor.sampler.samDisplay; } } else { editor.sampler.samOffset = 0; editor.sampler.samDisplay = editor.sampler.samLength; } } if (s->loopLength > 2) // loop enabled? { if (markEnd > s->loopStart) { if (markStart < (s->loopStart + s->loopLength)) { // we cut data inside the loop, ïncrease loop length s->loopLength -= ((markEnd - markStart) & 0xFFFFFFFE); if (s->loopLength < 2) s->loopLength = 2; } // we cut data after the loop, don't modify loop points } else { // we cut data before the loop, adjust loop start point s->loopStart = (s->loopStart - (markEnd - editor.markStartOfs)) & 0xFFFFFFFE; if (s->loopStart < 0) { s->loopStart = 0; s->loopLength = 2; } } } s->length = copyLength & 0xFFFFFFFE; if (editor.sampler.samDisplay <= 2) { editor.sampler.samStart = editor.sampler.blankSample; editor.sampler.samLength = SAMPLE_AREA_WIDTH; editor.sampler.samDisplay = SAMPLE_AREA_WIDTH; } invertRange(); invertRange(); if (editor.sampler.samDisplay == 0) { editor.markStartOfs = 0; editor.markEndOfs = 0; } else { if (editor.markStartOfs >= s->length) editor.markStartOfs = s->length - 2; editor.markEndOfs = editor.markStartOfs; } invertRange(); editor.samplePos = editor.markStartOfs; fixSampleBeep(s); updateSamplePos(); recalcChordLength(); displaySample(); editor.ui.updateCurrSampleLength = true; editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } void samplerSamPaste(void) { int8_t *tmpBuf, wasZooming; uint32_t readPos; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if ((editor.sampler.copyBuf == NULL) || (editor.sampler.copyBufSize == 0)) { displayErrorMsg("BUFFER IS EMPTY"); return; } s = &modEntry->samples[editor.currSample]; if (s->length == 0) { invertRange(); editor.markStartOfs = 0; editor.markEndOfs = 0; invertRange(); } else if (editor.markEndOfs == 0) { displayErrorMsg("SET CURSOR POS"); return; } if ((s->length + editor.sampler.copyBufSize) > MAX_SAMPLE_LEN) { displayErrorMsg("NOT ENOUGH ROOM"); return; } tmpBuf = (int8_t *)(malloc(MAX_SAMPLE_LEN)); if (tmpBuf == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample data pasting failed: out of memory\n"); return; } readPos = 0; turnOffVoices(); wasZooming = (editor.sampler.samDisplay != editor.sampler.samLength) ? true : false; // copy start part if (editor.markStartOfs > 0) { memcpy(&tmpBuf[readPos], &modEntry->sampleData[s->offset], editor.markStartOfs); readPos += editor.markStartOfs; } // copy buffer memcpy(&tmpBuf[readPos], editor.sampler.copyBuf, editor.sampler.copyBufSize); // copy end part if (editor.markStartOfs >= 0) { readPos += editor.sampler.copyBufSize; if ((s->length - editor.markStartOfs) > 0) memcpy(&tmpBuf[readPos], &modEntry->sampleData[s->offset + editor.markStartOfs], s->length - editor.markStartOfs); } s->length = (s->length + editor.sampler.copyBufSize) & 0xFFFFFFFE; if (s->length > MAX_SAMPLE_LEN) s->length = MAX_SAMPLE_LEN; editor.sampler.samLength = s->length; if (s->loopLength > 2) // loop enabled? { if (editor.markStartOfs > s->loopStart) { if (editor.markStartOfs < (s->loopStart + s->loopLength)) { // we pasted data inside the loop, increase loop length s->loopLength += (editor.sampler.copyBufSize & 0xFFFFFFFE); if ((s->loopStart + s->loopLength) > s->length) { s->loopStart = 0; s->loopLength = 2; } } // we pasted data after the loop, don't modify loop points } else { // we pasted data before the loop, adjust loop start point s->loopStart = (s->loopStart + editor.sampler.copyBufSize) & 0xFFFFFFFE; if ((s->loopStart + s->loopLength) > s->length) { s->loopStart = 0; s->loopLength = 2; } } } memset(&modEntry->sampleData[s->offset], 0, MAX_SAMPLE_LEN); memcpy(&modEntry->sampleData[s->offset], tmpBuf, s->length); free(tmpBuf); invertRange(); //invertRange(); WTF editor.markEndOfs = editor.markStartOfs + editor.sampler.copyBufSize; invertRange(); editor.samplePos = editor.markEndOfs; fixSampleBeep(s); updateSamplePos(); recalcChordLength(); if (wasZooming) displaySample(); else redrawSample(); editor.ui.updateCurrSampleLength = true; editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } void samplerPlayWaveform(void) { uint8_t chn; int16_t tempPeriod; moduleChannel_t *ch; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; chn = editor.cursor.channel; PT_ASSERT(chn < AMIGA_VOICES); if (chn >= AMIGA_VOICES) return; s = &modEntry->samples[editor.currSample]; if (s->length == 0) { mixerKillVoice(chn); } else { if ((editor.currPlayNote > 35) || (s->fineTune > 15)) return; ch = &modEntry->channels[chn]; tempPeriod = periodTable[(37 * s->fineTune) + editor.currPlayNote]; ch->n_samplenum = editor.currSample; ch->n_volume = s->volume; ch->n_period = tempPeriod; ch->n_start = &modEntry->sampleData[s->offset]; ch->n_length = (s->loopStart > 0) ? (s->loopStart + s->loopLength) : s->length; // yes, this is correct. Do not touch ch->n_loopstart = &modEntry->sampleData[s->offset + s->loopStart]; ch->n_replen = s->loopLength; if (ch->n_length == 0) ch->n_length = 2; paulaSetVolume(chn, ch->n_volume); paulaSetPeriod(chn, ch->n_period); paulaSetData(chn, ch->n_start); paulaSetLength(chn, ch->n_length); paulaRestartDMA(chn); // these take effect after the current DMA cycle is done paulaSetData(chn, ch->n_loopstart); paulaSetLength(chn, ch->n_replen); updateSpectrumAnalyzer(chn, ch->n_volume, ch->n_period); } } void samplerPlayDisplay(void) { uint8_t chn; int16_t tempPeriod; moduleChannel_t *ch; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; chn = editor.cursor.channel; PT_ASSERT(chn < AMIGA_VOICES); if (chn >= AMIGA_VOICES) return; s = &modEntry->samples[editor.currSample]; if (s->length == 0) { mixerKillVoice(chn); } else { if ((editor.currPlayNote > 35) || (s->fineTune > 15)) return; ch = &modEntry->channels[chn]; tempPeriod = periodTable[(37 * s->fineTune) + editor.currPlayNote]; ch->n_samplenum = editor.currSample; ch->n_period = tempPeriod; ch->n_volume = s->volume; ch->n_start = &modEntry->sampleData[s->offset + editor.sampler.samOffset]; ch->n_length = editor.sampler.samDisplay; ch->n_loopstart = &modEntry->sampleData[s->offset]; ch->n_replen = 2; if (ch->n_length == 0) ch->n_length = 2; paulaSetVolume(chn, ch->n_volume); paulaSetPeriod(chn, ch->n_period); paulaSetData(chn, ch->n_start); paulaSetLength(chn, ch->n_length); paulaRestartDMA(chn); // these take effect after the current DMA cycle is done paulaSetData(chn, ch->n_loopstart); paulaSetLength(chn, ch->n_replen); updateSpectrumAnalyzer(chn, ch->n_volume, ch->n_period); } } void samplerPlayRange(void) { uint8_t chn; int16_t tempPeriod; moduleChannel_t *ch; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; chn = editor.cursor.channel; PT_ASSERT(chn < AMIGA_VOICES); if (chn >= AMIGA_VOICES) return; if (editor.markEndOfs == 0) { displayErrorMsg("NO RANGE SELECTED"); return; } if ((editor.markEndOfs - editor.markStartOfs) < 2) { displayErrorMsg("SET LARGER RANGE"); return; } s = &modEntry->samples[editor.currSample]; if (s->length == 0) { mixerKillVoice(chn); } else { if ((editor.currPlayNote > 35) || (s->fineTune > 15)) return; ch = &modEntry->channels[chn]; tempPeriod = periodTable[(37 * s->fineTune) + editor.currPlayNote]; ch->n_samplenum = editor.currSample; ch->n_period = tempPeriod; ch->n_volume = s->volume; ch->n_start = &modEntry->sampleData[s->offset + editor.markStartOfs]; ch->n_length = editor.markEndOfs - editor.markStartOfs; ch->n_loopstart = &modEntry->sampleData[s->offset]; ch->n_replen = 2; if (ch->n_length == 0) ch->n_length = 2; paulaSetVolume(chn, ch->n_volume); paulaSetPeriod(chn, ch->n_period); paulaSetData(chn, ch->n_start); paulaSetLength(chn, ch->n_length); paulaRestartDMA(chn); // these take effect after the current DMA cycle is done paulaSetData(chn, ch->n_loopstart); paulaSetLength(chn, ch->n_replen); updateSpectrumAnalyzer(chn, ch->n_volume, ch->n_period); } } void setLoopSprites(void) { moduleSample_t *s; if (!editor.ui.samplerScreenShown) { hideSprite(SPRITE_LOOP_PIN_LEFT); hideSprite(SPRITE_LOOP_PIN_RIGHT); return; } PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; s = &modEntry->samples[editor.currSample]; if ((s->loopStart + s->loopLength) > 2) { if (editor.sampler.samDisplay > 0) { editor.sampler.loopStartPos = smpPos2Scr(s->loopStart); if ((editor.sampler.loopStartPos >= 0) && (editor.sampler.loopStartPos <= SAMPLE_AREA_WIDTH)) setSpritePos(SPRITE_LOOP_PIN_LEFT, editor.sampler.loopStartPos, 138); else hideSprite(SPRITE_LOOP_PIN_LEFT); editor.sampler.loopEndPos = smpPos2Scr(s->loopStart + s->loopLength); if ((editor.sampler.loopEndPos >= 0) && (editor.sampler.loopEndPos <= SAMPLE_AREA_WIDTH)) setSpritePos(SPRITE_LOOP_PIN_RIGHT, editor.sampler.loopEndPos + 3, 138); else hideSprite(SPRITE_LOOP_PIN_RIGHT); } } else { editor.sampler.loopStartPos = 0; editor.sampler.loopEndPos = 0; hideSprite(SPRITE_LOOP_PIN_LEFT); hideSprite(SPRITE_LOOP_PIN_RIGHT); } textOutBg(pixelBuffer, 288, 225, ((s->loopStart + s->loopLength) > 2) ? "ON " : "OFF", palette[PAL_GENTXT], palette[PAL_GENBKG]); } void samplerShowAll(void) { if (editor.sampler.samDisplay == editor.sampler.samLength) return; // don't attempt to show all if already showing all! } editor.sampler.samOffset = 0; editor.sampler.samDisplay = editor.sampler.samLength; displaySample(); } static void samplerZoomIn(int32_t step, int16_t x) { int32_t tmpDisplay, tmpOffset; if ((modEntry->samples[editor.currSample].length == 0) || (editor.sampler.samDisplay <= 2)) return; if (step < 1) step = 1; tmpDisplay = editor.sampler.samDisplay - (step * 2); if (tmpDisplay < 2) tmpDisplay = 2; step += (((x - (SCREEN_W / 2)) * step) / (SCREEN_W / 2)); tmpOffset = editor.sampler.samOffset + step; if (tmpOffset < 0) tmpOffset = 0; if ((tmpOffset + tmpDisplay) > editor.sampler.samLength) tmpOffset = editor.sampler.samLength - tmpDisplay; editor.sampler.samOffset = tmpOffset; editor.sampler.samDisplay = tmpDisplay; displaySample(); } static void samplerZoomOut(int32_t step, int16_t x) { int32_t tmpDisplay, tmpOffset; if ((modEntry->samples[editor.currSample].length == 0) || (editor.sampler.samDisplay == editor.sampler.samLength)) return; if (step < 1) step = 1; tmpDisplay = editor.sampler.samDisplay + (step * 2); if (tmpDisplay > editor.sampler.samLength) { tmpOffset = 0; tmpDisplay = editor.sampler.samLength; } else { step += (((x - (SCREEN_W / 2)) * step) / (SCREEN_W / 2)); tmpOffset = editor.sampler.samOffset - step; if (tmpOffset < 0) tmpOffset = 0; if ((tmpOffset + tmpDisplay) > editor.sampler.samLength) tmpOffset = editor.sampler.samLength - tmpDisplay; } editor.sampler.samOffset = tmpOffset; editor.sampler.samDisplay = tmpDisplay; displaySample(); } void samplerZoomInMouseWheel(void) { int32_t step; float step_f; step_f = editor.sampler.samDisplay / 10.0f; step = (int32_t)(step_f + 0.5f); samplerZoomIn(step, input.mouse.x); } void samplerZoomOutMouseWheel(void) { int32_t step; float step_f; step_f = editor.sampler.samDisplay / 10.0f; step = (int32_t)(step_f + 0.5f); samplerZoomOut(step, input.mouse.x); } void samplerZoomOut2x(void) { int32_t step; float step_f; step_f = editor.sampler.samDisplay / 2.0f; step = (int32_t)(step_f + 0.5f); samplerZoomOut(step, SCREEN_W / 2); } void samplerRangeAll(void) { invertRange(); editor.markStartOfs = editor.sampler.samOffset; editor.markEndOfs = editor.sampler.samOffset + editor.sampler.samDisplay; invertRange(); } void samplerShowRange(void) { moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } if (editor.markEndOfs == 0) { displayErrorMsg("NO RANGE SELECTED"); return; } if ((editor.markEndOfs - editor.markStartOfs) < 2) { displayErrorMsg("SET LARGER RANGE"); return; } editor.sampler.samDisplay = editor.markEndOfs - editor.markStartOfs; editor.sampler.samOffset = editor.markStartOfs; if ((editor.sampler.samDisplay + editor.sampler.samOffset) > editor.sampler.samLength) editor.sampler.samOffset = editor.sampler.samLength - editor.sampler.samDisplay; samplerRangeAll(); displaySample(); } void volBoxBarPressed(int8_t mouseButtonHeld) { int32_t mouseX; if ((input.mouse.y < 0) || (input.mouse.x < 0) || (input.mouse.y >= SCREEN_H) || (input.mouse.x >= SCREEN_W)) return; if (!mouseButtonHeld) { if ((input.mouse.x >= 72) && (input.mouse.x <= 173)) { if ((input.mouse.y >= 154) && (input.mouse.y <= 174)) editor.ui.forceVolDrag = 1; if ((input.mouse.y >= 165) && (input.mouse.y <= 175)) editor.ui.forceVolDrag = 2; } } else { if (editor.sampler.lastMouseX != input.mouse.x) { editor.sampler.lastMouseX = input.mouse.x; mouseX = CLAMP(editor.sampler.lastMouseX - 107, 0, 60); if (editor.ui.forceVolDrag == 1) { editor.vol1 = (int16_t)((mouseX * 200) / 60); editor.ui.updateVolFromText = true; showVolFromSlider(); } else if (editor.ui.forceVolDrag == 2) { editor.vol2 = (int16_t)((mouseX * 200) / 60); editor.ui.updateVolToText = true; showVolToSlider(); } } } } void samplerBarPressed(int8_t mouseButtonHeld) { int32_t tmp32; if ((input.mouse.y < 0) || (input.mouse.x < 0) || (input.mouse.y >= SCREEN_H) || (input.mouse.x >= SCREEN_W)) return; if (!mouseButtonHeld) { if ((input.mouse.x >= 4) && (input.mouse.x <= 315)) { if (input.mouse.x < editor.sampler.dragStart) { tmp32 = editor.sampler.samOffset - editor.sampler.samDisplay; if (tmp32 < 0) tmp32 = 0; if (tmp32 == editor.sampler.samOffset) return; editor.sampler.samOffset = tmp32; displaySample(); return; } if (input.mouse.x > editor.sampler.dragEnd) { tmp32 = editor.sampler.samOffset + editor.sampler.samDisplay; if ((tmp32 + editor.sampler.samDisplay) <= editor.sampler.samLength) { if (tmp32 == editor.sampler.samOffset) return; editor.sampler.samOffset = tmp32; } else { tmp32 = editor.sampler.samLength - editor.sampler.samDisplay; if (tmp32 == editor.sampler.samOffset) return; editor.sampler.samOffset = tmp32; } displaySample(); return; } editor.sampler.lastSamPos = (uint16_t)(input.mouse.x); editor.sampler.saveMouseX = editor.sampler.lastSamPos - editor.sampler.dragStart; editor.ui.forceSampleDrag = true; } } if (input.mouse.x != editor.sampler.lastSamPos) { editor.sampler.lastSamPos = (uint16_t)(input.mouse.x); tmp32 = editor.sampler.lastSamPos - editor.sampler.saveMouseX - 4; if (tmp32 < 0) tmp32 = 0; tmp32 = (int32_t)(((tmp32 * editor.sampler.samLength) / 311.0f) + 0.5f); if ((tmp32 + editor.sampler.samDisplay) <= editor.sampler.samLength) { if (tmp32 == editor.sampler.samOffset) return; editor.sampler.samOffset = tmp32; } else { tmp32 = editor.sampler.samLength - editor.sampler.samDisplay; if (tmp32 == editor.sampler.samOffset) return; editor.sampler.samOffset = tmp32; } displaySample(); } } static int32_t x2LoopX(int32_t mouseX) { int32_t offset; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; mouseX -= 3; if (mouseX < 0) mouseX = 0; offset = scr2SmpPos(mouseX); return (CLAMP(offset, 0, s->length)); } static int32_t xToSmpX(int32_t x, int32_t smpLen) { x = scr2SmpPos(x); return (CLAMP(x, 0, smpLen - 1)); } static int8_t yToSmpY(int32_t mouseY) { return (CLAMP(SAMPLE_AREA_Y_CENTER - mouseY, -32, 31) * 4); } void samplerEditSample(int8_t mouseButtonHeld) { // EDIT SAMPLE ROUTINE (non-PT feature inspired by FT2) int8_t y; int32_t mouseY, x, smp_x0, smp_x1, xDistance, smp_y0, smp_y1, yDistance, smp; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if ((input.mouse.y < 0) || (input.mouse.x < 0) || (input.mouse.y >= SCREEN_H) || (input.mouse.x >= SCREEN_W)) return; s = &modEntry->samples[editor.currSample]; if (!mouseButtonHeld) { if ((input.mouse.x >= 3) && (input.mouse.x <= 316) && (input.mouse.y >= 138) && (input.mouse.y <= 201)) { if (s->length == 0) { displayErrorMsg("SAMPLE LENGTH = 0"); } else { editor.sampler.lastMouseX = input.mouse.x; editor.sampler.lastMouseY = input.mouse.y; editor.ui.forceSampleEdit = true; updateWindowTitle(MOD_IS_MODIFIED); } } return; } mouseY = input.keyb.shiftKeyDown ? editor.sampler.lastMouseY : input.mouse.y; x = xToSmpX(input.mouse.x - 3, s->length); y = yToSmpY(mouseY); modEntry->sampleData[s->offset + x] = y; // interpolate x gaps if (input.mouse.x != editor.sampler.lastMouseX) { smp_y0 = yToSmpY(editor.sampler.lastMouseY); smp_y1 = y; yDistance = smp_y1 - smp_y0; if (input.mouse.x > editor.sampler.lastMouseX) { smp_x1 = x; smp_x0 = xToSmpX(editor.sampler.lastMouseX - 3, s->length); xDistance = smp_x1 - smp_x0; if (xDistance > 0) { for (x = smp_x0; x < smp_x1; ++x) { PT_ASSERT(x < s->length); smp = smp_y0 + (((x - smp_x0) * yDistance) / xDistance); modEntry->sampleData[s->offset + x] = (int8_t)(CLAMP(smp, -128, 127)); } } } else if (input.mouse.x < editor.sampler.lastMouseX) { smp_x0 = x; smp_x1 = xToSmpX(editor.sampler.lastMouseX - 3, s->length); xDistance = smp_x1 - smp_x0; if (xDistance > 0) { for (x = smp_x0; x < smp_x1; ++x) { PT_ASSERT(x < s->length); smp = smp_y0 + (((smp_x1 - x) * yDistance) / xDistance); modEntry->sampleData[s->offset + x] = (int8_t)(CLAMP(smp, -128, 127)); } } } editor.sampler.lastMouseX = input.mouse.x; if (!input.keyb.shiftKeyDown) editor.sampler.lastMouseY = input.mouse.y; } displaySample(); } void samplerSamplePressed(int8_t mouseButtonHeld) { int16_t mouseX; int32_t tmpPos; moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; if ((input.mouse.y < 0) || (input.mouse.x < 0) || (input.mouse.y >= SCREEN_H) || (input.mouse.x >= SCREEN_W)) return; if (!mouseButtonHeld) { if (input.mouse.y < 142) { if ((input.mouse.x >= editor.sampler.loopStartPos) && (input.mouse.x <= (editor.sampler.loopStartPos + 3))) { editor.ui.leftLoopPinMoving = true; editor.ui.rightLoopPinMoving = false; editor.ui.sampleMarkingPos = 1; editor.sampler.lastMouseX = input.mouse.x; return; } else if ((input.mouse.x >= (editor.sampler.loopEndPos + 3)) && (input.mouse.x <= (editor.sampler.loopEndPos + 6))) { editor.ui.rightLoopPinMoving = true; editor.ui.leftLoopPinMoving = false; editor.ui.sampleMarkingPos = 1; editor.sampler.lastMouseX = input.mouse.x; return; } } } mouseX = (int16_t)(input.mouse.x); s = &modEntry->samples[editor.currSample]; if (editor.ui.leftLoopPinMoving) { if (editor.sampler.lastMouseX != mouseX) { editor.sampler.lastMouseX = mouseX; mouseX += 2; tmpPos = (x2LoopX(mouseX) - s->loopStart) & 0xFFFFFFFE; if ((s->loopStart + tmpPos) >= ((s->loopStart + s->loopLength) - 2)) { s->loopStart = (s->loopStart + s->loopLength) - 2; s->loopLength = 2; } else { s->loopStart = s->loopStart + tmpPos; s->loopLength -= tmpPos; if (s->loopLength < 2) s->loopLength = 2; } editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; setLoopSprites(); mixerUpdateLoops(); updateWindowTitle(MOD_IS_MODIFIED); } return; } if (editor.ui.rightLoopPinMoving) { if (editor.sampler.lastMouseX != mouseX) { editor.sampler.lastMouseX = mouseX; s = &modEntry->samples[editor.currSample]; if (--mouseX < 0) mouseX = 0; s->loopLength = (x2LoopX(mouseX) - s->loopStart) & 0xFFFFFFFE; if (s->loopLength < 2) s->loopLength = 2; editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; setLoopSprites(); mixerUpdateLoops(); updateWindowTitle(MOD_IS_MODIFIED); } return; } if (!mouseButtonHeld) { if ((mouseX < 3) || (mouseX > 319)) return; editor.ui.sampleMarkingPos = (int16_t)(mouseX); editor.sampler.lastSamPos = editor.ui.sampleMarkingPos; invertRange(); if (s->length == 0) { editor.markStartOfs = 0; editor.markEndOfs = 0; } else { editor.markStartOfs = scr2SmpPos(editor.ui.sampleMarkingPos - 3); editor.markEndOfs = scr2SmpPos(editor.ui.sampleMarkingPos - 3); if (editor.markEndOfs > s->length) editor.markEndOfs = s->length; } invertRange(); if (s->length == 0) editor.markStartOfs = 0; else editor.samplePos = scr2SmpPos(mouseX - 3); updateSamplePos(); return; } mouseX = CLAMP(mouseX, 3, 319); if (mouseX != editor.sampler.lastSamPos) { editor.sampler.lastSamPos = (uint16_t)(mouseX); invertRange(); if (s->length == 0) { editor.markStartOfs = 0; editor.markEndOfs = 0; } else { if (editor.sampler.lastSamPos > editor.ui.sampleMarkingPos) { editor.markStartOfs = scr2SmpPos(editor.ui.sampleMarkingPos - 3); editor.markEndOfs = scr2SmpPos(editor.sampler.lastSamPos - 3); } else { editor.markStartOfs = scr2SmpPos(editor.sampler.lastSamPos - 3); editor.markEndOfs = scr2SmpPos(editor.ui.sampleMarkingPos - 3); } if (editor.markEndOfs > s->length) editor.markEndOfs = s->length; } invertRange(); } if (s->length == 0) editor.samplePos = 0; else editor.samplePos = scr2SmpPos(mouseX - 3); updateSamplePos(); } void samplerLoopToggle(void) { moduleSample_t *s; PT_ASSERT((editor.currSample >= 0) && (editor.currSample <= 30)); if ((editor.currSample < 0) || (editor.currSample > 30)) return; s = &modEntry->samples[editor.currSample]; if (s->length < 2) return; turnOffVoices(); if ((s->loopStart + s->loopLength) > 2) { // disable loop editor.sampler.tmpLoopStart = s->loopStart; editor.sampler.tmpLoopLength = s->loopLength; s->loopStart = 0; s->loopLength = 2; } else { // enable loop if ((editor.sampler.tmpLoopStart == 0) && (editor.sampler.tmpLoopLength == 0)) { s->loopStart = 0; s->loopLength = s->length; } else { s->loopStart = editor.sampler.tmpLoopStart; s->loopLength = editor.sampler.tmpLoopLength; if ((s->loopStart + s->loopLength) > s->length) { s->loopStart = 0; s->loopLength = s->length; } } } editor.ui.updateCurrSampleRepeat = true; editor.ui.updateCurrSampleReplen = true; displaySample(); mixerUpdateLoops(); updateWindowTitle(MOD_IS_MODIFIED); } void exitFromSam(void) { editor.ui.samplerScreenShown = false; memcpy(&pixelBuffer[121 * SCREEN_W], &trackerFrameBMP[121 * SCREEN_W], 320 * 134 * sizeof (int32_t)); updateCursorPos(); setLoopSprites(); editor.ui.updateStatusText = true; editor.ui.updateSongSize = true; editor.ui.updateSongTiming = true; editor.ui.updateSongBPM = true; editor.ui.updateCurrPattText = true; editor.ui.updatePatternData = true; editor.markStartOfs = 0; editor.markEndOfs = 0; } void samplerScreen(void) { if (editor.ui.samplerScreenShown) { exitFromSam(); return; } editor.ui.samplerScreenShown = true; memcpy(&pixelBuffer[(121 * SCREEN_W)], samplerScreenBMP, 320 * 134 * sizeof (int32_t)); hideSprite(SPRITE_PATTERN_CURSOR); editor.ui.updateStatusText = true; editor.ui.updateSongSize = true; editor.ui.updateSongTiming = true; editor.ui.updateResampleNote = true; editor.ui.update9xxPos = true; redrawSample(); } protracker-2.3d.r92/src/pt_tables.h0000644000000000000000000000650713235646514015745 0ustar rootroot#ifndef __PT_TABLES_H #define __PT_TABLES_H #include #include "pt_palette.h" // TABLES extern const char noteNames1[36][4]; extern const char noteNames2[36][4]; extern const int8_t tuneToneData[32]; extern const uint16_t cursorPosTable[24]; extern const int8_t vuMeterHeights[65]; extern const uint8_t funkTable[16]; extern const uint8_t vibratoTable[32]; extern const int16_t periodTable[606]; extern const char hexTable[16]; extern const uint8_t unshiftedKeymap[64]; extern const int8_t rawKeyScaleTable[41]; extern const int8_t kbdTransTable[2][41]; extern const uint8_t topazFontPacked[760]; extern int8_t pNoteTable[32]; // GFX extern uint32_t iconBMP[1024]; extern const uint8_t mousePointerBMP[256]; extern const uint8_t fontBMP[5120]; extern const uint8_t arrowPaletteBMP[30]; // PACKED GFX extern const uint8_t aboutScreenPackedBMP[1684]; extern const uint8_t clearDialogPackedBMP[525]; extern const uint8_t diskOpScreenPackedBMP[1898]; extern const uint8_t editOpModeCharsPackedBMP[88]; extern const uint8_t editOpScreen1PackedBMP[1481]; extern const uint8_t editOpScreen2PackedBMP[1502]; extern const uint8_t editOpScreen3PackedBMP[1721]; extern const uint8_t editOpScreen4PackedBMP[1701]; extern const uint8_t mod2wavPackedBMP[607]; extern const uint8_t muteButtonsPackedBMP[46]; extern const uint8_t posEdPackedBMP[1368]; extern const uint8_t samplerVolumePackedBMP[706]; extern const uint8_t samplerFiltersPackedBMP[916]; extern const uint8_t samplerScreenPackedBMP[3046]; extern const uint8_t spectrumVisualsPackedBMP[2217]; extern const uint8_t termTopPackedBMP[381]; extern const uint8_t termScrollBarPackedBMP[642]; extern const uint8_t monoScopePackedBMP[381]; extern const uint8_t trackerFramePackedBMP[8374]; extern const uint8_t yesNoDialogPackedBMP[476]; extern const uint8_t pat2SmpDialogPackedBMP[520]; // changable by config file extern uint16_t analyzerColors[36]; extern uint16_t vuMeterColors[48]; // these are filled/normalized on init, so no const extern uint32_t vuMeterBMP[480]; extern uint32_t loopPinsBMP[512]; extern uint32_t samplingPosBMP[64]; extern uint32_t spectrumAnaBMP[36]; extern uint32_t patternCursorBMP[154]; extern uint32_t *editOpScreen1BMP; extern uint32_t *editOpScreen2BMP; extern uint32_t *editOpScreen3BMP; extern uint32_t *editOpScreen4BMP; extern uint32_t *yesNoDialogBMP; extern uint32_t *spectrumVisualsBMP; extern uint32_t *posEdBMP; extern uint32_t *mod2wavBMP; extern uint32_t *diskOpScreenBMP; extern uint32_t *clearDialogBMP; extern uint32_t *samplerVolumeBMP; extern uint32_t *samplerFiltersBMP; extern uint32_t *samplerScreenBMP; extern uint32_t *monoScopeBMP; extern uint32_t *trackerFrameBMP; extern uint32_t *aboutScreenBMP; extern uint32_t *muteButtonsBMP; extern uint32_t *arrowBMP; extern uint32_t *editOpModeCharsBMP; extern uint32_t *termTopBMP; extern uint32_t *termScrollBarBMP; extern uint32_t *pat2SmpDialogBMP; // PALETTE extern uint32_t palette[PALETTE_NUM]; #define EDOP_MODE_BMP_A_OFS ((7 * 6) * 0) #define EDOP_MODE_BMP_C_OFS ((7 * 6) * 1) #define EDOP_MODE_BMP_H_OFS ((7 * 6) * 2) #define EDOP_MODE_BMP_N_OFS ((7 * 6) * 3) #define EDOP_MODE_BMP_O_OFS ((7 * 6) * 4) #define EDOP_MODE_BMP_P_OFS ((7 * 6) * 5) #define EDOP_MODE_BMP_S_OFS ((7 * 6) * 6) #define EDOP_MODE_BMP_T_OFS ((7 * 6) * 7) #endif protracker-2.3d.r92/src/pt_edit.h0000644000000000000000000000173713235646475015426 0ustar rootroot#ifndef __PT_EDIT_H #define __PT_EDIT_H #include #include void saveUndo(void); void undoLastChange(void); void copySampleTrack(void); void delSampleTrack(void); void exchSampleTrack(void); void trackNoteUp(uint8_t sampleFlag, uint8_t from, uint8_t to); void trackNoteDown(uint8_t sampleFlag, uint8_t from, uint8_t to); void trackOctaUp(uint8_t sampleFlag, uint8_t from, uint8_t to); void trackOctaDown(uint8_t sampleFlag, uint8_t from, uint8_t to); void pattNoteUp(uint8_t sampleFlag); void pattNoteDown(uint8_t sampleFlag); void pattOctaUp(uint8_t sampleFlag); void pattOctaDown(uint8_t sampleFlag); void exitGetTextLine(uint8_t updateValue); void getTextLine(int16_t editObject); void getNumLine(uint8_t type, int16_t editObject); void handleEditKeys(SDL_Scancode keyEntry, int8_t normalMode); uint8_t handleSpecialKeys(SDL_Scancode keyEntry); int8_t keyToNote(SDL_Keycode keyEntry); void updateTextObject(int16_t editObject); #endif protracker-2.3d.r92/src/pt_terminal.c0000644000000000000000000003025513235646516016300 0ustar rootroot#include #include #include #include #include #include // for powf() #include "pt_terminal.h" #include "pt_textout.h" #include "pt_tables.h" #include "pt_palette.h" #include "pt_helpers.h" #include "pt_visuals.h" #define SCROLL_AREA_TOP 24 #define SCROLL_AREA_HEIGHT 206 #define TOPAZ_UNPACKED_LEN (760 * 8) static char *charBuffer, *textFormatBuffer; static uint8_t *topazFont, row, col, overflowFlag; static int32_t lastDragY, lastMouseY, numLines; static int32_t scrollBufferPos, scrollBarEnd, scrollBarPage; static int32_t scrollBarThumbTop, scrollBarThumbBottom; static uint32_t textFgColor, dateFgColor, dateBgColor; static const char *monthDaysText[31] = { "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th", "30th", "31st" }; static const char *monthText[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; static void renderCharacter(uint32_t *buffer, uint32_t x, uint32_t y, char ch, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *bufferPointer; if ((ch < ' ') || (ch > '~')) ch = ' '; ch -= ' '; bufferPointer = buffer + ((y * SCREEN_W) + x); fontPointer = topazFont + (ch * (TERMINAL_FONT_W * TERMINAL_FONT_H)); line = TERMINAL_FONT_H; while (line--) { if (*(fontPointer + 0)) *(bufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(bufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(bufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(bufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(bufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(bufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(bufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(bufferPointer + 7) = fontColor; fontPointer += TERMINAL_FONT_W; bufferPointer += SCREEN_W; } } static void updateScrollBar(void) { int32_t thumbTop, thumbHeight; thumbHeight = CLAMP((SCROLL_AREA_HEIGHT * scrollBarPage) / (scrollBarEnd + 1), 1, SCROLL_AREA_HEIGHT); thumbTop = ((SCROLL_AREA_HEIGHT - thumbHeight) * scrollBufferPos) / (scrollBarEnd - scrollBarPage); scrollBarThumbTop = SCROLL_AREA_TOP + thumbTop; scrollBarThumbBottom = SCROLL_AREA_TOP + (thumbTop + thumbHeight); } void terminalScrollToStart(void) { if (scrollBarEnd > scrollBarPage) { scrollBufferPos = 0; updateScrollBar(); } } void terminalScrollToEnd(void) { if (scrollBarEnd > scrollBarPage) { scrollBufferPos = scrollBarEnd - scrollBarPage; updateScrollBar(); } } void terminalScrollPageUp(void) { if (scrollBarEnd > scrollBarPage) { scrollBufferPos -= scrollBarPage; if (scrollBufferPos < 0) scrollBufferPos = 0; updateScrollBar(); } } void terminalScrollPageDown(void) { if (scrollBarEnd > scrollBarPage) { scrollBufferPos += scrollBarPage; if (scrollBufferPos > (scrollBarEnd - scrollBarPage)) scrollBufferPos = scrollBarEnd - scrollBarPage; updateScrollBar(); } } void terminalScrollUp(void) { if (scrollBarEnd > scrollBarPage) { if (--scrollBufferPos < 0) scrollBufferPos = 0; updateScrollBar(); } } void terminalScrollDown(void) { if (scrollBarEnd > scrollBarPage) { if (++scrollBufferPos > (scrollBarEnd - scrollBarPage)) scrollBufferPos = scrollBarEnd - scrollBarPage; updateScrollBar(); } } static void putNewLine(void) { uint32_t i; if (numLines < TERMINAL_HISTORY_LINES) { numLines++; } else { // we reached the maximum backlog lines, // shift the buffer up so we can put our new line // at the bottom without using more memory. for (i = 0; i < (TERMINAL_HISTORY_LINES - 1); ++i) memcpy(&charBuffer[(i * TERMINAL_WIDTH)], &charBuffer[((i + 1) * TERMINAL_WIDTH)], TERMINAL_WIDTH); } scrollBarEnd = numLines - 1; terminalScrollDown(); if (row < (TERMINAL_HEIGHT - 1)) row++; col = 0; } static void putChar(char chr) { charBuffer[((scrollBufferPos + row) * TERMINAL_WIDTH) + col] = chr; if (++col == TERMINAL_WIDTH) { col = 0; overflowFlag = true; putNewLine(); } } static void putTab(void) { uint8_t i; for (i = 0; i < TERMINAL_TAB_SIZE; ++i) putChar(' '); } static void printBuffer(const char *bufferPtr) { // scroll back to bottom when putting new text if (scrollBarEnd > scrollBarPage) { scrollBufferPos = scrollBarEnd - scrollBarPage; updateScrollBar(); } while (*bufferPtr != '\0') { // line feed if (*bufferPtr == '\n') { if (!overflowFlag) putNewLine(); overflowFlag = false; bufferPtr++; continue; } // return carriage if (*bufferPtr == '\r') { col = 0; bufferPtr++; continue; } // horizontal tab if (*bufferPtr == '\t') { putTab(); bufferPtr++; continue; } overflowFlag = false; putChar(*bufferPtr++); } } void terminalPrintf(const char *format, ...) { va_list args; if (format[0] == '\0') return; va_start(args, format); vsnprintf(textFormatBuffer, 1024, format, args); va_end(args); printBuffer(textFormatBuffer); } void teriminalPutChar(const char chr) { terminalPrintf("%c", chr); } void terminalClear(void) { row = 0; col = 0; numLines = 0; overflowFlag = false; scrollBufferPos = 0; scrollBarEnd = 0; scrollBarThumbTop = 0; scrollBarThumbBottom = 0; memset(charBuffer, ' ', TERMINAL_BUFFER_SIZE); } void terminalHandleScrollBar(int8_t mouseButtonHeld) { int32_t scrollThumbPos; if (!mouseButtonHeld) { if (scrollBarEnd > scrollBarPage) { if (input.mouse.y < scrollBarThumbTop) { terminalScrollPageUp(); return; } if (input.mouse.y > (scrollBarThumbBottom - 1)) { terminalScrollPageDown(); return; } lastDragY = input.mouse.y; lastMouseY = lastDragY - scrollBarThumbTop; } editor.ui.forceTermBarDrag = true; } if (input.mouse.y != lastDragY) { if (scrollBarEnd > scrollBarPage) { scrollThumbPos = CLAMP((input.mouse.y - lastMouseY) - SCROLL_AREA_TOP, 0, SCROLL_AREA_HEIGHT); scrollBufferPos = CLAMP((scrollThumbPos * scrollBarEnd) / SCROLL_AREA_HEIGHT, 0, scrollBarEnd - scrollBarPage); updateScrollBar(); lastDragY = input.mouse.y; } } } static void renderDate(uint32_t *frameBuffer) { char dateBuffer[35]; // 35 fits the largest possible date string + null terminator uint8_t i, AM, mon, day, hour, min, sec, dateTextLen, dateTextMarginLeft; uint16_t year; time_t rawtime; struct tm *ptm; time(&rawtime); ptm = localtime(&rawtime); AM = true; // prevent compiler warning year = CLAMP(1900 + ptm->tm_year, 1900, 9999); // wow day = CLAMP(ptm->tm_mday, 1, 31) - 1; mon = CLAMP(ptm->tm_mon, 0, 11); hour = CLAMP(ptm->tm_hour, 0, 23); min = CLAMP(ptm->tm_min, 0, 59); sec = CLAMP(ptm->tm_sec, 0, 59); // 24hr to AM/PM conversion if (hour == 0) { hour = 12; AM = true; } else if ((hour >= 1) && (hour <= 11)) { AM = true; } else if (hour == 12) { AM = false; } else if ((hour >= 13) && (hour <= 23)) { hour -= 12; AM = false; } sprintf(dateBuffer, "%s of %s %d %d:%02d:%02d%s\n", monthDaysText[day], monthText[mon], year, hour, min, sec, AM ? "AM" : "PM"); dateTextLen = (uint8_t)(strlen(dateBuffer)); dateTextMarginLeft = ((SCREEN_W / 2) - ((dateTextLen * TERMINAL_FONT_W) / 2)) + (TERMINAL_FONT_W / 2); for (i = 0; i < dateTextLen; ++i) { // shadow renderCharacter(frameBuffer, dateTextMarginLeft + 1 + (i * TERMINAL_FONT_W), (SCREEN_H - 9) + 1, dateBuffer[i], dateBgColor); // foreground renderCharacter(frameBuffer, dateTextMarginLeft + (i * TERMINAL_FONT_W), SCREEN_H - 9, dateBuffer[i], dateFgColor); } } void terminalRender(uint32_t *frameBuffer) { int32_t y, x; const uint32_t *ptr32Src; uint32_t *ptr32Dst, pixel; // hide some sprites... hideSprite(SPRITE_PATTERN_CURSOR); hideSprite(SPRITE_LOOP_PIN_LEFT); hideSprite(SPRITE_LOOP_PIN_RIGHT); hideSprite(SPRITE_SAMPLING_POS_LINE); // clear background with non-palette black memset(frameBuffer, 0, SCREEN_W * SCREEN_H * sizeof (int32_t)); // render window title graphics memcpy(frameBuffer, termTopBMP, 320 * 11 * sizeof (uint32_t)); // render scrollbar graphics ptr32Src = termScrollBarBMP; ptr32Dst = frameBuffer + ((11 * SCREEN_W) + 309); y = 232; while (y--) { memcpy(ptr32Dst, ptr32Src, 11 * sizeof (uint32_t)); ptr32Dst += SCREEN_W; ptr32Src += 11; } // render scrollbar thumb if (scrollBarEnd > scrollBarPage) { ptr32Dst = frameBuffer + ((scrollBarThumbTop * SCREEN_W) + 311); pixel = palette[PAL_GENBKG2]; y = scrollBarThumbBottom - scrollBarThumbTop; while (y--) { *(ptr32Dst + 0) = pixel; *(ptr32Dst + 1) = pixel; *(ptr32Dst + 2) = pixel; *(ptr32Dst + 3) = pixel; *(ptr32Dst + 4) = pixel; *(ptr32Dst + 5) = pixel; *(ptr32Dst + 6) = pixel; ptr32Dst += SCREEN_W; } } // render text if (numLines > 0) { for (y = 0; y < TERMINAL_HEIGHT; ++y) { for (x = 0; x < TERMINAL_WIDTH; ++x) { renderCharacter(frameBuffer, 3 + (x * TERMINAL_FONT_W), 12 + (y * TERMINAL_FONT_H), charBuffer[((scrollBufferPos + y) * TERMINAL_WIDTH) + x], textFgColor); } } } renderDate(frameBuffer); } int8_t terminalInit(void) { uint8_t *writePtr, readByte, bitMask; const uint8_t *readPtr; uint32_t i, bit; charBuffer = (char *)(malloc(TERMINAL_BUFFER_SIZE)); if (charBuffer == NULL) { showErrorMsgBox("Out of memory!"); return (false); } textFormatBuffer = (char *)(malloc(1024)); if (textFormatBuffer == NULL) { showErrorMsgBox("Out of memory!"); return (false); } topazFont = (uint8_t *)(malloc(TOPAZ_UNPACKED_LEN)); if (topazFont == NULL) { showErrorMsgBox("Out of memory!"); return (false); } // unpack font writePtr = topazFont; readPtr = topazFontPacked; for (i = 0; i < TOPAZ_UNPACKED_LEN / 8; ++i) { readByte = *readPtr++; for (bit = 0; bit < 8; ++bit) { bitMask = (bit == 0) ? 0x01 : (1 << bit); *writePtr++ = (readByte & bitMask) >> bit; } } textFgColor = 0x00C0C0C0; dateFgColor = 0x00909090; dateBgColor = 0x00282828; scrollBarPage = TERMINAL_HEIGHT - 1; terminalClear(); return (true); } void terminalFree(void) { free(charBuffer); free(textFormatBuffer); free(topazFont); } protracker-2.3d.r92/src/pt_sampler.h0000644000000000000000000000313613235646476016140 0ustar rootroot#ifndef __PT_SAMPLER_H #define __PT_SAMPLER_H #include int32_t smpPos2Scr(int32_t pos); // sample pos -> screen x pos int32_t scr2SmpPos(int32_t x); // screen x pos -> sample pos void fixSampleBeep(moduleSample_t *s); void highPassSample(int32_t cutOff); void lowPassSample(int32_t cutOff); void samplerRemoveDcOffset(void); void mixChordSample(void); void samplerResample(void); void doMix(void); void boostSample(int8_t sample, int8_t ignoreMark); void filterSample(int8_t sample, int8_t ignoreMark); void toggleTuningTone(void); void samplerSamDelete(uint8_t cut); void samplerSamPaste(void); void samplerSamCopy(void); void samplerLoopToggle(void); void samplerBarPressed(int8_t mouseButtonHeld); void samplerEditSample(int8_t mouseButtonHeld); void samplerSamplePressed(int8_t mouseButtonHeld); void volBoxBarPressed(int8_t mouseButtonHeld); void samplerZoomInMouseWheel(void); void samplerZoomOutMouseWheel(void); void samplerZoomOut2x(void); void sampleMarkerToBeg(void); void sampleMarkerToCenter(void); void sampleMarkerToEnd(void); void samplerPlayWaveform(void); void samplerPlayDisplay(void); void samplerPlayRange(void); void samplerRangeAll(void); void samplerShowRange(void); void samplerShowAll(void); void redoSampleData(int8_t sample); void fillSampleRedoBuffer(int8_t sample); void updateSamplePos(void); void fillSampleFilterUndoBuffer(void); void exitFromSam(void); void samplerScreen(void); void displaySample(void); void redrawSample(void); int8_t allocSamplerVars(void); void deAllocSamplerVars(void); void setLoopSprites(void); #endif protracker-2.3d.r92/src/pt_unicode.c0000644000000000000000000000153513235646477016120 0ustar rootroot#include #include "pt_unicode.h" // this is probably broken, but it "works" for now uint32_t unicharToAnsi(char *dstBuffer, const UNICHAR *inputString, uint32_t maxDstLen) { uint32_t i; UNICHAR wideChar; if ((inputString == NULL) || (dstBuffer == NULL)) return (0); i = 0; while ((i < maxDstLen) && (inputString[i] != '\0')) { wideChar = inputString[i]; #ifdef _WIN32 if (wideChar >= 256) #else if (wideChar < 0) #endif { *dstBuffer++ = '?'; #ifdef _WIN32 if ((wideChar & 0xFF00) == 0xD800) // lead surrogate, skip the next widechar (trail) ++i; #endif } else { *dstBuffer++ = (char)(wideChar); } ++i; } *dstBuffer = '\0'; return (i); } protracker-2.3d.r92/src/gfx/0000755000000000000000000000000013235646514014373 5ustar rootrootprotracker-2.3d.r92/src/gfx/pt_gfx_font.c0000644000000000000000000003430213235646510017052 0ustar rootroot#include const uint8_t fontBMP[5168] = { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,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,1,1,0,1,1,0,0, 1,1,1,1,1,1,1,0, 0,1,1,0,1,1,0,0, 1,1,1,1,1,1,1,0, 0,1,1,0,1,1,0,0, 0,1,1,1,1,1,1,0, 1,1,0,1,0,0,0,0, 0,1,1,1,1,1,0,0, 0,0,0,1,0,1,1,0, 1,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,0,0,0,0, 0,1,0,0,1,0,0,0, 0,0,1,1,1,0,1,0, 0,1,0,0,0,1,0,0, 0,0,1,1,1,0,1,0, 0,0,0,0,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,1,0,0,0,1,0,0, 0,0,1,1,1,0,0,0, 0,1,1,1,1,1,0,0, 0,0,1,1,1,0,0,0, 0,1,0,0,0,1,0,0, 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 0,1,1,1,1,1,0,0, 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,1,1,1,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,1,1,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,1,1,1,0, 0,1,1,1,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,0,0,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,0,0,1,1,1,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,1,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,0,1,1,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,1,0, 0,0,0,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,1,1,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,1,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,0,0,1,1,1,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,1,1,1,0, 0,1,1,0,1,1,1,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,1,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,1,1,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,0,0,0,0,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,1,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,1,1,0,0, 0,0,1,1,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,0,0,0,0,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,1,1,0,0,0,0, 0,0,1,1,0,0,0,0, 0,0,1,1,0,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,0,0,1,1,0,0, 0,0,1,1,1,1,0,0, 0,0,0,1,0,0,0,0, 0,0,1,1,1,0,0,0, 0,1,1,0,1,1,0,0, 0,1,0,0,0,1,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,0,1,1,0,0,0,0, 0,0,0,1,1,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,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,1,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,1,1,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,0, 0,1,0,0,0,0,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,1,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,1,1,0,0, 0,0,1,1,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,0,1,1,0,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,1,0, 0,1,1,0,0,0,0,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,1,1,0, 0,1,1,1,1,1,0,0, 0,1,1,1,1,1,1,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0, 0,1,0,0,0,0,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,1,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,1,1,1,1,0, 0,0,0,0,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,0,0,0,0, 0,1,1,1,1,1,1,0, 0,0,0,1,1,1,0,0, 0,0,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,1,0,0,0,0,0, 0,0,0,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,1,1,1,0,0,0, 0,0,0,0,0,1,0,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,1,0,0, 0,0,1,1,1,0,0,0, 0,0,1,1,1,0,1,1, 0,1,1,0,1,1,1,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,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,1,1,0,0,0, 0,1,1,0,1,1,0,0, 0,1,1,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 }; protracker-2.3d.r92/src/gfx/pt_gfx_diskop.c0000644000000000000000000002755613235646511017413 0ustar rootroot#include // Final unpack length: 31680 // Decoded length: 7920 (first four bytes of buffer) const uint8_t diskOpScreenPackedBMP[1898] = { 0x00, 0x00, 0x1E, 0xF0, 0xCC, 0x12, 0x55, 0x56, 0xCC, 0x0F, 0x55, 0x65, 0x55, 0x56, 0xCC, 0x13, 0x55, 0x65, 0xCC, 0x12, 0x55, 0x56, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x69, 0x55, 0xA9, 0x56, 0xA5, 0x5A, 0x5A, 0x5A, 0x96, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x6A, 0xA9, 0x56, 0xA5, 0x5A, 0x55, 0x6A, 0xAA, 0xA6, 0xA9, 0xA5, 0x5A, 0x55, 0x69, 0x69, 0x65, 0xAA, 0x95, 0x56, 0xB6, 0xA5, 0x56, 0x95, 0x69, 0x69, 0x65, 0x55, 0xAA, 0xAA, 0x6A, 0x9A, 0x55, 0xA5, 0x56, 0x96, 0x96, 0x5A, 0xA9, 0x55, 0x6B, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x69, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0x5D, 0x7E, 0x97, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xF5, 0x97, 0xD6, 0x5F, 0x5A, 0xAA, 0xA5, 0xA5, 0xD7, 0xD6, 0x5F, 0x59, 0x79, 0x75, 0xEA, 0x97, 0xFF, 0xB6, 0x97, 0xFF, 0x5F, 0x59, 0x79, 0x75, 0xFF, 0xEA, 0xAA, 0x5A, 0x5D, 0x7D, 0x65, 0xF5, 0x97, 0x97, 0x5E, 0xA9, 0x7F, 0xFB, 0x6A, 0x95, 0x5A, 0x55, 0x6A, 0x55, 0xA5, 0x55, 0x95, 0x5A, 0x95, 0x6A, 0x55, 0xA5, 0xA5, 0x95, 0x56, 0x55, 0x6A, 0xAB, 0x69, 0x55, 0xF5, 0x55, 0xD7, 0xAF, 0x55, 0xFA, 0xAF, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xE5, 0xD5, 0x57, 0x5E, 0x5E, 0xAA, 0xA5, 0x55, 0xD7, 0x97, 0x5E, 0x5D, 0x79, 0x75, 0xEA, 0x95, 0x6A, 0xB6, 0xA5, 0x5A, 0x55, 0x5D, 0x79, 0x75, 0x5A, 0xAA, 0xAA, 0x55, 0x5D, 0x79, 0x75, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x56, 0xAB, 0x6A, 0x97, 0xD6, 0x5F, 0x59, 0x7D, 0x6B, 0x5F, 0xD7, 0xD6, 0x5F, 0x59, 0x7D, 0x65, 0xD7, 0xD7, 0xFF, 0x5F, 0x5A, 0xAB, 0x69, 0x7F, 0xE5, 0xF5, 0xD7, 0x96, 0x5D, 0x6A, 0x96, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xE5, 0xD7, 0xD7, 0x5E, 0x5E, 0xAA, 0xA5, 0xF5, 0xD7, 0x97, 0x5E, 0x5D, 0x79, 0x75, 0xEA, 0x97, 0xFA, 0xB6, 0xAB, 0xD6, 0x5F, 0x5E, 0x55, 0xF5, 0xFE, 0xAA, 0xAA, 0x5F, 0x5D, 0x79, 0x75, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x7F, 0xAB, 0x6A, 0x95, 0x5F, 0x55, 0x7D, 0x79, 0x7A, 0x5E, 0x95, 0x5F, 0x55, 0x5D, 0x7A, 0xF5, 0x5F, 0x95, 0x6A, 0x55, 0x7E, 0xAB, 0x69, 0x7A, 0xA5, 0xE5, 0xE5, 0x5F, 0x5E, 0x5A, 0x97, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x55, 0x69, 0x57, 0xD7, 0x97, 0x55, 0x7E, 0xAA, 0xA5, 0xE5, 0xE5, 0x5F, 0x55, 0x7E, 0x55, 0xF5, 0x55, 0x95, 0x56, 0xB6, 0x95, 0x5F, 0x5E, 0x5E, 0x97, 0xE5, 0x55, 0xAA, 0xAA, 0x5E, 0x5E, 0x55, 0xF5, 0x57, 0xE5, 0x5F, 0x55, 0x59, 0x55, 0x6B, 0x6A, 0x97, 0xFE, 0x5D, 0x79, 0x79, 0x7A, 0x5E, 0x97, 0x5E, 0x5F, 0x5D, 0x79, 0x65, 0xD6, 0x97, 0xFA, 0x5D, 0x7A, 0xAB, 0x6A, 0xFA, 0xAB, 0xEB, 0xEB, 0xFE, 0xBE, 0xBE, 0xAF, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xFF, 0xFA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFA, 0xAA, 0xAB, 0xEB, 0xEB, 0xFE, 0xBF, 0xFA, 0xBF, 0xEB, 0xFF, 0xEF, 0xFF, 0xB6, 0xAF, 0xFE, 0xBE, 0xBE, 0xAF, 0xAB, 0xFF, 0xEA, 0xAA, 0xBE, 0xBE, 0xBF, 0xEB, 0xFF, 0xAB, 0xFE, 0xBF, 0xFE, 0xFF, 0xFB, 0x6A, 0x97, 0xAA, 0x5E, 0x5A, 0x55, 0xFA, 0x5E, 0x97, 0x96, 0x5E, 0x5E, 0x55, 0xF5, 0xE5, 0x95, 0x56, 0x5E, 0x5A, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0x6A, 0xAF, 0xAA, 0xBE, 0xBE, 0xBF, 0xEA, 0xBE, 0xAF, 0xAF, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEF, 0xFF, 0xBE, 0xBE, 0xAB, 0xBF, 0xCC, 0x0E, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0xCC, 0x12, 0xFF, 0xFB, 0xCC, 0x13, 0xFF, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0xCC, 0x0F, 0x55, 0x65, 0x55, 0x56, 0xCC, 0x13, 0x55, 0x65, 0xCC, 0x12, 0x55, 0x56, 0x6A, 0xAA, 0xAA, 0xA5, 0x56, 0xA5, 0x5A, 0x95, 0x59, 0x69, 0x6A, 0xAA, 0xA5, 0x5A, 0x55, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA5, 0xF5, 0xA9, 0x7E, 0x5F, 0xFD, 0x75, 0xFA, 0xAA, 0x97, 0xD6, 0x5F, 0x5A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA5, 0xE5, 0xE9, 0x7A, 0x95, 0x69, 0x57, 0xEA, 0xAA, 0x97, 0x97, 0x55, 0x7E, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x55, 0x69, 0x56, 0x96, 0x96, 0x55, 0x5A, 0x96, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x6A, 0xA9, 0x56, 0xA5, 0x5A, 0x55, 0x6A, 0xAA, 0xA9, 0x55, 0xA5, 0x5A, 0x6A, 0x99, 0x55, 0xA5, 0xAA, 0x95, 0x56, 0xB6, 0xA5, 0x56, 0x95, 0x69, 0x69, 0x65, 0x55, 0xAA, 0xAA, 0x95, 0x5A, 0x55, 0xA6, 0xA9, 0x95, 0x5A, 0x5A, 0xA9, 0x55, 0x6B, 0x6A, 0xAA, 0xAA, 0xA5, 0xE5, 0xE9, 0x7A, 0xAF, 0x59, 0x75, 0xAA, 0xAA, 0x97, 0x97, 0x5F, 0xF9, 0x6A, 0xAA, 0xAA, 0xAB, 0x69, 0x7F, 0xF5, 0xF5, 0x97, 0x97, 0x5F, 0xFE, 0x97, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xF5, 0x97, 0xD6, 0x5F, 0x5A, 0xAA, 0xA5, 0xFF, 0xD7, 0xD6, 0x5A, 0x5D, 0x7D, 0x65, 0xEA, 0x97, 0xFF, 0xB6, 0x97, 0xFF, 0x5F, 0x59, 0x79, 0x75, 0xFF, 0xEA, 0xAA, 0x5F, 0xFD, 0x7D, 0x65, 0xA5, 0xD7, 0xD6, 0x5E, 0xA9, 0x7F, 0xFB, 0x6A, 0xAA, 0xAA, 0xA5, 0x57, 0xE5, 0x5A, 0x55, 0x7D, 0x79, 0x6A, 0xAA, 0xA5, 0x5F, 0x5E, 0xA9, 0x7A, 0xAA, 0xAA, 0xAB, 0x6A, 0x55, 0xA5, 0x55, 0xD7, 0x97, 0x55, 0xAA, 0xAF, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xE5, 0xD5, 0x57, 0x5E, 0x5E, 0xAA, 0xA9, 0x56, 0x95, 0x57, 0x55, 0x5D, 0x55, 0xF5, 0xEA, 0x95, 0x6A, 0xB6, 0xA5, 0x5A, 0x55, 0x5D, 0x79, 0x75, 0x5A, 0xAA, 0xAA, 0x95, 0x69, 0x55, 0x75, 0x55, 0xD5, 0x5F, 0x5E, 0xA9, 0x56, 0xAB, 0x6A, 0xAA, 0xAA, 0xAB, 0xFF, 0xAB, 0xFE, 0xBF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAB, 0xFE, 0xBE, 0xAA, 0xFA, 0xAA, 0xAA, 0xAB, 0x6A, 0xBD, 0x65, 0xF5, 0xE5, 0x5F, 0x5F, 0xEA, 0x96, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x7A, 0xA5, 0xE5, 0xD7, 0xD7, 0x5E, 0x5E, 0xAA, 0xAA, 0xF5, 0x97, 0xD7, 0x5F, 0x5D, 0x7F, 0xE5, 0xEA, 0x97, 0xFA, 0xB6, 0xAB, 0xD6, 0x5F, 0x5E, 0x55, 0xF5, 0xFE, 0xAA, 0xAA, 0xAF, 0x59, 0x7D, 0x75, 0xF5, 0xD7, 0xFE, 0x5E, 0xA9, 0x7F, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x69, 0x55, 0xF5, 0xE5, 0xE9, 0x7E, 0x55, 0x5A, 0x97, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x69, 0x55, 0x69, 0x57, 0xD7, 0x97, 0x55, 0x7E, 0xAA, 0xA5, 0x57, 0xD7, 0x97, 0x5E, 0x5D, 0x7A, 0xA5, 0x55, 0x95, 0x56, 0xB6, 0x95, 0x5F, 0x5E, 0x5E, 0x97, 0xE5, 0x55, 0xAA, 0xAA, 0x55, 0x7D, 0x79, 0x75, 0xE5, 0xD7, 0xAA, 0x55, 0x59, 0x55, 0x6B, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xFF, 0xEB, 0xEB, 0xEA, 0xFA, 0xBF, 0xFE, 0xAF, 0xCC, 0x06, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xFF, 0xFA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFA, 0xAA, 0xAB, 0xFF, 0xAF, 0xAF, 0xBE, 0xBE, 0xFA, 0xAB, 0xFF, 0xEF, 0xFF, 0xB6, 0xAF, 0xFE, 0xBE, 0xBE, 0xAF, 0xAB, 0xFF, 0xEA, 0xAA, 0xBF, 0xFA, 0xFA, 0xFB, 0xEB, 0xEF, 0xAA, 0xBF, 0xFE, 0xFF, 0xFB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0xB6, 0xCC, 0x12, 0xAA, 0xAB, 0xBF, 0xCC, 0x12, 0xFF, 0xBF, 0xCC, 0x0E, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0xCC, 0x12, 0xFF, 0xFB, 0xCC, 0x13, 0xFF, 0xCC, 0x3A, 0x55, 0x65, 0xCC, 0x07, 0x55, 0x95, 0xCC, 0x06, 0x55, 0x56, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x39, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xDA, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xAA, 0xAB, 0x6A, 0xCC, 0x39, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xDA, 0xCC, 0x06, 0xAA, 0xAB, 0x69, 0x55, 0x6B, 0x69, 0x59, 0x59, 0x59, 0x99, 0xCC, 0x35, 0xAA, 0xB6, 0xAA, 0xCC, 0x03, 0x56, 0x5A, 0x56, 0xAA, 0xDA, 0xCC, 0x05, 0x95, 0x99, 0xAB, 0x6A, 0xD7, 0xFB, 0x69, 0xDD, 0xDE, 0x7D, 0xDD, 0xEA, 0xCC, 0x34, 0xAA, 0xB6, 0xAA, 0x77, 0x77, 0x77, 0x7F, 0x76, 0x9F, 0xAA, 0xDA, 0x9D, 0xDF, 0xDF, 0xDD, 0xDF, 0xDF, 0xDD, 0xEB, 0x6A, 0x97, 0xAB, 0x69, 0x5D, 0x5E, 0x79, 0x5E, 0xEA, 0xCC, 0x34, 0xAA, 0xB6, 0xAA, 0x57, 0x57, 0x5B, 0x5A, 0x77, 0x9E, 0xAA, 0xDA, 0x96, 0xD6, 0x96, 0x96, 0xD6, 0x95, 0x95, 0xEB, 0x6A, 0x97, 0xAB, 0x69, 0xFD, 0xDE, 0x79, 0xDD, 0xCC, 0x35, 0xAA, 0xB6, 0xAA, 0x7F, 0x77, 0x76, 0x7E, 0x77, 0x9E, 0xAA, 0xDA, 0x9D, 0x9F, 0x9F, 0x9D, 0x9F, 0xAD, 0xDD, 0xEB, 0x6A, 0x97, 0xAB, 0x69, 0xE9, 0xDE, 0x79, 0xDD, 0xEA, 0xCC, 0x34, 0xAA, 0xB6, 0xAA, 0x7A, 0x77, 0x77, 0x56, 0x77, 0x9E, 0xAA, 0xDA, 0x9D, 0xD5, 0x9E, 0x9D, 0xD5, 0x95, 0xDD, 0xEB, 0x6A, 0xAF, 0xAB, 0x6A, 0xEA, 0xEE, 0xBA, 0xEE, 0xEA, 0xCC, 0x34, 0xAA, 0xB6, 0xAA, 0xBA, 0xBB, 0xBB, 0xBF, 0xBB, 0xAE, 0xAA, 0xDA, 0xAE, 0xEF, 0xEE, 0xAE, 0xEF, 0xEF, 0xEE, 0xEB, 0xBF, 0xFF, 0xFF, 0x6A, 0xCC, 0x39, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xDA, 0xCC, 0x06, 0xAA, 0xAB, 0x55, 0x55, 0x56, 0x6F, 0xCC, 0x39, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xEF, 0xCC, 0x06, 0xFF, 0xEB, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x96, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xBF, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x7F, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x56, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x7F, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xFF, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x69, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x7D, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xFA, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xBF, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xD7, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAF, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAF, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0xAB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x7D, 0x6B, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x55, 0xFB, 0x6C, 0xCC, 0x4A, 0x00, 0x1B, 0x69, 0x7D, 0x6B, 0x69, 0xCC, 0x4A, 0x55, 0x5B, 0x69, 0x55, 0xFB, 0x6A, 0xCC, 0x4A, 0xAA, 0xAB, 0x6A, 0xFF, 0xEB, 0xBF, 0xCC, 0x4B, 0xFF, 0xBF, 0xFF, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_loop_pins.c0000644000000000000000000001457213235646514020121 0ustar rootroot#include uint32_t loopPinsBMP[512] = { 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x0000FF00, 0x0000FF00, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x0000FF00, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE }; protracker-2.3d.r92/src/gfx/pt_gfx_pointer.c0000644000000000000000000000712713235646514017575 0ustar rootroot#include #include "../pt_palette.h" // This graphical table has to be in the palette kind of data // because it changes color according to status. Easier this // way. const uint8_t mousePointerBMP[256] = { PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1, PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1, PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2, PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_2, PAL_MOUSE_1,PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2, PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2, PAL_MOUSE_1,PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_2, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3, PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_MOUSE_1, PAL_MOUSE_2,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2, PAL_MOUSE_3,PAL_MOUSE_2,PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_1, PAL_COLORKEY,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_MOUSE_2,PAL_MOUSE_1, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_MOUSE_1,PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY, PAL_COLORKEY }; protracker-2.3d.r92/src/gfx/pt_gfx_clear.c0000644000000000000000000000661713235646513017205 0ustar rootroot#include // Final unpack length: 4056 // Decoded length: 1014 (first four bytes of buffer) const uint8_t clearDialogPackedBMP[525] = { 0x00, 0x00, 0x03, 0xF6, 0xCC, 0x18, 0x55, 0x56, 0xCC, 0x18, 0x55, 0x5B, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAF, 0xCC, 0x06, 0xFF, 0xFA, 0xAA, 0xCC, 0x0C, 0xFF, 0xEA, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xA5, 0x56, 0x95, 0x69, 0x69, 0x69, 0x55, 0xA6, 0xAA, 0xEA, 0x55, 0x69, 0x56, 0x9A, 0xA6, 0x55, 0x69, 0x6A, 0xA5, 0x55, 0xA5, 0x56, 0x9A, 0xAF, 0x5A, 0xAE, 0x97, 0xFF, 0x5F, 0x59, 0x59, 0x75, 0xFF, 0xE6, 0xAA, 0xE9, 0x7F, 0xF5, 0xF5, 0x96, 0x97, 0x5F, 0x59, 0x7A, 0xA5, 0xFF, 0xD7, 0xFF, 0x9A, 0xAF, 0x5A, 0xAE, 0xA5, 0x5A, 0x5E, 0x5D, 0x55, 0x75, 0xD5, 0xA6, 0xAA, 0xEA, 0x55, 0xA5, 0x55, 0xD5, 0x57, 0x55, 0x7D, 0x7A, 0xA5, 0x5A, 0xA5, 0x5A, 0x9A, 0xAF, 0x5A, 0xAE, 0xAB, 0xD6, 0x5E, 0x5D, 0x75, 0x75, 0xE5, 0xE6, 0xAA, 0xEA, 0xBD, 0x65, 0xF5, 0xD7, 0xD7, 0x5F, 0xF9, 0x7A, 0xA5, 0xFE, 0xAB, 0xD6, 0x9A, 0xAF, 0x5A, 0xAE, 0x95, 0x5F, 0x95, 0x7D, 0x79, 0x79, 0x55, 0xE6, 0xAA, 0xE9, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x55, 0x65, 0x55, 0x95, 0x5F, 0x9A, 0xAF, 0x5A, 0xAE, 0xAF, 0xFE, 0xAF, 0xFA, 0xFA, 0xFA, 0xFF, 0xE6, 0xAA, 0xEA, 0xFF, 0xEB, 0xEB, 0xEF, 0xAF, 0xBE, 0xAA, 0xFF, 0xFB, 0xFF, 0xEF, 0xFE, 0x9A, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xA9, 0xCC, 0x06, 0x55, 0x56, 0xAA, 0x95, 0xCC, 0x0B, 0x55, 0x5A, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAF, 0xCC, 0x06, 0xFF, 0xFA, 0xAA, 0xCC, 0x0C, 0xFF, 0xEA, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0x95, 0x69, 0x6A, 0xA5, 0xAA, 0xAA, 0xA6, 0xAA, 0xEA, 0xA9, 0x56, 0xA5, 0x5A, 0x5A, 0x5A, 0x55, 0xA5, 0x55, 0x96, 0xAA, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0x5F, 0x59, 0x7A, 0xA5, 0xEA, 0xAA, 0xA6, 0xAA, 0xEA, 0xA5, 0xF5, 0x97, 0xD6, 0x56, 0x5D, 0x7D, 0x65, 0xFF, 0xD7, 0xAA, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0x55, 0x5D, 0x7A, 0xA5, 0xEA, 0xAA, 0xA6, 0xAA, 0xEA, 0xA5, 0xEB, 0xD5, 0x57, 0x55, 0x5D, 0x7A, 0xF5, 0x5A, 0x97, 0xAA, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0x5F, 0x5D, 0x7A, 0xA5, 0xEA, 0xAA, 0xA6, 0xAA, 0xEA, 0xA5, 0xE5, 0x97, 0xD7, 0x5D, 0x5D, 0x79, 0x65, 0xFE, 0x97, 0xAA, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0x5E, 0x5D, 0x55, 0x65, 0x55, 0xAA, 0xA6, 0xAA, 0xEA, 0xA9, 0x57, 0xD7, 0x97, 0x5E, 0x5E, 0x55, 0xF5, 0x55, 0x95, 0x56, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xAA, 0xBE, 0xBE, 0xFF, 0xFB, 0xFF, 0xEA, 0xA6, 0xAA, 0xEA, 0xAA, 0xFF, 0xAF, 0xAF, 0xBE, 0xBE, 0xBF, 0xEB, 0xFF, 0xEF, 0xFF, 0xAA, 0x9A, 0xAF, 0x5A, 0xAE, 0xCC, 0x06, 0xAA, 0xA6, 0xAA, 0xEA, 0xCC, 0x0B, 0xAA, 0x9A, 0xAF, 0x5A, 0xA9, 0xCC, 0x06, 0x55, 0x56, 0xAA, 0x95, 0xCC, 0x0B, 0x55, 0x5A, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x6F, 0xCC, 0x18, 0xFF, 0xBF, 0xCC, 0x18, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_patcursor.c0000644000000000000000000000007013235646511020122 0ustar rootroot#include uint32_t patternCursorBMP[154]; protracker-2.3d.r92/src/gfx/pt_gfx_vumeter.c0000644000000000000000000000076613235646513017605 0ustar rootroot#include uint16_t vuMeterColors[48] = { 0x0F00, 0x0F00, 0x0F10, 0x0F10, 0x0F20, 0x0F20, 0x0F30, 0x0F30, 0x0F40, 0x0F50, 0x0F60, 0x0F70, 0x0F80, 0x0F90, 0x0FA0, 0x0FB0, 0x0FC0, 0x0FD0, 0x0FE0, 0x0FF0, 0x0FF0, 0x0EF0, 0x0EF0, 0x0DF0, 0x0DF0, 0x0CF0, 0x0CF0, 0x0BF0, 0x0BF0, 0x0AF0, 0x09F0, 0x09F0, 0x08F0, 0x08F0, 0x07F0, 0x07F0, 0x06F0, 0x06F0, 0x05F0, 0x05F0, 0x04F0, 0x04F0, 0x03F0, 0x03F0, 0x02F0, 0x01F0, 0x00F0, 0x00E0 }; uint32_t vuMeterBMP[480]; protracker-2.3d.r92/src/gfx/pt_gfx_editop.c0000644000000000000000000012135413235646513017377 0ustar rootroot#include // Final unpack length: 336 // Decoded length: 84 (first four bytes of buffer) const uint8_t editOpModeCharsPackedBMP[88] = { 0x00, 0x00, 0x00, 0x54, 0x95, 0x69, 0x7D, 0x65, 0x55, 0xD7, 0xD7, 0x5E, 0x5E, 0xFA, 0xF9, 0x56, 0x97, 0xD6, 0x5E, 0xBD, 0x79, 0x69, 0x57, 0xEB, 0xFE, 0x5A, 0x59, 0x79, 0x75, 0x55, 0xD7, 0xD7, 0x5E, 0x5E, 0xFA, 0xF5, 0xA5, 0x95, 0x97, 0x55, 0x5D, 0x75, 0x75, 0xE5, 0xEF, 0xAF, 0x95, 0x69, 0x7D, 0x65, 0xE5, 0xD7, 0x97, 0x95, 0x7E, 0xBF, 0xE5, 0x56, 0x97, 0xD6, 0x55, 0x7D, 0x7F, 0xE5, 0xEA, 0xAF, 0xAA, 0x95, 0x59, 0x7F, 0xF9, 0x56, 0xAB, 0xD6, 0x55, 0x7E, 0xFF, 0xE5, 0x55, 0xAD, 0x7F, 0xA5, 0xEA, 0x97, 0xAA, 0x5E, 0xAA, 0xFA }; // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t editOpScreen1PackedBMP[1481] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x15, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0xA5, 0xA5, 0x5A, 0x55, 0x59, 0x55, 0x6A, 0xAA, 0x96, 0x96, 0x55, 0x6A, 0xCC, 0x04, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xA9, 0x69, 0x69, 0x56, 0x95, 0x56, 0x55, 0x5A, 0xAA, 0xA5, 0xA5, 0x95, 0x5A, 0xCC, 0x04, 0xAA, 0xB6, 0xAA, 0x5A, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0x65, 0xD7, 0xD6, 0xB5, 0xFD, 0x7F, 0xFA, 0xAA, 0x97, 0x97, 0x5F, 0x5A, 0xCC, 0x04, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xA9, 0x59, 0x75, 0xF5, 0xAD, 0x7F, 0x5F, 0xFE, 0xAA, 0xA5, 0xE5, 0xD7, 0xD6, 0xCC, 0x04, 0xAA, 0xB6, 0xA9, 0x5E, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0x55, 0xD7, 0x97, 0xA5, 0xE9, 0x55, 0xAA, 0xAA, 0x97, 0x97, 0x55, 0x7E, 0xCC, 0x04, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xA9, 0x55, 0x75, 0xE5, 0xE9, 0x7A, 0x55, 0x6A, 0xAA, 0xA5, 0xE5, 0xD5, 0x5F, 0xCC, 0x04, 0xAA, 0xB6, 0xAA, 0x5E, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0xD5, 0xD7, 0x97, 0xA5, 0xE9, 0x7F, 0xEA, 0xAA, 0x97, 0x97, 0x5F, 0xFA, 0xCC, 0x04, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xA9, 0x75, 0x75, 0xE5, 0xE9, 0x7A, 0x5F, 0xFA, 0xAA, 0xA5, 0xE5, 0xD7, 0xFE, 0xCC, 0x04, 0xAA, 0xB6, 0xAA, 0x5E, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0xE5, 0xE5, 0x5F, 0xA5, 0xE9, 0x55, 0x6A, 0xAA, 0xA5, 0x5F, 0x5E, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xA9, 0x79, 0x79, 0x57, 0xE9, 0x7A, 0x55, 0x5A, 0xAA, 0xA9, 0x57, 0xD7, 0xCC, 0x05, 0xAA, 0xB6, 0xA9, 0x56, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0xEB, 0xEB, 0xFE, 0xAB, 0xEA, 0xFF, 0xFA, 0xAA, 0xAB, 0xFE, 0xBE, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x04, 0xAA, 0xFA, 0xFA, 0xFF, 0xAA, 0xFA, 0xBF, 0xFE, 0xAA, 0xAA, 0xFF, 0xAF, 0xCC, 0x05, 0xAA, 0xB6, 0xAA, 0xFF, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x15, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x15, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x69, 0x69, 0x56, 0x95, 0x56, 0x55, 0x5A, 0xAA, 0xA5, 0x56, 0xA5, 0x5A, 0x5A, 0x59, 0x69, 0x6A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5A, 0x5A, 0x55, 0xA5, 0x55, 0x95, 0x56, 0xAA, 0xA9, 0x55, 0xA9, 0x56, 0x96, 0x96, 0x5A, 0x5A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x59, 0x75, 0xF5, 0xAD, 0x7F, 0x5F, 0xFE, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0x5E, 0x5D, 0x59, 0x7A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x56, 0x5D, 0x7D, 0x6B, 0x5F, 0xD7, 0xFF, 0xAA, 0xA9, 0x7D, 0x65, 0xF5, 0x97, 0x97, 0x56, 0x5E, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x55, 0x75, 0xE5, 0xE9, 0x7A, 0x55, 0x6A, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0x55, 0x5D, 0x55, 0x7A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x55, 0x5D, 0x79, 0x7A, 0x5E, 0x95, 0x5A, 0xAA, 0xA9, 0x79, 0x75, 0xE5, 0xD5, 0x57, 0x55, 0x5E, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x75, 0x75, 0xE5, 0xE9, 0x7A, 0x5F, 0xFA, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0x55, 0x5D, 0x75, 0x7A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5D, 0x5D, 0x79, 0x7A, 0x5E, 0x97, 0xFE, 0xAA, 0xA9, 0x79, 0x75, 0xE5, 0xD5, 0x57, 0x5D, 0x5E, 0xAA, 0xAA, 0xAA, 0xB6, 0xAB, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x79, 0x79, 0x57, 0xE9, 0x7A, 0x55, 0x5A, 0xAA, 0xA5, 0x57, 0xE5, 0x5F, 0x5F, 0x5D, 0x79, 0x7A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5E, 0x5E, 0x55, 0xFA, 0x5E, 0x95, 0x56, 0xAA, 0xA9, 0x55, 0xF9, 0x57, 0xD7, 0xD7, 0x5E, 0x5E, 0xAA, 0xAA, 0xAA, 0xB6, 0xAF, 0xFF, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xFA, 0xFA, 0xFF, 0xAA, 0xFA, 0xBF, 0xFE, 0xAA, 0xAB, 0xFF, 0xAB, 0xFE, 0xBE, 0xBE, 0xFA, 0xFA, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xBE, 0xBE, 0xBF, 0xEA, 0xBE, 0xAF, 0xFF, 0xAA, 0xAA, 0xFF, 0xEA, 0xFF, 0xAF, 0xAF, 0xBE, 0xBE, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x15, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x15, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x95, 0x69, 0x69, 0x65, 0x55, 0xAA, 0xAA, 0x5A, 0x59, 0x55, 0xCC, 0x03, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x95, 0x6A, 0x55, 0xA5, 0x55, 0xA5, 0x5A, 0x5A, 0x59, 0x55, 0x6A, 0xAA, 0x96, 0x96, 0x55, 0x6A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0x5F, 0x59, 0x79, 0x75, 0xFF, 0xEA, 0xAA, 0x5E, 0x5D, 0x7D, 0x6A, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5F, 0x59, 0x7D, 0x6B, 0x5F, 0xD7, 0xD6, 0x5E, 0x5D, 0x7F, 0xFA, 0xAA, 0x97, 0x97, 0x5F, 0x5A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x79, 0x75, 0xEB, 0xE9, 0x7A, 0x55, 0x5D, 0x79, 0x75, 0x56, 0xAA, 0xAA, 0x5E, 0x5D, 0x55, 0xFA, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5E, 0x5D, 0x7A, 0xFA, 0x5E, 0x95, 0x57, 0x5E, 0x5D, 0x55, 0xAA, 0xAA, 0x97, 0x97, 0x55, 0x7E, 0xAA, 0xAA, 0xAA, 0xB6, 0xAB, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x79, 0x75, 0xE5, 0xA9, 0x7A, 0x5F, 0x5E, 0x55, 0xF5, 0xFF, 0xAA, 0xAA, 0x5E, 0x5D, 0x7F, 0xEA, 0xAA, 0xAA, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x5E, 0x5D, 0x79, 0x6A, 0x5E, 0x97, 0xD7, 0x95, 0x7D, 0x7F, 0xEA, 0xAA, 0x97, 0x97, 0x5F, 0xFA, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0x55, 0xF9, 0x57, 0xE9, 0x7A, 0x5E, 0x5E, 0x97, 0xE5, 0x55, 0xAA, 0xAA, 0x95, 0x7D, 0x7A, 0xCC, 0x03, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0x95, 0x7E, 0x55, 0xFA, 0x5E, 0x97, 0x97, 0xA5, 0xF9, 0x55, 0x6A, 0xAA, 0xA5, 0x5F, 0x5E, 0xCC, 0x03, 0xAA, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xBF, 0xEA, 0xFF, 0xAA, 0xFA, 0xBE, 0xBE, 0xAF, 0xAB, 0xFF, 0xEA, 0xAA, 0xAF, 0xFA, 0xFA, 0xCC, 0x03, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xAF, 0xFA, 0xBF, 0xEA, 0xBE, 0xAF, 0xAF, 0xAB, 0xEA, 0xFF, 0xFA, 0xAA, 0xAB, 0xFE, 0xBE, 0xCC, 0x03, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x15, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x15, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0x95, 0x6A, 0x55, 0xA5, 0x55, 0xA5, 0x5A, 0x5A, 0x59, 0x55, 0x6A, 0xAA, 0x95, 0x5A, 0x95, 0x69, 0x69, 0x65, 0xA5, 0xAA, 0xAA, 0xDA, 0xAA, 0xA5, 0x5A, 0x95, 0x69, 0x55, 0x69, 0x56, 0x96, 0x96, 0x55, 0x5A, 0xAA, 0xA5, 0x56, 0xA5, 0x5A, 0x5A, 0x59, 0x69, 0x6A, 0xAA, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xAA, 0x5F, 0x59, 0x7D, 0x6B, 0x5F, 0xD7, 0xD6, 0x5E, 0x5D, 0x7F, 0xFA, 0xAA, 0x97, 0xD6, 0x5F, 0x59, 0x79, 0x75, 0x65, 0xEA, 0xAA, 0xDA, 0xAA, 0x97, 0xD6, 0x5F, 0x5A, 0xD7, 0xF5, 0xF5, 0x97, 0x97, 0x5F, 0xFE, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0x5E, 0x5D, 0x59, 0x7A, 0xAA, 0xB6, 0xA5, 0xFF, 0xEB, 0x6A, 0xAA, 0x5E, 0x5D, 0x7A, 0xFA, 0x5E, 0x95, 0x57, 0x5E, 0x5D, 0x55, 0xAA, 0xAA, 0x97, 0x97, 0x5E, 0x5D, 0x55, 0x75, 0x55, 0xEA, 0xAA, 0xDA, 0xAA, 0x97, 0x97, 0x5E, 0xBE, 0x97, 0xA5, 0x55, 0xD7, 0x97, 0x55, 0x6A, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0x55, 0x5D, 0x55, 0x7A, 0xAA, 0xB6, 0xA5, 0x56, 0xAB, 0x6A, 0xAA, 0x5E, 0x5D, 0x79, 0x6A, 0x5E, 0x97, 0xD7, 0x95, 0x7D, 0x7F, 0xEA, 0xAA, 0x97, 0x97, 0x5E, 0x5D, 0x55, 0x75, 0xD5, 0xEA, 0xAA, 0xDA, 0xAA, 0x97, 0x97, 0x5E, 0x5A, 0x97, 0xA5, 0xF5, 0xE5, 0x5F, 0x5F, 0xFA, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0x55, 0x5D, 0x75, 0x7A, 0xAA, 0xB6, 0xA5, 0xFF, 0xAB, 0x6A, 0xAA, 0x95, 0x7E, 0x55, 0xFA, 0x5E, 0x97, 0x97, 0xA5, 0xF9, 0x55, 0x6A, 0xAA, 0x95, 0x5F, 0x95, 0x7D, 0x7D, 0x75, 0xE5, 0xEA, 0xAA, 0xDA, 0xAA, 0xA5, 0x5F, 0x95, 0x7E, 0x97, 0xA5, 0xE5, 0xE9, 0x7E, 0x55, 0x5A, 0xAA, 0xA5, 0x57, 0xE5, 0x5F, 0x5F, 0x5D, 0x79, 0x7A, 0xAA, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xAA, 0xAF, 0xFA, 0xBF, 0xEA, 0xBE, 0xAF, 0xAF, 0xAB, 0xEA, 0xFF, 0xFA, 0xAA, 0xAF, 0xFE, 0xAF, 0xFA, 0xFA, 0xFB, 0xEB, 0xEA, 0xAA, 0xDA, 0xAA, 0xAB, 0xFE, 0xAF, 0xFA, 0xAF, 0xAB, 0xEB, 0xEA, 0xFA, 0xBF, 0xFE, 0xAA, 0xAB, 0xFF, 0xAB, 0xFE, 0xBE, 0xBE, 0xFA, 0xFA, 0xAA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x15, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF }; // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t editOpScreen2PackedBMP[1502] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x0A, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x69, 0x55, 0xA5, 0x55, 0xA5, 0x5A, 0x95, 0x69, 0x55, 0xA5, 0x56, 0xA9, 0x6A, 0xCC, 0x09, 0xAA, 0xDA, 0x55, 0x69, 0x55, 0x65, 0xAA, 0x95, 0x56, 0x55, 0x59, 0x55, 0x6B, 0x6A, 0xAA, 0x96, 0x96, 0x95, 0x69, 0x6A, 0xA5, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xFA, 0xAB, 0x69, 0x7D, 0x65, 0xFF, 0xD7, 0xD6, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0xA9, 0x7A, 0xCC, 0x09, 0xAA, 0xDA, 0x5F, 0x59, 0x7F, 0xF5, 0xEA, 0x97, 0xFF, 0xB5, 0xFD, 0x7F, 0xFB, 0x6A, 0xAA, 0x97, 0x5F, 0xA5, 0xF9, 0x7A, 0xA5, 0xEA, 0xAA, 0xAA, 0xB6, 0xAB, 0xFA, 0xAB, 0x69, 0x55, 0xF5, 0x5A, 0x97, 0xAF, 0x5E, 0x5D, 0x55, 0xF5, 0xE5, 0xEA, 0xFA, 0xCC, 0x09, 0xAA, 0xDA, 0x5E, 0x5D, 0x56, 0xA5, 0xEA, 0x95, 0x6A, 0xA5, 0xE9, 0x56, 0xAB, 0x6A, 0xAA, 0x95, 0x7E, 0xA5, 0xE9, 0x7A, 0xA5, 0xEA, 0xAA, 0xAA, 0xB6, 0xAA, 0xFA, 0xAB, 0x69, 0x75, 0xE5, 0xFE, 0x97, 0x96, 0x5E, 0x5D, 0x75, 0xE5, 0xE5, 0xE9, 0x6A, 0xCC, 0x09, 0xAA, 0xDA, 0x5E, 0x5D, 0x7F, 0xA5, 0xEA, 0x97, 0xFA, 0xA5, 0xE9, 0x7F, 0xAB, 0x6A, 0xAA, 0x97, 0x5A, 0xA5, 0xE9, 0x7A, 0xA5, 0xEA, 0xAA, 0xAA, 0xB6, 0xAA, 0xFA, 0xAB, 0x69, 0x79, 0x65, 0x55, 0xA5, 0x5F, 0x95, 0x7D, 0x79, 0x65, 0x57, 0xE9, 0x7A, 0xCC, 0x09, 0xAA, 0xDA, 0x55, 0x7D, 0x55, 0x65, 0x55, 0x95, 0x56, 0xA5, 0xE9, 0x55, 0x6B, 0x6A, 0xAA, 0x97, 0x96, 0x95, 0x69, 0x55, 0x65, 0x55, 0xAA, 0xAA, 0xB6, 0xAB, 0xFE, 0xAB, 0x6A, 0xFA, 0xFB, 0xFF, 0xEB, 0xFE, 0xAF, 0xFA, 0xFA, 0xFB, 0xFF, 0xAA, 0xFA, 0xCC, 0x09, 0xAA, 0xDA, 0xBF, 0xFA, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xAB, 0xEA, 0xFF, 0xFB, 0x6A, 0xAA, 0xAF, 0xAF, 0xAF, 0xFA, 0xFF, 0xFB, 0xFF, 0xEA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x0A, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0x55, 0xA5, 0xA5, 0xA5, 0x5A, 0x5A, 0x59, 0x55, 0x69, 0x56, 0x95, 0x56, 0x55, 0x5A, 0x96, 0xCC, 0x06, 0xAA, 0xDA, 0x55, 0x59, 0x69, 0x69, 0x56, 0x96, 0x96, 0x95, 0x59, 0x55, 0x6B, 0x6A, 0xAA, 0xA5, 0x5A, 0x95, 0x69, 0x55, 0xA5, 0xA5, 0xAA, 0xAA, 0xB6, 0xA5, 0x56, 0xAB, 0x69, 0x7D, 0x65, 0xE5, 0xD7, 0xD6, 0x56, 0x5E, 0xD7, 0xFA, 0x5F, 0xAF, 0x5F, 0x5F, 0xFE, 0x97, 0xCC, 0x06, 0xAA, 0xDA, 0x5F, 0xFE, 0x55, 0xF5, 0xF5, 0x97, 0x97, 0x5F, 0xFD, 0x7F, 0xFB, 0x6A, 0xAA, 0x97, 0xD6, 0x5F, 0x59, 0x7D, 0x65, 0xE5, 0xEA, 0xAA, 0xB6, 0xAB, 0xF5, 0xAB, 0x69, 0x79, 0x75, 0xE5, 0xD5, 0x57, 0x55, 0x5E, 0x97, 0xAA, 0x5E, 0xA9, 0x7E, 0x55, 0x6A, 0xAF, 0xCC, 0x06, 0xAA, 0xDA, 0x55, 0xAA, 0x97, 0xE5, 0xEB, 0xD5, 0x57, 0x5D, 0x59, 0x56, 0xAB, 0x6A, 0xAA, 0x97, 0xAF, 0x5E, 0x5D, 0x55, 0xF9, 0x57, 0xEA, 0xAA, 0xB6, 0xAA, 0x57, 0xEB, 0x69, 0x75, 0xF5, 0xE5, 0xD7, 0xD7, 0x5D, 0x5E, 0x97, 0xAA, 0x5E, 0xA5, 0xFA, 0x5F, 0xFA, 0x96, 0xCC, 0x06, 0xAA, 0xDA, 0x5F, 0xEA, 0x55, 0xA5, 0xE5, 0x97, 0xD7, 0x5E, 0x5D, 0x7F, 0xAB, 0x6A, 0xAA, 0x97, 0x96, 0x5E, 0x5D, 0x7F, 0xEA, 0x5F, 0xAA, 0xAA, 0xB6, 0xA9, 0x7F, 0xAB, 0x6A, 0x59, 0x69, 0x57, 0xD7, 0x97, 0x5E, 0x5E, 0x97, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x5A, 0x97, 0xCC, 0x06, 0xAA, 0xDA, 0x55, 0x59, 0x7D, 0x69, 0x57, 0xD7, 0x97, 0x95, 0x5D, 0x55, 0x6B, 0x6A, 0xAA, 0xA5, 0x5F, 0x95, 0x7D, 0x7A, 0xAA, 0x5E, 0xAA, 0xAA, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xBE, 0xFA, 0xFF, 0xAF, 0xAF, 0xBE, 0xBE, 0xAF, 0xAA, 0xFF, 0xAF, 0xFF, 0xBF, 0xFE, 0xAF, 0xCC, 0x06, 0xAA, 0xDA, 0xBF, 0xFE, 0xFA, 0xFA, 0xFF, 0xAF, 0xAF, 0xAF, 0xFE, 0xFF, 0xFB, 0x6A, 0xAA, 0xAB, 0xFE, 0xAF, 0xFA, 0xFA, 0xAA, 0xBE, 0xAA, 0xAA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x04, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x69, 0xAA, 0x65, 0x55, 0x95, 0x56, 0x55, 0x6A, 0x55, 0xAA, 0x5A, 0xCC, 0x05, 0xAA, 0x96, 0xCC, 0x04, 0xAA, 0xDA, 0xAA, 0xA9, 0x55, 0x65, 0x56, 0xA5, 0x5A, 0x6A, 0x9A, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAF, 0xFE, 0xAB, 0x69, 0x69, 0x75, 0xFF, 0xED, 0x7F, 0x5F, 0x59, 0x7D, 0x6A, 0x5E, 0xCC, 0x05, 0xAA, 0x5F, 0xCC, 0x04, 0xAA, 0xDA, 0xAA, 0xA9, 0x7F, 0xF5, 0xF5, 0x97, 0xD6, 0x5A, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xAF, 0xAB, 0x69, 0x55, 0x75, 0x5A, 0xA9, 0x7A, 0x55, 0x7D, 0x79, 0x7A, 0xBE, 0xCC, 0x04, 0xAA, 0xA9, 0x7E, 0xCC, 0x04, 0xAA, 0xDA, 0xAA, 0xA9, 0x56, 0xA5, 0x57, 0xD7, 0x97, 0x55, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAB, 0xFE, 0xAB, 0x69, 0x7D, 0x75, 0xFE, 0xA9, 0x7A, 0x5D, 0x79, 0x79, 0x7A, 0x5A, 0xCC, 0x04, 0xAA, 0xA5, 0xFA, 0xCC, 0x04, 0xAA, 0xDA, 0xAA, 0xA9, 0x7F, 0xA5, 0xD7, 0x97, 0x97, 0x5F, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAA, 0xAF, 0xAB, 0x69, 0x79, 0x75, 0x55, 0xA9, 0x7A, 0x5E, 0x5A, 0x55, 0xFA, 0x5E, 0xCC, 0x04, 0xAA, 0x97, 0xEA, 0xCC, 0x04, 0xAA, 0xDA, 0xAA, 0xA9, 0x7A, 0xA5, 0xE5, 0xA5, 0x5F, 0x5E, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xFA, 0xFB, 0xFF, 0xEA, 0xFA, 0xBE, 0xBE, 0xBF, 0xEA, 0xBE, 0xCC, 0x04, 0xAA, 0xAF, 0xCC, 0x05, 0xAA, 0xDA, 0xAA, 0xAA, 0xFA, 0xAB, 0xEB, 0xEB, 0xFE, 0xBE, 0xBE, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x04, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x16, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x04, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x69, 0x69, 0x65, 0x55, 0x96, 0x96, 0x95, 0x5A, 0x96, 0xCC, 0x0D, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xA5, 0x55, 0xA5, 0x5A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0x55, 0xAB, 0x69, 0x75, 0xF5, 0xFF, 0xD7, 0x97, 0x5F, 0xFE, 0x97, 0xCC, 0x0D, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xAB, 0x5F, 0xD7, 0xD6, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0xFF, 0xEB, 0x69, 0x57, 0xE5, 0x5A, 0xA5, 0x5F, 0x95, 0x6A, 0xAF, 0xCC, 0x0D, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0x5E, 0x97, 0x97, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xA5, 0x56, 0xAB, 0x69, 0x75, 0xA5, 0xFE, 0xA9, 0x7E, 0xAF, 0x5A, 0x96, 0xCC, 0x0D, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0x5E, 0x97, 0x97, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xA5, 0xFF, 0xAB, 0x69, 0x79, 0x65, 0x55, 0xA9, 0x7A, 0x55, 0x7E, 0x97, 0xCC, 0x0D, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0x5E, 0xA5, 0x5F, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xFA, 0xFB, 0xFF, 0xEA, 0xFA, 0xBF, 0xFA, 0xAF, 0xCC, 0x0D, 0xAA, 0xDA, 0xCC, 0x03, 0xAA, 0xBE, 0xAB, 0xFE, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x15, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x15, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x04, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF }; // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t editOpScreen3PackedBMP[1721] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x0A, 0x55, 0x95, 0xCC, 0x04, 0x55, 0x65, 0xCC, 0x09, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x04, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x04, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0x9A, 0xA6, 0x95, 0x69, 0x69, 0x6A, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0x55, 0x5A, 0x55, 0xA5, 0xA5, 0xA5, 0x5A, 0xAA, 0xAA, 0xD9, 0x55, 0xA9, 0x56, 0xA5, 0x56, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xAA, 0xAA, 0x96, 0x97, 0xA5, 0xFA, 0x55, 0xFA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0x5F, 0xFD, 0x7D, 0x65, 0xE5, 0xD7, 0xD6, 0xAA, 0xAA, 0xD9, 0x7D, 0x65, 0xF5, 0x97, 0xFF, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAB, 0xFA, 0xAB, 0x6A, 0xAA, 0xAA, 0x95, 0x57, 0xA5, 0xEA, 0x97, 0xEA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0x55, 0xA9, 0x7A, 0xF5, 0x55, 0xD7, 0x97, 0xAA, 0xAA, 0xD9, 0x55, 0xF5, 0xE5, 0xE5, 0x5A, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xAA, 0xAA, 0x97, 0xD7, 0xA5, 0xEA, 0x55, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0x5F, 0xE9, 0x79, 0x65, 0xF5, 0xD7, 0x97, 0xAA, 0xAA, 0xD9, 0x7F, 0xE5, 0xE5, 0xEB, 0xD6, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xAA, 0xAA, 0x97, 0x97, 0x95, 0x69, 0x7D, 0x6A, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0x55, 0x5A, 0x55, 0xF5, 0xE5, 0xE5, 0x5F, 0xAA, 0xAA, 0xD9, 0x7A, 0xA9, 0x57, 0xD5, 0x5F, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAB, 0xFE, 0xAB, 0x6A, 0xAA, 0xAA, 0xAF, 0xAF, 0xAF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xBF, 0xFE, 0xBF, 0xEB, 0xEB, 0xEB, 0xFE, 0xAA, 0xAA, 0xDA, 0xFA, 0xAA, 0xFF, 0xAF, 0xFE, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x04, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xEF, 0xCC, 0x04, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x0A, 0x55, 0x95, 0xCC, 0x05, 0x55, 0x56, 0xCC, 0x08, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xA5, 0x56, 0xA5, 0x5A, 0x95, 0x6A, 0x55, 0x65, 0x55, 0xAA, 0xB6, 0x95, 0x56, 0x95, 0x69, 0x6A, 0xA5, 0x55, 0x95, 0x56, 0x55, 0x6A, 0xDA, 0xA6, 0xA9, 0xA5, 0x5A, 0x55, 0x6A, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0xD6, 0x5F, 0x59, 0x7F, 0xFB, 0x5F, 0xEA, 0xB6, 0x97, 0xFF, 0xA5, 0xF9, 0x7A, 0xAB, 0x5F, 0xD7, 0xFF, 0x5F, 0x5A, 0xDA, 0xA5, 0xA5, 0xD7, 0xD6, 0x5F, 0x5A, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xA5, 0x57, 0xD7, 0x97, 0x5E, 0x5E, 0x55, 0xAA, 0x5E, 0xAA, 0xB6, 0x95, 0x6A, 0xA5, 0xE9, 0x7A, 0xAA, 0x5E, 0x95, 0x6A, 0x55, 0x7E, 0xDA, 0xA5, 0x55, 0xD7, 0x97, 0x5E, 0x5E, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAA, 0xFE, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0x97, 0x5E, 0x5E, 0xBD, 0x6A, 0x5E, 0xAA, 0xB6, 0x97, 0xFA, 0xA5, 0xE9, 0x7A, 0xAA, 0x5E, 0x97, 0xFA, 0x5D, 0x7A, 0xDA, 0xA5, 0xF5, 0xD7, 0x97, 0x5E, 0x5E, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAB, 0xEA, 0xAB, 0x6A, 0xA5, 0x57, 0xE5, 0x5F, 0x95, 0x7D, 0x55, 0xFA, 0x5E, 0xAA, 0xB6, 0x97, 0xAA, 0x95, 0x69, 0x55, 0x6A, 0x5E, 0x95, 0x56, 0x5E, 0x5A, 0xDA, 0xA5, 0xE5, 0xE5, 0x5F, 0x55, 0x7E, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAF, 0xFF, 0xAB, 0x6A, 0xAB, 0xFF, 0xAB, 0xFE, 0xAF, 0xFA, 0xFF, 0xEA, 0xBE, 0xAA, 0xB6, 0xAF, 0xAA, 0xAF, 0xFA, 0xFF, 0xFA, 0xBE, 0xAF, 0xFF, 0xBE, 0xBE, 0xDA, 0xAB, 0xEB, 0xEB, 0xFE, 0xBF, 0xFA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xEF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x0A, 0x55, 0x95, 0x55, 0x55, 0x55, 0x59, 0xCC, 0x08, 0x55, 0x65, 0x55, 0x55, 0x55, 0x56, 0xCC, 0x03, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xAD, 0xCC, 0x08, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xAD, 0xCC, 0x08, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x65, 0xA5, 0xAA, 0xAA, 0x55, 0x5A, 0x55, 0xA5, 0x56, 0x95, 0x56, 0xB6, 0x95, 0x5A, 0x95, 0x6A, 0x55, 0xA5, 0xA5, 0x96, 0x96, 0x55, 0x6A, 0xDA, 0x55, 0xA5, 0x56, 0xAD, 0xA5, 0x5A, 0x5A, 0x5A, 0x55, 0xA5, 0x56, 0x95, 0x5A, 0xB6, 0x55, 0x59, 0x69, 0x6B, 0x65, 0x55, 0x95, 0x5A, 0xB6, 0xA5, 0x56, 0xAB, 0x69, 0x57, 0xEA, 0xAA, 0x5F, 0xFD, 0x7D, 0x65, 0xF5, 0x97, 0xFF, 0xB6, 0x97, 0xD6, 0x5F, 0x59, 0x7D, 0x65, 0xD7, 0xD7, 0x97, 0x5F, 0x5A, 0xD9, 0x7D, 0x65, 0xF5, 0xAD, 0x97, 0xD6, 0x5E, 0x5D, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0xB6, 0x5F, 0xFD, 0x79, 0x7B, 0x65, 0xFF, 0xD7, 0xD6, 0xB6, 0xAB, 0xF5, 0xAB, 0x6A, 0x5F, 0x95, 0x56, 0x55, 0xA9, 0x55, 0x75, 0xE5, 0xD5, 0x6A, 0xB6, 0x95, 0x5F, 0x55, 0x5D, 0x7A, 0xF5, 0x5F, 0x95, 0x57, 0x5E, 0x5E, 0xD9, 0x7A, 0xF5, 0x57, 0xED, 0x97, 0xAF, 0x55, 0x5D, 0x79, 0x75, 0x57, 0xD7, 0x97, 0xB6, 0x55, 0xA9, 0x79, 0x7B, 0x65, 0x5A, 0x97, 0x97, 0xB6, 0xA9, 0x57, 0xEB, 0x69, 0x56, 0xAF, 0xFF, 0x5F, 0xE9, 0x7D, 0x75, 0xE5, 0xD7, 0xFA, 0xB6, 0x97, 0xD6, 0x5F, 0x5D, 0x79, 0x65, 0xD6, 0x97, 0xD7, 0x5E, 0x5E, 0xD9, 0x79, 0x65, 0xF5, 0xAD, 0x97, 0x96, 0x5F, 0x5D, 0x79, 0x75, 0xD7, 0x97, 0x97, 0xB6, 0x5F, 0xE9, 0x79, 0x7B, 0x65, 0xFE, 0x97, 0x97, 0xB6, 0xAA, 0xF5, 0xAB, 0x65, 0xF5, 0xAA, 0xAA, 0x5E, 0xA9, 0x79, 0x75, 0x57, 0xD5, 0x56, 0xB6, 0x95, 0x5F, 0x5E, 0x5E, 0x55, 0xF5, 0xE5, 0x9F, 0xA7, 0x55, 0x7E, 0xDA, 0x55, 0xF5, 0x57, 0xED, 0xA5, 0x5F, 0x5E, 0x5E, 0x55, 0xF5, 0xE5, 0x95, 0x5F, 0xB6, 0x5E, 0xAA, 0x55, 0xFB, 0x65, 0xEA, 0x95, 0x5F, 0xB6, 0xA5, 0x57, 0xEB, 0x6B, 0xEB, 0xEA, 0xAA, 0xBE, 0xAA, 0xFA, 0xFB, 0xFF, 0xAF, 0xFF, 0xB6, 0xAF, 0xFE, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEE, 0xAB, 0xBF, 0xFA, 0xDA, 0xBF, 0xEB, 0xFF, 0xAD, 0xAB, 0xFE, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEF, 0xFE, 0xB6, 0xBE, 0xAA, 0xBF, 0xEB, 0x6B, 0xEA, 0xAF, 0xFE, 0xB6, 0xAB, 0xFF, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xAA, 0xAA, 0xAA, 0xAD, 0xCC, 0x08, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xCC, 0x08, 0xFF, 0xFB, 0xCC, 0x03, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x0A, 0x55, 0x95, 0xCC, 0x05, 0x55, 0x56, 0xCC, 0x08, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x65, 0xA5, 0x95, 0x5A, 0x95, 0x5A, 0x55, 0xA6, 0xA9, 0x95, 0x5A, 0xB6, 0x95, 0x5A, 0x5A, 0x5A, 0x55, 0x69, 0x56, 0x9A, 0xA6, 0x55, 0x6A, 0xDA, 0xA5, 0xA5, 0xA5, 0x5A, 0x5A, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0x55, 0xAB, 0x65, 0xE5, 0xD7, 0xD6, 0x5F, 0xFD, 0x7D, 0x65, 0xA5, 0xD7, 0xD6, 0xB6, 0x97, 0xD6, 0x56, 0x5D, 0x7F, 0xF5, 0xF5, 0x96, 0x97, 0x5F, 0x5A, 0xDA, 0xA5, 0xE5, 0xD7, 0xD6, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0xFF, 0xEB, 0x65, 0xE5, 0xD5, 0x5F, 0x95, 0x69, 0x55, 0x75, 0x55, 0xD5, 0x5F, 0xB6, 0x97, 0x97, 0x55, 0x5E, 0x55, 0xA5, 0x55, 0xD5, 0x57, 0x55, 0x7E, 0xDA, 0xA5, 0xE5, 0xD7, 0x97, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xA5, 0x56, 0xAB, 0x65, 0xE5, 0xD7, 0xFE, 0xAF, 0x59, 0x7D, 0x75, 0xF5, 0xD7, 0xFE, 0xB6, 0x97, 0x97, 0x5D, 0x5E, 0xBD, 0x65, 0xF5, 0xD7, 0xD7, 0x5F, 0xFA, 0xDA, 0xA9, 0x57, 0xD7, 0x97, 0x5E, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xA5, 0xFF, 0xAB, 0x69, 0x57, 0xD7, 0xAA, 0x55, 0x7D, 0x79, 0x75, 0xE5, 0xD7, 0xAA, 0xB6, 0x95, 0x5F, 0x5E, 0x5D, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0x5E, 0xAA, 0xDA, 0xAA, 0x5F, 0xA5, 0x5F, 0x55, 0x5A, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xFF, 0xAF, 0xAA, 0xBF, 0xFA, 0xFA, 0xFB, 0xEB, 0xEF, 0xAA, 0xB6, 0xAF, 0xFE, 0xBE, 0xBE, 0xFF, 0xEB, 0xEB, 0xEF, 0xAF, 0xBE, 0xAA, 0xDA, 0xAA, 0xBE, 0xAB, 0xFE, 0xBF, 0xFE, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xEF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF }; // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t editOpScreen4PackedBMP[1701] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x08, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x07, 0xAA, 0xA9, 0x55, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x56, 0x96, 0x96, 0x95, 0x69, 0x55, 0xA5, 0x56, 0xAA, 0xB6, 0x6A, 0x9A, 0x55, 0xA5, 0x55, 0xA5, 0x5A, 0x55, 0x6A, 0xD9, 0xAA, 0x69, 0x56, 0x95, 0x56, 0x95, 0x69, 0x55, 0xAA, 0xFD, 0x7B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0x97, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0xAA, 0xB6, 0x5A, 0x5D, 0x7D, 0x6B, 0xF5, 0xD7, 0xD6, 0x5F, 0x5A, 0xD9, 0x69, 0x75, 0xF5, 0xAF, 0xD7, 0x5F, 0x59, 0x7D, 0x6A, 0xA5, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAB, 0xFA, 0xAB, 0x6A, 0xA5, 0xEB, 0xD5, 0x57, 0x5E, 0x5D, 0x55, 0xF5, 0xE5, 0xEA, 0xB6, 0x55, 0x5D, 0x55, 0x7A, 0xA5, 0xD7, 0x97, 0x55, 0x7E, 0xD9, 0x55, 0x75, 0x55, 0xEA, 0x97, 0x5E, 0x5D, 0x55, 0xFA, 0x97, 0xEB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xA5, 0xE5, 0x97, 0xD7, 0x5E, 0x5D, 0x75, 0xE5, 0xE5, 0xEA, 0xB6, 0x5F, 0x5D, 0x7D, 0x75, 0xA5, 0xD7, 0x97, 0x5D, 0x7A, 0xD9, 0x7D, 0x75, 0xF5, 0xD6, 0x97, 0x5E, 0x5D, 0x75, 0xEA, 0x97, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAA, 0xFA, 0xAB, 0x6A, 0xA9, 0x57, 0xD7, 0x97, 0x95, 0x7D, 0x79, 0x65, 0x57, 0xEA, 0xB6, 0x5E, 0x5D, 0x79, 0x79, 0x57, 0xE5, 0x5F, 0x5E, 0x5A, 0xD9, 0x79, 0x75, 0xE5, 0xE5, 0x5F, 0x95, 0x7D, 0x79, 0x6A, 0xAF, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAB, 0xFE, 0xAB, 0x6A, 0xAA, 0xFF, 0xAF, 0xAF, 0xAF, 0xFA, 0xFA, 0xFB, 0xFF, 0xAA, 0xB6, 0xBE, 0xBE, 0xFA, 0xFA, 0xFF, 0xAB, 0xFE, 0xBE, 0xBE, 0xDA, 0xFA, 0xFB, 0xEB, 0xEB, 0xFE, 0xAF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x08, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x08, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x07, 0xAA, 0xA9, 0x55, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xA5, 0x56, 0x95, 0x56, 0x95, 0x59, 0x55, 0x65, 0x55, 0xAA, 0xB6, 0x6A, 0x9A, 0x55, 0xA5, 0xA5, 0xA5, 0x5A, 0x55, 0x6A, 0xD9, 0xAA, 0x69, 0x56, 0x96, 0x96, 0x95, 0x69, 0x55, 0xAA, 0xFD, 0x7B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0xFF, 0x5F, 0xFD, 0x7F, 0xFB, 0x5F, 0xEA, 0xB6, 0x5A, 0x5E, 0x97, 0xE5, 0x65, 0xD7, 0xD6, 0x5F, 0x5A, 0xD9, 0x69, 0x7A, 0x5F, 0x95, 0x97, 0x5F, 0x59, 0x7D, 0x6A, 0xA5, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xA5, 0x57, 0xD5, 0x6A, 0x95, 0x69, 0x56, 0xAA, 0x5E, 0xAA, 0xB6, 0x55, 0x5E, 0x97, 0xA5, 0x55, 0xD7, 0x97, 0x55, 0x7E, 0xD9, 0x55, 0x7A, 0x5E, 0x95, 0x57, 0x5E, 0x5D, 0x55, 0xFA, 0x97, 0xEB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAA, 0xFE, 0xAB, 0x6A, 0xA5, 0xD7, 0x97, 0xFA, 0xAF, 0x59, 0x7F, 0xAA, 0x5E, 0xAA, 0xB6, 0x5F, 0x5E, 0x97, 0xA5, 0xD5, 0xD7, 0x97, 0x5D, 0x7A, 0xD9, 0x7D, 0x7A, 0x5E, 0x97, 0x57, 0x5E, 0x5D, 0x75, 0xEA, 0x97, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAB, 0xEA, 0xAB, 0x6A, 0xA5, 0xE5, 0x95, 0x56, 0x55, 0x7D, 0x55, 0x6A, 0x5E, 0xAA, 0xB6, 0x5E, 0x5E, 0x55, 0xA5, 0xE5, 0xE5, 0x5F, 0x5E, 0x5A, 0xD9, 0x79, 0x79, 0x56, 0x97, 0x97, 0x95, 0x7D, 0x79, 0x6A, 0xAF, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAF, 0xFF, 0xAB, 0x6A, 0xAB, 0xEB, 0xEF, 0xFF, 0xBF, 0xFA, 0xFF, 0xFA, 0xBE, 0xAA, 0xB6, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEB, 0xFE, 0xBE, 0xBE, 0xDA, 0xFA, 0xFA, 0xFF, 0xAF, 0xAF, 0xAF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x08, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0A, 0x55, 0x65, 0xCC, 0x08, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x08, 0xAA, 0x55, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0x96, 0x96, 0x5A, 0x59, 0x55, 0xA9, 0x56, 0xAA, 0xAA, 0xB6, 0x95, 0x59, 0x69, 0x69, 0x55, 0xAA, 0xAA, 0xA5, 0x6A, 0xD9, 0xAA, 0x69, 0x56, 0x95, 0x56, 0x95, 0x69, 0x55, 0xA9, 0x7F, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xAA, 0x97, 0x97, 0x56, 0x5D, 0x7D, 0x65, 0xF5, 0xAA, 0xAA, 0xB6, 0x5F, 0xFD, 0x79, 0x75, 0xFF, 0xEA, 0xAA, 0x95, 0x7A, 0xD9, 0x69, 0x75, 0xF5, 0xAF, 0xD7, 0x5F, 0x59, 0x7D, 0x69, 0x55, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xAA, 0x97, 0x97, 0x55, 0x5D, 0x79, 0x75, 0xE5, 0xEA, 0xAA, 0xB6, 0x95, 0x69, 0x79, 0x79, 0x56, 0xA5, 0x5A, 0x5D, 0x7A, 0xD9, 0x55, 0x75, 0x55, 0xEA, 0x97, 0x5E, 0x5D, 0x55, 0xF9, 0x7D, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xAB, 0xFE, 0xAB, 0x6A, 0xAA, 0x97, 0x97, 0x5D, 0x5D, 0x79, 0x75, 0xE5, 0xEA, 0xAA, 0xB6, 0xAF, 0x59, 0x79, 0x7A, 0xF5, 0xAB, 0xFE, 0x55, 0x5A, 0xD9, 0x7D, 0x75, 0xF5, 0xD6, 0x97, 0x5E, 0x5D, 0x75, 0xEA, 0x55, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xAA, 0xA5, 0x5F, 0x5E, 0x5D, 0x55, 0xF9, 0x57, 0xEA, 0xAA, 0xB6, 0x55, 0x7E, 0x55, 0xF5, 0x57, 0xEA, 0xAA, 0xBD, 0x7E, 0xD9, 0x79, 0x75, 0xE5, 0xE5, 0x5F, 0x95, 0x7D, 0x79, 0x6A, 0xBF, 0xEB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xAF, 0xFE, 0xAB, 0x6A, 0xAA, 0xAB, 0xFE, 0xBE, 0xBE, 0xFF, 0xEA, 0xFF, 0xAA, 0xAA, 0xB6, 0xBF, 0xFA, 0xBF, 0xEB, 0xFF, 0xAA, 0xAA, 0xAA, 0xFA, 0xDA, 0xFA, 0xFB, 0xEB, 0xEB, 0xFE, 0xAF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x09, 0xAA, 0xB6, 0xCC, 0x08, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x09, 0xFF, 0xFB, 0xCC, 0x08, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x08, 0x55, 0x65, 0xCC, 0x0A, 0x55, 0x95, 0xCC, 0x09, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x08, 0xAA, 0x55, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x9A, 0xAD, 0xA9, 0x5A, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x6A, 0xA5, 0x55, 0x96, 0x96, 0xAA, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xD9, 0xAA, 0x69, 0x56, 0x96, 0x96, 0x95, 0x69, 0x55, 0xA9, 0x7F, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x56, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xA9, 0x7A, 0xA5, 0xFF, 0xD5, 0x97, 0xAA, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xD9, 0x69, 0x7A, 0x5F, 0x95, 0x97, 0x5F, 0x59, 0x7D, 0x69, 0x55, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0xFF, 0xEB, 0x6A, 0xA9, 0x7A, 0xA5, 0x5A, 0x95, 0x57, 0xAA, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xD9, 0x55, 0x7A, 0x5E, 0x95, 0x57, 0x5E, 0x5D, 0x55, 0xF9, 0x7D, 0x6B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xED, 0xA5, 0x56, 0xB6, 0xA5, 0x56, 0xAB, 0x6A, 0xA9, 0x7A, 0xA5, 0xFE, 0x97, 0x57, 0x5A, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xD9, 0x7D, 0x7A, 0x5E, 0x97, 0x57, 0x5E, 0x5D, 0x75, 0xEA, 0x55, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5F, 0xB6, 0xA5, 0xFF, 0xAB, 0x6A, 0xA9, 0x55, 0x65, 0x55, 0x97, 0x97, 0x5E, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xD9, 0x79, 0x79, 0x56, 0x97, 0x97, 0x95, 0x7D, 0x79, 0x6A, 0xBF, 0xEB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0x57, 0xAD, 0xAA, 0x7E, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xAA, 0xFF, 0xFB, 0xFF, 0xEF, 0xAF, 0xBE, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xFA, 0xFA, 0xFF, 0xAF, 0xAF, 0xAF, 0xFA, 0xFA, 0xFA, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xBF, 0xAD, 0xAA, 0xBA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x0A, 0xAA, 0xDA, 0xCC, 0x09, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x07, 0xFF, 0xFB, 0xCC, 0x0A, 0xFF, 0xEF, 0xCC, 0x0A, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF };protracker-2.3d.r92/src/gfx/bmp/0000755000000000000000000000000013235646510015145 5ustar rootrootprotracker-2.3d.r92/src/gfx/bmp/packing.txt0000644000000000000000000000237713235646507017341 0ustar rootrootIf you want to add/modify graphical datas in my PT clone, you need to run the BMPs through a packer (my packer is supplied - bmp2pth.c/bmp2pth.exe). Every bitmap (the packed ones) has four colors. Translation scheme (32-bit RGB to 2-bit palette look-up): 0x00000000 (palette[0]) -> 0 0x00BBBBBB (palette[1]) -> 1 0x00888888 (palette[2]) -> 2 0x00555555 (palette[3]) -> 3 (other RGB values = invalid, modify palette[] in pt_palette.c for other colors) Then each pixel is bit-packed like this (8-bit binary value): xx000000 = pixel 1 00xx0000 = pixel 2 0000xx00 = pixel 3 000000xx = pixel 4 (f.ex. 01001011) The data is then RLE encoded using the compactor found in ptcompacter.s in the PT1.3 source code, except that the "Lowest" (compactor code) variable should contain 204 (0xCC) instead of 181 (0xB5). WARNING: Due to the nature of the RLE packer, one 8-bit value is used as an ID to tell the RLE unpack routine that RLE data follows. This value is 0xCC (11001100b). When translated to 32-bit RGB, this is: 0x00555555, 0x00000000, 0x00555555, 0x00000000 (palette[3], palette[0], palette[3], palette[0]) This means that if these four values are repeated anywhere in the BMP files, you will mess up the RLE scheme. EOFprotracker-2.3d.r92/src/gfx/bmp/icon.bmp0000644000000000000000000001007013235646507016601 0ustar rootrootBM86(    DDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªwwwwwwDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªwwwwwwDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDîÿÀîÿÀDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªwwwwwwDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDprotracker-2.3d.r92/src/gfx/bmp/font.bmp0000644000000000000000000010047013235646503016617 0ustar rootrootBM86(   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿprotracker-2.3d.r92/src/gfx/bmp/looppins.bmp0000644000000000000000000000407013235646503017513 0ustar rootrootBM86(€   ÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿÿÿîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀÿÿÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿîÿÀîÿÀîÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿprotracker-2.3d.r92/src/gfx/bmp/samplervol.bmp0000644000000000000000000004313013235646504020035 0ustar rootrootBMXF6(ˆ! "F  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»ˆˆˆUUUˆˆˆ»»»UUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUUUUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»»»»UUU»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»ˆˆˆUUU»»»UUU»»»UUU»»»»»»»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUU»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUUUUUUUU»»»UUUUUUUUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUU»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUU»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»ˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUU»»»UUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/clear.bmp0000644000000000000000000003763013235646507016752 0ustar rootrootBM˜?6(h' b?  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/monoscope.bmp0000644000000000000000000012603013235646506017656 0ustar rootrootBM¬6(È7 â«  »»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/terminal_scrollbar.bmp0000644000000000000000000002403013235646506021527 0ustar rootrootBM(6( è â'  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/editop2.bmp0000644000000000000000000012603013235646505017221 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUUUUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/bmp2pth.c0000644000000000000000000002126313235646510016671 0ustar rootroot#include #include #include #include #define OUTPUT_PAD_SIZE 16 #define RLE_ID 0xCC // DO NOT change this! static uint8_t *ToPtr, *DataPtr, *a0, *a1; static int32_t DataLen, CompLen, d0, d1, d4, d7; int main(int argc, char *argv[]) { char input[4096 + 1], bitmap_magic[2], *out_filename; uint8_t p8_1, p8_2, p8_3, p8_4; int32_t bitmap_width, bitmap_height, bitmap_depth, bitmap_offset; int32_t x, y, i, oy, t; uint32_t *pixel_data, p32_1, p32_2, p32_3, p32_4; FILE *in, *out; #ifndef _DEBUG if (argc != 2) { printf("Usage: bmp2pth \n"); system("PAUSE"); return (-1); } strcpy(input, argv[1]); #else strcpy(input, "debug.bmp"); #endif in = fopen(input, "rb"); if (in == NULL) { printf("ERROR: Could not open input bitmap!\n"); system("PAUSE"); return (1); } out_filename = (char *)(malloc(strlen(input) + 3)); if (out_filename == NULL) { printf("ERROR: Out of memory!\n"); fclose(in); system("PAUSE"); return (1); } sprintf(out_filename, "%s.c", input); out = fopen(out_filename, "w"); if (out == NULL) { printf("ERROR: Could not open output bitmap!\n"); free(out_filename); fclose(in); system("PAUSE"); return (1); } fread(bitmap_magic, 1, 2, in); if (strncmp(bitmap_magic, "BM", 2) != 0) { printf("ERROR: Input is not a valid Windows bitmap!\n"); fclose(in); fclose(out); system("PAUSE"); return (1); } fseek(in, 0x0012, SEEK_SET); fread(&bitmap_width, 4, 1, in); fread(&bitmap_height, 4, 1, in); fseek(in, 0x001C, SEEK_SET); fread(&bitmap_depth, 4, 1, in); bitmap_depth &= 0xFF; fseek(in, 0x000A, SEEK_SET); fread(&bitmap_offset, 4, 1, in); fseek(in, bitmap_offset, SEEK_SET); if ((bitmap_depth != 16) && (bitmap_depth != 24) && (bitmap_depth != 32)) { printf("ERROR: Bitmap is not truecolor bitmap (16, 24, 32)\n"); fclose(in); fclose(out); system("PAUSE"); return (1); } pixel_data = (uint32_t *)(malloc(bitmap_width * bitmap_height * (bitmap_depth / 8))); if (pixel_data == NULL) { printf("ERROR: Out of memory!\n"); fclose(in); fclose(out); system("PAUSE"); return (1); } if (fread(pixel_data, bitmap_depth / 8, bitmap_width * bitmap_height, in) != (bitmap_width * bitmap_height)) { printf("ERROR: Could not copy bitmap data into memory!\n"); fclose(in); fclose(out); free(pixel_data); system("PAUSE"); return (1); } // mirror pixel data so we get the real deal for (y = 0; y < (bitmap_height / 2); y++) { for (x = 0; x < bitmap_width; x++) { oy = bitmap_height - 1 - y; t = pixel_data[y * bitmap_width + x]; pixel_data[y * bitmap_width + x] = pixel_data[oy * bitmap_width + x]; pixel_data[oy * bitmap_width + x] = t; } } DataLen = (bitmap_width * bitmap_height) / 4; DataPtr = (uint8_t *)(malloc(DataLen)); for (i = 0; i < DataLen; i++) { p32_1 = pixel_data[(i * 4) + 0]; p32_2 = pixel_data[(i * 4) + 1]; p32_3 = pixel_data[(i * 4) + 2]; p32_4 = pixel_data[(i * 4) + 3]; if (p32_1 == 0x00000000) p8_1 = 0; else if (p32_1 == 0x00BBBBBB) p8_1 = 1; else if (p32_1 == 0x00888888) p8_1 = 2; else if (p32_1 == 0x00555555) p8_1 = 3; else { printf("ERROR: Illegal pixel 0x%08X found. Stopping!\n", p32_1); free(pixel_data); free(DataPtr); system("PAUSE"); return (1); } if (p32_2 == 0x00000000) p8_2 = 0; else if (p32_2 == 0x00BBBBBB) p8_2 = 1; else if (p32_2 == 0x00888888) p8_2 = 2; else if (p32_2 == 0x00555555) p8_2 = 3; else { printf("ERROR: Illegal pixel 0x%08X found. Stopping!\n", p32_2); free(pixel_data); free(DataPtr); fclose(out); system("PAUSE"); return (1); } if (p32_3 == 0x00000000) p8_3 = 0; else if (p32_3 == 0x00BBBBBB) p8_3 = 1; else if (p32_3 == 0x00888888) p8_3 = 2; else if (p32_3 == 0x00555555) p8_3 = 3; else { printf("ERROR: Illegal pixel 0x%08X found. Stopping!\n", p32_3); free(pixel_data); free(DataPtr); fclose(out); system("PAUSE"); return (1); } if (p32_4 == 0x00000000) p8_4 = 0; else if (p32_4 == 0x00BBBBBB) p8_4 = 1; else if (p32_4 == 0x00888888) p8_4 = 2; else if (p32_4 == 0x00555555) p8_4 = 3; else { printf("ERROR: Illegal pixel 0x%08X found. Stopping!\n", p32_4); free(pixel_data); free(DataPtr); fclose(out); system("PAUSE"); return (1); } DataPtr[i] = (p8_1 << 6) | (p8_2 << 4) | (p8_3 << 2) | p8_4; } free(pixel_data); // The following mess is a direct 68k asm of ptcompactor.s found in // the ProTracker 1.3 source code archive. goto Main; JustCode: *a1++ = RLE_ID; // Output compacter code *a1++ = 0; // Output zero *a1++ = RLE_ID; // Output compacter code goto NextByte; // Do next byte Equal: d1 = d0; d4++; // Add one to equal-count if (d4 >= 255) // 255 or more? goto FlushBytes; // Yes, flush buffer goto NextByte; // Do next byte FlushBytes: if (d4 >= 3) // 4 or more goto FourOrMore; // Yes, output codes NotFour: *a1++ = d1; // Output byte if (--d4 != -1) goto NotFour; // Loop... d4 = 0; // Zero count goto NextByte; // Another byte FourOrMore: *a1++ = RLE_ID; // Output compacter code *a1++ = d4; // Output count *a1++ = d1; // Output byte d4 = 0; // Zero count d0++; goto NextByte; // Do next byte Main: ToPtr = (uint8_t *)(malloc(DataLen)); a0 = DataPtr; // From ptr. a1 = ToPtr; // To ptr. d7 = DataLen; // Length d4 = 0; // Clear count EqLoop: d0 = *a0++; // Get a byte if (d0 == RLE_ID) // Same as compacter code? goto JustCode; // Output JustCode if (d7 == 1) goto endskip; if (d0 == *a0) // Same as previous byte? goto Equal; // Yes, it was equal endskip: if (d4 > 0) // Not equal, any equal buffered? goto FlushBytes; // Yes, output them *a1++ = d0; // Output byte d4 = 0; NextByte: d7--; // Subtract 1 from length if (d7 > 0) goto EqLoop; // Loop until length = 0 if (d4 == 0) // Any buffered bytes? goto endok; // No, goto end if (d4 >= 3) // More than 4? goto FourOrMore2; // Yes, skip NotFour2: *a1++ = d0; // Output byte if (--d4 != -1) goto NotFour2; // Loop... goto endok; // Goto end; FourOrMore2: *a1++ = RLE_ID; // Output compacter code *a1++ = d4; // Output count *a1++ = d0; // Output byte endok: free(DataPtr); CompLen = (uint32_t)(a1) - (uint32_t)(ToPtr); fprintf(out, "#include \n\n"); fprintf(out, "// Final unpack length: %d\n", DataLen * 4); fprintf(out, "// Decoded length: %d (first four bytes of buffer)\n", DataLen); fprintf(out, "const uint8_t renameMe[%d] =\n{\n", CompLen + 4); fprintf(out, " 0x%02X, 0x%02X, 0x%02X, 0x%02X, ", (DataLen & 0xFF000000) >> 24, (DataLen & 0x00FF0000) >> 16, (DataLen & 0x0000FF00) >> 8, (DataLen & 0x000000FF) >> 0); for (i = 4; i < (CompLen + 4); ++i) { if (i == (CompLen + 3)) fprintf(out, "0x%02X\n};\n", ToPtr[i - 4]); else if ((i % OUTPUT_PAD_SIZE) == 0) fprintf(out, " 0x%02X, ", ToPtr[i - 4]); else if ((i % OUTPUT_PAD_SIZE) == (OUTPUT_PAD_SIZE - 1)) fprintf(out, "0x%02X,\n", ToPtr[i - 4]); else fprintf(out, "0x%02X, ", ToPtr[i - 4]); } free(ToPtr); fclose(out); printf("Done successfully.\n"); return (0); } protracker-2.3d.r92/src/gfx/bmp/yesnodialog.bmp0000644000000000000000000003763013235646510020173 0ustar rootrootBM˜?6(h' b?  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/terminal_top.bmp0000644000000000000000000003347013235646503020353 0ustar rootrootBM876(@  7  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/aboutscreen.bmp0000644000000000000000000012603013235646502020162 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆ»»»ˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆUUU»»»»»»UUU»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆUUUUUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆUUUUUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUU»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/editop1.bmp0000644000000000000000000012603013235646504017217 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/posed.bmp0000644000000000000000000023263013235646504016770 0ustar rootrootBM˜56(Èc b5  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/mutebuttons.bmp0000644000000000000000000000133013235646505020237 0ustar rootrootBMØ6( ¢  ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆprotracker-2.3d.r92/src/gfx/bmp/editop3.bmp0000644000000000000000000012603013235646506017223 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»UUUUUUˆˆˆˆˆˆ»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/sampler.bmp0000644000000000000000000051707013235646506017327 0ustar rootrootBM8ž6(@† ž  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUU»»»»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUUUUUUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆUUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»ˆˆˆˆˆˆUUU»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUU»»»»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆ»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUUUUˆˆˆ»»»UUUUUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUU»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUUUUUUUUˆˆˆ»»»UUUUUU»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUUˆˆˆ»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆ»»»UUUUUU»»»UUUUUUUUU»»»UUU»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»»»»ˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUU»»»»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆ»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUUUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»ˆˆˆ»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUUUUUUUU»»»UUU»»»ˆˆˆˆˆˆ»»»UUUUUU»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆ»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆUUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆUUU»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUU»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»UUU»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»UUUUUUˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUUˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/samplerfilters.bmp0000644000000000000000000006004013235646505020705 0ustar rootrootBM `6(º! ê_  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUUUUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»UUUUUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/spectrum.bmp0000644000000000000000000012603013235646505017515 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUUUUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/bmp2pth.exe0000644000000000000000000005700013235646507017234 0ustar rootrootMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELX‘Yà <ZàP@Àô× °P‘.text:<`P`.dataP@@0À.rdata `B@0@.eh_fram  p H@0@.bss˜€€0À.idataR@0À.CRT Z@0À.tls °\@0Àƒì‹D$ ‹‹=‘ÀwN=Às`=À…ÌÇD$Ç$ è@8ƒø„H…À…ç´&1ÀƒÄ´&=”ÀtI=–À„‰=“Àu×ÇD$Ç$èë7ƒø„­…Àt¶Ç$ÿиÿÿÿÿ먶ÇD$Ç$è´7ƒøuÍÇD$Ç$è›7¸ÿÿÿÿékÿÿÿ‰ö¼'=À…UÿÿÿÇD$Ç$èi7ƒøtY…À„4ÿÿÿÇ$ÿиÿÿÿÿé#ÿÿÿÇ$ ÿиÿÿÿÿéÿÿÿÇD$Ç$è!7Ç$èí¸ÿÿÿÿéåþÿÿÇD$Ç$è÷6ƒÈÿéÉþÿÿÇD$Ç$ èÛ6ƒÈÿé­þÿÿt&¼'U‰åSƒì¡ b@…ÀtÇD$ÇD$Ç$ÿЃì Ç$@èp7ƒì耡P@‰$èSèΡH€@…ÀtB‹Ì‘@£ P@‰D$‹C‰$èÛ6¡H€@‰D$‹C0‰$èÇ6¡H€@‰D$‹CP‰$è³6èÖ6‹ P@‰èñƒäðèièÄ6‹‰D$¡€@‰D$¡€@‰$èØ‰Ãè‘6‰$è!7‰ö¼'ƒì¡,€@P‰,€@‹<€@ˆ¡@€@ƒè£@€@¡@€@ƒøÿtëÑÇ@€@éÕ¡,€@P‰,€@ÆÌ¡,€@P‰,€@‹@€@ˆ¡,€@P‰,€@‹<€@ˆÇ@€@¡8€@ƒÀ£8€@ë~¡(€@P‰(€@¶¶À£8€@¡8€@=Ì„Óþÿÿ¡D€@ƒøt¡(€@¶¶Ð¡8€@9„êþÿÿë¡@€@…Àÿÿÿ¡,€@P‰,€@‹8€@ˆÇ@€@ë¡D€@ƒè£D€@¡D€@…À~égÿÿÿ¡@€@…Àty¡@€@ƒø/¡,€@P‰,€@‹8€@ˆ¡@€@ƒè£@€@¡@€@ƒøÿtEëÑ¡,€@P‰,€@ÆÌ¡,€@P‰,€@‹@€@ˆ¡,€@P‰,€@‹8€@ˆëë¡$€@‰$èQ(¡,€@‰Â¡ €@)‰У4€@‹„$T‰D$ ÇD$ÇD$Ç$¶a@è(¡0€@Áà‰D$ÇD$Ìa@‹„$T‰$è(¡0€@‰D$ÇD$èa@‹„$T‰$èâ'¡4€@ƒÀ‰D$ÇD$b@‹„$T‰$è¿'¡0€@¶È¡0€@Áø¶Ð¡0€@Áø¶À‹0€@Áë‰L$‰T$‰D$ ‰\$ÇD$€úuä…À…<¶WƒÇëÓv¶W€ú]„•¾Ú…Ûtp‹L$ wá@9݉t$$‰è‰Îë‹D$(<(…ÿt)9ë‰ètl…öhuè‰$è-‰Ç‹D$‰$è)Ç…ÿu׋T$ ‹t$$ƒâ ¶<]ta<tCƒÆ„ÀuîƒÄ<1À[^_]Ãf;\$tO¾_ƒÇé–þÿÿ½-‰÷éæþÿÿf‹t$$éÂþÿÿ´&…Òu ¶FƒÆë°vƒÆ¶<]uŸƒÄRc@t ‰ðèCñÿÿÇRc@‰4$‹M‰ú‰Øè.÷ÿÿƒø‰Áteô‰È[^_]ÃÇF ëÂt&ƒçtä‰Eà‰eä‰$èõ ƒÀÁèÁàè¯ïÿÿ‹Mà)Ä|$‰úëfƒÂƒÃ„ÀˆBÿt¶<uì¶CƒÃƒÂƒÃ„ÀˆBÿuå‰Mà‰<$è% …À‹eä‹Mà„xÿÿÿ‰ò‰Mäèåõÿÿ‹Mäéfÿÿÿ¶¼'WVSƒì‹t$ >Rc@tƒÄ[^_ô&‹F‹V …Àxÿ•~‹Fƒï‹ƒÃ‰$è  ƒÿÿuç‹F‰D$ ƒÄ[^_é‰ U‰åWVSƒì,ÇD$Ç$è# …À‰Ãt ‰$èm ‰ÃÇD$dc@Ç$èÿ‹u…öt‹E€8uqÇD$ÇD$fc@Ç$è„p‰t$¡€@‰$èÈ£€@‰t$ÇD$fc@‰$èW‰\$Ç$è—‰$è׋5€@eô[‰ð^_]ÉeÜÇD$‹EÇ$‰D$艉ÂDÁèÁàèðíÿÿ)ĉT$‹E|$ ‰<$‰D$è_1ɉE؃øf‰ G·‰}äf‰Eâvfƒø/„fƒø\„fƒ:„O·Eâf…À„á‹Mä‰Â‰Îëv¼'fƒú\‰Èt·PHf…Òt6fƒú/uæ·‰Èfƒú/u ƒÀ·fƒú/tôfƒú\tîf…Òt·P‰ÆHf…ÒuÊ9uä‚·Eâfƒø/„áfƒø\„׋uä¹.‰ðf‰ƒÀ1Òf‰ÇD$‰|$Ç$èøP‰T$¡€@‰Uä‰$è9‹U䣀@‰Æ‰|$‰$‰T$èÇé‹eÜéþÿÿv¼'Fþ9Eäƒa·Vþ‰Æfƒú/tèfƒú\tâ1Ò‰ùf‰P·fƒú/tfƒú\…´&ƒÁ·fƒø/tôfƒø\tî‰È)øƒøŽÞ‰ù‰Èf…Òt!ƒÁfƒú/f‰Qþtbfƒ8\ptW·P‰ðf…Òuß‹EØ1öf‰1‰|$‰D$‹E‰$è ƒøÿ‹utƉ\$Ç$è@‰$耋eÜeô‰ð[^_]Éð·fƒú\tfƒú/…yÿÿÿ¶ƒÀ·fƒú/tôfƒú\tîé\ÿÿÿ·Eâf;G…ëýÿÿfƒ…àýÿÿ‰\$Ç$èЉ$è‹uë‹f9W…ÿÿÿ·éÿÿÿG‰Eä·Gf‰Eâéžýÿÿ‹EäƒÀé.þÿÿ…«þÿÿ·Mâfƒù/t fƒù\…—þÿÿ·Mâf9H…‰þÿÿ·Pfƒú/„{þÿÿfƒú\„qþÿÿ‰ðéjþÿÿVS‰ÓìTT$‰$‰T$èNƒìƒøÿ‰ÆtZ1ÀK f‰C1Àë·CƒÀf=f‰CƒÑ·À¶D<„Àˆuà‹D$$XƒøvÇCÄT‰ð[^Ãf‰CÄT‰ð[^ÃèU‰Ã较ø‰t1èB8 tè5ƒ8t»è+Çë®èÇë¡èÇë”VS‰ÓìTT$‰$‰T$èvƒì…À‰Æt_1ÀK f‰C1Àë·CƒÀf=f‰CƒÑ·À¶D<„Àˆuà‹D$$Xƒøw‰CÄT‰ð[^ô&ÇCÄT‰ð[^ÃèñƒøtÒèwÇÄT‰ð[^ô&¼'UWVSì,‹„$@…À„ƒ€8„^|$ÇD$‰D$‰<$è€|$‰øtM‹ƒÀ‘ÿþþþ÷Ñ!Ê €€té÷€€„ ‰ÑуØ)ø¶T€ú/tC€ú\t>¹\f‰ ƒÀë0t&‹ƒÀ‘ÿþþþ÷Ñ!Ê €€té÷€€„­‰ÑуØ)øº*‰ûf‰‹ƒÃ‚ÿþþþ÷Ò!Ð%€€€€tê©€€uÁèƒÃ‰ÁÁƒÛ)ûƒ‰$èï…À‰Æ„„¨ƒÃ‰|$‰\$‰,$載ò‰èèSýÿÿƒøÿ‰†ts¸džÇf‰FÄ,‰ð[^_]ÃfÁêƒÀéHÿÿÿt&ÁêƒÀéëþÿÿt&èÓ1öÇëÂèÄÇ ëµè·1öÇ릉4$1öèS뚉ö¼'Sƒì‹\$…Ût+‹ƒP…À‰“~‹ƒ‰Úèdýÿÿ…Àt‰ØƒÄ[Ãè\Ç 1Àëìv¼'Sƒì‹\$ …Ût$‹ƒ‰$èÆƒì…Àt‰$èÏ1ÀƒÄ[ÃèÇ ¸ÿÿÿÿëé´&¼'Sƒì‹\$ …Ût‹ƒ‰$èvƒì…ÀuèÒÇ ƒÄ[ÉÚèâûÿÿƒøÿ‰ƒtãǃƒÄ[ô&ƒì ‹D$…Àt ‹€ƒÄ Ãè~Ç ¸ÿÿÿÿëê‰ö¼'VSƒì‹t$$‹\$ …öxO‰$èWÿÿÿ…öt7ƒ»ÿuë,´&‹ƒ‰Úè#üÿÿ…Àt‹ƒƒÀ9Ɖƒ܃Ä[^öèǃÄ[^Ãÿ%H’@ÿ%D’@ÿ%@’@ÿ%<’@ÿ%8’@ÿ%4’@ÿ%0’@ÿ%,’@ÿ%(’@ÿ%$’@ÿ% ’@ÿ%’@ÿ%’@ÿ%’@ÿ%’@ÿ% ’@ÿ%’@ÿ%’@ÿ%’@ÿ%ü‘@ÿ%ø‘@ÿ%ô‘@ÿ%ð‘@ÿ%ì‘@ÿ%è‘@ÿ%à‘@ÿ%Ü‘@ÿ%Б@ÿ%È‘@ÿ%À‘@ÿ%¼‘@ÿ%´‘@ÿ%°‘@ÿ%¨‘@ÿ%”‘@ÿ%‘@ÿ%Œ‘@ÿ%ˆ‘@ÿ%„‘@ÿ%€‘@ÿ%|‘@ÿ%x‘@ÿ%t‘@ÿ%p‘@ÿ%l‘@ÿ%h‘@ÿ%d‘@ÿ%`‘@ÿ%\‘@ÿ%X‘@ÿ%T‘@ÿ%P‘@ÿ% ‘@ÿ%œ‘@U‰å]éWÉÿÿÿÿÿÿàI@ÿÿÿÿýÿÿÿ@J@ÿÿÿÿlibgcc_s_dw2-1.dll__register_frame_info__deregister_frame_infolibgcj-16.dll_Jv_RegisterClassesUsage: bmp2pth PAUSErbERROR: Could not open input bitmap!ERROR: Out of memory!%s.cwERROR: Could not open output bitmap!BMERROR: Input is not a valid Windows bitmap!ERROR: Bitmap is not truecolor bitmap (16, 24, 32)ERROR: Could not copy bitmap data into memory!ERROR: Illegal pixel 0x%08X found. Stopping! #include // Final unpack length: %d // Decoded length: %d (first four bytes of buffer) const uint8_t renameMe[%d] = { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X }; 0x%02X, 0x%02X, 0x%02X, Done successfully.@(@Mingw runtime failure: VirtualQuery failed for %d bytes at address %p Unknown pseudo relocation protocol version %d. Unknown pseudo relocation bit size %d. .glob-1.0-mingw32.GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (MinGW.org GCC-6.3.0-1) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 5.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0GCC: (GNU) 6.3.0zR| ˆàŸÿÿ¥C R K 8t¡ÿÿçA…B DƒTH¢ÿÿ?C@{lp¢ÿÿC €|¢ÿÿC ”ˆ¢ÿÿ¨„¢ÿÿzR| ˆ(h¢ÿÿáA…B E†ƒ ÃAÆAÅ D H,£ÿÿ.A…B jÅ zR| ˆ $£ÿÿmA…B PƒYÅà zR| ˆ<X±ÿÿŸA…B F‡†ƒ- ÃAÆAÇAÅ G É ÃAÆAÇAÅ A zR| ˆ ´ÿÿÜ^ƒ¤ÃBƒzR| ˆHµÿÿ,N\ 4`µÿÿFAƒC j AÃA XŒµÿÿzR| ˆ€µÿÿCC U H `8<°µÿÿƒA†A ƒC d  FÃAÆC h  FÃAÆC x¶ÿÿzR| ˆ8èµÿÿ`A†A ƒC LI PC jC C AÃAÆDX ¶ÿÿ‚A†A ƒE L  CÃAÆI sH UC E  AÃAÆA < T¶ÿÿ›AƒC P CÃI LI gC C CÃK ZC (à´¶ÿÿ—C a A iC ] B LC zR| ˆ·ÿÿJA†A ƒC d<@·ÿÿðA…A ‡C†AƒG`XTC`i AÃAÆ AÇAÅK dPC`FPC`C AÃAÆ AÇAÅA 4¤È·ÿÿËj‡A †AƒC0ä Aà AÆAÇJ zR| ˆx¹ÿÿlC A A zR| ˆ4´¹ÿÿ“I†A ƒI ÃAÆA sÃAÆF ƒ†(TºÿÿcE†A ƒE H AÃAÆl€`ºÿÿµA…A ‡C†AƒCPn CÃAÆ AÇAÅC M DÃAÆ AÇAÅA C DÃAÆ AÇAÅA Tð°¼ÿÿA…A ‡C†AƒC@  AÃAÆ AÇAÅC K AÃAÆ AÇAÅA DHx¾ÿÿ\A‡A †CƒE @ Cà AÆAÇA CFà AÆAÇ(¾ÿÿIA†A ƒG o  AÃAÆF ,¼´¾ÿÿƒA…B C‡†ƒd ÃAÆAÇAÅ C ,ìÇÿÿãA…B F‡†ƒF ÃAÆAÇAÅ A @ÔÇÿÿ_A‡A †AƒC O Aà AÆAÇH wAà AÆAÇzR| ˆ<ØÇÿÿôA…B F‡†ƒ² ÃCÆAÇAÅ A P ÃAÆAÇAÅ A zR| ˆ@€ËÿÿÏA†A ƒHàPØCàL  CÃAÆC I  CÃAÆA L` Ìÿÿ¢A†A ƒHàPØCàG  CÃAÆH M  CÃAÆA [ CÃAÆ@°lÌÿÿ·A…A ‡A†AƒFÀM CÃAÆ AÇAÅC ôèÍÿÿFAƒCq AÃA (ÎÿÿBAƒC VC Q AÃA ,D8ÎÿÿXAƒC VC R AÃA eAÃthÎÿÿ'CQ A 4|ÎÿÿqA†A ƒC R  AÃAÆG N AÃAÆzR| ˆXÐÿÿ A…B AÅ P¼•P‘œÔ•œ‘¨„–¨‘P’h’€’Ž’š’¬’¼’Ê’Ü’ì’““.“F“V“t“‚“”“¤“®“º“Ê“Ú“ê“ø“ ”””*”6”>”J”T”^”j”r”|”†””˜”¢”ª”²”º”ĔΔڔä”î”ö”• •• •*•4•>•H•R•\•h•P’h’€’Ž’š’¬’¼’Ê’Ü’ì’““.“F“V“t“‚“”“¤“®“º“Ê“Ú“ê“ø“ ”””*”6”>”J”T”^”j”r”|”†””˜”¢”ª”²”º”ĔΔڔä”î”ö”• •• •*•4•>•H•R•\•h•ÐDeleteCriticalSectioníEnterCriticalSectionExitProcess-FindClose1FindFirstFileABFindNextFileAaFreeLibrary…GetCommandLineAÿGetLastErrorGetModuleHandleABGetProcAddressßInitializeCriticalSection/LeaveCriticalSection2LoadLibraryAuSetUnhandledExceptionFilter–TlsGetValue¾VirtualProtectÀVirtualQueryP_strdupR_stricollY__getmainargsx__mb_cur_max„__p__environ†__p__fmodeš__set_app_typeÜ_cexit_errnoE_fpreset__fullpath¢_iob§_isctype²_onexit»_pctypeò_setmode<abortDatexitKcallocXfclosecfopenefprintfkfreadlfreerfseekwfwrite¤malloc«mbstowcs°memcpy¹printf½putsÅreallocÌsetlocaleÎsignalÑsprintfÛstrcollÜstrcpyâstrlenåstrncmpösystemþtolowervfprintf.wcstombsKERNEL32.dllmsvcrt.dll(((((((((((((((((((((((((((((((((((((((((msvcrt.dll@(@ð'@°@°@`€@ @protracker-2.3d.r92/src/gfx/bmp/editop_modes.bmp0000644000000000000000000000257013235646503020326 0ustar rootrootBMx6(0 B  ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆprotracker-2.3d.r92/src/gfx/bmp/pat2smpdialog.bmp0000644000000000000000000003763013235646507020432 0ustar rootrootBM˜?6(h' b?  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆ»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/tracker.bmp0000644000000000000000000117547013235646506017324 0ustar rootrootBM8û6(@ÿ û  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUU»»»UUUˆˆˆ»»»»»»»»»ˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»UUUˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»UUU»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUU»»»UUU»»»UUUˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»UUUUUU»»»UUUUUUUUU»»»»»»»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆUUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUU»»»»»»ˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUUUUUˆˆˆ»»»UUUUUU»»»UUU»»»UUUˆˆˆ»»»UUUUUU»»»UUU»»»UUU»»»ˆˆˆUUUUUUˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆUUU»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»UUU»»»»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»ˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUU»»»»»»ˆˆˆUUU»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»ˆˆˆUUU»»»»»»»»»UUU»»»UUUˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆ»»»UUUUUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUUUU»»»UUU»»»UUU»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆUUU»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»UUU»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»ˆˆˆUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»ˆˆˆUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»UUU»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»ˆˆˆUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»ˆˆˆ»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUU»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»UUUUUUˆˆˆˆˆˆ»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUUUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/mod2wav.bmp0000644000000000000000000011007013235646504017226 0ustar rootrootBM86(À0   ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUU»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/diskop.bmp0000644000000000000000000036747013235646503017161 0ustar rootrootBM8ï6(@c ï  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆUUU»»»ˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUˆˆˆUUUUUUUUUˆˆˆUUUUUUUUUˆˆˆUUUˆˆˆUUUˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»UUUˆˆˆˆˆˆ»»»UUU»»»UUU»»»»»»»»»ˆˆˆ»»»»»»»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆ»»»UUU»»»UUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUUUU»»»UUU»»»UUU»»»UUU»»»ˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUˆˆˆ»»»UUUUUUˆˆˆ»»»UUU»»»ˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»UUU»»»»»»»»»UUUˆˆˆ»»»UUUˆˆˆ»»»»»»»»»UUUˆˆˆUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUU»»»»»»»»»UUU»»»»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆ»»»UUU»»»UUUˆˆˆ»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUUˆˆˆ»»»UUUUUU»»»UUU»»»UUU»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUU»»»UUUUUUUUU»»»UUU»»»ˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»UUU»»»UUU»»»UUUUUUUUU»»»UUUUUUUUU»»»UUU»»»UUU»»»UUUUUUUUU»»»UUUUUUUUU»»»UUU»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»»»»ˆˆˆ»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUU»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»»»»UUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/bmp/editop4.bmp0000644000000000000000000012603013235646504017222 0ustar rootrootBM¬6(È7 â«  ˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»»»»ˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUUUUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUU»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»UUUUUU»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUU»»»»»»UUUUUUUUUUUUUUUˆˆˆUUU»»»»»»UUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆ»»»»»»»»»ˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»»»»»»»UUUUUUˆˆˆ»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆ»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»UUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»UUU»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUU»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUˆˆˆˆˆˆUUUUUU»»»»»»»»»»»»»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUU»»»»»»UUUˆˆˆ»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆ»»»»»»»»»»»»»»»»»»UUU»»»»»»»»»»»»»»»»»»UUUˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»»»»»»»»»»UUUUUUˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUUUUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆUUUUUUUUU»»»»»»UUU»»»»»»UUUUUU»»»»»»ˆˆˆ»»»»»»UUUUUU»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»UUUUUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»ˆˆˆˆˆˆ»»»»»»»»»»»»»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUUUU»»»»»»UUUˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»UUUˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆ»»»ˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆ»»»»»»»»»ˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUˆˆˆUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆ»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»ˆˆˆprotracker-2.3d.r92/src/gfx/pt_gfx_posed.c0000644000000000000000000002112613235646511017217 0ustar rootroot#include // Final unpack length: 19800 // Decoded length: 4950 (first four bytes of buffer) const uint8_t posEdPackedBMP[1368] = { 0x00, 0x00, 0x13, 0x56, 0xCC, 0x0B, 0x55, 0x56, 0xCC, 0x16, 0x55, 0x65, 0xCC, 0x0B, 0x55, 0x56, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0x6A, 0xA5, 0x5A, 0x5A, 0x5A, 0x55, 0x65, 0x55, 0x95, 0x5A, 0x55, 0x5A, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x55, 0xA5, 0xAA, 0xA5, 0x5A, 0x5A, 0x5A, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7E, 0x56, 0x5D, 0x7F, 0xF5, 0xFF, 0xD7, 0xD6, 0xB5, 0xFE, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x7D, 0x65, 0xEA, 0x97, 0xD6, 0x5E, 0x5E, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7A, 0x55, 0x5E, 0x55, 0xA5, 0x5A, 0x95, 0x5F, 0xA5, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x55, 0x69, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x6A, 0x55, 0xA9, 0x56, 0x96, 0x96, 0x55, 0x59, 0x55, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x55, 0xF5, 0xEA, 0x95, 0x57, 0x95, 0x7E, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7A, 0x5D, 0x5E, 0xBD, 0x65, 0xFE, 0x97, 0x5E, 0xA5, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0x5F, 0x5F, 0xFD, 0x7D, 0x6A, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x7F, 0xE5, 0xEA, 0x97, 0xD7, 0xA5, 0xFA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA5, 0x5A, 0x5E, 0x5D, 0x55, 0xF5, 0x55, 0x97, 0x96, 0xA5, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x55, 0x7D, 0x55, 0xF5, 0xE5, 0xE9, 0x7A, 0x55, 0x7D, 0x55, 0x75, 0xEB, 0xD5, 0x7E, 0x55, 0xA9, 0x55, 0xFA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x7A, 0xA5, 0x55, 0x97, 0x97, 0xA5, 0xEA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAB, 0xFE, 0xBE, 0xBE, 0xFF, 0xEB, 0xFF, 0xEF, 0xAF, 0xAB, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x5F, 0xF9, 0x75, 0xE5, 0xE5, 0xE9, 0x7A, 0x5D, 0x79, 0x7D, 0x75, 0xE5, 0x97, 0x5A, 0x5F, 0xE9, 0x75, 0xEA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xFA, 0xAB, 0xFF, 0xEF, 0xAF, 0xAB, 0xEA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0x5E, 0xA9, 0x79, 0x69, 0x57, 0xE9, 0x7A, 0x5E, 0x59, 0x79, 0x79, 0x57, 0xD7, 0x96, 0x55, 0x59, 0x79, 0x6A, 0xAA, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0xBF, 0xCC, 0x0B, 0xFF, 0x6A, 0xAA, 0xAA, 0xBE, 0xAA, 0xFA, 0xFA, 0xFF, 0xAA, 0xFA, 0xBE, 0xBE, 0xFA, 0xFA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xFA, 0xFA, 0xAA, 0xAA, 0xBB, 0xCC, 0x0C, 0xFF, 0xCC, 0x0B, 0x55, 0x56, 0x6A, 0xCC, 0x15, 0xAA, 0xB5, 0xCC, 0x0B, 0x55, 0x56, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAA, 0x95, 0x5A, 0x95, 0x6A, 0x55, 0x69, 0x56, 0x95, 0x56, 0x95, 0x6A, 0x55, 0xA5, 0xA5, 0xAA, 0xAA, 0x55, 0x59, 0x55, 0xAA, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xD6, 0x5F, 0x59, 0x7F, 0xFA, 0x5F, 0xAD, 0x7F, 0xA5, 0xF9, 0x7D, 0x65, 0x65, 0xEA, 0xAA, 0x5F, 0xFD, 0x7D, 0x6A, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0x6A, 0x95, 0x5A, 0x55, 0x59, 0x6A, 0xA5, 0x55, 0x95, 0x56, 0x55, 0x5A, 0xAB, 0x6A, 0xAA, 0x95, 0x5F, 0x5E, 0x5E, 0x55, 0xAA, 0x5E, 0xA9, 0x7A, 0xA5, 0xE9, 0x79, 0x75, 0x55, 0xE5, 0x5A, 0x55, 0xA9, 0x79, 0x7A, 0xAA, 0xB6, 0x95, 0x5A, 0x95, 0x69, 0x55, 0x65, 0x55, 0x95, 0x56, 0x55, 0x69, 0x69, 0x6B, 0x6A, 0x97, 0xD6, 0x5F, 0xFD, 0x7A, 0xA5, 0xFF, 0xED, 0x7F, 0x5F, 0xFE, 0xAB, 0x6A, 0xAA, 0x97, 0xFE, 0x5E, 0x5E, 0xBD, 0x6A, 0x5E, 0xA9, 0x7A, 0xA5, 0xE9, 0x79, 0x75, 0xD5, 0xEB, 0xFE, 0x5F, 0xE9, 0x79, 0x7A, 0xAA, 0xB6, 0x97, 0xD6, 0x5F, 0x5A, 0xD7, 0xFB, 0x5F, 0xD7, 0xFF, 0x5F, 0x59, 0x59, 0x7B, 0x6A, 0x97, 0x97, 0x55, 0xA9, 0x7A, 0xA5, 0x56, 0xA9, 0x7A, 0x55, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xAA, 0x95, 0x7D, 0x55, 0xF9, 0x56, 0xA9, 0x7A, 0x95, 0x6A, 0x55, 0xF5, 0xE5, 0xEA, 0xAA, 0x55, 0x59, 0x55, 0xFA, 0xAA, 0xB6, 0x95, 0x5F, 0x55, 0x5E, 0x97, 0xAA, 0x5E, 0x95, 0x6A, 0x55, 0x7D, 0x55, 0x7B, 0x6A, 0x97, 0x97, 0x5F, 0xE9, 0x7A, 0xA5, 0xFF, 0xA9, 0x7A, 0x5F, 0xEA, 0xAB, 0x6A, 0xAA, 0xAF, 0xAA, 0xAF, 0xFA, 0xFF, 0xEA, 0xFF, 0xAA, 0xFA, 0xAF, 0xFA, 0xBF, 0xEB, 0xEB, 0xEA, 0xAA, 0xBF, 0xFE, 0xFF, 0xEA, 0xAA, 0xB6, 0x97, 0xFE, 0x5F, 0x5E, 0x97, 0xAA, 0x5E, 0x97, 0xFA, 0x5D, 0x79, 0x75, 0x7B, 0x6A, 0x95, 0x5F, 0x55, 0x59, 0x55, 0x65, 0x55, 0xA9, 0x7A, 0x55, 0x5A, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0x97, 0xAA, 0x5E, 0x5E, 0x97, 0xAA, 0x5E, 0x95, 0x56, 0x5E, 0x59, 0x79, 0x7B, 0x6A, 0xAF, 0xFE, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEA, 0xFA, 0xBF, 0xFE, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xAF, 0xAA, 0xBE, 0xBE, 0xAF, 0xAA, 0xBE, 0xAF, 0xFF, 0xBE, 0xBE, 0xFA, 0xFB, 0x6A, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xB6, 0xCC, 0x0B, 0xAA, 0xAB, 0x6F, 0xCC, 0x0B, 0xFF, 0xBF, 0xCC, 0x15, 0xFF, 0xFB, 0xCC, 0x08, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xD7, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAF, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x96, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xBF, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x7F, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x56, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x7F, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2B, 0x55, 0x56, 0x1B, 0x6A, 0xFF, 0xFB, 0x6C, 0x6A, 0xCC, 0x2A, 0xAA, 0xAB, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0x6A, 0xCC, 0x2A, 0xAA, 0xAB, 0x1B, 0x69, 0x69, 0x6B, 0x6C, 0x6A, 0xCC, 0x2A, 0xAA, 0xAB, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0x6A, 0xCC, 0x2A, 0xAA, 0xAB, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0x6A, 0xCC, 0x2A, 0xAA, 0xAB, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xBF, 0xCC, 0x2B, 0xFF, 0x1B, 0x69, 0x7D, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xFA, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xBF, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xD7, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAF, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x55, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0x97, 0xEB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAF, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0xBF, 0xFF, 0xFF, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x55, 0x55, 0x56, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x6A, 0xAA, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0xAB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x7D, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0xFB, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x7D, 0x6B, 0x6C, 0xCC, 0x2C, 0x00, 0x1B, 0x69, 0x55, 0xFB, 0x69, 0xCC, 0x2C, 0x55, 0x5B, 0x6A, 0xFF, 0xEB, 0x6A, 0xCC, 0x2C, 0xAA, 0xAB, 0x6A, 0xAA, 0xAB, 0xBF, 0xCC, 0x2D, 0xFF, 0xBF, 0xFF, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_mute_buttons.c0000644000000000000000000000067313235646510020640 0ustar rootroot#include // Final unpack length: 168 // Decoded length: 42 (first four bytes of buffer) const uint8_t muteButtonsPackedBMP[46] = { 0x00, 0x00, 0x00, 0x2A, 0xAF, 0xAA, 0xFE, 0xAA, 0xFA, 0xAB, 0xEA, 0xBF, 0xEA, 0xAA, 0xAF, 0xFE, 0xAA, 0xBE, 0xAF, 0xEA, 0xFA, 0xAF, 0xFF, 0xAA, 0xAA, 0xFF, 0xEA, 0xAB, 0xEB, 0xFE, 0xAA, 0xBE, 0xFF, 0xEA, 0xAA, 0xAA, 0xFE, 0xAF, 0xFA, 0xFB, 0xEB, 0xFF, 0xEA, 0xBE, 0xAA, 0xAA }; protracker-2.3d.r92/src/gfx/protracker.ico0000644000000000000000000004220613235646513017246 0ustar rootroot00 ¨%F  ¨î% ˆ –6 h@(0` ÿÿÿÿÿÿÿÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿwwwÿwwwÿDDDÿDDDÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿwwwÿwwwÿDDDÿDDDÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿDDDÿDDDÿÿÿÿÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿçÿçÿÿòÿçÿçÿÿòÿÿÿÿòÿÿÿÿòÿ€~ÿòÿ€~ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€òÿ€òÿ€òÿ€òÿ€òÿ€òÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€ÿòÿ€òÿ€òÿ€òÿ€òÿ€òÿ€òÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿòÿÿÿÿÿÿò( @ ÿÿDDDÿÿÿDDDÿÿÿDDDÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿDDDÿÿDDDÿwwwÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿDDDÿÿÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ>?ÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(0 ÿÿDDDÿÿÿDDDÿÿÿDDDÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿDDDÿÿDDDÿwwwÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿDDDÿÿÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿÿÿÿAÿÿÿAÿÿÿAûûÿAññÿAðàÿAð@Að?AðAðAðAðAðAð?AðAð?AðAðAðAðAÿÿÿAÿÿÿAÿÿÿAÿÿÿA(  DDDÿÿÿDDDÿÿÿDDDÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿDDDÿÿDDDÿwwwÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿwwwÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿªªªÿwwwÿDDDÿÿÿDDDÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿwwwÿDDDÿÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿDDDÿ¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬A¬Aprotracker-2.3d.r92/src/gfx/pt_gfx_terminal.c0000644000000000000000000001512213235646513017721 0ustar rootroot#include // Final unpack length: 3520 // Decoded length: 880 (first four bytes of buffer) const uint8_t termTopPackedBMP[379] = { 0x00, 0x00, 0x03, 0x70, 0xCC, 0x08, 0x55, 0x56, 0xCC, 0x42, 0x55, 0x95, 0x55, 0x56, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x41, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x41, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0x55, 0xA5, 0xAA, 0x95, 0x56, 0x95, 0x69, 0x55, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0x55, 0x69, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x6A, 0x55, 0xA9, 0x56, 0x96, 0x96, 0x55, 0x59, 0x55, 0xAA, 0xAA, 0x95, 0x56, 0x55, 0x59, 0x55, 0xA6, 0xA9, 0xA5, 0x5A, 0x5A, 0x5A, 0x55, 0xA5, 0xCC, 0x11, 0xAA, 0xD9, 0x69, 0x6B, 0x69, 0x7D, 0x65, 0xEA, 0x97, 0xFF, 0x5F, 0x59, 0x7D, 0x6B, 0x6A, 0xCC, 0x0F, 0xAA, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0x5F, 0x5F, 0xFD, 0x7D, 0x6A, 0xAA, 0xAD, 0x7F, 0x5F, 0xFD, 0x7D, 0x65, 0xA5, 0xE9, 0x7E, 0x56, 0x5D, 0x7D, 0x65, 0xEA, 0xCC, 0x10, 0xAA, 0xDA, 0x55, 0xFB, 0x69, 0x7A, 0xF5, 0xEA, 0x95, 0x6A, 0x55, 0x5D, 0x55, 0xFB, 0x6A, 0xCC, 0x0F, 0xAA, 0x55, 0x7D, 0x55, 0xF5, 0xE5, 0xE9, 0x7A, 0x55, 0x7D, 0x55, 0x75, 0xEB, 0xD5, 0x7E, 0x55, 0xA9, 0x55, 0xFA, 0xAA, 0xA9, 0x7A, 0x55, 0xA9, 0x55, 0xF5, 0x55, 0xE9, 0x7A, 0x55, 0x5D, 0x55, 0x75, 0xEA, 0xCC, 0x10, 0xAA, 0xDA, 0x97, 0xEB, 0x69, 0x79, 0x65, 0xEA, 0x97, 0xFA, 0x5F, 0x5D, 0x75, 0xEB, 0x6A, 0xCC, 0x0F, 0xAA, 0x5F, 0xF9, 0x75, 0xE5, 0xE5, 0xE9, 0x7A, 0x5D, 0x79, 0x7D, 0x75, 0xE5, 0x97, 0x5A, 0x5F, 0xE9, 0x75, 0xEA, 0xAA, 0xA9, 0x7A, 0x5F, 0xE9, 0x75, 0xE5, 0xF5, 0xE9, 0x7A, 0x5D, 0x5D, 0x7D, 0x75, 0xEA, 0xCC, 0x10, 0xAA, 0xDA, 0x55, 0xAB, 0x6A, 0x55, 0xF5, 0x55, 0x95, 0x56, 0x5E, 0x5D, 0x79, 0x6B, 0x6A, 0xCC, 0x0F, 0xAA, 0x5E, 0xA9, 0x79, 0x69, 0x57, 0xE9, 0x7A, 0x5E, 0x59, 0x79, 0x79, 0x57, 0xD7, 0x96, 0x55, 0x59, 0x79, 0x6A, 0xAA, 0xA9, 0x7A, 0x55, 0x59, 0x79, 0x65, 0xE5, 0xE5, 0x5A, 0x5E, 0x5D, 0x79, 0x75, 0x55, 0xCC, 0x10, 0xAA, 0xD9, 0x7D, 0x6B, 0x6A, 0xBF, 0xEB, 0xFF, 0xEF, 0xFF, 0xBE, 0xBE, 0xFA, 0xFB, 0x6A, 0xCC, 0x0F, 0xAA, 0xBE, 0xAA, 0xFA, 0xFA, 0xFF, 0xAA, 0xFA, 0xBE, 0xBE, 0xFA, 0xFA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xFA, 0xFA, 0xAA, 0xAA, 0xFA, 0xBF, 0xFE, 0xFA, 0xFB, 0xEB, 0xEB, 0xFE, 0xBE, 0xBE, 0xFA, 0xFB, 0xFF, 0xEA, 0xCC, 0x0F, 0xAA, 0xDA, 0xFA, 0xFB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x41, 0xAA, 0xDA, 0xAA, 0xAB, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xCC, 0x41, 0xFF, 0xEF, 0xFF, 0xFF }; // Final unpack length: 2552 // Decoded length: 638 (first four bytes of buffer) const uint8_t termScrollBarPackedBMP[642] = { 0x00, 0x00, 0x02, 0x7E, 0x55, 0x55, 0x59, 0xAA, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x69, 0x55, 0xAD, 0xA9, 0x5F, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xEB, 0x6A, 0xBF, 0xAD, 0xAA, 0xAA, 0xBB, 0xFF, 0xFF, 0xD5, 0x55, 0x56, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0xBF, 0xFF, 0xFD, 0x55, 0x55, 0x66, 0xAA, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0x57, 0xAD, 0xA9, 0x5E, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xFB, 0x6A, 0x9F, 0xAD, 0xAA, 0xBA, 0xB6, 0xAA, 0xAA, 0xEF, 0xFF, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_arrow.c0000644000000000000000000000073713235646512017245 0ustar rootroot#include #include "../pt_palette.h" const uint8_t arrowPaletteBMP[30] = { PAL_GENBKG, PAL_GENBKG, PAL_GENBKG, PAL_GENTXT, PAL_GENBKG, PAL_GENBKG, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENBKG, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENTXT, PAL_GENBKG, PAL_GENBKG, PAL_GENBKG, PAL_GENBKG, PAL_GENTXT, PAL_GENBKG, PAL_GENBKG }; protracker-2.3d.r92/src/gfx/pt_gfx_yes_no_dialog.c0000644000000000000000000000613213235646514020723 0ustar rootroot#include // Final unpack length: 4056 // Decoded length: 1014 (first four bytes of buffer) const uint8_t yesNoDialogPackedBMP[476] = { 0x00, 0x00, 0x03, 0xF6, 0xCC, 0x18, 0x55, 0x56, 0xCC, 0x18, 0x55, 0x5B, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAA, 0x55, 0xA5, 0x56, 0x95, 0x56, 0xAA, 0xA9, 0x69, 0x69, 0x56, 0x96, 0x96, 0xAA, 0xAA, 0x55, 0x65, 0xA5, 0x95, 0x5A, 0x55, 0x59, 0x55, 0xAA, 0xAF, 0x5A, 0xA9, 0x7D, 0x65, 0xF5, 0x97, 0xFF, 0xAA, 0xA9, 0x79, 0x75, 0xF5, 0x97, 0x97, 0xAA, 0xA9, 0x7F, 0xF5, 0xE5, 0xD7, 0xD6, 0x5F, 0xFE, 0xFD, 0x6A, 0xAF, 0x5A, 0xA9, 0x55, 0x75, 0x57, 0xD5, 0x6A, 0xAA, 0xAA, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0xAA, 0xAA, 0x55, 0xA5, 0xE5, 0xD5, 0x5F, 0x55, 0xAA, 0x95, 0xFA, 0xAF, 0x5A, 0xA9, 0x7D, 0x75, 0xD7, 0x97, 0xFA, 0xAA, 0xAA, 0x97, 0xE5, 0xE5, 0xD7, 0x97, 0xAA, 0xAA, 0xBD, 0x65, 0xE5, 0xD7, 0x5E, 0x5F, 0xEA, 0xAF, 0xEA, 0xAF, 0x5A, 0xA9, 0x79, 0x75, 0xE5, 0x95, 0x56, 0xAA, 0xAA, 0x97, 0xA9, 0x57, 0xE5, 0x5F, 0xAA, 0xA9, 0x55, 0xF9, 0x57, 0xD7, 0x96, 0x55, 0x5A, 0x96, 0xAA, 0xAF, 0x5A, 0xAA, 0xFA, 0xFB, 0xEB, 0xEF, 0xFF, 0xAA, 0xAA, 0xAF, 0xAA, 0xFF, 0xAB, 0xFE, 0xAA, 0xAA, 0xFF, 0xEA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xAF, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xCC, 0x05, 0xFF, 0xCC, 0x08, 0xAA, 0xAF, 0xCC, 0x03, 0xFF, 0xAA, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xCC, 0x05, 0xAA, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0xCC, 0x03, 0xAA, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xCC, 0x05, 0xAA, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0xCC, 0x03, 0xAA, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xA5, 0xA5, 0x95, 0x56, 0x95, 0x5A, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0x96, 0x96, 0x95, 0x6A, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xA5, 0xE5, 0xD7, 0xFF, 0x5F, 0xFE, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0x95, 0x97, 0x5F, 0x5A, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xA9, 0x57, 0xD5, 0x5A, 0x95, 0x6A, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0x95, 0x57, 0x5E, 0x5E, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xAA, 0x5F, 0x97, 0xFE, 0xAF, 0x5A, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0x97, 0x57, 0x5E, 0x5E, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xAA, 0x5E, 0x95, 0x56, 0x55, 0x7E, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0x97, 0x97, 0x95, 0x7E, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xAA, 0xBE, 0xAF, 0xFF, 0xBF, 0xFA, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0xAF, 0xAF, 0xAF, 0xFA, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAB, 0xCC, 0x05, 0xAA, 0x6A, 0xCC, 0x07, 0xAA, 0xAE, 0xCC, 0x03, 0xAA, 0x6A, 0xAA, 0xAF, 0x5A, 0xAA, 0xAA, 0xCC, 0x05, 0x55, 0x6A, 0xCC, 0x07, 0xAA, 0xA9, 0xCC, 0x03, 0x55, 0x6A, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x6F, 0xCC, 0x18, 0xFF, 0xBF, 0xCC, 0x18, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_icon.c0000644000000000000000000003126713235646511017044 0ustar rootroot#include uint32_t iconBMP[1024] = { 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00AAAAAA, 0x00AAAAAA, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00777777, 0x00777777, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00444444, 0x00444444, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE, 0x00C0FFEE }; protracker-2.3d.r92/src/gfx/pt_gfx_pat2smp_dialog.c0000644000000000000000000000656313235646512021023 0ustar rootroot#include // Final unpack length: 4056 // Decoded length: 1014 (first four bytes of buffer) const uint8_t pat2SmpDialogPackedBMP[520] = { 0x00, 0x00, 0x03, 0xF6, 0xCC, 0x18, 0x55, 0x56, 0xCC, 0x18, 0x55, 0x5B, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAA, 0x55, 0x6A, 0x55, 0xA9, 0x56, 0x96, 0x96, 0xAA, 0xAA, 0x55, 0xA5, 0xA5, 0xA5, 0x5A, 0x5A, 0xAA, 0x55, 0xA5, 0x55, 0x96, 0x96, 0xA5, 0xAA, 0xAF, 0x5A, 0xAA, 0x5F, 0x5A, 0x97, 0xE5, 0xF5, 0x97, 0x5F, 0xAA, 0xA9, 0x7D, 0x65, 0xE5, 0xD7, 0xD6, 0x5E, 0xAA, 0x97, 0xEB, 0x5F, 0xD7, 0x97, 0xA5, 0xEA, 0xAF, 0x5A, 0xAA, 0x55, 0x7E, 0x97, 0xA5, 0xEB, 0xD5, 0x7E, 0xAA, 0xA9, 0x76, 0x75, 0xE5, 0xD5, 0x57, 0x5E, 0xAA, 0x97, 0xAA, 0x5E, 0xA5, 0x5F, 0xAB, 0xEA, 0xAF, 0x5A, 0xAA, 0x5F, 0xFA, 0x97, 0xA5, 0xE5, 0x97, 0x5A, 0xAA, 0xA9, 0x75, 0xB5, 0xE5, 0xD7, 0xD7, 0x5E, 0xAA, 0x97, 0xAA, 0x5E, 0xA9, 0x7E, 0xA5, 0xAA, 0xAF, 0x5A, 0xAA, 0x5E, 0xAA, 0x55, 0xA9, 0x57, 0xD7, 0x96, 0xAA, 0xAA, 0x59, 0x69, 0x57, 0xD7, 0x97, 0x55, 0x5A, 0x55, 0xAA, 0x5E, 0xA9, 0x7A, 0xA5, 0xEA, 0xAF, 0x5A, 0xAA, 0xBE, 0xAA, 0xBF, 0xEA, 0xFF, 0xAF, 0xAF, 0xAA, 0xAA, 0xBE, 0xFA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xBF, 0xEA, 0xBE, 0xAA, 0xFA, 0xAB, 0xEA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xAA, 0xCC, 0x03, 0xFF, 0xEA, 0xAA, 0xCC, 0x03, 0xFF, 0xFA, 0xAA, 0xBF, 0xCC, 0x08, 0xFF, 0xAA, 0xAF, 0x5A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA, 0xBA, 0xCC, 0x08, 0xAA, 0x6A, 0xAF, 0x5A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA, 0xBA, 0xCC, 0x08, 0xAA, 0x6A, 0xAF, 0x5A, 0xAA, 0xE9, 0x69, 0x69, 0x56, 0x9A, 0xAA, 0xE9, 0x6A, 0xA9, 0x56, 0xA6, 0xAA, 0xBA, 0x95, 0x69, 0x55, 0xA9, 0x56, 0x95, 0x5A, 0x55, 0x5A, 0x6A, 0xAF, 0x5A, 0xAA, 0xE9, 0x79, 0x7A, 0x5F, 0x9A, 0xAA, 0xE9, 0x7A, 0xA5, 0xF5, 0xA6, 0xAA, 0xBA, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0xB5, 0xFE, 0x6A, 0xAF, 0x5A, 0xAA, 0xE9, 0x55, 0x7A, 0x5E, 0x9A, 0xAA, 0xE9, 0x7A, 0xA5, 0xE5, 0xE6, 0xAA, 0xBA, 0x55, 0x5D, 0x55, 0xF5, 0xE5, 0xD5, 0x5F, 0xA5, 0xEA, 0x6A, 0xAF, 0x5A, 0xAA, 0xE9, 0x7D, 0x7A, 0x5E, 0x9A, 0xAA, 0xE9, 0x7A, 0xA5, 0xE5, 0xE6, 0xAA, 0xBA, 0x5F, 0x5D, 0x7D, 0x65, 0xE5, 0xD7, 0x5E, 0xA5, 0xEA, 0x6A, 0xAF, 0x5A, 0xAA, 0xE9, 0x79, 0x79, 0x56, 0x9A, 0xAA, 0xE9, 0x55, 0x69, 0x57, 0xE6, 0xAA, 0xBA, 0x5E, 0x5D, 0x55, 0xF9, 0x57, 0xD7, 0x96, 0xA5, 0xEA, 0x6A, 0xAF, 0x5A, 0xAA, 0xEA, 0xFA, 0xFA, 0xFF, 0x9A, 0xAA, 0xEA, 0xFF, 0xFA, 0xFF, 0xA6, 0xAA, 0xBA, 0xBE, 0xBE, 0xFF, 0xEA, 0xFF, 0xAF, 0xAF, 0xAB, 0xEA, 0x6A, 0xAF, 0x5A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xEA, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA, 0xBA, 0xCC, 0x08, 0xAA, 0x6A, 0xAF, 0x5A, 0xAA, 0x95, 0x55, 0x55, 0x55, 0x5A, 0xAA, 0x95, 0x55, 0x55, 0x55, 0x56, 0xAA, 0xA5, 0xCC, 0x08, 0x55, 0x6A, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x5A, 0xCC, 0x17, 0xAA, 0xAF, 0x6F, 0xCC, 0x18, 0xFF, 0xBF, 0xCC, 0x18, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_tracker.c0000644000000000000000000015441413235646512017550 0ustar rootroot#include // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t monoScopePackedBMP[513] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0x9A, 0xA6, 0x95, 0x69, 0x69, 0x69, 0x56, 0xA5, 0x56, 0x95, 0x6A, 0x55, 0xA5, 0x56, 0x95, 0x56, 0xCC, 0x0C, 0xAA, 0xB6, 0xA9, 0x56, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0x96, 0x97, 0x5F, 0x59, 0x59, 0x75, 0xF5, 0x97, 0xFF, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0xFF, 0xCC, 0x0C, 0xAA, 0xB6, 0xA5, 0xF5, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0x95, 0x57, 0x5E, 0x5D, 0x55, 0x75, 0xE5, 0xE5, 0x5A, 0x5E, 0xBD, 0x79, 0x75, 0x57, 0xD5, 0x6A, 0xCC, 0x0C, 0xAA, 0xB6, 0xA5, 0x55, 0xEB, 0x6A, 0xCC, 0x0F, 0xAA, 0x97, 0xD7, 0x5E, 0x5D, 0x75, 0x75, 0xE5, 0xEB, 0xD6, 0x5E, 0x59, 0x79, 0x75, 0xFF, 0x97, 0xFA, 0xCC, 0x0C, 0xAA, 0xB6, 0xA5, 0xF5, 0xEB, 0x6A, 0xCC, 0x0F, 0xAA, 0x97, 0x97, 0x95, 0x7D, 0x79, 0x79, 0x57, 0xD5, 0x5F, 0x95, 0x7E, 0x55, 0xF5, 0xEA, 0x95, 0x56, 0xCC, 0x0C, 0xAA, 0xB6, 0xA5, 0xE5, 0xEB, 0x6A, 0xCC, 0x0F, 0xAA, 0xAF, 0xAF, 0xAF, 0xFA, 0xFA, 0xFA, 0xFF, 0xAF, 0xFE, 0xAF, 0xFA, 0xBF, 0xEB, 0xEA, 0xAF, 0xFF, 0xCC, 0x0C, 0xAA, 0xB6, 0xAB, 0xEB, 0xEB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xEB, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B, 0xCC, 0x30, 0x00, 0x1B }; // Final unpack length: 81600 // Decoded length: 20400 (first four bytes of buffer) const uint8_t trackerFramePackedBMP[8374] = { 0x00, 0x00, 0x4F, 0xB0, 0xCC, 0x08, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x0D, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0x56, 0xA5, 0x5A, 0x95, 0x5A, 0xAA, 0xAB, 0x69, 0x56, 0xAD, 0x95, 0x5A, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x95, 0x5A, 0x5A, 0xAA, 0x55, 0xA5, 0xA5, 0xCC, 0x03, 0xAA, 0xB6, 0xCC, 0x03, 0xAA, 0x55, 0x65, 0x55, 0xA5, 0x5A, 0x55, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0xAA, 0x69, 0x56, 0x95, 0x5A, 0x55, 0x69, 0x69, 0x69, 0x56, 0x96, 0x96, 0xAA, 0xB6, 0xAA, 0x5A, 0xAB, 0x6A, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0x5F, 0xFE, 0xAA, 0xAB, 0x6A, 0x5F, 0xAD, 0x97, 0xD6, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x97, 0xD6, 0x5E, 0xA9, 0x7D, 0x65, 0xE5, 0xEA, 0xAA, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xA9, 0x7F, 0xFB, 0x5F, 0xD7, 0xD6, 0x5F, 0x5A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x69, 0x75, 0xF5, 0x97, 0xD6, 0xBF, 0x59, 0x79, 0x75, 0xF5, 0x97, 0x97, 0xAA, 0xB6, 0xA9, 0x5E, 0xAB, 0x6A, 0xAA, 0xA5, 0x57, 0xD7, 0x97, 0x95, 0x6A, 0xAA, 0xAB, 0x6A, 0x5E, 0xAD, 0x97, 0x97, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAA, 0xAA, 0xAA, 0x95, 0x5F, 0x5E, 0xA9, 0x55, 0x79, 0x57, 0xEA, 0xAA, 0xAA, 0xAA, 0xB6, 0xCC, 0x03, 0xAA, 0x55, 0xAA, 0x5E, 0x97, 0x97, 0x55, 0x7E, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x55, 0x75, 0xE5, 0xD7, 0x97, 0xA5, 0x7D, 0x55, 0x75, 0x55, 0xD7, 0x97, 0xAA, 0xB6, 0xAA, 0x5E, 0xAB, 0x6A, 0xAA, 0xA5, 0xFF, 0x97, 0x97, 0xAF, 0x5A, 0xAA, 0xAB, 0x6A, 0x5E, 0xAD, 0x97, 0x97, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAA, 0xAA, 0xAA, 0x97, 0xFE, 0x5E, 0xA9, 0x7D, 0x7A, 0x5F, 0xCC, 0x03, 0xAA, 0xB6, 0xCC, 0x03, 0xAA, 0xBD, 0x6A, 0x5E, 0x97, 0x97, 0x5F, 0xFA, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7D, 0x75, 0xE5, 0xD7, 0x97, 0x97, 0xF9, 0x7D, 0x75, 0xF5, 0xE5, 0x5F, 0xAA, 0xB6, 0xAA, 0x5E, 0xAB, 0x6A, 0xAA, 0xA5, 0xEA, 0xA5, 0x5F, 0x55, 0x7E, 0xAA, 0xAB, 0x69, 0x56, 0xAD, 0x95, 0x5F, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x97, 0xAA, 0x55, 0x59, 0x79, 0x7A, 0x5E, 0xCC, 0x03, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xA9, 0x55, 0xFA, 0x5E, 0xA5, 0x5F, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xA9, 0x79, 0x79, 0x57, 0xD5, 0x5F, 0x55, 0x59, 0xFA, 0x75, 0xE5, 0xE9, 0x7E, 0xAA, 0xB6, 0xA9, 0x56, 0xAB, 0x6A, 0xAA, 0xAB, 0xEA, 0xAB, 0xFE, 0xBF, 0xFA, 0xAA, 0xAB, 0x6A, 0xFF, 0xAD, 0xAF, 0xFE, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAF, 0xAA, 0xBF, 0xFE, 0xFA, 0xFA, 0xBE, 0xCC, 0x03, 0xAA, 0xB6, 0xCC, 0x03, 0xAA, 0xFF, 0xEA, 0xBE, 0xAB, 0xFE, 0xBE, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xAA, 0xFA, 0xFA, 0xFF, 0xAF, 0xFE, 0xBF, 0xFE, 0xEA, 0xBB, 0xEB, 0xEA, 0xFA, 0xAA, 0xB6, 0xAA, 0xFF, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x0D, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x59, 0x55, 0x65, 0x56, 0x96, 0x96, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xA9, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x59, 0x55, 0x65, 0x56, 0x96, 0x96, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x56, 0x96, 0xAA, 0x55, 0x5A, 0x55, 0xA5, 0x56, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x55, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x6A, 0x55, 0x66, 0xA9, 0x95, 0x5A, 0xAA, 0xB6, 0xA5, 0x56, 0xAB, 0x6A, 0xA9, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0xB5, 0xFD, 0x7F, 0xF5, 0xF5, 0x95, 0x97, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xA9, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0xB5, 0xFD, 0x7F, 0xF5, 0xF5, 0x95, 0x97, 0xAA, 0xB6, 0xAA, 0xAA, 0xA5, 0xF5, 0x97, 0xAA, 0x5F, 0xFD, 0x7D, 0x65, 0xF5, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7D, 0x65, 0xF5, 0xAD, 0x7F, 0xBF, 0x59, 0x7F, 0xF5, 0xA5, 0xD7, 0xD6, 0xAA, 0xB6, 0xAB, 0xF5, 0xAB, 0x6A, 0xA9, 0x55, 0xF5, 0x55, 0xE9, 0x7A, 0xA5, 0xE9, 0x56, 0xA5, 0x57, 0xD5, 0x57, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xA9, 0x55, 0xF5, 0x55, 0xE9, 0x7A, 0xA5, 0xE9, 0x56, 0xA5, 0x57, 0xD5, 0x57, 0xAA, 0xB6, 0xAA, 0xAA, 0xA5, 0xEB, 0xD7, 0xAA, 0x55, 0x69, 0x55, 0x75, 0x57, 0xEA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x55, 0xF5, 0x55, 0xE9, 0x7A, 0xA5, 0x7E, 0x55, 0xA5, 0x55, 0xD5, 0x5F, 0xAA, 0xB6, 0xAA, 0x57, 0xEB, 0x6A, 0xA9, 0x7F, 0xE5, 0xF5, 0xE9, 0x7A, 0xA5, 0xE9, 0x7F, 0xA5, 0xD7, 0x97, 0x57, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xA9, 0x7F, 0xE5, 0xF5, 0xE9, 0x7A, 0xA5, 0xE9, 0x7F, 0xA5, 0xD7, 0x97, 0x57, 0xAA, 0xB6, 0xAA, 0xAA, 0xA5, 0xE5, 0x97, 0xAA, 0x5F, 0xF9, 0x7D, 0x75, 0xD7, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7F, 0xE5, 0xF5, 0xE9, 0x7A, 0x97, 0xFA, 0xBD, 0x65, 0xF5, 0xD7, 0xFE, 0xAA, 0xB6, 0xA9, 0x7F, 0xAB, 0x6A, 0xA9, 0x7A, 0xA5, 0xE5, 0xE9, 0x7A, 0xA5, 0xE9, 0x55, 0x65, 0xE5, 0x97, 0x97, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xA9, 0x7A, 0xA5, 0xE5, 0xE9, 0x7A, 0xA5, 0xE9, 0x55, 0x65, 0xE5, 0x97, 0x97, 0xAA, 0xB6, 0xAA, 0xAA, 0xA9, 0x57, 0xD5, 0x56, 0x55, 0x59, 0x79, 0x75, 0xE5, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xA9, 0x7A, 0xA5, 0xE5, 0xE9, 0x7A, 0x55, 0x59, 0x55, 0xF5, 0xE5, 0xD7, 0xAA, 0xAA, 0xB6, 0xA5, 0x55, 0xAB, 0x6A, 0xAA, 0xFA, 0xAB, 0xEB, 0xEA, 0xFA, 0xAB, 0xEA, 0xFF, 0xFB, 0xEB, 0xEF, 0xAF, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAA, 0xFA, 0xAB, 0xEB, 0xEA, 0xFA, 0xAB, 0xEA, 0xFF, 0xFB, 0xEB, 0xEF, 0xAF, 0xAA, 0xB6, 0xAA, 0xAA, 0xAA, 0xFF, 0xAF, 0xFF, 0xBF, 0xFE, 0xFA, 0xFB, 0xEB, 0xEA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xFA, 0xAB, 0xEB, 0xEA, 0xFA, 0xBF, 0xFE, 0xFF, 0xEB, 0xEB, 0xEF, 0xAA, 0xAA, 0xB6, 0xAB, 0xFF, 0xEB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xBB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x6A, 0xCC, 0x0D, 0xAA, 0xB5, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x0D, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0xAA, 0x95, 0x56, 0x5A, 0x5A, 0x55, 0x65, 0x55, 0x96, 0x96, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x95, 0x56, 0x55, 0x6A, 0x55, 0xA5, 0x55, 0xCC, 0x03, 0xAA, 0xB6, 0xA9, 0x55, 0x65, 0x56, 0xA5, 0x5A, 0x55, 0x5A, 0xAA, 0xA9, 0x56, 0x95, 0x5A, 0xAA, 0xAB, 0x6A, 0xAA, 0x95, 0x5A, 0x95, 0x6A, 0x55, 0x6A, 0xAA, 0x95, 0x56, 0x55, 0x6A, 0xAA, 0xAA, 0xB6, 0xA5, 0x56, 0xAB, 0x6A, 0xAA, 0xA5, 0xEA, 0x97, 0xFF, 0x56, 0x5D, 0x7F, 0xFB, 0x5F, 0xD7, 0x97, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x97, 0xFF, 0x5F, 0x5A, 0x97, 0xEB, 0x5F, 0xEA, 0xAA, 0xAA, 0xAA, 0xB6, 0xA9, 0x7F, 0xF5, 0xF5, 0xA9, 0x7E, 0xB5, 0xFE, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xD6, 0x5F, 0x59, 0x7F, 0xFA, 0xAA, 0x97, 0xFF, 0x5F, 0x5A, 0xAA, 0xAA, 0xB6, 0xAB, 0xF5, 0xAB, 0x6A, 0xAA, 0xA5, 0xEA, 0x95, 0x6A, 0x55, 0x5D, 0x75, 0x6A, 0x5E, 0x95, 0x57, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAA, 0xAA, 0xAA, 0x95, 0x5A, 0x5E, 0x5E, 0x97, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xB6, 0xA9, 0x56, 0xA5, 0xE5, 0xE9, 0x7A, 0xA5, 0xEA, 0xAA, 0xA5, 0xE5, 0xD5, 0x5F, 0xAA, 0xAB, 0x6A, 0xAA, 0x95, 0x5F, 0x5E, 0x5E, 0x55, 0xAA, 0xAA, 0x95, 0x5A, 0x5E, 0x5E, 0xAA, 0xAA, 0xB6, 0xA9, 0x57, 0xEB, 0x6A, 0xAA, 0xA5, 0xEA, 0x97, 0xFA, 0x5D, 0x5D, 0x79, 0x7A, 0x5E, 0x97, 0xD7, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAA, 0xAA, 0xAA, 0x97, 0xFE, 0x5E, 0x5E, 0x97, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xB6, 0xA9, 0x7F, 0xA5, 0xE5, 0xE9, 0x7A, 0xA5, 0xEA, 0xAA, 0xA5, 0xE5, 0xD7, 0xFE, 0x5A, 0xAB, 0x6A, 0xAA, 0x97, 0xFE, 0x5E, 0x5E, 0xBD, 0x6A, 0xAA, 0x97, 0xFE, 0x5E, 0x5D, 0x6A, 0xAA, 0xB6, 0xAA, 0xF5, 0xAB, 0x6A, 0xAA, 0xA5, 0x55, 0x95, 0x56, 0x5E, 0x5E, 0x55, 0x7A, 0x5E, 0x97, 0x97, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAA, 0xAA, 0xAA, 0x95, 0x56, 0x55, 0x7E, 0x55, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xB6, 0xA9, 0x55, 0x65, 0x57, 0xE5, 0x5A, 0xA5, 0xEA, 0xAA, 0xA9, 0x57, 0xD7, 0xAA, 0x5E, 0xAB, 0x6A, 0xAA, 0x97, 0xAA, 0x95, 0x7D, 0x55, 0xFA, 0xAA, 0x95, 0x56, 0x55, 0x7D, 0x7A, 0xAA, 0xB6, 0xA5, 0x57, 0xEB, 0x6A, 0xAA, 0xAB, 0xFF, 0xEF, 0xFF, 0xBE, 0xBE, 0xBF, 0xFA, 0xBE, 0xAF, 0xAF, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAF, 0xFF, 0xBF, 0xFA, 0xBF, 0xEA, 0xBE, 0xCC, 0x03, 0xAA, 0xB6, 0xAA, 0xFF, 0xFB, 0xFF, 0xAB, 0xFE, 0xAB, 0xEA, 0xAA, 0xAA, 0xFF, 0xAF, 0xAA, 0xBE, 0xAB, 0x6A, 0xAA, 0xAF, 0xAA, 0xAF, 0xFA, 0xFF, 0xEA, 0xAA, 0xAF, 0xFF, 0xBF, 0xFA, 0xFA, 0xAA, 0xB6, 0xAB, 0xFF, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0xCC, 0x0D, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x69, 0x55, 0x69, 0x56, 0x96, 0x96, 0x55, 0x59, 0x55, 0x65, 0xA5, 0x96, 0x96, 0x55, 0x5A, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xA5, 0x56, 0x95, 0x56, 0x95, 0x6A, 0x55, 0xA5, 0x56, 0x95, 0x5A, 0xAA, 0xAA, 0xB6, 0xA9, 0x55, 0xA9, 0x56, 0xA5, 0x56, 0x5A, 0x5A, 0xAA, 0xA9, 0x56, 0x95, 0x5A, 0xAA, 0xAB, 0x6A, 0xAA, 0x55, 0x69, 0x56, 0x9A, 0xA6, 0x55, 0x69, 0x6A, 0xA5, 0x55, 0x95, 0x5A, 0xAA, 0xB6, 0xAA, 0x56, 0xAB, 0x69, 0x7F, 0xFA, 0x5F, 0x95, 0x97, 0x5F, 0xFE, 0xD7, 0xF5, 0xE5, 0xD5, 0x97, 0x5F, 0xFE, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xA5, 0xF5, 0x97, 0xFF, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0xAA, 0xAA, 0xB6, 0xA9, 0x7D, 0x6A, 0x5F, 0x97, 0xFF, 0x5D, 0x7E, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0xAA, 0xAB, 0x6A, 0xA9, 0x7F, 0xF5, 0xF5, 0x96, 0x97, 0x5F, 0x59, 0x7A, 0xA5, 0xFF, 0xD7, 0xD6, 0xAA, 0xB6, 0xA9, 0x57, 0xAB, 0x69, 0x56, 0xAA, 0x5E, 0x95, 0x57, 0x55, 0xAA, 0x97, 0xA5, 0xE5, 0xD5, 0x57, 0x55, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAA, 0xA5, 0x57, 0xD5, 0x6A, 0x5E, 0xBD, 0x79, 0x75, 0x57, 0xD7, 0x97, 0xAA, 0xAA, 0xB6, 0xA9, 0x79, 0x7A, 0x5E, 0xA5, 0x5A, 0x55, 0xFA, 0xAA, 0xA5, 0xE5, 0xD5, 0x5F, 0xAA, 0xAB, 0x6A, 0xAA, 0x55, 0xA5, 0x55, 0xD5, 0x57, 0x55, 0x7D, 0x7A, 0xA5, 0x5A, 0x95, 0x5F, 0xAA, 0xB6, 0xA5, 0xD7, 0xAB, 0x69, 0x7F, 0xAA, 0x5E, 0x97, 0x57, 0x5F, 0xEA, 0x97, 0xA5, 0xE5, 0xD7, 0x57, 0x5F, 0xEA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAA, 0xA5, 0xD7, 0x97, 0xFA, 0x5E, 0x59, 0x79, 0x75, 0xD7, 0x97, 0x97, 0xAA, 0xAA, 0xB6, 0xA9, 0x79, 0x7A, 0x5E, 0xAB, 0xD6, 0x5D, 0x6A, 0xAA, 0xA5, 0xE5, 0xD7, 0xFE, 0x5A, 0xAB, 0x6A, 0xAA, 0xBD, 0x65, 0xF5, 0xD7, 0xD7, 0x5F, 0xF9, 0x7A, 0xA5, 0xFE, 0x97, 0x5E, 0xAA, 0xB6, 0xA5, 0x55, 0xAB, 0x69, 0x7A, 0xA9, 0x56, 0x97, 0x97, 0x55, 0x5A, 0x97, 0xA9, 0x57, 0xD7, 0x97, 0x55, 0x5A, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAA, 0xA5, 0xE5, 0x95, 0x56, 0x95, 0x7E, 0x55, 0xF5, 0xE5, 0x95, 0x5F, 0xAA, 0xAA, 0xB6, 0xA9, 0x55, 0xF9, 0x56, 0x95, 0x5F, 0x5E, 0x5A, 0xAA, 0xA9, 0x57, 0xD7, 0xAA, 0x5E, 0xAB, 0x6A, 0xA9, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x55, 0x65, 0x55, 0x97, 0x96, 0xAA, 0xB6, 0xAB, 0xD7, 0xEB, 0x6A, 0xFA, 0xAA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xAF, 0xAA, 0xFF, 0xAF, 0xAF, 0xBF, 0xFE, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAA, 0xAB, 0xEB, 0xEF, 0xFF, 0xAF, 0xFA, 0xBF, 0xEB, 0xEB, 0xEF, 0xFE, 0xAA, 0xAA, 0xB6, 0xAA, 0xFF, 0xEA, 0xFF, 0xAF, 0xFE, 0xBE, 0xBE, 0xAA, 0xAA, 0xFF, 0xAF, 0xAA, 0xBE, 0xAB, 0x6A, 0xAA, 0xFF, 0xEB, 0xEB, 0xEF, 0xAF, 0xBE, 0xAA, 0xFF, 0xFB, 0xFF, 0xEF, 0xAF, 0xAA, 0xB6, 0xAA, 0xAF, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xBB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x0D, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x6A, 0xCC, 0x0D, 0xAA, 0xB5, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xA9, 0x55, 0xA5, 0x5A, 0x6A, 0x99, 0x55, 0xA5, 0xAA, 0x95, 0x56, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xCC, 0x0D, 0xAA, 0xA9, 0x56, 0x96, 0x96, 0x95, 0x69, 0x55, 0xA5, 0x56, 0xA5, 0x5A, 0x95, 0x5A, 0x55, 0xA9, 0x56, 0x95, 0x5A, 0x55, 0x5A, 0xCC, 0x0A, 0xAA, 0xB6, 0xA9, 0x56, 0xAB, 0x6A, 0xAA, 0xA5, 0xFF, 0xD7, 0xD6, 0x5A, 0x5D, 0x7D, 0x65, 0xEA, 0x97, 0xFF, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xCC, 0x0D, 0xAA, 0xA5, 0xF5, 0x97, 0x97, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0x5F, 0xFD, 0x7D, 0x65, 0xF5, 0x97, 0xD6, 0x5F, 0xFE, 0xCC, 0x0A, 0xAA, 0xB6, 0xA5, 0xF5, 0xAB, 0x6A, 0xAA, 0xA9, 0x56, 0x95, 0x57, 0x55, 0x5D, 0x55, 0xF5, 0xEA, 0x95, 0x6A, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xCC, 0x0D, 0xAA, 0xA5, 0xD9, 0xD7, 0x97, 0x55, 0x5D, 0x79, 0x75, 0x57, 0xD5, 0x57, 0x95, 0x69, 0x7A, 0xF5, 0xE5, 0xD5, 0x5F, 0x55, 0xCC, 0x0B, 0xAA, 0xB6, 0xA5, 0x55, 0xEB, 0x6A, 0xAA, 0xAA, 0xF5, 0x97, 0xD7, 0x5F, 0x5D, 0x7F, 0xE5, 0xEA, 0x97, 0xFA, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xCC, 0x0D, 0xAA, 0xA5, 0xD6, 0xD7, 0x97, 0x5F, 0x5D, 0x79, 0x75, 0xD7, 0x97, 0xD7, 0xAF, 0x59, 0x79, 0x65, 0xE5, 0xD7, 0xFE, 0x5F, 0xEA, 0xCC, 0x0A, 0xAA, 0xB6, 0xA5, 0xF5, 0xEB, 0x6A, 0xAA, 0xA5, 0x57, 0xD7, 0x97, 0x5E, 0x5D, 0x7A, 0xA5, 0x55, 0x95, 0x56, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xCC, 0x0D, 0xAA, 0xA9, 0x65, 0xA5, 0x5F, 0x5E, 0x5D, 0x55, 0xF5, 0xE5, 0x97, 0x97, 0x55, 0x7E, 0x55, 0xF9, 0x57, 0xD7, 0xAA, 0x55, 0x5A, 0xCC, 0x0A, 0xAA, 0xB6, 0xA5, 0xE5, 0xEB, 0x6A, 0xAA, 0xAB, 0xFF, 0xAF, 0xAF, 0xBE, 0xBE, 0xFA, 0xAB, 0xFF, 0xEF, 0xFF, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xCC, 0x0E, 0xAA, 0xFB, 0xEB, 0xFE, 0xBE, 0xBE, 0xFF, 0xEB, 0xEB, 0xEF, 0xAF, 0xBF, 0xFA, 0xBF, 0xEA, 0xFF, 0xAF, 0xAA, 0xBF, 0xFE, 0xCC, 0x0A, 0xAA, 0xB6, 0xAB, 0xEB, 0xEB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xBB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x6A, 0xCC, 0x0D, 0xAA, 0xB5, 0xCC, 0x07, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x56, 0xCC, 0x09, 0x00, 0x55, 0x56, 0xCC, 0x09, 0x00, 0x55, 0x56, 0xCC, 0x09, 0x00, 0x55, 0x56, 0xCC, 0x09, 0x00, 0x55, 0x56, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x69, 0xAB, 0xCC, 0x09, 0x00, 0x65, 0xAB, 0xCC, 0x09, 0x00, 0x65, 0xAB, 0xCC, 0x09, 0x00, 0x66, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xA5, 0xA5, 0xA5, 0x5A, 0x5A, 0xA9, 0x69, 0x66, 0xA9, 0x95, 0x56, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x65, 0xEB, 0xCC, 0x09, 0x00, 0x6B, 0x6B, 0xCC, 0x09, 0x00, 0x6B, 0x6B, 0xCC, 0x09, 0x00, 0x67, 0x6B, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xA5, 0xE5, 0xD7, 0xD6, 0x5E, 0xA9, 0x79, 0x75, 0xA5, 0xD7, 0xFF, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x69, 0xEB, 0xCC, 0x09, 0x00, 0x69, 0xBB, 0xCC, 0x09, 0x00, 0x69, 0xBB, 0xCC, 0x09, 0x00, 0x65, 0x7B, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x79, 0x75, 0x55, 0xD5, 0x6A, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x69, 0xEB, 0xCC, 0x09, 0x00, 0x66, 0xEB, 0xCC, 0x09, 0x00, 0x6A, 0x6B, 0xCC, 0x09, 0x00, 0x6B, 0x7B, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xA9, 0x57, 0xD7, 0x97, 0x5E, 0xA9, 0x79, 0x75, 0xF5, 0xD7, 0xFA, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x65, 0x6B, 0xCC, 0x09, 0x00, 0x65, 0x6B, 0xCC, 0x09, 0x00, 0x65, 0xBB, 0xCC, 0x09, 0x00, 0x6A, 0x7B, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xAA, 0x5F, 0xA5, 0x5F, 0x55, 0x5A, 0x55, 0xF5, 0xE5, 0xD5, 0x56, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6B, 0xFB, 0xCC, 0x09, 0x00, 0x6B, 0xFB, 0xCC, 0x09, 0x00, 0x6B, 0xEB, 0xCC, 0x09, 0x00, 0x6A, 0xBB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAA, 0xAA, 0xBE, 0xAB, 0xFE, 0xBF, 0xFE, 0xBF, 0xEB, 0xEB, 0xEF, 0xFF, 0xAA, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xB6, 0xCC, 0x07, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xBF, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB5, 0xCC, 0x09, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xAA, 0x95, 0x56, 0x5A, 0x5A, 0x55, 0x65, 0x55, 0x96, 0x96, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xEA, 0x97, 0xFF, 0x56, 0x5D, 0x7F, 0xFB, 0x5F, 0xD7, 0x97, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xEA, 0x95, 0x5A, 0x55, 0x5D, 0x75, 0x6A, 0x5E, 0x95, 0x57, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xEA, 0x97, 0xFE, 0x5D, 0x5D, 0x79, 0x7A, 0x5E, 0x97, 0xD7, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0x55, 0x95, 0x56, 0x5E, 0x5E, 0x55, 0x7A, 0x5E, 0x97, 0x97, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAB, 0xFF, 0xEF, 0xFF, 0xBE, 0xBE, 0xBF, 0xFA, 0xBE, 0xAF, 0xAF, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xBB, 0xCC, 0x09, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB5, 0xCC, 0x09, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0x56, 0x95, 0x56, 0x55, 0x69, 0x55, 0x69, 0x56, 0x95, 0x56, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0xFF, 0x5F, 0x59, 0x7F, 0xF5, 0xF5, 0xAD, 0x7F, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0x57, 0xD5, 0x5A, 0x55, 0x7D, 0x55, 0xA5, 0x55, 0xE9, 0x7A, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xD7, 0x97, 0xFE, 0x5F, 0xF9, 0x7F, 0xE5, 0xF5, 0xE9, 0x7A, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xA5, 0xE5, 0x95, 0x56, 0x5E, 0xA9, 0x55, 0x65, 0xE5, 0xE9, 0x7A, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xAB, 0xEB, 0xEF, 0xFF, 0xBE, 0xAA, 0xFF, 0xFB, 0xEB, 0xEA, 0xFA, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0xCC, 0x09, 0x00, 0x6A, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xBB, 0xCC, 0x09, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xCC, 0x09, 0x00, 0xBF, 0xFF, 0xCC, 0x09, 0x00, 0xBF, 0xFF, 0xCC, 0x09, 0x00, 0xBF, 0xFF, 0xCC, 0x09, 0x00, 0xBF, 0xFF, 0x6A, 0xCC, 0x0B, 0xAA, 0xB5, 0xCC, 0x09, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0xCC, 0x30, 0x55, 0x56, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xA5, 0x56, 0x95, 0x56, 0x55, 0x69, 0x6A, 0xA5, 0x55, 0x96, 0x96, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA9, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xA5, 0xF5, 0x97, 0xFF, 0x5F, 0x59, 0x7A, 0xA5, 0xFF, 0xD5, 0x97, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x6A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0xCC, 0x06, 0x56, 0x66, 0x56, 0x56, 0xAA, 0xAA, 0x56, 0xA5, 0x65, 0xAA, 0xA5, 0x66, 0xA5, 0x65, 0xA5, 0x6A, 0xCC, 0x18, 0xAA, 0xAB, 0x6A, 0xA5, 0x57, 0xD5, 0x5A, 0x55, 0x7D, 0x7A, 0xA5, 0x56, 0x95, 0x57, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0x95, 0x5A, 0xDA, 0x95, 0xEB, 0x6A, 0xAA, 0x77, 0x77, 0x77, 0x9F, 0x77, 0x77, 0x7F, 0x77, 0x7F, 0x77, 0xAA, 0x66, 0xB7, 0xAB, 0x77, 0x6A, 0xA7, 0xF7, 0xA7, 0x77, 0x67, 0xFA, 0xCC, 0x18, 0xAA, 0xAB, 0x6A, 0xA5, 0xD7, 0x97, 0xFE, 0x5F, 0xF9, 0x7A, 0xA5, 0xFF, 0x97, 0x57, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0x6B, 0x6A, 0xAA, 0x57, 0x5B, 0x77, 0x9E, 0x5B, 0x57, 0x7A, 0x5B, 0x5A, 0x5B, 0xAA, 0x77, 0x57, 0xA5, 0x77, 0x7A, 0xA7, 0xA7, 0xA7, 0x77, 0x75, 0xCC, 0x19, 0xAA, 0xAB, 0x6A, 0xA5, 0xE5, 0x95, 0x56, 0x5E, 0xA9, 0x55, 0x65, 0x55, 0x97, 0x97, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0x95, 0xFB, 0x6A, 0xAA, 0x7F, 0x76, 0x77, 0x9E, 0x76, 0x77, 0x7A, 0x76, 0x7E, 0x76, 0xAA, 0x77, 0x7F, 0xAB, 0x77, 0x7A, 0xA7, 0xA7, 0xA7, 0x77, 0x77, 0xEA, 0xCC, 0x18, 0xAA, 0xAB, 0x6A, 0xAB, 0xEB, 0xEF, 0xFF, 0xBE, 0xAA, 0xFF, 0xFB, 0xFF, 0xEF, 0xAF, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xA5, 0x7A, 0xDA, 0xA7, 0xEB, 0x6A, 0xAA, 0x7A, 0x77, 0x57, 0x9E, 0x77, 0x77, 0x56, 0x77, 0x56, 0x77, 0xAA, 0x9B, 0x56, 0x65, 0x75, 0xBA, 0xA5, 0x65, 0x65, 0x77, 0x75, 0x6A, 0xCC, 0x18, 0xAA, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAB, 0xFA, 0xDA, 0xAB, 0xAB, 0x6A, 0xAA, 0xBA, 0xBB, 0xBF, 0xAE, 0xBB, 0xBB, 0xBF, 0xBB, 0xBF, 0xBB, 0xAA, 0xAE, 0xBF, 0xBB, 0xFB, 0xEA, 0xAB, 0xFB, 0xFB, 0xFB, 0xBB, 0xFA, 0xCC, 0x18, 0xAA, 0xAB, 0x6A, 0xCC, 0x0B, 0xAA, 0xB6, 0xCC, 0x09, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0xBF, 0xCC, 0x0B, 0xFF, 0xFB, 0xCC, 0x09, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xCC, 0x30, 0xFF, 0xCC, 0x4E, 0x55, 0x56, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xA5, 0x56, 0x95, 0x69, 0x69, 0x69, 0x55, 0x96, 0x96, 0x95, 0x69, 0xAA, 0x65, 0x55, 0xA9, 0x6A, 0xCC, 0x2F, 0xAA, 0xA9, 0x6A, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0x97, 0xFF, 0x5F, 0x59, 0x59, 0x75, 0xFF, 0xD5, 0x97, 0x5F, 0x59, 0x69, 0x75, 0xFF, 0xE9, 0x7A, 0xCC, 0x2F, 0xAA, 0xA9, 0x7A, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xA5, 0x5A, 0x5E, 0x5D, 0x55, 0x75, 0xD5, 0x95, 0x57, 0x55, 0x5D, 0x55, 0x75, 0x5A, 0xAA, 0xFA, 0xCC, 0x30, 0xAA, 0xFA, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xAB, 0xD6, 0x5E, 0x5D, 0x75, 0x75, 0xE5, 0xD7, 0x57, 0x5F, 0x5D, 0x7D, 0x75, 0xFE, 0xA9, 0x6A, 0xCC, 0x2F, 0xAA, 0xA9, 0x6A, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0x95, 0x5F, 0x95, 0x7D, 0x79, 0x79, 0x55, 0xD7, 0x97, 0x5E, 0x5D, 0x79, 0x75, 0x55, 0xA9, 0x7A, 0xCC, 0x2F, 0xAA, 0xA9, 0x7A, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xAF, 0xFE, 0xAF, 0xFA, 0xFA, 0xFA, 0xFF, 0xEF, 0xAF, 0xBE, 0xBE, 0xFA, 0xFB, 0xFF, 0xEA, 0xFA, 0xCC, 0x30, 0xAA, 0xFA, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0xBF, 0xCC, 0x4E, 0xFF, 0xCC, 0x46, 0x55, 0x59, 0xCC, 0x06, 0x55, 0x56, 0x6A, 0xCC, 0x45, 0xAA, 0xAD, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x45, 0xAA, 0xAD, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0x55, 0x69, 0x56, 0x9A, 0xA6, 0x55, 0x69, 0x6A, 0xA5, 0x55, 0x96, 0x96, 0x95, 0x69, 0xAA, 0x65, 0x55, 0xA9, 0x6A, 0xCC, 0x2E, 0xAA, 0xAD, 0xA5, 0xAA, 0xA5, 0x5A, 0x95, 0x69, 0x55, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xA9, 0x7F, 0xF5, 0xF5, 0x96, 0x97, 0x5F, 0x59, 0x7A, 0xA5, 0xFF, 0xD5, 0x97, 0x5F, 0x59, 0x69, 0x75, 0xFF, 0xE9, 0x7A, 0xCC, 0x2E, 0xAA, 0xAD, 0xA5, 0xEA, 0x97, 0xD6, 0x5F, 0x59, 0x7D, 0x6B, 0x6A, 0xCC, 0x03, 0xAA, 0x55, 0xA5, 0x55, 0xD5, 0x57, 0x55, 0x7D, 0x7A, 0xA5, 0x5A, 0x95, 0x57, 0x55, 0x5D, 0x55, 0x75, 0x5A, 0xAA, 0xFA, 0xCC, 0x2E, 0xAA, 0xAD, 0xA5, 0xEA, 0x97, 0x97, 0x55, 0x5D, 0x79, 0x7B, 0x6A, 0xCC, 0x03, 0xAA, 0xBD, 0x65, 0xF5, 0xD7, 0xD7, 0x5F, 0xF9, 0x7A, 0xA5, 0xFE, 0x97, 0x57, 0x5F, 0x5D, 0x7D, 0x75, 0xFE, 0xA9, 0x6A, 0xCC, 0x2E, 0xAA, 0xAD, 0xA5, 0xEA, 0x97, 0x97, 0x5F, 0x5D, 0x79, 0x7B, 0x6A, 0xAA, 0xAA, 0xAA, 0xA9, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0x5E, 0xA9, 0x55, 0x65, 0x55, 0x97, 0x97, 0x5E, 0x5D, 0x79, 0x75, 0x55, 0xA9, 0x7A, 0xCC, 0x2E, 0xAA, 0xAD, 0xA5, 0x55, 0xA5, 0x5F, 0x5E, 0x5D, 0x55, 0xFB, 0x6A, 0xCC, 0x03, 0xAA, 0xFF, 0xEB, 0xEB, 0xEF, 0xAF, 0xBE, 0xAA, 0xFF, 0xFB, 0xFF, 0xEF, 0xAF, 0xBE, 0xBE, 0xFA, 0xFB, 0xFF, 0xEA, 0xFA, 0xCC, 0x2E, 0xAA, 0xAD, 0xAB, 0xFF, 0xEB, 0xFE, 0xBE, 0xBE, 0xFF, 0xEB, 0x6A, 0xCC, 0x45, 0xAA, 0xAD, 0xCC, 0x06, 0xAA, 0xAB, 0xBF, 0xCC, 0x45, 0xFF, 0xFE, 0xCC, 0x07, 0xFF, 0xCC, 0x4E, 0x55, 0x56, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6A, 0xCC, 0x37, 0xAA, 0xA5, 0x55, 0x96, 0x96, 0x5A, 0x59, 0x55, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAF, 0xCC, 0x03, 0xFF, 0xEA, 0xCC, 0x31, 0xAA, 0xAB, 0x5F, 0xD7, 0x97, 0x56, 0x5D, 0x7F, 0xFA, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xCC, 0x32, 0xAA, 0x5E, 0x97, 0x97, 0x55, 0x5D, 0x56, 0xCC, 0x0E, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xCC, 0x32, 0xAA, 0x5E, 0x97, 0x97, 0x5D, 0x5D, 0x7F, 0xCC, 0x0E, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xCC, 0x07, 0xAA, 0x96, 0x56, 0x56, 0x56, 0x66, 0x96, 0xCC, 0x24, 0xAA, 0x5E, 0xA5, 0x5F, 0x5E, 0x5D, 0x55, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xCC, 0x07, 0xAA, 0x6F, 0x9F, 0x77, 0x9F, 0x77, 0x6F, 0x9A, 0xCC, 0x23, 0xAA, 0xBE, 0xAB, 0xFE, 0xBE, 0xBE, 0xFF, 0xFA, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xCC, 0x07, 0xAA, 0x9A, 0x9E, 0x57, 0x9E, 0x77, 0x9A, 0xAE, 0xCC, 0x38, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xAA, 0xA5, 0x65, 0x66, 0x65, 0x65, 0x6A, 0xAA, 0xA6, 0x9E, 0x77, 0x9E, 0x77, 0xA6, 0x9A, 0xCC, 0x22, 0xAA, 0xA5, 0x55, 0xA5, 0x5A, 0x6A, 0x9A, 0x55, 0xA5, 0xA5, 0xA5, 0x56, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xA9, 0xA9, 0xF7, 0xF5, 0x77, 0x77, 0x75, 0x56, 0x5B, 0x9E, 0x77, 0x9E, 0x57, 0x5B, 0xAE, 0xCC, 0x22, 0xAA, 0xAB, 0x5F, 0xE9, 0x7E, 0x5A, 0x5E, 0x97, 0xE5, 0x65, 0xD7, 0xFF, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0xA5, 0x69, 0xE5, 0xA7, 0x75, 0x77, 0x79, 0x5F, 0xBE, 0xAE, 0xBB, 0xAE, 0xBF, 0xBE, 0xCC, 0x24, 0xAA, 0x5E, 0xA9, 0x7A, 0x55, 0x5E, 0x97, 0xA5, 0x55, 0xD7, 0x56, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAE, 0xCC, 0x03, 0xAA, 0x9A, 0x95, 0x59, 0xE7, 0xE7, 0x77, 0xF7, 0x7A, 0x7E, 0xCC, 0x2A, 0xAA, 0x5E, 0xA9, 0x7A, 0x5F, 0x5E, 0x97, 0xA5, 0xD5, 0xD7, 0x97, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xA9, 0xCC, 0x03, 0x55, 0x5A, 0xAF, 0xFD, 0xE5, 0x67, 0x77, 0xA5, 0x7A, 0xBA, 0xCC, 0x2A, 0xAA, 0x5E, 0xA5, 0x5A, 0x5E, 0x5E, 0x55, 0xA5, 0xE5, 0xE5, 0x57, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xEB, 0xFB, 0xBB, 0xAB, 0xFA, 0xCC, 0x2B, 0xAA, 0xBE, 0xAB, 0xFE, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEB, 0xFF, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6F, 0xCC, 0x04, 0xFF, 0xFE, 0xBF, 0xCC, 0x0F, 0xFF, 0xFE, 0xBF, 0xCC, 0x0F, 0xFF, 0xFE, 0xBF, 0xCC, 0x0F, 0xFF, 0xFE, 0xBF, 0xCC, 0x10, 0xFF, 0xEB, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x56, 0x1B, 0x6C, 0xCC, 0x04, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x61, 0xB1, 0xCC, 0x0F, 0x55, 0x56, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0x6A, 0xCC, 0x03, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xB1, 0xB1, 0xCC, 0x0F, 0xAA, 0xAB, 0x1B, 0x6C, 0xBF, 0xCC, 0x03, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x10, 0xFF, 0x1B, 0x6C, 0xBF, 0xCC, 0x03, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x0F, 0xFF, 0xF1, 0xB2, 0xCC, 0x10, 0xFF, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x6C, 0xCC, 0x04, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x0F, 0x00, 0x01, 0xB0, 0xCC, 0x10, 0x00, 0x1B, 0x69, 0xCC, 0x05, 0x55, 0xA5, 0xCC, 0x10, 0x55, 0xA5, 0xCC, 0x10, 0x55, 0xA5, 0xCC, 0x10, 0x55, 0xA5, 0xCC, 0x10, 0x55, 0x5B, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0xBF, 0xCC, 0x4E, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_sampler.c0000644000000000000000000007401513235646512017556 0ustar rootroot#include #include "../pt_palette.h" uint32_t samplingPosBMP[64] = { 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF, 0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF,0x0000FFFF }; // Final unpack length: 4488 // Decoded length: 1122 (first four bytes of buffer) const uint8_t samplerVolumePackedBMP[706] = { 0x00, 0x00, 0x04, 0x62, 0xCC, 0x06, 0x55, 0x95, 0xCC, 0x10, 0x55, 0x65, 0xCC, 0x06, 0x55, 0x56, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xA9, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0xA9, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xDB, 0xFD, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xFE, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xA9, 0x59, 0x59, 0x59, 0x9A, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x5A, 0x6B, 0x6A, 0xA9, 0xFD, 0xDD, 0xDD, 0x5E, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x5D, 0xBB, 0x6A, 0xA9, 0x69, 0x6D, 0xDD, 0xDE, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0xB6, 0xEB, 0x6A, 0xA9, 0xF9, 0xD9, 0xDD, 0xDE, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x99, 0x6B, 0x6A, 0xA9, 0xE9, 0xDD, 0x5D, 0xDE, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x6D, 0x7B, 0x6A, 0xAA, 0xEA, 0xEE, 0xFE, 0xEE, 0xAA, 0xDA, 0xCC, 0x10, 0x55, 0xB6, 0xCC, 0x05, 0xAA, 0xBA, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x10, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0xBF, 0xCC, 0x05, 0xFF, 0xEF, 0xCC, 0x10, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xCC, 0x06, 0x55, 0x95, 0xCC, 0x10, 0x55, 0x65, 0xCC, 0x06, 0x55, 0x56, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xA9, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0xA9, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xDB, 0xFD, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xF7, 0xDF, 0x7D, 0xFE, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xAA, 0xA9, 0x59, 0x5A, 0xAA, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x5A, 0x6B, 0x6A, 0xAA, 0xAA, 0x7D, 0xDE, 0xAA, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x5D, 0xBB, 0x6A, 0xAA, 0xAA, 0x79, 0xDE, 0xAA, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0xB6, 0xEB, 0x6A, 0xAA, 0xAA, 0x79, 0xDE, 0xAA, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x99, 0x6B, 0x6A, 0xAA, 0xAA, 0x79, 0x5E, 0xAA, 0xAA, 0xDB, 0xCC, 0x0F, 0x00, 0x01, 0xB6, 0xCC, 0x05, 0xAA, 0x6D, 0x7B, 0x6A, 0xAA, 0xAA, 0xBA, 0xFE, 0xAA, 0xAA, 0xDA, 0xCC, 0x10, 0x55, 0xB6, 0xCC, 0x05, 0xAA, 0xBA, 0xFB, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x10, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0xBF, 0xCC, 0x05, 0xFF, 0xEF, 0xCC, 0x10, 0xFF, 0xFB, 0xCC, 0x07, 0xFF, 0xCC, 0x06, 0x55, 0x95, 0xCC, 0x08, 0x55, 0x56, 0x55, 0x55, 0x65, 0x55, 0x56, 0x55, 0x55, 0x65, 0xCC, 0x06, 0x55, 0x56, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x08, 0xAA, 0xAB, 0x6A, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x08, 0xAA, 0xAB, 0x62, 0xAA, 0xB6, 0xAA, 0x8B, 0x6A, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xA9, 0x59, 0x59, 0x99, 0x5A, 0xAA, 0xDA, 0x96, 0x95, 0x95, 0x99, 0x95, 0x9A, 0xA6, 0x95, 0x95, 0xAB, 0x60, 0xAA, 0xB6, 0xAA, 0x0B, 0x6A, 0xAA, 0xB6, 0xA9, 0x59, 0x59, 0x69, 0x59, 0x59, 0xAA, 0xAB, 0x6A, 0xA9, 0xDD, 0xDD, 0x5D, 0xDE, 0xAA, 0xDA, 0x9D, 0x9D, 0xDD, 0xD5, 0xDD, 0xDE, 0xA7, 0xAD, 0xDF, 0xEB, 0x68, 0x2A, 0xB6, 0xA8, 0x2B, 0x6A, 0xAA, 0xB6, 0xA9, 0xFD, 0xDD, 0xD9, 0xFD, 0xFD, 0xEA, 0xAB, 0x6A, 0xA9, 0x6D, 0x5D, 0xDD, 0x5E, 0xAA, 0xDA, 0x9D, 0xDD, 0xD6, 0xDD, 0xD5, 0xDE, 0xA7, 0xA6, 0xD6, 0xAB, 0x6A, 0x0A, 0xB6, 0xA0, 0xAB, 0x60, 0x00, 0xB6, 0xA9, 0xE9, 0x5D, 0xDD, 0xE9, 0x69, 0xEA, 0xAB, 0x6A, 0xA9, 0xD9, 0xDD, 0xDD, 0xFE, 0xAA, 0xDA, 0x9D, 0xDD, 0xDD, 0x9D, 0xDD, 0xDE, 0xA7, 0x9B, 0x9F, 0xAB, 0x6A, 0x82, 0xB6, 0x82, 0xAB, 0x6A, 0xAA, 0xB6, 0xA9, 0xE9, 0xDD, 0xDD, 0xE9, 0xF9, 0xEA, 0xAB, 0x6A, 0xA9, 0xDD, 0xDD, 0xDD, 0xEA, 0xAA, 0xDA, 0x9D, 0xD5, 0xDD, 0xDD, 0xDD, 0xD5, 0xA7, 0x95, 0x95, 0xAB, 0x6A, 0xA0, 0xB6, 0x0A, 0xAB, 0x6A, 0xAA, 0xB6, 0xA9, 0x59, 0xDD, 0xDD, 0x59, 0x59, 0x5A, 0xAB, 0x6A, 0xAA, 0xEE, 0xEE, 0xEE, 0xEA, 0xAA, 0xDA, 0xAE, 0xEF, 0xEE, 0xEE, 0xEE, 0xEF, 0xEB, 0xAF, 0xEF, 0xEB, 0x6A, 0xA8, 0xB6, 0x2A, 0xAB, 0x6A, 0xAA, 0xB6, 0xAA, 0xFE, 0xEE, 0xEE, 0xFE, 0xFE, 0xFE, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xDA, 0xCC, 0x08, 0xAA, 0xAB, 0x6A, 0xAA, 0xB6, 0xAA, 0xAB, 0x6A, 0xAA, 0xB6, 0xCC, 0x06, 0xAA, 0xAB, 0xBF, 0xCC, 0x05, 0xFF, 0xEF, 0xCC, 0x09, 0xFF, 0xBF, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0xFF, 0xFB, 0xCC, 0x07, 0xFF }; // Final unpack length: 6140 // Decoded length: 1535 (first four bytes of buffer) const uint8_t samplerFiltersPackedBMP[916] = { 0x00, 0x00, 0x05, 0xFF, 0x55, 0x55, 0x59, 0xCC, 0x13, 0x55, 0x95, 0xCC, 0x0D, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x66, 0xAA, 0xAA, 0xDA, 0xCC, 0x12, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xCC, 0x13, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0xA6, 0xAB, 0x6A, 0x56, 0xAD, 0xAA, 0xAA, 0xB6, 0x5A, 0x5A, 0xDA, 0xAA, 0xAA, 0xA5, 0xAA, 0xA5, 0x5A, 0x5A, 0x5A, 0xAA, 0xA5, 0x56, 0xA5, 0x5A, 0x95, 0x5A, 0x55, 0x6A, 0xAA, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xA9, 0x5A, 0xB6, 0xA5, 0x7A, 0xD9, 0x55, 0x6B, 0x65, 0xE5, 0xED, 0xAA, 0xAA, 0xAA, 0x5E, 0xA9, 0x7D, 0x65, 0xE5, 0xEA, 0xAA, 0x5F, 0x59, 0x7D, 0x65, 0xFF, 0xD7, 0xFF, 0xAA, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0x55, 0x6B, 0x6A, 0x57, 0xAD, 0x97, 0xFF, 0xB6, 0x5E, 0x5E, 0xDA, 0xAA, 0xAA, 0xA5, 0xEA, 0x97, 0x97, 0x55, 0x5E, 0x55, 0xA5, 0x57, 0xD5, 0x57, 0x95, 0x6A, 0x55, 0xAA, 0xAA, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xA9, 0x5F, 0xB6, 0x95, 0x5A, 0xD9, 0x56, 0xAB, 0x65, 0xE5, 0xED, 0xAA, 0xAA, 0xAA, 0x5E, 0xA9, 0x79, 0x75, 0xF5, 0xEB, 0xFE, 0x5F, 0xF9, 0x7D, 0x7A, 0xF5, 0xAB, 0xD6, 0xAA, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0x95, 0xEB, 0x6A, 0x57, 0xED, 0x97, 0xFA, 0xB6, 0x95, 0x7E, 0xDA, 0xAA, 0xAA, 0xA5, 0x55, 0xA5, 0x5F, 0x7E, 0x9E, 0xAA, 0xA5, 0xEA, 0x97, 0x97, 0x55, 0x7D, 0x55, 0xFA, 0xAA, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xA9, 0x5E, 0xB6, 0xA9, 0xFA, 0xD9, 0x55, 0x6B, 0x6A, 0xFF, 0xAD, 0xAA, 0xAA, 0xAA, 0xBF, 0xFE, 0xBF, 0xEB, 0xAA, 0xEA, 0xAA, 0xBE, 0xAA, 0xFA, 0xFB, 0xFF, 0xAF, 0xFE, 0xAA, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0xAF, 0xEB, 0x6A, 0xAE, 0xAD, 0xAF, 0xFF, 0xB6, 0xAA, 0xAA, 0xDA, 0xCC, 0x12, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xAA, 0xAB, 0x65, 0xA5, 0xAE, 0xCC, 0x13, 0xFF, 0xEF, 0xCC, 0x0D, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFD, 0x96, 0x96, 0xB6, 0x56, 0x5E, 0xD5, 0xCC, 0x12, 0x55, 0x59, 0xCC, 0x0D, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x9A, 0x55, 0xFB, 0x65, 0x55, 0xED, 0xCC, 0x13, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xA9, 0x7E, 0xB6, 0x5D, 0x5E, 0xDA, 0xCC, 0x12, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xAA, 0x6A, 0xB6, 0xA5, 0x6A, 0xDA, 0x55, 0xAB, 0x65, 0xE5, 0xED, 0xAA, 0xAA, 0x96, 0x96, 0x95, 0x6A, 0x55, 0x65, 0xA5, 0xAA, 0xAA, 0x55, 0x6A, 0x55, 0xA9, 0x55, 0xA5, 0x56, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0x95, 0xAB, 0x6A, 0x57, 0xAD, 0x97, 0xD6, 0xB6, 0xBE, 0xBE, 0xDA, 0xAA, 0xA9, 0x79, 0x7A, 0x5F, 0x97, 0xFF, 0x5E, 0x5E, 0xAA, 0xA5, 0xF5, 0x97, 0xD6, 0x5F, 0xFD, 0x7F, 0xFA, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xA5, 0x56, 0xB6, 0xA5, 0x7A, 0xDA, 0xFA, 0xFB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0x95, 0x57, 0xA5, 0xE9, 0x75, 0x65, 0x55, 0xE5, 0x5A, 0x55, 0x7D, 0x55, 0x79, 0x56, 0xA5, 0x5A, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0x95, 0xFB, 0x69, 0x55, 0xAD, 0xAA, 0xAA, 0xB6, 0x55, 0x6A, 0xDA, 0xAA, 0xA9, 0x7D, 0x7A, 0x5E, 0x97, 0x97, 0x5F, 0x5E, 0xBF, 0xE5, 0xFF, 0x97, 0xD7, 0xAF, 0x5A, 0xBD, 0x6A, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xA9, 0x5E, 0xB6, 0xA5, 0x7E, 0xDA, 0x55, 0xAB, 0x65, 0xF5, 0xAD, 0xAA, 0xAA, 0x97, 0x97, 0x95, 0x6A, 0x55, 0x75, 0xE5, 0xEA, 0xAA, 0x5E, 0xA9, 0x79, 0x75, 0x57, 0xD5, 0x5F, 0xAA, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0x95, 0xEB, 0x6A, 0x9F, 0xAD, 0xA9, 0x7E, 0xB6, 0x5E, 0x5E, 0xDA, 0xAA, 0xAA, 0xFA, 0xFA, 0xFF, 0xAB, 0xFF, 0xBE, 0xBE, 0xAA, 0xAB, 0xEA, 0xAF, 0xAF, 0xBF, 0xFA, 0xFF, 0xEA, 0xAA, 0xAD, 0xCC, 0x0D, 0xAA, 0xAD, 0xAA, 0xFE, 0xB6, 0xAA, 0xEA, 0xDA, 0x97, 0xAB, 0x65, 0xE5, 0xED, 0xCC, 0x13, 0xAA, 0xDA, 0xCC, 0x0D, 0xAA, 0xDA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAD, 0xA9, 0x7A, 0xB6, 0x55, 0x7E, 0xEF, 0xCC, 0x12, 0xFF, 0xFE, 0xCC, 0x0D, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xDA, 0x55, 0xAB, 0x6B, 0xFF, 0xAD, 0xCC, 0x27, 0x55, 0x59, 0xAB, 0xFE, 0xB6, 0xAA, 0xAA, 0xDA, 0xCC, 0x27, 0xAA, 0xDA, 0xAA, 0xAB, 0x69, 0x56, 0xAD, 0xCC, 0x27, 0xAA, 0xAD, 0x95, 0x56, 0xB6, 0x5F, 0x5A, 0xDA, 0xAA, 0xAA, 0x5A, 0x5A, 0x55, 0xA5, 0x56, 0x9A, 0xA6, 0x95, 0x69, 0x6A, 0xA9, 0x56, 0x95, 0x56, 0x55, 0x5A, 0xAA, 0xA9, 0x55, 0xA5, 0x5A, 0x6A, 0x99, 0x55, 0xA5, 0xAA, 0x95, 0x56, 0xA5, 0xCC, 0x08, 0xAA, 0xDA, 0xD7, 0xFB, 0x65, 0xE5, 0xED, 0xAA, 0xAA, 0xA5, 0x65, 0xD7, 0xD6, 0x5F, 0x59, 0x69, 0x75, 0xF5, 0x97, 0xAA, 0xA5, 0xFA, 0xF5, 0xF5, 0xFF, 0xEA, 0xAA, 0x5F, 0xFD, 0x7D, 0x65, 0xA5, 0xD7, 0xD6, 0x5E, 0xA9, 0x7F, 0xFA, 0x5E, 0xCC, 0x07, 0xAA, 0xAD, 0xA9, 0x7A, 0xB6, 0x5E, 0x5E, 0xDA, 0xAA, 0xAA, 0x55, 0x5D, 0x79, 0x75, 0x57, 0xD5, 0x57, 0x55, 0x5D, 0x7A, 0xAA, 0x5E, 0xA9, 0x7E, 0x55, 0xAA, 0xAA, 0xA9, 0x56, 0x95, 0x57, 0x55, 0x5D, 0x55, 0xF5, 0xEA, 0x95, 0x6A, 0xAB, 0xEA, 0xCC, 0x07, 0xAA, 0xDA, 0x97, 0xAB, 0x69, 0x57, 0xED, 0xAA, 0xAA, 0xA5, 0xD5, 0xD7, 0x97, 0x5D, 0x79, 0x7D, 0x75, 0xF5, 0xD7, 0xAA, 0xA5, 0xEA, 0x5F, 0xA5, 0xFE, 0xAA, 0xAA, 0xAF, 0x59, 0x7D, 0x75, 0xF5, 0xD7, 0xFE, 0x5E, 0xA9, 0x7F, 0xAA, 0x5A, 0xCC, 0x07, 0xAA, 0xAD, 0xA9, 0x7A, 0xB6, 0xAF, 0xFA, 0xDA, 0xAA, 0xAA, 0x5E, 0x5E, 0x55, 0xF5, 0xE5, 0x97, 0x97, 0x5E, 0x5D, 0x55, 0x69, 0x56, 0x95, 0x56, 0x55, 0x5A, 0xAA, 0xA5, 0x57, 0xD7, 0x97, 0x5E, 0x5D, 0x7A, 0xA5, 0x55, 0x95, 0x56, 0xA5, 0xEA, 0xCC, 0x07, 0xAA, 0xDA, 0xAF, 0xAB, 0x6A, 0xAA, 0xAD, 0xAA, 0xAA, 0xAB, 0xEB, 0xEB, 0xFE, 0xBE, 0xBE, 0xFA, 0xFB, 0xEB, 0xEF, 0xFF, 0xAF, 0xFA, 0xFF, 0xFB, 0xFF, 0xEA, 0xAA, 0xBF, 0xFA, 0xFA, 0xFB, 0xEB, 0xEF, 0xAA, 0xBF, 0xFE, 0xFF, 0xFA, 0xBE, 0xCC, 0x07, 0xAA, 0xAD, 0xAA, 0xAA, 0xB6, 0xAA, 0xAA, 0xDA, 0xCC, 0x27, 0xAA, 0xDA, 0xAA, 0xAB, 0xBF, 0xFF, 0xFE, 0xCC, 0x27, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF }; // Final unpack length: 42880 // Decoded length: 10720 (first four bytes of buffer) const uint8_t samplerScreenPackedBMP[3046] = { 0x00, 0x00, 0x29, 0xE0, 0xCC, 0x4E, 0x55, 0x56, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6A, 0xCC, 0x37, 0xAA, 0xA5, 0x55, 0x96, 0x96, 0x5A, 0x59, 0x55, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xA5, 0xCC, 0x03, 0x55, 0x6A, 0xCC, 0x31, 0xAA, 0xAB, 0x5F, 0xD7, 0x97, 0x56, 0x5D, 0x7F, 0xFA, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xA6, 0xCC, 0x03, 0xAA, 0xBA, 0xCC, 0x32, 0xAA, 0x5E, 0x97, 0x97, 0x55, 0x5D, 0x56, 0xCC, 0x0E, 0xAA, 0xAB, 0x6A, 0xA6, 0xCC, 0x03, 0xAA, 0xBA, 0xCC, 0x32, 0xAA, 0x5E, 0x97, 0x97, 0x5D, 0x5D, 0x7F, 0xCC, 0x0E, 0xAA, 0xAB, 0x6A, 0xA6, 0x56, 0x66, 0x9A, 0x56, 0xBA, 0xAA, 0xA5, 0x56, 0x55, 0x5A, 0x55, 0xA5, 0x55, 0x96, 0x96, 0x95, 0x5A, 0x96, 0xCC, 0x25, 0xAA, 0x5E, 0xA5, 0x5F, 0x5E, 0x5D, 0x55, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xA6, 0x7F, 0x77, 0x9E, 0x9F, 0xBA, 0xAA, 0x97, 0xFF, 0xB5, 0xFD, 0x7D, 0x6B, 0x5F, 0xD7, 0x97, 0x5F, 0xFE, 0x97, 0xCC, 0x25, 0xAA, 0xBE, 0xAB, 0xFE, 0xBE, 0xBE, 0xFF, 0xFA, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xA6, 0x5A, 0x9B, 0x9E, 0x9E, 0xBA, 0xAA, 0xA5, 0x5A, 0xA5, 0xE9, 0x55, 0x7A, 0x5E, 0x97, 0x97, 0x95, 0x6A, 0xAF, 0xCC, 0x3A, 0xAA, 0xAB, 0x6A, 0xA6, 0x7E, 0x66, 0x9E, 0x9E, 0xBA, 0xAA, 0xAB, 0xD6, 0xA5, 0xE9, 0x7D, 0x7A, 0x5E, 0x97, 0x97, 0xAF, 0x5A, 0x96, 0xCC, 0x24, 0xAA, 0xA5, 0x55, 0xA5, 0x5A, 0x6A, 0x9A, 0x55, 0xA5, 0xA5, 0xA5, 0x56, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xA6, 0x56, 0x77, 0x9E, 0x9E, 0xBA, 0xAA, 0x95, 0x5F, 0xA5, 0xE9, 0x79, 0x7A, 0x5E, 0xA5, 0x5F, 0x55, 0x7E, 0x97, 0xCC, 0x24, 0xAA, 0xAB, 0x5F, 0xE9, 0x7E, 0x5A, 0x5E, 0x97, 0xE5, 0x65, 0xD7, 0xFF, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xA6, 0xBF, 0xBB, 0xAE, 0xAE, 0xBA, 0xAA, 0xAF, 0xFE, 0xAB, 0xEA, 0xFA, 0xFA, 0xBE, 0xAB, 0xFE, 0xBF, 0xFA, 0xAF, 0xCC, 0x25, 0xAA, 0x5E, 0xA9, 0x7A, 0x55, 0x5E, 0x97, 0xA5, 0x55, 0xD7, 0x56, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xA6, 0xCC, 0x03, 0xAA, 0xBA, 0xCC, 0x32, 0xAA, 0x5E, 0xA9, 0x7A, 0x5F, 0x5E, 0x97, 0xA5, 0xD5, 0xD7, 0x97, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xAB, 0xCC, 0x03, 0xFF, 0xFA, 0xCC, 0x32, 0xAA, 0x5E, 0xA5, 0x5A, 0x5E, 0x5E, 0x55, 0xA5, 0xE5, 0xE5, 0x57, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x38, 0xAA, 0xBE, 0xAB, 0xFE, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEB, 0xFF, 0xCC, 0x0A, 0xAA, 0xAB, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6F, 0xCC, 0x4D, 0xFF, 0xEB, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x69, 0xCC, 0x4D, 0x55, 0x5B, 0x6A, 0xCC, 0x4D, 0xAA, 0xAB, 0x6F, 0xCC, 0x4D, 0xFF, 0xEB, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x6C, 0xCC, 0x4D, 0x00, 0x1B, 0x69, 0xCC, 0x05, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x56, 0xCC, 0x12, 0x55, 0x56, 0xCC, 0x10, 0x55, 0x65, 0xCC, 0x10, 0x55, 0x5B, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0x56, 0x6A, 0x56, 0x66, 0xAA, 0xA6, 0xAB, 0x6A, 0x5A, 0x5A, 0x55, 0xA5, 0xA5, 0x95, 0x56, 0x55, 0x5A, 0x55, 0xA5, 0x56, 0x9A, 0xA6, 0xAB, 0x6A, 0xA5, 0x56, 0x5A, 0x5A, 0x55, 0xA5, 0xA5, 0xAA, 0xAA, 0x55, 0x6A, 0x55, 0xA5, 0xA5, 0xA5, 0x56, 0x55, 0x5A, 0xAB, 0x6A, 0xA9, 0x55, 0x69, 0x56, 0xA5, 0x5A, 0x6A, 0x9A, 0xAA, 0xA9, 0x56, 0x96, 0x96, 0x55, 0x5A, 0xAA, 0xB6, 0x5A, 0x9A, 0x56, 0x56, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0x77, 0x7A, 0x77, 0x77, 0xA9, 0x55, 0xAB, 0x6A, 0x5E, 0x5D, 0x7D, 0x65, 0xE5, 0xD7, 0xFF, 0x5F, 0xFD, 0x7D, 0x65, 0xF5, 0x96, 0x97, 0xAB, 0x6A, 0x97, 0xFF, 0x5E, 0x5D, 0x7D, 0x65, 0xE5, 0xEA, 0xAA, 0x5F, 0x59, 0x7D, 0x65, 0x65, 0xD7, 0xFF, 0x5F, 0xFE, 0xAB, 0x6A, 0xAA, 0xF5, 0xF5, 0xF5, 0x97, 0xD6, 0x5A, 0x5E, 0xAA, 0xA5, 0xF5, 0x97, 0x97, 0xB5, 0xFE, 0xAA, 0xB6, 0x76, 0x9E, 0x7F, 0x77, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0x57, 0x7A, 0x57, 0x9B, 0xA9, 0x55, 0x6B, 0x6A, 0x55, 0x5D, 0x55, 0x75, 0xE5, 0xD5, 0x6A, 0x55, 0xA9, 0x79, 0x75, 0x57, 0xD5, 0x57, 0xAB, 0x6A, 0xA5, 0x5A, 0x55, 0x5D, 0x79, 0x75, 0x55, 0xEA, 0xAA, 0x55, 0x7D, 0x55, 0x75, 0x55, 0xD7, 0x56, 0x55, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xE5, 0xE5, 0xD7, 0x97, 0x55, 0x5E, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0xA5, 0xEA, 0xAA, 0xB6, 0x77, 0x9E, 0x56, 0x57, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0x7F, 0x7A, 0x77, 0x9E, 0xA9, 0x55, 0xFB, 0x6A, 0x5F, 0x5D, 0x7D, 0x79, 0x57, 0xD7, 0xFA, 0x5F, 0xE9, 0x79, 0x75, 0xD7, 0x97, 0xD7, 0xAB, 0x6A, 0xAB, 0xD6, 0x5F, 0x5D, 0x79, 0x75, 0xF5, 0xEA, 0xAA, 0x5D, 0x79, 0x7D, 0x75, 0xD5, 0xD7, 0x97, 0x5F, 0xEA, 0xAB, 0x6A, 0xAA, 0x5F, 0xA5, 0xE5, 0xD7, 0x97, 0x5F, 0x5E, 0xAA, 0xA5, 0xE5, 0xD7, 0x97, 0xA5, 0xEA, 0xAA, 0xB6, 0x77, 0x9E, 0xB7, 0x7F, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0x7A, 0x56, 0x77, 0x9E, 0xAA, 0xF7, 0xEB, 0x6A, 0x7E, 0x9D, 0x79, 0x7A, 0x5F, 0x95, 0x56, 0x5E, 0xAA, 0x55, 0xF5, 0xE5, 0x97, 0x97, 0xAB, 0x6A, 0x95, 0x5F, 0x5E, 0x5E, 0x55, 0xF7, 0xE9, 0xEA, 0xAA, 0x5E, 0x59, 0x79, 0x75, 0xE5, 0xE5, 0x57, 0x55, 0x5A, 0xAB, 0x6A, 0xA9, 0x55, 0x69, 0x57, 0xE5, 0x5F, 0x5E, 0x5E, 0xAA, 0xA9, 0x57, 0xE5, 0x5F, 0xA5, 0xEA, 0xAA, 0xB6, 0x5B, 0x9E, 0x57, 0x7A, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0xBA, 0xBF, 0xBB, 0xAE, 0xAA, 0xAB, 0xAB, 0x6A, 0xBA, 0xAE, 0xFA, 0xFA, 0xBE, 0xAF, 0xFF, 0xBE, 0xAA, 0xBF, 0xEB, 0xEB, 0xEF, 0xAF, 0xAB, 0x6A, 0xAF, 0xFE, 0xBE, 0xBE, 0xBF, 0xEB, 0xAA, 0xEA, 0xAA, 0xBE, 0xBE, 0xFA, 0xFB, 0xEB, 0xEB, 0xFF, 0xBF, 0xFE, 0xAB, 0x6A, 0xAA, 0xFF, 0xFA, 0xFF, 0xAB, 0xFE, 0xBE, 0xBE, 0xAA, 0xAA, 0xFF, 0xAB, 0xFE, 0xAB, 0xEA, 0xAA, 0xB6, 0xBE, 0xAE, 0xBF, 0xBA, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x12, 0xFF, 0xBF, 0xCC, 0x0F, 0xFF, 0xFB, 0xCC, 0x11, 0xFF, 0xCC, 0x06, 0x55, 0x56, 0xCC, 0x0E, 0x55, 0x56, 0xCC, 0x12, 0x55, 0x56, 0xCC, 0x10, 0x55, 0x65, 0xCC, 0x10, 0x55, 0x56, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0x55, 0x6A, 0x55, 0xA9, 0x55, 0x95, 0x5A, 0x5A, 0xAA, 0x55, 0xA5, 0xA5, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0x95, 0x59, 0x69, 0x69, 0x56, 0x96, 0x96, 0xAA, 0xAA, 0x55, 0xA5, 0xAA, 0x96, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x55, 0x6A, 0x55, 0xA5, 0xA5, 0xA5, 0x56, 0x55, 0x5A, 0xAA, 0xA9, 0x56, 0x96, 0xAA, 0x5A, 0xAA, 0xB6, 0x96, 0xAA, 0x95, 0x6A, 0x55, 0xA5, 0x56, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0x5F, 0x5A, 0x97, 0xE5, 0xFF, 0xD7, 0xD6, 0x5E, 0xA9, 0x7D, 0x65, 0xE5, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x5F, 0xFD, 0x79, 0x75, 0xF5, 0x97, 0x97, 0xAA, 0xA9, 0x7D, 0x65, 0xEA, 0x97, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x5F, 0x59, 0x7D, 0x65, 0x65, 0xD7, 0xFF, 0x5F, 0xFE, 0xAA, 0xA5, 0xF5, 0x97, 0xAA, 0x5E, 0xAA, 0xB6, 0x97, 0xAA, 0x5F, 0x59, 0x7D, 0x65, 0xF5, 0xA9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0x5E, 0x5E, 0x97, 0xA9, 0x56, 0x95, 0x5F, 0x5E, 0xA9, 0x55, 0x79, 0x57, 0xEA, 0xAB, 0x6A, 0xAA, 0xAA, 0x95, 0x69, 0x55, 0x75, 0xE5, 0xD5, 0x57, 0xAA, 0xA9, 0x55, 0x75, 0xEA, 0x97, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x55, 0x7D, 0x55, 0x75, 0x55, 0xD7, 0x56, 0x55, 0xAA, 0xAA, 0xA5, 0x55, 0xD7, 0xAA, 0x5E, 0xAA, 0xB6, 0x97, 0xAA, 0x5E, 0x5D, 0x79, 0x75, 0x57, 0xEA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0x5E, 0x5E, 0x97, 0xAA, 0xF5, 0x97, 0xFE, 0x5E, 0xA9, 0x7D, 0x7A, 0x5F, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAF, 0x59, 0x7D, 0x75, 0xE5, 0xD7, 0xD7, 0xAA, 0xA9, 0x7D, 0x75, 0xEA, 0x97, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x5D, 0x79, 0x7D, 0x75, 0xD5, 0xD7, 0x97, 0x5F, 0xEA, 0xAA, 0xA5, 0xF5, 0xD7, 0xAA, 0x5E, 0xAA, 0xB6, 0x97, 0xAA, 0x5E, 0x5D, 0x79, 0x75, 0xFF, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0x55, 0x7E, 0x55, 0xA5, 0x57, 0xD7, 0xAA, 0x55, 0x59, 0x79, 0x7A, 0x5E, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0x55, 0x7D, 0x79, 0x79, 0x57, 0xDF, 0xA7, 0xAA, 0xA9, 0x79, 0x75, 0x55, 0x95, 0x56, 0xAA, 0xAA, 0xAB, 0x6A, 0x5E, 0x59, 0x79, 0x75, 0xE5, 0xE5, 0x57, 0x55, 0x5A, 0xAA, 0xA5, 0xE5, 0xD5, 0x56, 0x55, 0x5A, 0xB6, 0x95, 0x56, 0x95, 0x7E, 0x55, 0xF5, 0xEA, 0xA9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x69, 0x55, 0x95, 0x56, 0x95, 0x69, 0x55, 0xAB, 0x6A, 0xAA, 0xBF, 0xFA, 0xBF, 0xEB, 0xFF, 0xAF, 0xAA, 0xBF, 0xFE, 0xFA, 0xFA, 0xBE, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xBF, 0xFA, 0xFA, 0xFA, 0xFF, 0xAE, 0xAB, 0xAA, 0xAA, 0xFA, 0xFB, 0xFF, 0xEF, 0xFF, 0xAA, 0xAA, 0xAB, 0x6A, 0xBE, 0xBE, 0xFA, 0xFB, 0xEB, 0xEB, 0xFF, 0xBF, 0xFE, 0xAA, 0xAB, 0xEB, 0xEF, 0xFF, 0xBF, 0xFE, 0xB6, 0xAF, 0xFF, 0xAF, 0xFA, 0xBF, 0xEB, 0xEA, 0xAA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x65, 0xFF, 0xED, 0x7F, 0x5F, 0x59, 0x7D, 0x6B, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x11, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x69, 0x56, 0xA9, 0x7A, 0x5E, 0x5D, 0x55, 0xFB, 0xBF, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x12, 0xFF, 0xBF, 0xCC, 0x0F, 0xFF, 0xFB, 0xCC, 0x11, 0xFF, 0x6A, 0xF5, 0xA9, 0x7A, 0x5E, 0x5D, 0x7F, 0xEB, 0xCC, 0x0E, 0x55, 0x56, 0xCC, 0x03, 0x55, 0x56, 0xCC, 0x03, 0x55, 0x56, 0xCC, 0x08, 0x55, 0x56, 0xCC, 0x10, 0x55, 0x65, 0xCC, 0x10, 0x55, 0x56, 0x65, 0x57, 0xE9, 0x7A, 0x95, 0x7D, 0x7A, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6B, 0xFF, 0xAA, 0xFA, 0xAF, 0xFA, 0xFA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x55, 0xA9, 0x56, 0x96, 0x96, 0x95, 0x59, 0x55, 0x6A, 0xAA, 0xAA, 0xAB, 0x6A, 0x5A, 0x56, 0x56, 0xAB, 0x6A, 0x56, 0x5A, 0x5A, 0xAB, 0x6A, 0xAA, 0x56, 0x56, 0x5A, 0x56, 0x56, 0x56, 0xAA, 0xAB, 0x69, 0x55, 0xA5, 0x55, 0xA5, 0x56, 0x95, 0x69, 0xAA, 0x65, 0x56, 0x96, 0xAA, 0x55, 0x5A, 0xAA, 0x6A, 0xB6, 0x96, 0x96, 0x95, 0x69, 0x55, 0x65, 0x55, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x7D, 0x65, 0xF5, 0x95, 0x97, 0x5F, 0xFD, 0x7F, 0xFA, 0xAA, 0xAA, 0xAB, 0x6A, 0x76, 0x7F, 0x7F, 0xAB, 0x6A, 0x7F, 0x76, 0x76, 0xAB, 0x6A, 0xAA, 0x7F, 0x7F, 0x76, 0x9F, 0x7F, 0x77, 0xAA, 0xAB, 0x69, 0x7D, 0x65, 0xFF, 0xD7, 0xFF, 0x5F, 0x59, 0x69, 0x75, 0xF5, 0x97, 0xAA, 0x5F, 0xFE, 0x95, 0x5A, 0xB6, 0x95, 0x97, 0x5F, 0x5A, 0xD7, 0xF5, 0xFF, 0xE9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x55, 0xF5, 0x55, 0xD5, 0x57, 0x5D, 0x59, 0x56, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x5B, 0x5A, 0x76, 0xAB, 0x6A, 0x5A, 0x77, 0x77, 0xAB, 0x6A, 0xAA, 0x7A, 0x5A, 0x77, 0x9E, 0x5A, 0x5B, 0xAA, 0xAB, 0x69, 0x55, 0xF5, 0x5A, 0xA5, 0x5A, 0x55, 0x5D, 0x55, 0x75, 0x57, 0xD7, 0xAA, 0x55, 0xAA, 0x95, 0x56, 0xB6, 0x95, 0x57, 0x5E, 0x5E, 0x97, 0xA5, 0x5A, 0xAA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x75, 0xE5, 0xF5, 0xD7, 0x57, 0x5E, 0x5D, 0x7F, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0x76, 0x7E, 0x77, 0xAB, 0x6A, 0x7E, 0x77, 0x77, 0xAB, 0x6A, 0xAA, 0x7A, 0x7E, 0x77, 0x9E, 0x7E, 0x76, 0xAA, 0xAB, 0x69, 0x75, 0xE5, 0xFE, 0xAB, 0xD6, 0x5F, 0x5D, 0x7D, 0x75, 0xFF, 0x97, 0xAA, 0x5F, 0xEA, 0x95, 0x5F, 0xB6, 0x97, 0x57, 0x5E, 0x5E, 0x97, 0xA5, 0xFE, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xA9, 0x79, 0x65, 0xE5, 0xD7, 0x97, 0x95, 0x5D, 0x55, 0x6A, 0xAA, 0xAA, 0xAB, 0x6A, 0x5B, 0x56, 0x57, 0xAB, 0x6A, 0x56, 0x77, 0x5B, 0xAB, 0x6A, 0xAA, 0x56, 0x56, 0x77, 0x9E, 0x56, 0x77, 0xAA, 0xAB, 0x69, 0x79, 0x65, 0x55, 0x95, 0x5F, 0x5E, 0x5D, 0x79, 0x75, 0xEA, 0x95, 0x56, 0x55, 0x5A, 0xAF, 0x7E, 0xB6, 0x97, 0x97, 0x95, 0x7E, 0x97, 0xA5, 0x55, 0xA9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xFA, 0xFB, 0xEB, 0xEF, 0xAF, 0xAF, 0xFE, 0xFF, 0xFA, 0xAA, 0xAA, 0xAB, 0x6A, 0xBE, 0xBF, 0xBF, 0xAB, 0x6A, 0xBF, 0xBB, 0xBE, 0xAB, 0x6A, 0xAA, 0xBF, 0xBF, 0xBB, 0xAE, 0xBF, 0xBB, 0xAA, 0xAB, 0x6A, 0xFA, 0xFB, 0xFF, 0xEF, 0xFE, 0xBE, 0xBE, 0xFA, 0xFB, 0xEA, 0xAF, 0xFF, 0xBF, 0xFE, 0xAA, 0xBA, 0xB6, 0xAF, 0xAF, 0xAF, 0xFA, 0xAF, 0xAB, 0xFF, 0xEA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xAA, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x0F, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x0E, 0xFF, 0xBF, 0xCC, 0x03, 0xFF, 0xBF, 0xCC, 0x03, 0xFF, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xCC, 0x0F, 0xFF, 0xFB, 0xCC, 0x11, 0xFF, 0xCC, 0x06, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0xCC, 0x06, 0x55, 0x56, 0xCC, 0x08, 0x55, 0x56, 0xCC, 0x08, 0x55, 0x56, 0xCC, 0x07, 0x55, 0x59, 0xCC, 0x07, 0x55, 0x65, 0xCC, 0x10, 0x55, 0x56, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xAD, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xAD, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0x66, 0x65, 0x6A, 0xAA, 0xAB, 0x6A, 0xAA, 0x56, 0x56, 0x56, 0x66, 0xAA, 0xAB, 0x6A, 0xA5, 0xCC, 0x03, 0x65, 0x6A, 0xAB, 0x6A, 0xAA, 0x66, 0x56, 0x6A, 0x66, 0x66, 0x56, 0xAA, 0xAB, 0x6A, 0x56, 0x66, 0x5A, 0x56, 0x56, 0x56, 0x5A, 0x56, 0xAB, 0x6A, 0xA5, 0x69, 0xA6, 0x6A, 0xA5, 0xA5, 0x6A, 0xAD, 0xA9, 0x5A, 0x69, 0xA9, 0x59, 0x59, 0x59, 0x5A, 0xB6, 0xA5, 0x5A, 0x55, 0x59, 0x55, 0x69, 0x55, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xA7, 0xF7, 0x79, 0xFA, 0xAA, 0xAB, 0x6A, 0xAA, 0x7F, 0x77, 0x77, 0x77, 0xAA, 0xAB, 0x6A, 0xA7, 0x77, 0x77, 0xF9, 0xF7, 0xFA, 0xAB, 0x6A, 0xAA, 0x77, 0x77, 0x7A, 0x77, 0x57, 0x7F, 0xAA, 0xAB, 0x6A, 0x9F, 0x77, 0x76, 0x7F, 0x9F, 0x77, 0x76, 0x7F, 0xAB, 0x6A, 0xA7, 0xF9, 0xE7, 0x7A, 0xA7, 0x67, 0xFA, 0xAD, 0xA9, 0xFE, 0x79, 0xEA, 0x7D, 0xFD, 0xDD, 0xFE, 0xB6, 0x97, 0xD6, 0x5F, 0xFD, 0x7F, 0xF5, 0xFF, 0xE9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xA7, 0xA7, 0x79, 0xEA, 0xAA, 0xAB, 0x6A, 0xAA, 0x7A, 0x77, 0x57, 0x9B, 0xAA, 0xAB, 0x6A, 0xA5, 0x75, 0x75, 0x69, 0xE5, 0xAA, 0xAB, 0x6A, 0xAA, 0x77, 0x77, 0x7A, 0x77, 0x77, 0x5A, 0xAA, 0xAB, 0x6A, 0x9E, 0x77, 0x77, 0x5A, 0x9E, 0x77, 0x77, 0x5A, 0xAB, 0x6A, 0xA5, 0xA9, 0xE9, 0xBA, 0xA7, 0x77, 0xAA, 0xAD, 0xA9, 0x6A, 0x79, 0xEA, 0x79, 0x69, 0x6D, 0x5A, 0xB6, 0x97, 0x97, 0x55, 0xA9, 0x56, 0xA9, 0x56, 0xAA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xA7, 0xA7, 0x79, 0xEA, 0xAA, 0xAB, 0x6A, 0xAA, 0x7A, 0x77, 0x7F, 0x9E, 0xAA, 0xAB, 0x6A, 0xA7, 0xF7, 0x7B, 0x79, 0xE7, 0xEA, 0xAB, 0x6A, 0xAA, 0x77, 0x77, 0x7A, 0x77, 0x77, 0x7E, 0xAA, 0xAB, 0x6A, 0x9E, 0x77, 0x77, 0x7E, 0x9E, 0x77, 0x77, 0x7E, 0xAB, 0x6A, 0xA7, 0xE9, 0xE6, 0x6A, 0xA7, 0x77, 0xAA, 0xAD, 0xA9, 0xFA, 0x79, 0xEA, 0x79, 0xF9, 0xDA, 0xDE, 0xB6, 0x97, 0x97, 0x5F, 0xE9, 0x7F, 0xAA, 0xF5, 0xA9, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0x65, 0x79, 0xEA, 0xAA, 0xAB, 0x6A, 0xAA, 0x56, 0x57, 0x7A, 0x9E, 0xAA, 0xAB, 0x6A, 0xA7, 0xA7, 0x75, 0x79, 0xE5, 0x6A, 0xAB, 0x6A, 0xAA, 0x9B, 0x57, 0x56, 0x57, 0x77, 0x56, 0xAA, 0xAB, 0x6A, 0x9E, 0x57, 0x77, 0x56, 0x9E, 0x57, 0x77, 0x56, 0xAB, 0x6A, 0xA7, 0xA9, 0xE7, 0x7A, 0xA5, 0xB5, 0x6A, 0xAD, 0xA9, 0xEA, 0x79, 0x5A, 0x79, 0x59, 0xDD, 0x5E, 0xB6, 0xA5, 0x5F, 0x5E, 0xA9, 0x7A, 0xA5, 0x57, 0xE9, 0x7A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xAA, 0xAB, 0xFB, 0xFA, 0xEA, 0xAA, 0xAB, 0x6A, 0xAA, 0xBF, 0xBF, 0xBA, 0xAE, 0xAA, 0xAB, 0x6A, 0xAB, 0xAB, 0xBB, 0xFA, 0xEB, 0xFA, 0xAB, 0x6A, 0xAA, 0xAE, 0xBF, 0xBF, 0xBF, 0xBB, 0xBF, 0xAA, 0xAB, 0x6A, 0xAE, 0xBF, 0xBB, 0xBF, 0xAE, 0xBF, 0xBB, 0xBF, 0xAB, 0x6A, 0xAB, 0xAA, 0xEB, 0xBA, 0xAB, 0xEB, 0xFA, 0xAD, 0xAA, 0xEA, 0xBA, 0xFE, 0xBA, 0xFE, 0xEE, 0xFE, 0xB6, 0xAB, 0xFE, 0xBE, 0xAA, 0xFA, 0xAB, 0xFF, 0xAA, 0xFA, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xAB, 0x6A, 0xCC, 0x06, 0xAA, 0xAD, 0xCC, 0x07, 0xAA, 0xB6, 0xCC, 0x10, 0xAA, 0xAB, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xCC, 0x08, 0xFF, 0xBF, 0xCC, 0x06, 0xFF, 0xFE, 0xCC, 0x07, 0xFF, 0xFB, 0xCC, 0x11, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_spectrum.c0000644000000000000000000003431713235646512017756 0ustar rootroot#include uint16_t analyzerColors[36] = { 0x0F00, 0x0F10, 0x0F20, 0x0F30, 0x0F40, 0x0F50, 0x0F60, 0x0F70, 0x0F80, 0x0F90, 0x0FA0, 0x0FB0, 0x0FC0, 0x0FD0, 0x0FE0, 0x0FF0, 0x0EF0, 0x0DF0, 0x0CF0, 0x0BF0, 0x0AF0, 0x09F0, 0x08F0, 0x07F0, 0x06F0, 0x05F0, 0x04F0, 0x03F0, 0x02F0, 0x01F0, 0x00F0, 0x00E0, 0x00D0, 0x00C0, 0x00B0, 0x00A0 }; // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t spectrumVisualsPackedBMP[2217] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x2D, 0x55, 0x65, 0x55, 0x55, 0x56, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0x6A, 0xCC, 0x08, 0xAA, 0xA5, 0x56, 0x55, 0x69, 0x55, 0x69, 0x56, 0x95, 0x56, 0x55, 0x69, 0x69, 0x66, 0xA9, 0xAA, 0xAA, 0x95, 0x69, 0x69, 0x69, 0x56, 0x96, 0xAA, 0x5A, 0x59, 0x55, 0x65, 0x55, 0x95, 0x5A, 0xCC, 0x05, 0xAA, 0xB6, 0xA9, 0x56, 0xAB, 0x6A, 0xCC, 0x08, 0xAA, 0x97, 0xFF, 0x5F, 0x59, 0x7F, 0xF5, 0xF5, 0xAD, 0x7F, 0x5F, 0x59, 0x79, 0x75, 0xA5, 0xEA, 0xAA, 0x5F, 0x59, 0x59, 0x75, 0xF5, 0x97, 0xAA, 0x5E, 0x5E, 0xF5, 0xF5, 0xFF, 0xD7, 0xD6, 0xCC, 0x05, 0xAA, 0xB6, 0xA5, 0xF5, 0xAB, 0x6A, 0xCC, 0x08, 0xAA, 0xA5, 0x5A, 0x55, 0x7D, 0x56, 0xA5, 0xEB, 0xE9, 0x7A, 0x55, 0x7D, 0x79, 0x75, 0x55, 0xEA, 0xAA, 0x55, 0x5D, 0x55, 0x75, 0x55, 0xD7, 0xAA, 0x95, 0x7E, 0x97, 0xE5, 0x5A, 0x95, 0x5F, 0xCC, 0x05, 0xAA, 0xB6, 0xA5, 0x55, 0xEB, 0x6A, 0xCC, 0x08, 0xAA, 0xAB, 0xD6, 0x5F, 0xF9, 0x7F, 0xA5, 0xE5, 0xA9, 0x7A, 0x5D, 0x79, 0x79, 0x75, 0xF5, 0xEA, 0xAA, 0x5F, 0x5D, 0x75, 0x75, 0xF5, 0xD7, 0xAA, 0xA5, 0xFA, 0x5F, 0xA5, 0xFE, 0x97, 0x5E, 0xCC, 0x05, 0xAA, 0xB6, 0xA5, 0xF5, 0xEB, 0x6A, 0xCC, 0x08, 0xAA, 0x95, 0x5F, 0x5E, 0xA9, 0x55, 0x69, 0x57, 0xE9, 0x7A, 0x5E, 0x5A, 0x55, 0xF5, 0xE5, 0xEA, 0xAA, 0x5E, 0x5D, 0x79, 0x75, 0xE5, 0xD5, 0x56, 0xA5, 0xE9, 0x55, 0x65, 0x55, 0x97, 0x96, 0xCC, 0x05, 0xAA, 0xB6, 0xA5, 0xE5, 0xEB, 0x6A, 0xCC, 0x08, 0xAA, 0xAF, 0xFE, 0xBE, 0xAA, 0xFF, 0xFA, 0xFF, 0xAA, 0xFA, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEA, 0xAA, 0xBE, 0xBE, 0xFA, 0xFB, 0xEB, 0xEF, 0xFF, 0xAB, 0xEA, 0xFF, 0xFB, 0xFF, 0xEF, 0xAF, 0xCC, 0x05, 0xAA, 0xB6, 0xAB, 0xEB, 0xEB, 0x6A, 0xCC, 0x2C, 0xAA, 0xB6, 0xAA, 0xAA, 0xAB, 0xBF, 0xCC, 0x2C, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xCC, 0x30, 0x55, 0x56, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xAA, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0x55, 0x56, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0x6A, 0xAB, 0xAA, 0xAB, 0x6A, 0xAA, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0xBF, 0xCC, 0x30, 0xFF }; uint32_t spectrumAnaBMP[36]; protracker-2.3d.r92/src/gfx/pt_gfx_aboutscreen.c0000644000000000000000000002505013235646510020416 0ustar rootroot#include // Final unpack length: 11000 // Decoded length: 2750 (first four bytes of buffer) const uint8_t aboutScreenPackedBMP[1684] = { 0x00, 0x00, 0x0A, 0xBE, 0xCC, 0x30, 0x55, 0x56, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x65, 0x55, 0x55, 0x55, 0x6A, 0xCC, 0x06, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x6A, 0xCC, 0x0A, 0xAA, 0x55, 0x5A, 0xCC, 0x0A, 0xAA, 0x95, 0x55, 0x6A, 0xAA, 0xAA, 0x95, 0x55, 0x6A, 0xAB, 0x65, 0x55, 0x55, 0x55, 0x56, 0xCC, 0x06, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x7A, 0xCC, 0x0A, 0xAA, 0x55, 0x5E, 0xCC, 0x09, 0xAA, 0xA9, 0x55, 0x55, 0x56, 0xAA, 0xA9, 0x55, 0x55, 0x56, 0xAB, 0x65, 0xCC, 0x03, 0x55, 0xCC, 0x06, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x7A, 0xCC, 0x0A, 0xAA, 0x55, 0x5E, 0xCC, 0x09, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0xAB, 0x65, 0x55, 0x5F, 0xD5, 0x55, 0xD5, 0x55, 0x95, 0xAA, 0x55, 0x55, 0x5A, 0xA5, 0x55, 0x55, 0x55, 0x75, 0x55, 0x65, 0x6A, 0x95, 0x56, 0x55, 0x5A, 0xA5, 0x55, 0x55, 0xAA, 0x55, 0x5E, 0x55, 0x55, 0xAA, 0x55, 0x55, 0x5A, 0xA5, 0x55, 0x65, 0x6A, 0x95, 0x55, 0xF5, 0x55, 0x6A, 0x95, 0x55, 0xF5, 0x55, 0x6B, 0x65, 0x55, 0x5E, 0xA5, 0x55, 0xD5, 0x55, 0x55, 0xE5, 0x55, 0x55, 0x55, 0xAB, 0xF5, 0x55, 0x7F, 0xF5, 0x55, 0x55, 0x79, 0x55, 0x55, 0x55, 0x5E, 0x55, 0x55, 0x55, 0x5A, 0x55, 0x5E, 0x55, 0x57, 0xE5, 0x55, 0x55, 0x55, 0xA5, 0x55, 0x55, 0x7A, 0x95, 0x57, 0xE9, 0x55, 0x7A, 0x95, 0x57, 0xE9, 0x55, 0x7B, 0x65, 0x55, 0x5E, 0x95, 0x55, 0xD5, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x6A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x55, 0x75, 0x55, 0x55, 0x55, 0x5D, 0x55, 0x55, 0x55, 0x56, 0x55, 0x5D, 0x55, 0x5F, 0x95, 0x55, 0xFD, 0x55, 0x65, 0x55, 0x55, 0x7A, 0x95, 0x57, 0xA9, 0x55, 0x7A, 0xAF, 0xFF, 0x95, 0x55, 0x7B, 0x65, 0xCC, 0x03, 0x55, 0xD5, 0x55, 0x55, 0xD5, 0x55, 0xF5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x55, 0x75, 0x55, 0x7D, 0x55, 0x5D, 0x55, 0x5F, 0x55, 0x57, 0x55, 0x5D, 0x55, 0x5E, 0x95, 0x55, 0xE9, 0x55, 0x75, 0x55, 0x55, 0x7A, 0xAF, 0xFF, 0xA5, 0x55, 0x7A, 0xAA, 0xAA, 0x95, 0x55, 0xFB, 0x65, 0x55, 0x55, 0x55, 0x57, 0xD5, 0x55, 0xD5, 0xD5, 0x57, 0xE9, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x75, 0x75, 0x55, 0xFA, 0x55, 0x5D, 0x55, 0x7E, 0xBF, 0xFF, 0x55, 0x55, 0x55, 0x7E, 0x95, 0x55, 0xE9, 0x55, 0x75, 0x55, 0x75, 0x7A, 0xAA, 0xAA, 0x55, 0x55, 0xFA, 0xAA, 0xAA, 0x95, 0x55, 0x6B, 0x65, 0x55, 0x55, 0x55, 0x7F, 0x95, 0x55, 0xEF, 0xD5, 0x57, 0xA9, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7B, 0xF5, 0x55, 0xEA, 0x55, 0x5D, 0x55, 0x7A, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x7A, 0x95, 0x55, 0x55, 0x55, 0x75, 0x55, 0x7B, 0xFA, 0xAA, 0xA5, 0x55, 0x5F, 0xEA, 0x95, 0x56, 0xAD, 0x55, 0x7B, 0x65, 0x55, 0x5F, 0xFF, 0xFA, 0x95, 0x55, 0xEA, 0x95, 0x55, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x69, 0x55, 0x5D, 0x55, 0x5A, 0x55, 0x56, 0x55, 0x5D, 0x55, 0x5A, 0x95, 0x55, 0xFF, 0xFF, 0xF5, 0x55, 0x7A, 0xAA, 0xAA, 0x55, 0x55, 0xFE, 0xAA, 0x95, 0x55, 0xA5, 0x55, 0x7B, 0x65, 0x55, 0x5E, 0xAA, 0xAA, 0x95, 0x55, 0xEA, 0x95, 0x55, 0x55, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x55, 0x55, 0x5D, 0x55, 0x55, 0x55, 0x57, 0x55, 0x5D, 0x55, 0x5E, 0x95, 0x55, 0xE9, 0x55, 0x65, 0x55, 0x7A, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x6A, 0xA5, 0x55, 0x55, 0x55, 0xFB, 0x65, 0x55, 0x5E, 0xAA, 0xAA, 0x95, 0x55, 0xEA, 0xA5, 0x55, 0x55, 0x55, 0xFA, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xA9, 0x55, 0x55, 0x55, 0x5E, 0x55, 0x55, 0x55, 0x5F, 0x55, 0x5E, 0x55, 0x56, 0xA5, 0x55, 0x55, 0x55, 0xF5, 0x55, 0x7A, 0xAA, 0x95, 0x55, 0x55, 0x55, 0x75, 0xA9, 0x55, 0x55, 0x57, 0xEB, 0x65, 0x55, 0x5E, 0xAA, 0xAA, 0x95, 0x55, 0xEA, 0xAB, 0x55, 0x55, 0x5F, 0xEA, 0xA5, 0x55, 0x7A, 0xA5, 0x55, 0x7A, 0xAA, 0xD5, 0x57, 0x55, 0x5E, 0xB5, 0x55, 0x55, 0xFE, 0x55, 0x5E, 0x55, 0x55, 0xAB, 0x55, 0x55, 0x5F, 0xE5, 0x55, 0x7A, 0xAA, 0x95, 0x55, 0x55, 0x55, 0x75, 0xEA, 0xD5, 0x55, 0x7F, 0xAB, 0x6B, 0xFF, 0xFE, 0xAA, 0xAA, 0xAF, 0xFF, 0xEA, 0xAA, 0xBF, 0xFF, 0xFE, 0xAA, 0xAB, 0xFF, 0xFA, 0xAB, 0xFF, 0xFA, 0xAA, 0xAF, 0xFF, 0xBF, 0xFE, 0xAB, 0xFF, 0xFF, 0xEA, 0xBF, 0xFE, 0xBF, 0xFF, 0xEA, 0xBF, 0xFF, 0xFE, 0xAB, 0xFF, 0xFA, 0xAA, 0xAF, 0xFF, 0xFF, 0xFF, 0xFB, 0xEA, 0xAF, 0xFF, 0xFA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0x95, 0x56, 0xCC, 0x1A, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0x95, 0x57, 0xCC, 0x1A, 0xAA, 0xAB, 0x6A, 0xCC, 0x12, 0xAA, 0x95, 0x57, 0xCC, 0x1A, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xA9, 0xCC, 0x05, 0xAA, 0xA9, 0x55, 0x55, 0x6A, 0x95, 0x57, 0xA9, 0x55, 0x55, 0x6A, 0x95, 0x55, 0x95, 0x5A, 0xA9, 0x55, 0x55, 0x6A, 0xCC, 0x06, 0xAA, 0xA5, 0xCC, 0x06, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xA9, 0x6A, 0xCC, 0x04, 0xAA, 0x95, 0x55, 0x55, 0x56, 0x95, 0x57, 0x95, 0x55, 0x55, 0x56, 0x95, 0x55, 0x55, 0x56, 0x95, 0x55, 0x55, 0x56, 0xCC, 0x06, 0xAA, 0xA5, 0x5A, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x07, 0xAA, 0xA9, 0x5A, 0xCC, 0x04, 0xAA, 0xCC, 0x03, 0x55, 0x95, 0x57, 0xCC, 0x03, 0x55, 0x95, 0x55, 0x55, 0x57, 0x55, 0x57, 0xF5, 0x55, 0xCC, 0x06, 0xAA, 0xA5, 0x55, 0xCC, 0x05, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x9A, 0xAA, 0xAA, 0xA9, 0x56, 0xCC, 0x04, 0xAA, 0x55, 0x57, 0xD5, 0x55, 0xD5, 0x57, 0x55, 0x57, 0xD5, 0x55, 0xD5, 0x55, 0xD5, 0x57, 0x55, 0x57, 0xA5, 0x55, 0xEA, 0xCC, 0x05, 0xAA, 0xA5, 0x55, 0x5A, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x96, 0xAA, 0xAA, 0xA9, 0x75, 0xCC, 0x04, 0xAA, 0x55, 0x5F, 0xAF, 0xFF, 0xD5, 0x57, 0x55, 0x5F, 0xA5, 0x55, 0xD5, 0x55, 0xD5, 0x57, 0x55, 0x57, 0xA5, 0x55, 0xEA, 0xCC, 0x05, 0xAA, 0xA5, 0xF5, 0x55, 0xCC, 0x04, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x95, 0xAA, 0xAA, 0xA9, 0x79, 0x6A, 0xCC, 0x03, 0xAA, 0x55, 0x5E, 0xAA, 0xAA, 0x95, 0x57, 0x55, 0x5E, 0xA5, 0x55, 0xD5, 0x55, 0xD5, 0x57, 0xCC, 0x03, 0x55, 0xEA, 0xCC, 0x05, 0xAA, 0xA5, 0xEB, 0x55, 0x5A, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x95, 0x6A, 0xAA, 0xA9, 0x7A, 0x7A, 0xCC, 0x03, 0xAA, 0x55, 0x56, 0x95, 0x55, 0x95, 0x57, 0x55, 0x56, 0x95, 0x55, 0xD5, 0x55, 0xD5, 0x57, 0x55, 0x57, 0xFF, 0xFF, 0xEA, 0xCC, 0x05, 0xAA, 0xA5, 0xEA, 0xB5, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0x5A, 0xAA, 0xA9, 0x7A, 0x7A, 0xCC, 0x03, 0xAA, 0xCC, 0x03, 0x55, 0xD5, 0x57, 0xCC, 0x03, 0x55, 0xD5, 0x55, 0xD5, 0x57, 0x55, 0x57, 0xA5, 0x55, 0xCC, 0x06, 0xAA, 0xA5, 0xEA, 0xAB, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0x96, 0xAA, 0xA9, 0x7A, 0x7A, 0xCC, 0x03, 0xAA, 0x95, 0x55, 0x55, 0x57, 0xD5, 0x57, 0x95, 0x55, 0x55, 0x57, 0xD5, 0x55, 0xD5, 0x57, 0x95, 0x55, 0x55, 0x57, 0xEA, 0xCC, 0x05, 0xAA, 0xA5, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0xA7, 0xAA, 0xA9, 0x79, 0xBA, 0xCC, 0x03, 0xAA, 0xAD, 0x55, 0x55, 0x7F, 0x95, 0x57, 0xAD, 0x55, 0x55, 0x7F, 0x95, 0x55, 0xD5, 0x57, 0xAD, 0x55, 0x55, 0x7F, 0xCC, 0x06, 0xAA, 0xA5, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0xA7, 0xAA, 0x55, 0x7A, 0xEA, 0xCC, 0x04, 0xAA, 0xFF, 0xFF, 0xFA, 0xAF, 0xFF, 0xAA, 0xFF, 0xFF, 0xFA, 0xAF, 0xFF, 0xEF, 0xFF, 0xAA, 0xFF, 0xFF, 0xFA, 0xCC, 0x05, 0xAA, 0xA9, 0x55, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0xA7, 0xA9, 0x55, 0x7A, 0xCC, 0x1C, 0xAA, 0xA5, 0x55, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x04, 0xAA, 0x97, 0x9B, 0xA5, 0x55, 0x7A, 0xCC, 0x1C, 0xAA, 0x95, 0x55, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xA5, 0x57, 0xAE, 0xA5, 0x55, 0xFA, 0xCC, 0x1C, 0xAA, 0x95, 0x57, 0xEA, 0xAA, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0x95, 0x57, 0xAA, 0xA9, 0x57, 0xEA, 0xCC, 0x1C, 0xAA, 0xA5, 0x5F, 0xAA, 0x95, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0x55, 0x57, 0xAA, 0xAA, 0xFF, 0xCC, 0x0C, 0xAA, 0x95, 0x56, 0x96, 0x96, 0xCC, 0x0C, 0xAA, 0xAB, 0xFE, 0xAA, 0x55, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0x55, 0x5F, 0xCC, 0x0F, 0xAA, 0x97, 0xF5, 0x97, 0x97, 0xCC, 0x0E, 0xAA, 0xA9, 0x55, 0x5E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0x95, 0x7E, 0xCC, 0x0F, 0xAA, 0x95, 0x57, 0xE5, 0x5F, 0xCC, 0x0E, 0xAA, 0xA9, 0x55, 0x7E, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x03, 0xAA, 0xAF, 0xFA, 0xCC, 0x0F, 0xAA, 0x97, 0xF5, 0xA9, 0x7E, 0xCC, 0x0F, 0xAA, 0x55, 0xFA, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0x95, 0x57, 0xE9, 0x7A, 0xCC, 0x0F, 0xAA, 0xBF, 0xEA, 0xCC, 0x03, 0xAA, 0xAB, 0x6A, 0xCC, 0x15, 0xAA, 0xAF, 0xFF, 0xAA, 0xFA, 0xCC, 0x15, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x21, 0xAA, 0xA6, 0xCC, 0x0C, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0x56, 0x96, 0xAA, 0x95, 0x5A, 0x5A, 0x96, 0xAA, 0x96, 0x5A, 0x55, 0x69, 0x55, 0x69, 0x65, 0x55, 0x95, 0x56, 0x96, 0xA5, 0x95, 0x56, 0xA5, 0x55, 0x96, 0x96, 0x59, 0x6A, 0xAA, 0x55, 0x5A, 0x55, 0x6D, 0x55, 0x69, 0x55, 0x59, 0x6A, 0x5A, 0x55, 0x59, 0x55, 0x59, 0x6A, 0x5A, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xF5, 0x97, 0xAA, 0x5F, 0xD6, 0x5E, 0x97, 0xAA, 0x97, 0x5D, 0x7F, 0x59, 0x7F, 0x59, 0x7B, 0x5F, 0xD7, 0xF5, 0x97, 0xA5, 0xD7, 0xF5, 0x97, 0xFF, 0xD7, 0x97, 0x5D, 0x7A, 0xA9, 0x7F, 0xFD, 0x7D, 0x59, 0x7F, 0x59, 0x7F, 0xFD, 0x5A, 0x5D, 0x7F, 0xFD, 0x7F, 0xFD, 0x5A, 0x5E, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xA5, 0xD7, 0xAA, 0x55, 0x57, 0x5E, 0x97, 0xAA, 0xAF, 0xBE, 0x55, 0x7D, 0x55, 0x7D, 0x7A, 0x5E, 0x95, 0x57, 0xD7, 0xA5, 0xD5, 0x57, 0xE5, 0x56, 0xA5, 0x5F, 0xBE, 0xFA, 0xAA, 0x55, 0x69, 0x76, 0x5D, 0x55, 0x7D, 0x55, 0x69, 0x76, 0x5E, 0x55, 0x69, 0x55, 0x69, 0x76, 0x5E, 0xAA, 0xAB, 0x6A, 0xAA, 0x97, 0xA5, 0xD7, 0xAA, 0x5F, 0xD7, 0x96, 0x5F, 0xAA, 0xAA, 0xA9, 0x7F, 0x59, 0x7F, 0x59, 0x7A, 0x5E, 0x97, 0xF5, 0x97, 0xA5, 0xD7, 0xF5, 0xAB, 0xF5, 0xA9, 0x7E, 0xAA, 0xAA, 0xAA, 0xBF, 0x59, 0x5B, 0x5D, 0x7F, 0x59, 0x7F, 0xF9, 0x79, 0x5E, 0xBF, 0x59, 0x7F, 0xF9, 0x79, 0x5E, 0xAA, 0xAB, 0x6A, 0xAA, 0xA5, 0x57, 0xD5, 0x56, 0x5E, 0x97, 0xA5, 0x7E, 0xAA, 0xAA, 0xAA, 0x55, 0x7D, 0x55, 0x7D, 0x7A, 0x5E, 0x95, 0x57, 0xE5, 0x57, 0xD5, 0x57, 0xD5, 0x57, 0xE9, 0x7A, 0xAA, 0xAA, 0xA9, 0x55, 0x7E, 0x55, 0x7D, 0x7A, 0x5D, 0x55, 0x59, 0x7A, 0x5D, 0x55, 0x7D, 0x55, 0x59, 0x7A, 0x5E, 0xAA, 0xAB, 0x6A, 0xAA, 0xAB, 0xFF, 0xAF, 0xFF, 0xBE, 0xAF, 0xAB, 0xFA, 0xAA, 0xAA, 0xAA, 0xBF, 0xFA, 0xFF, 0xFA, 0xFA, 0xBE, 0xAF, 0xFF, 0xAB, 0xFF, 0xAF, 0xFF, 0xAF, 0xFF, 0xAA, 0xFA, 0xAA, 0xAA, 0xAA, 0xFF, 0xF9, 0xBF, 0xFA, 0xFA, 0xBE, 0xFF, 0xFE, 0xFA, 0xBE, 0xFF, 0xFA, 0xFF, 0xFE, 0xFA, 0xBE, 0xAA, 0xAB, 0x6A, 0xCC, 0x20, 0xAA, 0xEA, 0xCC, 0x0D, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0x6A, 0xCC, 0x2F, 0xAA, 0xAB, 0xBF, 0xCC, 0x30, 0xFF }; protracker-2.3d.r92/src/gfx/pt_gfx_mod2wav.c0000644000000000000000000000762013235646511017467 0ustar rootroot#include // Final unpack length: 9216 // Decoded length: 2304 (first four bytes of buffer) const uint8_t mod2wavPackedBMP[607] = { 0x00, 0x00, 0x09, 0x00, 0xCC, 0x2E, 0x55, 0x56, 0xCC, 0x2E, 0x55, 0x5B, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x08, 0xAA, 0x95, 0x5A, 0x55, 0x59, 0x69, 0x65, 0x56, 0x95, 0x56, 0x55, 0x6A, 0x55, 0xA5, 0xA5, 0xA5, 0x56, 0xAA, 0xA9, 0xAA, 0x69, 0x56, 0x95, 0x5A, 0x5A, 0x59, 0x6A, 0xA5, 0x55, 0xCC, 0x08, 0xAA, 0xAF, 0x5A, 0xCC, 0x08, 0xAA, 0x97, 0xD6, 0x5F, 0xFD, 0x59, 0x75, 0xF5, 0x97, 0xFF, 0x5F, 0x5A, 0x97, 0xE5, 0x65, 0xD7, 0xFF, 0xAA, 0xA9, 0x69, 0x75, 0xF5, 0x97, 0xD6, 0x5E, 0x5D, 0x7A, 0xA5, 0xFF, 0xEA, 0xCC, 0x07, 0xAA, 0xAF, 0x5A, 0xCC, 0x04, 0xAA, 0xA9, 0x55, 0xAA, 0xAA, 0x95, 0x5F, 0x55, 0xA9, 0x55, 0x75, 0xE5, 0xD5, 0x6A, 0x55, 0x7E, 0x97, 0xA5, 0x55, 0xD7, 0x56, 0xAA, 0xA9, 0x55, 0x75, 0xE5, 0xD7, 0x97, 0x5E, 0x5D, 0x7A, 0xA5, 0x5A, 0xAA, 0xAA, 0x55, 0x6A, 0xCC, 0x04, 0xAA, 0xAF, 0x5A, 0xCC, 0x05, 0xAA, 0xFF, 0xEA, 0xAA, 0x97, 0x5E, 0x5F, 0xE9, 0x75, 0x75, 0xE5, 0xD7, 0xFA, 0x5D, 0x7A, 0x97, 0xA5, 0xD5, 0xD7, 0x97, 0xAA, 0xA9, 0x7D, 0x75, 0xE5, 0xD7, 0x97, 0x5E, 0x5D, 0x7A, 0xA5, 0xFE, 0xAA, 0xAA, 0xBF, 0xFA, 0xCC, 0x04, 0xAA, 0xAF, 0x5A, 0xCC, 0x08, 0xAA, 0x97, 0x96, 0x55, 0x59, 0x79, 0x75, 0x57, 0xD5, 0x56, 0x5E, 0x5A, 0x55, 0xA5, 0xE5, 0xE5, 0x57, 0xAA, 0xA9, 0x79, 0x79, 0x57, 0xD5, 0x5F, 0x95, 0x7D, 0x55, 0x65, 0x55, 0xCC, 0x08, 0xAA, 0xAF, 0x5A, 0xCC, 0x08, 0xAA, 0xAF, 0xAF, 0xBF, 0xFE, 0xFA, 0xFB, 0xFF, 0xAF, 0xFF, 0xBE, 0xBE, 0xBF, 0xEB, 0xEB, 0xEB, 0xFF, 0xAA, 0xAA, 0xFA, 0xFA, 0xFF, 0xAF, 0xFE, 0xAF, 0xFA, 0xFF, 0xFB, 0xFF, 0xEA, 0xCC, 0x07, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xA5, 0xCC, 0x2B, 0x55, 0x5A, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBF, 0xCC, 0x0B, 0xFF, 0xFA, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xCC, 0x0B, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xCC, 0x0B, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xAA, 0x55, 0xA9, 0x56, 0x96, 0x96, 0x95, 0x69, 0x55, 0x65, 0xAA, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xA9, 0x7D, 0x65, 0xF5, 0x95, 0x97, 0x5F, 0x59, 0x7F, 0xF5, 0xEA, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xA9, 0x7A, 0xF5, 0x55, 0xD5, 0x57, 0x5E, 0xBD, 0x56, 0xA5, 0xEA, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xA9, 0x79, 0x65, 0xF5, 0xD7, 0x57, 0x5E, 0x59, 0x7F, 0xA5, 0xEA, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xAA, 0x55, 0xF5, 0xE5, 0xD7, 0x97, 0x95, 0x7D, 0x55, 0x65, 0x55, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xAA, 0xBF, 0xEB, 0xEB, 0xEF, 0xAF, 0xAF, 0xFA, 0xFF, 0xFB, 0xFF, 0xEA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xBA, 0xCC, 0x0B, 0xAA, 0xA6, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x0F, 0xAA, 0xA5, 0xCC, 0x0B, 0x55, 0x56, 0xCC, 0x0F, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x5A, 0xCC, 0x2D, 0xAA, 0xAF, 0x6F, 0xCC, 0x2E, 0xFF, 0xBF, 0xCC, 0x2E, 0xFF }; protracker-2.3d.r92/src/pt_textout.h0000644000000000000000000001046013235646477016210 0ustar rootroot#ifndef __PT_TEXTOUT_H #define __PT_TEXTOUT_H #include void charOut(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor); void textOutNoSpace(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor); void textOut(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor); void charOutBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor); void textOutBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor); void printOneHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printTwoHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printThreeHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printFourHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printFiveHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printOneHexBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printTwoHexBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printSixDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printTwoDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printFourDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printFiveDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printThreeDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void printTwoDecimalsBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor); void charOutBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor, uint32_t backColor); void textOutBgNoSpace(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor); void textOutBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor); void charOutBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor, uint32_t backColor); void textOutBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor); void printOneHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printTwoHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printThreeHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printFourHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printFiveHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printOneHexBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printTwoHexBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printSixDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printTwoDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printFourDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printFiveDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printThreeDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void printTwoDecimalsBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor); void setPrevStatusMessage(void); void setStatusMessage(const char *message, uint8_t carry); void displayMsg(const char *msg); void displayErrorMsg(const char *msg); #endif protracker-2.3d.r92/src/pt_unicode.h0000644000000000000000000000332713235646476016125 0ustar rootroot#ifndef __PT_UNICODE_H #define __PT_UNICODE_H #include #include int32_t my_stricmp(const char *s1, const char *s2); // pt_helpers.c // unicode stuff for different platforms #ifdef _WIN32 typedef wchar_t UNICHAR; #define UNICHAR_STRCPY(a, b) wcscpy(a, b) #define UNICHAR_STRNCPY(a, b, c) wcsncpy(a, b, c) #define UNICHAR_STRCMP(a, b) wcscmp(a, b) #define UNICHAR_STRICMP(a, b, c) _wcsnicmp(a, L ## b, c) #define UNICHAR_STRNCMP(a, b, c) wcsncmp(a, b, c) #define UNICHAR_STRCAT(a, b) wcscat(a, b) #define UNICHAR_STRDUP(a) wcsdup(a) #define UNICHAR_FOPEN(a, b) _wfopen(a, L ## b) #define UNICHAR_CHDIR(a) _wchdir(a) #define UNICHAR_GETCWD(a, b) _wgetcwd(a, b) #define UNICHAR_RENAME(a, b) _wrename(a, b) #define UNICHAR_REMOVE(a) _wremove(a) #define UNICHAR_STRLEN(a) wcslen(a) #define UNICHAR_TO_ANSI(a, b, c) unicharToAnsi(a, b, c) #else typedef char UNICHAR; #define UNICHAR_STRCPY(a, b) strcpy(a, b) #define UNICHAR_STRNCPY(a, b, c) strncpy(a, b, c) #define UNICHAR_STRCMP(a, b) strcmp(a, b) #define UNICHAR_STRICMP(a, b, c) my_stricmp(a, b) #define UNICHAR_STRNCMP(a, b, c) strncmp(a, b, c) #define UNICHAR_STRCAT(a, b) strcat(a, b) #define UNICHAR_STRDUP(a) strdup(a) #define UNICHAR_FOPEN(a, b) fopen(a, b) #define UNICHAR_CHDIR(a) chdir(a) #define UNICHAR_GETCWD(a, b) getcwd(a, b) #define UNICHAR_RENAME(a, b) rename(a, b) #define UNICHAR_REMOVE(a) remove(a) #define UNICHAR_STRLEN(a) strlen(a) #define UNICHAR_TO_ANSI(a, b, c) unicharToAnsi(a, b, c) #endif uint32_t unicharToAnsi(char *dstBuffer, const UNICHAR *inputString, uint32_t maxDstLen); #endif protracker-2.3d.r92/src/pt_diskop.h0000644000000000000000000000131413235646520015750 0ustar rootroot#ifndef __PT_DISKOP_H #define __PT_DISKOP_H #include #include "pt_unicode.h" enum { DISKOP_FILE = 0, DISKOP_DIR = 1, DISKOP_NO_CACHE = 0, DISKOP_CACHE = 1 }; #define DISKOP_LIST_SIZE 10 void handleEntryJumping(char jumpToChar); int8_t diskOpEntryIsEmpty(int32_t fileIndex); int8_t diskOpEntryIsDir(int32_t fileIndex); char *diskOpGetAnsiEntry(int32_t fileIndex); UNICHAR *diskOpGetUnicodeEntry(int32_t fileIndex); int8_t diskOpSetPath(UNICHAR *path, uint8_t cache); void diskOpSetInitPath(void); void diskOpRenderFileList(uint32_t *frameBuffer); int8_t allocDiskOpVars(void); void deAllocDiskOpVars(void); void freeDiskOpFileMem(void); #endif protracker-2.3d.r92/src/pt_keyboard.c0000644000000000000000000044367613235646501016276 0ustar rootroot#include #include #include // tolower() #include #ifdef _WIN32 #include #endif #include "pt_textout.h" #include "pt_helpers.h" #include "pt_visuals.h" #include "pt_palette.h" #include "pt_diskop.h" #include "pt_edit.h" #include "pt_sampler.h" #include "pt_audio.h" #include "pt_keyboard.h" #include "pt_tables.h" #include "pt_modloader.h" #include "pt_mouse.h" #include "pt_terminal.h" void sampleUpButton(void); // pt_mouse.c void sampleDownButton(void); // pt_mouse.c #ifdef _WIN32 extern uint8_t windowsKeyIsDown; extern HHOOK g_hKeyboardHook; #endif void movePatCurPrevCh(void); void movePatCurNextCh(void); void movePatCurRight(void); void movePatCurLeft(void); int8_t handleGeneralModes(SDL_Scancode keyEntry); int8_t handleTextEditMode(SDL_Scancode keyEntry); extern SDL_Window *window; char scanCodeToUSKey(SDL_Scancode key) { int32_t keyOut; switch (key) { case SDL_SCANCODE_MINUS: return (SDLK_MINUS); case SDL_SCANCODE_EQUALS: return (SDLK_EQUALS); case SDL_SCANCODE_LEFTBRACKET: return (SDLK_LEFTBRACKET); case SDL_SCANCODE_RIGHTBRACKET: return (SDLK_RIGHTBRACKET); case SDL_SCANCODE_BACKSLASH: return (SDLK_BACKSLASH); case SDL_SCANCODE_SEMICOLON: return (SDLK_SEMICOLON); case SDL_SCANCODE_APOSTROPHE: return (SDLK_QUOTE); case SDL_SCANCODE_GRAVE: return (SDLK_BACKQUOTE); case SDL_SCANCODE_COMMA: return (SDLK_COMMA); case SDL_SCANCODE_PERIOD: return (SDLK_PERIOD); case SDL_SCANCODE_SLASH: return (SDLK_SLASH); case SDL_SCANCODE_NONUSBACKSLASH: return (SDLK_LESS); default: break; } keyOut = SDL_GetKeyFromScancode(key); if ((keyOut < -128) || (keyOut > 127)) return (SDLK_UNKNOWN); return ((char)(keyOut)); } void updateKeyModifiers(void) { uint32_t modState; modState = SDL_GetModState(); input.keyb.leftCtrlKeyDown = (modState & KMOD_LCTRL) ? true : false; input.keyb.leftAltKeyDown = (modState & KMOD_LALT) ? true : false; input.keyb.shiftKeyDown = (modState & (KMOD_LSHIFT | KMOD_RSHIFT)) ? true : false; #ifndef _WIN32 // MS Windows: handled in lowLevelKeyboardProc input.keyb.leftAmigaKeyDown = (modState & KMOD_LGUI) ? true : false; #endif } #ifdef _WIN32 // for taking control over windows key and numlock on keyboard if app has focus LRESULT CALLBACK lowLevelKeyboardProc(int32_t nCode, WPARAM wParam, LPARAM lParam) { uint8_t bEatKeystroke; KBDLLHOOKSTRUCT *p; SDL_Event inputEvent; if ((nCode < 0) || (nCode != HC_ACTION)) // do not process message return (CallNextHookEx(g_hKeyboardHook, nCode, wParam, lParam)); bEatKeystroke = false; p = (KBDLLHOOKSTRUCT *)(lParam); switch (wParam) { case WM_KEYUP: case WM_KEYDOWN: { bEatKeystroke = (SDL_GetWindowFlags(window) & SDL_WINDOW_INPUT_FOCUS) && ((p->vkCode == VK_LWIN) || (p->vkCode == VK_NUMLOCK)); if (bEatKeystroke) { if (wParam == WM_KEYDOWN) { if (p->vkCode == VK_NUMLOCK) { memset(&inputEvent, 0, sizeof (SDL_Event)); inputEvent.type = SDL_KEYDOWN; inputEvent.key.type = SDL_KEYDOWN; inputEvent.key.state = 1; inputEvent.key.keysym.scancode = (SDL_Scancode)(69); inputEvent.key.keysym.mod = KMOD_NUM; inputEvent.key.keysym.scancode = SDL_SCANCODE_NUMLOCKCLEAR; SDL_PushEvent(&inputEvent); } else if (!windowsKeyIsDown) { windowsKeyIsDown = true; input.keyb.leftAmigaKeyDown = true; memset(&inputEvent, 0, sizeof (SDL_Event)); inputEvent.type = SDL_KEYDOWN; inputEvent.key.type = SDL_KEYDOWN; inputEvent.key.state = 1; inputEvent.key.keysym.scancode = (SDL_Scancode)(91); inputEvent.key.keysym.scancode = SDL_SCANCODE_LGUI; SDL_PushEvent(&inputEvent); } } else if (wParam == WM_KEYUP) { if (p->vkCode == VK_NUMLOCK) { memset(&inputEvent, 0, sizeof (SDL_Event)); inputEvent.type = SDL_KEYUP; inputEvent.key.type = SDL_KEYUP; inputEvent.key.keysym.scancode = (SDL_Scancode)(69); inputEvent.key.keysym.scancode = SDL_SCANCODE_NUMLOCKCLEAR; SDL_PushEvent(&inputEvent); } else { windowsKeyIsDown = false; input.keyb.leftAmigaKeyDown = false; memset(&inputEvent, 0, sizeof (SDL_Event)); inputEvent.type = SDL_KEYUP; inputEvent.key.type = SDL_KEYUP; inputEvent.key.keysym.scancode = (SDL_Scancode)(91); inputEvent.key.keysym.scancode = SDL_SCANCODE_LGUI; SDL_PushEvent(&inputEvent); } } } break; } default: break; } return (bEatKeystroke ? true : (CallNextHookEx(g_hKeyboardHook, nCode, wParam, lParam))); } #endif // these four functions are for the text edit cursor void textMarkerMoveLeft(void) { if (editor.ui.dstPos > 0) { removeTextEditMarker(); editor.ui.dstPos--; editor.ui.lineCurX -= FONT_CHAR_W; renderTextEditMarker(); } else { if (editor.ui.dstOffset != NULL) { (*editor.ui.dstOffset)--; if (editor.ui.editObject == PTB_DO_DATAPATH) editor.ui.updateDiskOpPathText = true; else if (editor.ui.editObject == PTB_PE_PATTNAME) editor.ui.updatePosEd = true; } } } void textMarkerMoveRight(void) { if (editor.ui.editTextType == TEXT_EDIT_STRING) { if (editor.ui.dstPos < (editor.ui.textLength - 1)) { removeTextEditMarker(); editor.ui.dstPos++; editor.ui.lineCurX += FONT_CHAR_W; renderTextEditMarker(); } else { if (editor.ui.dstOffset != NULL) { (*editor.ui.dstOffset)++; if (editor.ui.editObject == PTB_DO_DATAPATH) editor.ui.updateDiskOpPathText = true; else if (editor.ui.editObject == PTB_PE_PATTNAME) editor.ui.updatePosEd = true; } } } else { // we end up here when entering a number/hex digit if (editor.ui.dstPos < editor.ui.numLen) removeTextEditMarker(); editor.ui.dstPos++; editor.ui.lineCurX += FONT_CHAR_W; if (editor.ui.dstPos < editor.ui.numLen) renderTextEditMarker(); // don't clamp, dstPos is tested elsewhere to check if done editing a number } } void textCharPrevious(void) { if (editor.ui.editTextType != TEXT_EDIT_STRING) { if (editor.ui.dstPos > 0) { removeTextEditMarker(); editor.ui.dstPos--; editor.ui.lineCurX -= FONT_CHAR_W; renderTextEditMarker(); } return; } if (editor.mixFlag && (editor.ui.dstPos <= 4)) return; if (editor.ui.editPos > editor.ui.showTextPtr) { removeTextEditMarker(); editor.ui.editPos--; textMarkerMoveLeft(); if (editor.mixFlag) { if (editor.ui.dstPos == 12) { editor.ui.editPos--; textMarkerMoveLeft(); editor.ui.editPos--; textMarkerMoveLeft(); editor.ui.editPos--; textMarkerMoveLeft(); editor.ui.editPos--; textMarkerMoveLeft(); } else if (editor.ui.dstPos == 6) { editor.ui.editPos--; textMarkerMoveLeft(); } } renderTextEditMarker(); } editor.ui.dstOffsetEnd = false; } void textCharNext(void) { if (editor.ui.editTextType != TEXT_EDIT_STRING) { if (editor.ui.dstPos < (editor.ui.numLen - 1)) { removeTextEditMarker(); editor.ui.dstPos++; editor.ui.lineCurX += FONT_CHAR_W; renderTextEditMarker(); } return; } if (editor.mixFlag && (editor.ui.dstPos >= 14)) return; if (editor.ui.editPos < editor.ui.textEndPtr) { if (*editor.ui.editPos != '\0') { removeTextEditMarker(); editor.ui.editPos++; textMarkerMoveRight(); if (editor.mixFlag) { if (editor.ui.dstPos == 9) { editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); } else if (editor.ui.dstPos == 6) { editor.ui.editPos++; textMarkerMoveRight(); } } renderTextEditMarker(); } else { editor.ui.dstOffsetEnd = true; } } else { editor.ui.dstOffsetEnd = true; } } // -------------------------------- void keyUpHandler(SDL_Scancode keyEntry) { if (keyEntry == SDL_SCANCODE_KP_PLUS) { input.keyb.keypadEnterKeyDown = false; } else if (keyEntry == SDL_SCANCODE_CAPSLOCK) { editor.repeatKeyFlag ^= 1; input.keyb.lastRepKey = SDL_SCANCODE_UNKNOWN; } if (keyEntry == input.keyb.lastRepKey) input.keyb.lastRepKey = SDL_SCANCODE_UNKNOWN; switch (keyEntry) { // modifiers shouldn't reset keyb repeat/delay flags & counters case SDL_SCANCODE_LCTRL: case SDL_SCANCODE_RCTRL: case SDL_SCANCODE_LSHIFT: case SDL_SCANCODE_RSHIFT: case SDL_SCANCODE_LALT: case SDL_SCANCODE_RALT: case SDL_SCANCODE_LGUI: case SDL_SCANCODE_RGUI: case SDL_SCANCODE_MENU: case SDL_SCANCODE_MODE: case SDL_SCANCODE_CAPSLOCK: break; default: { input.keyb.repeatKey = false; input.keyb.delayKey = false; input.keyb.repeatCounter = 0; input.keyb.delayCounter = 0; } break; } } void handleTerminalKeys(SDL_Scancode keyEntry); void keyDownHandler(SDL_Scancode keyEntry, SDL_Keycode keyCode) { int8_t chTmp; uint8_t blockFrom, blockTo; int16_t i, j; note_t *noteSrc, *noteDst, noteTmp; moduleSample_t *s; if (keyEntry == SDL_SCANCODE_KP_PLUS) input.keyb.keypadEnterKeyDown = true; // TOGGLE FULLSCREEN (should always react) if (!input.keyb.leftAltKeyDown && (keyEntry == SDL_SCANCODE_F11)) { toggleFullscreen(); return; } // don't handle input if an error message wait is active or if an unknown key is passed if ((editor.errorMsgActive && editor.errorMsgBlock) || (keyEntry == SDL_SCANCODE_UNKNOWN)) return; // if no ALT/SHIFT/CTRL/AMIGA, update last key for repeat routine if ((keyEntry != SDL_SCANCODE_LALT) && (keyEntry != SDL_SCANCODE_RALT) && (keyEntry != SDL_SCANCODE_LCTRL) && (keyEntry != SDL_SCANCODE_RCTRL) && (keyEntry != SDL_SCANCODE_LSHIFT) && (keyEntry != SDL_SCANCODE_RSHIFT) && (keyEntry != SDL_SCANCODE_LGUI) && (keyEntry != SDL_SCANCODE_RGUI) && (keyEntry != SDL_SCANCODE_MENU) && (keyEntry != SDL_SCANCODE_MODE) && (keyEntry != SDL_SCANCODE_CAPSLOCK) && (keyEntry != SDL_SCANCODE_ESCAPE)) { if (editor.repeatKeyFlag) { // if Repeat Flag, repeat all keys if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } input.keyb.repeatCounter = 0; input.keyb.lastRepKey = keyEntry; } // TERMINAL KEYS if (editor.ui.terminalShown) { handleTerminalKeys(keyEntry); return; } // ENTRY JUMPING IN DISK OP. FILELIST if (editor.ui.diskOpScreenShown && input.keyb.shiftKeyDown && !editor.ui.editTextFlag) { if ((keyCode >= 32) && (keyCode <= 126)) { handleEntryJumping(keyCode); return; } } if (!handleGeneralModes(keyEntry)) return; if (!handleTextEditMode(keyEntry)) return; if (editor.ui.samplerVolBoxShown) return; if (editor.ui.samplerFiltersBoxShown) { handleEditKeys(keyEntry, EDIT_NORMAL); return; } // GENERAL KEYS switch (keyEntry) { case SDL_SCANCODE_NONUSBACKSLASH: turnOffVoices(); break; // magic "kill all voices" button case SDL_SCANCODE_APOSTROPHE: { if (editor.autoInsFlag) { if (input.keyb.shiftKeyDown) editor.autoInsSlot -= 4; else editor.autoInsSlot--; if (editor.autoInsSlot < 0) editor.autoInsSlot = 0; editor.ui.updateTrackerFlags = true; } } break; case SDL_SCANCODE_BACKSLASH: { if (input.keyb.leftAltKeyDown) { if (handleSpecialKeys(keyEntry)) { if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 63); } } else { if (editor.autoInsFlag) { if (input.keyb.shiftKeyDown) editor.autoInsSlot += 4; else editor.autoInsSlot++; if (editor.autoInsSlot > 9) editor.autoInsSlot = 9; } else { editor.pNoteFlag = (editor.pNoteFlag + 1) % 3; } editor.ui.updateTrackerFlags = true; } } break; #ifdef __APPLE__ case SDL_SCANCODE_RGUI: #else case SDL_SCANCODE_RALT: #endif { // right Amiga key on Amiga keyb if (!editor.ui.askScreenShown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; #ifdef __APPLE__ case SDL_SCANCODE_RALT: #else case SDL_SCANCODE_RCTRL: #endif { // right alt on Amiga keyb if (!editor.ui.askScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; case SDL_SCANCODE_RSHIFT: { // right shift on Amiga keyb if (!editor.ui.samplerScreenShown && !editor.ui.askScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, DONT_SET_ROW); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; case SDL_SCANCODE_ESCAPE: { if (editor.ui.posEdScreenShown) { editor.ui.posEdScreenShown = false; displayMainScreen(); } else if (editor.ui.diskOpScreenShown) { editor.ui.diskOpScreenShown = false; displayMainScreen(); } else if (editor.ui.samplerScreenShown) { exitFromSam(); } else if (editor.ui.editOpScreenShown) { editor.ui.editOpScreenShown = false; displayMainScreen(); } else { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_QUIT; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("REALLY QUIT ?", NO_CARRY); renderAskDialog(); return; } pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_INSERT: { if (editor.ui.samplerScreenShown) { samplerSamPaste(); return; } } break; case SDL_SCANCODE_PAGEUP: { if (editor.ui.posEdScreenShown) { if (modEntry->currOrder > 0) { if ((modEntry->currOrder - (POSED_LIST_SIZE - 1)) > 0) modSetPos(modEntry->currOrder - (POSED_LIST_SIZE - 1), DONT_SET_ROW); else modSetPos(0, DONT_SET_ROW); } } else if (editor.ui.diskOpScreenShown) { editor.diskop.scrollOffset -= (DISKOP_LIST_SIZE - 1); if (editor.diskop.scrollOffset < 0) editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (modEntry->currRow == 63) modSetPos(DONT_SET_ORDER, modEntry->currRow - 15); else if (modEntry->currRow == 15) modSetPos(DONT_SET_ORDER, 0); // 15-16 would turn into -1, which is "DON'T SET ROW" flag else modSetPos(DONT_SET_ORDER, modEntry->currRow - 16); } } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } break; case SDL_SCANCODE_PAGEDOWN: { if (editor.ui.posEdScreenShown) { if (modEntry->currOrder != (modEntry->head.orderCount - 1)) { if ((modEntry->currOrder + (POSED_LIST_SIZE - 1)) <= (modEntry->head.orderCount - 1)) modSetPos(modEntry->currOrder + (POSED_LIST_SIZE - 1), DONT_SET_ROW); else modSetPos(modEntry->head.orderCount - 1, DONT_SET_ROW); } } else if (editor.ui.diskOpScreenShown) { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset += (DISKOP_LIST_SIZE - 1); if (editor.diskop.scrollOffset > (editor.diskop.numFiles - DISKOP_LIST_SIZE)) editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) modSetPos(DONT_SET_ORDER, modEntry->currRow + 16); } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } break; case SDL_SCANCODE_HOME: { if (editor.ui.posEdScreenShown) { if (modEntry->currOrder > 0) modSetPos(0, DONT_SET_ROW); } else if (editor.ui.diskOpScreenShown) { if (editor.diskop.scrollOffset != 0) { editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) modSetPos(DONT_SET_ORDER, 0); } } break; case SDL_SCANCODE_END: { if (editor.ui.posEdScreenShown) { modSetPos(modEntry->head.orderCount - 1, DONT_SET_ROW); } else if (editor.ui.diskOpScreenShown) { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) modSetPos(DONT_SET_ORDER, 63); } } break; case SDL_SCANCODE_DELETE: { if (editor.ui.samplerScreenShown) samplerSamDelete(NO_SAMPLE_CUT); else handleEditKeys(keyEntry, EDIT_NORMAL); } break; case SDL_SCANCODE_F12: { if (input.keyb.leftAltKeyDown) { editor.ui.terminalShown = true; } else if (input.keyb.leftCtrlKeyDown) { editor.timingMode ^= 1; if (editor.timingMode == TEMPO_MODE_VBLANK) { editor.oldTempo = modEntry->currBPM; modSetTempo(125); } else { modSetTempo(editor.oldTempo); } editor.ui.updateSongTiming = true; } else if (input.keyb.shiftKeyDown) { toggleAmigaPanMode(); } else { toggleLowPassFilter(); } } break; case SDL_SCANCODE_RETURN: { if (editor.ui.askScreenShown) { editor.ui.answerNo = false; editor.ui.answerYes = true; editor.ui.askScreenShown = false; handleAskYes(); } else { if (input.keyb.shiftKeyDown || input.keyb.leftAltKeyDown || input.keyb.leftCtrlKeyDown) { saveUndo(); if (input.keyb.leftAltKeyDown && !input.keyb.leftCtrlKeyDown) { if (modEntry->currRow < 63) { for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 62; j >= modEntry->currRow; --j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; modEntry->patterns[modEntry->currPattern][((j + 1) * AMIGA_VOICES) + i] = *noteSrc; } j = ((j + 1) * AMIGA_VOICES) + i; modEntry->patterns[modEntry->currPattern][j].period = 0; modEntry->patterns[modEntry->currPattern][j].sample = 0; modEntry->patterns[modEntry->currPattern][j].command = 0; modEntry->patterns[modEntry->currPattern][j].param = 0; } modEntry->currRow++; updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } } else { if (modEntry->currRow < 63) { for (i = 62; i >= modEntry->currRow; --i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (input.keyb.leftCtrlKeyDown) { modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].command = noteSrc->command; modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].param = noteSrc->param; } else { modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc; } } i = ((i + 1) * AMIGA_VOICES) + editor.cursor.channel; if (!input.keyb.leftCtrlKeyDown) { modEntry->patterns[modEntry->currPattern][i].period = 0; modEntry->patterns[modEntry->currPattern][i].sample = 0; } modEntry->patterns[modEntry->currPattern][i].command = 0; modEntry->patterns[modEntry->currPattern][i].param = 0; modEntry->currRow++; updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } } } else { editor.stepPlayEnabled = true; editor.stepPlayBackwards = false; doStopIt(); playPattern(modEntry->currRow); } } } break; // toggle between IDLE and EDIT (IDLE if PLAY) case SDL_SCANCODE_SPACE: { if (editor.currMode == MODE_PLAY) { modStop(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD)) { if (!editor.ui.samplerScreenShown) { modStop(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (!editor.ui.samplerScreenShown) { modStop(); editor.currMode = MODE_EDIT; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; case SDL_SCANCODE_F1: editor.keyOctave = OCTAVE_LOW; break; case SDL_SCANCODE_F2: editor.keyOctave = OCTAVE_HIGH; break; case SDL_SCANCODE_F3: { if (editor.ui.samplerScreenShown) { samplerSamDelete(SAMPLE_CUT); } else { if (input.keyb.shiftKeyDown) { // cut channel and put in buffer saveUndo(); noteDst = editor.trackBuffer; for (i = 0; i < MOD_ROWS; ++i) { *noteDst++ = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftAltKeyDown) { // cut pattern and put in buffer saveUndo(); memcpy(editor.patternBuffer, modEntry->patterns[modEntry->currPattern], sizeof (note_t) * (AMIGA_VOICES * MOD_ROWS)); memset(modEntry->patterns[modEntry->currPattern], 0, sizeof (note_t) * (AMIGA_VOICES * MOD_ROWS)); updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftCtrlKeyDown) { // cut channel commands and put in buffer saveUndo(); noteDst = editor.cmdsBuffer; for (i = 0; i < MOD_ROWS; ++i) { *noteDst++ = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } } } break; case SDL_SCANCODE_F4: { if (editor.ui.samplerScreenShown) { samplerSamCopy(); } else { if (input.keyb.shiftKeyDown) { // copy channel to buffer noteDst = editor.trackBuffer; for (i = 0; i < MOD_ROWS; ++i) *noteDst++ = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; } else if (input.keyb.leftAltKeyDown) { // copy pattern to buffer memcpy(editor.patternBuffer, modEntry->patterns[modEntry->currPattern], sizeof (note_t) * (AMIGA_VOICES * MOD_ROWS)); } else if (input.keyb.leftCtrlKeyDown) { // copy channel commands to buffer noteDst = editor.cmdsBuffer; for (i = 0; i < MOD_ROWS; ++i) { noteDst->command = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command; noteDst->param = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param; noteDst++; } } } } break; case SDL_SCANCODE_F5: { if (editor.ui.samplerScreenShown) { samplerSamPaste(); } else { if (input.keyb.shiftKeyDown) { // paste channel buffer to channel saveUndo(); noteSrc = editor.trackBuffer; for (i = 0; i < MOD_ROWS; ++i) modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc++; updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftAltKeyDown) { // paste pattern buffer to pattern saveUndo(); memcpy(modEntry->patterns[modEntry->currPattern], editor.patternBuffer, sizeof (note_t) * (AMIGA_VOICES * MOD_ROWS)); updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftCtrlKeyDown) { // paste channel commands buffer to channel saveUndo(); noteSrc = editor.cmdsBuffer; for (i = 0; i < MOD_ROWS; ++i) { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = noteSrc->command; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = noteSrc->param; noteSrc++; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } } } break; case SDL_SCANCODE_F6: { if (input.keyb.shiftKeyDown) { editor.f6Pos = modEntry->currRow; displayMsg("POSITION SET"); } else { if (input.keyb.leftAltKeyDown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f6Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f6Pos); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (input.keyb.leftAmigaKeyDown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, editor.f6Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { modSetPos(DONT_SET_ORDER, editor.f6Pos); } } } break; case SDL_SCANCODE_F7: { if (input.keyb.shiftKeyDown) { editor.f7Pos = modEntry->currRow; displayMsg("POSITION SET"); } else { if (input.keyb.leftAltKeyDown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f7Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f7Pos); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (input.keyb.leftAmigaKeyDown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, editor.f7Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { modSetPos(DONT_SET_ORDER, editor.f7Pos); } } } break; case SDL_SCANCODE_F8: { if (input.keyb.shiftKeyDown) { editor.f8Pos = modEntry->currRow; displayMsg("POSITION SET"); } else { if (input.keyb.leftAltKeyDown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f8Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f8Pos); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (input.keyb.leftAmigaKeyDown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, editor.f8Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { modSetPos(DONT_SET_ORDER, editor.f8Pos); } } } break; case SDL_SCANCODE_F9: { if (input.keyb.shiftKeyDown) { editor.f9Pos = modEntry->currRow; displayMsg("POSITION SET"); } else { if (input.keyb.leftAltKeyDown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f9Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f9Pos); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (input.keyb.leftAmigaKeyDown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, editor.f9Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { modSetPos(DONT_SET_ORDER, editor.f9Pos); } } } break; case SDL_SCANCODE_F10: { if (input.keyb.shiftKeyDown) { editor.f10Pos = modEntry->currRow; displayMsg("POSITION SET"); } else { if (input.keyb.leftAltKeyDown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f10Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; modPlay(modEntry->currPattern, DONT_SET_ORDER, editor.f10Pos); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else if (input.keyb.leftAmigaKeyDown) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, modEntry->currOrder, editor.f10Pos); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } else if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { modSetPos(DONT_SET_ORDER, editor.f10Pos); } } } break; case SDL_SCANCODE_F11: { if (input.keyb.leftAltKeyDown) { editor.ui.realVuMeters ^= 1; if (editor.ui.realVuMeters) displayMsg("VU-METERS: REAL"); else displayMsg("VU-METERS: FAKE"); } } break; case SDL_SCANCODE_TAB: { if (input.keyb.shiftKeyDown) movePatCurPrevCh(); else movePatCurNextCh(); } break; case SDL_SCANCODE_0: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 0; displayMsg("EDITSKIP = 0"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[9] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_1: { if (input.keyb.leftAmigaKeyDown) { trackNoteUp(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 1; displayMsg("EDITSKIP = 1"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[0] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_2: { if (input.keyb.leftAmigaKeyDown) { pattNoteUp(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 2; displayMsg("EDITSKIP = 2"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[1] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_3: { if (input.keyb.leftAmigaKeyDown) { trackNoteUp(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 3; displayMsg("EDITSKIP = 3"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[2] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_4: { if (input.keyb.leftAmigaKeyDown) { pattNoteUp(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 4; displayMsg("EDITSKIP = 4"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[3] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_5: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 5; displayMsg("EDITSKIP = 5"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[4] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_6: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 6; displayMsg("EDITSKIP = 6"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[5] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_7: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 7; displayMsg("EDITSKIP = 7"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[6] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_8: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 8; displayMsg("EDITSKIP = 8"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[7] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_9: { if (input.keyb.leftCtrlKeyDown) { editor.editMoveAdd = 9; displayMsg("EDITSKIP = 9"); editor.ui.updateTrackerFlags = true; } else if (input.keyb.shiftKeyDown) { noteSrc = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; editor.effectMacros[8] = (noteSrc->command << 8) | noteSrc->param; displayMsg("COMMAND STORED!"); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_KP_0: { editor.sampleZero = true; updateCurrSample(); } break; case SDL_SCANCODE_KP_1: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 12; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_2: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 13; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_3: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 14; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_4: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 8; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_5: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 9; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_6: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 10; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_7: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 4; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_8: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 5; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_9: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 6; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_ENTER: { if (editor.ui.askScreenShown) { editor.ui.answerNo = false; editor.ui.answerYes = true; editor.ui.askScreenShown = false; handleAskYes(); } else { editor.sampleZero = false; editor.currSample++; if (editor.currSample >= 0x10) { editor.keypadSampleOffset = 0x00; editor.currSample -= 0x10; if (editor.currSample < 0x01) editor.currSample = 0x01; } else { editor.currSample += 0x10; editor.keypadSampleOffset = 0x10; } editor.currSample--; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } } break; case SDL_SCANCODE_KP_PLUS: { editor.sampleZero = false; // the Amiga numpad has one more key, so we need to use this key for two sample numbers... if (editor.keypadToggle8CFlag) editor.currSample = editor.keypadSampleOffset + (0x0C - 1); else editor.currSample = editor.keypadSampleOffset + (0x08 - 1); updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) displayErrorMsg("INVALID PAD KEY !"); editor.keypadToggle8CFlag ^= 1; } break; case SDL_SCANCODE_KP_MINUS: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 3; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_MULTIPLY: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 2; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_DIVIDE: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 1; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_NUMLOCKCLEAR: { editor.sampleZero = false; editor.currSample = editor.keypadSampleOffset + 0; updateCurrSample(); if (input.keyb.leftAltKeyDown && (editor.pNoteFlag > 0)) { editor.ui.changingDrumPadNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); break; } if (editor.pNoteFlag > 0) handleEditKeys(keyEntry, EDIT_SPECIAL); } break; case SDL_SCANCODE_KP_PERIOD: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_KILL_SAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("KILL SAMPLE ?", NO_CARRY); renderAskDialog(); } break; case SDL_SCANCODE_DOWN: { input.keyb.delayKey = false; input.keyb.repeatKey = false; if (editor.ui.diskOpScreenShown) { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset++; if (input.mouse.rightButtonPressed) // PT quirk: right mouse button speeds up even on keyb UP/DOWN editor.diskop.scrollOffset += 3; if (editor.diskop.scrollOffset > (editor.diskop.numFiles - DISKOP_LIST_SIZE)) editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = false; } else if (editor.ui.posEdScreenShown) { if (modEntry->currOrder != (modEntry->head.orderCount - 1)) { if (++modEntry->currOrder > (modEntry->head.orderCount - 1)) modEntry->currOrder = modEntry->head.orderCount - 1; modSetPos(modEntry->currOrder, DONT_SET_ROW); editor.ui.updatePosEd = true; } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } else if (!editor.ui.samplerScreenShown) { if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) modSetPos(DONT_SET_ORDER, (modEntry->currRow + 1) & 0x3F); input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_UP: { input.keyb.delayKey = false; input.keyb.repeatKey = false; if (editor.ui.diskOpScreenShown) { editor.diskop.scrollOffset--; if (input.mouse.rightButtonPressed) // PT quirk: right mouse button speeds up even on keyb UP/DOWN editor.diskop.scrollOffset -= 3; if (editor.diskop.scrollOffset < 0) editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = false; } else if (editor.ui.posEdScreenShown) { if (modEntry->currOrder > 0) { modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); editor.ui.updatePosEd = true; } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } else if (!editor.ui.samplerScreenShown) { if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) modSetPos(DONT_SET_ORDER, (modEntry->currRow - 1) & 0x3F); input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_LEFT: { input.keyb.delayKey = false; input.keyb.repeatKey = false; if (input.keyb.leftCtrlKeyDown) { sampleDownButton(); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } else if (input.keyb.shiftKeyDown) { if (modEntry->currOrder > 0) { modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } } else if (input.keyb.leftAltKeyDown) { decPatt(); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } else { movePatCurLeft(); input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_RIGHT: { input.keyb.delayKey = false; input.keyb.repeatKey = false; if (input.keyb.leftCtrlKeyDown) { sampleUpButton(); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } else if (input.keyb.shiftKeyDown) { if (modEntry->currOrder < 126) { modSetPos(modEntry->currOrder + 1, DONT_SET_ROW); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } } else if (input.keyb.leftAltKeyDown) { incPatt(); if (editor.repeatKeyFlag) { input.keyb.delayKey = true; input.keyb.repeatKey = true; } } else { movePatCurRight(); input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_A: { if (input.keyb.leftAmigaKeyDown) { trackOctaUp(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { if (editor.ui.samplerScreenShown) { samplerRangeAll(); } else { if (input.keyb.shiftKeyDown) { editor.muted[0] = true; editor.muted[1] = true; editor.muted[2] = true; editor.muted[3] = true; editor.muted[editor.cursor.channel] = false; renderMuteButtons(); break; } editor.muted[editor.cursor.channel] ^= 1; renderMuteButtons(); } } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_B: { if (input.keyb.leftCtrlKeyDown) { // CTRL+B doesn't change the status message back, so do this: if (editor.ui.introScreenShown) { editor.ui.introScreenShown = false; setStatusMessage(editor.allRightText, DO_CARRY); } if (editor.blockMarkFlag) { editor.blockMarkFlag = false; } else { editor.blockMarkFlag = true; editor.blockFromPos = modEntry->currRow; editor.blockToPos = modEntry->currRow; } editor.ui.updateStatusText = true; } else if (input.keyb.leftAltKeyDown) { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } boostSample(editor.currSample, true); if (editor.ui.samplerScreenShown) displaySample(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_C: { if (input.keyb.leftAmigaKeyDown) { trackOctaDown(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { if (editor.ui.samplerScreenShown) { samplerSamCopy(); return; } if (!editor.blockMarkFlag) { displayErrorMsg("NO BLOCK MARKED !"); return; } editor.blockMarkFlag = false; editor.blockBufferFlag = true; for (i = 0; i < MOD_ROWS; ++i) editor.blockBuffer[i] = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (editor.blockFromPos > editor.blockToPos) { editor.buffFromPos = editor.blockToPos; editor.buffToPos = editor.blockFromPos; } else { editor.buffFromPos = editor.blockFromPos; editor.buffToPos = editor.blockToPos; } setStatusMessage(editor.allRightText, DO_CARRY); } else { if (input.keyb.leftAltKeyDown) { editor.muted[2] ^= 1; // toggle channel 3 renderMuteButtons(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } } break; case SDL_SCANCODE_D: { if (input.keyb.leftAmigaKeyDown) { trackOctaUp(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { saveUndo(); } else { if (input.keyb.leftAltKeyDown) { if (!editor.ui.posEdScreenShown) { editor.blockMarkFlag = false; editor.ui.diskOpScreenShown ^= 1; if (!editor.ui.diskOpScreenShown) { pointerSetPreviousMode(); setPrevStatusMessage(); displayMainScreen(); } else { editor.ui.diskOpScreenShown = true; renderDiskOpScreen(); } } } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } } break; case SDL_SCANCODE_E: { if (input.keyb.leftAmigaKeyDown) { trackNoteDown(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftAltKeyDown) { if (!editor.ui.diskOpScreenShown && !editor.ui.posEdScreenShown) { if (editor.ui.editOpScreenShown) editor.ui.editOpScreen = (editor.ui.editOpScreen + 1) % 3; else editor.ui.editOpScreenShown = true; renderEditOpScreen(); } } else if (input.keyb.leftCtrlKeyDown) { saveUndo(); j = modEntry->currRow + 1; while (j < MOD_ROWS) { for (i = 62; i >= j; i--) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc; } modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel].param = 0; j += 2; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_F: { if (input.keyb.leftAmigaKeyDown) { pattOctaUp(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { toggleLEDFilter(); if (editor.useLEDFilter) displayMsg("LED FILTER ON"); else displayMsg("LED FILTER OFF"); } else if (input.keyb.leftAltKeyDown) { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } filterSample(editor.currSample, true); if (editor.ui.samplerScreenShown) displaySample(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_G: { if (input.keyb.leftCtrlKeyDown) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_BOOST_ALL_SAMPLES; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("BOOST ALL SAMPLES", NO_CARRY); renderAskDialog(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_H: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockMarkFlag) { displayErrorMsg("NO BLOCK MARKED !"); return; } trackNoteUp(TRANSPOSE_ALL, editor.blockFromPos, editor.blockToPos); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_I: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockBufferFlag) { displayErrorMsg("BUFFER IS EMPTY !"); return; } if (modEntry->currRow < 63) { for (i = 0; i <= (editor.buffToPos - editor.buffFromPos); ++i) { for (j = 62; j >= modEntry->currRow; --j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + editor.cursor.channel]; modEntry->patterns[modEntry->currPattern][((j + 1) * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc; } } } saveUndo(); for (i = 0; i <= (editor.buffToPos - editor.buffFromPos); ++i) { if ((modEntry->currRow + i) > 63) break; modEntry->patterns[modEntry->currPattern][((modEntry->currRow + i) * AMIGA_VOICES) + editor.cursor.channel] = editor.blockBuffer[editor.buffFromPos + i]; } if (!input.keyb.shiftKeyDown) { modEntry->currRow += (i & 0xFF); if (modEntry->currRow > 63) modEntry->currRow = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftAltKeyDown) { editor.autoInsFlag ^= 1; editor.ui.updateTrackerFlags = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_J: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockBufferFlag) { displayErrorMsg("BUFFER IS EMPTY !"); return; } saveUndo(); noteSrc = &editor.blockBuffer[editor.buffFromPos]; for (i = 0; i <= (editor.buffToPos - editor.buffFromPos); ++i) { if ((modEntry->currRow + i) > 63) break; noteDst = &modEntry->patterns[modEntry->currPattern][((modEntry->currRow + i) * AMIGA_VOICES) + editor.cursor.channel]; if (noteSrc->period || noteSrc->sample) { *noteDst = *noteSrc; } else { noteDst->command = noteSrc->command; noteDst->param = noteSrc->param; } noteSrc++; } if (!input.keyb.shiftKeyDown) { modEntry->currRow += (i & 0xFF); if (modEntry->currRow > 63) modEntry->currRow = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_K: { if (input.keyb.leftAltKeyDown) { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (noteSrc->sample == (editor.currSample + 1)) { noteSrc->period = 0; noteSrc->sample = 0; noteSrc->command = 0; noteSrc->param = 0; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftCtrlKeyDown) { saveUndo(); i = modEntry->currRow; if (input.keyb.shiftKeyDown) { // kill to start while (i >= 0) { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = 0; i--; } } else { // kill to end while (i < MOD_ROWS) { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = 0; i++; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_L: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockMarkFlag) { displayErrorMsg("NO BLOCK MARKED !"); return; } trackNoteDown(TRANSPOSE_ALL, editor.blockFromPos, editor.blockToPos); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_M: { if (input.keyb.leftCtrlKeyDown) { editor.multiFlag ^= 1; editor.ui.updateTrackerFlags = true; editor.ui.updateKeysText = true; } else if (input.keyb.leftAltKeyDown) { if (input.keyb.shiftKeyDown) editor.metroChannel = editor.cursor.channel + 1; else editor.metroFlag ^= 1; editor.ui.updateTrackerFlags = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_N: { if (input.keyb.leftCtrlKeyDown) { editor.blockMarkFlag = true; modEntry->currRow = editor.blockToPos; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_O: { if (input.keyb.leftCtrlKeyDown) { // fun fact: this function is broken in PT but I fixed it in my clone saveUndo(); j = modEntry->currRow + 1; while (j < MOD_ROWS) { for (i = j; i < (MOD_ROWS - 1); ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc; } // clear newly made row on very bottom modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].param = 0; j++; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_P: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockBufferFlag) { displayErrorMsg("BUFFER IS EMPTY !"); return; } saveUndo(); for (i = 0; i <= (editor.buffToPos - editor.buffFromPos); ++i) { if ((modEntry->currRow + i) > 63) break; modEntry->patterns[modEntry->currPattern][((modEntry->currRow + i) * AMIGA_VOICES) + editor.cursor.channel] = editor.blockBuffer[editor.buffFromPos + i]; } if (!input.keyb.shiftKeyDown) { modEntry->currRow += (i & 0xFF); if (modEntry->currRow > 63) modEntry->currRow = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftAltKeyDown) { if (!editor.ui.diskOpScreenShown) { editor.ui.posEdScreenShown ^= 1; if (editor.ui.posEdScreenShown) { renderPosEdScreen(); editor.ui.updatePosEd = true; } else { displayMainScreen(); } } } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_Q: { if (input.keyb.leftAmigaKeyDown) { trackNoteDown(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { editor.muted[0] = false; editor.muted[1] = false; editor.muted[2] = false; editor.muted[3] = false; renderMuteButtons(); } else if (input.keyb.leftAltKeyDown) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_QUIT; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("REALLY QUIT ?", NO_CARRY); renderAskDialog(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_R: { if (input.keyb.leftAmigaKeyDown) { pattNoteDown(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { editor.f6Pos = 0; editor.f7Pos = 16; editor.f8Pos = 32; editor.f9Pos = 48; editor.f10Pos = 63; displayMsg("POS RESTORED !"); } else if (input.keyb.leftAltKeyDown) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_RESAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("RESAMPLE?", NO_CARRY); renderAskDialog(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_S: { if (input.keyb.leftCtrlKeyDown) saveModule(DONT_CHECK_IF_FILE_EXIST, DONT_GIVE_NEW_FILENAME); else if (input.keyb.leftAmigaKeyDown) pattOctaUp(TRANSPOSE_ALL); else if (input.keyb.leftAltKeyDown) samplerScreen(); else handleEditKeys(keyEntry, EDIT_NORMAL); } break; case SDL_SCANCODE_T: { if (input.keyb.leftCtrlKeyDown) { editor.swapChannelFlag = true; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("SWAP (1/2/3/4) ?", NO_CARRY); } else if (input.keyb.leftAltKeyDown) { toggleTuningTone(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_U: { if (input.keyb.leftCtrlKeyDown) undoLastChange(); else handleEditKeys(keyEntry, EDIT_NORMAL); } break; case SDL_SCANCODE_V: { if (input.keyb.leftAmigaKeyDown) { pattOctaDown(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { if (editor.ui.samplerScreenShown) { samplerSamPaste(); } else { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_FILTER_ALL_SAMPLES; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("FILTER ALL SAMPLS", NO_CARRY); renderAskDialog(); } } else if (input.keyb.leftAltKeyDown) { editor.muted[3] ^= 1; // toggle channel 4 renderMuteButtons(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_W: { if (input.keyb.leftAmigaKeyDown) { pattNoteDown(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { if (!editor.blockBufferFlag) { displayErrorMsg("BUFFER IS EMPTY !"); return; } saveUndo(); chTmp = editor.cursor.channel; for (i = 0; i <= (editor.buffToPos - editor.buffFromPos); ++i) { if ((modEntry->currRow + i) > 63) break; noteDst = &modEntry->patterns[modEntry->currPattern][((modEntry->currRow + i) * AMIGA_VOICES) + chTmp]; if (!(editor.blockBuffer[i].period || editor.blockBuffer[i].sample)) { noteDst->command = editor.blockBuffer[i].command; noteDst->param = editor.blockBuffer[i].param; } else { *noteDst = editor.blockBuffer[i]; } chTmp = (chTmp + 1) & 3; } if (!input.keyb.shiftKeyDown) { modEntry->currRow += (i & 0xFF); if (modEntry->currRow > 63) modEntry->currRow = 0; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_X: { if (input.keyb.leftAmigaKeyDown) { pattOctaDown(TRANSPOSE_ALL); } else if (input.keyb.leftCtrlKeyDown) { if (editor.ui.samplerScreenShown) { samplerSamDelete(SAMPLE_CUT); return; } if (!editor.blockMarkFlag) { displayErrorMsg("NO BLOCK MARKED !"); return; } editor.blockMarkFlag = false; saveUndo(); editor.blockBufferFlag = true; for (i = 0; i < MOD_ROWS; ++i) editor.blockBuffer[i] = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (editor.blockFromPos > editor.blockToPos) { editor.buffFromPos = editor.blockToPos; editor.buffToPos = editor.blockFromPos; } else { editor.buffFromPos = editor.blockFromPos; editor.buffToPos = editor.blockToPos; } for (i = editor.buffFromPos; i <= editor.buffToPos; ++i) { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = 0; } setStatusMessage(editor.allRightText, DO_CARRY); updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else { if (input.keyb.leftAltKeyDown) { editor.muted[1] ^= 1; // toggle channel 2 renderMuteButtons(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } } break; case SDL_SCANCODE_Y: { if (input.keyb.leftCtrlKeyDown) { if (!editor.blockMarkFlag) { displayErrorMsg("NO BLOCK MARKED !"); return; } editor.blockMarkFlag = false; saveUndo(); if (editor.blockFromPos >= editor.blockToPos) { blockFrom = editor.blockToPos; blockTo = editor.blockFromPos; } else { blockFrom = editor.blockFromPos; blockTo = editor.blockToPos; } while (blockFrom < blockTo) { noteDst = &modEntry->patterns[modEntry->currPattern][(blockFrom * AMIGA_VOICES) + editor.cursor.channel]; noteSrc = &modEntry->patterns[modEntry->currPattern][(blockTo * AMIGA_VOICES) + editor.cursor.channel]; noteTmp = *noteDst; *noteDst = *noteSrc; *noteSrc = noteTmp; blockFrom += 1; blockTo -= 1; } setStatusMessage(editor.allRightText, DO_CARRY); updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } else if (input.keyb.leftAltKeyDown) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_SAVE_ALL_SAMPLES; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("SAVE ALL SAMPLES?", NO_CARRY); renderAskDialog(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; case SDL_SCANCODE_Z: { if (input.keyb.leftAmigaKeyDown) { trackOctaDown(TRANSPOSE_ALL, 0, MOD_ROWS - 1); } else if (input.keyb.leftCtrlKeyDown) { if (editor.ui.samplerScreenShown) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_RESTORE_SAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("RESTORE SAMPLE ?", NO_CARRY); renderAskDialog(); } else { modSetTempo(125); modSetSpeed(6); for (i = 0; i < AMIGA_VOICES; ++i) { modEntry->channels[i].n_wavecontrol = 0; modEntry->channels[i].n_glissfunk = 0; modEntry->channels[i].n_finetune = 0; modEntry->channels[i].n_loopcount = 0; } displayMsg("EFX RESTORED !"); } } else if (input.keyb.leftAltKeyDown) { editor.muted[0] ^= 1; // toggle channel 1 renderMuteButtons(); } else { handleEditKeys(keyEntry, EDIT_NORMAL); } } break; default: handleEditKeys(keyEntry, EDIT_NORMAL); break; } } void movePatCurPrevCh(void) { int8_t pos; pos = ((editor.cursor.pos + 5) / 6) - 1; editor.cursor.pos = (pos < 0) ? (3 * 6) : (pos * 6); editor.cursor.mode = CURSOR_NOTE; if (editor.cursor.pos < 6) editor.cursor.channel = 0; else if (editor.cursor.pos < 12) editor.cursor.channel = 1; else if (editor.cursor.pos < 18) editor.cursor.channel = 2; else if (editor.cursor.pos < 24) editor.cursor.channel = 3; updateCursorPos(); } void movePatCurNextCh(void) { int8_t pos; pos = (editor.cursor.pos / 6) + 1; editor.cursor.pos = (pos == 4) ? 0 : (pos * 6); editor.cursor.mode = CURSOR_NOTE; if (editor.cursor.pos < 6) editor.cursor.channel = 0; else if (editor.cursor.pos < 12) editor.cursor.channel = 1; else if (editor.cursor.pos < 18) editor.cursor.channel = 2; else if (editor.cursor.pos < 24) editor.cursor.channel = 3; updateCursorPos(); } void movePatCurRight(void) { editor.cursor.pos = (editor.cursor.pos == 23) ? 0 : (editor.cursor.pos + 1); if (editor.cursor.pos < 6) editor.cursor.channel = 0; else if (editor.cursor.pos < 12) editor.cursor.channel = 1; else if (editor.cursor.pos < 18) editor.cursor.channel = 2; else if (editor.cursor.pos < 24) editor.cursor.channel = 3; editor.cursor.mode = editor.cursor.pos % 6; updateCursorPos(); } void movePatCurLeft(void) { editor.cursor.pos = (editor.cursor.pos == 0) ? 23 : (editor.cursor.pos - 1); if (editor.cursor.pos < 6) editor.cursor.channel = 0; else if (editor.cursor.pos < 12) editor.cursor.channel = 1; else if (editor.cursor.pos < 18) editor.cursor.channel = 2; else if (editor.cursor.pos < 24) editor.cursor.channel = 3; editor.cursor.mode = editor.cursor.pos % 6; updateCursorPos(); } void handleKeyRepeat(SDL_Scancode keyEntry) { uint8_t repeatNum; if (!input.keyb.repeatKey || (editor.ui.clearScreenShown || editor.ui.askScreenShown)) { input.keyb.repeatCounter = 0; return; } if (input.keyb.delayKey) { if (input.keyb.delayCounter < KEYB_REPEAT_DELAY) { input.keyb.delayCounter++; return; } } switch (keyEntry) // only some buttons repeat { case SDL_SCANCODE_PAGEUP: { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; if (editor.ui.terminalShown) { terminalScrollPageUp(); } else if (editor.ui.posEdScreenShown) { if ((modEntry->currOrder - (POSED_LIST_SIZE - 1)) > 0) modSetPos(modEntry->currOrder - (POSED_LIST_SIZE - 1), DONT_SET_ROW); else modSetPos(0, DONT_SET_ROW); } else if (editor.ui.diskOpScreenShown) { if (editor.ui.diskOpScreenShown) { editor.diskop.scrollOffset -= (DISKOP_LIST_SIZE - 1); if (editor.diskop.scrollOffset < 0) editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (modEntry->currRow == 63) modSetPos(DONT_SET_ORDER, modEntry->currRow - 15); else if (modEntry->currRow == 15) modSetPos(DONT_SET_ORDER, 0); // 15-16 would turn into -1, which is "DON'T SET ROW" flag else modSetPos(DONT_SET_ORDER, modEntry->currRow - 16); } } } } break; case SDL_SCANCODE_PAGEDOWN: { if (editor.ui.terminalShown) { terminalScrollPageDown(); } else if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; if (editor.ui.posEdScreenShown) { if ((modEntry->currOrder + (POSED_LIST_SIZE - 1)) <= (modEntry->head.orderCount - 1)) modSetPos(modEntry->currOrder + (POSED_LIST_SIZE - 1), DONT_SET_ROW); else modSetPos(modEntry->head.orderCount - 1, DONT_SET_ROW); } else if (editor.ui.diskOpScreenShown) { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset += (DISKOP_LIST_SIZE - 1); if (editor.diskop.scrollOffset > (editor.diskop.numFiles - DISKOP_LIST_SIZE)) editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } else { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) modSetPos(DONT_SET_ORDER, modEntry->currRow + 16); } } } break; case SDL_SCANCODE_LEFT: { if (editor.ui.editTextFlag) { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; textCharPrevious(); } } else { if (input.keyb.leftCtrlKeyDown) { if (input.keyb.repeatCounter >= 6) { input.keyb.repeatCounter = 0; sampleDownButton(); } } else if (input.keyb.shiftKeyDown) { if (input.keyb.repeatCounter >= 5) { input.keyb.repeatCounter = 0; if (modEntry->currOrder > 0) modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); } } else if (input.keyb.leftAltKeyDown) { if (input.keyb.repeatCounter >= 7) { input.keyb.repeatCounter = 0; decPatt(); } } else { if (input.keyb.repeatCounter >= 7) { input.keyb.repeatCounter = 0; if (!input.keyb.shiftKeyDown && !input.keyb.leftAltKeyDown && !input.keyb.leftCtrlKeyDown) movePatCurLeft(); } } } } break; case SDL_SCANCODE_RIGHT: { if (editor.ui.editTextFlag) { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; textCharNext(); } } else { if (input.keyb.leftCtrlKeyDown) { if (input.keyb.repeatCounter >= 6) { input.keyb.repeatCounter = 0; sampleUpButton(); } } else if (input.keyb.shiftKeyDown) { if (input.keyb.repeatCounter >= 5) { input.keyb.repeatCounter = 0; if (modEntry->currOrder < 126) modSetPos(modEntry->currOrder + 1, DONT_SET_ROW); } } else if (input.keyb.leftAltKeyDown) { if (input.keyb.repeatCounter >= 7) { input.keyb.repeatCounter = 0; incPatt(); } } else { if (input.keyb.repeatCounter >= 7) { input.keyb.repeatCounter = 0; if (!input.keyb.shiftKeyDown && !input.keyb.leftAltKeyDown && !input.keyb.leftCtrlKeyDown) movePatCurRight(); } } } } break; case SDL_SCANCODE_UP: { if (editor.ui.terminalShown) { if (input.keyb.repeatCounter >= 1) { input.keyb.repeatCounter = 0; terminalScrollUp(); } } else if (editor.ui.diskOpScreenShown) { if (input.keyb.repeatCounter >= 1) { input.keyb.repeatCounter = 0; editor.diskop.scrollOffset--; if (input.mouse.rightButtonPressed) // PT quirk: right mouse button speeds up even on keyb UP/DOWN editor.diskop.scrollOffset -= 3; if (editor.diskop.scrollOffset < 0) editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } } else if (editor.ui.posEdScreenShown) { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; if (modEntry->currOrder > 0) { modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); editor.ui.updatePosEd = true; } } } else if (!editor.ui.samplerScreenShown) { if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { repeatNum = 7; if (input.keyb.leftAltKeyDown) repeatNum = 1; else if (input.keyb.shiftKeyDown) repeatNum = 3; if (input.keyb.repeatCounter >= repeatNum) { input.keyb.repeatCounter = 0; modSetPos(DONT_SET_ORDER, (modEntry->currRow - 1) & 0x3F); } } } } break; case SDL_SCANCODE_DOWN: { if (editor.ui.terminalShown) { if (input.keyb.repeatCounter >= 1) { input.keyb.repeatCounter = 0; terminalScrollDown(); } } else if (editor.ui.diskOpScreenShown) { if (input.keyb.repeatCounter >= 1) { input.keyb.repeatCounter = 0; if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset++; if (input.mouse.rightButtonPressed) // PT quirk: right mouse button speeds up even on keyb UP/DOWN editor.diskop.scrollOffset += 3; if (editor.diskop.scrollOffset > (editor.diskop.numFiles - DISKOP_LIST_SIZE)) editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } } else if (editor.ui.posEdScreenShown) { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; if (modEntry->currOrder != (modEntry->head.orderCount - 1)) { if (++modEntry->currOrder > (modEntry->head.orderCount - 1)) modEntry->currOrder = modEntry->head.orderCount - 1; modSetPos(modEntry->currOrder, DONT_SET_ROW); editor.ui.updatePosEd = true; } } } else if (!editor.ui.samplerScreenShown) { if ((editor.currMode != MODE_PLAY) && (editor.currMode != MODE_RECORD)) { repeatNum = 7; if (input.keyb.leftAltKeyDown) repeatNum = 1; else if (input.keyb.shiftKeyDown) repeatNum = 3; if (input.keyb.repeatCounter >= repeatNum) { input.keyb.repeatCounter = 0; modSetPos(DONT_SET_ORDER, (modEntry->currRow + 1) & 0x3F); } } } } break; case SDL_SCANCODE_BACKSPACE: { if (editor.ui.editTextFlag) { // only repeat backspace while editing texts if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; keyDownHandler(keyEntry, 0); } } } break; case SDL_SCANCODE_KP_ENTER: case SDL_SCANCODE_RETURN: break; // do NOT repeat enter! default: { if (input.keyb.repeatCounter >= 3) { input.keyb.repeatCounter = 0; keyDownHandler(keyEntry, 0); } } break; } input.keyb.repeatCounter++; } int8_t handleGeneralModes(SDL_Scancode keyEntry) { int8_t rawKey; int16_t i; note_t *noteSrc, noteTmp; // SAMPLER SCREEN (volume box) if (editor.ui.samplerVolBoxShown && !editor.ui.editTextFlag) { if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); return (false); } } // SAMPLER SCREEN (filters box) if (editor.ui.samplerFiltersBoxShown && !editor.ui.editTextFlag) { if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.ui.samplerFiltersBoxShown = false; removeSamplerFiltersBox(); return (false); } } // EDIT OP. SCREEN #3 if (editor.mixFlag) { if (keyEntry == SDL_SCANCODE_ESCAPE) { exitGetTextLine(EDIT_TEXT_UPDATE); editor.mixFlag = false; editor.ui.updateMixText = true; return (false); } } // EDIT OP. SCREEN #4 if (editor.ui.changingChordNote) { if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.ui.changingChordNote = false; setPrevStatusMessage(); pointerSetPreviousMode(); return (false); } if (keyEntry == SDL_SCANCODE_F1) editor.keyOctave = OCTAVE_LOW; else if (keyEntry == SDL_SCANCODE_F2) editor.keyOctave = OCTAVE_HIGH; rawKey = keyToNote(scanCodeToUSKey(keyEntry)); if (rawKey >= 0) { if (editor.ui.changingChordNote == 1) { editor.note1 = rawKey; editor.ui.updateNote1Text = true; } else if (editor.ui.changingChordNote == 2) { editor.note2 = rawKey; editor.ui.updateNote2Text = true; } else if (editor.ui.changingChordNote == 3) { editor.note3 = rawKey; editor.ui.updateNote3Text = true; } else if (editor.ui.changingChordNote == 4) { editor.note4 = rawKey; editor.ui.updateNote4Text = true; } editor.ui.changingChordNote = false; recalcChordLength(); setPrevStatusMessage(); pointerSetPreviousMode(); } return (false); } // CHANGE DRUMPAD NOTE if (editor.ui.changingDrumPadNote) { if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.ui.changingDrumPadNote = false; setPrevStatusMessage(); pointerSetPreviousMode(); return (false); } if (keyEntry == SDL_SCANCODE_F1) editor.keyOctave = OCTAVE_LOW; else if (keyEntry == SDL_SCANCODE_F2) editor.keyOctave = OCTAVE_HIGH; rawKey = keyToNote(scanCodeToUSKey(keyEntry)); if (rawKey >= 0) { pNoteTable[editor.currSample] = rawKey; editor.ui.changingDrumPadNote = false; setPrevStatusMessage(); pointerSetPreviousMode(); } return (false); } // SAMPLER SCREEN if (editor.ui.changingSmpResample) { if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.ui.changingSmpResample = false; editor.ui.updateResampleNote = true; setPrevStatusMessage(); pointerSetPreviousMode(); return (false); } if (keyEntry == SDL_SCANCODE_F1) editor.keyOctave = OCTAVE_LOW; else if (keyEntry == SDL_SCANCODE_F2) editor.keyOctave = OCTAVE_HIGH; rawKey = keyToNote(scanCodeToUSKey(keyEntry)); if (rawKey >= 0) { editor.resampleNote = rawKey; editor.ui.changingSmpResample = false; editor.ui.updateResampleNote = true; setPrevStatusMessage(); pointerSetPreviousMode(); } return (false); } // DISK OP. SCREEN if (editor.diskop.isFilling) { if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_QUIT)) { if (keyEntry == SDL_SCANCODE_Y) { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if (keyEntry == SDL_SCANCODE_N) { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } } return (false); } // if MOD2WAV is ongoing, only react to ESC and Y/N on exit ask dialog if (editor.isWAVRendering) { if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_QUIT)) { if (keyEntry == SDL_SCANCODE_Y) { editor.isWAVRendering = false; SDL_WaitThread(editor.mod2WavThread, NULL); editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if (keyEntry == SDL_SCANCODE_N) { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); setStatusMessage("RENDERING MOD...", NO_CARRY); } } else if (keyEntry == SDL_SCANCODE_ESCAPE) { editor.abortMod2Wav = true; } return (false); } // SWAP CHANNEL (CTRL+T) if (editor.swapChannelFlag) { switch (keyEntry) { case SDL_SCANCODE_ESCAPE: { editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_1: { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; noteTmp = modEntry->patterns[modEntry->currPattern][i * AMIGA_VOICES]; modEntry->patterns[modEntry->currPattern][i * AMIGA_VOICES] = *noteSrc; *noteSrc = noteTmp; } editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_2: { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; noteTmp = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 1]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 1] = *noteSrc; *noteSrc = noteTmp; } editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_3: { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; noteTmp = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 2]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 2] = *noteSrc; *noteSrc = noteTmp; } editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_4: { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; noteTmp = modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 3]; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + 3] = *noteSrc; *noteSrc = noteTmp; } editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); } break; default: break; } return (false); } // YES/NO ASK DIALOG if (editor.ui.askScreenShown) { if (editor.ui.pat2SmpDialogShown) { // PAT2SMP specific ask dialog switch (keyEntry) { case SDL_SCANCODE_KP_ENTER: case SDL_SCANCODE_RETURN: case SDL_SCANCODE_H: { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; editor.pat2SmpHQ = true; handleAskYes(); } break; case SDL_SCANCODE_L: { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; editor.pat2SmpHQ = false; handleAskYes(); // pointer/status is updated by the 'yes handler' } break; case SDL_SCANCODE_ESCAPE: case SDL_SCANCODE_A: case SDL_SCANCODE_N: { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } break; default: break; } } else { // normal yes/no dialog switch (keyEntry) { case SDL_SCANCODE_ESCAPE: case SDL_SCANCODE_N: { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } break; case SDL_SCANCODE_KP_ENTER: case SDL_SCANCODE_RETURN: case SDL_SCANCODE_Y: { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); // pointer/status is updated by the 'yes handler' } break; default: break; } } return (false); } // CLEAR SCREEN DIALOG if (editor.ui.clearScreenShown) { switch (keyEntry) { case SDL_SCANCODE_S: { editor.ui.clearScreenShown = false; removeClearScreen(); modStop(); clearSamples(); editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_O: { editor.ui.clearScreenShown = false; removeClearScreen(); modStop(); clearSong(); editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_A: { editor.ui.clearScreenShown = false; removeClearScreen(); modStop(); clearAll(); editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; pointerSetPreviousMode(); setPrevStatusMessage(); } break; case SDL_SCANCODE_C: case SDL_SCANCODE_ESCAPE: { editor.ui.clearScreenShown = false; removeClearScreen(); editor.currMode = MODE_IDLE; pointerSetPreviousMode(); setPrevStatusMessage(); editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; pointerErrorMode(); } break; default: break; } return (false); } return (true); } void handleTextEditInputChar(char textChar) { char *readTmp; int8_t readTmpPrev; uint8_t digit1, digit2, digit3, digit4, digit5; uint32_t number; // we only want certain ASCII keys if ((textChar < 32) || (textChar > 126)) return; // a..z -> A..Z if ((textChar >= 'a') && (textChar <= 'z')) textChar = toupper(textChar); if (editor.ui.editTextType == TEXT_EDIT_STRING) { if (editor.ui.editPos < editor.ui.textEndPtr) { if (!editor.mixFlag) { readTmp = editor.ui.textEndPtr; while (readTmp > editor.ui.editPos) { readTmpPrev = *--readTmp; *(readTmp + 1) = readTmpPrev; } *editor.ui.textEndPtr = '\0'; *editor.ui.editPos++ = textChar; textMarkerMoveRight(); } else { if (((textChar >= '0') && (textChar <= '9')) || ((textChar >= 'A') && (textChar <= 'F'))) { if (editor.ui.dstPos == 14) // hack for sample mix text { *editor.ui.editPos = textChar; } else { *editor.ui.editPos++ = textChar; textMarkerMoveRight(); if (editor.ui.dstPos == 9) // hack for sample mix text { editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); editor.ui.editPos++; textMarkerMoveRight(); } else if (editor.ui.dstPos == 6) // hack for sample mix text { editor.ui.editPos++; textMarkerMoveRight(); } } } } } } else { if (editor.ui.editTextType == TEXT_EDIT_DECIMAL) { if ((textChar >= '0') && (textChar <= '9')) { textChar -= '0'; if (editor.ui.numLen == 5) { number = *editor.ui.numPtr32; digit5 = number % 10; number /= 10; digit4 = number % 10; number /= 10; digit3 = number % 10; number /= 10; digit2 = number % 10; number /= 10; digit1 = (uint8_t)(number); if (editor.ui.dstPos == 0) *editor.ui.numPtr32 = (textChar * 10000) + (digit2 * 1000) + (digit3 * 100) + (digit4 * 10) + digit5; else if (editor.ui.dstPos == 1) *editor.ui.numPtr32 = (digit1 * 10000) + (textChar * 1000) + (digit3 * 100) + (digit4 * 10) + digit5; else if (editor.ui.dstPos == 2) *editor.ui.numPtr32 = (digit1 * 10000) + (digit2 * 1000) + (textChar * 100) + (digit4 * 10) + digit5; else if (editor.ui.dstPos == 3) *editor.ui.numPtr32 = (digit1 * 10000) + (digit2 * 1000) + (digit3 * 100) + (textChar * 10) + digit5; else if (editor.ui.dstPos == 4) *editor.ui.numPtr32 = (digit1 * 10000) + (digit2 * 1000) + (digit3 * 100) + (digit4 * 10) + textChar; } else if (editor.ui.numLen == 4) { number = *editor.ui.numPtr16; digit4 = number % 10; number /= 10; digit3 = number % 10; number /= 10; digit2 = number % 10; number /= 10; digit1 = (uint8_t)(number); if (editor.ui.dstPos == 0) *editor.ui.numPtr16 = (textChar * 1000) + (digit2 * 100) + (digit3 * 10) + digit4; else if (editor.ui.dstPos == 1) *editor.ui.numPtr16 = (digit1 * 1000) + (textChar * 100) + (digit3 * 10) + digit4; else if (editor.ui.dstPos == 2) *editor.ui.numPtr16 = (digit1 * 1000) + (digit2 * 100) + (textChar * 10) + digit4; else if (editor.ui.dstPos == 3) *editor.ui.numPtr16 = (digit1 * 1000) + (digit2 * 100) + (digit3 * 10) + textChar; } else if (editor.ui.numLen == 3) { number = *editor.ui.numPtr16; digit3 = number % 10; number /= 10; digit2 = number % 10; number /= 10; digit1 = (uint8_t)(number); if (editor.ui.dstPos == 0) *editor.ui.numPtr16 = (textChar * 100) + (digit2 * 10) + digit3; else if (editor.ui.dstPos == 1) *editor.ui.numPtr16 = (digit1 * 100) + (textChar * 10) + digit3; else if (editor.ui.dstPos == 2) *editor.ui.numPtr16 = (digit1 * 100) + (digit2 * 10) + textChar; } else if (editor.ui.numLen == 2) { number = *editor.ui.numPtr16; digit2 = number % 10; number /= 10; digit1 = (uint8_t)(number); if (editor.ui.dstPos == 0) *editor.ui.numPtr16 = (textChar * 10) + digit2; else if (editor.ui.dstPos == 1) *editor.ui.numPtr16 = (digit1 * 10) + textChar; } textMarkerMoveRight(); if (editor.ui.dstPos >= editor.ui.numLen) exitGetTextLine(EDIT_TEXT_UPDATE); } } else { if (((textChar >= '0') && (textChar <= '9')) || ((textChar >= 'A') && (textChar <= 'F'))) { if (textChar <= '9') textChar -= '0'; else if (textChar <= 'F') textChar -= ('A' - 10); if (editor.ui.numBits == 17) { // only for sample length/repeat/replen *editor.ui.numPtr32 &= ~(0x000F0000 >> (editor.ui.dstPos << 2)); *editor.ui.numPtr32 |= (textChar << (16 - (editor.ui.dstPos << 2))); } else if (editor.ui.numBits == 16) { *editor.ui.numPtr16 &= ~(0xF000 >> (editor.ui.dstPos << 2)); *editor.ui.numPtr16 |= (textChar << (12 - (editor.ui.dstPos << 2))); } else if (editor.ui.numBits == 8) { *editor.ui.numPtr8 &= ~(0xF0 >> (editor.ui.dstPos << 2)); *editor.ui.numPtr8 |= (textChar << (4 - (editor.ui.dstPos << 2))); } textMarkerMoveRight(); if (editor.ui.dstPos >= editor.ui.numLen) exitGetTextLine(EDIT_TEXT_UPDATE); } } } updateTextObject(editor.ui.editObject); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } int8_t handleTextEditMode(SDL_Scancode keyEntry) { char *readTmp; int8_t readTmpNext; int16_t i, j; note_t *noteSrc; switch (keyEntry) { case SDL_SCANCODE_ESCAPE: { editor.blockMarkFlag = false; if (editor.ui.editTextFlag) { exitGetTextLine(EDIT_TEXT_NO_UPDATE); return (false); } } break; case SDL_SCANCODE_HOME: { if (editor.ui.editTextFlag && !editor.mixFlag) { while (editor.ui.editPos > editor.ui.showTextPtr) textCharPrevious(); } } break; case SDL_SCANCODE_END: { if (editor.ui.editTextFlag && !editor.mixFlag) { if (editor.ui.editTextType != TEXT_EDIT_STRING) break; while (!editor.ui.dstOffsetEnd) textCharNext(); } } break; case SDL_SCANCODE_LEFT: { if (editor.ui.editTextFlag) { textCharPrevious(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } else { input.keyb.delayKey = false; input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_RIGHT: { if (editor.ui.editTextFlag) { textCharNext(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } else { input.keyb.delayKey = false; input.keyb.repeatKey = true; } } break; case SDL_SCANCODE_DELETE: { if (editor.ui.editTextFlag) { if (editor.mixFlag || (editor.ui.editTextType != TEXT_EDIT_STRING)) break; readTmp = editor.ui.editPos; while (readTmp < editor.ui.textEndPtr) { readTmpNext = *(readTmp + 1); *readTmp++ = readTmpNext; } // hack to prevent cloning last character if the song/sample name has one character too much if ((editor.ui.editObject == PTB_SONGNAME) || (editor.ui.editObject == PTB_SAMPLENAME)) *editor.ui.textEndPtr = '\0'; if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; updateTextObject(editor.ui.editObject); } } break; case SDL_SCANCODE_BACKSPACE: { if (editor.ui.editTextFlag) { if (editor.mixFlag || (editor.ui.editTextType != TEXT_EDIT_STRING)) break; if (editor.ui.editPos > editor.ui.dstPtr) { editor.ui.editPos--; readTmp = editor.ui.editPos; while (readTmp < editor.ui.textEndPtr) { readTmpNext = *(readTmp + 1); *readTmp++ = readTmpNext; } // hack to prevent cloning last character if the song/sample name has one character too much if ((editor.ui.editObject == PTB_SONGNAME) || (editor.ui.editObject == PTB_SAMPLENAME)) *editor.ui.textEndPtr = '\0'; textMarkerMoveLeft(); updateTextObject(editor.ui.editObject); } if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; } else { if (editor.ui.diskOpScreenShown) { #ifdef _WIN32 diskOpSetPath(L"..", DISKOP_CACHE); #else diskOpSetPath("..", DISKOP_CACHE); #endif } else if (input.keyb.shiftKeyDown || input.keyb.leftAltKeyDown || input.keyb.leftCtrlKeyDown) { saveUndo(); if (input.keyb.leftAltKeyDown && !input.keyb.leftCtrlKeyDown) { if (modEntry->currRow > 0) { for (i = 0; i < AMIGA_VOICES; ++i) { for (j = (modEntry->currRow - 1); j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][((j + 1) * AMIGA_VOICES) + i]; modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i] = *noteSrc; } // clear newly made row on very bottom modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + i].period = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + i].sample = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + i].command = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + i].param = 0; } modEntry->currRow--; editor.ui.updatePatternData = true; } } else { if (modEntry->currRow > 0) { for (i = (modEntry->currRow - 1); i < (MOD_ROWS - 1); ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][((i + 1) * AMIGA_VOICES) + editor.cursor.channel]; if (input.keyb.leftCtrlKeyDown) { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].command = noteSrc->command; modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel].param = noteSrc->param; } else { modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel] = *noteSrc; } } // clear newly made row on very bottom modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].period = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].sample = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].command = 0; modEntry->patterns[modEntry->currPattern][(63 * AMIGA_VOICES) + editor.cursor.channel].param = 0; modEntry->currRow--; editor.ui.updatePatternData = true; } } } else { editor.stepPlayEnabled = true; editor.stepPlayBackwards = true; doStopIt(); playPattern((modEntry->currRow - 1) & 0x3F); } } } break; default: break; } if (editor.ui.editTextFlag) { if ((keyEntry == SDL_SCANCODE_RETURN) || (keyEntry == SDL_SCANCODE_KP_ENTER)) { // dirty hack if (editor.ui.editObject == PTB_SAMPLES) editor.ui.tmpDisp8++; exitGetTextLine(EDIT_TEXT_UPDATE); if (editor.mixFlag) { editor.mixFlag = false; editor.ui.updateMixText = true; doMix(); } } return (false); // don't continue further key handling } return (true); // continue further key handling (we're not editing text) } void handleTerminalKeys(SDL_Scancode keyEntry) { switch (keyEntry) { case SDL_SCANCODE_F12: { if (input.keyb.leftAltKeyDown) { editor.ui.terminalShown = false; removeTerminalScreen(); } } break; case SDL_SCANCODE_ESCAPE: { editor.ui.terminalShown = false; removeTerminalScreen(); } break; case SDL_SCANCODE_PAGEUP: { terminalScrollPageUp(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; input.keyb.repeatCounter = 0; input.keyb.lastRepKey = SDL_SCANCODE_PAGEUP; } break; case SDL_SCANCODE_PAGEDOWN: { terminalScrollPageDown(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; input.keyb.repeatCounter = 0; input.keyb.lastRepKey = SDL_SCANCODE_PAGEDOWN; } break; case SDL_SCANCODE_UP: { terminalScrollUp(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; input.keyb.repeatCounter = 0; input.keyb.lastRepKey = SDL_SCANCODE_UP; } break; case SDL_SCANCODE_DOWN: { terminalScrollDown(); if (!input.keyb.repeatKey) input.keyb.delayCounter = 0; input.keyb.repeatKey = true; input.keyb.delayKey = true; input.keyb.repeatCounter = 0; input.keyb.lastRepKey = SDL_SCANCODE_DOWN; } break; case SDL_SCANCODE_HOME:terminalScrollToStart(); break; case SDL_SCANCODE_END: terminalScrollToEnd(); break; default: break; } } protracker-2.3d.r92/src/pt_visuals.h0000644000000000000000000000410413235646477016160 0ustar rootroot#ifndef __PT_VISUALS_H #define __PT_VISUALS_H #include #include "pt_header.h" void freeBMPs(void); void handleAskNo(void); void handleAskYes(void); int8_t setupVideo(void); void renderFrame(void); void flipFrame(void); void updateSpectrumAnalyzer(uint8_t ch, int8_t vol, int16_t period); void sinkVisualizerBars(void); void updatePosEd(void); void updateVisualizer(void); void updateEditOp(void); void updateDiskOp(void); void toggleFullscreen(void); uint32_t _50HzCallBack(uint32_t interval, void *param); void videoClose(void); int8_t unpackBMPs(void); void createGraphics(void); void displayMainScreen(void); void renderAskDialog(void); void renderPosEdScreen(void); void renderDiskOpScreen(void); void renderMuteButtons(void); void renderClearScreen(void); void renderAboutScreen(void); void renderQuadrascopeBg(void); void renderSpectrumAnalyzerBg(void); void renderMonoscopeBg(void); void renderMOD2WAVDialog(void); void renderEditOpMode(void); void renderTextEditMarker(void); void renderEditOpScreen(void); void renderSamplerVolBox(void); void renderSamplerFiltersBox(void); void removeTextEditMarker(void); void removeClearScreen(void); void removeSamplerVolBox(void); void removeSamplerFiltersBox(void); void removeAskDialog(void); void removeTerminalScreen(void); void fillToVuMetersBgBuffer(void); void showVolFromSlider(void); void showVolToSlider(void); void updateCurrSample(void); void eraseSprites(void); void renderSprites(void); void updateDragBars(void); void invertRange(void); void updateCursorPos(void); void fillFromVuMetersBgBuffer(void); void renderVuMeters(void); void setupSprites(void); void freeSprites(void); void setSpritePos(uint8_t sprite, uint16_t x, uint16_t y); void hideSprite(uint8_t sprite); enum { SPRITE_PATTERN_CURSOR = 0, SPRITE_LOOP_PIN_LEFT = 1, SPRITE_LOOP_PIN_RIGHT = 2, SPRITE_SAMPLING_POS_LINE = 3, SPRITE_MOUSE_POINTER = 4, // above all other sprites SPRITE_NUM, SPRITE_TYPE_PALETTE = 0, SPRITE_TYPE_RGB = 1 }; #endif protracker-2.3d.r92/src/pt_patternviewer.c0000644000000000000000000003360413235646517017366 0ustar rootroot#include #include "pt_header.h" #include "pt_palette.h" #include "pt_tables.h" #include "pt_textout.h" #include "pt_helpers.h" static uint8_t periodToNote(int16_t period) { uint8_t l, m, h; l = 0; h = 35; while (h >= l) { m = (h + l) / 2; if (m >= 36) break; // should never happen, but let's stay on the safe side if (periodTable[m] == period) return (m); else if (periodTable[m] > period) l = m + 1; else h = m - 1; } return (255); // illegal period } void drawPatternNormal(uint32_t *frameBuffer); void drawPatternDotted(uint32_t *frameBuffer); void redrawPattern(uint32_t *frameBuffer) { if (editor.ui.pattDots) drawPatternDotted(frameBuffer); else drawPatternNormal(frameBuffer); } void drawPatternNormal(uint32_t *frameBuffer) { int8_t rowMiddlePos; uint8_t i, j, tempNote, rowDispCheck; uint16_t y, y2, putXOffset, putYOffset, rowData; note_t note; for (i = 0; i < 15; ++i) { rowMiddlePos = i - 7; rowDispCheck = modEntry->currRow + rowMiddlePos; if (rowDispCheck < MOD_ROWS) { rowData = rowDispCheck * 4; putYOffset = 140 + (i * 7); if (i == 7) // are we on the play row (middle)? { putYOffset++; // align font to play row (middle) // put current row number printTwoDecimalsBigBg(frameBuffer, 8, putYOffset, rowMiddlePos + modEntry->currRow, palette[PAL_GENTXT], palette[PAL_GENBKG]); // pattern data for (j = 0; j < AMIGA_VOICES; ++j) { note = modEntry->patterns[modEntry->currPattern][rowData + j]; putXOffset = 26 + (j * 72); if (note.period == 0) { textOutBigBg(frameBuffer, putXOffset + 6, putYOffset, "---", palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { tempNote = periodToNote(note.period); if (tempNote == 255) textOutBigBg(frameBuffer, putXOffset + 6, putYOffset, "???", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBigBg(frameBuffer, putXOffset + 6, putYOffset, editor.accidental ? noteNames2[tempNote] : noteNames1[tempNote], palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (editor.ui.blankZeroFlag) { if (note.sample & 0xF0) printOneHexBigBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_GENTXT], palette[PAL_GENBKG]); else printOneHexBigBg(frameBuffer, putXOffset + 30, putYOffset, ' ', palette[PAL_GENBKG], palette[PAL_GENBKG]); } else { printOneHexBigBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_GENTXT], palette[PAL_GENBKG]); } printOneHexBigBg(frameBuffer, putXOffset + 38, putYOffset, note.sample & 0x0F, palette[PAL_GENTXT], palette[PAL_GENBKG]); printOneHexBigBg(frameBuffer, putXOffset + 46, putYOffset, note.command, palette[PAL_GENTXT], palette[PAL_GENBKG]); printTwoHexBigBg(frameBuffer, putXOffset + 54, putYOffset, note.param, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } else { if (i > 7) putYOffset += 7; // beyond play row, jump some pixels out of the row (middle) // put current row number printTwoDecimalsBg(frameBuffer, 8, putYOffset, rowMiddlePos + modEntry->currRow, palette[PAL_PATTXT], palette[PAL_BACKGRD]); // pattern data for (j = 0; j < AMIGA_VOICES; ++j) { note = modEntry->patterns[modEntry->currPattern][rowData + j]; putXOffset = 26 + (j * 72); if (note.period == 0) { textOutBg(frameBuffer, putXOffset + 6, putYOffset, "---", palette[PAL_PATTXT], palette[PAL_BACKGRD]); } else { tempNote = periodToNote(note.period); if (tempNote == 255) textOutBg(frameBuffer, putXOffset + 6, putYOffset, "???", palette[PAL_PATTXT], palette[PAL_BACKGRD]); else textOutBg(frameBuffer, putXOffset + 6, putYOffset, editor.accidental ? noteNames2[tempNote] : noteNames1[tempNote], palette[PAL_PATTXT], palette[PAL_BACKGRD]); } if (editor.ui.blankZeroFlag) { if (note.sample & 0xF0) printOneHexBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_PATTXT], palette[PAL_BACKGRD]); else printOneHexBg(frameBuffer, putXOffset + 30, putYOffset, ' ', palette[PAL_BACKGRD], palette[PAL_BACKGRD]); } else { printOneHexBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } printOneHexBg(frameBuffer, putXOffset + 38, putYOffset, note.sample & 0x0F, palette[PAL_PATTXT], palette[PAL_BACKGRD]); printOneHexBg(frameBuffer, putXOffset + 46, putYOffset, note.command, palette[PAL_PATTXT], palette[PAL_BACKGRD]); printTwoHexBg(frameBuffer, putXOffset + 54, putYOffset, note.param, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } } } } // fill margin if (modEntry->currRow <= 6) { y2 = 140 + ((7 - modEntry->currRow) * 7); for (y = 140; y < y2; y += 7) textOutBgNoSpace(frameBuffer, 9, y, "00 --000000 --000000 --000000 --000000", palette[PAL_BACKGRD], palette[PAL_BACKGRD]); } else if (modEntry->currRow >= 57) { y2 = 245 - ((modEntry->currRow - 56) * 7); for (y = 245; y > y2; y -= 7) textOutBgNoSpace(frameBuffer, 9, y, "00 --000000 --000000 --000000 --000000", palette[PAL_BACKGRD], palette[PAL_BACKGRD]); } } void drawPatternDotted(uint32_t *frameBuffer) { int8_t rowMiddlePos; uint8_t i, j, tempNote, rowDispCheck; uint16_t y, y2, putXOffset, putYOffset, rowData; note_t note; for (i = 0; i < 15; ++i) { rowMiddlePos = i - 7; rowDispCheck = modEntry->currRow + rowMiddlePos; if (rowDispCheck < MOD_ROWS) { rowData = rowDispCheck * 4; putYOffset = 140 + (i * 7); if (i == 7) // are we on the play row (middle)? { putYOffset++; // align font to play row (middle) // put current row number printTwoDecimalsBigBg(frameBuffer, 8, putYOffset, rowMiddlePos + modEntry->currRow, palette[PAL_GENTXT], palette[PAL_GENBKG]); // pattern data for (j = 0; j < AMIGA_VOICES; ++j) { note = modEntry->patterns[modEntry->currPattern][rowData + j]; putXOffset = 26 + (j * 72); if (note.period == 0) { charOutBigBg(frameBuffer, putXOffset + 6, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBigBg(frameBuffer, putXOffset + 14, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBigBg(frameBuffer, putXOffset + 22, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { tempNote = periodToNote(note.period); if (tempNote == 255) textOutBigBg(frameBuffer, putXOffset + 6, putYOffset, "???", palette[PAL_GENTXT], palette[PAL_GENBKG]); else textOutBigBg(frameBuffer, putXOffset + 6, putYOffset, editor.accidental ? noteNames2[tempNote] : noteNames1[tempNote], palette[PAL_GENTXT], palette[PAL_GENBKG]); } if (note.sample) { printOneHexBigBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_GENTXT], palette[PAL_GENBKG]); printOneHexBigBg(frameBuffer, putXOffset + 38, putYOffset, note.sample & 0x0F, palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { charOutBigBg(frameBuffer, putXOffset + 30, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBigBg(frameBuffer, putXOffset + 38, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); } if ((note.command | note.param) == 0) { charOutBigBg(frameBuffer, putXOffset + 46, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBigBg(frameBuffer, putXOffset + 54, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); charOutBigBg(frameBuffer, putXOffset + 62, putYOffset, 128, palette[PAL_GENTXT], palette[PAL_GENBKG]); } else { printOneHexBigBg(frameBuffer, putXOffset + 46, putYOffset, note.command, palette[PAL_GENTXT], palette[PAL_GENBKG]); printTwoHexBigBg(frameBuffer, putXOffset + 54, putYOffset, note.param, palette[PAL_GENTXT], palette[PAL_GENBKG]); } } } else { if (i > 7) putYOffset += 7; // beyond play row, jump some pixels out of the row (middle) // put current row number printTwoDecimalsBg(frameBuffer, 8, putYOffset, rowMiddlePos + modEntry->currRow, palette[PAL_PATTXT], palette[PAL_BACKGRD]); // pattern data for (j = 0; j < AMIGA_VOICES; ++j) { note = modEntry->patterns[modEntry->currPattern][rowData + j]; putXOffset = 26 + (j * 72); if (note.period == 0) { charOutBg(frameBuffer, putXOffset + 6, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); charOutBg(frameBuffer, putXOffset + 14, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); charOutBg(frameBuffer, putXOffset + 22, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } else { tempNote = periodToNote(note.period); if (tempNote == 255) textOutBg(frameBuffer, putXOffset + 6, putYOffset, "???", palette[PAL_PATTXT], palette[PAL_BACKGRD]); else textOutBg(frameBuffer, putXOffset + 6, putYOffset, editor.accidental ? noteNames2[tempNote] : noteNames1[tempNote], palette[PAL_PATTXT], palette[PAL_BACKGRD]); } if (note.sample) { printOneHexBg(frameBuffer, putXOffset + 30, putYOffset, note.sample >> 4, palette[PAL_PATTXT], palette[PAL_BACKGRD]); printOneHexBg(frameBuffer, putXOffset + 38, putYOffset, note.sample & 0x0F, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } else { charOutBg(frameBuffer, putXOffset + 30, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); charOutBg(frameBuffer, putXOffset + 38, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } if ((note.command | note.param) == 0) { charOutBg(frameBuffer, putXOffset + 46, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); charOutBg(frameBuffer, putXOffset + 54, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); charOutBg(frameBuffer, putXOffset + 62, putYOffset, 128, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } else { printOneHexBg(frameBuffer, putXOffset + 46, putYOffset, note.command, palette[PAL_PATTXT], palette[PAL_BACKGRD]); printTwoHexBg(frameBuffer, putXOffset + 54, putYOffset, note.param, palette[PAL_PATTXT], palette[PAL_BACKGRD]); } } } } } // fill margin if (modEntry->currRow <= 6) { y2 = 140 + ((7 - modEntry->currRow) * 7); for (y = 140; y < y2; y += 7) textOutBgNoSpace(frameBuffer, 9, y, "00 --000000 --000000 --000000 --000000", palette[PAL_BACKGRD], palette[PAL_BACKGRD]); } else if (modEntry->currRow >= 57) { y2 = 245 - ((modEntry->currRow - 56) * 7); for (y = 245; y > y2; y -= 7) textOutBgNoSpace(frameBuffer, 9, y, "00 --000000 --000000 --000000 --000000", palette[PAL_BACKGRD], palette[PAL_BACKGRD]); } } protracker-2.3d.r92/src/pt_main.c0000644000000000000000000010224013235646500015374 0ustar rootroot#include #include #include #include #include #ifdef _WIN32 #define WIN32_MEAN_AND_LEAN #include #include #else #include // chdir() #endif #include #include "pt_header.h" #include "pt_helpers.h" #include "pt_palette.h" #include "pt_keyboard.h" #include "pt_textout.h" #include "pt_mouse.h" #include "pt_diskop.h" #include "pt_sampler.h" #include "pt_config.h" #include "pt_visuals.h" #include "pt_edit.h" #include "pt_modloader.h" #include "pt_sampleloader.h" #include "pt_terminal.h" #include "pt_unicode.h" #include "pt_scopes.h" #include "pt_audio.h" extern int8_t forceMixerOff; // pt_audio.c extern uint32_t palette[PALETTE_NUM]; // pt_palette.c uint8_t bigEndian = false; // globalized module_t *modEntry = NULL; // globalized // accessed by pt_visuals.c uint32_t *pixelBuffer = NULL; SDL_Window *window = NULL; SDL_Renderer *renderer = NULL; SDL_Texture *texture = NULL; uint8_t fullscreen = false, vsync60HzPresent = false; // ----------------------------- #ifdef _WIN32 #define SYSMSG_FILE_ARG (WM_USER + 1) #define ARGV_SHARED_MEM_MAX_LEN ((PATH_MAX_LEN * 2) + 2) // for taking control over windows key and numlock on keyboard if app has focus uint8_t windowsKeyIsDown; HHOOK g_hKeyboardHook; static HWND hWnd_to = NULL; static HANDLE oneInstHandle = NULL, hMapFile = NULL; static LPCTSTR sharedMemBuf = NULL; static TCHAR sharedHwndName[] = TEXT("Local\\PTCloneHwnd"); static TCHAR sharedFileName[] = TEXT("Local\\PTCloneFilename"); static int8_t handleSingleInstancing(int32_t argc, char **argv); static void handleSysMsg(SDL_Event inputEvent); static LONG WINAPI exceptionHandler(EXCEPTION_POINTERS *ptr); static uint8_t backupMadeAfterCrash; #endif static uint64_t timeNext64; static SDL_TimerID timer50Hz; static module_t *tempMod; #ifdef __APPLE__ static void osxSetDirToProgramDirFromArgs(char **argv); static int8_t checkIfAppWasTranslocated(int argc, char **argv); #endif static void handleInput(void); static int8_t initializeVars(void); static void loadModFromArg(char *arg); static void handleSigTerm(void); static void loadDroppedFile(char *fullPath, uint32_t fullPathLen, uint8_t autoPlay); static void cleanUp(void); static void initSyncMainThread(void); static void syncMainThread(void); static void readMouseXY(void); int main(int argc, char *argv[]) { SDL_version sdlVer; // very first thing to do is to set a big endian flag using a well-known hack // DO *NOT* run this test later in the code, as some macros depend on the flag! union { uint32_t a; uint8_t b[4]; } endianTest; endianTest.a = 1; bigEndian = endianTest.b[3]; // ---------------------------- #if SDL_PATCHLEVEL <= 4 #pragma message("WARNING: The SDL2 dev lib is older than ver 2.0.5. You'll get fullscreen mode bugs.") #endif SDL_GetVersion(&sdlVer); if (((sdlVer.major != SDL_MAJOR_VERSION) || (sdlVer.minor != SDL_MINOR_VERSION) || (sdlVer.patch != SDL_PATCHLEVEL))) { #ifdef _WIN32 showErrorMsgBox("SDL2.dll is not the expected version, the program will terminate.\n\n" \ "Loaded dll version: %d.%d.%d\n" \ "Required (compiled with) version: %d.%d.%d\n\n" \ "The needed SDL2.dll is located in the .zip from 16-bits.org/pt.php.\n", sdlVer.major, sdlVer.minor, sdlVer.patch, SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL); #else showErrorMsgBox("The loaded SDL2 library is not the expected version, the program will terminate.\n\n" \ "Loaded library version: %d.%d.%d\n" \ "Required (compiled with) version: %d.%d.%d", sdlVer.major, sdlVer.minor, sdlVer.patch, SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL); #endif return (0); } /* disable problematic WASAPI SDL2 audio driver on Windows */ #ifdef _WIN32 SDL_setenv("SDL_AUDIODRIVER", "directsound", true); #endif if (SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_TIMER) < 0) { showErrorMsgBox("Couldn't initialize SDL: %s", SDL_GetError()); return (0); } SDL_EventState(SDL_DROPFILE, SDL_ENABLE); SDL_SetThreadPriority(SDL_THREAD_PRIORITY_HIGH); #ifdef __APPLE__ if (checkIfAppWasTranslocated(argc, argv)) { SDL_Quit(); return (0); } #endif #ifdef _WIN32 if (IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE) == false) { showErrorMsgBox("Your computer's processor is too old and doesn't have the SSE2 instruction set\n" \ "which is needed for this program to run. Sorry!"); SDL_Quit(); return (0); } // for taking control over windows key and numlock on keyboard if app has focus windowsKeyIsDown = false; g_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, lowLevelKeyboardProc, GetModuleHandle(NULL), 0); SetUnhandledExceptionFilter(exceptionHandler); // crash handler #endif #ifdef __APPLE__ osxSetDirToProgramDirFromArgs(argv); #endif if (!initializeVars()) { cleanUp(); SDL_Quit(); return (1); } if (!loadConfig()) // returns false on mem alloc failure { cleanUp(); SDL_Quit(); return (1); } if (!setupVideo()) { cleanUp(); SDL_Quit(); return (1); } // allow only one instance, and send arguments to it (song to play) #ifdef _WIN32 if (handleSingleInstancing(argc, argv)) { cleanUp(); SDL_Quit(); return (0); } SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE); #endif if (!setupAudio()) { cleanUp(); SDL_Quit(); return (1); } if (!terminalInit()) { cleanUp(); SDL_Quit(); return (0); } if (!unpackBMPs()) { cleanUp(); SDL_Quit(); return (1); } timer50Hz = SDL_AddTimer(1000 / 50, _50HzCallBack, NULL); if (timer50Hz == 0) { showErrorMsgBox("Couldn't create 50Hz timer:\n%s", SDL_GetError()); cleanUp(); SDL_Quit(); return (1); } setupSprites(); diskOpSetInitPath(); editor.programRunning = true; // set this before initScopes() if (!ptConfig.vblankScopes && !initScopes()) { cleanUp(); SDL_Quit(); return (1); } modEntry = createNewMod(); if (modEntry == NULL) { cleanUp(); SDL_Quit(); return (1); } modSetTempo(editor.initialTempo); modSetSpeed(editor.initialSpeed); updateWindowTitle(MOD_NOT_MODIFIED); pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); setStatusMessage("PROTRACKER V2.3D", NO_CARRY); terminalPrintf("Program was started.\n\n"); terminalPrintf("Build date: %s %s\n", __DATE__, __TIME__); terminalPrintf("Platform endianness: %s\n\n", bigEndian ? "big-endian" : "little-endian"); if (!editor.configFound) terminalPrintf("Warning: could not load config file, using default settings.\n\n"); terminalPrintf("Configuration:\n"); terminalPrintf("- Video upscaling factor: %dx\n", ptConfig.videoScaleFactor); terminalPrintf("- Video 60Hz vsync: %s\n", vsync60HzPresent ? "yes" : "no"); terminalPrintf("- \"MOD.\" filenames: %s\n", ptConfig.modDot ? "yes" : "no"); terminalPrintf("- Stereo separation: %d%%\n", ptConfig.stereoSeparation); terminalPrintf("- Audio BLEP synthesis: %s\n", ptConfig.blepSynthesis ? "yes" : "no"); terminalPrintf("- Audio output rate: %dHz\n", ptConfig.soundFrequency); terminalPrintf("- Audio buffer size: %d samples\n", editor.audioBufferSize); terminalPrintf("- Audio latency: ~%.2fms\n", (editor.audioBufferSize / (float)(ptConfig.soundFrequency)) * 1000.0f); terminalPrintf("\nEverything is up and running.\n\n"); // load a .MOD from the command arguments if passed (also ignore OS X < 10.9 -psn argument on double-click launch) if (((argc >= 2) && (strlen(argv[1]) > 0)) && !((argc == 2) && (!strncmp(argv[1], "-psn_", 5)))) { loadModFromArg(argv[1]); // play song if (modEntry->moduleLoaded) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, 0, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else { if (!editor.configFound) displayErrorMsg("CONFIG NOT FOUND!"); } displayMainScreen(); fillToVuMetersBgBuffer(); updateCursorPos(); SDL_ShowWindow(window); initSyncMainThread(); while (editor.programRunning) { syncMainThread(); readMouseXY(); eraseSprites(); updateKeyModifiers(); // set/clear CTRL/ALT/SHIFT/AMIGA key states handleInput(); updateMouseCounters(); handleKeyRepeat(input.keyb.lastRepKey); if (!input.mouse.buttonWaiting && (editor.ui.sampleMarkingPos == -1) && !editor.ui.forceSampleDrag && !editor.ui.forceVolDrag && !editor.ui.forceSampleEdit && !editor.ui.forceTermBarDrag) { handleMouseButtons(); handleSamplerFiltersBoxRepeats(); } renderFrame(); renderSprites(); flipFrame(); if (ptConfig.vblankScopes) updateScopes(); sinkVisualizerBars(); } cleanUp(); SDL_Quit(); return (0); } static void handleInput(void) { char inputChar; SDL_Event inputEvent; while (SDL_PollEvent(&inputEvent)) { #ifdef _WIN32 handleSysMsg(inputEvent); #endif if (editor.ui.editTextFlag && (inputEvent.type == SDL_TEXTINPUT)) { // text input when editing texts/numbers inputChar = inputEvent.text.text[0]; if (inputChar == '\0') continue; handleTextEditInputChar(inputChar); continue; // continue SDL event loop } else if (inputEvent.type == SDL_MOUSEWHEEL) { if (inputEvent.wheel.y < 0) mouseWheelDownHandler(); else if (inputEvent.wheel.y > 0) mouseWheelUpHandler(); } else if (inputEvent.type == SDL_DROPFILE) { loadDroppedFile(inputEvent.drop.file, strlen(inputEvent.drop.file), false); SDL_free(inputEvent.drop.file); SDL_RaiseWindow(window); // set window focus } if (inputEvent.type == SDL_QUIT) { handleSigTerm(); } else if (inputEvent.type == SDL_KEYUP) { keyUpHandler(inputEvent.key.keysym.scancode); } else if (inputEvent.type == SDL_KEYDOWN) { if (editor.repeatKeyFlag || (input.keyb.lastRepKey != inputEvent.key.keysym.scancode)) keyDownHandler(inputEvent.key.keysym.scancode, inputEvent.key.keysym.sym); } else if (inputEvent.type == SDL_MOUSEBUTTONUP) { mouseButtonUpHandler(inputEvent.button.button); if (!editor.ui.askScreenShown && !editor.ui.terminalShown && editor.ui.introScreenShown) { if (editor.ui.terminalWasClosed) { // bit of a kludge to prevent terminal exit from closing intro screen editor.ui.terminalWasClosed = false; } else { if (!editor.ui.clearScreenShown) setStatusMessage(editor.allRightText, DO_CARRY); editor.ui.introScreenShown = false; } } } else if (inputEvent.type == SDL_MOUSEBUTTONDOWN) { if ((editor.ui.sampleMarkingPos == -1) && !editor.ui.forceSampleDrag && !editor.ui.forceVolDrag && !editor.ui.forceSampleEdit && !editor.ui.forceTermBarDrag) { mouseButtonDownHandler(inputEvent.button.button); } } if (editor.ui.throwExit) { editor.programRunning = false; if (editor.diskop.isFilling) { editor.diskop.isFilling = false; editor.diskop.forceStopReading = true; SDL_WaitThread(editor.diskop.fillThread, NULL); } if (editor.isWAVRendering) { editor.isWAVRendering = false; editor.abortMod2Wav = true; SDL_WaitThread(editor.mod2WavThread, NULL); } } } } static int8_t initializeVars(void) { clearPaulaAndScopes(); // clear common structs memset(&input, 0, sizeof (input)); memset(&editor, 0, sizeof (editor)); memset(&ptConfig, 0, sizeof (ptConfig)); modEntry = NULL; // copy often used strings strcpy(editor.mixText, "MIX 01+02 TO 03"); strcpy(editor.allRightText, "ALL RIGHT"); strcpy(editor.modLoadOoMText, "Module loading failed: out of memory!\n"); strcpy(editor.outOfMemoryText, "OUT OF MEMORY !!!"); strcpy(editor.diskOpListOoMText, "Failed to list directory: out of memory!\n"); // allocate memory (if initializeVars() returns false, every allocations are free'd) if (!allocSamplerVars()) { showErrorMsgBox("Out of memory!"); return (false); } if (!allocDiskOpVars()) { showErrorMsgBox("Out of memory!"); return (false); } ptConfig.defaultDiskOpDir = (char *)(malloc(PATH_MAX_LEN + 1)); if (ptConfig.defaultDiskOpDir == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.rowVisitTable = (uint8_t *)(malloc(MOD_ORDERS * MOD_ROWS)); if (editor.rowVisitTable == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.ui.pattNames = (char *)(calloc(MAX_PATTERNS, 16)); if (editor.ui.pattNames == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.scopeBuffer = (uint32_t *)(malloc(200 * 44)); if (editor.scopeBuffer == NULL) { showErrorMsgBox("Out of memory!"); return (false); } editor.tempSample = (int8_t *)(calloc(MAX_SAMPLE_LEN, 1)); if (editor.tempSample == NULL) { showErrorMsgBox("Out of memory!"); return (false); } // setup initial mouse coordinates input.mouse.x = SCREEN_W / 2; input.mouse.y = SCREEN_H / 2; input.mouse.prevX = input.mouse.x; input.mouse.prevY = input.mouse.y; // set various non-zero values editor.vol1 = 100; editor.vol2 = 100; editor.note1 = 36; editor.note2 = 36; editor.note3 = 36; editor.note4 = 36; editor.f7Pos = 16; editor.f8Pos = 32; editor.f9Pos = 48; editor.f10Pos = 63; editor.oldNote1 = 36; editor.oldNote2 = 36; editor.oldNote3 = 36; editor.oldNote4 = 36; editor.tuningVol = 32; editor.sampleVol = 100; editor.tuningNote = 24; editor.metroSpeed = 4; editor.editMoveAdd = 1; editor.initialTempo = 125; editor.initialSpeed = 6; editor.resampleNote = 24; editor.currPlayNote = 24; editor.quantizeValue = 1; editor.effectMacros[0] = 0x0102; editor.effectMacros[1] = 0x0202; editor.effectMacros[2] = 0x0037; editor.effectMacros[3] = 0x0047; editor.effectMacros[4] = 0x0304; editor.effectMacros[5] = 0x0F06; editor.effectMacros[6] = 0x0C10; editor.effectMacros[7] = 0x0C20; editor.effectMacros[8] = 0x0E93; editor.effectMacros[9] = 0x0A0F; editor.multiModeNext[0] = 2; editor.multiModeNext[1] = 3; editor.multiModeNext[2] = 4; editor.multiModeNext[3] = 1; editor.ui.visualizerMode = VISUAL_QUADRASCOPE; editor.ui.introScreenShown = true; editor.ui.sampleMarkingPos = -1; editor.ui.previousPointerMode = editor.ui.pointerMode; // setup GUI text pointers editor.vol1Disp = &editor.vol1; editor.vol2Disp = &editor.vol2; editor.sampleToDisp = &editor.sampleTo; editor.lpCutOffDisp = &editor.lpCutOff; editor.hpCutOffDisp = &editor.hpCutOff; editor.samplePosDisp = &editor.samplePos; editor.sampleVolDisp = &editor.sampleVol; editor.currSampleDisp = &editor.currSample; editor.metroSpeedDisp = &editor.metroSpeed; editor.sampleFromDisp = &editor.sampleFrom; editor.chordLengthDisp = &editor.chordLength; editor.metroChannelDisp = &editor.metroChannel; editor.quantizeValueDisp = &editor.quantizeValue; return (true); } static void loadModFromArg(char *arg) { uint32_t filenameLen; UNICHAR *filenameU; editor.ui.introScreenShown = false; setStatusMessage(editor.allRightText, DO_CARRY); filenameLen = strlen(arg); filenameU = (UNICHAR *)(calloc((filenameLen + 2), sizeof (UNICHAR))); if (filenameU == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return; } #ifdef _WIN32 MultiByteToWideChar(CP_UTF8, 0, arg, -1, filenameU, filenameLen); #else strcpy(filenameU, arg); #endif tempMod = modLoad(filenameU); if (tempMod != NULL) { modEntry->moduleLoaded = false; modFree(); modEntry = tempMod; setupNewMod(); modEntry->moduleLoaded = true; } else { editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; // status/error message is set in the mod loader pointerErrorMode(); } free(filenameU); } void resetAllScreens(void) { editor.mixFlag = false; editor.swapChannelFlag = false; editor.ui.clearScreenShown = false; editor.ui.changingChordNote = false; editor.ui.changingSmpResample = false; editor.ui.pat2SmpDialogShown = false; editor.ui.disablePosEd = false; editor.ui.disableVisualizer = false; if (editor.ui.terminalShown) { editor.ui.terminalShown = false; removeTerminalScreen(); updateDiskOp(); updatePosEd(); updateEditOp(); updateVisualizer(); } else if (editor.ui.samplerScreenShown) { editor.ui.samplerVolBoxShown = false; editor.ui.samplerFiltersBoxShown = false; displaySample(); } if (editor.ui.editTextFlag) exitGetTextLine(EDIT_TEXT_NO_UPDATE); } static void handleSigTerm(void) { if (modEntry->modified) { resetAllScreens(); editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_QUIT; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("REALLY QUIT ?", NO_CARRY); renderAskDialog(); } else { editor.ui.throwExit = true; } } // macOS/OS X specific routines #ifdef __APPLE__ static void osxSetDirToProgramDirFromArgs(char **argv) { char *tmpPath; int32_t i, tmpPathLen; /* OS X/macOS: hackish way of setting the current working directory to the place where we double clicked ** on the icon (for protracker.ini loading) */ // if we launched from the terminal, argv[0][0] would be '.' if ((argv[0] != NULL) && (argv[0][0] == DIR_DELIMITER)) // don't do the hack if we launched from the terminal { tmpPath = strdup(argv[0]); if (tmpPath != NULL) { // cut off program filename tmpPathLen = strlen(tmpPath); for (i = tmpPathLen - 1; i >= 0; --i) { if (tmpPath[i] == DIR_DELIMITER) { tmpPath[i] = '\0'; break; } } chdir(tmpPath); // path to binary chdir("../../../"); // we should now be in the directory where the config can be. free(tmpPath); } } } static int8_t checkIfAppWasTranslocated(int argc, char **argv) { const char startOfStrToCmp[] = "/private/var/folders/"; // this is not 100% guaranteed to work, but it's Good Enough if ((argc > 0) && !my_strnicmp(argv[0], startOfStrToCmp, sizeof (startOfStrToCmp) - 1)) { showErrorMsgBox( "The program was translocated to a random sandbox environment for security reasons, and thus it can't find and load protracker.ini.\n\n" \ "Don't worry, this is normal. To fix the issue you need to move the program/.app somewhere to clear its QTN_FLAG_TRANSLOCATE flag.\n\n" \ "Instructions:\n" \ "1) Close the window.\n" \ "2) Move/drag (do NOT copy) the program (protracker-osx) to another folder, then move it back to where it was. Don't move the folder, move the executable itself.\n" \ "3) Run the program again, and if you did it right it should be permanently fixed.\n\n" \ "This is not my fault, it's a security concept introduced in macOS 10.12 for unsigned programs downloaded and unzipped from the internet." ); return (true); } return (false); } #endif // Windows specific routines #ifdef _WIN32 static int8_t instanceAlreadyOpen(void) { hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, sharedHwndName); if (hMapFile != NULL) return (true); // another instance is already open // no instance is open, let's created a shared memory file with hWnd in it oneInstHandle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof (HWND), sharedHwndName); if (oneInstHandle != NULL) { sharedMemBuf = (LPTSTR)(MapViewOfFile(oneInstHandle, FILE_MAP_ALL_ACCESS, 0, 0, sizeof (HWND))); if (sharedMemBuf != NULL) { CopyMemory((PVOID)(sharedMemBuf), &editor.ui.hWnd, sizeof (HWND)); UnmapViewOfFile(sharedMemBuf); sharedMemBuf = NULL; } } return (false); } static int8_t handleSingleInstancing(int32_t argc, char **argv) { if (instanceAlreadyOpen()) { if ((argc >= 2) && (strlen(argv[1]) > 0)) { sharedMemBuf = (LPTSTR)(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof (HWND))); if (sharedMemBuf != NULL) { memcpy(&hWnd_to, sharedMemBuf, sizeof (HWND)); UnmapViewOfFile(sharedMemBuf); sharedMemBuf = NULL; CloseHandle(hMapFile); hMapFile = NULL; hMapFile = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ARGV_SHARED_MEM_MAX_LEN, sharedFileName); if (hMapFile != NULL) { sharedMemBuf = (LPTSTR)(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, ARGV_SHARED_MEM_MAX_LEN)); if (sharedMemBuf != NULL) { strcpy((char *)(sharedMemBuf), argv[1]); UnmapViewOfFile(sharedMemBuf); sharedMemBuf = NULL; SendMessageA(hWnd_to, SYSMSG_FILE_ARG, 0, 0); SDL_Delay(100); // wait a bit to make sure first instance received msg CloseHandle(hMapFile); hMapFile = NULL; return (true); // quit instance now } } return (true); } CloseHandle(hMapFile); hMapFile = NULL; } } return (false); } static void handleSysMsg(SDL_Event inputEvent) { SDL_SysWMmsg *wmMsg; if (inputEvent.type == SDL_SYSWMEVENT) { wmMsg = inputEvent.syswm.msg; if ((wmMsg->subsystem == SDL_SYSWM_WINDOWS) && (wmMsg->msg.win.msg == SYSMSG_FILE_ARG)) { hMapFile = OpenFileMappingA(FILE_MAP_READ, FALSE, sharedFileName); if (hMapFile != NULL) { sharedMemBuf = (LPTSTR)(MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, ARGV_SHARED_MEM_MAX_LEN)); if (sharedMemBuf != NULL) { loadDroppedFile((char *)(sharedMemBuf), strlen(sharedMemBuf), true); UnmapViewOfFile(sharedMemBuf); sharedMemBuf = NULL; SDL_RestoreWindow(window); } CloseHandle(hMapFile); hMapFile = NULL; } } } } static LONG WINAPI exceptionHandler(EXCEPTION_POINTERS *ptr) { #define BACKUP_FILES_TO_TRY 1000 char filePath[MAX_PATH], fileName[MAX_PATH], *filePathPtr; uint16_t i; uint32_t fileNameLength; struct stat statBuffer; (void)(ptr); // Important: Try to clear the "only one" instance handle! if (oneInstHandle != NULL) { CloseHandle(oneInstHandle); oneInstHandle = NULL; } if (backupMadeAfterCrash == false) { // get executable path GetModuleFileNameA(NULL, filePath, MAX_PATH); // cut off executable fileNameLength = strlen(filePath); if (fileNameLength) { filePathPtr = filePath + fileNameLength; while (filePathPtr != filePath) { if (*--filePathPtr == '\\') { *(filePathPtr++) = '\0'; break; } } // find a free filename for (i = 1; i < 1000; ++i) { sprintf(fileName, "%s\\BACKUP%03d.MOD", filePath, i); if (stat(fileName, &statBuffer) != 0) break; // filename OK } if (i != 1000) modSave(fileName); } backupMadeAfterCrash = true; showErrorMsgBox("Oh no!\nProTracker has crashed...\n\nA backup .MOD was hopefully " \ "saved to the program directory.\n\nPlease report this to 8bitbubsy " \ "(IRC or olav.sorensen@live.no).\nTry to mention what you did before the crash happened."); } return (EXCEPTION_CONTINUE_SEARCH); } #endif // DRAG AND DROP RELATED ROUTINES static uint8_t testExtension(char *ext, uint8_t extLen, char *fullPath) { // checks for EXT.filename and filename.EXT char *fileName, begStr[8], endStr[8]; uint32_t fileNameLen; extLen++; // add one to length (dot) fileName = strrchr(fullPath, DIR_DELIMITER); if (fileName != NULL) fileName++; else fileName = fullPath; fileNameLen = strlen(fileName); if (fileNameLen >= extLen) { sprintf(begStr, "%s.", ext); if (!my_strnicmp(begStr, fileName, extLen)) return (true); sprintf(endStr, ".%s", ext); if (!my_strnicmp(endStr, fileName + (fileNameLen - extLen), extLen)) return (true); } return (false); } static void loadDroppedFile(char *fullPath, uint32_t fullPathLen, uint8_t autoPlay) { char *fileName, *ansiName; uint8_t isMod, songWasPlaying; UNICHAR *fullPathU; if (editor.diskop.isFilling || editor.isWAVRendering) return; ansiName = (char *)(calloc(fullPathLen + 10, sizeof (char))); if (ansiName == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return; } fullPathU = (UNICHAR *)(calloc((fullPathLen + 2), sizeof (UNICHAR))); if (fullPathU == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return; } #ifdef _WIN32 MultiByteToWideChar(CP_UTF8, 0, fullPath, -1, fullPathU, fullPathLen); #else strcpy(fullPathU, fullPath); #endif unicharToAnsi(ansiName, fullPathU, fullPathLen); // make a new pointer point to filename (strip path) fileName = strrchr(ansiName, DIR_DELIMITER); if (fileName != NULL) fileName++; else fileName = ansiName; // check if the file extension is a module (FIXME: check module by content instead..?) isMod = false; if (testExtension("MOD", 3, fileName)) isMod = true; else if (testExtension("M15", 3, fileName)) isMod = true; else if (testExtension("STK", 3, fileName)) isMod = true; else if (testExtension("NST", 3, fileName)) isMod = true; else if (testExtension("UST", 3, fileName)) isMod = true; else if (testExtension("PP", 2, fileName)) isMod = true; else if (testExtension("NT", 2, fileName)) isMod = true; if (isMod) { songWasPlaying = editor.songPlaying; tempMod = modLoad(fullPathU); if (tempMod != NULL) { modStop(); modEntry->moduleLoaded = false; modFree(); modEntry = tempMod; setupNewMod(); modEntry->moduleLoaded = true; resetAllScreens(); setStatusMessage(editor.allRightText, DO_CARRY); pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); editor.ui.diskOpScreenShown = false; displayMainScreen(); if (editor.ui.samplerScreenShown) { editor.ui.samplerScreenShown = false; samplerScreen(); } if (songWasPlaying || autoPlay) { editor.playMode = PLAY_MODE_NORMAL; modPlay(DONT_SET_PATTERN, 0, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } else { editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; // status/error message is set in the mod loader pointerErrorMode(); } } else { loadSample(fullPathU, fileName); } free(ansiName); free(fullPathU); } static void cleanUp(void) // never call this inside the main loop! { audioClose(); if (timer50Hz != 0) SDL_RemoveTimer(timer50Hz); modFree(); deAllocSamplerVars(); deAllocDiskOpVars(); freeDiskOpFileMem(); freeBMPs(); terminalFree(); videoClose(); freeSprites(); if (ptConfig.defaultDiskOpDir != NULL) free(ptConfig.defaultDiskOpDir); if (editor.rowVisitTable != NULL) free(editor.rowVisitTable); if (editor.ui.pattNames != NULL) free(editor.ui.pattNames); if (editor.tempSample != NULL) free(editor.tempSample); if (editor.scopeBuffer != NULL) free(editor.scopeBuffer); #ifdef _WIN32 UnhookWindowsHookEx(g_hKeyboardHook); if (oneInstHandle != NULL) CloseHandle(oneInstHandle); #endif } static void initSyncMainThread(void) { double perfFreq_f, frameLength_f; perfFreq_f = (double)(SDL_GetPerformanceFrequency()); frameLength_f = (perfFreq_f / VBLANK_HZ) + 0.5; timeNext64 = SDL_GetPerformanceCounter() + (int32_t)(frameLength_f); } static void syncMainThread(void) { // this routine almost never delays if we have 60Hz vsync, but it's still needed for safety int32_t delayMs; uint64_t timeNow64, timeElapsed64; double delayMs_f, perfFreq_f, frameLength_f; perfFreq_f = (double)(SDL_GetPerformanceFrequency()); // should be safe for double if (perfFreq_f <= 0.0) return; // panic! timeNow64 = SDL_GetPerformanceCounter(); if (timeNext64 > timeNow64) { timeElapsed64 = timeNext64 - timeNow64; delayMs_f = ((1000.0 * (double)(timeElapsed64)) / perfFreq_f) + 0.5; delayMs = (int32_t)(delayMs_f); if (delayMs > 0) SDL_Delay(delayMs); } frameLength_f = (perfFreq_f / VBLANK_HZ) + 0.5; timeNext64 += (int32_t)(frameLength_f); } static void readMouseXY(void) { int16_t x, y; int32_t mx, my; float mx_f, my_f; SDL_PumpEvents(); SDL_GetMouseState(&mx, &my); if (input.mouse.scaleX_f != 1.0f) { mx_f = mx * input.mouse.scaleX_f; mx = (int32_t)(mx_f + 0.5f); } if (input.mouse.scaleY_f != 1.0f) { my_f = my * input.mouse.scaleY_f; my = (int32_t)(my_f + 0.5f); } // clamp to edges mx = CLAMP(mx, 0, SCREEN_W - 1); my = CLAMP(my, 0, SCREEN_H - 1); x = (int16_t)(mx); y = (int16_t)(my); input.mouse.x = x; input.mouse.y = y; setSpritePos(SPRITE_MOUSE_POINTER, x, y); } protracker-2.3d.r92/src/pt_patternviewer.h0000644000000000000000000000021313235646501017352 0ustar rootroot#ifndef __PT_PATTERNVIEWER_H #define __PT_PATTERNVIEWER_H #include void redrawPattern(uint32_t *frameBuffer); #endif protracker-2.3d.r92/src/pt_config.c0000644000000000000000000004021713235646476015736 0ustar rootroot#include #include #include #include #ifndef _WIN32 #include #endif #include "pt_helpers.h" #include "pt_header.h" #include "pt_config.h" #include "pt_tables.h" #include "pt_audio.h" #include "pt_diskop.h" #include "pt_config.h" #include "pt_textout.h" FILE *loadPTDotConfig(void) { uint8_t i; char tmpFilename[16]; FILE *f; f = fopen("PT.Config", "rb"); // PT didn't read PT.Config with no number, but let's support it if (f == NULL) { for (i = 0; i < 99; ++i) { sprintf(tmpFilename, "PT.Config-%02d", i); f = fopen(tmpFilename, "rb"); if (f != NULL) break; } if (i == 99) return (NULL); } return (f); } int8_t loadConfig(void) { char cfgString[19], *configBuffer; uint8_t r, g, b, tmp8, iniConfigFound, ptConfigFound; uint16_t tmp16; int32_t lineLen; uint32_t configFileSize, i; FILE *configFile; // set standard config values first ptConfig.pattDots = false; ptConfig.dottedCenterFlag = true; ptConfig.a500LowPassFilter = false; ptConfig.soundFrequency = 48000; ptConfig.stereoSeparation = 15; ptConfig.videoScaleFactor = 2; ptConfig.blepSynthesis = true; ptConfig.realVuMeters = false; ptConfig.modDot = false; ptConfig.accidental = 0; // sharp ptConfig.quantizeValue = 1; ptConfig.transDel = false; ptConfig.blankZeroFlag = false; ptConfig.compoMode = false; ptConfig.soundBufferSize = 1024; ptConfig.vblankScopes = false; ptConfig.autoCloseDiskOp = true; memset(ptConfig.defaultDiskOpDir, 0, PATH_MAX_LEN + 1); iniConfigFound = false; #ifdef _WIN32 configFile = fopen("protracker.ini", "r"); if (configFile != NULL) iniConfigFound = true; #else // check in program directory configFile = fopen("protracker.ini", "r"); if (configFile != NULL) iniConfigFound = true; // check in ~/.protracker/ if (!iniConfigFound && changePathToHome() && (chdir(".protracker") == 0)) { configFile = fopen("protracker.ini", "r"); if (configFile != NULL) iniConfigFound = true; } #endif if (iniConfigFound) { fseek(configFile, 0, SEEK_END); configFileSize = ftell(configFile); rewind(configFile); configBuffer = (char *)(calloc(configFileSize + 1, 1)); if (configBuffer == NULL) { fclose(configFile); showErrorMsgBox("Out of memory!"); return (false); } fread(configBuffer, 1, configFileSize, configFile); fclose(configFile); configBuffer = strtok(configBuffer, "\n"); while (configBuffer != NULL) { lineLen = strlen(configBuffer); // remove CR in CRLF linefeed (if present) if (configBuffer[lineLen - 1] == '\r') { configBuffer[lineLen - 1] = '\0'; lineLen--; } // COMMENT OR CATEGORY if ((*configBuffer == ';') || (*configBuffer == '[')) { configBuffer = strtok(NULL, "\n"); continue; } // AUTOCLOSEDISKOP else if (strncmp(configBuffer, "AUTOCLOSEDISKOP=", 16) == 0) { if (strncmp(&configBuffer[16], "TRUE", 4) == 0) ptConfig.autoCloseDiskOp = true; else if (strncmp(&configBuffer[16], "FALSE", 5) == 0) ptConfig.autoCloseDiskOp = false; } // VBLANKSCOPES else if (strncmp(configBuffer, "VBLANKSCOPES=", 13) == 0) { if (strncmp(&configBuffer[13], "TRUE", 4) == 0) ptConfig.vblankScopes = true; else if (strncmp(&configBuffer[13], "FALSE", 5) == 0) ptConfig.vblankScopes = false; } // COMPOMODE else if (strncmp(configBuffer, "COMPOMODE=", 10) == 0) { if (strncmp(&configBuffer[10], "TRUE", 4) == 0) ptConfig.compoMode = true; else if (strncmp(&configBuffer[10], "FALSE", 5) == 0) ptConfig.compoMode = false; } // PATTDOTS else if (strncmp(configBuffer, "PATTDOTS=", 9) == 0) { if (strncmp(&configBuffer[9], "TRUE", 4) == 0) ptConfig.pattDots = true; else if (strncmp(&configBuffer[9], "FALSE", 5) == 0) ptConfig.pattDots = false; } // BLANKZERO else if (strncmp(configBuffer, "BLANKZERO=", 10) == 0) { if (strncmp(&configBuffer[10], "TRUE", 4) == 0) ptConfig.blankZeroFlag = true; else if (strncmp(&configBuffer[10], "FALSE", 5) == 0) ptConfig.blankZeroFlag = false; } // REALVUMETERS else if (strncmp(configBuffer, "REALVUMETERS=", 13) == 0) { if (strncmp(&configBuffer[13], "TRUE", 4) == 0) ptConfig.realVuMeters = true; else if (strncmp(&configBuffer[13], "FALSE", 5) == 0) ptConfig.realVuMeters = false; } // ACCIDENTAL else if (strncmp(configBuffer, "ACCIDENTAL=", 11) == 0) { if (strncmp(&configBuffer[11], "SHARP", 4) == 0) ptConfig.accidental = 0; else if (strncmp(&configBuffer[11], "FLAT", 5) == 0) ptConfig.accidental = 1; } // QUANTIZE else if (strncmp(configBuffer, "QUANTIZE=", 9) == 0) { if (configBuffer[9] != '\0') ptConfig.quantizeValue = (int16_t)(CLAMP(atoi(&configBuffer[9]), 0, 63)); } // TRANSDEL else if (strncmp(configBuffer, "TRANSDEL=", 9) == 0) { if (strncmp(&configBuffer[9], "TRUE", 4) == 0) ptConfig.transDel = true; else if (strncmp(&configBuffer[9], "FALSE", 5) == 0) ptConfig.transDel = false; } // DOTTEDCENTER else if (strncmp(configBuffer, "DOTTEDCENTER=", 13) == 0) { if (strncmp(&configBuffer[13], "TRUE", 4) == 0) ptConfig.dottedCenterFlag = true; else if (strncmp(&configBuffer[13], "FALSE", 5) == 0) ptConfig.dottedCenterFlag = false; } // MODDOT else if (strncmp(configBuffer, "MODDOT=", 7) == 0) { if (strncmp(&configBuffer[7], "TRUE", 4) == 0) ptConfig.modDot = true; else if (strncmp(&configBuffer[7], "FALSE", 5) == 0) ptConfig.modDot = false; } // SCALE3X (deprecated) else if (strncmp(configBuffer, "SCALE3X=", 8) == 0) { if (strncmp(&configBuffer[8], "TRUE", 4) == 0) ptConfig.videoScaleFactor = 3; else if (strncmp(&configBuffer[8], "FALSE", 5) == 0) ptConfig.videoScaleFactor = 2; } // VIDEOSCALE else if (strncmp(configBuffer, "VIDEOSCALE=", 11) == 0) { if (strncmp(&configBuffer[11], "1X", 2) == 0) ptConfig.videoScaleFactor = 1; else if (strncmp(&configBuffer[11], "2X", 2) == 0) ptConfig.videoScaleFactor = 2; else if (strncmp(&configBuffer[11], "3X", 2) == 0) ptConfig.videoScaleFactor = 3; else if (strncmp(&configBuffer[11], "4X", 2) == 0) ptConfig.videoScaleFactor = 4; else if (strncmp(&configBuffer[11], "5X", 2) == 0) ptConfig.videoScaleFactor = 5; else if (strncmp(&configBuffer[11], "6X", 2) == 0) ptConfig.videoScaleFactor = 6; else if (strncmp(&configBuffer[11], "7X", 2) == 0) ptConfig.videoScaleFactor = 7; else if (strncmp(&configBuffer[11], "8X", 2) == 0) ptConfig.videoScaleFactor = 8; else if (strncmp(&configBuffer[11], "9X", 2) == 0) ptConfig.videoScaleFactor = 9; } // BLEP else if (strncmp(configBuffer, "BLEP=", 5) == 0) { if (strncmp(&configBuffer[5], "TRUE", 4) == 0) ptConfig.blepSynthesis = true; else if (strncmp(&configBuffer[5], "FALSE", 5) == 0) ptConfig.blepSynthesis = false; } // DEFAULTDIR else if (strncmp(configBuffer, "DEFAULTDIR=", 11) == 0) { i = 11; while (configBuffer[i] == ' ') i++; // remove spaces before string (if present) while (configBuffer[lineLen - 1] == ' ') lineLen--; // remove spaces after string (if present) lineLen -= i; if (lineLen > 0) strncpy(ptConfig.defaultDiskOpDir, &configBuffer[i], (lineLen > PATH_MAX_LEN) ? PATH_MAX_LEN : lineLen); } // A500LOWPASSFILTER else if (strncmp(configBuffer, "A500LOWPASSFILTER=", 18) == 0) { if (strncmp(&configBuffer[18], "TRUE", 4) == 0) ptConfig.a500LowPassFilter = true; else if (strncmp(&configBuffer[18], "FALSE", 5) == 0) ptConfig.a500LowPassFilter = false; } // A4000LOWPASSFILTER (deprecated, same as A500LOWPASSFILTER) else if (strncmp(configBuffer, "A4000LOWPASSFILTER=", 19) == 0) { if (strncmp(&configBuffer[19], "TRUE", 4) == 0) ptConfig.a500LowPassFilter = true; else if (strncmp(&configBuffer[19], "FALSE", 5) == 0) ptConfig.a500LowPassFilter = false; } // FREQUENCY else if (strncmp(configBuffer, "FREQUENCY=", 10) == 0) { if (configBuffer[10] != '\0') ptConfig.soundFrequency = (uint32_t)(CLAMP(atoi(&configBuffer[10]), 32000, 96000)); } // BUFFERSIZE else if (strncmp(configBuffer, "BUFFERSIZE=", 11) == 0) { if (configBuffer[11] != '\0') ptConfig.soundBufferSize = (uint32_t)(CLAMP(atoi(&configBuffer[11]), 128, 8192)); } // STEREOSEPARATION else if (strncmp(configBuffer, "STEREOSEPARATION=", 17) == 0) { if (configBuffer[17] != '\0') ptConfig.stereoSeparation = (int8_t)(CLAMP(atoi(&configBuffer[17]), 0, 100)); } configBuffer = strtok(NULL, "\n"); } free(configBuffer); } editor.ui.pattDots = ptConfig.pattDots; editor.ui.dottedCenterFlag = ptConfig.dottedCenterFlag; editor.ui.videoScaleFactor = ptConfig.videoScaleFactor; editor.ui.realVuMeters = ptConfig.realVuMeters; editor.diskop.modDot = ptConfig.modDot; editor.blepSynthesis = ptConfig.blepSynthesis; editor.ui.blankZeroFlag = ptConfig.blankZeroFlag; editor.accidental = ptConfig.accidental; editor.quantizeValue = ptConfig.quantizeValue; editor.transDelFlag = ptConfig.transDel; editor.compoMode = ptConfig.compoMode; editor.oldTempo = editor.initialTempo; // Load PT.Config (if available) ptConfigFound = false; #ifdef _WIN32 configFile = loadPTDotConfig(); if (configFile != NULL) ptConfigFound = true; #else // check in program directory configFile = loadPTDotConfig(); if (configFile != NULL) ptConfigFound = true; // check in ~/.protracker/ if (!ptConfigFound && changePathToHome() && (chdir(".protracker") == 0)) { configFile = loadPTDotConfig(); if (configFile != NULL) ptConfigFound = true; } // set path to home now. changePathToHome(); #endif if (ptConfigFound) { fseek(configFile, 0, SEEK_END); configFileSize = ftell(configFile); if (configFileSize != 1024) { fclose(configFile); return (true); } fseek(configFile, 5, SEEK_SET); fread(cfgString, 1, 19, configFile); if (strncmp(cfgString, " Configuration File", 19)) { fclose(configFile); return (true); } // most likely a valid PT.Config, let's load settings // Palette fseek(configFile, 154, SEEK_SET); for (i = 0; i < 8; ++i) { fread(&tmp16, 2, 1, configFile); // stored as Big-Endian if (!bigEndian) tmp16 = SWAP16(tmp16); r = ((tmp16 & 0x0F00) >> 8) * 17; g = ((tmp16 & 0x00F0) >> 4) * 17; b = ((tmp16 & 0x000F) >> 0) * 17; palette[i] = (r << 16) | (g << 8) | b; } // Transpose Delete (delete out of range notes on transposing) fseek(configFile, 174, SEEK_SET); fread(&tmp8, 1, 1, configFile); ptConfig.transDel = tmp8 ? true : false; editor.transDelFlag = ptConfig.transDel; // Note style (sharps/flats) fseek(configFile, 200, SEEK_SET); fread(&tmp8, 1, 1, configFile); ptConfig.accidental = tmp8 ? 1 : 0; editor.accidental = ptConfig.accidental; // Multi Mode Next fseek(configFile, 462, SEEK_SET); fread(&editor.multiModeNext[0], 1, 1, configFile); fread(&editor.multiModeNext[1], 1, 1, configFile); fread(&editor.multiModeNext[2], 1, 1, configFile); fread(&editor.multiModeNext[3], 1, 1, configFile); // Effect Macros fseek(configFile, 466, SEEK_SET); for (i = 0; i < 10; ++i) { fread(&tmp16, 2, 1, configFile); // stored as Big-Endian if (!bigEndian) tmp16 = SWAP16(tmp16); editor.effectMacros[i] = tmp16; } // Timing Mode (CIA/VBLANK) fseek(configFile, 487, SEEK_SET); fread(&tmp8, 1, 1, configFile); editor.timingMode = tmp8 ? TEMPO_MODE_CIA : TEMPO_MODE_VBLANK; // Blank Zeroes fseek(configFile, 490, SEEK_SET); fread(&tmp8, 1, 1, configFile); ptConfig.blankZeroFlag = tmp8 ? true : false; editor.ui.blankZeroFlag = ptConfig.blankZeroFlag; // Initial Tempo (don't load if timing is set to VBLANK) if (editor.timingMode == TEMPO_MODE_CIA) { fseek(configFile, 497, SEEK_SET); fread(&tmp8, 1, 1, configFile); if (tmp8 < 32) tmp8 = 32; editor.initialTempo = tmp8; editor.oldTempo = tmp8; } // Tuning Tone Note fseek(configFile, 501, SEEK_SET); fread(&tmp8, 1, 1, configFile); if (tmp8 > 35) tmp8 = 35; editor.tuningNote = tmp8; // Tuning Tone Volume fseek(configFile, 503, SEEK_SET); fread(&tmp8, 1, 1, configFile); if (tmp8 > 64) tmp8 = 64; editor.tuningVol = tmp8; // Initial Speed fseek(configFile, 545, SEEK_SET); fread(&tmp8, 1, 1, configFile); if (editor.timingMode == TEMPO_MODE_VBLANK) { editor.initialSpeed = tmp8; } else { if (tmp8 > 0x20) tmp8 = 0x20; editor.initialSpeed = tmp8; } // VU-Meter Colors fseek(configFile, 546, SEEK_SET); for (i = 0; i < 48; ++i) { fread(&vuMeterColors[i], 2, 1, configFile); // stored as Big-Endian if (!bigEndian) vuMeterColors[i] = SWAP16(vuMeterColors[i]); } // Spectrum Analyzer Colors fseek(configFile, 642, SEEK_SET); for (i = 0; i < 36; ++i) { fread(&analyzerColors[i], 2, 1, configFile); // stored as Big-Endian if (!bigEndian) analyzerColors[i] = SWAP16(analyzerColors[i]); } fclose(configFile); } if (iniConfigFound || ptConfigFound) editor.configFound = true; return (true); } protracker-2.3d.r92/src/pt_modplayer.c0000644000000000000000000011351413235646501016453 0ustar rootroot// Very accurate C port of ProTracker 2.3D's replayer by 8bitbubsy, slightly modified. // Earlier versions of the PT clone used a completely different and less accurate replayer. #include #include #include #include #include #include "pt_header.h" #include "pt_audio.h" #include "pt_helpers.h" #include "pt_palette.h" #include "pt_tables.h" #include "pt_modloader.h" #include "pt_config.h" #include "pt_sampler.h" #include "pt_visuals.h" #include "pt_textout.h" #include "pt_terminal.h" #include "pt_scopes.h" extern int8_t forceMixerOff; // pt_audio.c static int8_t pBreakPosition, posJumpAssert, pBreakFlag, oldRow, modPattern; static uint8_t pattDelTime, setBPMFlag, updateUIPositions, lowMask = 0xFF; static uint8_t pattDelTime2, modHasBeenPlayed, oldSpeed; static int16_t modOrder, oldPattern, oldOrder; static uint16_t modBPM, oldBPM; void modSetSpeed(uint8_t speed) { editor.modSpeed = speed; modEntry->currSpeed = speed; editor.modTick = 0; } void doStopIt(void) { moduleChannel_t *c; uint8_t i; pattDelTime = 0; pattDelTime2 = 0; editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; editor.songPlaying = false; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); for (i = 0; i < AMIGA_VOICES; ++i) { c = &modEntry->channels[i]; c->n_wavecontrol = 0; c->n_glissfunk = 0; c->n_finetune = 0; c->n_loopcount = 0; } } void setPattern(int16_t pattern) { modPattern = pattern; if (modPattern > (MAX_PATTERNS - 1)) modPattern = MAX_PATTERNS - 1; modEntry->currPattern = modPattern; } void storeTempVariables(void) // this one is accessed in other files, so non-static { oldBPM = modEntry->currBPM; oldRow = modEntry->currRow; oldOrder = modEntry->currOrder; oldSpeed = modEntry->currSpeed; oldPattern = modEntry->currPattern; } static void setVUMeterHeight(moduleChannel_t *ch) { uint8_t vol; vol = ch->n_volume; if ((ch->n_cmd & 0x0F00) == 0x0C00) // handle Cxx effect vol = ch->n_cmd & 0xFF; if (vol > 64) vol = 64; if (!editor.muted[ch->n_chanindex]) editor.vuMeterVolumes[ch->n_chanindex] = vuMeterHeights[vol]; } static void updateFunk(moduleChannel_t *ch) { int8_t funkspeed; funkspeed = ch->n_glissfunk >> 4; if (funkspeed > 0) { ch->n_funkoffset += funkTable[funkspeed]; if (ch->n_funkoffset >= 128) { ch->n_funkoffset = 0; if ((ch->n_loopstart != NULL) && (ch->n_wavestart != NULL)) // SAFETY BUG FIX { if (++ch->n_wavestart >= (ch->n_loopstart + ch->n_replen)) ch->n_wavestart = ch->n_loopstart; *ch->n_wavestart = -1 - *ch->n_wavestart; } } } } static void setGlissControl(moduleChannel_t *ch) { ch->n_glissfunk = (ch->n_glissfunk & 0xF0) | (ch->n_cmd & 0x000F); } static void setVibratoControl(moduleChannel_t *ch) { ch->n_wavecontrol = (ch->n_wavecontrol & 0xF0) | (ch->n_cmd & 0x000F); } static void setFineTune(moduleChannel_t *ch) { ch->n_finetune = ch->n_cmd & 0x000F; } static void jumpLoop(moduleChannel_t *ch) { uint8_t tempParam; if (!editor.modTick) { if (!(ch->n_cmd & 0x000F)) { ch->n_pattpos = modEntry->row; } else { if (!ch->n_loopcount) { ch->n_loopcount = ch->n_cmd & 0x000F; } else { if (!--ch->n_loopcount) return; } pBreakPosition = ch->n_pattpos; pBreakFlag = 1; if (editor.isWAVRendering) { for (tempParam = pBreakPosition; tempParam <= modEntry->row; ++tempParam) editor.rowVisitTable[(modOrder * MOD_ROWS) + tempParam] = false; } } } } static void setTremoloControl(moduleChannel_t *ch) { ch->n_wavecontrol = ((ch->n_cmd & 0x000F) << 4) | (ch->n_wavecontrol & 0x0F); } static void karplusStrong(moduleChannel_t *ch) { (void)(ch); // this effect is horrible, I'm not implementing it. } static void doRetrg(moduleChannel_t *ch) { paulaSetData(ch->n_chanindex, ch->n_start); // n_start is increased on 9xx paulaSetLength(ch->n_chanindex, ch->n_length); paulaSetPeriod(ch->n_chanindex, ch->n_period); paulaRestartDMA(ch->n_chanindex); // these take effect after the current DMA cycle is done paulaSetData(ch->n_chanindex, ch->n_loopstart); paulaSetLength(ch->n_chanindex, ch->n_replen); updateSpectrumAnalyzer(ch->n_chanindex, ch->n_volume, ch->n_period); setVUMeterHeight(ch); } static void retrigNote(moduleChannel_t *ch) { if (ch->n_cmd & 0x000F) { if (!editor.modTick) { if (ch->n_note & 0x0FFF) return; } if (!(editor.modTick % (ch->n_cmd & 0x000F))) doRetrg(ch); } } static void volumeSlide(moduleChannel_t *ch) { uint8_t cmd; cmd = ch->n_cmd & 0x00FF; if (!(cmd & 0xF0)) { ch->n_volume -= (cmd & 0x0F); if (ch->n_volume < 0) ch->n_volume = 0; } else { ch->n_volume += (cmd >> 4); if (ch->n_volume > 64) ch->n_volume = 64; } } static void volumeFineUp(moduleChannel_t *ch) { if (!editor.modTick) { ch->n_volume += (ch->n_cmd & 0x000F); if (ch->n_volume > 64) ch->n_volume = 64; } } static void volumeFineDown(moduleChannel_t *ch) { if (!editor.modTick) { ch->n_volume -= (ch->n_cmd & 0x000F); if (ch->n_volume < 0) ch->n_volume = 0; } } static void noteCut(moduleChannel_t *ch) { if (editor.modTick == (ch->n_cmd & 0x000F)) ch->n_volume = 0; } static void noteDelay(moduleChannel_t *ch) { if (editor.modTick == (ch->n_cmd & 0x000F)) { if (ch->n_note & 0x0FFF) doRetrg(ch); } } static void patternDelay(moduleChannel_t *ch) { if (!editor.modTick) { if (!pattDelTime2) pattDelTime = (ch->n_cmd & 0x000F) + 1; } } static void funkIt(moduleChannel_t *ch) { if (!editor.modTick) { ch->n_glissfunk = ((ch->n_cmd & 0x000F) << 4) | (ch->n_glissfunk & 0x0F); if (ch->n_glissfunk & 0xF0) updateFunk(ch); } } static void positionJump(moduleChannel_t *ch) { modOrder = (ch->n_cmd & 0x00FF) - 1; // 0xFF (B00) jumps to pat 0 pBreakPosition = 0; posJumpAssert = 1; } static void volumeChange(moduleChannel_t *ch) { ch->n_volume = ch->n_cmd & 0x00FF; if ((uint8_t)(ch->n_volume) > 64) ch->n_volume = 64; } static void patternBreak(moduleChannel_t *ch) { pBreakPosition = (((ch->n_cmd & 0x00F0) >> 4) * 10) + (ch->n_cmd & 0x000F); if ((uint8_t)(pBreakPosition) > 63) pBreakPosition = 0; posJumpAssert = 1; } static void setSpeed(moduleChannel_t *ch) { if (ch->n_cmd & 0x00FF) { editor.modTick = 0; if ((editor.timingMode == TEMPO_MODE_VBLANK) || ((ch->n_cmd & 0x00FF) < 32)) modSetSpeed(ch->n_cmd & 0x00FF); else setBPMFlag = ch->n_cmd & 0x00FF; // CIA doesn't refresh its registers until the next interrupt, so change it later } else { editor.songPlaying = false; editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); } } static void arpeggio(moduleChannel_t *ch) { uint8_t i, dat; const int16_t *arpPointer; dat = editor.modTick % 3; if (!dat) { paulaSetPeriod(ch->n_chanindex, ch->n_period); } else { if (dat == 1) dat = (ch->n_cmd & 0x00F0) >> 4; else if (dat == 2) dat = ch->n_cmd & 0x000F; arpPointer = &periodTable[37 * ch->n_finetune]; for (i = 0; i < 37; ++i) { if (ch->n_period >= arpPointer[i]) { paulaSetPeriod(ch->n_chanindex, arpPointer[i + dat]); break; } } } } static void portaUp(moduleChannel_t *ch) { ch->n_period -= ((ch->n_cmd & 0x00FF) & lowMask); lowMask = 0xFF; if ((ch->n_period & 0x0FFF) < 113) ch->n_period = (ch->n_period & 0xF000) | 113; paulaSetPeriod(ch->n_chanindex, ch->n_period & 0x0FFF); } static void portaDown(moduleChannel_t *ch) { ch->n_period += ((ch->n_cmd & 0x00FF) & lowMask); lowMask = 0xFF; if ((ch->n_period & 0x0FFF) > 856) ch->n_period = (ch->n_period & 0xF000) | 856; paulaSetPeriod(ch->n_chanindex, ch->n_period & 0x0FFF); } static void filterOnOff(moduleChannel_t *ch) { setLEDFilter(!(ch->n_cmd & 0x0001)); } static void finePortaUp(moduleChannel_t *ch) { if (!editor.modTick) { lowMask = 0x0F; portaUp(ch); } } static void finePortaDown(moduleChannel_t *ch) { if (!editor.modTick) { lowMask = 0x0F; portaDown(ch); } } static void setTonePorta(moduleChannel_t *ch) { uint8_t i; const int16_t *portaPointer; uint16_t note; note = ch->n_note & 0x0FFF; portaPointer = &periodTable[37 * ch->n_finetune]; i = 0; for (;;) { // portaPointer[36] = 0, so i=36 is safe if (note >= portaPointer[i]) break; if (++i >= 37) { i = 35; break; } } if ((ch->n_finetune & 8) && i) i--; ch->n_wantedperiod = portaPointer[i]; ch->n_toneportdirec = 0; if (ch->n_period == ch->n_wantedperiod) ch->n_wantedperiod = 0; else if (ch->n_period > ch->n_wantedperiod) ch->n_toneportdirec = 1; } static void tonePortNoChange(moduleChannel_t *ch) { uint8_t i; const int16_t *portaPointer; if (ch->n_wantedperiod) { if (ch->n_toneportdirec) { ch->n_period -= ch->n_toneportspeed; if (ch->n_period <= ch->n_wantedperiod) { ch->n_period = ch->n_wantedperiod; ch->n_wantedperiod = 0; } } else { ch->n_period += ch->n_toneportspeed; if (ch->n_period >= ch->n_wantedperiod) { ch->n_period = ch->n_wantedperiod; ch->n_wantedperiod = 0; } } if (!(ch->n_glissfunk & 0x0F)) { paulaSetPeriod(ch->n_chanindex, ch->n_period); } else { portaPointer = &periodTable[37 * ch->n_finetune]; i = 0; for (;;) { // portaPointer[36] = 0, so i=36 is safe if (ch->n_period >= portaPointer[i]) break; if (++i >= 37) { i = 35; break; } } paulaSetPeriod(ch->n_chanindex, portaPointer[i]); } } } static void tonePortamento(moduleChannel_t *ch) { if (ch->n_cmd & 0x00FF) { ch->n_toneportspeed = ch->n_cmd & 0x00FF; ch->n_cmd &= 0xFF00; } tonePortNoChange(ch); } static void vibratoNoChange(moduleChannel_t *ch) { uint8_t vibratoTemp; int16_t vibratoData; vibratoTemp = (ch->n_vibratopos / 4) & 31; vibratoData = ch->n_wavecontrol & 3; if (!vibratoData) { vibratoData = vibratoTable[vibratoTemp]; } else { if (vibratoData == 1) { if (ch->n_vibratopos < 0) vibratoData = 255 - (vibratoTemp * 8); else vibratoData = vibratoTemp * 8; } else { vibratoData = 255; } } vibratoData = (vibratoData * (ch->n_vibratocmd & 0x0F)) / 128; if (ch->n_vibratopos < 0) vibratoData = ch->n_period - vibratoData; else vibratoData = ch->n_period + vibratoData; paulaSetPeriod(ch->n_chanindex, vibratoData); ch->n_vibratopos += ((ch->n_vibratocmd >> 4) * 4); } static void vibrato(moduleChannel_t *ch) { if (ch->n_cmd & 0x00FF) { if (ch->n_cmd & 0x000F) ch->n_vibratocmd = (ch->n_vibratocmd & 0xF0) | (ch->n_cmd & 0x000F); if (ch->n_cmd & 0x00F0) ch->n_vibratocmd = (ch->n_cmd & 0x00F0) | (ch->n_vibratocmd & 0x0F); } vibratoNoChange(ch); } static void tonePlusVolSlide(moduleChannel_t *ch) { tonePortNoChange(ch); volumeSlide(ch); } static void vibratoPlusVolSlide(moduleChannel_t *ch) { vibratoNoChange(ch); volumeSlide(ch); } static void tremolo(moduleChannel_t *ch) { int8_t tremoloTemp; int16_t tremoloData; if (ch->n_cmd & 0x00FF) { if (ch->n_cmd & 0x000F) ch->n_tremolocmd = (ch->n_tremolocmd & 0xF0) | (ch->n_cmd & 0x000F); if (ch->n_cmd & 0x00F0) ch->n_tremolocmd = (ch->n_cmd & 0x00F0) | (ch->n_tremolocmd & 0x0F); } tremoloTemp = (ch->n_tremolopos / 4) & 31; tremoloData = (ch->n_wavecontrol >> 4) & 3; if (!tremoloData) { tremoloData = vibratoTable[tremoloTemp]; } else { if (tremoloData == 1) { if (ch->n_vibratopos < 0) // PT bug, should've been n_tremolopos tremoloData = 255 - (tremoloTemp * 8); else tremoloData = tremoloTemp * 8; } else { tremoloData = 255; } } tremoloData = (tremoloData * (ch->n_tremolocmd & 0x0F)) / 64; if (ch->n_tremolopos < 0) { tremoloData = ch->n_volume - tremoloData; if (tremoloData < 0) tremoloData = 0; } else { tremoloData = ch->n_volume + tremoloData; if (tremoloData > 64) tremoloData = 64; } paulaSetVolume(ch->n_chanindex, tremoloData); ch->n_tremolopos += ((ch->n_tremolocmd >> 4) * 4); } static void sampleOffset(moduleChannel_t *ch) { uint16_t newOffset; if (ch->n_cmd & 0x00FF) ch->n_sampleoffset = ch->n_cmd & 0x00FF; newOffset = ch->n_sampleoffset * 256; if ((ch->n_length <= 65534) && (newOffset < ch->n_length)) { ch->n_length -= newOffset; ch->n_start += newOffset; } else { ch->n_length = 2; } } static void E_Commands(moduleChannel_t *ch) { switch ((ch->n_cmd & 0x00F0) >> 4) { case 0x00: filterOnOff(ch); break; case 0x01: finePortaUp(ch); break; case 0x02: finePortaDown(ch); break; case 0x03: setGlissControl(ch); break; case 0x04: setVibratoControl(ch); break; case 0x05: setFineTune(ch); break; case 0x06: jumpLoop(ch); break; case 0x07: setTremoloControl(ch); break; case 0x08: karplusStrong(ch); break; case 0x09: retrigNote(ch); break; case 0x0A: volumeFineUp(ch); break; case 0x0B: volumeFineDown(ch); break; case 0x0C: noteCut(ch); break; case 0x0D: noteDelay(ch); break; case 0x0E: patternDelay(ch); break; case 0x0F: funkIt(ch); break; default: break; } } static void checkMoreEffects(moduleChannel_t *ch) { switch ((ch->n_cmd & 0x0F00) >> 8) { case 0x09: sampleOffset(ch); break; case 0x0B: positionJump(ch); break; case 0x0D: patternBreak(ch); break; case 0x0E: E_Commands(ch); break; case 0x0F: setSpeed(ch); break; case 0x0C: volumeChange(ch); break; default: paulaSetPeriod(ch->n_chanindex, ch->n_period); break; } } static void checkEffects(moduleChannel_t *ch) { uint8_t effect; updateFunk(ch); effect = (ch->n_cmd & 0x0F00) >> 8; if (ch->n_cmd & 0x0FFF) { switch (effect) { case 0x00: arpeggio(ch); break; case 0x01: portaUp(ch); break; case 0x02: portaDown(ch); break; case 0x03: tonePortamento(ch); break; case 0x04: vibrato(ch); break; case 0x05: tonePlusVolSlide(ch); break; case 0x06: vibratoPlusVolSlide(ch); break; case 0x0E: E_Commands(ch); break; case 0x07: paulaSetPeriod(ch->n_chanindex, ch->n_period); tremolo(ch); break; case 0x0A: paulaSetPeriod(ch->n_chanindex, ch->n_period); volumeSlide(ch); break; default: paulaSetPeriod(ch->n_chanindex, ch->n_period); break; } } if (effect != 0x07) paulaSetVolume(ch->n_chanindex, ch->n_volume); } static void setPeriod(moduleChannel_t *ch) { uint8_t i; uint16_t note; note = ch->n_note & 0x0FFF; for (i = 0; i < 37; ++i) { // periodTable[36] = 0, so i=36 is safe if (note >= periodTable[i]) break; } // BUG: yes it's 'safe' if i=37 because of padding at the end of period table ch->n_period = periodTable[(37 * ch->n_finetune) + i]; if ((ch->n_cmd & 0x0FF0) != 0x0ED0) // no note delay { if (!(ch->n_wavecontrol & 0x04)) ch->n_vibratopos = 0; if (!(ch->n_wavecontrol & 0x40)) ch->n_tremolopos = 0; paulaSetLength(ch->n_chanindex, ch->n_length); paulaSetData(ch->n_chanindex, ch->n_start); if (ch->n_start == NULL) { ch->n_loopstart = NULL; paulaSetLength(ch->n_chanindex, 2); ch->n_replen = 2; } paulaSetPeriod(ch->n_chanindex, ch->n_period); paulaRestartDMA(ch->n_chanindex); updateSpectrumAnalyzer(ch->n_chanindex, ch->n_volume, ch->n_period); setVUMeterHeight(ch); } checkMoreEffects(ch); } static void checkMetronome(moduleChannel_t *ch, note_t *note) { if (editor.metroFlag && (editor.metroChannel > 0)) { if ((ch->n_chanindex == (editor.metroChannel - 1)) && ((modEntry->row % editor.metroSpeed) == 0)) { note->sample = 0x1F; note->period = (((modEntry->row / editor.metroSpeed) % editor.metroSpeed) == 0) ? 160 : 214; } } } static void playVoice(moduleChannel_t *ch) { uint8_t cmd; moduleSample_t *s; note_t note; if (!ch->n_note && !ch->n_cmd) paulaSetPeriod(ch->n_chanindex, ch->n_period); note = modEntry->patterns[modPattern][(modEntry->row * AMIGA_VOICES) + ch->n_chanindex]; checkMetronome(ch, ¬e); ch->n_note = note.period; ch->n_cmd = (note.command << 8) | note.param; if ((note.sample >= 1) && (note.sample <= 31)) // SAFETY BUG FIX: don't handle sample-numbers >31 { ch->n_samplenum = note.sample - 1; s = &modEntry->samples[ch->n_samplenum]; ch->n_start = &modEntry->sampleData[s->offset]; ch->n_finetune = s->fineTune; ch->n_volume = s->volume; ch->n_length = s->length; ch->n_replen = s->loopLength; if (s->loopStart > 0) { ch->n_loopstart = ch->n_start + s->loopStart; ch->n_wavestart = ch->n_loopstart; ch->n_length = s->loopStart + ch->n_replen; } else { ch->n_loopstart = ch->n_start; ch->n_wavestart = ch->n_start; } if (ch->n_length == 0) ch->n_loopstart = ch->n_wavestart = &modEntry->sampleData[RESERVED_SAMPLE_OFFSET]; // dummy sample } if (ch->n_note & 0x0FFF) { if ((ch->n_cmd & 0x0FF0) == 0x0E50) // set finetune { setFineTune(ch); setPeriod(ch); } else { cmd = (ch->n_cmd & 0x0F00) >> 8; if ((cmd == 0x03) || (cmd == 0x05)) { setVUMeterHeight(ch); setTonePorta(ch); checkMoreEffects(ch); } else if (cmd == 0x09) { checkMoreEffects(ch); setPeriod(ch); } else { setPeriod(ch); } } } else { checkMoreEffects(ch); } } static void nextPosition(void) { modEntry->row = pBreakPosition; pBreakPosition = 0; posJumpAssert = false; if ((editor.playMode != PLAY_MODE_PATTERN) || ((editor.currMode == MODE_RECORD) && (editor.recordMode != RECORD_PATT))) { if (editor.stepPlayEnabled) { doStopIt(); editor.stepPlayEnabled = false; editor.stepPlayBackwards = false; if (!editor.isWAVRendering && !editor.isSMPRendering) modEntry->currRow = modEntry->row; return; } modOrder = (modOrder + 1) & 0x7F; if (modOrder >= modEntry->head.orderCount) { modOrder = 0; modHasBeenPlayed = true; if (editor.compoMode) // stop song for music competitions playing { doStopIt(); turnOffVoices(); modEntry->currOrder = 0; modEntry->currRow = modEntry->row = 0; modEntry->currPattern = modPattern = modEntry->head.order[0]; editor.currPatternDisp = &modEntry->currPattern; editor.currPosEdPattDisp = &modEntry->currPattern; editor.currPatternDisp = &modEntry->currPattern; editor.currPosEdPattDisp = &modEntry->currPattern; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPos = true; editor.ui.updateSongPattern = true; editor.ui.updateCurrPattText = true; } } modPattern = modEntry->head.order[modOrder]; if (modPattern > (MAX_PATTERNS - 1)) modPattern = MAX_PATTERNS - 1; updateUIPositions = true; } } int8_t intMusic(void) { uint8_t i; int16_t *patt; moduleChannel_t *c; if (updateUIPositions) { updateUIPositions = false; if (!editor.isWAVRendering && !editor.isSMPRendering) { if (editor.playMode != PLAY_MODE_PATTERN) { modEntry->currOrder = modOrder; modEntry->currPattern = modPattern; patt = &modEntry->head.order[modOrder]; editor.currPatternDisp = patt; editor.currPosEdPattDisp = patt; editor.currPatternDisp = patt; editor.currPosEdPattDisp = patt; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPos = true; editor.ui.updateSongPattern = true; editor.ui.updateCurrPattText = true; } //editor.ui.updatePatternData = true; } } // PT quirk: CIA refreshes its timer values on the next interrupt, so do the real tempo change here if (setBPMFlag != 0) { modSetTempo(setBPMFlag); setBPMFlag = 0; } if (editor.isWAVRendering && (editor.modTick == 0)) editor.rowVisitTable[(modOrder * MOD_ROWS) + modEntry->row] = true; if (!editor.stepPlayEnabled) editor.modTick++; if ((editor.modTick >= editor.modSpeed) || editor.stepPlayEnabled) { editor.modTick = 0; if (!pattDelTime2) { for (i = 0; i < AMIGA_VOICES; ++i) { c = &modEntry->channels[i]; playVoice(c); paulaSetVolume(i, c->n_volume); // these take effect after the current DMA cycle is done paulaSetData(i, c->n_loopstart); paulaSetLength(i, c->n_replen); } } else { for (i = 0; i < AMIGA_VOICES; ++i) checkEffects(&modEntry->channels[i]); } if (!editor.isWAVRendering && !editor.isSMPRendering) { modEntry->currRow = modEntry->row; editor.ui.updatePatternData = true; } if (!editor.stepPlayBackwards) { modEntry->row++; modEntry->rowsCounter++; } if (pattDelTime) { pattDelTime2 = pattDelTime; pattDelTime = 0; } if (pattDelTime2) { pattDelTime2--; if (pattDelTime2) modEntry->row--; } if (pBreakFlag) { modEntry->row = pBreakPosition; pBreakPosition = 0; pBreakFlag = 0; } if (editor.blockMarkFlag) editor.ui.updateStatusText = true; if (editor.stepPlayEnabled) { doStopIt(); modEntry->currRow = modEntry->row & 0x3F; editor.ui.updatePatternData = true; editor.stepPlayEnabled = false; editor.stepPlayBackwards = false; editor.ui.updatePatternData = true; return (true); } if ((modEntry->row >= MOD_ROWS) || posJumpAssert) { if (editor.isSMPRendering) modHasBeenPlayed = true; nextPosition(); } if (editor.isWAVRendering && !pattDelTime2 && editor.rowVisitTable[(modOrder * MOD_ROWS) + modEntry->row]) modHasBeenPlayed = true; } else { for (i = 0; i < AMIGA_VOICES; ++i) checkEffects(&modEntry->channels[i]); if (posJumpAssert) nextPosition(); } if ((editor.isSMPRendering || editor.isWAVRendering) && modHasBeenPlayed && (editor.modTick == (editor.modSpeed - 1))) { modHasBeenPlayed = false; return (false); } return (true); } void modSetPattern(uint8_t pattern) { modPattern = pattern; modEntry->currPattern = modPattern; editor.ui.updateCurrPattText = true; } void modSetPos(int16_t order, int16_t row) { int16_t posEdPos; if (row != -1) { row = CLAMP(row, 0, 63); editor.modTick = 0; modEntry->row = (int8_t)(row); modEntry->currRow = (int8_t)(row); } if (order != -1) { if (order >= 0) { modOrder = order; modEntry->currOrder = order; editor.ui.updateSongPos = true; if ((editor.currMode == MODE_PLAY) && (editor.playMode == PLAY_MODE_NORMAL)) { modPattern = modEntry->head.order[order]; if (modPattern > (MAX_PATTERNS - 1)) modPattern = MAX_PATTERNS - 1; modEntry->currPattern = modPattern; editor.ui.updateCurrPattText = true; } editor.ui.updateSongPattern = true; editor.currPatternDisp = &modEntry->head.order[modOrder]; posEdPos = modEntry->currOrder; if (posEdPos > (modEntry->head.orderCount - 1)) posEdPos = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[posEdPos]; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } } editor.ui.updatePatternData = true; if (editor.blockMarkFlag) editor.ui.updateStatusText = true; } void modSetTempo(uint16_t bpm) { uint16_t ciaVal; float f_hz, f_smp; if (bpm > 0) { modBPM = bpm; if (!editor.isSMPRendering && !editor.isWAVRendering) { modEntry->currBPM = bpm; editor.ui.updateSongBPM = true; } ciaVal = 1773447 / bpm; // yes, truncate here f_hz = (float)(CIA_PAL_CLK) / ciaVal; if (editor.isSMPRendering) f_smp = (editor.pat2SmpHQ ? 28836.0f : 22168.0f) / f_hz; else f_smp = editor.outputFreq_f / f_hz; mixerSetSamplesPerTick((int32_t)(f_smp + 0.5f)); } } void modStop(void) { uint8_t i; moduleChannel_t *ch; editor.songPlaying = false; turnOffVoices(); for (i = 0; i < AMIGA_VOICES; ++i) { ch = &modEntry->channels[i]; ch->n_wavecontrol = 0; ch->n_glissfunk = 0; ch->n_finetune = 0; ch->n_loopcount = 0; } pBreakFlag = false; pattDelTime = 0; pattDelTime2 = 0; pBreakPosition = 0; posJumpAssert = false; modHasBeenPlayed = true; } void playPattern(int8_t startRow) { modEntry->row = startRow & 0x3F; modEntry->currRow = modEntry->row; editor.modTick = 0; editor.playMode = PLAY_MODE_PATTERN; editor.currMode = MODE_PLAY; editor.didQuantize = false; if (!editor.stepPlayEnabled) pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); editor.songPlaying = true; mixerClearSampleCounter(); } void incPatt(void) { if (++modPattern > (MAX_PATTERNS - 1)) modPattern = 0; modEntry->currPattern = modPattern; editor.ui.updatePatternData = true; editor.ui.updateCurrPattText = true; } void decPatt(void) { if (--modPattern < 0) modPattern = MAX_PATTERNS - 1; modEntry->currPattern = modPattern; editor.ui.updatePatternData = true; editor.ui.updateCurrPattText = true; } void modPlay(int16_t patt, int16_t order, int8_t row) { uint8_t oldPlayMode, oldMode; if (row != -1) { if ((row >= 0) && (row <= 63)) { modEntry->row = row; modEntry->currRow = row; } } else { modEntry->row = 0; modEntry->currRow = 0; } if (editor.playMode != PLAY_MODE_PATTERN) { if (modOrder >= modEntry->head.orderCount) { modOrder = 0; modEntry->currOrder = 0; } if ((order >= 0) && (order < modEntry->head.orderCount)) { modOrder = order; modEntry->currOrder = order; } if (order >= modEntry->head.orderCount) { modOrder = 0; modEntry->currOrder = 0; } } if ((patt >= 0) && (patt <= (MAX_PATTERNS - 1))) { modPattern = patt; modEntry->currPattern = patt; } else { modPattern = modEntry->head.order[modOrder]; modEntry->currPattern = modEntry->head.order[modOrder]; } editor.currPatternDisp = &modEntry->head.order[modOrder]; editor.currPosEdPattDisp = &modEntry->head.order[modOrder]; oldPlayMode = editor.playMode; oldMode = editor.currMode; doStopIt(); turnOffVoices(); editor.playMode = oldPlayMode; editor.currMode = oldMode; if (editor.playMode == PLAY_MODE_NORMAL) { editor.ticks50Hz = 0; editor.playTime = 0; } editor.modTick = editor.modSpeed; modHasBeenPlayed = false; editor.songPlaying = true; editor.didQuantize = false; if (!editor.isSMPRendering && !editor.isWAVRendering) { editor.ui.updateSongPos = true; editor.ui.updateSongTime = true; editor.ui.updatePatternData = true; editor.ui.updateSongPattern = true; editor.ui.updateCurrPattText = true; } mixerClearSampleCounter(); } void clearSong(void) { uint8_t i; moduleChannel_t *ch; if (modEntry != NULL) { memset(editor.ui.pattNames, 0, MAX_PATTERNS * 16); memset(modEntry->head.order, 0, sizeof (modEntry->head.order)); memset(modEntry->head.moduleTitle, 0, sizeof (modEntry->head.moduleTitle)); editor.muted[0] = false; editor.muted[1] = false; editor.muted[2] = false; editor.muted[3] = false; editor.f6Pos = 0; editor.f7Pos = 16; editor.f8Pos = 32; editor.f9Pos = 48; editor.f10Pos = 63; editor.playTime = 0; editor.ticks50Hz = 0; editor.metroFlag = false; editor.currSample = 0; editor.editMoveAdd = 1; editor.blockMarkFlag = false; editor.swapChannelFlag = false; modEntry->head.orderCount = 1; modEntry->head.patternCount = 1; for (i = 0; i < MAX_PATTERNS; ++i) memset(modEntry->patterns[i], 0, (MOD_ROWS * AMIGA_VOICES) * sizeof (note_t)); for (i = 0; i < AMIGA_VOICES; ++i) { ch = &modEntry->channels[i]; ch->n_wavecontrol = 0; ch->n_glissfunk = 0; ch->n_finetune = 0; ch->n_loopcount = 0; } modSetPos(0, 0); // this also refreshes pattern data modEntry->currOrder = 0; modEntry->currPattern = 0; editor.currPatternDisp = &modEntry->head.order[0]; editor.currPosEdPattDisp = &modEntry->head.order[0]; modSetTempo(editor.initialTempo); modSetSpeed(editor.initialSpeed); setLEDFilter(false); // real PT doesn't do this there, but that's insane updateCurrSample(); editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } } void clearSamples(void) { uint8_t i; moduleSample_t *s; if (modEntry != NULL) { for (i = 0; i < MOD_SAMPLES; ++i) { s = &modEntry->samples[i]; s->fineTune = 0; s->length = 0; s->loopLength = 2; s->loopStart = 0; s->volume = 0; memset(s->text, 0, sizeof (s->text)); } memset(modEntry->sampleData, 0, (MOD_SAMPLES + 1) * MAX_SAMPLE_LEN); editor.currSample = 0; editor.keypadSampleOffset = 0; editor.sampleZero = false; editor.ui.editOpScreenShown = false; editor.ui.aboutScreenShown = false; editor.blockMarkFlag = false; editor.samplePos = 0; updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); } } void clearAll(void) { if (modEntry != NULL) { clearSamples(); clearSong(); } } void modFree(void) { uint8_t i; if (modEntry != NULL) { for (i = 0; i < MAX_PATTERNS; ++i) { if (modEntry->patterns[i] != NULL) free(modEntry->patterns[i]); } if (modEntry->sampleData != NULL) free(modEntry->sampleData); free(modEntry); modEntry = NULL; } } uint8_t getSongProgressInPercentage(void) { return (uint8_t)((((float)(modEntry->rowsCounter) / modEntry->rowsInTotal) * 100.0f)); } void restartSong(void) // for the beginning of MOD2WAV/PAT2SMP { if (editor.songPlaying) modStop(); editor.playMode = PLAY_MODE_NORMAL; editor.blockMarkFlag = false; forceMixerOff = true; modEntry->row = 0; modEntry->currRow = 0; modEntry->rowsCounter = 0; memset(editor.rowVisitTable, 0, MOD_ORDERS * MOD_ROWS); // for MOD2WAV if (editor.isSMPRendering) { modPlay(DONT_SET_PATTERN, DONT_SET_ORDER, DONT_SET_ROW); } else { modEntry->currSpeed = 6; modEntry->currBPM = 125; modSetSpeed(6); modSetTempo(125); modPlay(DONT_SET_PATTERN, 0, 0); } } // this function is meant for the end of MOD2WAV/PAT2SMP void resetSong(void) // only call this after storeTempVariables() has been called! { uint8_t i; moduleChannel_t *ch; modStop(); editor.songPlaying = false; editor.playMode = PLAY_MODE_NORMAL; editor.currMode = MODE_IDLE; turnOffVoices(); memset((int8_t *)(editor.vuMeterVolumes), 0, sizeof (editor.vuMeterVolumes)); memset((float *)(editor.realVuMeterVolumes),0, sizeof (editor.realVuMeterVolumes)); memset((int8_t *)(editor.spectrumVolumes), 0, sizeof (editor.spectrumVolumes)); memset(modEntry->channels, 0, sizeof (modEntry->channels)); for (i = 0; i < AMIGA_VOICES; ++i) { ch = &modEntry->channels[i]; ch->n_chanindex = i; ch->n_start = NULL; ch->n_wavestart = NULL; ch->n_loopstart = NULL; } modOrder = oldOrder; modPattern = oldPattern; modEntry->row = oldRow; modEntry->currRow = oldRow; modEntry->currBPM = oldBPM; modEntry->currOrder = oldOrder; modEntry->currPattern = oldPattern; editor.currPosDisp = &modEntry->currOrder; editor.currEditPatternDisp = &modEntry->currPattern; editor.currPatternDisp = &modEntry->head.order[modEntry->currOrder]; editor.currPosEdPattDisp = &modEntry->head.order[modEntry->currOrder]; modSetSpeed(oldSpeed); modSetTempo(oldBPM); doStopIt(); editor.modTick = 0; modHasBeenPlayed = false; forceMixerOff = false; } protracker-2.3d.r92/src/pt_dirent.c0000644000000000000000000000435613235646515015754 0ustar rootroot/* This is a very crude implementation of dirent for Windows. ** It only has the features I need for this program. */ #ifdef _WIN32 // this file is for Windows only #define WIN32_LEAN_AND_MEAN #include #include #include #include #include #include "pt_dirent.h" #include "pt_unicode.h" DIR *opendir(UNICHAR *name) { UNICHAR path[FILENAME_MAX]; DIR *dirp; if (UNICHAR_STRLEN(name) > (FILENAME_MAX - 3)) return (NULL); dirp = (DIR *)(malloc(sizeof (struct DIR))); if (dirp == NULL) return (NULL); if (GetFullPathNameW(name, FILENAME_MAX - 3, path, NULL) == 0) { free(dirp); return (NULL); } UNICHAR_STRCAT(path, L"\\*"); // append '\*' to end of path dirp->fHandle = FindFirstFileW(path, &dirp->fData); if (dirp->fHandle == INVALID_HANDLE_VALUE) { free(dirp); return (NULL); } return (dirp); } struct dirent *readdir(DIR *dirp) { SYSTEMTIME stUTC; if ((dirp == NULL) || (dirp->fHandle == NULL)) return (NULL); if (FindNextFileW(dirp->fHandle, &dirp->fData) == 0) { FindClose(dirp->fHandle); dirp->fHandle = NULL; return (NULL); } UNICHAR_STRCPY(dirp->fd.d_name, dirp->fData.cFileName); dirp->fd.d_namlen = (uint16_t)(UNICHAR_STRLEN(dirp->fd.d_name)); dirp->fd.d_type = (dirp->fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? DT_DIR : DT_REG; dirp->fd.d_size = (dirp->fData.nFileSizeHigh > 0) ? 0xFFFFFFFF : dirp->fData.nFileSizeLow; if (dirp->fd.d_type == DT_REG) { FileTimeToSystemTime(&dirp->fData.ftLastWriteTime, &stUTC); // we want to be ABSOLUTELY sure that this doesn't overflow in ANY circumstance, hence unneeded modulus on day/month sprintf(dirp->fd.lastModDate, "%02d%02d%02d", stUTC.wDay % (99 + 1), stUTC.wMonth % (99 + 1), stUTC.wYear % (99 + 1)); } return (&dirp->fd); } int32_t closedir(DIR *dirp) { if (dirp == NULL) return (-1); if (dirp->fHandle != NULL) { FindClose(dirp->fHandle); dirp->fHandle = NULL; } free(dirp); return (0); } #endif protracker-2.3d.r92/src/pt_dirent.h0000644000000000000000000000136313235646475015761 0ustar rootroot#ifndef __PT_DIRENT_H #define __PT_DIRENT_H #include #include #include #ifdef _WIN32 #include #include #ifndef FILENAME_MAX #define FILENAME_MAX 260 #endif #ifndef DT_DIR #define DT_DIR 0x00 #define DT_REG 0x10 #endif #include "pt_unicode.h" typedef struct dirent { UNICHAR d_name[FILENAME_MAX]; uint16_t d_namlen; uint32_t d_type; #ifdef _WIN32 uint32_t d_size; char lastModDate[6 + 1]; #endif } dirent; typedef struct DIR { dirent fd; HANDLE fHandle; WIN32_FIND_DATAW fData; } DIR; DIR *opendir(UNICHAR *name); struct dirent *readdir(DIR *dirp); int32_t closedir(DIR *dirp); #else #include #endif #endif protracker-2.3d.r92/src/pt_modloader.h0000644000000000000000000000061613235646516016436 0ustar rootroot#ifndef __PT_MODLOADER_H #define __PT_MODLOADER_H #include #include "pt_header.h" #include "pt_unicode.h" module_t *createNewMod(void); int8_t saveModule(int8_t checkIfFileExist, int8_t giveNewFreeFilename); int8_t modSave(char *fileName); module_t *modLoad(UNICHAR *fileName); void setupNewMod(void); void diskOpLoadFile(uint32_t fileEntryRow); // pt_mouse.c #endif protracker-2.3d.r92/src/pt_scopes.h0000644000000000000000000000077713235646476016001 0ustar rootroot#ifndef __PT_SCOPES_H #define __PT_SCOPES_H #include typedef struct scopeChannel_t { volatile uint8_t active, retriggered, didSwapData; int8_t volume, loopFlag, newLoopFlag; int32_t length, newLength, phase, loopStart, newLoopStart; const int8_t *newData, *data; float delta_f, frac_f; } scopeChannel_t; extern scopeChannel_t scope[4]; void updateScopes(void); void drawScopes(void); int32_t scopeThreadFunc(void *ptr); uint8_t initScopes(void); #endif protracker-2.3d.r92/src/COPYING.txt0000644000000000000000000000076213235646475015473 0ustar rootroot DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO. protracker-2.3d.r92/src/protracker.rc0000644000000000000000000000151613235646501016310 0ustar rootroot#include VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS VS_FF_PRERELEASE FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "FileDescription", "ProTracker v2.3D clone for Windows" VALUE "ProductName", "ProTracker" VALUE "ProductVersion", "1.0" VALUE "InternalName", "ProTracker" VALUE "LegalCopyright", "Public domain" VALUE "OriginalFilename", "protracker.exe" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x4090, 1200 END END IDI_MAIN_ICON ICON "gfx/protracker.ico" protracker-2.3d.r92/src/pt_sampleloader.c0000644000000000000000000013741013235646500017127 0ustar rootroot#include #include #include #include #include #include // round()/roundf() #include // tolower()/toupper() #ifdef _WIN32 #include #else #include #endif #include #include #include #include "pt_header.h" #include "pt_textout.h" #include "pt_palette.h" #include "pt_sampler.h" #include "pt_audio.h" #include "pt_sampleloader.h" #include "pt_visuals.h" #include "pt_helpers.h" #include "pt_terminal.h" #include "pt_unicode.h" enum { WAV_FORMAT_PCM = 0x0001, WAV_FORMAT_IEEE_FLOAT = 0x0003 }; static int8_t loadWAVSample(UNICHAR *fileName, char *entryName, int8_t forceDownSampling); static int8_t loadIFFSample(UNICHAR *fileName, char *entryName); static int8_t loadRAWSample(UNICHAR *fileName, char *entryName); // 16-bit arithmetic shift right by 1 #if defined (__APPLE__) || defined (_WIN32) #define m68000_asr_w_1(x) ((x) >> 1) #else static inline int16_t m68000_asr_w_1(int16_t x) { if (x < 0) x = 0x8000 | ((uint16_t)(x) >> 1); // 0x8000 = 2^16 - 2^(16-1) else x >>= 1; return (x); } #endif // 32-bit arithmetic shift right by 1 #if defined (__APPLE__) || defined (_WIN32) #define m68000_asr_l_1(x) ((x) >> 1) #else static inline int32_t m68000_asr_l_1(int32_t x) { if (x < 0) x = 0x80000000 | ((uint32_t)(x) >> 1); // 0x80000000 = 2^32 - 2^(32-1) else x >>= 1; return (x); } #endif void extLoadWAVSampleCallback(int8_t downsample) { loadWAVSample(editor.fileNameTmp, editor.entryNameTmp, downsample); } int8_t loadWAVSample(UNICHAR *fileName, char *entryName, int8_t forceDownSampling) { /* ** - Supports 8-bit, 16-bit, 24-bit, 32-bit, 32-bit float ** - Supports additional "INAM", "smpl" and "xtra" chunks ** - Stereo is downmixed to mono ** - >8-bit is quantized to 8-bit ** - pre-"2x downsampling" (if wanted by the user) */ uint8_t *audioDataU8, wavSampleNameFound; int16_t *audioDataS16, tempVol, smp16; uint16_t audioFormat, numChannels, bitsPerSample; int32_t *audioDataS32, smp32, smp32_l, smp32_r; uint32_t *audioDataU32, i, nameLen, chunkID, chunkSize; uint32_t sampleLength, sampleRate, filesize, loopFlags; uint32_t loopStart, loopEnd, dataPtr, dataLen, fmtPtr, endOfChunk, bytesRead; uint32_t fmtLen, inamPtr, inamLen, smplPtr, smplLen, xtraPtr, xtraLen; float *audioDataFloat, smp_f; FILE *f; moduleSample_t *s; // zero out chunk pointers and lengths fmtPtr = 0; fmtLen = 0; dataPtr = 0; dataLen = 0; inamPtr = 0; inamLen = 0; xtraPtr = 0; xtraLen = 0; smplPtr = 0; smplLen = 0; wavSampleNameFound = false; s = &modEntry->samples[editor.currSample]; if (forceDownSampling == -1) { // these two *must* be fully wiped, for outputting reasons memset(editor.fileNameTmp, 0, PATH_MAX_LEN); memset(editor.entryNameTmp, 0, PATH_MAX_LEN); UNICHAR_STRCPY(editor.fileNameTmp, fileName); strcpy(editor.entryNameTmp, entryName); } f = UNICHAR_FOPEN(fileName, "rb"); if (f == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("WAV sample loading failed: file input/output error\n"); return (false); } fseek(f, 0, SEEK_END); filesize = ftell(f); if (filesize == 0) { displayErrorMsg("NOT A WAV !"); terminalPrintf("WAV sample loading failed: not a valid .WAV\n"); fclose(f); return (false); } // look for wanted chunks and set up pointers + lengths fseek(f, 12, SEEK_SET); bytesRead = 0; while (!feof(f) && (bytesRead < (filesize - 12))) { fread(&chunkID, 4, 1, f); if (feof(f)) break; fread(&chunkSize, 4, 1, f); if (feof(f)) break; if (bigEndian) chunkID = SWAP32(chunkID); if (bigEndian) chunkSize = SWAP32(chunkSize); endOfChunk = (ftell(f) + chunkSize) + (chunkSize & 1); switch (chunkID) { case 0x20746D66: // "fmt " { fmtPtr = ftell(f); fmtLen = chunkSize; } break; case 0x61746164: // "data" { dataPtr = ftell(f); dataLen = chunkSize; } break; case 0x5453494C: // "LIST" { if (chunkSize >= 4) { fread(&chunkID, 4, 1, f); if (bigEndian) chunkID = SWAP32(chunkID); if (chunkID == 0x4F464E49) // "INFO" { bytesRead = 0; while (!feof(f) && (bytesRead < chunkSize)) { fread(&chunkID, 4, 1, f); if (bigEndian) chunkID = SWAP32(chunkID); fread(&chunkSize, 4, 1, f); if (bigEndian) chunkSize = SWAP32(chunkSize); switch (chunkID) { case 0x4D414E49: // "INAM" { inamPtr = ftell(f); inamLen = chunkSize; } break; default: break; } bytesRead += (chunkSize + (chunkSize & 1)); } } } } break; case 0x61727478: // "xtra" { xtraPtr = ftell(f); xtraLen = chunkSize; } break; case 0x6C706D73: // "smpl" { smplPtr = ftell(f); smplLen = chunkSize; } break; default: break; } bytesRead += (chunkSize + (chunkSize & 1)); fseek(f, endOfChunk, SEEK_SET); } // we need at least "fmt " and "data" - check if we found them sanely if (((fmtPtr == 0) || (fmtLen < 16)) || ((dataPtr == 0) || (dataLen == 0))) { displayErrorMsg("NOT A WAV !"); terminalPrintf("WAV sample loading failed: not a valid .WAV\n"); fclose(f); return (false); } // ---- READ "fmt " CHUNK ---- fseek(f, fmtPtr, SEEK_SET); fread(&audioFormat, 2, 1, f); if (bigEndian) audioFormat = SWAP16(audioFormat); fread(&numChannels, 2, 1, f); if (bigEndian) numChannels = SWAP16(numChannels); fread(&sampleRate, 4, 1, f); if (bigEndian) sampleRate = SWAP32(sampleRate); fseek(f, 6, SEEK_CUR); // unneeded fread(&bitsPerSample, 2, 1, f); if (bigEndian) bitsPerSample = SWAP16(bitsPerSample); sampleLength = dataLen; // --------------------------- if ((sampleRate == 0) || (sampleLength == 0) || (sampleLength >= (filesize * (bitsPerSample / 8)))) { displayErrorMsg("WAV CORRUPT !"); terminalPrintf("WAV sample loading failed: corrupt WAV file\n"); fclose(f); return (false); } if ((audioFormat != WAV_FORMAT_PCM) && (audioFormat != WAV_FORMAT_IEEE_FLOAT)) { displayErrorMsg("WAV UNSUPPORTED !"); terminalPrintf("WAV sample loading failed: unsupported type (not PCM integer or PCM float)\n"); fclose(f); return (false); } if ((numChannels == 0) || (numChannels > 2)) { displayErrorMsg("WAV UNSUPPORTED !"); terminalPrintf("WAV sample loading failed: unsupported type (doesn't have 1 or 2 channels)\n"); fclose(f); return (false); } if ((audioFormat == WAV_FORMAT_IEEE_FLOAT) && (bitsPerSample != 32)) { displayErrorMsg("WAV UNSUPPORTED !"); terminalPrintf("WAV sample loading failed: unsupported type (not 8-bit, 16-bit, 24-bit, 32-bit or 32-bit float)\n"); fclose(f); return (false); } if ((bitsPerSample != 8) && (bitsPerSample != 16) && (bitsPerSample != 24) && (bitsPerSample != 32)) { displayErrorMsg("WAV UNSUPPORTED !"); terminalPrintf("WAV sample loading failed: unsupported type (not 8-bit, 16-bit, 24-bit, 32-bit or 32-bit float)\n"); fclose(f); return (false); } if (sampleRate > 22050) { if (forceDownSampling == -1) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_DOWNSAMPLING; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("2X DOWNSAMPLING ?", NO_CARRY); renderAskDialog(); fclose(f); return (true); } } else { forceDownSampling = false; } // ---- READ SAMPLE DATA ---- fseek(f, dataPtr, SEEK_SET); if (bitsPerSample == 8) // 8-BIT INTEGER SAMPLE { if (sampleLength > (MAX_SAMPLE_LEN * 4)) sampleLength = MAX_SAMPLE_LEN * 4; audioDataU8 = (uint8_t *)(malloc(sampleLength * sizeof (uint8_t))); if (audioDataU8 == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("WAV sample loading failed: out of memory!\n"); return (false); } // read sample data if (fread(audioDataU8, 1, sampleLength, f) != sampleLength) { fclose(f); free(audioDataU8); displayErrorMsg("I/O ERROR !"); terminalPrintf("WAV sample loading failed: I/O error!\n"); return (false); } // convert from stereo to mono (if needed) if (numChannels == 2) { sampleLength /= 2; // add right channel to left channel for (i = 0; i < (sampleLength - 1); i++) { smp16 = (audioDataU8[(i * 2) + 0] - 128) + (audioDataU8[(i * 2) + 1] - 128); smp16 = 128 + m68000_asr_w_1(smp16); audioDataU8[i] = (uint8_t)(smp16); } } // 2x downsampling - remove every other sample (if needed) if (forceDownSampling) { sampleLength /= 2; for (i = 1; i < sampleLength; i++) audioDataU8[i] = audioDataU8[i * 2]; } if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; turnOffVoices(); for (i = 0; i < MAX_SAMPLE_LEN; ++i) { if (i <= (sampleLength & 0xFFFFFFFE)) modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = audioDataU8[i] - 128; else modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = 0; } free(audioDataU8); } else if (bitsPerSample == 16) // 16-BIT INTEGER SAMPLE { sampleLength /= 2; if (sampleLength > (MAX_SAMPLE_LEN * 4)) sampleLength = MAX_SAMPLE_LEN * 4; audioDataS16 = (int16_t *)(malloc(sampleLength * sizeof (int16_t))); if (audioDataS16 == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("WAV sample loading failed: out of memory!\n"); return (false); } // read sample data if (fread(audioDataS16, 2, sampleLength, f) != sampleLength) { fclose(f); free(audioDataS16); displayErrorMsg("I/O ERROR !"); terminalPrintf("WAV sample loading failed: I/O error!\n"); return (false); } // convert endianness (if needed) if (bigEndian) { for (i = 0; i < sampleLength; ++i) audioDataS16[i] = SWAP16(audioDataS16[i]); } // convert from stereo to mono (if needed) if (numChannels == 2) { sampleLength /= 2; // add right channel to left channel for (i = 0; i < (sampleLength - 1); i++) { smp32 = audioDataS16[(i * 2) + 0] + audioDataS16[(i * 2) + 1]; smp32 = m68000_asr_l_1(smp32); audioDataS16[i] = (int16_t)(smp32); } } // 2x downsampling - remove every other sample (if needed) if (forceDownSampling) { sampleLength /= 2; for (i = 1; i < sampleLength; i++) audioDataS16[i] = audioDataS16[i * 2]; } if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; normalize16bitSigned(audioDataS16, sampleLength); turnOffVoices(); for (i = 0; i < MAX_SAMPLE_LEN; ++i) { if (i <= (sampleLength & 0xFFFFFFFE)) modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = quantize16bitTo8bit(audioDataS16[i]); else modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = 0; } free(audioDataS16); } else if (bitsPerSample == 24) // 24-BIT INTEGER SAMPLE { sampleLength /= (4 - 1); if (sampleLength > (MAX_SAMPLE_LEN * 4)) sampleLength = MAX_SAMPLE_LEN * 4; audioDataS32 = (int32_t *)(malloc(sampleLength * sizeof (int32_t))); if (audioDataS32 == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("WAV sample loading failed: out of memory!\n"); return (false); } // read sample data audioDataU8 = (uint8_t *)(audioDataS32); for (i = 0; i < sampleLength; i++) { audioDataU8[0] = 0; fread(&audioDataU8[1], 3, 1, f); audioDataU8 += sizeof (int32_t); } // convert endianness (if needed) if (bigEndian) { for (i = 0; i < sampleLength; ++i) audioDataS32[i] = SWAP32(audioDataS32[i]); } // convert from stereo to mono (if needed) if (numChannels == 2) { sampleLength /= 2; // add right channel to left channel for (i = 0; i < (sampleLength - 1); i++) { smp32_l = audioDataS32[(i * 2) + 0]; smp32_r = audioDataS32[(i * 2) + 1]; smp32_l = m68000_asr_l_1(smp32_l); smp32_r = m68000_asr_l_1(smp32_r); audioDataS32[i] = smp32_l + smp32_r; } } // 2x downsampling - remove every other sample (if needed) if (forceDownSampling) { sampleLength /= 2; for (i = 1; i < sampleLength; i++) audioDataS32[i] = audioDataS32[i * 2]; } if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; normalize24bitSigned(audioDataS32, sampleLength); turnOffVoices(); for (i = 0; i < MAX_SAMPLE_LEN; ++i) { if (i <= (sampleLength & 0xFFFFFFFE)) modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = quantize24bitTo8bit(audioDataS32[i]); else modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = 0; } free(audioDataS32); } else if ((audioFormat == WAV_FORMAT_PCM) && (bitsPerSample == 32)) // 32-BIT INTEGER SAMPLE { sampleLength /= 4; if (sampleLength > (MAX_SAMPLE_LEN * 4)) sampleLength = MAX_SAMPLE_LEN * 4; audioDataS32 = (int32_t *)(malloc(sampleLength * sizeof (int32_t))); if (audioDataS32 == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("WAV sample loading failed: out of memory!\n"); return (false); } // read sample data if (fread(audioDataS32, 4, sampleLength, f) != sampleLength) { fclose(f); free(audioDataS32); displayErrorMsg("I/O ERROR !"); terminalPrintf("WAV sample loading failed: I/O error!\n"); return (false); } // convert endianness (if needed) if (bigEndian) { for (i = 0; i < sampleLength; ++i) audioDataS32[i] = SWAP32(audioDataS32[i]); } // convert from stereo to mono (if needed) if (numChannels == 2) { sampleLength /= 2; // add right channel to left channel for (i = 0; i < (sampleLength - 1); i++) { smp32_l = audioDataS32[(i * 2) + 0]; smp32_r = audioDataS32[(i * 2) + 1]; smp32_l = m68000_asr_l_1(smp32_l); smp32_r = m68000_asr_l_1(smp32_r); audioDataS32[i] = smp32_l + smp32_r; } } // 2x downsampling - remove every other sample (if needed) if (forceDownSampling) { sampleLength /= 2; for (i = 1; i < sampleLength; i++) audioDataS32[i] = audioDataS32[i * 2]; } if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; normalize32bitSigned(audioDataS32, sampleLength); turnOffVoices(); for (i = 0; i < MAX_SAMPLE_LEN; ++i) { if (i <= (sampleLength & 0xFFFFFFFE)) modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = quantize32bitTo8bit(audioDataS32[i]); else modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = 0; } free(audioDataS32); } else if ((audioFormat == WAV_FORMAT_IEEE_FLOAT) && (bitsPerSample == 32)) // 32-BIT FLOAT SAMPLE { sampleLength /= 4; if (sampleLength > (MAX_SAMPLE_LEN * 4)) sampleLength = MAX_SAMPLE_LEN * 4; audioDataU32 = (uint32_t *)(malloc(sampleLength * sizeof (uint32_t))); if (audioDataU32 == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("WAV sample loading failed: out of memory!\n"); return (false); } // read sample data if (fread(audioDataU32, 4, sampleLength, f) != sampleLength) { fclose(f); free(audioDataU32); displayErrorMsg("I/O ERROR !"); terminalPrintf("WAV sample loading failed: I/O error!\n"); return (false); } // convert endianness (if needed) if (bigEndian) { for (i = 0; i < sampleLength; ++i) audioDataU32[i] = SWAP32(audioDataU32[i]); } audioDataFloat = (float *)(audioDataU32); // convert from stereo to mono (if needed) if (numChannels == 2) { sampleLength /= 2; // add right channel to left channel (this is uncorrect, but Good Enough) for (i = 0; i < (sampleLength - 1); i++) { smp_f = (audioDataFloat[(i * 2) + 0] / 2.0f) + (audioDataFloat[(i * 2) + 1] / 2.0f); audioDataFloat[i] = CLAMP(smp_f, -1.0f, 1.0f); } } // 2x downsampling - remove every other sample (if needed) if (forceDownSampling) { sampleLength /= 2; for (i = 1; i < sampleLength; i++) audioDataFloat[i] = audioDataFloat[i * 2]; } if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; normalize8bitFloatSigned(audioDataFloat, sampleLength); turnOffVoices(); for (i = 0; i < MAX_SAMPLE_LEN; ++i) { if (i <= (sampleLength & 0xFFFFFFFE)) modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = quantizeFloatTo8bit(audioDataFloat[i]); else modEntry->sampleData[(editor.currSample * MAX_SAMPLE_LEN) + i] = 0; } free(audioDataU32); } // set sample length if (sampleLength & 1) { if (++sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; } s->length = sampleLength; s->fineTune = 0; s->volume = 64; s->loopStart = 0; s->loopLength = 2; // ---- READ "smpl" chunk ---- if ((smplPtr != 0) && (smplLen > 52)) { fseek(f, smplPtr + 28, SEEK_SET); // seek to first wanted byte fread(&loopFlags, 4, 1, f); if (bigEndian) loopFlags = SWAP32(loopFlags); fseek(f, 12, SEEK_CUR); fread(&loopStart, 4, 1, f); if (bigEndian) loopStart = SWAP32(loopStart); fread(&loopEnd, 4, 1, f); if (bigEndian) loopEnd = SWAP32(loopEnd); loopEnd++; if (forceDownSampling) { // we already downsampled 2x, so we're half the original length loopStart /= 2; loopEnd /= 2; } loopStart &= 0xFFFFFFFE; loopEnd &= 0xFFFFFFFE; if (loopFlags) { if (loopEnd <= sampleLength) { s->loopStart = loopStart; s->loopLength = loopEnd - loopStart; } } } // --------------------------- // ---- READ "xtra" chunk ---- if ((xtraPtr != 0) && (xtraLen >= 8)) { fseek(f, xtraPtr + 4, SEEK_SET); // seek to first wanted byte // volume (0..256) fseek(f, 2, SEEK_CUR); fread(&tempVol, 2, 1, f); if (bigEndian) tempVol = SWAP16(tempVol); s->volume = (int8_t)((CLAMP(tempVol, 0, 256) * (64.0f / 256.0f)) + 0.5f); } // --------------------------- // ---- READ "INAM" chunk ---- if ((inamPtr != 0) && (inamLen > 0)) { fseek(f, inamPtr, SEEK_SET); // seek to first wanted byte for (i = 0; i < 21; ++i) { if (i < inamLen) s->text[i] = (char)(toupper(fgetc(f))); else s->text[i] = '\0'; } s->text[21] = '\0'; s->text[22] = '\0'; wavSampleNameFound = true; } // --------------------------- fclose(f); // copy over sample name if (!wavSampleNameFound) { nameLen = strlen(entryName); for (i = 0; i < 21; ++i) s->text[i] = (i < nameLen) ? toupper(entryName[i]) : '\0'; s->text[21] = '\0'; s->text[22] = '\0'; } // remove .wav from end of sample name (if present) nameLen = strlen(s->text); if ((nameLen >= 4) && !strncmp(&s->text[nameLen - 4], ".WAV", 4)) memset(&s->text[nameLen - 4], '\0', 4); editor.sampleZero = false; editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); fillSampleRedoBuffer(editor.currSample); terminalPrintf("WAV sample \"%s\" loaded to slot %02x\n", s->text, editor.currSample + 1); updateWindowTitle(MOD_IS_MODIFIED); return (true); } int8_t loadIFFSample(UNICHAR *fileName, char *entryName) { char tmpCharBuf[23]; int8_t *sampleData; uint8_t nameFound, is16Bit; int16_t sample16, *ptr16; int32_t filesize; uint32_t i, sampleLength, sampleLoopStart, sampleLoopLength; uint32_t sampleVolume, blockName, blockSize; uint32_t vhdrPtr, vhdrLen, bodyPtr, bodyLen, namePtr, nameLen; FILE *f; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; vhdrPtr = 0; vhdrLen = 0; bodyPtr = 0; bodyLen = 0; namePtr = 0; nameLen = 0; f = UNICHAR_FOPEN(fileName, "rb"); if (f == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("IFF sample loading failed: file input/output error\n"); return (false); } fseek(f, 0, SEEK_END); filesize = ftell(f); if (filesize == 0) { displayErrorMsg("IFF IS CORRUPT !"); terminalPrintf("IFF sample loading failed: not a valid .IFF\n"); return (false); } fseek(f, 8, SEEK_SET); fread(tmpCharBuf, 1, 4, f); is16Bit = !strncmp(tmpCharBuf, "16SV", 4); sampleLength = 0; nameFound = false; sampleVolume = 65536; // max volume fseek(f, 12, SEEK_SET); while (!feof(f) && (ftell(f) < (filesize - 12))) { fread(&blockName, 4, 1, f); if (feof(f)) break; fread(&blockSize, 4, 1, f); if (feof(f)) break; if (!bigEndian) blockName = SWAP32(blockName); if (!bigEndian) blockSize = SWAP32(blockSize); switch (blockName) { case 0x56484452: // VHDR { vhdrPtr = ftell(f); vhdrLen = blockSize; } break; case 0x4E414D45: // NAME { namePtr = ftell(f); nameLen = blockSize; } break; case 0x424F4459: // BODY { bodyPtr = ftell(f); bodyLen = blockSize; } break; default: break; } fseek(f, blockSize + (blockSize & 1), SEEK_CUR); } if ((vhdrPtr == 0) || (vhdrLen < 20) || (bodyPtr == 0) || (bodyLen == 0)) { fclose(f); displayErrorMsg("NOT A VALID IFF !"); terminalPrintf("IFF sample loading failed: not a valid .IFF\n"); return (false); } fseek(f, vhdrPtr, SEEK_SET); fread(&sampleLoopStart, 4, 1, f); if (!bigEndian) sampleLoopStart = SWAP32(sampleLoopStart); fread(&sampleLoopLength, 4, 1, f); if (!bigEndian) sampleLoopLength = SWAP32(sampleLoopLength); fseek(f, 4 + 2 + 1, SEEK_CUR); if (fgetc(f) != 0) // sample type { fclose(f); displayErrorMsg("UNSUPPORTED IFF !"); terminalPrintf("IFF sample loading failed: unsupported .IFF\n"); return (false); } fread(&sampleVolume, 4, 1, f); if (!bigEndian) sampleVolume = SWAP32(sampleVolume); if (sampleVolume > 65536) sampleVolume = 65536; sampleVolume = (uint32_t)((sampleVolume / 1024.0f) + 0.5f); sampleLength = bodyLen; if (is16Bit) { if (sampleLength > (2 * MAX_SAMPLE_LEN)) sampleLength = 2 * MAX_SAMPLE_LEN; } else { if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; } if (sampleLength == 0) { fclose(f); displayErrorMsg("NOT A VALID IFF !"); terminalPrintf("IFF sample loading failed: not a valid .IFF\n"); return (false); } sampleData = (int8_t *)(malloc(sampleLength)); if (sampleData == NULL) { fclose(f); displayErrorMsg(editor.outOfMemoryText); terminalPrintf("IFF sample loading failed: out of memory!\n"); return (false); } if (is16Bit) { sampleLength /= 2; sampleLoopStart /= 2; sampleLoopLength /= 2; } sampleLength &= 0xFFFFFFFE; sampleLoopStart &= 0xFFFFFFFE; sampleLoopLength &= 0xFFFFFFFE; if (sampleLength > MAX_SAMPLE_LEN) sampleLength = MAX_SAMPLE_LEN; if (sampleLoopLength < 2) { sampleLoopStart = 0; sampleLoopLength = 2; } if ((sampleLoopStart >= MAX_SAMPLE_LEN) || (sampleLoopLength > MAX_SAMPLE_LEN)) { sampleLoopStart = 0; sampleLoopLength = 2; } if ((sampleLoopStart + sampleLoopLength) > sampleLength) { sampleLoopStart = 0; sampleLoopLength = 2; } if (sampleLoopStart > (sampleLength - 2)) { sampleLoopStart = 0; sampleLoopLength = 2; } turnOffVoices(); memset(modEntry->sampleData + s->offset, 0, MAX_SAMPLE_LEN); fseek(f, bodyPtr, SEEK_SET); if (is16Bit) // FT2 specific 16SV format (little-endian samples) { fread(sampleData, 1, 2 * sampleLength, f); ptr16 = (int16_t *)(sampleData); for (i = 0; i < sampleLength; ++i) { sample16 = ptr16[i]; if (bigEndian) sample16 = SWAP16(sample16); modEntry->sampleData[s->offset + i] = quantize16bitTo8bit(sample16); } } else { fread(sampleData, 1, sampleLength, f); memcpy(modEntry->sampleData + s->offset, sampleData, sampleLength); } free(sampleData); // set sample attributes s->volume = sampleVolume; s->fineTune = 0; s->length = sampleLength; s->loopStart = sampleLoopStart; s->loopLength = sampleLoopLength; // read name if ((namePtr != 0) && (nameLen > 0)) { fseek(f, namePtr, SEEK_SET); memset(tmpCharBuf, 0, sizeof (tmpCharBuf)); if (nameLen > 21) { fread(tmpCharBuf, 1, 21, f); fseek(f, nameLen - 21, SEEK_CUR); } else { fread(tmpCharBuf, 1, nameLen, f); } nameFound = true; } fclose(f); // copy over sample name memset(s->text, '\0', sizeof (s->text)); if (nameFound) { nameLen = strlen(tmpCharBuf); if (nameLen > 21) nameLen = 21; for (i = 0; i < nameLen; ++i) s->text[i] = toupper(tmpCharBuf[i]); } else { nameLen = strlen(entryName); if (nameLen > 21) nameLen = 21; for (i = 0; i < nameLen; ++i) s->text[i] = toupper(entryName[i]); } // remove .iff from end of sample name (if present) nameLen = strlen(s->text); if ((nameLen >= 4) && !strncmp(&s->text[nameLen - 4], ".IFF", 4)) memset(&s->text[nameLen - 4], '\0', 4); editor.sampleZero = false; editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); fillSampleRedoBuffer(editor.currSample); terminalPrintf("IFF sample \"%s\" loaded into sample slot %02x\n", s->text, editor.currSample + 1); updateWindowTitle(MOD_IS_MODIFIED); return (false); } int8_t loadRAWSample(UNICHAR *fileName, char *entryName) { uint8_t i; uint32_t nameLen, fileSize; FILE *f; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; f = UNICHAR_FOPEN(fileName, "rb"); if (f == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("RAW sample loading failed: file input/output error\n"); return (false); } fseek(f, 0, SEEK_END); fileSize = ftell(f); fseek(f, 0, SEEK_SET); fileSize &= 0xFFFFFFFE; if (fileSize > MAX_SAMPLE_LEN) fileSize = MAX_SAMPLE_LEN; turnOffVoices(); memset(modEntry->sampleData + s->offset, 0, MAX_SAMPLE_LEN); fread(modEntry->sampleData + s->offset, 1, fileSize, f); fclose(f); // set sample attributes s->volume = 64; s->fineTune = 0; s->length = fileSize; s->loopStart = 0; s->loopLength = 2; // copy over sample name nameLen = strlen(entryName); for (i = 0; i < 21; ++i) s->text[i] = (i < nameLen) ? toupper(entryName[i]) : '\0'; s->text[21] = '\0'; s->text[22] = '\0'; editor.sampleZero = false; editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); fillSampleRedoBuffer(editor.currSample); terminalPrintf("RAW sample \"%s\" loaded into sample slot %02x\n", s->text, editor.currSample + 1); updateWindowTitle(MOD_IS_MODIFIED); return (true); } int8_t loadSample(UNICHAR *fileName, char *entryName) { uint32_t fileSize, ID; FILE *f; f = UNICHAR_FOPEN(fileName, "rb"); if (f == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("Sample loading failed: file input/output error\n"); return (false); } fseek(f, 0, SEEK_END); fileSize = ftell(f); fseek(f, 0, SEEK_SET); // first, check heades before we eventually load as RAW if (fileSize > 16) { fread(&ID, 4, 1, f); if (bigEndian) ID = SWAP32(ID); // check if it's actually a WAV sample if (ID == 0x46464952) // "RIFF" { fseek(f, 4, SEEK_CUR); fread(&ID, 4, 1, f); if (bigEndian) ID = SWAP32(ID); if (ID == 0x45564157) // "WAVE" { fread(&ID, 4, 1, f); if (bigEndian) ID = SWAP32(ID); if (ID == 0x20746D66) // "fmt " { fclose(f); return (loadWAVSample(fileName, entryName, -1)); } } } // check if it's an Amiga IFF sample else if (ID == 0x4D524F46) // "FORM" { fseek(f, 4, SEEK_CUR); fread(&ID, 4, 1, f); if (bigEndian) ID = SWAP32(ID); if ((ID == 0x58565338) || (ID == 0x56533631)) // "8SVX" (normal) and "16SV" (FT2 sample) { fclose(f); return (loadIFFSample(fileName, entryName)); } } } // nope, continue loading as RAW fclose(f); return (loadRAWSample(fileName, entryName)); } int8_t saveSample(int8_t checkIfFileExist, int8_t giveNewFreeFilename) { char fileName[48]; uint8_t smp; uint16_t j; int32_t i, sampleTextLen; uint32_t sampleSize, iffSize, iffSampleSize; uint32_t loopStart, loopLen, tmp32; FILE *f; struct stat statBuffer; moduleSample_t *s; wavHeader_t wavHeader; samplerChunk_t samplerChunk; if (modEntry->samples[editor.currSample].length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); terminalPrintf("Sample saving failed: sample data is empty\n"); return (false); } memset(fileName, 0, sizeof (fileName)); if (*modEntry->samples[editor.currSample].text == '\0') { strcpy(fileName, "untitled"); } else { for (i = 0; i < 22; ++i) { fileName[i] = (char)(tolower(modEntry->samples[editor.currSample].text[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } } // remove .wav/.iff from end of sample name (if present) if (!strncmp(fileName + (strlen(fileName) - 4), ".wav", 4) || !strncmp(fileName + (strlen(fileName) - 4), ".iff", 4)) fileName[strlen(fileName) - 4] = '\0'; switch (editor.diskop.smpSaveType) { case DISKOP_SMP_WAV: strcat(fileName, ".wav"); break; case DISKOP_SMP_IFF: strcat(fileName, ".iff"); break; case DISKOP_SMP_RAW: break; default: return (false); // make compiler happy } if (giveNewFreeFilename) { if (stat(fileName, &statBuffer) == 0) { for (j = 1; j <= 9999; ++j) // This number should satisfy all! ;) { memset(fileName, 0, sizeof (fileName)); if (*modEntry->samples[editor.currSample].text == '\0') { sprintf(fileName, "untitled-%d", j); } else { for (i = 0; i < 22; ++i) { fileName[i] = (char)(tolower(modEntry->samples[editor.currSample].text[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } // remove .wav/.iff from end of sample name (if present) if (!strncmp(fileName + (strlen(fileName) - 4), ".wav", 4) || !strncmp(fileName + (strlen(fileName) - 4), ".iff", 4)) fileName[strlen(fileName) - 4] = '\0'; sprintf(fileName, "%s-%d", fileName, j); } switch (editor.diskop.smpSaveType) { case DISKOP_SMP_WAV: strcat(fileName, ".wav"); break; case DISKOP_SMP_IFF: strcat(fileName, ".iff"); break; case DISKOP_SMP_RAW: break; default: return (false); // make compiler happy } if (stat(fileName, &statBuffer) != 0) break; } } } if (checkIfFileExist) { if (stat(fileName, &statBuffer) == 0) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_SAVESMP_OVERWRITE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("OVERWRITE FILE ?", NO_CARRY); renderAskDialog(); return (-1); } } if (editor.ui.askScreenShown) { editor.ui.answerNo = false; editor.ui.answerYes = false; editor.ui.askScreenShown = false; } f = fopen(fileName, "wb"); if (f == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("Sample saving failed: file input/output error\n"); return (false); } sampleSize = modEntry->samples[editor.currSample].length; switch (editor.diskop.smpSaveType) { case DISKOP_SMP_WAV: { s = &modEntry->samples[editor.currSample]; wavHeader.format = bigEndian ? SWAP32(0x45564157) : 0x45564157; // "WAVE" wavHeader.chunkID = bigEndian ? SWAP32(0x46464952) : 0x46464952; // "RIFF" wavHeader.subchunk1ID = bigEndian ? SWAP32(0x20746D66) : 0x20746D66; // "fmt " wavHeader.subchunk2ID = bigEndian ? SWAP32(0x61746164) : 0x61746164; // "data" wavHeader.subchunk1Size = bigEndian ? SWAP32(16) : 16; wavHeader.subchunk2Size = bigEndian ? SWAP32(sampleSize) : sampleSize; wavHeader.chunkSize = bigEndian ? SWAP32(wavHeader.subchunk2Size + 36) : (wavHeader.subchunk2Size + 36); wavHeader.audioFormat = bigEndian ? SWAP16(1) : 1; wavHeader.numChannels = bigEndian ? SWAP16(1) : 1; wavHeader.bitsPerSample = bigEndian ? SWAP16(8) : 8; wavHeader.sampleRate = bigEndian ? SWAP32(16574) : 16574; wavHeader.byteRate = bigEndian ? SWAP32(wavHeader.sampleRate * wavHeader.numChannels * wavHeader.bitsPerSample / 8) : (wavHeader.sampleRate * wavHeader.numChannels * wavHeader.bitsPerSample / 8); wavHeader.blockAlign = bigEndian ? SWAP16(wavHeader.numChannels * wavHeader.bitsPerSample / 8) : (wavHeader.numChannels * wavHeader.bitsPerSample / 8); if (s->loopLength > 2) { wavHeader.chunkSize += sizeof (samplerChunk_t); memset(&samplerChunk, 0, sizeof (samplerChunk_t)); samplerChunk.chunkID = bigEndian ? SWAP32(0x6C706D73) : 0x6C706D73; // "smpl" samplerChunk.chunkSize = bigEndian ? SWAP32(60) : 60; samplerChunk.dwSamplePeriod = bigEndian ? SWAP32(1000000000U / 16574) : (1000000000U / 16574); samplerChunk.dwMIDIUnityNote = bigEndian ? SWAP32(60) : (60); // 60 = C-4 samplerChunk.cSampleLoops = bigEndian ? SWAP32(1) : 1; samplerChunk.loop.dwStart = bigEndian ? (uint32_t)(SWAP32(s->loopStart)) : (uint32_t)(s->loopStart); samplerChunk.loop.dwEnd = bigEndian ? (uint32_t)(SWAP32((s->loopStart + s->loopLength) - 1)) : (uint32_t)((s->loopStart + s->loopLength) - 1); } fwrite(&wavHeader, sizeof (wavHeader_t), 1, f); for (i = 0; i < (int32_t)(sampleSize); ++i) { smp = modEntry->sampleData[modEntry->samples[editor.currSample].offset + i] + 128; fputc(smp, f); } if (sampleSize & 1) fputc(0, f); // pad align byte if (s->loopLength > 2) fwrite(&samplerChunk, sizeof (samplerChunk), 1, f); if (sampleNameIsEmpty(modEntry->samples[editor.currSample].text)) { terminalPrintf("Sample %02x \"untitled\" saved as .WAV\n", editor.currSample + 1); } else { terminalPrintf("Sample %02x \"", editor.currSample + 1); sampleTextLen = 22; for (i = 21; i >= 0; --i) { if (modEntry->samples[editor.currSample].text[i] == '\0') sampleTextLen--; else break; } for (i = 0; i < sampleTextLen; ++i) { if (modEntry->samples[editor.currSample].text[i] != '\0') teriminalPutChar(tolower(modEntry->samples[editor.currSample].text[i])); else teriminalPutChar(' '); } terminalPrintf("\" saved as .WAV\n"); } } break; case DISKOP_SMP_IFF: { // dwords are big-endian in IFF loopStart = modEntry->samples[editor.currSample].loopStart & 0xFFFFFFFE; loopLen = modEntry->samples[editor.currSample].loopLength & 0xFFFFFFFE; if (!bigEndian) loopStart = SWAP32(loopStart); if (!bigEndian) loopLen = SWAP32(loopLen); iffSize = bigEndian ? (sampleSize + 100) : SWAP32(sampleSize + 100); iffSampleSize = bigEndian ? sampleSize : SWAP32(sampleSize); fputc(0x46, f);fputc(0x4F, f);fputc(0x52, f);fputc(0x4D, f); // "FORM" fwrite(&iffSize, 4, 1, f); fputc(0x38, f);fputc(0x53, f);fputc(0x56, f);fputc(0x58, f); // "8SVX" fputc(0x56, f);fputc(0x48, f);fputc(0x44, f);fputc(0x52, f); // "VHDR" fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);fputc(0x14, f); // 0x00000014 if (modEntry->samples[editor.currSample].loopLength > 2) { fwrite(&loopStart, 4, 1, f); fwrite(&loopLen, 4, 1, f); } else { fwrite(&iffSampleSize, 4, 1, f); fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);// 0x00000000 } fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);// 0x00000000 fputc(0x41, f);fputc(0x56, f); // 16726 (rate) fputc(0x01, f);fputc(0x00, f); // numSamples and compression tmp32 = modEntry->samples[editor.currSample].volume * 1024; if (!bigEndian) tmp32 = SWAP32(tmp32); fwrite(&tmp32, 4, 1, f); fputc(0x4E, f);fputc(0x41, f);fputc(0x4D, f);fputc(0x45, f); // "NAME" fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);fputc(0x16, f); // 0x00000016 for (i = 0; i < 22; ++i) fputc(tolower(modEntry->samples[editor.currSample].text[i]), f); fputc(0x41, f);fputc(0x4E, f);fputc(0x4E, f);fputc(0x4F, f); // "ANNO" fputc(0x00, f);fputc(0x00, f);fputc(0x00, f);fputc(0x15, f); // 0x00000015 fprintf(f, "ProTracker 2.3D clone"); fputc(0x00, f); // even padding fputc(0x42, f);fputc(0x4F, f);fputc(0x44, f);fputc(0x59, f); // "BODY" fwrite(&iffSampleSize, 4, 1, f); fwrite(modEntry->sampleData + modEntry->samples[editor.currSample].offset, 1, sampleSize, f); // shouldn't happen, but in just case: safety even padding if (sampleSize & 1) fputc(0x00, f); if (sampleNameIsEmpty(modEntry->samples[editor.currSample].text)) { terminalPrintf("Sample %02x \"untitled\" saved as .IFF\n", editor.currSample + 1); } else { terminalPrintf("Sample %02x \"", editor.currSample + 1); sampleTextLen = 22; for (i = 21; i >= 0; --i) { if (modEntry->samples[editor.currSample].text[i] == '\0') sampleTextLen--; else break; } for (i = 0; i < sampleTextLen; ++i) { if (modEntry->samples[editor.currSample].text[i] != '\0') teriminalPutChar(tolower(modEntry->samples[editor.currSample].text[i])); else teriminalPutChar(' '); } terminalPrintf("\" saved as .IFF\n"); } } break; case DISKOP_SMP_RAW: { fwrite(modEntry->sampleData + modEntry->samples[editor.currSample].offset, 1, sampleSize, f); if (sampleNameIsEmpty(modEntry->samples[editor.currSample].text)) { terminalPrintf("Sample %02x \"untitled\" saved as raw file\n", editor.currSample + 1); } else { terminalPrintf("Sample %02x \"", editor.currSample + 1); sampleTextLen = 22; for (i = 21; i >= 0; --i) { if (modEntry->samples[editor.currSample].text[i] == '\0') sampleTextLen--; else break; } for (i = 0; i < sampleTextLen; ++i) { if (modEntry->samples[editor.currSample].text[i] != '\0') teriminalPutChar(tolower(modEntry->samples[editor.currSample].text[i])); else teriminalPutChar(' '); } terminalPrintf("\" saved as raw file\n"); } } break; default: return (false); break; // make compiler happy } fclose(f); editor.diskop.cached = false; if (editor.ui.diskOpScreenShown) editor.ui.updateDiskOpFileList = true; displayMsg("SAMPLE SAVED !"); setMsgPointer(); return (true); } protracker-2.3d.r92/src/pt_header.h0000644000000000000000000003551013235646502015714 0ustar rootroot#ifndef __PT_HEADER_H #define __PT_HEADER_H #include #ifdef _WIN32 #define WIN32_MEAN_AND_LEAN #include #endif #include #include "pt_unicode.h" #ifdef _WIN32 #define PATH_MAX_LEN 260 #define DIR_DELIMITER '\\' #else #define PATH_MAX_LEN 4096 #define DIR_DELIMITER '/' #endif #include "pt_config.h" // this must be included after PATH_MAX_LEN definition #ifdef _MSC_VER #pragma warning(disable:4244) // disable 'conversion from' warings #pragma warning(disable:4820) // disable struct padding warnings #pragma warning(disable:4996) // disable deprecated POSIX warnings #pragma warning(disable:4127) // disable while (true) warnings #endif #define SAMPLE_VIEW_HEIGHT 64 #define SAMPLE_AREA_WIDTH 314 #define SAMPLE_AREA_WIDTH_F 314.0f #define FILTERS_BASE_FREQ 16574 #define SCREEN_W 320 #define SCREEN_H 255 #define VBLANK_HZ 60 #define FONT_CHAR_W 8 // actual data length is 7, includes right spacing (1px column) #define FONT_CHAR_H 5 #define MOD_ROWS 64 #define MOD_SAMPLES 31 #define MOD_ORDERS 128 #define MAX_PATTERNS 100 #define MAX_SAMPLE_LEN (65535 * 2) #define RESERVED_SAMPLE_OFFSET (31 * MAX_SAMPLE_LEN) #define AMIGA_VOICES 4 #define SCOPE_WIDTH 40 #define MONOSCOPE_WIDTH 197 #define SPECTRUM_BAR_NUM 23 #define SPECTRUM_BAR_HEIGHT 36 #define SPECTRUM_BAR_WIDTH 6 #define POSED_LIST_SIZE 12 #define PAULA_PAL_CLK 3546895 #define CIA_PAL_CLK 709379 #define KEYB_REPEAT_DELAY 20 enum { FORMAT_MK, // ProTracker 1.x FORMAT_MK2, // ProTracker 2.x (if tune has >64 patterns) FORMAT_FLT4, // StarTrekker FORMAT_4CHN, // FastTracker II (only 4 channel MODs) FORMAT_STK, // The Ultimate SoundTracker (15 samples) FORMAT_NT, // NoiseTracker 1.0 FORMAT_FEST, // NoiseTracker (special one) FORMAT_UNKNOWN }; enum { FLAG_NOTE = 1, FLAG_SAMPLE = 2, FLAG_NEWSAMPLE = 4, TEMPFLAG_START = 1, TEMPFLAG_DELAY = 2, FILTER_LP_ENABLED = 1, FILTER_LED_ENABLED = 2, NO_CARRY = 0, DO_CARRY = 1, INCREMENT_SLOW = 0, INCREMENT_FAST = 1, NO_SAMPLE_CUT = 0, SAMPLE_CUT = 1, EDIT_SPECIAL = 0, EDIT_NORMAL = 1, EDIT_TEXT_NO_UPDATE = 0, EDIT_TEXT_UPDATE = 1, TRANSPOSE_ALL = 1, MOUSE_BUTTON_NOT_HELD = 0, MOUSE_BUTTON_HELD = 1, OPENGL_WINDOWED = 0, OPENGL_FULLSCREEN = 1, DONT_SET_ORDER = -1, DONT_SET_PATTERN = -1, DONT_SET_ROW = -1, REMOVE_SAMPLE_MARKING = 0, KEEP_SAMPLE_MARKING = 1, MOD_NOT_MODIFIED = 0, MOD_IS_MODIFIED = 1, DONT_CHECK_IF_FILE_EXIST = 0, CHECK_IF_FILE_EXIST = 1, DONT_GIVE_NEW_FILENAME = 0, GIVE_NEW_FILENAME = 1, DONT_DOWNSAMPLE = 0, DO_DOWNSAMPLE = 1, SCREEN_ALL = 0, SCREEN_MAINSCREEN = 1, SCREEN_DISKOP = 2, SCREEN_SAMPLER = 4, SCREEN_QUIT = 8, SCREEN_CLEAR = 16, VISUAL_QUADRASCOPE = 0, VISUAL_SPECTRUM = 1, VISUAL_MONOSCOPE = 2, MODE_IDLE = 0, MODE_EDIT = 1, MODE_PLAY = 2, MODE_RECORD = 3, RECORD_PATT = 0, RECORD_SONG = 1, CURSOR_NOTE = 0, CURSOR_SAMPLE1 = 1, CURSOR_SAMPLE2 = 2, CURSOR_CMD = 3, CURSOR_PARAM1 = 4, CURSOR_PARAM2 = 5, PLAY_MODE_NORMAL = 0, PLAY_MODE_PATTERN = 1, OCTAVE_HIGH = 0, OCTAVE_LOW = 1, AMIGA_PAL = 0, AMIGA_NTSC = 1, DISKOP_MODE_MOD = 0, DISKOP_MODE_SMP = 1, DISKOP_SMP_WAV = 0, DISKOP_SMP_IFF = 1, DISKOP_SMP_RAW = 2, ASK_QUIT = 0, ASK_SAVE_MODULE = 1, ASK_SAVE_SONG = 2, ASK_SAVE_SAMPLE = 3, ASK_MOD2WAV = 4, ASK_MOD2WAV_OVERWRITE = 5, ASK_SAVEMOD_OVERWRITE = 6, ASK_SAVESMP_OVERWRITE = 7, ASK_DOWNSAMPLING = 8, ASK_RESAMPLE = 9, ASK_KILL_SAMPLE = 10, ASK_UPSAMPLE = 11, ASK_DOWNSAMPLE = 12, ASK_FILTER_ALL_SAMPLES = 13, ASK_BOOST_ALL_SAMPLES = 14, ASK_MAKE_CHORD = 15, ASK_SAVE_ALL_SAMPLES = 16, ASK_PAT2SMP = 17, ASK_RESTORE_SAMPLE = 18, TEMPO_MODE_CIA = 0, TEMPO_MODE_VBLANK = 1, TEXT_EDIT_STRING = 0, TEXT_EDIT_DECIMAL = 1, TEXT_EDIT_HEX = 2 }; typedef struct wavHeader_t { uint32_t chunkID, chunkSize, format, subchunk1ID, subchunk1Size; uint16_t audioFormat, numChannels; uint32_t sampleRate, byteRate; uint16_t blockAlign, bitsPerSample; uint32_t subchunk2ID, subchunk2Size; } wavHeader_t; typedef struct sampleLoop_t { uint32_t dwIdentifier, dwType, dwStart; uint32_t dwEnd, dwFraction, dwPlayCount; } sampleLoop_t; typedef struct samplerChunk_t { uint32_t chunkID, chunkSize, dwManufacturer, dwProduct; uint32_t dwSamplePeriod, dwMIDIUnityNote, wMIDIPitchFraction; uint32_t dwSMPTEFormat, dwSMPTEOffset, cSampleLoops, cbSamplerData; sampleLoop_t loop; } samplerChunk_t; typedef struct note_t { uint8_t param, sample, command; uint16_t period; } note_t; typedef struct moduleHeader_t { char moduleTitle[20 + 1]; uint8_t ticks, format, restartPos; int16_t order[MOD_ORDERS], orderCount, patternCount; uint16_t tempo, initBPM; uint32_t moduleSize, totalSampleSize; } moduleHeader_t; typedef struct moduleSample_t { volatile int8_t *volumeDisp; volatile int32_t *lengthDisp; volatile int32_t *loopStartDisp; volatile int32_t *loopLengthDisp; char text[22 + 1]; int8_t volume; uint8_t fineTune; int32_t length, offset, loopStart, loopLength, tmpLoopStart; } moduleSample_t; typedef struct moduleChannel_t { int8_t *n_start, *n_wavestart, *n_loopstart, n_chanindex, n_volume; int8_t n_toneportdirec, n_vibratopos, n_tremolopos, n_pattpos, n_loopcount; uint8_t n_wavecontrol, n_glissfunk, n_sampleoffset, n_toneportspeed; uint8_t n_vibratocmd, n_tremolocmd, n_finetune, n_funkoffset, n_samplenum; int16_t n_period, n_note, n_wantedperiod; uint16_t n_cmd; uint32_t n_length, n_replen; } moduleChannel_t; typedef struct module_t { int8_t *sampleData; int8_t currRow, modified, row; uint8_t currSpeed, moduleLoaded; int16_t currOrder, currPattern; uint16_t currBPM; uint32_t rowsCounter, rowsInTotal; moduleHeader_t head; moduleSample_t samples[MOD_SAMPLES]; note_t *patterns[MAX_PATTERNS]; moduleChannel_t channels[AMIGA_VOICES]; } module_t; struct input_t { struct keyb_t { int8_t repeatKey, delayKey; uint8_t shiftKeyDown, leftCtrlKeyDown, leftAltKeyDown; uint8_t leftAmigaKeyDown, keypadEnterKeyDown; uint8_t repeatCounter, delayCounter; SDL_Scancode lastRepKey, lastKey; } keyb; struct mouse_t { int8_t buttonWaiting, leftButtonPressed, rightButtonPressed; uint8_t repeatCounter, repeatCounter_2, buttonWaitCounter; int32_t lastGUIButton, lastGUIButton_2, prevX, prevY; int16_t x, y, lastMouseX; float scaleX_f, scaleY_f; } mouse; } input; // this is massive... struct editor_t { volatile int8_t vuMeterVolumes[AMIGA_VOICES]; volatile float realVuMeterVolumes[AMIGA_VOICES]; volatile int8_t spectrumVolumes[SPECTRUM_BAR_NUM]; volatile int8_t *sampleFromDisp; volatile int8_t *sampleToDisp; volatile int8_t *currSampleDisp; volatile uint8_t isWAVRendering; volatile uint8_t isSMPRendering; volatile uint8_t smpRenderingDone; volatile uint8_t modTick; volatile uint8_t modSpeed; volatile uint8_t programRunning; volatile int16_t *quantizeValueDisp; volatile int16_t *metroSpeedDisp; volatile int16_t *metroChannelDisp; volatile int16_t *sampleVolDisp; volatile int16_t *vol1Disp; volatile int16_t *vol2Disp; volatile int16_t *currEditPatternDisp; volatile int16_t *currPosDisp; volatile int16_t *currPatternDisp; volatile int16_t *currPosEdPattDisp; volatile int16_t *currLengthDisp; volatile int32_t *samplePosDisp; volatile int32_t *chordLengthDisp; volatile int32_t *lpCutOffDisp; volatile int32_t *hpCutOffDisp; int8_t blankSample[320]; // for scopes char mixText[16], outOfMemoryText[18], modLoadOoMText[39], diskOpListOoMText[42]; char allRightText[10], *entryNameTmp, *currPath, *dropTempFileName; UNICHAR *fileNameTmp, *currPathU; int8_t smpRedoFinetunes[MOD_SAMPLES], smpRedoVolumes[MOD_SAMPLES], multiModeNext[4]; int8_t *smpRedoBuffer[MOD_SAMPLES], *tempSample, errorMsgActive, errorMsgBlock, currSample; int8_t metroFlag, recordMode, sampleFrom, multiFlag, sampleTo, keypadSampleOffset; int8_t keypadToggle8CFlag, normalizeFiltersFlag, sampleAllFlag, trackPattFlag, halfClipFlag; int8_t newOldFlag, pat2SmpHQ, note1, note2, note3, note4, oldNote1, oldNote2, oldNote3, oldNote4; int8_t mixFlag, modLoaded, fullScreenFlag, autoInsFlag, autoInsSlot, repeatKeyFlag, sampleZero; int8_t accidental, transDelFlag, chordLengthMin, compoMode; uint8_t muted[AMIGA_VOICES], *rowVisitTable, playMode, songPlaying, currMode, useLEDFilter; uint8_t tuningFlag, tuningChan, tuningVol, pNoteFlag, errorMsgCounter, stepPlayEnabled, stepPlayBackwards; uint8_t blockBufferFlag, buffFromPos, buffToPos, blockFromPos, blockToPos, blockMarkFlag, didQuantize; uint8_t timingMode, swapChannelFlag, f6Pos, f7Pos, f8Pos, f9Pos, f10Pos, keyOctave, tuningNote; uint8_t resampleNote, initialTempo, initialSpeed, editMoveAdd, configFound, abortMod2Wav, blepSynthesis; int16_t *mod2WavBuffer, *pat2SmpBuf, vol1, vol2, quantizeValue; int16_t metroSpeed, metroChannel, sampleVol, modulateSpeed; uint16_t effectMacros[10], oldTempo, currPlayNote, ticks50Hz; int32_t smpRedoLoopStarts[MOD_SAMPLES], smpRedoLoopLengths[MOD_SAMPLES], smpRedoLengths[MOD_SAMPLES]; int32_t markStartOfs, markEndOfs, samplePos, modulatePos, modulateOffset, chordLength, playTime; int32_t lpCutOff, hpCutOff; uint32_t *scopeBuffer, pat2SmpPos, outputFreq, audioBufferSize; float outputFreq_f; note_t trackBuffer[MOD_ROWS], cmdsBuffer[MOD_ROWS], blockBuffer[MOD_ROWS]; note_t patternBuffer[MOD_ROWS * AMIGA_VOICES], undoBuffer[MOD_ROWS * AMIGA_VOICES]; SDL_Thread *mod2WavThread, *pat2SmpThread; struct diskop_t { volatile uint8_t cached; volatile uint8_t isFilling; volatile uint8_t forceStopReading; int8_t modDot, mode, modPackFlg, smpSaveType; int32_t numFiles; int32_t scrollOffset; SDL_Thread *fillThread; } diskop; struct cursor_t { uint8_t lastPos, pos, mode, channel; uint32_t bgBuffer[11 * 14]; } cursor; struct text_offsets_t { uint16_t diskOpPath, posEdPattName; } textofs; struct ui_t { #ifdef _WIN32 HWND hWnd; #endif char statusMessage[18], prevStatusMessage[18], *pattNames; char *dstPtr, *editPos, *textEndPtr, *showTextPtr; int8_t *numPtr8, tmpDisp8, answerNo, answerYes, throwExit, pointerMode; int8_t editTextFlag, editTextType, askScreenType, askScreenShown, visualizerMode; int8_t leftLoopPinMoving, rightLoopPinMoving, samplerScreenShown, previousPointerMode; int8_t videoScaleFactor, changingSmpResample, changingDrumPadNote, changingChordNote; int8_t forceSampleDrag, forceTermBarDrag, forceVolDrag, forceSampleEdit, introScreenShown; int8_t aboutScreenShown, clearScreenShown, posEdScreenShown, diskOpScreenShown; int8_t samplerVolBoxShown, samplerFiltersBoxShown, editOpScreenShown, editOpScreen; int8_t terminalShown, terminalWasClosed, realVuMeters; uint8_t numLen, numBits, blankZeroFlag, dottedCenterFlag, pattDots; // render/update flags uint8_t refreshMousePointer, updateStatusText, updatePatternData, updateSongTime; uint8_t updateSongName, updateMod2WavDialog ,mod2WavFinished; // edit op. #2 uint8_t updateRecordText, updateQuantizeText, updateMetro1Text, updateMetro2Text; uint8_t updateFromText, updateKeysText, updateToText; // edit op. #3 uint8_t updateMixText, updatePosText, updateModText, updateVolText; // edit op. #4 (sample chord editor) uint8_t updateLengthText, updateNote1Text, updateNote2Text; uint8_t updateNote3Text, updateNote4Text; //sampler uint8_t updateResampleNote, updateVolFromText, updateVolToText ,updateLPText; uint8_t updateHPText, updateNormFlag, update9xxPos; // general uint8_t updateSongPos, updateSongPattern, updateSongLength, updateCurrSampleFineTune; uint8_t updateCurrSampleNum ,updateCurrSampleVolume, updateCurrSampleLength; uint8_t updateCurrSampleRepeat, updateCurrSampleReplen, updateCurrSampleName; uint8_t updateSongSize, updateSongTiming, updateSongBPM; uint8_t updateCurrPattText, updateTrackerFlags, pat2SmpDialogShown; // disk op. uint8_t updateLoadMode, updatePackText, updateSaveFormatText, updateDiskOpPathText; // pos ed. uint8_t updatePosEd, updateDiskOpFileList; // these are used when things are drawn on top, for example clear/ask dialogs uint8_t disablePosEd, disableVisualizer; int16_t *numPtr16, tmpDisp16, lineCurX, lineCurY, editObject, sampleMarkingPos; uint16_t *dstOffset, dstPos, textLength, editTextPos, dstOffsetEnd, lastSampleOffset; int32_t *numPtr32, tmpDisp32, askTempData; SDL_PixelFormat *pixelFormat; } ui; struct sampler_t { const int8_t *samStart; int8_t *blankSample, *copyBuf; int16_t loopStartPos, loopEndPos; uint16_t dragStart, dragEnd, saveMouseX, lastSamPos; int32_t samPointWidth, samOffset, samDisplay, samLength; int32_t lastMouseX, lastMouseY, tmpLoopStart, tmpLoopLength; uint32_t copyBufSize, samDrawStart, samDrawEnd; } sampler; } editor; void restartSong(void); void resetSong(void); void incPatt(void); void decPatt(void); void modSetPos(int16_t order, int16_t row); void modStop(void); void doStopIt(void); void playPattern(int8_t startRow); void modPlay(int16_t patt, int16_t order, int8_t row); void modSetSpeed(uint8_t speed); void modSetTempo(uint16_t bpm); void modFree(void); int8_t setupAudio(void); void audioClose(void); void clearSong(void); void clearSamples(void); void clearAll(void); void modSetPattern(uint8_t pattern); extern uint8_t bigEndian; // pt_main.c extern module_t *modEntry; // pt_main.c #endif protracker-2.3d.r92/src/pt_scopes.c0000644000000000000000000002406013235646516015756 0ustar rootroot#include #include #include #include "pt_header.h" #include "pt_helpers.h" #include "pt_visuals.h" #include "pt_scopes.h" #include "pt_sampler.h" #include "pt_palette.h" #include "pt_tables.h" // for monoscope const int16_t mixScaleTable[AMIGA_VOICES] = { 388, 570, 595, 585 }; scopeChannel_t scope[4]; static SDL_Thread *scopeThread; static uint64_t timeNext64; extern int8_t forceMixerOff; // pt_audio.c extern uint32_t *pixelBuffer; // pt_main.c // 16-bit arithmetic shift right by 8 #if defined (__APPLE__) || defined (_WIN32) #define m68000_asr_w_8(x) ((x) >> 8) #else static inline int16_t m68000_asr_w_8(int16_t x) { if (x < 0) x = 0xFF00 | ((uint16_t)(x) >> 8); // 0xFF80 = 2^16 - 2^(16-9) else x >>= 8; return (x); } #endif void updateScopes(void) { uint8_t i; int32_t fracTrunc, samplePlayPos; scopeChannel_t *sc; moduleSample_t *s; if (editor.isWAVRendering) return; s = &modEntry->samples[editor.currSample]; hideSprite(SPRITE_SAMPLING_POS_LINE); for (i = 0; i < AMIGA_VOICES; i++) { sc = &scope[i]; if (sc->retriggered) { sc->retriggered = false; sc->frac_f = 0.0f; sc->phase = 0; // data/length is already set from replayer thread (important) sc->loopFlag = sc->newLoopFlag; sc->loopStart = sc->newLoopStart; sc->didSwapData = false; } else if (sc->active) { sc->frac_f += sc->delta_f; if (sc->frac_f >= 1.0f) { fracTrunc = (int32_t)(sc->frac_f); sc->frac_f -= fracTrunc; sc->phase += fracTrunc; if (sc->phase >= sc->length) { while (sc->phase >= sc->length) { sc->phase -= sc->length; sc->length = sc->newLength; } sc->data = sc->newData; sc->loopFlag = sc->newLoopFlag; sc->loopStart = sc->newLoopStart; sc->didSwapData = true; } } } // update sample read position sprite (TODO: could use less extensive 'if' logic) if (editor.ui.samplerScreenShown && !editor.muted[i] && (modEntry->channels[i].n_samplenum == editor.currSample) && !editor.ui.terminalShown) { if (sc->active && (sc->phase >= 2) && !editor.ui.samplerVolBoxShown && !editor.ui.samplerFiltersBoxShown) { // get real sampling position regardless of where the scope data points to samplePlayPos = (int32_t)(&sc->data[sc->phase] - &modEntry->sampleData[s->offset]); if ((samplePlayPos >= 0) && (samplePlayPos < s->length)) { samplePlayPos = 3 + smpPos2Scr(samplePlayPos); if ((samplePlayPos >= 3) && (samplePlayPos <= 316)) setSpritePos(SPRITE_SAMPLING_POS_LINE, samplePlayPos, 138); } } } } } void drawScopes(void) { const int8_t *readPtr; int8_t volume; uint8_t i, y, totalVoicesActive, didSwapData; int16_t scopeData; int32_t x, readPos, monoScopeBuffer[MONOSCOPE_WIDTH], scopeTemp, dataLen, loopStart; const uint32_t *ptr32Src; uint32_t *ptr32Dst, *scopePtr, scopePixel; scopeChannel_t *sc; scopePixel = palette[PAL_QADSCP]; if (editor.ui.visualizerMode == VISUAL_QUADRASCOPE) { // -- quadrascope -- scopePtr = pixelBuffer + ((71 * SCREEN_W) + 128); for (i = 0; i < AMIGA_VOICES; ++i) { sc = &scope[i]; // clear background ptr32Src = trackerFrameBMP + ((71 * SCREEN_W) + 128); ptr32Dst = pixelBuffer + ((55 * SCREEN_W) + (128 + (i * (SCOPE_WIDTH + 8)))); y = 33; while (y--) { memcpy(ptr32Dst, ptr32Src, SCOPE_WIDTH * sizeof (int32_t)); ptr32Dst += SCREEN_W; } // render scopes readPtr = sc->data; dataLen = sc->length; if (!sc->active || editor.muted[i] || (readPtr == NULL) || (dataLen <= 0)) { for (x = 0; x < SCOPE_WIDTH; ++x) // draw idle scope scopePtr[x] = scopePixel; } else { readPos = sc->phase; volume = sc->volume; if (sc->loopFlag) { didSwapData = sc->didSwapData; loopStart = sc->loopStart; for (x = 0; x < SCOPE_WIDTH; ++x) { if (didSwapData) { // readPtr = loopStartPtr, wrap readPos to 0 readPos %= dataLen; } else if (readPos >= dataLen) { // readPtr = sampleStartPtr, wrap readPos to loop start readPos = loopStart; } scopeData = readPtr[readPos++] * volume; scopeData = m68000_asr_w_8(scopeData); scopePtr[(scopeData * SCREEN_W) + x] = scopePixel; } } else { for (x = 0; x < SCOPE_WIDTH; ++x) { scopeData = 0; if (readPos < dataLen) { scopeData = readPtr[readPos++] * volume; scopeData = m68000_asr_w_8(scopeData); } scopePtr[(scopeData * SCREEN_W) + x] = scopePixel; } } } scopePtr += (SCOPE_WIDTH + 8); } } else { // -- monoscope -- scopePtr = pixelBuffer + ((76 * SCREEN_W) + 120); // clear background ptr32Src = monoScopeBMP + (11 * (MONOSCOPE_WIDTH + 3)); ptr32Dst = pixelBuffer + (55 * SCREEN_W) + 120; y = 44; while (y--) { memcpy(ptr32Dst, ptr32Src, MONOSCOPE_WIDTH * sizeof (int32_t)); ptr32Dst += SCREEN_W; } // mix channels memset(monoScopeBuffer, 0, sizeof (monoScopeBuffer)); totalVoicesActive = 0; for (i = 0; i < AMIGA_VOICES; ++i) { sc = &scope[i]; readPtr = sc->data; dataLen = sc->length; if (sc->active && !editor.muted[i] && (readPtr != NULL) && (dataLen > 0)) { readPos = sc->phase; volume = sc->volume; if (sc->loopFlag) { didSwapData = sc->didSwapData; loopStart = sc->loopStart; for (x = 0; x < MONOSCOPE_WIDTH; ++x) { if (didSwapData) { // readPtr = loopStartPtr, wrap readPos to 0 readPos %= dataLen; } else if (readPos >= dataLen) { // readPtr = sampleStartPtr, wrap readPos to loop start readPos = loopStart; } monoScopeBuffer[x] += (readPtr[readPos++] * volume); } } else { for (x = 0; x < MONOSCOPE_WIDTH; ++x) { if (readPos < dataLen) monoScopeBuffer[x] += (readPtr[readPos++] * volume); } } totalVoicesActive++; } } // render buffer for (x = 0; x < MONOSCOPE_WIDTH; ++x) { scopeTemp = monoScopeBuffer[x]; if (totalVoicesActive > 0) { scopeTemp /= mixScaleTable[totalVoicesActive - 1]; scopeTemp = CLAMP(scopeTemp, -21, 22); } scopePtr[(scopeTemp * SCREEN_W) + x] = scopePixel; } } } static void initSyncMainThread(void) { double perfFreq_f, frameLength_f; perfFreq_f = (double)(SDL_GetPerformanceFrequency()); frameLength_f = (perfFreq_f / VBLANK_HZ) + 0.5; timeNext64 = SDL_GetPerformanceCounter() + (int32_t)(frameLength_f); } static void syncScopeThread(void) { int32_t delayMs; uint64_t timeNow64, timeElapsed64; double delayMs_f, perfFreq_f, frameLength_f; perfFreq_f = (double)(SDL_GetPerformanceFrequency()); // should be safe for double if (perfFreq_f <= 0.0) return; // panic! timeNow64 = SDL_GetPerformanceCounter(); if (timeNext64 > timeNow64) { timeElapsed64 = timeNext64 - timeNow64; delayMs_f = ((1000.0 * (double)(timeElapsed64)) / perfFreq_f) + 0.5; delayMs = (int32_t)(delayMs_f); if (delayMs > 0) SDL_Delay(delayMs); } frameLength_f = (perfFreq_f / VBLANK_HZ) + 0.5; timeNext64 += (int32_t)(frameLength_f); } int32_t scopeThreadFunc(void *ptr) { (void)(ptr); SDL_SetThreadPriority(SDL_THREAD_PRIORITY_HIGH); while (editor.programRunning) { syncScopeThread(); updateScopes(); } return (true); } uint8_t initScopes(void) { initSyncMainThread(); scopeThread = SDL_CreateThread(scopeThreadFunc, "PT Clone Scope Thread", NULL); if (scopeThread == NULL) return (false); return (true); } protracker-2.3d.r92/src/pt_palette.h0000644000000000000000000000204213235646515016120 0ustar rootroot#ifndef __PT_PALETTE_H #define __PT_PALETTE_H #include enum { // ----------------------------- PAL_BACKGRD = 0, PAL_BORDER = 1, PAL_GENBKG = 2, PAL_GENBKG2 = 3, PAL_QADSCP = 4, PAL_PATCURSOR = 5, PAL_GENTXT = 6, PAL_PATTXT = 7, // ----------------------------- PAL_SAMPLLINE = 8, PAL_LOOPPIN = 9, PAL_TEXTMARK = 10, PAL_MOUSE_1 = 11, PAL_MOUSE_2 = 12, PAL_MOUSE_3 = 13, // ----------------------------- PAL_COLORKEY = 14, // ----------------------------- PALETTE_NUM, // ----------------------------- POINTER_MODE_IDLE = 0, POINTER_MODE_EDIT = 1, POINTER_MODE_PLAY = 2, POINTER_MODE_MSG1 = 3, POINTER_MODE_LOAD = 4, POINTER_MODE_EDIT_PLAY = 5, POINTER_MODE_READ_DIR = 6 }; void setMsgPointer(void); void pointerErrorMode(void); void pointerSetMode(int8_t pointerMode, uint8_t carry); void pointerSetPreviousMode(void); #endif protracker-2.3d.r92/src/pt_audio.h0000644000000000000000000000323413235646515015567 0ustar rootroot/* The low-pass/high-pass routines were coded by aciddose, and he agreed on ** using the WTFPL license for the code. */ #ifndef __PT_AUDIO_H #define __PT_AUDIO_H #include typedef struct lossyIntegrator_t { float buffer[2], coeff[2]; } lossyIntegrator_t; void resetDitherSeed(void); void lossyIntegrator(lossyIntegrator_t *filter, float *in, float *out); void lossyIntegratorHighPass(lossyIntegrator_t *filter, float *in, float *out); int8_t quantizeFloatTo8bit(float smpFloat); int8_t quantize32bitTo8bit(int32_t smp32); int8_t quantize24bitTo8bit(int32_t smp32); int8_t quantize16bitTo8bit(int16_t smp16); void normalize32bitSigned(int32_t *sampleData, uint32_t sampleLength); void normalize24bitSigned(int32_t *sampleData, uint32_t sampleLength); void normalize16bitSigned(int16_t *sampleData, uint32_t sampleLength); void normalize8bitFloatSigned(float *sampleData, uint32_t sampleLength); void setLEDFilter(uint8_t state); void toggleLEDFilter(void); int8_t renderToWav(char *fileName, int8_t checkIfFileExist); void toggleAmigaPanMode(void); void toggleLowPassFilter(void); void paulaRestartDMA(uint8_t ch); void paulaSetPeriod(uint8_t ch, uint16_t period); void paulaSetVolume(uint8_t ch, uint16_t vol); void paulaSetLength(uint8_t ch, uint32_t len); void paulaSetData(uint8_t ch, const int8_t *src); void clearPaulaAndScopes(void); void mixerUpdateLoops(void); void mixerKillVoice(uint8_t ch); void turnOffVoices(void); void mixerCalcVoicePans(uint8_t stereoSeparation); void mixerSetSamplesPerTick(int32_t val); void mixerClearSampleCounter(void); void outputAudio(int16_t *target, int32_t numSamples); #endif protracker-2.3d.r92/src/pt_config.h0000644000000000000000000000073713235646500015732 0ustar rootroot#ifndef __PT_CONFIG_H #define __PT_CONFIG_H #include struct ptConfig_t { char *defaultDiskOpDir; int8_t dottedCenterFlag, pattDots, a500LowPassFilter, compoMode, autoCloseDiskOp; int8_t stereoSeparation, videoScaleFactor, blepSynthesis, transDel; int8_t modDot, accidental, blankZeroFlag, realVuMeters, vblankScopes; int16_t quantizeValue; uint32_t soundFrequency, soundBufferSize; } ptConfig; int8_t loadConfig(); #endif protracker-2.3d.r92/src/pt_tables.c0000644000000000000000000002672413235646502015740 0ustar rootroot#include #include uint32_t *aboutScreenBMP = NULL, *arrowBMP = NULL, *clearDialogBMP = NULL; uint32_t *diskOpScreenBMP = NULL, *editOpModeCharsBMP = NULL, *mod2wavBMP = NULL; uint32_t *editOpScreen1BMP = NULL, *editOpScreen2BMP = NULL, *samplerVolumeBMP = NULL; uint32_t *editOpScreen3BMP = NULL, *editOpScreen4BMP = NULL, *spectrumVisualsBMP = NULL; uint32_t *muteButtonsBMP = NULL, *posEdBMP = NULL, *monoScopeBMP = NULL; uint32_t *samplerFiltersBMP = NULL, *samplerScreenBMP = NULL, *pat2SmpDialogBMP = NULL; uint32_t *termTopBMP = NULL, *termScrollBarBMP = NULL; uint32_t *trackerFrameBMP = NULL, *yesNoDialogBMP = NULL; int8_t pNoteTable[32] = // for drumpad { 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 }; const char noteNames1[36][4] = { "C-1", "C#1", "D-1", "D#1", "E-1", "F-1", "F#1" ,"G-1", "G#1", "A-1", "A#1", "B-1", "C-2", "C#2", "D-2", "D#2", "E-2", "F-2", "F#2" ,"G-2", "G#2", "A-2", "A#2", "B-2", "C-3", "C#3", "D-3", "D#3", "E-3", "F-3", "F#3" ,"G-3", "G#3", "A-3", "A#3", "B-3" }; const char noteNames2[36][4] = { "C-1", { 'D', 127, '1'}, "D-1", { 'E', 127, '1'}, "E-1", "F-1", { 'G', 127, '1'}, "G-1", { 'A', 127, '1'}, "A-1", { 'B', 127, '1'}, "B-1", "C-2", { 'D', 127, '2'}, "D-2", { 'E', 127, '2'}, "E-2", "F-2", { 'G', 127, '2'}, "G-2", { 'A', 127, '2'}, "A-2", { 'B', 127, '2'}, "B-2", "C-3", { 'D', 127, '3'}, "D-3", { 'E', 127, '3'}, "E-3", "F-3", { 'G', 127, '3'}, "G-3", { 'A', 127, '3'}, "A-3", { 'B', 127, '3'}, "B-3" }; const int8_t tuneToneData[32] = // Tuning Tone (Sine Wave) { 0, 25, 49, 71, 91, 106, 118, 126, 127, 126, 118, 106, 91, 71, 49, 25, 0, -25, -49, -71, -91,-106,-118,-126, -127,-126,-118,-106, -91, -71, -49, -25 }; const uint16_t cursorPosTable[24] = { 30, 54, 62, 70, 78, 86, 102, 126, 134, 142, 150, 158, 174, 198, 206, 214, 222, 230, 246, 270, 278, 286, 294, 302 }; const int8_t vuMeterHeights[65] = { 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 41, 42, 43, 44, 44, 45, 46, 47, 48 }; const uint8_t funkTable[16] = // EFx (FunkRepeat/InvertLoop) { 0x00, 0x05, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0D, 0x10, 0x13, 0x16, 0x1A, 0x20, 0x2B, 0x40, 0x80 }; const uint8_t vibratoTable[32] = { 0x00, 0x18, 0x31, 0x4A, 0x61, 0x78, 0x8D, 0xA1, 0xB4, 0xC5, 0xD4, 0xE0, 0xEB, 0xF4, 0xFA, 0xFD, 0xFF, 0xFD, 0xFA, 0xF4, 0xEB, 0xE0, 0xD4, 0xC5, 0xB4, 0xA1, 0x8D, 0x78, 0x61, 0x4A, 0x31, 0x18 }; const int16_t periodTable[606] = { 856,808,762,720,678,640,604,570,538,508,480,453, 428,404,381,360,339,320,302,285,269,254,240,226, 214,202,190,180,170,160,151,143,135,127,120,113,0, 850,802,757,715,674,637,601,567,535,505,477,450, 425,401,379,357,337,318,300,284,268,253,239,225, 213,201,189,179,169,159,150,142,134,126,119,113,0, 844,796,752,709,670,632,597,563,532,502,474,447, 422,398,376,355,335,316,298,282,266,251,237,224, 211,199,188,177,167,158,149,141,133,125,118,112,0, 838,791,746,704,665,628,592,559,528,498,470,444, 419,395,373,352,332,314,296,280,264,249,235,222, 209,198,187,176,166,157,148,140,132,125,118,111,0, 832,785,741,699,660,623,588,555,524,495,467,441, 416,392,370,350,330,312,294,278,262,247,233,220, 208,196,185,175,165,156,147,139,131,124,117,110,0, 826,779,736,694,655,619,584,551,520,491,463,437, 413,390,368,347,328,309,292,276,260,245,232,219, 206,195,184,174,164,155,146,138,130,123,116,109,0, 820,774,730,689,651,614,580,547,516,487,460,434, 410,387,365,345,325,307,290,274,258,244,230,217, 205,193,183,172,163,154,145,137,129,122,115,109,0, 814,768,725,684,646,610,575,543,513,484,457,431, 407,384,363,342,323,305,288,272,256,242,228,216, 204,192,181,171,161,152,144,136,128,121,114,108,0, 907,856,808,762,720,678,640,604,570,538,508,480, 453,428,404,381,360,339,320,302,285,269,254,240, 226,214,202,190,180,170,160,151,143,135,127,120,0, 900,850,802,757,715,675,636,601,567,535,505,477, 450,425,401,379,357,337,318,300,284,268,253,238, 225,212,200,189,179,169,159,150,142,134,126,119,0, 894,844,796,752,709,670,632,597,563,532,502,474, 447,422,398,376,355,335,316,298,282,266,251,237, 223,211,199,188,177,167,158,149,141,133,125,118,0, 887,838,791,746,704,665,628,592,559,528,498,470, 444,419,395,373,352,332,314,296,280,264,249,235, 222,209,198,187,176,166,157,148,140,132,125,118,0, 881,832,785,741,699,660,623,588,555,524,494,467, 441,416,392,370,350,330,312,294,278,262,247,233, 220,208,196,185,175,165,156,147,139,131,123,117,0, 875,826,779,736,694,655,619,584,551,520,491,463, 437,413,390,368,347,328,309,292,276,260,245,232, 219,206,195,184,174,164,155,146,138,130,123,116,0, 868,820,774,730,689,651,614,580,547,516,487,460, 434,410,387,365,345,325,307,290,274,258,244,230, 217,205,193,183,172,163,154,145,137,129,122,115,0, 862,814,768,725,684,646,610,575,543,513,484,457, 431,407,384,363,342,323,305,288,272,256,242,228, 216,203,192,181,171,161,152,144,136,128,121,114,0, // PT BUGFIX: overflowing arpeggio on -1 finetuned samples, add extra zeroes 0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; const char hexTable[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; const uint8_t unshiftedKeymap[64] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '=', '\\', '*', '0', '`', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '*', '1', '2', '3', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '#', '\0', '4', '5', '6', '<', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', '\0', '.', '7', '8', '9', ' ' }; const int8_t rawKeyScaleTable[41] = { 49, 33, 50, 34, 51, 52, 36, 53, 37, 54, 38, 55, 56, 40, 57, 41, 58, 16, 2, 17, 3, 18, 19, 5, 20, 6, 21, 7, 22, 23, 9, 24, 70, 25, 26, 12, 27, 70, 70, 14, 11 }; const int8_t kbdTransTable[2][41] = { // high octave (default) { 12,13,14,15,16,17,18,19,20,21,22,23,24,25, 26,27,28,24,25,26,27,28,29,30,31,32,33,34, 35,37,37,37,37,37,37,37,37,37,37,37,37 }, // low octave { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 14,15,16,12,13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28,29,30,31,36,36,27,30 } }; // for terminal const uint8_t topazFontPacked[760] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00, 0x18, 0x7C, 0x06, 0x3C, 0x60, 0x3E, 0x18, 0x00, 0x00, 0x66, 0x35, 0x1B, 0x6C, 0x56, 0x33, 0x00, 0x1C, 0x36, 0x16, 0x6E, 0x3B, 0x73, 0xDE, 0x00, 0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x3C, 0x66, 0x76, 0x7E, 0x6E, 0x66, 0x3C, 0x00, 0x18, 0x1C, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x66, 0x60, 0x30, 0x18, 0x0C, 0x7E, 0x00, 0x3C, 0x66, 0x60, 0x38, 0x60, 0x66, 0x3C, 0x00, 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x30, 0x00, 0x7E, 0x06, 0x3E, 0x60, 0x60, 0x66, 0x3C, 0x00, 0x38, 0x0C, 0x06, 0x3E, 0x66, 0x66, 0x3C, 0x00, 0x7E, 0x60, 0x60, 0x30, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x3C, 0x66, 0x66, 0x7C, 0x60, 0x30, 0x1C, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x0C, 0x00, 0x60, 0x18, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x60, 0x18, 0x06, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x30, 0x18, 0x00, 0x18, 0x00, 0x3E, 0x63, 0x7B, 0x6B, 0x7B, 0x03, 0x1E, 0x00, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3E, 0x00, 0x78, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x78, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1E, 0x00, 0x7E, 0x06, 0x06, 0x1E, 0x06, 0x06, 0x7E, 0x00, 0x7E, 0x06, 0x06, 0x1E, 0x06, 0x06, 0x06, 0x00, 0x3C, 0x66, 0x06, 0x76, 0x66, 0x66, 0x7C, 0x00, 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x3C, 0x00, 0x63, 0x33, 0x1B, 0x0F, 0x1B, 0x33, 0x63, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7E, 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, 0x00, 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x33, 0x3B, 0x7E, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x66, 0x00, 0x3C, 0x66, 0x0E, 0x3C, 0x70, 0x66, 0x3C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x00, 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00, 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0xC3, 0x00, 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x7F, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x7F, 0x00, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x60, 0x7C, 0x66, 0x7C, 0x00, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x06, 0x06, 0x06, 0x3C, 0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x06, 0x3C, 0x00, 0x38, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x3C, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x30, 0x00, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x06, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x37, 0x7F, 0x6B, 0x63, 0x63, 0x00, 0x00, 0x00, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x00, 0x00, 0x3E, 0x66, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x3C, 0x06, 0x3C, 0x60, 0x3E, 0x00, 0x0C, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x38, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x63, 0x63, 0x6B, 0x7F, 0x36, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x0C, 0x00, 0x00, 0x7E, 0x30, 0x18, 0x0C, 0x7E, 0x00, 0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0x00, 0x4E, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; protracker-2.3d.r92/src/pt_terminal.h0000644000000000000000000000202013235646516016272 0ustar rootroot#ifndef __PT_TERMINAL_H #define __PT_TERMINAL_H #include // change this for a bigger backlog, but at the cost of more RAM #define TERMINAL_HISTORY_LINES 1024 #define TERMINAL_TAB_SIZE 4 #define TERMINAL_WINDOW_WIDTH 304 #define TERMINAL_WINDOW_HEIGHT 232 #define TERMINAL_FONT_W 8 #define TERMINAL_FONT_H 8 #define TERMINAL_WIDTH (TERMINAL_WINDOW_WIDTH / TERMINAL_FONT_W) #define TERMINAL_HEIGHT (TERMINAL_WINDOW_HEIGHT / TERMINAL_FONT_H) #define TERMINAL_BUFFER_SIZE (TERMINAL_WIDTH * (TERMINAL_HISTORY_LINES + TERMINAL_HEIGHT)) void terminalPrintf(const char *format, ...); void teriminalPutChar(const char chr); void terminalClear(void); void terminalScrollToStart(void); void terminalScrollToEnd(void); void terminalScrollPageUp(void); void terminalScrollPageDown(void); void terminalScrollUp(void); void terminalScrollDown(void); void terminalHandleScrollBar(int8_t mouseButtonHeld); void terminalRender(uint32_t *frameBuffer); int8_t terminalInit(void); void terminalFree(void); #endif protracker-2.3d.r92/src/pt_modloader.c0000644000000000000000000011357213235646475016443 0ustar rootroot#include #include #include #include #include // tolower() #ifdef _WIN32 #include #else #include #endif #include #include #include #include "pt_palette.h" #include "pt_header.h" #include "pt_sampler.h" #include "pt_textout.h" #include "pt_audio.h" #include "pt_helpers.h" #include "pt_terminal.h" #include "pt_visuals.h" #include "pt_unicode.h" typedef struct mem_t { int8_t _eof; uint8_t *_ptr, *_base; uint32_t _cnt, _bufsiz; } mem_t; static mem_t *mopen(const uint8_t *src, uint32_t length); static void mclose(mem_t **buf); static int32_t mgetc(mem_t *buf); static size_t mread(void *buffer, size_t size, size_t count, mem_t *buf); static void mseek(mem_t *buf, int32_t offset, int32_t whence); uint8_t ppdecrunch(uint8_t *src, uint8_t *dst, uint8_t *offsetLens, uint32_t srcLen, uint32_t dstLen, uint8_t skipBits); module_t *createNewMod(void) { uint8_t i; module_t *newMod; newMod = (module_t *)(calloc(1, sizeof (module_t))); if (newMod == NULL) { showErrorMsgBox("Out of memory!"); return (false); } for (i = 0; i < MAX_PATTERNS; ++i) { newMod->patterns[i] = (note_t *)(calloc(MOD_ROWS * AMIGA_VOICES, sizeof (note_t))); if (newMod->patterns[i] == NULL) { showErrorMsgBox("Out of memory!"); return (false); } } newMod->sampleData = (int8_t *)(calloc(MOD_SAMPLES + 1, MAX_SAMPLE_LEN)); // +1 sample slot for overflow safety (scopes etc) if (newMod->sampleData == NULL) { showErrorMsgBox("Out of memory!"); return (false); } newMod->head.orderCount = 1; newMod->head.patternCount = 1; for (i = 0; i < MOD_SAMPLES; ++i) { newMod->samples[i].offset = MAX_SAMPLE_LEN * i; newMod->samples[i].loopLength = 2; // setup GUI text pointers newMod->samples[i].volumeDisp = &newMod->samples[i].volume; newMod->samples[i].lengthDisp = &newMod->samples[i].length; newMod->samples[i].loopStartDisp = &newMod->samples[i].loopStart; newMod->samples[i].loopLengthDisp = &newMod->samples[i].loopLength; } for (i = 0; i < AMIGA_VOICES; ++i) newMod->channels[i].n_chanindex = i; // setup GUI text pointers editor.currEditPatternDisp = &newMod->currPattern; editor.currPosDisp = &newMod->currOrder; editor.currPatternDisp = &newMod->head.order[0]; editor.currPosEdPattDisp = &newMod->head.order[0]; editor.currLengthDisp = &newMod->head.orderCount; editor.ui.updateSongSize = true; return (newMod); } int8_t modSave(char *fileName) { int16_t tempPatternCount; int32_t i, nameTextLen; uint32_t tempLoopLength, tempLoopStart, j, k; note_t tmp; FILE *fmodule; tempPatternCount = 0; fmodule = fopen(fileName, "wb"); if (fmodule == NULL) { displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("Module saving failed: file input/output error\n"); return (false); } for (i = 0; i < 20; ++i) fputc(tolower(modEntry->head.moduleTitle[i]), fmodule); for (i = 0; i < MOD_SAMPLES; ++i) { for (j = 0; j < 22; ++j) fputc(tolower(modEntry->samples[i].text[j]), fmodule); fputc(modEntry->samples[i].length >> 9, fmodule); fputc(modEntry->samples[i].length >> 1, fmodule); fputc(modEntry->samples[i].fineTune & 0x0F, fmodule); fputc((modEntry->samples[i].volume > 64) ? 64 : modEntry->samples[i].volume, fmodule); tempLoopLength = modEntry->samples[i].loopLength; if (tempLoopLength < 2) tempLoopLength = 2; tempLoopStart = modEntry->samples[i].loopStart; if (tempLoopLength == 2) tempLoopStart = 0; fputc(tempLoopStart >> 9, fmodule); fputc(tempLoopStart >> 1, fmodule); fputc(tempLoopLength >> 9, fmodule); fputc(tempLoopLength >> 1, fmodule); } fputc(modEntry->head.orderCount & 0x00FF, fmodule); fputc(0x7F, fmodule); // ProTracker puts 0x7F at this place (restart pos) for (i = 0; i < MOD_ORDERS; ++i) fputc(modEntry->head.order[i] & 0x00FF, fmodule); tempPatternCount = 0; for (i = 0; i < MOD_ORDERS; ++i) { if (tempPatternCount < modEntry->head.order[i]) tempPatternCount = modEntry->head.order[i]; } if (++tempPatternCount > MAX_PATTERNS) tempPatternCount = MAX_PATTERNS; fwrite((tempPatternCount <= 64) ? "M.K." : "M!K!", 1, 4, fmodule); for (i = 0; i < tempPatternCount; ++i) { for (j = 0; j < MOD_ROWS; ++j) { for (k = 0; k < AMIGA_VOICES; ++k) { tmp = modEntry->patterns[i][(j * AMIGA_VOICES) + k]; fputc((tmp.sample & 0xF0) | ((tmp.period >> 8) & 0x0F), fmodule); fputc(tmp.period & 0x00FF, fmodule); fputc(((tmp.sample << 4) & 0xF0) | (tmp.command & 0x0F), fmodule); fputc(tmp.param, fmodule); } } } for (i = 0; i < MOD_SAMPLES; ++i) { // Amiga ProTracker "BEEEEEEEEP" sample fix if ((modEntry->samples[i].length >= 2) && ((modEntry->samples[i].loopStart + modEntry->samples[i].loopLength) == 2)) { fputc(0, fmodule); fputc(0, fmodule); k = modEntry->samples[i].length; for (j = 2; j < k; ++j) fputc(modEntry->sampleData[modEntry->samples[i].offset + j], fmodule); } else { fwrite(&modEntry->sampleData[MAX_SAMPLE_LEN * i], 1, modEntry->samples[i].length, fmodule); } } fclose(fmodule); displayMsg("MODULE SAVED !"); setMsgPointer(); editor.diskop.cached = false; if (editor.ui.diskOpScreenShown) editor.ui.updateDiskOpFileList = true; updateWindowTitle(MOD_NOT_MODIFIED); if (moduleNameIsEmpty(modEntry->head.moduleTitle)) { terminalPrintf("Module \"untitled\" saved\n"); } else { terminalPrintf("Module \""); nameTextLen = 20; for (i = 19; i >= 0; --i) { if (modEntry->head.moduleTitle[i] == '\0') nameTextLen--; else break; } for (i = 0; i < nameTextLen; ++i) { if (modEntry->head.moduleTitle[i] != '\0') teriminalPutChar(tolower(modEntry->head.moduleTitle[i])); else teriminalPutChar(' '); } terminalPrintf("\" saved\n"); } return (true); } static int8_t checkModType(const char *buf) { if (!strncmp(buf, "M.K.", 4)) return (FORMAT_MK); // ProTracker v1.x, handled as ProTracker v2.x else if (!strncmp(buf, "M!K!", 4)) return (FORMAT_MK2); // ProTracker v2.x (if >64 patterns) else if (!strncmp(buf, "FLT4", 4)) return (FORMAT_FLT4); // StarTrekker (4ch), handled as ProTracker v2.x else if (!strncmp(buf, "4CHN", 4)) return (FORMAT_4CHN); // FastTracker II (4ch), handled as ProTracker v2.x else if (!strncmp(buf, "N.T.", 4)) return (FORMAT_MK); // NoiseTracker 1.0, handled as ProTracker v2.x else if (!strncmp(buf, "M&K!", 4)) return (FORMAT_FEST); // Special NoiseTracker format (used in music disks?) else if (!strncmp(buf, "FEST", 4)) return (FORMAT_FEST); // Special NoiseTracker format (used in music disks?) return (FORMAT_UNKNOWN); // may be The Ultimate SoundTracker, 15 samples } module_t *modLoad(UNICHAR *fileName) { char modSig[4], tmpChar; int8_t mightBeSTK, numSamples, lateVerSTKFlag; uint8_t ppCrunchData[4], bytes[4], *ppBuffer; uint8_t *modBuffer, ch, row, pattern; int32_t i, tmp, loopOverflow; uint32_t j, PP20, ppPackLen, ppUnpackLen; FILE *fmodule; module_t *newModule; moduleSample_t *s; note_t *note; mem_t *mod; lateVerSTKFlag = false; mightBeSTK = false; newModule = (module_t *)(calloc(1, sizeof (module_t))); if (newModule == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } fmodule = UNICHAR_FOPEN(fileName, "rb"); if (fmodule == NULL) { free(newModule); newModule = NULL; displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("Module loading failed: file input/output error!\n"); return (NULL); } fseek(fmodule, 0, SEEK_END); newModule->head.moduleSize = ftell(fmodule); fseek(fmodule, 0, SEEK_SET); // check if mod is a powerpacker mod fread(&PP20, 4, 1, fmodule); if (bigEndian) PP20 = SWAP32(PP20); if (PP20 == 0x30325850) // "PX20" { free(newModule); fclose(fmodule); displayErrorMsg("ENCRYPTED PPACK !"); terminalPrintf("Module loading failed: .MOD is PowerPacker encrypted!\n"); return (NULL); } else if (PP20 == 0x30325050) // "PP20" { ppPackLen = newModule->head.moduleSize; if (ppPackLen & 3) { free(newModule); fclose(fmodule); displayErrorMsg("POWERPACKER ERROR"); terminalPrintf("Module loading failed: unknown PowerPacker error\n"); return (NULL); } fseek(fmodule, ppPackLen - 4, SEEK_SET); ppCrunchData[0] = (uint8_t)(fgetc(fmodule)); ppCrunchData[1] = (uint8_t)(fgetc(fmodule)); ppCrunchData[2] = (uint8_t)(fgetc(fmodule)); ppCrunchData[3] = (uint8_t)(fgetc(fmodule)); ppUnpackLen = (ppCrunchData[0] << 16) | (ppCrunchData[1] << 8) | ppCrunchData[2]; // smallest and biggest possible .MOD if ((ppUnpackLen < 2108) || (ppUnpackLen > 4195326)) { free(newModule); fclose(fmodule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file (incorrect unpacked file size)\n"); return (NULL); } ppBuffer = (uint8_t *)(malloc(ppPackLen)); if (ppBuffer == NULL) { free(newModule); fclose(fmodule); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } modBuffer = (uint8_t *)(malloc(ppUnpackLen)); if (modBuffer == NULL) { free(newModule); free(ppBuffer); fclose(fmodule); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } fseek(fmodule, 0, SEEK_SET); fread(ppBuffer, 1, ppPackLen, fmodule); fclose(fmodule); ppdecrunch(ppBuffer + 8, modBuffer, ppBuffer + 4, ppPackLen - 12, ppUnpackLen, ppCrunchData[3]); free(ppBuffer); newModule->head.moduleSize = ppUnpackLen; } else { // smallest and biggest possible .MOD if ((newModule->head.moduleSize < 2108) || (newModule->head.moduleSize > 4195326)) { free(newModule); fclose(fmodule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file (invalid file size)"); return (NULL); } modBuffer = (uint8_t *)(malloc(newModule->head.moduleSize)); if (modBuffer == NULL) { free(newModule); fclose(fmodule); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } fseek(fmodule, 0, SEEK_SET); fread(modBuffer, 1, newModule->head.moduleSize, fmodule); fclose(fmodule); } mod = mopen(modBuffer, newModule->head.moduleSize); if (mod == NULL) { free(modBuffer); free(newModule); displayErrorMsg("FILE I/O ERROR !"); terminalPrintf("Module loading failed: file input/output error\n"); return (NULL); } // check module tag mseek(mod, 0x0438, SEEK_SET); mread(modSig, 1, 4, mod); newModule->head.format = checkModType(modSig); if (newModule->head.format == FORMAT_UNKNOWN) mightBeSTK = true; mseek(mod, 0, SEEK_SET); mread(newModule->head.moduleTitle, 1, 20, mod); // index 21 of newModule->head.moduleTitle is already zeroed for (i = 0; i < 20; ++i) { tmpChar = newModule->head.moduleTitle[i]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; newModule->head.moduleTitle[i] = (char)(tolower(tmpChar)); } // read sample information for (i = 0; i < MOD_SAMPLES; ++i) { s = &newModule->samples[i]; if (mightBeSTK && (i > 14)) { s->loopLength = 2; } else { mread(s->text, 1, 22, mod); // index 23 of s->text is already zeroed for (j = 0; j < 22; ++j) { tmpChar = s->text[j]; if (((tmpChar < ' ') || (tmpChar > '~')) && (tmpChar != '\0')) tmpChar = ' '; s->text[j] = (char)(tolower(tmpChar)); } s->length = ((mgetc(mod) << 8) | mgetc(mod)) * 2; if (s->length > 9999) lateVerSTKFlag = true; // Only used if mightBeSTK is set if (newModule->head.format == FORMAT_FEST) s->fineTune = (uint8_t)((-mgetc(mod) & 0x1F) / 2); // One more bit of precision, + inverted else s->fineTune = (uint8_t)(mgetc(mod)) & 0x0F; s->volume = (uint8_t)(mgetc(mod)); if (s->volume > 64) s->volume = 64; s->loopStart = ((mgetc(mod) << 8) | mgetc(mod)) * 2; if (mightBeSTK) s->loopStart /= 2; s->loopLength = ((mgetc(mod) << 8) | mgetc(mod)) * 2; if (s->loopLength < 2) s->loopLength = 2; // fix for poorly converted STK->PTMOD modules. if (!mightBeSTK && (s->loopLength > 2) && ((s->loopStart + s->loopLength) > s->length)) { if (((s->loopStart / 2) + s->loopLength) <= s->length) s->loopStart /= 2; } if (mightBeSTK) { if (s->loopLength > 2) { tmp = s->loopStart; s->length -= s->loopStart; s->loopStart = 0; s->tmpLoopStart = tmp; } // no finetune in STK/UST s->fineTune = 0; } // some modules are broken like this, adjust sample length if possible (this is ok if we have room) if ((s->loopLength > 2) && ((s->loopStart + s->loopLength) > s->length)) { loopOverflow = (s->loopStart + s->loopLength) - s->length; if ((s->length + loopOverflow) <= 131070) { s->length += loopOverflow; // this is safe, we're calloc()'ing 131070*(31+1) bytes } else { s->loopStart = 0; s->loopLength = 2; } } } } // STK 2.5 had loopStart in words, not bytes. Convert if late version STK. for (i = 0; i < 15; ++i) { if (mightBeSTK && lateVerSTKFlag) { s = &newModule->samples[i]; if (s->loopStart > 2) { s->length -= s->tmpLoopStart; s->tmpLoopStart *= 2; } } } newModule->head.orderCount = (uint8_t)(mgetc(mod)); // fixes beatwave.mod (129 orders) and other weird MODs if (newModule->head.orderCount > 127) { if (newModule->head.orderCount > 129) { mclose(&mod); free(modBuffer); free(newModule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file (NumOrders > 127)\n"); return (NULL); } newModule->head.orderCount = 127; } if (newModule->head.orderCount == 0) { mclose(&mod); free(modBuffer); free(newModule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file (NumOrders = 0)\n"); return (NULL); } newModule->head.restartPos = (uint8_t)(mgetc(mod)); if (mightBeSTK && ((newModule->head.restartPos == 0) || (newModule->head.restartPos > 220))) { mclose(&mod); free(modBuffer); free(newModule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file\n"); return (NULL); } if (mightBeSTK) { // If we're still here at this point and the mightBeSTK flag is set, // then it's definitely a proper The Ultimate SoundTracker (STK) module. newModule->head.format = FORMAT_STK; if (newModule->head.restartPos != 120) // 120 = 125 (?) { if (newModule->head.restartPos > 239) newModule->head.restartPos = 239; // max BPM: 14536 (there was no clamping originally, sick!) newModule->head.initBPM = (uint16_t)(1773447 / ((240 - newModule->head.restartPos) * 122)); } } for (i = 0; i < MOD_ORDERS; ++i) { newModule->head.order[i] = (int16_t)(mgetc(mod)); if (newModule->head.order[i] > newModule->head.patternCount) newModule->head.patternCount = newModule->head.order[i]; } if (++newModule->head.patternCount > MAX_PATTERNS) { mclose(&mod); free(modBuffer); free(newModule); displayErrorMsg("NOT A MOD FILE !"); terminalPrintf("Module loading failed: not a valid .MOD file (NumPatterns > 100)\n"); return (NULL); } if (newModule->head.format != FORMAT_STK) // The Ultimate SoundTracker MODs doesn't have this tag mseek(mod, 4, SEEK_CUR); // We already read/tested the tag earlier, skip it // init 100 patterns and load patternCount of patterns for (pattern = 0; pattern < MAX_PATTERNS; ++pattern) { newModule->patterns[pattern] = (note_t *)(calloc(MOD_ROWS * AMIGA_VOICES, sizeof (note_t))); if (newModule->patterns[pattern] == NULL) { mclose(&mod); free(modBuffer); for (i = 0; i < pattern; ++i) free(newModule->patterns[i]); free(newModule); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } } for (pattern = 0; pattern < newModule->head.patternCount; ++pattern) { note = newModule->patterns[pattern]; for (row = 0; row < MOD_ROWS; ++row) { for (ch = 0; ch < AMIGA_VOICES; ++ch) { bytes[0] = (uint8_t)(mgetc(mod)); bytes[1] = (uint8_t)(mgetc(mod)); bytes[2] = (uint8_t)(mgetc(mod)); bytes[3] = (uint8_t)(mgetc(mod)); note->period = ((bytes[0] & 0x0F) << 8) | bytes[1]; note->sample = (bytes[0] & 0xF0) | (bytes[2] >> 4); // Don't (!) clamp, the player checks for invalid samples note->command = bytes[2] & 0x0F; note->param = bytes[3]; if ((newModule->head.format == FORMAT_NT) || (newModule->head.format == FORMAT_FEST)) { // Any Dxx == D00 in N.T./FEST modules if (note->command == 0x0D) note->param = 0x00; } else if (mightBeSTK) { // Convert STK effects to PT effects if (!lateVerSTKFlag) { if (note->command == 0x01) { // Arpeggio note->command = 0x00; } else if (note->command == 0x02) { // Pitch slide if (note->param & 0xF0) { note->command = 0x02; note->param >>= 4; } else if (note->param & 0x0F) { note->command = 0x01; } } } // Volume slide/pattern break if (note->command == 0x0D) { if (note->param == 0) note->command = 0x0D; else note->command = 0x0A; } } else if (newModule->head.format == FORMAT_4CHN) // 4CHN != PT MOD { // Remove FastTracker II 8xx/E8x panning commands if present if (note->command == 0x08) { // 8xx note->command = 0; note->param = 0; } else if ((note->command == 0x0E) && ((note->param >> 4) == 0x08)) { // E8x note->command = 0; note->param = 0; } // Remove F00, FastTracker II didn't use F00 as STOP in .MOD if ((note->command == 0x0F) && (note->param == 0x00)) { note->command = 0; note->param = 0; } } note++; } } } numSamples = (newModule->head.format == FORMAT_STK) ? 15 : 31; for (i = 0; i < numSamples; ++i) newModule->samples[i].offset = MAX_SAMPLE_LEN * i; newModule->sampleData = (int8_t *)(calloc(MOD_SAMPLES + 1, MAX_SAMPLE_LEN)); // +1 sample slot for overflow safety (scopes etc) if (newModule->sampleData == NULL) { mclose(&mod); free(modBuffer); for (i = 0; i < MAX_PATTERNS; ++i) { if (newModule->patterns[i] != NULL) free(newModule->patterns[i]); } free(newModule); displayErrorMsg(editor.outOfMemoryText); terminalPrintf(editor.modLoadOoMText); return (NULL); } // load sample data numSamples = (newModule->head.format == FORMAT_STK) ? 15 : 31; for (i = 0; i < numSamples; ++i) { s = &newModule->samples[i]; if (mightBeSTK && (s->loopLength > 2)) { for (j = 0; j < (uint32_t)(s->tmpLoopStart); ++j) mgetc(mod); // skip mread(&newModule->sampleData[s->offset], 1, s->length - s->loopStart, mod); } else { mread(&newModule->sampleData[s->offset], 1, s->length, mod); } // fix beeping samples if ((s->length >= 2) && ((s->loopStart + s->loopLength) <= 2)) { newModule->sampleData[s->offset + 0] = 0; newModule->sampleData[s->offset + 1] = 0; } } mclose(&mod); free(modBuffer); for (i = 0; i < AMIGA_VOICES; ++i) newModule->channels[i].n_chanindex = i; return (newModule); } int8_t saveModule(int8_t checkIfFileExist, int8_t giveNewFreeFilename) { char fileName[48]; uint16_t i, j; struct stat statBuffer; memset(fileName, 0, sizeof (fileName)); if (editor.diskop.modDot) { // extension.filename if (*modEntry->head.moduleTitle == '\0') { strcat(fileName, "mod.untitled"); } else { strcat(fileName, "mod."); for (i = 4; i < (20 + 4); ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i - 4])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } } } else { // filename.extension if (*modEntry->head.moduleTitle == '\0') { strcat(fileName, "untitled.mod"); } else { for (i = 0; i < 20; ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } strcat(fileName, ".mod"); } } if (giveNewFreeFilename) { if (stat(fileName, &statBuffer) == 0) { for (j = 1; j <= 9999; ++j) // This number should satisfy all! ;) { memset(fileName, 0, sizeof (fileName)); if (editor.diskop.modDot) { // extension.filename if (*modEntry->head.moduleTitle == '\0') { sprintf(fileName, "mod.untitled-%d", j); } else { strcat(fileName, "mod."); for (i = 4; i < 20 + 4; ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i - 4])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } sprintf(fileName, "%s-%d", fileName, j); } } else { // filename.extension if (*modEntry->head.moduleTitle == '\0') { sprintf(fileName, "untitled-%d.mod", j); } else { for (i = 0; i < 20; ++i) { fileName[i] = (char)(tolower(modEntry->head.moduleTitle[i])); if (fileName[i] == '\0') break; // convert illegal file name characters to spaces if (fileName[i] == '<') fileName[i] = ' '; else if (fileName[i] == '>') fileName[i] = ' '; else if (fileName[i] == ':') fileName[i] = ' '; else if (fileName[i] == '"') fileName[i] = ' '; else if (fileName[i] == '/') fileName[i] = ' '; else if (fileName[i] == '\\') fileName[i] = ' '; else if (fileName[i] == '|') fileName[i] = ' '; else if (fileName[i] == '?') fileName[i] = ' '; else if (fileName[i] == '*') fileName[i] = ' '; } sprintf(fileName, "%s-%d", fileName, j); strcat(fileName, ".mod"); } } if (stat(fileName, &statBuffer) != 0) break; } } } if (checkIfFileExist) { if (stat(fileName, &statBuffer) == 0) { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_SAVEMOD_OVERWRITE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("OVERWRITE FILE ?", NO_CARRY); renderAskDialog(); return (-1); } } if (editor.ui.askScreenShown) { editor.ui.answerNo = false; editor.ui.answerYes = false; editor.ui.askScreenShown = false; } return (modSave(fileName)); } static mem_t *mopen(const uint8_t *src, uint32_t length) { mem_t *b; if ((src == NULL) || (length == 0)) return (NULL); b = (mem_t *)(malloc(sizeof (mem_t))); if (b == NULL) return (NULL); b->_base = (uint8_t *)(src); b->_ptr = (uint8_t *)(src); b->_cnt = length; b->_bufsiz = length; b->_eof = false; return (b); } static void mclose(mem_t **buf) { if (*buf != NULL) { free(*buf); *buf = NULL; } } static int32_t mgetc(mem_t *buf) { int32_t b; if ((buf == NULL) || (buf->_ptr == NULL) || (buf->_cnt <= 0)) return (0); b = *buf->_ptr; buf->_cnt--; buf->_ptr++; if (buf->_cnt <= 0) { buf->_ptr = buf->_base + buf->_bufsiz; buf->_cnt = 0; buf->_eof = true; } return (int32_t)(b); } static size_t mread(void *buffer, size_t size, size_t count, mem_t *buf) { int32_t pcnt; size_t wrcnt; if ((buf == NULL) || (buf->_ptr == NULL)) return (0); wrcnt = size * count; if ((size == 0) || buf->_eof) return (0); pcnt = (buf->_cnt > wrcnt) ? wrcnt : buf->_cnt; memcpy(buffer, buf->_ptr, pcnt); buf->_cnt -= pcnt; buf->_ptr += pcnt; if (buf->_cnt <= 0) { buf->_ptr = buf->_base + buf->_bufsiz; buf->_cnt = 0; buf->_eof = true; } return (pcnt / size); } static void mseek(mem_t *buf, int32_t offset, int32_t whence) { if (buf == NULL) return; if (buf->_base) { switch (whence) { case SEEK_SET: buf->_ptr = buf->_base + offset; break; case SEEK_CUR: buf->_ptr += offset; break; case SEEK_END: buf->_ptr = buf->_base + buf->_bufsiz + offset; break; default: break; } buf->_eof = false; if (buf->_ptr >= (buf->_base + buf->_bufsiz)) { buf->_ptr = buf->_base + buf->_bufsiz; buf->_eof = true; } buf->_cnt = (buf->_base + buf->_bufsiz) - buf->_ptr; } } /* ** Code taken from Heikki Orsila's amigadepack. Seems to have no license, ** so I'll assume it fits into wtfpl (wtfpl.net). Heikki should contact me ** if it shall not. ** Modified by 8bitbubsy **/ #define PP_READ_BITS(nbits, var) do { \ bitCnt = (nbits); \ while (bitsLeft < bitCnt) { \ if (bufSrc < src) return (false); \ bitBuffer |= (*--bufSrc << bitsLeft); \ bitsLeft += 8; \ } \ (var) = 0; \ bitsLeft -= bitCnt; \ while (bitCnt--) { \ (var) = ((var) << 1) | (bitBuffer & 1); \ bitBuffer >>= 1; \ } \ } while (0); uint8_t ppdecrunch(uint8_t *src, uint8_t *dst, uint8_t *offsetLens, uint32_t srcLen, uint32_t dstLen, uint8_t skipBits) { uint8_t *bufSrc, *dstEnd, *out, bitsLeft, bitCnt; uint32_t x, todo, offBits, offset, written, bitBuffer; if ((src == NULL) || (dst == NULL) || (offsetLens == NULL)) return (false); bitsLeft = 0; bitBuffer = 0; written = 0; bufSrc = src + srcLen; out = dst + dstLen; dstEnd = out; PP_READ_BITS(skipBits, x); while (written < dstLen) { PP_READ_BITS(1, x); if (x == 0) { todo = 1; do { PP_READ_BITS(2, x); todo += x; } while (x == 3); while (todo--) { PP_READ_BITS(8, x); if (out <= dst) return (false); *--out = (uint8_t)(x); written++; } if (written == dstLen) break; } PP_READ_BITS(2, x); offBits = offsetLens[x]; todo = x + 2; if (x == 3) { PP_READ_BITS(1, x); if (x == 0) offBits = 7; PP_READ_BITS((uint8_t)(offBits), offset); do { PP_READ_BITS(3, x); todo += x; } while (x == 7); } else { PP_READ_BITS((uint8_t)(offBits), offset); } if ((out + offset) >= dstEnd) return (false); while (todo--) { x = out[offset]; if (out <= dst) return (false); *--out = (uint8_t)(x); written++; } } return (true); } void setupNewMod(void) { int8_t i; uint8_t nameTextLen; // setup GUI text pointers for (i = 0; i < MOD_SAMPLES; ++i) { modEntry->samples[i].volumeDisp = &modEntry->samples[i].volume; modEntry->samples[i].lengthDisp = &modEntry->samples[i].length; modEntry->samples[i].loopStartDisp = &modEntry->samples[i].loopStart; modEntry->samples[i].loopLengthDisp = &modEntry->samples[i].loopLength; fillSampleRedoBuffer(i); } modSetPos(0, 0); modSetPattern(0); // set pattern to 00 instead of first order's pattern editor.currEditPatternDisp = &modEntry->currPattern; editor.currPosDisp = &modEntry->currOrder; editor.currPatternDisp = &modEntry->head.order[0]; editor.currPosEdPattDisp = &modEntry->head.order[0]; editor.currLengthDisp = &modEntry->head.orderCount; // calculate MOD size editor.ui.updateSongSize = true; editor.muted[0] = false; editor.muted[1] = false; editor.muted[2] = false; editor.muted[3] = false; editor.editMoveAdd = 1; editor.currSample = 0; editor.playTime = 0; editor.modLoaded = true; editor.blockMarkFlag = false; editor.sampleZero = false; editor.keypadSampleOffset = 0; setLEDFilter(false); // real PT doesn't do this there, but that's insane memset(editor.ui.pattNames, 0, MAX_PATTERNS * 16); updateWindowTitle(MOD_NOT_MODIFIED); if (moduleNameIsEmpty(modEntry->head.moduleTitle)) { terminalPrintf("Module \"untitled\" loaded\n"); } else { terminalPrintf("Module \""); nameTextLen = 20; for (i = 19; i >= 0; --i) { if (modEntry->head.moduleTitle[i] == '\0') nameTextLen--; else break; } for (i = 0; i < nameTextLen; ++i) { if (modEntry->head.moduleTitle[i] != '\0') teriminalPutChar(tolower(modEntry->head.moduleTitle[i])); else teriminalPutChar(' '); } terminalPrintf("\" loaded\n"); } modSetSpeed(6); if (modEntry->head.initBPM > 0) modSetTempo(modEntry->head.initBPM); else modSetTempo(125); updateCurrSample(); editor.samplePos = 0; updateSamplePos(); } protracker-2.3d.r92/src/pt_blep.c0000644000000000000000000000375213235646515015410 0ustar rootroot/* These BLEP routines were coded by aciddose, and he agreed on ** using the WTFPL license for the code. */ #include #include "pt_blep.h" #include "pt_helpers.h" static const uint32_t blepData[48] = { 0x3F7FE1F1, 0x3F7FD548, 0x3F7FD6A3, 0x3F7FD4E3, 0x3F7FAD85, 0x3F7F2152, 0x3F7DBFAE, 0x3F7ACCDF, 0x3F752F1E, 0x3F6B7384, 0x3F5BFBCB, 0x3F455CF2, 0x3F26E524, 0x3F0128C4, 0x3EACC7DC, 0x3E29E86B, 0x3C1C1D29, 0xBDE4BBE6, 0xBE3AAE04, 0xBE48DEDD, 0xBE22AD7E, 0xBDB2309A, 0xBB82B620, 0x3D881411, 0x3DDADBF3, 0x3DE2C81D, 0x3DAAA01F, 0x3D1E769A, 0xBBC116D7, 0xBD1402E8, 0xBD38A069, 0xBD0C53BB, 0xBC3FFB8C, 0x3C465FD2, 0x3CEA5764, 0x3D0A51D6, 0x3CEAE2D5, 0x3C92AC5A, 0x3BE4CBF7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; void blepAdd(blep_t *b, float offset, float amplitude) { int8_t n; uint32_t i; const float *blepSrc; float f; // ad [22/2/15]: these assertions are better than a fall-through! // // TODO: test the error condition and remove the fall-through // after a bug-fix if required, then restore the assertions. // PT_ASSERT(offset >= 0.0f); PT_ASSERT(offset <= 1.0f); if ((offset < 0.0f) || (offset > 1.0f)) return; i = (uint32_t)(offset * BLEP_SP); blepSrc = (const float *)(blepData) + i + BLEP_OS; f = (offset * BLEP_SP) - i; i = b->index; n = BLEP_NS; while (n--) { PT_ASSERT((blepSrc < (const float *)(&blepData[47])) && (i <= BLEP_RNS)); b->buffer[i] += (amplitude * LERP(blepSrc[0], blepSrc[1], f)); i++; i &= BLEP_RNS; blepSrc += BLEP_SP; } b->samplesLeft = BLEP_NS; } float blepRun(blep_t *b) { float blepOutput; blepOutput = b->buffer[b->index]; b->buffer[b->index] = 0.0f; b->index++; b->index &= BLEP_RNS; b->samplesLeft--; return (blepOutput); } protracker-2.3d.r92/src/pt_textout.c0000644000000000000000000010211713235646500016167 0ustar rootroot#include #include #include "pt_header.h" #include "pt_helpers.h" #include "pt_tables.h" #include "pt_palette.h" #include "pt_visuals.h" void charOut(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer; if (ch < ' ') return; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); fontPointer = fontBMP + (ch * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } } void charOutBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer; if (ch < ' ') return; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); fontPointer = fontBMP + (ch * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; frameBufferPointer += (SCREEN_W); if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; fontPointer += FONT_CHAR_W; frameBufferPointer += (SCREEN_W); } } void textOutNoSpace(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] <= ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } frameBufferPointer -= ((FONT_CHAR_H * SCREEN_W) - FONT_CHAR_W); } } void textOut(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] < ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } frameBufferPointer -= ((FONT_CHAR_H * SCREEN_W) - FONT_CHAR_W); } } void textOutBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] < ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; frameBufferPointer += (SCREEN_W); if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; fontPointer += FONT_CHAR_W; frameBufferPointer += (SCREEN_W); } frameBufferPointer -= (((FONT_CHAR_H * 2) * SCREEN_W) - FONT_CHAR_W); } } void printTwoDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "00", fontColor); } else { if (value > 99) value = 99; charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor); } } void printTwoDecimalsBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOutBig(frameBuffer, x, y, "00", fontColor); } else { if (value > 99) value = 99; charOutBig(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor); value /= 10; charOutBig(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor); } } void printThreeDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "000", fontColor); } else { if (value > 999) value = 999; charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor); } } void printFourDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "0000", fontColor); } else { if (value > 9999) value = 9999; charOut(frameBuffer, x + (FONT_CHAR_W * 3), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor); } } void printFiveDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "00000", fontColor); } else { if (value > 99999) value = 99999; charOut(frameBuffer, x + (FONT_CHAR_W * 4), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 3), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor); value /= 10; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor); } } // this one is used for module size and sampler screen display length (zeroes are padded with space) void printSixDecimals(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { char NumberText[7]; uint8_t i; if (value == 0) { textOut(frameBuffer, x, y, " 0", fontColor); } else { if (value > 999999) value = 999999; NumberText[6] = 0; NumberText[5] = '0' + (value % 10); value /= 10; NumberText[4] = '0' + (value % 10); value /= 10; NumberText[3] = '0' + (value % 10); value /= 10; NumberText[2] = '0' + (value % 10); value /= 10; NumberText[1] = '0' + (value % 10); value /= 10; NumberText[0] = '0' + (value % 10); i = 0; while (NumberText[i] == '0') NumberText[i++] = ' '; textOut(frameBuffer, x, y, NumberText, fontColor); } } void printOneHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { charOut(frameBuffer, x, y, hexTable[value & 15], fontColor); } void printOneHexBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { charOutBig(frameBuffer, x, y, hexTable[value & 15], fontColor); } void printTwoHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "00", fontColor); } else { value &= 0x000000FF; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[value >> 4], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[value & 15], fontColor); } } void printTwoHexBig(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOutBig(frameBuffer, x, y, "00", fontColor); } else { value &= 0x000000FF; charOutBig(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[value >> 4], fontColor); charOutBig(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[value & 15], fontColor); } } void printThreeHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "000", fontColor); } else { value &= 0x00000FFF; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 8], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 4)) >> 4], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[ value & 15], fontColor); } } void printFourHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "0000", fontColor); } else { value &= 0x0000FFFF; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 12], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 8)) >> 8], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[(value & (15 << 4)) >> 4], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 3), y, hexTable[ value & 15], fontColor); } } void printFiveHex(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor) { if (value == 0) { textOut(frameBuffer, x, y, "00000", fontColor); } else { value &= 0x000FFFFF; charOut(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 16], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 12)) >> 12], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[(value & (15 << 8)) >> 8], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 3), y, hexTable[(value & (15 << 4)) >> 4], fontColor); charOut(frameBuffer, x + (FONT_CHAR_W * 4), y, hexTable[ value & 15], fontColor); } } void charOutBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor, uint32_t backColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer; if (ch < ' ') return; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); fontPointer = fontBMP + (ch * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } } void charOutBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint8_t ch, uint32_t fontColor, uint32_t backColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer; if (ch < ' ') return; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); fontPointer = fontBMP + (ch * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; frameBufferPointer += (SCREEN_W); if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; fontPointer += FONT_CHAR_W; frameBufferPointer += (SCREEN_W); } } void textOutBgNoSpace(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] <= ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } frameBufferPointer -= ((FONT_CHAR_H * SCREEN_W) - FONT_CHAR_W); } } void textOutBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] < ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; fontPointer += FONT_CHAR_W; frameBufferPointer += SCREEN_W; } frameBufferPointer -= ((FONT_CHAR_H * SCREEN_W) - FONT_CHAR_W); } } void textOutBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, const char *text, uint32_t fontColor, uint32_t backColor) { const uint8_t *fontPointer; uint8_t line; uint32_t *frameBufferPointer, i; frameBufferPointer = frameBuffer + ((y * SCREEN_W) + x); for (i = 0; text[i]; ++i) { if (text[i] < ' ') { frameBufferPointer += FONT_CHAR_W; continue; } fontPointer = fontBMP + (text[i] * (FONT_CHAR_W * FONT_CHAR_H)); line = FONT_CHAR_H; while (line--) { if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; frameBufferPointer += (SCREEN_W); if (*(fontPointer + 0)) *(frameBufferPointer + 0) = fontColor; else *(frameBufferPointer + 0) = backColor; if (*(fontPointer + 1)) *(frameBufferPointer + 1) = fontColor; else *(frameBufferPointer + 1) = backColor; if (*(fontPointer + 2)) *(frameBufferPointer + 2) = fontColor; else *(frameBufferPointer + 2) = backColor; if (*(fontPointer + 3)) *(frameBufferPointer + 3) = fontColor; else *(frameBufferPointer + 3) = backColor; if (*(fontPointer + 4)) *(frameBufferPointer + 4) = fontColor; else *(frameBufferPointer + 4) = backColor; if (*(fontPointer + 5)) *(frameBufferPointer + 5) = fontColor; else *(frameBufferPointer + 5) = backColor; if (*(fontPointer + 6)) *(frameBufferPointer + 6) = fontColor; else *(frameBufferPointer + 6) = backColor; if (*(fontPointer + 7)) *(frameBufferPointer + 7) = fontColor; else *(frameBufferPointer + 7) = backColor; fontPointer += FONT_CHAR_W; frameBufferPointer += (SCREEN_W); } frameBufferPointer -= (((FONT_CHAR_H * 2) * SCREEN_W) - FONT_CHAR_W); } } void printTwoDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "00", fontColor, backColor); } else { if (value > 99) value = 99; charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor, backColor); } } void printTwoDecimalsBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBigBg(frameBuffer, x, y, "00", fontColor, backColor); } else { if (value > 99) value = 99; charOutBigBg(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBigBg(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor, backColor); } } void printThreeDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "000", fontColor, backColor); } else { if (value > 999) value = 999; charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor, backColor); } } void printFourDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "0000", fontColor, backColor); } else { if (value > 9999) value = 9999; charOutBg(frameBuffer, x + (FONT_CHAR_W * 3), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor, backColor); } } void printFiveDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "00000", fontColor, backColor); } else { if (value > 99999) value = 99999; charOutBg(frameBuffer, x + (FONT_CHAR_W * 4), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 3), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, '0' + (value % 10), fontColor, backColor); value /= 10; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, '0' + (value % 10), fontColor, backColor); } } // this one is used for module size and sampler screen display length (zeroes are padded with space) void printSixDecimalsBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { char NumberText[7]; uint8_t i; if (value == 0) { textOutBg(frameBuffer, x, y, " 0", fontColor, backColor); } else { if (value > 999999) value = 999999; NumberText[6] = 0; NumberText[5] = '0' + (value % 10); value /= 10; NumberText[4] = '0' + (value % 10); value /= 10; NumberText[3] = '0' + (value % 10); value /= 10; NumberText[2] = '0' + (value % 10); value /= 10; NumberText[1] = '0' + (value % 10); value /= 10; NumberText[0] = '0' + (value % 10); i = 0; while (NumberText[i] == '0') NumberText[i++] = ' '; textOutBg(frameBuffer, x, y, NumberText, fontColor, backColor); } } void printOneHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { charOutBg(frameBuffer, x, y, hexTable[value & 15], fontColor, backColor); } void printOneHexBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { charOutBigBg(frameBuffer, x, y, hexTable[value & 15], fontColor, backColor); } void printTwoHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "00", fontColor, backColor); } else { value &= 0x000000FF; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[value >> 4], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[value & 15], fontColor, backColor); } } void printTwoHexBigBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBigBg(frameBuffer, x, y, "00", fontColor, backColor); } else { value &= 0x000000FF; charOutBigBg(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[value >> 4], fontColor, backColor); charOutBigBg(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[value & 15], fontColor, backColor); } } void printThreeHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "000", fontColor, backColor); } else { value &= 0x00000FFF; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 8], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 4)) >> 4], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[ value & 15], fontColor, backColor); } } void printFourHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "0000", fontColor, backColor); } else { value &= 0x0000FFFF; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 12], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 8)) >> 8], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[(value & (15 << 4)) >> 4], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 3), y, hexTable[ value & 15], fontColor, backColor); } } void printFiveHexBg(uint32_t *frameBuffer, uint32_t x, uint32_t y, uint32_t value, uint32_t fontColor, uint32_t backColor) { if (value == 0) { textOutBg(frameBuffer, x, y, "00000", fontColor, backColor); } else { value &= 0x000FFFFF; charOutBg(frameBuffer, x + (FONT_CHAR_W * 0), y, hexTable[ value >> 16], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 1), y, hexTable[(value & (15 << 12)) >> 12], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 2), y, hexTable[(value & (15 << 8)) >> 8], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 3), y, hexTable[(value & (15 << 4)) >> 4], fontColor, backColor); charOutBg(frameBuffer, x + (FONT_CHAR_W * 4), y, hexTable[ value & 15], fontColor, backColor); } } void setPrevStatusMessage(void) { strcpy(editor.ui.statusMessage, editor.ui.prevStatusMessage); editor.ui.updateStatusText = true; } void setStatusMessage(const char *message, uint8_t carry) { if (carry) strcpy(editor.ui.prevStatusMessage, message); strcpy(editor.ui.statusMessage, message); editor.ui.updateStatusText = true; } void displayMsg(const char *msg) { editor.errorMsgActive = true; editor.errorMsgBlock = false; editor.errorMsgCounter = 0; if (*msg != '\0') setStatusMessage(msg, NO_CARRY); } void displayErrorMsg(const char *msg) { editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; if (*msg != '\0') setStatusMessage(msg, NO_CARRY); pointerErrorMode(); } protracker-2.3d.r92/src/pt_keyboard.h0000644000000000000000000000122613235646517016267 0ustar rootroot#ifndef __PT_KEYBOARD_H #define __PT_KEYBOARD_H #include #ifdef _WIN32 #include #endif #include char scanCodeToUSKey(SDL_Scancode key); void textMarkerMoveLeft(void); void textMarkerMoveRight(void); void textCharPrevious(void); void textCharNext(void); #ifdef _WIN32 LRESULT CALLBACK lowLevelKeyboardProc(int32_t nCode, WPARAM wParam, LPARAM lParam); #endif void updateKeyModifiers(void); void handleKeyRepeat(SDL_Scancode keyEntry); void keyUpHandler(SDL_Scancode keyEntry); void keyDownHandler(SDL_Scancode keyEntry, SDL_Keycode keyCode); void handleTextEditInputChar(char textChar); #endif protracker-2.3d.r92/src/pt_edit.c0000644000000000000000000014531213235646476015420 0ustar rootroot#include #include #include // tolower() #include #include #include #ifdef _WIN32 #include #else #include #endif #include "pt_header.h" #include "pt_helpers.h" #include "pt_textout.h" #include "pt_tables.h" #include "pt_audio.h" #include "pt_helpers.h" #include "pt_palette.h" #include "pt_diskop.h" #include "pt_mouse.h" #include "pt_sampler.h" #include "pt_visuals.h" #include "pt_keyboard.h" #include "pt_scopes.h" void setPattern(int16_t pattern); // pt_modplayer.c void jamAndPlaceSample(SDL_Keycode keyEntry, int8_t normalModes); uint8_t quantizeCheck(uint8_t row); uint8_t handleSpecialKeys(SDL_Scancode keyEntry); int8_t keyToNote(SDL_Keycode keyEntry); // used for re-rendering text object while editing it void updateTextObject(int16_t editObject) { switch (editObject) { default: break; case PTB_SONGNAME: editor.ui.updateSongName = true; break; case PTB_SAMPLENAME: editor.ui.updateCurrSampleName = true; break; case PTB_PE_PATT: editor.ui.updatePosEd = true; break; case PTB_PE_PATTNAME: editor.ui.updatePosEd = true; break; case PTB_EO_QUANTIZE: editor.ui.updateQuantizeText = true; break; case PTB_EO_METRO_1: editor.ui.updateMetro1Text = true; break; case PTB_EO_METRO_2: editor.ui.updateMetro2Text = true; break; case PTB_EO_FROM_NUM: editor.ui.updateFromText = true; break; case PTB_EO_TO_NUM: editor.ui.updateToText = true; break; case PTB_EO_MIX: editor.ui.updateMixText = true; break; case PTB_EO_POS_NUM: editor.ui.updatePosText = true; break; case PTB_EO_MOD_NUM: editor.ui.updateModText = true; break; case PTB_EO_VOL_NUM: editor.ui.updateVolText = true; break; case PTB_DO_DATAPATH: editor.ui.updateDiskOpPathText = true; break; case PTB_POSS: editor.ui.updateSongPos = true; break; case PTB_PATTERNS: editor.ui.updateSongPattern = true; break; case PTB_LENGTHS: editor.ui.updateSongLength = true; break; case PTB_SAMPLES: editor.ui.updateCurrSampleNum = true; break; case PTB_SVOLUMES: editor.ui.updateCurrSampleVolume = true; break; case PTB_SLENGTHS: editor.ui.updateCurrSampleLength = true; break; case PTB_SREPEATS: editor.ui.updateCurrSampleRepeat = true; break; case PTB_SREPLENS: editor.ui.updateCurrSampleReplen = true; break; case PTB_PATTDATA: editor.ui.updateCurrPattText = true; break; case PTB_SA_VOL_FROM_NUM: editor.ui.updateVolFromText = true; break; case PTB_SA_VOL_TO_NUM: editor.ui.updateVolToText = true; break; case PTB_SA_FIL_LP_CUTOFF: editor.ui.updateLPText = true; break; case PTB_SA_FIL_HP_CUTOFF: editor.ui.updateHPText = true; break; } } void exitGetTextLine(uint8_t updateValue) { int8_t tmp8; uint8_t i; int16_t posEdPos, tmp16; int32_t tmp32; UNICHAR *pathU; moduleSample_t *s; // if user updated the disk op path text if (editor.ui.diskOpScreenShown && (editor.ui.editObject == PTB_DO_DATAPATH)) { pathU = (UNICHAR *)(calloc(PATH_MAX_LEN + 2, sizeof (UNICHAR))); if (pathU != NULL) { #ifdef _WIN32 MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, editor.currPath, -1, pathU, PATH_MAX_LEN); #else strcpy(pathU, editor.currPath); #endif diskOpSetPath(pathU, DISKOP_CACHE); free(pathU); } } if (editor.ui.editTextType != TEXT_EDIT_STRING) { if (editor.ui.dstPos != editor.ui.numLen) removeTextEditMarker(); updateTextObject(editor.ui.editObject); } else { removeTextEditMarker(); // yet another hack to fix my stupid way of coding if ((editor.ui.editObject == PTB_PE_PATT) || (editor.ui.editObject == PTB_PE_PATTNAME)) editor.ui.updatePosEd = true; } editor.ui.editTextFlag = false; editor.ui.lineCurX = 0; editor.ui.lineCurY = 0; editor.ui.editPos = NULL; editor.ui.dstPos = 0; if (editor.ui.editTextType == TEXT_EDIT_STRING) { if (editor.ui.dstOffset != NULL) *editor.ui.dstOffset = '\0'; if (editor.ui.editObject == PTB_SONGNAME) { for (i = 0; i < 20; ++i) modEntry->head.moduleTitle[i] = (char)(tolower(modEntry->head.moduleTitle[i])); } if (editor.ui.editObject != PTB_DO_DATAPATH) // special case for disk op. right mouse button { pointerSetPreviousMode(); if (!editor.mixFlag && (editor.ui.editObject != PTB_PE_PATTNAME)) updateWindowTitle(MOD_IS_MODIFIED); } } else { // set back GUI text pointers and update values (if requested) s = &modEntry->samples[editor.currSample]; switch (editor.ui.editObject) { case PTB_SA_FIL_LP_CUTOFF: { editor.lpCutOffDisp = &editor.lpCutOff; if (updateValue) { editor.lpCutOff = editor.ui.tmpDisp32; if (editor.lpCutOff > (FILTERS_BASE_FREQ / 2)) editor.lpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateLPText = true; } } break; case PTB_SA_FIL_HP_CUTOFF: { editor.hpCutOffDisp = &editor.hpCutOff; if (updateValue) { editor.hpCutOff = editor.ui.tmpDisp32; if (editor.hpCutOff > (FILTERS_BASE_FREQ / 2)) editor.hpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateHPText = true; } } break; case PTB_SA_VOL_FROM_NUM: { editor.vol1Disp = &editor.vol1; if (updateValue) { editor.vol1 = editor.ui.tmpDisp16; if (editor.vol1 > 200) editor.vol1 = 200; editor.ui.updateVolFromText = true; showVolFromSlider(); } } break; case PTB_SA_VOL_TO_NUM: { editor.vol2Disp = &editor.vol2; if (updateValue) { editor.vol2 = editor.ui.tmpDisp16; if (editor.vol2 > 200) editor.vol2 = 200; editor.ui.updateVolToText = true; showVolToSlider(); } } break; case PTB_EO_VOL_NUM: { editor.sampleVolDisp = &editor.sampleVol; if (updateValue) { editor.sampleVol = editor.ui.tmpDisp16; editor.ui.updateVolText = true; } } break; case PTB_EO_POS_NUM: { editor.samplePosDisp = &editor.samplePos; if (updateValue) { editor.samplePos = editor.ui.tmpDisp32; if (editor.samplePos > modEntry->samples[editor.currSample].length) editor.samplePos = modEntry->samples[editor.currSample].length; editor.ui.updatePosText = true; } } break; case PTB_EO_QUANTIZE: { editor.quantizeValueDisp = &editor.quantizeValue; if (updateValue) { if (editor.ui.tmpDisp16 > 63) editor.ui.tmpDisp16 = 63; editor.quantizeValue = editor.ui.tmpDisp16; editor.ui.updateQuantizeText = true; } } break; case PTB_EO_METRO_1: // metronome speed { editor.metroSpeedDisp = &editor.metroSpeed; if (updateValue) { if (editor.ui.tmpDisp16 > 64) editor.ui.tmpDisp16 = 64; editor.metroSpeed = editor.ui.tmpDisp16; editor.ui.updateMetro1Text = true; } } break; case PTB_EO_METRO_2: // metronome channel { editor.metroChannelDisp = &editor.metroChannel; if (updateValue) { if (editor.ui.tmpDisp16 > 4) editor.ui.tmpDisp16 = 4; editor.metroChannel = editor.ui.tmpDisp16; editor.ui.updateMetro2Text = true; } } break; case PTB_EO_FROM_NUM: { editor.sampleFromDisp = &editor.sampleFrom; if (updateValue) { editor.sampleFrom = editor.ui.tmpDisp8; // signed check + normal check if ((editor.sampleFrom < 0x00) || (editor.sampleFrom > 0x1F)) editor.sampleFrom = 0x1F; editor.ui.updateFromText = true; } } break; case PTB_EO_TO_NUM: { editor.sampleToDisp = &editor.sampleTo; if (updateValue) { editor.sampleTo = editor.ui.tmpDisp8; // signed check + normal check if ((editor.sampleTo < 0x00) || (editor.sampleTo > 0x1F)) editor.sampleTo = 0x1F; editor.ui.updateToText = true; } } break; case PTB_PE_PATT: { posEdPos = modEntry->currOrder; if (posEdPos > (modEntry->head.orderCount - 1)) posEdPos = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[posEdPos]; if (updateValue) { if (editor.ui.tmpDisp16 > (MAX_PATTERNS - 1)) editor.ui.tmpDisp16 = MAX_PATTERNS - 1; modEntry->head.order[posEdPos] = editor.ui.tmpDisp16; updateWindowTitle(MOD_IS_MODIFIED); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPattern = true; editor.ui.updateSongSize = true; } } break; case PTB_POSS: { editor.currPosDisp = &modEntry->currOrder; if (updateValue) { tmp16 = editor.ui.tmpDisp16; if (tmp16 > 126) tmp16 = 126; if (modEntry->currOrder != tmp16) { modEntry->currOrder = tmp16; editor.currPatternDisp = &modEntry->head.order[modEntry->currOrder]; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPos = true; editor.ui.updatePatternData = true; } } } break; case PTB_PATTERNS: { editor.currPatternDisp = &modEntry->head.order[modEntry->currOrder]; if (updateValue) { tmp16 = editor.ui.tmpDisp16; if (tmp16 > (MAX_PATTERNS - 1)) tmp16 = MAX_PATTERNS - 1; if (modEntry->head.order[modEntry->currOrder] != tmp16) { modEntry->head.order[modEntry->currOrder] = tmp16; updateWindowTitle(MOD_IS_MODIFIED); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPattern = true; editor.ui.updateSongSize = true; } } } break; case PTB_LENGTHS: { editor.currLengthDisp = &modEntry->head.orderCount; if (updateValue) { tmp16 = CLAMP(editor.ui.tmpDisp16, 1, 127); if (modEntry->head.orderCount != tmp16) { modEntry->head.orderCount = tmp16; posEdPos = modEntry->currOrder; if (posEdPos > (modEntry->head.orderCount - 1)) posEdPos = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[posEdPos]; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongLength = true; editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); } } } break; case PTB_PATTDATA: { editor.currEditPatternDisp = &modEntry->currPattern; if (updateValue) { if (modEntry->currPattern != editor.ui.tmpDisp16) { setPattern(editor.ui.tmpDisp16); editor.ui.updatePatternData = true; editor.ui.updateCurrPattText = true; } } } break; case PTB_SAMPLES: { editor.currSampleDisp = &editor.currSample; if (updateValue) { tmp8 = editor.ui.tmpDisp8; if (tmp8 < 0x00) // (signed) if >0x7F was entered, clamp to 0x1F tmp8 = 0x1F; tmp8 = CLAMP(tmp8, 0x01, 0x1F) - 1; if (tmp8 != editor.currSample) { editor.currSample = tmp8; updateCurrSample(); } } } break; case PTB_SVOLUMES: { s->volumeDisp = &s->volume; if (updateValue) { tmp8 = editor.ui.tmpDisp8; // signed check + normal check if ((tmp8 < 0x00) || (tmp8 > 0x40)) tmp8 = 0x40; if (s->volume != tmp8) { s->volume = tmp8; editor.ui.updateCurrSampleVolume = true; updateWindowTitle(MOD_IS_MODIFIED); } } } break; case PTB_SLENGTHS: { s->lengthDisp = &s->length; if (updateValue) { tmp32 = editor.ui.tmpDisp32 & 0xFFFFFFFE; // even'ify if (tmp32 > MAX_SAMPLE_LEN) tmp32 = MAX_SAMPLE_LEN; if ((s->loopStart + s->loopLength) > 2) { if (tmp32 < (s->loopStart + s->loopLength)) tmp32 = s->loopStart + s->loopLength; } if (s->length != tmp32) { turnOffVoices(); s->length = tmp32; editor.ui.updateCurrSampleLength = true; editor.ui.updateSongSize = true; updateSamplePos(); if (editor.ui.samplerScreenShown) redrawSample(); recalcChordLength(); updateWindowTitle(MOD_IS_MODIFIED); } } } break; case PTB_SREPEATS: { s->loopStartDisp = &s->loopStart; if (updateValue) { tmp32 = editor.ui.tmpDisp32 & 0xFFFFFFFE; // even'ify if (tmp32 > MAX_SAMPLE_LEN) tmp32 = MAX_SAMPLE_LEN; if (s->length >= s->loopLength) { if ((tmp32 + s->loopLength) > s->length) tmp32 = s->length - s->loopLength; } else { tmp32 = 0; } if (s->loopStart != tmp32) { turnOffVoices(); s->loopStart = tmp32; mixerUpdateLoops(); editor.ui.updateCurrSampleRepeat = true; if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) editor.ui.updateLengthText = true; if (editor.ui.samplerScreenShown) setLoopSprites(); updateWindowTitle(MOD_IS_MODIFIED); } } } break; case PTB_SREPLENS: { s->loopLengthDisp = &s->loopLength; if (updateValue) { tmp32 = editor.ui.tmpDisp32 & 0xFFFFFFFE; // even'ify if (tmp32 > MAX_SAMPLE_LEN) tmp32 = MAX_SAMPLE_LEN; if (s->length >= s->loopStart) { if ((s->loopStart + tmp32) > s->length) tmp32 = s->length - s->loopStart; } else { tmp32 = 2; } if (tmp32 < 2) tmp32 = 2; if (s->loopLength != tmp32) { turnOffVoices(); s->loopLength = tmp32; mixerUpdateLoops(); editor.ui.updateCurrSampleReplen = true; if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) editor.ui.updateLengthText = true; if (editor.ui.samplerScreenShown) setLoopSprites(); updateWindowTitle(MOD_IS_MODIFIED); } } } break; default: break; } pointerSetPreviousMode(); } editor.ui.editTextType = 0; } void getTextLine(int16_t editObject) { pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); editor.ui.lineCurY = (editor.ui.editTextPos / 40) + 5; editor.ui.lineCurX = ((editor.ui.editTextPos % 40) * FONT_CHAR_W) + 4; editor.ui.dstPtr = editor.ui.showTextPtr; editor.ui.editPos = editor.ui.showTextPtr; editor.ui.dstPos = 0; editor.ui.editTextFlag = true; editor.ui.editTextType = TEXT_EDIT_STRING; editor.ui.editObject = editObject; if (editor.ui.dstOffset != NULL) *editor.ui.dstOffset = '\0'; if (editor.mixFlag) { textCharNext(); textCharNext(); textCharNext(); textCharNext(); } renderTextEditMarker(); } void getNumLine(uint8_t type, int16_t editObject) { pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); editor.ui.lineCurY = (editor.ui.editTextPos / 40) + 5; editor.ui.lineCurX = ((editor.ui.editTextPos % 40) * FONT_CHAR_W) + 4; editor.ui.dstPos = 0; editor.ui.editTextFlag = true; editor.ui.editTextType = type; editor.ui.editObject = editObject; renderTextEditMarker(); } void handleEditKeys(SDL_Scancode keyEntry, int8_t normalMode) { int8_t key, hexKey, numberKey; SDL_Keycode keyCode; note_t *note; if (editor.ui.editTextFlag) return; keyCode = scanCodeToUSKey(keyEntry); if (editor.ui.samplerScreenShown || ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_PLAY))) { // at this point it will only jam, not place it if (!input.keyb.leftAltKeyDown && !input.keyb.leftAmigaKeyDown && !input.keyb.leftCtrlKeyDown && !input.keyb.shiftKeyDown) jamAndPlaceSample(keyCode, normalMode); return; } // handle modified (ALT/CTRL/SHIFT etc) keys for editing if ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD)) { if (handleSpecialKeys(keyEntry)) { if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 63); return; } } // if we held down any key modifier at this point, then do nothing if (input.keyb.leftAltKeyDown || input.keyb.leftAmigaKeyDown || input.keyb.leftCtrlKeyDown || input.keyb.shiftKeyDown) return; // are we editing a note, or other stuff? if (editor.cursor.mode != CURSOR_NOTE) { if ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD)) { numberKey = ((keyCode > 47) && (keyCode < 58)) ? ((int8_t)(keyCode) - 48) : -1; hexKey = ((keyCode > 96) && (keyCode < 103)) ? ((int8_t)(keyCode) - 87) : -1; key = -1; if (numberKey != -1) { if (key == -1) key = 0; key += numberKey; } if (hexKey != -1) { if (key == -1) key = 0; key += hexKey; } note = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; switch (editor.cursor.mode) { case CURSOR_SAMPLE1: { if ((key != -1) && (key < 2)) { note->sample = (uint8_t)((note->sample % 0x10) | (key << 4)); if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } break; case CURSOR_SAMPLE2: { if ((key != -1) && (key < 16)) { note->sample = (uint8_t)((note->sample & 16) | key); if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } break; case CURSOR_CMD: { if ((key != -1) && (key < 16)) { note->command = (uint8_t)(key); if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } break; case CURSOR_PARAM1: { if ((key != -1) && (key < 16)) { note->param = (uint8_t)((note->param % 0x10) | (key << 4)); if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } break; case CURSOR_PARAM2: { if ((key != -1) && (key < 16)) { note->param = (uint8_t)((note->param & 0xF0) | key); if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } break; default: break; } } } else { if (keyEntry == SDL_SCANCODE_DELETE) { if ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD)) { note = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; if (!input.keyb.leftAltKeyDown) { note->sample = 0; note->period = 0; } if (input.keyb.shiftKeyDown || input.keyb.leftAltKeyDown) { note->command = 0; note->param = 0; } if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 63); updateWindowTitle(MOD_IS_MODIFIED); } } else { jamAndPlaceSample(keyCode, normalMode); } } } uint8_t handleSpecialKeys(SDL_Scancode keyEntry) { note_t *note, *prevNote; if (input.keyb.leftAltKeyDown) { note = &modEntry->patterns[modEntry->currPattern][(modEntry->currRow * AMIGA_VOICES) + editor.cursor.channel]; prevNote = &modEntry->patterns[modEntry->currPattern][(((modEntry->currRow - 1) & 0x3F) * AMIGA_VOICES) + editor.cursor.channel]; if ((keyEntry >= SDL_SCANCODE_1) && (keyEntry <= SDL_SCANCODE_0)) { // insert stored effect (buffer[0..8]) note->command = editor.effectMacros[keyEntry - SDL_SCANCODE_1] >> 8; note->param = editor.effectMacros[keyEntry - SDL_SCANCODE_1] & 0xFF; updateWindowTitle(MOD_IS_MODIFIED); return (true); } // copy command+effect from above into current command+effect if (keyEntry == SDL_SCANCODE_BACKSLASH) { note->command = prevNote->command; note->param = prevNote->param; updateWindowTitle(MOD_IS_MODIFIED); return (true); } // copy command+(effect + 1) from above into current command+effect if (keyEntry == SDL_SCANCODE_EQUALS/* || (keyEntry == SDL_SCANCODE_WORLD_0)*/) // SDL_SCANCODE_WORLD_0 on OS X (weird) { note->command = prevNote->command; note->param = prevNote->param + 1; // wraps 0x00..0xFF updateWindowTitle(MOD_IS_MODIFIED); return (true); } // copy command+(effect - 1) from above into current command+effect if (keyEntry == SDL_SCANCODE_MINUS/*|| (keyEntry == SDL_SCANCODE_PLUS)*/) // SDL_SCANCODE_PLUS on OS X (weird) { note->command = prevNote->command; note->param = prevNote->param - 1; // wraps 0x00..0xFF updateWindowTitle(MOD_IS_MODIFIED); return (true); } } return (false); } void jamAndPlaceSample(SDL_Keycode keyEntry, int8_t normalMode) { int8_t noteVal; uint8_t ch; int16_t tempPeriod; uint16_t cleanPeriod; moduleChannel_t *chn; moduleSample_t *s; note_t *note; ch = editor.cursor.channel; PT_ASSERT(ch < AMIGA_VOICES); if (ch >= AMIGA_VOICES) return; chn = &modEntry->channels[ch]; note = &modEntry->patterns[modEntry->currPattern][(quantizeCheck(modEntry->currRow) * AMIGA_VOICES) + ch]; noteVal = normalMode ? keyToNote(keyEntry) : pNoteTable[editor.currSample]; if (noteVal >= 0) { s = &modEntry->samples[editor.currSample]; tempPeriod = periodTable[(37 * s->fineTune) + noteVal]; cleanPeriod = periodTable[noteVal]; editor.currPlayNote = noteVal; // play current sample if (!editor.muted[ch]) { // don't play sample if we quantized to another row (will be played in modplayer instead) if (!((editor.currMode == MODE_RECORD) && editor.didQuantize)) { if (s->length == 0) { mixerKillVoice(ch); } else { chn->n_samplenum = editor.currSample; chn->n_volume = s->volume; chn->n_period = tempPeriod; chn->n_start = &modEntry->sampleData[s->offset]; chn->n_length = (s->loopStart > 0) ? (s->loopStart + s->loopLength) : s->length; // yes, this is correct. Do not touch chn->n_loopstart = &modEntry->sampleData[s->offset + s->loopStart]; chn->n_replen = s->loopLength; if (chn->n_length == 0) chn->n_length = 2; paulaSetVolume(ch, chn->n_volume); paulaSetPeriod(ch, chn->n_period); paulaSetData(ch, chn->n_start); paulaSetLength(ch, chn->n_length); paulaRestartDMA(ch); // these take effect after the current DMA cycle is done paulaSetData(ch, chn->n_loopstart); paulaSetLength(ch, chn->n_replen); } } } // normalMode = normal keys, or else keypad keys (in jam mode) if (normalMode || (editor.pNoteFlag != 0)) { if (normalMode || (editor.pNoteFlag == 2)) { // insert note and sample number if (!editor.ui.samplerScreenShown && ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD))) { note->sample = editor.sampleZero ? 0 : (editor.currSample + 1); note->period = cleanPeriod; if (editor.autoInsFlag) { note->command = editor.effectMacros[editor.autoInsSlot] >> 8; note->param = editor.effectMacros[editor.autoInsSlot] & 0xFF; } if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } if (editor.multiFlag) { editor.cursor.channel = (editor.multiModeNext[editor.cursor.channel] - 1) & 3; editor.cursor.pos = editor.cursor.channel * 6; updateCursorPos(); } } updateSpectrumAnalyzer(editor.cursor.channel, s->volume, tempPeriod); } else if (noteVal == -2) { // delete note and sample if illegal note (= -2, -1 = ignore) key was entered if (normalMode || (!normalMode && editor.pNoteFlag == 2)) { if (!editor.ui.samplerScreenShown && ((editor.currMode == MODE_EDIT) || (editor.currMode == MODE_RECORD))) { note->period = 0; note->sample = 0; if (editor.currMode != MODE_RECORD) modSetPos(DONT_SET_ORDER, (modEntry->currRow + editor.editMoveAdd) & 0x3F); updateWindowTitle(MOD_IS_MODIFIED); } } } } uint8_t quantizeCheck(uint8_t row) { uint8_t tempRow, quantize; quantize = (uint8_t)(editor.quantizeValue); editor.didQuantize = false; if (editor.currMode == MODE_RECORD) { if (quantize == 0) { return (row); } else if (quantize == 1) { if (editor.modTick > (editor.modSpeed / 2)) { row = (row + 1) & 0x3F; editor.didQuantize = true; } } else { tempRow = ((((quantize / 2) + row) & 0x3F) / quantize) * quantize; if (tempRow > row) editor.didQuantize = true; return (tempRow); } } return (row); } void saveUndo(void) { memcpy(editor.undoBuffer, modEntry->patterns[modEntry->currPattern], sizeof (note_t) * (AMIGA_VOICES * MOD_ROWS)); } void undoLastChange(void) { uint16_t i; note_t data; for (i = 0; i < (MOD_ROWS * AMIGA_VOICES); ++i) { data = editor.undoBuffer[i]; editor.undoBuffer[i] = modEntry->patterns[modEntry->currPattern][i]; modEntry->patterns[modEntry->currPattern][i] = data; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void copySampleTrack(void) { uint8_t i, j; uint32_t tmpOffset; note_t *noteSrc; moduleSample_t *smpFrom, *smpTo; if (editor.trackPattFlag == 2) { // copy from one sample slot to another // never attempt to swap if from and/or to is 0 if ((editor.sampleFrom == 0) || (editor.sampleTo == 0)) { displayErrorMsg("FROM/TO = 0 !"); return; } smpTo = &modEntry->samples[editor.sampleTo - 1]; smpFrom = &modEntry->samples[editor.sampleFrom - 1]; turnOffVoices(); // copy tmpOffset = smpTo->offset; *smpTo = *smpFrom; smpTo->offset = tmpOffset; // update the copied sample's GUI text pointers smpTo->volumeDisp = &smpTo->volume; smpTo->lengthDisp = &smpTo->length; smpTo->loopStartDisp = &smpTo->loopStart; smpTo->loopLengthDisp = &smpTo->loopLength; // copy sample data memcpy(&modEntry->sampleData[smpTo->offset], &modEntry->sampleData[smpFrom->offset], MAX_SAMPLE_LEN); updateCurrSample(); editor.ui.updateSongSize = true; } else { // copy sample number in track/pattern if (editor.trackPattFlag == 0) { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (noteSrc->sample == editor.sampleFrom) noteSrc->sample = editor.sampleTo; } } else { for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (noteSrc->sample == editor.sampleFrom) noteSrc->sample = editor.sampleTo; } } } editor.ui.updatePatternData = true; } editor.samplePos = 0; updateSamplePos(); updateWindowTitle(MOD_IS_MODIFIED); } void exchSampleTrack(void) { int8_t smp; uint8_t i, j; uint32_t k, tmpOffset; moduleSample_t *smpFrom, *smpTo, smpTmp; note_t *noteSrc; if (editor.trackPattFlag == 2) { // exchange sample slots // never attempt to swap if from and/or to is 0 if ((editor.sampleFrom == 0) || (editor.sampleTo == 0)) { displayErrorMsg("FROM/TO = 0 !"); return; } smpTo = &modEntry->samples[editor.sampleTo - 1]; smpFrom = &modEntry->samples[editor.sampleFrom - 1]; turnOffVoices(); // swap offsets first so that the next swap will leave offsets intact tmpOffset = smpFrom->offset; smpFrom->offset = smpTo->offset; smpTo->offset = tmpOffset; // swap sample (now offsets are left as before) smpTmp = *smpFrom; *smpFrom = *smpTo; *smpTo = smpTmp; // update the swapped sample's GUI text pointers smpFrom->volumeDisp = &smpFrom->volume; smpFrom->lengthDisp = &smpFrom->length; smpFrom->loopStartDisp = &smpFrom->loopStart; smpFrom->loopLengthDisp = &smpFrom->loopLength; smpTo->volumeDisp = &smpTo->volume; smpTo->lengthDisp = &smpTo->length; smpTo->loopStartDisp = &smpTo->loopStart; smpTo->loopLengthDisp = &smpTo->loopLength; // swap sample data for (k = 0; k < MAX_SAMPLE_LEN; ++k) { smp = modEntry->sampleData[smpFrom->offset + k]; modEntry->sampleData[smpFrom->offset + k] = modEntry->sampleData[smpTo->offset + k]; modEntry->sampleData[smpTo->offset + k] = smp; } editor.sampleZero = false; updateCurrSample(); } else { // exchange sample number in track/pattern if (editor.trackPattFlag == 0) { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (noteSrc->sample == editor.sampleFrom) noteSrc->sample = editor.sampleTo; else if (noteSrc->sample == editor.sampleTo) noteSrc->sample = editor.sampleFrom; } } else { for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (noteSrc->sample == editor.sampleFrom) noteSrc->sample = editor.sampleTo; else if (noteSrc->sample == editor.sampleTo) noteSrc->sample = editor.sampleFrom; } } } editor.ui.updatePatternData = true; } editor.samplePos = 0; updateSamplePos(); updateWindowTitle(MOD_IS_MODIFIED); } void delSampleTrack(void) { uint8_t i, j; note_t *noteSrc; saveUndo(); if (editor.trackPattFlag == 0) { for (i = 0; i < MOD_ROWS; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (noteSrc->sample == (editor.currSample + 1)) { noteSrc->period = 0; noteSrc->sample = 0; noteSrc->command = 0; noteSrc->param = 0; } } } else { for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (noteSrc->sample == (editor.currSample + 1)) { noteSrc->period = 0; noteSrc->sample = 0; noteSrc->command = 0; noteSrc->param = 0; } } } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void trackNoteUp(uint8_t sampleAllFlag, uint8_t from, uint8_t to) { uint8_t i, j, noteDeleted; note_t *noteSrc; if (from > to) { j = from; from = to; to = j; } saveUndo(); for (i = from; i <= to; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (j = 0; j < 36; ++j) { if (noteSrc->period >= periodTable[j]) break; } noteDeleted = false; if (++j > 35) { j = 35; if (editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } } if (!noteDeleted) noteSrc->period = periodTable[j]; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void trackNoteDown(uint8_t sampleAllFlag, uint8_t from, uint8_t to) { int8_t j; uint8_t i, noteDeleted; note_t *noteSrc; if (from > to) { j = from; from = to; to = j; } saveUndo(); for (i = from; i <= to; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (j = 0; j < 36; ++j) { if (noteSrc->period >= periodTable[j]) break; } noteDeleted = false; if (--j < 0) { j = 0; if (editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } } if (!noteDeleted) noteSrc->period = periodTable[j]; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void trackOctaUp(uint8_t sampleAllFlag, uint8_t from, uint8_t to) { uint8_t i, j, noteDeleted; note_t *noteSrc; if (from > to) { j = from; from = to; to = j; } saveUndo(); for (i = from; i <= to; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (j = 0; j < 36; ++j) { if (noteSrc->period >= periodTable[j]) break; } noteDeleted = false; if (((j + 12) > 35) && editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } if (j <= 23) j += 12; if (!noteDeleted) noteSrc->period = periodTable[j]; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void trackOctaDown(uint8_t sampleAllFlag, uint8_t from, uint8_t to) { int8_t j; uint8_t i, noteDeleted; note_t *noteSrc; if (from > to) { j = from; from = to; to = j; } saveUndo(); for (i = from; i <= to; ++i) { noteSrc = &modEntry->patterns[modEntry->currPattern][(i * AMIGA_VOICES) + editor.cursor.channel]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (j = 0; j < 36; ++j) { if (noteSrc->period >= periodTable[j]) break; } noteDeleted = false; if (((j - 12) < 0) && editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } if (j >= 12) j -= 12; if (!noteDeleted) noteSrc->period = periodTable[j]; } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void pattNoteUp(uint8_t sampleAllFlag) { uint8_t i, j, k, noteDeleted; note_t *noteSrc; saveUndo(); for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (k = 0; k < 36; ++k) { if (noteSrc->period >= periodTable[k]) break; } noteDeleted = false; if (++k > 35) { k = 35; if (editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } } if (!noteDeleted) noteSrc->period = periodTable[k]; } } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void pattNoteDown(uint8_t sampleAllFlag) { int8_t k; uint8_t i, j, noteDeleted; note_t *noteSrc; saveUndo(); for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (k = 0; k < 36; ++k) { if (noteSrc->period >= periodTable[k]) break; } noteDeleted = false; if (--k < 0) { k = 0; if (editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } } if (!noteDeleted) noteSrc->period = periodTable[k]; } } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void pattOctaUp(uint8_t sampleAllFlag) { uint8_t i, j, k, noteDeleted; note_t *noteSrc; saveUndo(); for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (k = 0; k < 36; ++k) { if (noteSrc->period >= periodTable[k]) break; } noteDeleted = false; if (((k + 12) > 35) && editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } if (k <= 23) k += 12; if (!noteDeleted) noteSrc->period = periodTable[k]; } } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } void pattOctaDown(uint8_t sampleAllFlag) { int8_t k; uint8_t i, j, noteDeleted; note_t *noteSrc; saveUndo(); for (i = 0; i < AMIGA_VOICES; ++i) { for (j = 0; j < MOD_ROWS; ++j) { noteSrc = &modEntry->patterns[modEntry->currPattern][(j * AMIGA_VOICES) + i]; if (!sampleAllFlag && (noteSrc->sample != (editor.currSample + 1))) continue; if (noteSrc->period) { // period -> note for (k = 0; k < 36; ++k) { if (noteSrc->period >= periodTable[k]) break; } noteDeleted = false; if (((k - 12) < 0) && editor.transDelFlag) { noteSrc->period = 0; noteSrc->sample = 0; noteDeleted = true; } if (k >= 12) k -= 12; if (!noteDeleted) noteSrc->period = periodTable[k]; } } } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updatePatternData = true; } int8_t keyToNote(SDL_Keycode keyEntry) { int8_t noteFound; uint8_t rawNote, rawKey, i, keyTransition; rawNote = 0; rawKey = 0; noteFound = false; // lookup note by raw key for (i = 0; i < sizeof (unshiftedKeymap); ++i) { if (keyEntry == unshiftedKeymap[i]) { rawKey = i + 1; break; } } for (i = 0; i < sizeof (rawKeyScaleTable); ++i) { if (rawKey == rawKeyScaleTable[i]) { rawNote = i; noteFound = true; break; } } // was a note found in range? if (noteFound) { keyTransition = kbdTransTable[editor.keyOctave][rawNote]; if (keyTransition < 36) return (keyTransition); if (keyTransition == 37) return (-2); // delete note/sample (only for pattern editing/record) } return (-1); // not a note key } protracker-2.3d.r92/src/pt_helpers.c0000644000000000000000000001203313235646517016122 0ustar rootroot#include #include #include #include #include #include // toupper() #ifndef _WIN32 #include #endif #include "pt_helpers.h" #include "pt_header.h" #include "pt_tables.h" #include "pt_palette.h" extern SDL_Window *window; // pt_main.c int32_t my_strnicmp(const char *s1, const char *s2, size_t n) { const char *s2end = s2 + n; while ((s2 < s2end) && (*s2 != 0) && (toupper(*s1) == toupper(*s2))) { ++s1; ++s2; } if (s2end == s2) return (0); return (int32_t)(toupper(*s1) - toupper(*s2)); } int32_t my_stricmp(const char *s1, const char *s2) { while ((*s2 != '\0') && (toupper(*s1) == toupper(*s2))) { ++s1; ++s2; } return (int32_t)(toupper(*s1) - toupper(*s2)); } void showErrorMsgBox(const char *fmt, ...) { char strBuf[1024]; va_list args; // format the text string va_start(args, fmt); vsnprintf(strBuf, sizeof (strBuf), fmt, args); va_end(args); // window can be NULL here, no problem... SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Critical Error", strBuf, window); } #ifndef _WIN32 int8_t changePathToHome(void) { char *homePath; homePath = getenv("HOME"); if ((homePath != NULL) && (chdir(homePath) == 0)) return (true); return (false); } #endif int8_t sampleNameIsEmpty(char *name) { uint8_t i, n; if (name == NULL) return (true); n = 0; for (i = 0; i < 22; ++i) { if (name[i] == '\0') ++n; } return (n == 22); } int8_t moduleNameIsEmpty(char *name) { uint8_t i, n; if (name == NULL) return (true); n = 0; for (i = 0; i < 20; ++i) { if (name[i] == '\0') ++n; } return (n == 20); } void updateWindowTitle(int8_t modified) { char titleTemp[128]; if (modified) modEntry->modified = true; if (modEntry->head.moduleTitle[0] != '\0') { if (modified) { if (editor.diskop.modDot) sprintf(titleTemp, "ProTracker v2.3D clone *(mod.%s) - compiled %s", modEntry->head.moduleTitle, __DATE__); else sprintf(titleTemp, "ProTracker v2.3D clone *(%s.mod) - compiled %s", modEntry->head.moduleTitle, __DATE__); } else { if (editor.diskop.modDot) sprintf(titleTemp, "ProTracker v2.3D clone (mod.%s) - compiled %s", modEntry->head.moduleTitle, __DATE__); else sprintf(titleTemp, "ProTracker v2.3D clone (%s.mod) - compiled %s", modEntry->head.moduleTitle, __DATE__); } } else { if (modified) { if (editor.diskop.modDot) sprintf(titleTemp, "ProTracker v2.3D clone *(mod.untitled) - compiled %s", __DATE__); else sprintf(titleTemp, "ProTracker v2.3D clone *(untitled.mod) - compiled %s", __DATE__); } else { if (editor.diskop.modDot) sprintf(titleTemp, "ProTracker v2.3D clone (mod.untitled) - compiled %s", __DATE__); else sprintf(titleTemp, "ProTracker v2.3D clone (untitled.mod) - compiled %s", __DATE__); } } SDL_SetWindowTitle(window, titleTemp); } void recalcChordLength(void) { int8_t note; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; if (editor.chordLengthMin) { note = MAX(MAX((editor.note1 == 36) ? -1 : editor.note1, (editor.note2 == 36) ? -1 : editor.note2), MAX((editor.note3 == 36) ? -1 : editor.note3, (editor.note4 == 36) ? -1 : editor.note4)); } else { note = MIN(MIN(editor.note1, editor.note2), MIN(editor.note3, editor.note4)); } if ((note < 0) || (note > 35)) { editor.chordLength = 0; } else { PT_ASSERT(editor.tuningNote < 36); if (editor.tuningNote < 36) { editor.chordLength = ((s->length * periodTable[(37 * s->fineTune) + note]) / periodTable[editor.tuningNote]) & 0xFFFFFFFE; if (editor.chordLength > MAX_SAMPLE_LEN) editor.chordLength = MAX_SAMPLE_LEN; } } if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) editor.ui.updateLengthText = true; } uint8_t hexToInteger2(char *ptr) { char lo, hi; // This routine must ONLY be used on an address // where two bytes can be read. It will mess up // if the ASCII values are not '0 .. 'F' hi = ptr[0]; lo = ptr[1]; // high nybble if (hi >= 'a') hi -= ' '; hi -= '0'; if (hi > 9) hi -= 7; // low nybble if (lo >= 'a') lo -= ' '; lo -= '0'; if (lo > 9) lo -= 7; return ((hi << 4) | lo); } protracker-2.3d.r92/src/pt_mouse.c0000644000000000000000000053624613235646502015623 0ustar rootroot#include #include #include #include #ifndef _WIN32 #include #endif #include "pt_header.h" #include "pt_mouse.h" #include "pt_helpers.h" #include "pt_palette.h" #include "pt_diskop.h" #include "pt_sampler.h" #include "pt_modloader.h" #include "pt_edit.h" #include "pt_sampleloader.h" #include "pt_visuals.h" #include "pt_tables.h" #include "pt_audio.h" #include "pt_textout.h" #include "pt_keyboard.h" #include "pt_terminal.h" extern SDL_Renderer *renderer; extern SDL_Window *window; extern uint8_t fullscreen; // button tables taken from the ptplay project + modified static const guiButton_t bAsk[] = { {171, 71,196, 81, PTB_SUREY}, {234, 71,252, 81, PTB_SUREN} }; static const guiButton_t bPat2SmpAsk[] = { {168, 71,185, 81, PTB_PAT2SMP_HI}, {192, 71,210, 81, PTB_PAT2SMP_LO}, {217, 71,256, 81, PTB_PAT2SMP_ABORT} }; static const guiButton_t bClear[] = { {166, 57,198, 67, PTB_CLEARSONG}, {204, 57,257, 67, PTB_CLEARSAMPLES}, {166, 73,198, 83, PTB_CLEARALL}, {204, 73,257, 83, PTB_CLEARCANCEL} }; static const guiButton_t bTopScreen[] = { { 0, 0, 39, 10, PTB_POSED}, { 40, 0, 50, 10, PTB_POSINS}, { 51, 0, 61, 10, PTB_POSDEL}, { 62, 0, 97, 10, PTB_POSS}, { 98, 0,108, 10, PTB_POSU}, {109, 0,119, 10, PTB_POSD}, {120, 0,181, 10, PTB_PLAY}, {182, 0,243, 10, PTB_STOP}, {244, 0,305, 10, PTB_MOD2WAV}, {306, 0,319, 10, PTB_CHAN1}, { 62, 11, 97, 21, PTB_PATTERNS}, { 98, 11,108, 21, PTB_PATTERNU}, {109, 11,119, 21, PTB_PATTERND}, {120, 11,181, 21, PTB_PATTERN}, {182, 11,243, 21, PTB_CLEAR}, {244, 11,305, 21, PTB_PAT2SMP}, {306, 11,319, 21, PTB_CHAN2}, { 62, 22, 97, 32, PTB_LENGTHS}, { 98, 22,108, 32, PTB_LENGTHU}, {109, 22,119, 32, PTB_LENGTHD}, {120, 22,181, 32, PTB_EDIT}, {182, 22,243, 32, PTB_EDITOP}, {244, 22,305, 32, PTB_POSED}, {306, 22,319, 32, PTB_CHAN3}, { 98, 33,108, 43, PTB_FTUNEU}, {109, 33,119, 43, PTB_FTUNED}, {120, 33,181, 43, PTB_RECORD}, {182, 33,243, 43, PTB_DISKOP}, {244, 33,305, 43, PTB_SAMPLER}, {306, 33,319, 43, PTB_CHAN4}, { 62, 44, 97, 54, PTB_SAMPLES}, { 98, 44,108, 54, PTB_SAMPLEU}, {109, 44,119, 54, PTB_SAMPLED}, {306, 44,319, 54, PTB_ABOUT}, // 'about' has priority over PTB_VISUALS {120, 44,319, 98, PTB_VISUALS}, { 62, 55, 97, 65, PTB_SVOLUMES}, { 98, 55,108, 65, PTB_SVOLUMEU}, {109, 55,119, 65, PTB_SVOLUMED}, { 54, 66, 97, 76, PTB_SLENGTHS}, { 98, 66,108, 76, PTB_SLENGTHU}, {109, 66,119, 76, PTB_SLENGTHD}, { 54, 77, 97, 87, PTB_SREPEATS}, { 98, 77,108, 87, PTB_SREPEATU}, {109, 77,119, 87, PTB_SREPEATD}, { 54, 88, 97, 98, PTB_SREPLENS}, { 98, 88,108, 98, PTB_SREPLENU}, {109, 88,119, 98, PTB_SREPLEND} }; static const guiButton_t bMidScreen[] = { { 0, 99,319,109, PTB_SONGNAME}, { 0,110,286,120, PTB_SAMPLENAME}, {287,110,319,120, PTB_LOADSAMPLE} }; static const guiButton_t bBotScreen[] = { { 0,121, 25,137, PTB_PATTBOX}, { 26,121, 43,137, PTB_TEMPOU}, { 43,121, 59,137, PTB_TEMPOD}, { 0,138,319,254, PTB_PATTDATA} }; static const guiButton_t bDiskOp[] = { { 0, 0, 79, 21, PTB_DO_BADGE}, { 80, 0,145, 10, PTB_DO_PACKMOD}, {146, 0,155, 10, PTB_DO_MODARROW}, {156, 0,237, 10, PTB_DO_LOADMODULE}, {238, 0,319, 10, PTB_DO_SAVEMODULE}, { 80, 11,145, 21, PTB_DO_SAMPLEFORMAT}, {146, 11,155, 21, PTB_DO_SAMPLEARROW}, {156, 11,237, 21, PTB_DO_LOADSAMPLE}, {238, 11,319, 21, PTB_DO_SAVESAMPLE}, { 0, 22,237, 32, PTB_DO_DATAPATH}, {238, 22,272, 32, PTB_DO_PARENT}, {273, 22,307, 32, PTB_DO_REFRESH}, {308, 22,319, 30, PTB_DO_SCROLLTOP}, {308, 31,319, 39, PTB_DO_SCROLLUP}, { 2, 34,304, 93, PTB_DO_FILEAREA}, {308, 40,319, 80, PTB_DO_EXIT}, {308, 81,319, 89, PTB_DO_SCROLLDOWN}, {308, 90,319, 99, PTB_DO_SCROLLBOT}, }; static const guiButton_t bPosEd[] = { { 120, 0,171, 10, PTB_POSINS}, { 172, 0,265, 21, PTB_STOP}, { 266, 0,319, 10, PTB_PLAY}, { 120, 11,171, 21, PTB_POSDEL}, { 266, 11,319, 21, PTB_PATTERN}, { 120, 22,177, 98, PTB_PE_PATT}, { 178, 22,307, 98, PTB_PE_PATTNAME}, { 308, 22,319, 32, PTB_PE_SCROLLTOP}, { 308, 33,319, 43, PTB_PE_SCROLLUP}, { 308, 44,319, 76, PTB_PE_EXIT}, { 308, 77,319, 87, PTB_PE_SCROLLDOWN}, { 308, 88,319, 98, PTB_PE_SCROLLBOT} }; static const guiButton_t bEditOp1[] = { {120, 44,319, 54, PTB_EO_TITLEBAR}, {120, 55,212, 65, PTB_EO_TRACK_NOTE_UP}, {213, 55,305, 65, PTB_EO_PATT_NOTE_UP}, {306, 55,319, 65, PTB_DUMMY}, {120, 66,212, 76, PTB_EO_TRACK_NOTE_DOWN}, {213, 66,305, 76, PTB_EO_PATT_NOTE_DOWN}, {306, 66,319, 76, PTB_EO_2}, {120, 77,212, 87, PTB_EO_TRACK_OCTA_UP}, {213, 77,305, 87, PTB_EO_PATT_OCTA_UP}, {306, 77,319, 87, PTB_EO_3}, {120, 88,212, 98, PTB_EO_TRACK_OCTA_DOWN}, {213, 88,305, 98, PTB_EO_PATT_OCTA_DOWN}, {306, 88,319, 98, PTB_EO_EXIT} }; static const guiButton_t bEditOp2[] = { {120, 44,319, 54, PTB_EO_TITLEBAR}, {120, 55,212, 65, PTB_EO_RECORD}, {213, 55,259, 65, PTB_EO_DELETE}, {260, 55,305, 65, PTB_EO_KILL}, {306, 55,319, 65, PTB_EO_1}, {120, 66,212, 76, PTB_EO_QUANTIZE}, {213, 66,259, 76, PTB_EO_EXCHGE}, {260, 66,305, 76, PTB_EO_COPY}, {306, 66,319, 76, PTB_DUMMY}, {120, 77,188, 87, PTB_EO_METRO_1}, {189, 77,212, 87, PTB_EO_METRO_2}, {213, 77,259, 87, PTB_EO_FROM}, {260, 77,283, 87, PTB_EO_FROM_NUM}, {284, 77,294, 87, PTB_EO_FROM_UP}, {295, 77,305, 87, PTB_EO_FROM_DOWN}, {306, 77,319, 87, PTB_EO_3}, {120, 88,212, 98, PTB_EO_KEYS}, {213, 88,259, 98, PTB_EO_TO}, {260, 88,283, 98, PTB_EO_TO_NUM}, {284, 88,294, 98, PTB_EO_TO_UP}, {295, 88,305, 98, PTB_EO_TO_DOWN}, {306, 88,319, 98, PTB_EO_EXIT}, }; static const guiButton_t bEditOp3[] = { {120, 44,319, 54, PTB_EO_TITLEBAR}, {120, 55,165, 65, PTB_EO_MIX}, {166, 55,212, 65, PTB_EO_ECHO}, {213, 55,237, 65, PTB_DUMMY}, {238, 55,283, 65, PTB_EO_POS_NUM}, {284, 55,294, 65, PTB_EO_POS_UP}, {295, 55,305, 65, PTB_EO_POS_DOWN}, {306, 55,319, 65, PTB_EO_1}, {120, 66,165, 76, PTB_EO_BOOST}, {166, 66,212, 76, PTB_EO_FILTER}, {213, 66,243, 76, PTB_EO_MOD}, {244, 66,283, 76, PTB_EO_MOD_NUM}, {284, 66,294, 76, PTB_EO_MOD_UP}, {295, 66,305, 76, PTB_EO_MOD_DOWN}, {306, 66,319, 76, PTB_EO_2}, {120, 77,165, 87, PTB_EO_X_FADE}, {166, 77,212, 87, PTB_EO_BACKWD}, {213, 77,230, 87, PTB_EO_CB}, {231, 77,269, 87, PTB_EO_CHORD}, {270, 77,287, 87, PTB_EO_FU}, {288, 77,305, 87, PTB_EO_FD}, {306, 77,319, 87, PTB_DUMMY}, {120, 88,165, 98, PTB_EO_UPSAMP}, {166, 88,212, 98, PTB_EO_DNSAMP}, {213, 88,243, 98, PTB_EO_VOL}, {244, 88,283, 98, PTB_EO_VOL_NUM}, {284, 88,294, 98, PTB_EO_VOL_UP}, {295, 88,305, 98, PTB_EO_VOL_DOWN}, {306, 88,319, 98, PTB_EO_EXIT} }; static const guiButton_t bEditOp4[] = { {120, 44,319, 54, PTB_EO_TITLEBAR}, {120, 55,165, 65, PTB_EO_DOCHORD}, {166, 55,204, 65, PTB_EO_MAJOR}, {205, 55,251, 65, PTB_EO_MAJOR7}, {251, 55,283, 65, PTB_EO_NOTE1}, {284, 55,294, 65, PTB_EO_NOTE1_UP}, {295, 55,305, 65, PTB_EO_NOTE1_DOWN}, {306, 55,319, 65, PTB_EO_1}, {120, 66,165, 76, PTB_EO_RESET}, {166, 66,204, 76, PTB_EO_MINOR}, {205, 66,251, 76, PTB_EO_MINOR7}, {251, 66,283, 76, PTB_EO_NOTE2}, {284, 66,294, 76, PTB_EO_NOTE2_UP}, {295, 66,305, 76, PTB_EO_NOTE2_DOWN}, {306, 66,319, 76, PTB_EO_2}, {120, 77,165, 87, PTB_EO_UNDO}, {166, 77,204, 87, PTB_EO_SUS4}, {205, 77,251, 87, PTB_EO_MAJOR6}, {251, 77,283, 87, PTB_EO_NOTE3}, {284, 77,294, 87, PTB_EO_NOTE3_UP}, {295, 77,305, 87, PTB_EO_NOTE3_DOWN}, {306, 77,319, 87, PTB_EO_3}, {120, 88,157, 98, PTB_EO_LENGTH}, {158, 88,204, 98, PTB_DUMMY}, {205, 88,251, 98, PTB_EO_MINOR6}, {251, 88,283, 98, PTB_EO_NOTE4}, {284, 88,294, 98, PTB_EO_NOTE4_UP}, {295, 88,305, 98, PTB_EO_NOTE4_DOWN}, {306, 88,319, 98, PTB_EO_EXIT} }; static const guiButton_t bSampler[] = { { 6,124, 25,134, PTB_SA_EXIT}, { 0,138,319,201, PTB_SA_SAMPLEAREA}, { 3,205,316,210, PTB_SA_ZOOMBARAREA}, { 32,211, 95,221, PTB_SA_PLAYWAVE}, { 96,211,175,221, PTB_SA_SHOWRANGE}, {176,211,245,221, PTB_SA_ZOOMOUT}, { 0,222, 30,243, PTB_SA_STOP}, { 32,222, 95,232, PTB_SA_PLAYDISPLAYED}, { 96,222,175,232, PTB_SA_SHOWALL}, {176,222,245,232, PTB_SA_RANGEALL}, {246,222,319,232, PTB_SA_LOOP}, { 32,233, 94,243, PTB_SA_PLAYRANGE}, { 96,233,115,243, PTB_SA_RANGEBEG}, {116,233,135,243, PTB_SA_RANGEEND}, {136,233,174,243, PTB_SA_RANGECENTER}, {176,233,245,243, PTB_SA_RESAMPLE}, {246,233,319,243, PTB_SA_RESAMPLENOTE}, { 0,244, 31,254, PTB_SA_CUT}, { 32,244, 63,254, PTB_SA_COPY}, { 64,244, 95,254, PTB_SA_PASTE}, { 96,244,135,254, PTB_SA_VOLUME}, {136,244,175,254, PTB_SA_TUNETONE}, {176,244,210,254, PTB_SA_FIXDC}, {211,244,245,254, PTB_SA_FILTERS} }; static const guiButton_t bTerminal[] = { { 0, 0, 39, 10, PTB_TERM_CLEAR}, {309, 0,319, 10, PTB_TERM_EXIT}, {309, 11,319, 22, PTB_TERM_SCROLL_UP}, {311, 24,317,229, PTB_TERM_SCROLL_BAR}, {309,232,319,243, PTB_TERM_SCROLL_DOWN} }; // MODIFY THESE EVERY TIME YOU REMOVE/ADD A BUTTON! #define ASK_BUTTONS 2 #define PAT2SMP_ASK_BUTTONS 3 #define CLEAR_BUTTONS 4 #define TOPSCREEN_BUTTONS 47 #define MIDSCREEN_BUTTONS 3 #define BOTSCREEN_BUTTONS 4 #define DISKOP_BUTTONS 18 #define POSED_BUTTONS 12 #define EDITOP1_BUTTONS 13 #define EDITOP2_BUTTONS 22 #define EDITOP3_BUTTONS 29 #define EDITOP4_BUTTONS 29 #define SAMPLER_BUTTONS 24 #define TERMINAL_BUTTONS 5 // ----------------------------------------------- void edNote1UpButton(void); void edNote1DownButton(void); void edNote2UpButton(void); void edNote2DownButton(void); void edNote3UpButton(void); void edNote3DownButton(void); void edNote4UpButton(void); void edNote4DownButton(void); void edPosUpButton(int8_t fast); void edPosDownButton(int8_t fast); void edModUpButton(void); void edModDownButton(void); void edVolUpButton(void); void edVolDownButton(void); void sampleUpButton(void); void sampleDownButton(void); void sampleFineTuneUpButton(void); void sampleFineTuneDownButton(void); void sampleVolumeUpButton(void); void sampleVolumeDownButton(void); void sampleLengthUpButton(int8_t fast); void sampleLengthDownButton(int8_t fast); void sampleRepeatUpButton(int8_t fast); void sampleRepeatDownButton(int8_t fast); void sampleRepeatLengthUpButton(int8_t fast); void sampleRepeatLengthDownButton(int8_t fast); void tempoUpButton(void); void tempoDownButton(void); void songLengthUpButton(void); void songLengthDownButton(void); void patternUpButton(void); void patternDownButton(void); void positionUpButton(void); void positionDownButton(void); void handleSamplerVolumeBox(void); int32_t checkGUIButtons(void); void handleTextEditing(uint8_t mouseButton); int8_t handleRightMouseButton(void); int8_t handleLeftMouseButton(void); void updateMouseScaling(void) { float scaleX_f, scaleY_f; SDL_RenderGetScale(renderer, &scaleX_f, &scaleY_f); if (scaleX_f == 0.0f) scaleX_f = 1.0f; if (scaleY_f == 0.0f) scaleY_f = 1.0f; input.mouse.scaleX_f = 1.0f / scaleX_f; input.mouse.scaleY_f = 1.0f / scaleY_f; } void mouseButtonUpHandler(uint8_t mouseButton) { #ifndef __APPLE__ if (!fullscreen) SDL_SetWindowGrab(window, SDL_FALSE); #endif input.mouse.buttonWaitCounter = 0; input.mouse.buttonWaiting = false; if (mouseButton == SDL_BUTTON_LEFT) { input.mouse.leftButtonPressed = false; editor.ui.forceTermBarDrag = false; editor.ui.forceSampleDrag = false; editor.ui.forceVolDrag = false; editor.ui.leftLoopPinMoving = false; editor.ui.rightLoopPinMoving = false; editor.ui.sampleMarkingPos = -1; switch (input.mouse.lastGUIButton) { case PTB_SLENGTHU: case PTB_SLENGTHD: { if (editor.ui.samplerScreenShown) redrawSample(); recalcChordLength(); updateSamplePos(); editor.ui.updateSongSize = true; } break; case PTB_LENGTHU: case PTB_LENGTHD: case PTB_PATTERNU: case PTB_PATTERND: { editor.ui.updateSongSize = true; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } break; default: break; } input.mouse.lastGUIButton = -1; input.mouse.lastGUIButton_2 = -1; } if (mouseButton == SDL_BUTTON_RIGHT) { input.mouse.rightButtonPressed = false; editor.ui.forceSampleEdit = false; } } void mouseButtonDownHandler(uint8_t mouseButton) { #ifndef __APPLE__ if (!fullscreen) SDL_SetWindowGrab(window, SDL_TRUE); #endif if (mouseButton == SDL_BUTTON_LEFT) { input.mouse.leftButtonPressed = true; input.mouse.buttonWaiting = true; } if (mouseButton == SDL_BUTTON_RIGHT) input.mouse.rightButtonPressed = true; // when red mouse pointer (error), block further input for a while if (editor.errorMsgActive && editor.errorMsgBlock) return; if (handleRightMouseButton()) return; if (handleLeftMouseButton()) return; handleTextEditing(mouseButton); } void handleMouseButtons(void) { if (!input.mouse.leftButtonPressed) { // left mouse button released, stop repeating buttons input.mouse.repeatCounter = 0; return; } if (input.mouse.lastGUIButton != checkGUIButtons()) { // only repeat the button that was first clicked (e.g. if you hold and move mouse to another button) input.mouse.repeatCounter = 0; return; } // repeat button switch (input.mouse.lastGUIButton) { case PTB_EO_NOTE1_UP: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote1UpButton(); } } break; case PTB_EO_NOTE1_DOWN: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote1DownButton(); } } break; case PTB_EO_NOTE2_UP: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote2UpButton(); } } break; case PTB_EO_NOTE2_DOWN: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote2DownButton(); } } break; case PTB_EO_NOTE3_UP: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote3UpButton(); } } break; case PTB_EO_NOTE3_DOWN: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote3DownButton(); } } break; case PTB_EO_NOTE4_UP: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote4UpButton(); } } break; case PTB_EO_NOTE4_DOWN: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; edNote4DownButton(); } } break; case PTB_EO_VOL_UP: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; edVolUpButton(); } } break; case PTB_EO_VOL_DOWN: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; edVolDownButton(); } } break; case PTB_EO_MOD_UP: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; edModUpButton(); } } break; case PTB_EO_MOD_DOWN: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; edModDownButton(); } } break; case PTB_EO_POS_UP: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; edPosUpButton(INCREMENT_FAST); } } break; case PTB_EO_POS_DOWN: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; edPosDownButton(INCREMENT_FAST); } } break; case PTB_EO_FROM_UP: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (editor.sampleFrom < 0x1F) { editor.sampleFrom++; editor.ui.updateFromText = true; } } } break; case PTB_EO_FROM_DOWN: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (editor.sampleFrom > 0x00) { editor.sampleFrom--; editor.ui.updateFromText = true; } } } break; case PTB_EO_TO_UP: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (editor.sampleTo < 0x1F) { editor.sampleTo++; editor.ui.updateToText = true; } } } break; case PTB_EO_TO_DOWN: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (editor.sampleTo > 0x00) { editor.sampleTo--; editor.ui.updateToText = true; } } } break; case PTB_SAMPLEU: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; if (!input.mouse.rightButtonPressed) sampleUpButton(); else editor.ui.updateCurrSampleNum = true; } } break; case PTB_SAMPLED: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; if (!input.mouse.rightButtonPressed) sampleDownButton(); else editor.ui.updateCurrSampleNum = true; } } break; case PTB_FTUNEU: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; sampleFineTuneUpButton(); } } break; case PTB_FTUNED: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; sampleFineTuneDownButton(); } } break; case PTB_SVOLUMEU: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; sampleVolumeUpButton(); } } break; case PTB_SVOLUMED: { if (input.mouse.repeatCounter >= 5) { input.mouse.repeatCounter = 0; sampleVolumeDownButton(); } } break; case PTB_SLENGTHU: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleLengthUpButton(INCREMENT_FAST); } } break; case PTB_SLENGTHD: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleLengthDownButton(INCREMENT_FAST); } } break; case PTB_SREPEATU: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleRepeatUpButton(INCREMENT_FAST); } } break; case PTB_SREPEATD: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleRepeatDownButton(INCREMENT_FAST); } } break; case PTB_SREPLENU: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleRepeatLengthUpButton(INCREMENT_FAST); } } break; case PTB_SREPLEND: { if (input.mouse.rightButtonPressed || (input.mouse.repeatCounter >= 1)) { input.mouse.repeatCounter = 0; sampleRepeatLengthDownButton(INCREMENT_FAST); } } break; case PTB_TEMPOU: { if (input.mouse.repeatCounter >= 3) { input.mouse.repeatCounter = 0; tempoUpButton(); } } break; case PTB_TEMPOD: { if (input.mouse.repeatCounter >= 3) { input.mouse.repeatCounter = 0; tempoDownButton(); } } break; case PTB_LENGTHU: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; songLengthUpButton(); } } break; case PTB_LENGTHD: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; songLengthDownButton(); } } break; case PTB_PATTERNU: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; patternUpButton(); } } break; case PTB_PATTERND: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; patternDownButton(); } } break; case PTB_POSU: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; positionUpButton(); } } break; case PTB_POSD: { if (input.mouse.repeatCounter >= 7) { input.mouse.repeatCounter = 0; positionDownButton(); } } break; case PTB_PE_SCROLLUP: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (modEntry->currOrder > 0) modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); } } break; case PTB_PE_SCROLLDOWN: { if (input.mouse.repeatCounter >= 2) { input.mouse.repeatCounter = 0; if (modEntry->currOrder < (modEntry->head.orderCount - 1)) modSetPos(modEntry->currOrder + 1, DONT_SET_ROW); } } break; case PTB_DO_SCROLLUP: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; editor.diskop.scrollOffset--; if (input.mouse.rightButtonPressed) editor.diskop.scrollOffset -= 3; if (editor.diskop.scrollOffset < 0) editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } } break; case PTB_DO_SCROLLDOWN: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset++; if (input.mouse.rightButtonPressed) editor.diskop.scrollOffset += 3; if (editor.diskop.scrollOffset > (editor.diskop.numFiles - DISKOP_LIST_SIZE)) editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } } break; case PTB_SA_ZOOMBARAREA: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; if (!editor.ui.forceSampleDrag) samplerBarPressed(MOUSE_BUTTON_NOT_HELD); } } break; case PTB_TERM_SCROLL_UP: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; terminalScrollUp(); } } break; case PTB_TERM_SCROLL_BAR: { if (input.mouse.repeatCounter >= 4) { input.mouse.repeatCounter = 0; if (!editor.ui.forceTermBarDrag) terminalHandleScrollBar(MOUSE_BUTTON_NOT_HELD); } } break; case PTB_TERM_SCROLL_DOWN: { if (input.mouse.repeatCounter >= 1) { input.mouse.repeatCounter = 0; terminalScrollDown(); } } break; default: break; } input.mouse.repeatCounter++; } void edNote1UpButton(void) { if (input.mouse.rightButtonPressed) editor.note1 += 12; else editor.note1++; if (editor.note1 > 36) editor.note1 = 36; editor.ui.updateNote1Text = true; recalcChordLength(); } void edNote1DownButton(void) { if (input.mouse.rightButtonPressed) editor.note1 -= 12; else editor.note1--; if (editor.note1 < 0) editor.note1 = 0; editor.ui.updateNote1Text = true; recalcChordLength(); } void edNote2UpButton(void) { if (input.mouse.rightButtonPressed) editor.note2 += 12; else editor.note2++; if (editor.note2 > 36) editor.note2 = 36; editor.ui.updateNote2Text = true; recalcChordLength(); } void edNote2DownButton(void) { if (input.mouse.rightButtonPressed) editor.note2 -= 12; else editor.note2--; if (editor.note2 < 0) editor.note2 = 0; editor.ui.updateNote2Text = true; recalcChordLength(); } void edNote3UpButton(void) { if (input.mouse.rightButtonPressed) editor.note3 += 12; else editor.note3++; if (editor.note3 > 36) editor.note3 = 36; editor.ui.updateNote3Text = true; recalcChordLength(); } void edNote3DownButton(void) { if (input.mouse.rightButtonPressed) editor.note3 -= 12; else editor.note3--; if (editor.note3 < 0) editor.note3 = 0; editor.ui.updateNote3Text = true; recalcChordLength(); } void edNote4UpButton(void) { if (input.mouse.rightButtonPressed) editor.note4 += 12; else editor.note4++; if (editor.note4 > 36) editor.note4 = 36; editor.ui.updateNote4Text = true; recalcChordLength(); } void edNote4DownButton(void) { if (input.mouse.rightButtonPressed) editor.note4 -= 12; else editor.note4--; if (editor.note4 < 0) editor.note4 = 0; editor.ui.updateNote4Text = true; recalcChordLength(); } void edPosUpButton(int8_t fast) { if (input.mouse.rightButtonPressed) { if (fast) editor.samplePos += 544; // 50Hz/60Hz scaled value else editor.samplePos += 16; } else { if (fast) editor.samplePos += 37; // 50Hz/60Hz scaled value else editor.samplePos++; } if (editor.samplePos > modEntry->samples[editor.currSample].length) editor.samplePos = modEntry->samples[editor.currSample].length; editor.ui.updatePosText = true; } void edPosDownButton(int8_t fast) { if (input.mouse.rightButtonPressed) { if (fast) editor.samplePos -= 544; // 50Hz/60Hz scaled value else editor.samplePos -= 16; } else { if (fast) editor.samplePos -= 37; // 50Hz/60Hz scaled value else editor.samplePos--; } if (editor.samplePos < 0) editor.samplePos = 0; editor.ui.updatePosText = true; } void edModUpButton(void) { if (input.mouse.rightButtonPressed) editor.modulateSpeed += 10; else editor.modulateSpeed++; if (editor.modulateSpeed > 127) editor.modulateSpeed = 127; editor.ui.updateModText = true; } void edModDownButton(void) { if (input.mouse.rightButtonPressed) editor.modulateSpeed -= 10; else editor.modulateSpeed--; if (editor.modulateSpeed < -128) editor.modulateSpeed = -128; editor.ui.updateModText = true; } void edVolUpButton(void) { if (input.mouse.rightButtonPressed) editor.sampleVol += 10; else editor.sampleVol++; if (editor.sampleVol > 999) editor.sampleVol = 999; editor.ui.updateVolText = true; } void edVolDownButton(void) { if (input.mouse.rightButtonPressed) editor.sampleVol -= 10; else editor.sampleVol--; if (editor.sampleVol < 0) editor.sampleVol = 0; editor.ui.updateVolText = true; } void sampleUpButton(void) { if (editor.sampleZero) { editor.sampleZero = false; editor.currSample = 0; } else if (editor.currSample < 30) { editor.currSample++; } updateCurrSample(); } void sampleDownButton(void) { if (!editor.sampleZero && (editor.currSample > 0)) { editor.currSample--; updateCurrSample(); } } void sampleFineTuneUpButton(void) { int8_t finetune; finetune = modEntry->samples[editor.currSample].fineTune & 0x0F; if (finetune != 7) modEntry->samples[editor.currSample].fineTune = (finetune + 1) & 0x0F; if (input.mouse.rightButtonPressed) modEntry->samples[editor.currSample].fineTune = 0; recalcChordLength(); editor.ui.updateCurrSampleFineTune = true; } void sampleFineTuneDownButton(void) { int8_t finetune; finetune = modEntry->samples[editor.currSample].fineTune & 0x0F; if (finetune != 8) modEntry->samples[editor.currSample].fineTune = (finetune - 1) & 0x0F; if (input.mouse.rightButtonPressed) modEntry->samples[editor.currSample].fineTune = 0; recalcChordLength(); editor.ui.updateCurrSampleFineTune = true; } void sampleVolumeUpButton(void) { int8_t val; val = modEntry->samples[editor.currSample].volume; if (input.mouse.rightButtonPressed) val += 16; else val++; if (val > 64) val = 64; modEntry->samples[editor.currSample].volume = (uint8_t)(val); editor.ui.updateCurrSampleVolume = true; } void sampleVolumeDownButton(void) { int8_t val; val = modEntry->samples[editor.currSample].volume; if (input.mouse.rightButtonPressed) val -= 16; else val--; if (val < 0) val = 0; modEntry->samples[editor.currSample].volume = (uint8_t)(val); editor.ui.updateCurrSampleVolume = true; } void sampleLengthUpButton(int8_t fast) { int32_t val; if (modEntry->samples[editor.currSample].length == 0x1FFFE) return; turnOffVoices(); val = modEntry->samples[editor.currSample].length; if (input.mouse.rightButtonPressed) { if (fast) val += 64; else val += 16; } else { if (fast) val += 10; else val += 2; } if (val > MAX_SAMPLE_LEN) val = MAX_SAMPLE_LEN; modEntry->samples[editor.currSample].length = val; editor.ui.updateCurrSampleLength = true; } void sampleLengthDownButton(int8_t fast) { int32_t val; moduleSample_t *s; s = &modEntry->samples[editor.currSample]; if ((s->loopStart + s->loopLength) > 2) { if (s->length == (s->loopStart + s->loopLength)) return; } else { if (s->length == 0) return; } turnOffVoices(); val = modEntry->samples[editor.currSample].length; if (input.mouse.rightButtonPressed) { if (fast) val -= 64; else val -= 16; } else { if (fast) val -= 10; else val -= 2; } if (val < 0) val = 0; s->length = val; if ((s->loopStart + s->loopLength) > 2) { if (s->length < (s->loopStart + s->loopLength)) s->length = s->loopStart + s->loopLength; } editor.ui.updateCurrSampleLength = true; } void sampleRepeatUpButton(int8_t fast) { int32_t val, loopLen, len; val = modEntry->samples[editor.currSample].loopStart; loopLen = modEntry->samples[editor.currSample].loopLength; len = modEntry->samples[editor.currSample].length; if (len == 0) { modEntry->samples[editor.currSample].loopStart = 0; return; } if (input.mouse.rightButtonPressed) { if (fast) val += 64; else val += 16; } else { if (fast) val += 10; else val += 2; } if (val > (len - loopLen)) val = len - loopLen; modEntry->samples[editor.currSample].loopStart = val; editor.ui.updateCurrSampleRepeat = true; mixerUpdateLoops(); if (editor.ui.samplerScreenShown) setLoopSprites(); if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) // sample chord editor editor.ui.updateLengthText = true; } void sampleRepeatDownButton(int8_t fast) { int32_t val, len; val = modEntry->samples[editor.currSample].loopStart; len = modEntry->samples[editor.currSample].length; if (len == 0) { modEntry->samples[editor.currSample].loopStart = 0; return; } if (input.mouse.rightButtonPressed) { if (fast) val -= 64; else val -= 16; } else { if (fast) val -= 10; else val -= 2; } if (val < 0) val = 0; modEntry->samples[editor.currSample].loopStart = val; editor.ui.updateCurrSampleRepeat = true; mixerUpdateLoops(); if (editor.ui.samplerScreenShown) setLoopSprites(); if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) // sample chord editor editor.ui.updateLengthText = true; } void sampleRepeatLengthUpButton(int8_t fast) { int32_t val, loopStart, len; val = modEntry->samples[editor.currSample].loopLength; loopStart = modEntry->samples[editor.currSample].loopStart; len = modEntry->samples[editor.currSample].length; if (len == 0) { modEntry->samples[editor.currSample].loopLength = 2; return; } if (input.mouse.rightButtonPressed) { if (fast) val += 64; else val += 16; } else { if (fast) val += 10; else val += 2; } if (val > (len - loopStart)) val = len - loopStart; modEntry->samples[editor.currSample].loopLength = val; editor.ui.updateCurrSampleReplen = true; mixerUpdateLoops(); if (editor.ui.samplerScreenShown) setLoopSprites(); if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) // sample chord editor editor.ui.updateLengthText = true; } void sampleRepeatLengthDownButton(int8_t fast) { int32_t val, len; val = modEntry->samples[editor.currSample].loopLength; len = modEntry->samples[editor.currSample].length; if (len == 0) { modEntry->samples[editor.currSample].loopLength = 2; return; } if (input.mouse.rightButtonPressed) { if (fast) val -= 64; else val -= 16; } else { if (fast) val -= 10; else val -= 2; } if (val < 2) val = 2; modEntry->samples[editor.currSample].loopLength = val; editor.ui.updateCurrSampleReplen = true; mixerUpdateLoops(); if (editor.ui.samplerScreenShown) setLoopSprites(); if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) // sample chord editor editor.ui.updateLengthText = true; } void tempoUpButton(void) { int16_t val; if (editor.timingMode == TEMPO_MODE_VBLANK) return; val = modEntry->currBPM; if (input.mouse.rightButtonPressed) val += 10; else val++; if (val > 255) val = 255; modEntry->currBPM = val; modSetTempo(modEntry->currBPM); editor.ui.updateSongBPM = true; } void tempoDownButton(void) { int16_t val; if (editor.timingMode == TEMPO_MODE_VBLANK) return; val = modEntry->currBPM; if (input.mouse.rightButtonPressed) val -= 10; else val--; if (val < 32) val = 32; modEntry->currBPM = val; modSetTempo(modEntry->currBPM); editor.ui.updateSongBPM = true; } void songLengthUpButton(void) { int16_t val; val = modEntry->head.orderCount; if (input.mouse.rightButtonPressed) val += 10; else val++; if (val > 127) val = 127; modEntry->head.orderCount = (uint8_t)(val); val = modEntry->currOrder; if (val > (modEntry->head.orderCount - 1)) val = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[val]; editor.ui.updateSongLength = true; } void songLengthDownButton(void) { int16_t val; val = modEntry->head.orderCount; if (input.mouse.rightButtonPressed) val -= 10; else val--; if (val < 1) val = 1; modEntry->head.orderCount = (uint8_t)(val); val = modEntry->currOrder; if (val > (modEntry->head.orderCount - 1)) val = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[val]; editor.ui.updateSongLength = true; } void patternUpButton(void) { int16_t val; val = modEntry->head.order[modEntry->currOrder]; if (input.mouse.rightButtonPressed) val += 10; else val++; if (val > (MAX_PATTERNS - 1)) val = MAX_PATTERNS - 1; modEntry->head.order[modEntry->currOrder] = (uint8_t)(val); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPattern = true; } void patternDownButton(void) { int16_t val; val = modEntry->head.order[modEntry->currOrder]; if (input.mouse.rightButtonPressed) val -= 10; else val--; if (val < 0) val = 0; modEntry->head.order[modEntry->currOrder] = (uint8_t)(val); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; editor.ui.updateSongPattern = true; } void positionUpButton(void) { int16_t val; val = modEntry->currOrder; if (input.mouse.rightButtonPressed) val += 10; else val++; if (val > 126) val = 126; modSetPos(val, DONT_SET_ROW); } void positionDownButton(void) { int16_t val; val = modEntry->currOrder; if (input.mouse.rightButtonPressed) val -= 10; else val--; if (val < 0) val = 0; modSetPos(val, DONT_SET_ROW); } void diskOpLoadFile(uint32_t fileEntryRow) { UNICHAR *filePath; module_t *tempMod; // if we clicked on an empty space, return... if (diskOpEntryIsEmpty(fileEntryRow)) return; if (diskOpEntryIsDir(fileEntryRow)) { diskOpSetPath(diskOpGetUnicodeEntry(fileEntryRow), DISKOP_CACHE); } else { filePath = diskOpGetUnicodeEntry(fileEntryRow); if (filePath != NULL) { if (editor.diskop.mode == DISKOP_MODE_MOD) { tempMod = modLoad(filePath); if (tempMod != NULL) { modStop(); modFree(); modEntry = tempMod; setupNewMod(); modEntry->moduleLoaded = true; editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); if (ptConfig.autoCloseDiskOp) editor.ui.diskOpScreenShown = false; displayMainScreen(); } else { editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; // status/error message is set in the mod loader pointerErrorMode(); } } else if (editor.diskop.mode == DISKOP_MODE_SMP) { loadSample(filePath, diskOpGetAnsiEntry(fileEntryRow)); } } } } void handleSamplerVolumeBox(void) { int8_t *sampleData; uint8_t i; int16_t sample, sampleVol; int32_t sampleIndex, sampleLength; float smp_f; moduleSample_t *s; if (input.mouse.rightButtonPressed) { if (editor.ui.editTextFlag) { exitGetTextLine(EDIT_TEXT_NO_UPDATE); } else { editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); } return; } if (editor.ui.editTextFlag) return; // check buttons if (input.mouse.leftButtonPressed) { // restore sample ask dialog if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_RESTORE_SAMPLE)) { if ((input.mouse.y >= 71) && (input.mouse.y <= 81)) { if ((input.mouse.x >= 171) && (input.mouse.x <= 196)) { // YES button editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if ((input.mouse.x >= 234) && (input.mouse.x <= 252)) { // NO button editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } } return; } // MAIN SCREEN STOP if (!editor.ui.diskOpScreenShown) { if (!editor.ui.posEdScreenShown) { if ((input.mouse.x >= 182) && (input.mouse.x <= 243) && (input.mouse.y >= 0) && (input.mouse.y <= 10)) { modStop(); return; } } } // SAMPLER SCREEN PLAY WAVEFORM if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 211) && (input.mouse.y <= 221)) { samplerPlayWaveform(); return; } // SAMPLER SCREEN PLAY DISPLAY if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 222) && (input.mouse.y <= 232)) { samplerPlayDisplay(); return; } // SAMPLER SCREEN PLAY RANGE if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 233) && (input.mouse.y <= 243)) { samplerPlayRange(); return; } // SAMPLER SCREEN STOP if ((input.mouse.x >= 0) && (input.mouse.x <= 31) && (input.mouse.y >= 222) && (input.mouse.y <= 243)) { for (i = 0; i < AMIGA_VOICES; ++i) mixerKillVoice(i); return; } // VOLUME button (toggle) if ((input.mouse.x >= 96) && (input.mouse.x <= 135) && (input.mouse.y >= 244) && (input.mouse.y <= 254)) { editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); return; } // DRAG BOXES if ((input.mouse.x >= 72) && (input.mouse.x <= 173) && (input.mouse.y >= 154) && (input.mouse.y <= 175)) { volBoxBarPressed(MOUSE_BUTTON_NOT_HELD); return; } // FROM NUM if ((input.mouse.x >= 174) && (input.mouse.x <= 207) && (input.mouse.y >= 154) && (input.mouse.y <= 164)) { editor.ui.tmpDisp16 = editor.vol1; editor.vol1Disp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 3; editor.ui.editTextPos = 6342; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_SA_VOL_FROM_NUM); return; } // TO NUM if ((input.mouse.x >= 174) && (input.mouse.x <= 207) && (input.mouse.y >= 165) && (input.mouse.y <= 175)) { editor.ui.tmpDisp16 = editor.vol2; editor.vol2Disp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 3; editor.ui.editTextPos = 6782; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_SA_VOL_TO_NUM); return; } // NORMALIZE if ((input.mouse.x >= 101) && (input.mouse.x <= 143) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } sampleData = &modEntry->sampleData[s->offset]; if ((editor.markEndOfs - editor.markStartOfs) > 0) { sampleData += editor.markStartOfs; sampleLength = editor.markEndOfs - editor.markStartOfs; } else { sampleLength = s->length; } sampleVol = 0; sampleIndex = 0; while (sampleIndex < sampleLength) { sample = *sampleData++; sample = ABS(sample); if (sampleVol < sample) sampleVol = sample; sampleIndex++; } if ((sampleVol <= 0) || (sampleVol > 127)) { editor.vol1 = 100; editor.vol2 = 100; } else if (sampleVol < 64) { editor.vol1 = 200; editor.vol2 = 200; } else { editor.vol1 = (int16_t)((12700.0f / sampleVol) + 0.5f); editor.vol2 = (int16_t)((12700.0f / sampleVol) + 0.5f); } editor.ui.updateVolFromText = true; editor.ui.updateVolToText = true; showVolFromSlider(); showVolToSlider(); return; } // RAMP DOWN if ((input.mouse.x >= 144) && (input.mouse.x <= 153) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { editor.vol1 = 100; editor.vol2 = 0; editor.ui.updateVolFromText = true; editor.ui.updateVolToText = true; showVolFromSlider(); showVolToSlider(); return; } // RAMP UP if ((input.mouse.x >= 154) && (input.mouse.x <= 163) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { editor.vol1 = 0; editor.vol2 = 100; editor.ui.updateVolFromText = true; editor.ui.updateVolToText = true; showVolFromSlider(); showVolToSlider(); return; } // RAMP UNITY if ((input.mouse.x >= 164) && (input.mouse.x <= 173) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { editor.vol1 = 100; editor.vol2 = 100; editor.ui.updateVolFromText = true; editor.ui.updateVolToText = true; showVolFromSlider(); showVolToSlider(); return; } // CANCEL if ((input.mouse.x >= 174) && (input.mouse.x <= 207) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); return; } // RAMP if ((input.mouse.x >= 72) && (input.mouse.x <= 100) && (input.mouse.y >= 176) && (input.mouse.y <= 186)) { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); return; } if ((editor.vol1 == 100) && (editor.vol2 == 100)) { editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); return; } sampleData = &modEntry->sampleData[s->offset]; if ((editor.markEndOfs - editor.markStartOfs) > 0) { sampleData += editor.markStartOfs; sampleLength = editor.markEndOfs - editor.markStartOfs; } else { sampleLength = s->length; } sampleIndex = 0; while (sampleIndex < sampleLength) { smp_f = (sampleIndex * editor.vol2) / (float)(sampleLength); smp_f += ((sampleLength - sampleIndex) * editor.vol1) / (float)(sampleLength); smp_f *= (float)(*sampleData); smp_f /= 100.0f; smp_f = roundf(smp_f); *sampleData++ = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); sampleIndex++; } fixSampleBeep(s); editor.ui.samplerVolBoxShown = false; removeSamplerVolBox(); updateWindowTitle(MOD_IS_MODIFIED); } } } void handleSamplerFiltersBoxRepeats(void) { if (!editor.ui.samplerFiltersBoxShown) return; if (!input.mouse.leftButtonPressed) { input.mouse.repeatCounter_2 = 0; return; } if (input.mouse.lastGUIButton_2 > -1) { if (++input.mouse.repeatCounter_2 >= 1) { input.mouse.repeatCounter_2 = 0; switch (input.mouse.lastGUIButton_2) { case 0: { if (input.mouse.rightButtonPressed) editor.lpCutOff += 50; else editor.lpCutOff++; if (editor.lpCutOff > (FILTERS_BASE_FREQ / 2)) editor.lpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateLPText = true; } break; case 1: { if (input.mouse.rightButtonPressed) editor.lpCutOff -= 50; else editor.lpCutOff--; if (editor.lpCutOff < 0) editor.lpCutOff = 0; editor.ui.updateLPText = true; } break; case 2: { if (input.mouse.rightButtonPressed) editor.hpCutOff += 50; else editor.hpCutOff++; if (editor.hpCutOff > (FILTERS_BASE_FREQ / 2)) editor.hpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateHPText = true; } break; case 3: { if (input.mouse.rightButtonPressed) editor.hpCutOff -= 50; else editor.hpCutOff--; if (editor.hpCutOff < 0) editor.hpCutOff = 0; editor.ui.updateHPText = true; } break; default: break; } } } } void handleSamplerFiltersBox(void) { uint8_t i; moduleSample_t *s; if (input.mouse.rightButtonPressed && editor.ui.editTextFlag) { exitGetTextLine(EDIT_TEXT_NO_UPDATE); return; } if (editor.ui.editTextFlag || (input.mouse.lastGUIButton_2 > -1)) return; if (input.mouse.leftButtonPressed) { // restore sample ask dialog if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_RESTORE_SAMPLE)) { if ((input.mouse.y >= 71) && (input.mouse.y <= 81)) { if ((input.mouse.x >= 171) && (input.mouse.x <= 196)) { // YES button editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if ((input.mouse.x >= 234) && (input.mouse.x <= 252)) { // NO button editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } } return; } // FILTERS button (toggle) if ((input.mouse.x >= 211) && (input.mouse.x <= 245) && (input.mouse.y >= 244) && (input.mouse.y <= 254)) { editor.ui.samplerFiltersBoxShown = false; removeSamplerFiltersBox(); return; } // MAIN SCREEN STOP if (!editor.ui.diskOpScreenShown) { if (!editor.ui.posEdScreenShown) { if ((input.mouse.x >= 182) && (input.mouse.x <= 243) && (input.mouse.y >= 0) && (input.mouse.y <= 10)) { modStop(); return; } } } // SAMPLER SCREEN PLAY WAVEFORM if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 211) && (input.mouse.y <= 221)) { samplerPlayWaveform(); return; } // SAMPLER SCREEN PLAY DISPLAY if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 222) && (input.mouse.y <= 232)) { samplerPlayDisplay(); return; } // SAMPLER SCREEN PLAY RANGE if ((input.mouse.x >= 32) && (input.mouse.x <= 95) && (input.mouse.y >= 233) && (input.mouse.y <= 243)) { samplerPlayRange(); return; } // SAMPLER SCREEN STOP if ((input.mouse.x >= 0) && (input.mouse.x <= 31) && (input.mouse.y >= 222) && (input.mouse.y <= 243)) { for (i = 0; i < AMIGA_VOICES; ++i) mixerKillVoice(i); return; } // UNDO if ((input.mouse.x >= 65) && (input.mouse.x <= 75) && (input.mouse.y >= 154) && (input.mouse.y <= 184)) { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); } else { memcpy(&modEntry->sampleData[s->offset], editor.tempSample, 131070); redrawSample(); updateWindowTitle(MOD_IS_MODIFIED); renderSamplerFiltersBox(); } return; } // DO LOW-PASS FILTER if ((input.mouse.x >= 76) && (input.mouse.x <= 157) && (input.mouse.y >= 154) && (input.mouse.y <= 164)) { lowPassSample(editor.lpCutOff); renderSamplerFiltersBox(); return; } // LOW-PASS CUTOFF if ((input.mouse.x >= 158) && (input.mouse.x <= 217) && (input.mouse.y >= 154) && (input.mouse.y <= 164)) { if (input.mouse.rightButtonPressed) { editor.lpCutOff = 0; editor.ui.updateLPText = true; } else { editor.ui.tmpDisp32 = editor.lpCutOff; editor.lpCutOffDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.editTextPos = 6340; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_SA_FIL_LP_CUTOFF); } return; } // LOW-PASS CUTOFF UP if ((input.mouse.x >= 218) && (input.mouse.x <= 228) && (input.mouse.y >= 154) && (input.mouse.y <= 164)) { input.mouse.lastGUIButton_2 = 0; if (input.mouse.rightButtonPressed) editor.lpCutOff += 100; else editor.lpCutOff++; if (editor.lpCutOff > (FILTERS_BASE_FREQ / 2)) editor.lpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateLPText = true; return; } // LOW-PASS CUTOFF DOWN if ((input.mouse.x >= 229) && (input.mouse.x <= 239) && (input.mouse.y >= 154) && (input.mouse.y <= 164)) { input.mouse.lastGUIButton_2 = 1; if (input.mouse.rightButtonPressed) editor.lpCutOff -= 100; else editor.lpCutOff--; if (editor.lpCutOff < 0) editor.lpCutOff = 0; editor.ui.updateLPText = true; return; } // DO HIGH-PASS FILTER if ((input.mouse.x >= 76) && (input.mouse.x <= 157) && (input.mouse.y >= 164) && (input.mouse.y <= 174)) { highPassSample(editor.hpCutOff); renderSamplerFiltersBox(); return; } // HIGH-PASS CUTOFF if ((input.mouse.x >= 158) && (input.mouse.x <= 217) && (input.mouse.y >= 164) && (input.mouse.y <= 174)) { if (input.mouse.rightButtonPressed) { editor.hpCutOff = 0; editor.ui.updateHPText = true; } else { editor.ui.tmpDisp32 = editor.hpCutOff; editor.hpCutOffDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.editTextPos = 6780; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_SA_FIL_HP_CUTOFF); } return; } // HIGH-PASS CUTOFF UP if ((input.mouse.x >= 218) && (input.mouse.x <= 228) && (input.mouse.y >= 164) && (input.mouse.y <= 174)) { input.mouse.lastGUIButton_2 = 2; if (input.mouse.rightButtonPressed) editor.hpCutOff += 100; else editor.hpCutOff++; if (editor.hpCutOff > (FILTERS_BASE_FREQ / 2)) editor.hpCutOff = FILTERS_BASE_FREQ / 2; editor.ui.updateHPText = true; return; } // HIGH-PASS CUTOFF DOWN if ((input.mouse.x >= 229) && (input.mouse.x <= 239) && (input.mouse.y >= 164) && (input.mouse.y <= 174)) { input.mouse.lastGUIButton_2 = 3; if (input.mouse.rightButtonPressed) editor.hpCutOff -= 100; else editor.hpCutOff--; if (editor.hpCutOff < 0) editor.hpCutOff = 0; editor.ui.updateHPText = true; return; } // NORMALIZE SAMPLE FLAG if ((input.mouse.x >= 76) && (input.mouse.x <= 239) && (input.mouse.y >= 174) && (input.mouse.y <= 184)) { editor.normalizeFiltersFlag ^= 1; editor.ui.updateNormFlag = true; return; } // EXIT if ((input.mouse.x >= 240) && (input.mouse.x <= 250) && (input.mouse.y >= 154) && (input.mouse.y <= 186)) { editor.ui.samplerFiltersBoxShown = false; removeSamplerFiltersBox(); } } } int32_t checkGUIButtons(void) { uint32_t i; // terminal has first priority if (editor.ui.terminalShown) { for (i = 0; i < TERMINAL_BUTTONS; ++i) { if ((input.mouse.x >= bTerminal[i].x1) && (input.mouse.x <= bTerminal[i].x2) && (input.mouse.y >= bTerminal[i].y1) && (input.mouse.y <= bTerminal[i].y2)) return (bTerminal[i].b); } return (-1); } // these two makes *no other* buttons clickable if (editor.ui.askScreenShown) { if (editor.ui.pat2SmpDialogShown) { for (i = 0; i < PAT2SMP_ASK_BUTTONS; ++i) { if ((input.mouse.x >= bPat2SmpAsk[i].x1) && (input.mouse.x <= bPat2SmpAsk[i].x2) && (input.mouse.y >= bPat2SmpAsk[i].y1) && (input.mouse.y <= bPat2SmpAsk[i].y2)) return (bPat2SmpAsk[i].b); } } else { for (i = 0; i < ASK_BUTTONS; ++i) { if ((input.mouse.x >= bAsk[i].x1) && (input.mouse.x <= bAsk[i].x2) && (input.mouse.y >= bAsk[i].y1) && (input.mouse.y <= bAsk[i].y2)) return (bAsk[i].b); } } return (-1); } else if (editor.ui.clearScreenShown) { for (i = 0; i < CLEAR_BUTTONS; ++i) { if ((input.mouse.x >= bClear[i].x1) && (input.mouse.x <= bClear[i].x2) && (input.mouse.y >= bClear[i].y1) && (input.mouse.y <= bClear[i].y2)) return (bClear[i].b); } return (-1); } // QUIT (xy 0,0) works on all screens except for ask/clear screen if ((input.mouse.x == 0) && (input.mouse.y == 0)) return (PTB_QUIT); // top screen buttons if (editor.ui.diskOpScreenShown) { for (i = 0; i < DISKOP_BUTTONS; ++i) { if ((input.mouse.x >= bDiskOp[i].x1) && (input.mouse.x <= bDiskOp[i].x2) && (input.mouse.y >= bDiskOp[i].y1) && (input.mouse.y <= bDiskOp[i].y2)) return (bDiskOp[i].b); } } else { if (editor.ui.posEdScreenShown) { for (i = 0; i < POSED_BUTTONS; ++i) { if ((input.mouse.x >= bPosEd[i].x1) && (input.mouse.x <= bPosEd[i].x2) && (input.mouse.y >= bPosEd[i].y1) && (input.mouse.y <= bPosEd[i].y2)) return (bPosEd[i].b); } } else if (editor.ui.editOpScreenShown) { switch (editor.ui.editOpScreen) { default: case 0: { for (i = 0; i < EDITOP1_BUTTONS; ++i) { if ((input.mouse.x >= bEditOp1[i].x1) && (input.mouse.x <= bEditOp1[i].x2) && (input.mouse.y >= bEditOp1[i].y1) && (input.mouse.y <= bEditOp1[i].y2)) return (bEditOp1[i].b); } } break; case 1: { for (i = 0; i < EDITOP2_BUTTONS; ++i) { if ((input.mouse.x >= bEditOp2[i].x1) && (input.mouse.x <= bEditOp2[i].x2) && (input.mouse.y >= bEditOp2[i].y1) && (input.mouse.y <= bEditOp2[i].y2)) return (bEditOp2[i].b); } } break; case 2: { for (i = 0; i < EDITOP3_BUTTONS; ++i) { if ((input.mouse.x >= bEditOp3[i].x1) && (input.mouse.x <= bEditOp3[i].x2) && (input.mouse.y >= bEditOp3[i].y1) && (input.mouse.y <= bEditOp3[i].y2)) return (bEditOp3[i].b); } } break; case 3: { for (i = 0; i < EDITOP4_BUTTONS; ++i) { if ((input.mouse.x >= bEditOp4[i].x1) && (input.mouse.x <= bEditOp4[i].x2) && (input.mouse.y >= bEditOp4[i].y1) && (input.mouse.y <= bEditOp4[i].y2)) return (bEditOp4[i].b); } } break; } } for (i = 0; i < TOPSCREEN_BUTTONS; ++i) { if ((input.mouse.x >= bTopScreen[i].x1) && (input.mouse.x <= bTopScreen[i].x2) && (input.mouse.y >= bTopScreen[i].y1) && (input.mouse.y <= bTopScreen[i].y2)) return (bTopScreen[i].b); } } // middle buttons (always present) for (i = 0; i < MIDSCREEN_BUTTONS; ++i) { if ((input.mouse.x >= bMidScreen[i].x1) && (input.mouse.x <= bMidScreen[i].x2) && (input.mouse.y >= bMidScreen[i].y1) && (input.mouse.y <= bMidScreen[i].y2)) return (bMidScreen[i].b); } // bottom screen buttons if (editor.ui.samplerScreenShown) { for (i = 0; i < SAMPLER_BUTTONS; ++i) { if ((input.mouse.x >= bSampler[i].x1) && (input.mouse.x <= bSampler[i].x2) && (input.mouse.y >= bSampler[i].y1) && (input.mouse.y <= bSampler[i].y2)) return (bSampler[i].b); } } else { for (i = 0; i < BOTSCREEN_BUTTONS; ++i) { if ((input.mouse.x >= bBotScreen[i].x1) && (input.mouse.x <= bBotScreen[i].x2) && (input.mouse.y >= bBotScreen[i].y1) && (input.mouse.y <= bBotScreen[i].y2)) return (bBotScreen[i].b); } } return (-1); } void handleTextEditing(uint8_t mouseButton) { char *tmpRead; int32_t tmp32; // handle mouse while editing text/numbers if (editor.ui.editTextFlag) { if (editor.ui.editTextType != TEXT_EDIT_STRING) { if (mouseButton == SDL_BUTTON_RIGHT) exitGetTextLine(EDIT_TEXT_NO_UPDATE); } else if ((mouseButton == SDL_BUTTON_LEFT) && !editor.mixFlag) { tmp32 = input.mouse.y - editor.ui.lineCurY; if ((tmp32 <= 2) && (tmp32 >= -9)) { tmp32 = (input.mouse.x - editor.ui.lineCurX) + 4; // 68k simulation on signed number: ASR.L #3,D1 if (tmp32 < 0) tmp32 = 0xE0000000 | ((uint32_t)(tmp32) >> 3); // 0xE0000000 = 2^32 - 2^(32-3) else tmp32 /= (1 << 3); while (tmp32 != 0) // 0 = pos we want { if (tmp32 > 0) { if (editor.ui.editPos < editor.ui.textEndPtr) { if (*editor.ui.editPos != '\0') { editor.ui.editPos++; textMarkerMoveRight(); } } tmp32--; } else if (tmp32 < 0) { if (editor.ui.editPos > editor.ui.dstPtr) { editor.ui.editPos--; textMarkerMoveLeft(); } tmp32++; } } } else { exitGetTextLine(EDIT_TEXT_UPDATE); } } else if (mouseButton == SDL_BUTTON_RIGHT) { if (editor.mixFlag) { exitGetTextLine(EDIT_TEXT_UPDATE); editor.mixFlag = false; editor.ui.updateMixText = true; } else { tmpRead = editor.ui.dstPtr; while (tmpRead < editor.ui.textEndPtr) *tmpRead++ = '\0'; *editor.ui.textEndPtr = '\0'; // don't exit text edit mode if the disk op. path was about to be deleted if (editor.ui.editObject == PTB_DO_DATAPATH) { // move text cursor to pos 0 while (editor.ui.editPos > editor.ui.dstPtr) { editor.ui.editPos--; textMarkerMoveLeft(); } editor.ui.updateDiskOpPathText = true; } else { if (editor.ui.editObject == PTB_SONGNAME) editor.ui.updateSongName = true; else if (editor.ui.editObject == PTB_SAMPLENAME) editor.ui.updateCurrSampleName = true; exitGetTextLine(EDIT_TEXT_UPDATE); } } } } } void mouseWheelUpHandler(void) { if (!editor.ui.editTextFlag && !editor.ui.askScreenShown && !editor.ui.clearScreenShown && !editor.swapChannelFlag) { if (editor.ui.terminalShown) { terminalScrollUp(); terminalScrollUp(); } else { if (input.mouse.y < 121) { // upper part of screen if (editor.ui.diskOpScreenShown) { // disk op if (editor.diskop.scrollOffset > 0) { editor.diskop.scrollOffset--; editor.ui.updateDiskOpFileList = true; } } else if (editor.ui.posEdScreenShown) { // position editor if (modEntry->currOrder > 0) modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); } } else { // lower part of screen if (editor.ui.samplerScreenShown) { // sampler screen samplerZoomInMouseWheel(); } else { // pattern data if (!editor.songPlaying && (modEntry->currRow > 0)) modSetPos(DONT_SET_ORDER, modEntry->currRow - 1); } } } } } void mouseWheelDownHandler(void) { if (!editor.ui.editTextFlag && !editor.ui.askScreenShown && !editor.ui.clearScreenShown && !editor.swapChannelFlag) { if (editor.ui.terminalShown) { terminalScrollDown(); terminalScrollDown(); } else { if (input.mouse.y < 121) { // upper part of screen if (editor.ui.diskOpScreenShown) { // disk op if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { if (editor.diskop.scrollOffset < (editor.diskop.numFiles - DISKOP_LIST_SIZE)) { editor.diskop.scrollOffset++; editor.ui.updateDiskOpFileList = true; } } } else if (editor.ui.posEdScreenShown) { // position editor if (modEntry->currOrder < (modEntry->head.orderCount - 1)) modSetPos(modEntry->currOrder + 1, DONT_SET_ROW); } } else { // lower part of screen if (editor.ui.samplerScreenShown) { // sampler screen samplerZoomOutMouseWheel(); } else { // pattern data if (!editor.songPlaying && (modEntry->currRow < MOD_ROWS)) modSetPos(DONT_SET_ORDER, modEntry->currRow + 1); } } } } } int8_t handleRightMouseButton(void) { if (!input.mouse.rightButtonPressed) return (false); // exit sample swap mode with right mouse button (if present) if (editor.swapChannelFlag) { editor.swapChannelFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); return (true); } // close clear dialog with right mouse button if (editor.ui.clearScreenShown) { editor.ui.clearScreenShown = false; setPrevStatusMessage(); pointerSetPreviousMode(); editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; pointerErrorMode(); removeClearScreen(); return (true); } // close ask dialogs with right mouse button if (editor.ui.askScreenShown) { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); // mouse pointer is set to error (red) in here return (true); } // toggle channel muting with right mouse button if ( !editor.ui.posEdScreenShown && !editor.ui.editOpScreenShown && !editor.ui.diskOpScreenShown && !editor.ui.aboutScreenShown && !editor.ui.samplerVolBoxShown && !editor.ui.samplerFiltersBoxShown && !editor.ui.terminalShown && (editor.ui.visualizerMode == VISUAL_QUADRASCOPE) ) { if ((input.mouse.y >= 55) && (input.mouse.y <= 87)) { if ((input.mouse.x > 127) && (input.mouse.x <= (127 + 40))) editor.muted[0] ^= 1; else if ((input.mouse.x > 175) && (input.mouse.x <= (175 + 40))) editor.muted[1] ^= 1; else if ((input.mouse.x > 223) && (input.mouse.x <= (223 + 40))) editor.muted[2] ^= 1; else if ((input.mouse.x > 271) && (input.mouse.x <= (271 + 40))) editor.muted[3] ^= 1; renderMuteButtons(); } } // sample hand drawing if (editor.ui.samplerScreenShown && !editor.ui.samplerVolBoxShown & !editor.ui.samplerFiltersBoxShown) { if ((input.mouse.y >= 138) && (input.mouse.y <= 201) && (input.mouse.x >= 3) && (input.mouse.x <= 316) ) { samplerEditSample(false); } } return (false); } int8_t handleLeftMouseButton(void) { char pat2SmpText[24]; int8_t *ptr8_1, *ptr8_2, *ptr8_3, *ptr8_4; int8_t tmpSmp, modTmp, modDat; uint8_t i; int16_t tmp16; int32_t j, modPos, guiButton; float smp_f; moduleSample_t *s; if (editor.swapChannelFlag || editor.ui.editTextFlag) return (false); // handle volume toolbox in sampler screen if (editor.ui.samplerVolBoxShown) { handleSamplerVolumeBox(); return (true); } // handle filters toolbox in sampler else if (editor.ui.samplerFiltersBoxShown) { handleSamplerFiltersBox(); return (true); } // cancel note input gadgets with left/right mouse button if (editor.ui.changingSmpResample || editor.ui.changingChordNote || editor.ui.changingDrumPadNote) { if (input.mouse.leftButtonPressed || input.mouse.rightButtonPressed) { editor.ui.changingSmpResample = false; editor.ui.changingChordNote = false; editor.ui.changingDrumPadNote = false; editor.ui.updateResampleNote = true; editor.ui.updateNote1Text = true; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; setPrevStatusMessage(); pointerSetPreviousMode(); } return (true); } if (input.mouse.leftButtonPressed) { // handle QUIT ask dialog while Disk Op. filling is ongoing if (editor.diskop.isFilling) { if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_QUIT)) { if ((input.mouse.y >= 71) && (input.mouse.y <= 81)) { if ((input.mouse.x >= 171) && (input.mouse.x <= 196)) { // YES button editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if ((input.mouse.x >= 234) && (input.mouse.x <= 252)) { // NO button editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } } } return (true); } // CANCEL and YES/NO (ask exit) buttons while MOD2WAV is ongoing if (editor.isWAVRendering) { if (editor.ui.askScreenShown && (editor.ui.askScreenType == ASK_QUIT)) { if ((input.mouse.x >= 171) && (input.mouse.x <= 196)) { // YES button editor.isWAVRendering = false; SDL_WaitThread(editor.mod2WavThread, NULL); editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } else if ((input.mouse.x >= 234) && (input.mouse.x <= 252)) { // NO button editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); pointerSetMode(POINTER_MODE_READ_DIR, NO_CARRY); setStatusMessage("RENDERING MOD...", NO_CARRY); } } else if ((input.mouse.y >= 58) && (input.mouse.y <= 68) && (input.mouse.x >= 133) && (input.mouse.x <= 186)) { // CANCEL button editor.abortMod2Wav = true; } return (true); } guiButton = checkGUIButtons(); if (guiButton != -1) { switch (guiButton) { case PTB_DUMMY: break; // for gaps/empty spaces/dummies case PTB_TERM_CLEAR: terminalClear(); break; case PTB_TERM_EXIT: { editor.ui.terminalShown = false; editor.ui.terminalWasClosed = true; // special case for exit button removeTerminalScreen(); } break; case PTB_TERM_SCROLL_UP: { input.mouse.lastGUIButton = guiButton; // button repeat terminalScrollUp(); } break; case PTB_TERM_SCROLL_BAR: { input.mouse.lastGUIButton = guiButton; // button repeat if (!editor.ui.forceTermBarDrag) { terminalHandleScrollBar(MOUSE_BUTTON_NOT_HELD); return (true); } } break; case PTB_TERM_SCROLL_DOWN: { input.mouse.lastGUIButton = guiButton; // button repeat terminalScrollDown(); } break; case PTB_PAT2SMP: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_PAT2SMP; editor.ui.pat2SmpDialogShown = true; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); if (editor.songPlaying) sprintf(pat2SmpText, "ROW 00 TO SMP %02X?", editor.currSample + 1); else sprintf(pat2SmpText, "ROW %02d TO SMP %02X?", modEntry->currRow, editor.currSample + 1); setStatusMessage(pat2SmpText, NO_CARRY); renderAskDialog(); } break; // Edit Op. All Screens case PTB_EO_TITLEBAR: { if (editor.ui.editOpScreen == 0) editor.sampleAllFlag ^= 1; else if (editor.ui.editOpScreen == 1) editor.trackPattFlag = (editor.trackPattFlag + 1) % 3; else if (editor.ui.editOpScreen == 2) editor.halfClipFlag ^= 1; else if (editor.ui.editOpScreen == 3) editor.newOldFlag ^= 1; renderEditOpMode(); } break; case PTB_EO_1: { editor.ui.editOpScreen = 0; renderEditOpScreen(); } break; case PTB_EO_2: { editor.ui.editOpScreen = 1; renderEditOpScreen(); } break; case PTB_EO_3: { editor.ui.editOpScreen = 2; renderEditOpScreen(); } break; case PTB_EO_EXIT: { editor.ui.aboutScreenShown = false; editor.ui.editOpScreenShown = false; displayMainScreen(); } break; // ---------------------------------------------------------- // Edit Op. Screen #1 case PTB_EO_TRACK_NOTE_UP: trackNoteUp(editor.sampleAllFlag, 0, MOD_ROWS - 1); break; case PTB_EO_TRACK_NOTE_DOWN: trackNoteDown(editor.sampleAllFlag, 0, MOD_ROWS - 1); break; case PTB_EO_TRACK_OCTA_UP: trackOctaUp(editor.sampleAllFlag, 0, MOD_ROWS - 1); break; case PTB_EO_TRACK_OCTA_DOWN: trackOctaDown(editor.sampleAllFlag, 0, MOD_ROWS - 1); break; case PTB_EO_PATT_NOTE_UP: pattNoteUp(editor.sampleAllFlag); break; case PTB_EO_PATT_NOTE_DOWN: pattNoteDown(editor.sampleAllFlag); break; case PTB_EO_PATT_OCTA_UP: pattOctaUp(editor.sampleAllFlag); break; case PTB_EO_PATT_OCTA_DOWN: pattOctaDown(editor.sampleAllFlag); break; // ---------------------------------------------------------- // Edit Op. Screen #2 case PTB_EO_RECORD: { editor.recordMode ^= 1; editor.ui.updateRecordText = true; } break; case PTB_EO_DELETE: delSampleTrack(); break; case PTB_EO_EXCHGE: exchSampleTrack(); break; case PTB_EO_COPY: copySampleTrack(); break; case PTB_EO_FROM: { editor.sampleFrom = editor.currSample + 1; editor.ui.updateFromText = true; } break; case PTB_EO_TO: { editor.sampleTo = editor.currSample + 1; editor.ui.updateToText = true; } break; case PTB_EO_KILL: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_KILL_SAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("KILL SAMPLE ?", NO_CARRY); renderAskDialog(); } break; case PTB_EO_QUANTIZE: { editor.ui.tmpDisp16 = editor.quantizeValue; editor.quantizeValueDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 2824; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_EO_QUANTIZE); } break; case PTB_EO_METRO_1: // metronome speed { editor.ui.tmpDisp16 = editor.metroSpeed; editor.metroSpeedDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 3261; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_EO_METRO_1); } break; case PTB_EO_METRO_2: // metronome channel { editor.ui.tmpDisp16 = editor.metroChannel; editor.metroChannelDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 3264; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_EO_METRO_2); } break; case PTB_EO_FROM_NUM: { editor.ui.tmpDisp8 = editor.sampleFrom; editor.sampleFromDisp = &editor.ui.tmpDisp8; editor.ui.numPtr8 = &editor.ui.tmpDisp8; editor.ui.numLen = 2; editor.ui.numBits = 8; editor.ui.editTextPos = 3273; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_EO_FROM_NUM); } break; case PTB_EO_TO_NUM: { editor.ui.tmpDisp8 = editor.sampleTo; editor.sampleToDisp = &editor.ui.tmpDisp8; editor.ui.numPtr8 = &editor.ui.tmpDisp8; editor.ui.numLen = 2; editor.ui.numBits = 8; editor.ui.editTextPos = 3713; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_EO_TO_NUM); } break; case PTB_EO_FROM_UP: { if (editor.sampleFrom < 0x1F) { editor.sampleFrom++; editor.ui.updateFromText = true; input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_EO_FROM_DOWN: { if (editor.sampleFrom > 0x00) { editor.sampleFrom--; editor.ui.updateFromText = true; input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_EO_TO_UP: { if (editor.sampleTo < 0x1F) { editor.sampleTo++; editor.ui.updateToText = true; input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_EO_TO_DOWN: { if (editor.sampleTo > 0x00) { editor.sampleTo--; editor.ui.updateToText = true; input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_EO_KEYS: { editor.multiFlag ^= 1; editor.ui.updateTrackerFlags = true; editor.ui.updateKeysText = true; } break; // ---------------------------------------------------------- // Edit Op. Screen #3 case PTB_EO_MIX: { if (!input.mouse.rightButtonPressed) { editor.mixFlag = true; editor.ui.showTextPtr = editor.mixText; editor.ui.textEndPtr = editor.mixText + 15; editor.ui.textLength = 16; editor.ui.editTextPos = 1936; // (y * 40) + x editor.ui.dstOffset = NULL; editor.ui.dstOffsetEnd = false; editor.ui.updateMixText = true; getTextLine(PTB_EO_MIX); } else { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.samplePos == s->length) { displayErrorMsg("INVALID POS !"); break; } ptr8_1 = (int8_t *)(malloc(MAX_SAMPLE_LEN)); if (ptr8_1 == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample mixing failed: out of memory!\n"); return (true); } memcpy(ptr8_1, &modEntry->sampleData[s->offset], MAX_SAMPLE_LEN); ptr8_2 = &modEntry->sampleData[s->offset + editor.samplePos]; ptr8_3 = &modEntry->sampleData[s->offset + (s->length - 1)]; ptr8_4 = ptr8_1; editor.modulateOffset = 0; editor.modulatePos = 0; do { tmp16 = *ptr8_2 + *ptr8_1; if (editor.halfClipFlag == 0) { smp_f = tmp16 / 2.0f; smp_f = roundf(smp_f); *ptr8_2++ = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); } else { *ptr8_2++ = (int8_t)(CLAMP(tmp16, -128, 127)); } if (editor.modulateSpeed == 0) { ptr8_1++; } else { editor.modulatePos += editor.modulateSpeed; modTmp = (editor.modulatePos / 4096) & 0x000000FF; modDat = vibratoTable[modTmp & 0x1F] / 4; modPos = ((modTmp & 32) ? (editor.modulateOffset - modDat) : (editor.modulateOffset + modDat)) + 2048; editor.modulateOffset = modPos; ptr8_1 = &ptr8_4[CLAMP(modPos / 2048, 0, s->length - 1)]; } } while (ptr8_2 < ptr8_3); free(ptr8_4); fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } } break; case PTB_EO_ECHO: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.samplePos == 0) { displayErrorMsg("SET SAMPLE POS !"); break; } if (editor.samplePos == s->length) { displayErrorMsg("INVALID POS !"); break; } ptr8_1 = &modEntry->sampleData[s->offset + editor.samplePos]; ptr8_2 = &modEntry->sampleData[s->offset]; ptr8_3 = ptr8_2; editor.modulateOffset = 0; editor.modulatePos = 0; for (j = 0; j < s->length; ++j) { smp_f = (*ptr8_2 + *ptr8_1) / 2.0f; smp_f = roundf(smp_f); *ptr8_1++ = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); if (editor.modulateSpeed == 0) { ptr8_2++; } else { editor.modulatePos += editor.modulateSpeed; modTmp = (editor.modulatePos / 4096) & 0x000000FF; modDat = vibratoTable[modTmp & 0x1F] / 4; modPos = ((modTmp & 32) ? (editor.modulateOffset - modDat) : (editor.modulateOffset + modDat)) + 2048; editor.modulateOffset = modPos; ptr8_2 = &ptr8_3[CLAMP(modPos / 2048, 0, s->length - 1)]; } } if (editor.halfClipFlag != 0) { for (j = 0; j < s->length; ++j) ptr8_3[j] = (int8_t)(CLAMP(ptr8_3[j] * 2, -128, 127)); } fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_POS_NUM: { if (input.mouse.rightButtonPressed) { editor.samplePos = 0; editor.ui.updatePosText = true; } else { editor.ui.tmpDisp32 = editor.samplePos; editor.samplePosDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.numBits = 17; editor.ui.editTextPos = 2390; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_EO_POS_NUM); } } break; case PTB_EO_POS_UP: { edPosUpButton(INCREMENT_SLOW); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_POS_DOWN: { edPosDownButton(INCREMENT_SLOW); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_BOOST: // this is actually treble increase { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } boostSample(editor.currSample, false); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_FILTER: // this is actually treble decrease { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } filterSample(editor.currSample, false); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_MOD_NUM: { if (input.mouse.rightButtonPressed) { editor.modulateSpeed = 0; editor.ui.updateModText = true; } } break; case PTB_EO_MOD: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.modulateSpeed == 0) { displayErrorMsg("SET MOD. SPEED !"); break; } ptr8_1 = &modEntry->sampleData[s->offset]; ptr8_3 = (int8_t *)(malloc(MAX_SAMPLE_LEN)); if (ptr8_3 == NULL) { displayErrorMsg(editor.outOfMemoryText); terminalPrintf("Sample modulation failed: out of memory!\n"); return (true); } ptr8_2 = ptr8_3; memcpy(ptr8_2, ptr8_1, MAX_SAMPLE_LEN); editor.modulateOffset = 0; editor.modulatePos = 0; for (j = 0; j < s->length; ++j) { *ptr8_1++ = *ptr8_2; if (editor.modulateSpeed == 0) { ptr8_2++; } else { editor.modulatePos += editor.modulateSpeed; modTmp = (editor.modulatePos / 4096) & 0x000000FF; modDat = vibratoTable[modTmp & 0x1F] / 4; modPos = ((modTmp & 32) ? (editor.modulateOffset - modDat) : (editor.modulateOffset + modDat)) + 2048; editor.modulateOffset = modPos; ptr8_2 = &ptr8_3[CLAMP(modPos / 2048, 0, s->length - 1)]; } } free(ptr8_3); fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_MOD_UP: { edModUpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_MOD_DOWN: { edModDownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_X_FADE: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } ptr8_1 = &modEntry->sampleData[s->offset]; ptr8_2 = &modEntry->sampleData[s->offset + (s->length - 1)]; do { tmp16 = *ptr8_1 + *ptr8_2; if (editor.halfClipFlag == 0) { smp_f = tmp16 / 2.0f; smp_f = roundf(smp_f); smp_f = CLAMP(smp_f, -128.0f, 127.0f); *ptr8_1++ = (int8_t)(smp_f); *ptr8_2-- = (int8_t)(smp_f); } else { tmp16 = CLAMP(tmp16, -128, 127); *ptr8_1++ = (int8_t)(tmp16); *ptr8_2-- = (int8_t)(tmp16); } } while (ptr8_1 < ptr8_2); fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_BACKWD: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if ((editor.markEndOfs - editor.markStartOfs) > 0) { ptr8_1 = &modEntry->sampleData[s->offset + editor.markStartOfs]; ptr8_2 = &modEntry->sampleData[s->offset + editor.markEndOfs - 1]; } else { ptr8_1 = &modEntry->sampleData[s->offset]; ptr8_2 = &modEntry->sampleData[s->offset + (s->length - 1)]; } do { tmpSmp = *ptr8_1; *ptr8_1++ = *ptr8_2; *ptr8_2-- = tmpSmp; } while (ptr8_1 < ptr8_2); fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_CB: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.samplePos == 0) { displayErrorMsg("SET SAMPLE POS !"); break; } if (editor.samplePos >= s->length) { displayErrorMsg("INVALID POS !"); break; } turnOffVoices(); memcpy(&modEntry->sampleData[s->offset], &modEntry->sampleData[s->offset + editor.samplePos], MAX_SAMPLE_LEN - editor.samplePos); memset(&modEntry->sampleData[s->offset + (MAX_SAMPLE_LEN - editor.samplePos)], 0, editor.samplePos); if (editor.samplePos > s->loopStart) { s->loopStart = 0; s->loopLength = 2; } else { s->loopStart = (s->loopStart - editor.samplePos) & 0xFFFFFFFE; } s->length = (s->length - editor.samplePos) & 0xFFFFFFFE; editor.samplePos = 0; fixSampleBeep(s); updateCurrSample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_CHORD: { editor.ui.editOpScreen = 3; renderEditOpScreen(); } break; case PTB_EO_FU: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.samplePos == 0) { displayErrorMsg("INVALID POS !"); break; } ptr8_1 = &modEntry->sampleData[s->offset]; for (j = 0; j < editor.samplePos; ++j) { smp_f = (*ptr8_1) * (j / 2.0f) / (editor.samplePos / 2.0f); smp_f = roundf(smp_f); *ptr8_1 = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); ptr8_1++; } fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_FD: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.samplePos >= (s->length - 1)) { displayErrorMsg("INVALID POS !"); break; } ptr8_1 = &modEntry->sampleData[s->offset + (s->length - 1)]; for (j = editor.samplePos; j < s->length; ++j) { smp_f = (((*ptr8_1) * ((j - editor.samplePos))) / (float)((s->length - 1) - editor.samplePos)); smp_f = roundf(smp_f); *ptr8_1 = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); ptr8_1--; } fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } break; case PTB_EO_UPSAMP: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_UPSAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("UPSAMPLE ?", NO_CARRY); renderAskDialog(); } break; case PTB_EO_DNSAMP: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_DOWNSAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("DOWNSAMPLE ?", NO_CARRY); renderAskDialog(); } break; case PTB_EO_VOL_NUM: { if (input.mouse.rightButtonPressed) { editor.sampleVol = 100; editor.ui.updateVolText = true; } else { editor.ui.tmpDisp16 = editor.sampleVol; editor.sampleVolDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 3; editor.ui.editTextPos = 3711; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_EO_VOL_NUM); } } break; case PTB_EO_VOL: { s = &modEntry->samples[editor.currSample]; if (s->length == 0) { displayErrorMsg("SAMPLE IS EMPTY"); break; } if (editor.sampleVol != 100) { ptr8_1 = &modEntry->sampleData[modEntry->samples[editor.currSample].offset]; for (j = 0; j < s->length; ++j) { smp_f = ((*ptr8_1) * editor.sampleVol) / 100.0f; smp_f = roundf(smp_f); *ptr8_1++ = (int8_t)(CLAMP(smp_f, -128.0f, 127.0f)); } fixSampleBeep(s); if (editor.ui.samplerScreenShown) displaySample(); updateWindowTitle(MOD_IS_MODIFIED); } } break; case PTB_EO_VOL_UP: { edVolUpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_VOL_DOWN: { edVolDownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; // ---------------------------------------------------------- // Edit Op. Screen #4 case PTB_EO_DOCHORD: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_MAKE_CHORD; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("MAKE CHORD?", NO_CARRY); renderAskDialog(); } break; case PTB_EO_MAJOR: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 4; editor.note3 = editor.note1 + 7; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; editor.note4 = 36; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_MAJOR7: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 4; editor.note3 = editor.note1 + 7; editor.note4 = editor.note1 + 11; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; if (editor.note4 >= 36) editor.note4 -= 12; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_NOTE1: { if (input.mouse.rightButtonPressed) { editor.note1 = 36; } else { editor.ui.changingChordNote = 1; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); } editor.ui.updateNote1Text = true; } break; case PTB_EO_NOTE1_UP: { edNote1UpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE1_DOWN: { edNote1DownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE2: { if (input.mouse.rightButtonPressed) { editor.note2 = 36; } else { editor.ui.changingChordNote = 2; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); } editor.ui.updateNote2Text = true; } break; case PTB_EO_NOTE2_UP: { edNote2UpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE2_DOWN: { edNote2DownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE3: { if (input.mouse.rightButtonPressed) { editor.note3 = 36; } else { editor.ui.changingChordNote = 3; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); } editor.ui.updateNote3Text = true; } break; case PTB_EO_NOTE3_UP: { edNote3UpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE3_DOWN: { edNote3DownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE4: { if (input.mouse.rightButtonPressed) { editor.note4 = 36; } else { editor.ui.changingChordNote = 4; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); } editor.ui.updateNote4Text = true; } break; case PTB_EO_NOTE4_UP: { edNote4UpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_NOTE4_DOWN: { edNote4DownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_EO_RESET: { editor.note1 = 36; editor.note2 = 36; editor.note3 = 36; editor.note4 = 36; editor.chordLengthMin = false; editor.ui.updateNote1Text = true; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_MINOR: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 3; editor.note3 = editor.note1 + 7; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; editor.note4 = 36; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_MINOR7: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 3; editor.note3 = editor.note1 + 7; editor.note4 = editor.note1 + 10; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; if (editor.note4 >= 36) editor.note4 -= 12; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_UNDO: { editor.note1 = editor.oldNote1; editor.note2 = editor.oldNote2; editor.note3 = editor.oldNote3; editor.note4 = editor.oldNote4; editor.ui.updateNote1Text = true; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_SUS4: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 5; editor.note3 = editor.note1 + 7; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; editor.note4 = 36; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_MAJOR6: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 4; editor.note3 = editor.note1 + 7; editor.note4 = editor.note1 + 9; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; if (editor.note4 >= 36) editor.note4 -= 12; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; case PTB_EO_LENGTH: { if ((modEntry->samples[editor.currSample].loopLength == 2) && (modEntry->samples[editor.currSample].loopStart == 0)) { editor.chordLengthMin = input.mouse.rightButtonPressed ? true : false; recalcChordLength(); } } break; case PTB_EO_MINOR6: { if (editor.note1 == 36) { displayErrorMsg("NO BASENOTE!"); break; } editor.oldNote1 = editor.note1; editor.oldNote2 = editor.note2; editor.oldNote3 = editor.note3; editor.oldNote4 = editor.note4; editor.note2 = editor.note1 + 3; editor.note3 = editor.note1 + 7; editor.note4 = editor.note1 + 9; if (editor.note2 >= 36) editor.note2 -= 12; if (editor.note3 >= 36) editor.note3 -= 12; if (editor.note4 >= 36) editor.note4 -= 12; editor.ui.updateNote2Text = true; editor.ui.updateNote3Text = true; editor.ui.updateNote4Text = true; recalcChordLength(); } break; // ---------------------------------------------------------- case PTB_ABOUT: { editor.ui.aboutScreenShown ^= 1; if (editor.ui.aboutScreenShown) { renderAboutScreen(); } else { if (editor.ui.visualizerMode == VISUAL_QUADRASCOPE) renderQuadrascopeBg(); else if (editor.ui.visualizerMode == VISUAL_SPECTRUM ) renderSpectrumAnalyzerBg(); else renderMonoscopeBg(); } } break; case PTB_DO_BADGE: { } break; case PTB_PE_PATT: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { editor.ui.tmpDisp16 = modEntry->currOrder; if (editor.ui.tmpDisp16 > (modEntry->head.orderCount - 1)) editor.ui.tmpDisp16 = modEntry->head.orderCount - 1; editor.ui.tmpDisp16 = modEntry->head.order[editor.ui.tmpDisp16]; editor.currPosEdPattDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 2180; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_PE_PATT); } } break; case PTB_PE_PATTNAME: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { editor.ui.showTextPtr = &editor.ui.pattNames[modEntry->head.order[modEntry->currOrder] * 16]; editor.ui.textEndPtr = &editor.ui.pattNames[(modEntry->head.order[modEntry->currOrder] * 16) + 15]; editor.ui.textLength = 15; editor.ui.editTextPos = 2183; // (y * 40) + x editor.ui.dstOffset = &editor.textofs.posEdPattName; editor.ui.dstOffsetEnd = false; getTextLine(PTB_PE_PATTNAME); return (true); // yes } } break; case PTB_PE_SCROLLTOP: { if (modEntry->currOrder != 0) modSetPos(0, DONT_SET_ROW); } break; case PTB_PE_SCROLLUP: { if (modEntry->currOrder > 0) modSetPos(modEntry->currOrder - 1, DONT_SET_ROW); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_PE_SCROLLDOWN: { if (modEntry->currOrder < (modEntry->head.orderCount - 1)) modSetPos(modEntry->currOrder + 1, DONT_SET_ROW); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_PE_SCROLLBOT: { if (modEntry->currOrder != (modEntry->head.orderCount - 1)) modSetPos(modEntry->head.orderCount - 1, DONT_SET_ROW); } break; case PTB_PE_EXIT: { editor.ui.aboutScreenShown = false; editor.ui.posEdScreenShown = false; displayMainScreen(); } break; case PTB_POS: case PTB_POSED: { editor.ui.posEdScreenShown ^= 1; if (editor.ui.posEdScreenShown) { renderPosEdScreen(); editor.ui.updatePosEd = true; } else { displayMainScreen(); } } break; case PTB_POSS: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (input.mouse.rightButtonPressed) { modEntry->currOrder = 0; editor.currPatternDisp = &modEntry->head.order[modEntry->currOrder]; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } else { editor.ui.tmpDisp16 = modEntry->currOrder; editor.currPosDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 3; editor.ui.editTextPos = 169; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_POSS); } } } break; case PTB_PATTERNS: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (input.mouse.rightButtonPressed) { modEntry->head.order[modEntry->currOrder] = 0; editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } else { editor.ui.tmpDisp16 = modEntry->head.order[modEntry->currOrder]; editor.currPatternDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 610; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_PATTERNS); } } } break; case PTB_LENGTHS: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (input.mouse.rightButtonPressed) { modEntry->head.orderCount = 1; tmp16 = modEntry->currOrder; if (tmp16 > (modEntry->head.orderCount - 1)) tmp16 = modEntry->head.orderCount - 1; editor.currPosEdPattDisp = &modEntry->head.order[tmp16]; editor.ui.updateSongSize = true; updateWindowTitle(MOD_IS_MODIFIED); if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } else { editor.ui.tmpDisp16 = modEntry->head.orderCount; editor.currLengthDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 3; editor.ui.editTextPos = 1049; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_LENGTHS); } } } break; case PTB_PATTBOX: case PTB_PATTDATA: { if (!editor.ui.introScreenShown) { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT) || (editor.playMode != PLAY_MODE_NORMAL)) { editor.ui.tmpDisp16 = modEntry->currPattern; editor.currEditPatternDisp = &editor.ui.tmpDisp16; editor.ui.numPtr16 = &editor.ui.tmpDisp16; editor.ui.numLen = 2; editor.ui.editTextPos = 5121; // (y * 40) + x getNumLine(TEXT_EDIT_DECIMAL, PTB_PATTDATA); } } } break; case PTB_SAMPLES: { editor.sampleZero = false; editor.ui.tmpDisp8 = editor.currSample; editor.currSampleDisp = &editor.ui.tmpDisp8; editor.ui.numPtr8 = &editor.ui.tmpDisp8; editor.ui.numLen = 2; editor.ui.numBits = 8; editor.ui.editTextPos = 1930; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_SAMPLES); } break; case PTB_SVOLUMES: { if (input.mouse.rightButtonPressed) { modEntry->samples[editor.currSample].volume = 0; } else { editor.ui.tmpDisp8 = modEntry->samples[editor.currSample].volume; modEntry->samples[editor.currSample].volumeDisp = &editor.ui.tmpDisp8; editor.ui.numPtr8 = &editor.ui.tmpDisp8; editor.ui.numLen = 2; editor.ui.numBits = 8; editor.ui.editTextPos = 2370; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_SVOLUMES); } } break; case PTB_SLENGTHS: { if (input.mouse.rightButtonPressed) { s = &modEntry->samples[editor.currSample]; turnOffVoices(); s->length = 0; if ((s->loopStart + s->loopLength) > 2) { if (s->length < (s->loopStart + s->loopLength)) s->length = s->loopStart + s->loopLength; } editor.ui.updateSongSize = true; editor.ui.updateCurrSampleLength = true; if (editor.ui.samplerScreenShown) redrawSample(); recalcChordLength(); updateWindowTitle(MOD_IS_MODIFIED); } else { editor.ui.tmpDisp32 = modEntry->samples[editor.currSample].length; modEntry->samples[editor.currSample].lengthDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.numBits = 17; editor.ui.editTextPos = 2807; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_SLENGTHS); } } break; case PTB_SREPEATS: { if (input.mouse.rightButtonPressed) { s = &modEntry->samples[editor.currSample]; s->loopStart = 0; if (s->length >= s->loopLength) { if ((s->loopStart + s->loopLength) > s->length) s->loopStart = s->length - s->loopLength; } else { s->loopStart = 0; } editor.ui.updateCurrSampleRepeat = true; if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) editor.ui.updateLengthText = true; if (editor.ui.samplerScreenShown) setLoopSprites(); mixerUpdateLoops(); updateWindowTitle(MOD_IS_MODIFIED); } else { editor.ui.tmpDisp32 = modEntry->samples[editor.currSample].loopStart; modEntry->samples[editor.currSample].loopStartDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.numBits = 17; editor.ui.editTextPos = 3247; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_SREPEATS); } } break; case PTB_SREPLENS: { if (input.mouse.rightButtonPressed) { s = &modEntry->samples[editor.currSample]; s->loopLength = 0; if (s->length >= s->loopStart) { if ((s->loopStart + s->loopLength) > s->length) s->loopLength = s->length - s->loopStart; } else { s->loopLength = 2; } if (s->loopLength < 2) s->loopLength = 2; editor.ui.updateCurrSampleReplen = true; if (editor.ui.editOpScreenShown && (editor.ui.editOpScreen == 3)) editor.ui.updateLengthText = true; if (editor.ui.samplerScreenShown) setLoopSprites(); mixerUpdateLoops(); updateWindowTitle(MOD_IS_MODIFIED); } else { editor.ui.tmpDisp32 = modEntry->samples[editor.currSample].loopLength; modEntry->samples[editor.currSample].loopLengthDisp = &editor.ui.tmpDisp32; editor.ui.numPtr32 = &editor.ui.tmpDisp32; editor.ui.numLen = 5; editor.ui.numBits = 17; editor.ui.editTextPos = 3687; // (y * 40) + x getNumLine(TEXT_EDIT_HEX, PTB_SREPLENS); } } break; case PTB_EDITOP: { if (editor.ui.editOpScreenShown) editor.ui.editOpScreen = (editor.ui.editOpScreen + 1) % 3; else editor.ui.editOpScreenShown = true; renderEditOpScreen(); } break; case PTB_DO_LOADMODULE: { editor.diskop.mode = DISKOP_MODE_MOD; editor.diskop.scrollOffset = 0; editor.diskop.cached = false; editor.ui.updateDiskOpFileList = true; editor.ui.updateLoadMode = true; } break; case PTB_DO_LOADSAMPLE: { editor.diskop.mode = DISKOP_MODE_SMP; editor.diskop.scrollOffset = 0; editor.diskop.cached = false; editor.ui.updateDiskOpFileList = true; editor.ui.updateLoadMode = true; } break; case PTB_LOADSAMPLE: // "LOAD" button next to sample name { editor.ui.posEdScreenShown = false; editor.diskop.mode = DISKOP_MODE_SMP; editor.diskop.scrollOffset = 0; editor.diskop.cached = false; if (!editor.ui.diskOpScreenShown) { editor.ui.diskOpScreenShown = true; renderDiskOpScreen(); } else { editor.ui.updateDiskOpFileList = true; editor.ui.updateLoadMode = true; } } break; case PTB_DO_SAVESAMPLE: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_SAVE_SAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("SAVE SAMPLE ?", NO_CARRY); renderAskDialog(); } break; case PTB_MOD2WAV: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_MOD2WAV; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("RENDER WAV FILE?", NO_CARRY); renderAskDialog(); } break; case PTB_SA_RESAMPLENOTE: { editor.ui.changingSmpResample = true; editor.ui.updateResampleNote = true; setStatusMessage("SELECT NOTE", NO_CARRY); pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); } break; case PTB_SA_RESAMPLE: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_RESAMPLE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("RESAMPLE?", NO_CARRY); renderAskDialog(); } break; case PTB_SA_SAMPLEAREA: { if (editor.ui.sampleMarkingPos == -1) { samplerSamplePressed(MOUSE_BUTTON_NOT_HELD); return (true); } } break; case PTB_SA_ZOOMBARAREA: { input.mouse.lastGUIButton = guiButton; // button repeat if (!editor.ui.forceSampleDrag) { samplerBarPressed(MOUSE_BUTTON_NOT_HELD); return (true); } } break; case PTB_SA_FIXDC: samplerRemoveDcOffset(); break; case PTB_SA_CUT: samplerSamDelete(SAMPLE_CUT); break; case PTB_SA_PASTE: samplerSamPaste(); break; case PTB_SA_COPY: samplerSamCopy(); break; case PTB_SA_LOOP: samplerLoopToggle(); break; case PTB_SA_PLAYWAVE: samplerPlayWaveform(); break; case PTB_SA_PLAYDISPLAYED: samplerPlayDisplay(); break; case PTB_SA_PLAYRANGE: samplerPlayRange(); break; case PTB_SA_RANGEALL: samplerRangeAll(); break; case PTB_SA_SHOWALL: samplerShowAll(); break; case PTB_SA_SHOWRANGE: samplerShowRange(); break; case PTB_SA_RANGECENTER: sampleMarkerToCenter(); break; case PTB_SA_RANGEBEG: sampleMarkerToBeg(); break; case PTB_SA_RANGEEND: sampleMarkerToEnd(); break; case PTB_SA_ZOOMOUT: samplerZoomOut2x(); break; case PTB_SA_VOLUME: { editor.ui.samplerVolBoxShown = true; renderSamplerVolBox(); } break; case PTB_SA_FILTERS: { editor.ui.samplerFiltersBoxShown = true; renderSamplerFiltersBox(); fillSampleFilterUndoBuffer(); } break; case PTB_SA_STOP: { for (i = 0; i < AMIGA_VOICES; ++i) mixerKillVoice(i); } break; case PTB_DO_REFRESH: { editor.diskop.scrollOffset = 0; editor.diskop.cached = false; editor.ui.updateDiskOpFileList = true; } break; // TODO: Find a PowerPacker packer and enable this // case PTB_DO_PACKMOD: editor.diskop.modPackFlg ^= 1; break; case PTB_DO_SAMPLEFORMAT: { editor.diskop.smpSaveType = (editor.diskop.smpSaveType + 1) % 3; editor.ui.updateSaveFormatText = true; } break; case PTB_DO_MODARROW: { editor.diskop.mode = DISKOP_MODE_MOD; editor.diskop.scrollOffset = 0; editor.diskop.cached = false; editor.ui.updateDiskOpFileList = true; editor.ui.updateLoadMode = true; } break; case PTB_DO_SAMPLEARROW: { editor.diskop.mode = DISKOP_MODE_SMP; editor.diskop.scrollOffset = 0; editor.diskop.cached = false; editor.ui.updateDiskOpFileList = true; editor.ui.updateLoadMode = true; } break; case PTB_SA_TUNETONE: toggleTuningTone(); break; case PTB_POSINS: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (modEntry->head.orderCount < 127) { for (i = 0; i < (127 - modEntry->currOrder); ++i) modEntry->head.order[127 - i] = modEntry->head.order[126 - i]; modEntry->head.order[modEntry->currOrder] = 0; modEntry->head.orderCount++; if (modEntry->currOrder > (modEntry->head.orderCount - 1)) editor.currPosEdPattDisp = &modEntry->head.order[modEntry->head.orderCount - 1]; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updateSongSize = true; editor.ui.updateSongLength = true; editor.ui.updateSongPattern = true; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } }; break; case PTB_POSDEL: { if ((editor.currMode == MODE_IDLE) || (editor.currMode == MODE_EDIT)) { if (modEntry->head.orderCount > 1) { for (i = 0; i < (126 - modEntry->currOrder); ++i) modEntry->head.order[modEntry->currOrder + i] = modEntry->head.order[modEntry->currOrder + 1 + i]; modEntry->head.orderCount--; if (modEntry->currOrder > (modEntry->head.orderCount - 1)) editor.currPosEdPattDisp = &modEntry->head.order[modEntry->head.orderCount - 1]; } updateWindowTitle(MOD_IS_MODIFIED); editor.ui.updateSongSize = true; editor.ui.updateSongLength = true; editor.ui.updateSongPattern = true; if (editor.ui.posEdScreenShown) editor.ui.updatePosEd = true; } } break; case PTB_DO_SAVEMODULE: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_SAVE_MODULE; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("SAVE MODULE ?", NO_CARRY); renderAskDialog(); } break; case PTB_DO_DATAPATH: { if (input.mouse.rightButtonPressed) { memset(editor.currPath, 0, PATH_MAX_LEN + 1); editor.ui.updateDiskOpPathText = true; } editor.ui.showTextPtr = editor.currPath; editor.ui.textEndPtr = &editor.currPath[PATH_MAX_LEN - 1]; editor.ui.textLength = 26; editor.ui.editTextPos = 1043; // (y * 40) + x editor.ui.dstOffset = &editor.textofs.diskOpPath; editor.ui.dstOffsetEnd = false; getTextLine(PTB_DO_DATAPATH); } break; case PTB_SONGNAME: { if (input.mouse.rightButtonPressed) { memset(modEntry->head.moduleTitle, 0, sizeof (modEntry->head.moduleTitle)); editor.ui.updateSongName = true; updateWindowTitle(MOD_IS_MODIFIED); } else { editor.ui.showTextPtr = modEntry->head.moduleTitle; editor.ui.textEndPtr = modEntry->head.moduleTitle + 19; editor.ui.textLength = 20; editor.ui.editTextPos = 4133; // (y * 40) + x editor.ui.dstOffset = NULL; editor.ui.dstOffsetEnd = false; getTextLine(PTB_SONGNAME); } } break; case PTB_SAMPLENAME: { if (input.mouse.rightButtonPressed) { memset(modEntry->samples[editor.currSample].text, 0, sizeof (modEntry->samples[editor.currSample].text)); editor.ui.updateCurrSampleName = true; updateWindowTitle(MOD_IS_MODIFIED); } else { editor.ui.showTextPtr = modEntry->samples[editor.currSample].text; editor.ui.textEndPtr = modEntry->samples[editor.currSample].text + 21; editor.ui.textLength = 22; editor.ui.editTextPos = 4573; // (y * 40) + x editor.ui.dstOffset = NULL; editor.ui.dstOffsetEnd = false; getTextLine(PTB_SAMPLENAME); } } break; case PTB_PAT2SMP_HI: { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; editor.pat2SmpHQ = true; handleAskYes(); } break; case PTB_PAT2SMP_LO: { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; editor.pat2SmpHQ = false; handleAskYes(); } break; case PTB_SUREY: { editor.ui.askScreenShown = false; editor.ui.answerNo = false; editor.ui.answerYes = true; handleAskYes(); } break; case PTB_PAT2SMP_ABORT: case PTB_SUREN: { editor.ui.askScreenShown = false; editor.ui.answerNo = true; editor.ui.answerYes = false; handleAskNo(); } break; case PTB_VISUALS: { if (editor.ui.aboutScreenShown) { editor.ui.aboutScreenShown = false; } else if (!input.mouse.rightButtonPressed) { editor.ui.visualizerMode = (editor.ui.visualizerMode + 1) % 3; if (editor.ui.visualizerMode == VISUAL_SPECTRUM) memset((int8_t *)(editor.spectrumVolumes), 0, sizeof (editor.spectrumVolumes)); } if (editor.ui.visualizerMode == VISUAL_QUADRASCOPE) renderQuadrascopeBg(); else if (editor.ui.visualizerMode == VISUAL_SPECTRUM ) renderSpectrumAnalyzerBg(); else renderMonoscopeBg(); } break; case PTB_QUIT: { editor.ui.askScreenShown = true; editor.ui.askScreenType = ASK_QUIT; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("REALLY QUIT ?", NO_CARRY); renderAskDialog(); } break; case PTB_CHAN1: { if (input.mouse.rightButtonPressed) { editor.muted[0] = false; editor.muted[1] = true; editor.muted[2] = true; editor.muted[3] = true; } else { editor.muted[0] ^= 1; } renderMuteButtons(); } break; case PTB_CHAN2: { if (input.mouse.rightButtonPressed) { editor.muted[0] = true; editor.muted[1] = false; editor.muted[2] = true; editor.muted[3] = true; } else { editor.muted[1] ^= 1; } renderMuteButtons(); } break; case PTB_CHAN3: { if (input.mouse.rightButtonPressed) { editor.muted[0] = true; editor.muted[1] = true; editor.muted[2] = false; editor.muted[3] = true; } else { editor.muted[2] ^= 1; } renderMuteButtons(); } break; case PTB_CHAN4: { if (input.mouse.rightButtonPressed) { editor.muted[0] = true; editor.muted[1] = true; editor.muted[2] = true; editor.muted[3] = false; } else { editor.muted[3] ^= 1; } renderMuteButtons(); } break; case PTB_SAMPLER: samplerScreen(); break; case PTB_SA_EXIT: exitFromSam(); break; case PTB_DO_FILEAREA: diskOpLoadFile((input.mouse.y - 34) / 6); break; case PTB_DO_PARENT: { #ifdef _WIN32 diskOpSetPath(L"..", DISKOP_CACHE); #else diskOpSetPath("..", DISKOP_CACHE); #endif } break; case PTB_DISKOP: { editor.blockMarkFlag = false; editor.ui.diskOpScreenShown = true; renderDiskOpScreen(); } break; case PTB_DO_EXIT: { editor.ui.aboutScreenShown = false; editor.ui.diskOpScreenShown = false; editor.blockMarkFlag = false; pointerSetPreviousMode(); setPrevStatusMessage(); displayMainScreen(); } break; case PTB_DO_SCROLLUP: { if (editor.diskop.scrollOffset > 0) { editor.diskop.scrollOffset--; editor.ui.updateDiskOpFileList = true; input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_DO_SCROLLTOP: { editor.diskop.scrollOffset = 0; editor.ui.updateDiskOpFileList = true; } break; case PTB_DO_SCROLLDOWN: { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { if (editor.diskop.scrollOffset < (editor.diskop.numFiles - DISKOP_LIST_SIZE)) { editor.diskop.scrollOffset++; editor.ui.updateDiskOpFileList = true; input.mouse.lastGUIButton = guiButton; // button repeat } } } break; case PTB_DO_SCROLLBOT: { if (editor.diskop.numFiles > DISKOP_LIST_SIZE) { editor.diskop.scrollOffset = editor.diskop.numFiles - DISKOP_LIST_SIZE; editor.ui.updateDiskOpFileList = true; } } break; case PTB_STOP: { editor.playMode = PLAY_MODE_NORMAL; modStop(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_PLAY: { editor.playMode = PLAY_MODE_NORMAL; if (input.mouse.rightButtonPressed) modPlay(DONT_SET_PATTERN, modEntry->currOrder, modEntry->currRow); else modPlay(DONT_SET_PATTERN, modEntry->currOrder, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_PATTERN: { editor.playMode = PLAY_MODE_PATTERN; if (input.mouse.rightButtonPressed) modPlay(modEntry->currPattern, DONT_SET_ORDER, modEntry->currRow); else modPlay(modEntry->currPattern, DONT_SET_ORDER, DONT_SET_ROW); editor.currMode = MODE_PLAY; pointerSetMode(POINTER_MODE_PLAY, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_EDIT: { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_NORMAL; modStop(); editor.currMode = MODE_EDIT; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; case PTB_RECORD: { if (!editor.ui.samplerScreenShown) { editor.playMode = PLAY_MODE_PATTERN; if (input.mouse.rightButtonPressed) modPlay(modEntry->currPattern, DONT_SET_ORDER, modEntry->currRow); else modPlay(modEntry->currPattern, DONT_SET_ORDER, DONT_SET_ROW); editor.currMode = MODE_RECORD; pointerSetMode(POINTER_MODE_EDIT, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } } break; case PTB_CLEAR: { editor.ui.clearScreenShown = true; pointerSetMode(POINTER_MODE_MSG1, NO_CARRY); setStatusMessage("PLEASE SELECT", NO_CARRY); renderClearScreen(); } break; case PTB_CLEARSONG: { editor.ui.clearScreenShown = false; removeClearScreen(); editor.playMode = PLAY_MODE_NORMAL; modStop(); clearSong(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_CLEARSAMPLES: { editor.ui.clearScreenShown = false; removeClearScreen(); editor.playMode = PLAY_MODE_NORMAL; modStop(); clearSamples(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_CLEARALL: { editor.ui.clearScreenShown = false; removeClearScreen(); editor.playMode = PLAY_MODE_NORMAL; modStop(); clearAll(); editor.currMode = MODE_IDLE; pointerSetMode(POINTER_MODE_IDLE, DO_CARRY); setStatusMessage(editor.allRightText, DO_CARRY); } break; case PTB_CLEARCANCEL: { editor.ui.clearScreenShown = false; removeClearScreen(); setPrevStatusMessage(); pointerSetPreviousMode(); editor.errorMsgActive = true; editor.errorMsgBlock = true; editor.errorMsgCounter = 0; pointerErrorMode(); } break; case PTB_SAMPLEU: { if (input.mouse.rightButtonPressed) { editor.sampleZero = true; editor.ui.updateCurrSampleNum = true; } else { sampleUpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_SAMPLED: { if (input.mouse.rightButtonPressed) { editor.sampleZero = true; editor.ui.updateCurrSampleNum = true; } else { sampleDownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } } break; case PTB_FTUNEU: { sampleFineTuneUpButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_FTUNED: { sampleFineTuneDownButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SVOLUMEU: { sampleVolumeUpButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SVOLUMED: { sampleVolumeDownButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SLENGTHU: { sampleLengthUpButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SLENGTHD: { sampleLengthDownButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SREPEATU: { sampleRepeatUpButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SREPEATD: { sampleRepeatDownButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SREPLENU: { sampleRepeatLengthUpButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_SREPLEND: { sampleRepeatLengthDownButton(INCREMENT_SLOW); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_TEMPOU: { tempoUpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_TEMPOD: { tempoDownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_LENGTHU: { songLengthUpButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_LENGTHD: { songLengthDownButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_PATTERNU: { patternUpButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_PATTERND: { patternDownButton(); updateWindowTitle(MOD_IS_MODIFIED); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_POSU: { positionUpButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; case PTB_POSD: { positionDownButton(); input.mouse.lastGUIButton = guiButton; // button repeat } break; default: displayErrorMsg("NOT IMPLEMENTED"); break; // button not mapped } } } return (false); } void updateMouseCounters(void) { if (input.mouse.buttonWaiting) { if (++input.mouse.buttonWaitCounter > (VBLANK_HZ / 4)) // quarter of a second { input.mouse.buttonWaitCounter = 0; input.mouse.buttonWaiting = false; } } if (editor.errorMsgActive) { if (++editor.errorMsgCounter >= (uint8_t)(VBLANK_HZ / 1.8)) { editor.errorMsgCounter = 0; // don't reset status text/mouse color during certain modes if (!editor.ui.askScreenShown && !editor.ui.clearScreenShown && !editor.ui.pat2SmpDialogShown && !editor.ui.changingChordNote && !editor.ui.changingDrumPadNote && !editor.ui.changingSmpResample && !editor.swapChannelFlag) { pointerSetPreviousMode(); setPrevStatusMessage(); } editor.errorMsgActive = false; editor.errorMsgBlock = false; } } } protracker-2.3d.r92/make-linux.sh0000644000000000000000000000073013235646471015430 0ustar rootroot#!/bin/bash rm release/protracker &> /dev/null echo Compiling, please wait... gcc src/*.c src/gfx/*.c -lSDL2 -lm -ldl -Wall -Wno-unused-result -Wc++-compat -Wshadow -Winit-self -Wextra -Wunused -Wunreachable-code -Wredundant-decls -Wswitch-default -march=native -mtune=native -O3 -o release/protracker rm src/*.o src/gfx/*.o &> /dev/null echo Done! The binary \(protracker\) is in the folder named \'release\'. echo To run it, type ./protracker in the release folder. protracker-2.3d.r92/release/0000755000000000000000000000000013235646610014435 5ustar rootrootprotracker-2.3d.r92/release/protracker.ini0000644000000000000000000001452113235646555017325 0ustar rootroot; PROTRACKER V2.3D CLONE CONFIG FILE ; ; [] is a category, doesn't affect parsing ; ; is a comment, and also doesn't affect parsing ; ; If a duplicate setting is found, the one closest to ; the end of the file will be used. ; If a setting is invalid or not entered, it will use the default value. ; ; Syntax: ; ENTRY=VALUE (only strings can have spaces!) ; [VIDEO SETTINGS] ; Video scaling factor ; Syntax: 1X, 2X, 3X ... 9X ; Default value: 2X ; Comment: Sets the video scaling factor (window rendering size). ; 1X = 320x255 (no scaling) ; 2X = 640x510 (default) ; 3x = 960x765 ; 4x = 1280x1020 ; 5x = 1600x1275 ; 6x = 1920x1530 ; 7x = 2240x1785 ; 8x = 2560x2040 ; 9x = 2880x2295 ; VIDEOSCALE=2X ; Use vblank clock on quadrascope ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Uses the stable vblank clock for scopes. ; This means that they will be more stable in their framerate, ; but can in some cases make them even worse. Only gives a ; benefit if your display runs at 60Hz. ; VBLANKSCOPES=FALSE [GENERAL SETTINGS] ; Compo mode: Stop song after reaching song end ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: For music competitions. Stops the song after reaching ; song end so that you don't have to sit there and press STOP at ; the right moment. ; COMPOMODE=FALSE ; Close Disk Op. after loading a module ; Syntax: TRUE or FALSE ; Default value: TRUE ; AUTOCLOSEDISKOP=TRUE ; Blank sample number (first digit) aka. "BLANKZERO" setting in PT ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Setting it to TRUE removes the first sample number ; digit in the pattern viewer, if it's zero. E.g. "0F" -> " F". ; BLANKZERO=FALSE ; Real VU-Meters ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Setting it to TRUE will render real VU-Meters which ; are updated from the audio mixer. ; REALVUMETERS=FALSE ; Show dots instead of zeroes ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Setting it to TRUE will display dots for empty slots ; in the pattern viewer. Easier on the eye, but ruins the ; authentic ProTracker look. ; PATTDOTS=FALSE ; The way of displaying notes ; Syntax: SHARP or FLAT ; Default value: SHARP ; Comment: Setting it to FLAT will display notes differently. ; E.g. C#2 will be Db2. ; ACCIDENTAL=SHARP ; Quantize value for notes in record mode ; Syntax: 0 to 63 ; Default value: 1 ; Comment: Will move the notes you record to every n'th row. ; Entering 0 will turn off the quantizing, and the notes you play ; will always be inserted at the row you are at. ; Entering 1 will quantize the notes the the nearest row according ; to the speed. i.e. if you play a note after the first half has been ; played, it will be quantized to the row below. ; Entering a value like 8 will quantize to every 8th row, and so on. ; QUANTIZE=1 ; Delete out of range notes on transpose ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: If enabled, all the notes transposed out of range ; (C-1 to B-3) will be deleted. If not, they will not be transposed. ; TRANSDEL=FALSE ; Set default dir for Disk Op. read/load/save ; Stynax: Text string ; Default value: ; Max length: Varies... 260 characters on Windows, more on other OSes. ; Comment: Leave blank (or remove setting) to use ; the binary/exe directory. Don't use quotes! ; DEFAULTDIR= ; "mod.filename" saving ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Setting it to TRUE changes MOD saving to ext.filename. ; This is handy for editing songs made on the Amiga. ; Setting it to FALSE changes it to filename.ext (f.ex. mysong.mod) ; MODDOT=FALSE ; Dotted line in center of sample data view ; Syntax: TRUE or FALSE ; Default value: TRUE ; Comment: Setting it to FALSE will turn off the dotted center line ; that is rendered in the middle of the sampler data view in ; the sampler screen. ; DOTTEDCENTER=TRUE [AUDIO SETTINGS] ; Audio output frequency ; Syntax: Number, in hertz ; Default value: 48000 ; Comment: Ranges from 32000 to 96000. ; Also sets the playback frequency for WAVs made with MOD2WAV. ; FREQUENCY=48000 ; Audio buffer size ; Syntax: Number, in samples ; Default value: 1024 ; Comment: Ranges from 128 to 8192. *Should* be a number that is 2^n ; (128, 256, 512, 1024, 2048, 4096, 8192). The number you input isn't ; necessarily the final value the audio API decides to use. ; Lower means less audio latency but possible audio issues, higher ; means more audio latency but less chance for issues. This depends ; on the computer's speed and other things. ; BUFFERSIZE=1024 ; BLEP synthesis (band-limited step) ; Syntax: TRUE or FALSE ; Default value: TRUE ; Comment: Makes the audio sound more like a real Amiga by using ; band-limited steps in the audio mixer. This injects small impulses ; at the hard edges of a waveform, which reduces some aliasing ; in some cases. Set to FALSE if the processor is *slow*. ; BLEP=TRUE ; Amiga 500 low-pass filter (not the "LED" filter) ; Syntax: TRUE or FALSE ; Default value: FALSE ; Comment: Use a low-pass filter to prevent some ; of the aliasing in the sound at the expense of ; sound sharpness. ; Every Amiga had a low-pass filter like this. All of them except ; for Amiga 1200 (~28..31kHz) had it set to something around ; 4kHz to 5kHz (~4.4kHz). ; This must not be confused with the LED filter which can be turned ; on/off in software-- the low-pass filter is always enabled and ; can't be turned off. ; A500LOWPASSFILTER=FALSE ; Stereo separation ; Syntax: 0 to 100 (percent) ; Default value: 17 ; Comment: Set to 100 for the hard panning Amiga uses. ; Set to 0 for mono, which might be preferred in some cases. ; STEREOSEPARATION=17 ; End of config fileprotracker-2.3d.r92/release/help.txt0000644000000000000000000014007113235646555016141 0ustar rootroot-------------------------------------------------------------------------------- ProTracker v2.3D clone for modern platforms 2010-2017 -------------------------------------------------------------------------------- This help file was written by Lars "ZAP" Hamre and others back in the early 90s It was heavily edited by me. == Frequently Asked Questions (FAQ) == * HELP! I can't type any characters! - Chances are that you use a keyboard layout with a "special" alphabet. Set your keyboard layout to EN/US, this is sad hack but it's needed. * Alt+F5/ALT+F5 (copy/paste) doesn't work! - Windows: Uninstall 'GeForce Experience' if you have NVIDIA drivers installed, ALT+F5 is already taken by it and that program is junk anyways (imo). - OS X/mac OS/Linux: You need to remove or re-bind ALT+F4/ALT+F5 to other keys in your OS settings. * Is there a way to make the window bigger? - Set VIDEOSCALE to 2X, 3x or 4X in protracker.ini. * Is there a way to run the program in fullscreen mode? - Press F11. * How do I change the stereo separation (panning)? - Adjust the STEREOSEPARATION setting in protracker.ini. It's a percentage value ranging from 0 to 100. 0 being mono and 100 being 100% separated like the audio output from an Amiga. Pressing SHIFT+F12 will toggle between STEREOSEPARATION and 100% (hard pan). * Can this ProTracker clone load PT.Config files? - Yes. Put one in the same directory as the executable program, and it will load the first one it can find (PT.Config-00..99). It will override some of the settings from protracker.ini. * Will there ever be MIDI support? - No, sorry. Try a modern module tracker instead, or ProTracker on the Amiga. * Will there ever be external audio sampling support? - Very unlikely, but maybe if I find a portable way between different OSes. * Is there a quick way to clear an editable text string in the GUI? - Right click while in text edit mode. * Is there a quick way to save my module? - Press CTRL+S. This hotkey is "split mode" in Amiga ProTracker, which is not included in this PT clone. * Can I revert a sample after I edited it? - Press CTRL+Z while the sampler screen is open. * Can I quick-jump to an entry in the Disk Op. directory lister? - Press SHIFT+character while Disk Op. is open. * Will you ever make a ProTracker 3.x clone? ProTracker 3.x rulez! - Forget it. I'm not a fan of PT3.x, and here are some of the reasons: 1) It doesn't play PT1.x/2.x MODs correctly (f.ex: sample swap is removed) 2) The GUI looks and acts as if it's unfinished (unused buttons and so on) 3) The design is messy and not intuitive (PT2.x is also bad, but way better) * [insert random question] - Try to send an email to olav.sorensen@live.no or visit #protracker at IRCnet. == Some misc. info == When a MOD is modified, an asterisk (*) is shown to the left of the module name in the window title. If the program receives a SIGTERM or is quit with the cross (X) in the window bar, it will quit without asking, but only if the MOD was not modified. WARNING: Note B-3 (or pitches getting near; pitch slides, vibrato or arpeggio) may not play correctly on a real Amiga. It might crackle/pop because of a DMA underrun. Take extra care when doing high pitches! == Missing things that will NOT be added in the future == * Split keys (kinda pointless without MIDI). ctrl+s is now used for MOD saving * MIDI support * Setup screen == Some ProTracker keybindings are used by other things in OS X! == - In OS X, go to System Preferences -> Keyboard -> Keyboard Shortcuts and disable keybindings that could interrupt with any PT keybindings. == Where's the Amiga key? == PC keyboard: Left Amiga key = left Windows key Right Amiga key = right Alt Gr key Mac keyboard: Left Amiga key = left Command key Right Amiga key = right Command key == Non-ProTracker additions == * New keybindings: alt+F11 - Toggle between real/fake VU-Meters F11 - Toggle fullscreen F12 - Toggle Amiga model (for low-pass filter) shift+F12 - Toggle Amiga panning (100% stereo separation) ctrl+F12 - Toggle CIA/VBLANK timing for tempo/speed effect (Fxx) alt+F12 - Toggle logging terminal * Toggle channels by right clicking on the scopes * MOD2WAV button for rendering the current song to a .WAV file. Read more about this function in the MAINSCREEN chapter. * PAT2SMP button for rendering the current pattern (from current row) to the current sample slot. Read more about this function in the MAINSCREEN chapter. * Sample draw tool! Use right mouse button to edit sample data in the sampler like in FT2 (hold SHIFT key to stop drawing in the y axis, for making steady lines) * Sample "restore" keybinding (ctrl+z when sampler screen is open) When a sample is loaded its attributes and datas are copied to a temp buffer. If you press ctrl+z, the current sample's data+attributes will be restored. Now you don't need to reload a sample when you make a change you regret! * WAV sample loader. Supports the following WAVs: 8-bit, 16-bit, 24-bit, 32-bit and 32-bit float. The WAV samples are mixed to mono and quantized to 8-bit. It also attempts to load the "SMPL" chunk to get loop points and volume from sampler WAVs and Open ModPlug Tracker and the like. * PAGE UP/DOWN and HOME/END works in POS-ED, DISK OP. and the pattern editor (and HOME/END works while editing strings) * Low-pass and high-pass filters in the sampler editor * Logging terminal (press ALT+F12 to toggle it) * Some more stuff added to make life easier, like mouse wheel support. Now follows the main parts of this help file. MAINSCREEN ---------- ## PLAY ## Will play the song from the current song position. The pointer turns yellow, just to show you what's going on. If you hold right mouse button while clicking, it will play from the current row. Useful for checking if parts of the pattern sounds right, instead of playing from the beginning all the time. ## PATTERN ## Will play the current pattern which is shown at the bottom of the screen. The pointer turns yellow here as well. If you hold right mouse button while clicking, it will play from the current row. Useful for checking if parts of the pattern sounds right, instead of playing from the beginning all the time. ## EDIT ## Will put you in edit mode. The pointer turns blue, and you can enter notes and numbers from the keyboard. Use the arrow keys to move up/down and left/right in the pattern. Entering a note or a number will cause the pattern to jump one or more slots down, dependant on the EDITSKIP setting. ## RECORD ## Will put you in edit mode, but also play the current pattern or song. You can select this in the Edit Options menu. While the pattern or song is playing, you can type in notes and numbers from the keyboard, and they will appear in the pattern as it scrolls. The notes and numbers will also be quantized to the nearest row, so that keeping a steady rhythm is no problem (if you're good with realtime beats). The pointer will turn blue here as well as in the the normal edit mode. ## STOP ## Will stop playing of songs and patterns, recording, and will turn edit mode off. Can also be used to stop all looping samples when you're jamming. ## CLEAR ## Will first ask you what you want to clear. You can clear either all, song or samples. ## EDIT OP. ## Will exchange the spectrum analyzer or quadrascope with the edit menu(s). Pressing more than one time will browse through the edit op. screens. Click the "chord" button on screen 3 to get to the fourth screen. ## DISK OP. ## Will go to the load/save dialog. While in the DISK OP., you can press shift+character to jump to the first filename entry starting with that character. ## MOD2WAV ## Renders the current song to a 16-bit 44.1kHz stereo WAV file. Amiga panning mode, channel solo/mute, BLEP and the HP/LP filters are included in the rendering. ## PAT2SMP ## Renders the current pattern (from current row) to the current sample slot. This tool is handy for making drum loops. It will resample and mix (16-bit) active channels to mono. Normalization is done before quantizing to 8-bit, to preserve more of the audio data. - Quality mode: - HI: 28836Hz - Play the new sample at note A-3 (finetune +5) LO: 22168Hz - Play the new sample at note F-3 (finetune +1) High mode is better in quality, but usually can't fit a whole pattern. Low mode is pretty bad, but can usually fit a whole pattern. The low-pass and LED filters are NOT added to the PAT2SMP mixing, but the BLEP synthesis is left in to decrease some aliasing, though it's a bit buggy in LO mode (the BLEP routines are meant for deltas below 1.0). The solo/mute buttons are functional and handled in the PAT2SMP mixing. ## POS ED. ## This is the position editor screen found in ProTracker 2.2 or later. You can give patterns a name for organizing, but they are not saved in the module. ## SAMPLER ## Will go to the sampler screen. The small gadgets labeled ## 1, 2, 3 and 4 ## Represents the audio channels of your Ami.. I mean, non-Amiga computer. When lit, that channel is on. When not lit, the channel is muted and and the notes in that channel will not be played. If you hold the right mouse button while clicking, the channel will be solo'd. You can also use ctrl-a to toggle an audio channel, and ctrl-q to unmute all channels. ctrl+shift-a will solo the current channel. ## Tempo ## The tempo gadget on the status bar is for setting the CIA speed, if CIA timing is used. The gadget will be updated every time you set the speed using the F command (if CIA that is). To toggle between VBLANK/CIA, press ctrl+F12. This flag is not stored in the MOD file, so be careful. CIA is the standard mode, use it all the time unless you know what you're doing. DISK OP. -------- ## Path ## The paths for modules and samples. It can be up to ~260 characters long, depending on the OS. Click on it to edit the path. Right click while editing to zero out all the text - handy for changing the drive. ## Pack ## (NOT YET IMPLEMENTED) When on, ProTracker will powerpack modules/samples before saving. ## Load module ## Will set the DISK OP. to LOAD MODULE mode. It will only list loadable files (MOD/STK/M15/PP extensions). ## Save module ## Will save the module to the current disk op. path. The filename will be .mod or mod. dependant on a protracker.ini setting. ## Load sample ## Will set the DISK OP. to LOAD SAMPLE mode. It will list all files in a dir. ## Save Sample ## Will save the current sample as WAV, IFF or RAW. Select this in the "SAVE" gadget to the left. Sample loop points are stored to IFF files. SAMPLER ------- The new sampler/sample editor was included simply because we thought the one in Noisetracker 2.0 was terrible, and we needed graphing of samples and proper loop editing. It's very fast, much faster than Audiomaster, and the editing is much simpler. We also included a resampling option which we hope you'll find useful. Editing ------- When editing a sample, use the mouse to set the cursor line and to mark ranges. ## Waveform ## Will play the full sample with loops. ## Display ## Will play the part of the sample being shown on screen. ## Range ## Will play the marked range. ## Stop ## Will stop all playing of samples. ## Show range ## Will magnify the current range and display it. ## Show all ## Will display the whole sample. ## Beg ## Will put the cursor line at the beginning of the sample. Holding SHIFT while clicking will extend the marking to the beginning. ## End ## Will put the cursor line at the end of the sample. Holding SHIFT while clicking will extend the marking to the end. ## Center ## Will put the cursor line at the center of the sample. Holding SHIFT while clicking will extend the marking to the center. ## Zoom out ## Will show double the range you are displaying. ## Range all ## Will range the part of the sample being displayed on screen. ## Cut ## (or ctrl+X) Will cut the part of the sample that's marked. ## Copy ## (or ctrl+C) Will copy the marked range to the copy buffer. ## Paste ## (or ctrl+V) Will paste the copy buffer into the current sample. ## Volume "" Will take you to the volume tool box. ## Tunetone ## Will create a tuned sinus sound, which you can tune your samples after. ## Fix DC ## Will remove any eventual DC offset in the sample, which will make it centered. This function might not always work as intended, especially not on basic waveforms. ## Filters ## Will take you to the filters tool box. ## Offs (offset) ## This displays what 9xx command value to use to play the sample from where you're pointing at in the sample data. This will display no value if the position is equal to zero, since 900 means "use last 9xx value". Attempting to use 9xx on a sample where its length is over 65534 will silence the sample (PT bug), this is why Offs shows nothing on >64kB samples. ## Resample ## Here's a step-by-step explanation: 1. Turn on the tuning tone. 2. Use the keyboard to find what note it is. Use finetune if needed. 3. Enter the note in the "Note:" box to the right. 4. Press resample! ## Note ## This is what note to resample to. ## Disp (display) ## This is the length of the part of the sample being shown on screen. ## Loop on/off ## This is for turning sample loops on/off without having to fiddle with the repeat and replen gadgets. ## Exit ## Exits the sampler screen. The volume tool box -------------- Set the "from" and "to" volume percentages by using the sliders, or just type in any number you please (from 0 to 200) in the percentage boxes to the right. ## Normalize ## Will find the highest volume settings possible (without clipping). ## Cancel ## Will exit the volume box. ## \ ## Will set the percentages 100%-0% ## / ## Will set the percentages 0%-100% ## - ## Will set the percentages 100%-100% ## Ramp ## Will ramp (calculate) the volume! The filters tool box -------------- This tool box lets you low-pass or high-pass a sample. Cool for vocals and drumloops, or for any filtering needs. Keep in mind that this is far from an intelligent filter, the base frequency is manually set to 16574Hz, so the cutoff values really depend on the base frequency of the sample. This means that for example a 100Hz low-pass is 100Hz only if the base frequency of the sample is 16574Hz. Just test your way to the audible cutoff you want, and press UNDO if you didn't like it. ## Undo ## Restores the sample data to the previous state. Used for when you didn't like the new filtered value. Use CTRL+Z to completely restore the sample to the state of when it was loaded. ## Exit ## Will exit the volume box. ## Low-Pass ## Will low-pass the sample with the given cutoff frequency. ## Low-Pass Frequency ## Click on this to manually set a cutoff or use the up/down gadgets. ## High-Pass ## Will high-pass the sample with the given cutoff frequency. ## High-Pass Frequency ## Click on this to manually set a cutoff or use the up/down gadgets ## Normalize Sample ## Will normalize the sample after it has been filtered, before quantizing it to 8-bit. This will prevent clipping and also result in higher quality if the filtered result was low on amplitude. EDIT OP. -------- The edit op. screens were just a handy way for us to implement all the new functions we had thought of. There are four screens, and you can browse through them by pressing the edit op. gadget more than once, or select one by clicking on the numbers 1-3. Screen four is accessed by clicking the "chord" button in edit op. screen 3. To exit edit op., click on the gadget labeled "E" or press ESC. Edit op. Screen 1: ## Transposing ## What is transposing ? Transposing lets you shift the pitch of the notes up or down. E.g. Change a C-3 to a C#3. In comparison to other trackers, ProTracker lets you transpose in just about every way you can imagine. You can transpose either the current sample or all the samples in a channel or pattern. To the right of the title bar is a small box with the letter "S" or "A". S - Only the current sample will be transposed. A - All the samples from $00-$1F will be transposed. To toggle between the two, click on the edit op. title bar. If the config entry "TransDel" is enabled, all the notes transposed out of range (C-1 to B-3) will be deleted. If not, they will not be transposed. Edit op. screen 2: (Record) ## Record ## Patt - Record current pattern only. Song - When recording, PT will move through the patterns in the song, just like normal play. ## Quantize ## Will move the notes you record to every n'th row. Entering 00 will turn off the quantizing, and the notes you play will always be inserted at the row you are at. Entering 01 will quantize the notes the the nearest row according to the speed. i.e. if you play a note after the first half has been played, it will be quantized to the row below. Entering a value like 8 will quantize to every 8th row, and so on. Got that? ## Metro (metronome) ## The first number is the speed of the metronome, and the second is the channel to play it on. The sample used for metronomes is always sample 31/$1F. Load your own favourite metronome sample. To turn off the metronome, just set the speed or channel to 00. ## Multi ## When on, PT will jump to another channel after you play a note on the keyboard. This makes it possible to play two or more notes at the same time. Edit Op. screen 2: (samples) To the right of the title bar is a small box with the letter "T", "P" or "S". T - Copy & Exchange apply to current track (channel) only. P - Copy & Exchange will affect the the whole pattern. S - Copy & Exchange will apply to the real samples in memory. To toggle between the two, click on the edit op. title bar. ## Delete ## Will delete all notes with the current sample in current channel or whole pattern. ## Kill ## Will kill the current sample. That is, remove it from memory and reset all sample settings. ## EXCHGE (exchange) ## Will exchange the sample number shown in the "from" gadget with the sample number in the "to" gadget and vice versa. "T" or "P" selects track (channel) or pattern. "S" exchanges the samples. ## MOVE ## Will move the sample number shown in the "from" gadget to the sample number in the "to" gadget. Edit Op. screen 3: (Sample Editor) To the right of the title bar is a small box with the letter "H" or "C". H - Will halve the volume on many sample altering effects to avoid clipping. C - Will not halve the volume. The sample may be clipped. To toggle between the two, click on the edit op. title bar. ## Mix ## Will mix one sample with another. PT asks you which two samples to be mixed, and where to put the result. Holding the right button and pressing mix will mix the current sample with itself. You can offset the sample by setting a position in the "pos" gadget. If you set "mod" to a non-zero value, the sample will also be modulated. ## Echo ## Will create a echo effect on the current sample. Use "pos" to set the delay time of the echo. If you want more room to echo in, just turn up the length of the sample. ## Boost (treble increase) ## Will turn up the treble of the sample. Use this on hi-hats and snares! ## Filter (treble decrease) ## Will Delta-filter the sample (treble decrease). Use this on noisy basses. ## X-Fade (crossfade) ## Will crossfade the sample (mix with itself, backwards). Handy for looping samples that are hard to loop. ## Backwd (backwards) ## Will turn the sample backwards. ## Upsamp (upsample) ## Will remove every second byte of the sample, halving the length and shifting the pitch one octave up. ## Dnsamp (downsample) ## Will double every byte of the sample, doubling the length, and shifting the pitch one octave down. If you downsample samples longer than $7FFE, you will lose the end of them. ## POS ## This is just an offset in the sample, used for a lot of things. ## MOD (modulate) ## This is used for modulation. Press "MOD" to modulate the current sample. ## CB (Cut Beginning) ## Will chop the number of bytes set in the "pos" gadget off the beginning of the sample. ## Chord ## Will take you to the Sample Chord Editor screen. ## FU (Fade Up) ## Will fade the volume from 0 to 100%. Use "Pos" to select where in the sample to fade up to. ## FD (Fade Down) ## Will fade the volume from 100 to 0%. Use "Pos" to select where in the sample to fade down from. ## VOL ## With this you can change the "real" volume of the sample. Just set a percentage and press "VOL". Edit Op.3 is now intended to be used with the new sample editor. If a range is marked, some of the functions apply to the range only. If there's no range marked, the functions will affect the whole sample. You may also set "POS" by clicking on the sample and setting the cursor line. Edit Op. screen 4: (Sample Chord Editor) ## Chord ## Will make the chord, using the current sample and the notes chosen, and the chord will be put in the current sample or a free sample slot, depending on your choice (see below). ## Reset ## Will reset the notes and the length. ## Undo ## Will undo the last change (apart from multiple arrow up/down). ## Length ## Will set the length to the maximum value, depending on the length of the original sample and the notes you chose. This will of course set the ':' after the 4 length digits (see below). Holding the right mouse button will set the length to the minimum depending on the notes chosen. '.' will be shown after the 4 digits. Mixing with the minimum length will make the sample as long as the shortest sample of the four resampled notes. Looped samples will always be 65534 in length so that it's easier for you to find good sample loop points. ## Major ## Will set a major chord, depending on the basenote. ## Minor ## Will set a minor chord, depending on the basenote. ## Sus-4 ## Will set a suspended fourth chord, depending on the basenote. ## Major7 ## Will set a major seventh chord, depending on the basenote. ## Minor7 ## Will set a minor seventh chord, depending on the basenote. ## Major6 ## Will set a major sixth chord, depending on the basenote. ## Minor6 ## Will set a minor sixth chord, depending on the basenote. ## 4 notegadgets ## The upper one is the basenote. If you press a gadget, PT will wait for you to press a note. Holding the right mouse button will reset the note. ## 4 Up/Down gadgets ## Will add/sub 1 halfnote from the current note. Holding right mouse button will add/sub 1 octave. You can reset the note by adding past B-3. ## The 4 rightmost gadgets ## Works just like the edit op gadgets. 1,2,3 takes you to the corresponding edit screen, and E exits. ## The status line ## Pressing the upper line will toggle between New or Old sample: If N, then PT will search for a free sample to put the result in. If O, then PT will put the result in the current sample, overwriting it. Note #1 ------- PT puts a '!' last in the sample name to show you that this is a chord sample. The '!' is for you to see where the destination sample has gone, it has nothing to do with the program. You can take the '!' away and rename the sample to ...-major, ...-minor etc for instance. Note #2 ------- The chosen option on the status line in edit op. 3, H(alve) or C(lip) will NOT affect the chord mixing. The mixing is done in 16-bit, then normalized and quantized to 8-bit using rounding. EFFECT COMMANDS --------------- Effect commands on ProTracker should be compatible with all other trackers. 0 - None/Arpeggio 8 - * NOT USED * 1 - Pitch Slide Up 9 - Sample Offset 2 - Pitch Slide Down A - Volume Slide 3 - Tone Portamento B - Position Jump 4 - Vibrato C - Set Volume 5 - Tone Porta + VolSlide D - Pattern Break 6 - Vibrato + VolSlide E - Misc. Cmds 7 - Tremolo F - Set Speed E - COMMANDS ------------ The E command has been altered to contain more commands than one. E0- LED Filter On/Off E8- * NOT USED * E1- Fine Pitch Slide Up E9- Note Retrig E2- Fine Pitch Slide Down EA- Fine Volume Slide Up E3- Glissando Control EB- Fine Volume Slide Down E4- Set Vibrato Waveform EC- Note Cut E5- Set Finetune ED- Note Delay E6- Pattern Loop EE- Pattern Delay E7- Set Tremolo Waveform EF- Invert Loop Cmd 0. Arpeggio [Range:$0-$F/$0-$F] ----------------------------------- Usage: $0 + 1st halfnote add + 2nd halfnote add Arpeggio is used to simulate chords. This is done by rapidly changing the pitch between 3 (or 2) different notes. It sounds very noisy and grainy on most samples, but okay on monotone ones. Example: C-300047 C-major chord: (C+E+G or C+4+7 halfnotes) C-300037 C-minor chord: (C+D#+G or C+3+7 halfnotes) Cmd 1. Pitch Slide Up [Speed:$00-$FF] ------------------------------------- Usage: $1 + slide speed This will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113) Example: C-300103 1 is the command, 3 is the slide speed. NOTE: The pitch slide will be called as many times as the speed of the song. This means that you'll sometimes have trouble sliding accurately. If you change the speed without changing the slide rates, it will sound bad... Cmd 2. Pitch Slide Down [Speed:$00-FF] -------------------------------------- Usage: $2 + slide speed Just like command 1, except that this one slides the pitch down instead. (adds to the period). You can NOT slide lower than C-1! (period 856) Example: C-300203 2 is the command, 3 is the slide speed. Cmd 3. Tone Portamento [Speed:$00-$FF] -------------------------------------- Usage: Dest-note + $3 + slidespeed This command will automatically slide from the old note to the new. You don't have to worry about which direction to slide, you need only set the slide speed. To keep on sliding, just select the command $3 + 00. Example: A-200000 First play a note. C-300305 C-3 is the note to slide to, 3 the command, and 5 the speed. Cmd 4. Vibrato [Rate:$0-$F,Depth:$0-$F] --------------------------------------- Usage: $4 + vibratorate + vibratodepth Vibrato will vibrate the sample pitch with a waveform (FM synthesis). Example: C-300481 4 is the command, 8 is the speed of the vibrato, and 1 is the depth of the vibrato. To keep on vibrating, just select the command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command E4- to change the vibrato waveform. Cmd 5. Tone Portamento + Volume Slide [Speed:$0-$F/$0-$F] --------------------------------------------------------- Usage: $5 + upspeed + downspeed This command will continue the current tone portamento and slide the volume at the same time. Compatible with Noisetracker 2.0. Example: C-300503 3 is the speed to turn the volume down. C-300540 4 is the speed to slide it up. Cmd 6. Vibrato + Volume Slide [Speed:$0-$F/$0-$F] ------------------------------------------------- Usage: $6 + upspeed + downspeed This command will continue the current vibrato and slide the volume at the same time. Compatible with Noisetracker 2.0. Example: C-300605 5 is the speed to turn the volume down. C-300640 4 is the speed to slide it up. Cmd 7. Tremolo [Rate:$0-$F,Depth:$0-$F] --------------------------------------- Usage: $7 + tremolorate + tremolodepth Tremolo will vibrate the volume with a waveform (AM synthesis). Example: C-300794 7 is the command, 9 is the speed of the tremolo, and 4 is the depth of the tremolo. To keep on tremolo'ing, just select the command $7 + 00. To change the tremolo, you can alter the rate, depth or both. Use command E7- to change the tremolo waveform. Cmd 9. Set Sample Offset [Offs:$00-$FF] --------------------------------------- Usage: $9 + sample offset This command will play from a chosen position in the sample, and not from the beginning. The two numbers equal the two first numbers in the length of the sample. Handy for speech samples. Due to a bug in the ProTracker replayer, attempting to use this command on samples longer than 65534/$FFFF will result in no sound. Example: C-300923 Play sample from offset $2300. Cmd A. Volume Slide [Speed:$0-$F/$0-$F] --------------------------------------- Usage: $A + upspeed + downspeed Example: C-300A05 5 is the speed to turn the volume down. C-300A40 4 is the speed to slide it up. NOTE: The slide will be called as many times as the speed of the song. The slower the song, the more the volume will be changed on each note. Cmd B. Position Jump [Pos:$00-$7F] ---------------------------------- Usage: $B + position to continue at Example: C-300B01 B is the command, 1 is the position to restart the song at. This command will also perform a pattern break (see 2 pages below). You can use this command instead of restart as on Noisetracker, but you must enter the position in hex! Cmd C. Set Volume [Volume:$00-$40] ---------------------------------- Usage: $C + new volume Well, this old familiar command will set the current volume to your own selected. The highest volume is $40. All volumes are represented in hex. (programmers do it in hex, you know!) Example: C-300C10 C is the command, 10 is the volume (16 decimal). Cmd D. Pattern Break [Row:00-63, decimal] ----------------------------------------- Usage: $D + row This command just jumps to the next song position, and continues play from the row you specify. Example: C-300D00 Jump to the next song position and continue play from row 00. Or: C-300D32 Jump to the next song position and continue play from row 32 instead. Cmd E0. Set LED Filter [Range:$0-$F] ------------------------------------ Usage: $E0 + value (0 = on, anything else = off) This command jerks around with the stupid LED filter. No one should ever use it. Example: C-300E01 turns LED filter off C-300E00 turns LED filter on Cmd E1. Fine Pitch Slide Up [Range:$0-$F] ----------------------------------------- Usage: $E1 + value This command works just like the normal portamento up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300E11 Slide up 1 at the beginning of the note. (great for creating chorus effects) Cmd E2. Fine Pitch Slide Down [Range:$0-$F] ------------------------------------------- Usage: $E2 + value This command works just like the normal portamento down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300E26 Slide up 6 at the beginning of the note. Cmd E3. Glissando Control [Range:$0-$1] --------------------------------------- Usage: $E3 + glissando control Glissando must be used with the tone portamento command. When glissando is activated, tone portamento will slide a halfnote at a time, instead of a straight slide. Example: C-300E31 Turn Glissando on. C-300E30 Turn Glissando off. Cmd E4. Set Vibrato Waveform [Range:$0-$3] ------------------------------------------ Usage: $E4 + vibrato waveform Example: C-300E40 Set sine (default) E44 Don't retrig WF C-300E41 Set Ramp Down E45 Don't retrig WF C-300E42 Set Squarewave E46 Don't retrig WF Cmd E5. Set Finetune [Range:$0-$F] ---------------------------------- Usage: $E5 + finetune value Example: C-300E51 Set finetune to 1. Use these tables to figure out the finetune value. Finetune: +7 +6 +5 +4 +3 +2 +1 0 Value: 7 6 5 4 3 2 1 0 Finetune: -1 -2 -3 -4 -5 -6 -7 -8 Value: F E D C B A 9 8 Cmd E6. Pattern Loop [Loops:$0-$F] ---------------------------------- Usage: $E6 + number of loops This command will loop a part of a pattern. Example: C-300E60 Set loop start. C-300E63 Jump to loop 3 times before playing on. Cmd E7. Set Tremolo Waveform [Range:$0-$3] ------------------------------------------ Usage: $E7 + tremolo waveform Example: C-300E70 Set sine (default) E74 Don't retrig WF C-300E71 Set Ramp Down E75 Don't retrig WF C-300E72 Set Squarewave E76 Don't retrig WF Cmd E9. Note Retrig [Value:$0-$F] --------------------------------- Usage: $E9 + tick to retrig note at This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats! Example: C-300F06 Set speed to 6. C-300E93 Retrig at tick 3 out of 6. Cmd EA. Fine Volume Slide Up [Range:$0-$F] ------------------------------------------ Usage: $EA + value This command works just like the normal volume slide up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300EA3 Slide volume up 1 at the beginning of the note. Cmd EB. Fine Volume Slide Down [Range:$0-$F] -------------------------------------------- Usage: $EB + value This command works just like the normal volume slide down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300EB6 Slide volume down 6 at the beginning of the note. Cmd EC. Note Cut [Value:$0-$F] ------------------------------ Usage: $EC + tick to cut note at This command will cut the note at the selected tick, creating extremely short notes. Example: C-300F06 Set speed to 6. C-300EC3 Cut at tick 3 out of 6. Note that the note is not really cut, the volume is just turned down. Cmd ED. Note Delay [Value:$0-$F] -------------------------------- Usage: $ED + ticks to delay note This command will delay the note to the selected tick. Example: C-300F06 Set speed to 6. C-300ED3 Play note at tick 3 out of 6. You can play the same note on two channels, delay one, and get a nice flanger effect. Cmd EE. Pattern Delay [Notes:$0-$F] ----------------------------------- Usage: $EE + notes to delay pattern This command will delay the pattern the selected numbers of notes. Example: C-300EE8 Delay pattern 8 notes before playing on. All other effects are still active when the pattern is being delayed. Cmd EF. Invert Loop [Speed:$0-$F] --------------------------------- Usage: $EF + Invertspeed This command will need a short loop ($10,20,40,80 etc. bytes) to work. It will invert the loop byte by byte. Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z. Cmd F. Set Speed [Speed:$00-$FF] -------------------------------- Usage: $F + speed This command will set the speed of the song (ticks per row). Vblank: Range 01-FF - Normal timing CIA: Range 01-1F - Set vblank speeds with CIA timing. CIA: Range 20-FF - Set BPM speeds, range 32-255. Both: Range 00 - STOP song. KEYBOARD -------- The keymap on ProTracker is a standard US keymap. The font has been enhanced and redrawn a little, so you now have a lot more special characters than before. Remember to always use the left shift and alt, as the right ones are used for other things. High note keys: 2 3 5 6 7 9 0 = Q W E R T Y U I O P [ ] Low note keys: S D G H J L ; Z X C V B N M , . / F1 - Choose low octave (from C-1 to G-3) F2 - Choose high octave (from C-2 to B-3) shift+F3 - Cut channel to buffer shift+F4 - Copy channel to buffer shift+F5 - Paste channel buffer to channel alt+F3 - Cut whole pattern to buffer alt+F4 - Copy whole pattern to buffer alt+F5 - Paste pattern buffer to pattern ctrl+F3 - Cut commands to buffer ctrl+F4 - Copy commands to buffer ctrl+F5 - Paste command buffer to channel F6 - Go to row 0 F7 - Go to row 16 F8 - Go to row 32 F9 - Go to row 48 F10- Go to row 63 shift+F6-F10 - Store current row on selected F-key alt+F6-F10 - Play pattern from the stored row ctrl+F6-F10 - Record from the stored row esc - Exit DiskOp/EditOp/Sampler etc... shift+return - Insert blank note at current row and move the others down. Notes beyond row 63 will be lost! shift+backspace - Delete note above current row and move the others up. You can NOT do this if you're at row 0! alt+return - As above, but with all 4 channels alt+backspace - As above, but with all 4 channels ctrl+return - Push commands one down ctrl+backspace - Drag commands one up ctrl+0-9 - Select how many rows ProTracker will jump down each time you insert a note (this is only for edit mode) alt+cursor right - Pattern number up alt+cursor left - Pattern number down shift+cursor right - song position up shift+cursor left - song position down space - Toggle between Stop/Edit-mode alt gr (right alt) - Play Song right ctrl (cmd on Mac) - Play Pattern right shift - Record caps lock - Toggle Keyrepeat on/off del - Delete note under cursor alt+del - Delete command only shft+del - Delete note and command On Numeric pad: "."/del - Kill Sample 0 - Select Sample $0 1st row - Select Sample $1-$4 2nd row - Select Sample $5-$8 3rd row - Select Sample $9-$c 4th row - Select Sample $d-$f Just enter - Toggle sample offset +$10 Holding enter + the other keys, will select sample $11-$1F Left Amiga key plus keys below - Transposing like in Edit Op. Sample/Channel Sample/Pattern ---------------------------------- 1 - Note Up 2 - Note Up Q - Note Down W - Note Down A - Octave Up S - Octave Up Z - Octave Down X - Octave Down All/Channel All/Pattern ------------------------------ 3 - Note Up 4 - Note Up E - Note Down R - Note Down D - Octave Up F - Octave Up C - Octave Down V - Octave Down tab - Move cursor to next channel shift+tab - Move cursor to prev channel ctrl+a - Toggle channel on/off ctrl+b - Mark block ctrl+c - Copy block to buffer (if sampler is open; copy data) ctrl+d - Delete block, drag notes up ctrl+e - Expand notes in channel ctrl+f - Toggle LED filter on/off ctrl+g - Boost treble on all samples ctrl+h - Transpose block up ctrl+i - Insert block, push notes down ctrl+j - Join-paste block ctrl+k - Kill notes to end of channel ctrl+l - Transpose block down ctrl+m - Toggle multikeys ctrl+n - Re-mark last block ctrl+o - Shrink notes in channel ctrl+p - Paste block ctrl+q - Unmute all channels ctrl+r - Restore F6-F10 positions ctrl+s - Save module (this is 'toggle split mode' in original PT) ctrl+t - Swap channels ctrl+u - Undo last pattern edit change ctrl+v - Decrease treble on all samples (if sampler is open; paste data) ctrl+w - Polyphonize block ctrl+x - Cut block to buffer (if sampler is open; cut data) ctrl+y - Backwards block ctrl+z - Restore Effects (if sampler is open; restore sample data+attributes) shift+0-9 - Store current command on selected key alt+0-9 - Insert command in current channel alt+"\" - Copy command above cursor to current row. alt+"=" - Copy command above cursor to current row and add one to the value. alt+"-" - Copy command above cursor to current row and subract one from the value. alt+b - Treble increase current sample alt+c - Toggle channel 3 alt+d - Toggle Disk Op. screen alt+e - Toggle Edit Op. + screens alt+f - Treble decrease current sample alt+i - Auto insert effect on/off alt+k - Delete current sample/channel alt+m - Toggle metronome on/off (hold SHIFT to set metronome channel) alt+p - Toggle Pos Ed. screen alt+q - Quit ProTracker alt+r - Resample current sample alt+s - Toggle sampler screen alt+t - Toggle tuning tone alt+v - Toggle channel 4 alt+x - Toggle channel 2 alt+y - Save all samples alt+z - Toggle channel 1 F3 - Cut (and/or ctrl+x in sampler screen) F4 - Copy (and/or ctrl+c in sampler screen) F5 - Paste (and/or ctrl+v in sampler screen) return - Step one note forward backspace - Step one note backward "'" - Decrease auto insert slot (if auto insert effect is enabled) "\" - Increase auto insert slot (if auto insert effect is enabled) (hold SHIFT to increase/decrease auto insert even more) "\" - Toggle keypad mode (if auto insert is disabled) alt+keypad - Tune drumpad ctrl+left/right - Sample up/down shift+key - Jump to file entry (only when DISK OP. is shown) GENERAL INFO. ------------- Making Music ------------ Any piece of music written with ProTracker is built up from patterns. Each pattern is built up from four channels, one for each of the Amiga's audio channels. A pattern is 64 lines long. The middle line is always the one you edit. If you need shorter patterns, use the pattern break (Dxx) effect command. A channel is built up like this: 32 C-3 01 C20 / \_/ |/ \_/ / / | \ Row Note Sample Effect/Command The C-3 is the note being played at row 32. 01 is the sample number, and the three last digits are the effect command, in this case, set volume to $20 (C-Command, 20-Value). ProTracker holds a table with info about the sequence in which the patterns will be played. With the "Pos" gadget you determine your position in the table. With "Pattern" you define what pattern to play at that position. "Length" defines the total size of the table. The full sequence of patterns is the song. A song is built up from up to 100 different patterns, each being played at up to 128 different positions. The small gadgets labeled "I" and "D" are Insert and Delete. With those you can insert or delete a position from your song. The length of your song will be adjusted automatically. Remember that the length of your song must always be one more than the last position, since the first position is 0. Holding down the right mouse button when pressing the Pos, Pattern and Length gadgets will speed them up a bit. Finetune -------- This is a goodie. Tune your untuned samples to match the others. Holding right mouse button while clicking will set finetune to zero. 0 436.4 hz -1 432.1 hz 1 439.0 hz -2 429.6 hz 2 441.6 hz -3 426.3 hz 3 445.1 hz -4 423.1 hz 4 447.8 hz -5 419.9 hz 5 451.5 hz -6 416.7 hz 6 455.2 hz -7 414.4 hz 7 457.0 hz -8 412.0 hz Sample ------ Clicking on the sample up/down gadgets will flicker through the samples. You can use up to 31 (hex $1F) samples in a song. Sample zero function -------------------- Pressing both mouse buttons at the same time will set the sample number to 'zero'. You can then record/edit the pattern with sample 0 to prevent ProTracker from setting the volume each time you play a new note. Length ------ The Length gadgets are simply used for setting the length of the sample. A sample can be up to 128k, 131070/$1fffe long. Do note that any lengths above 64k/65534/$fffe will make the real Amiga ProTracker act strange in the GUI. It will play the song fine, except that 9xx (sample offset) forces the sample to not play if >64k. This happens in this ProTracker clone too. Volume ------ Use this to set the volume the current sample will be played at. Repeat (loop start) ------ Here you set the start of the sample loop. Replen (loop length) ------ Here you set the length of the sample loop. Pressing both the left and right button on the sample gadgets will speed them up a bit. The Pattern Number Gadget ------------------------- To the middle left of the screen is a box with a number in it. The number is the current pattern number. The "Are you sure?" dialog -------------------------- In addition to the gadgets, you can use "Y" or Return for Yes, and "N" or ESC for No. Clicking the right mouse button also acts as No. The Clear dialog ---------------- In addition to the gadgets you can use "A" for All, "O" for Song, "S" for samples and "C" or ESC for Cancel. Clicking the right mouse button acts as Cancel. The Load (sample) gadget ------------------------ This gadget will set DISK OP. "load sample" mode and enter the DISK OP. The text input routine ---------------------- Now this is really simple. Clicking on a text line will enable you to edit it. Some text lines are longer than they seem, so use the arrow keys to scroll back and forth in the text. You can also use HOME/END on your keyb. The text input mode is just like an ordinary text editor. You can use backspace, delete, space, numeric pad keys and such. Pressing Return will exit text edit mode and save the changes. Pressing the right mouse button will clear the text line and exit the editing. Use ESC to just exit. Tips 'n tricks -------------- When inserting, pasting or join-pasting, hold down shift to keep the cursor from jumping to the end of the block. e.g. shift+ctrl+p Holding shift while pressing ctrl+k (kill to end of channel) will kill to start of channel instead. Use ESC or right mouse button to exit from a lot of things. Effect tips ----------- You can set the volume without playing a note. e.g. ---01000 This will set the volume for sample 1 without trigging the note. Or try trigging the sample and sliding the volume down. e.g. C-301A08 ---01A08 ---01A08 This will create a strange arpeggiato effect, like on "Cream of the earth" by Romeo Knight / RSI. Entering a new sample number without a note will swap to the new sample after the previous one was done playing. This is useful for creating a sweeping effect on chiptune styled songs, and so on. Mouse Pointer Colors -------------------- Gray - Nothing is happening. Yellow - Playing song / pattern. Green - Disk action. Blue - Edit / record. Magenta - Waiting for something (text, number or something else). Red - Something went wrong. Drumpad ------- ProTracker features a drumpad as in Noisetracker 2.0 and 2.1. Use '\' instead of period '.' to toggle modes. One or more dots will appear to the right of the TUNE/TIMING display. No dots: Normal keypad. 1 dot: Drumpad. 2 dots: Drumpad - Edit/Rec possible. Use alt+keypadkey to set note. That's all for now, I hope you enjoy my ProTracker v2.3D clone as much as I did making it. /* End of File */protracker-2.3d.r92/release/COPYING.txt0000644000000000000000000000076213235646554016322 0ustar rootroot DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO. protracker-2.3d.r92/make-os-x.sh0000644000000000000000000000162713235646471015165 0ustar rootroot#!/bin/bash arch=$(arch) if [ $arch == "ppc" ]; then echo Sorry, PowerPC \(PPC\) is not supported... else echo Compiling 32-bit and 64-bit compatible binary, please wait... rm release/protracker-osx.app/Contents/MacOS/protracker &> /dev/null clang -mmacosx-version-min=10.6 -arch i386 -arch x86_64 -mfpmath=sse -msse2 -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks src/*.c src/gfx/*.c -O3 -lm -Wall -Winit-self -Wextra -Wunused -Wredundant-decls -Wswitch-default -framework SDL2 -framework Cocoa -lm -o release/protracker-osx.app/Contents/MacOS/protracker install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2 release/protracker-osx.app/Contents/MacOS/protracker rm src/*.o src/gfx/*.o &> /dev/null echo Done! The binary \(protracker-osx.app\) is in the folder named \'release\'. fi protracker-2.3d.r92/compiling.txt0000644000000000000000000000453613235646472015555 0ustar rootrootCompiled binaries are always available at https://www.16-bits.org/ == COMPILING PROTRACKER ON WINDOWS VISTA OR NEWER == 1. Use an SVN client to download the code, using this as input: svn://svn.code.sf.net/p/protracker/code/trunk pt-clone-code 2. You need Visual Studio 2015 or newer ('Community' version is free) 3. Wait patiently while you install it. VS2017: install the Desktop pkg. 4. Download and copy over the SDL2 development files from libsdl.org. 5. Open pt-clone.sln found in pt-clone-code\vs201x_project (x = 5 or 7) 6. Make sure it's in 'release mode' and press F7 to compile the program 7. Done! The binary ('protracker.exe') is now in pt-clone-code\release\ == COMPILING PROTRACKER ON MAC OS X 10.6 OR NEWER == 1. Install XCode. It's in the "Optional Installs" folder in your OS X Install DVD that came with your mac. If you don't have the disk, download the latest XCode (+ Command Line Tools package) from https://developer.apple.com/xcode/downloads/ 2. Download the SDL2 Runtime Libraries for Mac OS X here: Intel OS X 10.6 and up: https://www.libsdl.org/release/SDL2-2.0.7.dmg 3. Inside the downloaded image you'll find SDL2.framework, copy that folder to /Library/Frameworks 4. Open the Terminal (Applications/Utilities/Terminal) and run the following: svn checkout svn://svn.code.sf.net/p/protracker/code/trunk pt-clone-code cd pt-clone-code chmod +x make-os-x.sh ./make-os-x.sh 5. Done! The binary ('protracker-osx.app') is now in pt-clone-code/release/ 6. The correct config file location is '~/.protracker/protracker.ini'. == COMPILING PROTRACKER ON LINUX == 1. Install 'subversion' and 'libsdl2-dev' (sdl2 v2.0.7 or later recommended) 2. Open a terminal and run the following: svn checkout svn://svn.code.sf.net/p/protracker/code/trunk pt-clone-code cd pt-clone-code chmod +x make-linux.sh (make-freebsd.sh for FreeBSD) ./make-linux.sh (make-freebsd.sh for FreeBSD) 3. Done! The binary ('protracker') is now in pt-clone-code/release/ To run it, try double-clicking, or type ./protracker 4. To get ALT+F4 (copy pattern) and ALT+F5 (paste pattern) working, you have to change these keyboard shortcuts in your OS to something else. An alternative config file location is '~/.protracker/protracker.ini'. EOFprotracker-2.3d.r92/GNUmakefile0000644000000000000000000000266413235646471015104 0ustar rootroot# warning options for GCC WARNINGS = -Wall -Wno-unused-result -Wc++-compat -Wshadow -Winit-self -Wextra -Wunused -Wunreachable-code -Wredundant-decls -Wswitch-default # source files for compiling SOURCE = src/*.c src/gfx/*.c # executable file name TARGETNAME = protracker # executable file path TARGET = release/$(TARGETNAME) # temporary files (for deleting) CLEAN = src/*.o src/gfx/*.o # install path INSTALL = /usr/local/bin/ # name of the user running the make USER = $(shell whoami) .PHONY: clean cleanall uninstall $(TARGET): $(SOURCE) @echo "Compiling, please wait..." gcc $(SOURCE) -lSDL2 -lm -ldl $(WARNINGS) -march=native -mtune=native -O3 -o $(TARGET) @echo "Done! The binary (protracker) is in the folder named 'release'." @echo "To run it, type ./protracker in the release folder (or type make run)." run: $(TARGET) $(TARGET) clean: @echo "Deleting temporary files..." rm $(CLEAN) 2> /dev/null || true cleanall: clean @echo "Deleting executable..." rm $(TARGET) 2> /dev/null || true install: $(TARGET) @if [ "$(USER)" = "root" ]; then \ echo "Copying '$(TARGETNAME)' to $(INSTALL)"; \ install -m 775 $(TARGET) "$(INSTALL)/$(TARGETNAME)"; \ else echo "Please run 'make install' as root"; fi uninstall: @if [ "$(USER)" = "root" ]; then \ echo "Deleting '$(TARGETNAME)' from $(INSTALL)"; \ rm "$(INSTALL)/$(TARGETNAME)"; \ else echo "Please run 'make uninstall' as root"; fi